diff options
Diffstat (limited to 'src/mame/drivers')
2090 files changed, 90027 insertions, 82318 deletions
diff --git a/src/mame/drivers/1942.cpp b/src/mame/drivers/1942.cpp index 2a0de5e5280..5623215d67a 100644 --- a/src/mame/drivers/1942.cpp +++ b/src/mame/drivers/1942.cpp @@ -180,24 +180,25 @@ TIMER_DEVICE_CALLBACK_MEMBER(_1942_state::c1942_scanline) -ADDRESS_MAP_START(_1942_state::c1942_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSWA") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSWB") - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc802, 0xc803) AM_WRITE(c1942_scroll_w) - AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w) - AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w) - AM_RANGE(0xc806, 0xc806) AM_WRITE(c1942_bankswitch_w) - AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END +void _1942_state::c1942_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSWA"); + map(0xc004, 0xc004).portr("DSWB"); + map(0xc800, 0xc800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc802, 0xc803).w(this, FUNC(_1942_state::c1942_scroll_w)); + map(0xc804, 0xc804).w(this, FUNC(_1942_state::c1942_c804_w)); + map(0xc805, 0xc805).w(this, FUNC(_1942_state::c1942_palette_bank_w)); + map(0xc806, 0xc806).w(this, FUNC(_1942_state::c1942_bankswitch_w)); + map(0xcc00, 0xcc7f).ram().share("spriteram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(_1942_state::c1942_fgvideoram_w)).share("fg_videoram"); + map(0xd800, 0xdbff).ram().w(this, FUNC(_1942_state::c1942_bgvideoram_w)).share("bg_videoram"); + map(0xe000, 0xefff).ram(); +} WRITE8_MEMBER(_1942_state::c1942p_f600_w) { @@ -215,57 +216,61 @@ WRITE8_MEMBER(_1942_state::c1942p_palette_w) m_palette->set_indirect_color(offset, rgb_t(r<<5,g<<5,b<<6)); } -ADDRESS_MAP_START(_1942_state::c1942p_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") +void _1942_state::c1942p_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(c1942_fgvideoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(c1942_bgvideoram_w) AM_SHARE("bg_videoram") + map(0xd000, 0xd7ff).ram().w(this, FUNC(_1942_state::c1942_fgvideoram_w)).share("fg_videoram"); + map(0xd800, 0xdbff).ram().w(this, FUNC(_1942_state::c1942_bgvideoram_w)).share("bg_videoram"); - AM_RANGE(0xe000, 0xefff) AM_RAM + map(0xe000, 0xefff).ram(); - AM_RANGE(0xce00, 0xcfff) AM_RAM AM_SHARE("spriteram") + map(0xce00, 0xcfff).ram().share("spriteram"); - AM_RANGE(0xdc02, 0xdc03) AM_WRITE(c1942_scroll_w) - AM_RANGE(0xc804, 0xc804) AM_WRITE(c1942_c804_w) - AM_RANGE(0xc805, 0xc805) AM_WRITE(c1942_palette_bank_w) + map(0xdc02, 0xdc03).w(this, FUNC(_1942_state::c1942_scroll_w)); + map(0xc804, 0xc804).w(this, FUNC(_1942_state::c1942_c804_w)); + map(0xc805, 0xc805).w(this, FUNC(_1942_state::c1942_palette_bank_w)); - AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_WRITE(c1942p_palette_w) AM_SHARE("protopal") + map(0xf000, 0xf3ff).ram().w(this, FUNC(_1942_state::c1942p_palette_w)).share("protopal"); - AM_RANGE(0xf400, 0xf400) AM_WRITE(c1942_bankswitch_w) - AM_RANGE(0xf500, 0xf500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf600, 0xf600) AM_WRITE(c1942p_f600_w) + map(0xf400, 0xf400).w(this, FUNC(_1942_state::c1942_bankswitch_w)); + map(0xf500, 0xf500).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf600, 0xf600).w(this, FUNC(_1942_state::c1942p_f600_w)); - AM_RANGE(0xf700, 0xf700) AM_READ_PORT("DSWA") - AM_RANGE(0xf701, 0xf701) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf702, 0xf702) AM_READ_PORT("DSWB") - AM_RANGE(0xf703, 0xf703) AM_READ_PORT("P1") - AM_RANGE(0xf704, 0xf704) AM_READ_PORT("P2") -ADDRESS_MAP_END + map(0xf700, 0xf700).portr("DSWA"); + map(0xf701, 0xf701).portr("SYSTEM"); + map(0xf702, 0xf702).portr("DSWB"); + map(0xf703, 0xf703).portr("P1"); + map(0xf704, 0xf704).portr("P2"); +} -ADDRESS_MAP_START(_1942_state::c1942p_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void _1942_state::c1942p_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} -ADDRESS_MAP_START(_1942_state::c1942p_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_WRITENOP - AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END +void _1942_state::c1942p_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).nopw(); + map(0x0014, 0x0015).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x0018, 0x0019).w("ay2", FUNC(ay8910_device::address_data_w)); +} -ADDRESS_MAP_START(_1942_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END +void _1942_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xc000, 0xc001).w("ay2", FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( 1942 ) diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp index 9414b112bc1..8049ef0dcda 100644 --- a/src/mame/drivers/1943.cpp +++ b/src/mame/drivers/1943.cpp @@ -102,40 +102,42 @@ READ8_MEMBER(_1943_state::_1943b_c007_r) /* Memory Maps */ -ADDRESS_MAP_START(_1943_state::c1943_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSWA") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSWB") - AM_RANGE(0xc007, 0xc007) AM_READ(c1943_protection_r) - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc804, 0xc804) AM_WRITE(c1943_c804_w) // ROM bank switch, screen flip - AM_RANGE(0xc806, 0xc806) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xc807, 0xc807) AM_WRITE(c1943_protection_w) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(c1943_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(c1943_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd800, 0xd801) AM_RAM AM_SHARE("scrollx") - AM_RANGE(0xd802, 0xd802) AM_RAM AM_SHARE("scrolly") - AM_RANGE(0xd803, 0xd804) AM_RAM AM_SHARE("bgscrollx") - AM_RANGE(0xd806, 0xd806) AM_WRITE(c1943_d806_w) // sprites, bg1, bg2 enable - AM_RANGE(0xd808, 0xd808) AM_WRITENOP // ??? - AM_RANGE(0xd868, 0xd868) AM_WRITENOP // ??? - AM_RANGE(0xd888, 0xd888) AM_WRITENOP // ??? - AM_RANGE(0xd8a8, 0xd8a8) AM_WRITENOP // ??? - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(_1943_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_device, write) -ADDRESS_MAP_END +void _1943_state::c1943_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSWA"); + map(0xc004, 0xc004).portr("DSWB"); + map(0xc007, 0xc007).r(this, FUNC(_1943_state::c1943_protection_r)); + map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc804, 0xc804).w(this, FUNC(_1943_state::c1943_c804_w)); // ROM bank switch, screen flip + map(0xc806, 0xc806).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xc807, 0xc807).w(this, FUNC(_1943_state::c1943_protection_w)); + map(0xd000, 0xd3ff).ram().w(this, FUNC(_1943_state::c1943_videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(_1943_state::c1943_colorram_w)).share("colorram"); + map(0xd800, 0xd801).ram().share("scrollx"); + map(0xd802, 0xd802).ram().share("scrolly"); + map(0xd803, 0xd804).ram().share("bgscrollx"); + map(0xd806, 0xd806).w(this, FUNC(_1943_state::c1943_d806_w)); // sprites, bg1, bg2 enable + map(0xd808, 0xd808).nopw(); // ??? + map(0xd868, 0xd868).nopw(); // ??? + map(0xd888, 0xd888).nopw(); // ??? + map(0xd8a8, 0xd8a8).nopw(); // ??? + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("spriteram"); +} + +void _1943_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write)); + map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/1945kiii.cpp b/src/mame/drivers/1945kiii.cpp index 549f54ef9da..76cc7b1d560 100644 --- a/src/mame/drivers/1945kiii.cpp +++ b/src/mame/drivers/1945kiii.cpp @@ -188,41 +188,44 @@ WRITE16_MEMBER(k3_state::flagrall_soundbanks_w) } -ADDRESS_MAP_START(k3_state::k3_base_map) - AM_RANGE(0x0009ce, 0x0009cf) AM_WRITENOP // k3 - bug in code? (clean up log) - AM_RANGE(0x0009d2, 0x0009d3) AM_WRITENOP // l3 - bug in code? (clean up log) - - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Main Ram - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("spritera1") - AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("spritera2") - AM_RANGE(0x2c0000, 0x2c07ff) AM_RAM_WRITE(k3_bgram_w) AM_SHARE("bgram") - AM_RANGE(0x2c0800, 0x2c0fff) AM_RAM // or does k3 have a bigger tilemap? (flagrall is definitely 32x32 tiles) - AM_RANGE(0x340000, 0x340001) AM_WRITE(k3_scrollx_w) - AM_RANGE(0x380000, 0x380001) AM_WRITE(k3_scrolly_w) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS") - AM_RANGE(0x440000, 0x440001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x480000, 0x480001) AM_READ_PORT("DSW") -ADDRESS_MAP_END - -ADDRESS_MAP_START(k3_state::k3_map) - AM_IMPORT_FROM( k3_base_map ) - - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITE(k3_soundbanks_w) - - AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0xff00) - AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0xff00) - AM_RANGE(0x8c0000, 0x8cffff) AM_RAM // not used? (bug in code?) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(k3_state::flagrall_map) - AM_IMPORT_FROM( k3_base_map ) - - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITE(flagrall_soundbanks_w) - AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END +void k3_state::k3_base_map(address_map &map) +{ + map(0x0009ce, 0x0009cf).nopw(); // k3 - bug in code? (clean up log) + map(0x0009d2, 0x0009d3).nopw(); // l3 - bug in code? (clean up log) + + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Main Ram + map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x240000, 0x240fff).ram().share("spritera1"); + map(0x280000, 0x280fff).ram().share("spritera2"); + map(0x2c0000, 0x2c07ff).ram().w(this, FUNC(k3_state::k3_bgram_w)).share("bgram"); + map(0x2c0800, 0x2c0fff).ram(); // or does k3 have a bigger tilemap? (flagrall is definitely 32x32 tiles) + map(0x340000, 0x340001).w(this, FUNC(k3_state::k3_scrollx_w)); + map(0x380000, 0x380001).w(this, FUNC(k3_state::k3_scrolly_w)); + map(0x400000, 0x400001).portr("INPUTS"); + map(0x440000, 0x440001).portr("SYSTEM"); + map(0x480000, 0x480001).portr("DSW"); +} + +void k3_state::k3_map(address_map &map) +{ + k3_base_map(map); + + map(0x3c0000, 0x3c0001).w(this, FUNC(k3_state::k3_soundbanks_w)); + + map(0x4c0000, 0x4c0000).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x500000, 0x500000).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8c0000, 0x8cffff).ram(); // not used? (bug in code?) +} + + +void k3_state::flagrall_map(address_map &map) +{ + k3_base_map(map); + + map(0x3c0000, 0x3c0001).w(this, FUNC(k3_state::flagrall_soundbanks_w)); + map(0x4c0001, 0x4c0001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( k3 ) diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp index 68d7bc914d8..94b47a12ad4 100644 --- a/src/mame/drivers/20pacgal.cpp +++ b/src/mame/drivers/20pacgal.cpp @@ -186,39 +186,41 @@ WRITE8_MEMBER(_20pacgal_state::sprite_lookup_w) // where does the clut (sprite_lookup_w) get uploaded? even if I set a WP on that data in ROM it isn't hit? // likewise the sound table.. is it being uploaded in a different format at 0x0c000? // we also need the palette data because there is only a single rom on this pcb? -ADDRESS_MAP_START(_25pacman_state::_25pacman_map) - AM_RANGE(0x00000, 0x3ffff) AM_DEVREADWRITE("flash", amd_29lv200t_device, read, write ) // (always fall through if nothing else is mapped?) +void _25pacman_state::_25pacman_map(address_map &map) +{ + map(0x00000, 0x3ffff).rw("flash", FUNC(amd_29lv200t_device::read), FUNC(amd_29lv200t_device::write)); // (always fall through if nothing else is mapped?) - AM_RANGE(0x04000, 0x047ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x04800, 0x05fff) AM_RAM - AM_RANGE(0x06000, 0x06fff) AM_WRITEONLY AM_SHARE("char_gfx_ram") - AM_RANGE(0x07000, 0x0717f) AM_WRITE(sprite_ram_w) + map(0x04000, 0x047ff).ram().share("video_ram"); + map(0x04800, 0x05fff).ram(); + map(0x06000, 0x06fff).writeonly().share("char_gfx_ram"); + map(0x07000, 0x0717f).w(this, FUNC(_25pacman_state::sprite_ram_w)); // AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) - AM_RANGE(0x08000, 0x09fff) AM_WRITENOP - AM_RANGE(0x0a000, 0x0bfff) AM_WRITE(sprite_gfx_w) - AM_RANGE(0x0c000, 0x0dfff) AM_WRITENOP // is this the sound waveforms in a different format? - AM_RANGE(0x0e000, 0x0ffff) AM_WRITENOP - AM_RANGE(0x1c000, 0x1ffff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(_20pacgal_state::_20pacgal_map) - AM_RANGE(0x00000, 0x03fff) AM_ROM - AM_RANGE(0x04000, 0x07fff) AM_ROM - AM_RANGE(0x08000, 0x09fff) AM_ROM - AM_RANGE(0x0a000, 0x0ffff) AM_MIRROR(0x40000) AM_ROM - AM_RANGE(0x10000, 0x3ffff) AM_ROM - AM_RANGE(0x44000, 0x447ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x44800, 0x45eff) AM_RAM - AM_RANGE(0x45040, 0x4505f) AM_DEVWRITE("namco", namco_cus30_device, pacman_sound_w) - AM_RANGE(0x45f00, 0x45fff) AM_DEVWRITE("namco", namco_cus30_device, namcos1_cus30_w) - AM_RANGE(0x46000, 0x46fff) AM_WRITEONLY AM_SHARE("char_gfx_ram") - AM_RANGE(0x47100, 0x47100) AM_RAM /* leftover from original Galaga code */ - AM_RANGE(0x48000, 0x49fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) /* this should be a mirror of 08000-09fff */ - AM_RANGE(0x4c000, 0x4dfff) AM_WRITE(sprite_gfx_w) - AM_RANGE(0x4e000, 0x4e17f) AM_WRITE(sprite_ram_w) - AM_RANGE(0x4e180, 0x4feff) AM_WRITENOP - AM_RANGE(0x4ff00, 0x4ffff) AM_WRITE(sprite_lookup_w) -ADDRESS_MAP_END + map(0x08000, 0x09fff).nopw(); + map(0x0a000, 0x0bfff).w(this, FUNC(_25pacman_state::sprite_gfx_w)); + map(0x0c000, 0x0dfff).nopw(); // is this the sound waveforms in a different format? + map(0x0e000, 0x0ffff).nopw(); + map(0x1c000, 0x1ffff).nopw(); +} + +void _20pacgal_state::_20pacgal_map(address_map &map) +{ + map(0x00000, 0x03fff).rom(); + map(0x04000, 0x07fff).rom(); + map(0x08000, 0x09fff).rom(); + map(0x0a000, 0x0ffff).mirror(0x40000).rom(); + map(0x10000, 0x3ffff).rom(); + map(0x44000, 0x447ff).ram().share("video_ram"); + map(0x44800, 0x45eff).ram(); + map(0x45040, 0x4505f).w("namco", FUNC(namco_cus30_device::pacman_sound_w)); + map(0x45f00, 0x45fff).w("namco", FUNC(namco_cus30_device::namcos1_cus30_w)); + map(0x46000, 0x46fff).writeonly().share("char_gfx_ram"); + map(0x47100, 0x47100).ram(); /* leftover from original Galaga code */ + map(0x48000, 0x49fff).bankr("bank1").w(this, FUNC(_20pacgal_state::ram_48000_w)); /* this should be a mirror of 08000-09fff */ + map(0x4c000, 0x4dfff).w(this, FUNC(_20pacgal_state::sprite_gfx_w)); + map(0x4e000, 0x4e17f).w(this, FUNC(_20pacgal_state::sprite_ram_w)); + map(0x4e180, 0x4feff).nopw(); + map(0x4ff00, 0x4ffff).w(this, FUNC(_20pacgal_state::sprite_lookup_w)); +} /************************************* @@ -232,47 +234,49 @@ READ8_MEMBER( _25pacman_state::_25pacman_io_87_r ) return 0xff; } -ADDRESS_MAP_START(_25pacman_state::_25pacman_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x82, 0x82) AM_READ_PORT("SERVICE") - AM_RANGE(0x80, 0x80) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x81, 0x81) AM_WRITE(timer_pulse_w) /* ??? pulsed by the timer irq */ - AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w) +void _25pacman_state::_25pacman_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).noprw(); /* Z180 internal registers */ + map(0x40, 0x7f).noprw(); /* Z180 internal registers */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x82, 0x82).portr("SERVICE"); + map(0x80, 0x80).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x81, 0x81).w(this, FUNC(_25pacman_state::timer_pulse_w)); /* ??? pulsed by the timer irq */ + map(0x82, 0x82).w(this, FUNC(_25pacman_state::irqack_w)); // AM_RANGE(0x84, 0x84) AM_NOP /* ?? */ - AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */ - AM_RANGE(0x87, 0x87) AM_READ( _25pacman_io_87_r ) // not eeprom on this - AM_RANGE(0x87, 0x87) AM_WRITENOP + map(0x85, 0x86).writeonly().share("stars_seed"); /* stars: rng seed (lo/hi) */ + map(0x87, 0x87).r(this, FUNC(_25pacman_state::_25pacman_io_87_r)); // not eeprom on this + map(0x87, 0x87).nopw(); // AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w) - AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */ - AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip") - AM_RANGE(0x8c, 0x8c) AM_WRITENOP - AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(_20pacgal_state::_20pacgal_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x82, 0x82) AM_READ_PORT("SERVICE") - AM_RANGE(0x80, 0x80) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x81, 0x81) AM_WRITE(timer_pulse_w) /* ??? pulsed by the timer irq */ - AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w) - AM_RANGE(0x84, 0x84) AM_NOP /* ?? */ - AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */ - AM_RANGE(0x87, 0x87) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w) - AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */ - AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip") - AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w) -ADDRESS_MAP_END + map(0x89, 0x89).w("dac", FUNC(dac_byte_interface::write)); + map(0x8a, 0x8a).writeonly().share("stars_ctrl"); /* stars: bits 3-4 = active set; bit 5 = enable */ + map(0x8b, 0x8b).writeonly().share("flip"); + map(0x8c, 0x8c).nopw(); + map(0x8f, 0x8f).w(this, FUNC(_25pacman_state::_20pacgal_coin_counter_w)); +} + +void _20pacgal_state::_20pacgal_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).noprw(); /* Z180 internal registers */ + map(0x40, 0x7f).noprw(); /* Z180 internal registers */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x82, 0x82).portr("SERVICE"); + map(0x80, 0x80).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x81, 0x81).w(this, FUNC(_20pacgal_state::timer_pulse_w)); /* ??? pulsed by the timer irq */ + map(0x82, 0x82).w(this, FUNC(_20pacgal_state::irqack_w)); + map(0x84, 0x84).noprw(); /* ?? */ + map(0x85, 0x86).writeonly().share("stars_seed"); /* stars: rng seed (lo/hi) */ + map(0x87, 0x87).portr("EEPROMIN").portw("EEPROMOUT"); + map(0x88, 0x88).w(this, FUNC(_20pacgal_state::ram_bank_select_w)); + map(0x89, 0x89).w("dac", FUNC(dac_byte_interface::write)); + map(0x8a, 0x8a).writeonly().share("stars_ctrl"); /* stars: bits 3-4 = active set; bit 5 = enable */ + map(0x8b, 0x8b).writeonly().share("flip"); + map(0x8f, 0x8f).w(this, FUNC(_20pacgal_state::_20pacgal_coin_counter_w)); +} diff --git a/src/mame/drivers/24cdjuke.cpp b/src/mame/drivers/24cdjuke.cpp index a87690c45cb..6ef5531e067 100644 --- a/src/mame/drivers/24cdjuke.cpp +++ b/src/mame/drivers/24cdjuke.cpp @@ -125,20 +125,22 @@ WRITE8_MEMBER(midcoin24cdjuke_state::digit_w) } -ADDRESS_MAP_START(midcoin24cdjuke_state::midcoin24cdjuke_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x7800, 0x780f) AM_WRITE(digit_w) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(midcoin24cdjuke_state::midcoin24cdjuke_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ic31", i8255_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ic11", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ic25", i8255_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_WRITENOP - AM_RANGE(0x10, 0x1f) AM_READ(unknown_r) -ADDRESS_MAP_END +void midcoin24cdjuke_state::midcoin24cdjuke_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x7800, 0x780f).w(this, FUNC(midcoin24cdjuke_state::digit_w)); + map(0x8000, 0xffff).ram(); +} + +void midcoin24cdjuke_state::midcoin24cdjuke_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ic31", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x04, 0x07).rw("ic11", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw("ic25", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0c, 0x0c).nopw(); + map(0x10, 0x1f).r(this, FUNC(midcoin24cdjuke_state::unknown_r)); +} static INPUT_PORTS_START( midcoin24cdjuke ) PORT_START("ROW0") diff --git a/src/mame/drivers/2mindril.cpp b/src/mame/drivers/2mindril.cpp index 2c53c24d638..75909adb738 100644 --- a/src/mame/drivers/2mindril.cpp +++ b/src/mame/drivers/2mindril.cpp @@ -194,26 +194,27 @@ WRITE16_MEMBER(_2mindril_state::drill_irq_w) COMBINE_DATA(&m_irq_reg); } -ADDRESS_MAP_START(_2mindril_state::drill_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x3000ff) AM_RAM - AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(f3_spriteram_r,f3_spriteram_w) - AM_RANGE(0x410000, 0x41bfff) AM_READWRITE(f3_pf_data_r,f3_pf_data_w) - AM_RANGE(0x41c000, 0x41dfff) AM_READWRITE(f3_videoram_r,f3_videoram_w) - AM_RANGE(0x41e000, 0x41ffff) AM_READWRITE(f3_vram_r,f3_vram_w) - AM_RANGE(0x420000, 0x42ffff) AM_READWRITE(f3_lineram_r,f3_lineram_w) - AM_RANGE(0x430000, 0x43ffff) AM_READWRITE(f3_pivot_r,f3_pivot_w) - AM_RANGE(0x460000, 0x46000f) AM_WRITE(f3_control_0_w) - AM_RANGE(0x460010, 0x46001f) AM_WRITE(f3_control_1_w) - AM_RANGE(0x500000, 0x501fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x502022, 0x502023) AM_WRITENOP //countinously switches between 0 and 2 - AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff) - AM_RANGE(0x60000c, 0x60000d) AM_READWRITE(drill_irq_r,drill_irq_w) - AM_RANGE(0x60000e, 0x60000f) AM_RAM // unknown purpose, zeroed at start-up and nothing else - AM_RANGE(0x700000, 0x70000f) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xff00) - AM_RANGE(0x800000, 0x800001) AM_WRITE(sensors_w) -ADDRESS_MAP_END +void _2mindril_state::drill_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x3000ff).ram(); + map(0x400000, 0x40ffff).rw(this, FUNC(_2mindril_state::f3_spriteram_r), FUNC(_2mindril_state::f3_spriteram_w)); + map(0x410000, 0x41bfff).rw(this, FUNC(_2mindril_state::f3_pf_data_r), FUNC(_2mindril_state::f3_pf_data_w)); + map(0x41c000, 0x41dfff).rw(this, FUNC(_2mindril_state::f3_videoram_r), FUNC(_2mindril_state::f3_videoram_w)); + map(0x41e000, 0x41ffff).rw(this, FUNC(_2mindril_state::f3_vram_r), FUNC(_2mindril_state::f3_vram_w)); + map(0x420000, 0x42ffff).rw(this, FUNC(_2mindril_state::f3_lineram_r), FUNC(_2mindril_state::f3_lineram_w)); + map(0x430000, 0x43ffff).rw(this, FUNC(_2mindril_state::f3_pivot_r), FUNC(_2mindril_state::f3_pivot_w)); + map(0x460000, 0x46000f).w(this, FUNC(_2mindril_state::f3_control_0_w)); + map(0x460010, 0x46001f).w(this, FUNC(_2mindril_state::f3_control_1_w)); + map(0x500000, 0x501fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x502022, 0x502023).nopw(); //countinously switches between 0 and 2 + map(0x600000, 0x600007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff); + map(0x60000c, 0x60000d).rw(this, FUNC(_2mindril_state::drill_irq_r), FUNC(_2mindril_state::drill_irq_w)); + map(0x60000e, 0x60000f).ram(); // unknown purpose, zeroed at start-up and nothing else + map(0x700000, 0x70000f).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0xff00); + map(0x800000, 0x800001).w(this, FUNC(_2mindril_state::sensors_w)); +} static INPUT_PORTS_START( drill ) PORT_START("DSW")//Dip-Switches diff --git a/src/mame/drivers/30test.cpp b/src/mame/drivers/30test.cpp index 2c25f09ee04..b4471a80965 100644 --- a/src/mame/drivers/30test.cpp +++ b/src/mame/drivers/30test.cpp @@ -139,31 +139,33 @@ WRITE8_MEMBER(namco_30test_state::hc11_okibank_w) } -ADDRESS_MAP_START(namco_30test_state::namco_30test_map) - AM_RANGE(0x0000, 0x003f) AM_RAM // internal I/O - AM_RANGE(0x0040, 0x007f) AM_RAM // more internal I/O, HC11 change pending - AM_RANGE(0x007c, 0x007c) AM_READWRITE(hc11_mux_r,hc11_mux_w) - AM_RANGE(0x007e, 0x007e) AM_READWRITE(hc11_okibank_r,hc11_okibank_w) - AM_RANGE(0x0080, 0x037f) AM_RAM // internal RAM - AM_RANGE(0x0d80, 0x0dbf) AM_RAM // EEPROM read-back data goes there - AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("oki", okim6295_device, read, write) +void namco_30test_state::namco_30test_map(address_map &map) +{ + map(0x0000, 0x003f).ram(); // internal I/O + map(0x0040, 0x007f).ram(); // more internal I/O, HC11 change pending + map(0x007c, 0x007c).rw(this, FUNC(namco_30test_state::hc11_mux_r), FUNC(namco_30test_state::hc11_mux_w)); + map(0x007e, 0x007e).rw(this, FUNC(namco_30test_state::hc11_okibank_r), FUNC(namco_30test_state::hc11_okibank_w)); + map(0x0080, 0x037f).ram(); // internal RAM + map(0x0d80, 0x0dbf).ram(); // EEPROM read-back data goes there + map(0x2000, 0x2000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* 0x401e-0x401f: time */ - AM_RANGE(0x4000, 0x401f) AM_WRITE(namco_30test_led_w) // 7-seg leds + map(0x4000, 0x401f).w(this, FUNC(namco_30test_state::namco_30test_led_w)); // 7-seg leds /* 0x6000: 1st place 7-seg led */ /* 0x6001: 2nd place 7-seg led */ /* 0x6002: 3rd place 7-seg led */ /* 0x6003: current / last play score */ /* 0x6004: lamps */ - AM_RANGE(0x6000, 0x6003) AM_WRITE(namco_30test_led_rank_w) - AM_RANGE(0x6004, 0x6004) AM_WRITE(namco_30test_lamps_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x6000, 0x6003).w(this, FUNC(namco_30test_state::namco_30test_led_rank_w)); + map(0x6004, 0x6004).w(this, FUNC(namco_30test_state::namco_30test_lamps_w)); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(namco_30test_state::namco_30test_io) - AM_RANGE(MC68HC11_IO_PORTA,MC68HC11_IO_PORTA) AM_READ(namco_30test_mux_r) +void namco_30test_state::namco_30test_io(address_map &map) +{ + map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).r(this, FUNC(namco_30test_state::namco_30test_mux_r)); // AM_RANGE(MC68HC11_IO_PORTD,MC68HC11_IO_PORTD) AM_RAM - AM_RANGE(MC68HC11_IO_PORTE,MC68HC11_IO_PORTE) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END + map(MC68HC11_IO_PORTE, MC68HC11_IO_PORTE).portr("SYSTEM"); +} static INPUT_PORTS_START( 30test ) diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp index e6b04233d36..cefb7c079cc 100644 --- a/src/mame/drivers/39in1.cpp +++ b/src/mame/drivers/39in1.cpp @@ -1454,18 +1454,19 @@ DRIVER_INIT_MEMBER(_39in1_state,39in1) -ADDRESS_MAP_START(_39in1_state::_39in1_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM - AM_RANGE(0x00400000, 0x005fffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x04000000, 0x047fffff) AM_READWRITE(cpld_r, cpld_w ) - AM_RANGE(0x40000000, 0x400002ff) AM_READWRITE(pxa255_dma_r, pxa255_dma_w ) - AM_RANGE(0x40400000, 0x40400083) AM_READWRITE(pxa255_i2s_r, pxa255_i2s_w ) - AM_RANGE(0x40a00000, 0x40a0001f) AM_READWRITE(pxa255_ostimer_r, pxa255_ostimer_w ) - AM_RANGE(0x40d00000, 0x40d00017) AM_READWRITE(pxa255_intc_r, pxa255_intc_w ) - AM_RANGE(0x40e00000, 0x40e0006b) AM_READWRITE(pxa255_gpio_r, pxa255_gpio_w ) - AM_RANGE(0x44000000, 0x4400021f) AM_READWRITE(pxa255_lcd_r, pxa255_lcd_w ) - AM_RANGE(0xa0000000, 0xa07fffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END +void _39in1_state::_39in1_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); + map(0x00400000, 0x005fffff).rom().region("data", 0); + map(0x04000000, 0x047fffff).rw(this, FUNC(_39in1_state::cpld_r), FUNC(_39in1_state::cpld_w)); + map(0x40000000, 0x400002ff).rw(this, FUNC(_39in1_state::pxa255_dma_r), FUNC(_39in1_state::pxa255_dma_w)); + map(0x40400000, 0x40400083).rw(this, FUNC(_39in1_state::pxa255_i2s_r), FUNC(_39in1_state::pxa255_i2s_w)); + map(0x40a00000, 0x40a0001f).rw(this, FUNC(_39in1_state::pxa255_ostimer_r), FUNC(_39in1_state::pxa255_ostimer_w)); + map(0x40d00000, 0x40d00017).rw(this, FUNC(_39in1_state::pxa255_intc_r), FUNC(_39in1_state::pxa255_intc_w)); + map(0x40e00000, 0x40e0006b).rw(this, FUNC(_39in1_state::pxa255_gpio_r), FUNC(_39in1_state::pxa255_gpio_w)); + map(0x44000000, 0x4400021f).rw(this, FUNC(_39in1_state::pxa255_lcd_r), FUNC(_39in1_state::pxa255_lcd_w)); + map(0xa0000000, 0xa07fffff).ram().share("ram"); +} static INPUT_PORTS_START( 39in1 ) PORT_START("MCUIPT") diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp index ef2a57051a3..15b6b768e85 100644 --- a/src/mame/drivers/3do.cpp +++ b/src/mame/drivers/3do.cpp @@ -107,17 +107,18 @@ Part list of Goldstar 3DO Interactive Multiplayer #define X601_CLOCK XTAL(16'934'400) -ADDRESS_MAP_START(_3do_state::_3do_mem) - AM_RANGE(0x00000000, 0x001FFFFF) AM_RAMBANK("bank1") AM_SHARE("dram") /* DRAM */ - AM_RANGE(0x00200000, 0x003FFFFF) AM_RAM AM_SHARE("vram") /* VRAM */ - AM_RANGE(0x03000000, 0x030FFFFF) AM_ROMBANK("bank2") /* BIOS */ - AM_RANGE(0x03100000, 0x0313FFFF) AM_RAM /* Brooktree? */ - AM_RANGE(0x03140000, 0x0315FFFF) AM_READWRITE8(_3do_nvarea_r, _3do_nvarea_w, 0x000000ff) /* NVRAM */ - AM_RANGE(0x03180000, 0x031BFFFF) AM_READWRITE(_3do_slow2_r, _3do_slow2_w) /* Slow bus - additional expansion */ - AM_RANGE(0x03200000, 0x0320FFFF) AM_READWRITE(_3do_svf_r, _3do_svf_w) /* special vram access1 */ - AM_RANGE(0x03300000, 0x033FFFFF) AM_READWRITE(_3do_madam_r, _3do_madam_w) /* address decoder */ - AM_RANGE(0x03400000, 0x034FFFFF) AM_READWRITE(_3do_clio_r, _3do_clio_w) /* io controller */ -ADDRESS_MAP_END +void _3do_state::_3do_mem(address_map &map) +{ + map(0x00000000, 0x001FFFFF).bankrw("bank1").share("dram"); /* DRAM */ + map(0x00200000, 0x003FFFFF).ram().share("vram"); /* VRAM */ + map(0x03000000, 0x030FFFFF).bankr("bank2"); /* BIOS */ + map(0x03100000, 0x0313FFFF).ram(); /* Brooktree? */ + map(0x03140000, 0x0315FFFF).rw(this, FUNC(_3do_state::_3do_nvarea_r), FUNC(_3do_state::_3do_nvarea_w)).umask32(0x000000ff); /* NVRAM */ + map(0x03180000, 0x031BFFFF).rw(this, FUNC(_3do_state::_3do_slow2_r), FUNC(_3do_state::_3do_slow2_w)); /* Slow bus - additional expansion */ + map(0x03200000, 0x0320FFFF).rw(this, FUNC(_3do_state::_3do_svf_r), FUNC(_3do_state::_3do_svf_w)); /* special vram access1 */ + map(0x03300000, 0x033FFFFF).rw(this, FUNC(_3do_state::_3do_madam_r), FUNC(_3do_state::_3do_madam_w)); /* address decoder */ + map(0x03400000, 0x034FFFFF).rw(this, FUNC(_3do_state::_3do_clio_r), FUNC(_3do_state::_3do_clio_w)); /* io controller */ +} static INPUT_PORTS_START( 3do ) diff --git a/src/mame/drivers/3x3puzzl.cpp b/src/mame/drivers/3x3puzzl.cpp index 86dd7742ef0..fb05e097365 100644 --- a/src/mame/drivers/3x3puzzl.cpp +++ b/src/mame/drivers/3x3puzzl.cpp @@ -209,23 +209,24 @@ uint32_t _3x3puzzle_state::screen_update( screen_device &screen, bitmap_rgb32 &b return 0; } -ADDRESS_MAP_START(_3x3puzzle_state::_3x3puzzle_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("videoram1") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x202000, 0x202fff) AM_RAM AM_SHARE("videoram3") - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("VBLANK") - AM_RANGE(0x300000, 0x3005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400001) AM_WRITE(tilemap1_scrollx_w) - AM_RANGE(0x480000, 0x480001) AM_WRITE(tilemap1_scrolly_w) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") - AM_RANGE(0x580000, 0x580001) AM_READ_PORT("SYS") - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW01") - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_WRITE(gfx_ctrl_w) - AM_RANGE(0x880000, 0x880001) AM_READNOP // read, but no tested afterwards -ADDRESS_MAP_END +void _3x3puzzle_state::_3x3puzzle_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x2007ff).ram().share("videoram1"); + map(0x201000, 0x201fff).ram().share("videoram2"); + map(0x202000, 0x202fff).ram().share("videoram3"); + map(0x280000, 0x280001).portr("VBLANK"); + map(0x300000, 0x3005ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400001).w(this, FUNC(_3x3puzzle_state::tilemap1_scrollx_w)); + map(0x480000, 0x480001).w(this, FUNC(_3x3puzzle_state::tilemap1_scrolly_w)); + map(0x500000, 0x500001).portr("P1"); + map(0x580000, 0x580001).portr("SYS"); + map(0x600000, 0x600001).portr("DSW01"); + map(0x700001, 0x700001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x800000, 0x800001).w(this, FUNC(_3x3puzzle_state::gfx_ctrl_w)); + map(0x880000, 0x880001).nopr(); // read, but no tested afterwards +} static INPUT_PORTS_START( _3x3puzzle ) PORT_START("P1") diff --git a/src/mame/drivers/4004clk.cpp b/src/mame/drivers/4004clk.cpp index d187741c3d2..b1385e2474f 100644 --- a/src/mame/drivers/4004clk.cpp +++ b/src/mame/drivers/4004clk.cpp @@ -82,30 +82,35 @@ WRITE8_MEMBER(nixieclock_state::neon_w) m_neon_out[3] = BIT(data,0); } -ADDRESS_MAP_START(nixieclock_state::_4004clk_rom) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nixieclock_state::_4004clk_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x007f) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nixieclock_state::_4004clk_stat) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x001f) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nixieclock_state::_4004clk_rp) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_READ_PORT("INPUT") - AM_RANGE(0x0000, 0x00ef) AM_MIRROR(0x0700) AM_WRITE(nixie_w) - AM_RANGE(0x00f0, 0x00ff) AM_MIRROR(0x0700) AM_WRITE(neon_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nixieclock_state::_4004clk_mp) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_bit_interface, write) -ADDRESS_MAP_END +void nixieclock_state::_4004clk_rom(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("maincpu", 0); +} + +void nixieclock_state::_4004clk_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x007f).ram(); +} + +void nixieclock_state::_4004clk_stat(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x001f).ram(); +} + +void nixieclock_state::_4004clk_rp(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x000f).mirror(0x0700).portr("INPUT"); + map(0x0000, 0x00ef).mirror(0x0700).w(this, FUNC(nixieclock_state::nixie_w)); + map(0x00f0, 0x00ff).mirror(0x0700).w(this, FUNC(nixieclock_state::neon_w)); +} + +void nixieclock_state::_4004clk_mp(address_map &map) +{ + map(0x00, 0x00).w("dac", FUNC(dac_bit_interface::write)); +} /* Input ports */ static INPUT_PORTS_START( 4004clk ) diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp index de75f20cb3d..7c27c9207c7 100644 --- a/src/mame/drivers/40love.cpp +++ b/src/mame/drivers/40love.cpp @@ -349,58 +349,60 @@ READ8_MEMBER(fortyl_state::snd_flag_r) /***************************************************************************/ -ADDRESS_MAP_START(fortyl_state::_40love_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM /* M5517P on main board */ - AM_RANGE(0x8800, 0x8800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0x8801, 0x8801) AM_READWRITE(fortyl_mcu_status_r, pix1_mcu_w) //pixel layer related - AM_RANGE(0x8802, 0x8802) AM_WRITE(bank_select_w) - AM_RANGE(0x8803, 0x8803) AM_READWRITE(pix2_r, pix2_w) //pixel layer related - AM_RANGE(0x8804, 0x8804) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x8804, 0x8804) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x8805, 0x8805) AM_READ(snd_flag_r) AM_WRITENOP /*sound_reset*/ //???? - AM_RANGE(0x8807, 0x8807) AM_READNOP /* unknown */ - AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSW3") - AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1") - AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM") - AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2") - AM_RANGE(0x880c, 0x880c) AM_READ_PORT("DSW1") AM_WRITE(fortyl_pixram_sel_w) /* pixram bank select */ - AM_RANGE(0x880d, 0x880d) AM_READ_PORT("DSW2") AM_WRITENOP /* unknown */ - AM_RANGE(0x9000, 0x97ff) AM_READWRITE(fortyl_bg_videoram_r, fortyl_bg_videoram_w) AM_SHARE("videoram") /* #1 M5517P on video board */ - AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("video_ctrl") /* video control area */ - AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram") /* sprites part 1 */ - AM_RANGE(0x9880, 0x98bf) AM_READWRITE(fortyl_bg_colorram_r, fortyl_bg_colorram_w) AM_SHARE("colorram") /* background attributes (2 bytes per line) */ - AM_RANGE(0x98c0, 0x98ff) AM_RAM AM_SHARE("spriteram2")/* sprites part 2 */ - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") +void fortyl_state::_40love_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); /* M5517P on main board */ + map(0x8800, 0x8800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0x8801, 0x8801).rw(this, FUNC(fortyl_state::fortyl_mcu_status_r), FUNC(fortyl_state::pix1_mcu_w)); //pixel layer related + map(0x8802, 0x8802).w(this, FUNC(fortyl_state::bank_select_w)); + map(0x8803, 0x8803).rw(this, FUNC(fortyl_state::pix2_r), FUNC(fortyl_state::pix2_w)); //pixel layer related + map(0x8804, 0x8804).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0x8804, 0x8804).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x8805, 0x8805).r(this, FUNC(fortyl_state::snd_flag_r)).nopw(); /*sound_reset*/ //???? + map(0x8807, 0x8807).nopr(); /* unknown */ + map(0x8808, 0x8808).portr("DSW3"); + map(0x8809, 0x8809).portr("P1"); + map(0x880a, 0x880a).portr("SYSTEM"); + map(0x880b, 0x880b).portr("P2"); + map(0x880c, 0x880c).portr("DSW1").w(this, FUNC(fortyl_state::fortyl_pixram_sel_w)); /* pixram bank select */ + map(0x880d, 0x880d).portr("DSW2").nopw(); /* unknown */ + map(0x9000, 0x97ff).rw(this, FUNC(fortyl_state::fortyl_bg_videoram_r), FUNC(fortyl_state::fortyl_bg_videoram_w)).share("videoram"); /* #1 M5517P on video board */ + map(0x9800, 0x983f).ram().share("video_ctrl"); /* video control area */ + map(0x9840, 0x987f).ram().share("spriteram"); /* sprites part 1 */ + map(0x9880, 0x98bf).rw(this, FUNC(fortyl_state::fortyl_bg_colorram_r), FUNC(fortyl_state::fortyl_bg_colorram_w)).share("colorram"); /* background attributes (2 bytes per line) */ + map(0x98c0, 0x98ff).ram().share("spriteram2");/* sprites part 2 */ + map(0xa000, 0xbfff).bankr("bank1"); //AM_RANGE(0xbf00, 0xbfff) writes here when zooms-in/out, left-over or pixel line clearance? - AM_RANGE(0xc000, 0xffff) AM_READWRITE(fortyl_pixram_r, fortyl_pixram_w) /* banked pixel layer */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(fortyl_state::undoukai_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("mcu_ram") /* M5517P on main board */ - AM_RANGE(0xa800, 0xa800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0xa801, 0xa801) AM_READWRITE(fortyl_mcu_status_r, pix1_w) //pixel layer related - AM_RANGE(0xa802, 0xa802) AM_WRITE(bank_select_w) - AM_RANGE(0xa803, 0xa803) AM_READWRITE(pix2_r, pix2_w) //pixel layer related - AM_RANGE(0xa804, 0xa804) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0xa804, 0xa804) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa805, 0xa805) AM_READ(snd_flag_r) AM_WRITENOP /*sound_reset*/ //???? - AM_RANGE(0xa807, 0xa807) AM_READNOP AM_WRITENOP /* unknown */ - AM_RANGE(0xa808, 0xa808) AM_READ_PORT("DSW3") - AM_RANGE(0xa809, 0xa809) AM_READ_PORT("P1") - AM_RANGE(0xa80a, 0xa80a) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa80b, 0xa80b) AM_READ_PORT("P2") - AM_RANGE(0xa80c, 0xa80c) AM_READ_PORT("DSW1") AM_WRITE(fortyl_pixram_sel_w) /* pixram bank select */ - AM_RANGE(0xa80d, 0xa80d) AM_READ_PORT("DSW2") AM_WRITENOP /* unknown */ - AM_RANGE(0xb000, 0xb7ff) AM_READWRITE(fortyl_bg_videoram_r, fortyl_bg_videoram_w) AM_SHARE("videoram") /* #1 M5517P on video board */ - AM_RANGE(0xb800, 0xb83f) AM_RAM AM_SHARE("video_ctrl") /* video control area */ - AM_RANGE(0xb840, 0xb87f) AM_RAM AM_SHARE("spriteram") /* sprites part 1 */ - AM_RANGE(0xb880, 0xb8bf) AM_READWRITE(fortyl_bg_colorram_r, fortyl_bg_colorram_w) AM_SHARE("colorram") /* background attributes (2 bytes per line) */ - AM_RANGE(0xb8e0, 0xb8ff) AM_RAM AM_SHARE("spriteram2") /* sprites part 2 */ - AM_RANGE(0xc000, 0xffff) AM_READWRITE(fortyl_pixram_r, fortyl_pixram_w) -ADDRESS_MAP_END + map(0xc000, 0xffff).rw(this, FUNC(fortyl_state::fortyl_pixram_r), FUNC(fortyl_state::fortyl_pixram_w)); /* banked pixel layer */ +} + +void fortyl_state::undoukai_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xa7ff).ram().share("mcu_ram"); /* M5517P on main board */ + map(0xa800, 0xa800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0xa801, 0xa801).rw(this, FUNC(fortyl_state::fortyl_mcu_status_r), FUNC(fortyl_state::pix1_w)); //pixel layer related + map(0xa802, 0xa802).w(this, FUNC(fortyl_state::bank_select_w)); + map(0xa803, 0xa803).rw(this, FUNC(fortyl_state::pix2_r), FUNC(fortyl_state::pix2_w)); //pixel layer related + map(0xa804, 0xa804).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0xa804, 0xa804).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xa805, 0xa805).r(this, FUNC(fortyl_state::snd_flag_r)).nopw(); /*sound_reset*/ //???? + map(0xa807, 0xa807).nopr().nopw(); /* unknown */ + map(0xa808, 0xa808).portr("DSW3"); + map(0xa809, 0xa809).portr("P1"); + map(0xa80a, 0xa80a).portr("SYSTEM"); + map(0xa80b, 0xa80b).portr("P2"); + map(0xa80c, 0xa80c).portr("DSW1").w(this, FUNC(fortyl_state::fortyl_pixram_sel_w)); /* pixram bank select */ + map(0xa80d, 0xa80d).portr("DSW2").nopw(); /* unknown */ + map(0xb000, 0xb7ff).rw(this, FUNC(fortyl_state::fortyl_bg_videoram_r), FUNC(fortyl_state::fortyl_bg_videoram_w)).share("videoram"); /* #1 M5517P on video board */ + map(0xb800, 0xb83f).ram().share("video_ctrl"); /* video control area */ + map(0xb840, 0xb87f).ram().share("spriteram"); /* sprites part 1 */ + map(0xb880, 0xb8bf).rw(this, FUNC(fortyl_state::fortyl_bg_colorram_r), FUNC(fortyl_state::fortyl_bg_colorram_w)).share("colorram"); /* background attributes (2 bytes per line) */ + map(0xb8e0, 0xb8ff).ram().share("spriteram2"); /* sprites part 2 */ + map(0xc000, 0xffff).rw(this, FUNC(fortyl_state::fortyl_pixram_r), FUNC(fortyl_state::fortyl_pixram_w)); +} WRITE8_MEMBER(fortyl_state::sound_control_0_w) { @@ -444,21 +446,22 @@ WRITE8_MEMBER(fortyl_state::sound_control_3_w)/* unknown */ // popmessage("SND3 0=%02x 1=%02x 2=%02x 3=%02x", m_snd_ctrl0, m_snd_ctrl1, m_snd_ctrl2, m_snd_ctrl3); } -ADDRESS_MAP_START(fortyl_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w) - AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w) - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xda00, 0xda00) AM_READNOP // unknown read - AM_RANGE(0xda00, 0xda00) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>) // enable NMI - AM_RANGE(0xdc00, 0xdc00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>) // disable NMI - AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC - unknown read */ - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */ -ADDRESS_MAP_END +void fortyl_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).w(m_ay, FUNC(ay8910_device::address_data_w)); + map(0xca00, 0xca0d).w(m_msm, FUNC(msm5232_device::write)); + map(0xcc00, 0xcc00).w(this, FUNC(fortyl_state::sound_control_0_w)); + map(0xce00, 0xce00).w(this, FUNC(fortyl_state::sound_control_1_w)); + map(0xd800, 0xd800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xd800, 0xd800).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xda00, 0xda00).nopr(); // unknown read + map(0xda00, 0xda00).w("soundnmi", FUNC(input_merger_device::in_set<1>)); // enable NMI + map(0xdc00, 0xdc00).w("soundnmi", FUNC(input_merger_device::in_clear<1>)); // disable NMI + map(0xde00, 0xde00).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC - unknown read */ + map(0xe000, 0xefff).rom(); /* space for diagnostics ROM */ +} static INPUT_PORTS_START( 40love ) diff --git a/src/mame/drivers/4dpi.cpp b/src/mame/drivers/4dpi.cpp index a86e832b186..f245174df69 100644 --- a/src/mame/drivers/4dpi.cpp +++ b/src/mame/drivers/4dpi.cpp @@ -218,12 +218,13 @@ void sgi_ip6_state::machine_reset() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(sgi_ip6_state::sgi_ip6_map) - AM_RANGE( 0x1f880000, 0x1f880003 ) AM_READWRITE(ip6_unk1_r, ip6_unk1_w) - AM_RANGE( 0x1fb00000, 0x1fb00003 ) AM_READWRITE(ip6_unk3_r, ip6_unk3_w) - AM_RANGE( 0x1fbc004c, 0x1fbc004f ) AM_READWRITE(ip6_unk2_r, ip6_unk2_w) - AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_REGION( "user1", 0 ) -ADDRESS_MAP_END +void sgi_ip6_state::sgi_ip6_map(address_map &map) +{ + map(0x1f880000, 0x1f880003).rw(this, FUNC(sgi_ip6_state::ip6_unk1_r), FUNC(sgi_ip6_state::ip6_unk1_w)); + map(0x1fb00000, 0x1fb00003).rw(this, FUNC(sgi_ip6_state::ip6_unk3_r), FUNC(sgi_ip6_state::ip6_unk3_w)); + map(0x1fbc004c, 0x1fbc004f).rw(this, FUNC(sgi_ip6_state::ip6_unk2_r), FUNC(sgi_ip6_state::ip6_unk2_w)); + map(0x1fc00000, 0x1fc3ffff).rom().region("user1", 0); +} /*************************************************************************** MACHINE DRIVERS diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp index df0a407dbb9..6eb4c436e6b 100644 --- a/src/mame/drivers/4enlinea.cpp +++ b/src/mame/drivers/4enlinea.cpp @@ -350,20 +350,22 @@ READ8_MEMBER(_4enlinea_state::serial_r) * Memory Map Information * ***********************************/ -ADDRESS_MAP_START(_4enlinea_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void _4enlinea_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // AM_RANGE(0x8000, 0xbfff) AM_RAM // CGA VRAM - AM_RANGE(0xc000, 0xdfff) AM_RAM + map(0xc000, 0xdfff).ram(); - AM_RANGE(0xe000, 0xe001) AM_READ(serial_r) -ADDRESS_MAP_END + map(0xe000, 0xe001).r(this, FUNC(_4enlinea_state::serial_r)); +} -ADDRESS_MAP_START(_4enlinea_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0x3ff) +void _4enlinea_state::main_portmap(address_map &map) +{ + map.global_mask(0x3ff); // AM_RANGE(0x3d4, 0x3df) CGA regs - AM_RANGE(0x3bf, 0x3bf) AM_WRITENOP // CGA mode control, TODO -ADDRESS_MAP_END + map(0x3bf, 0x3bf).nopw(); // CGA mode control, TODO +} READ8_MEMBER(_4enlinea_state::serial_status_r) { @@ -388,21 +390,23 @@ READ8_MEMBER(_4enlinea_state::hack_r) return machine().rand(); } -ADDRESS_MAP_START(_4enlinea_state::audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf800, 0xfbff) AM_RAM - AM_RANGE(0xfc24, 0xfc24) AM_READ(hack_r) - AM_RANGE(0xfc28, 0xfc28) AM_READ(hack_r) - AM_RANGE(0xfc30, 0xfc31) AM_WRITE(serial_w) - AM_RANGE(0xfc32, 0xfc32) AM_READWRITE(serial_status_r,serial_status_w) - AM_RANGE(0xfc48, 0xfc49) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_data_w) +void _4enlinea_state::audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf800, 0xfbff).ram(); + map(0xfc24, 0xfc24).r(this, FUNC(_4enlinea_state::hack_r)); + map(0xfc28, 0xfc28).r(this, FUNC(_4enlinea_state::hack_r)); + map(0xfc30, 0xfc31).w(this, FUNC(_4enlinea_state::serial_w)); + map(0xfc32, 0xfc32).rw(this, FUNC(_4enlinea_state::serial_status_r), FUNC(_4enlinea_state::serial_status_w)); + map(0xfc48, 0xfc49).rw(m_ay, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(_4enlinea_state::audio_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void _4enlinea_state::audio_portmap(address_map &map) +{ + map.global_mask(0xff); +} /*********************************** diff --git a/src/mame/drivers/4enraya.cpp b/src/mame/drivers/4enraya.cpp index 1615ee712ee..38e97f77ab0 100644 --- a/src/mame/drivers/4enraya.cpp +++ b/src/mame/drivers/4enraya.cpp @@ -250,37 +250,41 @@ WRITE8_MEMBER(_4enraya_state::fenraya_custom_map_w) * Memory Map Information * ***********************************/ -ADDRESS_MAP_START(_4enraya_state::main_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(fenraya_custom_map_r, fenraya_custom_map_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(_4enraya_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") - AM_RANGE(0x01, 0x01) AM_READ_PORT("INPUTS") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x23, 0x23) AM_WRITE(sound_data_w) - AM_RANGE(0x33, 0x33) AM_WRITE(sound_control_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(_4enraya_state::unkpacg_main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x7000, 0x7fff) AM_WRITE(fenraya_videoram_w) - AM_RANGE(0x8000, 0x9fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(_4enraya_state::unkpacg_main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") +void _4enraya_state::main_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(_4enraya_state::fenraya_custom_map_r), FUNC(_4enraya_state::fenraya_custom_map_w)); +} + +void _4enraya_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW"); + map(0x01, 0x01).portr("INPUTS"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x23, 0x23).w(this, FUNC(_4enraya_state::sound_data_w)); + map(0x33, 0x33).w(this, FUNC(_4enraya_state::sound_control_w)); +} + + +void _4enraya_state::unkpacg_main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x6000, 0x67ff).ram().share("nvram"); + map(0x7000, 0x7fff).w(this, FUNC(_4enraya_state::fenraya_videoram_w)); + map(0x8000, 0x9fff).rom(); +} + +void _4enraya_state::unkpacg_main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); // AM_RANGE(0x03, 0x03) AM_WRITE("out_w") // to investigate... - AM_RANGE(0x17, 0x17) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x27, 0x27) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x37, 0x37) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END + map(0x17, 0x17).w(m_ay, FUNC(ay8910_device::data_w)); + map(0x27, 0x27).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x37, 0x37).w(m_ay, FUNC(ay8910_device::address_w)); +} /*********************************** diff --git a/src/mame/drivers/4roses.cpp b/src/mame/drivers/4roses.cpp index 49ad743baa5..3502dd61fa2 100644 --- a/src/mame/drivers/4roses.cpp +++ b/src/mame/drivers/4roses.cpp @@ -208,12 +208,13 @@ public: * Memory map information * *************************/ -ADDRESS_MAP_START(_4roses_state::_4roses_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM // AM_SHARE("nvram") - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void _4roses_state::_4roses_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); // AM_SHARE("nvram") + map(0x6000, 0x6fff).ram().w(this, FUNC(_4roses_state::funworld_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(_4roses_state::funworld_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} /* Unknown R/W diff --git a/src/mame/drivers/5clown.cpp b/src/mame/drivers/5clown.cpp index d95b88e9fee..7b4faa60e95 100644 --- a/src/mame/drivers/5clown.cpp +++ b/src/mame/drivers/5clown.cpp @@ -756,25 +756,26 @@ WRITE8_MEMBER(_5clown_state::snd_a02_w) * Memory map information * *************************/ -ADDRESS_MAP_START(_5clown_state::fclown_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(fclown_videoram_w) AM_SHARE("videoram") /* Init'ed at $2042 */ - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(fclown_colorram_w) AM_SHARE("colorram") /* Init'ed at $2054 */ - AM_RANGE(0x2000, 0x7fff) AM_ROM /* ROM space */ - - AM_RANGE(0xc048, 0xc048) AM_WRITE(cpu_c048_w ) - AM_RANGE(0xd800, 0xd800) AM_WRITE(cpu_d800_w ) - - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("SW1") /* DIP Switches bank */ - AM_RANGE(0xcc00, 0xcc00) AM_READ_PORT("SW2") /* DIP Switches bank */ - AM_RANGE(0xd400, 0xd400) AM_READ_PORT("SW3") /* Second DIP Switches bank */ - - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM space */ -ADDRESS_MAP_END +void _5clown_state::fclown_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(_5clown_state::fclown_videoram_w)).share("videoram"); /* Init'ed at $2042 */ + map(0x1800, 0x1bff).ram().w(this, FUNC(_5clown_state::fclown_colorram_w)).share("colorram"); /* Init'ed at $2054 */ + map(0x2000, 0x7fff).rom(); /* ROM space */ + + map(0xc048, 0xc048).w(this, FUNC(_5clown_state::cpu_c048_w)); + map(0xd800, 0xd800).w(this, FUNC(_5clown_state::cpu_d800_w)); + + map(0xc400, 0xc400).portr("SW1"); /* DIP Switches bank */ + map(0xcc00, 0xcc00).portr("SW2"); /* DIP Switches bank */ + map(0xd400, 0xd400).portr("SW3"); /* Second DIP Switches bank */ + + map(0xe000, 0xffff).rom(); /* ROM space */ +} /* @@ -831,15 +832,16 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(_5clown_state::fcaudio_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_WRITE(snd_800_w) - AM_RANGE(0x0a02, 0x0a02) AM_WRITE(snd_a02_w) - AM_RANGE(0x0c04, 0x0c04) AM_DEVWRITE("oki6295", okim6295_device, write) - AM_RANGE(0x0c06, 0x0c06) AM_DEVREAD("oki6295", okim6295_device, read) - AM_RANGE(0x0e06, 0x0e06) AM_READ(snd_e06_r) - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM space */ -ADDRESS_MAP_END +void _5clown_state::fcaudio_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0800).w(this, FUNC(_5clown_state::snd_800_w)); + map(0x0a02, 0x0a02).w(this, FUNC(_5clown_state::snd_a02_w)); + map(0x0c04, 0x0c04).w("oki6295", FUNC(okim6295_device::write)); + map(0x0c06, 0x0c06).r("oki6295", FUNC(okim6295_device::read)); + map(0x0e06, 0x0e06).r(this, FUNC(_5clown_state::snd_e06_r)); + map(0xe000, 0xffff).rom(); /* ROM space */ +} /************************* diff --git a/src/mame/drivers/68ksbc.cpp b/src/mame/drivers/68ksbc.cpp index 90353a42662..354080565dd 100644 --- a/src/mame/drivers/68ksbc.cpp +++ b/src/mame/drivers/68ksbc.cpp @@ -47,12 +47,13 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(c68ksbc_state::c68ksbc_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x002fff) AM_ROM - AM_RANGE(0x003000, 0x5fffff) AM_RAM - AM_RANGE(0x600000, 0x600003) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff) -ADDRESS_MAP_END +void c68ksbc_state::c68ksbc_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x002fff).rom(); + map(0x003000, 0x5fffff).ram(); + map(0x600000, 0x600003).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); +} /* Input ports */ diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp index 0ad1abebe63..0dcb1929fb2 100644 --- a/src/mame/drivers/8080bw.cpp +++ b/src/mame/drivers/8080bw.cpp @@ -372,15 +372,16 @@ INPUT_PORTS_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::invadpt2_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::invadpt2_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( invadpt2 ) @@ -442,15 +443,16 @@ MACHINE_CONFIG_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::spacerng_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(spacerng_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::spacerng_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::spacerng_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} MACHINE_CONFIG_START(_8080bw_state::spacerng) invadpt2(config); @@ -468,14 +470,15 @@ MACHINE_CONFIG_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::spcewars_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(spcewars_sh_port_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) -ADDRESS_MAP_END +void _8080bw_state::spcewars_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::spcewars_sh_port_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w)); +} static INPUT_PORTS_START( spcewars ) @@ -526,16 +529,17 @@ MACHINE_CONFIG_END // has a slightly rearranged io map and has PROMs and watchdog -ADDRESS_MAP_START(_8080bw_state::spcewarla_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x04, 0x04) AM_WRITE(spcewars_sh_port_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) -ADDRESS_MAP_END +void _8080bw_state::spcewarla_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x04, 0x04).w(this, FUNC(_8080bw_state::spcewars_sh_port_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w)); + map(0x06, 0x06).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x08, 0x08).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x0c, 0x0c).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); +} MACHINE_CONFIG_START(_8080bw_state::spcewarla) spcewars(config); @@ -557,16 +561,17 @@ MACHINE_CONFIG_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::astropal_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN3") - - AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invaders_audio_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::astropal_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).portr("IN3"); + + map(0x03, 0x03).w(this, FUNC(_8080bw_state::invaders_audio_1_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invaders_audio_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( astropal ) PORT_START("IN0") @@ -621,23 +626,25 @@ MACHINE_CONFIG_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::cosmo_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x57ff) AM_ROM - AM_RANGE(0x5c00, 0x5fff) AM_RAM AM_SHARE("colorram") -ADDRESS_MAP_END +void _8080bw_state::cosmo_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("main_ram"); + map(0x4000, 0x57ff).rom(); + map(0x5c00, 0x5fff).ram().share("colorram"); +} /* at least one of these MWA8_NOPs must be sound related */ -ADDRESS_MAP_START(_8080bw_state::cosmo_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITENOP - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_WRITE(invadpt2_sh_port_1_w) - AM_RANGE(0x05, 0x05) AM_WRITE(cosmo_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITENOP -ADDRESS_MAP_END +void _8080bw_state::cosmo_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0").nopw(); + map(0x01, 0x01).portr("IN1").nopw(); + map(0x02, 0x02).portr("IN2").nopw(); + map(0x03, 0x03).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::cosmo_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).nopw(); +} static INPUT_PORTS_START( cosmo ) @@ -803,16 +810,18 @@ static INPUT_PORTS_START( spacecom ) INPUT_PORTS_END -ADDRESS_MAP_START(_8080bw_state::spacecom_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") // other RAM not hooked up? -ADDRESS_MAP_END +void _8080bw_state::spacecom_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("main_ram"); // other RAM not hooked up? +} -ADDRESS_MAP_START(_8080bw_state::spacecom_io_map) - AM_RANGE(0x41, 0x41) AM_READ_PORT("IN0") - AM_RANGE(0x42, 0x42) AM_READ_PORT("IN1") AM_WRITE(invaders_audio_1_w) - AM_RANGE(0x44, 0x44) AM_READ_PORT("IN2") AM_WRITE(invaders_audio_2_w) -ADDRESS_MAP_END +void _8080bw_state::spacecom_io_map(address_map &map) +{ + map(0x41, 0x41).portr("IN0"); + map(0x42, 0x42).portr("IN1").w(this, FUNC(_8080bw_state::invaders_audio_1_w)); + map(0x44, 0x44).portr("IN2").w(this, FUNC(_8080bw_state::invaders_audio_2_w)); +} MACHINE_CONFIG_START(_8080bw_state::spacecom) @@ -862,20 +871,22 @@ READ8_MEMBER(_8080bw_state::invrvnge_02_r) return (data & 0x8f) | (ioport("IN1")->read() & 0x70); } -ADDRESS_MAP_START(_8080bw_state::invrvnge_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invrvnge_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invrvnge_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::invrvnge_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).r(this, FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invrvnge_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invrvnge_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} -ADDRESS_MAP_START(_8080bw_state::invrvnge_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_ROM // dummy prg map, TODO: decrypt ROM -ADDRESS_MAP_END +void _8080bw_state::invrvnge_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rom(); // dummy prg map, TODO: decrypt ROM +} static INPUT_PORTS_START( invrvnge ) @@ -1055,15 +1066,16 @@ static INPUT_PORTS_START( galxwars ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) INPUT_PORTS_END -ADDRESS_MAP_START(_8080bw_state::starw1_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_WRITENOP /* writes 9B at boot */ - AM_RANGE(0x04, 0x04) AM_WRITE(invadpt2_sh_port_1_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITENOP /* writes 89 at boot */ -ADDRESS_MAP_END +void _8080bw_state::starw1_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).nopw(); /* writes 9B at boot */ + map(0x04, 0x04).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).nopw(); /* writes 89 at boot */ +} MACHINE_CONFIG_START(_8080bw_state::starw1) invadpt2(config); @@ -1077,20 +1089,22 @@ MACHINE_CONFIG_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::escmars_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x4fff) AM_ROM -ADDRESS_MAP_END +void _8080bw_state::escmars_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("main_ram"); + map(0x4000, 0x4fff).rom(); +} -ADDRESS_MAP_START(_8080bw_state::lrescue_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(lrescue_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(lrescue_sh_port_2_w) -ADDRESS_MAP_END +void _8080bw_state::lrescue_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::lrescue_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::lrescue_sh_port_2_w)); +} static INPUT_PORTS_START( lrescue ) @@ -1219,19 +1233,20 @@ WRITE8_MEMBER(_8080bw_state::cosmicmo_05_w) m_flip_screen = BIT(data, 5) & BIT(ioport("IN2")->read(), 2); } -ADDRESS_MAP_START(_8080bw_state::cosmicmo_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ(invrvnge_02_r) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(cosmicmo_05_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::cosmicmo_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).r(this, FUNC(_8080bw_state::invrvnge_02_r)); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).w(this, FUNC(_8080bw_state::invaders_audio_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::cosmicmo_05_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} MACHINE_CONFIG_START(_8080bw_state::cosmicmo) mw8080bw_root(config); @@ -1340,23 +1355,25 @@ WRITE8_MEMBER(_8080bw_state::rollingc_scattered_colorram2_w) m_scattered_colorram2[(offset & 0x1f) | ((offset & 0x1f00) >> 3)] = data; } -ADDRESS_MAP_START(_8080bw_state::rollingc_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x5fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(rollingc_scattered_colorram_r, rollingc_scattered_colorram_w) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(rollingc_scattered_colorram2_r, rollingc_scattered_colorram2_w) -ADDRESS_MAP_END +void _8080bw_state::rollingc_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("main_ram"); + map(0x4000, 0x5fff).rom(); + map(0xa000, 0xbfff).rw(this, FUNC(_8080bw_state::rollingc_scattered_colorram_r), FUNC(_8080bw_state::rollingc_scattered_colorram_w)); + map(0xe000, 0xffff).rw(this, FUNC(_8080bw_state::rollingc_scattered_colorram2_r), FUNC(_8080bw_state::rollingc_scattered_colorram2_w)); +} -ADDRESS_MAP_START(_8080bw_state::rollingc_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(rollingc_sh_port_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) -ADDRESS_MAP_END +void _8080bw_state::rollingc_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0").w(this, FUNC(_8080bw_state::rollingc_sh_port_w)); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w)); +} static INPUT_PORTS_START( rollingc ) @@ -1427,23 +1444,25 @@ WRITE8_MEMBER(_8080bw_state::schaser_scattered_colorram_w) m_scattered_colorram[(offset & 0x1f) | ((offset & 0x1f80) >> 2)] = data; } -ADDRESS_MAP_START(_8080bw_state::schaser_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x5fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(schaser_scattered_colorram_r, schaser_scattered_colorram_w) -ADDRESS_MAP_END +void _8080bw_state::schaser_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("main_ram"); + map(0x4000, 0x5fff).rom(); + map(0xc000, 0xdfff).rw(this, FUNC(_8080bw_state::schaser_scattered_colorram_r), FUNC(_8080bw_state::schaser_scattered_colorram_w)); +} -ADDRESS_MAP_START(_8080bw_state::schaser_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schaser_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(schaser_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::schaser_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::schaser_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::schaser_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( schaser ) @@ -1590,14 +1609,15 @@ READ8_MEMBER(_8080bw_state::schasercv_02_r) return (data & 0x89) | (in1 & 0x70) | (BIT(in1, 3) << 1) | (BIT(in1, 7) << 2); } -ADDRESS_MAP_START(_8080bw_state::schasercv_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ(schasercv_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schasercv_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(schasercv_sh_port_2_w) -ADDRESS_MAP_END +void _8080bw_state::schasercv_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).r(this, FUNC(_8080bw_state::schasercv_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::schasercv_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::schasercv_sh_port_2_w)); +} static INPUT_PORTS_START( schasercv ) @@ -1687,21 +1707,22 @@ CUSTOM_INPUT_MEMBER(_8080bw_state::sflush_80_r) return (m_screen->vpos() & 0x80) ? 1 : 0; } -ADDRESS_MAP_START(_8080bw_state::sflush_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x8008, 0x8008) AM_READ_PORT("PADDLE") - AM_RANGE(0x8009, 0x8009) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - AM_RANGE(0x800a, 0x800a) AM_READ_PORT("IN2") - AM_RANGE(0x800b, 0x800b) AM_READ_PORT("IN0") - AM_RANGE(0x8018, 0x8018) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x8019, 0x8019) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x801a, 0x801a) AM_WRITENOP - AM_RANGE(0x801c, 0x801c) AM_WRITENOP - AM_RANGE(0x801d, 0x801d) AM_WRITENOP - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(schaser_scattered_colorram_r, schaser_scattered_colorram_w) - AM_RANGE(0xd800, 0xffff) AM_ROM -ADDRESS_MAP_END +void _8080bw_state::sflush_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x4000, 0x5fff).ram().share("main_ram"); + map(0x8008, 0x8008).portr("PADDLE"); + map(0x8009, 0x8009).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + map(0x800a, 0x800a).portr("IN2"); + map(0x800b, 0x800b).portr("IN0"); + map(0x8018, 0x8018).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x8019, 0x8019).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x801a, 0x801a).nopw(); + map(0x801c, 0x801c).nopw(); + map(0x801d, 0x801d).nopw(); + map(0xa000, 0xbfff).rw(this, FUNC(_8080bw_state::schaser_scattered_colorram_r), FUNC(_8080bw_state::schaser_scattered_colorram_w)); + map(0xd800, 0xffff).rom(); +} static INPUT_PORTS_START( sflush ) @@ -1780,15 +1801,16 @@ MACHINE_CONFIG_END /* */ /*******************************************************************************************/ -ADDRESS_MAP_START(_8080bw_state::lupin3_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(lupin3_00_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(lupin3_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(lupin3_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void _8080bw_state::lupin3_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0").w(this, FUNC(_8080bw_state::lupin3_00_w)); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::lupin3_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::lupin3_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( lupin3 ) @@ -1946,15 +1968,16 @@ READ8_MEMBER(_8080bw_state::polaris_port00_r) // you will get a nice sound that accurately follows the plane. // It sounds better then the actual circuit used. // Probably an unfinished feature. -ADDRESS_MAP_START(_8080bw_state::polaris_io_map) - AM_RANGE(0x00, 0x00) AM_READ(polaris_port00_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(polaris_sh_port_1_w) - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("mb14241", mb14241_device, shift_result_r, shift_data_w) - AM_RANGE(0x04, 0x04) AM_WRITE(polaris_sh_port_2_w) - AM_RANGE(0x05, 0x05) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x06, 0x06) AM_WRITE(polaris_sh_port_3_w) -ADDRESS_MAP_END +void _8080bw_state::polaris_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(_8080bw_state::polaris_port00_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(this, FUNC(_8080bw_state::polaris_sh_port_1_w)); + map(0x03, 0x03).rw(m_mb14241, FUNC(mb14241_device::shift_result_r), FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(this, FUNC(_8080bw_state::polaris_sh_port_2_w)); + map(0x05, 0x05).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x06, 0x06).w(this, FUNC(_8080bw_state::polaris_sh_port_3_w)); +} static INPUT_PORTS_START( polaris ) @@ -2123,14 +2146,15 @@ INPUT_PORTS_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::ballbomb_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(ballbomb_01_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(ballbomb_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(ballbomb_sh_port_2_w) -ADDRESS_MAP_END +void _8080bw_state::ballbomb_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1").w(this, FUNC(_8080bw_state::ballbomb_01_w)); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::ballbomb_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::ballbomb_sh_port_2_w)); +} static INPUT_PORTS_START( ballbomb ) @@ -2177,19 +2201,21 @@ MACHINE_CONFIG_END /* */ /*******************************************************/ -ADDRESS_MAP_START(_8080bw_state::yosakdon_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x43ff) AM_WRITEONLY /* what's this? */ -ADDRESS_MAP_END +void _8080bw_state::yosakdon_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("main_ram"); + map(0x4000, 0x43ff).writeonly(); /* what's this? */ +} -ADDRESS_MAP_START(_8080bw_state::yosakdon_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_WRITE(yosakdon_sh_port_1_w) - AM_RANGE(0x05, 0x05) AM_WRITE(yosakdon_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_WRITENOP /* character numbers */ -ADDRESS_MAP_END +void _8080bw_state::yosakdon_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0"); + map(0x02, 0x02).portr("IN1"); + map(0x03, 0x03).w(this, FUNC(_8080bw_state::yosakdon_sh_port_1_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::yosakdon_sh_port_2_w)); + map(0x06, 0x06).nopw(); /* character numbers */ +} static INPUT_PORTS_START( yosakdon ) @@ -2366,27 +2392,29 @@ READ8_MEMBER(_8080bw_state::indianbtbr_01_r) return (data & 0x8f) | (ioport("IN2")->read() & 0x70); } -ADDRESS_MAP_START(_8080bw_state::indianbt_io_map) - AM_RANGE(0x00, 0x00) AM_READ(indianbt_r) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(indianbt_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(indianbt_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITE(indianbt_sh_port_3_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(_8080bw_state::indianbtbr_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ(indianbtbr_01_r) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(indianbtbr_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(indianbtbr_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITENOP -ADDRESS_MAP_END +void _8080bw_state::indianbt_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(_8080bw_state::indianbt_r)); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).r(this, FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::indianbt_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::indianbt_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).w(this, FUNC(_8080bw_state::indianbt_sh_port_3_w)); +} + +void _8080bw_state::indianbtbr_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).r(this, FUNC(_8080bw_state::indianbtbr_01_r)); + map(0x02, 0x02).portr("IN2").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::indianbtbr_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::indianbtbr_sh_port_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).nopw(); +} MACHINE_CONFIG_START(_8080bw_state::indianbt) @@ -2451,14 +2479,15 @@ WRITE8_MEMBER(_8080bw_state::steelwkr_sh_port_3_w) machine().bookkeeping().coin_lockout_global_w(!(~data & 0x03)); /* possibly */ } -ADDRESS_MAP_START(_8080bw_state::steelwkr_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) - AM_RANGE(0x06, 0x06) AM_WRITE(steelwkr_sh_port_3_w) -ADDRESS_MAP_END +void _8080bw_state::steelwkr_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).r(this, FUNC(_8080bw_state::invrvnge_02_r)).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)).w(this, FUNC(_8080bw_state::invadpt2_sh_port_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(_8080bw_state::invadpt2_sh_port_2_w)); + map(0x06, 0x06).w(this, FUNC(_8080bw_state::steelwkr_sh_port_3_w)); +} static INPUT_PORTS_START( steelwkr ) /* PORT_START("IN0") - never read */ @@ -2648,20 +2677,22 @@ WRITE8_MEMBER(_8080bw_state::shuttlei_ff_w) m_flip_screen = BIT(data, 2) & BIT(ioport(CABINET_PORT_TAG)->read(), 0); } -ADDRESS_MAP_START(_8080bw_state::shuttlei_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x37ff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x3800, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("share1") // shuttlei - AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE("share1") // skylove (is it mirrored, or different PCB hookup?) -ADDRESS_MAP_END +void _8080bw_state::shuttlei_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x37ff).ram().share("main_ram"); + map(0x3800, 0x3fff).ram(); + map(0x4000, 0x43ff).ram().share("share1"); // shuttlei + map(0x6000, 0x63ff).ram().share("share1"); // skylove (is it mirrored, or different PCB hookup?) +} -ADDRESS_MAP_START(_8080bw_state::shuttlei_io_map) - AM_RANGE(0xfc, 0xfc) AM_WRITENOP /* game writes 0xAA every so often (perhaps when base hit?) */ - AM_RANGE(0xfd, 0xfd) AM_WRITE(shuttlei_sh_port_1_w) - AM_RANGE(0xfe, 0xfe) AM_READ_PORT("DSW") AM_WRITE(shuttlei_sh_port_2_w) - AM_RANGE(0xff, 0xff) AM_READWRITE(shuttlei_ff_r,shuttlei_ff_w) -ADDRESS_MAP_END +void _8080bw_state::shuttlei_io_map(address_map &map) +{ + map(0xfc, 0xfc).nopw(); /* game writes 0xAA every so often (perhaps when base hit?) */ + map(0xfd, 0xfd).w(this, FUNC(_8080bw_state::shuttlei_sh_port_1_w)); + map(0xfe, 0xfe).portr("DSW").w(this, FUNC(_8080bw_state::shuttlei_sh_port_2_w)); + map(0xff, 0xff).rw(this, FUNC(_8080bw_state::shuttlei_ff_r), FUNC(_8080bw_state::shuttlei_ff_w)); +} MACHINE_CONFIG_START(_8080bw_state::shuttlei) @@ -2733,20 +2764,22 @@ READ8_MEMBER(_8080bw_state::darthvdr_01_r) return (data & 0xe1) | (ioport("P1")->read() & 0x0e); } -ADDRESS_MAP_START(_8080bw_state::darthvdr_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram") -ADDRESS_MAP_END +void _8080bw_state::darthvdr_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x1fff).ram(); + map(0x4000, 0x5fff).ram().share("main_ram"); +} -ADDRESS_MAP_START(_8080bw_state::darthvdr_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ(darthvdr_01_r) +void _8080bw_state::darthvdr_io_map(address_map &map) +{ + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).r(this, FUNC(_8080bw_state::darthvdr_01_r)); - AM_RANGE(0x00, 0x00) AM_WRITE(darthvdr_00_w) // flipscreen - AM_RANGE(0x04, 0x04) AM_WRITENOP - AM_RANGE(0x08, 0x08) AM_WRITE(darthvdr_08_w) // sound -ADDRESS_MAP_END + map(0x00, 0x00).w(this, FUNC(_8080bw_state::darthvdr_00_w)); // flipscreen + map(0x04, 0x04).nopw(); + map(0x08, 0x08).w(this, FUNC(_8080bw_state::darthvdr_08_w)); // sound +} static INPUT_PORTS_START( darthvdr ) @@ -2822,20 +2855,21 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(_8080bw_state::vortex_io_map) +void _8080bw_state::vortex_io_map(address_map &map) +{ // I/O map is same as invaders but with A9 (used as A1 for I/O) inverted - ADDRESS_MAP_GLOBAL_MASK(0xFF) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x00, 0x00) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x01, 0x01) AM_WRITE(invaders_audio_1_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x07, 0x07) AM_WRITE(invaders_audio_2_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END + map.global_mask(0xFF); + map(0x02, 0x02).mirror(0x04).portr("IN0"); + map(0x03, 0x03).mirror(0x04).portr("IN1"); + map(0x00, 0x00).mirror(0x04).portr("IN2"); + map(0x01, 0x01).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x00, 0x00).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x01, 0x01).w(this, FUNC(_8080bw_state::invaders_audio_1_w)); + map(0x06, 0x06).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x07, 0x07).w(this, FUNC(_8080bw_state::invaders_audio_2_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( vortex ) @@ -3110,15 +3144,16 @@ READ8_MEMBER(_8080bw_state::claybust_gun_hi_r) return m_claybust_gun_pos >> 8; } -ADDRESS_MAP_START(_8080bw_state::claybust_io_map) +void _8080bw_state::claybust_io_map(address_map &map) +{ //AM_RANGE(0x00, 0x00) AM_WRITENOP // ? - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_READ(claybust_gun_lo_r) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) //AM_WRITENOP // port3 write looks sound-related - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) + map(0x01, 0x01).portr("IN1").w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).r(this, FUNC(_8080bw_state::claybust_gun_lo_r)).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); //AM_WRITENOP // port3 write looks sound-related + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); //AM_RANGE(0x05, 0x05) AM_WRITENOP // ? - AM_RANGE(0x06, 0x06) AM_READ(claybust_gun_hi_r) -ADDRESS_MAP_END + map(0x06, 0x06).r(this, FUNC(_8080bw_state::claybust_gun_hi_r)); +} static INPUT_PORTS_START( claybust ) @@ -3263,15 +3298,16 @@ INPUT_PORTS_END *****************************************************/ -ADDRESS_MAP_START(_8080bw_state::attackfc_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_WRITENOP // lamp? - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("mb14241", mb14241_device, shift_result_r, shift_data_w) - AM_RANGE(0x04, 0x04) AM_WRITENOP // sound enable? - AM_RANGE(0x05, 0x05) AM_WRITENOP // watchdog? - AM_RANGE(0x06, 0x06) AM_WRITENOP // sound? - AM_RANGE(0x07, 0x07) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) -ADDRESS_MAP_END +void _8080bw_state::attackfc_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0"); + map(0x02, 0x02).nopw(); // lamp? + map(0x03, 0x03).rw(m_mb14241, FUNC(mb14241_device::shift_result_r), FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).nopw(); // sound enable? + map(0x05, 0x05).nopw(); // watchdog? + map(0x06, 0x06).nopw(); // sound? + map(0x07, 0x07).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); +} static INPUT_PORTS_START( attackfc ) @@ -3393,13 +3429,14 @@ static INPUT_PORTS_START( invmulti ) PORT_BIT( 0xf8, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END -ADDRESS_MAP_START(_8080bw_state::invmulti_map) - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x8000) AM_ROMBANK("bank1") - AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x5fff) AM_MIRROR(0x8000) AM_ROMBANK("bank2") - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READWRITE(invmulti_eeprom_r, invmulti_eeprom_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(invmulti_bank_w) -ADDRESS_MAP_END +void _8080bw_state::invmulti_map(address_map &map) +{ + map(0x0000, 0x1fff).mirror(0x8000).bankr("bank1"); + map(0x2000, 0x3fff).mirror(0x8000).ram().share("main_ram"); + map(0x4000, 0x5fff).mirror(0x8000).bankr("bank2"); + map(0x6000, 0x6000).mirror(0x1fff).rw(this, FUNC(_8080bw_state::invmulti_eeprom_r), FUNC(_8080bw_state::invmulti_eeprom_w)); + map(0xe000, 0xe000).mirror(0x1fff).w(this, FUNC(_8080bw_state::invmulti_bank_w)); +} READ8_MEMBER(_8080bw_state::invmulti_eeprom_r) { diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp index 9633f178e84..098bf939c6b 100644 --- a/src/mame/drivers/88games.cpp +++ b/src/mame/drivers/88games.cpp @@ -121,35 +121,37 @@ WRITE8_MEMBER(_88games_state::k052109_051960_w) * *************************************/ -ADDRESS_MAP_START(_88games_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bank0000") /* banked ROM */ - AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bank1000") /* banked ROM + palette RAM */ - AM_RANGE(0x1000, 0x1fff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2000, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("ram") - AM_RANGE(0x4000, 0x7fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - AM_RANGE(0x5f84, 0x5f84) AM_WRITE(k88games_5f84_w) - AM_RANGE(0x5f88, 0x5f88) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5f8c, 0x5f8c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x5f90, 0x5f90) AM_WRITE(k88games_sh_irqtrigger_w) - AM_RANGE(0x5f94, 0x5f94) AM_READ_PORT("IN0") - AM_RANGE(0x5f95, 0x5f95) AM_READ_PORT("IN1") - AM_RANGE(0x5f96, 0x5f96) AM_READ_PORT("IN2") - AM_RANGE(0x5f97, 0x5f97) AM_READ_PORT("DSW1") - AM_RANGE(0x5f9b, 0x5f9b) AM_READ_PORT("DSW2") - AM_RANGE(0x5fc0, 0x5fcf) AM_DEVWRITE("k051316", k051316_device, ctrl_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(_88games_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w) -ADDRESS_MAP_END +void _88games_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bank0000"); /* banked ROM */ + map(0x1000, 0x1fff).bankr("bank1000"); /* banked ROM + palette RAM */ + map(0x1000, 0x1fff).w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x2000, 0x2fff).ram(); + map(0x3000, 0x37ff).ram().share("nvram"); + map(0x3800, 0x3fff).rw(this, FUNC(_88games_state::bankedram_r), FUNC(_88games_state::bankedram_w)).share("ram"); + map(0x4000, 0x7fff).rw(this, FUNC(_88games_state::k052109_051960_r), FUNC(_88games_state::k052109_051960_w)); + map(0x5f84, 0x5f84).w(this, FUNC(_88games_state::k88games_5f84_w)); + map(0x5f88, 0x5f88).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5f8c, 0x5f8c).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x5f90, 0x5f90).w(this, FUNC(_88games_state::k88games_sh_irqtrigger_w)); + map(0x5f94, 0x5f94).portr("IN0"); + map(0x5f95, 0x5f95).portr("IN1"); + map(0x5f96, 0x5f96).portr("IN2"); + map(0x5f97, 0x5f97).portr("DSW1"); + map(0x5f9b, 0x5f9b).portr("DSW2"); + map(0x5fc0, 0x5fcf).w(m_k051316, FUNC(k051316_device::ctrl_w)); + map(0x8000, 0xffff).rom(); +} + +void _88games_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(_88games_state::speech_msg_w)); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe000, 0xe000).w(this, FUNC(_88games_state::speech_control_w)); +} diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp index a3372d1ddd9..8f2f6ff92de 100644 --- a/src/mame/drivers/a5105.cpp +++ b/src/mame/drivers/a5105.cpp @@ -159,13 +159,14 @@ UPD7220_DRAW_TEXT_LINE_MEMBER( a5105_state::hgdc_draw_text ) } } -ADDRESS_MAP_START(a5105_state::a5105_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_READWRITE_BANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_READWRITE_BANK("bank4") -ADDRESS_MAP_END +void a5105_state::a5105_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankr("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} WRITE8_MEMBER( a5105_state::pcg_addr_w ) { @@ -352,26 +353,27 @@ WRITE8_MEMBER( a5105_state::a5105_upd765_w ) m_fdc->tc_w(BIT(data, 4)); } -ADDRESS_MAP_START(a5105_state::a5105_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x41) AM_DEVICE("upd765a", upd765a_device, map) - AM_RANGE(0x48, 0x4f) AM_WRITE(a5105_upd765_w) +void a5105_state::a5105_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x40, 0x41).m(m_fdc, FUNC(upd765a_device::map)); + map(0x48, 0x4f).w(this, FUNC(a5105_state::a5105_upd765_w)); - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) - AM_RANGE(0x98, 0x99) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) + map(0x80, 0x83).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x90, 0x93).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x98, 0x99).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); - AM_RANGE(0x9c, 0x9c) AM_WRITE(pcg_val_w) + map(0x9c, 0x9c).w(this, FUNC(a5105_state::pcg_val_w)); // AM_RANGE(0x9d, 0x9d) crtc area (ff-based), palette routes here - AM_RANGE(0x9e, 0x9e) AM_WRITE(pcg_addr_w) + map(0x9e, 0x9e).w(this, FUNC(a5105_state::pcg_addr_w)); // AM_RANGE(0xa0, 0xa1) ay8910? - AM_RANGE(0xa8, 0xa8) AM_READWRITE(a5105_memsel_r,a5105_memsel_w) - AM_RANGE(0xa9, 0xa9) AM_READ(key_r) - AM_RANGE(0xaa, 0xaa) AM_READWRITE(key_mux_r,key_mux_w) - AM_RANGE(0xab, 0xab) AM_WRITE(a5105_ab_w) //misc output, see above -ADDRESS_MAP_END + map(0xa8, 0xa8).rw(this, FUNC(a5105_state::a5105_memsel_r), FUNC(a5105_state::a5105_memsel_w)); + map(0xa9, 0xa9).r(this, FUNC(a5105_state::key_r)); + map(0xaa, 0xaa).rw(this, FUNC(a5105_state::key_mux_r), FUNC(a5105_state::key_mux_w)); + map(0xab, 0xab).w(this, FUNC(a5105_state::a5105_ab_w)); //misc output, see above +} /* Input ports */ static INPUT_PORTS_START( a5105 ) @@ -542,10 +544,11 @@ void a5105_state::video_start() m_char_ram = memregion("pcg")->base(); } -ADDRESS_MAP_START(a5105_state::upd7220_map) - ADDRESS_MAP_GLOBAL_MASK(0x1ffff) - AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END +void a5105_state::upd7220_map(address_map &map) +{ + map.global_mask(0x1ffff); + map(0x00000, 0x1ffff).ram().share("video_ram"); +} FLOPPY_FORMATS_MEMBER( a5105_state::floppy_formats ) FLOPPY_A5105_FORMAT diff --git a/src/mame/drivers/a51xx.cpp b/src/mame/drivers/a51xx.cpp index 239d17c8f09..c1a93dd266c 100644 --- a/src/mame/drivers/a51xx.cpp +++ b/src/mame/drivers/a51xx.cpp @@ -40,27 +40,31 @@ public: }; -ADDRESS_MAP_START(a51xx_state::a5120_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x03ff ) AM_ROM - AM_RANGE( 0x0400, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(a51xx_state::a5120_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(a51xx_state::a5130_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_ROM - AM_RANGE( 0x1000, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(a51xx_state::a5130_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void a51xx_state::a5120_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0xffff).ram(); +} + +void a51xx_state::a5120_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} + +void a51xx_state::a5130_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0xffff).ram(); +} + +void a51xx_state::a5130_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} /* Input ports */ diff --git a/src/mame/drivers/a6809.cpp b/src/mame/drivers/a6809.cpp index a8438792beb..5d242f43b42 100644 --- a/src/mame/drivers/a6809.cpp +++ b/src/mame/drivers/a6809.cpp @@ -103,16 +103,17 @@ private: }; -ADDRESS_MAP_START(a6809_state::a6809_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x03ff) AM_RAM - AM_RANGE(0x0400,0x07ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0800,0x0800) AM_DEVREAD("mc6845", mc6845_device, status_r) AM_WRITE(a6809_address_w) - AM_RANGE(0x0801,0x0801) AM_DEVREAD("mc6845", mc6845_device, register_r) AM_WRITE(a6809_register_w) - AM_RANGE(0x0900,0x090f) AM_MIRROR(0xf0) AM_DEVREADWRITE("via", via6522_device, read, write) - AM_RANGE(0xf000,0xf7ff) // optional ROM - AM_RANGE(0xf800,0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void a6809_state::a6809_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().share("videoram"); + map(0x0800, 0x0800).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(a6809_state::a6809_address_w)); + map(0x0801, 0x0801).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(a6809_state::a6809_register_w)); + map(0x0900, 0x090f).mirror(0xf0).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xf000, 0xf7ff); // optional ROM + map(0xf800, 0xffff).rom().region("maincpu", 0); +} /* Input ports */ static INPUT_PORTS_START( a6809 ) diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp index d1f91c5daff..ce04d203036 100644 --- a/src/mame/drivers/a7150.cpp +++ b/src/mame/drivers/a7150.cpp @@ -281,62 +281,67 @@ WRITE8_MEMBER(a7150_state::a7150_kgs_w) } -ADDRESS_MAP_START(a7150_state::a7150_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xf7fff) AM_RAM - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(a7150_state::a7150_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x004a, 0x004b) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff) // KES board - AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff) - AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x00d8, 0x00d9) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x00da, 0x00db) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x0200, 0x0203) AM_READWRITE8(a7150_kgs_r, a7150_kgs_w, 0x00ff) // ABS/KGS board - AM_RANGE(0x0300, 0x031f) AM_UNMAP // ASP board #1 - AM_RANGE(0x0320, 0x033f) AM_UNMAP // ASP board #2 -ADDRESS_MAP_END - -ADDRESS_MAP_START(a7150_state::k7070_cpu_banked) - ADDRESS_MAP_UNMAP_HIGH +void a7150_state::a7150_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xf7fff).ram(); + map(0xf8000, 0xfffff).rom().region("user1", 0); +} + +void a7150_state::a7150_io(address_map &map) +{ + map.unmap_value_high(); + map(0x004a, 0x004a).w("isbc_215g", FUNC(isbc_215g_device::write)); // KES board + map(0x00c0, 0x00c3).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c8, 0x00cf).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x00d0, 0x00d7).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x00d8, 0x00d8).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x00da, 0x00da).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x0200, 0x0203).rw(this, FUNC(a7150_state::a7150_kgs_r), FUNC(a7150_state::a7150_kgs_w)).umask16(0x00ff); // ABS/KGS board + map(0x0300, 0x031f).unmaprw(); // ASP board #1 + map(0x0320, 0x033f).unmaprw(); // ASP board #2 +} + +void a7150_state::k7070_cpu_banked(address_map &map) +{ + map.unmap_value_high(); // default map: IML=0, MSEL=0. ROM + local RAM. - AM_RANGE(0x00000, 0x01fff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x02000, 0x07fff) AM_RAMBANK("kgs_ram1") - AM_RANGE(0x08000, 0x0ffff) AM_RAMBANK("kgs_ram2") + map(0x00000, 0x01fff).rom().region("user2", 0); + map(0x02000, 0x07fff).bankrw("kgs_ram1"); + map(0x08000, 0x0ffff).bankrw("kgs_ram2"); // IML=1, MSEL=0. local RAM only. - AM_RANGE(0x10000, 0x11fff) AM_RAMBANK("kgs_ram0") - AM_RANGE(0x12000, 0x17fff) AM_RAMBANK("kgs_ram1") - AM_RANGE(0x18000, 0x1ffff) AM_RAMBANK("kgs_ram2") + map(0x10000, 0x11fff).bankrw("kgs_ram0"); + map(0x12000, 0x17fff).bankrw("kgs_ram1"); + map(0x18000, 0x1ffff).bankrw("kgs_ram2"); // IML=0, MSEL=1. ROM + local RAM. - AM_RANGE(0x20000, 0x21fff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x22000, 0x27fff) AM_RAMBANK("kgs_ram1") + map(0x20000, 0x21fff).rom().region("user2", 0); + map(0x22000, 0x27fff).bankrw("kgs_ram1"); // IML=1, MSEL=1. local RAM only. - AM_RANGE(0x30000, 0x31fff) AM_RAMBANK("kgs_ram0") - AM_RANGE(0x32000, 0x37fff) AM_RAMBANK("kgs_ram1") - AM_RANGE(0x38000, 0x3ffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(a7150_state::k7070_cpu_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("video_bankdev", address_map_bank_device, read8, write8) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a7150_state::k7070_cpu_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0003) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x0008, 0x000b) AM_DEVREADWRITE(Z80SIO_TAG, z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x0010, 0x0017) AM_READWRITE(kgs_host_r, kgs_host_w) // p. 11 of KGS-K7070.pdf - - AM_RANGE(0x0020, 0x0021) AM_NOP // address register - AM_RANGE(0x0022, 0x0022) AM_NOP // function register (p. 6 of ABG-K7072.pdf) - AM_RANGE(0x0023, 0x0023) AM_NOP // split register - AM_RANGE(0x0030, 0x003f) AM_NOP // palette register -ADDRESS_MAP_END + map(0x30000, 0x31fff).bankrw("kgs_ram0"); + map(0x32000, 0x37fff).bankrw("kgs_ram1"); + map(0x38000, 0x3ffff).ram().share("video_ram"); +} + +void a7150_state::k7070_cpu_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(m_video_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); +} + + +void a7150_state::k7070_cpu_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x0000, 0x0003).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0008, 0x000b).rw(Z80SIO_TAG, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x0010, 0x0017).rw(this, FUNC(a7150_state::kgs_host_r), FUNC(a7150_state::kgs_host_w)); // p. 11 of KGS-K7070.pdf + + map(0x0020, 0x0021).noprw(); // address register + map(0x0022, 0x0022).noprw(); // function register (p. 6 of ABG-K7072.pdf) + map(0x0023, 0x0023).noprw(); // split register + map(0x0030, 0x003f).noprw(); // palette register +} /* Input ports */ static INPUT_PORTS_START( a7150 ) diff --git a/src/mame/drivers/a7800.cpp b/src/mame/drivers/a7800.cpp index dc9f9a35a66..e2d60a0a130 100644 --- a/src/mame/drivers/a7800.cpp +++ b/src/mame/drivers/a7800.cpp @@ -301,25 +301,26 @@ READ8_MEMBER(a7800_state::bios_or_cart_r) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(a7800_state::a7800_mem) - AM_RANGE(0x0000, 0x001f) AM_MIRROR(0x300) AM_READWRITE(tia_r, tia_w) - AM_RANGE(0x0020, 0x003f) AM_MIRROR(0x300) AM_DEVREADWRITE("maria", atari_maria_device, read, write) - AM_RANGE(0x0040, 0x00ff) AM_RAMBANK("zpmirror") // mirror of 0x2040-0x20ff, for zero page - AM_RANGE(0x0140, 0x01ff) AM_RAMBANK("spmirror") // mirror of 0x2140-0x21ff, for stack page - AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x160) AM_DEVICE("riot", mos6532_new_device, io_map) - AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_DEVICE("riot", mos6532_new_device, ram_map) - AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("6116_1") - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("6116_2") +void a7800_state::a7800_mem(address_map &map) +{ + map(0x0000, 0x001f).mirror(0x300).rw(this, FUNC(a7800_state::tia_r), FUNC(a7800_state::tia_w)); + map(0x0020, 0x003f).mirror(0x300).rw(m_maria, FUNC(atari_maria_device::read), FUNC(atari_maria_device::write)); + map(0x0040, 0x00ff).bankrw("zpmirror"); // mirror of 0x2040-0x20ff, for zero page + map(0x0140, 0x01ff).bankrw("spmirror"); // mirror of 0x2140-0x21ff, for stack page + map(0x0280, 0x029f).mirror(0x160).m("riot", FUNC(mos6532_new_device::io_map)); + map(0x0480, 0x04ff).mirror(0x100).m("riot", FUNC(mos6532_new_device::ram_map)); + map(0x1800, 0x1fff).ram().share("6116_1"); + map(0x2000, 0x27ff).ram().share("6116_2"); // According to the official Software Guide, the RAM at 0x2000 is // repeatedly mirrored up to 0x3fff, but this is evidently incorrect // because the High Score Cartridge maps ROM at 0x3000-0x3fff // Hardware tests show that only the page at 0x2700 appears at // 0x2800, and only on some hardware (MARIA? motherboard?) revisions, // and even then with inconsistent and unreliable results. - AM_RANGE(0x4000, 0xffff) AM_DEVWRITE("cartslot", a78_cart_slot_device, write_40xx) - AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", a78_cart_slot_device, read_40xx) - AM_RANGE(0xc000, 0xffff) AM_READ(bios_or_cart_r) // here also the BIOS can be accessed -ADDRESS_MAP_END + map(0x4000, 0xffff).w(m_cart, FUNC(a78_cart_slot_device::write_40xx)); + map(0x4000, 0xbfff).r(m_cart, FUNC(a78_cart_slot_device::read_40xx)); + map(0xc000, 0xffff).r(this, FUNC(a7800_state::bios_or_cart_r)); // here also the BIOS can be accessed +} /*************************************************************************** diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp index 089251142a5..472fcfd372a 100644 --- a/src/mame/drivers/aa310.cpp +++ b/src/mame/drivers/aa310.cpp @@ -188,14 +188,15 @@ void aa310_state::machine_reset() archimedes_reset(); } -ADDRESS_MAP_START(aa310_state::aa310_mem) - AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w) - AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_SHARE("physicalram") /* physical RAM - 16 MB for now, should be 512k for the A310 */ - AM_RANGE(0x03000000, 0x033fffff) AM_READWRITE(archimedes_ioc_r, archimedes_ioc_w) - AM_RANGE(0x03400000, 0x035fffff) AM_ROM AM_REGION("extension", 0x000000) AM_WRITE(archimedes_vidc_w) - AM_RANGE(0x03600000, 0x037fffff) AM_ROM AM_REGION("extension", 0x200000) AM_WRITE(archimedes_memc_w) - AM_RANGE(0x03800000, 0x03ffffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE(archimedes_memc_page_w) -ADDRESS_MAP_END +void aa310_state::aa310_mem(address_map &map) +{ + map(0x00000000, 0x01ffffff).rw(this, FUNC(aa310_state::archimedes_memc_logical_r), FUNC(aa310_state::archimedes_memc_logical_w)); + map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */ + map(0x03000000, 0x033fffff).rw(this, FUNC(aa310_state::archimedes_ioc_r), FUNC(aa310_state::archimedes_ioc_w)); + map(0x03400000, 0x035fffff).rom().region("extension", 0x000000).w(this, FUNC(aa310_state::archimedes_vidc_w)); + map(0x03600000, 0x037fffff).rom().region("extension", 0x200000).w(this, FUNC(aa310_state::archimedes_memc_w)); + map(0x03800000, 0x03ffffff).rom().region("maincpu", 0).w(this, FUNC(aa310_state::archimedes_memc_page_w)); +} INPUT_CHANGED_MEMBER(aa310_state::key_stroke) diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp index af001a435ce..d5ff89756cc 100644 --- a/src/mame/drivers/abc1600.cpp +++ b/src/mame/drivers/abc1600.cpp @@ -491,38 +491,40 @@ WRITE8_MEMBER( abc1600_state::spec_contr_reg_w ) // ADDRESS_MAP( abc1600_mem ) //------------------------------------------------- -ADDRESS_MAP_START(abc1600_state::abc1600_mem) - AM_RANGE(0x00000, 0xfffff) AM_DEVICE(ABC1600_MAC_TAG, abc1600_mac_device, map) -ADDRESS_MAP_END +void abc1600_state::abc1600_mem(address_map &map) +{ + map(0x00000, 0xfffff).m(ABC1600_MAC_TAG, FUNC(abc1600_mac_device::map)); +} //------------------------------------------------- // ADDRESS_MAP( mac_mem ) //------------------------------------------------- -ADDRESS_MAP_START(abc1600_state::mac_mem) - AM_RANGE(0x000000, 0x0fffff) AM_RAM - AM_RANGE(0x100000, 0x17ffff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, vram_map) - AM_RANGE(0x1fe000, 0x1fefff) AM_READWRITE(bus_r, bus_w) - AM_RANGE(0x1ff000, 0x1ff000) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, status_r, cmd_w) - AM_RANGE(0x1ff002, 0x1ff002) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, track_r, track_w) - AM_RANGE(0x1ff004, 0x1ff004) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, sector_r, sector_w) - AM_RANGE(0x1ff006, 0x1ff006) AM_MIRROR(0xf9) AM_DEVREADWRITE(SAB1797_02P_TAG, fd1797_device, data_r, data_w) - AM_RANGE(0x1ff100, 0x1ff101) AM_MIRROR(0xfe) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, crtc_map) - AM_RANGE(0x1ff200, 0x1ff207) AM_MIRROR(0xf8) AM_READWRITE(dart_r, dart_w) - AM_RANGE(0x1ff300, 0x1ff300) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_0_TAG, z80dma_device, read, write) - AM_RANGE(0x1ff400, 0x1ff400) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_1_TAG, z80dma_device, read, write) - AM_RANGE(0x1ff500, 0x1ff500) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_2_TAG, z80dma_device, read, write) - AM_RANGE(0x1ff600, 0x1ff607) AM_MIRROR(0xf8) AM_READWRITE(scc_r, scc_w) - AM_RANGE(0x1ff700, 0x1ff707) AM_MIRROR(0xf8) AM_READWRITE(cio_r, cio_w) - AM_RANGE(0x1ff800, 0x1ff8ff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr0_map) - AM_RANGE(0x1ff900, 0x1ff9ff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr1_map) - AM_RANGE(0x1ffa00, 0x1ffaff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr2_map) - AM_RANGE(0x1ffb00, 0x1ffb00) AM_MIRROR(0x7e) AM_WRITE(fw0_w) - AM_RANGE(0x1ffb01, 0x1ffb01) AM_MIRROR(0x7e) AM_WRITE(fw1_w) - AM_RANGE(0x1ffd00, 0x1ffd07) AM_MIRROR(0xf8) AM_DEVWRITE(ABC1600_MAC_TAG, abc1600_mac_device, dmamap_w) - AM_RANGE(0x1ffe00, 0x1ffe00) AM_MIRROR(0xff) AM_WRITE(spec_contr_reg_w) -ADDRESS_MAP_END +void abc1600_state::mac_mem(address_map &map) +{ + map(0x000000, 0x0fffff).ram(); + map(0x100000, 0x17ffff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::vram_map)); + map(0x1fe000, 0x1fefff).rw(this, FUNC(abc1600_state::bus_r), FUNC(abc1600_state::bus_w)); + map(0x1ff000, 0x1ff000).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::status_r), FUNC(fd1797_device::cmd_w)); + map(0x1ff002, 0x1ff002).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::track_r), FUNC(fd1797_device::track_w)); + map(0x1ff004, 0x1ff004).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::sector_r), FUNC(fd1797_device::sector_w)); + map(0x1ff006, 0x1ff006).mirror(0xf9).rw(m_fdc, FUNC(fd1797_device::data_r), FUNC(fd1797_device::data_w)); + map(0x1ff100, 0x1ff101).mirror(0xfe).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::crtc_map)); + map(0x1ff200, 0x1ff207).mirror(0xf8).rw(this, FUNC(abc1600_state::dart_r), FUNC(abc1600_state::dart_w)); + map(0x1ff300, 0x1ff300).mirror(0xff).rw(m_dma0, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x1ff400, 0x1ff400).mirror(0xff).rw(m_dma1, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x1ff500, 0x1ff500).mirror(0xff).rw(m_dma2, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x1ff600, 0x1ff607).mirror(0xf8).rw(this, FUNC(abc1600_state::scc_r), FUNC(abc1600_state::scc_w)); + map(0x1ff700, 0x1ff707).mirror(0xf8).rw(this, FUNC(abc1600_state::cio_r), FUNC(abc1600_state::cio_w)); + map(0x1ff800, 0x1ff8ff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::iowr0_map)); + map(0x1ff900, 0x1ff9ff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::iowr1_map)); + map(0x1ffa00, 0x1ffaff).m(ABC1600_MOVER_TAG, FUNC(abc1600_mover_device::iowr2_map)); + map(0x1ffb00, 0x1ffb00).mirror(0x7e).w(this, FUNC(abc1600_state::fw0_w)); + map(0x1ffb01, 0x1ffb01).mirror(0x7e).w(this, FUNC(abc1600_state::fw1_w)); + map(0x1ffd00, 0x1ffd07).mirror(0xf8).w(ABC1600_MAC_TAG, FUNC(abc1600_mac_device::dmamap_w)); + map(0x1ffe00, 0x1ffe00).mirror(0xff).w(this, FUNC(abc1600_state::spec_contr_reg_w)); +} diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp index 711915c5c0b..5b87fecffc9 100644 --- a/src/mame/drivers/abc80.cpp +++ b/src/mame/drivers/abc80.cpp @@ -177,29 +177,31 @@ WRITE8_MEMBER( abc80_state::csg_w ) // ADDRESS_MAP( abc80_mem ) //------------------------------------------------- -ADDRESS_MAP_START(abc80_state::abc80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void abc80_state::abc80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(abc80_state::read), FUNC(abc80_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( abc80_io ) //------------------------------------------------- -ADDRESS_MAP_START(abc80_state::abc80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x17) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) - AM_RANGE(0x05, 0x05) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) - AM_RANGE(0x06, 0x06) AM_WRITE(csg_w) - AM_RANGE(0x07, 0x07) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) - AM_RANGE(0x10, 0x13) AM_MIRROR(0x04) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END +void abc80_state::abc80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x17); + map(0x00, 0x00).rw(m_bus, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w)); + map(0x01, 0x01).rw(m_bus, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w)); + map(0x02, 0x02).w(m_bus, FUNC(abcbus_slot_device::c1_w)); + map(0x03, 0x03).w(m_bus, FUNC(abcbus_slot_device::c2_w)); + map(0x04, 0x04).w(m_bus, FUNC(abcbus_slot_device::c3_w)); + map(0x05, 0x05).w(m_bus, FUNC(abcbus_slot_device::c4_w)); + map(0x06, 0x06).w(this, FUNC(abc80_state::csg_w)); + map(0x07, 0x07).r(m_bus, FUNC(abcbus_slot_device::rst_r)); + map(0x10, 0x13).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp index 307bef397c6..1b9a6060945 100644 --- a/src/mame/drivers/abc80x.cpp +++ b/src/mame/drivers/abc80x.cpp @@ -429,13 +429,14 @@ WRITE8_MEMBER( abc806_state::mao_w ) // ADDRESS_MAP( abc800c_mem ) //------------------------------------------------- -ADDRESS_MAP_START(abc800c_state::abc800c_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x4000, 0x7bff) AM_ROM - AM_RANGE(0x7c00, 0x7fff) AM_RAM AM_SHARE("char_ram") - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void abc800c_state::abc800c_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram().share("video_ram"); + map(0x4000, 0x7bff).rom(); + map(0x7c00, 0x7fff).ram().share("char_ram"); + map(0x8000, 0xffff).ram(); +} //------------------------------------------------- @@ -489,88 +490,92 @@ ADDRESS_MAP_END // ADDRESS_MAP( abc802_mem ) //------------------------------------------------- -ADDRESS_MAP_START(abc802_state::abc802_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("char_ram") - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void abc802_state::abc802_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram().share("char_ram"); + map(0x8000, 0xffff).ram(); +} //------------------------------------------------- // ADDRESS_MAP( abc802_io ) //------------------------------------------------- -ADDRESS_MAP_START(abc802_state::abc802_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_READ(pling_r) - AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) - AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r) - AM_RANGE(0x38, 0x38) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) - AM_RANGE(0x39, 0x39) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w) - AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) -ADDRESS_MAP_END +void abc802_state::abc802_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w)); + map(0x01, 0x01).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w)); + map(0x02, 0x02).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w)); + map(0x03, 0x03).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w)); + map(0x04, 0x04).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w)); + map(0x05, 0x05).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w)); + map(0x05, 0x05).mirror(0x08).r(this, FUNC(abc802_state::pling_r)); + map(0x07, 0x07).mirror(0x18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r)); + map(0x20, 0x23).mirror(0x0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x31, 0x31).mirror(0x06).r(m_crtc, FUNC(mc6845_device::register_r)); + map(0x38, 0x38).mirror(0x06).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x39, 0x39).mirror(0x06).w(m_crtc, FUNC(mc6845_device::register_w)); + map(0x40, 0x43).mirror(0x1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w)); + map(0x60, 0x63).mirror(0x1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} //------------------------------------------------- // ADDRESS_MAP( abc806_mem ) //------------------------------------------------- -ADDRESS_MAP_START(abc806_state::abc806_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1") - AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2") - AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3") - AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4") - AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank5") - AM_RANGE(0x5000, 0x5fff) AM_RAMBANK("bank6") - AM_RANGE(0x6000, 0x6fff) AM_RAMBANK("bank7") - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank8") - AM_RANGE(0x8000, 0x8fff) AM_RAMBANK("bank9") - AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("bank10") - AM_RANGE(0xa000, 0xafff) AM_RAMBANK("bank11") - AM_RANGE(0xb000, 0xbfff) AM_RAMBANK("bank12") - AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bank13") - AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bank14") - AM_RANGE(0xe000, 0xefff) AM_RAMBANK("bank15") - AM_RANGE(0xf000, 0xffff) AM_RAMBANK("bank16") -ADDRESS_MAP_END +void abc806_state::abc806_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("bank1"); + map(0x1000, 0x1fff).bankrw("bank2"); + map(0x2000, 0x2fff).bankrw("bank3"); + map(0x3000, 0x3fff).bankrw("bank4"); + map(0x4000, 0x4fff).bankrw("bank5"); + map(0x5000, 0x5fff).bankrw("bank6"); + map(0x6000, 0x6fff).bankrw("bank7"); + map(0x7000, 0x7fff).bankrw("bank8"); + map(0x8000, 0x8fff).bankrw("bank9"); + map(0x9000, 0x9fff).bankrw("bank10"); + map(0xa000, 0xafff).bankrw("bank11"); + map(0xb000, 0xbfff).bankrw("bank12"); + map(0xc000, 0xcfff).bankrw("bank13"); + map(0xd000, 0xdfff).bankrw("bank14"); + map(0xe000, 0xefff).bankrw("bank15"); + map(0xf000, 0xffff).bankrw("bank16"); +} //------------------------------------------------- // ADDRESS_MAP( abc806_io ) //------------------------------------------------- -ADDRESS_MAP_START(abc806_state::abc806_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0xff18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0xff18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) - AM_RANGE(0x06, 0x06) AM_MIRROR(0xff18) AM_WRITE(hrs_w) - AM_RANGE(0x07, 0x07) AM_MIRROR(0xff18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w) - AM_RANGE(0x20, 0x23) AM_MIRROR(0xff0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x31, 0x31) AM_MIRROR(0xff00) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r) - AM_RANGE(0x34, 0x34) AM_SELECT(0xff00) AM_READWRITE(mai_r, mao_w) - AM_RANGE(0x35, 0x35) AM_MIRROR(0xff00) AM_READWRITE(ami_r, amo_w) - AM_RANGE(0x36, 0x36) AM_MIRROR(0xff00) AM_READWRITE(sti_r, sto_w) - AM_RANGE(0x37, 0x37) AM_SELECT(0xff00) AM_READWRITE(cli_r, sso_w) - AM_RANGE(0x38, 0x38) AM_MIRROR(0xff00) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) - AM_RANGE(0x39, 0x39) AM_MIRROR(0xff00) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w) - AM_RANGE(0x40, 0x43) AM_MIRROR(0xff1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x60, 0x63) AM_MIRROR(0xff1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) -ADDRESS_MAP_END +void abc806_state::abc806_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).mirror(0xff18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w)); + map(0x01, 0x01).mirror(0xff18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w)); + map(0x02, 0x02).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w)); + map(0x03, 0x03).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w)); + map(0x04, 0x04).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w)); + map(0x05, 0x05).mirror(0xff18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w)); + map(0x06, 0x06).mirror(0xff18).w(this, FUNC(abc806_state::hrs_w)); + map(0x07, 0x07).mirror(0xff18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r)).w(this, FUNC(abc806_state::hrc_w)); + map(0x20, 0x23).mirror(0xff0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x31, 0x31).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::register_r)); + map(0x34, 0x34).select(0xff00).rw(this, FUNC(abc806_state::mai_r), FUNC(abc806_state::mao_w)); + map(0x35, 0x35).mirror(0xff00).rw(this, FUNC(abc806_state::ami_r), FUNC(abc806_state::amo_w)); + map(0x36, 0x36).mirror(0xff00).rw(this, FUNC(abc806_state::sti_r), FUNC(abc806_state::sto_w)); + map(0x37, 0x37).select(0xff00).rw(this, FUNC(abc806_state::cli_r), FUNC(abc806_state::sso_w)); + map(0x38, 0x38).mirror(0xff00).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x39, 0x39).mirror(0xff00).w(m_crtc, FUNC(mc6845_device::register_w)); + map(0x40, 0x43).mirror(0xff1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w)); + map(0x60, 0x63).mirror(0xff1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} diff --git a/src/mame/drivers/ac1.cpp b/src/mame/drivers/ac1.cpp index 45ec7f930e7..8d2b1862685 100644 --- a/src/mame/drivers/ac1.cpp +++ b/src/mame/drivers/ac1.cpp @@ -34,26 +34,29 @@ static GFXDECODE_START( ac1 ) GFXDECODE_END /* Address maps */ -ADDRESS_MAP_START(ac1_state::ac1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff ) AM_ROM // Monitor - AM_RANGE( 0x0800, 0x0fff ) AM_ROM // BASIC - AM_RANGE( 0x1000, 0x17ff ) AM_RAM // Video RAM - AM_RANGE( 0x1800, 0x1fff ) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ac1_state::ac1_32_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff ) AM_ROM // Monitor - AM_RANGE( 0x0800, 0x0fff ) AM_ROM // BASIC - AM_RANGE( 0x1000, 0x17ff ) AM_RAM // Video RAM - AM_RANGE( 0x1800, 0xffff ) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ac1_state::ac1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) -ADDRESS_MAP_END +void ac1_state::ac1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); // Monitor + map(0x0800, 0x0fff).rom(); // BASIC + map(0x1000, 0x17ff).ram(); // Video RAM + map(0x1800, 0x1fff).ram(); // RAM +} + +void ac1_state::ac1_32_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); // Monitor + map(0x0800, 0x0fff).rom(); // BASIC + map(0x1000, 0x17ff).ram(); // Video RAM + map(0x1800, 0xffff).ram(); // RAM +} + +void ac1_state::ac1_io(address_map &map) +{ + map.global_mask(0xff); + map(0x04, 0x07).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input ports */ static INPUT_PORTS_START( ac1 ) diff --git a/src/mame/drivers/accomm.cpp b/src/mame/drivers/accomm.cpp index 4d3279afc4e..e6a8a27315e 100644 --- a/src/mame/drivers/accomm.cpp +++ b/src/mame/drivers/accomm.cpp @@ -635,30 +635,31 @@ WRITE_LINE_MEMBER(accomm_state::econet_clk_w) m_adlc->txc_w(state); } -ADDRESS_MAP_START(accomm_state::main_map) - AM_RANGE(0x000000, 0x1fffff) AM_READWRITE(ram_r, ram_w) /* System RAM */ - AM_RANGE(0x200000, 0x3fffff) AM_NOP /* External expansion RAM */ - AM_RANGE(0x400000, 0x400000) AM_NOP /* MODEM */ - AM_RANGE(0x410000, 0x410000) AM_RAM /* Econet ID */ - AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("via6522", via6522_device, read, write) /* 6522 VIA (printer etc) */ - AM_RANGE(0x430000, 0x430001) AM_DEVREADWRITE("acia", acia6850_device, read, write) /* 2641 ACIA (RS423) */ - AM_RANGE(0x440000, 0x440000) AM_WRITE(ch00switch_w) /* CH00SWITCH */ - AM_RANGE(0x450000, 0x457fff) AM_RAM AM_SHARE("vram") /* Video RAM */ - AM_RANGE(0x458000, 0x459fff) AM_READ(read_keyboard1) /* Video ULA */ - AM_RANGE(0x45a000, 0x45bfff) AM_READ(read_keyboard2) /* Video ULA */ - AM_RANGE(0x45fe00, 0x45feff) AM_READWRITE(sheila_r, sheila_w) /* Video ULA */ - AM_RANGE(0x460000, 0x467fff) AM_RAM AM_SHARE("nvram") /* CMOS RAM */ - AM_RANGE(0x470000, 0x47001f) AM_DEVREADWRITE("mc6854", mc6854_device, read, write) /* 68B54 (Econet) */ - AM_RANGE(0x480000, 0x7fffff) AM_NOP /* Reserved */ - AM_RANGE(0x800000, 0xbfffff) AM_NOP /* External expansion IO */ - AM_RANGE(0xc00000, 0xf7ffff) AM_NOP /* External expansion ROM */ - AM_RANGE(0xf80000, 0xf9ffff) AM_NOP /* Empty */ - AM_RANGE(0xfa0000, 0xfbffff) AM_NOP /* ROM bank 4 */ - AM_RANGE(0xfc0000, 0xfcffff) AM_ROM AM_REGION("maincpu", 0x000000) /* ROM bank 3 */ - AM_RANGE(0xfd0000, 0xfdffff) AM_ROM AM_REGION("maincpu", 0x010000) /* ROM bank 2 */ - AM_RANGE(0xfe0000, 0xfeffff) AM_ROM AM_REGION("maincpu", 0x020000) /* ROM bank 0 */ - AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("maincpu", 0x030000) /* ROM bank 1 */ -ADDRESS_MAP_END +void accomm_state::main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rw(this, FUNC(accomm_state::ram_r), FUNC(accomm_state::ram_w)); /* System RAM */ + map(0x200000, 0x3fffff).noprw(); /* External expansion RAM */ + map(0x400000, 0x400000).noprw(); /* MODEM */ + map(0x410000, 0x410000).ram(); /* Econet ID */ + map(0x420000, 0x42000f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* 6522 VIA (printer etc) */ + map(0x430000, 0x430001).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); /* 2641 ACIA (RS423) */ + map(0x440000, 0x440000).w(this, FUNC(accomm_state::ch00switch_w)); /* CH00SWITCH */ + map(0x450000, 0x457fff).ram().share("vram"); /* Video RAM */ + map(0x458000, 0x459fff).r(this, FUNC(accomm_state::read_keyboard1)); /* Video ULA */ + map(0x45a000, 0x45bfff).r(this, FUNC(accomm_state::read_keyboard2)); /* Video ULA */ + map(0x45fe00, 0x45feff).rw(this, FUNC(accomm_state::sheila_r), FUNC(accomm_state::sheila_w)); /* Video ULA */ + map(0x460000, 0x467fff).ram().share("nvram"); /* CMOS RAM */ + map(0x470000, 0x47001f).rw(m_adlc, FUNC(mc6854_device::read), FUNC(mc6854_device::write)); /* 68B54 (Econet) */ + map(0x480000, 0x7fffff).noprw(); /* Reserved */ + map(0x800000, 0xbfffff).noprw(); /* External expansion IO */ + map(0xc00000, 0xf7ffff).noprw(); /* External expansion ROM */ + map(0xf80000, 0xf9ffff).noprw(); /* Empty */ + map(0xfa0000, 0xfbffff).noprw(); /* ROM bank 4 */ + map(0xfc0000, 0xfcffff).rom().region("maincpu", 0x000000); /* ROM bank 3 */ + map(0xfd0000, 0xfdffff).rom().region("maincpu", 0x010000); /* ROM bank 2 */ + map(0xfe0000, 0xfeffff).rom().region("maincpu", 0x020000); /* ROM bank 0 */ + map(0xff0000, 0xffffff).rom().region("maincpu", 0x030000); /* ROM bank 1 */ +} static INPUT_PORTS_START( accomm ) PORT_START("LINE1.0") diff --git a/src/mame/drivers/ace.cpp b/src/mame/drivers/ace.cpp index f083e017edb..01d051e3344 100644 --- a/src/mame/drivers/ace.cpp +++ b/src/mame/drivers/ace.cpp @@ -148,50 +148,51 @@ READ8_MEMBER(aceal_state::unk_r) /* 3x3106 - SRAM 256x1 */ /* 1x3622 - ROM 512x4 - doesn't seem to be used ????????????*/ -ADDRESS_MAP_START(aceal_state::main_map) - AM_RANGE(0x0000, 0x09ff) AM_ROM +void aceal_state::main_map(address_map &map) +{ + map(0x0000, 0x09ff).rom(); - AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(ace_scoreram_w) AM_SHARE("scoreram") /* 2x2101 */ - AM_RANGE(0x8300, 0x83ff) AM_RAM AM_SHARE("ram2") /* 2x2101 */ - AM_RANGE(0x8000, 0x80ff) AM_RAM_WRITE(ace_characterram_w) AM_SHARE("characterram") /* 3x3101 (3bits: 0, 1, 2) */ + map(0x2000, 0x20ff).ram().w(this, FUNC(aceal_state::ace_scoreram_w)).share("scoreram"); /* 2x2101 */ + map(0x8300, 0x83ff).ram().share("ram2"); /* 2x2101 */ + map(0x8000, 0x80ff).ram().w(this, FUNC(aceal_state::ace_characterram_w)).share("characterram"); /* 3x3101 (3bits: 0, 1, 2) */ - AM_RANGE(0xc000, 0xc005) AM_WRITE(ace_objpos_w) + map(0xc000, 0xc005).w(this, FUNC(aceal_state::ace_objpos_w)); /* players inputs */ - AM_RANGE(0xc008, 0xc008) AM_READ_PORT("c008") - AM_RANGE(0xc009, 0xc009) AM_READ_PORT("c009") - AM_RANGE(0xc00a, 0xc00a) AM_READ_PORT("c00a") - AM_RANGE(0xc00b, 0xc00b) AM_READ_PORT("c00b") - AM_RANGE(0xc00c, 0xc00c) AM_READ_PORT("c00c") - AM_RANGE(0xc00d, 0xc00d) AM_READ_PORT("c00d") - AM_RANGE(0xc00e, 0xc00e) AM_READ_PORT("c00e") - AM_RANGE(0xc00f, 0xc00f) AM_READ_PORT("c00f") - AM_RANGE(0xc010, 0xc010) AM_READ_PORT("c010") - AM_RANGE(0xc011, 0xc011) AM_READ_PORT("c011") - - AM_RANGE(0xc012, 0xc012) AM_READ(unk_r) + map(0xc008, 0xc008).portr("c008"); + map(0xc009, 0xc009).portr("c009"); + map(0xc00a, 0xc00a).portr("c00a"); + map(0xc00b, 0xc00b).portr("c00b"); + map(0xc00c, 0xc00c).portr("c00c"); + map(0xc00d, 0xc00d).portr("c00d"); + map(0xc00e, 0xc00e).portr("c00e"); + map(0xc00f, 0xc00f).portr("c00f"); + map(0xc010, 0xc010).portr("c010"); + map(0xc011, 0xc011).portr("c011"); + + map(0xc012, 0xc012).r(this, FUNC(aceal_state::unk_r)); /* vblank */ - AM_RANGE(0xc014, 0xc014) AM_READ_PORT("c014") + map(0xc014, 0xc014).portr("c014"); /* coin */ - AM_RANGE(0xc015, 0xc015) AM_READ_PORT("c015") + map(0xc015, 0xc015).portr("c015"); /* start (must read 1 at least once to make the game run) */ - AM_RANGE(0xc016, 0xc016) AM_READ_PORT("c016") - - AM_RANGE(0xc017, 0xc017) AM_READ(unk_r) - AM_RANGE(0xc018, 0xc018) AM_READ(unk_r) - AM_RANGE(0xc019, 0xc019) AM_READ(unk_r) - - AM_RANGE(0xc020, 0xc020) AM_READ(unk_r) - AM_RANGE(0xc021, 0xc021) AM_READ(unk_r) - AM_RANGE(0xc022, 0xc022) AM_READ(unk_r) - AM_RANGE(0xc023, 0xc023) AM_READ(unk_r) - AM_RANGE(0xc024, 0xc024) AM_READ(unk_r) - AM_RANGE(0xc025, 0xc025) AM_READ(unk_r) - AM_RANGE(0xc026, 0xc026) AM_READ(unk_r) -ADDRESS_MAP_END + map(0xc016, 0xc016).portr("c016"); + + map(0xc017, 0xc017).r(this, FUNC(aceal_state::unk_r)); + map(0xc018, 0xc018).r(this, FUNC(aceal_state::unk_r)); + map(0xc019, 0xc019).r(this, FUNC(aceal_state::unk_r)); + + map(0xc020, 0xc020).r(this, FUNC(aceal_state::unk_r)); + map(0xc021, 0xc021).r(this, FUNC(aceal_state::unk_r)); + map(0xc022, 0xc022).r(this, FUNC(aceal_state::unk_r)); + map(0xc023, 0xc023).r(this, FUNC(aceal_state::unk_r)); + map(0xc024, 0xc024).r(this, FUNC(aceal_state::unk_r)); + map(0xc025, 0xc025).r(this, FUNC(aceal_state::unk_r)); + map(0xc026, 0xc026).r(this, FUNC(aceal_state::unk_r)); +} static INPUT_PORTS_START( ace ) diff --git a/src/mame/drivers/aceex.cpp b/src/mame/drivers/aceex.cpp index 21746c32796..f3ab4eca40f 100644 --- a/src/mame/drivers/aceex.cpp +++ b/src/mame/drivers/aceex.cpp @@ -63,9 +63,10 @@ public: void aceex2814_map(address_map &map); }; -ADDRESS_MAP_START(aceex2814_state::aceex2814_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void aceex2814_state::aceex2814_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} static INPUT_PORTS_START( aceex2814 ) INPUT_PORTS_END diff --git a/src/mame/drivers/acefruit.cpp b/src/mame/drivers/acefruit.cpp index b9b23cff8c0..f18ffa76c69 100644 --- a/src/mame/drivers/acefruit.cpp +++ b/src/mame/drivers/acefruit.cpp @@ -332,32 +332,34 @@ PALETTE_INIT_MEMBER(acefruit_state, acefruit) palette.set_pen_color( 15, rgb_t(0xff, 0x00, 0x00) ); } -ADDRESS_MAP_START(acefruit_state::acefruit_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(acefruit_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3") - AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN4") - AM_RANGE(0x8005, 0x8005) AM_READ_PORT("IN5") - AM_RANGE(0x8006, 0x8006) AM_READ_PORT("IN6") - AM_RANGE(0x8007, 0x8007) AM_READ_PORT("IN7") - AM_RANGE(0x6000, 0x6005) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa001) AM_WRITE(acefruit_lamp_w) - AM_RANGE(0xa002, 0xa003) AM_WRITE(acefruit_coin_w) - AM_RANGE(0xa004, 0xa004) AM_WRITE(acefruit_solenoid_w) - AM_RANGE(0xa005, 0xa006) AM_WRITE(acefruit_sound_w) - AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(acefruit_state::acefruit_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_NOP /* ? */ -ADDRESS_MAP_END +void acefruit_state::acefruit_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).ram().share("nvram"); + map(0x4000, 0x43ff).ram().share("videoram"); + map(0x4400, 0x47ff).ram().w(this, FUNC(acefruit_state::acefruit_colorram_w)).share("colorram"); + map(0x8000, 0x8000).portr("IN0"); + map(0x8001, 0x8001).portr("IN1"); + map(0x8002, 0x8002).portr("IN2"); + map(0x8003, 0x8003).portr("IN3"); + map(0x8004, 0x8004).portr("IN4"); + map(0x8005, 0x8005).portr("IN5"); + map(0x8006, 0x8006).portr("IN6"); + map(0x8007, 0x8007).portr("IN7"); + map(0x6000, 0x6005).ram().share("spriteram"); + map(0xa000, 0xa001).w(this, FUNC(acefruit_state::acefruit_lamp_w)); + map(0xa002, 0xa003).w(this, FUNC(acefruit_state::acefruit_coin_w)); + map(0xa004, 0xa004).w(this, FUNC(acefruit_state::acefruit_solenoid_w)); + map(0xa005, 0xa006).w(this, FUNC(acefruit_state::acefruit_sound_w)); + map(0xc000, 0xc000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe000, 0xffff).rom(); +} + +void acefruit_state::acefruit_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).noprw(); /* ? */ +} static INPUT_PORTS_START( sidewndr ) PORT_START("IN0") // 0 diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp index 3ad27e0a4a1..51dac6fd666 100644 --- a/src/mame/drivers/aces1.cpp +++ b/src/mame/drivers/aces1.cpp @@ -269,21 +269,23 @@ void aces1_state::machine_reset() aces1_reset_irq_timer(); } -ADDRESS_MAP_START(aces1_state::aces1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0xadf0, 0xadf3) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_data_w) // Dips, Sound - AM_RANGE(0xafb0, 0xafb3) AM_DEVREADWRITE("ic24", i8255_device, read, write) // IC24 - lamps, 7segs - AM_RANGE(0xafd0, 0xafd3) AM_DEVREADWRITE("ic25", i8255_device, read, write) // IC25 - lamps, meters, reel comms (writes) - AM_RANGE(0xafe0, 0xafe3) AM_DEVREADWRITE("ic37", i8255_device, read, write)// IC37 - doors, coins, reel optics (reads) - AM_RANGE(0xc000, 0xc000) AM_READ(aces1_unk_r) // illegal or reset irq? - AM_RANGE(0xe000, 0xe000) AM_READWRITE(aces1_nmi_counter_reset_r, aces1_nmi_counter_reset_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(aces1_state::aces1_portmap) - AM_RANGE(0x00, 0x00) AM_READ(aces1_unk_port00_r) // read before enabling interrupts? -ADDRESS_MAP_END +void aces1_state::aces1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0xadf0, 0xadf3).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // Dips, Sound + map(0xafb0, 0xafb3).rw("ic24", FUNC(i8255_device::read), FUNC(i8255_device::write)); // IC24 - lamps, 7segs + map(0xafd0, 0xafd3).rw("ic25", FUNC(i8255_device::read), FUNC(i8255_device::write)); // IC25 - lamps, meters, reel comms (writes) + map(0xafe0, 0xafe3).rw("ic37", FUNC(i8255_device::read), FUNC(i8255_device::write));// IC37 - doors, coins, reel optics (reads) + map(0xc000, 0xc000).r(this, FUNC(aces1_state::aces1_unk_r)); // illegal or reset irq? + map(0xe000, 0xe000).rw(this, FUNC(aces1_state::aces1_nmi_counter_reset_r), FUNC(aces1_state::aces1_nmi_counter_reset_w)); +} + + +void aces1_state::aces1_portmap(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(aces1_state::aces1_unk_port00_r)); // read before enabling interrupts? +} static INPUT_PORTS_START( aces1 ) diff --git a/src/mame/drivers/acesp.cpp b/src/mame/drivers/acesp.cpp index 954ed36bd12..6b31dd4b446 100644 --- a/src/mame/drivers/acesp.cpp +++ b/src/mame/drivers/acesp.cpp @@ -44,10 +44,11 @@ public: -ADDRESS_MAP_START(ace_sp_state::ace_sp_map) +void ace_sp_state::ace_sp_map(address_map &map) +{ /**** 6303Y internal area ****/ //----- 0x0000 - 0x0027 is internal registers ----- - AM_RANGE(0x0000, 0x0027) AM_RAM + map(0x0000, 0x0027).ram(); //----- 0x0028 - 0x003f is external access ----- // 0x30 - reels write // 0x31 - lamp high @@ -57,25 +58,26 @@ ADDRESS_MAP_START(ace_sp_state::ace_sp_map) // 0x35 - shift clk // 0x36 - sio // 0x37 - watchdog? - AM_RANGE(0x0038, 0x003b) AM_DEVREADWRITE("pia0", pia6821_device, read, write) + map(0x0038, 0x003b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* 0x3c */ /* 0x3d */ /* 0x3e */ /* 0x3f */ //----- 0x0040 - 0x013f is internal RAM (256 bytes) ----- - AM_RANGE(0x0040, 0x013f) AM_RAM + map(0x0040, 0x013f).ram(); /**** regular map ****/ - AM_RANGE(0x0140, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x0140, 0x1fff).ram(); + map(0x2000, 0xffff).rom(); +} -ADDRESS_MAP_START(ace_sp_state::ace_sp_portmap) +void ace_sp_state::ace_sp_portmap(address_map &map) +{ //AM_RANGE(0x02, 0x02) // misc //AM_RANGE(0x05, 0x06) // AYs -ADDRESS_MAP_END +} static INPUT_PORTS_START( ace_sp ) diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp index d8633b3b3f1..91faa3be2d2 100644 --- a/src/mame/drivers/acommand.cpp +++ b/src/mame/drivers/acommand.cpp @@ -320,31 +320,32 @@ WRITE16_MEMBER(acommand_state::output_lamps_w) // --xx --xx lamps } -ADDRESS_MAP_START(acommand_state::acommand_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("bgtmap", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("txtmap", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082208, 0x082209) AM_WRITE(ac_unk2_w) - AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_DEVWRITE("bgtmap", megasys1_tilemap_device, write) AM_SHARE("bgtmap") - AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_DEVWRITE("txtmap", megasys1_tilemap_device, write) AM_SHARE("txtmap") - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM - AM_RANGE(0x0f8000, 0x0f8fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0f9000, 0x0fffff) AM_RAM - - AM_RANGE(0x100000, 0x100001) AM_WRITE8(oki_bank_w,0x00ff) - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0") AM_WRITE(output_lamps_w) - AM_RANGE(0x100014, 0x100017) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x100018, 0x10001b) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - - AM_RANGE(0x100040, 0x100041) AM_READWRITE(ext_devices_0_r,ext_devices_0_w) - AM_RANGE(0x100044, 0x100045) AM_READWRITE(ext_devices_1_r,ext_devices_1_w) - AM_RANGE(0x100048, 0x100049) AM_WRITE(ext_devices_2_w) - - AM_RANGE(0x100050, 0x100051) AM_WRITE(output_7seg0_w) - AM_RANGE(0x100054, 0x100055) AM_WRITE(output_7seg1_w) - AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("DSW") -ADDRESS_MAP_END +void acommand_state::acommand_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x082000, 0x082005).w(m_bgtmap, FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082100, 0x082105).w(m_txtmap, FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082208, 0x082209).w(this, FUNC(acommand_state::ac_unk2_w)); + map(0x0a0000, 0x0a3fff).ram().w(m_bgtmap, FUNC(megasys1_tilemap_device::write)).share("bgtmap"); + map(0x0b0000, 0x0b3fff).ram().w(m_txtmap, FUNC(megasys1_tilemap_device::write)).share("txtmap"); + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0f0000, 0x0f7fff).ram(); + map(0x0f8000, 0x0f8fff).ram().share("spriteram"); + map(0x0f9000, 0x0fffff).ram(); + + map(0x100001, 0x100001).w(this, FUNC(acommand_state::oki_bank_w)); + map(0x100008, 0x100009).portr("IN0").w(this, FUNC(acommand_state::output_lamps_w)); + map(0x100014, 0x100017).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x100018, 0x10001b).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + + map(0x100040, 0x100041).rw(this, FUNC(acommand_state::ext_devices_0_r), FUNC(acommand_state::ext_devices_0_w)); + map(0x100044, 0x100045).rw(this, FUNC(acommand_state::ext_devices_1_r), FUNC(acommand_state::ext_devices_1_w)); + map(0x100048, 0x100049).w(this, FUNC(acommand_state::ext_devices_2_w)); + + map(0x100050, 0x100051).w(this, FUNC(acommand_state::output_7seg0_w)); + map(0x100054, 0x100055).w(this, FUNC(acommand_state::output_7seg1_w)); + map(0x10005c, 0x10005d).portr("DSW"); +} static INPUT_PORTS_START( acommand ) PORT_START("IN0") diff --git a/src/mame/drivers/acrnsys1.cpp b/src/mame/drivers/acrnsys1.cpp index b5fe96b04f5..3faaf3a639f 100644 --- a/src/mame/drivers/acrnsys1.cpp +++ b/src/mame/drivers/acrnsys1.cpp @@ -183,12 +183,13 @@ WRITE8_MEMBER( acrnsys1_state::acrnsys1_led_segment_w ) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(acrnsys1_state::acrnsys1_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0e00, 0x0e7f) AM_MIRROR(0x100) AM_DEVREADWRITE("b1", ins8154_device, ins8154_r, ins8154_w) - AM_RANGE(0x0e80, 0x0eff) AM_MIRROR(0x100) AM_RAM - AM_RANGE(0xf800, 0xf9ff) AM_MIRROR(0x600) AM_ROM -ADDRESS_MAP_END +void acrnsys1_state::acrnsys1_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0e00, 0x0e7f).mirror(0x100).rw("b1", FUNC(ins8154_device::ins8154_r), FUNC(ins8154_device::ins8154_w)); + map(0x0e80, 0x0eff).mirror(0x100).ram(); + map(0xf800, 0xf9ff).mirror(0x600).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/actfancr.cpp b/src/mame/drivers/actfancr.cpp index b162474a2e6..5ab2d128a6b 100644 --- a/src/mame/drivers/actfancr.cpp +++ b/src/mame/drivers/actfancr.cpp @@ -28,7 +28,6 @@ #include "includes/actfancr.h" #include "cpu/m6502/m6502.h" -#include "cpu/h6280/h6280.h" #include "sound/2203intf.h" #include "sound/3812intf.h" #include "sound/okim6295.h" @@ -68,56 +67,59 @@ WRITE8_MEMBER(actfancr_state::actfancr_buffer_spriteram_w) } } -ADDRESS_MAP_START(actfancr_state::actfan_map) - AM_RANGE(0x000000, 0x02ffff) AM_ROM - AM_RANGE(0x060000, 0x060007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_swap_w) - AM_RANGE(0x062000, 0x063fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w) - AM_RANGE(0x070000, 0x070007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x070010, 0x07001f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_swap_w) - AM_RANGE(0x072000, 0x0727ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w) - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w) - AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x130000, 0x130000) AM_READ_PORT("P1") - AM_RANGE(0x130001, 0x130001) AM_READ_PORT("P2") - AM_RANGE(0x130002, 0x130002) AM_READ_PORT("DSW1") - AM_RANGE(0x130003, 0x130003) AM_READ_PORT("DSW2") - AM_RANGE(0x140000, 0x140001) AM_READ_PORT("SYSTEM") /* VBL */ - AM_RANGE(0x150000, 0x150000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM AM_SHARE("main_ram") /* Main ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(actfancr_state::triothep_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x040007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x040010, 0x04001f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_swap_w) - AM_RANGE(0x044000, 0x045fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w) - AM_RANGE(0x046400, 0x0467ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_8bit_swap_r, pf_rowscroll_8bit_swap_w) - AM_RANGE(0x060000, 0x060007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x060010, 0x06001f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_swap_w) - AM_RANGE(0x064000, 0x0647ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w) - AM_RANGE(0x066400, 0x0667ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_8bit_swap_r, pf_rowscroll_8bit_swap_w) - AM_RANGE(0x100000, 0x100000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x110000, 0x110001) AM_WRITE(actfancr_buffer_spriteram_w) - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x130000, 0x1305ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x140000, 0x140001) AM_READNOP /* Value doesn't matter */ - AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM AM_SHARE("main_ram") /* Main ram */ - AM_RANGE(0x1ff000, 0x1ff001) AM_READWRITE(triothep_control_r, triothep_control_select_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("maincpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void actfancr_state::actfan_map(address_map &map) +{ + map(0x000000, 0x02ffff).rom(); + map(0x060000, 0x060007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x060010, 0x06001f).w(m_tilegen1, FUNC(deco_bac06_device::pf_control1_8bit_swap_w)); + map(0x062000, 0x063fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w)); + map(0x070000, 0x070007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x070010, 0x07001f).w(m_tilegen2, FUNC(deco_bac06_device::pf_control1_8bit_swap_w)); + map(0x072000, 0x0727ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w)); + map(0x100000, 0x1007ff).ram().share("spriteram"); + map(0x110000, 0x110001).w(this, FUNC(actfancr_state::actfancr_buffer_spriteram_w)); + map(0x120000, 0x1205ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x130000, 0x130000).portr("P1"); + map(0x130001, 0x130001).portr("P2"); + map(0x130002, 0x130002).portr("DSW1"); + map(0x130003, 0x130003).portr("DSW2"); + map(0x140000, 0x140001).portr("SYSTEM"); /* VBL */ + map(0x150000, 0x150000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1f0000, 0x1f3fff).ram().share("main_ram"); /* Main ram */ +} + +void actfancr_state::triothep_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x040007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x040010, 0x04001f).w(m_tilegen2, FUNC(deco_bac06_device::pf_control1_8bit_swap_w)); + map(0x044000, 0x045fff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w)); + map(0x046400, 0x0467ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_r), FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_w)); + map(0x060000, 0x060007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x060010, 0x06001f).w(m_tilegen1, FUNC(deco_bac06_device::pf_control1_8bit_swap_w)); + map(0x064000, 0x0647ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w)); + map(0x066400, 0x0667ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_r), FUNC(deco_bac06_device::pf_rowscroll_8bit_swap_w)); + map(0x100000, 0x100000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x110000, 0x110001).w(this, FUNC(actfancr_state::actfancr_buffer_spriteram_w)); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x130000, 0x1305ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x140000, 0x140001).nopr(); /* Value doesn't matter */ + map(0x1f0000, 0x1f3fff).ram().share("main_ram"); /* Main ram */ + map(0x1ff000, 0x1ff001).rw(this, FUNC(actfancr_state::triothep_control_r), FUNC(actfancr_state::triothep_control_select_w)); + map(0x1ff400, 0x1ff403).w(m_maincpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(actfancr_state::dec0_s_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void actfancr_state::dec0_s_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x3800, 0x3800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x4000, 0xffff).rom(); +} /******************************************************************************/ diff --git a/src/mame/drivers/acvirus.cpp b/src/mame/drivers/acvirus.cpp index 066612f4e7c..dc0d8356364 100644 --- a/src/mame/drivers/acvirus.cpp +++ b/src/mame/drivers/acvirus.cpp @@ -100,10 +100,11 @@ void acvirus_state::machine_reset() { } -ADDRESS_MAP_START(acvirus_state::virus_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) // fixed 32K of flash image - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank") -ADDRESS_MAP_END +void acvirus_state::virus_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); // fixed 32K of flash image + map(0x8000, 0xffff).bankr("rombank"); +} MACHINE_CONFIG_START(acvirus_state::virus) MCFG_CPU_ADD("maincpu", I8052, XTAL(12'000'000)) diff --git a/src/mame/drivers/adam.cpp b/src/mame/drivers/adam.cpp index 6c82f040866..863b7d2624e 100644 --- a/src/mame/drivers/adam.cpp +++ b/src/mame/drivers/adam.cpp @@ -874,41 +874,45 @@ WRITE8_MEMBER( adam_state::m6801_p4_w ) // ADDRESS_MAP( adam_mem ) //------------------------------------------------- -ADDRESS_MAP_START(adam_state::adam_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w) -ADDRESS_MAP_END +void adam_state::adam_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(adam_state::mreq_r), FUNC(adam_state::mreq_w)); +} //------------------------------------------------- // ADDRESS_MAP( adam_io ) //------------------------------------------------- -ADDRESS_MAP_START(adam_state::adam_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(iorq_r, iorq_w) -ADDRESS_MAP_END +void adam_state::adam_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(adam_state::iorq_r), FUNC(adam_state::iorq_w)); +} //------------------------------------------------- // ADDRESS_MAP( m6801_mem ) //------------------------------------------------- -ADDRESS_MAP_START(adam_state::m6801_mem) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0) -ADDRESS_MAP_END +void adam_state::m6801_mem(address_map &map) +{ + map(0x0000, 0x001f).rw(m_netcpu, FUNC(m6801_cpu_device::m6801_io_r), FUNC(m6801_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0xf800, 0xffff).rom().region(M6801_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( m6801_io ) //------------------------------------------------- -ADDRESS_MAP_START(adam_state::m6801_io) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(m6801_p1_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6801_p2_r, m6801_p2_w) - AM_RANGE(M6801_PORT3, M6801_PORT3) AM_READWRITE(m6801_p3_r, m6801_p3_w) - AM_RANGE(M6801_PORT4, M6801_PORT4) AM_WRITE(m6801_p4_w) -ADDRESS_MAP_END +void adam_state::m6801_io(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).w(this, FUNC(adam_state::m6801_p1_w)); + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(adam_state::m6801_p2_r), FUNC(adam_state::m6801_p2_w)); + map(M6801_PORT3, M6801_PORT3).rw(this, FUNC(adam_state::m6801_p3_r), FUNC(adam_state::m6801_p3_w)); + map(M6801_PORT4, M6801_PORT4).w(this, FUNC(adam_state::m6801_p4_w)); +} diff --git a/src/mame/drivers/adp.cpp b/src/mame/drivers/adp.cpp index 53059627674..0bdf0d308e2 100644 --- a/src/mame/drivers/adp.cpp +++ b/src/mame/drivers/adp.cpp @@ -304,61 +304,66 @@ WRITE16_MEMBER(adp_state::input_w) m_mux_data &= 0x0f; } -ADDRESS_MAP_START(adp_state::skattv_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) - AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) - AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w) - AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(adp_state::skattva_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) - AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) - AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0") - AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(adp_state::quickjac_mem) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) // bad - AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) // bad - AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0") - AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(adp_state::funland_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) - AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) - AM_RANGE(0x800088, 0x800089) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x80008a, 0x80008b) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x80008c, 0x80008d) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x800100, 0x800101) AM_READ_PORT("IN0") - AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xfc0000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(adp_state::fstation_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) - AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) - AM_RANGE(0x800100, 0x800101) AM_READWRITE(input_r, input_w) - AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_data_w, 0x00ff) //18b too - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xfc0000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void adp_state::skattv_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x800100, 0x800101).rw(this, FUNC(adp_state::input_r), FUNC(adp_state::input_w)); + map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too + map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xffc000, 0xffffff).ram().share("nvram"); +} + +void adp_state::skattva_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x800100, 0x800101).portr("IN0"); + map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too + map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xffc000, 0xffffff).ram().share("nvram"); +} + +void adp_state::quickjac_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); // bad + map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); // bad + map(0x800100, 0x800101).portr("IN0"); + map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too + map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xff0000, 0xffffff).ram().share("nvram"); +} + +void adp_state::funland_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x800089, 0x800089).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x80008b, 0x80008b).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x80008d, 0x80008d).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x800100, 0x800101).portr("IN0"); + map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too + map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xfc0000, 0xffffff).ram().share("nvram"); +} + +void adp_state::fstation_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x800080, 0x800081).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x800082, 0x800083).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x800100, 0x800101).rw(this, FUNC(adp_state::input_r), FUNC(adp_state::input_w)); + map(0x800140, 0x800143).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //18b too + map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xfc0000, 0xffffff).ram().share("nvram"); +} static INPUT_PORTS_START( quickjac ) @@ -525,20 +530,23 @@ INTERRUPT_GEN_MEMBER(adp_state::adp_int) } */ -ADDRESS_MAP_START(adp_state::adp_hd63484_map) - AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM - AM_RANGE(0x80000, 0x9ffff) AM_MIRROR(0x60000) AM_ROM AM_REGION("gfx1", 0) -ADDRESS_MAP_END +void adp_state::adp_hd63484_map(address_map &map) +{ + map(0x00000, 0x1ffff).mirror(0x60000).ram(); + map(0x80000, 0x9ffff).mirror(0x60000).rom().region("gfx1", 0); +} -ADDRESS_MAP_START(adp_state::fashiong_hd63484_map) - AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x60000) AM_RAM - AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("gfx1", 0) -ADDRESS_MAP_END +void adp_state::fashiong_hd63484_map(address_map &map) +{ + map(0x00000, 0x1ffff).mirror(0x60000).ram(); + map(0x80000, 0xfffff).rom().region("gfx1", 0); +} -ADDRESS_MAP_START(adp_state::fstation_hd63484_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0x80000, 0xfffff) AM_RAM -ADDRESS_MAP_END +void adp_state::fstation_hd63484_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom().region("gfx1", 0); + map(0x80000, 0xfffff).ram(); +} MACHINE_CONFIG_START(adp_state::quickjac) @@ -602,9 +610,10 @@ MACHINE_CONFIG_START(adp_state::fashiong) MCFG_HD63484_ADDRESS_MAP(fashiong_hd63484_map) MACHINE_CONFIG_END -ADDRESS_MAP_START(adp_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void adp_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(adp_state::funland) quickjac(config); diff --git a/src/mame/drivers/advision.cpp b/src/mame/drivers/advision.cpp index 8d6b9f1b6b9..6278c1e90a7 100644 --- a/src/mame/drivers/advision.cpp +++ b/src/mame/drivers/advision.cpp @@ -36,14 +36,16 @@ READ8_MEMBER( advision_state::rom_r ) return m_cart->read_rom(space, offset & 0xfff); } -ADDRESS_MAP_START(advision_state::program_map) - AM_RANGE(0x0000, 0x03ff) AM_ROMBANK("bank1") - AM_RANGE(0x0400, 0x0fff) AM_READ(rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(advision_state::io_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(ext_ram_r, ext_ram_w) -ADDRESS_MAP_END +void advision_state::program_map(address_map &map) +{ + map(0x0000, 0x03ff).bankr("bank1"); + map(0x0400, 0x0fff).r(this, FUNC(advision_state::rom_r)); +} + +void advision_state::io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(advision_state::ext_ram_r), FUNC(advision_state::ext_ram_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/aeroboto.cpp b/src/mame/drivers/aeroboto.cpp index fc3b93ab26f..34c54bcaa97 100644 --- a/src/mame/drivers/aeroboto.cpp +++ b/src/mame/drivers/aeroboto.cpp @@ -74,37 +74,39 @@ WRITE8_MEMBER(aeroboto_state::aeroboto_1a2_w) m_disable_irq = 1; } -ADDRESS_MAP_START(aeroboto_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("mainram") // main RAM - AM_RANGE(0x01a2, 0x01a2) AM_WRITE(aeroboto_1a2_w) // affects IRQ line (more protection?) - AM_RANGE(0x0800, 0x08ff) AM_RAM // tile color buffer; copied to 0x2000 - AM_RANGE(0x0900, 0x09ff) AM_WRITEONLY // a backup of default tile colors - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(aeroboto_videoram_w) AM_SHARE("videoram") // tile RAM - AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("hscroll") // horizontal scroll regs - AM_RANGE(0x1840, 0x27ff) AM_WRITENOP // cleared during custom LSI test - AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(aeroboto_tilecolor_w) AM_SHARE("tilecolor") // tile color RAM - AM_RANGE(0x2800, 0x28ff) AM_RAM AM_SHARE("spriteram") // sprite RAM - AM_RANGE(0x2900, 0x2fff) AM_WRITENOP // cleared along with sprite RAM - AM_RANGE(0x2973, 0x2973) AM_READ(aeroboto_2973_r) // protection read - AM_RANGE(0x3000, 0x3000) AM_READWRITE(aeroboto_in0_r, aeroboto_3000_w) - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x3003, 0x3003) AM_WRITEONLY AM_SHARE("vscroll") - AM_RANGE(0x3004, 0x3004) AM_READ(aeroboto_201_r) AM_WRITEONLY AM_SHARE("starx") - AM_RANGE(0x3005, 0x3005) AM_WRITEONLY AM_SHARE("stary") // usable but probably wrong - AM_RANGE(0x3006, 0x3006) AM_WRITEONLY AM_SHARE("bgcolor") - AM_RANGE(0x3800, 0x3800) AM_READ(aeroboto_irq_ack_r) // watchdog or IRQ ack - AM_RANGE(0x4000, 0xffff) AM_ROM // main ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(aeroboto_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x9002, 0x9002) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xa002, 0xa002) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void aeroboto_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("mainram"); // main RAM + map(0x01a2, 0x01a2).w(this, FUNC(aeroboto_state::aeroboto_1a2_w)); // affects IRQ line (more protection?) + map(0x0800, 0x08ff).ram(); // tile color buffer; copied to 0x2000 + map(0x0900, 0x09ff).writeonly(); // a backup of default tile colors + map(0x1000, 0x17ff).ram().w(this, FUNC(aeroboto_state::aeroboto_videoram_w)).share("videoram"); // tile RAM + map(0x1800, 0x183f).ram().share("hscroll"); // horizontal scroll regs + map(0x1840, 0x27ff).nopw(); // cleared during custom LSI test + map(0x2000, 0x20ff).ram().w(this, FUNC(aeroboto_state::aeroboto_tilecolor_w)).share("tilecolor"); // tile color RAM + map(0x2800, 0x28ff).ram().share("spriteram"); // sprite RAM + map(0x2900, 0x2fff).nopw(); // cleared along with sprite RAM + map(0x2973, 0x2973).r(this, FUNC(aeroboto_state::aeroboto_2973_r)); // protection read + map(0x3000, 0x3000).rw(this, FUNC(aeroboto_state::aeroboto_in0_r), FUNC(aeroboto_state::aeroboto_3000_w)); + map(0x3001, 0x3001).portr("DSW1").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3002, 0x3002).portr("DSW2").w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x3003, 0x3003).writeonly().share("vscroll"); + map(0x3004, 0x3004).r(this, FUNC(aeroboto_state::aeroboto_201_r)).writeonly().share("starx"); + map(0x3005, 0x3005).writeonly().share("stary"); // usable but probably wrong + map(0x3006, 0x3006).writeonly().share("bgcolor"); + map(0x3800, 0x3800).r(this, FUNC(aeroboto_state::aeroboto_irq_ack_r)); // watchdog or IRQ ack + map(0x4000, 0xffff).rom(); // main ROM +} + +void aeroboto_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x9000, 0x9001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x9002, 0x9002).r("ay1", FUNC(ay8910_device::data_r)); + map(0xa000, 0xa001).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xa002, 0xa002).r("ay2", FUNC(ay8910_device::data_r)); + map(0xf000, 0xffff).rom(); +} diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp index 5f81617c310..5179a71fd32 100644 --- a/src/mame/drivers/aerofgt.cpp +++ b/src/mame/drivers/aerofgt.cpp @@ -128,368 +128,411 @@ WRITE8_MEMBER(aerofgt_state::karatblzbl_d7759_reset_w) m_upd7759->reset_w(data & 0x80); } -ADDRESS_MAP_START(aerofgt_state::pspikes_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::pspikesb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0xc04000, 0xc04001) AM_WRITENOP - AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w) - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xfff008, 0xfff009) AM_WRITE(pspikesb_oki_banking_w) - AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::spikes91_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0xc04000, 0xc04001) AM_WRITENOP - AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - - AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("tx_tilemap_ram") - - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("spriteram3") - //AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w) - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0xfff006, 0xfff007) AM_NOP - AM_RANGE(0xfff008, 0xfff009) AM_WRITE(spikes91_lookup_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::pspikesc_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") - AM_RANGE(0xfff004, 0xfff005) AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::kickball_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(kickball_gfxbank_w, 0x00ff) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::karatblz_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x082000, 0x083fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x0a0000, 0x0affff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */ - AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */ - AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00) - AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE8(karatblz_gfxbank_w, 0xff00) - AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2") - AM_RANGE(0x0ff006, 0x0ff007) AM_READ_PORT("IN3") AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrollx_w) - AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff) - AM_RANGE(0x0ff00a, 0x0ff00b) AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w) - AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::karatblzbl_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x082000, 0x083fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x0a0000, 0x0affff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */ - AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */ - AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00) - AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE8(karatblz_gfxbank_w, 0xff00) - AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2") - AM_RANGE(0x0ff006, 0x0ff007) AM_READ_PORT("IN3") AM_WRITE8(karatblzbl_soundlatch_w, 0x00ff) - AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrollx_w) - AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff) - AM_RANGE(0x0ff00a, 0x0ff00b) AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w) - AM_RANGE(0x0ff400, 0x0ff403) AM_WRITENOP // GGA access -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::spinlbrk_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */ - AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0xffd000, 0xffd1ff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffe000, 0xffe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00) - AM_RANGE(0xfff000, 0xfff001) AM_WRITE8(spinlbrk_gfxbank_w, 0x00ff) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") - AM_RANGE(0xfff006, 0xfff007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) -// AM_RANGE(0xfff008, 0xfff009) - read when analog inputs are enabled -// AM_RANGE(0xfff00a, 0xfff00b) / - AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::turbofrc_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */ - AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */ - AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0x0fd000, 0x0fdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(turbofrc_flip_screen_w, 0x00ff) - AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0x0ff006, 0x0ff007) AM_READ8(pending_command_r, 0x00ff) - AM_RANGE(0x0ff006, 0x0ff007) AM_WRITE(aerofgt_bg2scrolly_w) - AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("IN2") - AM_RANGE(0x0ff008, 0x0ff00b) AM_WRITE(turbofrc_gfxbank_w) - AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITENOP /* related to bg2 (written together with the scroll registers) */ - AM_RANGE(0x0ff00e, 0x0ff00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::aerofgtb_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */ - AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */ - AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0") AM_WRITE8(turbofrc_flip_screen_w, 0x00ff) - AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1") AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0x0fe006, 0x0fe007) AM_READ8(pending_command_r, 0x00ff) - AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w) - AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2") - AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w) - AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) - AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::aerofgt_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1b0000, 0x1b07ff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ - AM_RANGE(0x1b0800, 0x1b0801) AM_RAM /* tracks watchdog state */ - AM_RANGE(0x1b0ff0, 0x1b0fff) AM_RAM /* stack area during boot */ - AM_RANGE(0x1b2000, 0x1b3fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x1b4000, 0x1b5fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x1c0000, 0x1c7fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x1d0000, 0x1d1fff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0xfef000, 0xffefff) AM_RAM /* work RAM */ - AM_RANGE(0xffff80, 0xffff87) AM_WRITE(aerofgt_gfxbank_w) - AM_RANGE(0xffff88, 0xffff89) AM_WRITE(aerofgt_bg1scrolly_w) /* + something else in the top byte */ - AM_RANGE(0xffff90, 0xffff91) AM_WRITE(aerofgt_bg2scrolly_w) /* + something else in the top byte */ - AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff) - AM_RANGE(0xffffc0, 0xffffc1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::aerfboot_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */ - AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */ - AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM //AM_SHARE("spriteram3") - AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0") - AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1") - AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1") - AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2") - AM_RANGE(0x0fe002, 0x0fe003) AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0x0fe004, 0x0fe005) AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w) - AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w) - AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP - AM_RANGE(0x0fe012, 0x0fe013) AM_WRITENOP // MSB = watchdog? - AM_RANGE(0x0fe400, 0x0fe403) AM_WRITENOP // GGA access - AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ - AM_RANGE(0x100000, 0x107fff) AM_WRITENOP - AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0x10c000, 0x117fff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::aerfboo2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */ - AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */ - AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0") - AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1") - AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1") - AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2") - AM_RANGE(0x0fe002, 0x0fe003) AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0x0fe004, 0x0fe005) AM_WRITE(aerofgt_bg2scrollx_w) - AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w) - AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w) - AM_RANGE(0x0fe006, 0x0fe007) AM_DEVREAD8("oki", okim6295_device, read, 0xff00) - AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) - AM_RANGE(0x0fe01e, 0x0fe01f) AM_WRITE(aerfboo2_okim6295_banking_w) -// AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP -// AM_RANGE(0x0fe012, 0x0fe013) AM_WRITE(aerfboot_soundlatch_w) - AM_RANGE(0x0fe400, 0x0fe403) AM_WRITENOP // GGA access - AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::wbbc97_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x500000, 0x50ffff) AM_RAM /* work RAM */ - AM_RANGE(0x600000, 0x605fff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0xa00000, 0xa3ffff) AM_RAM AM_SHARE("bitmapram") - AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w) - AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff00e, 0xfff00f) AM_WRITE(wbbc97_bitmap_enable_w) - AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::spinlbrk_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(spinlbrk_sh_bankswitch_w) - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::turbofrc_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w) - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::aerofgt_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::aerfboot_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(aerfboot_okim6295_banking_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::wbbc97_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xfc00, 0xfc00) AM_NOP - AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::karatblzbl_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::karatblzbl_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0x40, 0x40) AM_WRITE(karatblzbl_d7759_write_port_0_w) - AM_RANGE(0x80, 0x80) AM_WRITE(karatblzbl_d7759_reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::kickball_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aerofgt_state::kickball_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(aerofgt_state::oki_map) //only for aerfboot for now - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void aerofgt_state::pspikes_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* work RAM */ + map(0x200000, 0x203fff).ram().share("spriteram1"); + map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0xffc000, 0xffc3ff).writeonly().share("spriteram3"); + map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); + map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); +} + +void aerofgt_state::pspikesb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* work RAM */ + map(0x200000, 0x203fff).ram().share("spriteram1"); + map(0xc04000, 0xc04001).nopw(); + map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0xffc000, 0xffcbff).ram().share("spriteram3"); + map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w)); + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::pspikesb_oki_banking_w)); + map(0xfff400, 0xfff403).nopw(); // GGA access +} + +void aerofgt_state::spikes91_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* work RAM */ + map(0x200000, 0x203fff).ram().share("spriteram1"); + map(0xc04000, 0xc04001).nopw(); + map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + + map(0xffa000, 0xffbfff).ram().share("tx_tilemap_ram"); + + map(0xffc000, 0xffcfff).ram().share("spriteram3"); + //map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w)); + map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); + map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0xfff006, 0xfff007).noprw(); + map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::spikes91_lookup_w)); +} + +void aerofgt_state::pspikesc_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* work RAM */ + map(0x200000, 0x203fff).ram().share("spriteram1"); + map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0xffc000, 0xffcbff).ram().share("spriteram3"); + map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); + map(0xfff004, 0xfff005).portr("DSW"); + map(0xfff004, 0xfff005).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xfff400, 0xfff403).nopw(); // GGA access +} + +void aerofgt_state::kickball_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* work RAM */ + map(0x200000, 0x20ffff).ram().share("spriteram1"); + map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0xffc000, 0xffc3ff).writeonly().share("spriteram3"); + map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::kickball_gfxbank_w)); + map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0xfff400, 0xfff403).nopw(); // GGA access +} + +void aerofgt_state::karatblz_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x0a0000, 0x0affff).ram().share("spriteram1"); + map(0x0b0000, 0x0bffff).ram().share("spriteram2"); + map(0x0c0000, 0x0cffff).ram(); /* work RAM */ + map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ + map(0x0fc000, 0x0fc7ff).ram().share("spriteram3"); + map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0ff000, 0x0ff001).portr("IN0"); + map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w)); + map(0x0ff002, 0x0ff003).portr("IN1"); + map(0x0ff002, 0x0ff002).w(this, FUNC(aerofgt_state::karatblz_gfxbank_w)); + map(0x0ff004, 0x0ff005).portr("IN2"); + map(0x0ff006, 0x0ff007).portr("IN3"); + map(0x0ff007, 0x0ff007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w)); + map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r)); + map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); + map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); +} + +void aerofgt_state::karatblzbl_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x0a0000, 0x0affff).ram().share("spriteram1"); + map(0x0b0000, 0x0bffff).ram().share("spriteram2"); + map(0x0c0000, 0x0cffff).ram(); /* work RAM */ + map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ + map(0x0fc000, 0x0fc7ff).ram().share("spriteram3"); + map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0ff000, 0x0ff001).portr("IN0"); + map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w)); + map(0x0ff002, 0x0ff003).portr("IN1"); + map(0x0ff002, 0x0ff002).w(this, FUNC(aerofgt_state::karatblz_gfxbank_w)); + map(0x0ff004, 0x0ff005).portr("IN2"); + map(0x0ff006, 0x0ff007).portr("IN3"); + map(0x0ff007, 0x0ff007).w(this, FUNC(aerofgt_state::karatblzbl_soundlatch_w)); + map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w)); + map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r)); + map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); + map(0x0ff400, 0x0ff403).nopw(); // GGA access +} + +void aerofgt_state::spinlbrk_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0xff8000, 0xffbfff).ram(); /* work RAM */ + map(0xffc000, 0xffc7ff).ram().share("spriteram3"); + map(0xffd000, 0xffd1ff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff000, 0xfff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w)); + map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::spinlbrk_gfxbank_w)); + map(0xfff002, 0xfff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0xfff004, 0xfff005).portr("DSW"); + map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +// map(0xfff008, 0xfff009); - read when analog inputs are enabled +// map(0xfff00a, 0xfff00b); / + map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); +} + +void aerofgt_state::turbofrc_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x0bffff).rom(); + map(0x0c0000, 0x0cffff).ram(); /* work RAM */ + map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); + map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); + map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ + map(0x0fc000, 0x0fc7ff).ram().share("spriteram3"); + map(0x0fd000, 0x0fdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0ff000, 0x0ff001).portr("IN0"); + map(0x0ff001, 0x0ff001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w)); + map(0x0ff002, 0x0ff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0x0ff004, 0x0ff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0x0ff007, 0x0ff007).r(this, FUNC(aerofgt_state::pending_command_r)); + map(0x0ff006, 0x0ff007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); + map(0x0ff008, 0x0ff009).portr("IN2"); + map(0x0ff008, 0x0ff00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); + map(0x0ff00c, 0x0ff00d).nopw(); /* related to bg2 (written together with the scroll registers) */ + map(0x0ff00e, 0x0ff00e).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); +} + +void aerofgt_state::aerofgtb_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0cffff).ram(); /* work RAM */ + map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); + map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); + map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ + map(0x0fc000, 0x0fc7ff).ram().share("spriteram3"); + map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0fe000, 0x0fe001).portr("IN0"); + map(0x0fe001, 0x0fe001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w)); + map(0x0fe002, 0x0fe003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0x0fe004, 0x0fe005).portr("DSW1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0x0fe007, 0x0fe007).r(this, FUNC(aerofgt_state::pending_command_r)); + map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); + map(0x0fe008, 0x0fe009).portr("DSW2"); + map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); + map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0fe400, 0x0fe403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); + map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */ +} + +void aerofgt_state::aerofgt_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x1a0000, 0x1a07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x1b0000, 0x1b07ff).ram().share("rasterram"); /* used only for the scroll registers */ + map(0x1b0800, 0x1b0801).ram(); /* tracks watchdog state */ + map(0x1b0ff0, 0x1b0fff).ram(); /* stack area during boot */ + map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x1c0000, 0x1c7fff).ram().share("spriteram1"); + map(0x1d0000, 0x1d1fff).ram().share("spriteram3"); + map(0xfef000, 0xffefff).ram(); /* work RAM */ + map(0xffff80, 0xffff87).w(this, FUNC(aerofgt_state::aerofgt_gfxbank_w)); + map(0xffff88, 0xffff89).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); /* + something else in the top byte */ + map(0xffff90, 0xffff91).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); /* + something else in the top byte */ + map(0xffffa0, 0xffffbf).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff); + map(0xffffc1, 0xffffc1).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + +void aerofgt_state::aerfboot_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0cffff).ram(); /* work RAM */ + map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); + map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); + map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ + map(0x0fc000, 0x0fc7ff).ram(); //.share("spriteram3"); + map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0fe000, 0x0fe001).portr("IN0"); + map(0x0fe002, 0x0fe003).portr("IN1"); + map(0x0fe004, 0x0fe005).portr("DSW1"); + map(0x0fe008, 0x0fe009).portr("DSW2"); + map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); + map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); + map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0fe010, 0x0fe011).nopw(); + map(0x0fe012, 0x0fe013).nopw(); // MSB = watchdog? + map(0x0fe400, 0x0fe403).nopw(); // GGA access + map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */ + map(0x100000, 0x107fff).nopw(); + map(0x108000, 0x10bfff).ram().share("spriteram3"); + map(0x10c000, 0x117fff).nopw(); +} + +void aerofgt_state::aerfboo2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0cffff).ram(); /* work RAM */ + map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); + map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); + map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); + map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ + map(0x0fc000, 0x0fc7ff).ram().share("spriteram3"); + map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0fe000, 0x0fe001).portr("IN0"); + map(0x0fe002, 0x0fe003).portr("IN1"); + map(0x0fe004, 0x0fe005).portr("DSW1"); + map(0x0fe008, 0x0fe009).portr("DSW2"); + map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); + map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); + map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); + map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read)); + map(0x0fe00e, 0x0fe00e).w(m_oki, FUNC(okim6295_device::write)); + map(0x0fe01e, 0x0fe01f).w(this, FUNC(aerofgt_state::aerfboo2_okim6295_banking_w)); +// map(0x0fe010, 0x0fe011).nopw(); +// map(0x0fe012, 0x0fe013).w(this, FUNC(aerofgt_state::aerfboot_soundlatch_w)); + map(0x0fe400, 0x0fe403).nopw(); // GGA access + map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */ +} + +void aerofgt_state::wbbc97_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x500000, 0x50ffff).ram(); /* work RAM */ + map(0x600000, 0x605fff).ram().share("spriteram1"); + map(0xa00000, 0xa3ffff).ram().share("bitmapram"); + map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); + map(0xffc000, 0xffc3ff).writeonly().share("spriteram3"); + map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); + map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); + map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0xfff00e, 0xfff00f).w(this, FUNC(aerofgt_state::wbbc97_bitmap_enable_w)); + map(0xfff400, 0xfff403).nopw(); // GGA access +} + +void aerofgt_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("soundbank"); +} + +void aerofgt_state::spinlbrk_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(aerofgt_state::spinlbrk_sh_bankswitch_w)); + map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} + +void aerofgt_state::turbofrc_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(aerofgt_state::aerofgt_sh_bankswitch_w)); + map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} + +void aerofgt_state::aerofgt_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x04, 0x04).w(this, FUNC(aerofgt_state::aerofgt_sh_bankswitch_w)); + map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void aerofgt_state::aerfboot_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(aerofgt_state::aerfboot_okim6295_banking_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void aerofgt_state::wbbc97_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write)); + map(0xfc00, 0xfc00).noprw(); + map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void aerofgt_state::karatblzbl_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); //.w("soundlatch2", FUNC(generic_latch_8_device::write)); +} + +void aerofgt_state::karatblzbl_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x40, 0x40).w(this, FUNC(aerofgt_state::karatblzbl_d7759_write_port_0_w)); + map(0x80, 0x80).w(this, FUNC(aerofgt_state::karatblzbl_d7759_reset_w)); +} + +void aerofgt_state::kickball_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void aerofgt_state::kickball_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xc0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} + + +void aerofgt_state::oki_map(address_map &map) +{ //only for aerfboot for now + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( pspikes ) PORT_START("IN0") diff --git a/src/mame/drivers/agat.cpp b/src/mame/drivers/agat.cpp index 579eb836cbb..43a5f93b84f 100644 --- a/src/mame/drivers/agat.cpp +++ b/src/mame/drivers/agat.cpp @@ -690,29 +690,31 @@ WRITE8_MEMBER(agat7_state::agat7_ram_w) * and are supported only on motherboards with 32K onboard. * all extra RAM (onboard or addon) is accessible via 16K window at 0x8000. */ -ADDRESS_MAP_START(agat7_state::agat7_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xbfff) AM_READWRITE(agat7_ram_r, agat7_ram_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0xf) AM_READ(keyb_data_r) AM_WRITENOP - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0xf) AM_READWRITE(keyb_strobe_r, keyb_strobe_w) - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0xf) AM_READWRITE(cassette_toggle_r, cassette_toggle_w) - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0xf) AM_READWRITE(speaker_toggle_r, speaker_toggle_w) - AM_RANGE(0xc040, 0xc040) AM_MIRROR(0xf) AM_READWRITE(interrupts_on_r, interrupts_on_w) - AM_RANGE(0xc050, 0xc050) AM_MIRROR(0xf) AM_READWRITE(interrupts_off_r, interrupts_off_w) - AM_RANGE(0xc060, 0xc067) AM_MIRROR(0x8) AM_READ(flags_r) AM_WRITENOP - AM_RANGE(0xc070, 0xc070) AM_MIRROR(0xf) AM_READWRITE(controller_strobe_r, controller_strobe_w) - AM_RANGE(0xc080, 0xc0ef) AM_READWRITE(c080_r, c080_w) - AM_RANGE(0xc0f0, 0xc0ff) AM_READWRITE(agat7_membank_r, agat7_membank_w) - AM_RANGE(0xc100, 0xc6ff) AM_READWRITE(c100_r, c100_w) - AM_RANGE(0xc700, 0xc7ff) AM_DEVREADWRITE("a7video", agat7video_device, read, write) - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(c800_r, c800_w) - AM_RANGE(0xd000, 0xffff) AM_DEVICE(A7_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(agat7_state::inhbank_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(inh_w) - AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w) -ADDRESS_MAP_END +void agat7_state::agat7_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xbfff).rw(this, FUNC(agat7_state::agat7_ram_r), FUNC(agat7_state::agat7_ram_w)); + map(0xc000, 0xc000).mirror(0xf).r(this, FUNC(agat7_state::keyb_data_r)).nopw(); + map(0xc010, 0xc010).mirror(0xf).rw(this, FUNC(agat7_state::keyb_strobe_r), FUNC(agat7_state::keyb_strobe_w)); + map(0xc020, 0xc020).mirror(0xf).rw(this, FUNC(agat7_state::cassette_toggle_r), FUNC(agat7_state::cassette_toggle_w)); + map(0xc030, 0xc030).mirror(0xf).rw(this, FUNC(agat7_state::speaker_toggle_r), FUNC(agat7_state::speaker_toggle_w)); + map(0xc040, 0xc040).mirror(0xf).rw(this, FUNC(agat7_state::interrupts_on_r), FUNC(agat7_state::interrupts_on_w)); + map(0xc050, 0xc050).mirror(0xf).rw(this, FUNC(agat7_state::interrupts_off_r), FUNC(agat7_state::interrupts_off_w)); + map(0xc060, 0xc067).mirror(0x8).r(this, FUNC(agat7_state::flags_r)).nopw(); + map(0xc070, 0xc070).mirror(0xf).rw(this, FUNC(agat7_state::controller_strobe_r), FUNC(agat7_state::controller_strobe_w)); + map(0xc080, 0xc0ef).rw(this, FUNC(agat7_state::c080_r), FUNC(agat7_state::c080_w)); + map(0xc0f0, 0xc0ff).rw(this, FUNC(agat7_state::agat7_membank_r), FUNC(agat7_state::agat7_membank_w)); + map(0xc100, 0xc6ff).rw(this, FUNC(agat7_state::c100_r), FUNC(agat7_state::c100_w)); + map(0xc700, 0xc7ff).rw("a7video", FUNC(agat7video_device::read), FUNC(agat7video_device::write)); + map(0xc800, 0xcfff).rw(this, FUNC(agat7_state::c800_r), FUNC(agat7_state::c800_w)); + map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void agat7_state::inhbank_map(address_map &map) +{ + map(0x0000, 0x2fff).rom().region("maincpu", 0x1000).w(this, FUNC(agat7_state::inh_w)); + map(0x3000, 0x5fff).rw(this, FUNC(agat7_state::inh_r), FUNC(agat7_state::inh_w)); +} /*************************************************************************** KEYBOARD diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp index 5ea1a041410..d9c34e4688b 100644 --- a/src/mame/drivers/aim65.cpp +++ b/src/mame/drivers/aim65.cpp @@ -38,20 +38,21 @@ Bugs ***************************************************************************/ /* Note: RAM is mapped dynamically in machine/aim65.c */ -ADDRESS_MAP_START(aim65_state::aim65_mem) - AM_RANGE( 0x1000, 0x3fff ) AM_NOP /* User available expansions */ - AM_RANGE( 0x4000, 0x7fff ) AM_ROM /* 4 ROM sockets in 16K PROM/ROM module */ - AM_RANGE( 0x8000, 0x9fff ) AM_NOP /* User available expansions */ - AM_RANGE( 0xa000, 0xa00f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) // user via - AM_RANGE( 0xa400, 0xa47f ) AM_DEVICE("riot", mos6532_new_device, ram_map) - AM_RANGE( 0xa480, 0xa497 ) AM_DEVICE("riot", mos6532_new_device, io_map) - AM_RANGE( 0xa498, 0xa7ff ) AM_NOP /* Not available */ - AM_RANGE( 0xa800, 0xa80f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) // system via - AM_RANGE( 0xac00, 0xac03 ) AM_DEVREADWRITE("pia6821", pia6821_device, read, write) - AM_RANGE( 0xac04, 0xac43 ) AM_RAM /* PIA RAM */ - AM_RANGE( 0xac44, 0xafff ) AM_NOP /* Not available */ - AM_RANGE( 0xb000, 0xffff ) AM_ROM /* 5 ROM sockets */ -ADDRESS_MAP_END +void aim65_state::aim65_mem(address_map &map) +{ + map(0x1000, 0x3fff).noprw(); /* User available expansions */ + map(0x4000, 0x7fff).rom(); /* 4 ROM sockets in 16K PROM/ROM module */ + map(0x8000, 0x9fff).noprw(); /* User available expansions */ + map(0xa000, 0xa00f).mirror(0x3f0).rw("via6522_1", FUNC(via6522_device::read), FUNC(via6522_device::write)); // user via + map(0xa400, 0xa47f).m("riot", FUNC(mos6532_new_device::ram_map)); + map(0xa480, 0xa497).m("riot", FUNC(mos6532_new_device::io_map)); + map(0xa498, 0xa7ff).noprw(); /* Not available */ + map(0xa800, 0xa80f).mirror(0x3f0).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); // system via + map(0xac00, 0xac03).rw("pia6821", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xac04, 0xac43).ram(); /* PIA RAM */ + map(0xac44, 0xafff).noprw(); /* Not available */ + map(0xb000, 0xffff).rom(); /* 5 ROM sockets */ +} /*************************************************************************** diff --git a/src/mame/drivers/aim65_40.cpp b/src/mame/drivers/aim65_40.cpp index ac07ed6be62..5b45491fa0d 100644 --- a/src/mame/drivers/aim65_40.cpp +++ b/src/mame/drivers/aim65_40.cpp @@ -91,16 +91,17 @@ private: ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(aim65_40_state::aim65_40_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0xa000, 0xcfff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xf000, 0xff7f) AM_ROM AM_REGION("roms", 0x3000) - AM_RANGE(0xffa0, 0xffaf) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write) - AM_RANGE(0xffb0, 0xffbf) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write) - AM_RANGE(0xffc0, 0xffcf) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write) - AM_RANGE(0xffd0, 0xffd3) AM_DEVREADWRITE(M6551_TAG, mos6551_device, read, write) - AM_RANGE(0xffe0, 0xffff) AM_ROM AM_REGION("roms", 0x3fe0) -ADDRESS_MAP_END +void aim65_40_state::aim65_40_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram(); + map(0xa000, 0xcfff).rom().region("roms", 0); + map(0xf000, 0xff7f).rom().region("roms", 0x3000); + map(0xffa0, 0xffaf).rw(M6522_0_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xffb0, 0xffbf).rw(M6522_1_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xffc0, 0xffcf).rw(M6522_2_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xffd0, 0xffd3).rw(M6551_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xffe0, 0xffff).rom().region("roms", 0x3fe0); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp index 0cf04754f2f..994d6eb4a19 100644 --- a/src/mame/drivers/airbustr.cpp +++ b/src/mame/drivers/airbustr.cpp @@ -305,61 +305,67 @@ WRITE8_MEMBER(airbustr_state::coin_counter_w) } /* Memory Maps */ -ADDRESS_MAP_START(airbustr_state::master_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("masterbank") - AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_r, spriteram_w) - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("devram") // shared with protection device - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(airbustr_state::master_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(master_bankswitch_w) - AM_RANGE(0x01, 0x01) AM_WRITENOP // ??? - AM_RANGE(0x02, 0x02) AM_WRITE(master_nmi_trigger_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(airbustr_state::slave_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank") - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd000, 0xd5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xd600, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(airbustr_state::slave_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(slave_bankswitch_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x04, 0x0c) AM_WRITE(scrollregs_w) - AM_RANGE(0x0e, 0x0e) AM_READ(soundcommand_status_r) - AM_RANGE(0x20, 0x20) AM_READ_PORT("P1") - AM_RANGE(0x22, 0x22) AM_READ_PORT("P2") - AM_RANGE(0x24, 0x24) AM_READ_PORT("SYSTEM") - AM_RANGE(0x28, 0x28) AM_WRITE(coin_counter_w) - AM_RANGE(0x38, 0x38) AM_WRITENOP // irq ack / irq mask -ADDRESS_MAP_END - -ADDRESS_MAP_START(airbustr_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") - AM_RANGE(0xc000, 0xdfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(airbustr_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void airbustr_state::master_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("masterbank"); + map(0xc000, 0xcfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w)); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().share("devram"); // shared with protection device + map(0xf000, 0xffff).ram().share("share1"); +} + +void airbustr_state::master_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(airbustr_state::master_bankswitch_w)); + map(0x01, 0x01).nopw(); // ??? + map(0x02, 0x02).w(this, FUNC(airbustr_state::master_nmi_trigger_w)); +} + +void airbustr_state::slave_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("slavebank"); + map(0xc000, 0xc3ff).ram().w(this, FUNC(airbustr_state::videoram2_w)).share("videoram2"); + map(0xc400, 0xc7ff).ram().w(this, FUNC(airbustr_state::colorram2_w)).share("colorram2"); + map(0xc800, 0xcbff).ram().w(this, FUNC(airbustr_state::videoram_w)).share("videoram"); + map(0xcc00, 0xcfff).ram().w(this, FUNC(airbustr_state::colorram_w)).share("colorram"); + map(0xd000, 0xd5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd600, 0xdfff).ram(); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("share1"); +} + +void airbustr_state::slave_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(airbustr_state::slave_bankswitch_w)); + map(0x02, 0x02).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x04, 0x0c).w(this, FUNC(airbustr_state::scrollregs_w)); + map(0x0e, 0x0e).r(this, FUNC(airbustr_state::soundcommand_status_r)); + map(0x20, 0x20).portr("P1"); + map(0x22, 0x22).portr("P2"); + map(0x24, 0x24).portr("SYSTEM"); + map(0x28, 0x28).w(this, FUNC(airbustr_state::coin_counter_w)); + map(0x38, 0x38).nopw(); // irq ack / irq mask +} + +void airbustr_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("audiobank"); + map(0xc000, 0xdfff).ram(); +} + +void airbustr_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(airbustr_state::sound_bankswitch_w)); + map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x04, 0x04).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp index fce34580848..0c4f1107928 100644 --- a/src/mame/drivers/airraid.cpp +++ b/src/mame/drivers/airraid.cpp @@ -244,58 +244,62 @@ WRITE8_MEMBER(airraid_state::bank_w) -ADDRESS_MAP_START(airraid_state::airraid_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP // rld result write-back - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1") - AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w) +void airraid_state::airraid_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1").nopw(); // rld result write-back + map(0xc000, 0xc000).portr("IN0"); + map(0xc001, 0xc001).portr("IN1"); + map(0xc002, 0xc002).portr("IN2"); + map(0xc003, 0xc003).portr("DSW2"); + map(0xc004, 0xc004).portr("DSW1"); + map(0xc500, 0xc500).w(this, FUNC(airraid_state::cshooter_c500_w)); // AM_RANGE(0xc600, 0xc600) AM_WRITE(cshooter_c600_w) // see notes - AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w) + map(0xc700, 0xc700).w(this, FUNC(airraid_state::cshooter_c700_w)); // AM_RANGE(0xc801, 0xc801) AM_WRITE(cshooter_c801_w) // see notes - AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, txram_w) AM_SHARE("txram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xda00, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xdc00, 0xdc0f) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, vregs_w) AM_SHARE("vregs") + map(0xd000, 0xd7ff).ram().w(m_airraid_video, FUNC(airraid_video_device::txram_w)).share("txram"); + map(0xd800, 0xd8ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xda00, 0xdaff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xdc00, 0xdc0f).ram().w(m_airraid_video, FUNC(airraid_video_device::vregs_w)).share("vregs"); // AM_RANGE(0xdc10, 0xdc10) AM_RAM - AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w) + map(0xdc11, 0xdc11).w(this, FUNC(airraid_state::bank_w)); // AM_RANGE(0xdc19, 0xdc19) AM_RAM // AM_RANGE(0xdc1e, 0xdc1e) AM_RAM // AM_RANGE(0xdc1f, 0xdc1f) AM_RAM - AM_RANGE(0xde00, 0xde0f) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_r, main_w) - AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(airraid_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(airraid_state::airraid_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(airraid_state::airraid_sound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000) -ADDRESS_MAP_END + map(0xde00, 0xde0f).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)); + map(0xe000, 0xfdff).ram().share("mainram"); + map(0xfe00, 0xffff).ram().share("sprite_ram"); +} + +void airraid_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + +void airraid_state::airraid_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x8000, 0xffff).rom(); +} + +void airraid_state::airraid_sound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); + map(0x8000, 0xffff).rom().region("audiocpu", 0x8000); +} static INPUT_PORTS_START( airraid ) diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp index fb4dd2cc4d6..af4d41e79b4 100644 --- a/src/mame/drivers/ajax.cpp +++ b/src/mame/drivers/ajax.cpp @@ -23,39 +23,42 @@ #include "speaker.h" -ADDRESS_MAP_START(ajax_state::ajax_main_map) - AM_RANGE(0x0000, 0x01c0) AM_READWRITE(ls138_f10_r, ls138_f10_w) /* bankswitch + sound command + FIRQ command */ - AM_RANGE(0x0800, 0x0807) AM_DEVREADWRITE("k051960", k051960_device, k051937_r, k051937_w) /* sprite control registers */ - AM_RANGE(0x0c00, 0x0fff) AM_DEVREADWRITE("k051960", k051960_device, k051960_r, k051960_w) /* sprite RAM 2128SL at J7 */ - AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")/* palette */ - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("share1") /* shared RAM with the 6809 */ - AM_RANGE(0x4000, 0x5fff) AM_RAM /* RAM 6264L at K10 */ - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM N11 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ajax_state::ajax_sub_map) - AM_RANGE(0x0000, 0x07ff) AM_DEVREADWRITE("k051316", k051316_device, read, write) /* 051316 zoom/rotation layer */ - AM_RANGE(0x0800, 0x080f) AM_DEVWRITE("k051316", k051316_device, ctrl_w) /* 051316 control registers */ - AM_RANGE(0x1000, 0x17ff) AM_DEVREAD("k051316", k051316_device, rom_r) /* 051316 (ROM test) */ - AM_RANGE(0x1800, 0x1800) AM_WRITE(bankswitch_2_w) /* bankswitch control */ - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("share1") /* shared RAM with the 052001 */ - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) /* video RAM + color RAM + video registers */ - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank") /* banked ROM */ - AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION ("sub", 0x12000) /* ROM I16 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ajax_state::ajax_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM F6 */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM 2128SL at D16 */ - AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */ - AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) /* 007232 registers (chip 1) */ - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 registers (chip 2) */ - AM_RANGE(0xb80c, 0xb80c) AM_WRITE(k007232_extvol_w) /* extra volume, goes to the 007232 w/ A11 */ +void ajax_state::ajax_main_map(address_map &map) +{ + map(0x0000, 0x01c0).rw(this, FUNC(ajax_state::ls138_f10_r), FUNC(ajax_state::ls138_f10_w)); /* bankswitch + sound command + FIRQ command */ + map(0x0800, 0x0807).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); /* sprite control registers */ + map(0x0c00, 0x0fff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); /* sprite RAM 2128SL at J7 */ + map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");/* palette */ + map(0x2000, 0x3fff).ram().share("share1"); /* shared RAM with the 6809 */ + map(0x4000, 0x5fff).ram(); /* RAM 6264L at K10 */ + map(0x6000, 0x7fff).bankr("mainbank"); /* banked ROM */ + map(0x8000, 0xffff).rom(); /* ROM N11 */ +} + +void ajax_state::ajax_sub_map(address_map &map) +{ + map(0x0000, 0x07ff).rw(m_k051316, FUNC(k051316_device::read), FUNC(k051316_device::write)); /* 051316 zoom/rotation layer */ + map(0x0800, 0x080f).w(m_k051316, FUNC(k051316_device::ctrl_w)); /* 051316 control registers */ + map(0x1000, 0x17ff).r(m_k051316, FUNC(k051316_device::rom_r)); /* 051316 (ROM test) */ + map(0x1800, 0x1800).w(this, FUNC(ajax_state::bankswitch_2_w)); /* bankswitch control */ + map(0x2000, 0x3fff).ram().share("share1"); /* shared RAM with the 052001 */ + map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); /* video RAM + color RAM + video registers */ + map(0x8000, 0x9fff).bankr("subbank"); /* banked ROM */ + map(0xa000, 0xffff).rom().region("sub", 0x12000); /* ROM I16 */ +} + +void ajax_state::ajax_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM F6 */ + map(0x8000, 0x87ff).ram(); /* RAM 2128SL at D16 */ + map(0x9000, 0x9000).w(this, FUNC(ajax_state::sound_bank_w)); /* 007232 bankswitch */ + map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 registers (chip 1) */ + map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 registers (chip 2) */ + map(0xb80c, 0xb80c).w(this, FUNC(ajax_state::k007232_extvol_w)); /* extra volume, goes to the 007232 w/ A11 */ /* selecting a different latch for the external port */ - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */ + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( ajax ) diff --git a/src/mame/drivers/akaiax80.cpp b/src/mame/drivers/akaiax80.cpp index 81286ef059b..6eba143c276 100644 --- a/src/mame/drivers/akaiax80.cpp +++ b/src/mame/drivers/akaiax80.cpp @@ -70,24 +70,25 @@ void ax80_state::machine_reset() { } -ADDRESS_MAP_START(ax80_state::ax80_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0) // internal ROM - AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT0_TAG, pit8253_device, read, write) // IC20 - AM_RANGE(0x1010, 0x1013) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT1_TAG, pit8253_device, read, write) // IC21 - AM_RANGE(0x1020, 0x1023) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT2_TAG, pit8253_device, read, write) // IC22 - AM_RANGE(0x1030, 0x1033) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT3_TAG, pit8253_device, read, write) // IC23 - AM_RANGE(0x1040, 0x1043) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT4_TAG, pit8253_device, read, write) // IC24 - AM_RANGE(0x1050, 0x1053) AM_MIRROR(0x000c) AM_DEVREADWRITE(PIT5_TAG, pit8253_device, read, write) // IC25 - AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x000e) AM_DEVREADWRITE("kdc", i8279_device, data_r, data_w) // IC11 - AM_RANGE(0x1061, 0x1061) AM_MIRROR(0x000e) AM_DEVREADWRITE("kdc", i8279_device, status_r, cmd_w) // IC11 - AM_RANGE(0x1070, 0x1073) AM_MIRROR(0x000c) AM_DEVREADWRITE(PPI1_TAG, i8255_device, read, write) // IC10 +void ax80_state::ax80_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("maincpu", 0); // internal ROM + map(0x1000, 0x1003).mirror(0x000c).rw(PIT0_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC20 + map(0x1010, 0x1013).mirror(0x000c).rw(PIT1_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC21 + map(0x1020, 0x1023).mirror(0x000c).rw(PIT2_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC22 + map(0x1030, 0x1033).mirror(0x000c).rw(PIT3_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC23 + map(0x1040, 0x1043).mirror(0x000c).rw(PIT4_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC24 + map(0x1050, 0x1053).mirror(0x000c).rw(PIT5_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // IC25 + map(0x1060, 0x1060).mirror(0x000e).rw("kdc", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); // IC11 + map(0x1061, 0x1061).mirror(0x000e).rw("kdc", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); // IC11 + map(0x1070, 0x1073).mirror(0x000c).rw(PPI1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); // IC10 //AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0dfe) AM_DEVREADWRITE(PPI0_TAG, i8255_device, read, write) // IC9 - A9 connects to A1-pin //AM_RANGE(0x2200, 0x2201) AM_MIRROR(0x0dfe) AM_DEVREADWRITE(PPI0_TAG, i8255_device, read, write) // IC9 - A9 connects to A1-pin //AM_RANGE(0x3000, 0x3fff) // steers audio to the various voice channels - AM_RANGE(0x4000, 0x5fff) AM_MIRROR(0x2000) AM_ROM AM_REGION("maincpu", 0x1000) // external program EPROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM -ADDRESS_MAP_END + map(0x4000, 0x5fff).mirror(0x2000).rom().region("maincpu", 0x1000); // external program EPROM + map(0x8000, 0x87ff).mirror(0x3800).ram(); + map(0xc000, 0xc7ff).mirror(0x3800).ram(); +} MACHINE_CONFIG_START(ax80_state::ax80) MCFG_CPU_ADD("maincpu", UPD7810, XTAL(12'000'000)) diff --git a/src/mame/drivers/albazc.cpp b/src/mame/drivers/albazc.cpp index a14e5560015..c4eaf90ae97 100644 --- a/src/mame/drivers/albazc.cpp +++ b/src/mame/drivers/albazc.cpp @@ -181,23 +181,24 @@ WRITE8_MEMBER(albazc_state::albazc_vregs_w) /* main cpu */ -ADDRESS_MAP_START(albazc_state::hanaroku_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_SHARE("spriteram3") - AM_RANGE(0xa200, 0xa2ff) AM_WRITENOP // ??? written once during P.O.S.T. - AM_RANGE(0xa300, 0xa304) AM_WRITE(albazc_vregs_w) // ??? - AM_RANGE(0xb000, 0xb000) AM_WRITENOP // ??? always 0x40 - AM_RANGE(0xc000, 0xc3ff) AM_RAM // main ram - AM_RANGE(0xc400, 0xc4ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE(hanaroku_out_0_w) - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE(hanaroku_out_1_w) - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW3") AM_WRITE(hanaroku_out_2_w) -ADDRESS_MAP_END +void albazc_state::hanaroku_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("spriteram1"); + map(0x9000, 0x97ff).ram().share("spriteram2"); + map(0xa000, 0xa1ff).ram().share("spriteram3"); + map(0xa200, 0xa2ff).nopw(); // ??? written once during P.O.S.T. + map(0xa300, 0xa304).w(this, FUNC(albazc_state::albazc_vregs_w)); // ??? + map(0xb000, 0xb000).nopw(); // ??? always 0x40 + map(0xc000, 0xc3ff).ram(); // main ram + map(0xc400, 0xc4ff).ram().share("nvram"); + map(0xd000, 0xd000).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xe000, 0xe000).portr("IN0").w(this, FUNC(albazc_state::hanaroku_out_0_w)); + map(0xe001, 0xe001).portr("IN1"); + map(0xe002, 0xe002).portr("IN2").w(this, FUNC(albazc_state::hanaroku_out_1_w)); + map(0xe004, 0xe004).portr("DSW3").w(this, FUNC(albazc_state::hanaroku_out_2_w)); +} static INPUT_PORTS_START( hanaroku ) diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp index 32d4c811c42..10e443d1618 100644 --- a/src/mame/drivers/albazg.cpp +++ b/src/mame/drivers/albazg.cpp @@ -216,28 +216,30 @@ WRITE8_MEMBER(albazg_state::yumefuda_output_w) /***************************************************************************************/ -ADDRESS_MAP_START(albazg_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa7fc, 0xa7fc) AM_WRITE(prot_lock_w) - AM_RANGE(0xa7ff, 0xa7ff) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xaf80, 0xafff) AM_READWRITE(custom_ram_r, custom_ram_w) AM_SHARE("cus_ram") - AM_RANGE(0xb000, 0xb07f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xb080, 0xb0ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(yumefuda_vram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(yumefuda_cram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(albazg_state::port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void albazg_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa7fc, 0xa7fc).w(this, FUNC(albazg_state::prot_lock_w)); + map(0xa7ff, 0xa7ff).portw("EEPROMOUT"); + map(0xaf80, 0xafff).rw(this, FUNC(albazg_state::custom_ram_r), FUNC(albazg_state::custom_ram_w)).share("cus_ram"); + map(0xb000, 0xb07f).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xb080, 0xb0ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xc000, 0xc3ff).ram().w(this, FUNC(albazg_state::yumefuda_vram_w)).share("videoram"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(albazg_state::yumefuda_cram_w)).share("colorram"); + map(0xe000, 0xffff).ram(); +} + +void albazg_state::port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x01, 0x01).w("crtc", FUNC(mc6845_device::register_w)); + map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x80, 0x83).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} /***************************************************************************************/ diff --git a/src/mame/drivers/aleck64.cpp b/src/mame/drivers/aleck64.cpp index 153eb9f6c81..0e1332300fe 100644 --- a/src/mame/drivers/aleck64.cpp +++ b/src/mame/drivers/aleck64.cpp @@ -315,28 +315,29 @@ READ32_MEMBER(aleck64_state::aleck_dips_r) 4MB @ 0xd0800000 - 0xd0bfffff doncdoon, hipai, kurufev, twrshaft, srmvs : unused */ -ADDRESS_MAP_START(aleck64_state::n64_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM /*AM_MIRROR(0xc0000000)*/ AM_SHARE("rdram") // RDRAM - - AM_RANGE(0x03f00000, 0x03f00027) AM_DEVREADWRITE("rcp", n64_periphs, rdram_reg_r, rdram_reg_w) - AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") // RSP DMEM - AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") // RSP IMEM - AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rcp", n64_periphs, sp_reg_r, sp_reg_w) // RSP - AM_RANGE(0x04100000, 0x041fffff) AM_DEVREADWRITE("rcp", n64_periphs, dp_reg_r, dp_reg_w) // RDP - AM_RANGE(0x04300000, 0x043fffff) AM_DEVREADWRITE("rcp", n64_periphs, mi_reg_r, mi_reg_w) // MIPS Interface - AM_RANGE(0x04400000, 0x044fffff) AM_DEVREADWRITE("rcp", n64_periphs, vi_reg_r, vi_reg_w) // Video Interface - AM_RANGE(0x04500000, 0x045fffff) AM_DEVREADWRITE("rcp", n64_periphs, ai_reg_r, ai_reg_w) // Audio Interface - AM_RANGE(0x04600000, 0x046fffff) AM_DEVREADWRITE("rcp", n64_periphs, pi_reg_r, pi_reg_w) // Peripheral Interface - AM_RANGE(0x04700000, 0x047fffff) AM_DEVREADWRITE("rcp", n64_periphs, ri_reg_r, ri_reg_w) // RDRAM Interface - AM_RANGE(0x04800000, 0x048fffff) AM_DEVREADWRITE("rcp", n64_periphs, si_reg_r, si_reg_w) // Serial Interface - AM_RANGE(0x10000000, 0x13ffffff) AM_ROM AM_REGION("user2", 0) // Cartridge - AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM - AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w) - - AM_RANGE(0xc0000000, 0xc07fffff) AM_RAM // SDRAM, Aleck 64 specific - - AM_RANGE(0xc0800000, 0xc0800fff) AM_READWRITE(aleck_dips_r,aleck_dips_w) -ADDRESS_MAP_END +void aleck64_state::n64_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram() /*.mirror(0xc0000000)*/ .share("rdram"); // RDRAM + + map(0x03f00000, 0x03f00027).rw("rcp", FUNC(n64_periphs::rdram_reg_r), FUNC(n64_periphs::rdram_reg_w)); + map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); // RSP DMEM + map(0x04001000, 0x04001fff).ram().share("rsp_imem"); // RSP IMEM + map(0x04040000, 0x040fffff).rw("rcp", FUNC(n64_periphs::sp_reg_r), FUNC(n64_periphs::sp_reg_w)); // RSP + map(0x04100000, 0x041fffff).rw("rcp", FUNC(n64_periphs::dp_reg_r), FUNC(n64_periphs::dp_reg_w)); // RDP + map(0x04300000, 0x043fffff).rw("rcp", FUNC(n64_periphs::mi_reg_r), FUNC(n64_periphs::mi_reg_w)); // MIPS Interface + map(0x04400000, 0x044fffff).rw("rcp", FUNC(n64_periphs::vi_reg_r), FUNC(n64_periphs::vi_reg_w)); // Video Interface + map(0x04500000, 0x045fffff).rw("rcp", FUNC(n64_periphs::ai_reg_r), FUNC(n64_periphs::ai_reg_w)); // Audio Interface + map(0x04600000, 0x046fffff).rw("rcp", FUNC(n64_periphs::pi_reg_r), FUNC(n64_periphs::pi_reg_w)); // Peripheral Interface + map(0x04700000, 0x047fffff).rw("rcp", FUNC(n64_periphs::ri_reg_r), FUNC(n64_periphs::ri_reg_w)); // RDRAM Interface + map(0x04800000, 0x048fffff).rw("rcp", FUNC(n64_periphs::si_reg_r), FUNC(n64_periphs::si_reg_w)); // Serial Interface + map(0x10000000, 0x13ffffff).rom().region("user2", 0); // Cartridge + map(0x1fc00000, 0x1fc007bf).rom().region("user1", 0); // PIF ROM + map(0x1fc007c0, 0x1fc007ff).rw("rcp", FUNC(n64_periphs::pif_ram_r), FUNC(n64_periphs::pif_ram_w)); + + map(0xc0000000, 0xc07fffff).ram(); // SDRAM, Aleck 64 specific + + map(0xc0800000, 0xc0800fff).rw(this, FUNC(aleck64_state::aleck_dips_r), FUNC(aleck64_state::aleck_dips_w)); +} /* E90 protection handlers @@ -369,19 +370,21 @@ WRITE16_MEMBER(aleck64_state::e90_prot_w) } } -ADDRESS_MAP_START(aleck64_state::e90_map) - AM_IMPORT_FROM( n64_map ) - AM_RANGE(0xd0000000, 0xd0000fff) AM_RAM AM_SHARE("e90vram")// x/y offsets - AM_RANGE(0xd0010000, 0xd0010fff) AM_RAM AM_SHARE("e90pal")// RGB555 palette - AM_RANGE(0xd0030000, 0xd003001f) AM_READWRITE16(e90_prot_r, e90_prot_w,0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aleck64_state::rsp_map) - AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("rsp_dmem") - AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("rsp_imem") - AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") - AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") -ADDRESS_MAP_END +void aleck64_state::e90_map(address_map &map) +{ + n64_map(map); + map(0xd0000000, 0xd0000fff).ram().share("e90vram");// x/y offsets + map(0xd0010000, 0xd0010fff).ram().share("e90pal");// RGB555 palette + map(0xd0030000, 0xd003001f).rw(this, FUNC(aleck64_state::e90_prot_r), FUNC(aleck64_state::e90_prot_w)); +} + +void aleck64_state::rsp_map(address_map &map) +{ + map(0x00000000, 0x00000fff).ram().share("rsp_dmem"); + map(0x00001000, 0x00001fff).ram().share("rsp_imem"); + map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); + map(0x04001000, 0x04001fff).ram().share("rsp_imem"); +} static INPUT_PORTS_START( aleck64 ) PORT_START("input") diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp index 515ad47d800..0b443f0085f 100644 --- a/src/mame/drivers/alesis.cpp +++ b/src/mame/drivers/alesis.cpp @@ -118,44 +118,49 @@ WRITE8_MEMBER( alesis_state::mmt8_p3_w ) m_cassette->output(data & 0x10 ? -1.0 : +1.0); } -ADDRESS_MAP_START(alesis_state::hr16_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_MIRROR(0x8000) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(alesis_state::hr16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0000) AM_READ(kb_r) - AM_RANGE(0x0002, 0x0002) AM_DEVWRITE("dm3ag", alesis_dm3ag_device, write) - AM_RANGE(0x0004, 0x0004) AM_WRITE(led_w) - AM_RANGE(0x0006, 0x0007) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) - AM_RANGE(0x0008, 0x0008) AM_WRITE(kb_matrix_w) - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alesis_state::sr16_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(alesis_state::sr16_io) +void alesis_state::hr16_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).mirror(0x8000).rom(); +} + +void alesis_state::hr16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0000).r(this, FUNC(alesis_state::kb_r)); + map(0x0002, 0x0002).w("dm3ag", FUNC(alesis_dm3ag_device::write)); + map(0x0004, 0x0004).w(this, FUNC(alesis_state::led_w)); + map(0x0006, 0x0007).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write)); + map(0x0008, 0x0008).w(this, FUNC(alesis_state::kb_matrix_w)); + map(0x8000, 0xffff).ram().share("nvram"); // 32Kx8 SRAM, (battery-backed) +} + +void alesis_state::sr16_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rom(); +} + +void alesis_state::sr16_io(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0000) AM_MIRROR(0xff) AM_DEVWRITE("dm3ag", alesis_dm3ag_device, write) - AM_RANGE(0x0200, 0x0200) AM_MIRROR(0xff) AM_WRITE(sr16_lcd_w) - AM_RANGE(0x0300, 0x0300) AM_MIRROR(0xff) AM_WRITE(kb_matrix_w) - AM_RANGE(0x0400, 0x0400) AM_MIRROR(0xff) AM_READ(kb_r) - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alesis_state::mmt8_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("nvram") // 2x32Kx8 SRAM, (battery-backed) - AM_RANGE(0xff02, 0xff02) AM_WRITE(track_led_w) - AM_RANGE(0xff04, 0xff04) AM_READWRITE(mmt8_led_r, mmt8_led_w) - AM_RANGE(0xff06, 0xff06) AM_WRITE(kb_matrix_w) - AM_RANGE(0xff08, 0xff09) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) - AM_RANGE(0xff0e, 0xff0e) AM_READNOP -ADDRESS_MAP_END + map(0x0000, 0x0000).mirror(0xff).w("dm3ag", FUNC(alesis_dm3ag_device::write)); + map(0x0200, 0x0200).mirror(0xff).w(this, FUNC(alesis_state::sr16_lcd_w)); + map(0x0300, 0x0300).mirror(0xff).w(this, FUNC(alesis_state::kb_matrix_w)); + map(0x0400, 0x0400).mirror(0xff).r(this, FUNC(alesis_state::kb_r)); + map(0x8000, 0xffff).ram().share("nvram"); // 32Kx8 SRAM, (battery-backed) +} + +void alesis_state::mmt8_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).ram().share("nvram"); // 2x32Kx8 SRAM, (battery-backed) + map(0xff02, 0xff02).w(this, FUNC(alesis_state::track_led_w)); + map(0xff04, 0xff04).rw(this, FUNC(alesis_state::mmt8_led_r), FUNC(alesis_state::mmt8_led_w)); + map(0xff06, 0xff06).w(this, FUNC(alesis_state::kb_matrix_w)); + map(0xff08, 0xff09).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write)); + map(0xff0e, 0xff0e).nopr(); +} /* Input ports */ static INPUT_PORTS_START( hr16 ) diff --git a/src/mame/drivers/alesis_qs.cpp b/src/mame/drivers/alesis_qs.cpp index 8a273db943d..527b33093de 100644 --- a/src/mame/drivers/alesis_qs.cpp +++ b/src/mame/drivers/alesis_qs.cpp @@ -43,10 +43,11 @@ static INPUT_PORTS_START( qs7 ) // PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("?") PORT_CODE(KEYCODE_) INPUT_PORTS_END -ADDRESS_MAP_START(qs_state::qs7_prog_map) +void qs_state::qs7_prog_map(address_map &map) +{ //ADDRESS_MAP_GLOBAL_MASK(0x3ffff) - AM_RANGE(0x00000, 0x3ffff) AM_ROM -ADDRESS_MAP_END + map(0x00000, 0x3ffff).rom(); +} MACHINE_CONFIG_START(qs_state::qs7) /* basic machine hardware */ diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp index 0676d6992cf..985b7e061c5 100644 --- a/src/mame/drivers/alg.cpp +++ b/src/mame/drivers/alg.cpp @@ -175,42 +175,47 @@ CUSTOM_INPUT_MEMBER(alg_state::lightgun_holster_r) * *************************************/ -ADDRESS_MAP_START(alg_state::overlay_512kb_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alg_state::a500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alg_state::main_map_r1) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */ - AM_RANGE(0xf54000, 0xf55fff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(alg_state::main_map_r2) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0xf00000, 0xf3ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */ - AM_RANGE(0xf7c000, 0xf7dfff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(alg_state::main_map_picmatic) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */ - AM_RANGE(0xf40000, 0xf41fff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void alg_state::overlay_512kb_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram"); + map(0x200000, 0x27ffff).rom().region("kickstart", 0); +} + +void alg_state::a500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(alg_state::cia_r), FUNC(alg_state::cia_w)); + map(0xc00000, 0xd7ffff).rw(this, FUNC(alg_state::custom_chip_r), FUNC(alg_state::custom_chip_w)); + map(0xd80000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(alg_state::custom_chip_r), FUNC(alg_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(alg_state::custom_chip_r), FUNC(alg_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(alg_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} + +void alg_state::main_map_r1(address_map &map) +{ + a500_mem(map); + map(0xf00000, 0xf1ffff).rom().region("user2", 0); /* Custom ROM */ + map(0xf54000, 0xf55fff).ram().share("nvram"); +} + +void alg_state::main_map_r2(address_map &map) +{ + a500_mem(map); + map(0xf00000, 0xf3ffff).rom().region("user2", 0); /* Custom ROM */ + map(0xf7c000, 0xf7dfff).ram().share("nvram"); +} + +void alg_state::main_map_picmatic(address_map &map) +{ + a500_mem(map); + map(0xf00000, 0xf1ffff).rom().region("user2", 0); /* Custom ROM */ + map(0xf40000, 0xf41fff).ram().share("nvram"); +} diff --git a/src/mame/drivers/alien.cpp b/src/mame/drivers/alien.cpp index 2e669dcb2c4..310f8bb6791 100644 --- a/src/mame/drivers/alien.cpp +++ b/src/mame/drivers/alien.cpp @@ -68,13 +68,14 @@ READ64_MEMBER( alien_state::test_r ) return machine().rand(); } -ADDRESS_MAP_START(alien_state::alien_map) - AM_RANGE(0x00000000, 0x0003ffff) AM_ROM - AM_RANGE(0x08000000, 0x08000007) AM_READ(test_r) //hangs if zero - AM_RANGE(0x0cfe0000, 0x0cffffff) AM_RAM - AM_RANGE(0x10000000, 0x13ffffff) AM_RAM - AM_RANGE(0x18000000, 0x1800000f) AM_READ(test_r) AM_WRITENOP -ADDRESS_MAP_END +void alien_state::alien_map(address_map &map) +{ + map(0x00000000, 0x0003ffff).rom(); + map(0x08000000, 0x08000007).r(this, FUNC(alien_state::test_r)); //hangs if zero + map(0x0cfe0000, 0x0cffffff).ram(); + map(0x10000000, 0x13ffffff).ram(); + map(0x18000000, 0x1800000f).r(this, FUNC(alien_state::test_r)).nopw(); +} diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp index 64f9d1928f7..57c96356273 100644 --- a/src/mame/drivers/aliens.cpp +++ b/src/mame/drivers/aliens.cpp @@ -85,33 +85,36 @@ WRITE8_MEMBER(aliens_state::k052109_051960_w) m_k051960->k051960_w(space, offset - 0x3c00, data); } -ADDRESS_MAP_START(aliens_state::aliens_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8) - AM_RANGE(0x0400, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") /* banked ROM */ - AM_RANGE(0x4000, 0x7fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - AM_RANGE(0x5f80, 0x5f80) AM_READ_PORT("DSW3") - AM_RANGE(0x5f81, 0x5f81) AM_READ_PORT("P1") - AM_RANGE(0x5f82, 0x5f82) AM_READ_PORT("P2") - AM_RANGE(0x5f83, 0x5f83) AM_READ_PORT("DSW2") - AM_RANGE(0x5f84, 0x5f84) AM_READ_PORT("DSW1") - AM_RANGE(0x5f88, 0x5f88) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(aliens_coin_counter_w) /* coin counters */ - AM_RANGE(0x5f8c, 0x5f8c) AM_WRITE(aliens_sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x28000) /* ROM e24_j02.bin */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(aliens_state::bank0000_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(aliens_state::aliens_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM g04_b03.bin */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) -ADDRESS_MAP_END +void aliens_state::aliens_map(address_map &map) +{ + map(0x0000, 0x03ff).m(m_bank0000, FUNC(address_map_bank_device::amap8)); + map(0x0400, 0x1fff).ram(); + map(0x2000, 0x3fff).bankr("rombank"); /* banked ROM */ + map(0x4000, 0x7fff).rw(this, FUNC(aliens_state::k052109_051960_r), FUNC(aliens_state::k052109_051960_w)); + map(0x5f80, 0x5f80).portr("DSW3"); + map(0x5f81, 0x5f81).portr("P1"); + map(0x5f82, 0x5f82).portr("P2"); + map(0x5f83, 0x5f83).portr("DSW2"); + map(0x5f84, 0x5f84).portr("DSW1"); + map(0x5f88, 0x5f88).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(aliens_state::aliens_coin_counter_w)); /* coin counters */ + map(0x5f8c, 0x5f8c).w(this, FUNC(aliens_state::aliens_sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x8000, 0xffff).rom().region("maincpu", 0x28000); /* ROM e24_j02.bin */ +} + +void aliens_state::bank0000_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void aliens_state::aliens_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM g04_b03.bin */ + map(0x8000, 0x87ff).ram(); /* RAM */ + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/alinvade.cpp b/src/mame/drivers/alinvade.cpp index 490e70d7914..bc08e181329 100644 --- a/src/mame/drivers/alinvade.cpp +++ b/src/mame/drivers/alinvade.cpp @@ -102,25 +102,26 @@ WRITE8_MEMBER(alinvade_state::irqmask_w) m_irqff = data; } -ADDRESS_MAP_START(alinvade_state::alinvade_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0400, 0x0bff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0dff) AM_RAM - AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_w) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("COIN") - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3") - AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN4") - AM_RANGE(0xa000, 0xa000) AM_WRITENOP //?? - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0xff0) AM_ROM AM_REGION("proms",0) - AM_RANGE(0xe000, 0xe3ff) AM_ROM - AM_RANGE(0xe400, 0xe400) AM_WRITE(sounden_w) - AM_RANGE(0xe800, 0xe800) AM_READWRITE(irqmask_r,irqmask_w) //?? - AM_RANGE(0xec00, 0xffff) AM_ROM -ADDRESS_MAP_END +void alinvade_state::alinvade_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0400, 0x0bff).ram().share("videoram"); + map(0x0c00, 0x0dff).ram(); + map(0x2000, 0x2000).w(this, FUNC(alinvade_state::sound_w)); + map(0x4000, 0x4000).portr("COIN"); + map(0x6000, 0x6000).portr("DSW"); + map(0x8000, 0x8000).portr("IN0"); + map(0x8001, 0x8001).portr("IN1"); + map(0x8002, 0x8002).portr("IN2"); + map(0x8003, 0x8003).portr("IN3"); + map(0x8004, 0x8004).portr("IN4"); + map(0xa000, 0xa000).nopw(); //?? + map(0xc000, 0xc00f).mirror(0xff0).rom().region("proms", 0); + map(0xe000, 0xe3ff).rom(); + map(0xe400, 0xe400).w(this, FUNC(alinvade_state::sounden_w)); + map(0xe800, 0xe800).rw(this, FUNC(alinvade_state::irqmask_r), FUNC(alinvade_state::irqmask_w)); //?? + map(0xec00, 0xffff).rom(); +} static INPUT_PORTS_START( alinvade ) diff --git a/src/mame/drivers/allied.cpp b/src/mame/drivers/allied.cpp index e4a7f6c3a8a..836c882bde7 100644 --- a/src/mame/drivers/allied.cpp +++ b/src/mame/drivers/allied.cpp @@ -110,18 +110,19 @@ private: }; -ADDRESS_MAP_START(allied_state::allied_map) - AM_RANGE(0x0000, 0x003f) AM_RAM // ic6 - AM_RANGE(0x0044, 0x0047) AM_DEVREADWRITE("ic2", pia6821_device, read, write) - AM_RANGE(0x0048, 0x004b) AM_DEVREADWRITE("ic1", pia6821_device, read, write) - AM_RANGE(0x0050, 0x0053) AM_DEVREADWRITE("ic7", pia6821_device, read, write) - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ic4", pia6821_device, read, write) - AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE("ic5", mos6530_device, read, write) - AM_RANGE(0x0840, 0x084f) AM_DEVREADWRITE("ic6", mos6530_device, read, write) - AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE("ic8", pia6821_device, read, write) - AM_RANGE(0x0100, 0x013f) AM_RAM // ic5 - AM_RANGE(0x1400, 0x1fff) AM_ROM -ADDRESS_MAP_END +void allied_state::allied_map(address_map &map) +{ + map(0x0000, 0x003f).ram(); // ic6 + map(0x0044, 0x0047).rw(m_ic2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0048, 0x004b).rw(m_ic1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0050, 0x0053).rw(m_ic7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0060, 0x0063).rw(m_ic4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0080, 0x008f).rw(m_ic5, FUNC(mos6530_device::read), FUNC(mos6530_device::write)); + map(0x0840, 0x084f).rw(m_ic6, FUNC(mos6530_device::read), FUNC(mos6530_device::write)); + map(0x00c0, 0x00c3).rw(m_ic8, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0100, 0x013f).ram(); // ic5 + map(0x1400, 0x1fff).rom(); +} static INPUT_PORTS_START( allied ) PORT_START("TEST") diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp index 5fce07c3f81..d52fba92347 100644 --- a/src/mame/drivers/alpha68k.cpp +++ b/src/mame/drivers/alpha68k.cpp @@ -644,83 +644,88 @@ READ16_MEMBER(alpha68k_state::alpha_V_trigger_r) /******************************************************************************/ -ADDRESS_MAP_START(alpha68k_state::kyros_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // main program - AM_RANGE(0x020000, 0x020fff) AM_RAM AM_SHARE("shared_ram") // work RAM - AM_RANGE(0x040000, 0x041fff) AM_RAM AM_SHARE("spriteram") // sprite RAM - AM_RANGE(0x060000, 0x060001) AM_RAM AM_SHARE("videoram") // MSB: watchdog, LSB: BGC - AM_RANGE(0x080000, 0x0801ff) AM_READWRITE(kyros_alpha_trigger_r, alpha_microcontroller_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0") - AM_RANGE(0x0e0000, 0x0e0001) AM_READWRITE(kyros_dip_r, kyros_sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::alpha68k_I_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // main program - AM_RANGE(0x080000, 0x083fff) AM_RAM // work RAM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // video RAM - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN3") AM_WRITENOP // LSB: DSW0, MSB: watchdog(?) - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("IN4") // LSB: DSW1 - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") // joy1, joy2 - AM_RANGE(0x340000, 0x340001) AM_READ_PORT("IN1") // coin, start, service - AM_RANGE(0x380000, 0x380001) AM_READ_PORT("IN2") AM_WRITE(paddlema_soundlatch_w) // LSB: sound latch write and RST38 trigger, joy3, joy4 -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::alpha68k_II_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x080000, 0x080001) AM_READ(control_1_r) /* Joysticks */ - AM_RANGE(0x080000, 0x080001) AM_WRITE(alpha68k_II_sound_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ(control_2_r) /* CN1 & Dip 1 */ - AM_RANGE(0x0c0000, 0x0c00ff) AM_WRITE(alpha68k_II_video_bank_w) - AM_RANGE(0x0c8000, 0x0c8001) AM_READ(control_3_r) /* Bottom of CN2 */ - AM_RANGE(0x0d0000, 0x0d0001) AM_READ(control_4_r) /* Top of CN1 & CN2 */ - AM_RANGE(0x0d8000, 0x0d8001) AM_READNOP /* IRQ ack? */ - AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* IRQ ack? */ - AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* watchdog? */ - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(alpha68k_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300000, 0x3001ff) AM_READWRITE(alpha_II_trigger_r, alpha_microcontroller_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x83ffff) AM_ROMBANK("bank8") -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::alpha68k_V_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x080000, 0x080001) AM_READWRITE(control_1_r, alpha68k_V_sound_w) /* Joysticks */ - AM_RANGE(0x0c0000, 0x0c0001) AM_READ(control_2_V_r) /* Dip 2 */ - AM_RANGE(0x0c0000, 0x0c00ff) AM_WRITE(alpha68k_V_video_control_w) - AM_RANGE(0x0d8000, 0x0d8001) AM_READNOP /* IRQ ack? */ - AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* IRQ ack? */ - AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* watchdog? */ - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(alpha68k_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300000, 0x303fff) AM_READ(alpha_V_trigger_r) - AM_RANGE(0x300000, 0x3001ff) AM_WRITE(alpha_microcontroller_w) - AM_RANGE(0x303e00, 0x303fff) AM_WRITE(alpha_microcontroller_w) /* Gang Wars mirror */ - AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x83ffff) AM_ROMBANK("bank8") -ADDRESS_MAP_END +void alpha68k_state::kyros_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); // main program + map(0x020000, 0x020fff).ram().share("shared_ram"); // work RAM + map(0x040000, 0x041fff).ram().share("spriteram"); // sprite RAM + map(0x060000, 0x060001).ram().share("videoram"); // MSB: watchdog, LSB: BGC + map(0x080000, 0x0801ff).rw(this, FUNC(alpha68k_state::kyros_alpha_trigger_r), FUNC(alpha68k_state::alpha_microcontroller_w)); + map(0x0c0000, 0x0c0001).portr("IN0"); + map(0x0e0000, 0x0e0001).rw(this, FUNC(alpha68k_state::kyros_dip_r), FUNC(alpha68k_state::kyros_sound_w)); +} + +void alpha68k_state::alpha68k_I_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // main program + map(0x080000, 0x083fff).ram(); // work RAM + map(0x100000, 0x103fff).ram().share("spriteram"); // video RAM + map(0x180000, 0x180001).portr("IN3").nopw(); // LSB: DSW0, MSB: watchdog(?) + map(0x180008, 0x180009).portr("IN4"); // LSB: DSW1 + map(0x300000, 0x300001).portr("IN0"); // joy1, joy2 + map(0x340000, 0x340001).portr("IN1"); // coin, start, service + map(0x380000, 0x380001).portr("IN2").w(this, FUNC(alpha68k_state::paddlema_soundlatch_w)); // LSB: sound latch write and RST38 trigger, joy3, joy4 +} + +void alpha68k_state::alpha68k_II_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x040fff).ram().share("shared_ram"); + map(0x080000, 0x080001).r(this, FUNC(alpha68k_state::control_1_r)); /* Joysticks */ + map(0x080000, 0x080001).w(this, FUNC(alpha68k_state::alpha68k_II_sound_w)); + map(0x0c0000, 0x0c0001).r(this, FUNC(alpha68k_state::control_2_r)); /* CN1 & Dip 1 */ + map(0x0c0000, 0x0c00ff).w(this, FUNC(alpha68k_state::alpha68k_II_video_bank_w)); + map(0x0c8000, 0x0c8001).r(this, FUNC(alpha68k_state::control_3_r)); /* Bottom of CN2 */ + map(0x0d0000, 0x0d0001).r(this, FUNC(alpha68k_state::control_4_r)); /* Top of CN1 & CN2 */ + map(0x0d8000, 0x0d8001).nopr(); /* IRQ ack? */ + map(0x0e0000, 0x0e0001).nopr(); /* IRQ ack? */ + map(0x0e8000, 0x0e8001).nopr(); /* watchdog? */ + map(0x100000, 0x100fff).ram().w(this, FUNC(alpha68k_state::alpha68k_videoram_w)).share("videoram"); + map(0x200000, 0x207fff).ram().share("spriteram"); + map(0x300000, 0x3001ff).rw(this, FUNC(alpha68k_state::alpha_II_trigger_r), FUNC(alpha68k_state::alpha_microcontroller_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x83ffff).bankr("bank8"); +} + +void alpha68k_state::alpha68k_V_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram().share("shared_ram"); + map(0x080000, 0x080001).rw(this, FUNC(alpha68k_state::control_1_r), FUNC(alpha68k_state::alpha68k_V_sound_w)); /* Joysticks */ + map(0x0c0000, 0x0c0001).r(this, FUNC(alpha68k_state::control_2_V_r)); /* Dip 2 */ + map(0x0c0000, 0x0c00ff).w(this, FUNC(alpha68k_state::alpha68k_V_video_control_w)); + map(0x0d8000, 0x0d8001).nopr(); /* IRQ ack? */ + map(0x0e0000, 0x0e0001).nopr(); /* IRQ ack? */ + map(0x0e8000, 0x0e8001).nopr(); /* watchdog? */ + map(0x100000, 0x100fff).ram().w(this, FUNC(alpha68k_state::alpha68k_videoram_w)).share("videoram"); + map(0x200000, 0x207fff).ram().share("spriteram"); + map(0x300000, 0x303fff).r(this, FUNC(alpha68k_state::alpha_V_trigger_r)); + map(0x300000, 0x3001ff).w(this, FUNC(alpha68k_state::alpha_microcontroller_w)); + map(0x303e00, 0x303fff).w(this, FUNC(alpha68k_state::alpha_microcontroller_w)); /* Gang Wars mirror */ + map(0x400000, 0x401fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x83ffff).bankr("bank8"); +} READ16_MEMBER(alpha68k_state::sound_cpu_r){ return 1; } -ADDRESS_MAP_START(alpha68k_state::tnextspc_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x070000, 0x073fff) AM_RAM - AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0d0000, 0x0d0001) AM_WRITENOP // unknown write port (0) - AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("P1") - AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("P2") - AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0e0006, 0x0e0007) AM_WRITENOP // unknown write port (0) - AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1") - AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2") - AM_RANGE(0x0e000e, 0x0e000f) AM_WRITENOP // unknown write port (0) - AM_RANGE(0x0e0018, 0x0e0019) AM_READ(sound_cpu_r) - AM_RANGE(0x0f0000, 0x0f0001) AM_WRITE(tnextspc_unknown_w) - AM_RANGE(0x0f0002, 0x0f0005) AM_WRITE(tnextspc_coin_counters_w) - AM_RANGE(0x0f0008, 0x0f0009) AM_WRITE(tnextspc_soundlatch_w) -ADDRESS_MAP_END +void alpha68k_state::tnextspc_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x070000, 0x073fff).ram(); + map(0x0a0000, 0x0a3fff).ram().share("spriteram"); + map(0x0d0000, 0x0d0001).nopw(); // unknown write port (0) + map(0x0e0000, 0x0e0001).portr("P1"); + map(0x0e0002, 0x0e0003).portr("P2"); + map(0x0e0004, 0x0e0005).portr("SYSTEM"); + map(0x0e0006, 0x0e0007).nopw(); // unknown write port (0) + map(0x0e0008, 0x0e0009).portr("DSW1"); + map(0x0e000a, 0x0e000b).portr("DSW2"); + map(0x0e000e, 0x0e000f).nopw(); // unknown write port (0) + map(0x0e0018, 0x0e0019).r(this, FUNC(alpha68k_state::sound_cpu_r)); + map(0x0f0000, 0x0f0001).w(this, FUNC(alpha68k_state::tnextspc_unknown_w)); + map(0x0f0002, 0x0f0005).w(this, FUNC(alpha68k_state::tnextspc_coin_counters_w)); + map(0x0f0008, 0x0f0009).w(this, FUNC(alpha68k_state::tnextspc_soundlatch_w)); +} /******************************************************************************/ @@ -729,19 +734,21 @@ WRITE8_MEMBER(alpha68k_state::sound_bank_w) membank("bank7")->set_entry(data); } -ADDRESS_MAP_START(alpha68k_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank7") -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::kyros_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe002, 0xe002) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe006, 0xe00e) AM_WRITENOP // soundboard I/O's, ignored +void alpha68k_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xffff).bankr("bank7"); +} + +void alpha68k_state::kyros_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe002, 0xe002).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0xe004, 0xe004).w("dac", FUNC(dac_byte_interface::write)); + map(0xe006, 0xe00e).nopw(); // soundboard I/O's, ignored /* reference only AM_RANGE(0xe006, 0xe006) AM_WRITENOP // NMI: diminishing saw-tooth AM_RANGE(0xe008, 0xe008) AM_WRITENOP // NMI: 00 @@ -749,72 +756,80 @@ ADDRESS_MAP_START(alpha68k_state::kyros_sound_map) AM_RANGE(0xe00c, 0xe00c) AM_WRITENOP // RST30: 00 on entry AM_RANGE(0xe00e, 0xe00e) AM_WRITENOP // RST30: 00,02,ff on exit(0x1d88) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::sstingry_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc100, 0xc100) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc102, 0xc102) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0xc104, 0xc104) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xc106, 0xc10e) AM_WRITENOP // soundboard I/O's, ignored -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::jongbou_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::alpha68k_I_s_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, clear_w) - AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xfc00, 0xfc00) AM_RAM // unknown port -ADDRESS_MAP_END - - -ADDRESS_MAP_START(alpha68k_state::tnextspc_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, clear_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, clear_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x0a, 0x0b) AM_DEVWRITE("ym2", ym2413_device, write) - AM_RANGE(0x0c, 0x0d) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x0e, 0x0e) AM_WRITE(sound_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::kyros_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("ym2", ym2203_device, write_port_w) - AM_RANGE(0x81, 0x81) AM_DEVWRITE("ym2", ym2203_device, control_port_w) - AM_RANGE(0x90, 0x90) AM_DEVWRITE("ym3", ym2203_device, write_port_w) - AM_RANGE(0x91, 0x91) AM_DEVWRITE("ym3", ym2203_device, control_port_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::jongbou_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x06, 0x06) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(alpha68k_state::tnextspc_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0x3b, 0x3b) AM_READNOP // unknown read port - AM_RANGE(0x3d, 0x3d) AM_READNOP // unknown read port - AM_RANGE(0x7b, 0x7b) AM_READNOP // unknown read port -ADDRESS_MAP_END +} + +void alpha68k_state::sstingry_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc100, 0xc100).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc102, 0xc102).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0xc104, 0xc104).w("dac", FUNC(dac_byte_interface::write)); + map(0xc106, 0xc10e).nopw(); // soundboard I/O's, ignored +} + +void alpha68k_state::jongbou_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); +} + +void alpha68k_state::alpha68k_I_s_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xe000, 0xe000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w)); + map(0xe800, 0xe800).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0xec00, 0xec00).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0xf000, 0xf7ff).ram(); + map(0xfc00, 0xfc00).ram(); // unknown port +} + + +void alpha68k_state::tnextspc_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w)); +} + +void alpha68k_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::clear_w)); + map(0x08, 0x08).w("dac", FUNC(dac_byte_interface::write)); + map(0x0a, 0x0b).w("ym2", FUNC(ym2413_device::write)); + map(0x0c, 0x0d).w("ym1", FUNC(ym2203_device::write)); + map(0x0e, 0x0e).w(this, FUNC(alpha68k_state::sound_bank_w)); +} + +void alpha68k_state::kyros_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w("ym1", FUNC(ym2203_device::write)); + map(0x80, 0x80).w("ym2", FUNC(ym2203_device::write_port_w)); + map(0x81, 0x81).w("ym2", FUNC(ym2203_device::control_port_w)); + map(0x90, 0x90).w("ym3", FUNC(ym2203_device::write_port_w)); + map(0x91, 0x91).w("ym3", FUNC(ym2203_device::control_port_w)); +} + +void alpha68k_state::jongbou_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0x06, 0x06).nopw(); +} + +void alpha68k_state::tnextspc_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x3b, 0x3b).nopr(); // unknown read port + map(0x3d, 0x3d).nopr(); // unknown read port + map(0x7b, 0x7b).nopr(); // unknown read port +} /******************************************************************************/ diff --git a/src/mame/drivers/alphasma.cpp b/src/mame/drivers/alphasma.cpp index c7f55267bc1..987079e52b4 100644 --- a/src/mame/drivers/alphasma.cpp +++ b/src/mame/drivers/alphasma.cpp @@ -168,20 +168,22 @@ WRITE8_MEMBER(alphasmart_state::port_d_w) } -ADDRESS_MAP_START(alphasmart_state::alphasmart_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("rambank") - AM_RANGE( 0x0000, 0x003f ) AM_NOP // internal registers - AM_RANGE( 0x0040, 0x00ff ) AM_RAM // internal RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0x8000, 0x8000 ) AM_READWRITE(kb_r, kb_matrixh_w) - AM_RANGE( 0xc000, 0xc000 ) AM_WRITE(kb_matrixl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphasmart_state::alphasmart_io) - AM_RANGE( MC68HC11_IO_PORTA, MC68HC11_IO_PORTA ) AM_READWRITE(port_a_r, port_a_w) - AM_RANGE( MC68HC11_IO_PORTD, MC68HC11_IO_PORTD ) AM_READWRITE(port_d_r, port_d_w) -ADDRESS_MAP_END +void alphasmart_state::alphasmart_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankrw("rambank"); + map(0x0000, 0x003f).noprw(); // internal registers + map(0x0040, 0x00ff).ram(); // internal RAM + map(0x8000, 0xffff).rom().region("maincpu", 0); + map(0x8000, 0x8000).rw(this, FUNC(alphasmart_state::kb_r), FUNC(alphasmart_state::kb_matrixh_w)); + map(0xc000, 0xc000).w(this, FUNC(alphasmart_state::kb_matrixl_w)); +} + +void alphasmart_state::alphasmart_io(address_map &map) +{ + map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).rw(this, FUNC(alphasmart_state::port_a_r), FUNC(alphasmart_state::port_a_w)); + map(MC68HC11_IO_PORTD, MC68HC11_IO_PORTD).rw(this, FUNC(alphasmart_state::port_d_r), FUNC(alphasmart_state::port_d_w)); +} READ8_MEMBER(asma2k_state::io_r) { @@ -228,14 +230,15 @@ WRITE8_MEMBER(asma2k_state::port_a_w) } -ADDRESS_MAP_START(asma2k_state::asma2k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("rambank") - AM_RANGE( 0x0000, 0x003f ) AM_NOP // internal registers - AM_RANGE( 0x0040, 0x00ff ) AM_RAM AM_SHARE("internal_ram") // internal RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0x9000, 0x9000 ) AM_WRITE(kb_matrixl_w) -ADDRESS_MAP_END +void asma2k_state::asma2k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankrw("rambank"); + map(0x0000, 0x003f).noprw(); // internal registers + map(0x0040, 0x00ff).ram().share("internal_ram"); // internal RAM + map(0x8000, 0xffff).rom().region("maincpu", 0); + map(0x9000, 0x9000).w(this, FUNC(asma2k_state::kb_matrixl_w)); +} /* Input ports */ static INPUT_PORTS_START( alphasmart ) diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp index 94fd649cc34..b1d1b6dca59 100644 --- a/src/mame/drivers/alphatpx.cpp +++ b/src/mame/drivers/alphatpx.cpp @@ -249,30 +249,33 @@ private: // ADDRESS MAPS - Alphatronic P1, P2, P2S, P2U and Hell 2069 //************************************************************************** -ADDRESS_MAP_START(alphatp_12_state::alphatp2_mem) - AM_RANGE(0x0000, 0xffff) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatp_12_state::alphatp2_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAMBANK("ram_0000") - AM_RANGE(0x00000, 0x017ff) AM_ROM AM_REGION("boot", 0) // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB - AM_RANGE(0x01800, 0x01c00) AM_RAM // boot rom variables - AM_RANGE(0x03000, 0x03bff) AM_WRITEONLY AM_SHARE("vram") // test 2017 hw, MOS directly writes to display RAM - AM_RANGE(0x03FF0, 0x03fff) AM_DEVWRITE("crtc", crt5027_device, write) //test hw, mem-mapped registers, cursor position can be determined through this range - - AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatp_12_state::alphatp2_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("kbdmcu", i8041_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x12, 0x12) AM_WRITE(beep_w) - AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w) - AM_RANGE(0x78, 0x78) AM_WRITE(bank_w) -ADDRESS_MAP_END +void alphatp_12_state::alphatp2_mem(address_map &map) +{ + map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void alphatp_12_state::alphatp2_map(address_map &map) +{ + map(0x00000, 0x0ffff).bankrw("ram_0000"); + map(0x00000, 0x017ff).rom().region("boot", 0); // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB + map(0x01800, 0x01c00).ram(); // boot rom variables + map(0x03000, 0x03bff).writeonly().share("vram"); // test 2017 hw, MOS directly writes to display RAM + map(0x03FF0, 0x03fff).w(m_crtc, FUNC(crt5027_device::write)); //test hw, mem-mapped registers, cursor position can be determined through this range + + map(0x10000, 0x1ffff).ram().share("ram"); +} + +void alphatp_12_state::alphatp2_io(address_map &map) +{ + map.unmap_value_high(); + map(0x04, 0x04).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x05, 0x05).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w)); + map(0x12, 0x12).w(this, FUNC(alphatp_12_state::beep_w)); + map(0x50, 0x53).rw(this, FUNC(alphatp_12_state::fdc_r), FUNC(alphatp_12_state::fdc_w)); + map(0x54, 0x54).rw(this, FUNC(alphatp_12_state::fdc_stat_r), FUNC(alphatp_12_state::fdc_cmd_w)); + map(0x78, 0x78).w(this, FUNC(alphatp_12_state::bank_w)); +} WRITE8_MEMBER(alphatp_12_state::bank_w) @@ -285,51 +288,56 @@ WRITE8_MEMBER(alphatp_12_state::bank_w) // ADDRESS MAPS - Alphatronic P3, P4, P30 and P40 //************************************************************************** -ADDRESS_MAP_START(alphatp_34_state::alphatp3_mem) - AM_RANGE(0x0000, 0xffff) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END +void alphatp_34_state::alphatp3_mem(address_map &map) +{ + map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} -ADDRESS_MAP_START(alphatp_34_state::alphatp3_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAMBANK("ram_0000") - AM_RANGE(0x00000, 0x017ff) AM_ROM AM_REGION("boot", 0) // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB - AM_RANGE(0x01800, 0x01c00) AM_RAM // boot rom variables - AM_RANGE(0x03000, 0x03bff) AM_WRITEONLY AM_SHARE("vram") // test 2017 hw, MOS directly writes to display RAM - AM_RANGE(0x03FF0, 0x03fff) AM_DEVWRITE("crtc", crt5037_device, write) //test hw, mem-mapped registers, cursor position can be determined through this range +void alphatp_34_state::alphatp3_map(address_map &map) +{ + map(0x00000, 0x0ffff).bankrw("ram_0000"); + map(0x00000, 0x017ff).rom().region("boot", 0); // P2 0x0000 , 0x17ff -hw 6kB, P3 only 4 kB + map(0x01800, 0x01c00).ram(); // boot rom variables + map(0x03000, 0x03bff).writeonly().share("vram"); // test 2017 hw, MOS directly writes to display RAM + map(0x03FF0, 0x03fff).w(m_crtc, FUNC(crt5037_device::write)); //test hw, mem-mapped registers, cursor position can be determined through this range - AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END + map(0x10000, 0x1ffff).ram().share("ram"); +} -ADDRESS_MAP_START(alphatp_34_state::alphatp3_io) - ADDRESS_MAP_UNMAP_HIGH +void alphatp_34_state::alphatp3_io(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x00, 0x00) AM_READ // unknown - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x08, 0x09) AM_READWRITE(comm88_r, comm88_w) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("kbdmcu", i8041_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x12, 0x12) AM_WRITE(beep_w) - AM_RANGE(0x40, 0x41) AM_READ(start88_r) + map(0x04, 0x04).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x05, 0x05).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x08, 0x09).rw(this, FUNC(alphatp_34_state::comm88_r), FUNC(alphatp_34_state::comm88_w)); + map(0x10, 0x11).rw(m_kbdmcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w)); + map(0x12, 0x12).w(this, FUNC(alphatp_34_state::beep_w)); + map(0x40, 0x41).r(this, FUNC(alphatp_34_state::start88_r)); //AM_RANGE(0x42, 0x42) AM_WRITE // unknown - AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w) - AM_RANGE(0x78, 0x78) AM_WRITE(bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatp_34_state::alphatp30_8088_map) - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0xe0000, 0xeffff) AM_READWRITE(gfxext_r, gfxext_w) - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("16bit", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatp_34_state::alphatp30_8088_io) + map(0x50, 0x53).rw(this, FUNC(alphatp_34_state::fdc_r), FUNC(alphatp_34_state::fdc_w)); + map(0x54, 0x54).rw(this, FUNC(alphatp_34_state::fdc_stat_r), FUNC(alphatp_34_state::fdc_cmd_w)); + map(0x78, 0x78).w(this, FUNC(alphatp_34_state::bank_w)); +} + +void alphatp_34_state::alphatp30_8088_map(address_map &map) +{ + map(0x00000, 0x1ffff).ram(); + map(0xe0000, 0xeffff).rw(this, FUNC(alphatp_34_state::gfxext_r), FUNC(alphatp_34_state::gfxext_w)); + map(0xfe000, 0xfffff).rom().region("16bit", 0); +} + +void alphatp_34_state::alphatp30_8088_io(address_map &map) +{ //AM_RANGE(0x008a, 0x008a) AM_READ // unknown - AM_RANGE(0xf800, 0xf800) AM_WRITE(gfxext1_w) - AM_RANGE(0xf900, 0xf900) AM_WRITE(gfxext2_w) - AM_RANGE(0xfa00, 0xfa01) AM_WRITE(gfxext3_w) + map(0xf800, 0xf800).w(this, FUNC(alphatp_34_state::gfxext1_w)); + map(0xf900, 0xf900).w(this, FUNC(alphatp_34_state::gfxext2_w)); + map(0xfa00, 0xfa01).w(this, FUNC(alphatp_34_state::gfxext3_w)); //AM_RANGE(0xfb00, 0xfb0f) AM_WRITE // unknown possibly gfx ext - AM_RANGE(0xffe0, 0xffe1) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0xffe4, 0xffe7) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xffe9, 0xffea) AM_READWRITE(comm85_r, comm85_w) -ADDRESS_MAP_END + map(0xffe0, 0xffe1).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xffe4, 0xffe7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xffe9, 0xffea).rw(this, FUNC(alphatp_34_state::comm85_r), FUNC(alphatp_34_state::comm85_w)); +} READ8_MEMBER(alphatp_34_state::start88_r) { diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp index 6b892dffae5..242fa6b98e9 100644 --- a/src/mame/drivers/alphatro.cpp +++ b/src/mame/drivers/alphatro.cpp @@ -388,62 +388,67 @@ INPUT_CHANGED_MEMBER( alphatro_state::alphatro_break ) m_maincpu->set_input_line(INPUT_LINE_IRQ0, HOLD_LINE); } -ADDRESS_MAP_START(alphatro_state::alphatro_map) - AM_RANGE(0x0000, 0x5fff) AM_DEVICE("lowbank", address_map_bank_device, amap8) - AM_RANGE(0x6000, 0x9fff) AM_READWRITE(ram6000_r, ram6000_w) - AM_RANGE(0xa000, 0xdfff) AM_DEVICE("cartbank", address_map_bank_device, amap8) - AM_RANGE(0xe000, 0xefff) AM_READWRITE(rame000_r, rame000_w) - AM_RANGE(0xf000, 0xffff) AM_DEVICE("monbank", address_map_bank_device, amap8) - -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatro_state::rombank_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION("roms", 0x0000) AM_WRITE(ram0000_w) - AM_RANGE(0x6000, 0xbfff) AM_READWRITE(ram0000_r, ram0000_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatro_state::cartbank_map) - AM_RANGE(0x0000, 0x3fff) AM_DEVREAD("cartslot", generic_slot_device, read_rom) AM_WRITE(rama000_w) - AM_RANGE(0x4000, 0x7fff) AM_READWRITE(rama000_r, rama000_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatro_state::monbank_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0x8000) - AM_RANGE(0x2000, 0x2fff) AM_ROM AM_REGION("roms", 0x9000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(alphatro_state::alphatro_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x10, 0x10) AM_READWRITE(port10_r, port10_w) - AM_RANGE(0x20, 0x20) AM_READ_PORT("X0") AM_WRITE(port20_w) - AM_RANGE(0x21, 0x21) AM_READ_PORT("X1") - AM_RANGE(0x22, 0x22) AM_READ_PORT("X2") - AM_RANGE(0x23, 0x23) AM_READ_PORT("X3") - AM_RANGE(0x24, 0x24) AM_READ_PORT("X4") - AM_RANGE(0x25, 0x25) AM_READ_PORT("X5") - AM_RANGE(0x26, 0x26) AM_READ_PORT("X6") - AM_RANGE(0x27, 0x27) AM_READ_PORT("X7") - AM_RANGE(0x28, 0x28) AM_READ_PORT("X8") - AM_RANGE(0x29, 0x29) AM_READ_PORT("X9") - AM_RANGE(0x2a, 0x2a) AM_READ_PORT("XA") - AM_RANGE(0x2b, 0x2b) AM_READ_PORT("XB") - AM_RANGE(0x30, 0x30) AM_READWRITE(port30_r, port30_w) +void alphatro_state::alphatro_map(address_map &map) +{ + map(0x0000, 0x5fff).m(m_lowbank, FUNC(address_map_bank_device::amap8)); + map(0x6000, 0x9fff).rw(this, FUNC(alphatro_state::ram6000_r), FUNC(alphatro_state::ram6000_w)); + map(0xa000, 0xdfff).m("cartbank", FUNC(address_map_bank_device::amap8)); + map(0xe000, 0xefff).rw(this, FUNC(alphatro_state::rame000_r), FUNC(alphatro_state::rame000_w)); + map(0xf000, 0xffff).m("monbank", FUNC(address_map_bank_device::amap8)); + +} + +void alphatro_state::rombank_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().region("roms", 0x0000).w(this, FUNC(alphatro_state::ram0000_w)); + map(0x6000, 0xbfff).rw(this, FUNC(alphatro_state::ram0000_r), FUNC(alphatro_state::ram0000_w)); +} + +void alphatro_state::cartbank_map(address_map &map) +{ + map(0x0000, 0x3fff).r(m_cart, FUNC(generic_slot_device::read_rom)).w(this, FUNC(alphatro_state::rama000_w)); + map(0x4000, 0x7fff).rw(this, FUNC(alphatro_state::rama000_r), FUNC(alphatro_state::rama000_w)); +} + +void alphatro_state::monbank_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("videoram"); + map(0x1000, 0x1fff).rom().region("roms", 0x8000); + map(0x2000, 0x2fff).rom().region("roms", 0x9000); +} + +void alphatro_state::alphatro_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x10, 0x10).rw(this, FUNC(alphatro_state::port10_r), FUNC(alphatro_state::port10_w)); + map(0x20, 0x20).portr("X0").w(this, FUNC(alphatro_state::port20_w)); + map(0x21, 0x21).portr("X1"); + map(0x22, 0x22).portr("X2"); + map(0x23, 0x23).portr("X3"); + map(0x24, 0x24).portr("X4"); + map(0x25, 0x25).portr("X5"); + map(0x26, 0x26).portr("X6"); + map(0x27, 0x27).portr("X7"); + map(0x28, 0x28).portr("X8"); + map(0x29, 0x29).portr("X9"); + map(0x2a, 0x2a).portr("XA"); + map(0x2b, 0x2b).portr("XB"); + map(0x30, 0x30).rw(this, FUNC(alphatro_state::port30_r), FUNC(alphatro_state::port30_w)); // USART for cassette reading and writing - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w) - AM_RANGE(0x41, 0x41) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w) + map(0x40, 0x40).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x41, 0x41).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // CRTC - HD46505 / HD6845SP - AM_RANGE(0x50, 0x50) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map(0x50, 0x50).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x51, 0x51).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // 8257 DMAC - AM_RANGE(0x60, 0x68) AM_DEVREADWRITE("dmac", i8257_device, read, write) + map(0x60, 0x68).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write)); // 8259 PIT //AM_RANGE(0x70, 0x72) AM_DEVREADWRITE(" - AM_RANGE(0xf0, 0xf0) AM_READ(portf0_r) AM_WRITE(portf0_w) - AM_RANGE(0xf8, 0xf8) AM_DEVREADWRITE("fdc", upd765a_device, fifo_r, fifo_w) - AM_RANGE(0xf9, 0xf9) AM_DEVREAD("fdc", upd765a_device, msr_r) -ADDRESS_MAP_END + map(0xf0, 0xf0).r(this, FUNC(alphatro_state::portf0_r)).w(this, FUNC(alphatro_state::portf0_w)); + map(0xf8, 0xf8).rw(m_fdc, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w)); + map(0xf9, 0xf9).r(m_fdc, FUNC(upd765a_device::msr_r)); +} static INPUT_PORTS_START( alphatro ) PORT_START("X0") diff --git a/src/mame/drivers/altair.cpp b/src/mame/drivers/altair.cpp index a32fe3c74d2..151b690cfce 100644 --- a/src/mame/drivers/altair.cpp +++ b/src/mame/drivers/altair.cpp @@ -57,19 +57,21 @@ private: -ADDRESS_MAP_START(altair_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xfcff ) AM_RAM AM_SHARE("ram") - AM_RANGE( 0xfd00, 0xfdff ) AM_ROM - AM_RANGE( 0xff00, 0xffff ) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(altair_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void altair_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xfcff).ram().share("ram"); + map(0xfd00, 0xfdff).rom(); + map(0xff00, 0xffff).rom(); +} + +void altair_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // TODO: Remove AM_MIRROR() and use SIO address S0-S7 - AM_RANGE(0x00, 0x01) AM_MIRROR(0x10) AM_DEVREADWRITE("acia", acia6850_device, read, write) -ADDRESS_MAP_END + map(0x00, 0x01).mirror(0x10).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); +} /* Input ports */ static INPUT_PORTS_START( altair ) diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp index 3a66a2bacad..655580498c6 100644 --- a/src/mame/drivers/alto2.cpp +++ b/src/mame/drivers/alto2.cpp @@ -38,7 +38,7 @@ public: void alto2_iomem_map(address_map &map); void alto2_ucode_map(address_map &map); protected: - required_device<cpu_device> m_maincpu; + required_device<alto2_cpu_device> m_maincpu; required_device<speaker_sound_device> m_speaker; required_ioport m_io_row0; required_ioport m_io_row1; @@ -264,17 +264,20 @@ ROM_END // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(alto2_state::alto2_ucode_map) - AM_RANGE(0, 4*ALTO2_UCODE_PAGE_SIZE-1) AM_DEVICE32( "maincpu", alto2_cpu_device, ucode_map, 0xffffffffUL ) -ADDRESS_MAP_END +void alto2_state::alto2_ucode_map(address_map &map) +{ + map(0, 4*ALTO2_UCODE_PAGE_SIZE-1).m(m_maincpu, FUNC(alto2_cpu_device::ucode_map)); +} -ADDRESS_MAP_START(alto2_state::alto2_const_map) - AM_RANGE(0, ALTO2_CONST_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, const_map, 0xffffU ) -ADDRESS_MAP_END +void alto2_state::alto2_const_map(address_map &map) +{ + map(0, ALTO2_CONST_SIZE-1).m(m_maincpu, FUNC(alto2_cpu_device::const_map)); +} -ADDRESS_MAP_START(alto2_state::alto2_iomem_map) - AM_RANGE(0, 2*ALTO2_RAM_SIZE-1) AM_DEVICE16( "maincpu", alto2_cpu_device, iomem_map, 0xffffU ) -ADDRESS_MAP_END +void alto2_state::alto2_iomem_map(address_map &map) +{ + map(0, 2*ALTO2_RAM_SIZE-1).m(m_maincpu, FUNC(alto2_cpu_device::iomem_map)); +} MACHINE_CONFIG_START(alto2_state::alto2) // Basic machine hardware diff --git a/src/mame/drivers/altos2.cpp b/src/mame/drivers/altos2.cpp index e0c66578c87..2a18b1eec5a 100644 --- a/src/mame/drivers/altos2.cpp +++ b/src/mame/drivers/altos2.cpp @@ -72,21 +72,23 @@ u32 altos2_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con return 0; } -ADDRESS_MAP_START(altos2_state::mem_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos2_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("dart2", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_WRITE(video_mode_w) - AM_RANGE(0x40, 0x7f) AM_DEVREADWRITE("novram", x2210_device, read, write) +void altos2_state::mem_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("roms", 0); + map(0xc000, 0xffff).ram().share("videoram"); +} + +void altos2_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw("dart1", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x04, 0x07).rw("dart2", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x08, 0x0b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0c).w(this, FUNC(altos2_state::video_mode_w)); + map(0x40, 0x7f).rw(m_novram, FUNC(x2210_device::read), FUNC(x2210_device::write)); //AM_RANGE(0x80, 0xff) AM_DEVREADWRITE_MOD("vpac", crt9007_device, read, write, rshift<1>) -ADDRESS_MAP_END +} static INPUT_PORTS_START( altos2 ) INPUT_PORTS_END diff --git a/src/mame/drivers/altos486.cpp b/src/mame/drivers/altos486.cpp index 500564312d6..62d2a1e75f2 100644 --- a/src/mame/drivers/altos486.cpp +++ b/src/mame/drivers/altos486.cpp @@ -105,27 +105,31 @@ static SLOT_INTERFACE_START( altos486_floppies ) SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) SLOT_INTERFACE_END -ADDRESS_MAP_START(altos486_state::altos486_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mmu_ram_r, mmu_ram_w) AM_SHARE("main_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos486_state::altos486_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mmu_io_r, mmu_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos486_state::altos486_z80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("iocpu", 0) - AM_RANGE(0x2000, 0x27ff) AM_RAM +void altos486_state::altos486_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xfffff).rw(this, FUNC(altos486_state::mmu_ram_r), FUNC(altos486_state::mmu_ram_w)).share("main_ram"); +} + +void altos486_state::altos486_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(altos486_state::mmu_io_r), FUNC(altos486_state::mmu_io_w)); +} + +void altos486_state::altos486_z80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("iocpu", 0); + map(0x2000, 0x27ff).ram(); //AM_RANGE(0x8000, 0xffff) AM_READWRITE(z80_shared_r, z80_shared_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(altos486_state::altos486_z80_io) +void altos486_state::altos486_z80_io(address_map &map) +{ //AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio0", z80sio0_device, read, write) //AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio1", z80sio0_device, read, write) //AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("sio2", z80sio0_device, read, write) -ADDRESS_MAP_END +} MACHINE_CONFIG_START(altos486_state::altos486) MCFG_CPU_ADD("maincpu", I80186, XTAL(8'000'000)) diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp index 3e106eb4777..fbc9ca57083 100644 --- a/src/mame/drivers/altos5.cpp +++ b/src/mame/drivers/altos5.cpp @@ -73,38 +73,40 @@ private: }; -ADDRESS_MAP_START(altos5_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE( 0x1000, 0x1fff ) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") - AM_RANGE( 0x2000, 0x2fff ) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2") - AM_RANGE( 0x3000, 0x3fff ) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3") - AM_RANGE( 0x4000, 0x4fff ) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4") - AM_RANGE( 0x5000, 0x5fff ) AM_READ_BANK("bankr5") AM_WRITE_BANK("bankw5") - AM_RANGE( 0x6000, 0x6fff ) AM_READ_BANK("bankr6") AM_WRITE_BANK("bankw6") - AM_RANGE( 0x7000, 0x7fff ) AM_READ_BANK("bankr7") AM_WRITE_BANK("bankw7") - AM_RANGE( 0x8000, 0x8fff ) AM_READ_BANK("bankr8") AM_WRITE_BANK("bankw8") - AM_RANGE( 0x9000, 0x9fff ) AM_READ_BANK("bankr9") AM_WRITE_BANK("bankw9") - AM_RANGE( 0xa000, 0xafff ) AM_READ_BANK("bankra") AM_WRITE_BANK("bankwa") - AM_RANGE( 0xb000, 0xbfff ) AM_READ_BANK("bankrb") AM_WRITE_BANK("bankwb") - AM_RANGE( 0xc000, 0xcfff ) AM_READ_BANK("bankrc") AM_WRITE_BANK("bankwc") - AM_RANGE( 0xd000, 0xdfff ) AM_READ_BANK("bankrd") AM_WRITE_BANK("bankwd") - AM_RANGE( 0xe000, 0xefff ) AM_READ_BANK("bankre") AM_WRITE_BANK("bankwe") - AM_RANGE( 0xf000, 0xffff ) AM_READ_BANK("bankrf") AM_WRITE_BANK("bankwf") -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos5_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("fdc", fd1797_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio0", z80pio_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio1", z80pio_device, read, write) - AM_RANGE(0x14, 0x17) AM_WRITE(port14_w) - AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w) +void altos5_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0x1fff).bankr("bankr1").bankw("bankw1"); + map(0x2000, 0x2fff).bankr("bankr2").bankw("bankw2"); + map(0x3000, 0x3fff).bankr("bankr3").bankw("bankw3"); + map(0x4000, 0x4fff).bankr("bankr4").bankw("bankw4"); + map(0x5000, 0x5fff).bankr("bankr5").bankw("bankw5"); + map(0x6000, 0x6fff).bankr("bankr6").bankw("bankw6"); + map(0x7000, 0x7fff).bankr("bankr7").bankw("bankw7"); + map(0x8000, 0x8fff).bankr("bankr8").bankw("bankw8"); + map(0x9000, 0x9fff).bankr("bankr9").bankw("bankw9"); + map(0xa000, 0xafff).bankr("bankra").bankw("bankwa"); + map(0xb000, 0xbfff).bankr("bankrb").bankw("bankwb"); + map(0xc000, 0xcfff).bankr("bankrc").bankw("bankwc"); + map(0xd000, 0xdfff).bankr("bankrd").bankw("bankwd"); + map(0xe000, 0xefff).bankr("bankre").bankw("bankwe"); + map(0xf000, 0xffff).bankr("bankrf").bankw("bankwf"); +} + +void altos5_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x04, 0x07).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)); + map(0x08, 0x0b).rw(m_pio0, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x0c, 0x0f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x13).rw("pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x14, 0x17).w(this, FUNC(altos5_state::port14_w)); + map(0x1c, 0x1f).rw("dart", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); //AM_RANGE(0x20, 0x23) // Hard drive - AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) -ADDRESS_MAP_END + map(0x2c, 0x2f).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); +} /* Input ports */ static INPUT_PORTS_START( altos5 ) diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp index fd7d1af0372..1912594c91c 100644 --- a/src/mame/drivers/altos8600.cpp +++ b/src/mame/drivers/altos8600.cpp @@ -665,53 +665,60 @@ IRQ_CALLBACK_MEMBER(altos8600_state::inta) return m_pic1->acknowledge(); } -ADDRESS_MAP_START(altos8600_state::cpu_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(cpuram_r, cpuram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos8600_state::stack_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(stkram_r, stkram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos8600_state::code_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(coderam_r, coderam_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos8600_state::extra_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(xtraram_r, xtraram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos8600_state::cpu_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(cpuio_r, cpuio_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos8600_state::dmac_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(dmacram_r, dmacram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(altos8600_state::dmac_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmi_r, nmi_w) - AM_RANGE(0x0000, 0x0007) AM_READ(fault_r) - AM_RANGE(0x0008, 0x000f) AM_WRITE(clear_w) - AM_RANGE(0x0010, 0x0017) AM_READ(errlo_r) - AM_RANGE(0x0018, 0x001f) AM_READ(errhi_r) - AM_RANGE(0x0020, 0x0027) AM_READWRITE8(hd_r, hd_w, 0x00ff) - AM_RANGE(0x0030, 0x0037) AM_WRITE(mode_w) - AM_RANGE(0x0038, 0x003f) AM_WRITE8(cattn_w, 0xffff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("fd1797", fd1797_device, read, write, 0xff00) - AM_RANGE(0x0048, 0x004f) AM_DEVREADWRITE8("uart8274", i8274_new_device, cd_ba_r, cd_ba_w, 0x00ff) - AM_RANGE(0x0048, 0x004f) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0xff00) - AM_RANGE(0x0050, 0x0057) AM_READWRITE8(romport_r, romport_w, 0xffff) - AM_RANGE(0x0058, 0x005f) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0058, 0x005f) AM_WRITE8(clrsys_w, 0xff00) - AM_RANGE(0x0060, 0x0067) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0068, 0x006f) AM_DEVREADWRITE8("pic8259_3", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0070, 0x0077) AM_NOP - AM_RANGE(0x0078, 0x0079) AM_WRITE8(ics_attn_w, 0xffff) - AM_RANGE(0x0200, 0x03ff) AM_READWRITE(mmuflags_r, mmuflags_w) - AM_RANGE(0x0400, 0x05ff) AM_READWRITE(mmuaddr_r, mmuaddr_w) -ADDRESS_MAP_END +void altos8600_state::cpu_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::cpuram_r), FUNC(altos8600_state::cpuram_w)); +} + +void altos8600_state::stack_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::stkram_r), FUNC(altos8600_state::stkram_w)); +} + +void altos8600_state::code_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::coderam_r), FUNC(altos8600_state::coderam_w)); +} + +void altos8600_state::extra_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::xtraram_r), FUNC(altos8600_state::xtraram_w)); +} + +void altos8600_state::cpu_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(altos8600_state::cpuio_r), FUNC(altos8600_state::cpuio_w)); +} + +void altos8600_state::dmac_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(altos8600_state::dmacram_r), FUNC(altos8600_state::dmacram_w)); +} + +void altos8600_state::dmac_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(altos8600_state::nmi_r), FUNC(altos8600_state::nmi_w)); + map(0x0000, 0x0007).r(this, FUNC(altos8600_state::fault_r)); + map(0x0008, 0x000f).w(this, FUNC(altos8600_state::clear_w)); + map(0x0010, 0x0017).r(this, FUNC(altos8600_state::errlo_r)); + map(0x0018, 0x001f).r(this, FUNC(altos8600_state::errhi_r)); + map(0x0020, 0x0027).rw(this, FUNC(altos8600_state::hd_r), FUNC(altos8600_state::hd_w)).umask16(0x00ff); + map(0x0030, 0x0037).w(this, FUNC(altos8600_state::mode_w)); + map(0x0038, 0x003f).w(this, FUNC(altos8600_state::cattn_w)); + map(0x0040, 0x0047).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0040, 0x0047).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)).umask16(0xff00); + map(0x0048, 0x004f).rw(m_uart8274, FUNC(i8274_new_device::cd_ba_r), FUNC(i8274_new_device::cd_ba_w)).umask16(0x00ff); + map(0x0048, 0x004f).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00); + map(0x0050, 0x0057).rw(this, FUNC(altos8600_state::romport_r), FUNC(altos8600_state::romport_w)); + map(0x0058, 0x005f).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0058, 0x005f).w(this, FUNC(altos8600_state::clrsys_w)).umask16(0xff00); + map(0x0060, 0x0067).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0068, 0x006f).rw(m_pic3, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0070, 0x0077).noprw(); + map(0x0078, 0x0079).w(this, FUNC(altos8600_state::ics_attn_w)); + map(0x0200, 0x03ff).rw(this, FUNC(altos8600_state::mmuflags_r), FUNC(altos8600_state::mmuflags_w)); + map(0x0400, 0x05ff).rw(this, FUNC(altos8600_state::mmuaddr_r), FUNC(altos8600_state::mmuaddr_w)); +} static SLOT_INTERFACE_START(altos8600_floppies) SLOT_INTERFACE( "8dd", FLOPPY_8_DSDD ) diff --git a/src/mame/drivers/alvg.cpp b/src/mame/drivers/alvg.cpp index ac27c198432..8ba87f03e6c 100644 --- a/src/mame/drivers/alvg.cpp +++ b/src/mame/drivers/alvg.cpp @@ -26,11 +26,12 @@ public: }; -ADDRESS_MAP_START(alvg_state::alvg_map) - AM_RANGE(0x0000, 0xffff) AM_NOP - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void alvg_state::alvg_map(address_map &map) +{ + map(0x0000, 0xffff).noprw(); + map(0x0000, 0x3fff).ram(); + map(0x4000, 0xffff).rom(); +} static INPUT_PORTS_START( alvg ) INPUT_PORTS_END diff --git a/src/mame/drivers/amaticmg.cpp b/src/mame/drivers/amaticmg.cpp index 3adedb3f786..ef2548c49b0 100644 --- a/src/mame/drivers/amaticmg.cpp +++ b/src/mame/drivers/amaticmg.cpp @@ -645,52 +645,56 @@ WRITE8_MEMBER( amaticmg_state::unk80_w ) * Memory Map Information * ************************************/ -ADDRESS_MAP_START(amaticmg_state::amaticmg_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM // AM_SHARE("nvram") - AM_RANGE(0xa000, 0xafff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("attr") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(amaticmg_state::amaticmg_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x60, 0x60) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x80, 0x80) AM_WRITE(unk80_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w) +void amaticmg_state::amaticmg_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); // AM_SHARE("nvram") + map(0xa000, 0xafff).ram().share("vram"); + map(0xb000, 0xbfff).ram().share("attr"); + map(0xc000, 0xffff).bankr("bank1"); +} + +void amaticmg_state::amaticmg_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x41).w("ymsnd", FUNC(ym3812_device::write)); + map(0x60, 0x60).w("crtc", FUNC(mc6845_device::address_w)); + map(0x61, 0x61).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x80, 0x80).w(this, FUNC(amaticmg_state::unk80_w)); + map(0xc0, 0xc0).w(this, FUNC(amaticmg_state::rombank_w)); // AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", dac_byte_interface, write) // AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac2", dac_byte_interface, write) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(amaticmg_state::amaticmg2_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void amaticmg_state::amaticmg2_portmap(address_map &map) +{ + map.global_mask(0xff); // ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x60, 0x60) AM_DEVWRITE("crtc", mc6845_device, address_w) // 0e for mg_iii_vger_3.64_v_8309 - AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) // 0f for mg_iii_vger_3.64_v_8309 - AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(nmi_mask_w) - AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(amaticmg_state::amaticmg4_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x41).w("ymsnd", FUNC(ym3812_device::write)); + map(0x60, 0x60).w("crtc", FUNC(mc6845_device::address_w)); // 0e for mg_iii_vger_3.64_v_8309 + map(0x61, 0x61).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // 0f for mg_iii_vger_3.64_v_8309 + map(0xc0, 0xc0).w(this, FUNC(amaticmg_state::rombank_w)); + map(0xe6, 0xe6).w(this, FUNC(amaticmg_state::nmi_mask_w)); + map(0xe8, 0xeb).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void amaticmg_state::amaticmg4_portmap(address_map &map) +{ + map.global_mask(0xff); // ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x04, 0x07).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x50, 0x51).w("ymsnd", FUNC(ym3812_device::write)); + map(0x0e, 0x0e).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0f, 0x0f).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(nmi_mask_w) -ADDRESS_MAP_END + map(0xe6, 0xe6).w(this, FUNC(amaticmg_state::nmi_mask_w)); +} /************************************ diff --git a/src/mame/drivers/ambush.cpp b/src/mame/drivers/ambush.cpp index 945da504e37..8e1f19fa319 100644 --- a/src/mame/drivers/ambush.cpp +++ b/src/mame/drivers/ambush.cpp @@ -120,43 +120,46 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(ambush_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xc000, 0xc07f) AM_RAM - AM_RANGE(0xc080, 0xc09f) AM_RAM_WRITE(scroll_ram_w) AM_SHARE("scroll_ram") // 1 byte for each column - AM_RANGE(0xc0a0, 0xc0ff) AM_RAM - AM_RANGE(0xc100, 0xc1ff) AM_RAM AM_SHARE("attribute_ram") // 1 line corresponds to 4 in the video ram - AM_RANGE(0xc200, 0xc3ff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xc800, 0xc800) AM_READ_PORT("sw1") - AM_RANGE(0xcc00, 0xcc07) AM_WRITE(output_latches_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ambush_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_w) - AM_RANGE(0x81, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ambush_state::bootleg_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x77ff) AM_RAM - AM_RANGE(0x7000, 0x71ff) AM_SHARE("sprite_ram") - AM_RANGE(0x7200, 0x72ff) AM_SHARE("attribute_ram") - AM_RANGE(0x7380, 0x739f) AM_SHARE("scroll_ram") // not used on bootlegs? - AM_RANGE(0x7400, 0x77ff) AM_SHARE("video_ram") - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("sw1") - AM_RANGE(0xa200, 0xa207) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xb000, 0xbfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ambush_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc000, 0xc07f).ram(); + map(0xc080, 0xc09f).ram().w(this, FUNC(ambush_state::scroll_ram_w)).share("scroll_ram"); // 1 byte for each column + map(0xc0a0, 0xc0ff).ram(); + map(0xc100, 0xc1ff).ram().share("attribute_ram"); // 1 line corresponds to 4 in the video ram + map(0xc200, 0xc3ff).ram().share("sprite_ram"); + map(0xc400, 0xc7ff).ram().share("video_ram"); + map(0xc800, 0xc800).portr("sw1"); + map(0xcc00, 0xcc07).w(this, FUNC(ambush_state::output_latches_w)); +} + +void ambush_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x01, 0x01).w("ay1", FUNC(ay8910_device::data_w)); + map(0x80, 0x80).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x81, 0x81).w("ay2", FUNC(ay8910_device::data_w)); +} + +void ambush_state::bootleg_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x77ff).ram(); + map(0x7000, 0x71ff).share("sprite_ram"); + map(0x7200, 0x72ff).share("attribute_ram"); + map(0x7380, 0x739f).share("scroll_ram"); // not used on bootlegs? + map(0x7400, 0x77ff).share("video_ram"); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xa000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xa100, 0xa100).portr("sw1"); + map(0xa200, 0xa207).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xb000, 0xbfff).rom(); + map(0xe000, 0xffff).rom(); +} //************************************************************************** diff --git a/src/mame/drivers/amerihok.cpp b/src/mame/drivers/amerihok.cpp index 2852376444a..fd11323d847 100644 --- a/src/mame/drivers/amerihok.cpp +++ b/src/mame/drivers/amerihok.cpp @@ -51,14 +51,16 @@ WRITE8_MEMBER(amerihok_state::control_w) m_oki->ch2_w(!BIT(data, 7)); } -ADDRESS_MAP_START(amerihok_state::amerihok_map) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(amerihok_state::amerihok_data_map) - AM_RANGE(0x2000, 0x2000) AM_WRITE(control_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("oki", okim6376_device, write) -ADDRESS_MAP_END +void amerihok_state::amerihok_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} + +void amerihok_state::amerihok_data_map(address_map &map) +{ + map(0x2000, 0x2000).w(this, FUNC(amerihok_state::control_w)); + map(0x4000, 0x4000).w(m_oki, FUNC(okim6376_device::write)); +} static INPUT_PORTS_START( amerihok ) INPUT_PORTS_END diff --git a/src/mame/drivers/amico2k.cpp b/src/mame/drivers/amico2k.cpp index 78a1bd35aac..acdf4189bf7 100644 --- a/src/mame/drivers/amico2k.cpp +++ b/src/mame/drivers/amico2k.cpp @@ -62,14 +62,15 @@ public: }; -ADDRESS_MAP_START(amico2k_state::amico2k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM +void amico2k_state::amico2k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); // AM_RANGE(0x0400, 0x07ff) AM_RAM // optional expansion RAM - AM_RANGE(0xfb00, 0xfcff) AM_ROM - AM_RANGE(0xfd00, 0xfd03) AM_DEVREADWRITE("i8255", i8255_device, read, write) - AM_RANGE(0xfe00, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xfb00, 0xfcff).rom(); + map(0xfd00, 0xfd03).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfe00, 0xffff).rom(); +} /* Input ports */ static INPUT_PORTS_START( amico2k ) diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp index 0e84f9af256..1eeb66f95cb 100644 --- a/src/mame/drivers/amiga.cpp +++ b/src/mame/drivers/amiga.cpp @@ -980,38 +980,42 @@ WRITE8_MEMBER( cd32_state::akiko_cia_0_port_a_write ) // Akiko custom chip. #if 0 -ADDRESS_MAP_START(a1000_state::a1000_overlay_map) - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x1c0000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0x280000, 0x2bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x300000, 0x33ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x380000, 0x38ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) -ADDRESS_MAP_END +void a1000_state::a1000_overlay_map(address_map &map) +{ + map(0x000000, 0x03ffff).mirror(0x1c0000).ram().share("chip_ram"); + map(0x200000, 0x20ffff).mirror(0x030000).rom().region("bootrom", 0); + map(0x280000, 0x2bffff).mirror(0x040000).ram().share("chip_ram"); + map(0x300000, 0x33ffff).mirror(0x040000).ram().share("chip_ram"); + map(0x380000, 0x38ffff).mirror(0x030000).rom().region("bootrom", 0); +} #endif -ADDRESS_MAP_START(a1000_state::a1000_overlay_map) - AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x300000, 0x37ffff) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x380000, 0x38ffff) AM_MIRROR(0x030000) AM_ROM AM_REGION("bootrom", 0) -ADDRESS_MAP_END +void a1000_state::a1000_overlay_map(address_map &map) +{ + map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram"); + map(0x200000, 0x20ffff).mirror(0x030000).rom().region("bootrom", 0); + map(0x280000, 0x2fffff).ram().share("chip_ram"); + map(0x300000, 0x37ffff).ram().share("chip_ram"); + map(0x380000, 0x38ffff).mirror(0x030000).rom().region("bootrom", 0); +} -ADDRESS_MAP_START(a1000_state::a1000_bootrom_map) - AM_RANGE(0x000000, 0x00ffff) AM_MIRROR(0x30000) AM_ROM AM_REGION("bootrom", 0) AM_WRITE(write_protect_w) - AM_RANGE(0x040000, 0x07ffff) AM_ROMBANK("wom") -ADDRESS_MAP_END +void a1000_state::a1000_bootrom_map(address_map &map) +{ + map(0x000000, 0x00ffff).mirror(0x30000).rom().region("bootrom", 0).w(this, FUNC(a1000_state::write_protect_w)); + map(0x040000, 0x07ffff).bankr("wom"); +} -ADDRESS_MAP_START(a1000_state::a1000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf80000, 0xfbffff) AM_DEVICE("bootrom", address_map_bank_device, amap16) - AM_RANGE(0xfc0000, 0xffffff) AM_READWRITE_BANK("wom") -ADDRESS_MAP_END +void a1000_state::a1000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(a1000_state::cia_r), FUNC(a1000_state::cia_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(a1000_state::custom_chip_r), FUNC(a1000_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a1000_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf80000, 0xfbffff).m(m_bootrom, FUNC(address_map_bank_device::amap16)); + map(0xfc0000, 0xffffff).bankrw("wom"); +} // Gary/Super Gary/Gayle with 512KB chip RAM ADDRESS_MAP_START(amiga_state::overlay_512kb_map) @@ -1049,194 +1053,206 @@ ADDRESS_MAP_START(amiga_state::overlay_2mb_map32) ADDRESS_MAP_END // 512KB chip RAM, 512KB slow RAM, RTC -ADDRESS_MAP_START(a2000_state::a2000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xc7ffff) AM_RAM - AM_RANGE(0xc80000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xdbffff) AM_NOP - AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w) - AM_RANGE(0xdc8000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void a2000_state::a2000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(a2000_state::cia_r), FUNC(a2000_state::cia_w)); + map(0xc00000, 0xc7ffff).ram(); + map(0xc80000, 0xd7ffff).rw(this, FUNC(a2000_state::custom_chip_r), FUNC(a2000_state::custom_chip_w)); + map(0xd80000, 0xdbffff).noprw(); + map(0xdc0000, 0xdc7fff).rw(this, FUNC(a2000_state::clock_r), FUNC(a2000_state::clock_w)); + map(0xdc8000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(a2000_state::custom_chip_r), FUNC(a2000_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(a2000_state::custom_chip_r), FUNC(a2000_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a2000_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf00000, 0xf7ffff).noprw(); // cartridge space + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} // 512KB chip RAM and no clock -ADDRESS_MAP_START(a500_state::a500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void a500_state::a500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(a500_state::cia_r), FUNC(a500_state::cia_w)); + map(0xc00000, 0xd7ffff).rw(this, FUNC(a500_state::custom_chip_r), FUNC(a500_state::custom_chip_w)); + map(0xd80000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(a500_state::custom_chip_r), FUNC(a500_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(a500_state::custom_chip_r), FUNC(a500_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a500_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf00000, 0xf7ffff).noprw(); // cartridge space + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} // 1MB chip RAM, RTC and CDTV specific hardware -ADDRESS_MAP_START(cdtv_state::cdtv_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xdbffff) AM_NOP - AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w) - AM_RANGE(0xdc8000, 0xdc87ff) AM_MIRROR(0x7800) AM_RAM AM_SHARE("sram") - AM_RANGE(0xdd0000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe3ffff) AM_MIRROR(0x40000) AM_RAM AM_SHARE("memcard") - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x40000) AM_ROM AM_REGION("cdrom", 0) - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cdtv_state::cdtv_rc_mem) - AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("rcmcu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(a3000_state::a3000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x001fffff) AM_DEVICE("overlay", address_map_bank_device, amap32) - AM_RANGE(0x00b80000, 0x00bfffff) AM_READWRITE16(cia_r, cia_w, 0xffffffff) - AM_RANGE(0x00c00000, 0x00cfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0x00d00000, 0x00dbffff) AM_NOP - AM_RANGE(0x00dc0000, 0x00dcffff) AM_DEVREADWRITE8("rtc", rp5c01_device, read, write, 0x000000ff) - AM_RANGE(0x00dd0000, 0x00ddffff) AM_READWRITE(scsi_r, scsi_w) - AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w) - AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space - AM_RANGE(0x00f80000, 0x00ffffff) AM_ROM AM_REGION("kickstart", 0) - AM_RANGE(0x07f00000, 0x07ffffff) AM_RAM // motherboard ram (up to 16mb), grows downward -ADDRESS_MAP_END +void cdtv_state::cdtv_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(cdtv_state::cia_r), FUNC(cdtv_state::cia_w)); + map(0xc00000, 0xd7ffff).rw(this, FUNC(cdtv_state::custom_chip_r), FUNC(cdtv_state::custom_chip_w)); + map(0xd80000, 0xdbffff).noprw(); + map(0xdc0000, 0xdc7fff).rw(this, FUNC(cdtv_state::clock_r), FUNC(cdtv_state::clock_w)); + map(0xdc8000, 0xdc87ff).mirror(0x7800).ram().share("sram"); + map(0xdd0000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(cdtv_state::custom_chip_r), FUNC(cdtv_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(cdtv_state::custom_chip_r), FUNC(cdtv_state::custom_chip_w)); + map(0xe00000, 0xe3ffff).mirror(0x40000).ram().share("memcard"); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf00000, 0xf3ffff).mirror(0x40000).rom().region("cdrom", 0); + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} + +void cdtv_state::cdtv_rc_mem(address_map &map) +{ + map(0x0800, 0x0fff).rom().region("rcmcu", 0); +} + +void a3000_state::a3000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x001fffff).m(m_overlay, FUNC(address_map_bank_device::amap32)); + map(0x00b80000, 0x00bfffff).rw(this, FUNC(a3000_state::cia_r), FUNC(a3000_state::cia_w)); + map(0x00c00000, 0x00cfffff).rw(this, FUNC(a3000_state::custom_chip_r), FUNC(a3000_state::custom_chip_w)); + map(0x00d00000, 0x00dbffff).noprw(); + map(0x00dc0000, 0x00dcffff).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)).umask32(0x000000ff); + map(0x00dd0000, 0x00ddffff).rw(this, FUNC(a3000_state::scsi_r), FUNC(a3000_state::scsi_w)); + map(0x00de0000, 0x00deffff).rw(this, FUNC(a3000_state::motherboard_r), FUNC(a3000_state::motherboard_w)); + map(0x00df0000, 0x00dfffff).rw(this, FUNC(a3000_state::custom_chip_r), FUNC(a3000_state::custom_chip_w)); + map(0x00e80000, 0x00efffff).noprw(); // autoconfig space (installed by devices) + map(0x00f00000, 0x00f7ffff).noprw(); // cartridge space + map(0x00f80000, 0x00ffffff).rom().region("kickstart", 0); + map(0x07f00000, 0x07ffffff).ram(); // motherboard ram (up to 16mb), grows downward +} // 1MB chip RAM and RTC -ADDRESS_MAP_START(a500p_state::a500p_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xc7ffff) AM_RAM - AM_RANGE(0xc80000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xdbffff) AM_NOP - AM_RANGE(0xdc0000, 0xdc7fff) AM_READWRITE(clock_r, clock_w) - AM_RANGE(0xdc8000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void a500p_state::a500p_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(a500p_state::cia_r), FUNC(a500p_state::cia_w)); + map(0xc00000, 0xc7ffff).ram(); + map(0xc80000, 0xd7ffff).rw(this, FUNC(a500p_state::custom_chip_r), FUNC(a500p_state::custom_chip_w)); + map(0xd80000, 0xdbffff).noprw(); + map(0xdc0000, 0xdc7fff).rw(this, FUNC(a500p_state::clock_r), FUNC(a500p_state::clock_w)); + map(0xdc8000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(a500p_state::custom_chip_r), FUNC(a500p_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(a500p_state::custom_chip_r), FUNC(a500p_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a500p_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} // 1MB chip RAM, IDE and PCMCIA -ADDRESS_MAP_START(a600_state::a600_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0x200000, 0xa7ffff) AM_NOP - AM_RANGE(0xa80000, 0xafffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xb00000, 0xb7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xb80000, 0xbeffff) AM_NOP // reserved (cdtv) - AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE(cia_r, gayle_cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_NOP // slow mem - AM_RANGE(0xd80000, 0xd8ffff) AM_NOP // spare chip select - AM_RANGE(0xd90000, 0xd9ffff) AM_NOP // arcnet chip select - AM_RANGE(0xda0000, 0xdaffff) AM_DEVREADWRITE("gayle", gayle_device, gayle_r, gayle_w) - AM_RANGE(0xdb0000, 0xdbffff) AM_NOP // reserved (external ide) - AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc - AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller) - AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE("gayle", gayle_device, gayle_id_r, gayle_id_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void a600_state::a600_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0x200000, 0xa7ffff).noprw(); + map(0xa80000, 0xafffff).nopw().r(this, FUNC(a600_state::rom_mirror_r)); + map(0xb00000, 0xb7ffff).nopw().r(this, FUNC(a600_state::rom_mirror_r)); + map(0xb80000, 0xbeffff).noprw(); // reserved (cdtv) + map(0xbf0000, 0xbfffff).rw(this, FUNC(a600_state::cia_r), FUNC(a600_state::gayle_cia_w)); + map(0xc00000, 0xd7ffff).noprw(); // slow mem + map(0xd80000, 0xd8ffff).noprw(); // spare chip select + map(0xd90000, 0xd9ffff).noprw(); // arcnet chip select + map(0xda0000, 0xdaffff).rw("gayle", FUNC(gayle_device::gayle_r), FUNC(gayle_device::gayle_w)); + map(0xdb0000, 0xdbffff).noprw(); // reserved (external ide) + map(0xdc0000, 0xdcffff).noprw(); // rtc + map(0xdd0000, 0xddffff).noprw(); // reserved (dma controller) + map(0xde0000, 0xdeffff).rw("gayle", FUNC(gayle_device::gayle_id_r), FUNC(gayle_device::gayle_id_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(a600_state::custom_chip_r), FUNC(a600_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a600_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf00000, 0xf7ffff).noprw(); // cartridge space + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} // 2MB chip RAM, IDE and PCMCIA -ADDRESS_MAP_START(a1200_state::a1200_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32) - AM_RANGE(0x200000, 0xa7ffff) AM_NOP - AM_RANGE(0xa80000, 0xafffff) AM_WRITENOP AM_READ(rom_mirror32_r) - AM_RANGE(0xb00000, 0xb7ffff) AM_WRITENOP AM_READ(rom_mirror32_r) - AM_RANGE(0xb80000, 0xbeffff) AM_NOP // reserved (cdtv) - AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff) - AM_RANGE(0xc00000, 0xd7ffff) AM_NOP // slow mem - AM_RANGE(0xd80000, 0xd8ffff) AM_NOP // spare chip select - AM_RANGE(0xd90000, 0xd9ffff) AM_NOP // arcnet chip select - AM_RANGE(0xda0000, 0xdaffff) AM_DEVREADWRITE16("gayle", gayle_device, gayle_r, gayle_w, 0xffffffff) - AM_RANGE(0xdb0000, 0xdbffff) AM_NOP // reserved (external ide) - AM_RANGE(0xdc0000, 0xdcffff) AM_NOP // rtc - AM_RANGE(0xdd0000, 0xddffff) AM_NOP // reserved (dma controller) - AM_RANGE(0xde0000, 0xdeffff) AM_DEVREADWRITE16("gayle", gayle_device, gayle_id_r, gayle_id_w, 0xffffffff) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror32_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf00000, 0xf7ffff) AM_NOP // cartridge space - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void a1200_state::a1200_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap32)); + map(0x200000, 0xa7ffff).noprw(); + map(0xa80000, 0xafffff).nopw().r(this, FUNC(a1200_state::rom_mirror32_r)); + map(0xb00000, 0xb7ffff).nopw().r(this, FUNC(a1200_state::rom_mirror32_r)); + map(0xb80000, 0xbeffff).noprw(); // reserved (cdtv) + map(0xbf0000, 0xbfffff).rw(this, FUNC(a1200_state::cia_r), FUNC(a1200_state::gayle_cia_w)); + map(0xc00000, 0xd7ffff).noprw(); // slow mem + map(0xd80000, 0xd8ffff).noprw(); // spare chip select + map(0xd90000, 0xd9ffff).noprw(); // arcnet chip select + map(0xda0000, 0xdaffff).rw("gayle", FUNC(gayle_device::gayle_r), FUNC(gayle_device::gayle_w)); + map(0xdb0000, 0xdbffff).noprw(); // reserved (external ide) + map(0xdc0000, 0xdcffff).noprw(); // rtc + map(0xdd0000, 0xddffff).noprw(); // reserved (dma controller) + map(0xde0000, 0xdeffff).rw("gayle", FUNC(gayle_device::gayle_id_r), FUNC(gayle_device::gayle_id_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(a1200_state::custom_chip_r), FUNC(a1200_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(a1200_state::rom_mirror32_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf00000, 0xf7ffff).noprw(); // cartridge space + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} // 2MB chip RAM, 4 MB fast RAM, RTC and IDE -ADDRESS_MAP_START(a4000_state::a4000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x001fffff) AM_DEVICE("overlay", address_map_bank_device, amap32) - AM_RANGE(0x00200000, 0x009fffff) AM_NOP // zorro2 expansion - AM_RANGE(0x00a00000, 0x00b7ffff) AM_NOP - AM_RANGE(0x00b80000, 0x00beffff) AM_NOP - AM_RANGE(0x00bf0000, 0x00bfffff) AM_READWRITE16(cia_r, cia_w, 0xffffffff) - AM_RANGE(0x00c00000, 0x00cfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0x00d00000, 0x00d9ffff) AM_NOP - AM_RANGE(0x00da0000, 0x00dbffff) AM_NOP - AM_RANGE(0x00dc0000, 0x00dcffff) AM_DEVREADWRITE8("rtc", rp5c01_device, read, write, 0x000000ff) - AM_RANGE(0x00dd0000, 0x00dd0fff) AM_NOP - AM_RANGE(0x00dd1000, 0x00dd3fff) AM_READWRITE16(ide_r, ide_w, 0xffffffff) - AM_RANGE(0x00dd4000, 0x00ddffff) AM_NOP - AM_RANGE(0x00de0000, 0x00deffff) AM_READWRITE(motherboard_r, motherboard_w) - AM_RANGE(0x00df0000, 0x00dfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0x00e00000, 0x00e7ffff) AM_WRITENOP AM_READ(rom_mirror32_r) - AM_RANGE(0x00e80000, 0x00efffff) AM_NOP // zorro2 autoconfig space (installed by devices) - AM_RANGE(0x00f00000, 0x00f7ffff) AM_NOP // cartridge space - AM_RANGE(0x00f80000, 0x00ffffff) AM_ROM AM_REGION("kickstart", 0) - AM_RANGE(0x01000000, 0x017fffff) AM_NOP // reserved (8 mb chip ram) - AM_RANGE(0x01800000, 0x06ffffff) AM_NOP // reserved (motherboard fast ram expansion) - AM_RANGE(0x07000000, 0x07bfffff) AM_NOP // motherboard ram - AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM // motherboard ram (up to 16mb), grows downward -ADDRESS_MAP_END +void a4000_state::a4000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x001fffff).m(m_overlay, FUNC(address_map_bank_device::amap32)); + map(0x00200000, 0x009fffff).noprw(); // zorro2 expansion + map(0x00a00000, 0x00b7ffff).noprw(); + map(0x00b80000, 0x00beffff).noprw(); + map(0x00bf0000, 0x00bfffff).rw(this, FUNC(a4000_state::cia_r), FUNC(a4000_state::cia_w)); + map(0x00c00000, 0x00cfffff).rw(this, FUNC(a4000_state::custom_chip_r), FUNC(a4000_state::custom_chip_w)); + map(0x00d00000, 0x00d9ffff).noprw(); + map(0x00da0000, 0x00dbffff).noprw(); + map(0x00dc0000, 0x00dcffff).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)).umask32(0x000000ff); + map(0x00dd0000, 0x00dd0fff).noprw(); + map(0x00dd1000, 0x00dd3fff).rw(this, FUNC(a4000_state::ide_r), FUNC(a4000_state::ide_w)); + map(0x00dd4000, 0x00ddffff).noprw(); + map(0x00de0000, 0x00deffff).rw(this, FUNC(a4000_state::motherboard_r), FUNC(a4000_state::motherboard_w)); + map(0x00df0000, 0x00dfffff).rw(this, FUNC(a4000_state::custom_chip_r), FUNC(a4000_state::custom_chip_w)); + map(0x00e00000, 0x00e7ffff).nopw().r(this, FUNC(a4000_state::rom_mirror32_r)); + map(0x00e80000, 0x00efffff).noprw(); // zorro2 autoconfig space (installed by devices) + map(0x00f00000, 0x00f7ffff).noprw(); // cartridge space + map(0x00f80000, 0x00ffffff).rom().region("kickstart", 0); + map(0x01000000, 0x017fffff).noprw(); // reserved (8 mb chip ram) + map(0x01800000, 0x06ffffff).noprw(); // reserved (motherboard fast ram expansion) + map(0x07000000, 0x07bfffff).noprw(); // motherboard ram + map(0x07c00000, 0x07ffffff).ram(); // motherboard ram (up to 16mb), grows downward +} // 2MB chip RAM, 2 MB fast RAM, RTC and IDE -ADDRESS_MAP_START(a4000_state::a400030_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(a4000_mem) - AM_RANGE(0x07000000, 0x07dfffff) AM_NOP // motherboard ram - AM_RANGE(0x07e00000, 0x07ffffff) AM_RAM // motherboard ram (up to 16mb), grows downward -ADDRESS_MAP_END +void a4000_state::a400030_mem(address_map &map) +{ + map.unmap_value_high(); + a4000_mem(map); + map(0x07000000, 0x07dfffff).noprw(); // motherboard ram + map(0x07e00000, 0x07ffffff).ram(); // motherboard ram (up to 16mb), grows downward +} // 2MB chip RAM and CD-ROM -ADDRESS_MAP_START(cd32_state::cd32_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32) - AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write) - AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000) - AM_RANGE(0xe80000, 0xf7ffff) AM_NOP - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void cd32_state::cd32_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap32)); + map(0xb80000, 0xb8003f).rw("akiko", FUNC(akiko_device::read), FUNC(akiko_device::write)); + map(0xbf0000, 0xbfffff).rw(this, FUNC(cd32_state::cia_r), FUNC(cd32_state::gayle_cia_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(cd32_state::custom_chip_r), FUNC(cd32_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).rom().region("kickstart", 0x80000); + map(0xe80000, 0xf7ffff).noprw(); + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} // 2 MB chip RAM, IDE, RTC and SCSI -ADDRESS_MAP_START(a4000_state::a4000t_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(a4000_mem) - AM_RANGE(0x00dd0000, 0x00dd0fff) AM_READWRITE(scsi_r, scsi_w) -ADDRESS_MAP_END +void a4000_state::a4000t_mem(address_map &map) +{ + map.unmap_value_high(); + a4000_mem(map); + map(0x00dd0000, 0x00dd0fff).rw(this, FUNC(a4000_state::scsi_r), FUNC(a4000_state::scsi_w)); +} //************************************************************************** diff --git a/src/mame/drivers/ampex.cpp b/src/mame/drivers/ampex.cpp index 5215627c80c..72ba0eec193 100644 --- a/src/mame/drivers/ampex.cpp +++ b/src/mame/drivers/ampex.cpp @@ -157,20 +157,21 @@ WRITE_LINE_MEMBER(ampex_state::dav_w) // DAV should generate RST 7 } -ADDRESS_MAP_START(ampex_state::mem_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x4000, 0x43ff) AM_RAM // main RAM - AM_RANGE(0x4400, 0x57ff) AM_RAM // expansion RAM - AM_RANGE(0x5840, 0x5840) AM_READWRITE(read_5840, write_5840) - AM_RANGE(0x5841, 0x5841) AM_READWRITE(read_5841, write_5841) - AM_RANGE(0x5842, 0x5842) AM_READ(read_5842) AM_DEVWRITE("uart", ay31015_device, transmit) - AM_RANGE(0x5843, 0x5843) AM_DEVREAD("uart", ay31015_device, receive) AM_WRITE(write_5843) - AM_RANGE(0x5846, 0x5846) AM_READ(read_5846) - AM_RANGE(0x5847, 0x5847) AM_READ(read_5847) - AM_RANGE(0x5c00, 0x5c0f) AM_DEVREADWRITE("vtac", crt5037_device, read, write) - AM_RANGE(0x8000, 0x97ff) AM_READWRITE(page_r, page_w) - AM_RANGE(0xc000, 0xcfff) AM_RAM // video RAM -ADDRESS_MAP_END +void ampex_state::mem_map(address_map &map) +{ + map(0x0000, 0x2fff).rom().region("roms", 0); + map(0x4000, 0x43ff).ram(); // main RAM + map(0x4400, 0x57ff).ram(); // expansion RAM + map(0x5840, 0x5840).rw(this, FUNC(ampex_state::read_5840), FUNC(ampex_state::write_5840)); + map(0x5841, 0x5841).rw(this, FUNC(ampex_state::read_5841), FUNC(ampex_state::write_5841)); + map(0x5842, 0x5842).r(this, FUNC(ampex_state::read_5842)).w(m_uart, FUNC(ay31015_device::transmit)); + map(0x5843, 0x5843).r(m_uart, FUNC(ay31015_device::receive)).w(this, FUNC(ampex_state::write_5843)); + map(0x5846, 0x5846).r(this, FUNC(ampex_state::read_5846)); + map(0x5847, 0x5847).r(this, FUNC(ampex_state::read_5847)); + map(0x5c00, 0x5c0f).rw("vtac", FUNC(crt5037_device::read), FUNC(crt5037_device::write)); + map(0x8000, 0x97ff).rw(this, FUNC(ampex_state::page_r), FUNC(ampex_state::page_w)); + map(0xc000, 0xcfff).ram(); // video RAM +} static INPUT_PORTS_START( ampex ) INPUT_PORTS_END diff --git a/src/mame/drivers/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp index 521487f7ed6..e37917f1fa2 100644 --- a/src/mame/drivers/ampoker2.cpp +++ b/src/mame/drivers/ampoker2.cpp @@ -591,35 +591,37 @@ WRITE8_MEMBER(ampoker2_state::ampoker2_watchdog_reset_w) * Memory map information * *************************/ -ADDRESS_MAP_START(ampoker2_state::ampoker2_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(ampoker2_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ampoker2_state::ampoker2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x0f) AM_WRITENOP /* inexistent in the real hardware */ - AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0") - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") - AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2") - AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3") - AM_RANGE(0x14, 0x14) AM_READ_PORT("IN4") - AM_RANGE(0x15, 0x15) AM_READ_PORT("IN5") - AM_RANGE(0x16, 0x16) AM_READ_PORT("IN6") - AM_RANGE(0x17, 0x17) AM_READ_PORT("IN7") +void ampoker2_state::ampoker2_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().share("nvram"); + map(0xe000, 0xefff).ram().w(this, FUNC(ampoker2_state::ampoker2_videoram_w)).share("videoram"); +} + +void ampoker2_state::ampoker2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x0f).nopw(); /* inexistent in the real hardware */ + map(0x10, 0x10).portr("IN0"); + map(0x11, 0x11).portr("IN1"); + map(0x12, 0x12).portr("IN2"); + map(0x13, 0x13).portr("IN3"); + map(0x14, 0x14).portr("IN4"); + map(0x15, 0x15).portr("IN5"); + map(0x16, 0x16).portr("IN6"); + map(0x17, 0x17).portr("IN7"); // AM_RANGE(0x21, 0x21) AM_WRITENOP /* undocumented, write 0x1a after each reset */ - AM_RANGE(0x30, 0x30) AM_WRITE(ampoker2_port30_w) /* see write handlers */ - AM_RANGE(0x31, 0x31) AM_WRITE(ampoker2_port31_w) /* see write handlers */ - AM_RANGE(0x32, 0x32) AM_WRITE(ampoker2_port32_w) /* see write handlers */ - AM_RANGE(0x33, 0x33) AM_WRITE(ampoker2_port33_w) /* see write handlers */ - AM_RANGE(0x34, 0x34) AM_WRITE(ampoker2_port34_w) /* see write handlers */ - AM_RANGE(0x35, 0x35) AM_WRITE(ampoker2_port35_w) /* see write handlers */ - AM_RANGE(0x36, 0x36) AM_WRITE(ampoker2_port36_w) /* see write handlers */ - AM_RANGE(0x37, 0x37) AM_WRITE(ampoker2_watchdog_reset_w) - AM_RANGE(0x38, 0x39) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x3A, 0x3A) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END + map(0x30, 0x30).w(this, FUNC(ampoker2_state::ampoker2_port30_w)); /* see write handlers */ + map(0x31, 0x31).w(this, FUNC(ampoker2_state::ampoker2_port31_w)); /* see write handlers */ + map(0x32, 0x32).w(this, FUNC(ampoker2_state::ampoker2_port32_w)); /* see write handlers */ + map(0x33, 0x33).w(this, FUNC(ampoker2_state::ampoker2_port33_w)); /* see write handlers */ + map(0x34, 0x34).w(this, FUNC(ampoker2_state::ampoker2_port34_w)); /* see write handlers */ + map(0x35, 0x35).w(this, FUNC(ampoker2_state::ampoker2_port35_w)); /* see write handlers */ + map(0x36, 0x36).w(this, FUNC(ampoker2_state::ampoker2_port36_w)); /* see write handlers */ + map(0x37, 0x37).w(this, FUNC(ampoker2_state::ampoker2_watchdog_reset_w)); + map(0x38, 0x39).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x3A, 0x3A).r("aysnd", FUNC(ay8910_device::data_r)); +} /* diff --git a/src/mame/drivers/ampro.cpp b/src/mame/drivers/ampro.cpp index cf31b75d42e..7eaf2ad1784 100644 --- a/src/mame/drivers/ampro.cpp +++ b/src/mame/drivers/ampro.cpp @@ -96,25 +96,27 @@ WRITE8_MEMBER( ampro_state::io_w ) m_dart->ba_cd_w(space, offset>>2, data); } -ADDRESS_MAP_START(ampro_state::ampro_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x1000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ampro_state::ampro_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(port00_w) // system +void ampro_state::ampro_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0xffff).ram(); +} + +void ampro_state::ampro_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(ampro_state::port00_w)); // system //AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // printer data //AM_RANGE(0x02, 0x03) AM_WRITE(port02_w) // printer strobe //AM_RANGE(0x20, 0x27) AM_READWRITE() // scsi chip //AM_RANGE(0x28, 0x28) AM_WRITE(port28_w) // scsi control //AM_RANGE(0x29, 0x29) AM_READ(port29_r) // ID port - AM_RANGE(0x40, 0x8f) AM_READWRITE(io_r,io_w) - AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("fdc", wd1772_device, write) - AM_RANGE(0xc4, 0xc7) AM_DEVREAD("fdc", wd1772_device, read) -ADDRESS_MAP_END + map(0x40, 0x8f).rw(this, FUNC(ampro_state::io_r), FUNC(ampro_state::io_w)); + map(0xc0, 0xc3).w(m_fdc, FUNC(wd1772_device::write)); + map(0xc4, 0xc7).r(m_fdc, FUNC(wd1772_device::read)); +} static const z80_daisy_config daisy_chain_intf[] = { diff --git a/src/mame/drivers/ampscarp.cpp b/src/mame/drivers/ampscarp.cpp index 6ff844712a9..174151dc9b3 100644 --- a/src/mame/drivers/ampscarp.cpp +++ b/src/mame/drivers/ampscarp.cpp @@ -28,9 +28,10 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(ampscarp_state::mem_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void ampscarp_state::mem_map(address_map &map) +{ + map(0x0000, 0xffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( ampscarp ) INPUT_PORTS_END diff --git a/src/mame/drivers/amspdwy.cpp b/src/mame/drivers/amspdwy.cpp index 62afe73e49e..3d1d26ca1d0 100644 --- a/src/mame/drivers/amspdwy.cpp +++ b/src/mame/drivers/amspdwy.cpp @@ -71,26 +71,28 @@ READ8_MEMBER(amspdwy_state::amspdwy_sound_r) return (m_ym2151->status_r(space, 0) & ~0x30) | ioport("IN0")->read(); } -ADDRESS_MAP_START(amspdwy_state::amspdwy_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x801f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(amspdwy_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(amspdwy_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9c00, 0x9fff) AM_RAM // unused? +void amspdwy_state::amspdwy_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x801f).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(amspdwy_state::amspdwy_videoram_w)).share("videoram"); + map(0x9800, 0x9bff).ram().w(this, FUNC(amspdwy_state::amspdwy_colorram_w)).share("colorram"); + map(0x9c00, 0x9fff).ram(); // unused? // AM_RANGE(0xa000, 0xa000) AM_WRITENOP // ? - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW1") - AM_RANGE(0xa400, 0xa400) AM_READ_PORT("DSW2") AM_WRITE(amspdwy_flipscreen_w) - AM_RANGE(0xa800, 0xa800) AM_READ(amspdwy_wheel_0_r) - AM_RANGE(0xac00, 0xac00) AM_READ(amspdwy_wheel_1_r) - AM_RANGE(0xb000, 0xb000) AM_WRITENOP // irq ack? - AM_RANGE(0xb400, 0xb400) AM_READ(amspdwy_sound_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END + map(0xa000, 0xa000).portr("DSW1"); + map(0xa400, 0xa400).portr("DSW2").w(this, FUNC(amspdwy_state::amspdwy_flipscreen_w)); + map(0xa800, 0xa800).r(this, FUNC(amspdwy_state::amspdwy_wheel_0_r)); + map(0xac00, 0xac00).r(this, FUNC(amspdwy_state::amspdwy_wheel_1_r)); + map(0xb000, 0xb000).nopw(); // irq ack? + map(0xb400, 0xb400).r(this, FUNC(amspdwy_state::amspdwy_sound_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc000, 0xc0ff).ram().share("spriteram"); + map(0xe000, 0xe7ff).ram(); +} -ADDRESS_MAP_START(amspdwy_state::amspdwy_portmap) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("tracks", 0) -ADDRESS_MAP_END +void amspdwy_state::amspdwy_portmap(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("tracks", 0); +} @@ -102,14 +104,15 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(amspdwy_state::amspdwy_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void amspdwy_state::amspdwy_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ? writes 0 at start - AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ? -ADDRESS_MAP_END + map(0x9000, 0x9000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xa000, 0xa001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc000, 0xdfff).ram(); + map(0xffff, 0xffff).nopr(); // ??? IY = FFFF at the start ? +} diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp index 5542f2056ce..d2aedc4bebc 100644 --- a/src/mame/drivers/amstr_pc.cpp +++ b/src/mame/drivers/amstr_pc.cpp @@ -96,32 +96,36 @@ public: void ppc640_map(address_map &map); }; -ADDRESS_MAP_START(amstrad_pc_state::ppc640_map) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(amstrad_pc_state::pc2086_map) - AM_RANGE(0xc0000, 0xc9fff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0x10000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(amstrad_pc_state::pc200_io) - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", pc_noppi_mb_device, map, 0xffff) - AM_RANGE(0x0060, 0x0065) AM_READWRITE8(pc1640_port60_r, pc1640_port60_w, 0xffff) - AM_RANGE(0x0078, 0x0079) AM_READWRITE8(pc1640_mouse_x_r, pc1640_mouse_x_w, 0xffff) - AM_RANGE(0x007a, 0x007b) AM_READWRITE8(pc1640_mouse_y_r, pc1640_mouse_y_w, 0xffff) - AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff) - AM_RANGE(0x0278, 0x027b) AM_READ8(pc200_port278_r, 0xffff) - AM_RANGE(0x0278, 0x027b) AM_DEVWRITE8("lpt_2", pc_lpt_device, write, 0x00ff) - AM_RANGE(0x0378, 0x037b) AM_READ8(pc200_port378_r, 0xffff) - AM_RANGE(0x0378, 0x037b) AM_DEVWRITE8("lpt_1", pc_lpt_device, write, 0x00ff) - AM_RANGE(0x03bc, 0x03bf) AM_DEVREADWRITE8("lpt_0", pc_lpt_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(amstrad_pc_state::ppc512_io) - AM_IMPORT_FROM(pc200_io) - AM_RANGE(0x0070, 0x0071) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0xffff) -ADDRESS_MAP_END +void amstrad_pc_state::ppc640_map(address_map &map) +{ + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void amstrad_pc_state::pc2086_map(address_map &map) +{ + map(0xc0000, 0xc9fff).rom().region("bios", 0); + map(0xf0000, 0xfffff).rom().region("bios", 0x10000); +} + +void amstrad_pc_state::pc200_io(address_map &map) +{ + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x0060, 0x0065).rw(this, FUNC(amstrad_pc_state::pc1640_port60_r), FUNC(amstrad_pc_state::pc1640_port60_w)); + map(0x0078, 0x0079).rw(this, FUNC(amstrad_pc_state::pc1640_mouse_x_r), FUNC(amstrad_pc_state::pc1640_mouse_x_w)); + map(0x007a, 0x007b).rw(this, FUNC(amstrad_pc_state::pc1640_mouse_y_r), FUNC(amstrad_pc_state::pc1640_mouse_y_w)); + map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w)); + map(0x0278, 0x027b).r(this, FUNC(amstrad_pc_state::pc200_port278_r)); + map(0x0278, 0x027b).w(m_lpt2, FUNC(pc_lpt_device::write)).umask16(0x00ff); + map(0x0378, 0x037b).r(this, FUNC(amstrad_pc_state::pc200_port378_r)); + map(0x0378, 0x037b).w(m_lpt1, FUNC(pc_lpt_device::write)).umask16(0x00ff); + map(0x03bc, 0x03bf).rw("lpt_0", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask16(0x00ff); +} + +void amstrad_pc_state::ppc512_io(address_map &map) +{ + pc200_io(map); + map(0x0070, 0x0071).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)); +} /* pc20 (v2) fc078 diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index 2455770d97c..2927b07a376 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -123,23 +123,25 @@ Some bugs left : /* Memory is banked in 16k blocks. However, the multiface pages the memory in 8k blocks! The ROM can be paged into bank 0 and bank 3. */ -ADDRESS_MAP_START(amstrad_state::amstrad_mem) - AM_RANGE(0x00000, 0x01fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank9") - AM_RANGE(0x02000, 0x03fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank10") - AM_RANGE(0x04000, 0x05fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank11") - AM_RANGE(0x06000, 0x07fff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank12") - AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank13") - AM_RANGE(0x0a000, 0x0bfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank14") - AM_RANGE(0x0c000, 0x0dfff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank15") - AM_RANGE(0x0e000, 0x0ffff) AM_READ_BANK("bank8") AM_WRITE_BANK("bank16") -ADDRESS_MAP_END +void amstrad_state::amstrad_mem(address_map &map) +{ + map(0x00000, 0x01fff).bankr("bank1").bankw("bank9"); + map(0x02000, 0x03fff).bankr("bank2").bankw("bank10"); + map(0x04000, 0x05fff).bankr("bank3").bankw("bank11"); + map(0x06000, 0x07fff).bankr("bank4").bankw("bank12"); + map(0x08000, 0x09fff).bankr("bank5").bankw("bank13"); + map(0x0a000, 0x0bfff).bankr("bank6").bankw("bank14"); + map(0x0c000, 0x0dfff).bankr("bank7").bankw("bank15"); + map(0x0e000, 0x0ffff).bankr("bank8").bankw("bank16"); +} /* I've handled the I/O ports in this way, because the ports are not fully decoded by the CPC h/w. Doing it this way means I can decode it myself and a lot of software should work */ -ADDRESS_MAP_START(amstrad_state::amstrad_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(amstrad_cpc_io_r, amstrad_cpc_io_w ) -ADDRESS_MAP_END +void amstrad_state::amstrad_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(amstrad_state::amstrad_cpc_io_r), FUNC(amstrad_state::amstrad_cpc_io_w)); +} /************************************* diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp index 19fbb84bbe7..4b59576ba5b 100644 --- a/src/mame/drivers/amusco.cpp +++ b/src/mame/drivers/amusco.cpp @@ -199,10 +199,11 @@ void amusco_state::machine_start() * Memory Map Information * *************************/ -ADDRESS_MAP_START(amusco_state::amusco_mem_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM - AM_RANGE(0xf8000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void amusco_state::amusco_mem_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); + map(0xf8000, 0xfffff).rom(); +} READ8_MEMBER( amusco_state::mc6845_r) { @@ -358,17 +359,18 @@ WRITE8_MEMBER(amusco_state::rtc_control_w) m_rtc->read_w(BIT(data, 4)); } -ADDRESS_MAP_START(amusco_state::amusco_io_map) - AM_RANGE(0x0000, 0x0001) AM_READWRITE(mc6845_r, mc6845_w) - AM_RANGE(0x0010, 0x0011) AM_DEVWRITE("pic8259", pic8259_device, write) - AM_RANGE(0x0020, 0x0023) AM_DEVWRITE("pit8253", pit8253_device, write) - AM_RANGE(0x0030, 0x0033) AM_DEVREADWRITE("ppi_outputs", i8255_device, read, write) - AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("ppi_inputs", i8255_device, read, write) - AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("sn", sn76489a_device, write) - AM_RANGE(0x0070, 0x0071) AM_WRITE(vram_w) - AM_RANGE(0x0280, 0x0283) AM_DEVREADWRITE("lpt_interface", i8155_device, io_r, io_w) - AM_RANGE(0x0380, 0x0383) AM_DEVREADWRITE("rtc_interface", i8155_device, io_r, io_w) -ADDRESS_MAP_END +void amusco_state::amusco_io_map(address_map &map) +{ + map(0x0000, 0x0001).rw(this, FUNC(amusco_state::mc6845_r), FUNC(amusco_state::mc6845_w)); + map(0x0010, 0x0011).w(m_pic, FUNC(pic8259_device::write)); + map(0x0020, 0x0023).w(m_pit, FUNC(pit8253_device::write)); + map(0x0030, 0x0033).rw("ppi_outputs", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0040, 0x0043).rw("ppi_inputs", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0060, 0x0060).w("sn", FUNC(sn76489a_device::write)); + map(0x0070, 0x0071).w(this, FUNC(amusco_state::vram_w)); + map(0x0280, 0x0283).rw("lpt_interface", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x0380, 0x0383).rw("rtc_interface", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} /* I/O byte R/W diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp index bf770d4e8ba..0836ac65c6e 100644 --- a/src/mame/drivers/amust.cpp +++ b/src/mame/drivers/amust.cpp @@ -174,27 +174,29 @@ void amust_state::device_timer(emu_timer &timer, device_timer_id id, int param, // floppy->ss_w(BIT(data, 4)); //} -ADDRESS_MAP_START(amust_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") -ADDRESS_MAP_END - -ADDRESS_MAP_START(amust_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0x0d, 0x0d) AM_READNOP AM_WRITE(port0d_w) - AM_RANGE(0x0e, 0x0e) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", upd765a_device, map) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("pit", pit8253_device, read, write) -ADDRESS_MAP_END +void amust_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xf7ff).ram(); + map(0xf800, 0xffff).bankr("bankr0").bankw("bankw0"); +} + +void amust_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x02, 0x02).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x03, 0x03).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x04, 0x07).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0d, 0x0d).nopr().w(this, FUNC(amust_state::port0d_w)); + map(0x0e, 0x0e).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x0f, 0x0f).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x10, 0x11).m(m_fdc, FUNC(upd765a_device::map)); + map(0x14, 0x17).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); +} static SLOT_INTERFACE_START( amust_floppies ) SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) diff --git a/src/mame/drivers/anes.cpp b/src/mame/drivers/anes.cpp index f09051f21bb..9087fbda23f 100644 --- a/src/mame/drivers/anes.cpp +++ b/src/mame/drivers/anes.cpp @@ -76,27 +76,29 @@ WRITE8_MEMBER(anes_state::blit_trigger_w) //printf("%02x%02x%02x\n",m_vram_offset[0],m_vram_offset[1],m_vram_offset[2]); } -ADDRESS_MAP_START(anes_state::prg_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(anes_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - - AM_RANGE(0x07, 0x07) AM_WRITENOP // mux write - AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym", ym2413_device, write) - AM_RANGE(0x0a, 0x0a) AM_WRITE(blit_trigger_w) +void anes_state::prg_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram(); +} + +void anes_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + + map(0x07, 0x07).nopw(); // mux write + map(0x08, 0x09).w("ym", FUNC(ym2413_device::write)); + map(0x0a, 0x0a).w(this, FUNC(anes_state::blit_trigger_w)); // AM_RANGE(0x0b, 0x0b) AM_WRITE(blit_mode_w) - AM_RANGE(0x0c, 0x0e) AM_WRITE(vram_offset_w) - AM_RANGE(0x11, 0x11) AM_READ_PORT("DSW1") - AM_RANGE(0x12, 0x12) AM_READ_PORT("DSW2") - AM_RANGE(0x13, 0x13) AM_READ_PORT("DSW3") - AM_RANGE(0x14, 0x15) AM_READNOP // mux read - AM_RANGE(0x16, 0x16) AM_READ_PORT("IN0") AM_WRITENOP + map(0x0c, 0x0e).w(this, FUNC(anes_state::vram_offset_w)); + map(0x11, 0x11).portr("DSW1"); + map(0x12, 0x12).portr("DSW2"); + map(0x13, 0x13).portr("DSW3"); + map(0x14, 0x15).nopr(); // mux read + map(0x16, 0x16).portr("IN0").nopw(); // AM_RANGE(0xfe, 0xfe) banking? unknown ROM range -ADDRESS_MAP_END +} static INPUT_PORTS_START( anes ) diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp index b36838e613b..9438ccfd0a0 100644 --- a/src/mame/drivers/angelkds.cpp +++ b/src/mame/drivers/angelkds.cpp @@ -165,39 +165,42 @@ contain a level. */ -ADDRESS_MAP_START(angelkds_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(angelkds_bgtopvideoram_w) AM_SHARE("bgtopvideoram") /* Top Half of Screen */ - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(angelkds_bgbotvideoram_w) AM_SHARE("bgbotvideoram") /* Bottom Half of Screen */ - AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(angelkds_txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xec00, 0xecff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xed00, 0xedff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xee00, 0xeeff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xef00, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_WRITE(angelkds_bgtopbank_write) - AM_RANGE(0xf001, 0xf001) AM_WRITE(angelkds_bgtopscroll_write) - AM_RANGE(0xf002, 0xf002) AM_WRITE(angelkds_bgbotbank_write) - AM_RANGE(0xf003, 0xf003) AM_WRITE(angelkds_bgbotscroll_write) - AM_RANGE(0xf004, 0xf004) AM_WRITE(angelkds_txbank_write) - AM_RANGE(0xf005, 0xf005) AM_WRITE(angelkds_layer_ctrl_write) -ADDRESS_MAP_END +void angelkds_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe3ff).ram().w(this, FUNC(angelkds_state::angelkds_bgtopvideoram_w)).share("bgtopvideoram"); /* Top Half of Screen */ + map(0xe400, 0xe7ff).ram().w(this, FUNC(angelkds_state::angelkds_bgbotvideoram_w)).share("bgbotvideoram"); /* Bottom Half of Screen */ + map(0xe800, 0xebff).ram().w(this, FUNC(angelkds_state::angelkds_txvideoram_w)).share("txvideoram"); + map(0xec00, 0xecff).ram().share("spriteram"); + map(0xed00, 0xedff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xee00, 0xeeff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xef00, 0xefff).ram(); + map(0xf000, 0xf000).w(this, FUNC(angelkds_state::angelkds_bgtopbank_write)); + map(0xf001, 0xf001).w(this, FUNC(angelkds_state::angelkds_bgtopscroll_write)); + map(0xf002, 0xf002).w(this, FUNC(angelkds_state::angelkds_bgbotbank_write)); + map(0xf003, 0xf003).w(this, FUNC(angelkds_state::angelkds_bgbotscroll_write)); + map(0xf004, 0xf004).w(this, FUNC(angelkds_state::angelkds_txbank_write)); + map(0xf005, 0xf005).w(this, FUNC(angelkds_state::angelkds_layer_ctrl_write)); +} -ADDRESS_MAP_START(angelkds_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void angelkds_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).bankr("bank1"); +} -ADDRESS_MAP_START(angelkds_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP // 00 on start-up, not again +void angelkds_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); // 00 on start-up, not again - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) + map(0x40, 0x43).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); - AM_RANGE(0xc0, 0xc3) AM_READWRITE(angelkds_main_sound_r, angelkds_main_sound_w) // 02 various points -ADDRESS_MAP_END + map(0xc0, 0xc3).rw(this, FUNC(angelkds_state::angelkds_main_sound_r), FUNC(angelkds_state::angelkds_main_sound_w)); // 02 various points +} @@ -205,20 +208,22 @@ ADDRESS_MAP_END /* sub cpu */ -ADDRESS_MAP_START(angelkds_state::sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xaaa9, 0xaaa9) AM_READNOP - AM_RANGE(0xaaab, 0xaaab) AM_READNOP - AM_RANGE(0xaaac, 0xaaac) AM_READNOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(angelkds_state::sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0x80, 0x83) AM_READWRITE(angelkds_sub_sound_r, angelkds_sub_sound_w) // spcpostn -ADDRESS_MAP_END +void angelkds_state::sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xaaa9, 0xaaa9).nopr(); + map(0xaaab, 0xaaab).nopr(); + map(0xaaac, 0xaaac).nopr(); +} + +void angelkds_state::sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x40, 0x41).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x83).rw(this, FUNC(angelkds_state::angelkds_sub_sound_r), FUNC(angelkds_state::angelkds_sub_sound_w)); // spcpostn +} /* Input Ports */ diff --git a/src/mame/drivers/anzterm.cpp b/src/mame/drivers/anzterm.cpp index 6e588e1f21b..07903d28fbf 100644 --- a/src/mame/drivers/anzterm.cpp +++ b/src/mame/drivers/anzterm.cpp @@ -401,13 +401,14 @@ GFXDECODE_START( anzterm ) GFXDECODE_END -ADDRESS_MAP_START(anzterm_state::anzterm) +void anzterm_state::anzterm(address_map &map) +{ // There are two battery-backed 2kB SRAM chips with a 4kb SRAM chip for parity // There are two 64kB DRAM banks (with parity) // There's also a whole lot of ROM - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x0000, 0x3fff).ram(); + map(0xe000, 0xffff).rom(); +} MACHINE_CONFIG_START(anzterm_state::anzterm) diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp index d640b94a516..0d982b2a1ac 100644 --- a/src/mame/drivers/apc.cpp +++ b/src/mame/drivers/apc.cpp @@ -470,39 +470,41 @@ RTC write bits: 76543210 m_rtc->oe_w(1); } -ADDRESS_MAP_START(apc_state::apc_map) - AM_RANGE(0x00000, 0x9ffff) AM_RAM - AM_RANGE(0xa0000, 0xa0fff) AM_RAM AM_SHARE("cmos") +void apc_state::apc_map(address_map &map) +{ + map(0x00000, 0x9ffff).ram(); + map(0xa0000, 0xa0fff).ram().share("cmos"); // AM_RANGE(0xa1000, 0xbffff) mirror CMOS // AM_RANGE(0xc0000, 0xcffff) standard character ROM - AM_RANGE(0xd8000, 0xd9fff) AM_RAM AM_REGION("aux_pcg", 0) // AUX character RAM + map(0xd8000, 0xd9fff).ram().region("aux_pcg", 0); // AUX character RAM // AM_RANGE(0xe0000, 0xeffff) Special Character RAM - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END + map(0xfe000, 0xfffff).rom().region("ipl", 0); +} -ADDRESS_MAP_START(apc_state::apc_io) +void apc_state::apc_io(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1f) AM_READWRITE8(apc_dma_r, apc_dma_w,0xff00) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) // i8259 - AM_RANGE(0x28, 0x2f) AM_READWRITE8(apc_port_28_r, apc_port_28_w, 0xffff) // i8259 (even) / pit8253 (odd) + map(0x00, 0x1f).rw(this, FUNC(apc_state::apc_dma_r), FUNC(apc_state::apc_dma_w)).umask16(0xff00); + map(0x20, 0x23).rw(m_i8259_m, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // i8259 + map(0x28, 0x2f).rw(this, FUNC(apc_state::apc_port_28_r), FUNC(apc_state::apc_port_28_w)); // i8259 (even) / pit8253 (odd) // 0x30, 0x37 serial port 0/1 (i8251) (even/odd) - AM_RANGE(0x38, 0x3f) AM_WRITE8(apc_dma_segments_w,0x00ff) - AM_RANGE(0x40, 0x43) AM_READWRITE8(apc_gdc_r, apc_gdc_w, 0xffff) - AM_RANGE(0x46, 0x47) AM_WRITE8(apc_irq_ack_w, 0x00ff) - AM_RANGE(0x48, 0x4f) AM_READWRITE8(apc_kbd_r, apc_kbd_w, 0x00ff) - AM_RANGE(0x50, 0x53) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff ) // upd765 - AM_RANGE(0x58, 0x59) AM_READWRITE8(apc_rtc_r, apc_rtc_w, 0x00ff) + map(0x38, 0x3f).w(this, FUNC(apc_state::apc_dma_segments_w)).umask16(0x00ff); + map(0x40, 0x43).rw(this, FUNC(apc_state::apc_gdc_r), FUNC(apc_state::apc_gdc_w)); + map(0x46, 0x46).w(this, FUNC(apc_state::apc_irq_ack_w)); + map(0x48, 0x4f).rw(this, FUNC(apc_state::apc_kbd_r), FUNC(apc_state::apc_kbd_w)).umask16(0x00ff); + map(0x50, 0x53).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); // upd765 + map(0x58, 0x58).rw(this, FUNC(apc_state::apc_rtc_r), FUNC(apc_state::apc_rtc_w)); // 0x59 CMOS enable // 0x5a APU data (Arithmetic Processing Unit!) // 0x5b, Power Off // 0x5e APU status/command - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE8("upd1771c", upd1771c_device, read, write, 0x00ff) + map(0x60, 0x60).rw("upd1771c", FUNC(upd1771c_device::read), FUNC(upd1771c_device::write)); // AM_RANGE(0x68, 0x6f) i8255 , ODA printer port (A: status (R) B: data (W) C: command (W)) // 0x70, 0x76 AM_DEVREADWRITE8("upd7220_btm", upd7220_device, read, write, 0x00ff) // 0x71, 0x77 IDA Controller // 0x80, 0x90 Communication Adapter // 0xf0, 0xf6 ASOP Controller -ADDRESS_MAP_END +} /* TODO: key repeat, remove port impulse! */ INPUT_CHANGED_MEMBER(apc_state::key_stroke) @@ -792,13 +794,15 @@ GFXDECODE_END -ADDRESS_MAP_START(apc_state::upd7220_1_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_1") -ADDRESS_MAP_END +void apc_state::upd7220_1_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram().share("video_ram_1"); +} -ADDRESS_MAP_START(apc_state::upd7220_2_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_2") -ADDRESS_MAP_END +void apc_state::upd7220_2_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram().share("video_ram_2"); +} /* irq assignment: diff --git a/src/mame/drivers/apexc.cpp b/src/mame/drivers/apexc.cpp index 5d202fe0bd9..f42a6eb6b19 100644 --- a/src/mame/drivers/apexc.cpp +++ b/src/mame/drivers/apexc.cpp @@ -844,10 +844,11 @@ static GFXDECODE_START( apexc ) GFXDECODE_END -ADDRESS_MAP_START(apexc_state::apexc_mem_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("maincpu") - AM_RANGE(0x1000, 0x7fff) AM_NOP -ADDRESS_MAP_END +void apexc_state::apexc_mem_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("maincpu"); + map(0x1000, 0x7fff).noprw(); +} MACHINE_CONFIG_START(apexc_state::apexc) diff --git a/src/mame/drivers/apf.cpp b/src/mame/drivers/apf.cpp index c613635d5b2..5fc3b8ec472 100644 --- a/src/mame/drivers/apf.cpp +++ b/src/mame/drivers/apf.cpp @@ -314,25 +314,27 @@ WRITE8_MEMBER( apf_state::serial_w) logerror("serial w %04x %04x\n",offset,data); } -ADDRESS_MAP_START(apf_state::apfm1000_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x1000) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x6800, 0x7fff) AM_NOP // BASIC accesses ROM here too, but this is installed at machine_start - AM_RANGE(0x8000, 0x9fff) AM_DEVREAD("cartslot", apf_cart_slot_device, read_rom) - AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apf_state::apfimag_map) - AM_IMPORT_FROM(apfm1000_map) - AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write) +void apf_state::apfm1000_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram().share("videoram"); + map(0x2000, 0x2003).mirror(0x1ffc).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4000, 0x4fff).mirror(0x1000).rom().region("roms", 0); + map(0x6800, 0x7fff).noprw(); // BASIC accesses ROM here too, but this is installed at machine_start + map(0x8000, 0x9fff).r(m_cart, FUNC(apf_cart_slot_device::read_rom)); + map(0xe000, 0xefff).mirror(0x1000).rom().region("roms", 0); +} + +void apf_state::apfimag_map(address_map &map) +{ + apfm1000_map(map); + map(0x6000, 0x6003).mirror(0x03fc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // These need to be confirmed, disk does not work - AM_RANGE(0x6400, 0x64ff) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0x6500, 0x6503) AM_DEVREADWRITE("fdc", fd1771_device, read, write) - AM_RANGE(0x6600, 0x6600) AM_WRITE(apf_dischw_w) - AM_RANGE(0xa000, 0xbfff) AM_RAM // standard - AM_RANGE(0xc000, 0xdfff) AM_RAM // expansion -ADDRESS_MAP_END + map(0x6400, 0x64ff).rw(this, FUNC(apf_state::serial_r), FUNC(apf_state::serial_w)); + map(0x6500, 0x6503).rw(m_fdc, FUNC(fd1771_device::read), FUNC(fd1771_device::write)); + map(0x6600, 0x6600).w(this, FUNC(apf_state::apf_dischw_w)); + map(0xa000, 0xbfff).ram(); // standard + map(0xc000, 0xdfff).ram(); // expansion +} /* Each controller has these features: diff --git a/src/mame/drivers/apogee.cpp b/src/mame/drivers/apogee.cpp index 707632de396..fc6c6e7f398 100644 --- a/src/mame/drivers/apogee.cpp +++ b/src/mame/drivers/apogee.cpp @@ -48,16 +48,17 @@ public: /* Address maps */ -ADDRESS_MAP_START(apogee_state::apogee_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0xebff ) AM_RAM // RAM - AM_RANGE( 0xec00, 0xec03 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) AM_MIRROR(0x00fc) - AM_RANGE( 0xed00, 0xed03 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x00fc) +void apogee_state::apogee_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0xebff).ram(); // RAM + map(0xec00, 0xec03).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).mirror(0x00fc); + map(0xed00, 0xed03).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x00fc); //AM_RANGE( 0xee00, 0xee03 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x00fc) - AM_RANGE( 0xef00, 0xef01 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x00fe) // video - AM_RANGE( 0xf000, 0xf0ff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END + map(0xef00, 0xef01).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x00fe); // video + map(0xf000, 0xf0ff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf000, 0xffff).rom(); // System ROM +} /* Input ports */ static INPUT_PORTS_START( apogee ) diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp index 309cd82d6ff..9a272c712b4 100644 --- a/src/mame/drivers/apollo.cpp +++ b/src/mame/drivers/apollo.cpp @@ -678,223 +678,229 @@ WRITE32_MEMBER(apollo_state::apollo_f8_w){ ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(apollo_state::dn3500_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w) - - AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */ - AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w) - AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff) - AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff) - AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) - AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) - AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) - AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) - AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) - AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff ) - AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff) - AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff ) - AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff) - - AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff ) - AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff ) - - AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff) - AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff) +void apollo_state::dn3500_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w)); + + map(0x000000, 0x00ffff).rom(); /* boot ROM */ + map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w)); + map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w)); + map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w)); + map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w)); + map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w)); + map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); + map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w)); + map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w)); + map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w)); + map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write)); + map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w)); + map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w)); + + map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w)); + map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w)); + + map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w)); + map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w)); // FIXME: must match with RAM size in driver/apollo_sio.c // AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */ - AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") + map(DN3500_RAM_BASE, DN3500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram"); - AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff) - AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff) + map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w)); + map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w)); - AM_RANGE(0x05e800, 0x05ec07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_ccr_r, apollo_ccr_w, 0xffffffff) - AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_cgm_r, apollo_cgm_w, 0xffffffff) + map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w)); + map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w)); // AM_RANGE(0x03020000, 0x0303ffff) Cache Tag Store (DN4500 only) // AM_RANGE(0x04000000, 0x0400ffff) Cache Tag Data (DN4500 only) // AM_RANGE(0x0e000000, 0x0fffffff) FPA address space // AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apollo_state::dsp3500_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w) - AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */ - AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w) - AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff) - AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff) - AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) - AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) - AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) - AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) - AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) - AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff ) - AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff) - AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff ) - AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff) - - AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff ) - AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff ) - - AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff) - - AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") - - AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff) +} + +void apollo_state::dsp3500_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w)); + map(0x000000, 0x00ffff).rom(); /* boot ROM */ + map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w)); + map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w)); + map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w)); + map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w)); + map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w)); + map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); + map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w)); + map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w)); + map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w)); + map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write)); + map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w)); + map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w)); + + map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w)); + map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w)); + + map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w)); + + map(DN3500_RAM_BASE, DN3500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram"); + + map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w)); // AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apollo_state::dn3000_map) - AM_RANGE(0x000000, 0xffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w) - - AM_RANGE(0x000000, 0x007fff) AM_ROM /* boot ROM */ - AM_RANGE(0x000000, 0x007fff) AM_WRITE(apollo_rom_w) - AM_RANGE(0x008000, 0x0080ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff) - AM_RANGE(0x008100, 0x0081ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff) - AM_RANGE(0x008400, 0x0087ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x008800, 0x0088ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) - AM_RANGE(0x008900, 0x0089ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) - AM_RANGE(0x009000, 0x0090ff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) - AM_RANGE(0x009100, 0x0091ff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff ) - AM_RANGE(0x009200, 0x0092ff) AM_READWRITE8(apollo_dma_page_register_r, apollo_dma_page_register_w, 0xffffffff ) - AM_RANGE(0x009300, 0x0093ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff ) - AM_RANGE(0x009400, 0x0094ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x009500, 0x0095ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x009600, 0x0096ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff) - - AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff) - AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff) +} + +void apollo_state::dn3000_map(address_map &map) +{ + map(0x000000, 0xffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w)); + + map(0x000000, 0x007fff).rom(); /* boot ROM */ + map(0x000000, 0x007fff).w(this, FUNC(apollo_state::apollo_rom_w)); + map(0x008000, 0x0080ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w)); + map(0x008100, 0x0081ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w)); + map(0x008400, 0x0087ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x008800, 0x0088ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); + map(0x008900, 0x0089ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w)); + map(0x009000, 0x0090ff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w)); + map(0x009100, 0x0091ff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w)); + map(0x009200, 0x0092ff).rw(this, FUNC(apollo_state::apollo_dma_page_register_r), FUNC(apollo_state::apollo_dma_page_register_w)); + map(0x009300, 0x0093ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w)); + map(0x009400, 0x0094ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x009500, 0x0095ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x009600, 0x0096ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write)); + + map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w)); + map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w)); // FIXME: must match with RAM size in driver/apollo_sio.c // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */ - AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") + map(DN3000_RAM_BASE, DN3000_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram"); - AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff) - AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff) + map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w)); + map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w)); - AM_RANGE(0x05e800, 0x05ec07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_ccr_r, apollo_ccr_w, 0xffffffff) - AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_cgm_r, apollo_cgm_w, 0xffffffff) -ADDRESS_MAP_END + map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w)); + map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w)); +} -ADDRESS_MAP_START(apollo_state::dsp3000_map) - AM_RANGE(0x000000, 0xffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w) +void apollo_state::dsp3000_map(address_map &map) +{ + map(0x000000, 0xffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w)); + + map(0x000000, 0x007fff).rom(); /* boot ROM */ + map(0x000000, 0x007fff).w(this, FUNC(apollo_state::apollo_rom_w)); + map(0x008000, 0x0080ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w)); + map(0x008100, 0x0081ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w)); + map(0x008400, 0x0087ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x008800, 0x0088ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); + map(0x008900, 0x0089ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w)); + + map(0x009000, 0x0090ff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w)); + map(0x009100, 0x0091ff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w)); + map(0x009200, 0x0092ff).rw(this, FUNC(apollo_state::apollo_dma_page_register_r), FUNC(apollo_state::apollo_dma_page_register_w)); + map(0x009300, 0x0093ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w)); + map(0x009400, 0x0094ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x009500, 0x0095ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x009600, 0x0096ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write)); + + map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w)); + map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w)); - AM_RANGE(0x000000, 0x007fff) AM_ROM /* boot ROM */ - AM_RANGE(0x000000, 0x007fff) AM_WRITE(apollo_rom_w) - AM_RANGE(0x008000, 0x0080ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff) - AM_RANGE(0x008100, 0x0081ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff) - AM_RANGE(0x008400, 0x0087ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x008800, 0x0088ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) - AM_RANGE(0x008900, 0x0089ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) + // FIXME: must match with RAM size in driver/apollo_sio.c + // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */ + map(DN3000_RAM_BASE, DN3000_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram"); - AM_RANGE(0x009000, 0x0090ff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) - AM_RANGE(0x009100, 0x0091ff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff ) - AM_RANGE(0x009200, 0x0092ff) AM_READWRITE8(apollo_dma_page_register_r, apollo_dma_page_register_w, 0xffffffff ) - AM_RANGE(0x009300, 0x0093ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff ) - AM_RANGE(0x009400, 0x0094ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x009500, 0x0095ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x009600, 0x0096ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff) +} - AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff) - AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff) - // FIXME: must match with RAM size in driver/apollo_sio.c - // AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */ - AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") - -ADDRESS_MAP_END - - -ADDRESS_MAP_START(apollo_state::dn5500_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w) - AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */ - AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w) - AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff) - AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff) - AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) - AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) - AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) - AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) - AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) - AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff ) - AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff) - AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff ) - AM_RANGE(0x011400, 0x0114ff) AM_READWRITE8(dn5500_memory_present_register_r, dn5500_memory_present_register_w, 0xffffffff ) - AM_RANGE(0x011500, 0x0115ff) AM_READWRITE8(dn5500_11500_r, dn5500_11500_w, 0xffffffff ) - AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff) - - AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff ) - AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff ) - - AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff) - AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff) +void apollo_state::dn5500_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w)); + map(0x000000, 0x00ffff).rom(); /* boot ROM */ + map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w)); + map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w)); + map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w)); + map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w)); + map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w)); + map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); + map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w)); + map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w)); + map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w)); + map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write)); + map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w)); + map(0x011400, 0x0114ff).rw(this, FUNC(apollo_state::dn5500_memory_present_register_r), FUNC(apollo_state::dn5500_memory_present_register_w)); + map(0x011500, 0x0115ff).rw(this, FUNC(apollo_state::dn5500_11500_r), FUNC(apollo_state::dn5500_11500_w)); + map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w)); + + map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w)); + map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w)); + + map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w)); + map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w)); // FIXME: must match with RAM size in driver/apollo_sio.c // AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */ - AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") + map(DN5500_RAM_BASE, DN5500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram"); - AM_RANGE(0x05d800, 0x05dc07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mcr_r, apollo_mcr_w, 0xffffffff) - AM_RANGE(0xfa0000, 0xfdffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_mgm_r, apollo_mgm_w, 0xffffffff) + map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w)); + map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w)); - AM_RANGE(0x05e800, 0x05ec07) AM_DEVREADWRITE8(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_ccr_r, apollo_ccr_w, 0xffffffff) - AM_RANGE(0x0a0000, 0x0bffff) AM_DEVREADWRITE16(APOLLO_SCREEN_TAG, apollo_graphics_15i, apollo_cgm_r, apollo_cgm_w, 0xffffffff) + map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w)); + map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w)); // AM_RANGE(0x03020000, 0x0303ffff) Cache Tag Store (DN4500 only) // AM_RANGE(0x04000000, 0x0400ffff) Cache Tag Data (DN4500 only) - AM_RANGE(0x07000000, 0x0700FFFF) AM_READWRITE8(dn5500_io_protection_map_r, dn5500_io_protection_map_w, 0xffffffff ) + map(0x07000000, 0x0700FFFF).rw(this, FUNC(apollo_state::dn5500_io_protection_map_r), FUNC(apollo_state::dn5500_io_protection_map_w)); // AM_RANGE(0x0e000000, 0x0fffffff) FPA address space // AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apollo_state::dsp5500_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(apollo_unmapped_r, apollo_unmapped_w) - AM_RANGE(0x000000, 0x00ffff) AM_ROM /* boot ROM */ - AM_RANGE(0x000000, 0x00ffff) AM_WRITE(apollo_rom_w) - AM_RANGE(0x010000, 0x0100ff) AM_READWRITE16(apollo_csr_status_register_r, apollo_csr_status_register_w, 0xffffffff) - AM_RANGE(0x010100, 0x0101ff) AM_READWRITE16(apollo_csr_control_register_r, apollo_csr_control_register_w, 0xffffffff) - AM_RANGE(0x010200, 0x0102ff) AM_READWRITE8(cache_status_register_r, cache_control_register_w, 0xffffffff ) - AM_RANGE(0x010300, 0x0103ff) AM_READWRITE8(task_alias_register_r , task_alias_register_w , 0xffffffff ) - AM_RANGE(0x010400, 0x0104ff) AM_DEVREADWRITE8(APOLLO_SIO_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010500, 0x0105ff) AM_DEVREADWRITE8(APOLLO_SIO2_TAG, apollo_sio, read, write, 0xffffffff ) - AM_RANGE(0x010800, 0x0108ff) AM_DEVREADWRITE8(APOLLO_PTM_TAG, ptm6840_device, read, write, 0x00ff00ff ) - AM_RANGE(0x010900, 0x0109ff) AM_READWRITE8(apollo_rtc_r, apollo_rtc_w, 0xffffffff ) - AM_RANGE(0x010c00, 0x010cff) AM_READWRITE8(/*"dma1",*/apollo_dma_1_r, apollo_dma_1_w, 0xffffffff ) - AM_RANGE(0x010d00, 0x010dff) AM_READWRITE8(/*"dma2",*/apollo_dma_2_r, apollo_dma_2_w, 0xffffffff ) - AM_RANGE(0x011000, 0x0110ff) AM_DEVREADWRITE8(APOLLO_PIC1_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011100, 0x0111ff) AM_DEVREADWRITE8(APOLLO_PIC2_TAG, pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x011200, 0x0112ff) AM_DEVREADWRITE16(APOLLO_NI_TAG, apollo_ni, read, write, 0xffffffff) - AM_RANGE(0x011300, 0x0113ff) AM_READWRITE16(latch_page_on_parity_error_register_r, latch_page_on_parity_error_register_w, 0xffffffff ) - AM_RANGE(0x011400, 0x0114ff) AM_READWRITE8(dn5500_memory_present_register_r, dn5500_memory_present_register_w, 0xffffffff ) - AM_RANGE(0x011500, 0x0115ff) AM_READWRITE8(dn5500_11500_r, dn5500_11500_w, 0xffffffff ) - AM_RANGE(0x011600, 0x0116ff) AM_READWRITE8(master_req_register_r, master_req_register_w, 0xffffffff) - - AM_RANGE(0x016400, 0x0164ff) AM_READWRITE16(selective_clear_locations_r, selective_clear_locations_w, 0xffffffff ) - AM_RANGE(0x017000, 0x017fff) AM_READWRITE16(apollo_address_translation_map_r, apollo_address_translation_map_w, 0xffffffff ) - - AM_RANGE(ATBUS_IO_BASE, ATBUS_IO_END) AM_READWRITE16(apollo_atbus_io_r, apollo_atbus_io_w, 0xffffffff) - AM_RANGE(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END) AM_READWRITE16(apollo_atbus_memory_r, apollo_atbus_memory_w, 0xffffffff) +} + +void apollo_state::dsp5500_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(apollo_state::apollo_unmapped_r), FUNC(apollo_state::apollo_unmapped_w)); + map(0x000000, 0x00ffff).rom(); /* boot ROM */ + map(0x000000, 0x00ffff).w(this, FUNC(apollo_state::apollo_rom_w)); + map(0x010000, 0x0100ff).rw(this, FUNC(apollo_state::apollo_csr_status_register_r), FUNC(apollo_state::apollo_csr_status_register_w)); + map(0x010100, 0x0101ff).rw(this, FUNC(apollo_state::apollo_csr_control_register_r), FUNC(apollo_state::apollo_csr_control_register_w)); + map(0x010200, 0x0102ff).rw(this, FUNC(apollo_state::cache_status_register_r), FUNC(apollo_state::cache_control_register_w)); + map(0x010300, 0x0103ff).rw(this, FUNC(apollo_state::task_alias_register_r), FUNC(apollo_state::task_alias_register_w)); + map(0x010400, 0x0104ff).rw(m_sio, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010500, 0x0105ff).rw(m_sio2, FUNC(apollo_sio::read), FUNC(apollo_sio::write)); + map(0x010800, 0x0108ff).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); + map(0x010900, 0x0109ff).rw(this, FUNC(apollo_state::apollo_rtc_r), FUNC(apollo_state::apollo_rtc_w)); + map(0x010c00, 0x010cff).rw(this, FUNC(apollo_state::/*"dma1",*/apollo_dma_1_r), FUNC(apollo_state::apollo_dma_1_w)); + map(0x010d00, 0x010dff).rw(this, FUNC(apollo_state::/*"dma2",*/apollo_dma_2_r), FUNC(apollo_state::apollo_dma_2_w)); + map(0x011000, 0x0110ff).rw(m_pic8259_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011100, 0x0111ff).rw(m_pic8259_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x011200, 0x0112ff).rw(m_node_id, FUNC(apollo_ni::read), FUNC(apollo_ni::write)); + map(0x011300, 0x0113ff).rw(this, FUNC(apollo_state::latch_page_on_parity_error_register_r), FUNC(apollo_state::latch_page_on_parity_error_register_w)); + map(0x011400, 0x0114ff).rw(this, FUNC(apollo_state::dn5500_memory_present_register_r), FUNC(apollo_state::dn5500_memory_present_register_w)); + map(0x011500, 0x0115ff).rw(this, FUNC(apollo_state::dn5500_11500_r), FUNC(apollo_state::dn5500_11500_w)); + map(0x011600, 0x0116ff).rw(this, FUNC(apollo_state::master_req_register_r), FUNC(apollo_state::master_req_register_w)); + + map(0x016400, 0x0164ff).rw(this, FUNC(apollo_state::selective_clear_locations_r), FUNC(apollo_state::selective_clear_locations_w)); + map(0x017000, 0x017fff).rw(this, FUNC(apollo_state::apollo_address_translation_map_r), FUNC(apollo_state::apollo_address_translation_map_w)); + + map(ATBUS_IO_BASE, ATBUS_IO_END).rw(this, FUNC(apollo_state::apollo_atbus_io_r), FUNC(apollo_state::apollo_atbus_io_w)); + map(ATBUS_MEMORY_BASE, ATBUS_MEMORY_END).rw(this, FUNC(apollo_state::apollo_atbus_memory_r), FUNC(apollo_state::apollo_atbus_memory_w)); // FIXME: must match with RAM size in driver/apollo_sio.c - AM_RANGE(DN5500_RAM_BASE, DN5500_RAM_END) AM_RAM_WRITE(ram_with_parity_w) AM_SHARE("messram") + map(DN5500_RAM_BASE, DN5500_RAM_END).ram().w(this, FUNC(apollo_state::ram_with_parity_w)).share("messram"); - AM_RANGE(0x07000000, 0x0700FFFF) AM_READWRITE8(dn5500_io_protection_map_r, dn5500_io_protection_map_w, 0xffffffff ) + map(0x07000000, 0x0700FFFF).rw(this, FUNC(apollo_state::dn5500_io_protection_map_r), FUNC(apollo_state::dn5500_io_protection_map_w)); // AM_RANGE(0xf8000000, 0xffffffff) AM_READWRITE(apollo_f8_r, apollo_f8_w) -ADDRESS_MAP_END +} /*************************************************************************** Machine Reset diff --git a/src/mame/drivers/apple1.cpp b/src/mame/drivers/apple1.cpp index b513796eb9e..fcb9f4c81c5 100644 --- a/src/mame/drivers/apple1.cpp +++ b/src/mame/drivers/apple1.cpp @@ -432,12 +432,13 @@ WRITE8_MEMBER(apple1_state::ram_w) } } -ADDRESS_MAP_START(apple1_state::apple1_map) - AM_RANGE(0x0000, 0xbfff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0xd010, 0xd013) AM_MIRROR(0x0fec) AM_DEVREADWRITE(A1_PIA_TAG, pia6821_device, read, write) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(A1_BASICRAM_TAG) - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION(A1_CPU_TAG, 0) -ADDRESS_MAP_END +void apple1_state::apple1_map(address_map &map) +{ + map(0x0000, 0xbfff).rw(this, FUNC(apple1_state::ram_r), FUNC(apple1_state::ram_w)); + map(0xd010, 0xd013).mirror(0x0fec).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe000, 0xefff).ram().share(A1_BASICRAM_TAG); + map(0xff00, 0xffff).rom().region(A1_CPU_TAG, 0); +} READ8_MEMBER(apple1_state::pia_keyboard_r) { diff --git a/src/mame/drivers/apple2.cpp b/src/mame/drivers/apple2.cpp index f816ac89ed9..a9a0398b6bd 100644 --- a/src/mame/drivers/apple2.cpp +++ b/src/mame/drivers/apple2.cpp @@ -952,26 +952,28 @@ WRITE8_MEMBER(napple2_state::ram_w) } } -ADDRESS_MAP_START(napple2_state::apple2_map) - AM_RANGE(0x0000, 0xbfff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0xf) AM_READ(keyb_data_r) AM_WRITENOP - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0xf) AM_READWRITE(keyb_strobe_r, keyb_strobe_w) - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0xf) AM_READWRITE(cassette_toggle_r, cassette_toggle_w) - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0xf) AM_READWRITE(speaker_toggle_r, speaker_toggle_w) - AM_RANGE(0xc040, 0xc040) AM_MIRROR(0xf) AM_READWRITE(utility_strobe_r, utility_strobe_w) - AM_RANGE(0xc050, 0xc05f) AM_READ(switches_r) AM_DEVWRITE("softlatch", addressable_latch_device, write_a0) - AM_RANGE(0xc060, 0xc067) AM_MIRROR(0x8) AM_READ(flags_r) AM_WRITENOP // includes IIgs STATE register, which ProDOS touches - AM_RANGE(0xc070, 0xc070) AM_MIRROR(0xf) AM_READWRITE(controller_strobe_r, controller_strobe_w) - AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w) - AM_RANGE(0xc100, 0xc7ff) AM_READWRITE(c100_r, c100_w) - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(c800_r, c800_w) - AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(napple2_state::inhbank_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(inh_w) - AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w) -ADDRESS_MAP_END +void napple2_state::apple2_map(address_map &map) +{ + map(0x0000, 0xbfff).rw(this, FUNC(napple2_state::ram_r), FUNC(napple2_state::ram_w)); + map(0xc000, 0xc000).mirror(0xf).r(this, FUNC(napple2_state::keyb_data_r)).nopw(); + map(0xc010, 0xc010).mirror(0xf).rw(this, FUNC(napple2_state::keyb_strobe_r), FUNC(napple2_state::keyb_strobe_w)); + map(0xc020, 0xc020).mirror(0xf).rw(this, FUNC(napple2_state::cassette_toggle_r), FUNC(napple2_state::cassette_toggle_w)); + map(0xc030, 0xc030).mirror(0xf).rw(this, FUNC(napple2_state::speaker_toggle_r), FUNC(napple2_state::speaker_toggle_w)); + map(0xc040, 0xc040).mirror(0xf).rw(this, FUNC(napple2_state::utility_strobe_r), FUNC(napple2_state::utility_strobe_w)); + map(0xc050, 0xc05f).r(this, FUNC(napple2_state::switches_r)).w(m_softlatch, FUNC(addressable_latch_device::write_a0)); + map(0xc060, 0xc067).mirror(0x8).r(this, FUNC(napple2_state::flags_r)).nopw(); // includes IIgs STATE register, which ProDOS touches + map(0xc070, 0xc070).mirror(0xf).rw(this, FUNC(napple2_state::controller_strobe_r), FUNC(napple2_state::controller_strobe_w)); + map(0xc080, 0xc0ff).rw(this, FUNC(napple2_state::c080_r), FUNC(napple2_state::c080_w)); + map(0xc100, 0xc7ff).rw(this, FUNC(napple2_state::c100_r), FUNC(napple2_state::c100_w)); + map(0xc800, 0xcfff).rw(this, FUNC(napple2_state::c800_r), FUNC(napple2_state::c800_w)); + map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void napple2_state::inhbank_map(address_map &map) +{ + map(0x0000, 0x2fff).rom().region("maincpu", 0x1000).w(this, FUNC(napple2_state::inh_w)); + map(0x3000, 0x5fff).rw(this, FUNC(napple2_state::inh_r), FUNC(napple2_state::inh_w)); +} /*************************************************************************** KEYBOARD diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index c43df119f37..4109124827d 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -2691,172 +2691,189 @@ WRITE8_MEMBER(apple2e_state::auxram2000_w) { if (m_aux_bank_ptr) { m_aux_bank_pt READ8_MEMBER(apple2e_state::auxram4000_r) { if (m_aux_bank_ptr) { return m_aux_bank_ptr[offset+0x4000]; } else { return read_floatingbus(); } } WRITE8_MEMBER(apple2e_state::auxram4000_w) { if (m_aux_bank_ptr) { m_aux_bank_ptr[offset+0x4000] = data; } } -ADDRESS_MAP_START(apple2e_state::apple2e_map) - AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w) - AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w) - AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::apple2c_map) - AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_iic_r, c000_iic_w) - AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w) - AM_RANGE(0xc098, 0xc09b) AM_DEVREADWRITE(IIC_ACIA1_TAG, mos6551_device, read, write) - AM_RANGE(0xc0a8, 0xc0ab) AM_DEVREADWRITE(IIC_ACIA2_TAG, mos6551_device, read, write) - AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::apple2c_memexp_map) - AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_iic_r, c000_iic_w) - AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w) - AM_RANGE(0xc098, 0xc09b) AM_DEVREADWRITE(IIC_ACIA1_TAG, mos6551_device, read, write) - AM_RANGE(0xc0a8, 0xc0ab) AM_DEVREADWRITE(IIC_ACIA2_TAG, mos6551_device, read, write) - AM_RANGE(0xc0c0, 0xc0c3) AM_READWRITE(memexp_r, memexp_w) - AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::laser128_map) - AM_RANGE(0x0000, 0x01ff) AM_DEVICE(A2_0000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0200, 0x03ff) AM_DEVICE(A2_0200_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0400, 0x07ff) AM_DEVICE(A2_0400_TAG, address_map_bank_device, amap8) - AM_RANGE(0x0800, 0x1fff) AM_DEVICE(A2_0800_TAG, address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE(A2_2000_TAG, address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xbfff) AM_DEVICE(A2_4000_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w) - AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w) +void apple2e_state::apple2e_map(address_map &map) +{ + map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8)); + map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8)); + map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8)); + map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_r), FUNC(apple2e_state::c000_w)); + map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w)); + map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8)); + map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8)); + map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8)); + map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void apple2e_state::apple2c_map(address_map &map) +{ + map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8)); + map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8)); + map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8)); + map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_iic_r), FUNC(apple2e_state::c000_iic_w)); + map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w)); + map(0xc098, 0xc09b).rw(m_acia1, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xc0a8, 0xc0ab).rw(IIC_ACIA2_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8)); + map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8)); + map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8)); + map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void apple2e_state::apple2c_memexp_map(address_map &map) +{ + map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8)); + map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8)); + map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8)); + map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_iic_r), FUNC(apple2e_state::c000_iic_w)); + map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w)); + map(0xc098, 0xc09b).rw(m_acia1, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xc0a8, 0xc0ab).rw(IIC_ACIA2_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xc0c0, 0xc0c3).rw(this, FUNC(apple2e_state::memexp_r), FUNC(apple2e_state::memexp_w)); + map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8)); + map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8)); + map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8)); + map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void apple2e_state::laser128_map(address_map &map) +{ + map(0x0000, 0x01ff).m(m_0000bank, FUNC(address_map_bank_device::amap8)); + map(0x0200, 0x03ff).m(m_0200bank, FUNC(address_map_bank_device::amap8)); + map(0x0400, 0x07ff).m(m_0400bank, FUNC(address_map_bank_device::amap8)); + map(0x0800, 0x1fff).m(m_0800bank, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x3fff).m(m_2000bank, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xbfff).m(m_4000bank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xc07f).rw(this, FUNC(apple2e_state::c000_r), FUNC(apple2e_state::c000_w)); + map(0xc080, 0xc0ff).rw(this, FUNC(apple2e_state::c080_r), FUNC(apple2e_state::c080_w)); // AM_RANGE(0xc098, 0xc09b) AM_DEVREADWRITE(IIC_ACIA1_TAG, mos6551_device, read, write) // AM_RANGE(0xc0a8, 0xc0ab) AM_DEVREADWRITE(IIC_ACIA2_TAG, mos6551_device, read, write) - AM_RANGE(0xc0d0, 0xc0d3) AM_READWRITE(memexp_r, memexp_w) - AM_RANGE(0xc0e0, 0xc0ef) AM_DEVREADWRITE(LASER128_UDC_TAG, applefdc_base_device, read, write) - AM_RANGE(0xc100, 0xc2ff) AM_DEVICE(A2_C100_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc300, 0xc3ff) AM_DEVICE(A2_C300_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc400, 0xc7ff) AM_DEVICE(A2_C400_TAG, address_map_bank_device, amap8) - AM_RANGE(0xc800, 0xcfff) AM_DEVICE(A2_C800_TAG, address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::r0000bank_map) - AM_RANGE(0x0000, 0x01ff) AM_READWRITE(ram0000_r, ram0000_w) - AM_RANGE(0x0200, 0x03ff) AM_READWRITE(auxram0000_r, auxram0000_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::r0200bank_map) - AM_RANGE(0x0000, 0x01ff) AM_READWRITE(ram0200_r, ram0200_w) // wr 0 rd 0 - AM_RANGE(0x0200, 0x03ff) AM_READWRITE(auxram0200_r, ram0200_w) // wr 0 rd 1 - AM_RANGE(0x0400, 0x05ff) AM_READWRITE(ram0200_r, auxram0200_w) // wr 1 rd 0 - AM_RANGE(0x0600, 0x07ff) AM_READWRITE(auxram0200_r, auxram0200_w) // wr 1 rd 1 -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::r0400bank_map) - AM_RANGE(0x0000, 0x03ff) AM_READWRITE(ram0400_r, ram0400_w) // wr 0 rd 0 - AM_RANGE(0x0400, 0x07ff) AM_READWRITE(auxram0400_r, ram0400_w) // wr 0 rd 1 - AM_RANGE(0x0800, 0x0bff) AM_READWRITE(ram0400_r, auxram0400_w) // wr 1 rd 0 - AM_RANGE(0x0c00, 0x0fff) AM_READWRITE(auxram0400_r, auxram0400_w) // wr 1 rd 1 -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::r0800bank_map) - AM_RANGE(0x0000, 0x17ff) AM_READWRITE(ram0800_r, ram0800_w) - AM_RANGE(0x2000, 0x37ff) AM_READWRITE(auxram0800_r, ram0800_w) - AM_RANGE(0x4000, 0x57ff) AM_READWRITE(ram0800_r, auxram0800_w) - AM_RANGE(0x6000, 0x77ff) AM_READWRITE(auxram0800_r, auxram0800_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::r2000bank_map) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ram2000_r, ram2000_w) - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(auxram2000_r, ram2000_w) - AM_RANGE(0x4000, 0x5fff) AM_READWRITE(ram2000_r, auxram2000_w) - AM_RANGE(0x6000, 0x7fff) AM_READWRITE(auxram2000_r, auxram2000_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::r4000bank_map) - AM_RANGE(0x00000, 0x07fff) AM_READWRITE(ram4000_r, ram4000_w) - AM_RANGE(0x08000, 0x0ffff) AM_READWRITE(auxram4000_r, ram4000_w) - AM_RANGE(0x10000, 0x17fff) AM_READWRITE(ram4000_r, auxram4000_w) - AM_RANGE(0x18000, 0x1ffff) AM_READWRITE(auxram4000_r, auxram4000_w) - AM_RANGE(0x20000, 0x23fff) AM_READWRITE(cec4000_r, ram4000_w) - AM_RANGE(0x24000, 0x27fff) AM_READWRITE(cec8000_r, ram8000_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::c100bank_map) - AM_RANGE(0x0000, 0x01ff) AM_READWRITE(c100_r, c100_w) - AM_RANGE(0x0200, 0x03ff) AM_READ(c100_int_r) AM_WRITENOP - AM_RANGE(0x0400, 0x05ff) AM_READ(c100_int_bank_r) AM_WRITENOP - AM_RANGE(0x0600, 0x07ff) AM_READ(c100_cec_r) AM_WRITENOP - AM_RANGE(0x0800, 0x09ff) AM_READ(c100_cec_bank_r) AM_WRITENOP - -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::c300bank_map) - AM_RANGE(0x0000, 0x00ff) AM_READWRITE(c300_r, c300_w) - AM_RANGE(0x0100, 0x01ff) AM_READ(c300_int_r) AM_WRITENOP - AM_RANGE(0x0200, 0x02ff) AM_READ(c300_int_bank_r) AM_WRITENOP - AM_RANGE(0x0300, 0x03ff) AM_READ(c300_cec_r) AM_WRITENOP - AM_RANGE(0x0400, 0x04ff) AM_READ(c300_cec_bank_r) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::c400bank_map) - AM_RANGE(0x0000, 0x03ff) AM_READWRITE(c400_r, c400_w) - AM_RANGE(0x0400, 0x07ff) AM_READWRITE(c400_int_r, c400_w) - AM_RANGE(0x0800, 0x0bff) AM_READWRITE(c400_int_bank_r, c400_w) - AM_RANGE(0x0c00, 0x0fff) AM_READ(c400_cec_r) AM_WRITENOP - AM_RANGE(0x1000, 0x13ff) AM_READ(c400_cec_bank_r) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::c800bank_map) - AM_RANGE(0x0000, 0x07ff) AM_READWRITE(c800_r, c800_w) - AM_RANGE(0x0800, 0x0fff) AM_READWRITE(c800_int_r, c800_w) - AM_RANGE(0x1000, 0x17ff) AM_READWRITE(c800_b2_int_r, c800_w) - AM_RANGE(0x1800, 0x1fff) AM_READ(c800_cec_r) AM_WRITENOP - AM_RANGE(0x2000, 0x27ff) AM_READ(c800_cec_bank_r) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::inhbank_map) - AM_RANGE(0x0000, 0x2fff) AM_DEVICE(A2_LCBANK_TAG, address_map_bank_device, amap8) - AM_RANGE(0x3000, 0x5fff) AM_READWRITE(inh_r, inh_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::lcbank_map) - AM_RANGE(0x00000, 0x02fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(lc_w) - AM_RANGE(0x03000, 0x05fff) AM_READWRITE(lc_r, lc_w) - AM_RANGE(0x06000, 0x08fff) AM_READWRITE(lc_romswitch_r, lc_romswitch_w) - AM_RANGE(0x09000, 0x0bfff) AM_ROM AM_REGION("maincpu", 0x5000) AM_WRITE(lc_w) - AM_RANGE(0x0c000, 0x0efff) AM_READWRITE(lc_r, lc_w) - AM_RANGE(0x0f000, 0x11fff) AM_ROM AM_REGION("maincpu", 0xd000) AM_WRITE(lc_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apple2e_state::spectred_keyb_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x0fff) AM_RAM -ADDRESS_MAP_END + map(0xc0d0, 0xc0d3).rw(this, FUNC(apple2e_state::memexp_r), FUNC(apple2e_state::memexp_w)); + map(0xc0e0, 0xc0ef).rw(m_laserudc, FUNC(applefdc_base_device::read), FUNC(applefdc_base_device::write)); + map(0xc100, 0xc2ff).m(m_c100bank, FUNC(address_map_bank_device::amap8)); + map(0xc300, 0xc3ff).m(m_c300bank, FUNC(address_map_bank_device::amap8)); + map(0xc400, 0xc7ff).m(m_c400bank, FUNC(address_map_bank_device::amap8)); + map(0xc800, 0xcfff).m(m_c800bank, FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void apple2e_state::r0000bank_map(address_map &map) +{ + map(0x0000, 0x01ff).rw(this, FUNC(apple2e_state::ram0000_r), FUNC(apple2e_state::ram0000_w)); + map(0x0200, 0x03ff).rw(this, FUNC(apple2e_state::auxram0000_r), FUNC(apple2e_state::auxram0000_w)); +} + +void apple2e_state::r0200bank_map(address_map &map) +{ + map(0x0000, 0x01ff).rw(this, FUNC(apple2e_state::ram0200_r), FUNC(apple2e_state::ram0200_w)); // wr 0 rd 0 + map(0x0200, 0x03ff).rw(this, FUNC(apple2e_state::auxram0200_r), FUNC(apple2e_state::ram0200_w)); // wr 0 rd 1 + map(0x0400, 0x05ff).rw(this, FUNC(apple2e_state::ram0200_r), FUNC(apple2e_state::auxram0200_w)); // wr 1 rd 0 + map(0x0600, 0x07ff).rw(this, FUNC(apple2e_state::auxram0200_r), FUNC(apple2e_state::auxram0200_w)); // wr 1 rd 1 +} + +void apple2e_state::r0400bank_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(this, FUNC(apple2e_state::ram0400_r), FUNC(apple2e_state::ram0400_w)); // wr 0 rd 0 + map(0x0400, 0x07ff).rw(this, FUNC(apple2e_state::auxram0400_r), FUNC(apple2e_state::ram0400_w)); // wr 0 rd 1 + map(0x0800, 0x0bff).rw(this, FUNC(apple2e_state::ram0400_r), FUNC(apple2e_state::auxram0400_w)); // wr 1 rd 0 + map(0x0c00, 0x0fff).rw(this, FUNC(apple2e_state::auxram0400_r), FUNC(apple2e_state::auxram0400_w)); // wr 1 rd 1 +} + +void apple2e_state::r0800bank_map(address_map &map) +{ + map(0x0000, 0x17ff).rw(this, FUNC(apple2e_state::ram0800_r), FUNC(apple2e_state::ram0800_w)); + map(0x2000, 0x37ff).rw(this, FUNC(apple2e_state::auxram0800_r), FUNC(apple2e_state::ram0800_w)); + map(0x4000, 0x57ff).rw(this, FUNC(apple2e_state::ram0800_r), FUNC(apple2e_state::auxram0800_w)); + map(0x6000, 0x77ff).rw(this, FUNC(apple2e_state::auxram0800_r), FUNC(apple2e_state::auxram0800_w)); +} + +void apple2e_state::r2000bank_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(this, FUNC(apple2e_state::ram2000_r), FUNC(apple2e_state::ram2000_w)); + map(0x2000, 0x3fff).rw(this, FUNC(apple2e_state::auxram2000_r), FUNC(apple2e_state::ram2000_w)); + map(0x4000, 0x5fff).rw(this, FUNC(apple2e_state::ram2000_r), FUNC(apple2e_state::auxram2000_w)); + map(0x6000, 0x7fff).rw(this, FUNC(apple2e_state::auxram2000_r), FUNC(apple2e_state::auxram2000_w)); +} + +void apple2e_state::r4000bank_map(address_map &map) +{ + map(0x00000, 0x07fff).rw(this, FUNC(apple2e_state::ram4000_r), FUNC(apple2e_state::ram4000_w)); + map(0x08000, 0x0ffff).rw(this, FUNC(apple2e_state::auxram4000_r), FUNC(apple2e_state::ram4000_w)); + map(0x10000, 0x17fff).rw(this, FUNC(apple2e_state::ram4000_r), FUNC(apple2e_state::auxram4000_w)); + map(0x18000, 0x1ffff).rw(this, FUNC(apple2e_state::auxram4000_r), FUNC(apple2e_state::auxram4000_w)); + map(0x20000, 0x23fff).rw(this, FUNC(apple2e_state::cec4000_r), FUNC(apple2e_state::ram4000_w)); + map(0x24000, 0x27fff).rw(this, FUNC(apple2e_state::cec8000_r), FUNC(apple2e_state::ram8000_w)); +} + +void apple2e_state::c100bank_map(address_map &map) +{ + map(0x0000, 0x01ff).rw(this, FUNC(apple2e_state::c100_r), FUNC(apple2e_state::c100_w)); + map(0x0200, 0x03ff).r(this, FUNC(apple2e_state::c100_int_r)).nopw(); + map(0x0400, 0x05ff).r(this, FUNC(apple2e_state::c100_int_bank_r)).nopw(); + map(0x0600, 0x07ff).r(this, FUNC(apple2e_state::c100_cec_r)).nopw(); + map(0x0800, 0x09ff).r(this, FUNC(apple2e_state::c100_cec_bank_r)).nopw(); + +} + +void apple2e_state::c300bank_map(address_map &map) +{ + map(0x0000, 0x00ff).rw(this, FUNC(apple2e_state::c300_r), FUNC(apple2e_state::c300_w)); + map(0x0100, 0x01ff).r(this, FUNC(apple2e_state::c300_int_r)).nopw(); + map(0x0200, 0x02ff).r(this, FUNC(apple2e_state::c300_int_bank_r)).nopw(); + map(0x0300, 0x03ff).r(this, FUNC(apple2e_state::c300_cec_r)).nopw(); + map(0x0400, 0x04ff).r(this, FUNC(apple2e_state::c300_cec_bank_r)).nopw(); +} + +void apple2e_state::c400bank_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(this, FUNC(apple2e_state::c400_r), FUNC(apple2e_state::c400_w)); + map(0x0400, 0x07ff).rw(this, FUNC(apple2e_state::c400_int_r), FUNC(apple2e_state::c400_w)); + map(0x0800, 0x0bff).rw(this, FUNC(apple2e_state::c400_int_bank_r), FUNC(apple2e_state::c400_w)); + map(0x0c00, 0x0fff).r(this, FUNC(apple2e_state::c400_cec_r)).nopw(); + map(0x1000, 0x13ff).r(this, FUNC(apple2e_state::c400_cec_bank_r)).nopw(); +} + +void apple2e_state::c800bank_map(address_map &map) +{ + map(0x0000, 0x07ff).rw(this, FUNC(apple2e_state::c800_r), FUNC(apple2e_state::c800_w)); + map(0x0800, 0x0fff).rw(this, FUNC(apple2e_state::c800_int_r), FUNC(apple2e_state::c800_w)); + map(0x1000, 0x17ff).rw(this, FUNC(apple2e_state::c800_b2_int_r), FUNC(apple2e_state::c800_w)); + map(0x1800, 0x1fff).r(this, FUNC(apple2e_state::c800_cec_r)).nopw(); + map(0x2000, 0x27ff).r(this, FUNC(apple2e_state::c800_cec_bank_r)).nopw(); +} + +void apple2e_state::inhbank_map(address_map &map) +{ + map(0x0000, 0x2fff).m(m_lcbank, FUNC(address_map_bank_device::amap8)); + map(0x3000, 0x5fff).rw(this, FUNC(apple2e_state::inh_r), FUNC(apple2e_state::inh_w)); +} + +void apple2e_state::lcbank_map(address_map &map) +{ + map(0x00000, 0x02fff).rom().region("maincpu", 0x1000).w(this, FUNC(apple2e_state::lc_w)); + map(0x03000, 0x05fff).rw(this, FUNC(apple2e_state::lc_r), FUNC(apple2e_state::lc_w)); + map(0x06000, 0x08fff).rw(this, FUNC(apple2e_state::lc_romswitch_r), FUNC(apple2e_state::lc_romswitch_w)); + map(0x09000, 0x0bfff).rom().region("maincpu", 0x5000).w(this, FUNC(apple2e_state::lc_w)); + map(0x0c000, 0x0efff).rw(this, FUNC(apple2e_state::lc_r), FUNC(apple2e_state::lc_w)); + map(0x0f000, 0x11fff).rom().region("maincpu", 0xd000).w(this, FUNC(apple2e_state::lc_w)); +} + +void apple2e_state::spectred_keyb_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x0fff).ram(); +} /*************************************************************************** KEYBOARD diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index a6488ac1324..fcd7f2912b7 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -181,9 +181,10 @@ static const floppy_interface apple2gs_floppy525_floppy_interface = }; -ADDRESS_MAP_START(apple2gs_state::apple2gs_map) +void apple2gs_state::apple2gs_map(address_map &map) +{ /* nothing in the address map - everything is added dynamically */ -ADDRESS_MAP_END +} // ADB microcontroller emulation // diff --git a/src/mame/drivers/apple3.cpp b/src/mame/drivers/apple3.cpp index 3aefaec97ea..b77cc74fcad 100644 --- a/src/mame/drivers/apple3.cpp +++ b/src/mame/drivers/apple3.cpp @@ -31,9 +31,10 @@ #include "softlist.h" #include "speaker.h" -ADDRESS_MAP_START(apple3_state::apple3_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(apple3_memory_r, apple3_memory_w) -ADDRESS_MAP_END +void apple3_state::apple3_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(apple3_state::apple3_memory_r), FUNC(apple3_state::apple3_memory_w)); +} static SLOT_INTERFACE_START(apple3_cards) SLOT_INTERFACE("cffa2", A2BUS_CFFA2_6502) /* CFFA2000 Compact Flash for Apple II (www.dreher.net), 6502 firmware */ diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp index deb55fb9735..94634aabc4d 100644 --- a/src/mame/drivers/applix.cpp +++ b/src/mame/drivers/applix.cpp @@ -444,55 +444,60 @@ WRITE16_MEMBER( applix_state::fdc_cmd_w ) m_data_or_cmd = 1; } -ADDRESS_MAP_START(applix_state::applix_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x3fffff) AM_RAM AM_SHARE("expansion") // Expansion - AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_MIRROR(0x80000) AM_SHARE("base") // Main ram - AM_RANGE(0x500000, 0x51ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x600000, 0x60007f) AM_WRITE(palette_w) - AM_RANGE(0x600080, 0x6000ff) AM_WRITE(dac_latch_w) - AM_RANGE(0x600100, 0x60017f) AM_WRITE(video_latch_w) //video latch (=border colour, high nybble; video base, low nybble) (odd) - AM_RANGE(0x600180, 0x6001ff) AM_WRITE(analog_latch_w) +void applix_state::applix_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xffffff); + map(0x000000, 0x3fffff).ram().share("expansion"); // Expansion + map(0x400000, 0x47ffff).ram().mirror(0x80000).share("base"); // Main ram + map(0x500000, 0x51ffff).rom().region("maincpu", 0); + map(0x600000, 0x60007f).w(this, FUNC(applix_state::palette_w)); + map(0x600080, 0x6000ff).w(this, FUNC(applix_state::dac_latch_w)); + map(0x600100, 0x60017f).w(this, FUNC(applix_state::video_latch_w)); //video latch (=border colour, high nybble; video base, low nybble) (odd) + map(0x600180, 0x6001ff).w(this, FUNC(applix_state::analog_latch_w)); //AM_RANGE(0x700000, 0x700007) z80-scc (ch b control, ch b data, ch a control, ch a data) on even addresses - AM_RANGE(0x700080, 0x7000ff) AM_READ(applix_inputs_r) - AM_RANGE(0x700100, 0x70011f) AM_MIRROR(0x60) AM_DEVREADWRITE8("via6522", via6522_device, read, write, 0xff00) - AM_RANGE(0x700180, 0x700181) AM_MIRROR(0x7c) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) - AM_RANGE(0x700182, 0x700183) AM_MIRROR(0x7c) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) - AM_RANGE(0xffffc0, 0xffffc1) AM_READWRITE(fdc_data_r,fdc_data_w) + map(0x700080, 0x7000ff).r(this, FUNC(applix_state::applix_inputs_r)); + map(0x700100, 0x70011f).mirror(0x60).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0xff00); + map(0x700180, 0x700180).mirror(0x7c).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x700182, 0x700182).mirror(0x7c).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xffffc0, 0xffffc1).rw(this, FUNC(applix_state::fdc_data_r), FUNC(applix_state::fdc_data_w)); //AM_RANGE(0xffffc2, 0xffffc3) AM_READWRITE(fdc_int_r,fdc_int_w) // optional - AM_RANGE(0xffffc8, 0xffffcd) AM_READ(fdc_stat_r) - AM_RANGE(0xffffd0, 0xffffd1) AM_WRITE(fdc_cmd_w) + map(0xffffc8, 0xffffcd).r(this, FUNC(applix_state::fdc_stat_r)); + map(0xffffd0, 0xffffd1).w(this, FUNC(applix_state::fdc_cmd_w)); //600000, 6FFFFF io ports and latches //700000, 7FFFFF peripheral chips and devices //800000, FFC000 optional roms //FFFFC0, FFFFFF disk controller board -ADDRESS_MAP_END - -ADDRESS_MAP_START(applix_state::subcpu_mem) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(applix_state::subcpu_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_READ(port00_r) //PORTR - AM_RANGE(0x08, 0x0f) AM_READWRITE(port08_r,port08_w) //Disk select - AM_RANGE(0x10, 0x17) AM_READWRITE(port10_r,port10_w) //IRQ - AM_RANGE(0x18, 0x1f) AM_READWRITE(port18_r,port18_w) //data&command - AM_RANGE(0x20, 0x27) AM_MIRROR(0x18) AM_READWRITE(port20_r,port20_w) //SCSI NCR5380 - AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE("fdc", wd1772_device, read, write) //FDC - AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_READWRITE(port60_r,port60_w) //anotherZ80SCC -ADDRESS_MAP_END - -ADDRESS_MAP_START(applix_state::keytronic_pc3270_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("kbdcpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(applix_state::keytronic_pc3270_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(internal_data_read, internal_data_write) -ADDRESS_MAP_END +} + +void applix_state::subcpu_mem(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0xffff).bankrw("bank1"); +} + +void applix_state::subcpu_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x07).r(this, FUNC(applix_state::port00_r)); //PORTR + map(0x08, 0x0f).rw(this, FUNC(applix_state::port08_r), FUNC(applix_state::port08_w)); //Disk select + map(0x10, 0x17).rw(this, FUNC(applix_state::port10_r), FUNC(applix_state::port10_w)); //IRQ + map(0x18, 0x1f).rw(this, FUNC(applix_state::port18_r), FUNC(applix_state::port18_w)); //data&command + map(0x20, 0x27).mirror(0x18).rw(this, FUNC(applix_state::port20_r), FUNC(applix_state::port20_w)); //SCSI NCR5380 + map(0x40, 0x43).mirror(0x1c).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)); //FDC + map(0x60, 0x63).mirror(0x1c).rw(this, FUNC(applix_state::port60_r), FUNC(applix_state::port60_w)); //anotherZ80SCC +} + +void applix_state::keytronic_pc3270_program(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("kbdcpu", 0); +} + +void applix_state::keytronic_pc3270_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(applix_state::internal_data_read), FUNC(applix_state::internal_data_write)); +} // io priorities: // 4 cassette diff --git a/src/mame/drivers/appoooh.cpp b/src/mame/drivers/appoooh.cpp index 4bca537a70c..6def479dfbb 100644 --- a/src/mame/drivers/appoooh.cpp +++ b/src/mame/drivers/appoooh.cpp @@ -213,37 +213,40 @@ WRITE8_MEMBER(appoooh_state::adpcm_w) * *************************************/ -ADDRESS_MAP_START(appoooh_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM ? */ - - AM_RANGE(0xf000, 0xffff) AM_RAM - AM_RANGE(0xf000, 0xf01f) AM_SHARE("spriteram") - AM_RANGE(0xf020, 0xf3ff) AM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xf420, 0xf7ff) AM_WRITE(fg_colorram_w) AM_SHARE("fg_colorram") - AM_RANGE(0xf800, 0xf81f) AM_SHARE("spriteram_2") - AM_RANGE(0xf820, 0xfbff) AM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xfc20, 0xffff) AM_WRITE(bg_colorram_w) AM_SHARE("bg_colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(appoooh_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x8000) - AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(appoooh_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn3", sn76489_device, write) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") AM_WRITE(adpcm_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("BUTTON3") AM_WRITE(out_w) - AM_RANGE(0x05, 0x05) AM_WRITE(scroll_w) /* unknown */ -ADDRESS_MAP_END +void appoooh_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xdfff).bankr("bank1"); + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xefff).ram(); /* RAM ? */ + + map(0xf000, 0xffff).ram(); + map(0xf000, 0xf01f).share("spriteram"); + map(0xf020, 0xf3ff).w(this, FUNC(appoooh_state::fg_videoram_w)).share("fg_videoram"); + map(0xf420, 0xf7ff).w(this, FUNC(appoooh_state::fg_colorram_w)).share("fg_colorram"); + map(0xf800, 0xf81f).share("spriteram_2"); + map(0xf820, 0xfbff).w(this, FUNC(appoooh_state::bg_videoram_w)).share("bg_videoram"); + map(0xfc20, 0xffff).w(this, FUNC(appoooh_state::bg_colorram_w)).share("bg_colorram"); +} + +void appoooh_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0x9fff).rom().region("maincpu", 0x8000); + map(0xa000, 0xdfff).bankr("bank1"); +} + +void appoooh_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76489_device::write)); + map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76489_device::write)); + map(0x02, 0x02).w("sn3", FUNC(sn76489_device::write)); + map(0x03, 0x03).portr("DSW1").w(this, FUNC(appoooh_state::adpcm_w)); + map(0x04, 0x04).portr("BUTTON3").w(this, FUNC(appoooh_state::out_w)); + map(0x05, 0x05).w(this, FUNC(appoooh_state::scroll_w)); /* unknown */ +} /************************************* diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp index b5f4176e4bf..16cc6d7d16d 100644 --- a/src/mame/drivers/apricot.cpp +++ b/src/mame/drivers/apricot.cpp @@ -324,28 +324,30 @@ WRITE_LINE_MEMBER( apricot_state::i8086_lock_w ) // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(apricot_state::apricot_mem) - AM_RANGE(0x00000, 0x3ffff) AM_RAMBANK("ram") - AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x7000) AM_RAM AM_SHARE("screen_buffer") - AM_RANGE(0xf8000, 0xfbfff) AM_MIRROR(0x4000) AM_ROM AM_REGION("bootstrap", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apricot_state::apricot_io) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("ic31", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x40, 0x47) AM_DEVREADWRITE8("ic68", wd2797_device, read, write, 0x00ff) - AM_RANGE(0x48, 0x4f) AM_DEVREADWRITE8("ic17", i8255_device, read, write, 0x00ff) - AM_RANGE(0x50, 0x51) AM_MIRROR(0x06) AM_DEVWRITE8("ic7", sn76489_device, write, 0x00ff) - AM_RANGE(0x58, 0x5f) AM_DEVREADWRITE8("ic16", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x60, 0x61) AM_READ8(sio_da_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, da_w, 0x00ff) - AM_RANGE(0x62, 0x63) AM_READ8(sio_ca_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, ca_w, 0x00ff) - AM_RANGE(0x64, 0x65) AM_READ8(sio_db_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, db_w, 0x00ff) - AM_RANGE(0x66, 0x67) AM_READ8(sio_cb_r, 0x00ff) AM_DEVWRITE8("ic15", z80sio_device, cb_w, 0x00ff) - AM_RANGE(0x68, 0x69) AM_MIRROR(0x04) AM_DEVWRITE8("ic30", hd6845_device, address_w, 0x00ff) - AM_RANGE(0x6a, 0x6b) AM_MIRROR(0x04) AM_DEVREADWRITE8("ic30", hd6845_device, register_r, register_w, 0x00ff) - AM_RANGE(0x70, 0x71) AM_MIRROR(0x04) AM_WRITE8(i8089_ca1_w, 0x00ff) - AM_RANGE(0x72, 0x73) AM_MIRROR(0x04) AM_WRITE8(i8089_ca2_w, 0x00ff) - AM_RANGE(0x78, 0x7f) AM_NOP // unavailable -ADDRESS_MAP_END +void apricot_state::apricot_mem(address_map &map) +{ + map(0x00000, 0x3ffff).bankrw("ram"); + map(0xf0000, 0xf0fff).mirror(0x7000).ram().share("screen_buffer"); + map(0xf8000, 0xfbfff).mirror(0x4000).rom().region("bootstrap", 0); +} + +void apricot_state::apricot_io(address_map &map) +{ + map(0x00, 0x03).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x40, 0x47).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff); + map(0x48, 0x4f).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x50, 0x50).mirror(0x06).w("ic7", FUNC(sn76489_device::write)); + map(0x58, 0x5f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x60, 0x60).r(this, FUNC(apricot_state::sio_da_r)).w(m_sio, FUNC(z80sio_device::da_w)).umask16(0x00ff); + map(0x62, 0x62).r(this, FUNC(apricot_state::sio_ca_r)).w(m_sio, FUNC(z80sio_device::ca_w)).umask16(0x00ff); + map(0x64, 0x64).r(this, FUNC(apricot_state::sio_db_r)).w(m_sio, FUNC(z80sio_device::db_w)).umask16(0x00ff); + map(0x66, 0x66).r(this, FUNC(apricot_state::sio_cb_r)).w(m_sio, FUNC(z80sio_device::cb_w)).umask16(0x00ff); + map(0x68, 0x68).mirror(0x04).w(m_crtc, FUNC(hd6845_device::address_w)); + map(0x6a, 0x6a).mirror(0x04).rw(m_crtc, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w)); + map(0x70, 0x70).mirror(0x04).w(this, FUNC(apricot_state::i8089_ca1_w)); + map(0x72, 0x72).mirror(0x04).w(this, FUNC(apricot_state::i8089_ca2_w)); + map(0x78, 0x7f).noprw(); // unavailable +} //************************************************************************** diff --git a/src/mame/drivers/apricotf.cpp b/src/mame/drivers/apricotf.cpp index ceaaa7b7e1a..6f43e2162bc 100644 --- a/src/mame/drivers/apricotf.cpp +++ b/src/mame/drivers/apricotf.cpp @@ -251,29 +251,31 @@ void f1_state::machine_start() // ADDRESS_MAP( act_f1_mem ) //------------------------------------------------- -ADDRESS_MAP_START(f1_state::act_f1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x01dff) AM_RAM - AM_RANGE(0x01e00, 0x01fff) AM_RAM AM_SHARE("p_scrollram") - AM_RANGE(0x02000, 0x3ffff) AM_RAM - AM_RANGE(0xe0000, 0xe001f) AM_READWRITE(palette_r, palette_w) AM_SHARE("p_paletteram") - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0) -ADDRESS_MAP_END +void f1_state::act_f1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x01dff).ram(); + map(0x01e00, 0x01fff).ram().share("p_scrollram"); + map(0x02000, 0x3ffff).ram(); + map(0xe0000, 0xe001f).rw(this, FUNC(f1_state::palette_r), FUNC(f1_state::palette_w)).share("p_paletteram"); + map(0xf8000, 0xfffff).rom().region(I8086_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( act_f1_io ) //------------------------------------------------- -ADDRESS_MAP_START(f1_state::act_f1_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_WRITE8(system_w, 0xffff) - AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8(Z80CTC_TAG, z80ctc_device, read, write, 0x00ff) - AM_RANGE(0x0020, 0x0027) AM_DEVREADWRITE8(Z80SIO2_TAG, z80sio_device, ba_cd_r, ba_cd_w, 0x00ff) +void f1_state::act_f1_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x000f).w(this, FUNC(f1_state::system_w)); + map(0x0010, 0x0017).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff); + map(0x0020, 0x0027).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).umask16(0x00ff); // AM_RANGE(0x0030, 0x0031) AM_WRITE8(ctc_ack_w, 0x00ff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff) + map(0x0040, 0x0047).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff); // AM_RANGE(0x01e0, 0x01ff) winchester -ADDRESS_MAP_END +} //************************************************************************** diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp index 983fb95b892..e9bf1dd4d44 100644 --- a/src/mame/drivers/apricotp.cpp +++ b/src/mame/drivers/apricotp.cpp @@ -425,55 +425,59 @@ WRITE16_MEMBER( fp_state::mem_w ) // ADDRESS_MAP( fp_mem ) //------------------------------------------------- -ADDRESS_MAP_START(fp_state::fp_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xf7fff) AM_READWRITE(mem_r, mem_w) - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0) -ADDRESS_MAP_END +void fp_state::fp_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xf7fff).rw(this, FUNC(fp_state::mem_r), FUNC(fp_state::mem_w)); + map(0xf8000, 0xfffff).rom().region(I8086_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( fp_io ) //------------------------------------------------- -ADDRESS_MAP_START(fp_state::fp_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000, 0x007) AM_DEVREADWRITE8(WD2797_TAG, wd2797_device, read, write, 0x00ff) - AM_RANGE(0x008, 0x00f) AM_DEVREADWRITE8(I8253A5_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0x018, 0x01f) AM_DEVREADWRITE8(Z80SIO0_TAG, z80sio_device, ba_cd_r, ba_cd_w, 0x00ff) - AM_RANGE(0x020, 0x021) AM_DEVWRITE8("cent_data_out", output_latch_device, write, 0x00ff) - AM_RANGE(0x022, 0x023) AM_WRITE8(pint_clr_w, 0x00ff) - AM_RANGE(0x024, 0x025) AM_READ8(prtr_snd_r, 0x00ff) - AM_RANGE(0x026, 0x027) AM_DEVWRITE8(SN76489AN_TAG, sn76489a_device, write, 0x00ff) - AM_RANGE(0x028, 0x029) AM_WRITE8(contrast_w, 0x00ff) - AM_RANGE(0x02a, 0x02b) AM_WRITE8(palette_w, 0x00ff) - AM_RANGE(0x02e, 0x02f) AM_WRITE(video_w) - AM_RANGE(0x040, 0x05f) AM_DEVREADWRITE8(I8237_TAG, am9517a_device, read, write, 0x00ff) - AM_RANGE(0x068, 0x06b) AM_DEVREADWRITE8(I8259A_TAG, pic8259_device, read, write, 0x00ff) - AM_RANGE(0x06c, 0x06d) AM_DEVWRITE8(MC6845_TAG, mc6845_device, address_w, 0x00ff) - AM_RANGE(0x06e, 0x06f) AM_DEVREADWRITE8(MC6845_TAG, mc6845_device, register_r, register_w, 0x00ff) -ADDRESS_MAP_END +void fp_state::fp_io(address_map &map) +{ + map.unmap_value_high(); + map(0x000, 0x007).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff); + map(0x008, 0x00f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x018, 0x01f).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).umask16(0x00ff); + map(0x020, 0x020).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x022, 0x022).w(this, FUNC(fp_state::pint_clr_w)); + map(0x024, 0x024).r(this, FUNC(fp_state::prtr_snd_r)); + map(0x026, 0x026).w(SN76489AN_TAG, FUNC(sn76489a_device::write)); + map(0x028, 0x028).w(this, FUNC(fp_state::contrast_w)); + map(0x02a, 0x02a).w(this, FUNC(fp_state::palette_w)); + map(0x02e, 0x02f).w(this, FUNC(fp_state::video_w)); + map(0x040, 0x05f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff); + map(0x068, 0x06b).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x06c, 0x06c).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x06e, 0x06e).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} //------------------------------------------------- // ADDRESS_MAP( sound_mem ) //------------------------------------------------- -ADDRESS_MAP_START(fp_state::sound_mem) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD63B01V1_TAG, 0) -ADDRESS_MAP_END +void fp_state::sound_mem(address_map &map) +{ + map(0xf000, 0xffff).rom().region(HD63B01V1_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( sound_io ) //------------------------------------------------- -ADDRESS_MAP_START(fp_state::sound_io) - AM_RANGE(M6801_PORT1, M6801_PORT1) - AM_RANGE(M6801_PORT2, M6801_PORT2) - AM_RANGE(M6801_PORT3, M6801_PORT3) - AM_RANGE(M6801_PORT4, M6801_PORT4) -ADDRESS_MAP_END +void fp_state::sound_io(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1); + map(M6801_PORT2, M6801_PORT2); + map(M6801_PORT3, M6801_PORT3); + map(M6801_PORT4, M6801_PORT4); +} diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp index 86bb87cc2a6..e4fb377070f 100644 --- a/src/mame/drivers/aquarium.cpp +++ b/src/mame/drivers/aquarium.cpp @@ -99,38 +99,41 @@ WRITE8_MEMBER(aquarium_state::aquarium_oki_w) -ADDRESS_MAP_START(aquarium_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(aquarium_mid_videoram_w) AM_SHARE("mid_videoram") - AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(aquarium_bak_videoram_w) AM_SHARE("bak_videoram") - AM_RANGE(0xc02000, 0xc03fff) AM_RAM_WRITE(aquarium_txt_videoram_w) AM_SHARE("txt_videoram") - AM_RANGE(0xc80000, 0xc81fff) AM_DEVREADWRITE8("spritegen", excellent_spr_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd80014, 0xd8001f) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0xd80068, 0xd80069) AM_WRITENOP /* probably not used */ - AM_RANGE(0xd80080, 0xd80081) AM_READ_PORT("DSW") - AM_RANGE(0xd80082, 0xd80083) AM_READNOP /* stored but not read back ? check code at 0x01f440 */ - AM_RANGE(0xd80084, 0xd80085) AM_READ_PORT("INPUTS") - AM_RANGE(0xd80086, 0xd80087) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd80088, 0xd80089) AM_WRITE8(aquarium_watchdog_w, 0xff00) - AM_RANGE(0xd8008a, 0xd8008b) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(aquarium_state::snd_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(aquarium_state::snd_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x02, 0x02) AM_READWRITE(aquarium_oki_r, aquarium_oki_w) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) // only written with 0 for some reason - AM_RANGE(0x08, 0x08) AM_WRITE(aquarium_z80_bank_w) -ADDRESS_MAP_END +void aquarium_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0xc00000, 0xc00fff).ram().w(this, FUNC(aquarium_state::aquarium_mid_videoram_w)).share("mid_videoram"); + map(0xc01000, 0xc01fff).ram().w(this, FUNC(aquarium_state::aquarium_bak_videoram_w)).share("bak_videoram"); + map(0xc02000, 0xc03fff).ram().w(this, FUNC(aquarium_state::aquarium_txt_videoram_w)).share("txt_videoram"); + map(0xc80000, 0xc81fff).rw(m_sprgen, FUNC(excellent_spr_device::read), FUNC(excellent_spr_device::write)).umask16(0x00ff); + map(0xd00000, 0xd00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd80014, 0xd8001f).writeonly().share("scroll"); + map(0xd80068, 0xd80069).nopw(); /* probably not used */ + map(0xd80080, 0xd80081).portr("DSW"); + map(0xd80082, 0xd80083).nopr(); /* stored but not read back ? check code at 0x01f440 */ + map(0xd80084, 0xd80085).portr("INPUTS"); + map(0xd80086, 0xd80087).portr("SYSTEM"); + map(0xd80088, 0xd80088).w(this, FUNC(aquarium_state::aquarium_watchdog_w)); + map(0xd8008b, 0xd8008b).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xff0000, 0xffffff).ram(); +} + +void aquarium_state::snd_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void aquarium_state::snd_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x02, 0x02).rw(this, FUNC(aquarium_state::aquarium_oki_r), FUNC(aquarium_state::aquarium_oki_w)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x06, 0x06).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); // only written with 0 for some reason + map(0x08, 0x08).w(this, FUNC(aquarium_state::aquarium_z80_bank_w)); +} static INPUT_PORTS_START( aquarium ) PORT_START("DSW") diff --git a/src/mame/drivers/aquarius.cpp b/src/mame/drivers/aquarius.cpp index 9b1ed1073aa..c5dc432c4e6 100644 --- a/src/mame/drivers/aquarius.cpp +++ b/src/mame/drivers/aquarius.cpp @@ -207,24 +207,26 @@ DRIVER_INIT_MEMBER(aquarius_state,aquarius) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(aquarius_state::aquarius_mem) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(aquarius_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(aquarius_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3800, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xbfff) AM_NOP /* expansion ram */ - AM_RANGE(0xc000, 0xffff) AM_READ(cartridge_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aquarius_state::aquarius_io) +void aquarius_state::aquarius_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x33ff).ram().w(this, FUNC(aquarius_state::aquarius_videoram_w)).share("videoram"); + map(0x3400, 0x37ff).ram().w(this, FUNC(aquarius_state::aquarius_colorram_w)).share("colorram"); + map(0x3800, 0x3fff).ram(); + map(0x4000, 0xbfff).noprw(); /* expansion ram */ + map(0xc000, 0xffff).r(this, FUNC(aquarius_state::cartridge_r)); +} + +void aquarius_state::aquarius_io(address_map &map) +{ // AM_RANGE(0x7e, 0x7f) AM_MIRROR(0xff00) AM_READWRITE(modem_r, modem_w) - AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w) - AM_RANGE(0xf7, 0xf7) AM_MIRROR(0xff00) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xfc, 0xfc) AM_MIRROR(0xff00) AM_READWRITE(cassette_r, cassette_w) - AM_RANGE(0xfd, 0xfd) AM_MIRROR(0xff00) AM_READWRITE(vsync_r, mapper_w) - AM_RANGE(0xfe, 0xfe) AM_MIRROR(0xff00) AM_READWRITE(printer_r, printer_w) - AM_RANGE(0xff, 0xff) AM_SELECT(0xff00) AM_READWRITE(keyboard_r, scrambler_w) -ADDRESS_MAP_END + map(0xf6, 0xf6).mirror(0xff00).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xf7, 0xf7).mirror(0xff00).w("ay8910", FUNC(ay8910_device::address_w)); + map(0xfc, 0xfc).mirror(0xff00).rw(this, FUNC(aquarius_state::cassette_r), FUNC(aquarius_state::cassette_w)); + map(0xfd, 0xfd).mirror(0xff00).rw(this, FUNC(aquarius_state::vsync_r), FUNC(aquarius_state::mapper_w)); + map(0xfe, 0xfe).mirror(0xff00).rw(this, FUNC(aquarius_state::printer_r), FUNC(aquarius_state::printer_w)); + map(0xff, 0xff).select(0xff00).rw(this, FUNC(aquarius_state::keyboard_r), FUNC(aquarius_state::scrambler_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/arabian.cpp b/src/mame/drivers/arabian.cpp index facfc026b49..bf0c6b9d605 100644 --- a/src/mame/drivers/arabian.cpp +++ b/src/mame/drivers/arabian.cpp @@ -211,14 +211,15 @@ WRITE8_MEMBER(arabian_state::mcu_port_p_w) * *************************************/ -ADDRESS_MAP_START(arabian_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_WRITE(arabian_videoram_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x01ff) AM_READ_PORT("IN0") - AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x01ff) AM_READ_PORT("DSW1") - AM_RANGE(0xd000, 0xd7ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("custom_cpu_ram") - AM_RANGE(0xe000, 0xe007) AM_MIRROR(0x0ff8) AM_WRITE(arabian_blitter_w) AM_SHARE("blitter") -ADDRESS_MAP_END +void arabian_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).w(this, FUNC(arabian_state::arabian_videoram_w)); + map(0xc000, 0xc000).mirror(0x01ff).portr("IN0"); + map(0xc200, 0xc200).mirror(0x01ff).portr("DSW1"); + map(0xd000, 0xd7ff).mirror(0x0800).ram().share("custom_cpu_ram"); + map(0xe000, 0xe007).mirror(0x0ff8).w(this, FUNC(arabian_state::arabian_blitter_w)).share("blitter"); +} @@ -228,10 +229,11 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(arabian_state::main_io_map) - AM_RANGE(0xc800, 0xc800) AM_MIRROR(0x01ff) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xca00, 0xca00) AM_MIRROR(0x01ff) AM_DEVWRITE("aysnd", ay8910_device, data_w) -ADDRESS_MAP_END +void arabian_state::main_io_map(address_map &map) +{ + map(0xc800, 0xc800).mirror(0x01ff).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xca00, 0xca00).mirror(0x01ff).w("aysnd", FUNC(ay8910_device::data_w)); +} diff --git a/src/mame/drivers/arachnid.cpp b/src/mame/drivers/arachnid.cpp index cfee8831db7..800c689f9f6 100644 --- a/src/mame/drivers/arachnid.cpp +++ b/src/mame/drivers/arachnid.cpp @@ -121,15 +121,16 @@ public: ADDRESS_MAP( arachnid_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(arachnid_state::arachnid_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2007) AM_DEVREADWRITE(PTM6840_TAG, ptm6840_device, read, write) - AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE(PIA6821_U4_TAG, pia6821_device, read, write) - AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE(PIA6821_U17_TAG, pia6821_device, read, write) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE(TMS9118_TAG, tms9928a_device, vram_write) - AM_RANGE(0x6002, 0x6002) AM_DEVWRITE(TMS9118_TAG, tms9928a_device, register_write) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6809_TAG, 0) -ADDRESS_MAP_END +void arachnid_state::arachnid_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2007).rw(PTM6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x4004, 0x4007).rw(m_pia_u4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4008, 0x400b).rw(m_pia_u17, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x6000, 0x6000).w(TMS9118_TAG, FUNC(tms9928a_device::vram_write)); + map(0x6002, 0x6002).w(TMS9118_TAG, FUNC(tms9928a_device::register_write)); + map(0x8000, 0xffff).rom().region(M6809_TAG, 0); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/arcadecl.cpp b/src/mame/drivers/arcadecl.cpp index bccdc5dbe3f..51455a40a96 100644 --- a/src/mame/drivers/arcadecl.cpp +++ b/src/mame/drivers/arcadecl.cpp @@ -146,28 +146,29 @@ WRITE16_MEMBER(sparkz_state::latch_w) * *************************************/ -ADDRESS_MAP_START(sparkz_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("bitmap") - AM_RANGE(0x3c0000, 0x3c07ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette") - AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0x3e0800, 0x3effbf) AM_RAM - AM_RANGE(0x3effc0, 0x3effff) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x640000, 0x640001) AM_READ_PORT("PLAYER1") - AM_RANGE(0x640002, 0x640003) AM_READ_PORT("PLAYER2") - AM_RANGE(0x640010, 0x640011) AM_READ_PORT("STATUS") - AM_RANGE(0x640012, 0x640013) AM_READ_PORT("COIN") - AM_RANGE(0x640020, 0x640021) AM_READ_PORT("TRACKX2") - AM_RANGE(0x640022, 0x640023) AM_READ_PORT("TRACKY2") - AM_RANGE(0x640024, 0x640025) AM_READ_PORT("TRACKX1") - AM_RANGE(0x640026, 0x640027) AM_READ_PORT("TRACKY1") - AM_RANGE(0x640040, 0x64004f) AM_WRITE(latch_w) - AM_RANGE(0x640060, 0x64006f) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x641000, 0x641fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x642000, 0x642001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0x646000, 0x646fff) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0x647000, 0x647fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) -ADDRESS_MAP_END +void sparkz_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x21ffff).ram().share("bitmap"); + map(0x3c0000, 0x3c07ff).rw("palette", FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette"); + map(0x3e0000, 0x3e07ff).ram().share("mob"); + map(0x3e0800, 0x3effbf).ram(); + map(0x3effc0, 0x3effff).ram().share("mob:slip"); + map(0x640000, 0x640001).portr("PLAYER1"); + map(0x640002, 0x640003).portr("PLAYER2"); + map(0x640010, 0x640011).portr("STATUS"); + map(0x640012, 0x640013).portr("COIN"); + map(0x640020, 0x640021).portr("TRACKX2"); + map(0x640022, 0x640023).portr("TRACKY2"); + map(0x640024, 0x640025).portr("TRACKX1"); + map(0x640026, 0x640027).portr("TRACKY1"); + map(0x640040, 0x64004f).w(this, FUNC(sparkz_state::latch_w)); + map(0x640060, 0x64006f).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x641000, 0x641fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x642000, 0x642000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x646000, 0x646fff).w(this, FUNC(sparkz_state::scanline_int_ack_w)); + map(0x647000, 0x647fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); +} diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp index cb2b074f524..2236e88c172 100644 --- a/src/mame/drivers/arcadia.cpp +++ b/src/mame/drivers/arcadia.cpp @@ -124,10 +124,11 @@ anything in hardware. No cartridge has been found which uses them. #include "softlist.h" #include "speaker.h" -ADDRESS_MAP_START(arcadia_state::arcadia_mem) - AM_RANGE( 0x0000, 0x0fff) AM_DEVREAD("cartslot", arcadia_cart_slot_device, read_rom) - AM_RANGE( 0x1800, 0x1aff) AM_READWRITE(video_r, video_w) -ADDRESS_MAP_END +void arcadia_state::arcadia_mem(address_map &map) +{ + map(0x0000, 0x0fff).r(m_cart, FUNC(arcadia_cart_slot_device::read_rom)); + map(0x1800, 0x1aff).rw(this, FUNC(arcadia_state::video_r), FUNC(arcadia_state::video_w)); +} /* The Emerson Arcadia 2001 controllers have 2 fire buttons on the side, but actually they are wired to keypad button #2. The following definitions diff --git a/src/mame/drivers/argo.cpp b/src/mame/drivers/argo.cpp index 1f7213e9b7d..527ec5f1268 100644 --- a/src/mame/drivers/argo.cpp +++ b/src/mame/drivers/argo.cpp @@ -144,17 +144,19 @@ WRITE8_MEMBER(argo_state::argo_io_w) -ADDRESS_MAP_START(argo_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") - AM_RANGE(0x0800, 0xf7af) AM_RAM - AM_RANGE(0xf7b0, 0xf7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf800, 0xffff) AM_ROM AM_WRITE(argo_videoram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(argo_state::io_map) - AM_RANGE(0x0000, 0xFFFF) AM_READWRITE(argo_io_r,argo_io_w) -ADDRESS_MAP_END +void argo_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0xf7af).ram(); + map(0xf7b0, 0xf7ff).ram().share("videoram"); + map(0xf800, 0xffff).rom().w(this, FUNC(argo_state::argo_videoram_w)); +} + +void argo_state::io_map(address_map &map) +{ + map(0x0000, 0xFFFF).rw(this, FUNC(argo_state::argo_io_r), FUNC(argo_state::argo_io_w)); +} /* Input ports */ static INPUT_PORTS_START( argo ) // Keyboard was worked out by trial & error;'F' keys produce symbols diff --git a/src/mame/drivers/argox.cpp b/src/mame/drivers/argox.cpp index 8e6d56e240e..b20f1d308e3 100644 --- a/src/mame/drivers/argox.cpp +++ b/src/mame/drivers/argox.cpp @@ -58,13 +58,15 @@ public: void os214_prg_map(address_map &map); }; -ADDRESS_MAP_START(os214_state::os214_prg_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM -ADDRESS_MAP_END +void os214_state::os214_prg_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); +} -ADDRESS_MAP_START(os214_state::os214_io_map) +void os214_state::os214_io_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +} MACHINE_CONFIG_START(os214_state::os214) /* basic machine hardware */ diff --git a/src/mame/drivers/argus.cpp b/src/mame/drivers/argus.cpp index ef6b9c75137..2d476277c4a 100644 --- a/src/mame/drivers/argus.cpp +++ b/src/mame/drivers/argus.cpp @@ -180,92 +180,97 @@ WRITE8_MEMBER(argus_state::bankselect_w) ***************************************************************************/ -ADDRESS_MAP_START(argus_state::argus_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc201, 0xc201) AM_WRITE(flipscreen_w) - AM_RANGE(0xc202, 0xc202) AM_WRITE(bankselect_w) - AM_RANGE(0xc300, 0xc301) AM_RAM AM_SHARE("bg0_scrollx") - AM_RANGE(0xc302, 0xc303) AM_RAM AM_SHARE("bg0_scrolly") - AM_RANGE(0xc308, 0xc309) AM_RAM AM_SHARE("bg1_scrollx") - AM_RANGE(0xc30a, 0xc30b) AM_RAM AM_SHARE("bg1_scrolly") - AM_RANGE(0xc30c, 0xc30c) AM_WRITE(argus_bg_status_w) - AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(argus_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txram_w) AM_SHARE("txram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bg1ram_w) AM_SHARE("bg1ram") - AM_RANGE(0xe000, 0xf1ff) AM_RAM - AM_RANGE(0xf200, 0xf7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void argus_state::argus_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc201, 0xc201).w(this, FUNC(argus_state::flipscreen_w)); + map(0xc202, 0xc202).w(this, FUNC(argus_state::bankselect_w)); + map(0xc300, 0xc301).ram().share("bg0_scrollx"); + map(0xc302, 0xc303).ram().share("bg0_scrolly"); + map(0xc308, 0xc309).ram().share("bg1_scrollx"); + map(0xc30a, 0xc30b).ram().share("bg1_scrolly"); + map(0xc30c, 0xc30c).w(this, FUNC(argus_state::argus_bg_status_w)); + map(0xc400, 0xcfff).ram().w(this, FUNC(argus_state::argus_paletteram_w)).share("paletteram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(argus_state::txram_w)).share("txram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(argus_state::bg1ram_w)).share("bg1ram"); + map(0xe000, 0xf1ff).ram(); + map(0xf200, 0xf7ff).ram().share("spriteram"); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(argus_state::valtric_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc201, 0xc201) AM_WRITE(flipscreen_w) - AM_RANGE(0xc202, 0xc202) AM_WRITE(bankselect_w) - AM_RANGE(0xc300, 0xc300) AM_WRITE(valtric_unknown_w) - AM_RANGE(0xc308, 0xc309) AM_RAM AM_SHARE("bg1_scrollx") - AM_RANGE(0xc30a, 0xc30b) AM_RAM AM_SHARE("bg1_scrolly") - AM_RANGE(0xc30c, 0xc30c) AM_WRITE(valtric_bg_status_w) - AM_RANGE(0xc30d, 0xc30d) AM_WRITE(valtric_mosaic_w) - AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(valtric_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txram_w) AM_SHARE("txram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bg1ram_w) AM_SHARE("bg1ram") - AM_RANGE(0xe000, 0xf1ff) AM_RAM - AM_RANGE(0xf200, 0xf7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void argus_state::valtric_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc201, 0xc201).w(this, FUNC(argus_state::flipscreen_w)); + map(0xc202, 0xc202).w(this, FUNC(argus_state::bankselect_w)); + map(0xc300, 0xc300).w(this, FUNC(argus_state::valtric_unknown_w)); + map(0xc308, 0xc309).ram().share("bg1_scrollx"); + map(0xc30a, 0xc30b).ram().share("bg1_scrolly"); + map(0xc30c, 0xc30c).w(this, FUNC(argus_state::valtric_bg_status_w)); + map(0xc30d, 0xc30d).w(this, FUNC(argus_state::valtric_mosaic_w)); + map(0xc400, 0xcfff).ram().w(this, FUNC(argus_state::valtric_paletteram_w)).share("paletteram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(argus_state::txram_w)).share("txram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(argus_state::bg1ram_w)).share("bg1ram"); + map(0xe000, 0xf1ff).ram(); + map(0xf200, 0xf7ff).ram().share("spriteram"); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(argus_state::butasan_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc100, 0xc100) AM_WRITE(butasan_unknown_w) - AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc201, 0xc201) AM_WRITE(flipscreen_w) - AM_RANGE(0xc202, 0xc202) AM_WRITE(bankselect_w) - AM_RANGE(0xc203, 0xc203) AM_WRITE(butasan_pageselect_w) - AM_RANGE(0xc300, 0xc301) AM_RAM AM_SHARE("bg0_scrollx") - AM_RANGE(0xc302, 0xc303) AM_RAM AM_SHARE("bg0_scrolly") - AM_RANGE(0xc304, 0xc304) AM_WRITE(butasan_bg0_status_w) - AM_RANGE(0xc308, 0xc309) AM_RAM AM_SHARE("bg1_scrollx") - AM_RANGE(0xc30a, 0xc30b) AM_RAM AM_SHARE("bg1_scrolly") - AM_RANGE(0xc30c, 0xc30c) AM_WRITE(butasan_bg1_status_w) - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(butasan_bg1ram_w) AM_SHARE("butasan_bg1ram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(butasan_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(butasan_pagedram_r, butasan_pagedram_w) - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf67f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf680, 0xffff) AM_RAM -ADDRESS_MAP_END +void argus_state::butasan_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc100, 0xc100).w(this, FUNC(argus_state::butasan_unknown_w)); + map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc201, 0xc201).w(this, FUNC(argus_state::flipscreen_w)); + map(0xc202, 0xc202).w(this, FUNC(argus_state::bankselect_w)); + map(0xc203, 0xc203).w(this, FUNC(argus_state::butasan_pageselect_w)); + map(0xc300, 0xc301).ram().share("bg0_scrollx"); + map(0xc302, 0xc303).ram().share("bg0_scrolly"); + map(0xc304, 0xc304).w(this, FUNC(argus_state::butasan_bg0_status_w)); + map(0xc308, 0xc309).ram().share("bg1_scrollx"); + map(0xc30a, 0xc30b).ram().share("bg1_scrolly"); + map(0xc30c, 0xc30c).w(this, FUNC(argus_state::butasan_bg1_status_w)); + map(0xc400, 0xc7ff).ram().w(this, FUNC(argus_state::butasan_bg1ram_w)).share("butasan_bg1ram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(argus_state::butasan_paletteram_w)).share("paletteram"); + map(0xd000, 0xdfff).rw(this, FUNC(argus_state::butasan_pagedram_r), FUNC(argus_state::butasan_pagedram_w)); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xf67f).ram().share("spriteram"); + map(0xf680, 0xffff).ram(); +} -ADDRESS_MAP_START(argus_state::sound_map_a) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void argus_state::sound_map_a(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xc000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} -ADDRESS_MAP_START(argus_state::sound_map_b) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void argus_state::sound_map_b(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} #if 0 ADDRESS_MAP_START(argus_state::sound_portmap_1) @@ -274,11 +279,12 @@ ADDRESS_MAP_START(argus_state::sound_portmap_1) ADDRESS_MAP_END #endif -ADDRESS_MAP_START(argus_state::sound_portmap_2) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void argus_state::sound_portmap_2(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x81).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp index de53fd6cf89..1f6f89a5ece 100644 --- a/src/mame/drivers/aristmk4.cpp +++ b/src/mame/drivers/aristmk4.cpp @@ -1000,35 +1000,36 @@ ADDRESS MAP - SLOT GAMES ******************************************************************************/ -ADDRESS_MAP_START(aristmk4_state::aristmk4_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("mkiv_vram") // video ram - chips U49 / U50 - AM_RANGE(0x0800, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x1c00, 0x1cff) AM_WRITE(mk4_printer_w) - AM_RANGE(0x1900, 0x19ff) AM_READ(mk4_printer_r) - AM_RANGE(0x2000, 0x3fff) AM_ROM // graphics rom map - AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") AM_SHARE("nvram") - - AM_RANGE(0x5000, 0x5000) AM_WRITE(u3_p0) - AM_RANGE(0x5002, 0x5002) AM_READ(u3_p2) - AM_RANGE(0x5003, 0x5003) AM_READ(u3_p3) - AM_RANGE(0x5005, 0x5005) AM_READ(ldsw) - AM_RANGE(0x500d, 0x500d) AM_READ_PORT("500d") - AM_RANGE(0x500e, 0x500e) AM_READ_PORT("500e") - AM_RANGE(0x500f, 0x500f) AM_READ_PORT("500f") - AM_RANGE(0x5010, 0x501f) AM_DEVREADWRITE("via6522_0",via6522_device,read,write) - AM_RANGE(0x5200, 0x5200) AM_READ(cashcade_r) - AM_RANGE(0x5201, 0x5201) AM_READ_PORT("5201") - AM_RANGE(0x52c0, 0x52c0) AM_READ(bv_p0) - AM_RANGE(0x52c1, 0x52c1) AM_READ(bv_p1) - AM_RANGE(0x527f, 0x5281) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5300, 0x5300) AM_READ_PORT("5300") - AM_RANGE(0x5380, 0x5383) AM_DEVREADWRITE("pia6821_0", pia6821_device, read, write) // RTC data - PORT A , mechanical meters - PORTB ?? - AM_RANGE(0x5440, 0x5440) AM_WRITE(mlamps) // take win and gamble lamps - AM_RANGE(0x5468, 0x5468) AM_READWRITE(cgdrr,cgdrw) // 4020 ripple counter outputs - AM_RANGE(0x6000, 0xffff) AM_ROM // game roms -ADDRESS_MAP_END +void aristmk4_state::aristmk4_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("mkiv_vram"); // video ram - chips U49 / U50 + map(0x0800, 0x17ff).ram(); + map(0x1800, 0x1800).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x1801, 0x1801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x1c00, 0x1cff).w(this, FUNC(aristmk4_state::mk4_printer_w)); + map(0x1900, 0x19ff).r(this, FUNC(aristmk4_state::mk4_printer_r)); + map(0x2000, 0x3fff).rom(); // graphics rom map + map(0x4000, 0x4fff).bankrw("bank1").share("nvram"); + + map(0x5000, 0x5000).w(this, FUNC(aristmk4_state::u3_p0)); + map(0x5002, 0x5002).r(this, FUNC(aristmk4_state::u3_p2)); + map(0x5003, 0x5003).r(this, FUNC(aristmk4_state::u3_p3)); + map(0x5005, 0x5005).r(this, FUNC(aristmk4_state::ldsw)); + map(0x500d, 0x500d).portr("500d"); + map(0x500e, 0x500e).portr("500e"); + map(0x500f, 0x500f).portr("500f"); + map(0x5010, 0x501f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x5200, 0x5200).r(this, FUNC(aristmk4_state::cashcade_r)); + map(0x5201, 0x5201).portr("5201"); + map(0x52c0, 0x52c0).r(this, FUNC(aristmk4_state::bv_p0)); + map(0x52c1, 0x52c1).r(this, FUNC(aristmk4_state::bv_p1)); + map(0x527f, 0x5281).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5300, 0x5300).portr("5300"); + map(0x5380, 0x5383).rw("pia6821_0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // RTC data - PORT A , mechanical meters - PORTB ?? + map(0x5440, 0x5440).w(this, FUNC(aristmk4_state::mlamps)); // take win and gamble lamps + map(0x5468, 0x5468).rw(this, FUNC(aristmk4_state::cgdrr), FUNC(aristmk4_state::cgdrw)); // 4020 ripple counter outputs + map(0x6000, 0xffff).rom(); // game roms +} /****************************************************************************** @@ -1044,35 +1045,36 @@ The graphics rom is mapped from 0x4000 - 0x4fff The U87 personality rom is not required, therefore game rom code mapping is from 0x8000-0xffff */ -ADDRESS_MAP_START(aristmk4_state::aristmk4_poker_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("mkiv_vram") // video ram - chips U49 / U50 - AM_RANGE(0x0800, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x1801, 0x1801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x1c00, 0x1cff) AM_WRITE(mk4_printer_w) - AM_RANGE(0x1900, 0x19ff) AM_READ(mk4_printer_r) - AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") AM_SHARE("nvram") - - AM_RANGE(0x5000, 0x5000) AM_WRITE(u3_p0) - AM_RANGE(0x5002, 0x5002) AM_READ(u3_p2) - AM_RANGE(0x5003, 0x5003) AM_READ_PORT("5003") - AM_RANGE(0x5005, 0x5005) AM_READ(ldsw) - AM_RANGE(0x500d, 0x500d) AM_READ_PORT("500d") - AM_RANGE(0x500e, 0x500e) AM_READ_PORT("500e") - AM_RANGE(0x500f, 0x500f) AM_READ_PORT("500f") - AM_RANGE(0x5010, 0x501f) AM_DEVREADWRITE("via6522_0",via6522_device,read,write) - AM_RANGE(0x5200, 0x5200) AM_READ(cashcade_r) - AM_RANGE(0x5201, 0x5201) AM_READ_PORT("5201") - AM_RANGE(0x52c0, 0x52c0) AM_READ(bv_p0) - AM_RANGE(0x52c1, 0x52c1) AM_READ(bv_p1) - AM_RANGE(0x527f, 0x5281) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5300, 0x5300) AM_READ_PORT("5300") - AM_RANGE(0x5380, 0x5383) AM_DEVREADWRITE("pia6821_0", pia6821_device, read, write) // RTC data - PORT A , mechanical meters - PORTB ?? - AM_RANGE(0x5440, 0x5440) AM_WRITE(mlamps) // take win and gamble lamps - AM_RANGE(0x5468, 0x5468) AM_READWRITE(cgdrr,cgdrw) // 4020 ripple counter outputs - AM_RANGE(0x6000, 0x7fff) AM_ROM // graphics rom map - AM_RANGE(0x8000, 0xffff) AM_ROM // game roms -ADDRESS_MAP_END +void aristmk4_state::aristmk4_poker_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("mkiv_vram"); // video ram - chips U49 / U50 + map(0x0800, 0x17ff).ram(); + map(0x1800, 0x1800).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x1801, 0x1801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x1c00, 0x1cff).w(this, FUNC(aristmk4_state::mk4_printer_w)); + map(0x1900, 0x19ff).r(this, FUNC(aristmk4_state::mk4_printer_r)); + map(0x4000, 0x4fff).bankrw("bank1").share("nvram"); + + map(0x5000, 0x5000).w(this, FUNC(aristmk4_state::u3_p0)); + map(0x5002, 0x5002).r(this, FUNC(aristmk4_state::u3_p2)); + map(0x5003, 0x5003).portr("5003"); + map(0x5005, 0x5005).r(this, FUNC(aristmk4_state::ldsw)); + map(0x500d, 0x500d).portr("500d"); + map(0x500e, 0x500e).portr("500e"); + map(0x500f, 0x500f).portr("500f"); + map(0x5010, 0x501f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x5200, 0x5200).r(this, FUNC(aristmk4_state::cashcade_r)); + map(0x5201, 0x5201).portr("5201"); + map(0x52c0, 0x52c0).r(this, FUNC(aristmk4_state::bv_p0)); + map(0x52c1, 0x52c1).r(this, FUNC(aristmk4_state::bv_p1)); + map(0x527f, 0x5281).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5300, 0x5300).portr("5300"); + map(0x5380, 0x5383).rw("pia6821_0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // RTC data - PORT A , mechanical meters - PORTB ?? + map(0x5440, 0x5440).w(this, FUNC(aristmk4_state::mlamps)); // take win and gamble lamps + map(0x5468, 0x5468).rw(this, FUNC(aristmk4_state::cgdrr), FUNC(aristmk4_state::cgdrw)); // 4020 ripple counter outputs + map(0x6000, 0x7fff).rom(); // graphics rom map + map(0x8000, 0xffff).rom(); // game roms +} /****************************************************************************** diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp index 56a1e7c6fa2..608c0236c17 100644 --- a/src/mame/drivers/aristmk5.cpp +++ b/src/mame/drivers/aristmk5.cpp @@ -910,86 +910,89 @@ WRITE8_MEMBER(aristmk5_state::bill_acceptor_lamps_w) output().set_lamp_value(24 + i, BIT(data, i)); } -ADDRESS_MAP_START(aristmk5_state::aristmk5_map) - AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_SHARE("physicalram") /* physical RAM - 16 MB for now, should be 512k for the A310 */ +void aristmk5_state::aristmk5_map(address_map &map) +{ + map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */ - AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE(archimedes_ioc_r, archimedes_ioc_w) + map(0x03000000, 0x0331ffff).rw(this, FUNC(aristmk5_state::archimedes_ioc_r), FUNC(aristmk5_state::archimedes_ioc_w)); /* MK-5 overrides */ - AM_RANGE(0x03010420, 0x03010423) AM_WRITE8(sram_banksel_w, 0x000000ff) // SRAM bank select write + map(0x03010420, 0x03010420).w(this, FUNC(aristmk5_state::sram_banksel_w)); // SRAM bank select write - AM_RANGE(0x03010480, 0x0301049f) AM_DEVREADWRITE8("uart_0a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03010500, 0x0301051f) AM_DEVREADWRITE8("uart_0b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03010580, 0x03010583) AM_READ_PORT("P3") - AM_RANGE(0x03010600, 0x0301061f) AM_DEVREADWRITE8("uart_1a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03010680, 0x0301069f) AM_DEVREADWRITE8("uart_1b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) + map(0x03010480, 0x0301049f).rw("uart_0a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03010500, 0x0301051f).rw("uart_0b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03010580, 0x03010583).portr("P3"); + map(0x03010600, 0x0301061f).rw("uart_1a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03010680, 0x0301069f).rw("uart_1b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); - AM_RANGE(0x03010700, 0x03010703) AM_READ_PORT("P6") - AM_RANGE(0x03010800, 0x03010803) AM_READ8(eeprom_r, 0x000000ff) - AM_RANGE(0x03010810, 0x03010813) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset32_r, reset32_w) //MK-5 specific, watchdog - AM_RANGE(0x03220000, 0x0323ffff) AM_READWRITE8(sram_r, sram_w, 0x000000ff) + map(0x03010700, 0x03010703).portr("P6"); + map(0x03010800, 0x03010800).r(this, FUNC(aristmk5_state::eeprom_r)); + map(0x03010810, 0x03010813).rw("watchdog", FUNC(watchdog_timer_device::reset32_r), FUNC(watchdog_timer_device::reset32_w)); //MK-5 specific, watchdog + map(0x03220000, 0x0323ffff).rw(this, FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff); // bank5 slow - AM_RANGE(0x03250048, 0x0325004b) AM_WRITE(Ns5w48) //IOEB control register - AM_RANGE(0x03250050, 0x03250053) AM_READ(Ns5r50) //IOEB ID register - AM_RANGE(0x03250058, 0x0325005b) AM_READ(Ns5x58) //IOEB interrupt Latch + map(0x03250048, 0x0325004b).w(this, FUNC(aristmk5_state::Ns5w48)); //IOEB control register + map(0x03250050, 0x03250053).r(this, FUNC(aristmk5_state::Ns5r50)); //IOEB ID register + map(0x03250058, 0x0325005b).r(this, FUNC(aristmk5_state::Ns5x58)); //IOEB interrupt Latch - AM_RANGE(0x03320000, 0x0333ffff) AM_READWRITE8(sram_r, sram_w, 0x000000ff) + map(0x03320000, 0x0333ffff).rw(this, FUNC(aristmk5_state::sram_r), FUNC(aristmk5_state::sram_w)).umask32(0x000000ff); - AM_RANGE(0x03400000, 0x035fffff) AM_WRITE(archimedes_vidc_w) - AM_RANGE(0x03600000, 0x037fffff) AM_WRITE(archimedes_memc_w) - AM_RANGE(0x03800000, 0x039fffff) AM_WRITE(archimedes_memc_page_w) + map(0x03400000, 0x035fffff).w(this, FUNC(aristmk5_state::archimedes_vidc_w)); + map(0x03600000, 0x037fffff).w(this, FUNC(aristmk5_state::archimedes_memc_w)); + map(0x03800000, 0x039fffff).w(this, FUNC(aristmk5_state::archimedes_memc_page_w)); - AM_RANGE(0x03400000, 0x03bfffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0x03400000, 0x03bfffff).rom().region("maincpu", 0); +} /* U.S games have no dram emulator enabled */ -ADDRESS_MAP_START(aristmk5_state::aristmk5_usa_map) - AM_IMPORT_FROM(aristmk5_map) +void aristmk5_state::aristmk5_usa_map(address_map &map) +{ + aristmk5_map(map); - AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w) + map(0x00000000, 0x01ffffff).rw(this, FUNC(aristmk5_state::archimedes_memc_logical_r), FUNC(aristmk5_state::archimedes_memc_logical_w)); - AM_RANGE(0x03010440, 0x03010443) AM_WRITE8(rtc_usa_w, 0x000000ff) - AM_RANGE(0x03010450, 0x03010453) AM_WRITE8(eeprom_usa_w, 0x000000ff) + map(0x03010440, 0x03010440).w(this, FUNC(aristmk5_state::rtc_usa_w)); + map(0x03010450, 0x03010450).w(this, FUNC(aristmk5_state::eeprom_usa_w)); - AM_RANGE(0x03012000, 0x03012003) AM_READ_PORT("P1") - AM_RANGE(0x03012010, 0x03012013) AM_READ_PORT("P2") - AM_RANGE(0x03012200, 0x03012203) AM_READ_PORT("DSW1") - AM_RANGE(0x03012210, 0x03012213) AM_READ_PORT("DSW2") - AM_RANGE(0x03010584, 0x03010587) AM_READ_PORT("P4") + map(0x03012000, 0x03012003).portr("P1"); + map(0x03012010, 0x03012013).portr("P2"); + map(0x03012200, 0x03012203).portr("DSW1"); + map(0x03012210, 0x03012213).portr("DSW2"); + map(0x03010584, 0x03010587).portr("P4"); - AM_RANGE(0x03012020, 0x03012023) AM_READ8(ldor_r, 0x000000ff) - AM_RANGE(0x03012070, 0x03012073) AM_WRITE8(ldor_clk_w, 0x000000ff) - AM_RANGE(0x03012184, 0x03012187) AM_READ_PORT("P5") + map(0x03012020, 0x03012020).r(this, FUNC(aristmk5_state::ldor_r)); + map(0x03012070, 0x03012070).w(this, FUNC(aristmk5_state::ldor_clk_w)); + map(0x03012184, 0x03012187).portr("P5"); - AM_RANGE(0x03012000, 0x0301201f) AM_WRITE8(buttons_lamps_w, 0x000000ff) - AM_RANGE(0x03012030, 0x0301203f) AM_WRITE8(other_lamps_w, 0x000000ff) - AM_RANGE(0x03012380, 0x0301238f) AM_WRITE8(bill_acceptor_lamps_w, 0x000000ff) + map(0x03012000, 0x0301201f).w(this, FUNC(aristmk5_state::buttons_lamps_w)).umask32(0x000000ff); + map(0x03012030, 0x0301203f).w(this, FUNC(aristmk5_state::other_lamps_w)).umask32(0x000000ff); + map(0x03012380, 0x0301238f).w(this, FUNC(aristmk5_state::bill_acceptor_lamps_w)).umask32(0x000000ff); - AM_RANGE(0x03012100, 0x0301211f) AM_DEVREADWRITE8("uart_2a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03012140, 0x0301215f) AM_DEVREADWRITE8("uart_2b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03012300, 0x0301231f) AM_DEVREADWRITE8("uart_3a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03012340, 0x0301235f) AM_DEVREADWRITE8("uart_3b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) -ADDRESS_MAP_END + map(0x03012100, 0x0301211f).rw("uart_2a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03012140, 0x0301215f).rw("uart_2b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03012300, 0x0301231f).rw("uart_3a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03012340, 0x0301235f).rw("uart_3b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); +} /* with dram emulator enabled */ -ADDRESS_MAP_START(aristmk5_state::aristmk5_drame_map) - AM_IMPORT_FROM(aristmk5_map) +void aristmk5_state::aristmk5_drame_map(address_map &map) +{ + aristmk5_map(map); - AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(aristmk5_drame_memc_logical_r, archimedes_memc_logical_w) + map(0x00000000, 0x01ffffff).rw(this, FUNC(aristmk5_state::aristmk5_drame_memc_logical_r), FUNC(aristmk5_state::archimedes_memc_logical_w)); - AM_RANGE(0x03010430, 0x03010433) AM_WRITE8(hopper_w, 0x000000ff) - AM_RANGE(0x03010440, 0x03010443) AM_WRITE8(rtc_w, 0x000000ff) - AM_RANGE(0x03010450, 0x03010453) AM_WRITE8(eeprom_w, 0x000000ff) + map(0x03010430, 0x03010430).w(this, FUNC(aristmk5_state::hopper_w)); + map(0x03010440, 0x03010440).w(this, FUNC(aristmk5_state::rtc_w)); + map(0x03010450, 0x03010450).w(this, FUNC(aristmk5_state::eeprom_w)); - AM_RANGE(0x03010400, 0x03010403) AM_WRITE8(spi_mux_w, 0x000000ff) - AM_RANGE(0x03010470, 0x03010473) AM_WRITE8(spi_data_w, 0x000000ff) - AM_RANGE(0x03010850, 0x03010853) AM_READWRITE8(spi_int_ack_r, spi_int_ack_w, 0x000000ff) - AM_RANGE(0x03010870, 0x03010873) AM_READ8(spi_data_r, 0x000000ff) + map(0x03010400, 0x03010400).w(this, FUNC(aristmk5_state::spi_mux_w)); + map(0x03010470, 0x03010470).w(this, FUNC(aristmk5_state::spi_data_w)); + map(0x03010850, 0x03010850).rw(this, FUNC(aristmk5_state::spi_int_ack_r), FUNC(aristmk5_state::spi_int_ack_w)); + map(0x03010870, 0x03010870).r(this, FUNC(aristmk5_state::spi_data_r)); - AM_RANGE(0x03014000, 0x0301401f) AM_DEVREADWRITE8("uart_2a", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) - AM_RANGE(0x03014020, 0x0301403f) AM_DEVREADWRITE8("uart_2b", ins8250_uart_device, ins8250_r, ins8250_w, 0x000000ff) -ADDRESS_MAP_END + map(0x03014000, 0x0301401f).rw("uart_2a", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); + map(0x03014020, 0x0301403f).rw("uart_2b", FUNC(ins8250_uart_device::ins8250_r), FUNC(ins8250_uart_device::ins8250_w)).umask32(0x000000ff); +} CUSTOM_INPUT_MEMBER(aristmk5_state::hopper_r) diff --git a/src/mame/drivers/aristmk6.cpp b/src/mame/drivers/aristmk6.cpp index 84d3700e8f1..f5f1facaf3e 100644 --- a/src/mame/drivers/aristmk6.cpp +++ b/src/mame/drivers/aristmk6.cpp @@ -299,28 +299,30 @@ READ64_MEMBER(aristmk6_state::hwver_r) return 0; } -ADDRESS_MAP_START(aristmk6_state::aristmk6_map) - AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x04000000, 0x05ffffff) AM_RAM AM_SHARE("vram") // VRAM 32MB - AM_RANGE(0x08000000, 0x0bffffff) AM_ROM AM_REGION("game_rom", 0) - AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM // Main RAM 16MB - AM_RANGE(0x10800000, 0x1087ffff) AM_RAM // SRAM0 512KB - AM_RANGE(0x11000000, 0x1107ffff) AM_RAM // SRAM1 512KB - AM_RANGE(0x11800000, 0x1187ffff) AM_RAM // SRAM2 512KB +void aristmk6_state::aristmk6_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom().region("maincpu", 0); + map(0x04000000, 0x05ffffff).ram().share("vram"); // VRAM 32MB + map(0x08000000, 0x0bffffff).rom().region("game_rom", 0); + map(0x0c000000, 0x0cffffff).ram(); // Main RAM 16MB + map(0x10800000, 0x1087ffff).ram(); // SRAM0 512KB + map(0x11000000, 0x1107ffff).ram(); // SRAM1 512KB + map(0x11800000, 0x1187ffff).ram(); // SRAM2 512KB // 12000xxx main control registers area - AM_RANGE(0x12000010, 0x12000017) AM_WRITE(eeprom_w) - AM_RANGE(0x12000078, 0x1200007f) AM_WRITENOP // watchdog ?? - AM_RANGE(0x12000080, 0x12000087) AM_WRITENOP // 0-1-2 written here repeatedly, diag LED or smth ? - AM_RANGE(0x120000E0, 0x120000E7) AM_READ(hwver_r) - AM_RANGE(0x120000E8, 0x12000107) AM_READ8(irqpend_r, 0xffffffffffffffffU) - AM_RANGE(0x12000108, 0x12000127) AM_WRITE8(irqen_w, 0xffffffffffffffffU) - AM_RANGE(0x12400010, 0x12400017) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU) - AM_RANGE(0x12400018, 0x1240001f) AM_DEVREADWRITE8("uart0", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU) - AM_RANGE(0x13800000, 0x13800007) AM_READ8(test_r, 0xffffffffffffffffU) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aristmk6_state::aristmk6_port) -ADDRESS_MAP_END + map(0x12000010, 0x12000017).w(this, FUNC(aristmk6_state::eeprom_w)); + map(0x12000078, 0x1200007f).nopw(); // watchdog ?? + map(0x12000080, 0x12000087).nopw(); // 0-1-2 written here repeatedly, diag LED or smth ? + map(0x120000E0, 0x120000E7).r(this, FUNC(aristmk6_state::hwver_r)); + map(0x120000E8, 0x12000107).r(this, FUNC(aristmk6_state::irqpend_r)); + map(0x12000108, 0x12000127).w(this, FUNC(aristmk6_state::irqen_w)); + map(0x12400010, 0x12400017).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x12400018, 0x1240001f).rw(m_uart0, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x13800000, 0x13800007).r(this, FUNC(aristmk6_state::test_r)); +} + +void aristmk6_state::aristmk6_port(address_map &map) +{ +} static INPUT_PORTS_START( aristmk6 ) INPUT_PORTS_END diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp index 0a3d51dc9c3..642fdc5de28 100644 --- a/src/mame/drivers/arkanoid.cpp +++ b/src/mame/drivers/arkanoid.cpp @@ -824,47 +824,50 @@ a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0 1 1 1 1 x x x x x x x x x x x x OPEN BUS | | | */ -ADDRESS_MAP_START(arkanoid_state::arkanoid_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_MIRROR(0x0800) - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) AM_MIRROR(0x0fe6) - AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_MIRROR(0x0fe6) - AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w) AM_MIRROR(0x0fe7) /* gfx bank, flip screen, 68705 reset, etc. */ - AM_RANGE(0xd008, 0xd008) AM_READ_PORT("SYSTEM2") AM_MIRROR(0x0fe3) /* unused p1 and p2 joysticks */ - AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM") AM_MIRROR(0x0fe3) /* start, service, coins, and 2 bits from the 68705 */ - AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_MIRROR(0x0fe7) - AM_RANGE(0xd018, 0xd018) AM_DEVREADWRITE("mcu", arkanoid_mcu_device_base, data_r, data_w) AM_MIRROR(0x0fe7) /* input from the 68705 */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe840, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(arkanoid_state::bootleg_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xd008, 0xd008) AM_WRITE(arkanoid_d008_w) /* gfx bank, flip screen etc. */ - AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd010, 0xd010) AM_READ_PORT("BUTTONS") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd018, 0xd018) AM_READ_PORT("MUX") AM_WRITENOP - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe840, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_READNOP /* fixes instant death in final level */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(arkanoid_state::hexa_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w) - AM_RANGE(0xd010, 0xd010) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* or IRQ acknowledge, or both */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void arkanoid_state::arkanoid_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().mirror(0x0800); + map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w)).mirror(0x0fe6); + map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r)).mirror(0x0fe6); + map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::arkanoid_d008_w)).mirror(0x0fe7); /* gfx bank, flip screen, 68705 reset, etc. */ + map(0xd008, 0xd008).portr("SYSTEM2").mirror(0x0fe3); /* unused p1 and p2 joysticks */ + map(0xd00c, 0xd00c).portr("SYSTEM").mirror(0x0fe3); /* start, service, coins, and 2 bits from the 68705 */ + map(0xd010, 0xd010).portr("BUTTONS").w("watchdog", FUNC(watchdog_timer_device::reset_w)).mirror(0x0fe7); + map(0xd018, 0xd018).rw(m_mcuintf, FUNC(arkanoid_mcu_device_base::data_r), FUNC(arkanoid_mcu_device_base::data_w)).mirror(0x0fe7); /* input from the 68705 */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram"); + map(0xe800, 0xe83f).ram().share("spriteram"); + map(0xe840, 0xefff).ram(); + map(0xf000, 0xffff).nopr(); /* fixes instant death in final level */ +} + +void arkanoid_state::bootleg_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xd001, 0xd001).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::arkanoid_d008_w)); /* gfx bank, flip screen etc. */ + map(0xd00c, 0xd00c).portr("SYSTEM"); + map(0xd010, 0xd010).portr("BUTTONS").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd018, 0xd018).portr("MUX").nopw(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram"); + map(0xe800, 0xe83f).ram().share("spriteram"); + map(0xe840, 0xefff).ram(); + map(0xf000, 0xffff).nopr(); /* fixes instant death in final level */ +} + +void arkanoid_state::hexa_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram(); + map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::hexa_d008_w)); + map(0xd010, 0xd010).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* or IRQ acknowledge, or both */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram"); +} READ8_MEMBER(arkanoid_state::hexaa_f000_r) { @@ -877,22 +880,24 @@ WRITE8_MEMBER(arkanoid_state::hexaa_f000_w) m_hexaa_from_main = data; } -ADDRESS_MAP_START(arkanoid_state::hexaa_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w) - AM_RANGE(0xd010, 0xd010) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* or IRQ acknowledge, or both */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_READWRITE(hexaa_f000_r, hexaa_f000_w) -ADDRESS_MAP_END +void arkanoid_state::hexaa_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram(); + map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::hexa_d008_w)); + map(0xd010, 0xd010).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* or IRQ acknowledge, or both */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram"); + map(0xe800, 0xefff).ram(); + map(0xf000, 0xf000).rw(this, FUNC(arkanoid_state::hexaa_f000_r), FUNC(arkanoid_state::hexaa_f000_w)); +} -ADDRESS_MAP_START(arkanoid_state::hexaa_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void arkanoid_state::hexaa_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} WRITE8_MEMBER(arkanoid_state::hexaa_sub_80_w) @@ -906,25 +911,27 @@ READ8_MEMBER(arkanoid_state::hexaa_sub_90_r) // return machine().rand(); } -ADDRESS_MAP_START(arkanoid_state::hexaa_sub_iomap) - ADDRESS_MAP_GLOBAL_MASK(0x9f) - AM_RANGE(0x00, 0x0f) AM_RAM // ?? could be communication with the other chip (protection?) - AM_RANGE(0x80, 0x80) AM_WRITE(hexaa_sub_80_w) - AM_RANGE(0x90, 0x90) AM_READ(hexaa_sub_90_r) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(arkanoid_state::brixian_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("protram") - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xd001, 0xd001) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xd008, 0xd008) AM_WRITE(brixian_d008_w) /* gfx bank, flip screen etc. */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(arkanoid_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe840, 0xefff) AM_RAM -ADDRESS_MAP_END +void arkanoid_state::hexaa_sub_iomap(address_map &map) +{ + map.global_mask(0x9f); + map(0x00, 0x0f).ram(); // ?? could be communication with the other chip (protection?) + map(0x80, 0x80).w(this, FUNC(arkanoid_state::hexaa_sub_80_w)); + map(0x90, 0x90).r(this, FUNC(arkanoid_state::hexaa_sub_90_r)); +} + + + +void arkanoid_state::brixian_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().share("protram"); + map(0xd000, 0xd000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xd001, 0xd001).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xd008, 0xd008).w(this, FUNC(arkanoid_state::brixian_d008_w)); /* gfx bank, flip screen etc. */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(arkanoid_state::arkanoid_videoram_w)).share("videoram"); + map(0xe800, 0xe83f).ram().share("spriteram"); + map(0xe840, 0xefff).ram(); +} diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp index 814d61e9923..efaac40124e 100644 --- a/src/mame/drivers/armedf.cpp +++ b/src/mame/drivers/armedf.cpp @@ -418,80 +418,84 @@ WRITE16_MEMBER(armedf_state::irq_lv2_ack_w) * *************************************/ -ADDRESS_MAP_START(armedf_state::terraf_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x0603ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x060400, 0x063fff) AM_RAM - AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) - AM_RANGE(0x06a000, 0x06a9ff) AM_RAM - AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut") - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1") - AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2") - AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1") - AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2") +void armedf_state::terraf_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x0603ff).ram().share("spriteram"); + map(0x060400, 0x063fff).ram(); + map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff); + map(0x06a000, 0x06a9ff).ram(); + map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); + map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x078000, 0x078001).portr("P1"); + map(0x078002, 0x078003).portr("P2"); + map(0x078004, 0x078005).portr("DSW1"); + map(0x078006, 0x078007).portr("DSW2"); // AM_RANGE(0x07c000, 0x07c001) AM_WRITE(terraf_io_w) handled in DRIVER_INIT - AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w) - AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w) - AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w) - AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ - AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv1_ack_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::kozure_map) - AM_IMPORT_FROM( terraf_map ) - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x061000, 0x063fff) AM_RAM + map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w)); + map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w)); + map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w)); + map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ + map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv1_ack_w)); +} + +void armedf_state::kozure_map(address_map &map) +{ + terraf_map(map); + map(0x060000, 0x060fff).ram().share("spriteram"); + map(0x061000, 0x063fff).ram(); // AM_RANGE(0x07c000, 0x07c001) AM_WRITE(kozure_io_w) // AM_RANGE(0x0c0000, 0x0c0001) AM_WRITENOP /* watchdog? */ // AM_RANGE(0xffd000, 0xffd001) AM_WRITENOP /* passes crc ROM information to MCU, I guess */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::cclimbr2_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x061000, 0x063fff) AM_RAM - AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) - AM_RANGE(0x06a000, 0x06a9ff) AM_RAM - AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut") - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1") - AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2") - AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1") - AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2") +} + +void armedf_state::cclimbr2_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x060fff).ram().share("spriteram"); + map(0x061000, 0x063fff).ram(); + map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff); + map(0x06a000, 0x06a9ff).ram(); + map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); + map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x078000, 0x078001).portr("P1"); + map(0x078002, 0x078003).portr("P2"); + map(0x078004, 0x078005).portr("DSW1"); + map(0x078006, 0x078007).portr("DSW2"); // AM_RANGE(0x07c000, 0x07c001) AM_WRITE(io_w) - AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w) - AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w) - AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w) - AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ - AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv2_ack_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::legion_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x061000, 0x063fff) AM_RAM - AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(nb1414m4_text_videoram_r,nb1414m4_text_videoram_w,0x00ff) - AM_RANGE(0x06a000, 0x06a9ff) AM_RAM - AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut") - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1") - AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2") - AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1") - AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2") + map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w)); + map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w)); + map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w)); + map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ + map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv2_ack_w)); +} + +void armedf_state::legion_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x060fff).ram().share("spriteram"); + map(0x061000, 0x063fff).ram(); + map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff); + map(0x06a000, 0x06a9ff).ram(); + map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); + map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x078000, 0x078001).portr("P1"); + map(0x078002, 0x078003).portr("P2"); + map(0x078004, 0x078005).portr("DSW1"); + map(0x078006, 0x078007).portr("DSW2"); // AM_RANGE(0x07c000, 0x07c001) AM_WRITE(legion_io_w) - AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w) - AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w) - AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w) - AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ - AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv2_ack_w) -ADDRESS_MAP_END + map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w)); + map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w)); + map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w)); + map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ + map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv2_ack_w)); +} WRITE8_MEMBER(armedf_state::legionjb_fg_scroll_w) { @@ -502,52 +506,54 @@ WRITE8_MEMBER(armedf_state::legionjb_fg_scroll_w) m_fg_scrolly = (m_legion_cmd[0x00] & 0xff) | ((m_legion_cmd[0x01] & 0x3) << 8); } -ADDRESS_MAP_START(armedf_state::legionjb_map) - AM_RANGE(0x040000, 0x04003f) AM_WRITE8(legionjb_fg_scroll_w,0x00ff) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x061000, 0x063fff) AM_RAM - AM_RANGE(0x064000, 0x064fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff) - AM_RANGE(0x06a000, 0x06a9ff) AM_RAM - AM_RANGE(0x06c000, 0x06cfff) AM_RAM AM_SHARE("spr_pal_clut") - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x074000, 0x074fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x078000, 0x078001) AM_READ_PORT("P1") - AM_RANGE(0x078002, 0x078003) AM_READ_PORT("P2") - AM_RANGE(0x078004, 0x078005) AM_READ_PORT("DSW1") - AM_RANGE(0x078006, 0x078007) AM_READ_PORT("DSW2") +void armedf_state::legionjb_map(address_map &map) +{ + map(0x040000, 0x04003f).w(this, FUNC(armedf_state::legionjb_fg_scroll_w)).umask16(0x00ff); + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x060fff).ram().share("spriteram"); + map(0x061000, 0x063fff).ram(); + map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff); + map(0x06a000, 0x06a9ff).ram(); + map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); + map(0x070000, 0x070fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x078000, 0x078001).portr("P1"); + map(0x078002, 0x078003).portr("P2"); + map(0x078004, 0x078005).portr("DSW1"); + map(0x078006, 0x078007).portr("DSW2"); // AM_RANGE(0x07c000, 0x07c001) AM_WRITE(bootleg_io_w) - AM_RANGE(0x07c002, 0x07c003) AM_WRITE(armedf_bg_scrollx_w) - AM_RANGE(0x07c004, 0x07c005) AM_WRITE(armedf_bg_scrolly_w) - AM_RANGE(0x07c00a, 0x07c00b) AM_WRITE(sound_command_w) - AM_RANGE(0x07c00c, 0x07c00d) AM_WRITENOP /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ - AM_RANGE(0x07c00e, 0x07c00f) AM_WRITE(irq_lv2_ack_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::armedf_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x061000, 0x065fff) AM_RAM - AM_RANGE(0x066000, 0x066fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x067000, 0x067fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x068000, 0x069fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff) - AM_RANGE(0x06a000, 0x06afff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x06b000, 0x06bfff) AM_RAM AM_SHARE("spr_pal_clut") - AM_RANGE(0x06c000, 0x06c7ff) AM_RAM - AM_RANGE(0x06c000, 0x06c001) AM_READ_PORT("P1") - AM_RANGE(0x06c002, 0x06c003) AM_READ_PORT("P2") - AM_RANGE(0x06c004, 0x06c005) AM_READ_PORT("DSW1") - AM_RANGE(0x06c006, 0x06c007) AM_READ_PORT("DSW2") - AM_RANGE(0x06d000, 0x06d001) AM_WRITE(terraf_io_w) - AM_RANGE(0x06d002, 0x06d003) AM_WRITE(armedf_bg_scrollx_w) - AM_RANGE(0x06d004, 0x06d005) AM_WRITE(armedf_bg_scrolly_w) - AM_RANGE(0x06d006, 0x06d007) AM_WRITE(armedf_fg_scrollx_w) - AM_RANGE(0x06d008, 0x06d009) AM_WRITE(armedf_fg_scrolly_w) - AM_RANGE(0x06d00a, 0x06d00b) AM_WRITE(sound_command_w) - AM_RANGE(0x06d00c, 0x06d00d) AM_WRITENOP //watchdog - AM_RANGE(0x06d00e, 0x06d00f) AM_WRITE(irq_lv1_ack_w) -ADDRESS_MAP_END + map(0x07c002, 0x07c003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w)); + map(0x07c004, 0x07c005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w)); + map(0x07c00a, 0x07c00b).w(this, FUNC(armedf_state::sound_command_w)); + map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ + map(0x07c00e, 0x07c00f).w(this, FUNC(armedf_state::irq_lv2_ack_w)); +} + +void armedf_state::armedf_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x060fff).ram().share("spriteram"); + map(0x061000, 0x065fff).ram(); + map(0x066000, 0x066fff).ram().w(this, FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x067000, 0x067fff).ram().w(this, FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); + map(0x068000, 0x069fff).rw(this, FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff); + map(0x06a000, 0x06afff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x06b000, 0x06bfff).ram().share("spr_pal_clut"); + map(0x06c000, 0x06c7ff).ram(); + map(0x06c000, 0x06c001).portr("P1"); + map(0x06c002, 0x06c003).portr("P2"); + map(0x06c004, 0x06c005).portr("DSW1"); + map(0x06c006, 0x06c007).portr("DSW2"); + map(0x06d000, 0x06d001).w(this, FUNC(armedf_state::terraf_io_w)); + map(0x06d002, 0x06d003).w(this, FUNC(armedf_state::armedf_bg_scrollx_w)); + map(0x06d004, 0x06d005).w(this, FUNC(armedf_state::armedf_bg_scrolly_w)); + map(0x06d006, 0x06d007).w(this, FUNC(armedf_state::armedf_fg_scrollx_w)); + map(0x06d008, 0x06d009).w(this, FUNC(armedf_state::armedf_fg_scrolly_w)); + map(0x06d00a, 0x06d00b).w(this, FUNC(armedf_state::sound_command_w)); + map(0x06d00c, 0x06d00d).nopw(); //watchdog + map(0x06d00e, 0x06d00f).w(this, FUNC(armedf_state::irq_lv1_ack_w)); +} READ16_MEMBER(bigfghtr_state::latch_r) { @@ -717,50 +723,55 @@ WRITE8_MEMBER(bigfghtr_state::mcu_spritelist_w) popmessage("MCU access spritelist %04x = %02x, contact MAMEdev",offset,data); } -ADDRESS_MAP_START(bigfghtr_state::bigfghtr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x080600, 0x083fff) AM_READWRITE8(main_sharedram_r,main_sharedram_w,0xffff) - AM_RANGE(0x084000, 0x085fff) AM_RAM //work ram - AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x088000, 0x089fff) AM_READWRITE8(armedf_text_videoram_r,armedf_text_videoram_w,0x00ff) - AM_RANGE(0x08a000, 0x08afff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spr_pal_clut") - AM_RANGE(0x08c000, 0x08c001) AM_READ_PORT("P1") - AM_RANGE(0x08c002, 0x08c003) AM_READ_PORT("P2") - AM_RANGE(0x08c004, 0x08c005) AM_READ_PORT("DSW0") - AM_RANGE(0x08c006, 0x08c007) AM_READ_PORT("DSW1") - AM_RANGE(0x08d000, 0x08d001) AM_WRITE(terraf_io_w) //807b0 - AM_RANGE(0x08d002, 0x08d003) AM_WRITE(armedf_bg_scrollx_w) - AM_RANGE(0x08d004, 0x08d005) AM_WRITE(armedf_bg_scrolly_w) - AM_RANGE(0x08d006, 0x08d007) AM_WRITE(armedf_fg_scrollx_w) - AM_RANGE(0x08d008, 0x08d009) AM_WRITE(armedf_fg_scrolly_w) - AM_RANGE(0x08d00a, 0x08d00b) AM_WRITE(sound_command_w) - AM_RANGE(0x08d00c, 0x08d00d) AM_WRITENOP //watchdog - AM_RANGE(0x08d00e, 0x08d00f) AM_WRITE(irq_lv1_ack_w) - - AM_RANGE(0x400000, 0x400001) AM_READ(latch_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bigfghtr_state::bigfghtr_mcu_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bigfghtr_state::bigfghtr_mcu_io_map) - AM_RANGE(0x00000, 0x005ff) AM_WRITE(mcu_spritelist_w) //Sprite RAM, guess shared as well - AM_RANGE(0x00600, 0x03fff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::sound_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::cclimbr2_soundmap) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END +void bigfghtr_state::bigfghtr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x0805ff).ram().share("spriteram"); + map(0x080600, 0x083fff).rw(this, FUNC(bigfghtr_state::main_sharedram_r), FUNC(bigfghtr_state::main_sharedram_w)); + map(0x084000, 0x085fff).ram(); //work ram + map(0x086000, 0x086fff).ram().w(this, FUNC(bigfghtr_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x087000, 0x087fff).ram().w(this, FUNC(bigfghtr_state::armedf_fg_videoram_w)).share("fg_videoram"); + map(0x088000, 0x089fff).rw(this, FUNC(bigfghtr_state::armedf_text_videoram_r), FUNC(bigfghtr_state::armedf_text_videoram_w)).umask16(0x00ff); + map(0x08a000, 0x08afff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08b000, 0x08bfff).ram().share("spr_pal_clut"); + map(0x08c000, 0x08c001).portr("P1"); + map(0x08c002, 0x08c003).portr("P2"); + map(0x08c004, 0x08c005).portr("DSW0"); + map(0x08c006, 0x08c007).portr("DSW1"); + map(0x08d000, 0x08d001).w(this, FUNC(bigfghtr_state::terraf_io_w)); //807b0 + map(0x08d002, 0x08d003).w(this, FUNC(bigfghtr_state::armedf_bg_scrollx_w)); + map(0x08d004, 0x08d005).w(this, FUNC(bigfghtr_state::armedf_bg_scrolly_w)); + map(0x08d006, 0x08d007).w(this, FUNC(bigfghtr_state::armedf_fg_scrollx_w)); + map(0x08d008, 0x08d009).w(this, FUNC(bigfghtr_state::armedf_fg_scrolly_w)); + map(0x08d00a, 0x08d00b).w(this, FUNC(bigfghtr_state::sound_command_w)); + map(0x08d00c, 0x08d00d).nopw(); //watchdog + map(0x08d00e, 0x08d00f).w(this, FUNC(bigfghtr_state::irq_lv1_ack_w)); + + map(0x400000, 0x400001).r(this, FUNC(bigfghtr_state::latch_r)); +} + +void bigfghtr_state::bigfghtr_mcu_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void bigfghtr_state::bigfghtr_mcu_io_map(address_map &map) +{ + map(0x00000, 0x005ff).w(this, FUNC(bigfghtr_state::mcu_spritelist_w)); //Sprite RAM, guess shared as well + map(0x00600, 0x03fff).ram().share("sharedram"); +} + +void armedf_state::sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void armedf_state::cclimbr2_soundmap(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xffff).ram(); +} READ8_MEMBER(armedf_state::blitter_txram_r) { @@ -790,36 +801,40 @@ WRITE8_MEMBER(armedf_state::fg_scroll_msb_w) } -ADDRESS_MAP_START(armedf_state::terrafjb_extraz80_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_READWRITE(blitter_txram_r,blitter_txram_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::terrafjb_extraz80_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_WRITE(fg_scrollx_w) - AM_RANGE(0x01,0x01) AM_WRITE(fg_scrolly_w) - AM_RANGE(0x02,0x02) AM_WRITE(fg_scroll_msb_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r) - AM_RANGE(0x6, 0x6) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(armedf_state::sound_3526_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r) - AM_RANGE(0x6, 0x6) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void armedf_state::terrafjb_extraz80_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).rw(this, FUNC(armedf_state::blitter_txram_r), FUNC(armedf_state::blitter_txram_w)); + map(0x8000, 0x87ff).ram(); +} + +void armedf_state::terrafjb_extraz80_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(armedf_state::fg_scrollx_w)); + map(0x01, 0x01).w(this, FUNC(armedf_state::fg_scrolly_w)); + map(0x02, 0x02).w(this, FUNC(armedf_state::fg_scroll_msb_w)); +} + +void armedf_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x0, 0x1).w("ymsnd", FUNC(ym3812_device::write)); + map(0x2, 0x2).w("dac1", FUNC(dac_byte_interface::write)); + map(0x3, 0x3).w("dac2", FUNC(dac_byte_interface::write)); + map(0x4, 0x4).r(this, FUNC(armedf_state::soundlatch_clear_r)); + map(0x6, 0x6).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void armedf_state::sound_3526_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x0, 0x1).w("ymsnd", FUNC(ym3526_device::write)); + map(0x2, 0x2).w("dac1", FUNC(dac_byte_interface::write)); + map(0x3, 0x3).w("dac2", FUNC(dac_byte_interface::write)); + map(0x4, 0x4).r(this, FUNC(armedf_state::soundlatch_clear_r)); + map(0x6, 0x6).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /************************************* diff --git a/src/mame/drivers/arsystems.cpp b/src/mame/drivers/arsystems.cpp index 42e6bd2fe81..69010337c60 100644 --- a/src/mame/drivers/arsystems.cpp +++ b/src/mame/drivers/arsystems.cpp @@ -196,41 +196,45 @@ void arcadia_amiga_state::machine_reset() * *************************************/ -ADDRESS_MAP_START(arcadia_amiga_state::overlay_512kb_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(arcadia_amiga_state::a500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(arcadia_amiga_state::arcadia_map) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0) - AM_RANGE(0x980000, 0x9fbfff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9ffffe, 0x9fffff) AM_WRITE(arcadia_multibios_change_game) - AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(arcadia_amiga_state::argh_map) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0) +void arcadia_amiga_state::overlay_512kb_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram"); + map(0x200000, 0x27ffff).rom().region("kickstart", 0); +} + +void arcadia_amiga_state::a500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(arcadia_amiga_state::cia_r), FUNC(arcadia_amiga_state::cia_w)); + map(0xc00000, 0xd7ffff).rw(this, FUNC(arcadia_amiga_state::custom_chip_r), FUNC(arcadia_amiga_state::custom_chip_w)); + map(0xd80000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(arcadia_amiga_state::custom_chip_r), FUNC(arcadia_amiga_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(arcadia_amiga_state::custom_chip_r), FUNC(arcadia_amiga_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(arcadia_amiga_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} + +void arcadia_amiga_state::arcadia_map(address_map &map) +{ + a500_mem(map); + map(0x800000, 0x97ffff).bankr("bank2").region("user3", 0); + map(0x980000, 0x9fbfff).rom().region("user2", 0); + map(0x9fc000, 0x9ffffd).ram().share("nvram"); + map(0x9ffffe, 0x9fffff).w(this, FUNC(arcadia_amiga_state::arcadia_multibios_change_game)); + map(0xf00000, 0xf7ffff).rom().region("user2", 0); +} + +void arcadia_amiga_state::argh_map(address_map &map) +{ + a500_mem(map); + map(0x800000, 0x97ffff).bankr("bank2").region("user3", 0); // AM_RANGE(0x980000, 0x9fefff) AM_ROM AM_REGION("user3", 0) - AM_RANGE(0x9ff000, 0x9fffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user3", 0) -ADDRESS_MAP_END + map(0x9ff000, 0x9fffff).ram().share("nvram"); + map(0xf00000, 0xf7ffff).rom().region("user3", 0); +} /************************************* * diff --git a/src/mame/drivers/artmagic.cpp b/src/mame/drivers/artmagic.cpp index 991540e87f8..943adcba472 100644 --- a/src/mame/drivers/artmagic.cpp +++ b/src/mame/drivers/artmagic.cpp @@ -408,54 +408,57 @@ WRITE16_MEMBER(artmagic_state::protection_bit_w) * *************************************/ -ADDRESS_MAP_START(artmagic_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x220000, 0x23ffff) AM_RAM - AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("300000") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("300002") - AM_RANGE(0x300004, 0x300005) AM_READ_PORT("300004") - AM_RANGE(0x300006, 0x300007) AM_READ_PORT("300006") - AM_RANGE(0x300008, 0x300009) AM_READ_PORT("300008") - AM_RANGE(0x30000a, 0x30000b) AM_READ_PORT("30000a") - AM_RANGE(0x300000, 0x300003) AM_WRITE(control_w) AM_SHARE("control") - AM_RANGE(0x300004, 0x300007) AM_WRITE(protection_bit_w) - AM_RANGE(0x360000, 0x360001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(artmagic_state::stonebal_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x27ffff) AM_RAM - AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("300000") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("300002") - AM_RANGE(0x300004, 0x300005) AM_READ_PORT("300004") - AM_RANGE(0x300006, 0x300007) AM_READ_PORT("300006") - AM_RANGE(0x300008, 0x300009) AM_READ_PORT("300008") - AM_RANGE(0x30000a, 0x30000b) AM_READ_PORT("30000a") - AM_RANGE(0x30000c, 0x30000d) AM_READ_PORT("30000c") - AM_RANGE(0x30000e, 0x30000f) AM_READ_PORT("30000e") - AM_RANGE(0x300000, 0x300003) AM_WRITE(control_w) AM_SHARE("control") - AM_RANGE(0x300004, 0x300007) AM_WRITE(protection_bit_w) - AM_RANGE(0x340000, 0x340001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w) -ADDRESS_MAP_END +void artmagic_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x220000, 0x23ffff).ram(); + map(0x240000, 0x240fff).ram().share("nvram"); + map(0x300000, 0x300001).portr("300000"); + map(0x300002, 0x300003).portr("300002"); + map(0x300004, 0x300005).portr("300004"); + map(0x300006, 0x300007).portr("300006"); + map(0x300008, 0x300009).portr("300008"); + map(0x30000a, 0x30000b).portr("30000a"); + map(0x300000, 0x300003).w(this, FUNC(artmagic_state::control_w)).share("control"); + map(0x300004, 0x300007).w(this, FUNC(artmagic_state::protection_bit_w)); + map(0x360001, 0x360001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380007).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); +} -// TODO: jumps to undefined area at PC=33a0 -> 230000, presumably protection device provides a code snippet -ADDRESS_MAP_START(artmagic_state::shtstar_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x27ffff) AM_RAM - AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x300001) AM_READNOP //AM_READ_PORT("300000") - AM_RANGE(0x300000, 0x300003) AM_WRITE(control_w) AM_SHARE("control") - AM_RANGE(0x300004, 0x300007) AM_WRITE(protection_bit_w) - AM_RANGE(0x340000, 0x340001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380007) AM_DEVREADWRITE("tms", tms34010_device, host_r, host_w) - AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE8("mainduart", mc68681_device, read, write, 0x00ff) -ADDRESS_MAP_END +void artmagic_state::stonebal_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x27ffff).ram(); + map(0x280000, 0x280fff).ram().share("nvram"); + map(0x300000, 0x300001).portr("300000"); + map(0x300002, 0x300003).portr("300002"); + map(0x300004, 0x300005).portr("300004"); + map(0x300006, 0x300007).portr("300006"); + map(0x300008, 0x300009).portr("300008"); + map(0x30000a, 0x30000b).portr("30000a"); + map(0x30000c, 0x30000d).portr("30000c"); + map(0x30000e, 0x30000f).portr("30000e"); + map(0x300000, 0x300003).w(this, FUNC(artmagic_state::control_w)).share("control"); + map(0x300004, 0x300007).w(this, FUNC(artmagic_state::protection_bit_w)); + map(0x340001, 0x340001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380007).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); +} + +// TODO: jumps to undefined area at PC=33a0 -> 230000, presumably protection device provides a code snippet +void artmagic_state::shtstar_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x27ffff).ram(); + map(0x280000, 0x280fff).ram().share("nvram"); + + map(0x300000, 0x300001).nopr(); //AM_READ_PORT("300000") + map(0x300000, 0x300003).w(this, FUNC(artmagic_state::control_w)).share("control"); + map(0x300004, 0x300007).w(this, FUNC(artmagic_state::protection_bit_w)); + map(0x340001, 0x340001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380007).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); + map(0x3c0000, 0x3c001f).rw("mainduart", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); +} /************************************* @@ -464,24 +467,26 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(artmagic_state::tms_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0") - AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1") - AM_RANGE(0x00800000, 0x0080007f) AM_READWRITE(artmagic_blitter_r, artmagic_blitter_w) - AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffe00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(artmagic_state::stonebal_tms_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0") - AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1") - AM_RANGE(0x00800000, 0x0080007f) AM_READWRITE(artmagic_blitter_r, artmagic_blitter_w) - AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END +void artmagic_state::tms_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("vram0"); + map(0x00400000, 0x005fffff).ram().share("vram1"); + map(0x00800000, 0x0080007f).rw(this, FUNC(artmagic_state::artmagic_blitter_r), FUNC(artmagic_state::artmagic_blitter_w)); + map(0x00c00000, 0x00c000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xffe00000, 0xffffffff).ram(); +} + + +void artmagic_state::stonebal_tms_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("vram0"); + map(0x00400000, 0x005fffff).ram().share("vram1"); + map(0x00800000, 0x0080007f).rw(this, FUNC(artmagic_state::artmagic_blitter_r), FUNC(artmagic_state::artmagic_blitter_w)); + map(0x00c00000, 0x00c000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xffc00000, 0xffffffff).ram(); +} /************************************* * @@ -491,21 +496,24 @@ ADDRESS_MAP_END *************************************/ /* see adp.c */ -ADDRESS_MAP_START(artmagic_state::shtstar_subcpu_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x800140, 0x800141) AM_DEVWRITE8("aysnd", ym2149_device, address_w, 0x00ff) - AM_RANGE(0x800142, 0x800143) AM_DEVREADWRITE8("aysnd", ym2149_device, data_r, data_w, 0x00ff) - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("subduart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(artmagic_state::shtstar_guncpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(artmagic_state::shtstar_guncpu_io_map) - AM_RANGE(0xc000, 0xcfff) AM_RAM -ADDRESS_MAP_END +void artmagic_state::shtstar_subcpu_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x800141, 0x800141).w("aysnd", FUNC(ym2149_device::address_w)); + map(0x800143, 0x800143).rw("aysnd", FUNC(ym2149_device::data_r), FUNC(ym2149_device::data_w)); + map(0x800180, 0x80019f).rw("subduart", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xffc000, 0xffffff).ram(); +} + +void artmagic_state::shtstar_guncpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} + +void artmagic_state::shtstar_guncpu_io_map(address_map &map) +{ + map(0xc000, 0xcfff).ram(); +} /************************************* diff --git a/src/mame/drivers/ashnojoe.cpp b/src/mame/drivers/ashnojoe.cpp index 522d5e7cb8f..837998df461 100644 --- a/src/mame/drivers/ashnojoe.cpp +++ b/src/mame/drivers/ashnojoe.cpp @@ -91,27 +91,28 @@ READ16_MEMBER(ashnojoe_state::fake_4a00a_r) return 0; } -ADDRESS_MAP_START(ashnojoe_state::ashnojoe_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x041fff) AM_RAM_WRITE(ashnojoe_tileram3_w) AM_SHARE("tileram_3") - AM_RANGE(0x042000, 0x043fff) AM_RAM_WRITE(ashnojoe_tileram4_w) AM_SHARE("tileram_4") - AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE(ashnojoe_tileram5_w) AM_SHARE("tileram_5") - AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(ashnojoe_tileram2_w) AM_SHARE("tileram_2") - AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(ashnojoe_tileram6_w) AM_SHARE("tileram_6") - AM_RANGE(0x047000, 0x047fff) AM_RAM_WRITE(ashnojoe_tileram7_w) AM_SHARE("tileram_7") - AM_RANGE(0x048000, 0x048fff) AM_RAM_WRITE(ashnojoe_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x049000, 0x049fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x04a000, 0x04a001) AM_READ_PORT("P1") - AM_RANGE(0x04a002, 0x04a003) AM_READ_PORT("P2") - AM_RANGE(0x04a004, 0x04a005) AM_READ_PORT("DSW") - AM_RANGE(0x04a006, 0x04a007) AM_WRITEONLY AM_SHARE("tilemap_reg") - AM_RANGE(0x04a008, 0x04a009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x04a00a, 0x04a00b) AM_READ(fake_4a00a_r) // ?? - AM_RANGE(0x04a010, 0x04a019) AM_WRITE(joe_tilemaps_xscroll_w) - AM_RANGE(0x04a020, 0x04a029) AM_WRITE(joe_tilemaps_yscroll_w) - AM_RANGE(0x04c000, 0x04ffff) AM_RAM - AM_RANGE(0x080000, 0x0bffff) AM_ROM -ADDRESS_MAP_END +void ashnojoe_state::ashnojoe_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x041fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram3_w)).share("tileram_3"); + map(0x042000, 0x043fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram4_w)).share("tileram_4"); + map(0x044000, 0x044fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram5_w)).share("tileram_5"); + map(0x045000, 0x045fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram2_w)).share("tileram_2"); + map(0x046000, 0x046fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram6_w)).share("tileram_6"); + map(0x047000, 0x047fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram7_w)).share("tileram_7"); + map(0x048000, 0x048fff).ram().w(this, FUNC(ashnojoe_state::ashnojoe_tileram_w)).share("tileram"); + map(0x049000, 0x049fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x04a000, 0x04a001).portr("P1"); + map(0x04a002, 0x04a003).portr("P2"); + map(0x04a004, 0x04a005).portr("DSW"); + map(0x04a006, 0x04a007).writeonly().share("tilemap_reg"); + map(0x04a009, 0x04a009).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x04a00a, 0x04a00b).r(this, FUNC(ashnojoe_state::fake_4a00a_r)); // ?? + map(0x04a010, 0x04a019).w(this, FUNC(ashnojoe_state::joe_tilemaps_xscroll_w)); + map(0x04a020, 0x04a029).w(this, FUNC(ashnojoe_state::joe_tilemaps_yscroll_w)); + map(0x04c000, 0x04ffff).ram(); + map(0x080000, 0x0bffff).rom(); +} WRITE8_MEMBER(ashnojoe_state::adpcm_w) @@ -124,19 +125,21 @@ READ8_MEMBER(ashnojoe_state::sound_latch_status_r) return m_soundlatch->pending_r(); } -ADDRESS_MAP_START(ashnojoe_state::sound_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ashnojoe_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x02, 0x02) AM_WRITE(adpcm_w) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x06, 0x06) AM_READ(sound_latch_status_r) -ADDRESS_MAP_END +void ashnojoe_state::sound_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank4"); +} + +void ashnojoe_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x02, 0x02).w(this, FUNC(ashnojoe_state::adpcm_w)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x06, 0x06).r(this, FUNC(ashnojoe_state::sound_latch_status_r)); +} static INPUT_PORTS_START( ashnojoe ) diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp index 6273c3e69b3..f7375798c13 100644 --- a/src/mame/drivers/asst128.cpp +++ b/src/mame/drivers/asst128.cpp @@ -70,18 +70,20 @@ WRITE8_MEMBER(asst128_state::asst128_fdc_dor_w) m_fdc->dor_w(space, offset, data, mem_mask); } -ADDRESS_MAP_START(asst128_state::asst128_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void asst128_state::asst128_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(asst128_state::asst128_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", asst128_mb_device, map, 0xffff) - AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff) - AM_RANGE(0x03f2, 0x03f3) AM_WRITE8(asst128_fdc_dor_w, 0xffff) - AM_RANGE(0x03f4, 0x03f5) AM_DEVICE8("fdc:upd765", upd765a_device, map, 0xffff) -ADDRESS_MAP_END +void asst128_state::asst128_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(asst128_mb_device::map)); + map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w)); + map(0x03f2, 0x03f3).w(this, FUNC(asst128_state::asst128_fdc_dor_w)); + map(0x03f4, 0x03f5).m("fdc:upd765", FUNC(upd765a_device::map)); +} static SLOT_INTERFACE_START( asst128_floppies ) SLOT_INTERFACE( "525ssqd", FLOPPY_525_SSQD ) diff --git a/src/mame/drivers/asterix.cpp b/src/mame/drivers/asterix.cpp index 52919e96633..710936cc083 100644 --- a/src/mame/drivers/asterix.cpp +++ b/src/mame/drivers/asterix.cpp @@ -168,37 +168,39 @@ WRITE16_MEMBER(asterix_state::protection_w) } } -ADDRESS_MAP_START(asterix_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x180000, 0x1807ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_word_r, k053245_word_w) - AM_RANGE(0x180800, 0x180fff) AM_RAM // extra RAM, or mirror for the above? - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_word_r, k053244_word_w) - AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_lsb_r, k053244_lsb_w) - AM_RANGE(0x380000, 0x380001) AM_READ_PORT("IN0") - AM_RANGE(0x380002, 0x380003) AM_READ_PORT("IN1") - AM_RANGE(0x380100, 0x380101) AM_WRITE(control2_w) - AM_RANGE(0x380200, 0x380203) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x380300, 0x380301) AM_WRITE(sound_irq_w) - AM_RANGE(0x380400, 0x380401) AM_WRITE(asterix_spritebank_w) - AM_RANGE(0x380500, 0x38051f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x380600, 0x380601) AM_NOP // Watchdog - AM_RANGE(0x380700, 0x380707) AM_DEVWRITE("k056832", k056832_device, b_word_w) - AM_RANGE(0x380800, 0x380803) AM_WRITE(protection_w) - AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("k056832", k056832_device, ram_half_word_r, ram_half_word_w) - AM_RANGE(0x420000, 0x421fff) AM_DEVREAD("k056832", k056832_device, old_rom_word_r) // Passthrough to tile roms - AM_RANGE(0x440000, 0x44003f) AM_DEVWRITE("k056832", k056832_device, word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(asterix_state::sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf801, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, data_w) - AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) - AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("ymsnd", ym2151_device, register_w) -ADDRESS_MAP_END +void asterix_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x107fff).ram(); + map(0x180000, 0x1807ff).rw(m_k053244, FUNC(k05324x_device::k053245_word_r), FUNC(k05324x_device::k053245_word_w)); + map(0x180800, 0x180fff).ram(); // extra RAM, or mirror for the above? + map(0x200000, 0x20000f).rw(m_k053244, FUNC(k05324x_device::k053244_word_r), FUNC(k05324x_device::k053244_word_w)); + map(0x280000, 0x280fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30001f).rw(m_k053244, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); + map(0x380000, 0x380001).portr("IN0"); + map(0x380002, 0x380003).portr("IN1"); + map(0x380100, 0x380101).w(this, FUNC(asterix_state::control2_w)); + map(0x380200, 0x380203).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x380300, 0x380301).w(this, FUNC(asterix_state::sound_irq_w)); + map(0x380400, 0x380401).w(this, FUNC(asterix_state::asterix_spritebank_w)); + map(0x380500, 0x38051f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x380600, 0x380601).noprw(); // Watchdog + map(0x380700, 0x380707).w(m_k056832, FUNC(k056832_device::b_word_w)); + map(0x380800, 0x380803).w(this, FUNC(asterix_state::protection_w)); + map(0x400000, 0x400fff).rw(m_k056832, FUNC(k056832_device::ram_half_word_r), FUNC(k056832_device::ram_half_word_w)); + map(0x420000, 0x421fff).r(m_k056832, FUNC(k056832_device::old_rom_word_r)); // Passthrough to tile roms + map(0x440000, 0x44003f).w(m_k056832, FUNC(k056832_device::word_w)); +} + +void asterix_state::sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf801, 0xf801).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)); + map(0xfa00, 0xfa2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0xfc00, 0xfc00).w(this, FUNC(asterix_state::sound_arm_nmi_w)); + map(0xfe00, 0xfe00).w("ymsnd", FUNC(ym2151_device::register_w)); +} diff --git a/src/mame/drivers/asteroid.cpp b/src/mame/drivers/asteroid.cpp index 7ae9185957a..e85b624f99c 100644 --- a/src/mame/drivers/asteroid.cpp +++ b/src/mame/drivers/asteroid.cpp @@ -248,66 +248,69 @@ WRITE8_MEMBER(asteroid_state::llander_led_w) * *************************************/ -ADDRESS_MAP_START(asteroid_state::asteroid_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x02ff) AM_RAMBANK("ram1") AM_SHARE("ram1") - AM_RANGE(0x0300, 0x03ff) AM_RAMBANK("ram2") AM_SHARE("ram2") - AM_RANGE(0x2000, 0x2007) AM_READ(asteroid_IN0_r) /* IN0 */ - AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */ - AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r) /* DSW1 */ - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("dvg", dvg_device, go_w) - AM_RANGE(0x3200, 0x3200) AM_WRITE(asteroid_bank_switch_w) - AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3600, 0x3600) AM_WRITE(asteroid_explode_w) - AM_RANGE(0x3a00, 0x3a00) AM_WRITE(asteroid_thump_w) - AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("audiolatch", ls259_device, write_d7) - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(asteroid_noise_reset_w) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000) - AM_RANGE(0x5000, 0x57ff) AM_ROM /* vector rom */ - AM_RANGE(0x6800, 0x7fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(asteroid_state::astdelux_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x02ff) AM_RAMBANK("ram1") AM_SHARE("ram1") - AM_RANGE(0x0300, 0x03ff) AM_RAMBANK("ram2") AM_SHARE("ram2") - AM_RANGE(0x2000, 0x2007) AM_READ(asteroid_IN0_r) /* IN0 */ - AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */ - AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r) /* DSW1 */ - AM_RANGE(0x2c00, 0x2c0f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x2c40, 0x2c7f) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("dvg", dvg_device, go_w) - AM_RANGE(0x3200, 0x323f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3600, 0x3600) AM_WRITE(asteroid_explode_w) - AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("audiolatch", ls259_device, write_d7) - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(asteroid_noise_reset_w) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000) - AM_RANGE(0x4800, 0x57ff) AM_ROM /* vector rom */ - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(asteroid_state::llander_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x1f00) - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN0") - AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */ - AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r) /* DSW1 */ - AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("THRUST") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("dvg", dvg_device, go_w) - AM_RANGE(0x3200, 0x3200) AM_WRITE(llander_led_w) - AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(llander_sounds_w) - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(llander_snd_reset_w) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000) - AM_RANGE(0x4800, 0x5fff) AM_ROM /* vector rom */ - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void asteroid_state::asteroid_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x02ff).bankrw("ram1").share("ram1"); + map(0x0300, 0x03ff).bankrw("ram2").share("ram2"); + map(0x2000, 0x2007).r(this, FUNC(asteroid_state::asteroid_IN0_r)); /* IN0 */ + map(0x2400, 0x2407).r(this, FUNC(asteroid_state::asteroid_IN1_r)); /* IN1 */ + map(0x2800, 0x2803).r(this, FUNC(asteroid_state::asteroid_DSW1_r)); /* DSW1 */ + map(0x3000, 0x3000).w(m_dvg, FUNC(dvg_device::go_w)); + map(0x3200, 0x3200).w(this, FUNC(asteroid_state::asteroid_bank_switch_w)); + map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3600, 0x3600).w(this, FUNC(asteroid_state::asteroid_explode_w)); + map(0x3a00, 0x3a00).w(this, FUNC(asteroid_state::asteroid_thump_w)); + map(0x3c00, 0x3c07).w("audiolatch", FUNC(ls259_device::write_d7)); + map(0x3e00, 0x3e00).w(this, FUNC(asteroid_state::asteroid_noise_reset_w)); + map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000); + map(0x5000, 0x57ff).rom(); /* vector rom */ + map(0x6800, 0x7fff).rom(); +} + + +void asteroid_state::astdelux_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x02ff).bankrw("ram1").share("ram1"); + map(0x0300, 0x03ff).bankrw("ram2").share("ram2"); + map(0x2000, 0x2007).r(this, FUNC(asteroid_state::asteroid_IN0_r)); /* IN0 */ + map(0x2400, 0x2407).r(this, FUNC(asteroid_state::asteroid_IN1_r)); /* IN1 */ + map(0x2800, 0x2803).r(this, FUNC(asteroid_state::asteroid_DSW1_r)); /* DSW1 */ + map(0x2c00, 0x2c0f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x2c40, 0x2c7f).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x3000, 0x3000).w(m_dvg, FUNC(dvg_device::go_w)); + map(0x3200, 0x323f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3600, 0x3600).w(this, FUNC(asteroid_state::asteroid_explode_w)); + map(0x3a00, 0x3a00).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x3c00, 0x3c07).w("audiolatch", FUNC(ls259_device::write_d7)); + map(0x3e00, 0x3e00).w(this, FUNC(asteroid_state::asteroid_noise_reset_w)); + map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000); + map(0x4800, 0x57ff).rom(); /* vector rom */ + map(0x6000, 0x7fff).rom(); +} + + +void asteroid_state::llander_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram().mirror(0x1f00); + map(0x2000, 0x2000).portr("IN0"); + map(0x2400, 0x2407).r(this, FUNC(asteroid_state::asteroid_IN1_r)); /* IN1 */ + map(0x2800, 0x2803).r(this, FUNC(asteroid_state::asteroid_DSW1_r)); /* DSW1 */ + map(0x2c00, 0x2c00).portr("THRUST"); + map(0x3000, 0x3000).w(m_dvg, FUNC(dvg_device::go_w)); + map(0x3200, 0x3200).w(this, FUNC(asteroid_state::llander_led_w)); + map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3c00, 0x3c00).w(this, FUNC(asteroid_state::llander_sounds_w)); + map(0x3e00, 0x3e00).w(this, FUNC(asteroid_state::llander_snd_reset_w)); + map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000); + map(0x4800, 0x5fff).rom(); /* vector rom */ + map(0x6000, 0x7fff).rom(); +} diff --git a/src/mame/drivers/astinvad.cpp b/src/mame/drivers/astinvad.cpp index 3d81d757201..e02932b471b 100644 --- a/src/mame/drivers/astinvad.cpp +++ b/src/mame/drivers/astinvad.cpp @@ -475,35 +475,39 @@ WRITE8_MEMBER(astinvad_state::spaceint_sound2_w) * *************************************/ -ADDRESS_MAP_START(astinvad_state::kamikaze_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x1bff) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astinvad_state::spaceint_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astinvad_state::kamikaze_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(kamikaze_ppi_r, kamikaze_ppi_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astinvad_state::spaceint_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_WRITE(spaceint_sound1_w) - AM_RANGE(0x03, 0x03) AM_WRITE(color_latch_w) - AM_RANGE(0x04, 0x04) AM_WRITE(spaceint_sound2_w) -ADDRESS_MAP_END +void astinvad_state::kamikaze_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x1bff).rom(); + map(0x1c00, 0x1fff).ram(); + map(0x2000, 0x3fff).ram().share("videoram"); +} + + +void astinvad_state::spaceint_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x5fff).ram().w(this, FUNC(astinvad_state::spaceint_videoram_w)).share("videoram"); +} + + +void astinvad_state::kamikaze_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(astinvad_state::kamikaze_ppi_r), FUNC(astinvad_state::kamikaze_ppi_w)); +} + + +void astinvad_state::spaceint_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).w(this, FUNC(astinvad_state::spaceint_sound1_w)); + map(0x03, 0x03).w(this, FUNC(astinvad_state::color_latch_w)); + map(0x04, 0x04).w(this, FUNC(astinvad_state::spaceint_sound2_w)); +} diff --git a/src/mame/drivers/astrafr.cpp b/src/mame/drivers/astrafr.cpp index 39ab2e11ed6..a63875dc0bd 100644 --- a/src/mame/drivers/astrafr.cpp +++ b/src/mame/drivers/astrafr.cpp @@ -247,23 +247,27 @@ WRITE32_MEMBER(astrafr_state::astrafr_slave_mem_w) -ADDRESS_MAP_START(astrafr_state::astrafr_master_map) - AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_mem_r, astrafr_mem_w) -ADDRESS_MAP_END +void astrafr_state::astrafr_master_map(address_map &map) +{ + map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_mem_r), FUNC(astrafr_state::astrafr_mem_w)); +} -ADDRESS_MAP_START(astrafr_state::astrafr_master_alt_map) - AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_mem_r, astrafr_mem_w) -ADDRESS_MAP_END +void astrafr_state::astrafr_master_alt_map(address_map &map) +{ + map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_mem_r), FUNC(astrafr_state::astrafr_mem_w)); +} -ADDRESS_MAP_START(astrafr_state::astra_map) - AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_mem_r, astrafr_mem_w) -ADDRESS_MAP_END +void astrafr_state::astra_map(address_map &map) +{ + map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_mem_r), FUNC(astrafr_state::astrafr_mem_w)); +} // probably identical, afaik they're linked units.. -ADDRESS_MAP_START(astrafr_state::astrafr_slave_map) - AM_RANGE(0x000000, 0xffffffff) AM_READWRITE(astrafr_slave_mem_r, astrafr_slave_mem_w) -ADDRESS_MAP_END +void astrafr_state::astrafr_slave_map(address_map &map) +{ + map(0x000000, 0xffffffff).rw(this, FUNC(astrafr_state::astrafr_slave_mem_r), FUNC(astrafr_state::astrafr_slave_mem_w)); +} static INPUT_PORTS_START( astrafr ) diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp index ad4d79eda6b..4183bd34761 100644 --- a/src/mame/drivers/astrcorp.cpp +++ b/src/mame/drivers/astrcorp.cpp @@ -311,67 +311,71 @@ READ16_MEMBER(astrocorp_state::astrocorp_unk_r) } -ADDRESS_MAP_START(astrocorp_state::showhand_map) - AM_RANGE( 0x000000, 0x01ffff ) AM_ROM - AM_RANGE( 0x050000, 0x050fff ) AM_RAM AM_SHARE("spriteram") - AM_RANGE( 0x052000, 0x052001 ) AM_WRITE(astrocorp_draw_sprites_w) - AM_RANGE( 0x054000, 0x054001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x058000, 0x058001 ) AM_WRITE(astrocorp_eeprom_w) - AM_RANGE( 0x05a000, 0x05a001 ) AM_WRITE(showhand_outputs_w) - AM_RANGE( 0x05e000, 0x05e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE( 0x070000, 0x073fff ) AM_RAM AM_SHARE("nvram") // battery - AM_RANGE( 0x080000, 0x080001 ) AM_WRITE(astrocorp_sound_bank_w) - AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w) - AM_RANGE( 0x0d0000, 0x0d0001 ) AM_READ(astrocorp_unk_r) - AM_RANGE( 0x0d0000, 0x0d0001 ) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(astrocorp_state::showhanc_map) - AM_RANGE( 0x000000, 0x01ffff ) AM_ROM - AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE( 0x070000, 0x070001 ) AM_WRITE(astrocorp_sound_bank_w) - AM_RANGE( 0x080000, 0x080fff ) AM_RAM AM_SHARE("spriteram") - AM_RANGE( 0x082000, 0x082001 ) AM_WRITE(astrocorp_draw_sprites_w) - AM_RANGE( 0x084000, 0x084001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x088000, 0x088001 ) AM_WRITE(astrocorp_eeprom_w) - AM_RANGE( 0x08a000, 0x08a001 ) AM_WRITE(showhand_outputs_w) - AM_RANGE( 0x08e000, 0x08e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x090000, 0x093fff ) AM_RAM AM_SHARE("nvram") // battery - AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w) - AM_RANGE( 0x0e0000, 0x0e0001 ) AM_READ(astrocorp_unk_r) - AM_RANGE( 0x0e0000, 0x0e0001 ) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(astrocorp_state::skilldrp_map) - AM_RANGE( 0x000000, 0x03ffff ) AM_ROM - AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("spriteram") - AM_RANGE( 0x202000, 0x202001 ) AM_WRITE(astrocorp_draw_sprites_w) - AM_RANGE( 0x204000, 0x204001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x208000, 0x208001 ) AM_WRITE(astrocorp_eeprom_w) - AM_RANGE( 0x20a000, 0x20a001 ) AM_WRITE(skilldrp_outputs_w) - AM_RANGE( 0x20e000, 0x20e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x380000, 0x3801ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE( 0x400000, 0x400001 ) AM_WRITE(astrocorp_screen_enable_w) - AM_RANGE( 0x500000, 0x507fff ) AM_RAM AM_SHARE("nvram") // battery - AM_RANGE( 0x580000, 0x580001 ) AM_WRITE(skilldrp_sound_bank_w) - AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(astrocorp_state::speeddrp_map) - AM_RANGE( 0x000000, 0x01ffff ) AM_ROM - AM_RANGE( 0x280000, 0x283fff ) AM_RAM AM_SHARE("nvram") // battery - AM_RANGE( 0x380000, 0x380fff ) AM_RAM AM_SHARE("spriteram") - AM_RANGE( 0x382000, 0x382001 ) AM_WRITE(astrocorp_draw_sprites_w) - AM_RANGE( 0x384000, 0x384001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x388000, 0x388001 ) AM_WRITE(astrocorp_eeprom_w) - AM_RANGE( 0x38a000, 0x38a001 ) AM_WRITE(skilldrp_outputs_w) - AM_RANGE( 0x38e000, 0x38e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x480000, 0x4801ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE( 0x500000, 0x500001 ) AM_WRITE(astrocorp_screen_enable_w) - AM_RANGE( 0x580000, 0x580001 ) AM_WRITE(skilldrp_sound_bank_w) - AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END +void astrocorp_state::showhand_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x050000, 0x050fff).ram().share("spriteram"); + map(0x052000, 0x052001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w)); + map(0x054000, 0x054001).portr("INPUTS"); + map(0x058000, 0x058001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w)); + map(0x05a000, 0x05a001).w(this, FUNC(astrocorp_state::showhand_outputs_w)); + map(0x05e000, 0x05e001).portr("EEPROMIN"); + map(0x060000, 0x0601ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x070000, 0x073fff).ram().share("nvram"); // battery + map(0x080000, 0x080001).w(this, FUNC(astrocorp_state::astrocorp_sound_bank_w)); + map(0x0a0000, 0x0a0001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w)); + map(0x0d0000, 0x0d0001).r(this, FUNC(astrocorp_state::astrocorp_unk_r)); + map(0x0d0000, 0x0d0000).w(m_oki, FUNC(okim6295_device::write)); +} + +void astrocorp_state::showhanc_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x060000, 0x0601ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x070000, 0x070001).w(this, FUNC(astrocorp_state::astrocorp_sound_bank_w)); + map(0x080000, 0x080fff).ram().share("spriteram"); + map(0x082000, 0x082001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w)); + map(0x084000, 0x084001).portr("INPUTS"); + map(0x088000, 0x088001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w)); + map(0x08a000, 0x08a001).w(this, FUNC(astrocorp_state::showhand_outputs_w)); + map(0x08e000, 0x08e001).portr("EEPROMIN"); + map(0x090000, 0x093fff).ram().share("nvram"); // battery + map(0x0a0000, 0x0a0001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w)); + map(0x0e0000, 0x0e0001).r(this, FUNC(astrocorp_state::astrocorp_unk_r)); + map(0x0e0000, 0x0e0000).w(m_oki, FUNC(okim6295_device::write)); +} + +void astrocorp_state::skilldrp_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x202000, 0x202001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w)); + map(0x204000, 0x204001).portr("INPUTS"); + map(0x208000, 0x208001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w)); + map(0x20a000, 0x20a001).w(this, FUNC(astrocorp_state::skilldrp_outputs_w)); + map(0x20e000, 0x20e001).portr("EEPROMIN"); + map(0x380000, 0x3801ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w)); + map(0x500000, 0x507fff).ram().share("nvram"); // battery + map(0x580000, 0x580001).w(this, FUNC(astrocorp_state::skilldrp_sound_bank_w)); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void astrocorp_state::speeddrp_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x280000, 0x283fff).ram().share("nvram"); // battery + map(0x380000, 0x380fff).ram().share("spriteram"); + map(0x382000, 0x382001).w(this, FUNC(astrocorp_state::astrocorp_draw_sprites_w)); + map(0x384000, 0x384001).portr("INPUTS"); + map(0x388000, 0x388001).w(this, FUNC(astrocorp_state::astrocorp_eeprom_w)); + map(0x38a000, 0x38a001).w(this, FUNC(astrocorp_state::skilldrp_outputs_w)); + map(0x38e000, 0x38e001).portr("EEPROMIN"); + map(0x480000, 0x4801ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).w(this, FUNC(astrocorp_state::astrocorp_screen_enable_w)); + map(0x580000, 0x580001).w(this, FUNC(astrocorp_state::skilldrp_sound_bank_w)); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /*************************************************************************** Input Ports diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp index a18cf450e4d..38739a06440 100644 --- a/src/mame/drivers/astrocde.cpp +++ b/src/mame/drivers/astrocde.cpp @@ -530,88 +530,98 @@ CUSTOM_INPUT_MEMBER( astrocde_state::votrax_speech_status_r ) * *************************************/ -ADDRESS_MAP_START(astrocde_state::seawolf2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc000, 0xc3ff) AM_RAM -ADDRESS_MAP_END +void astrocde_state::seawolf2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w)); + map(0x4000, 0x7fff).ram().share("videoram"); + map(0xc000, 0xc3ff).ram(); +} -ADDRESS_MAP_START(astrocde_state::ebases_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void astrocde_state::ebases_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w)); + map(0x4000, 0x7fff).ram().share("videoram"); +} -ADDRESS_MAP_START(astrocde_state::spacezap_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd03f) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram") - AM_RANGE(0xd040, 0xd7ff) AM_RAM -ADDRESS_MAP_END +void astrocde_state::spacezap_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w)); + map(0x4000, 0x7fff).ram().share("videoram"); + map(0xd000, 0xd03f).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram"); + map(0xd040, 0xd7ff).ram(); +} -ADDRESS_MAP_START(astrocde_state::wow_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd03f) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram") - AM_RANGE(0xd040, 0xdfff) AM_RAM -ADDRESS_MAP_END +void astrocde_state::wow_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w)); + map(0x4000, 0x7fff).ram().share("videoram"); + map(0x8000, 0xcfff).rom(); + map(0xd000, 0xd03f).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram"); + map(0xd040, 0xdfff).ram(); +} -ADDRESS_MAP_START(astrocde_state::robby_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram") - AM_RANGE(0xe800, 0xffff) AM_RAM -ADDRESS_MAP_END +void astrocde_state::robby_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w)); + map(0x4000, 0x7fff).ram().share("videoram"); + map(0x8000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xe000, 0xe1ff).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram"); + map(0xe800, 0xffff).ram(); +} -ADDRESS_MAP_START(astrocde_state::demndrgn_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x4000, 0x7fff) AM_DEVREAD("bank4000", address_map_bank_device, read8) AM_WRITE(profpac_videoram_w) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank8000") - AM_RANGE(0xc000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe800, 0xffff) AM_RAM -ADDRESS_MAP_END +void astrocde_state::demndrgn_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x0000, 0x3fff).w(this, FUNC(astrocde_state::astrocade_funcgen_w)); + map(0x4000, 0x7fff).r(m_bank4000, FUNC(address_map_bank_device::read8)).w(this, FUNC(astrocde_state::profpac_videoram_w)); + map(0x8000, 0xbfff).bankr("bank8000"); + map(0xc000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xe800, 0xffff).ram(); +} -ADDRESS_MAP_START(astrocde_state::profpac_map) - AM_IMPORT_FROM(demndrgn_map) - AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram") -ADDRESS_MAP_END +void astrocde_state::profpac_map(address_map &map) +{ + demndrgn_map(map); + map(0xe000, 0xe1ff).rw(this, FUNC(astrocde_state::protected_ram_r), FUNC(astrocde_state::protected_ram_w)).share("protected_ram"); +} -ADDRESS_MAP_START(astrocde_state::bank4000_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(profpac_videoram_r) - AM_RANGE(0x4000, 0x7fff) AM_ROM AM_REGION("banks", 0x08000) - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("banks", 0x10000) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("banks", 0x18000) -ADDRESS_MAP_END +void astrocde_state::bank4000_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(astrocde_state::profpac_videoram_r)); + map(0x4000, 0x7fff).rom().region("banks", 0x08000); + map(0x8000, 0xbfff).rom().region("banks", 0x10000); + map(0xc000, 0xffff).rom().region("banks", 0x18000); +} -ADDRESS_MAP_START(astrocde_state::profpac_bank4000_map) - AM_IMPORT_FROM(bank4000_map) - AM_RANGE(0x10000, 0xaffff) AM_ROM AM_REGION("epromboard", 0) - AM_RANGE(0xb0000, 0xb3fff) AM_READNOP -ADDRESS_MAP_END +void astrocde_state::profpac_bank4000_map(address_map &map) +{ + bank4000_map(map); + map(0x10000, 0xaffff).rom().region("epromboard", 0); + map(0xb0000, 0xb3fff).nopr(); +} -ADDRESS_MAP_START(astrocde_state::tenpin_sub_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END +void astrocde_state::tenpin_sub_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xc7ff).ram(); +} @@ -621,71 +631,78 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(astrocde_state::port_map) - AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrocde_state::port_map_mono_pattern) - AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) - AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w) - AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrocde_state::port_map_stereo_pattern) - AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) - AM_RANGE(0x0050, 0x0058) AM_SELECT(0xff00) AM_DEVWRITE("astrocade2", astrocade_device, astrocade_sound_w) - AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w) - AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrocde_state::port_map_16col_pattern) - AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) - AM_RANGE(0x0050, 0x0058) AM_SELECT(0xff00) AM_DEVWRITE("astrocade2", astrocade_device, astrocade_sound_w) - AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w) - AM_RANGE(0x00bf, 0x00bf) AM_MIRROR(0xff00) AM_WRITE(profpac_page_select_w) - AM_RANGE(0x00c3, 0x00c3) AM_MIRROR(0xff00) AM_READ(profpac_intercept_r) - AM_RANGE(0x00c0, 0x00c5) AM_MIRROR(0xff00) AM_WRITE(profpac_screenram_ctrl_w) - AM_RANGE(0x00f3, 0x00f3) AM_MIRROR(0xff00) AM_WRITE(profpac_banksw_w) - AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrocde_state::port_map_16col_pattern_nosound) - AM_RANGE(0x0000, 0x0019) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) - AM_RANGE(0x0078, 0x007e) AM_MIRROR(0xff00) AM_WRITE(astrocade_pattern_board_w) - AM_RANGE(0x00bf, 0x00bf) AM_MIRROR(0xff00) AM_WRITE(profpac_page_select_w) - AM_RANGE(0x00c3, 0x00c3) AM_MIRROR(0xff00) AM_READ(profpac_intercept_r) - AM_RANGE(0x00c0, 0x00c5) AM_MIRROR(0xff00) AM_WRITE(profpac_screenram_ctrl_w) - AM_RANGE(0x00f3, 0x00f3) AM_MIRROR(0xff00) AM_WRITE(demndrgn_banksw_w) - AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrocde_state::port_map_16col_pattern_tenpindx) - AM_IMPORT_FROM(port_map_16col_pattern_nosound) - AM_RANGE(0x0060, 0x0060) AM_MIRROR(0xff00) AM_READ_PORT("P60") - AM_RANGE(0x0061, 0x0061) AM_MIRROR(0xff00) AM_READ_PORT("P61") - AM_RANGE(0x0062, 0x0062) AM_MIRROR(0xff00) AM_READ_PORT("P62") - AM_RANGE(0x0063, 0x0063) AM_MIRROR(0xff00) AM_READ_PORT("P63") - AM_RANGE(0x0064, 0x0064) AM_MIRROR(0xff00) AM_READ_PORT("P64") - AM_RANGE(0x0065, 0x0066) AM_MIRROR(0xff00) AM_WRITE(tenpindx_lamp_w) - AM_RANGE(0x0067, 0x0067) AM_MIRROR(0xff00) AM_WRITE(tenpindx_counter_w) - AM_RANGE(0x0068, 0x0068) AM_MIRROR(0xff00) AM_WRITE(tenpindx_lights_w) - AM_RANGE(0x0097, 0x0097) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrocde_state::tenpin_sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x97, 0x97) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x98, 0x98) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x98, 0x98) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x9a, 0x9a) AM_DEVWRITE("aysnd", ay8910_device, data_w) -ADDRESS_MAP_END +void astrocde_state::port_map(address_map &map) +{ + map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w)); +} + + +void astrocde_state::port_map_mono_pattern(address_map &map) +{ + map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w)); + map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w)); + map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w)); +} + + +void astrocde_state::port_map_stereo_pattern(address_map &map) +{ + map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w)); + map(0x0050, 0x0058).select(0xff00).w("astrocade2", FUNC(astrocade_device::astrocade_sound_w)); + map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w)); + map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w)); +} + + +void astrocde_state::port_map_16col_pattern(address_map &map) +{ + map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w)); + map(0x0050, 0x0058).select(0xff00).w("astrocade2", FUNC(astrocade_device::astrocade_sound_w)); + map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w)); + map(0x00bf, 0x00bf).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_page_select_w)); + map(0x00c3, 0x00c3).mirror(0xff00).r(this, FUNC(astrocde_state::profpac_intercept_r)); + map(0x00c0, 0x00c5).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_screenram_ctrl_w)); + map(0x00f3, 0x00f3).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_banksw_w)); + map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w)); +} + + +void astrocde_state::port_map_16col_pattern_nosound(address_map &map) +{ + map(0x0000, 0x0019).select(0xff00).rw(this, FUNC(astrocde_state::astrocade_data_chip_register_r), FUNC(astrocde_state::astrocade_data_chip_register_w)); + map(0x0078, 0x007e).mirror(0xff00).w(this, FUNC(astrocde_state::astrocade_pattern_board_w)); + map(0x00bf, 0x00bf).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_page_select_w)); + map(0x00c3, 0x00c3).mirror(0xff00).r(this, FUNC(astrocde_state::profpac_intercept_r)); + map(0x00c0, 0x00c5).mirror(0xff00).w(this, FUNC(astrocde_state::profpac_screenram_ctrl_w)); + map(0x00f3, 0x00f3).mirror(0xff00).w(this, FUNC(astrocde_state::demndrgn_banksw_w)); + map(0xa55b, 0xa55b).w(this, FUNC(astrocde_state::protected_ram_enable_w)); +} + + +void astrocde_state::port_map_16col_pattern_tenpindx(address_map &map) +{ + port_map_16col_pattern_nosound(map); + map(0x0060, 0x0060).mirror(0xff00).portr("P60"); + map(0x0061, 0x0061).mirror(0xff00).portr("P61"); + map(0x0062, 0x0062).mirror(0xff00).portr("P62"); + map(0x0063, 0x0063).mirror(0xff00).portr("P63"); + map(0x0064, 0x0064).mirror(0xff00).portr("P64"); + map(0x0065, 0x0066).mirror(0xff00).w(this, FUNC(astrocde_state::tenpindx_lamp_w)); + map(0x0067, 0x0067).mirror(0xff00).w(this, FUNC(astrocde_state::tenpindx_counter_w)); + map(0x0068, 0x0068).mirror(0xff00).w(this, FUNC(astrocde_state::tenpindx_lights_w)); + map(0x0097, 0x0097).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + + +void astrocde_state::tenpin_sub_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x90, 0x93).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x97, 0x97).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x98, 0x98).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x98, 0x98).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x9a, 0x9a).w("aysnd", FUNC(ay8910_device::data_w)); +} diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp index 9765b0c612f..ade9762d9fa 100644 --- a/src/mame/drivers/astrof.cpp +++ b/src/mame/drivers/astrof.cpp @@ -539,62 +539,65 @@ MACHINE_RESET_MEMBER(astrof_state,abattle) * *************************************/ -ADDRESS_MAP_START(astrof_state::astrof_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_NOP - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("astrof_color") - AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w) - AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_video_control_2_w) - AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_audio_1_w) - AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(astrof_audio_2_w) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP - AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP - AM_RANGE(0xa003, 0xa007) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrof_state::spfghmk2_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_NOP - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(astrof_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("astrof_color") - AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w) - AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_video_control_2_w) - AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(spfghmk2_audio_w) - AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP - AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP - AM_RANGE(0xa003, 0xa007) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(astrof_state::tomahawk_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_NOP - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(tomahawk_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x8002) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("astrof_color") - AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(video_control_1_w) - AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_video_control_2_w) - AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITE(tomahawk_audio_w) - AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READNOP AM_WRITEONLY AM_SHARE("tomahawk_prot") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP - AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READ(irq_clear_r) AM_WRITENOP - AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x1ff8) AM_READ(tomahawk_protection_r) AM_WRITENOP - AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x1ff8) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void astrof_state::astrof_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram(); + map(0x2000, 0x3fff).noprw(); + map(0x4000, 0x5fff).ram().w(this, FUNC(astrof_state::astrof_videoram_w)).share("videoram"); + map(0x6000, 0x7fff).noprw(); + map(0x8000, 0x8002).mirror(0x1ff8).noprw(); + map(0x8003, 0x8003).mirror(0x1ff8).nopr().writeonly().share("astrof_color"); + map(0x8004, 0x8004).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::video_control_1_w)); + map(0x8005, 0x8005).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::astrof_video_control_2_w)); + map(0x8006, 0x8006).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::astrof_audio_1_w)); + map(0x8007, 0x8007).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::astrof_audio_2_w)); + map(0xa000, 0xa000).mirror(0x1ff8).portr("IN").nopw(); + map(0xa001, 0xa001).mirror(0x1ff8).portr("DSW").nopw(); + map(0xa002, 0xa002).mirror(0x1ff8).r(this, FUNC(astrof_state::irq_clear_r)).nopw(); + map(0xa003, 0xa007).mirror(0x1ff8).noprw(); + map(0xc000, 0xffff).rom(); +} + + +void astrof_state::spfghmk2_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram(); + map(0x2000, 0x3fff).noprw(); + map(0x4000, 0x5fff).ram().w(this, FUNC(astrof_state::astrof_videoram_w)).share("videoram"); + map(0x6000, 0x7fff).noprw(); + map(0x8000, 0x8002).mirror(0x1ff8).noprw(); + map(0x8003, 0x8003).mirror(0x1ff8).nopr().writeonly().share("astrof_color"); + map(0x8004, 0x8004).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::video_control_1_w)); + map(0x8005, 0x8005).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::spfghmk2_video_control_2_w)); + map(0x8006, 0x8006).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::spfghmk2_audio_w)); + map(0x8007, 0x8007).mirror(0x1ff8).noprw(); + map(0xa000, 0xa000).mirror(0x1ff8).portr("IN").nopw(); + map(0xa001, 0xa001).mirror(0x1ff8).portr("DSW").nopw(); + map(0xa002, 0xa002).mirror(0x1ff8).r(this, FUNC(astrof_state::irq_clear_r)).nopw(); + map(0xa003, 0xa007).mirror(0x1ff8).noprw(); + map(0xc000, 0xffff).rom(); +} + + +void astrof_state::tomahawk_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram(); + map(0x2000, 0x3fff).noprw(); + map(0x4000, 0x5fff).ram().w(this, FUNC(astrof_state::tomahawk_videoram_w)).share("videoram"); + map(0x6000, 0x7fff).noprw(); + map(0x8000, 0x8002).mirror(0x1ff8).noprw(); + map(0x8003, 0x8003).mirror(0x1ff8).nopr().writeonly().share("astrof_color"); + map(0x8004, 0x8004).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::video_control_1_w)); + map(0x8005, 0x8005).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::tomahawk_video_control_2_w)); + map(0x8006, 0x8006).mirror(0x1ff8).nopr().w(this, FUNC(astrof_state::tomahawk_audio_w)); + map(0x8007, 0x8007).mirror(0x1ff8).nopr().writeonly().share("tomahawk_prot"); + map(0xa000, 0xa000).mirror(0x1ff8).portr("IN").nopw(); + map(0xa001, 0xa001).mirror(0x1ff8).portr("DSW").nopw(); + map(0xa002, 0xa002).mirror(0x1ff8).r(this, FUNC(astrof_state::irq_clear_r)).nopw(); + map(0xa003, 0xa003).mirror(0x1ff8).r(this, FUNC(astrof_state::tomahawk_protection_r)).nopw(); + map(0xa004, 0xa007).mirror(0x1ff8).noprw(); + map(0xc000, 0xffff).rom(); +} diff --git a/src/mame/drivers/astrohome.cpp b/src/mame/drivers/astrohome.cpp index 0a4a454839f..fcec6699453 100644 --- a/src/mame/drivers/astrohome.cpp +++ b/src/mame/drivers/astrohome.cpp @@ -53,17 +53,19 @@ public: * *********************************************************************************/ -ADDRESS_MAP_START(astrocde_mess_state::astrocade_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_WRITE(astrocade_funcgen_w) - AM_RANGE(0x1000, 0x3fff) AM_ROM /* Star Fortress writes in here?? */ - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") /* ASG */ +void astrocde_mess_state::astrocade_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom().w(this, FUNC(astrocde_mess_state::astrocade_funcgen_w)); + map(0x1000, 0x3fff).rom(); /* Star Fortress writes in here?? */ + map(0x4000, 0x4fff).ram().share("videoram"); /* ASG */ //AM_RANGE(0x5000, 0xffff) AM_DEVREADWRITE("exp", astrocade_exp_device, read, write) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(astrocde_mess_state::astrocade_io) - AM_RANGE(0x00, 0x1f) AM_SELECT(0xff00) AM_READWRITE(astrocade_data_chip_register_r, astrocade_data_chip_register_w) -ADDRESS_MAP_END +void astrocde_mess_state::astrocade_io(address_map &map) +{ + map(0x00, 0x1f).select(0xff00).rw(this, FUNC(astrocde_mess_state::astrocade_data_chip_register_r), FUNC(astrocde_mess_state::astrocade_data_chip_register_w)); +} /************************************* * diff --git a/src/mame/drivers/astropc.cpp b/src/mame/drivers/astropc.cpp index d139da1bb02..4fb6a45f312 100644 --- a/src/mame/drivers/astropc.cpp +++ b/src/mame/drivers/astropc.cpp @@ -34,13 +34,15 @@ public: DECLARE_DRIVER_INIT(astropc); }; -ADDRESS_MAP_START(astropc_state::astropc_map) - AM_RANGE(0x000c0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 ) - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END +void astropc_state::astropc_map(address_map &map) +{ + map(0x000c0000, 0x000fffff).rom().region("bios", 0); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(astropc_state::astropc_io) -ADDRESS_MAP_END +void astropc_state::astropc_io(address_map &map) +{ +} static INPUT_PORTS_START( astropc ) diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp index 8f84cf92c6c..a322a657693 100644 --- a/src/mame/drivers/asuka.cpp +++ b/src/mame/drivers/asuka.cpp @@ -327,108 +327,118 @@ WRITE8_MEMBER(asuka_state::coin_control_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(asuka_state::bonzeadv_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_ROM - AM_RANGE(0x10c000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) - AM_RANGE(0x390000, 0x390001) AM_READ_PORT("DSWA") - AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(asuka_spritectrl_w) - AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("DSWB") - AM_RANGE(0x3c0000, 0x3c0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x3d0000, 0x3d0001) AM_READNOP - AM_RANGE(0x3e0000, 0x3e0001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x800000, 0x8007ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff) - AM_RANGE(0x800800, 0x800fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(asuka_state::asuka_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x1076f0, 0x1076f1) AM_READNOP /* Mofflott init does dummy reads here */ - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) - AM_RANGE(0x3a0000, 0x3a0003) AM_WRITE(asuka_spritectrl_w) - AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xc10000, 0xc103ff) AM_WRITENOP /* error in Asuka init code */ - AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(asuka_state::cadash_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080003) AM_WRITE(asuka_spritectrl_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x0c0002, 0x0c0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x800000, 0x800fff) AM_READWRITE(cadash_share_r,cadash_share_w) /* network ram */ - AM_RANGE(0x900000, 0x90000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_4bpg_word_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(asuka_state::eto_map) /* N.B. tc100scn mirror overlaps spriteram */ - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) - AM_RANGE(0x200000, 0x203fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x400000, 0x40000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_device, read, 0x00ff) /* service mode mirror */ - AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(asuka_spritectrl_w) - AM_RANGE(0x4e0000, 0x4e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x4e0002, 0x4e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVWRITE("tc0100scn", tc0100scn_device, word_w) - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ - AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END +void asuka_state::bonzeadv_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x0fffff).rom(); + map(0x10c000, 0x10ffff).ram(); + map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); + map(0x390000, 0x390001).portr("DSWA"); + map(0x3a0000, 0x3a0001).w(this, FUNC(asuka_state::asuka_spritectrl_w)); + map(0x3b0000, 0x3b0001).portr("DSWB"); + map(0x3c0000, 0x3c0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x3d0000, 0x3d0001).nopr(); + map(0x3e0001, 0x3e0001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x3e0003, 0x3e0003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x8007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff); + map(0x800800, 0x800fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff); + map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ +} + +void asuka_state::asuka_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x1076f0, 0x1076f1).nopr(); /* Mofflott init does dummy reads here */ + map(0x200000, 0x20000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); + map(0x3a0000, 0x3a0003).w(this, FUNC(asuka_state::asuka_spritectrl_w)); + map(0x3e0000, 0x3e0001).nopr(); + map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xc10000, 0xc103ff).nopw(); /* error in Asuka init code */ + map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ +} + +void asuka_state::cadash_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080003).w(this, FUNC(asuka_state::asuka_spritectrl_w)); + map(0x0c0000, 0x0c0001).nopr(); + map(0x0c0001, 0x0c0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x0c0003, 0x0c0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x100000, 0x107fff).ram(); + map(0x800000, 0x800fff).rw(this, FUNC(asuka_state::cadash_share_r), FUNC(asuka_state::cadash_share_w)); /* network ram */ + map(0x900000, 0x90000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0xa00000, 0xa0000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_4bpg_word_w)); + map(0xb00000, 0xb03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ + map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} + +void asuka_state::eto_map(address_map &map) +{ /* N.B. tc100scn mirror overlaps spriteram */ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); + map(0x200000, 0x203fff).ram(); + map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x400000, 0x40000f).r(m_tc0220ioc, FUNC(tc0220ioc_device::read)).umask16(0x00ff); /* service mode mirror */ + map(0x4a0000, 0x4a0003).w(this, FUNC(asuka_state::asuka_spritectrl_w)); + map(0x4e0000, 0x4e0001).nopr(); + map(0x4e0001, 0x4e0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x4e0003, 0x4e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xc00000, 0xc0ffff).w(m_tc0100scn, FUNC(tc0100scn_device::word_w)); + map(0xc00000, 0xc03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ + map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} /***************************************************************************/ -ADDRESS_MAP_START(asuka_state::bonzeadv_z80_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xe600, 0xe600) AM_WRITENOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP - AM_RANGE(0xf000, 0xf000) AM_WRITENOP - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(asuka_state::z80_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) -// AM_RANGE(0x9002, 0x9100) AM_READNOP - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(asuka_msm5205_address_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(asuka_msm5205_start_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(asuka_msm5205_stop_w) -ADDRESS_MAP_END +void asuka_state::bonzeadv_z80_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("audiobank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xe600, 0xe600).nopw(); + map(0xee00, 0xee00).nopw(); + map(0xf000, 0xf000).nopw(); + map(0xf200, 0xf200).w(this, FUNC(asuka_state::sound_bankswitch_w)); +} + +void asuka_state::z80_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("audiobank"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); +// map(0x9002, 0x9100).nopr(); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xb000).w(this, FUNC(asuka_state::asuka_msm5205_address_w)); + map(0xc000, 0xc000).w(this, FUNC(asuka_state::asuka_msm5205_start_w)); + map(0xd000, 0xd000).w(this, FUNC(asuka_state::asuka_msm5205_stop_w)); +} /* no MSM5205 */ -ADDRESS_MAP_START(asuka_state::cadash_z80_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) -ADDRESS_MAP_END +void asuka_state::cadash_z80_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("audiobank"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); +} /* Cadash communication CPU is a z180. @@ -446,14 +456,16 @@ communicates with m68k S with its own shared ram. In short: m68k M -> z180 M <-> z180 S <- m68k S */ -ADDRESS_MAP_START(asuka_state::cadash_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END +void asuka_state::cadash_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("sharedram"); +} -ADDRESS_MAP_START(asuka_state::cadash_sub_io) - AM_RANGE(0x00, 0x3f) AM_RAM // z180 internal I/O regs -ADDRESS_MAP_END +void asuka_state::cadash_sub_io(address_map &map) +{ + map(0x00, 0x3f).ram(); // z180 internal I/O regs +} /*********************************************************** INPUT PORTS, DIPs diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp index c918083fd8f..9bddb5bba46 100644 --- a/src/mame/drivers/at.cpp +++ b/src/mame/drivers/at.cpp @@ -192,47 +192,53 @@ public: }; -ADDRESS_MAP_START(at_state::at16_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10") - AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::at16l_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10") - AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0x20000) - AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0x20000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::at32_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") - AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::at32l_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") - AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0x20000) - AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0x20000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::ficpio_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") - AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::at16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map) -ADDRESS_MAP_END +void at_state::at16_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x09ffff).bankrw("bank10"); + map(0x0e0000, 0x0fffff).rom().region("bios", 0); + map(0xfe0000, 0xffffff).rom().region("bios", 0); +} + +void at_state::at16l_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x09ffff).bankrw("bank10"); + map(0x0e0000, 0x0fffff).rom().region("bios", 0x20000); + map(0xfe0000, 0xffffff).rom().region("bios", 0x20000); +} + +void at_state::at32_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0009ffff).bankrw("bank10"); + map(0x000e0000, 0x000fffff).rom().region("bios", 0); + map(0x00800000, 0x00800bff).ram().share("nvram"); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); +} + +void at_state::at32l_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0009ffff).bankrw("bank10"); + map(0x000e0000, 0x000fffff).rom().region("bios", 0x20000); + map(0x00800000, 0x00800bff).ram().share("nvram"); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0x20000); +} + +void at_state::ficpio_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0009ffff).bankrw("bank10"); + map(0x00800000, 0x00800bff).ram().share("nvram"); + map(0xfffe0000, 0xffffffff).rom().region("isa", 0x20000); +} + +void at_state::at16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); +} READ16_MEMBER( at_state::ps1_unk_r ) { @@ -256,34 +262,38 @@ READ8_MEMBER( at_state::ps1_portb_r ) return data; } -ADDRESS_MAP_START(at_state::ps1_16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map) - AM_RANGE(0x0060, 0x0061) AM_READ8(ps1_portb_r, 0xff00) - AM_RANGE(0x0102, 0x0105) AM_READWRITE(ps1_unk_r, ps1_unk_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::neat_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map) - AM_RANGE(0x0022, 0x0023) AM_DEVICE("cs8221", cs8221_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::at32_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE16("mb", at_mb_device, map, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at_state::ficpio_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE16("mb", at_mb_device, map, 0xffffffff) - AM_RANGE(0x00a8, 0x00af) AM_DEVREADWRITE8("chipset", vt82c496_device, read, write, 0xffffffff) - AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write) -ADDRESS_MAP_END +void at_state::ps1_16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); + map(0x0061, 0x0061).r(this, FUNC(at_state::ps1_portb_r)); + map(0x0102, 0x0105).rw(this, FUNC(at_state::ps1_unk_r), FUNC(at_state::ps1_unk_w)); +} + +void at_state::neat_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); + map(0x0022, 0x0023).m("cs8221", FUNC(cs8221_device::map)); +} + +void at_state::at32_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); +} + +void at_state::ficpio_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); + map(0x00a8, 0x00af).rw("chipset", FUNC(vt82c496_device::read), FUNC(vt82c496_device::write)); + map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_device::read), FUNC(pci_bus_device::write)); +} DRIVER_INIT_MEMBER(megapc_state, megapc) { @@ -337,19 +347,23 @@ WRITE_LINE_MEMBER( megapc_state::wd7600_hold ) m_wd7600->hlda_w(state); } -ADDRESS_MAP_START(megapc_state::megapc_map) -ADDRESS_MAP_END +void megapc_state::megapc_map(address_map &map) +{ +} -ADDRESS_MAP_START(megapc_state::megapcpl_map) -ADDRESS_MAP_END +void megapc_state::megapcpl_map(address_map &map) +{ +} -ADDRESS_MAP_START(megapc_state::megapc_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void megapc_state::megapc_io(address_map &map) +{ + map.unmap_value_high(); +} -ADDRESS_MAP_START(megapc_state::megapcpl_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void megapc_state::megapcpl_io(address_map &map) +{ + map.unmap_value_high(); +} /********************************************************** * diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp index 94d749b58b8..d179d64c704 100644 --- a/src/mame/drivers/atari400.cpp +++ b/src/mame/drivers/atari400.cpp @@ -558,91 +558,98 @@ WRITE8_MEMBER(a400_state::xegs_low_w) **************************************************************/ -ADDRESS_MAP_START(a400_state::a400_mem) - AM_RANGE(0x0000, 0xbfff) AM_NOP // RAM installed at runtime - AM_RANGE(0xc000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a400_state::a600xl_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0x5000, 0x57ff) AM_READ(a600xl_low_r) // self test or NOP - AM_RANGE(0xa000, 0xbfff) AM_ROM // BASIC - AM_RANGE(0xc000, 0xcfff) AM_ROM // OS - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_ROM // OS -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a400_state::a1200xl_mem) - AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a1200xl_low_r, xegs_low_w) - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a400_state::a800xl_mem) - AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a800xl_low_r, a800xl_low_w) - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a400_state::a130xe_mem) - AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a130xe_low_r, a800xl_low_w) - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a400_state::xegs_mem) - AM_RANGE(0x0000, 0xcfff) AM_READWRITE(xegs_low_r, xegs_low_w) - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(a400_state::a5200_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xbfff) AM_NOP // ROM installed at machine start - AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd400, 0xdfff) AM_DEVREADWRITE("antic", antic_device, read, write) +void a400_state::a400_mem(address_map &map) +{ + map(0x0000, 0xbfff).noprw(); // RAM installed at runtime + map(0xc000, 0xcfff).rom(); + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rom(); +} + + +void a400_state::a600xl_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram(); + map(0x5000, 0x57ff).r(this, FUNC(a400_state::a600xl_low_r)); // self test or NOP + map(0xa000, 0xbfff).rom(); // BASIC + map(0xc000, 0xcfff).rom(); // OS + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rom(); // OS +} + + +void a400_state::a1200xl_mem(address_map &map) +{ + map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a1200xl_low_r), FUNC(a400_state::xegs_low_w)); + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w)); +} + + +void a400_state::a800xl_mem(address_map &map) +{ + map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a800xl_low_r), FUNC(a400_state::a800xl_low_w)); + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w)); +} + + +void a400_state::a130xe_mem(address_map &map) +{ + map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a130xe_low_r), FUNC(a400_state::a800xl_low_w)); + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w)); +} + + +void a400_state::xegs_mem(address_map &map) +{ + map(0x0000, 0xcfff).rw(this, FUNC(a400_state::xegs_low_r), FUNC(a400_state::xegs_low_w)); + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w)); +} + + +void a400_state::a5200_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram(); + map(0x4000, 0xbfff).noprw(); // ROM installed at machine start + map(0xc000, 0xcfff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd400, 0xdfff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); // 0xe000-0xe7ff - Expansion? - AM_RANGE(0xe800, 0xefff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xe800, 0xefff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xf000, 0xffff).rom(); +} diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp index ae401856c32..fedceb0ead6 100644 --- a/src/mame/drivers/atari_s1.cpp +++ b/src/mame/drivers/atari_s1.cpp @@ -114,45 +114,48 @@ private: required_ioport_array<10> m_switch; }; -ADDRESS_MAP_START(atari_s1_state::atari_s1_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1080, 0x1083) AM_READWRITE(m1080_r,m1080_w) - AM_RANGE(0x1084, 0x1087) AM_READWRITE(m1084_r,m1084_w) - AM_RANGE(0x1088, 0x108b) AM_READWRITE(m1088_r,m1088_w) - AM_RANGE(0x108c, 0x108f) AM_READWRITE(m108c_r,m108c_w) - AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r) AM_WRITENOP // aavenger ROL 200B causes a spurious write - AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable - AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5080, 0x508f) AM_WRITE(meter_w) // time2000 only - AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset - AM_RANGE(0x7000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(atari_s1_state::atarians_map) // more ram - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1080, 0x1083) AM_READWRITE(m1080_r,m1080_w) - AM_RANGE(0x1084, 0x1087) AM_READWRITE(m1084_r,m1084_w) - AM_RANGE(0x1088, 0x108b) AM_READWRITE(m1088_r,m1088_w) - AM_RANGE(0x108c, 0x108f) AM_READWRITE(m108c_r,m108c_w) - AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r) - AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable - AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset - AM_RANGE(0x7000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(atari_s1_state::midearth_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1000, 0x11ff) AM_WRITE(midearth_w) - AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r) - AM_RANGE(0x3000, 0x3fff) AM_WRITE(audioen_w) // audio enable - AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiores_w) // audio reset - AM_RANGE(0x7000, 0x7fff) AM_ROM AM_WRITENOP // writes to FFFF due to poor coding at 7FF5 -ADDRESS_MAP_END +void atari_s1_state::atari_s1_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram().share("ram"); + map(0x1080, 0x1083).rw(this, FUNC(atari_s1_state::m1080_r), FUNC(atari_s1_state::m1080_w)); + map(0x1084, 0x1087).rw(this, FUNC(atari_s1_state::m1084_r), FUNC(atari_s1_state::m1084_w)); + map(0x1088, 0x108b).rw(this, FUNC(atari_s1_state::m1088_r), FUNC(atari_s1_state::m1088_w)); + map(0x108c, 0x108f).rw(this, FUNC(atari_s1_state::m108c_r), FUNC(atari_s1_state::m108c_w)); + map(0x2000, 0x204f).mirror(0x0F80).r(this, FUNC(atari_s1_state::switch_r)).nopw(); // aavenger ROL 200B causes a spurious write + map(0x3000, 0x3fff).w(this, FUNC(atari_s1_state::audioen_w)); // audio enable + map(0x4000, 0x4fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5080, 0x508f).w(this, FUNC(atari_s1_state::meter_w)); // time2000 only + map(0x6000, 0x6fff).w(this, FUNC(atari_s1_state::audiores_w)); // audio reset + map(0x7000, 0x7fff).rom(); +} + +void atari_s1_state::atarians_map(address_map &map) +{ // more ram + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram().share("ram"); + map(0x1080, 0x1083).rw(this, FUNC(atari_s1_state::m1080_r), FUNC(atari_s1_state::m1080_w)); + map(0x1084, 0x1087).rw(this, FUNC(atari_s1_state::m1084_r), FUNC(atari_s1_state::m1084_w)); + map(0x1088, 0x108b).rw(this, FUNC(atari_s1_state::m1088_r), FUNC(atari_s1_state::m1088_w)); + map(0x108c, 0x108f).rw(this, FUNC(atari_s1_state::m108c_r), FUNC(atari_s1_state::m108c_w)); + map(0x2000, 0x204f).mirror(0x0F80).r(this, FUNC(atari_s1_state::switch_r)); + map(0x3000, 0x3fff).w(this, FUNC(atari_s1_state::audioen_w)); // audio enable + map(0x4000, 0x4fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6000, 0x6fff).w(this, FUNC(atari_s1_state::audiores_w)); // audio reset + map(0x7000, 0x7fff).rom(); +} + +void atari_s1_state::midearth_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram().share("ram"); + map(0x1000, 0x11ff).w(this, FUNC(atari_s1_state::midearth_w)); + map(0x2000, 0x204f).mirror(0x0F80).r(this, FUNC(atari_s1_state::switch_r)); + map(0x3000, 0x3fff).w(this, FUNC(atari_s1_state::audioen_w)); // audio enable + map(0x4000, 0x4fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6000, 0x6fff).w(this, FUNC(atari_s1_state::audiores_w)); // audio reset + map(0x7000, 0x7fff).rom().nopw(); // writes to FFFF due to poor coding at 7FF5 +} static INPUT_PORTS_START( atari_s1 ) PORT_START("SWITCH.0") // 2000-2007 diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp index d3e762dd366..36739819bde 100644 --- a/src/mame/drivers/atari_s2.cpp +++ b/src/mame/drivers/atari_s2.cpp @@ -77,63 +77,65 @@ private: }; -ADDRESS_MAP_START(atari_s2_state::atari_s2_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM - AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("nvram") // battery backed - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.0") - AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.1") - AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.2") - AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.3") - AM_RANGE(0x1004, 0x1004) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.4") - AM_RANGE(0x1005, 0x1005) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.5") - AM_RANGE(0x1006, 0x1006) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.6") - AM_RANGE(0x1007, 0x1007) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.7") - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x071F) AM_WRITE(sound0_w) - AM_RANGE(0x1820, 0x1820) AM_MIRROR(0x071F) AM_WRITE(sound1_w) - AM_RANGE(0x1840, 0x1847) AM_MIRROR(0x0718) AM_WRITE(display_w) - AM_RANGE(0x1860, 0x1867) AM_MIRROR(0x0718) AM_WRITE(lamp_w) - AM_RANGE(0x1880, 0x1880) AM_MIRROR(0x071F) AM_WRITE(sol0_w) - AM_RANGE(0x18a0, 0x18a7) AM_MIRROR(0x0718) AM_WRITE(sol1_w) - AM_RANGE(0x18c0, 0x18c0) AM_MIRROR(0x071F) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x18e0, 0x18e0) AM_MIRROR(0x071F) AM_WRITE(intack_w) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07FC) AM_READ_PORT("DSW0") - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07FC) AM_READ_PORT("DSW1") - AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x07FC) AM_READ_PORT("DSW2") - AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x07FC) AM_READ_PORT("DSW3") - AM_RANGE(0x2800, 0x3fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(atari_s2_state::atari_s3_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM - AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("nvram") // battery backed - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.0") - AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.1") - AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.2") - AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.3") - AM_RANGE(0x1004, 0x1004) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.4") - AM_RANGE(0x1005, 0x1005) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.5") - AM_RANGE(0x1006, 0x1006) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.6") - AM_RANGE(0x1007, 0x1007) AM_MIRROR(0x07F8) AM_READ_PORT("SWITCH.7") - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x071F) AM_WRITE(sound0_w) - AM_RANGE(0x1820, 0x1820) AM_MIRROR(0x071F) AM_WRITE(sound1_w) - AM_RANGE(0x1840, 0x1847) AM_MIRROR(0x0718) AM_WRITE(display_w) - AM_RANGE(0x1860, 0x1867) AM_MIRROR(0x0718) AM_WRITE(lamp_w) - AM_RANGE(0x1880, 0x1880) AM_MIRROR(0x071F) AM_WRITE(sol0_w) - AM_RANGE(0x18a0, 0x18a7) AM_MIRROR(0x0718) AM_WRITE(sol1_w) - AM_RANGE(0x18c0, 0x18c0) AM_MIRROR(0x071F) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x18e0, 0x18e0) AM_MIRROR(0x071F) AM_WRITE(intack_w) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07F4) AM_READ_PORT("DSW0") - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07F4) AM_READ_PORT("DSW1") - AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x07F4) AM_READ_PORT("DSW2") - AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x07F4) AM_READ_PORT("DSW3") - AM_RANGE(0x2008, 0x2008) AM_MIRROR(0x07F4) AM_READ_PORT("DSW4") - AM_RANGE(0x2009, 0x2009) AM_MIRROR(0x07F4) AM_READ_PORT("DSW5") - AM_RANGE(0x200a, 0x200a) AM_MIRROR(0x07F4) AM_READ_PORT("DSW6") - AM_RANGE(0x200b, 0x200b) AM_MIRROR(0x07F4) AM_READ_PORT("DSW7") - AM_RANGE(0x2800, 0x3fff) AM_ROM -ADDRESS_MAP_END +void atari_s2_state::atari_s2_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x00ff).mirror(0x0700).ram(); + map(0x0800, 0x08ff).mirror(0x0700).ram().share("nvram"); // battery backed + map(0x1000, 0x1000).mirror(0x07F8).portr("SWITCH.0"); + map(0x1001, 0x1001).mirror(0x07F8).portr("SWITCH.1"); + map(0x1002, 0x1002).mirror(0x07F8).portr("SWITCH.2"); + map(0x1003, 0x1003).mirror(0x07F8).portr("SWITCH.3"); + map(0x1004, 0x1004).mirror(0x07F8).portr("SWITCH.4"); + map(0x1005, 0x1005).mirror(0x07F8).portr("SWITCH.5"); + map(0x1006, 0x1006).mirror(0x07F8).portr("SWITCH.6"); + map(0x1007, 0x1007).mirror(0x07F8).portr("SWITCH.7"); + map(0x1800, 0x1800).mirror(0x071F).w(this, FUNC(atari_s2_state::sound0_w)); + map(0x1820, 0x1820).mirror(0x071F).w(this, FUNC(atari_s2_state::sound1_w)); + map(0x1840, 0x1847).mirror(0x0718).w(this, FUNC(atari_s2_state::display_w)); + map(0x1860, 0x1867).mirror(0x0718).w(this, FUNC(atari_s2_state::lamp_w)); + map(0x1880, 0x1880).mirror(0x071F).w(this, FUNC(atari_s2_state::sol0_w)); + map(0x18a0, 0x18a7).mirror(0x0718).w(this, FUNC(atari_s2_state::sol1_w)); + map(0x18c0, 0x18c0).mirror(0x071F).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x18e0, 0x18e0).mirror(0x071F).w(this, FUNC(atari_s2_state::intack_w)); + map(0x2000, 0x2000).mirror(0x07FC).portr("DSW0"); + map(0x2001, 0x2001).mirror(0x07FC).portr("DSW1"); + map(0x2002, 0x2002).mirror(0x07FC).portr("DSW2"); + map(0x2003, 0x2003).mirror(0x07FC).portr("DSW3"); + map(0x2800, 0x3fff).rom(); +} + +void atari_s2_state::atari_s3_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x00ff).mirror(0x0700).ram(); + map(0x0800, 0x08ff).mirror(0x0700).ram().share("nvram"); // battery backed + map(0x1000, 0x1000).mirror(0x07F8).portr("SWITCH.0"); + map(0x1001, 0x1001).mirror(0x07F8).portr("SWITCH.1"); + map(0x1002, 0x1002).mirror(0x07F8).portr("SWITCH.2"); + map(0x1003, 0x1003).mirror(0x07F8).portr("SWITCH.3"); + map(0x1004, 0x1004).mirror(0x07F8).portr("SWITCH.4"); + map(0x1005, 0x1005).mirror(0x07F8).portr("SWITCH.5"); + map(0x1006, 0x1006).mirror(0x07F8).portr("SWITCH.6"); + map(0x1007, 0x1007).mirror(0x07F8).portr("SWITCH.7"); + map(0x1800, 0x1800).mirror(0x071F).w(this, FUNC(atari_s2_state::sound0_w)); + map(0x1820, 0x1820).mirror(0x071F).w(this, FUNC(atari_s2_state::sound1_w)); + map(0x1840, 0x1847).mirror(0x0718).w(this, FUNC(atari_s2_state::display_w)); + map(0x1860, 0x1867).mirror(0x0718).w(this, FUNC(atari_s2_state::lamp_w)); + map(0x1880, 0x1880).mirror(0x071F).w(this, FUNC(atari_s2_state::sol0_w)); + map(0x18a0, 0x18a7).mirror(0x0718).w(this, FUNC(atari_s2_state::sol1_w)); + map(0x18c0, 0x18c0).mirror(0x071F).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x18e0, 0x18e0).mirror(0x071F).w(this, FUNC(atari_s2_state::intack_w)); + map(0x2000, 0x2000).mirror(0x07F4).portr("DSW0"); + map(0x2001, 0x2001).mirror(0x07F4).portr("DSW1"); + map(0x2002, 0x2002).mirror(0x07F4).portr("DSW2"); + map(0x2003, 0x2003).mirror(0x07F4).portr("DSW3"); + map(0x2008, 0x2008).mirror(0x07F4).portr("DSW4"); + map(0x2009, 0x2009).mirror(0x07F4).portr("DSW5"); + map(0x200a, 0x200a).mirror(0x07F4).portr("DSW6"); + map(0x200b, 0x200b).mirror(0x07F4).portr("DSW7"); + map(0x2800, 0x3fff).rom(); +} static INPUT_PORTS_START( atari_s2 ) PORT_START("DSW0") diff --git a/src/mame/drivers/atarifb.cpp b/src/mame/drivers/atarifb.cpp index 6c25b6fc0fd..46f19408752 100644 --- a/src/mame/drivers/atarifb.cpp +++ b/src/mame/drivers/atarifb.cpp @@ -150,86 +150,90 @@ PALETTE_INIT_MEMBER(atarifb_state, atarifb) * *************************************/ -ADDRESS_MAP_START(atarifb_state::atarifb_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram") - AM_RANGE(0x0260, 0x039f) AM_RAM - AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram") - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram") - AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */ - AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb_out1_w) /* OUT 1 */ - AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */ - AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */ - AM_RANGE(0x3000, 0x3000) AM_NOP /* Interrupt Acknowledge */ - AM_RANGE(0x4000, 0x4000) AM_READ(atarifb_in0_r) - AM_RANGE(0x4002, 0x4002) AM_READ(atarifb_in2_r) - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(atarifb_state::atarifb4_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram") - AM_RANGE(0x0260, 0x039f) AM_RAM - AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram") - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram") - AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */ - AM_RANGE(0x2001, 0x2001) AM_WRITE(atarifb4_out1_w) /* OUT 1 */ - AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */ - AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */ - AM_RANGE(0x3000, 0x3000) AM_NOP /* Interrupt Acknowledge */ - AM_RANGE(0x4000, 0x4000) AM_READ(atarifb4_in0_r) - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("EXTRA") - AM_RANGE(0x4002, 0x4002) AM_READ(atarifb4_in2_r) - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(atarifb_state::abaseb_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram") - AM_RANGE(0x0260, 0x039f) AM_RAM - AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram") - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram") - AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */ - AM_RANGE(0x2001, 0x2001) AM_WRITE(abaseb_out1_w) /* OUT 1 */ - AM_RANGE(0x2002, 0x2002) AM_WRITE(atarifb_out2_w) /* OUT 2 */ - AM_RANGE(0x2003, 0x2003) AM_WRITE(atarifb_out3_w) /* OUT 3 */ - AM_RANGE(0x3000, 0x3000) AM_NOP /* Interrupt Acknowledge */ - AM_RANGE(0x4000, 0x4000) AM_READ(atarifb_in0_r) - AM_RANGE(0x4002, 0x4002) AM_READ(atarifb_in2_r) - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(atarifb_state::soccer_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x025f) AM_RAM_WRITE(atarifb_alpha1_videoram_w) AM_SHARE("p1_videoram") - AM_RANGE(0x0260, 0x039f) AM_RAM - AM_RANGE(0x03a0, 0x03ff) AM_RAM_WRITE(atarifb_alpha2_videoram_w) AM_SHARE("p2_videoram") - AM_RANGE(0x0800, 0x0bbf) AM_RAM_WRITE(atarifb_field_videoram_w) AM_SHARE("field_videoram") - AM_RANGE(0x0bc0, 0x0bff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_SHARE("scroll_register") /* OUT 0 */ - AM_RANGE(0x1001, 0x1001) AM_WRITE(soccer_out1_w) /* OUT 1 */ - AM_RANGE(0x1002, 0x1002) AM_WRITE(soccer_out2_w) /* OUT 2 */ - AM_RANGE(0x1004, 0x1004) AM_WRITENOP /* Interrupt Acknowledge */ - AM_RANGE(0x1005, 0x1005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1800, 0x1800) AM_READ(atarifb4_in0_r) - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("EXTRA") - AM_RANGE(0x1802, 0x1802) AM_READ(atarifb4_in2_r) - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW1") - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void atarifb_state::atarifb_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram"); + map(0x0260, 0x039f).ram(); + map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram"); + map(0x1000, 0x13bf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram"); + map(0x13c0, 0x13ff).ram().share("spriteram"); + map(0x2000, 0x2000).writeonly().share("scroll_register"); /* OUT 0 */ + map(0x2001, 0x2001).w(this, FUNC(atarifb_state::atarifb_out1_w)); /* OUT 1 */ + map(0x2002, 0x2002).w(this, FUNC(atarifb_state::atarifb_out2_w)); /* OUT 2 */ + map(0x2003, 0x2003).w(this, FUNC(atarifb_state::atarifb_out3_w)); /* OUT 3 */ + map(0x3000, 0x3000).noprw(); /* Interrupt Acknowledge */ + map(0x4000, 0x4000).r(this, FUNC(atarifb_state::atarifb_in0_r)); + map(0x4002, 0x4002).r(this, FUNC(atarifb_state::atarifb_in2_r)); + map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6000, 0x7fff).rom(); +} + + +void atarifb_state::atarifb4_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram"); + map(0x0260, 0x039f).ram(); + map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram"); + map(0x1000, 0x13bf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram"); + map(0x13c0, 0x13ff).ram().share("spriteram"); + map(0x2000, 0x2000).writeonly().share("scroll_register"); /* OUT 0 */ + map(0x2001, 0x2001).w(this, FUNC(atarifb_state::atarifb4_out1_w)); /* OUT 1 */ + map(0x2002, 0x2002).w(this, FUNC(atarifb_state::atarifb_out2_w)); /* OUT 2 */ + map(0x2003, 0x2003).w(this, FUNC(atarifb_state::atarifb_out3_w)); /* OUT 3 */ + map(0x3000, 0x3000).noprw(); /* Interrupt Acknowledge */ + map(0x4000, 0x4000).r(this, FUNC(atarifb_state::atarifb4_in0_r)); + map(0x4001, 0x4001).portr("EXTRA"); + map(0x4002, 0x4002).r(this, FUNC(atarifb_state::atarifb4_in2_r)); + map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6000, 0x7fff).rom(); +} + + +void atarifb_state::abaseb_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram"); + map(0x0260, 0x039f).ram(); + map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram"); + map(0x1000, 0x13bf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram"); + map(0x13c0, 0x13ff).ram().share("spriteram"); + map(0x2000, 0x2000).writeonly().share("scroll_register"); /* OUT 0 */ + map(0x2001, 0x2001).w(this, FUNC(atarifb_state::abaseb_out1_w)); /* OUT 1 */ + map(0x2002, 0x2002).w(this, FUNC(atarifb_state::atarifb_out2_w)); /* OUT 2 */ + map(0x2003, 0x2003).w(this, FUNC(atarifb_state::atarifb_out3_w)); /* OUT 3 */ + map(0x3000, 0x3000).noprw(); /* Interrupt Acknowledge */ + map(0x4000, 0x4000).r(this, FUNC(atarifb_state::atarifb_in0_r)); + map(0x4002, 0x4002).r(this, FUNC(atarifb_state::atarifb_in2_r)); + map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6000, 0x7fff).rom(); +} + + +void atarifb_state::soccer_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x025f).ram().w(this, FUNC(atarifb_state::atarifb_alpha1_videoram_w)).share("p1_videoram"); + map(0x0260, 0x039f).ram(); + map(0x03a0, 0x03ff).ram().w(this, FUNC(atarifb_state::atarifb_alpha2_videoram_w)).share("p2_videoram"); + map(0x0800, 0x0bbf).ram().w(this, FUNC(atarifb_state::atarifb_field_videoram_w)).share("field_videoram"); + map(0x0bc0, 0x0bff).ram().share("spriteram"); + map(0x1000, 0x1000).writeonly().share("scroll_register"); /* OUT 0 */ + map(0x1001, 0x1001).w(this, FUNC(atarifb_state::soccer_out1_w)); /* OUT 1 */ + map(0x1002, 0x1002).w(this, FUNC(atarifb_state::soccer_out2_w)); /* OUT 2 */ + map(0x1004, 0x1004).nopw(); /* Interrupt Acknowledge */ + map(0x1005, 0x1005).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1800, 0x1800).r(this, FUNC(atarifb_state::atarifb4_in0_r)); + map(0x1801, 0x1801).portr("EXTRA"); + map(0x1802, 0x1802).r(this, FUNC(atarifb_state::atarifb4_in2_r)); + map(0x1803, 0x1803).portr("DSW1"); + map(0x2000, 0x3fff).rom(); +} diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp index 36eb9c85a0c..a6a8159570c 100644 --- a/src/mame/drivers/atarig1.cpp +++ b/src/mame/drivers/atarig1.cpp @@ -190,29 +190,30 @@ void atarig1_state::pitfightb_cheap_slapstic_init() * *************************************/ -ADDRESS_MAP_START(atarig1_state::main_map) - AM_RANGE(0x000000, 0x037fff) AM_ROM - AM_RANGE(0x038000, 0x03ffff) AM_ROM /* pitfight slapstic goes here */ - AM_RANGE(0x040000, 0x077fff) AM_ROM - AM_RANGE(0x078000, 0x07ffff) AM_ROM /* hydra slapstic goes here */ - AM_RANGE(0xf80000, 0xf80001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xf88000, 0xf8ffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xf90000, 0xf90001) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0xff00) - AM_RANGE(0xf98000, 0xf98001) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0xfa0000, 0xfa0001) AM_DEVWRITE8("rle", atari_rle_objects_device, control_write, 0x00ff) - AM_RANGE(0xfb0000, 0xfb0001) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfc0000, 0xfc0001) AM_READ(special_port0_r) - AM_RANGE(0xfc8000, 0xfc8007) AM_READWRITE(a2d_data_r, a2d_select_w) - AM_RANGE(0xfd0000, 0xfd0001) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0xff00) - AM_RANGE(0xfd8000, 0xfdffff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) +void atarig1_state::main_map(address_map &map) +{ + map(0x000000, 0x037fff).rom(); + map(0x038000, 0x03ffff).rom(); /* pitfight slapstic goes here */ + map(0x040000, 0x077fff).rom(); + map(0x078000, 0x07ffff).rom(); /* hydra slapstic goes here */ + map(0xf80000, 0xf80001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xf88000, 0xf8ffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xf90000, 0xf90000).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w)); + map(0xf98000, 0xf98001).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0xfa0001, 0xfa0001).w(m_rle, FUNC(atari_rle_objects_device::control_write)); + map(0xfb0000, 0xfb0001).w(this, FUNC(atarig1_state::video_int_ack_w)); + map(0xfc0000, 0xfc0001).r(this, FUNC(atarig1_state::special_port0_r)); + map(0xfc8000, 0xfc8007).rw(this, FUNC(atarig1_state::a2d_data_r), FUNC(atarig1_state::a2d_select_w)); + map(0xfd0000, 0xfd0000).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r)); + map(0xfd8000, 0xfdffff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); /* AM_RANGE(0xfe0000, 0xfe7fff) AM_READ(from_r)*/ - AM_RANGE(0xfe8000, 0xfe89ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xffffff) AM_RAM - AM_RANGE(0xff0000, 0xff0fff) AM_RAM AM_SHARE("rle") - AM_RANGE(0xff2000, 0xff2001) AM_WRITE(mo_command_w) AM_SHARE("mo_command") - AM_RANGE(0xff4000, 0xff5fff) AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff6000, 0xff6fff) AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") -ADDRESS_MAP_END + map(0xfe8000, 0xfe89ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xff0fff).ram().share("rle"); + map(0xff2000, 0xff2001).w(this, FUNC(atarig1_state::mo_command_w)).share("mo_command"); + map(0xff4000, 0xff5fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); +} diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp index 3e639b4fdef..f03b4db376f 100644 --- a/src/mame/drivers/atarig42.cpp +++ b/src/mame/drivers/atarig42.cpp @@ -320,31 +320,32 @@ WRITE16_MEMBER(atarig42_0x400_state::guardians_sloop_data_w) * *************************************/ -ADDRESS_MAP_START(atarig42_state::main_map) - AM_RANGE(0x000000, 0x080001) AM_ROM - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("IN0") - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("IN1") - AM_RANGE(0xe00010, 0xe00011) AM_READ(special_port2_r) - AM_RANGE(0xe00012, 0xe00013) AM_READ_PORT("jsa:JSAIII") - AM_RANGE(0xe00020, 0xe00027) AM_READWRITE(a2d_data_r, a2d_select_w) - AM_RANGE(0xe00030, 0xe00031) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff) - AM_RANGE(0xe00040, 0xe00041) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff) - AM_RANGE(0xe00050, 0xe00051) AM_WRITE(io_latch_w) - AM_RANGE(0xe00060, 0xe00061) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xe03000, 0xe03001) AM_WRITE(video_int_ack_w) - AM_RANGE(0xe03800, 0xe03801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xe80000, 0xe80fff) AM_RAM - AM_RANGE(0xf40000, 0xf40001) AM_DEVREAD("asic65", asic65_device, io_r) - AM_RANGE(0xf60000, 0xf60001) AM_DEVREAD("asic65", asic65_device, read) - AM_RANGE(0xf80000, 0xf80003) AM_DEVWRITE("asic65", asic65_device, data_w) - AM_RANGE(0xfa0000, 0xfa0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xfc0000, 0xfc0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xffffff) AM_RAM - AM_RANGE(0xff0000, 0xff0fff) AM_RAM AM_SHARE("rle") - AM_RANGE(0xff2000, 0xff5fff) AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff6000, 0xff6fff) AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff7000, 0xff7001) AM_WRITE(mo_command_w) AM_SHARE("mo_command") -ADDRESS_MAP_END +void atarig42_state::main_map(address_map &map) +{ + map(0x000000, 0x080001).rom(); + map(0xe00000, 0xe00001).portr("IN0"); + map(0xe00002, 0xe00003).portr("IN1"); + map(0xe00010, 0xe00011).r(this, FUNC(atarig42_state::special_port2_r)); + map(0xe00012, 0xe00013).portr("jsa:JSAIII"); + map(0xe00020, 0xe00027).rw(this, FUNC(atarig42_state::a2d_data_r), FUNC(atarig42_state::a2d_select_w)); + map(0xe00031, 0xe00031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r)); + map(0xe00041, 0xe00041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w)); + map(0xe00050, 0xe00051).w(this, FUNC(atarig42_state::io_latch_w)); + map(0xe00060, 0xe00061).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xe03000, 0xe03001).w(this, FUNC(atarig42_state::video_int_ack_w)); + map(0xe03800, 0xe03801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xe80000, 0xe80fff).ram(); + map(0xf40000, 0xf40001).r(m_asic65, FUNC(asic65_device::io_r)); + map(0xf60000, 0xf60001).r(m_asic65, FUNC(asic65_device::read)); + map(0xf80000, 0xf80003).w(m_asic65, FUNC(asic65_device::data_w)); + map(0xfa0000, 0xfa0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xfc0000, 0xfc0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xff0fff).ram().share("rle"); + map(0xff2000, 0xff5fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0xff7000, 0xff7001).w(this, FUNC(atarig42_state::mo_command_w)).share("mo_command"); +} diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp index 2622f728e13..fc8a438bfbe 100644 --- a/src/mame/drivers/atarigt.cpp +++ b/src/mame/drivers/atarigt.cpp @@ -596,29 +596,30 @@ WRITE32_MEMBER(atarigt_state::colorram_protection_w) * *************************************/ -ADDRESS_MAP_START(atarigt_state::main_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0xc00000, 0xc00003) AM_READWRITE(sound_data_r, sound_data_w) - AM_RANGE(0xd00014, 0xd00017) AM_READ(analog_port0_r) - AM_RANGE(0xd0001c, 0xd0001f) AM_READ(analog_port1_r) - AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00) - AM_RANGE(0xd40000, 0xd4ffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write32) - AM_RANGE(0xd70000, 0xd7ffff) AM_RAM - AM_RANGE(0xd72000, 0xd75fff) AM_DEVWRITE("playfield", tilemap_device, write32) AM_SHARE("playfield") - AM_RANGE(0xd76000, 0xd76fff) AM_DEVWRITE("alpha", tilemap_device, write32) AM_SHARE("alpha") - AM_RANGE(0xd78000, 0xd78fff) AM_RAM AM_SHARE("rle") - AM_RANGE(0xd7a200, 0xd7a203) AM_WRITE(mo_command_w) AM_SHARE("mo_command") - AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(colorram_protection_r, colorram_protection_w) AM_SHARE("colorram") - AM_RANGE(0xe04000, 0xe04003) AM_WRITE(led_w) - AM_RANGE(0xe08000, 0xe08003) AM_WRITE(latch_w) - AM_RANGE(0xe0a000, 0xe0a003) AM_WRITE16(scanline_int_ack_w, 0xffffffff) - AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE16(video_int_ack_w, 0xffffffff) - AM_RANGE(0xe0e000, 0xe0e003) AM_WRITENOP//watchdog_reset_w }, - AM_RANGE(0xe80000, 0xe80003) AM_READ_PORT("P1_P2") - AM_RANGE(0xe82000, 0xe82003) AM_READ(special_port2_r) - AM_RANGE(0xe82004, 0xe82007) AM_READ(special_port3_r) - AM_RANGE(0xf80000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void atarigt_state::main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0xc00000, 0xc00003).rw(this, FUNC(atarigt_state::sound_data_r), FUNC(atarigt_state::sound_data_w)); + map(0xd00014, 0xd00017).r(this, FUNC(atarigt_state::analog_port0_r)); + map(0xd0001c, 0xd0001f).r(this, FUNC(atarigt_state::analog_port1_r)); + map(0xd20000, 0xd20fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00); + map(0xd40000, 0xd4ffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write32)); + map(0xd70000, 0xd7ffff).ram(); + map(0xd72000, 0xd75fff).w(m_playfield_tilemap, FUNC(tilemap_device::write32)).share("playfield"); + map(0xd76000, 0xd76fff).w(m_alpha_tilemap, FUNC(tilemap_device::write32)).share("alpha"); + map(0xd78000, 0xd78fff).ram().share("rle"); + map(0xd7a200, 0xd7a203).w(this, FUNC(atarigt_state::mo_command_w)).share("mo_command"); + map(0xd80000, 0xdfffff).rw(this, FUNC(atarigt_state::colorram_protection_r), FUNC(atarigt_state::colorram_protection_w)).share("colorram"); + map(0xe04000, 0xe04003).w(this, FUNC(atarigt_state::led_w)); + map(0xe08000, 0xe08003).w(this, FUNC(atarigt_state::latch_w)); + map(0xe0a000, 0xe0a003).w(this, FUNC(atarigt_state::scanline_int_ack_w)); + map(0xe0c000, 0xe0c003).w(this, FUNC(atarigt_state::video_int_ack_w)); + map(0xe0e000, 0xe0e003).nopw();//watchdog_reset_w }, + map(0xe80000, 0xe80003).portr("P1_P2"); + map(0xe82000, 0xe82003).r(this, FUNC(atarigt_state::special_port2_r)); + map(0xe82004, 0xe82007).r(this, FUNC(atarigt_state::special_port3_r)); + map(0xf80000, 0xffffff).ram(); +} diff --git a/src/mame/drivers/atarigx2.cpp b/src/mame/drivers/atarigx2.cpp index 9da879d7545..019cc84bfce 100644 --- a/src/mame/drivers/atarigx2.cpp +++ b/src/mame/drivers/atarigx2.cpp @@ -1196,29 +1196,30 @@ READ32_MEMBER( atarigx2_state::rrreveng_prot_r ) * *************************************/ -ADDRESS_MAP_START(atarigx2_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xc80000, 0xc80fff) AM_RAM - AM_RANGE(0xd00000, 0xd1ffff) AM_READ(a2d_data_r) - AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00) - AM_RANGE(0xd40000, 0xd40fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xd70000, 0xd7ffff) AM_RAM - AM_RANGE(0xd72000, 0xd75fff) AM_DEVWRITE("playfield", tilemap_device, write32) AM_SHARE("playfield") - AM_RANGE(0xd76000, 0xd76fff) AM_DEVWRITE("alpha", tilemap_device, write32) AM_SHARE("alpha") - AM_RANGE(0xd78000, 0xd78fff) AM_RAM AM_SHARE("rle") - AM_RANGE(0xd7a200, 0xd7a203) AM_WRITE(mo_command_w) AM_SHARE("mo_command") - AM_RANGE(0xd80000, 0xd9ffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write32) - AM_RANGE(0xe06000, 0xe06003) AM_DEVWRITE8("jsa", atari_jsa_iiis_device, main_command_w, 0xff000000) - AM_RANGE(0xe08000, 0xe08003) AM_WRITE(latch_w) - AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE16(video_int_ack_w, 0xffffffff) - AM_RANGE(0xe0e000, 0xe0e003) AM_WRITENOP//watchdog_reset_w }, - AM_RANGE(0xe80000, 0xe80003) AM_READ_PORT("P1_P2") - AM_RANGE(0xe82000, 0xe82003) AM_READ(special_port2_r) - AM_RANGE(0xe82004, 0xe82007) AM_READ(special_port3_r) - AM_RANGE(0xe86000, 0xe86003) AM_DEVREAD8("jsa", atari_jsa_iiis_device, main_response_r, 0xff000000) - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void atarigx2_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom(); + map(0xc80000, 0xc80fff).ram(); + map(0xd00000, 0xd1ffff).r(this, FUNC(atarigx2_state::a2d_data_r)); + map(0xd20000, 0xd20fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00); + map(0xd40000, 0xd40fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xd70000, 0xd7ffff).ram(); + map(0xd72000, 0xd75fff).w(m_playfield_tilemap, FUNC(tilemap_device::write32)).share("playfield"); + map(0xd76000, 0xd76fff).w(m_alpha_tilemap, FUNC(tilemap_device::write32)).share("alpha"); + map(0xd78000, 0xd78fff).ram().share("rle"); + map(0xd7a200, 0xd7a203).w(this, FUNC(atarigx2_state::mo_command_w)).share("mo_command"); + map(0xd80000, 0xd9ffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write32)); + map(0xe06000, 0xe06000).w(m_jsa, FUNC(atari_jsa_iiis_device::main_command_w)); + map(0xe08000, 0xe08003).w(this, FUNC(atarigx2_state::latch_w)); + map(0xe0c000, 0xe0c003).w(this, FUNC(atarigx2_state::video_int_ack_w)); + map(0xe0e000, 0xe0e003).nopw();//watchdog_reset_w }, + map(0xe80000, 0xe80003).portr("P1_P2"); + map(0xe82000, 0xe82003).r(this, FUNC(atarigx2_state::special_port2_r)); + map(0xe82004, 0xe82007).r(this, FUNC(atarigx2_state::special_port3_r)); + map(0xe86000, 0xe86000).r(m_jsa, FUNC(atari_jsa_iiis_device::main_response_r)); + map(0xff8000, 0xffffff).ram(); +} diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp index 5b80ea4d590..f148a3fb055 100644 --- a/src/mame/drivers/atarist.cpp +++ b/src/mame/drivers/atarist.cpp @@ -1203,117 +1203,122 @@ WRITE16_MEMBER( stbook_state::lcd_control_w ) // ADDRESS_MAP( ikbd_map ) //------------------------------------------------- -ADDRESS_MAP_START(st_state::ikbd_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_TAG, hd6301_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6301V1_TAG, 0) -ADDRESS_MAP_END +void st_state::ikbd_map(address_map &map) +{ + map(0x0000, 0x001f).rw(HD6301V1_TAG, FUNC(hd6301_cpu_device::m6801_io_r), FUNC(hd6301_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0xf000, 0xffff).rom().region(HD6301V1_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( ikbd_io_map ) //------------------------------------------------- -ADDRESS_MAP_START(st_state::ikbd_io_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ(ikbd_port1_r) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(ikbd_port2_r, ikbd_port2_w) - AM_RANGE(M6801_PORT3, M6801_PORT3) AM_WRITE(ikbd_port3_w) - AM_RANGE(M6801_PORT4, M6801_PORT4) AM_READWRITE(ikbd_port4_r, ikbd_port4_w) -ADDRESS_MAP_END +void st_state::ikbd_io_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).r(this, FUNC(st_state::ikbd_port1_r)); + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(st_state::ikbd_port2_r), FUNC(st_state::ikbd_port2_w)); + map(M6801_PORT3, M6801_PORT3).w(this, FUNC(st_state::ikbd_port3_w)); + map(M6801_PORT4, M6801_PORT4).rw(this, FUNC(st_state::ikbd_port4_r), FUNC(st_state::ikbd_port4_w)); +} //------------------------------------------------- // ADDRESS_MAP( st_map ) //------------------------------------------------- -ADDRESS_MAP_START(st_state::st_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION(M68000_TAG, 0) AM_WRITE(berr_w) - AM_RANGE(0x000008, 0x1fffff) AM_RAM - AM_RANGE(0x200000, 0x3fffff) AM_RAM - AM_RANGE(0x400000, 0xf9ffff) AM_READWRITE(berr_r, berr_w) +void st_state::st_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x000007).rom().region(M68000_TAG, 0).w(this, FUNC(st_state::berr_w)); + map(0x000008, 0x1fffff).ram(); + map(0x200000, 0x3fffff).ram(); + map(0x400000, 0xf9ffff).rw(this, FUNC(st_state::berr_r), FUNC(st_state::berr_w)); //AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot - AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) AM_WRITE(berr_w) - AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff) - AM_RANGE(0xff8200, 0xff8203) AM_READWRITE8(shifter_base_r, shifter_base_w, 0x00ff) - AM_RANGE(0xff8204, 0xff8209) AM_READ8(shifter_counter_r, 0x00ff) - AM_RANGE(0xff820a, 0xff820b) AM_READWRITE8(shifter_sync_r, shifter_sync_w, 0xff00) - AM_RANGE(0xff8240, 0xff825f) AM_READWRITE(shifter_palette_r, shifter_palette_w) - AM_RANGE(0xff8260, 0xff8261) AM_READWRITE8(shifter_mode_r, shifter_mode_w, 0xff00) - AM_RANGE(0xff8604, 0xff8605) AM_READWRITE(fdc_data_r, fdc_data_w) - AM_RANGE(0xff8606, 0xff8607) AM_READWRITE(dma_status_r, dma_mode_w) - AM_RANGE(0xff8608, 0xff860d) AM_READWRITE8(dma_counter_r, dma_base_w, 0x00ff) - AM_RANGE(0xff8800, 0xff8801) AM_DEVREADWRITE8(YM2149_TAG, ay8910_device, data_r, address_w, 0xff00) AM_MIRROR(0xfc) - AM_RANGE(0xff8802, 0xff8803) AM_DEVREADWRITE8(YM2149_TAG, ay8910_device, data_r, data_w, 0xff00) AM_MIRROR(0xfc) + map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0).w(this, FUNC(st_state::berr_w)); + map(0xff8001, 0xff8001).rw(this, FUNC(st_state::mmu_r), FUNC(st_state::mmu_w)); + map(0xff8200, 0xff8203).rw(this, FUNC(st_state::shifter_base_r), FUNC(st_state::shifter_base_w)).umask16(0x00ff); + map(0xff8204, 0xff8209).r(this, FUNC(st_state::shifter_counter_r)).umask16(0x00ff); + map(0xff820a, 0xff820a).rw(this, FUNC(st_state::shifter_sync_r), FUNC(st_state::shifter_sync_w)); + map(0xff8240, 0xff825f).rw(this, FUNC(st_state::shifter_palette_r), FUNC(st_state::shifter_palette_w)); + map(0xff8260, 0xff8260).rw(this, FUNC(st_state::shifter_mode_r), FUNC(st_state::shifter_mode_w)); + map(0xff8604, 0xff8605).rw(this, FUNC(st_state::fdc_data_r), FUNC(st_state::fdc_data_w)); + map(0xff8606, 0xff8607).rw(this, FUNC(st_state::dma_status_r), FUNC(st_state::dma_mode_w)); + map(0xff8608, 0xff860d).rw(this, FUNC(st_state::dma_counter_r), FUNC(st_state::dma_base_w)).umask16(0x00ff); + map(0xff8800, 0xff8800).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0xfc); + map(0xff8802, 0xff8802).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)).mirror(0xfc); #if 0 - AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(blitter_halftone_r, blitter_halftone_w) - AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(blitter_src_inc_x_r, blitter_src_inc_x_w) - AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(blitter_src_inc_y_r, blitter_src_inc_y_w) - AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(blitter_src_r, blitter_src_w) - AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(blitter_end_mask_r, blitter_end_mask_w) - AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(blitter_dst_inc_x_r, blitter_dst_inc_x_w) - AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w) - AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(blitter_dst_r, blitter_dst_w) - AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(blitter_count_x_r, blitter_count_x_w) - AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(blitter_count_y_r, blitter_count_y_w) - AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(blitter_op_r, blitter_op_w) - AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(blitter_ctrl_r, blitter_ctrl_w) + map(0xff8a00, 0xff8a1f).rw(this, FUNC(st_state::blitter_halftone_r), FUNC(st_state::blitter_halftone_w)); + map(0xff8a20, 0xff8a21).rw(this, FUNC(st_state::blitter_src_inc_x_r), FUNC(st_state::blitter_src_inc_x_w)); + map(0xff8a22, 0xff8a23).rw(this, FUNC(st_state::blitter_src_inc_y_r), FUNC(st_state::blitter_src_inc_y_w)); + map(0xff8a24, 0xff8a27).rw(this, FUNC(st_state::blitter_src_r), FUNC(st_state::blitter_src_w)); + map(0xff8a28, 0xff8a2d).rw(this, FUNC(st_state::blitter_end_mask_r), FUNC(st_state::blitter_end_mask_w)); + map(0xff8a2e, 0xff8a2f).rw(this, FUNC(st_state::blitter_dst_inc_x_r), FUNC(st_state::blitter_dst_inc_x_w)); + map(0xff8a30, 0xff8a31).rw(this, FUNC(st_state::blitter_dst_inc_y_r), FUNC(st_state::blitter_dst_inc_y_w)); + map(0xff8a32, 0xff8a35).rw(this, FUNC(st_state::blitter_dst_r), FUNC(st_state::blitter_dst_w)); + map(0xff8a36, 0xff8a37).rw(this, FUNC(st_state::blitter_count_x_r), FUNC(st_state::blitter_count_x_w)); + map(0xff8a38, 0xff8a39).rw(this, FUNC(st_state::blitter_count_y_r), FUNC(st_state::blitter_count_y_w)); + map(0xff8a3a, 0xff8a3b).rw(this, FUNC(st_state::blitter_op_r), FUNC(st_state::blitter_op_w)); + map(0xff8a3c, 0xff8a3d).rw(this, FUNC(st_state::blitter_ctrl_r), FUNC(st_state::blitter_ctrl_w)); #endif - AM_RANGE(0xfffa00, 0xfffa3f) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff) - AM_RANGE(0xfffc00, 0xfffc03) AM_DEVREADWRITE8(MC6850_0_TAG, acia6850_device, read, write, 0xff00) - AM_RANGE(0xfffc04, 0xfffc07) AM_DEVREADWRITE8(MC6850_1_TAG, acia6850_device, read, write, 0xff00) -ADDRESS_MAP_END + map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff); + map(0xfffc00, 0xfffc03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00); + map(0xfffc04, 0xfffc07).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00); +} //------------------------------------------------- // ADDRESS_MAP( megast_map ) //------------------------------------------------- -ADDRESS_MAP_START(megast_state::megast_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION(M68000_TAG, 0) - AM_RANGE(0x000008, 0x1fffff) AM_RAM - AM_RANGE(0x200000, 0x3fffff) AM_RAM +void megast_state::megast_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x000007).rom().region(M68000_TAG, 0); + map(0x000008, 0x1fffff).ram(); + map(0x200000, 0x3fffff).ram(); //AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot - AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) + map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0); // AM_RANGE(0xff7f30, 0xff7f31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w) // for TOS 1.02 - AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff) - AM_RANGE(0xff8200, 0xff8203) AM_READWRITE8(shifter_base_r, shifter_base_w, 0x00ff) - AM_RANGE(0xff8204, 0xff8209) AM_READ8(shifter_counter_r, 0x00ff) - AM_RANGE(0xff820a, 0xff820b) AM_READWRITE8(shifter_sync_r, shifter_sync_w, 0xff00) - AM_RANGE(0xff8240, 0xff825f) AM_READWRITE(shifter_palette_r, shifter_palette_w) - AM_RANGE(0xff8260, 0xff8261) AM_READWRITE8(shifter_mode_r, shifter_mode_w, 0xff00) - AM_RANGE(0xff8604, 0xff8605) AM_READWRITE(fdc_data_r, fdc_data_w) - AM_RANGE(0xff8606, 0xff8607) AM_READWRITE(dma_status_r, dma_mode_w) - AM_RANGE(0xff8608, 0xff860d) AM_READWRITE8(dma_counter_r, dma_base_w, 0x00ff) - AM_RANGE(0xff8800, 0xff8801) AM_DEVREADWRITE8(YM2149_TAG, ay8910_device, data_r, address_w, 0xff00) - AM_RANGE(0xff8802, 0xff8803) AM_DEVWRITE8(YM2149_TAG, ay8910_device, data_w, 0xff00) - AM_RANGE(0xff8a00, 0xff8a1f) AM_READWRITE(blitter_halftone_r, blitter_halftone_w) - AM_RANGE(0xff8a20, 0xff8a21) AM_READWRITE(blitter_src_inc_x_r, blitter_src_inc_x_w) - AM_RANGE(0xff8a22, 0xff8a23) AM_READWRITE(blitter_src_inc_y_r, blitter_src_inc_y_w) - AM_RANGE(0xff8a24, 0xff8a27) AM_READWRITE(blitter_src_r, blitter_src_w) - AM_RANGE(0xff8a28, 0xff8a2d) AM_READWRITE(blitter_end_mask_r, blitter_end_mask_w) - AM_RANGE(0xff8a2e, 0xff8a2f) AM_READWRITE(blitter_dst_inc_x_r, blitter_dst_inc_x_w) - AM_RANGE(0xff8a30, 0xff8a31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w) - AM_RANGE(0xff8a32, 0xff8a35) AM_READWRITE(blitter_dst_r, blitter_dst_w) - AM_RANGE(0xff8a36, 0xff8a37) AM_READWRITE(blitter_count_x_r, blitter_count_x_w) - AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(blitter_count_y_r, blitter_count_y_w) - AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(blitter_op_r, blitter_op_w) - AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(blitter_ctrl_r, blitter_ctrl_w) - AM_RANGE(0xfffa00, 0xfffa3f) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff) - AM_RANGE(0xfffa40, 0xfffa57) AM_READWRITE(fpu_r, fpu_w) - AM_RANGE(0xfffc00, 0xfffc03) AM_DEVREADWRITE8(MC6850_0_TAG, acia6850_device, read, write, 0xff00) - AM_RANGE(0xfffc04, 0xfffc07) AM_DEVREADWRITE8(MC6850_1_TAG, acia6850_device, read, write, 0xff00) - AM_RANGE(0xfffc20, 0xfffc3f) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0xff8001, 0xff8001).rw(this, FUNC(megast_state::mmu_r), FUNC(megast_state::mmu_w)); + map(0xff8200, 0xff8203).rw(this, FUNC(megast_state::shifter_base_r), FUNC(megast_state::shifter_base_w)).umask16(0x00ff); + map(0xff8204, 0xff8209).r(this, FUNC(megast_state::shifter_counter_r)).umask16(0x00ff); + map(0xff820a, 0xff820a).rw(this, FUNC(megast_state::shifter_sync_r), FUNC(megast_state::shifter_sync_w)); + map(0xff8240, 0xff825f).rw(this, FUNC(megast_state::shifter_palette_r), FUNC(megast_state::shifter_palette_w)); + map(0xff8260, 0xff8260).rw(this, FUNC(megast_state::shifter_mode_r), FUNC(megast_state::shifter_mode_w)); + map(0xff8604, 0xff8605).rw(this, FUNC(megast_state::fdc_data_r), FUNC(megast_state::fdc_data_w)); + map(0xff8606, 0xff8607).rw(this, FUNC(megast_state::dma_status_r), FUNC(megast_state::dma_mode_w)); + map(0xff8608, 0xff860d).rw(this, FUNC(megast_state::dma_counter_r), FUNC(megast_state::dma_base_w)).umask16(0x00ff); + map(0xff8800, 0xff8800).rw(YM2149_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0xff8802, 0xff8802).w(YM2149_TAG, FUNC(ay8910_device::data_w)); + map(0xff8a00, 0xff8a1f).rw(this, FUNC(megast_state::blitter_halftone_r), FUNC(megast_state::blitter_halftone_w)); + map(0xff8a20, 0xff8a21).rw(this, FUNC(megast_state::blitter_src_inc_x_r), FUNC(megast_state::blitter_src_inc_x_w)); + map(0xff8a22, 0xff8a23).rw(this, FUNC(megast_state::blitter_src_inc_y_r), FUNC(megast_state::blitter_src_inc_y_w)); + map(0xff8a24, 0xff8a27).rw(this, FUNC(megast_state::blitter_src_r), FUNC(megast_state::blitter_src_w)); + map(0xff8a28, 0xff8a2d).rw(this, FUNC(megast_state::blitter_end_mask_r), FUNC(megast_state::blitter_end_mask_w)); + map(0xff8a2e, 0xff8a2f).rw(this, FUNC(megast_state::blitter_dst_inc_x_r), FUNC(megast_state::blitter_dst_inc_x_w)); + map(0xff8a30, 0xff8a31).rw(this, FUNC(megast_state::blitter_dst_inc_y_r), FUNC(megast_state::blitter_dst_inc_y_w)); + map(0xff8a32, 0xff8a35).rw(this, FUNC(megast_state::blitter_dst_r), FUNC(megast_state::blitter_dst_w)); + map(0xff8a36, 0xff8a37).rw(this, FUNC(megast_state::blitter_count_x_r), FUNC(megast_state::blitter_count_x_w)); + map(0xff8a38, 0xff8a39).rw(this, FUNC(megast_state::blitter_count_y_r), FUNC(megast_state::blitter_count_y_w)); + map(0xff8a3a, 0xff8a3b).rw(this, FUNC(megast_state::blitter_op_r), FUNC(megast_state::blitter_op_w)); + map(0xff8a3c, 0xff8a3d).rw(this, FUNC(megast_state::blitter_ctrl_r), FUNC(megast_state::blitter_ctrl_w)); + map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff); + map(0xfffa40, 0xfffa57).rw(this, FUNC(megast_state::fpu_r), FUNC(megast_state::fpu_w)); + map(0xfffc00, 0xfffc03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00); + map(0xfffc04, 0xfffc07).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00); + map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff); +} //------------------------------------------------- // ADDRESS_MAP( ste_map ) //------------------------------------------------- -ADDRESS_MAP_START(ste_state::ste_map) - AM_IMPORT_FROM(st_map) +void ste_state::ste_map(address_map &map) +{ + st_map(map); /* AM_RANGE(0xe00000, 0xe3ffff) AM_ROM AM_REGION(M68000_TAG, 0) AM_RANGE(0xff8204, 0xff8209) AM_READWRITE8(shifter_counter_r, shifter_counter_w, 0x00ff) AM_RANGE(0xff820c, 0xff820d) AM_READWRITE8(shifter_base_low_r, shifter_base_low_w, 0x00ff) @@ -1338,23 +1343,24 @@ ADDRESS_MAP_START(ste_state::ste_map) AM_RANGE(0xff8a38, 0xff8a39) AM_READWRITE(blitter_count_y_r, blitter_count_y_w) AM_RANGE(0xff8a3a, 0xff8a3b) AM_READWRITE(blitter_op_r, blitter_op_w) AM_RANGE(0xff8a3c, 0xff8a3d) AM_READWRITE(blitter_ctrl_r, blitter_ctrl_w)*/ - AM_RANGE(0xff9200, 0xff9201) AM_READ_PORT("JOY0") - AM_RANGE(0xff9202, 0xff9203) AM_READ_PORT("JOY1") - AM_RANGE(0xff9210, 0xff9211) AM_READ_PORT("PADDLE0X") - AM_RANGE(0xff9212, 0xff9213) AM_READ_PORT("PADDLE0Y") - AM_RANGE(0xff9214, 0xff9215) AM_READ_PORT("PADDLE1X") - AM_RANGE(0xff9216, 0xff9217) AM_READ_PORT("PADDLE1Y") - AM_RANGE(0xff9220, 0xff9221) AM_READ_PORT("GUNX") - AM_RANGE(0xff9222, 0xff9223) AM_READ_PORT("GUNY") -ADDRESS_MAP_END + map(0xff9200, 0xff9201).portr("JOY0"); + map(0xff9202, 0xff9203).portr("JOY1"); + map(0xff9210, 0xff9211).portr("PADDLE0X"); + map(0xff9212, 0xff9213).portr("PADDLE0Y"); + map(0xff9214, 0xff9215).portr("PADDLE1X"); + map(0xff9216, 0xff9217).portr("PADDLE1Y"); + map(0xff9220, 0xff9221).portr("GUNX"); + map(0xff9222, 0xff9223).portr("GUNY"); +} //------------------------------------------------- // ADDRESS_MAP( megaste_map ) //------------------------------------------------- -ADDRESS_MAP_START(megaste_state::megaste_map) - AM_IMPORT_FROM(st_map) +void megaste_state::megaste_map(address_map &map) +{ + st_map(map); /* AM_RANGE(0xff8204, 0xff8209) AM_READWRITE(shifter_counter_r, shifter_counter_w) AM_RANGE(0xff820c, 0xff820d) AM_READWRITE(shifter_base_low_r, shifter_base_low_w) AM_RANGE(0xff820e, 0xff820f) AM_READWRITE(shifter_lineofs_r, shifter_lineofs_w) @@ -1381,23 +1387,24 @@ ADDRESS_MAP_START(megaste_state::megaste_map) AM_RANGE(0xff8e00, 0xff8e0f) AM_READWRITE(vme_r, vme_w) AM_RANGE(0xff8e20, 0xff8e21) AM_READWRITE(cache_r, cache_w) // AM_RANGE(0xfffa40, 0xfffa5f) AM_READWRITE(fpu_r, fpu_w)*/ - AM_RANGE(0xff8c80, 0xff8c87) AM_DEVREADWRITE8(Z8530_TAG, scc8530_t, reg_r, reg_w, 0x00ff) - AM_RANGE(0xfffc20, 0xfffc3f) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0xff8c80, 0xff8c87).rw(Z8530_TAG, FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w)).umask16(0x00ff); + map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff); +} //------------------------------------------------- // ADDRESS_MAP( stbook_map ) //------------------------------------------------- #if 0 -ADDRESS_MAP_START(stbook_state::stbook_map) - AM_RANGE(0x000000, 0x1fffff) AM_RAM - AM_RANGE(0x200000, 0x3fffff) AM_RAM +void stbook_state::stbook_map(address_map &map) +{ + map(0x000000, 0x1fffff).ram(); + map(0x200000, 0x3fffff).ram(); // AM_RANGE(0xd40000, 0xd7ffff) AM_ROM - AM_RANGE(0xe00000, 0xe3ffff) AM_ROM AM_REGION(M68000_TAG, 0) + map(0xe00000, 0xe3ffff).rom().region(M68000_TAG, 0); // AM_RANGE(0xe80000, 0xebffff) AM_ROM // AM_RANGE(0xfa0000, 0xfbffff) AM_ROM // cartridge - AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) + map(0xfc0000, 0xfeffff).rom().region(M68000_TAG, 0); /* AM_RANGE(0xf00000, 0xf1ffff) AM_READWRITE(stbook_ide_r, stbook_ide_w) AM_RANGE(0xff8000, 0xff8001) AM_READWRITE(stbook_mmu_r, stbook_mmu_w) AM_RANGE(0xff8200, 0xff8203) AM_READWRITE(stbook_shifter_base_r, stbook_shifter_base_w) @@ -1409,8 +1416,8 @@ ADDRESS_MAP_START(stbook_state::stbook_map) AM_RANGE(0xff8260, 0xff8261) AM_READWRITE8(stbook_shifter_mode_r, stbook_shifter_mode_w, 0xff00) AM_RANGE(0xff8264, 0xff8265) AM_READWRITE(stbook_shifter_pixelofs_r, stbook_shifter_pixelofs_w) AM_RANGE(0xff827e, 0xff827f) AM_WRITE(lcd_control_w)*/ - AM_RANGE(0xff8800, 0xff8801) AM_DEVREADWRITE8(YM3439_TAG, ay8910_device, data_r, address_w, 0xff00) - AM_RANGE(0xff8802, 0xff8803) AM_DEVWRITE8(YM3439_TAG, ay8910_device, data_w, 0xff00) + map(0xff8800, 0xff8800).rw(YM3439_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0xff8802, 0xff8802).w(YM3439_TAG, FUNC(ay8910_device::data_w)); /* AM_RANGE(0xff8900, 0xff8901) AM_READWRITE8(sound_dma_control_r, sound_dma_control_w, 0x00ff) AM_RANGE(0xff8902, 0xff8907) AM_READWRITE8(sound_dma_base_r, sound_dma_base_w, 0x00ff) AM_RANGE(0xff8908, 0xff890d) AM_READ8(sound_dma_counter_r, 0x00ff) @@ -1434,7 +1441,7 @@ ADDRESS_MAP_START(stbook_state::stbook_map) AM_RANGE(0xff9202, 0xff9203) AM_READWRITE(lcd_contrast_r, lcd_contrast_w) AM_RANGE(0xff9210, 0xff9211) AM_READWRITE(power_r, power_w) AM_RANGE(0xff9214, 0xff9215) AM_READWRITE(reference_r, reference_w)*/ -ADDRESS_MAP_END +} #endif diff --git a/src/mame/drivers/atarisy1.cpp b/src/mame/drivers/atarisy1.cpp index f4ec8bbc643..a13b0859020 100644 --- a/src/mame/drivers/atarisy1.cpp +++ b/src/mame/drivers/atarisy1.cpp @@ -445,31 +445,32 @@ WRITE_LINE_MEMBER(atarisy1_state::coin_counter_left_w) * *************************************/ -ADDRESS_MAP_START(atarisy1_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_ROM /* slapstic maps here */ - AM_RANGE(0x2e0000, 0x2e0001) AM_READ(atarisy1_int3state_r) - AM_RANGE(0x400000, 0x401fff) AM_RAM - AM_RANGE(0x800000, 0x800001) AM_WRITE(atarisy1_xscroll_w) AM_SHARE("xscroll") - AM_RANGE(0x820000, 0x820001) AM_WRITE(atarisy1_yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0x840000, 0x840001) AM_WRITE(atarisy1_priority_w) - AM_RANGE(0x860000, 0x860001) AM_WRITE(atarisy1_bankselect_w) AM_SHARE("bankselect") - AM_RANGE(0x880000, 0x880001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE(video_int_ack_w) - AM_RANGE(0x8c0000, 0x8c0001) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x900000, 0x9fffff) AM_RAM - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xa02000, 0xa02fff) AM_RAM_WRITE(atarisy1_spriteram_w) AM_SHARE("mob") - AM_RANGE(0xa03000, 0xa03fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xf00000, 0xf00fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xf20000, 0xf20007) AM_READ(trakball_r) - AM_RANGE(0xf40000, 0xf4001f) AM_READWRITE(joystick_r, joystick_w) - AM_RANGE(0xf60000, 0xf60003) AM_READ_PORT("F60000") - AM_RANGE(0xf80000, 0xf80001) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff) /* used by roadbls2 */ - AM_RANGE(0xfc0000, 0xfc0001) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0x00ff) - AM_RANGE(0xfe0000, 0xfe0001) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff) -ADDRESS_MAP_END +void atarisy1_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x087fff).rom(); /* slapstic maps here */ + map(0x2e0000, 0x2e0001).r(this, FUNC(atarisy1_state::atarisy1_int3state_r)); + map(0x400000, 0x401fff).ram(); + map(0x800000, 0x800001).w(this, FUNC(atarisy1_state::atarisy1_xscroll_w)).share("xscroll"); + map(0x820000, 0x820001).w(this, FUNC(atarisy1_state::atarisy1_yscroll_w)).share("yscroll"); + map(0x840000, 0x840001).w(this, FUNC(atarisy1_state::atarisy1_priority_w)); + map(0x860000, 0x860001).w(this, FUNC(atarisy1_state::atarisy1_bankselect_w)).share("bankselect"); + map(0x880000, 0x880001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x8a0000, 0x8a0001).w(this, FUNC(atarisy1_state::video_int_ack_w)); + map(0x8c0000, 0x8c0001).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x900000, 0x9fffff).ram(); + map(0xa00000, 0xa01fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0xa02000, 0xa02fff).ram().w(this, FUNC(atarisy1_state::atarisy1_spriteram_w)).share("mob"); + map(0xa03000, 0xa03fff).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xf00000, 0xf00fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xf20000, 0xf20007).r(this, FUNC(atarisy1_state::trakball_r)); + map(0xf40000, 0xf4001f).rw(this, FUNC(atarisy1_state::joystick_r), FUNC(atarisy1_state::joystick_w)); + map(0xf60000, 0xf60003).portr("F60000"); + map(0xf80001, 0xf80001).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)); /* used by roadbls2 */ + map(0xfc0001, 0xfc0001).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)); + map(0xfe0001, 0xfe0001).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)); +} @@ -479,16 +480,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(atarisy1_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) - AM_RANGE(0x1800, 0x1801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x1810, 0x1810) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_command_r, sound_response_w) - AM_RANGE(0x1820, 0x1820) AM_READ(switch_6502_r) - AM_RANGE(0x1820, 0x1827) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0x1870, 0x187f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void atarisy1_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x100f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x1800, 0x1801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x1810, 0x1810).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r), FUNC(atari_sound_comm_device::sound_response_w)); + map(0x1820, 0x1820).r(this, FUNC(atarisy1_state::switch_6502_r)); + map(0x1820, 0x1827).w(m_outlatch, FUNC(ls259_device::write_d0)); + map(0x1870, 0x187f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x4000, 0xffff).rom(); +} diff --git a/src/mame/drivers/atarisy2.cpp b/src/mame/drivers/atarisy2.cpp index c00b6361661..565e5f38ace 100644 --- a/src/mame/drivers/atarisy2.cpp +++ b/src/mame/drivers/atarisy2.cpp @@ -753,27 +753,28 @@ WRITE8_MEMBER(atarisy2_state::coincount_w) *************************************/ /* full memory map derived from schematics */ -ADDRESS_MAP_START(atarisy2_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x11ff) AM_MIRROR(0x0200) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1400, 0x1403) AM_MIRROR(0x007c) AM_READWRITE(adc_r, bankselect_w) - AM_RANGE(0x1480, 0x1487) AM_MIRROR(0x0078) AM_WRITE(adc_strobe_w) - AM_RANGE(0x1580, 0x1581) AM_MIRROR(0x001e) AM_WRITE(int0_ack_w) - AM_RANGE(0x15a0, 0x15a1) AM_MIRROR(0x001e) AM_WRITE(int1_ack_w) - AM_RANGE(0x15c0, 0x15c1) AM_MIRROR(0x001e) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0x15e0, 0x15e1) AM_MIRROR(0x001e) AM_WRITE(video_int_ack_w) - AM_RANGE(0x1600, 0x1601) AM_MIRROR(0x007e) AM_WRITE(int_enable_w) - AM_RANGE(0x1680, 0x1681) AM_MIRROR(0x007e) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff) - AM_RANGE(0x1700, 0x1701) AM_MIRROR(0x007e) AM_WRITE(xscroll_w) AM_SHARE("xscroll") - AM_RANGE(0x1780, 0x1781) AM_MIRROR(0x007e) AM_WRITE(yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0x1800, 0x1801) AM_MIRROR(0x03fe) AM_READ(switch_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x1c00, 0x1c01) AM_MIRROR(0x03fe) AM_READ(sound_r) - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(videoram_r, videoram_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("rombank1") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank2") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x8000, 0x81ff) AM_READWRITE(slapstic_r, slapstic_w) AM_SHARE("slapstic_base") -ADDRESS_MAP_END +void atarisy2_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x11ff).mirror(0x0200).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x1400, 0x1403).mirror(0x007c).rw(this, FUNC(atarisy2_state::adc_r), FUNC(atarisy2_state::bankselect_w)); + map(0x1480, 0x1487).mirror(0x0078).w(this, FUNC(atarisy2_state::adc_strobe_w)); + map(0x1580, 0x1581).mirror(0x001e).w(this, FUNC(atarisy2_state::int0_ack_w)); + map(0x15a0, 0x15a1).mirror(0x001e).w(this, FUNC(atarisy2_state::int1_ack_w)); + map(0x15c0, 0x15c1).mirror(0x001e).w(this, FUNC(atarisy2_state::scanline_int_ack_w)); + map(0x15e0, 0x15e1).mirror(0x001e).w(this, FUNC(atarisy2_state::video_int_ack_w)); + map(0x1600, 0x1601).mirror(0x007e).w(this, FUNC(atarisy2_state::int_enable_w)); + map(0x1680, 0x1680).mirror(0x007e).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)); + map(0x1700, 0x1701).mirror(0x007e).w(this, FUNC(atarisy2_state::xscroll_w)).share("xscroll"); + map(0x1780, 0x1781).mirror(0x007e).w(this, FUNC(atarisy2_state::yscroll_w)).share("yscroll"); + map(0x1800, 0x1801).mirror(0x03fe).r(this, FUNC(atarisy2_state::switch_r)).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x1c00, 0x1c01).mirror(0x03fe).r(this, FUNC(atarisy2_state::sound_r)); + map(0x2000, 0x3fff).rw(this, FUNC(atarisy2_state::videoram_r), FUNC(atarisy2_state::videoram_w)); + map(0x4000, 0x5fff).bankr("rombank1"); + map(0x6000, 0x7fff).bankr("rombank2"); + map(0x8000, 0xffff).rom(); + map(0x8000, 0x81ff).rw(this, FUNC(atarisy2_state::slapstic_r), FUNC(atarisy2_state::slapstic_w)).share("slapstic_base"); +} @@ -784,25 +785,26 @@ ADDRESS_MAP_END *************************************/ /* full memory map derived from schematics */ -ADDRESS_MAP_START(atarisy2_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x2000) AM_DEVREADWRITE("eeprom", eeprom_parallel_28xx_device, read, write) - AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x1810, 0x1813) AM_MIRROR(0x278c) AM_READ(leta_r) - AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x2780) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x1840, 0x1840) AM_MIRROR(0x278f) AM_READ(switch_6502_r) - AM_RANGE(0x1850, 0x1851) AM_MIRROR(0x278e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x1860, 0x1860) AM_MIRROR(0x278f) AM_READ(sound_6502_r) - AM_RANGE(0x1870, 0x1870) AM_MIRROR(0x2781) AM_WRITE(tms5220_w) - AM_RANGE(0x1872, 0x1873) AM_MIRROR(0x2780) AM_WRITE(tms5220_strobe_w) - AM_RANGE(0x1874, 0x1874) AM_MIRROR(0x2781) AM_WRITE(sound_6502_w) - AM_RANGE(0x1876, 0x1876) AM_MIRROR(0x2781) AM_WRITE(coincount_w) - AM_RANGE(0x1878, 0x1878) AM_MIRROR(0x2781) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_w) - AM_RANGE(0x187a, 0x187a) AM_MIRROR(0x2781) AM_WRITE(mixer_w) - AM_RANGE(0x187c, 0x187c) AM_MIRROR(0x2781) AM_WRITE(switch_6502_w) - AM_RANGE(0x187e, 0x187e) AM_MIRROR(0x2781) AM_WRITE(sound_reset_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void atarisy2_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).mirror(0x2000).ram(); + map(0x1000, 0x17ff).mirror(0x2000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); + map(0x1800, 0x180f).mirror(0x2780).rw(m_pokey1, FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1810, 0x1813).mirror(0x278c).r(this, FUNC(atarisy2_state::leta_r)); + map(0x1830, 0x183f).mirror(0x2780).rw(m_pokey2, FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1840, 0x1840).mirror(0x278f).r(this, FUNC(atarisy2_state::switch_6502_r)); + map(0x1850, 0x1851).mirror(0x278e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x1860, 0x1860).mirror(0x278f).r(this, FUNC(atarisy2_state::sound_6502_r)); + map(0x1870, 0x1870).mirror(0x2781).w(this, FUNC(atarisy2_state::tms5220_w)); + map(0x1872, 0x1873).mirror(0x2780).w(this, FUNC(atarisy2_state::tms5220_strobe_w)); + map(0x1874, 0x1874).mirror(0x2781).w(this, FUNC(atarisy2_state::sound_6502_w)); + map(0x1876, 0x1876).mirror(0x2781).w(this, FUNC(atarisy2_state::coincount_w)); + map(0x1878, 0x1878).mirror(0x2781).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_w)); + map(0x187a, 0x187a).mirror(0x2781).w(this, FUNC(atarisy2_state::mixer_w)); + map(0x187c, 0x187c).mirror(0x2781).w(this, FUNC(atarisy2_state::switch_6502_w)); + map(0x187e, 0x187e).mirror(0x2781).w(this, FUNC(atarisy2_state::sound_reset_w)); + map(0x4000, 0xffff).rom(); +} diff --git a/src/mame/drivers/atarisy4.cpp b/src/mame/drivers/atarisy4.cpp index 36e7c42826b..0c05243b57a 100644 --- a/src/mame/drivers/atarisy4.cpp +++ b/src/mame/drivers/atarisy4.cpp @@ -671,19 +671,20 @@ WRITE16_MEMBER(atarisy4_state::dsp1_bank_w) * *************************************/ -ADDRESS_MAP_START(atarisy4_state::main_map) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("m68k_ram") - AM_RANGE(0x010000, 0x01ffff) AM_RAM - AM_RANGE(0x580000, 0x580001) AM_READ_PORT("JOYSTICK") - AM_RANGE(0x588000, 0x588001) AM_READ(analog_r) - AM_RANGE(0x598000, 0x598001) AM_NOP /* Sound board */ - AM_RANGE(0x7c0000, 0x7c4fff) AM_READWRITE(m68k_shared_1_r, m68k_shared_1_w) - AM_RANGE(0x7c6000, 0x7c6001) AM_READWRITE(dsp1_status_r, dsp1_control_w) - AM_RANGE(0x7f0000, 0x7f4fff) AM_READWRITE(m68k_shared_0_r, m68k_shared_0_w) - AM_RANGE(0x7f6000, 0x7f6001) AM_READWRITE(dsp0_status_r, dsp0_control_w) - AM_RANGE(0xa00400, 0xbfffff) AM_RAM AM_SHARE("screen_ram") - AM_RANGE(0xff8000, 0xff8fff) AM_READWRITE(gpu_r, gpu_w) -ADDRESS_MAP_END +void atarisy4_state::main_map(address_map &map) +{ + map(0x000000, 0x00ffff).ram().share("m68k_ram"); + map(0x010000, 0x01ffff).ram(); + map(0x580000, 0x580001).portr("JOYSTICK"); + map(0x588000, 0x588001).r(this, FUNC(atarisy4_state::analog_r)); + map(0x598000, 0x598001).noprw(); /* Sound board */ + map(0x7c0000, 0x7c4fff).rw(this, FUNC(atarisy4_state::m68k_shared_1_r), FUNC(atarisy4_state::m68k_shared_1_w)); + map(0x7c6000, 0x7c6001).rw(this, FUNC(atarisy4_state::dsp1_status_r), FUNC(atarisy4_state::dsp1_control_w)); + map(0x7f0000, 0x7f4fff).rw(this, FUNC(atarisy4_state::m68k_shared_0_r), FUNC(atarisy4_state::m68k_shared_0_w)); + map(0x7f6000, 0x7f6001).rw(this, FUNC(atarisy4_state::dsp0_status_r), FUNC(atarisy4_state::dsp0_control_w)); + map(0xa00400, 0xbfffff).ram().share("screen_ram"); + map(0xff8000, 0xff8fff).rw(this, FUNC(atarisy4_state::gpu_r), FUNC(atarisy4_state::gpu_w)); +} /************************************* @@ -692,15 +693,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(atarisy4_state::dsp0_map) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("dsp0_bank0") - AM_RANGE(0x0800, 0x0fff) AM_RAMBANK("dsp0_bank1") -ADDRESS_MAP_END +void atarisy4_state::dsp0_map(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x07ff).bankrw("dsp0_bank0"); + map(0x0800, 0x0fff).bankrw("dsp0_bank1"); +} -ADDRESS_MAP_START(atarisy4_state::dsp0_io_map) - AM_RANGE(0x00, 0x01) AM_WRITE(dsp0_bank_w) -ADDRESS_MAP_END +void atarisy4_state::dsp0_io_map(address_map &map) +{ + map(0x00, 0x01).w(this, FUNC(atarisy4_state::dsp0_bank_w)); +} /************************************* @@ -709,15 +712,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(atarisy4_state::dsp1_map) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("dsp1_bank0") - AM_RANGE(0x0800, 0x0fff) AM_RAMBANK("dsp1_bank1") -ADDRESS_MAP_END +void atarisy4_state::dsp1_map(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x07ff).bankrw("dsp1_bank0"); + map(0x0800, 0x0fff).bankrw("dsp1_bank1"); +} -ADDRESS_MAP_START(atarisy4_state::dsp1_io_map) - AM_RANGE(0x00, 0x01) AM_WRITE(dsp1_bank_w) -ADDRESS_MAP_END +void atarisy4_state::dsp1_io_map(address_map &map) +{ + map(0x00, 0x01).w(this, FUNC(atarisy4_state::dsp1_bank_w)); +} /************************************* diff --git a/src/mame/drivers/atetris.cpp b/src/mame/drivers/atetris.cpp index c52d23bd2fc..e9f18b087df 100644 --- a/src/mame/drivers/atetris.cpp +++ b/src/mame/drivers/atetris.cpp @@ -193,61 +193,64 @@ WRITE8_MEMBER(atetris_state::nvram_enable_w) *************************************/ /* full address map derived from schematics */ -ADDRESS_MAP_START(atetris_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2400, 0x25ff) AM_MIRROR(0x0200) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") - AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x2810, 0x281f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_WRITE(nvram_enable_w) - AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_WRITE(irq_ack_w) - AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x03ff) AM_WRITE(coincount_w) - AM_RANGE(0x4000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_READ(slapstic_r) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(atetris_state::atetrisb2_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x20ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") - AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0x2804, 0x2804) AM_DEVWRITE("sn2", sn76496_device, write) - AM_RANGE(0x2806, 0x2806) AM_DEVWRITE("sn3", sn76496_device, write) - AM_RANGE(0x2808, 0x2808) AM_READ_PORT("IN0") - AM_RANGE(0x2818, 0x2818) AM_READ_PORT("IN1") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3400, 0x3400) AM_WRITE(nvram_enable_w) - AM_RANGE(0x3800, 0x3800) AM_WRITE(irq_ack_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(coincount_w) - AM_RANGE(0x4000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_READ(slapstic_r) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(atetris_state::atetrisb3_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x20ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") +void atetris_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().w(this, FUNC(atetris_state::videoram_w)).share("videoram"); + map(0x2000, 0x20ff).mirror(0x0300).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x2400, 0x25ff).mirror(0x0200).ram().w(this, FUNC(atetris_state::nvram_w)).share("nvram"); + map(0x2800, 0x280f).mirror(0x03e0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x2810, 0x281f).mirror(0x03e0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x3000, 0x3000).mirror(0x03ff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3400, 0x3400).mirror(0x03ff).w(this, FUNC(atetris_state::nvram_enable_w)); + map(0x3800, 0x3800).mirror(0x03ff).w(this, FUNC(atetris_state::irq_ack_w)); + map(0x3c00, 0x3c00).mirror(0x03ff).w(this, FUNC(atetris_state::coincount_w)); + map(0x4000, 0x5fff).rom(); + map(0x6000, 0x7fff).r(this, FUNC(atetris_state::slapstic_r)); + map(0x8000, 0xffff).rom(); +} + + +void atetris_state::atetrisb2_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().w(this, FUNC(atetris_state::videoram_w)).share("videoram"); + map(0x2000, 0x20ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x2400, 0x25ff).ram().w(this, FUNC(atetris_state::nvram_w)).share("nvram"); + map(0x2802, 0x2802).w("sn1", FUNC(sn76496_device::write)); + map(0x2804, 0x2804).w("sn2", FUNC(sn76496_device::write)); + map(0x2806, 0x2806).w("sn3", FUNC(sn76496_device::write)); + map(0x2808, 0x2808).portr("IN0"); + map(0x2818, 0x2818).portr("IN1"); + map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3400, 0x3400).w(this, FUNC(atetris_state::nvram_enable_w)); + map(0x3800, 0x3800).w(this, FUNC(atetris_state::irq_ack_w)); + map(0x3c00, 0x3c00).w(this, FUNC(atetris_state::coincount_w)); + map(0x4000, 0x5fff).rom(); + map(0x6000, 0x7fff).r(this, FUNC(atetris_state::slapstic_r)); + map(0x8000, 0xffff).rom(); +} + + +void atetris_state::atetrisb3_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().w(this, FUNC(atetris_state::videoram_w)).share("videoram"); + map(0x2000, 0x20ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x2400, 0x25ff).ram().w(this, FUNC(atetris_state::nvram_w)).share("nvram"); //AM_RANGE(0x2802, 0x2802) AM_DEVWRITE("sn1", sn76489_device, write) //AM_RANGE(0x2804, 0x2804) AM_DEVWRITE("sn2", sn76489_device, write) //AM_RANGE(0x2806, 0x2806) AM_DEVWRITE("sn3", sn76489_device, write) - AM_RANGE(0x2808, 0x2808) AM_READ_PORT("IN0") - AM_RANGE(0x2818, 0x2818) AM_READ_PORT("IN1") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3400, 0x3400) AM_WRITE(nvram_enable_w) - AM_RANGE(0x3800, 0x3800) AM_WRITE(irq_ack_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(coincount_w) - AM_RANGE(0x4000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_READ(slapstic_r) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x2808, 0x2808).portr("IN0"); + map(0x2818, 0x2818).portr("IN1"); + map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3400, 0x3400).w(this, FUNC(atetris_state::nvram_enable_w)); + map(0x3800, 0x3800).w(this, FUNC(atetris_state::irq_ack_w)); + map(0x3c00, 0x3c00).w(this, FUNC(atetris_state::coincount_w)); + map(0x4000, 0x5fff).rom(); + map(0x6000, 0x7fff).r(this, FUNC(atetris_state::slapstic_r)); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/atm.cpp b/src/mame/drivers/atm.cpp index 4d3147bdff5..b421ad70aa4 100644 --- a/src/mame/drivers/atm.cpp +++ b/src/mame/drivers/atm.cpp @@ -111,31 +111,34 @@ READ8_MEMBER(atm_state::beta_disable_r) return m_program->read_byte(offset + 0x4000); } -ADDRESS_MAP_START(atm_state::atm_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(atm_state::atm_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00) - AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00) - AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00) - AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00) - AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xff00) - AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00) - AM_RANGE(0x4000, 0x4000) AM_WRITE(atm_port_7ffd_w) AM_MIRROR(0x3ffd) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd) -ADDRESS_MAP_END - -ADDRESS_MAP_START(atm_state::atm_switch) - AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range - AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r) - AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r) -ADDRESS_MAP_END +void atm_state::atm_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void atm_state::atm_io(address_map &map) +{ + map.unmap_value_high(); + map(0x001f, 0x001f).rw(m_beta, FUNC(beta_disk_device::status_r), FUNC(beta_disk_device::command_w)).mirror(0xff00); + map(0x003f, 0x003f).rw(m_beta, FUNC(beta_disk_device::track_r), FUNC(beta_disk_device::track_w)).mirror(0xff00); + map(0x005f, 0x005f).rw(m_beta, FUNC(beta_disk_device::sector_r), FUNC(beta_disk_device::sector_w)).mirror(0xff00); + map(0x007f, 0x007f).rw(m_beta, FUNC(beta_disk_device::data_r), FUNC(beta_disk_device::data_w)).mirror(0xff00); + map(0x00fe, 0x00fe).rw(this, FUNC(atm_state::spectrum_port_fe_r), FUNC(atm_state::spectrum_port_fe_w)).select(0xff00); + map(0x00ff, 0x00ff).rw(m_beta, FUNC(beta_disk_device::state_r), FUNC(beta_disk_device::param_w)).mirror(0xff00); + map(0x4000, 0x4000).w(this, FUNC(atm_state::atm_port_7ffd_w)).mirror(0x3ffd); + map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd); + map(0xc000, 0xc000).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3ffd); +} + +void atm_state::atm_switch(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(atm_state::beta_neutral_r)); // Overlap with previous because we want real addresses on the 3e00-3fff range + map(0x3d00, 0x3dff).r(this, FUNC(atm_state::beta_enable_r)); + map(0x4000, 0xffff).r(this, FUNC(atm_state::beta_disable_r)); +} MACHINE_RESET_MEMBER(atm_state,atm) { diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp index d2bc3439093..18f025907b0 100644 --- a/src/mame/drivers/atom.cpp +++ b/src/mame/drivers/atom.cpp @@ -248,45 +248,48 @@ READ8_MEMBER( atomeb_state::dos_r ) ADDRESS_MAP( atom_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(atom_state::atom_mem) - AM_RANGE(0x0000, 0x09ff) AM_RAM - AM_RANGE(0x0a00, 0x0a03) AM_MIRROR(0x1f8) AM_DEVICE(I8271_TAG, i8271_device, map) - AM_RANGE(0x0a04, 0x0a04) AM_MIRROR(0x1f8) AM_DEVREADWRITE(I8271_TAG, i8271_device, data_r, data_w) - AM_RANGE(0x0a05, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x9800, 0x9fff) AM_RAM +void atom_state::atom_mem(address_map &map) +{ + map(0x0000, 0x09ff).ram(); + map(0x0a00, 0x0a03).mirror(0x1f8).m(m_fdc, FUNC(i8271_device::map)); + map(0x0a04, 0x0a04).mirror(0x1f8).rw(m_fdc, FUNC(i8271_device::data_r), FUNC(i8271_device::data_w)); + map(0x0a05, 0x7fff).ram(); + map(0x8000, 0x97ff).ram().share("video_ram"); + map(0x9800, 0x9fff).ram(); // AM_RANGE(0xa000, 0xafff) // mapped by the cartslot - AM_RANGE(0xb000, 0xb003) AM_MIRROR(0x3fc) AM_DEVREADWRITE(INS8255_TAG, i8255_device, read, write) + map(0xb000, 0xb003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); // AM_RANGE(0xb400, 0xb403) AM_DEVREADWRITE(MC6854_TAG, mc6854_device, read, write) // AM_RANGE(0xb404, 0xb404) AM_READ_PORT("ECONET") - AM_RANGE(0xb800, 0xb80f) AM_MIRROR(0x3f0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0) -ADDRESS_MAP_END + map(0xb800, 0xb80f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xc000, 0xffff).rom().region(SY6502_TAG, 0); +} /*------------------------------------------------- ADDRESS_MAP( atomeb_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(atomeb_state::atomeb_mem) - AM_IMPORT_FROM(atom_mem) - AM_RANGE(0xa000, 0xafff) AM_READ(ext_r) - AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(eprom_r, eprom_w) - AM_RANGE(0xe000, 0xefff) AM_READ(dos_r) -ADDRESS_MAP_END +void atomeb_state::atomeb_mem(address_map &map) +{ + atom_mem(map); + map(0xa000, 0xafff).r(this, FUNC(atomeb_state::ext_r)); + map(0xbfff, 0xbfff).rw(this, FUNC(atomeb_state::eprom_r), FUNC(atomeb_state::eprom_w)); + map(0xe000, 0xefff).r(this, FUNC(atomeb_state::dos_r)); +} /*------------------------------------------------- ADDRESS_MAP( atombb_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(atom_state::atombb_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x57ff) AM_RAM AM_SHARE("video_ram") +void atom_state::atombb_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram(); + map(0x4000, 0x57ff).ram().share("video_ram"); - AM_RANGE(0x7000, 0x7003) AM_MIRROR(0x3fc) AM_DEVREADWRITE(INS8255_TAG, i8255_device, read, write) - AM_RANGE(0x7800, 0x780f) AM_MIRROR(0x3f0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write) - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("basic", 0) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0) -ADDRESS_MAP_END + map(0x7000, 0x7003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7800, 0x780f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x8000, 0xbfff).rom().region("basic", 0); + map(0xf000, 0xffff).rom().region(SY6502_TAG, 0); +} /*------------------------------------------------- ADDRESS_MAP( prophet_mem ) diff --git a/src/mame/drivers/atpci.cpp b/src/mame/drivers/atpci.cpp index 84cd58e3016..55f9d10516b 100644 --- a/src/mame/drivers/atpci.cpp +++ b/src/mame/drivers/atpci.cpp @@ -55,17 +55,19 @@ static SLOT_INTERFACE_START( pci_devices ) SLOT_INTERFACE_INTERNAL("i82371sb", I82371SB) SLOT_INTERFACE_END -ADDRESS_MAP_START(at586_state::at586_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") - AM_RANGE(0x000a0000, 0x000bffff) AM_NOP - AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(at586_state::at586_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write) -ADDRESS_MAP_END +void at586_state::at586_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).bankrw("bank10"); + map(0x000a0000, 0x000bffff).noprw(); + map(0x00800000, 0x00800bff).ram().share("nvram"); + map(0xfffe0000, 0xffffffff).rom().region("isa", 0x20000); +} + +void at586_state::at586_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_device::read), FUNC(pci_bus_device::write)); +} MACHINE_CONFIG_START(at586_state::at_softlists) /* software lists */ diff --git a/src/mame/drivers/atronic.cpp b/src/mame/drivers/atronic.cpp index 968af2617c7..d83f79753ab 100644 --- a/src/mame/drivers/atronic.cpp +++ b/src/mame/drivers/atronic.cpp @@ -44,17 +44,19 @@ uint32_t atronic_state::screen_update( screen_device &screen, bitmap_ind16 &bitm } -ADDRESS_MAP_START(atronic_state::atronic_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xf8000, 0xfffff) AM_RAM -ADDRESS_MAP_END +void atronic_state::atronic_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0xf8000, 0xfffff).ram(); +} -ADDRESS_MAP_START(atronic_state::atronic_portmap) +void atronic_state::atronic_portmap(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x3f) AM_RAM -ADDRESS_MAP_END + map.unmap_value_high(); + map(0x00, 0x3f).ram(); +} static INPUT_PORTS_START( atronic ) diff --git a/src/mame/drivers/att4425.cpp b/src/mame/drivers/att4425.cpp index 72ee85b3b7c..437cc251787 100644 --- a/src/mame/drivers/att4425.cpp +++ b/src/mame/drivers/att4425.cpp @@ -101,21 +101,23 @@ READ8_MEMBER(att4425_state::port15_r) return 0; } -ADDRESS_MAP_START(att4425_state::att4425_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION(Z80_TAG, 0) - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") // c000..f7af? -ADDRESS_MAP_END - -ADDRESS_MAP_START(att4425_state::att4425_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x10, 0x10) AM_WRITE(port10_w) - AM_RANGE(0x14, 0x14) AM_READWRITE(port14_r, port14_w) - AM_RANGE(0x15, 0x15) AM_READ(port15_r) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE(Z80SIO_TAG, z80sio_device, ba_cd_r, ba_cd_w) -ADDRESS_MAP_END +void att4425_state::att4425_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom().region(Z80_TAG, 0); + map(0x8000, 0xffff).ram().share("videoram"); // c000..f7af? +} + +void att4425_state::att4425_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_i8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw(m_i8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x10, 0x10).w(this, FUNC(att4425_state::port10_w)); + map(0x14, 0x14).rw(this, FUNC(att4425_state::port14_r), FUNC(att4425_state::port14_w)); + map(0x15, 0x15).r(this, FUNC(att4425_state::port15_r)); + map(0x18, 0x1b).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x1c, 0x1f).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/att630.cpp b/src/mame/drivers/att630.cpp index 9ede731e85c..37dc55b4522 100644 --- a/src/mame/drivers/att630.cpp +++ b/src/mame/drivers/att630.cpp @@ -32,15 +32,16 @@ u32 att630_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con return 0; } -ADDRESS_MAP_START(att630_state::mem_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE8("duart1", scn2681_device, read, write, 0x00ff) - AM_RANGE(0x200020, 0x20003f) AM_DEVREADWRITE8("duart2", scn2681_device, read, write, 0x00ff) - AM_RANGE(0x760000, 0x77ffff) AM_RAM - AM_RANGE(0x780000, 0x7bffff) AM_RAM - AM_RANGE(0x7c0000, 0x7fffff) AM_RAM - AM_RANGE(0xe00000, 0xe03fff) AM_NOP // 0x00ff mask -ADDRESS_MAP_END +void att630_state::mem_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("maincpu", 0); + map(0x200000, 0x20001f).rw("duart1", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); + map(0x200020, 0x20003f).rw("duart2", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); + map(0x760000, 0x77ffff).ram(); + map(0x780000, 0x7bffff).ram(); + map(0x7c0000, 0x7fffff).ram(); + map(0xe00000, 0xe03fff).noprw(); // 0x00ff mask +} static INPUT_PORTS_START( att630 ) INPUT_PORTS_END diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp index 242a64a0937..b2b85861db9 100644 --- a/src/mame/drivers/attache.cpp +++ b/src/mame/drivers/attache.cpp @@ -183,7 +183,7 @@ public: void attache(machine_config &config); void attache_io(address_map &map); void attache_map(address_map &map); -private: +protected: required_device<cpu_device> m_maincpu; required_memory_region m_rom; required_device<ram_device> m_ram; @@ -900,55 +900,60 @@ WRITE_LINE_MEMBER(attache816_state::x86_dsr) // TODO: /DSR to Z8530 SCC } -ADDRESS_MAP_START(attache_state::attache_map) - AM_RANGE(0x0000,0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0x2000,0x3fff) AM_RAMBANK("bank2") - AM_RANGE(0x4000,0x5fff) AM_RAMBANK("bank3") - AM_RANGE(0x6000,0x7fff) AM_RAMBANK("bank4") - AM_RANGE(0x8000,0x9fff) AM_RAMBANK("bank5") - AM_RANGE(0xa000,0xbfff) AM_RAMBANK("bank6") - AM_RANGE(0xc000,0xdfff) AM_RAMBANK("bank7") - AM_RANGE(0xe000,0xffff) AM_RAMBANK("bank8") -ADDRESS_MAP_END - -ADDRESS_MAP_START(attache_state::attache_io) - AM_RANGE(0xe0, 0xed) AM_DEVREADWRITE("dma",am9517a_device,read,write) AM_MIRROR(0xff00) - AM_RANGE(0xee, 0xee) AM_WRITE(display_command_w) AM_MIRROR(0xff00) - AM_RANGE(0xef, 0xef) AM_READWRITE(dma_mask_r, dma_mask_w) AM_MIRROR(0xff00) - AM_RANGE(0xf0, 0xf1) AM_DEVREADWRITE("sio",z80sio_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("ctc",z80ctc_device,read,write) AM_MIRROR(0xff00) - AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("pio",z80pio_device,read_alt,write_alt) AM_MIRROR(0xff00) - AM_RANGE(0xfc, 0xfd) AM_DEVICE("fdc",upd765a_device,map) AM_MIRROR(0xff00) - AM_RANGE(0xfe, 0xfe) AM_READWRITE(display_data_r, display_data_w) AM_SELECT(0xff00) - AM_RANGE(0xff, 0xff) AM_READWRITE(memmap_r, memmap_w) AM_MIRROR(0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(attache816_state::attache816_io) - AM_RANGE(0xb8, 0xb8) AM_READWRITE(z80_comms_status_r, z80_comms_ctrl_w) AM_MIRROR(0xff00) - AM_RANGE(0xb9, 0xb9) AM_READWRITE(z80_comms_r, z80_comms_w) AM_MIRROR(0xff00) - AM_RANGE(0xe0, 0xed) AM_DEVREADWRITE("dma",am9517a_device,read,write) AM_MIRROR(0xff00) - AM_RANGE(0xee, 0xee) AM_WRITE(display_command_w) AM_MIRROR(0xff00) - AM_RANGE(0xef, 0xef) AM_READWRITE(dma_mask_r, dma_mask_w) AM_MIRROR(0xff00) - AM_RANGE(0xf0, 0xf1) AM_DEVREADWRITE("sio",z80sio_device,ba_cd_r, ba_cd_w) AM_MIRROR(0xff00) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("ctc",z80ctc_device,read,write) AM_MIRROR(0xff00) - AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("pio",z80pio_device,read_alt,write_alt) AM_MIRROR(0xff00) - AM_RANGE(0xfc, 0xfd) AM_DEVICE("fdc",upd765a_device,map) AM_MIRROR(0xff00) - AM_RANGE(0xfe, 0xfe) AM_READWRITE(display_data_r, display_data_w) AM_SELECT(0xff00) - AM_RANGE(0xff, 0xff) AM_READWRITE(memmap_r, memmap_w) AM_MIRROR(0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(attache816_state::attache_x86_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM - AM_RANGE(0xb0000, 0xbffff) AM_NOP // triggers IRQ? - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("x86bios",0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(attache816_state::attache_x86_io) - AM_RANGE(0x100, 0x107) AM_DEVREADWRITE8("ppi",i8255_device,read,write,0x00ff) - AM_RANGE(0x108, 0x10d) AM_WRITE8(x86_iobf_enable_w,0xffff); +void attache_state::attache_map(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x3fff).bankrw("bank2"); + map(0x4000, 0x5fff).bankrw("bank3"); + map(0x6000, 0x7fff).bankrw("bank4"); + map(0x8000, 0x9fff).bankrw("bank5"); + map(0xa000, 0xbfff).bankrw("bank6"); + map(0xc000, 0xdfff).bankrw("bank7"); + map(0xe000, 0xffff).bankrw("bank8"); +} + +void attache_state::attache_io(address_map &map) +{ + map(0xe0, 0xed).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).mirror(0xff00); + map(0xee, 0xee).w(this, FUNC(attache_state::display_command_w)).mirror(0xff00); + map(0xef, 0xef).rw(this, FUNC(attache_state::dma_mask_r), FUNC(attache_state::dma_mask_w)).mirror(0xff00); + map(0xf0, 0xf1).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).mirror(0xff00); + map(0xf4, 0xf7).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).mirror(0xff00); + map(0xf8, 0xfb).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).mirror(0xff00); + map(0xfc, 0xfd).m(m_fdc, FUNC(upd765a_device::map)).mirror(0xff00); + map(0xfe, 0xfe).rw(this, FUNC(attache_state::display_data_r), FUNC(attache_state::display_data_w)).select(0xff00); + map(0xff, 0xff).rw(this, FUNC(attache_state::memmap_r), FUNC(attache_state::memmap_w)).mirror(0xff00); +} + +void attache816_state::attache816_io(address_map &map) +{ + map(0xb8, 0xb8).rw(this, FUNC(attache816_state::z80_comms_status_r), FUNC(attache816_state::z80_comms_ctrl_w)).mirror(0xff00); + map(0xb9, 0xb9).rw(this, FUNC(attache816_state::z80_comms_r), FUNC(attache816_state::z80_comms_w)).mirror(0xff00); + map(0xe0, 0xed).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).mirror(0xff00); + map(0xee, 0xee).w(this, FUNC(attache816_state::display_command_w)).mirror(0xff00); + map(0xef, 0xef).rw(this, FUNC(attache816_state::dma_mask_r), FUNC(attache816_state::dma_mask_w)).mirror(0xff00); + map(0xf0, 0xf1).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).mirror(0xff00); + map(0xf4, 0xf7).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).mirror(0xff00); + map(0xf8, 0xfb).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).mirror(0xff00); + map(0xfc, 0xfd).m(m_fdc, FUNC(upd765a_device::map)).mirror(0xff00); + map(0xfe, 0xfe).rw(this, FUNC(attache816_state::display_data_r), FUNC(attache816_state::display_data_w)).select(0xff00); + map(0xff, 0xff).rw(this, FUNC(attache816_state::memmap_r), FUNC(attache816_state::memmap_w)).mirror(0xff00); +} + +void attache816_state::attache_x86_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); + map(0xb0000, 0xbffff).noprw(); // triggers IRQ? + map(0xfe000, 0xfffff).rom().region("x86bios", 0x0000); +} + +void attache816_state::attache_x86_io(address_map &map) +{ + map(0x100, 0x107).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x108, 0x10d).w(this, FUNC(attache816_state::x86_iobf_enable_w)); // 0x140/2/4/6 - Z8530 SCC serial // 0x180/2/4/6/8/a/c/e - GPIB (TMS9914A) -ADDRESS_MAP_END +} static INPUT_PORTS_START(attache) PORT_START("row0") diff --git a/src/mame/drivers/attckufo.cpp b/src/mame/drivers/attckufo.cpp index 2926707dc3c..711655492ef 100644 --- a/src/mame/drivers/attckufo.cpp +++ b/src/mame/drivers/attckufo.cpp @@ -45,22 +45,25 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(attckufo_state::cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("mos6560", mos6560_device, read, write) - AM_RANGE(0x1400, 0x1403) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x1c00, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(attckufo_state::vic_videoram_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(attckufo_state::vic_colorram_map) - AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) -ADDRESS_MAP_END +void attckufo_state::cpu_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x100f).rw("mos6560", FUNC(mos6560_device::read), FUNC(mos6560_device::write)); + map(0x1400, 0x1403).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1c00, 0x1fff).ram(); + map(0x2000, 0x3fff).rom().region("maincpu", 0); +} + +void attckufo_state::vic_videoram_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(attckufo_state::vic_videoram_r)); +} + +void attckufo_state::vic_colorram_map(address_map &map) +{ + map(0x000, 0x3ff).r(this, FUNC(attckufo_state::vic_colorram_r)); +} //************************************************************************** diff --git a/src/mame/drivers/atvtrack.cpp b/src/mame/drivers/atvtrack.cpp index eb3cb08a00e..6f5d93fde93 100644 --- a/src/mame/drivers/atvtrack.cpp +++ b/src/mame/drivers/atvtrack.cpp @@ -507,50 +507,56 @@ void smashdrv_state::machine_reset() // ATV Track -ADDRESS_MAP_START(atvtrack_state::atvtrack_main_map) - AM_RANGE(0x00000000, 0x000003ff) AM_RAM AM_SHARE("sharedmem") - AM_RANGE(0x00020000, 0x00020007) AM_READWRITE(control_r, control_w) // control registers +void atvtrack_state::atvtrack_main_map(address_map &map) +{ + map(0x00000000, 0x000003ff).ram().share("sharedmem"); + map(0x00020000, 0x00020007).rw(this, FUNC(atvtrack_state::control_r), FUNC(atvtrack_state::control_w)); // control registers // AM_RANGE(0x00020040, 0x0002007f) // audio DAC buffer - AM_RANGE(0x14000000, 0x14000007) AM_READWRITE(nand_data_r, nand_data_w) - AM_RANGE(0x14100000, 0x14100007) AM_WRITE(nand_cmd_w) - AM_RANGE(0x14200000, 0x14200007) AM_WRITE(nand_addr_w) - AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM -ADDRESS_MAP_END + map(0x14000000, 0x14000007).rw(this, FUNC(atvtrack_state::nand_data_r), FUNC(atvtrack_state::nand_data_w)); + map(0x14100000, 0x14100007).w(this, FUNC(atvtrack_state::nand_cmd_w)); + map(0x14200000, 0x14200007).w(this, FUNC(atvtrack_state::nand_addr_w)); + map(0x0c000000, 0x0c7fffff).ram(); +} -ADDRESS_MAP_START(atvtrack_state::atvtrack_main_port) - AM_RANGE(0x00, 0x1f) AM_READWRITE(ioport_r, ioport_w) -ADDRESS_MAP_END +void atvtrack_state::atvtrack_main_port(address_map &map) +{ + map(0x00, 0x1f).rw(this, FUNC(atvtrack_state::ioport_r), FUNC(atvtrack_state::ioport_w)); +} // Smashing Drive -ADDRESS_MAP_START(smashdrv_state::smashdrv_main_map) - AM_RANGE(0x00000000, 0x03ffffff) AM_ROM - AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM - AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_SHARE("sharedmem") - AM_RANGE(0x10000400, 0x10000407) AM_READWRITE(control_r, control_w) // control registers +void smashdrv_state::smashdrv_main_map(address_map &map) +{ + map(0x00000000, 0x03ffffff).rom(); + map(0x0c000000, 0x0c7fffff).ram(); + map(0x10000000, 0x100003ff).ram().share("sharedmem"); + map(0x10000400, 0x10000407).rw(this, FUNC(smashdrv_state::control_r), FUNC(smashdrv_state::control_w)); // control registers // 0x10000400 - 0x1000043F control registers // 0x10000440 - 0x1000047F Audio DAC buffer - AM_RANGE(0x14000000, 0x143fffff) AM_ROM AM_REGION("data", 0) -ADDRESS_MAP_END + map(0x14000000, 0x143fffff).rom().region("data", 0); +} -ADDRESS_MAP_START(smashdrv_state::smashdrv_main_port) - AM_RANGE(0x00, 0x1f) AM_READWRITE(ioport_r, ioport_w) -ADDRESS_MAP_END +void smashdrv_state::smashdrv_main_port(address_map &map) +{ + map(0x00, 0x1f).rw(this, FUNC(smashdrv_state::ioport_r), FUNC(smashdrv_state::ioport_w)); +} // Sub CPU (same for both games) -ADDRESS_MAP_START(atvtrack_state::atvtrack_sub_map) - AM_RANGE(0x00000000, 0x000003ff) AM_RAM AM_SHARE("sharedmem") - AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM - AM_RANGE(0x14000000, 0x14003fff) AM_READWRITE32(gpu_r, gpu_w, 0xffffffffffffffffU) +void atvtrack_state::atvtrack_sub_map(address_map &map) +{ + map(0x00000000, 0x000003ff).ram().share("sharedmem"); + map(0x0c000000, 0x0cffffff).ram(); + map(0x14000000, 0x14003fff).rw(this, FUNC(atvtrack_state::gpu_r), FUNC(atvtrack_state::gpu_w)); // 0x14004xxx GPU PCI CONFIG registers - AM_RANGE(0x18000000, 0x19ffffff) AM_RAM + map(0x18000000, 0x19ffffff).ram(); // 0x18000000 - 0x19FFFFFF GPU RAM (32MB) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(atvtrack_state::atvtrack_sub_port) -ADDRESS_MAP_END +void atvtrack_state::atvtrack_sub_port(address_map &map) +{ +} static INPUT_PORTS_START( atvtrack ) diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp index 84db0050557..3ae6fd6b9fc 100644 --- a/src/mame/drivers/aussiebyte.cpp +++ b/src/mame/drivers/aussiebyte.cpp @@ -43,44 +43,46 @@ ************************************************************/ -ADDRESS_MAP_START(aussiebyte_state::aussiebyte_map) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank1") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank2") - AM_RANGE(0xc000, 0xffff) AM_RAM AM_REGION("mram", 0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(aussiebyte_state::aussiebyte_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_NOP // winchester interface - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", wd2797_device, read, write) - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x15, 0x15) AM_WRITE(port15_w) // boot rom disable - AM_RANGE(0x16, 0x16) AM_WRITE(port16_w) // fdd select - AM_RANGE(0x17, 0x17) AM_WRITE(port17_w) // DMA mux - AM_RANGE(0x18, 0x18) AM_WRITE(port18_w) // fdc select - AM_RANGE(0x19, 0x19) AM_READ(port19_r) // info port - AM_RANGE(0x1a, 0x1a) AM_WRITE(port1a_w) // membank - AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w) // winchester control - AM_RANGE(0x1c, 0x1f) AM_WRITE(port1c_w) // gpebh select - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("pio2", z80pio_device, read, write) - AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio2", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x28, 0x28) AM_READ(port28_r) AM_DEVWRITE("votrax", votrax_sc01_device, write) - AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("votrax", votrax_sc01_device, inflection_w) - AM_RANGE(0x30, 0x30) AM_WRITE(address_w) - AM_RANGE(0x31, 0x31) AM_DEVREAD("crtc", mc6845_device, status_r) - AM_RANGE(0x32, 0x32) AM_WRITE(register_w) - AM_RANGE(0x33, 0x33) AM_READ(port33_r) - AM_RANGE(0x34, 0x34) AM_WRITE(port34_w) // video control - AM_RANGE(0x35, 0x35) AM_WRITE(port35_w) // data to vram and aram - AM_RANGE(0x36, 0x36) AM_READ(port36_r) // data from vram and aram - AM_RANGE(0x37, 0x37) AM_READ(port37_r) // read dispen flag - AM_RANGE(0x40, 0x4f) AM_READWRITE(rtc_r, rtc_w) -ADDRESS_MAP_END +void aussiebyte_state::aussiebyte_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0"); + map(0x4000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xbfff).bankrw("bank2"); + map(0xc000, 0xffff).ram().region("mram", 0x0000); +} + +void aussiebyte_state::aussiebyte_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw("sio1", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x04, 0x07).rw(m_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).noprw(); // winchester interface + map(0x10, 0x13).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)); + map(0x14, 0x14).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x15, 0x15).w(this, FUNC(aussiebyte_state::port15_w)); // boot rom disable + map(0x16, 0x16).w(this, FUNC(aussiebyte_state::port16_w)); // fdd select + map(0x17, 0x17).w(this, FUNC(aussiebyte_state::port17_w)); // DMA mux + map(0x18, 0x18).w(this, FUNC(aussiebyte_state::port18_w)); // fdc select + map(0x19, 0x19).r(this, FUNC(aussiebyte_state::port19_r)); // info port + map(0x1a, 0x1a).w(this, FUNC(aussiebyte_state::port1a_w)); // membank + map(0x1b, 0x1b).w(this, FUNC(aussiebyte_state::port1b_w)); // winchester control + map(0x1c, 0x1f).w(this, FUNC(aussiebyte_state::port1c_w)); // gpebh select + map(0x20, 0x23).rw(m_pio2, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x24, 0x27).rw("sio2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x28, 0x28).r(this, FUNC(aussiebyte_state::port28_r)).w(m_votrax, FUNC(votrax_sc01_device::write)); + map(0x2c, 0x2c).w(m_votrax, FUNC(votrax_sc01_device::inflection_w)); + map(0x30, 0x30).w(this, FUNC(aussiebyte_state::address_w)); + map(0x31, 0x31).r(m_crtc, FUNC(mc6845_device::status_r)); + map(0x32, 0x32).w(this, FUNC(aussiebyte_state::register_w)); + map(0x33, 0x33).r(this, FUNC(aussiebyte_state::port33_r)); + map(0x34, 0x34).w(this, FUNC(aussiebyte_state::port34_w)); // video control + map(0x35, 0x35).w(this, FUNC(aussiebyte_state::port35_w)); // data to vram and aram + map(0x36, 0x36).r(this, FUNC(aussiebyte_state::port36_r)); // data from vram and aram + map(0x37, 0x37).r(this, FUNC(aussiebyte_state::port37_r)); // read dispen flag + map(0x40, 0x4f).rw(this, FUNC(aussiebyte_state::rtc_r), FUNC(aussiebyte_state::rtc_w)); +} /*********************************************************** diff --git a/src/mame/drivers/avalnche.cpp b/src/mame/drivers/avalnche.cpp index 71a8a21bb64..ad9983dab7c 100644 --- a/src/mame/drivers/avalnche.cpp +++ b/src/mame/drivers/avalnche.cpp @@ -112,31 +112,33 @@ WRITE_LINE_MEMBER(avalnche_state::start_lamp_w) output().set_led_value(2, state); } -ADDRESS_MAP_START(avalnche_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0") - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1") - AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE") - AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x0ffc) AM_READNOP - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x0ff8) AM_DEVWRITE("latch", f9334_device, write_d0) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x0fff) AM_WRITE(avalnche_noise_amplitude_w) - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(avalnche_state::catch_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0") - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1") - AM_RANGE(0x2002, 0x2002) AM_MIRROR(0x0ffc) AM_READ_PORT("PADDLE") - AM_RANGE(0x2003, 0x2003) AM_MIRROR(0x0ffc) AM_READNOP - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x0ff8) AM_DEVWRITE("latch", f9334_device, write_d0) - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_WRITE(catch_coin_counter_w) - AM_RANGE(0x7000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void avalnche_state::main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).ram().share("videoram"); + map(0x2000, 0x2000).mirror(0x0ffc).portr("IN0"); + map(0x2001, 0x2001).mirror(0x0ffc).portr("IN1"); + map(0x2002, 0x2002).mirror(0x0ffc).portr("PADDLE"); + map(0x2003, 0x2003).mirror(0x0ffc).nopr(); + map(0x3000, 0x3000).mirror(0x0fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x4000, 0x4007).mirror(0x0ff8).w("latch", FUNC(f9334_device::write_d0)); + map(0x5000, 0x5000).mirror(0x0fff).w(this, FUNC(avalnche_state::avalnche_noise_amplitude_w)); + map(0x6000, 0x7fff).rom(); +} + +void avalnche_state::catch_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).ram().share("videoram"); + map(0x2000, 0x2000).mirror(0x0ffc).portr("IN0"); + map(0x2001, 0x2001).mirror(0x0ffc).portr("IN1"); + map(0x2002, 0x2002).mirror(0x0ffc).portr("PADDLE"); + map(0x2003, 0x2003).mirror(0x0ffc).nopr(); + map(0x3000, 0x3000).mirror(0x0fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x4000, 0x4007).mirror(0x0ff8).w("latch", FUNC(f9334_device::write_d0)); + map(0x6000, 0x6000).mirror(0x0fff).w(this, FUNC(avalnche_state::catch_coin_counter_w)); + map(0x7000, 0x7fff).rom(); +} /************************************* diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp index 5dfec009077..f786cba3263 100644 --- a/src/mame/drivers/avigo.cpp +++ b/src/mame/drivers/avigo.cpp @@ -165,23 +165,25 @@ void avigo_state::machine_start() save_item(NAME(m_warm_start)); } -ADDRESS_MAP_START(avigo_state::avigo_banked_map) - AM_RANGE(0x0000000, 0x00fffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write) - AM_RANGE(0x0400000, 0x041ffff) AM_MIRROR(0x03e0000) AM_RAM AM_SHARE("nvram") +void avigo_state::avigo_banked_map(address_map &map) +{ + map(0x0000000, 0x00fffff).mirror(0x0300000).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0400000, 0x041ffff).mirror(0x03e0000).ram().share("nvram"); - AM_RANGE(0x0c00000, 0x0cfffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash1", intelfsh8_device, read, write) - AM_RANGE(0x1400000, 0x14fffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash2", intelfsh8_device, read, write) - AM_RANGE(0x1c00000, 0x1cfffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write) + map(0x0c00000, 0x0cfffff).mirror(0x0300000).rw(m_flash1, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x1400000, 0x14fffff).mirror(0x0300000).rw("flash2", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x1c00000, 0x1cfffff).mirror(0x0300000).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); - AM_RANGE(0x1800000, 0x1803fff) AM_MIRROR(0x03fc000) AM_READWRITE(vid_memory_r, vid_memory_w) -ADDRESS_MAP_END + map(0x1800000, 0x1803fff).mirror(0x03fc000).rw(this, FUNC(avigo_state::vid_memory_r), FUNC(avigo_state::vid_memory_w)); +} -ADDRESS_MAP_START(avigo_state::avigo_mem) - AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write) - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank0", address_map_bank_device, read8, write8) - AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8) - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank2") -ADDRESS_MAP_END +void avigo_state::avigo_mem(address_map &map) +{ + map(0x0000, 0x3fff).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x4000, 0x7fff).rw(m_bankdev1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0xbfff).rw(m_bankdev2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xffff).bankrw("bank2"); +} READ8_MEMBER(avigo_state::key_data_read_r) @@ -496,21 +498,22 @@ READ8_MEMBER(avigo_state::port_04_r) -ADDRESS_MAP_START(avigo_state::avigo_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x001, 0x001) AM_READWRITE( key_data_read_r, set_key_line_w ) - AM_RANGE(0x002, 0x002) AM_WRITE( port2_w ) - AM_RANGE(0x003, 0x003) AM_READWRITE( irq_r, irq_w ) - AM_RANGE(0x004, 0x004) AM_READ( port_04_r ) - AM_RANGE(0x005, 0x006) AM_READWRITE( bank1_r, bank1_w ) - AM_RANGE(0x007, 0x008) AM_READWRITE( bank2_r, bank2_w ) - AM_RANGE(0x009, 0x009) AM_READWRITE( ad_control_status_r, ad_control_status_w ) - AM_RANGE(0x010, 0x01f) AM_DEVREADWRITE("rtc", tc8521_device, read, write) - AM_RANGE(0x028, 0x028) AM_WRITE( speaker_w ) - AM_RANGE(0x02d, 0x02d) AM_READ( ad_data_r ) - AM_RANGE(0x030, 0x037) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w ) -ADDRESS_MAP_END +void avigo_state::avigo_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x001, 0x001).rw(this, FUNC(avigo_state::key_data_read_r), FUNC(avigo_state::set_key_line_w)); + map(0x002, 0x002).w(this, FUNC(avigo_state::port2_w)); + map(0x003, 0x003).rw(this, FUNC(avigo_state::irq_r), FUNC(avigo_state::irq_w)); + map(0x004, 0x004).r(this, FUNC(avigo_state::port_04_r)); + map(0x005, 0x006).rw(this, FUNC(avigo_state::bank1_r), FUNC(avigo_state::bank1_w)); + map(0x007, 0x008).rw(this, FUNC(avigo_state::bank2_r), FUNC(avigo_state::bank2_w)); + map(0x009, 0x009).rw(this, FUNC(avigo_state::ad_control_status_r), FUNC(avigo_state::ad_control_status_w)); + map(0x010, 0x01f).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write)); + map(0x028, 0x028).w(this, FUNC(avigo_state::speaker_w)); + map(0x02d, 0x02d).r(this, FUNC(avigo_state::ad_data_r)); + map(0x030, 0x037).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); +} INPUT_CHANGED_MEMBER( avigo_state::pen_irq ) diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp index 33fa457beac..7567549f5ae 100644 --- a/src/mame/drivers/avt.cpp +++ b/src/mame/drivers/avt.cpp @@ -646,24 +646,26 @@ READ8_MEMBER( avt_state::avt_6845_data_r ) *********************************************/ /* avtnfl, avtbingo */ -ADDRESS_MAP_START(avt_state::avt_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x9fff) AM_RAM // AM_SHARE("nvram") - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(avt_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(avt_colorram_w) AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(avt_state::avt_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pio0", z80pio_device, read_alt, write_alt) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc0", z80ctc_device, read, write) - AM_RANGE(0x21, 0x21) AM_DEVWRITE("aysnd", ay8910_device, data_w) /* AY8910 data */ - AM_RANGE(0x23, 0x23) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY8910 control */ - AM_RANGE(0x28, 0x28) AM_WRITE(avt_6845_address_w) - AM_RANGE(0x29, 0x29) AM_READWRITE(avt_6845_data_r,avt_6845_data_w) -ADDRESS_MAP_END +void avt_state::avt_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0x9fff).ram(); // AM_SHARE("nvram") + map(0xa000, 0xa7ff).ram().w(this, FUNC(avt_state::avt_videoram_w)).share("videoram"); + map(0xc000, 0xc7ff).ram().w(this, FUNC(avt_state::avt_colorram_w)).share("colorram"); +} + +void avt_state::avt_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_pio0, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x08, 0x0b).rw(m_pio1, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0c, 0x0f).rw("ctc0", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x21, 0x21).w("aysnd", FUNC(ay8910_device::data_w)); /* AY8910 data */ + map(0x23, 0x23).w("aysnd", FUNC(ay8910_device::address_w)); /* AY8910 control */ + map(0x28, 0x28).w(this, FUNC(avt_state::avt_6845_address_w)); + map(0x29, 0x29).rw(this, FUNC(avt_state::avt_6845_data_r), FUNC(avt_state::avt_6845_data_w)); +} /* I/O byte R/W (from avtbingo) diff --git a/src/mame/drivers/ax20.cpp b/src/mame/drivers/ax20.cpp index 44036174bd2..b79cf78819d 100644 --- a/src/mame/drivers/ax20.cpp +++ b/src/mame/drivers/ax20.cpp @@ -80,21 +80,23 @@ uint32_t ax20_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, } -ADDRESS_MAP_START(ax20_state::ax20_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x1ffff) AM_RAM - AM_RANGE(0x20000,0x3ffff) AM_RAM //optional RAM - AM_RANGE(0xf0400,0xf0fff) AM_RAM AM_SHARE("p_vram") - AM_RANGE(0xff800,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ax20_state::ax20_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xffc0, 0xffc0) AM_WRITE(tc_w) - AM_RANGE(0xffd0, 0xffd0) AM_WRITE(ctl_w) - AM_RANGE(0xffe0, 0xffe0) AM_READ(unk_r) - AM_RANGE(0xff80, 0xff81) AM_DEVICE("fdc", i8272a_device, map) -ADDRESS_MAP_END +void ax20_state::ax20_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).ram(); + map(0x20000, 0x3ffff).ram(); //optional RAM + map(0xf0400, 0xf0fff).ram().share("p_vram"); + map(0xff800, 0xfffff).rom().region("ipl", 0); +} + +void ax20_state::ax20_io(address_map &map) +{ + map.unmap_value_high(); + map(0xffc0, 0xffc0).w(this, FUNC(ax20_state::tc_w)); + map(0xffd0, 0xffd0).w(this, FUNC(ax20_state::ctl_w)); + map(0xffe0, 0xffe0).r(this, FUNC(ax20_state::unk_r)); + map(0xff80, 0xff81).m(m_fdc, FUNC(i8272a_device::map)); +} /* Input ports */ static INPUT_PORTS_START( ax20 ) diff --git a/src/mame/drivers/aztarac.cpp b/src/mame/drivers/aztarac.cpp index 7e2c0a6ef7d..9bb54bff245 100644 --- a/src/mame/drivers/aztarac.cpp +++ b/src/mame/drivers/aztarac.cpp @@ -78,18 +78,19 @@ READ16_MEMBER(aztarac_state::joystick_r) * *************************************/ -ADDRESS_MAP_START(aztarac_state::main_map) - AM_RANGE(0x000000, 0x00bfff) AM_ROM - AM_RANGE(0x022000, 0x0220ff) AM_READ(nvram_r) AM_WRITEONLY AM_SHARE("nvram") - AM_RANGE(0x027000, 0x027001) AM_READ(joystick_r) - AM_RANGE(0x027004, 0x027005) AM_READ_PORT("INPUTS") - AM_RANGE(0x027008, 0x027009) AM_READWRITE(sound_r, sound_w) - AM_RANGE(0x02700c, 0x02700d) AM_READ_PORT("DIAL") - AM_RANGE(0x02700e, 0x02700f) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xff8000, 0xffafff) AM_RAM AM_SHARE("vectorram") - AM_RANGE(0xffb000, 0xffb001) AM_WRITE(ubr_w) - AM_RANGE(0xffe000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void aztarac_state::main_map(address_map &map) +{ + map(0x000000, 0x00bfff).rom(); + map(0x022000, 0x0220ff).r(this, FUNC(aztarac_state::nvram_r)).writeonly().share("nvram"); + map(0x027000, 0x027001).r(this, FUNC(aztarac_state::joystick_r)); + map(0x027004, 0x027005).portr("INPUTS"); + map(0x027008, 0x027009).rw(this, FUNC(aztarac_state::sound_r), FUNC(aztarac_state::sound_w)); + map(0x02700c, 0x02700d).portr("DIAL"); + map(0x02700e, 0x02700f).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0xff8000, 0xffafff).ram().share("vectorram"); + map(0xffb000, 0xffb001).w(this, FUNC(aztarac_state::ubr_w)); + map(0xffe000, 0xffffff).ram(); +} @@ -99,16 +100,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(aztarac_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_READ(snd_command_r) - AM_RANGE(0x8c00, 0x8c01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_address_w) - AM_RANGE(0x8c02, 0x8c03) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_address_w) - AM_RANGE(0x8c04, 0x8c05) AM_DEVREADWRITE("ay3", ay8910_device, data_r, data_address_w) - AM_RANGE(0x8c06, 0x8c07) AM_DEVREADWRITE("ay4", ay8910_device, data_r, data_address_w) - AM_RANGE(0x9000, 0x9000) AM_READWRITE(snd_status_r, snd_status_w) -ADDRESS_MAP_END +void aztarac_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).r(this, FUNC(aztarac_state::snd_command_r)); + map(0x8c00, 0x8c01).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w)); + map(0x8c02, 0x8c03).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w)); + map(0x8c04, 0x8c05).rw("ay3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w)); + map(0x8c06, 0x8c07).rw("ay4", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w)); + map(0x9000, 0x9000).rw(this, FUNC(aztarac_state::snd_status_r), FUNC(aztarac_state::snd_status_w)); +} diff --git a/src/mame/drivers/b16.cpp b/src/mame/drivers/b16.cpp index dbb561a0c03..bb63a3405ca 100644 --- a/src/mame/drivers/b16.cpp +++ b/src/mame/drivers/b16.cpp @@ -122,14 +122,15 @@ WRITE8_MEMBER( b16_state::b16_pcg_w ) m_gfxdecode->gfx(0)->mark_dirty(offset >> 4); } -ADDRESS_MAP_START(b16_state::b16_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00000, 0x9ffff ) AM_RAM // probably not all of it. - AM_RANGE( 0xa0000, 0xaffff ) AM_RAM // bitmap? - AM_RANGE( 0xb0000, 0xb7fff ) AM_RAM AM_SHARE("vram") // tvram - AM_RANGE( 0xb8000, 0xbbfff ) AM_WRITE8(b16_pcg_w,0x00ff) // pcg - AM_RANGE( 0xfc000, 0xfffff ) AM_ROM AM_REGION("ipl",0) -ADDRESS_MAP_END +void b16_state::b16_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x9ffff).ram(); // probably not all of it. + map(0xa0000, 0xaffff).ram(); // bitmap? + map(0xb0000, 0xb7fff).ram().share("vram"); // tvram + map(0xb8000, 0xbbfff).w(this, FUNC(b16_state::b16_pcg_w)).umask16(0x00ff); // pcg + map(0xfc000, 0xfffff).rom().region("ipl", 0); +} READ16_MEMBER( b16_state::vblank_r ) { @@ -215,14 +216,15 @@ WRITE8_MEMBER( b16_state::unk_dev_w ) } -ADDRESS_MAP_START(b16_state::b16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x0f) AM_READWRITE8(unk_dev_r,unk_dev_w,0x00ff) // DMA device? - AM_RANGE(0x20, 0x21) AM_WRITE8(b16_6845_address_w,0x00ff) - AM_RANGE(0x22, 0x23) AM_WRITE8(b16_6845_data_w,0x00ff) +void b16_state::b16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x0f).rw(this, FUNC(b16_state::unk_dev_r), FUNC(b16_state::unk_dev_w)).umask16(0x00ff); // DMA device? + map(0x20, 0x20).w(this, FUNC(b16_state::b16_6845_address_w)); + map(0x22, 0x22).w(this, FUNC(b16_state::b16_6845_data_w)); //0x79 bit 0 DSW? - AM_RANGE(0x80, 0x81) AM_READ(vblank_r) // TODO -ADDRESS_MAP_END + map(0x80, 0x81).r(this, FUNC(b16_state::vblank_r)); // TODO +} /* Input ports */ diff --git a/src/mame/drivers/b2m.cpp b/src/mame/drivers/b2m.cpp index 31dfd5e7aa0..bd2c10d023e 100644 --- a/src/mame/drivers/b2m.cpp +++ b/src/mame/drivers/b2m.cpp @@ -24,38 +24,41 @@ #include "speaker.h" /* Address maps */ -ADDRESS_MAP_START(b2m_state::b2m_mem) - AM_RANGE (0x0000, 0x27ff) AM_RAMBANK("bank1") - AM_RANGE (0x2800, 0x2fff) AM_RAMBANK("bank2") - AM_RANGE (0x3000, 0x6fff) AM_RAMBANK("bank3") - AM_RANGE (0x7000, 0xdfff) AM_RAMBANK("bank4") - AM_RANGE (0xe000, 0xffff) AM_RAMBANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(b2m_state::b2m_io) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_READWRITE(b2m_localmachine_r,b2m_localmachine_w) - AM_RANGE(0x10, 0x13) AM_READWRITE(b2m_palette_r,b2m_palette_w) - AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("pic8259", pic8259_device, read, write ) - AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("fd1793", fd1793_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(b2m_state::b2m_rom_io) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_READWRITE(b2m_localmachine_r,b2m_localmachine_w) - AM_RANGE(0x10, 0x13) AM_READWRITE(b2m_palette_r,b2m_palette_w) - AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("pic8259", pic8259_device, read, write ) - AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void b2m_state::b2m_mem(address_map &map) +{ + map(0x0000, 0x27ff).bankrw("bank1"); + map(0x2800, 0x2fff).bankrw("bank2"); + map(0x3000, 0x6fff).bankrw("bank3"); + map(0x7000, 0xdfff).bankrw("bank4"); + map(0xe000, 0xffff).bankrw("bank5"); +} + +void b2m_state::b2m_io(address_map &map) +{ + map.global_mask(0x1f); + map(0x00, 0x03).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x04, 0x07).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0c, 0x0c).rw(this, FUNC(b2m_state::b2m_localmachine_r), FUNC(b2m_state::b2m_localmachine_w)); + map(0x10, 0x13).rw(this, FUNC(b2m_state::b2m_palette_r), FUNC(b2m_state::b2m_palette_w)); + map(0x14, 0x15).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x18, 0x18).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x19, 0x19).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x1c, 0x1f).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); +} + +void b2m_state::b2m_rom_io(address_map &map) +{ + map.global_mask(0x1f); + map(0x00, 0x03).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x04, 0x07).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0c, 0x0c).rw(this, FUNC(b2m_state::b2m_localmachine_r), FUNC(b2m_state::b2m_localmachine_w)); + map(0x10, 0x13).rw(this, FUNC(b2m_state::b2m_palette_r), FUNC(b2m_state::b2m_palette_w)); + map(0x14, 0x15).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x18, 0x18).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x19, 0x19).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp index 89625c9e85b..5ce472b1047 100644 --- a/src/mame/drivers/babbage.cpp +++ b/src/mame/drivers/babbage.cpp @@ -78,18 +78,20 @@ private: ***************************************************************************/ -ADDRESS_MAP_START(babbage_state::babbage_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x1000, 0x17ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(babbage_state::babbage_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("z80pio_2", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END +void babbage_state::babbage_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).rom(); + map(0x1000, 0x17ff).ram(); +} + +void babbage_state::babbage_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x13).rw(m_pio_1, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x20, 0x23).rw(m_pio_2, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp index 2882c465285..66a20a70b09 100644 --- a/src/mame/drivers/backfire.cpp +++ b/src/mame/drivers/backfire.cpp @@ -292,32 +292,33 @@ WRITE32_MEMBER(backfire_state::backfire_spriteram2_w) -ADDRESS_MAP_START(backfire_state::backfire_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x120000, 0x120fff) AM_READWRITE(backfire_pf1_rowscroll_r, backfire_pf1_rowscroll_w) - AM_RANGE(0x124000, 0x124fff) AM_READWRITE(backfire_pf2_rowscroll_r, backfire_pf2_rowscroll_w) - AM_RANGE(0x130000, 0x13001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x140000, 0x141fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x144000, 0x145fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x150000, 0x150fff) AM_READWRITE(backfire_pf3_rowscroll_r, backfire_pf3_rowscroll_w) - AM_RANGE(0x154000, 0x154fff) AM_READWRITE(backfire_pf4_rowscroll_r, backfire_pf4_rowscroll_w) - AM_RANGE(0x160000, 0x161fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x170000, 0x177fff) AM_RAM AM_SHARE("mainram")// main ram +void backfire_state::backfire_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x110000, 0x111fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x114000, 0x115fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x120000, 0x120fff).rw(this, FUNC(backfire_state::backfire_pf1_rowscroll_r), FUNC(backfire_state::backfire_pf1_rowscroll_w)); + map(0x124000, 0x124fff).rw(this, FUNC(backfire_state::backfire_pf2_rowscroll_r), FUNC(backfire_state::backfire_pf2_rowscroll_w)); + map(0x130000, 0x13001f).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x140000, 0x141fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x144000, 0x145fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x150000, 0x150fff).rw(this, FUNC(backfire_state::backfire_pf3_rowscroll_r), FUNC(backfire_state::backfire_pf3_rowscroll_w)); + map(0x154000, 0x154fff).rw(this, FUNC(backfire_state::backfire_pf4_rowscroll_r), FUNC(backfire_state::backfire_pf4_rowscroll_w)); + map(0x160000, 0x161fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x170000, 0x177fff).ram().share("mainram");// main ram // AM_RANGE(0x180010, 0x180013) AM_RAM AM_SHARE("backfire_180010") // always 180010 ? // AM_RANGE(0x188010, 0x188013) AM_RAM AM_SHARE("backfire_188010") // always 188010 ? - AM_RANGE(0x184000, 0x185fff) AM_READWRITE(backfire_spriteram1_r, backfire_spriteram1_w) - AM_RANGE(0x18c000, 0x18dfff) AM_READWRITE(backfire_spriteram2_r, backfire_spriteram2_w) - AM_RANGE(0x190000, 0x190003) AM_READ(backfire_eeprom_r) - AM_RANGE(0x194000, 0x194003) AM_READ(backfire_control2_r) - AM_RANGE(0x1a4000, 0x1a4003) AM_WRITE(backfire_eeprom_w) + map(0x184000, 0x185fff).rw(this, FUNC(backfire_state::backfire_spriteram1_r), FUNC(backfire_state::backfire_spriteram1_w)); + map(0x18c000, 0x18dfff).rw(this, FUNC(backfire_state::backfire_spriteram2_r), FUNC(backfire_state::backfire_spriteram2_w)); + map(0x190000, 0x190003).r(this, FUNC(backfire_state::backfire_eeprom_r)); + map(0x194000, 0x194003).r(this, FUNC(backfire_state::backfire_control2_r)); + map(0x1a4000, 0x1a4003).w(this, FUNC(backfire_state::backfire_eeprom_w)); - AM_RANGE(0x1a8000, 0x1a8003) AM_RAM AM_SHARE("left_priority") - AM_RANGE(0x1ac000, 0x1ac003) AM_RAM AM_SHARE("right_priority") + map(0x1a8000, 0x1a8003).ram().share("left_priority"); + map(0x1ac000, 0x1ac003).ram().share("right_priority"); // AM_RANGE(0x1b0000, 0x1b0003) AM_WRITENOP // always 1b0000 /* when set to pentometer in test mode */ @@ -325,8 +326,8 @@ ADDRESS_MAP_START(backfire_state::backfire_map) // AM_RANGE(0x1e8000, 0x1e8003) AM_READ(backfire_wheel1_r) // AM_RANGE(0x1e8004, 0x1e8007) AM_READ(backfire_wheel2_r) - AM_RANGE(0x1c0000, 0x1c0007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x000000ff) -ADDRESS_MAP_END + map(0x1c0000, 0x1c0007).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x000000ff); +} static INPUT_PORTS_START( backfire ) diff --git a/src/mame/drivers/badlands.cpp b/src/mame/drivers/badlands.cpp index b468905e2a5..4afb1d13c9d 100644 --- a/src/mame/drivers/badlands.cpp +++ b/src/mame/drivers/badlands.cpp @@ -368,26 +368,27 @@ WRITE8_MEMBER(badlands_state::audio_io_w) * *************************************/ -ADDRESS_MAP_START(badlands_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfc1fff) AM_READ(sound_busy_r) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w) - AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xfe0000, 0xfe1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfe4000, 0xfe5fff) AM_READ_PORT("FE4000") - AM_RANGE(0xfe6000, 0xfe6001) AM_READ_PORT("FE6000") - AM_RANGE(0xfe6002, 0xfe6003) AM_READ_PORT("FE6002") - AM_RANGE(0xfe6004, 0xfe6005) AM_READ(pedal_0_r) - AM_RANGE(0xfe6006, 0xfe6007) AM_READ(pedal_1_r) - AM_RANGE(0xfe8000, 0xfe9fff) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0xff00) - AM_RANGE(0xfea000, 0xfebfff) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0xff00) - AM_RANGE(0xfec000, 0xfedfff) AM_WRITE(badlands_pf_bank_w) - AM_RANGE(0xfee000, 0xfeffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xffc000, 0xffc3ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette") - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xfff000, 0xfff1ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xfff200, 0xffffff) AM_RAM -ADDRESS_MAP_END +void badlands_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfc0000, 0xfc1fff).r(this, FUNC(badlands_state::sound_busy_r)).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w)); + map(0xfd0000, 0xfd1fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xfe0000, 0xfe1fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xfe2000, 0xfe3fff).w(this, FUNC(badlands_state::video_int_ack_w)); + map(0xfe4000, 0xfe5fff).portr("FE4000"); + map(0xfe6000, 0xfe6001).portr("FE6000"); + map(0xfe6002, 0xfe6003).portr("FE6002"); + map(0xfe6004, 0xfe6005).r(this, FUNC(badlands_state::pedal_0_r)); + map(0xfe6006, 0xfe6007).r(this, FUNC(badlands_state::pedal_1_r)); + map(0xfe8000, 0xfe9fff).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)).umask16(0xff00); + map(0xfea000, 0xfebfff).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)).umask16(0xff00); + map(0xfec000, 0xfedfff).w(this, FUNC(badlands_state::badlands_pf_bank_w)); + map(0xfee000, 0xfeffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xffc000, 0xffc3ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette"); + map(0xffe000, 0xffefff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0xfff000, 0xfff1ff).ram().share("mob"); + map(0xfff200, 0xffffff).ram(); +} @@ -397,13 +398,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(badlands_state::audio_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x2800, 0x2bff) AM_READWRITE(audio_io_r, audio_io_w) - AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("soundbank") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void badlands_state::audio_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2800, 0x2bff).rw(this, FUNC(badlands_state::audio_io_r), FUNC(badlands_state::audio_io_w)); + map(0x3000, 0x3fff).bankr("soundbank"); + map(0x4000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/badlandsbl.cpp b/src/mame/drivers/badlandsbl.cpp index 82507456092..29b99ec8f8f 100644 --- a/src/mame/drivers/badlandsbl.cpp +++ b/src/mame/drivers/badlandsbl.cpp @@ -97,33 +97,34 @@ READ8_MEMBER(badlandsbl_state::sound_response_r) return m_sound_response; } -ADDRESS_MAP_START(badlandsbl_state::bootleg_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void badlandsbl_state::bootleg_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); - AM_RANGE(0x400000, 0x400005) AM_READWRITE8(bootleg_shared_r,bootleg_shared_w,0xffff) - AM_RANGE(0x400006, 0x400007) AM_READ8(sound_response_r,0xff00) - AM_RANGE(0x400008, 0x40000f) AM_RAM // breaks tilemap gfxs otherwise? - AM_RANGE(0x400010, 0x4000ff) AM_RAM AM_SHARE("spriteram") + map(0x400000, 0x400005).rw(this, FUNC(badlandsbl_state::bootleg_shared_r), FUNC(badlandsbl_state::bootleg_shared_w)); + map(0x400006, 0x400006).r(this, FUNC(badlandsbl_state::sound_response_r)); + map(0x400008, 0x40000f).ram(); // breaks tilemap gfxs otherwise? + map(0x400010, 0x4000ff).ram().share("spriteram"); // sound comms? - AM_RANGE(0xfc0000, 0xfc0001) AM_READ(badlandsb_unk_r) AM_WRITENOP + map(0xfc0000, 0xfc0001).r(this, FUNC(badlandsbl_state::badlandsb_unk_r)).nopw(); - AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) + map(0xfd0000, 0xfd1fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); //AM_RANGE(0xfe0000, 0xfe1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w) + map(0xfe2000, 0xfe3fff).w(this, FUNC(badlandsbl_state::video_int_ack_w)); - AM_RANGE(0xfe0000, 0xfe0001) AM_WRITENOP - AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("FE4000") - AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("P1") - AM_RANGE(0xfe4006, 0xfe4007) AM_READ_PORT("P2") - AM_RANGE(0xfe4008, 0xfe4009) AM_WRITE(badlands_pf_bank_w) - AM_RANGE(0xfe400c, 0xfe400d) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) + map(0xfe0000, 0xfe0001).nopw(); + map(0xfe4000, 0xfe4001).portr("FE4000"); + map(0xfe4004, 0xfe4005).portr("P1"); + map(0xfe4006, 0xfe4007).portr("P2"); + map(0xfe4008, 0xfe4009).w(this, FUNC(badlandsbl_state::badlands_pf_bank_w)); + map(0xfe400c, 0xfe400d).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); - AM_RANGE(0xffc000, 0xffc3ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette") - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") + map(0xffc000, 0xffc3ff).rw("palette", FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette"); + map(0xffe000, 0xffefff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); - AM_RANGE(0xfff000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0xfff000, 0xffffff).ram(); +} WRITE8_MEMBER(badlandsbl_state::bootleg_main_irq_w) { @@ -131,15 +132,16 @@ WRITE8_MEMBER(badlandsbl_state::bootleg_main_irq_w) m_sound_response = data; } -ADDRESS_MAP_START(badlandsbl_state::bootleg_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiorom", 0) - AM_RANGE(0x2000, 0x2005) AM_RAM AM_SHARE("b_sharedram") - AM_RANGE(0x2006, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xcfff) AM_ROM AM_REGION("audiorom", 0x4000) - AM_RANGE(0xd400, 0xd400) AM_WRITE(bootleg_main_irq_w) - AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_NOP // either RAM mirror or left-over -ADDRESS_MAP_END +void badlandsbl_state::bootleg_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("audiorom", 0); + map(0x2000, 0x2005).ram().share("b_sharedram"); + map(0x2006, 0x3fff).ram(); + map(0x4000, 0xcfff).rom().region("audiorom", 0x4000); + map(0xd400, 0xd400).w(this, FUNC(badlandsbl_state::bootleg_main_irq_w)); + map(0xd800, 0xd801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe000, 0xffff).noprw(); // either RAM mirror or left-over +} static INPUT_PORTS_START( badlandsb ) diff --git a/src/mame/drivers/bagman.cpp b/src/mame/drivers/bagman.cpp index 5e5d499e0f3..a1f25d29dbd 100644 --- a/src/mame/drivers/bagman.cpp +++ b/src/mame/drivers/bagman.cpp @@ -128,53 +128,56 @@ WRITE_LINE_MEMBER(bagman_state::irq_mask_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(bagman_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9c00, 0x9fff) AM_WRITENOP /* written to, but unused */ - AM_RANGE(0xa000, 0xa000) AM_READ(pal16r6_r) - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xc000, 0xffff) AM_ROM /* Super Bagman only */ - AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("spriteram") /* hidden portion of color RAM */ +void bagman_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(bagman_state::videoram_w)).share("videoram"); + map(0x9800, 0x9bff).ram().w(this, FUNC(bagman_state::colorram_w)).share("colorram"); + map(0x9c00, 0x9fff).nopw(); /* written to, but unused */ + map(0xa000, 0xa000).r(this, FUNC(bagman_state::pal16r6_r)); + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xc000, 0xffff).rom(); /* Super Bagman only */ + map(0x9800, 0x981f).writeonly().share("spriteram"); /* hidden portion of color RAM */ /* here only to initialize the pointer, */ /* writes are handled by colorram_w */ - AM_RANGE(0xa800, 0xa807) AM_WRITE(ls259_w) /* TMS5110 driving state machine */ - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb800, 0xb800) AM_READNOP /* looks like watchdog from schematics */ + map(0xa800, 0xa807).w(this, FUNC(bagman_state::ls259_w)); /* TMS5110 driving state machine */ + map(0xb000, 0xb000).portr("DSW"); + map(0xb800, 0xb800).nopr(); /* looks like watchdog from schematics */ #if 0 - AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* ???? */ - AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* ???? */ + map(0xb000, 0xb000).nopw(); /* ???? */ + map(0xb800, 0xb800).nopw(); /* ???? */ #endif -ADDRESS_MAP_END +} -ADDRESS_MAP_START(bagman_state::pickin_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x7000, 0x77ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("spriteram") /* hidden portion of color RAM */ +void bagman_state::pickin_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x7000, 0x77ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(bagman_state::videoram_w)).share("videoram"); + map(0x9800, 0x9bff).ram().w(this, FUNC(bagman_state::colorram_w)).share("colorram"); + map(0x9800, 0x981f).writeonly().share("spriteram"); /* hidden portion of color RAM */ /* here only to initialize the pointer, */ /* writes are handled by colorram_w */ - AM_RANGE(0x9c00, 0x9fff) AM_WRITENOP /* written to, but unused */ - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("DSW") + map(0x9c00, 0x9fff).nopw(); /* written to, but unused */ + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xa800, 0xa800).portr("DSW"); /* guess */ - AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bagman_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("aysnd", ay8910_device, data_r) + map(0xb000, 0xb000).w("ay2", FUNC(ay8910_device::address_w)); + map(0xb800, 0xb800).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} + +void bagman_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x09).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x0c, 0x0c).r("aysnd", FUNC(ay8910_device::data_r)); //AM_RANGE(0x56, 0x56) AM_WRITENOP -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/balsente.cpp b/src/mame/drivers/balsente.cpp index 8514c197632..bbd06810313 100644 --- a/src/mame/drivers/balsente.cpp +++ b/src/mame/drivers/balsente.cpp @@ -246,27 +246,31 @@ DIP locations verified for: * *************************************/ -ADDRESS_MAP_START(balsente_state::cpu1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(balsente_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(balsente_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x9000, 0x9007) AM_WRITE(balsente_adc_select_w) - AM_RANGE(0x9400, 0x9401) AM_READ(balsente_adc_data_r) - ;map(0x9800, 0x981f).mirror(0x0060).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d7(space, offset >> 2, data, mem_mask); }); - AM_RANGE(0x9880, 0x989f) AM_WRITE(balsente_random_reset_w) - AM_RANGE(0x98a0, 0x98bf) AM_WRITE(balsente_rombank_select_w) - AM_RANGE(0x98c0, 0x98df) AM_WRITE(balsente_palette_select_w) - AM_RANGE(0x98e0, 0x98ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9900, 0x9900) AM_READ_PORT("SWH") - AM_RANGE(0x9901, 0x9901) AM_READ_PORT("SWG") - AM_RANGE(0x9902, 0x9902) AM_READ_PORT("IN0") - AM_RANGE(0x9903, 0x9903) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x9a00, 0x9a03) AM_READ(balsente_random_num_r) - AM_RANGE(0x9a04, 0x9a05) AM_READWRITE(balsente_m6850_r, balsente_m6850_w) - AM_RANGE(0x9b00, 0x9cff) AM_RAM AM_SHARE("nvram") /* system+cart NOVRAM */ - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2") -ADDRESS_MAP_END +void balsente_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("spriteram"); + map(0x0800, 0x7fff).ram().w(this, FUNC(balsente_state::balsente_videoram_w)).share("videoram"); + map(0x8000, 0x8fff).ram().w(this, FUNC(balsente_state::balsente_paletteram_w)).share("paletteram"); + map(0x9000, 0x9007).w(this, FUNC(balsente_state::balsente_adc_select_w)); + map(0x9400, 0x9401).r(this, FUNC(balsente_state::balsente_adc_data_r)); + map(0x9800, 0x981f).mirror(0x0060).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d7(space, offset >> 2, data, mem_mask); + }); + map(0x9880, 0x989f).w(this, FUNC(balsente_state::balsente_random_reset_w)); + map(0x98a0, 0x98bf).w(this, FUNC(balsente_state::balsente_rombank_select_w)); + map(0x98c0, 0x98df).w(this, FUNC(balsente_state::balsente_palette_select_w)); + map(0x98e0, 0x98ff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x9900, 0x9900).portr("SWH"); + map(0x9901, 0x9901).portr("SWG"); + map(0x9902, 0x9902).portr("IN0"); + map(0x9903, 0x9903).portr("IN1").nopw(); + map(0x9a00, 0x9a03).r(this, FUNC(balsente_state::balsente_random_num_r)); + map(0x9a04, 0x9a05).rw(this, FUNC(balsente_state::balsente_m6850_r), FUNC(balsente_state::balsente_m6850_w)); + map(0x9b00, 0x9cff).ram().share("nvram"); /* system+cart NOVRAM */ + map(0xa000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).bankr("bank2"); +} @@ -276,23 +280,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(balsente_state::cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_WRITE(balsente_m6850_sound_w) - AM_RANGE(0xe000, 0xffff) AM_READ(balsente_m6850_sound_r) -ADDRESS_MAP_END +void balsente_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x5fff).ram(); + map(0x6000, 0x7fff).w(this, FUNC(balsente_state::balsente_m6850_sound_w)); + map(0xe000, 0xffff).r(this, FUNC(balsente_state::balsente_m6850_sound_r)); +} -ADDRESS_MAP_START(balsente_state::cpu2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_READWRITE(balsente_counter_8253_r, balsente_counter_8253_w) - AM_RANGE(0x08, 0x0f) AM_READ(balsente_counter_state_r) - AM_RANGE(0x08, 0x09) AM_WRITE(balsente_counter_control_w) - AM_RANGE(0x0a, 0x0b) AM_WRITE(balsente_dac_data_w) - AM_RANGE(0x0c, 0x0d) AM_WRITE(balsente_register_addr_w) - AM_RANGE(0x0e, 0x0f) AM_WRITE(balsente_chip_select_w) -ADDRESS_MAP_END +void balsente_state::cpu2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(this, FUNC(balsente_state::balsente_counter_8253_r), FUNC(balsente_state::balsente_counter_8253_w)); + map(0x08, 0x0f).r(this, FUNC(balsente_state::balsente_counter_state_r)); + map(0x08, 0x09).w(this, FUNC(balsente_state::balsente_counter_control_w)); + map(0x0a, 0x0b).w(this, FUNC(balsente_state::balsente_dac_data_w)); + map(0x0c, 0x0d).w(this, FUNC(balsente_state::balsente_register_addr_w)); + map(0x0e, 0x0f).w(this, FUNC(balsente_state::balsente_chip_select_w)); +} @@ -303,11 +309,12 @@ ADDRESS_MAP_END *************************************/ /* CPU 1 read addresses */ -ADDRESS_MAP_START(balsente_state::shrike68k_map) - AM_RANGE(0x000000, 0x003fff) AM_ROM - AM_RANGE(0x010000, 0x01001f) AM_RAM AM_SHARE("shrike_io") - AM_RANGE(0x018000, 0x018fff) AM_RAM AM_SHARE("shrike_shared") -ADDRESS_MAP_END +void balsente_state::shrike68k_map(address_map &map) +{ + map(0x000000, 0x003fff).rom(); + map(0x010000, 0x01001f).ram().share("shrike_io"); + map(0x018000, 0x018fff).ram().share("shrike_shared"); +} diff --git a/src/mame/drivers/banctec.cpp b/src/mame/drivers/banctec.cpp index f53a395c24c..333ef744676 100644 --- a/src/mame/drivers/banctec.cpp +++ b/src/mame/drivers/banctec.cpp @@ -52,19 +52,21 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(banctec_state::banctec_mem) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0xffff) AM_RAM /* Probably wrong. Must be verified on pcb! */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(banctec_state::banctec_mcu_mem) - AM_RANGE(0x0000, 0x00ff) AM_RAM /* Probably wrong. Must be verified on pcb! */ - AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x2001, 0x2001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2003, 0x2003) AM_WRITE(videoram_w) - AM_RANGE(0x8000, 0x80ff) AM_RAM AM_SHARE("videoram") /* Probably wrong. Must be verified on pcb! */ - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("mcu", 0x0000) -ADDRESS_MAP_END +void banctec_state::banctec_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0xffff).ram(); /* Probably wrong. Must be verified on pcb! */ +} + +void banctec_state::banctec_mcu_mem(address_map &map) +{ + map(0x0000, 0x00ff).ram(); /* Probably wrong. Must be verified on pcb! */ + map(0x2000, 0x2000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x2001, 0x2001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2003, 0x2003).w(this, FUNC(banctec_state::videoram_w)); + map(0x8000, 0x80ff).ram().share("videoram"); /* Probably wrong. Must be verified on pcb! */ + map(0xe000, 0xffff).rom().region("mcu", 0x0000); +} void banctec_state::machine_reset() { diff --git a/src/mame/drivers/bankp.cpp b/src/mame/drivers/bankp.cpp index e0caba864d5..713f75ecd55 100644 --- a/src/mame/drivers/bankp.cpp +++ b/src/mame/drivers/bankp.cpp @@ -124,24 +124,26 @@ * *************************************/ -ADDRESS_MAP_START(bankp_state::bankp_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bankp_state::bankp_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("sn3", sn76489_device, write) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") - AM_RANGE(0x05, 0x05) AM_WRITE(scroll_w) - AM_RANGE(0x07, 0x07) AM_WRITE(out_w) -ADDRESS_MAP_END +void bankp_state::bankp_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xf3ff).ram().w(this, FUNC(bankp_state::videoram_w)).share("videoram"); + map(0xf400, 0xf7ff).ram().w(this, FUNC(bankp_state::colorram_w)).share("colorram"); + map(0xf800, 0xfbff).ram().w(this, FUNC(bankp_state::videoram2_w)).share("videoram2"); + map(0xfc00, 0xffff).ram().w(this, FUNC(bankp_state::colorram2_w)).share("colorram2"); +} + +void bankp_state::bankp_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w("sn1", FUNC(sn76489_device::write)); + map(0x01, 0x01).portr("IN1").w("sn2", FUNC(sn76489_device::write)); + map(0x02, 0x02).portr("IN2").w("sn3", FUNC(sn76489_device::write)); + map(0x04, 0x04).portr("DSW1"); + map(0x05, 0x05).w(this, FUNC(bankp_state::scroll_w)); + map(0x07, 0x07).w(this, FUNC(bankp_state::out_w)); +} /************************************* diff --git a/src/mame/drivers/baraduke.cpp b/src/mame/drivers/baraduke.cpp index 0b47b5fd2ec..34a48623fe1 100644 --- a/src/mame/drivers/baraduke.cpp +++ b/src/mame/drivers/baraduke.cpp @@ -165,34 +165,36 @@ WRITE8_MEMBER(baraduke_state::baraduke_irq_ack_w) -ADDRESS_MAP_START(baraduke_state::baraduke_map) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(baraduke_spriteram_r,baraduke_spriteram_w) AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(baraduke_videoram_r,baraduke_videoram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ - AM_RANGE(0x4800, 0x4fff) AM_READWRITE(baraduke_textram_r,baraduke_textram_w) AM_SHARE("textram")/* video RAM (text layer) */ - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */ - AM_RANGE(0x8800, 0x8800) AM_WRITE(baraduke_irq_ack_w) /* irq acknowledge */ - AM_RANGE(0xb000, 0xb002) AM_WRITE(baraduke_scroll0_w) /* scroll (layer 0) */ - AM_RANGE(0xb004, 0xb006) AM_WRITE(baraduke_scroll1_w) /* scroll (layer 1) */ - AM_RANGE(0x6000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END +void baraduke_state::baraduke_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(this, FUNC(baraduke_state::baraduke_spriteram_r), FUNC(baraduke_state::baraduke_spriteram_w)).share("spriteram"); /* Sprite RAM */ + map(0x2000, 0x3fff).rw(this, FUNC(baraduke_state::baraduke_videoram_r), FUNC(baraduke_state::baraduke_videoram_w)).share("videoram"); /* Video RAM */ + map(0x4000, 0x43ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ + map(0x4800, 0x4fff).rw(this, FUNC(baraduke_state::baraduke_textram_r), FUNC(baraduke_state::baraduke_textram_w)).share("textram");/* video RAM (text layer) */ + map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */ + map(0x8800, 0x8800).w(this, FUNC(baraduke_state::baraduke_irq_ack_w)); /* irq acknowledge */ + map(0xb000, 0xb002).w(this, FUNC(baraduke_state::baraduke_scroll0_w)); /* scroll (layer 0) */ + map(0xb004, 0xb006).w(this, FUNC(baraduke_state::baraduke_scroll1_w)); /* scroll (layer 1) */ + map(0x6000, 0xffff).rom(); /* ROM */ +} READ8_MEMBER(baraduke_state::soundkludge_r) { return ((m_counter++) >> 4) & 0xff; } -ADDRESS_MAP_START(baraduke_state::mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r,m6801_io_w)/* internal registers */ - AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */ - AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ - AM_RANGE(0x1105, 0x1105) AM_READ(soundkludge_r) /* cures speech */ - AM_RANGE(0x8000, 0xbfff) AM_ROM /* MCU external ROM */ - AM_RANGE(0x8000, 0x8000) AM_WRITENOP /* watchdog reset? */ - AM_RANGE(0x8800, 0x8800) AM_WRITENOP /* irq acknoledge? */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM /* RAM */ - AM_RANGE(0xf000, 0xffff) AM_ROM /* MCU internal ROM */ -ADDRESS_MAP_END +void baraduke_state::mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw("mcu", FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w));/* internal registers */ + map(0x0080, 0x00ff).ram(); /* built in RAM */ + map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ + map(0x1105, 0x1105).r(this, FUNC(baraduke_state::soundkludge_r)); /* cures speech */ + map(0x8000, 0xbfff).rom(); /* MCU external ROM */ + map(0x8000, 0x8000).nopw(); /* watchdog reset? */ + map(0x8800, 0x8800).nopw(); /* irq acknoledge? */ + map(0xc000, 0xc7ff).ram(); /* RAM */ + map(0xf000, 0xffff).rom(); /* MCU internal ROM */ +} READ8_MEMBER(baraduke_state::readFF) @@ -200,12 +202,13 @@ READ8_MEMBER(baraduke_state::readFF) return 0xff; } -ADDRESS_MAP_START(baraduke_state::mcu_port_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ(inputport_r) /* input ports read */ - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(inputport_select_w) /* input port select */ - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */ - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(baraduke_lamps_w) /* lamps */ -ADDRESS_MAP_END +void baraduke_state::mcu_port_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).r(this, FUNC(baraduke_state::inputport_r)); /* input ports read */ + map(M6801_PORT1, M6801_PORT1).w(this, FUNC(baraduke_state::inputport_select_w)); /* input port select */ + map(M6801_PORT2, M6801_PORT2).r(this, FUNC(baraduke_state::readFF)); /* leds won't work otherwise */ + map(M6801_PORT2, M6801_PORT2).w(this, FUNC(baraduke_state::baraduke_lamps_w)); /* lamps */ +} diff --git a/src/mame/drivers/barni.cpp b/src/mame/drivers/barni.cpp index 4f229b82484..f5a30f25e7e 100644 --- a/src/mame/drivers/barni.cpp +++ b/src/mame/drivers/barni.cpp @@ -38,23 +38,26 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(barni_state::maincpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0xa100, 0xa7ff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(barni_state::subcpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(barni_state::audiocpu_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void barni_state::maincpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).ram(); + map(0xa100, 0xa7ff).ram(); + map(0xc000, 0xffff).rom(); +} + +void barni_state::subcpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); + map(0xe000, 0xffff).rom(); +} + +void barni_state::audiocpu_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0xc000, 0xffff).rom(); +} static INPUT_PORTS_START( barni ) INPUT_PORTS_END diff --git a/src/mame/drivers/bartop52.cpp b/src/mame/drivers/bartop52.cpp index 17086d4dc8f..85043a5faf0 100644 --- a/src/mame/drivers/bartop52.cpp +++ b/src/mame/drivers/bartop52.cpp @@ -47,14 +47,15 @@ protected: }; -ADDRESS_MAP_START(bartop52_state::a5200_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd400, 0xd5ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xe800, 0xe8ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void bartop52_state::a5200_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram(); + map(0x4000, 0xbfff).rom(); + map(0xc000, 0xc0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd400, 0xd5ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xe800, 0xe8ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xf800, 0xffff).rom(); +} #define JOYSTICK_DELTA 10 #define JOYSTICK_SENSITIVITY 200 diff --git a/src/mame/drivers/basic52.cpp b/src/mame/drivers/basic52.cpp index f1c12791938..c0bc4ebc5b9 100644 --- a/src/mame/drivers/basic52.cpp +++ b/src/mame/drivers/basic52.cpp @@ -60,23 +60,25 @@ private: }; -ADDRESS_MAP_START(basic52_state::basic52_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x7fff) AM_RAM +void basic52_state::basic52_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x7fff).ram(); //AM_RANGE(0x8000, 0x9fff) AM_ROM // EPROM //AM_RANGE(0xc000, 0xdfff) // Expansion block //AM_RANGE(0xe000, 0xffff) // Expansion block -ADDRESS_MAP_END +} -ADDRESS_MAP_START(basic52_state::basic52_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x9fff) AM_ROM // EPROM - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // PPI-8255 +void basic52_state::basic52_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram(); + map(0x8000, 0x9fff).rom(); // EPROM + map(0xa000, 0xa003).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // PPI-8255 //AM_RANGE(0xc000, 0xdfff) // Expansion block //AM_RANGE(0xe000, 0xffff) // Expansion block -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( basic52 ) diff --git a/src/mame/drivers/batman.cpp b/src/mame/drivers/batman.cpp index c402ec51f38..53d55062e5d 100644 --- a/src/mame/drivers/batman.cpp +++ b/src/mame/drivers/batman.cpp @@ -89,31 +89,32 @@ WRITE16_MEMBER(batman_state::latch_w) /* full map verified from schematics and GALs */ /* addresses in the 1xxxxx region map to /WAIT */ /* addresses in the 2xxxxx region map to /WAIT2 */ -ADDRESS_MAP_START(batman_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM - AM_RANGE(0x120000, 0x120fff) AM_MIRROR(0x01f000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x11ff8c) AM_READ_PORT("260000") - AM_RANGE(0x260002, 0x260003) AM_MIRROR(0x11ff8c) AM_READ_PORT("260002") - AM_RANGE(0x260010, 0x260011) AM_MIRROR(0x11ff8e) AM_READ_PORT("260010") - AM_RANGE(0x260030, 0x260031) AM_MIRROR(0x11ff8e) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff) - AM_RANGE(0x260040, 0x260041) AM_MIRROR(0x11ff8e) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff) - AM_RANGE(0x260050, 0x260051) AM_MIRROR(0x11ff8e) AM_WRITE(latch_w) - AM_RANGE(0x260060, 0x260061) AM_MIRROR(0x11ff8e) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x2a0000, 0x2a0001) AM_MIRROR(0x11fffe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x2e0000, 0x2e0fff) AM_MIRROR(0x100000) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x2effc0, 0x2effff) AM_MIRROR(0x100000) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write) - AM_RANGE(0x2f0000, 0x2fffff) AM_MIRROR(0x100000) AM_RAM - AM_RANGE(0x2f0000, 0x2f1fff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2") - AM_RANGE(0x2f2000, 0x2f3fff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield") - AM_RANGE(0x2f4000, 0x2f5fff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext") - AM_RANGE(0x2f6000, 0x2f7fff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("vad:mob") - AM_RANGE(0x2f8000, 0x2f8eff) AM_MIRROR(0x100000) AM_DEVWRITE("vad", atari_vad_device, alpha_w) AM_SHARE("vad:alpha") - AM_RANGE(0x2f8f00, 0x2f8f7f) AM_MIRROR(0x100000) AM_SHARE("vad:eof") - AM_RANGE(0x2f8f80, 0x2f8fff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("vad:mob:slip") -ADDRESS_MAP_END +void batman_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fffff); + map(0x000000, 0x0bffff).rom(); + map(0x100000, 0x10ffff).mirror(0x010000).ram(); + map(0x120000, 0x120fff).mirror(0x01f000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x260000, 0x260001).mirror(0x11ff8c).portr("260000"); + map(0x260002, 0x260003).mirror(0x11ff8c).portr("260002"); + map(0x260010, 0x260011).mirror(0x11ff8e).portr("260010"); + map(0x260031, 0x260031).mirror(0x11ff8e).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r)); + map(0x260041, 0x260041).mirror(0x11ff8e).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w)); + map(0x260050, 0x260051).mirror(0x11ff8e).w(this, FUNC(batman_state::latch_w)); + map(0x260060, 0x260061).mirror(0x11ff8e).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x2a0000, 0x2a0001).mirror(0x11fffe).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x2e0000, 0x2e0fff).mirror(0x100000).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x2effc0, 0x2effff).mirror(0x100000).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); + map(0x2f0000, 0x2fffff).mirror(0x100000).ram(); + map(0x2f0000, 0x2f1fff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2"); + map(0x2f2000, 0x2f3fff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield"); + map(0x2f4000, 0x2f5fff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext"); + map(0x2f6000, 0x2f7fff).mirror(0x100000).ram().share("vad:mob"); + map(0x2f8000, 0x2f8eff).mirror(0x100000).w(m_vad, FUNC(atari_vad_device::alpha_w)).share("vad:alpha"); + map(0x2f8f00, 0x2f8f7f).mirror(0x100000).share("vad:eof"); + map(0x2f8f80, 0x2f8fff).mirror(0x100000).ram().share("vad:mob:slip"); +} diff --git a/src/mame/drivers/battlane.cpp b/src/mame/drivers/battlane.cpp index 650572e8f3f..10adf5a396a 100644 --- a/src/mame/drivers/battlane.cpp +++ b/src/mame/drivers/battlane.cpp @@ -100,19 +100,20 @@ INTERRUPT_GEN_MEMBER(battlane_state::battlane_cpu1_interrupt) * *************************************/ -ADDRESS_MAP_START(battlane_state::battlane_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(battlane_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x1800, 0x18ff) AM_RAM_WRITE(battlane_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("P1") AM_WRITE(battlane_video_ctrl_w) - AM_RANGE(0x1c01, 0x1c01) AM_READ_PORT("P2") AM_WRITE(battlane_scrollx_w) - AM_RANGE(0x1c02, 0x1c02) AM_READ_PORT("DSW1") AM_WRITE(battlane_scrolly_w) - AM_RANGE(0x1c03, 0x1c03) AM_READ_PORT("DSW2") AM_WRITE(battlane_cpu_command_w) - AM_RANGE(0x1c04, 0x1c05) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write) - AM_RANGE(0x1e00, 0x1e3f) AM_WRITE(battlane_palette_w) - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(battlane_bitmap_w) AM_SHARE("share4") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void battlane_state::battlane_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x17ff).ram().w(this, FUNC(battlane_state::battlane_tileram_w)).share("tileram"); + map(0x1800, 0x18ff).ram().w(this, FUNC(battlane_state::battlane_spriteram_w)).share("spriteram"); + map(0x1c00, 0x1c00).portr("P1").w(this, FUNC(battlane_state::battlane_video_ctrl_w)); + map(0x1c01, 0x1c01).portr("P2").w(this, FUNC(battlane_state::battlane_scrollx_w)); + map(0x1c02, 0x1c02).portr("DSW1").w(this, FUNC(battlane_state::battlane_scrolly_w)); + map(0x1c03, 0x1c03).portr("DSW2").w(this, FUNC(battlane_state::battlane_cpu_command_w)); + map(0x1c04, 0x1c05).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); + map(0x1e00, 0x1e3f).w(this, FUNC(battlane_state::battlane_palette_w)); + map(0x2000, 0x3fff).ram().w(this, FUNC(battlane_state::battlane_bitmap_w)).share("share4"); + map(0x4000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/battlera.cpp b/src/mame/drivers/battlera.cpp index 80fc8a20f93..59c501eca86 100644 --- a/src/mame/drivers/battlera.cpp +++ b/src/mame/drivers/battlera.cpp @@ -94,7 +94,6 @@ Notes: #include "emu.h" #include "includes/battlera.h" -#include "cpu/h6280/h6280.h" #include "sound/2203intf.h" #include "sound/c6280.h" #include "speaker.h" @@ -141,23 +140,25 @@ READ8_MEMBER(battlera_state::control_data_r) /******************************************************************************/ -ADDRESS_MAP_START(battlera_state::battlera_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x1e0800, 0x1e0801) AM_WRITE(sound_w) - AM_RANGE(0x1e1000, 0x1e13ff) AM_DEVREADWRITE( "huc6260", huc6260_device, palette_direct_read, palette_direct_write) AM_SHARE("paletteram") - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* Main ram */ - AM_RANGE(0x1ff000, 0x1ff001) AM_READWRITE(control_data_r, control_data_w) +void battlera_state::battlera_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x1e0800, 0x1e0801).w(this, FUNC(battlera_state::sound_w)); + map(0x1e1000, 0x1e13ff).rw(m_huc6260, FUNC(huc6260_device::palette_direct_read), FUNC(huc6260_device::palette_direct_write)).share("paletteram"); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); /* Main ram */ + map(0x1ff000, 0x1ff001).rw(this, FUNC(battlera_state::control_data_r), FUNC(battlera_state::control_data_w)); - AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) - AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE( "maincpu", h6280_device, timer_r, timer_w ) - AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w ) + map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); + map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(battlera_state::battlera_portmap) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) -ADDRESS_MAP_END +void battlera_state::battlera_portmap(address_map &map) +{ + map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); +} /******************************************************************************/ @@ -182,15 +183,16 @@ WRITE8_MEMBER(battlera_state::adpcm_reset_w) m_msm->reset_w(0); } -ADDRESS_MAP_START(battlera_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x040001) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0x080000, 0x080001) AM_WRITE(adpcm_data_w) - AM_RANGE(0x1fe800, 0x1fe80f) AM_DEVWRITE("c6280", c6280_device, c6280_w) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank7") /* Main ram */ - AM_RANGE(0x1ff000, 0x1ff001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_reset_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void battlera_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x040001).w("ymsnd", FUNC(ym2203_device::write)); + map(0x080000, 0x080001).w(this, FUNC(battlera_state::adpcm_data_w)); + map(0x1fe800, 0x1fe80f).w("c6280", FUNC(c6280_device::c6280_w)); + map(0x1f0000, 0x1f1fff).bankrw("bank7"); /* Main ram */ + map(0x1ff000, 0x1ff001).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(battlera_state::adpcm_reset_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/battlex.cpp b/src/mame/drivers/battlex.cpp index a814510b4f4..15e463747d6 100644 --- a/src/mame/drivers/battlex.cpp +++ b/src/mame/drivers/battlex.cpp @@ -115,34 +115,37 @@ CUSTOM_INPUT_MEMBER(battlex_state::battlex_in0_b4_r) * *************************************/ -ADDRESS_MAP_START(battlex_state::battlex_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(battlex_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa3ff) AM_RAM - AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(battlex_palette_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(battlex_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") - AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2") - AM_RANGE(0x10, 0x10) AM_WRITE(battlex_flipscreen_w) +void battlex_state::battlex_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(battlex_state::battlex_videoram_w)).share("videoram"); + map(0x9000, 0x91ff).ram().share("spriteram"); + map(0xa000, 0xa3ff).ram(); + map(0xe000, 0xe03f).ram().w(this, FUNC(battlex_state::battlex_palette_w)); +} + + +void battlex_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1"); + map(0x01, 0x01).portr("SYSTEM"); + map(0x02, 0x02).portr("INPUTS"); + map(0x03, 0x03).portr("DSW2"); + map(0x10, 0x10).w(this, FUNC(battlex_state::battlex_flipscreen_w)); /* verify all of these */ - AM_RANGE(0x22, 0x23) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x30, 0x30) AM_WRITE(battlex_scroll_starfield_w) - AM_RANGE(0x32, 0x32) AM_WRITE(battlex_scroll_x_lsb_w) - AM_RANGE(0x33, 0x33) AM_WRITE(battlex_scroll_x_msb_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(battlex_state::dodgeman_io_map) - AM_IMPORT_FROM(io_map) - AM_RANGE(0x26, 0x27) AM_DEVWRITE("ay2", ay8910_device, data_address_w) -ADDRESS_MAP_END + map(0x22, 0x23).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x30, 0x30).w(this, FUNC(battlex_state::battlex_scroll_starfield_w)); + map(0x32, 0x32).w(this, FUNC(battlex_state::battlex_scroll_x_lsb_w)); + map(0x33, 0x33).w(this, FUNC(battlex_state::battlex_scroll_x_msb_w)); +} + +void battlex_state::dodgeman_io_map(address_map &map) +{ + io_map(map); + map(0x26, 0x27).w("ay2", FUNC(ay8910_device::data_address_w)); +} /************************************* * diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp index e99599a3de7..7eb8bb3252a 100644 --- a/src/mame/drivers/battlnts.cpp +++ b/src/mame/drivers/battlnts.cpp @@ -61,33 +61,35 @@ WRITE8_MEMBER(battlnts_state::battlnts_bankswitch_w) * *************************************/ -ADDRESS_MAP_START(battlnts_state::battlnts_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */ - AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */ - AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */ - AM_RANGE(0x2400, 0x24ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")/* palette */ - AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */ - AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("DSW1") - AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P2") - AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P1") - AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW3") /* coinsw, testsw, startsw */ - AM_RANGE(0x2e04, 0x2e04) AM_READ_PORT("DSW2") - AM_RANGE(0x2e08, 0x2e08) AM_WRITE(battlnts_bankswitch_w) /* bankswitch control */ - AM_RANGE(0x2e0c, 0x2e0c) AM_WRITE(battlnts_spritebank_w) /* sprite bank select */ - AM_RANGE(0x2e10, 0x2e10) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2e14, 0x2e14) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound code # */ - AM_RANGE(0x2e18, 0x2e18) AM_WRITE(battlnts_sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM 777e02.bin */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(battlnts_state::battlnts_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM 777c01.rom */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym3812_device, read, write) /* YM3812 (chip 1) */ - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym3812_device, read, write) /* YM3812 (chip 2) */ - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void battlnts_state::battlnts_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(m_k007342, FUNC(k007342_device::read), FUNC(k007342_device::write)); /* Color RAM + Video RAM */ + map(0x2000, 0x21ff).rw(m_k007420, FUNC(k007420_device::read), FUNC(k007420_device::write)); /* Sprite RAM */ + map(0x2200, 0x23ff).rw(m_k007342, FUNC(k007342_device::scroll_r), FUNC(k007342_device::scroll_w)); /* Scroll RAM */ + map(0x2400, 0x24ff).ram().w("palette", FUNC(palette_device::write8)).share("palette");/* palette */ + map(0x2600, 0x2607).w(m_k007342, FUNC(k007342_device::vreg_w)); /* Video Registers */ + map(0x2e00, 0x2e00).portr("DSW1"); + map(0x2e01, 0x2e01).portr("P2"); + map(0x2e02, 0x2e02).portr("P1"); + map(0x2e03, 0x2e03).portr("DSW3"); /* coinsw, testsw, startsw */ + map(0x2e04, 0x2e04).portr("DSW2"); + map(0x2e08, 0x2e08).w(this, FUNC(battlnts_state::battlnts_bankswitch_w)); /* bankswitch control */ + map(0x2e0c, 0x2e0c).w(this, FUNC(battlnts_state::battlnts_spritebank_w)); /* sprite bank select */ + map(0x2e10, 0x2e10).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2e14, 0x2e14).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound code # */ + map(0x2e18, 0x2e18).w(this, FUNC(battlnts_state::battlnts_sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x4000, 0x7fff).bankr("rombank"); /* banked ROM */ + map(0x8000, 0xffff).rom(); /* ROM 777e02.bin */ +} + +void battlnts_state::battlnts_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM 777c01.rom */ + map(0x8000, 0x87ff).ram(); /* RAM */ + map(0xa000, 0xa001).rw("ym1", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 (chip 1) */ + map(0xc000, 0xc001).rw("ym2", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 (chip 2) */ + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} /************************************* * diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp index 4e1d15cf3ce..1dc956b9829 100644 --- a/src/mame/drivers/bbc.cpp +++ b/src/mame/drivers/bbc.cpp @@ -142,122 +142,129 @@ READ8_MEMBER(bbc_state::bbc_fe_r) return 0xfe; } -ADDRESS_MAP_START(bbc_state::bbca_mem) - ADDRESS_MAP_UNMAP_HIGH /* Hardware marked with a # is not present in a Model A */ - - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */ - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ - AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ - AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ +void bbc_state::bbca_mem(address_map &map) +{ + map.unmap_value_high(); /* Hardware marked with a # is not present in a Model A */ + + map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorya1_w)); /* 0000-3fff Regular Ram */ + map(0x4000, 0x7fff).bankr("bank3").w(this, FUNC(bbc_state::bbc_memoryb3_w)); /* 4000-7fff Repeat of the Regular Ram */ + map(0x8000, 0xbfff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memoryb4_w)); /* 8000-bfff Paged ROM */ + map(0xc000, 0xfbff).bankr("bank7"); /* c000-fbff OS ROM */ + map(0xfc00, 0xfdff).noprw(); /* fc00-fdff FRED & JIM Pages */ /* fe00-feff SHEILA Address Page */ - AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ - AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, register_r, register_w) - AM_RANGE(0xfe08, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, read, write) /* fe08-fe0f 6850 ACIA Serial controller */ - AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ - AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */ - AM_RANGE(0xfe20, 0xfe2f) AM_READWRITE(bbc_fe_r, bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */ + map(0xfe00, 0xfe00).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::status_r), FUNC(hd6845_device::address_w)); /* fe00-fe07 6845 CRTC Video controller */ + map(0xfe01, 0xfe01).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w)); + map(0xfe08, 0xfe09).mirror(0x06).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); /* fe08-fe0f 6850 ACIA Serial controller */ + map(0xfe10, 0xfe17).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_SerialULA_w)); /* fe10-fe17 Serial ULA Serial system chip */ + map(0xfe18, 0xfe1f).noprw(); /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */ + map(0xfe20, 0xfe2f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_videoULA_w)); /* R: fe20-fe2f INTON # ECONET Interrupt On */ /* W: fe20-fe2f Video ULA Video system chip */ - AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */ + map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selecta_w)); /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 74LS161 Paged ROM selector */ - AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ - AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */ - AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */ - AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC # ECONET controller */ - AM_RANGE(0xfec0, 0xfedf) AM_NOP /* fec0-fedf uPD7002 # Analogue to digital converter */ - AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA # Tube system interface */ - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */ -ADDRESS_MAP_END + map(0xfe40, 0xfe5f).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* fe40-fe5f 6522 VIA SYSTEM VIA */ + map(0xfe60, 0xfe7f).noprw(); /* fe60-fe7f 6522 VIA # USER VIA */ + map(0xfe80, 0xfe9f).noprw(); /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */ + map(0xfea0, 0xfebf).r(this, FUNC(bbc_state::bbc_fe_r)); /* fea0-febf 68B54 ADLC # ECONET controller */ + map(0xfec0, 0xfedf).noprw(); /* fec0-fedf uPD7002 # Analogue to digital converter */ + map(0xfee0, 0xfeff).r(this, FUNC(bbc_state::bbc_fe_r)); /* fee0-feff Tube ULA # Tube system interface */ + map(0xff00, 0xffff).rom().region("os", 0x3f00); /* ff00-ffff OS Rom (continued) */ +} -ADDRESS_MAP_START(bbc_state::bbc_base) - ADDRESS_MAP_UNMAP_HIGH +void bbc_state::bbc_base(address_map &map) +{ + map.unmap_value_high(); - AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ - AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ + map(0xc000, 0xfbff).bankr("bank7"); /* c000-fbff OS ROM */ + map(0xfc00, 0xfdff).noprw(); /* fc00-fdff FRED & JIM Pages */ /* fe00-feff SHEILA Address Page */ - AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ - AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, register_r, register_w) - AM_RANGE(0xfe08, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, read, write) /* fe08-fe0f 6850 ACIA Serial controller */ - AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ - AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("STATID") /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ - AM_RANGE(0xfe20, 0xfe2f) AM_READWRITE(bbc_fe_r, bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ + map(0xfe00, 0xfe00).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::status_r), FUNC(hd6845_device::address_w)); /* fe00-fe07 6845 CRTC Video controller */ + map(0xfe01, 0xfe01).mirror(0x06).rw(m_hd6845, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w)); + map(0xfe08, 0xfe09).mirror(0x06).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); /* fe08-fe0f 6850 ACIA Serial controller */ + map(0xfe10, 0xfe17).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_SerialULA_w)); /* fe10-fe17 Serial ULA Serial system chip */ + map(0xfe18, 0xfe1f).portr("STATID"); /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ + map(0xfe20, 0xfe2f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_videoULA_w)); /* R: fe20-fe2f INTON ECONET Interrupt On */ /* W: fe20-fe2f Video ULA Video system chip */ - AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ - AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */ + map(0xfe40, 0xfe5f).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* fe40-fe5f 6522 VIA SYSTEM VIA */ + map(0xfe60, 0xfe7f).rw(m_via6522_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* fe60-fe7f 6522 VIA USER VIA */ /* fe80-fe9f FDC Floppy disc controller */ - AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */ - AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */ - AM_RANGE(0xfee0, 0xfeff) AM_DEVREADWRITE("tube", bbc_tube_slot_device, host_r, host_w) /* fee0-feff Tube ULA Tube system interface */ - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */ -ADDRESS_MAP_END + map(0xfea0, 0xfebf).r(this, FUNC(bbc_state::bbc_fe_r)); /* fea0-febf 68B54 ADLC ECONET controller */ + map(0xfec0, 0xfedf).rw(m_upd7002, FUNC(upd7002_device::read), FUNC(upd7002_device::write)); /* fec0-fedf uPD7002 Analogue to digital converter */ + map(0xfee0, 0xfeff).rw(m_tube, FUNC(bbc_tube_slot_device::host_r), FUNC(bbc_tube_slot_device::host_w)); /* fee0-feff Tube ULA Tube system interface */ + map(0xff00, 0xffff).rom().region("os", 0x3f00); /* ff00-ffff OS ROM (continued) */ +} -ADDRESS_MAP_START(bbc_state::bbcb_mem) - AM_IMPORT_FROM(bbc_base) +void bbc_state::bbcb_mem(address_map &map) +{ + bbc_base(map); - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */ - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ - AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */ + map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorya1_w)); /* 0000-3fff Regular Ram */ + map(0x4000, 0x7fff).bankr("bank3").w(this, FUNC(bbc_state::bbc_memoryb3_w)); /* 4000-7fff Regular Ram */ + map(0x8000, 0xbfff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memoryb4_w)); /* 8000-bfff Paged ROM */ + map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectb_w)); /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ - AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271", i8271_device, map) /* fe80-fe83 8271 FDC Floppy disc controller */ - AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w) /* fe84-fe9f 8271 FDC Floppy disc controller */ -ADDRESS_MAP_END + map(0xfe80, 0xfe83).m(m_i8271, FUNC(i8271_device::map)); /* fe80-fe83 8271 FDC Floppy disc controller */ + map(0xfe84, 0xfe9f).rw(m_i8271, FUNC(i8271_device::data_r), FUNC(i8271_device::data_w)); /* fe84-fe9f 8271 FDC Floppy disc controller */ +} -ADDRESS_MAP_START(bbc_state::bbcb_nofdc_mem) - AM_IMPORT_FROM(bbc_base) +void bbc_state::bbcb_nofdc_mem(address_map &map) +{ + bbc_base(map); - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */ - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */ - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ - AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */ + map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorya1_w)); /* 0000-3fff Regular Ram */ + map(0x4000, 0x7fff).bankr("bank3").w(this, FUNC(bbc_state::bbc_memoryb3_w)); /* 4000-7fff Regular Ram */ + map(0x8000, 0xbfff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memoryb4_w)); /* 8000-bfff Paged ROM */ + map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectb_w)); /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ - AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe9f Floppy disc controller */ -ADDRESS_MAP_END + map(0xfe80, 0xfe83).noprw(); /* fe80-fe9f Floppy disc controller */ +} -ADDRESS_MAP_START(bbc_state::bbcbp_mem) - AM_IMPORT_FROM(bbc_base) - AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */ - AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */ - AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */ - AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */ - AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ +void bbc_state::bbcbp_mem(address_map &map) +{ + bbc_base(map); + map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybp1_w)); /* 0000-2fff Regular Ram */ + map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybp2_w)); /* 3000-7fff Video/Shadow Ram */ + map(0x8000, 0xafff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybp4_w)); /* 8000-afff Paged ROM or 12K of SWRAM */ + map(0xb000, 0xbfff).bankr("bank6"); /* b000-bfff Rest of paged ROM area */ + map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectbp_w)); /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ - AM_RANGE(0xfe80, 0xfe83) AM_READWRITE(bbc_fe_r, bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ - AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ - AM_RANGE(0xfee0, 0xfeff) AM_DEVREADWRITE("tube", bbc_tube_slot_device, host_r, host_w) /* fee0-feff Tube ULA Tube system interface */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bbc_state::bbcbp128_mem) - AM_IMPORT_FROM(bbc_base) - AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */ - AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */ - AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w) /* 8000-afff Paged ROM or 12K of SWRAM */ - AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w) /* b000-bfff Rest of paged ROM area */ - AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ + map(0xfe80, 0xfe83).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_wd1770_status_w)); /* fe80-fe83 1770 FDC Drive control register */ + map(0xfe84, 0xfe9f).rw(m_wd1770, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); /* fe84-fe9f 1770 FDC Floppy disc controller */ + map(0xfee0, 0xfeff).rw(m_tube, FUNC(bbc_tube_slot_device::host_r), FUNC(bbc_tube_slot_device::host_w)); /* fee0-feff Tube ULA Tube system interface */ +} + + +void bbc_state::bbcbp128_mem(address_map &map) +{ + bbc_base(map); + map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybp1_w)); /* 0000-2fff Regular Ram */ + map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybp2_w)); /* 3000-7fff Video/Shadow Ram */ + map(0x8000, 0xafff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybp4_128_w)); /* 8000-afff Paged ROM or 12K of SWRAM */ + map(0xb000, 0xbfff).bankr("bank6").w(this, FUNC(bbc_state::bbc_memorybp6_128_w)); /* b000-bfff Rest of paged ROM area */ + map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectbp_w)); /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ - AM_RANGE(0xfe80, 0xfe83) AM_READWRITE(bbc_fe_r, bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ - AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ - AM_RANGE(0xfee0, 0xfeff) AM_DEVREADWRITE("tube", bbc_tube_slot_device, host_r, host_w) /* fee0-feff Tube ULA Tube system interface */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bbc_state::reutapm_mem) - AM_IMPORT_FROM(bbc_base) - AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */ - AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */ - AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */ - AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */ - AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ + map(0xfe80, 0xfe83).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_wd1770_status_w)); /* fe80-fe83 1770 FDC Drive control register */ + map(0xfe84, 0xfe9f).rw(m_wd1770, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); /* fe84-fe9f 1770 FDC Floppy disc controller */ + map(0xfee0, 0xfeff).rw(m_tube, FUNC(bbc_tube_slot_device::host_r), FUNC(bbc_tube_slot_device::host_w)); /* fee0-feff Tube ULA Tube system interface */ +} + + +void bbc_state::reutapm_mem(address_map &map) +{ + bbc_base(map); + map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybp1_w)); /* 0000-2fff Regular Ram */ + map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybp2_w)); /* 3000-7fff Video/Shadow Ram */ + map(0x8000, 0xafff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybp4_w)); /* 8000-afff Paged ROM or 12K of SWRAM */ + map(0xb000, 0xbfff).bankr("bank6"); /* b000-bfff Rest of paged ROM area */ + map(0xfe30, 0xfe3f).rw(this, FUNC(bbc_state::bbc_fe_r), FUNC(bbc_state::bbc_page_selectbp_w)); /* R: fe30-fe3f NC Not Connected */ /* W: fe30-fe3f 84LS161 Paged ROM selector */ - AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe83 1770 FDC Drive control register */ - AM_RANGE(0xfe84, 0xfe9f) AM_NOP /* fe84-fe9f 1770 FDC Floppy disc controller */ - AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */ -ADDRESS_MAP_END + map(0xfe80, 0xfe83).noprw(); /* fe80-fe83 1770 FDC Drive control register */ + map(0xfe84, 0xfe9f).noprw(); /* fe84-fe9f 1770 FDC Floppy disc controller */ + map(0xfee0, 0xfeff).r(this, FUNC(bbc_state::bbc_fe_r)); /* fee0-feff Tube ULA Tube system interface */ +} /****************************************************************************** &FC00-&FCFF FRED @@ -283,16 +290,17 @@ ADDRESS_MAP_END ******************************************************************************/ -ADDRESS_MAP_START(bbc_state::bbcm_mem) - AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybm1_w) /* 0000-2fff Regular Ram */ - AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybm2_w) /* 3000-7fff Video/Shadow Ram */ - AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w) /* 8000-8fff Paged ROM/RAM or 4K of RAM ANDY */ - AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w) /* 9000-bfff Rest of paged ROM/RAM area */ - AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w) /* c000-dfff OS ROM or 8K of RAM HAZEL */ - AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000) /* e000-fbff OS ROM */ - AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w) /* processed directly because it can be ROM or hardware */ - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */ -ADDRESS_MAP_END +void bbc_state::bbcm_mem(address_map &map) +{ + map(0x0000, 0x2fff).bankr("bank1").w(this, FUNC(bbc_state::bbc_memorybm1_w)); /* 0000-2fff Regular Ram */ + map(0x3000, 0x7fff).bankr("bank2").w(this, FUNC(bbc_state::bbc_memorybm2_w)); /* 3000-7fff Video/Shadow Ram */ + map(0x8000, 0x8fff).bankr("bank4").w(this, FUNC(bbc_state::bbc_memorybm4_w)); /* 8000-8fff Paged ROM/RAM or 4K of RAM ANDY */ + map(0x9000, 0xbfff).bankr("bank5").w(this, FUNC(bbc_state::bbc_memorybm5_w)); /* 9000-bfff Rest of paged ROM/RAM area */ + map(0xc000, 0xdfff).bankr("bank7").w(this, FUNC(bbc_state::bbc_memorybm7_w)); /* c000-dfff OS ROM or 8K of RAM HAZEL */ + map(0xe000, 0xfbff).rom().region("os", 0x2000); /* e000-fbff OS ROM */ + map(0xfc00, 0xfeff).bankr("bank8").w(this, FUNC(bbc_state::bbcm_w)); /* processed directly because it can be ROM or hardware */ + map(0xff00, 0xffff).rom().region("os", 0x3f00); /* ff00-ffff OS ROM (continued) */ +} INPUT_CHANGED_MEMBER(bbc_state::trigger_reset) diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp index 2afccb95149..4d74b875940 100644 --- a/src/mame/drivers/bbcbc.cpp +++ b/src/mame/drivers/bbcbc.cpp @@ -65,18 +65,26 @@ private: #define MAIN_CLOCK XTAL(4'433'619) -ADDRESS_MAP_START(bbcbc_state::mem_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", generic_slot_device, read_rom) - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bbcbc_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ;map(0x00, 0x7f).lrw8("z80pio_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_z80pio->read(space, offset >> 5, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_z80pio->write(space, offset >> 5, data, mem_mask); }); - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("tms9129", tms9129_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("tms9129", tms9129_device, register_read, register_write) -ADDRESS_MAP_END +void bbcbc_state::mem_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0xbfff).r("cartslot", FUNC(generic_slot_device::read_rom)); + map(0xe000, 0xe7ff).ram(); +} + +void bbcbc_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).lrw8("z80pio_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_z80pio->read(space, offset >> 5, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_z80pio->write(space, offset >> 5, data, mem_mask); + }); + map(0x80, 0x80).rw("tms9129", FUNC(tms9129_device::vram_read), FUNC(tms9129_device::vram_write)); + map(0x81, 0x81).rw("tms9129", FUNC(tms9129_device::register_read), FUNC(tms9129_device::register_write)); +} // Input bits are read through the PIO four at a time, then stored individually in RAM at E030-E03B static INPUT_PORTS_START( bbcbc ) diff --git a/src/mame/drivers/bbusters.cpp b/src/mame/drivers/bbusters.cpp index 1d01bf14713..fdd2ab80dc7 100644 --- a/src/mame/drivers/bbusters.cpp +++ b/src/mame/drivers/bbusters.cpp @@ -324,74 +324,79 @@ READ16_MEMBER(bbusters_state::mechatt_gun_r) /*******************************************************************************/ -ADDRESS_MAP_START(bbusters_state::bbusters_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(video_w) AM_SHARE("videoram") - AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0a1000, 0x0a7fff) AM_RAM /* service mode */ - AM_RANGE(0x0a8000, 0x0a8fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x0a9000, 0x0affff) AM_RAM /* service mode */ - AM_RANGE(0x0b0000, 0x0b1fff) AM_RAM_WRITE(pf1_w) AM_SHARE("pf1_data") - AM_RANGE(0x0b2000, 0x0b3fff) AM_RAM_WRITE(pf2_w) AM_SHARE("pf2_data") - AM_RANGE(0x0b4000, 0x0b5fff) AM_RAM /* service mode */ - AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_SHARE("pf1_scroll_data") - AM_RANGE(0x0b8008, 0x0b800b) AM_WRITEONLY AM_SHARE("pf2_scroll_data") - AM_RANGE(0x0d0000, 0x0d0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("COINS") /* Coins */ - AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("IN0") /* Player 1 & 2 */ - AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("IN1") /* Player 3 */ - AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1") /* Dip 1 */ - AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2") /* Dip 2 */ - AM_RANGE(0x0e0018, 0x0e0019) AM_READ(sound_status_r) - AM_RANGE(0x0e8000, 0x0e8001) AM_READWRITE(kludge_r, gun_select_w) - AM_RANGE(0x0e8002, 0x0e8003) AM_READ(control_3_r) +void bbusters_state::bbusters_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram().share("ram"); + map(0x090000, 0x090fff).ram().w(this, FUNC(bbusters_state::video_w)).share("videoram"); + map(0x0a0000, 0x0a0fff).ram().share("spriteram"); + map(0x0a1000, 0x0a7fff).ram(); /* service mode */ + map(0x0a8000, 0x0a8fff).ram().share("spriteram2"); + map(0x0a9000, 0x0affff).ram(); /* service mode */ + map(0x0b0000, 0x0b1fff).ram().w(this, FUNC(bbusters_state::pf1_w)).share("pf1_data"); + map(0x0b2000, 0x0b3fff).ram().w(this, FUNC(bbusters_state::pf2_w)).share("pf2_data"); + map(0x0b4000, 0x0b5fff).ram(); /* service mode */ + map(0x0b8000, 0x0b8003).writeonly().share("pf1_scroll_data"); + map(0x0b8008, 0x0b800b).writeonly().share("pf2_scroll_data"); + map(0x0d0000, 0x0d0fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0e0000, 0x0e0001).portr("COINS"); /* Coins */ + map(0x0e0002, 0x0e0003).portr("IN0"); /* Player 1 & 2 */ + map(0x0e0004, 0x0e0005).portr("IN1"); /* Player 3 */ + map(0x0e0008, 0x0e0009).portr("DSW1"); /* Dip 1 */ + map(0x0e000a, 0x0e000b).portr("DSW2"); /* Dip 2 */ + map(0x0e0018, 0x0e0019).r(this, FUNC(bbusters_state::sound_status_r)); + map(0x0e8000, 0x0e8001).rw(this, FUNC(bbusters_state::kludge_r), FUNC(bbusters_state::gun_select_w)); + map(0x0e8002, 0x0e8003).r(this, FUNC(bbusters_state::control_3_r)); /* AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP */ - AM_RANGE(0x0f0008, 0x0f0009) AM_WRITE(three_gun_output_w) - AM_RANGE(0x0f0018, 0x0f0019) AM_WRITE(sound_cpu_w) - AM_RANGE(0x0f8000, 0x0f80ff) AM_READ(eprom_r) AM_WRITEONLY AM_SHARE("eeprom") /* Eeprom */ -ADDRESS_MAP_END + map(0x0f0008, 0x0f0009).w(this, FUNC(bbusters_state::three_gun_output_w)); + map(0x0f0018, 0x0f0019).w(this, FUNC(bbusters_state::sound_cpu_w)); + map(0x0f8000, 0x0f80ff).r(this, FUNC(bbusters_state::eprom_r)).writeonly().share("eeprom"); /* Eeprom */ +} /*******************************************************************************/ -ADDRESS_MAP_START(bbusters_state::mechatt_map) - AM_RANGE(0x000000, 0x06ffff) AM_ROM - AM_RANGE(0x070000, 0x07ffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x090000, 0x090fff) AM_RAM_WRITE(video_w) AM_SHARE("videoram") - AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0a1000, 0x0a7fff) AM_WRITENOP - AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(pf1_w) AM_SHARE("pf1_data") - AM_RANGE(0x0b8000, 0x0b8003) AM_WRITEONLY AM_SHARE("pf1_scroll_data") - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM_WRITE(pf2_w) AM_SHARE("pf2_data") - AM_RANGE(0x0c8000, 0x0c8003) AM_WRITEONLY AM_SHARE("pf2_scroll_data") - AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("IN0") - AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("DSW1") - AM_RANGE(0x0e0004, 0x0e0007) AM_READ(mechatt_gun_r) +void bbusters_state::mechatt_map(address_map &map) +{ + map(0x000000, 0x06ffff).rom(); + map(0x070000, 0x07ffff).ram().share("ram"); + map(0x090000, 0x090fff).ram().w(this, FUNC(bbusters_state::video_w)).share("videoram"); + map(0x0a0000, 0x0a0fff).ram().share("spriteram"); + map(0x0a1000, 0x0a7fff).nopw(); + map(0x0b0000, 0x0b3fff).ram().w(this, FUNC(bbusters_state::pf1_w)).share("pf1_data"); + map(0x0b8000, 0x0b8003).writeonly().share("pf1_scroll_data"); + map(0x0c0000, 0x0c3fff).ram().w(this, FUNC(bbusters_state::pf2_w)).share("pf2_data"); + map(0x0c8000, 0x0c8003).writeonly().share("pf2_scroll_data"); + map(0x0d0000, 0x0d07ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0e0000, 0x0e0001).portr("IN0"); + map(0x0e0002, 0x0e0003).portr("DSW1"); + map(0x0e0004, 0x0e0007).r(this, FUNC(bbusters_state::mechatt_gun_r)); /* AM_RANGE(0x0e4002, 0x0e4003) AM_WRITENOP Gun force feedback? */ - AM_RANGE(0x0e4002, 0x0e4003) AM_WRITE(two_gun_output_w) - AM_RANGE(0x0e8000, 0x0e8001) AM_READWRITE(sound_status_r, sound_cpu_w) -ADDRESS_MAP_END + map(0x0e4002, 0x0e4003).w(this, FUNC(bbusters_state::two_gun_output_w)); + map(0x0e8000, 0x0e8001).rw(this, FUNC(bbusters_state::sound_status_r), FUNC(bbusters_state::sound_cpu_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(bbusters_state::sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bbusters_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(bbusters_state::sounda_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write) - AM_RANGE(0xc0, 0xc1) AM_WRITENOP /* -> Main CPU */ -ADDRESS_MAP_END +void bbusters_state::sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(bbusters_state::sound_status_w)); +} + +void bbusters_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xc0, 0xc1).nopw(); /* -> Main CPU */ +} + +void bbusters_state::sounda_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write)); + map(0xc0, 0xc1).nopw(); /* -> Main CPU */ +} /******************************************************************************/ diff --git a/src/mame/drivers/bcs3.cpp b/src/mame/drivers/bcs3.cpp index 833d5a3220e..e5af07d7498 100644 --- a/src/mame/drivers/bcs3.cpp +++ b/src/mame/drivers/bcs3.cpp @@ -133,31 +133,34 @@ READ8_MEMBER( bcs3_state::zx_r ) return 0xf7; } -ADDRESS_MAP_START(bcs3_state::bcs3_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_MIRROR(0x2000) AM_ROM AM_REGION("roms", 0) - AM_RANGE( 0x1000, 0x13ff ) AM_MIRROR(0x2000) AM_READ(keyboard_r) - AM_RANGE( 0x1400, 0x17ff ) AM_MIRROR(0x2000) AM_NOP // /WAIT circuit - AM_RANGE( 0x1800, 0x1bff ) AM_MIRROR(0x2000) AM_READ(video_r) - AM_RANGE( 0x1c00, 0x1fff ) AM_MIRROR(0x2000) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bcs3_state::bcs3a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_MIRROR(0x2000) AM_ROM AM_REGION("roms", 0) - AM_RANGE( 0x1000, 0x13ff ) AM_MIRROR(0x2000) AM_READ(keyboard_r) - AM_RANGE( 0x1400, 0x17ff ) AM_MIRROR(0x2000) AM_NOP // /WAIT circuit - AM_RANGE( 0x1800, 0x1bff ) AM_MIRROR(0x2000) AM_READ(zx_r) - AM_RANGE( 0x3c00, 0x7fff ) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0xf000, 0xf3ff ) AM_ROM AM_REGION("roms", 0x1000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bcs3_state::bcs3_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(3) +void bcs3_state::bcs3_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).mirror(0x2000).rom().region("roms", 0); + map(0x1000, 0x13ff).mirror(0x2000).r(this, FUNC(bcs3_state::keyboard_r)); + map(0x1400, 0x17ff).mirror(0x2000).noprw(); // /WAIT circuit + map(0x1800, 0x1bff).mirror(0x2000).r(this, FUNC(bcs3_state::video_r)); + map(0x1c00, 0x1fff).mirror(0x2000).ram().share("videoram"); +} + +void bcs3_state::bcs3a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).mirror(0x2000).rom().region("roms", 0); + map(0x1000, 0x13ff).mirror(0x2000).r(this, FUNC(bcs3_state::keyboard_r)); + map(0x1400, 0x17ff).mirror(0x2000).noprw(); // /WAIT circuit + map(0x1800, 0x1bff).mirror(0x2000).r(this, FUNC(bcs3_state::zx_r)); + map(0x3c00, 0x7fff).ram().share("videoram"); + map(0xf000, 0xf3ff).rom().region("roms", 0x1000); +} + +void bcs3_state::bcs3_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(3); // coded in the rom as F8 to FB - AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END + map(0x00, 0x03).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /* Input ports */ static INPUT_PORTS_START( bcs3 ) diff --git a/src/mame/drivers/beaminv.cpp b/src/mame/drivers/beaminv.cpp index 8ac1f374335..e93e3017dac 100644 --- a/src/mame/drivers/beaminv.cpp +++ b/src/mame/drivers/beaminv.cpp @@ -241,15 +241,16 @@ READ8_MEMBER(beaminv_state::controller_r) * *************************************/ -ADDRESS_MAP_START(beaminv_state::main_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW") - AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("INPUTS") - AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_READ(controller_r) - AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ(v128_r) - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void beaminv_state::main_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x1fff).ram(); + map(0x2400, 0x2400).mirror(0x03ff).portr("DSW"); + map(0x2800, 0x2800).mirror(0x03ff).portr("INPUTS"); + map(0x3400, 0x3400).mirror(0x03ff).r(this, FUNC(beaminv_state::controller_r)); + map(0x3800, 0x3800).mirror(0x03ff).r(this, FUNC(beaminv_state::v128_r)); + map(0x4000, 0x5fff).ram().share("videoram"); +} @@ -259,10 +260,11 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(beaminv_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(controller_select_w) /* to be confirmed */ -ADDRESS_MAP_END +void beaminv_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(beaminv_state::controller_select_w)); /* to be confirmed */ +} diff --git a/src/mame/drivers/beathead.cpp b/src/mame/drivers/beathead.cpp index 92e6bc1c307..09225b9ae5d 100644 --- a/src/mame/drivers/beathead.cpp +++ b/src/mame/drivers/beathead.cpp @@ -274,33 +274,34 @@ WRITE32_MEMBER( beathead_state::coin_count_w ) * *************************************/ -ADDRESS_MAP_START(beathead_state::main_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("ram_base") - AM_RANGE(0x01800000, 0x01bfffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rom_base") - AM_RANGE(0x40000000, 0x400007ff) AM_RAM_WRITE(eeprom_data_w) AM_SHARE("nvram") - AM_RANGE(0x41000000, 0x41000003) AM_DEVREADWRITE8("jsa", atari_jsa_iii_device, main_response_r, main_command_w, 0x000000ff) - AM_RANGE(0x41000100, 0x41000103) AM_READ(interrupt_control_r) - AM_RANGE(0x41000100, 0x4100011f) AM_WRITE(interrupt_control_w) - AM_RANGE(0x41000200, 0x41000203) AM_READ_PORT("IN1") - AM_RANGE(0x41000204, 0x41000207) AM_READ_PORT("IN0") - AM_RANGE(0x41000208, 0x4100020f) AM_WRITE(sound_reset_w) - AM_RANGE(0x41000220, 0x41000227) AM_WRITE(coin_count_w) - AM_RANGE(0x41000300, 0x41000303) AM_READ_PORT("IN2") - AM_RANGE(0x41000304, 0x41000307) AM_READ_PORT("IN3") - AM_RANGE(0x41000400, 0x41000403) AM_WRITEONLY AM_SHARE("palette_select") - AM_RANGE(0x41000500, 0x41000503) AM_WRITE(eeprom_enable_w) - AM_RANGE(0x41000600, 0x41000603) AM_WRITE(finescroll_w) - AM_RANGE(0x41000700, 0x41000703) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w) - AM_RANGE(0x42000000, 0x4201ffff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x43000000, 0x43000007) AM_READWRITE(hsync_ram_r, hsync_ram_w) - AM_RANGE(0x8df80000, 0x8df80003) AM_READNOP /* noisy x4 during scanline int */ - AM_RANGE(0x8f380000, 0x8f3fffff) AM_WRITE(vram_latch_w) - AM_RANGE(0x8f900000, 0x8f97ffff) AM_WRITE(vram_transparent_w) - AM_RANGE(0x8f980000, 0x8f9fffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8fb80000, 0x8fbfffff) AM_WRITE(vram_bulk_w) - AM_RANGE(0x8fff8000, 0x8fff8003) AM_WRITEONLY AM_SHARE("vram_bulk_latch") - AM_RANGE(0x9e280000, 0x9e2fffff) AM_WRITE(vram_copy_w) -ADDRESS_MAP_END +void beathead_state::main_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram().share("ram_base"); + map(0x01800000, 0x01bfffff).rom().region("user1", 0).share("rom_base"); + map(0x40000000, 0x400007ff).ram().w(this, FUNC(beathead_state::eeprom_data_w)).share("nvram"); + map(0x41000000, 0x41000000).rw(m_jsa, FUNC(atari_jsa_iii_device::main_response_r), FUNC(atari_jsa_iii_device::main_command_w)); + map(0x41000100, 0x41000103).r(this, FUNC(beathead_state::interrupt_control_r)); + map(0x41000100, 0x4100011f).w(this, FUNC(beathead_state::interrupt_control_w)); + map(0x41000200, 0x41000203).portr("IN1"); + map(0x41000204, 0x41000207).portr("IN0"); + map(0x41000208, 0x4100020f).w(this, FUNC(beathead_state::sound_reset_w)); + map(0x41000220, 0x41000227).w(this, FUNC(beathead_state::coin_count_w)); + map(0x41000300, 0x41000303).portr("IN2"); + map(0x41000304, 0x41000307).portr("IN3"); + map(0x41000400, 0x41000403).writeonly().share("palette_select"); + map(0x41000500, 0x41000503).w(this, FUNC(beathead_state::eeprom_enable_w)); + map(0x41000600, 0x41000603).w(this, FUNC(beathead_state::finescroll_w)); + map(0x41000700, 0x41000703).w("watchdog", FUNC(watchdog_timer_device::reset32_w)); + map(0x42000000, 0x4201ffff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x43000000, 0x43000007).rw(this, FUNC(beathead_state::hsync_ram_r), FUNC(beathead_state::hsync_ram_w)); + map(0x8df80000, 0x8df80003).nopr(); /* noisy x4 during scanline int */ + map(0x8f380000, 0x8f3fffff).w(this, FUNC(beathead_state::vram_latch_w)); + map(0x8f900000, 0x8f97ffff).w(this, FUNC(beathead_state::vram_transparent_w)); + map(0x8f980000, 0x8f9fffff).ram().share("videoram"); + map(0x8fb80000, 0x8fbfffff).w(this, FUNC(beathead_state::vram_bulk_w)); + map(0x8fff8000, 0x8fff8003).writeonly().share("vram_bulk_latch"); + map(0x9e280000, 0x9e2fffff).w(this, FUNC(beathead_state::vram_copy_w)); +} diff --git a/src/mame/drivers/bebox.cpp b/src/mame/drivers/bebox.cpp index b98731e6378..a43fa382d5b 100644 --- a/src/mame/drivers/bebox.cpp +++ b/src/mame/drivers/bebox.cpp @@ -32,41 +32,42 @@ READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237_2->read(space, offset / 2); } WRITE8_MEMBER(bebox_state::at_dma8237_1_w) { m_dma8237_2->write(space, offset / 2, data); } -ADDRESS_MAP_START(bebox_state::bebox_mem) - AM_RANGE(0x7FFFF0F0, 0x7FFFF0F7) AM_READWRITE(bebox_cpu0_imask_r, bebox_cpu0_imask_w ) - AM_RANGE(0x7FFFF1F0, 0x7FFFF1F7) AM_READWRITE(bebox_cpu1_imask_r, bebox_cpu1_imask_w ) - AM_RANGE(0x7FFFF2F0, 0x7FFFF2F7) AM_READ(bebox_interrupt_sources_r ) - AM_RANGE(0x7FFFF3F0, 0x7FFFF3F7) AM_READWRITE(bebox_crossproc_interrupts_r, bebox_crossproc_interrupts_w ) - AM_RANGE(0x7FFFF4F0, 0x7FFFF4F7) AM_WRITE(bebox_processor_resets_w ) - - AM_RANGE(0x80000000, 0x8000001F) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffffffffffffU ) - AM_RANGE(0x80000020, 0x8000003F) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0xffffffffffffffffU ) - AM_RANGE(0x80000040, 0x8000005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffffffffffffU ) - AM_RANGE(0x80000060, 0x8000006F) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffffffffffffffffU ) - AM_RANGE(0x80000070, 0x8000007F) AM_DEVREADWRITE8("rtc", mc146818_device, read, write , 0xffffffffffffffffU ) - AM_RANGE(0x80000080, 0x8000009F) AM_READWRITE8(bebox_page_r, bebox_page_w, 0xffffffffffffffffU ) - AM_RANGE(0x800000A0, 0x800000BF) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffffffffffffU ) - AM_RANGE(0x800000C0, 0x800000DF) AM_READWRITE8(at_dma8237_1_r, at_dma8237_1_w, 0xffffffffffffffffU) - AM_RANGE(0x800001F0, 0x800001F7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffffffffffffU ) - AM_RANGE(0x800002F8, 0x800002FF) AM_DEVREADWRITE8( "ns16550_1", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU ) - AM_RANGE(0x80000380, 0x80000387) AM_DEVREADWRITE8( "ns16550_2", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU ) - AM_RANGE(0x80000388, 0x8000038F) AM_DEVREADWRITE8( "ns16550_3", ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU ) - AM_RANGE(0x800003b0, 0x800003bf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03b0_r, port_03b0_w, 0xffffffffffffffffU) - AM_RANGE(0x800003c0, 0x800003cf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03c0_r, port_03c0_w, 0xffffffffffffffffU) - AM_RANGE(0x800003d0, 0x800003df) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03d0_r, port_03d0_w, 0xffffffffffffffffU) - AM_RANGE(0x800003F0, 0x800003F7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffffffffffffU ) - AM_RANGE(0x800003F0, 0x800003F7) AM_DEVICE8( "smc37c78", smc37c78_device, map, 0xffffffffffffffffU ) - AM_RANGE(0x800003F8, 0x800003FF) AM_DEVREADWRITE8( "ns16550_0",ns16550_device, ins8250_r, ins8250_w, 0xffffffffffffffffU ) - AM_RANGE(0x80000480, 0x8000048F) AM_READWRITE8(bebox_80000480_r, bebox_80000480_w, 0xffffffffffffffffU ) - AM_RANGE(0x80000CF8, 0x80000CFF) AM_DEVREADWRITE("pcibus", pci_bus_device, read_64be, write_64be ) +void bebox_state::bebox_mem(address_map &map) +{ + map(0x7FFFF0F0, 0x7FFFF0F7).rw(this, FUNC(bebox_state::bebox_cpu0_imask_r), FUNC(bebox_state::bebox_cpu0_imask_w)); + map(0x7FFFF1F0, 0x7FFFF1F7).rw(this, FUNC(bebox_state::bebox_cpu1_imask_r), FUNC(bebox_state::bebox_cpu1_imask_w)); + map(0x7FFFF2F0, 0x7FFFF2F7).r(this, FUNC(bebox_state::bebox_interrupt_sources_r)); + map(0x7FFFF3F0, 0x7FFFF3F7).rw(this, FUNC(bebox_state::bebox_crossproc_interrupts_r), FUNC(bebox_state::bebox_crossproc_interrupts_w)); + map(0x7FFFF4F0, 0x7FFFF4F7).w(this, FUNC(bebox_state::bebox_processor_resets_w)); + + map(0x80000000, 0x8000001F).rw(m_dma8237_1, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x80000020, 0x8000003F).rw(m_pic8259_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x80000040, 0x8000005f).rw(m_pit8254, FUNC(pit8254_device::read), FUNC(pit8254_device::write)); + map(0x80000060, 0x8000006F).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w)); + map(0x80000070, 0x8000007F).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)); + map(0x80000080, 0x8000009F).rw(this, FUNC(bebox_state::bebox_page_r), FUNC(bebox_state::bebox_page_w)); + map(0x800000A0, 0x800000BF).rw(m_pic8259_2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x800000C0, 0x800000DF).rw(this, FUNC(bebox_state::at_dma8237_1_r), FUNC(bebox_state::at_dma8237_1_w)); + map(0x800001F0, 0x800001F7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x800002F8, 0x800002FF).rw("ns16550_1", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x80000380, 0x80000387).rw("ns16550_2", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x80000388, 0x8000038F).rw("ns16550_3", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x800003b0, 0x800003bf).rw("vga", FUNC(cirrus_gd5428_device::port_03b0_r), FUNC(cirrus_gd5428_device::port_03b0_w)); + map(0x800003c0, 0x800003cf).rw("vga", FUNC(cirrus_gd5428_device::port_03c0_r), FUNC(cirrus_gd5428_device::port_03c0_w)); + map(0x800003d0, 0x800003df).rw("vga", FUNC(cirrus_gd5428_device::port_03d0_r), FUNC(cirrus_gd5428_device::port_03d0_w)); + map(0x800003F0, 0x800003F7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); + map(0x800003F0, 0x800003F7).m(m_smc37c78, FUNC(smc37c78_device::map)); + map(0x800003F8, 0x800003FF).rw("ns16550_0", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x80000480, 0x8000048F).rw(this, FUNC(bebox_state::bebox_80000480_r), FUNC(bebox_state::bebox_80000480_w)); + map(0x80000CF8, 0x80000CFF).rw(m_pcibus, FUNC(pci_bus_device::read_64be), FUNC(pci_bus_device::write_64be)); //AM_RANGE(0x800042E8, 0x800042EF) AM_DEVWRITE8("cirrus", cirrus_device, cirrus_42E8_w, 0xffffffffffffffffU ) - AM_RANGE(0xBFFFFFF0, 0xBFFFFFFF) AM_READ(bebox_interrupt_ack_r ) - AM_RANGE(0xC00A0000, 0xC00BFFFF) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_r, mem_w, 0xffffffffffffffffU ) - AM_RANGE(0xC1000000, 0xC11FFFFF) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_linear_r, mem_linear_w, 0xffffffffffffffffU ) - AM_RANGE(0xFFF00000, 0xFFF03FFF) AM_ROMBANK("bank2") - AM_RANGE(0xFFF04000, 0xFFFFFFFF) AM_READWRITE8(bebox_flash_r, bebox_flash_w, 0xffffffffffffffffU ) -ADDRESS_MAP_END + map(0xBFFFFFF0, 0xBFFFFFFF).r(this, FUNC(bebox_state::bebox_interrupt_ack_r)); + map(0xC00A0000, 0xC00BFFFF).rw("vga", FUNC(cirrus_gd5428_device::mem_r), FUNC(cirrus_gd5428_device::mem_w)); + map(0xC1000000, 0xC11FFFFF).rw("vga", FUNC(cirrus_gd5428_device::mem_linear_r), FUNC(cirrus_gd5428_device::mem_linear_w)); + map(0xFFF00000, 0xFFF03FFF).bankr("bank2"); + map(0xFFF04000, 0xFFFFFFFF).rw(this, FUNC(bebox_state::bebox_flash_r), FUNC(bebox_state::bebox_flash_w)); +} // The following is a gross hack to let the BeBox boot ROM identify the processors correctly. // This needs to be done in a better way if someone comes up with one. @@ -82,11 +83,12 @@ READ64_MEMBER(bebox_state::bb_slave_64be_r) return m_pcibus->read_64be(space, offset, mem_mask); } -ADDRESS_MAP_START(bebox_state::bebox_slave_mem) - AM_IMPORT_FROM(bebox_mem) - AM_RANGE(0x80000cf8, 0x80000cff) AM_READ(bb_slave_64be_r) - AM_RANGE(0x80000cf8, 0x80000cff) AM_DEVWRITE("pcibus", pci_bus_device, write_64be ) -ADDRESS_MAP_END +void bebox_state::bebox_slave_mem(address_map &map) +{ + bebox_mem(map); + map(0x80000cf8, 0x80000cff).r(this, FUNC(bebox_state::bb_slave_64be_r)); + map(0x80000cf8, 0x80000cff).w(m_pcibus, FUNC(pci_bus_device::write_64be)); +} #define BYTE_REVERSE32(x) (((x >> 24) & 0xff) | \ ((x >> 8) & 0xff00) | \ diff --git a/src/mame/drivers/beehive.cpp b/src/mame/drivers/beehive.cpp index 67a47ffffbe..1ca364f58bd 100644 --- a/src/mame/drivers/beehive.cpp +++ b/src/mame/drivers/beehive.cpp @@ -67,20 +67,22 @@ WRITE8_MEMBER(beehive_state::beehive_62_w) m_keyline = data; } -ADDRESS_MAP_START(beehive_state::beehive_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x17ff ) AM_ROM - AM_RANGE( 0x8000, 0x8fff ) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(beehive_state::beehive_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x11, 0x11) AM_READ_PORT("DIPS") - AM_RANGE(0x60, 0x60) AM_READ(beehive_60_r) - AM_RANGE(0x61, 0x61) AM_READ_PORT("MODIFIERS") - AM_RANGE(0x62, 0x62) AM_WRITE(beehive_62_w) -ADDRESS_MAP_END +void beehive_state::beehive_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x17ff).rom(); + map(0x8000, 0x8fff).ram().share("videoram"); +} + +void beehive_state::beehive_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x11, 0x11).portr("DIPS"); + map(0x60, 0x60).r(this, FUNC(beehive_state::beehive_60_r)); + map(0x61, 0x61).portr("MODIFIERS"); + map(0x62, 0x62).w(this, FUNC(beehive_state::beehive_62_w)); +} /* Input ports */ static INPUT_PORTS_START( beehive ) diff --git a/src/mame/drivers/beezer.cpp b/src/mame/drivers/beezer.cpp index e8c91fd7838..ad78b0f5588 100644 --- a/src/mame/drivers/beezer.cpp +++ b/src/mame/drivers/beezer.cpp @@ -133,38 +133,41 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(beezer_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc000, 0xcfff) AM_DEVICE("sysbank", address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xdfff) AM_ROM AM_REGION("maincpu", 0x0000) AM_WRITE(bankswitch_w) // g1 - AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION("maincpu", 0x1000) // g3 - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x2000) // g5 -ADDRESS_MAP_END - -ADDRESS_MAP_START(beezer_state::banked_map) - AM_RANGE(0x0600, 0x0600) AM_MIRROR(0x1ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0800, 0x080f) AM_MIRROR(0x1f0) AM_WRITE(palette_w) - AM_RANGE(0x0a00, 0x0a00) AM_MIRROR(0x1ff) AM_READ(line_r) - AM_RANGE(0x0e00, 0x0e0f) AM_MIRROR(0x1f0) AM_DEVREADWRITE("via_u6", via6522_device, read, write) - AM_RANGE(0x1000, 0x1fff) AM_ROMBANK("rombank_f1") - AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("rombank_f3") - AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("rombank_e1") - AM_RANGE(0x4000, 0x4fff) AM_ROMBANK("rombank_e3") - AM_RANGE(0x5000, 0x5fff) AM_ROMBANK("rombank_e5") - AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("rombank_f5") - AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("rombank_f7") -ADDRESS_MAP_END - -ADDRESS_MAP_START(beezer_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM // 0d - AM_RANGE(0x0800, 0x0fff) AM_RAM // 2d, optional (can be rom) - AM_RANGE(0x1000, 0x1007) AM_MIRROR(0x07f8) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via_u18", via6522_device, read, write) - AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_WRITE(dac_w) +void beezer_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).ram().share("videoram"); + map(0xc000, 0xcfff).m(m_sysbank, FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xdfff).rom().region("maincpu", 0x0000).w(this, FUNC(beezer_state::bankswitch_w)); // g1 + map(0xe000, 0xefff).rom().region("maincpu", 0x1000); // g3 + map(0xf000, 0xffff).rom().region("maincpu", 0x2000); // g5 +} + +void beezer_state::banked_map(address_map &map) +{ + map(0x0600, 0x0600).mirror(0x1ff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0800, 0x080f).mirror(0x1f0).w(this, FUNC(beezer_state::palette_w)); + map(0x0a00, 0x0a00).mirror(0x1ff).r(this, FUNC(beezer_state::line_r)); + map(0x0e00, 0x0e0f).mirror(0x1f0).rw("via_u6", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x1000, 0x1fff).bankr("rombank_f1"); + map(0x2000, 0x2fff).bankr("rombank_f3"); + map(0x3000, 0x3fff).bankr("rombank_e1"); + map(0x4000, 0x4fff).bankr("rombank_e3"); + map(0x5000, 0x5fff).bankr("rombank_e5"); + map(0x6000, 0x6fff).bankr("rombank_f5"); + map(0x7000, 0x7fff).bankr("rombank_f7"); +} + +void beezer_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); // 0d + map(0x0800, 0x0fff).ram(); // 2d, optional (can be rom) + map(0x1000, 0x1007).mirror(0x07f8).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x1800, 0x180f).mirror(0x07f0).rw(m_via_audio, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x8000, 0x8003).mirror(0x1ffc).w(this, FUNC(beezer_state::dac_w)); // AM_RANGE(0xa000, 0xbfff) AM_ROM // 2d (can be ram, unpopulated) // AM_RANGE(0xc000, 0xdfff) AM_ROM // 4d (unpopulated) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) // 6d -ADDRESS_MAP_END + map(0xe000, 0xffff).rom().region("audiocpu", 0); // 6d +} //************************************************************************** diff --git a/src/mame/drivers/belatra.cpp b/src/mame/drivers/belatra.cpp index 357a2f33ed9..2bf1b93fe68 100644 --- a/src/mame/drivers/belatra.cpp +++ b/src/mame/drivers/belatra.cpp @@ -62,9 +62,10 @@ protected: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(belatra_state::belatra_map) - AM_RANGE(0x00000000, 0x003fffff) AM_ROM -ADDRESS_MAP_END +void belatra_state::belatra_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom(); +} static INPUT_PORTS_START( belatra ) INPUT_PORTS_END diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp index 3fe6f08e68b..2f2092fddac 100644 --- a/src/mame/drivers/berzerk.cpp +++ b/src/mame/drivers/berzerk.cpp @@ -604,25 +604,27 @@ void berzerk_state::sound_reset() * *************************************/ -ADDRESS_MAP_START(berzerk_state::berzerk_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(magicram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xc000, 0xffff) AM_NOP -ADDRESS_MAP_END +void berzerk_state::berzerk_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x0bff).mirror(0x0400).ram().share("nvram"); + map(0x1000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x7fff).ram().w(this, FUNC(berzerk_state::magicram_w)).share("videoram"); + map(0x8000, 0x87ff).mirror(0x3800).ram().share("colorram"); + map(0xc000, 0xffff).noprw(); +} -ADDRESS_MAP_START(berzerk_state::frenzy_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(magicram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xc000, 0xcfff) AM_ROM - AM_RANGE(0xf800, 0xfbff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void berzerk_state::frenzy_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x7fff).ram().w(this, FUNC(berzerk_state::magicram_w)).share("videoram"); + map(0x8000, 0x87ff).mirror(0x3800).ram().share("colorram"); + map(0xc000, 0xcfff).rom(); + map(0xf800, 0xfbff).mirror(0x0400).ram().share("nvram"); +} @@ -632,30 +634,31 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(berzerk_state::berzerk_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_NOP - AM_RANGE(0x40, 0x47) AM_READWRITE(audio_r, audio_w) - AM_RANGE(0x48, 0x48) AM_READ_PORT("P1") AM_WRITENOP - AM_RANGE(0x49, 0x49) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE(0x4a, 0x4a) AM_READ_PORT("P2") AM_WRITENOP - AM_RANGE(0x4b, 0x4b) AM_READNOP AM_WRITE(magicram_control_w) - AM_RANGE(0x4c, 0x4c) AM_READWRITE(nmi_enable_r, nmi_enable_w) - AM_RANGE(0x4d, 0x4d) AM_READWRITE(nmi_disable_r, nmi_disable_w) - AM_RANGE(0x4e, 0x4e) AM_READ(intercept_v256_r) AM_WRITENOP // note reading from here should clear pending frame interrupts, see zfb-1.tiff 74ls74 at 3D pin 13 /CLR - AM_RANGE(0x4f, 0x4f) AM_READNOP AM_WRITE(irq_enable_w) - AM_RANGE(0x50, 0x57) AM_NOP /* second sound board, initialized but not used */ - AM_RANGE(0x58, 0x5f) AM_NOP - AM_RANGE(0x60, 0x60) AM_MIRROR(0x18) AM_READ_PORT("F3") AM_WRITENOP - AM_RANGE(0x61, 0x61) AM_MIRROR(0x18) AM_READ_PORT("F2") AM_WRITENOP - AM_RANGE(0x62, 0x62) AM_MIRROR(0x18) AM_READ_PORT("F6") AM_WRITENOP - AM_RANGE(0x63, 0x63) AM_MIRROR(0x18) AM_READ_PORT("F5") AM_WRITENOP - AM_RANGE(0x64, 0x64) AM_MIRROR(0x18) AM_READ_PORT("F4") AM_WRITENOP - AM_RANGE(0x65, 0x65) AM_MIRROR(0x18) AM_READ_PORT("SW2") AM_WRITENOP - AM_RANGE(0x66, 0x66) AM_MIRROR(0x18) AM_READWRITE(led_off_r, led_off_w) - AM_RANGE(0x67, 0x67) AM_MIRROR(0x18) AM_READWRITE(led_on_r, led_on_w) - AM_RANGE(0x80, 0xff) AM_NOP -ADDRESS_MAP_END +void berzerk_state::berzerk_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).noprw(); + map(0x40, 0x47).rw(this, FUNC(berzerk_state::audio_r), FUNC(berzerk_state::audio_w)); + map(0x48, 0x48).portr("P1").nopw(); + map(0x49, 0x49).portr("SYSTEM").nopw(); + map(0x4a, 0x4a).portr("P2").nopw(); + map(0x4b, 0x4b).nopr().w(this, FUNC(berzerk_state::magicram_control_w)); + map(0x4c, 0x4c).rw(this, FUNC(berzerk_state::nmi_enable_r), FUNC(berzerk_state::nmi_enable_w)); + map(0x4d, 0x4d).rw(this, FUNC(berzerk_state::nmi_disable_r), FUNC(berzerk_state::nmi_disable_w)); + map(0x4e, 0x4e).r(this, FUNC(berzerk_state::intercept_v256_r)).nopw(); // note reading from here should clear pending frame interrupts, see zfb-1.tiff 74ls74 at 3D pin 13 /CLR + map(0x4f, 0x4f).nopr().w(this, FUNC(berzerk_state::irq_enable_w)); + map(0x50, 0x57).noprw(); /* second sound board, initialized but not used */ + map(0x58, 0x5f).noprw(); + map(0x60, 0x60).mirror(0x18).portr("F3").nopw(); + map(0x61, 0x61).mirror(0x18).portr("F2").nopw(); + map(0x62, 0x62).mirror(0x18).portr("F6").nopw(); + map(0x63, 0x63).mirror(0x18).portr("F5").nopw(); + map(0x64, 0x64).mirror(0x18).portr("F4").nopw(); + map(0x65, 0x65).mirror(0x18).portr("SW2").nopw(); + map(0x66, 0x66).mirror(0x18).rw(this, FUNC(berzerk_state::led_off_r), FUNC(berzerk_state::led_off_w)); + map(0x67, 0x67).mirror(0x18).rw(this, FUNC(berzerk_state::led_on_r), FUNC(berzerk_state::led_on_w)); + map(0x80, 0xff).noprw(); +} diff --git a/src/mame/drivers/besta.cpp b/src/mame/drivers/besta.cpp index 8b7c3bcf4ee..ea84bb7d332 100644 --- a/src/mame/drivers/besta.cpp +++ b/src/mame/drivers/besta.cpp @@ -102,21 +102,22 @@ void besta_state::kbd_put(u8 data) m_term_data = data; } -ADDRESS_MAP_START(besta_state::besta_mem) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // local bus DRAM, 4MB +void besta_state::besta_mem(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("p_ram"); // local bus DRAM, 4MB // AM_RANGE(0x08010000, 0x08011fff) AM_RAM // unknown -- accessed by cp31dssp // AM_RANGE(0xfca03500, 0xfca0350f) AM_READWRITE8(iscsi_reg_r, iscsi_reg_w, 0xffffffff) - AM_RANGE(0xff000000, 0xff00ffff) AM_ROM AM_REGION("user1", 0) // actual mapping is up to 0xff03ffff - AM_RANGE(0xff040000, 0xff07ffff) AM_RAM // onboard SRAM + map(0xff000000, 0xff00ffff).rom().region("user1", 0); // actual mapping is up to 0xff03ffff + map(0xff040000, 0xff07ffff).ram(); // onboard SRAM // AM_RANGE(0xff800000, 0xff80001f) AM_DEVREADWRITE8("mpcc", mpcc68561_t, reg_r, reg_w, 0xffffffff) - AM_RANGE(0xff800000, 0xff80001f) AM_READWRITE8(mpcc_reg_r, mpcc_reg_w, 0xffffffff) // console - AM_RANGE(0xff800200, 0xff800237) AM_DEVREADWRITE8 ("pit2", pit68230_device, read, write, 0xffffffff) + map(0xff800000, 0xff80001f).rw(this, FUNC(besta_state::mpcc_reg_r), FUNC(besta_state::mpcc_reg_w)); // console + map(0xff800200, 0xff800237).rw(m_pit2, FUNC(pit68230_device::read), FUNC(pit68230_device::write)); // AM_RANGE(0xff800400, 0xff800xxx) // ??? -- shows up in cp31dssp log // AM_RANGE(0xff800800, 0xff800xxx) // 68153 BIM // AM_RANGE(0xff800a00, 0xff800xxx) // 62421 RTC - AM_RANGE(0xff800c00, 0xff800c37) AM_DEVREADWRITE8 ("pit1", pit68230_device, read, write, 0xffffffff) + map(0xff800c00, 0xff800c37).rw(m_pit1, FUNC(pit68230_device::read), FUNC(pit68230_device::write)); // AM_RANGE(0xff800e00, 0xff800xxx) // PIT3? -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( besta ) diff --git a/src/mame/drivers/bestleag.cpp b/src/mame/drivers/bestleag.cpp index 9a3031a9748..4fe0780db7d 100644 --- a/src/mame/drivers/bestleag.cpp +++ b/src/mame/drivers/bestleag.cpp @@ -250,25 +250,26 @@ WRITE16_MEMBER(bestleag_state::oki_bank_w) /* Memory Map */ -ADDRESS_MAP_START(bestleag_state::bestleag_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0d2000, 0x0d3fff) AM_NOP // left over from the original game (only read / written in memory test) - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram") - AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") - AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE(txram_w) AM_SHARE("txram") - AM_RANGE(0x0f8000, 0x0f800b) AM_RAM AM_SHARE("vregs") - AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2") - AM_RANGE(0x300016, 0x300017) AM_READ_PORT("DSWA") - AM_RANGE(0x300018, 0x300019) AM_READ_PORT("DSWB") - AM_RANGE(0x30001c, 0x30001d) AM_WRITE(oki_bank_w) - AM_RANGE(0x30001e, 0x30001f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x304000, 0x304001) AM_WRITENOP - AM_RANGE(0xfe0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void bestleag_state::bestleag_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0d2000, 0x0d3fff).noprw(); // left over from the original game (only read / written in memory test) + map(0x0e0000, 0x0e3fff).ram().w(this, FUNC(bestleag_state::bgram_w)).share("bgram"); + map(0x0e8000, 0x0ebfff).ram().w(this, FUNC(bestleag_state::fgram_w)).share("fgram"); + map(0x0f0000, 0x0f3fff).ram().w(this, FUNC(bestleag_state::txram_w)).share("txram"); + map(0x0f8000, 0x0f800b).ram().share("vregs"); + map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x300010, 0x300011).portr("SYSTEM"); + map(0x300012, 0x300013).portr("P1"); + map(0x300014, 0x300015).portr("P2"); + map(0x300016, 0x300017).portr("DSWA"); + map(0x300018, 0x300019).portr("DSWB"); + map(0x30001c, 0x30001d).w(this, FUNC(bestleag_state::oki_bank_w)); + map(0x30001f, 0x30001f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x304000, 0x304001).nopw(); + map(0xfe0000, 0xffffff).ram(); +} #define BESTLEAG_PLAYER_INPUT( player ) \ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) PORT_8WAY \ diff --git a/src/mame/drivers/beta.cpp b/src/mame/drivers/beta.cpp index 1995b4d3950..fb7e06d64bb 100644 --- a/src/mame/drivers/beta.cpp +++ b/src/mame/drivers/beta.cpp @@ -104,11 +104,12 @@ private: /* Memory Maps */ -ADDRESS_MAP_START(beta_state::beta_mem) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_new_device, ram_map) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x7f00) AM_DEVICE(M6532_TAG, mos6532_new_device, io_map) - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x7800) AM_ROM -ADDRESS_MAP_END +void beta_state::beta_mem(address_map &map) +{ + map(0x0000, 0x007f).mirror(0x7f00).m(M6532_TAG, FUNC(mos6532_new_device::ram_map)); + map(0x0080, 0x00ff).mirror(0x7f00).m(M6532_TAG, FUNC(mos6532_new_device::io_map)); + map(0x8000, 0x87ff).mirror(0x7800).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/bfcobra.cpp b/src/mame/drivers/bfcobra.cpp index 925b1b2059a..8a6768fea69 100644 --- a/src/mame/drivers/bfcobra.cpp +++ b/src/mame/drivers/bfcobra.cpp @@ -1262,31 +1262,34 @@ void bfcobra_state::machine_reset() ***************************************************************************/ -ADDRESS_MAP_START(bfcobra_state::z80_prog_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank4") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank1") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank2") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bfcobra_state::z80_io_map) -ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x23) AM_READWRITE(chipset_r, chipset_w) - AM_RANGE(0x24, 0x25) AM_DEVWRITE("acia6850_0", acia6850_device, write) - AM_RANGE(0x26, 0x27) AM_DEVREAD("acia6850_0", acia6850_device, read) - AM_RANGE(0x30, 0x30) AM_READ(fdctrl_r) - AM_RANGE(0x31, 0x31) AM_READWRITE(fddata_r, fdctrl_w) - AM_RANGE(0x40, 0x40) AM_WRITE(rombank_w) - AM_RANGE(0x50, 0x50) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("ramdac", ramdac_device, pal_r, pal_w) - AM_RANGE(0x52, 0x52) AM_DEVWRITE("ramdac", ramdac_device, mask_w) - AM_RANGE(0x53, 0x53) AM_DEVWRITE("ramdac", ramdac_device, index_r_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bfcobra_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void bfcobra_state::z80_prog_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank4"); + map(0x4000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xbfff).bankrw("bank2"); + map(0xc000, 0xffff).bankrw("bank3"); +} + +void bfcobra_state::z80_io_map(address_map &map) +{ +map.global_mask(0xff); + map(0x00, 0x23).rw(this, FUNC(bfcobra_state::chipset_r), FUNC(bfcobra_state::chipset_w)); + map(0x24, 0x25).w(m_acia6850_0, FUNC(acia6850_device::write)); + map(0x26, 0x27).r(m_acia6850_0, FUNC(acia6850_device::read)); + map(0x30, 0x30).r(this, FUNC(bfcobra_state::fdctrl_r)); + map(0x31, 0x31).rw(this, FUNC(bfcobra_state::fddata_r), FUNC(bfcobra_state::fdctrl_w)); + map(0x40, 0x40).w(this, FUNC(bfcobra_state::rombank_w)); + map(0x50, 0x50).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x51, 0x51).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w)); + map(0x52, 0x52).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x53, 0x53).w("ramdac", FUNC(ramdac_device::index_r_w)); +} + + +void bfcobra_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} /*************************************************************************** @@ -1398,25 +1401,26 @@ WRITE8_MEMBER(bfcobra_state::upd_w) m_upd7759->start_w(data & 0x40 ? 0 : 1); } -ADDRESS_MAP_START(bfcobra_state::m6809_prog_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x2000) AM_RAM // W 'B', 6F - AM_RANGE(0x2200, 0x2200) AM_RAM // W 'F' - AM_RANGE(0x2600, 0x2600) AM_READWRITE(meter_r, meter_w) - AM_RANGE(0x2800, 0x2800) AM_RAM // W - AM_RANGE(0x2A00, 0x2A02) AM_READWRITE(latch_r, latch_w) - AM_RANGE(0x2E00, 0x2E00) AM_READ(int_latch_r) - AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x3201, 0x3201) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x3404, 0x3405) AM_DEVREADWRITE("acia6850_1", acia6850_device, read, write) - AM_RANGE(0x3406, 0x3407) AM_DEVREADWRITE("acia6850_2", acia6850_device, read, write) +void bfcobra_state::m6809_prog_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x2000).ram(); // W 'B', 6F + map(0x2200, 0x2200).ram(); // W 'F' + map(0x2600, 0x2600).rw(this, FUNC(bfcobra_state::meter_r), FUNC(bfcobra_state::meter_w)); + map(0x2800, 0x2800).ram(); // W + map(0x2A00, 0x2A02).rw(this, FUNC(bfcobra_state::latch_r), FUNC(bfcobra_state::latch_w)); + map(0x2E00, 0x2E00).r(this, FUNC(bfcobra_state::int_latch_r)); + map(0x3001, 0x3001).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x3201, 0x3201).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x3404, 0x3405).rw(m_acia6850_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x3406, 0x3407).rw(m_acia6850_2, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // AM_RANGE(0x3408, 0x3408) AM_NOP // AM_RANGE(0x340A, 0x340A) AM_NOP // AM_RANGE(0x3600, 0x3600) AM_NOP - AM_RANGE(0x3801, 0x3801) AM_READWRITE(upd_r, upd_w) - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* Watchdog */ -ADDRESS_MAP_END + map(0x3801, 0x3801).rw(this, FUNC(bfcobra_state::upd_r), FUNC(bfcobra_state::upd_w)); + map(0x8000, 0xffff).rom(); + map(0xf000, 0xf000).nopw(); /* Watchdog */ +} static INPUT_PORTS_START( bfcobra ) PORT_START("STROBE0") diff --git a/src/mame/drivers/bfm_ad5.cpp b/src/mame/drivers/bfm_ad5.cpp index 604262efb9a..342e5a778c7 100644 --- a/src/mame/drivers/bfm_ad5.cpp +++ b/src/mame/drivers/bfm_ad5.cpp @@ -59,15 +59,16 @@ DRIVER_INIT_MEMBER(adder5_state,ad5) } -ADDRESS_MAP_START(adder5_state::ad5_map) - AM_RANGE(0x00000000, 0x00ffffff) AM_ROM - AM_RANGE(0x01000000, 0x0100ffff) AM_RAM - AM_RANGE(0x40000000, 0x40000fff) AM_RAM - AM_RANGE(0x80000000, 0x8000ffff) AM_RAM - AM_RANGE(0x80800000, 0x8080ffff) AM_RAM - - AM_RANGE(0xffff0000, 0xffff03ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR -ADDRESS_MAP_END +void adder5_state::ad5_map(address_map &map) +{ + map(0x00000000, 0x00ffffff).rom(); + map(0x01000000, 0x0100ffff).ram(); + map(0x40000000, 0x40000fff).ram(); + map(0x80000000, 0x8000ffff).ram(); + map(0x80800000, 0x8080ffff).ram(); + + map(0xffff0000, 0xffff03ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR +} INPUT_PORTS_START( bfm_ad5 ) INPUT_PORTS_END diff --git a/src/mame/drivers/bfm_sc1.cpp b/src/mame/drivers/bfm_sc1.cpp index a225b4c4ded..b3b0b562529 100644 --- a/src/mame/drivers/bfm_sc1.cpp +++ b/src/mame/drivers/bfm_sc1.cpp @@ -670,65 +670,68 @@ void bfm_sc1_state::machine_reset() // scorpion1 board memory map /////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -ADDRESS_MAP_START(bfm_sc1_state::sc1_base) +void bfm_sc1_state::sc1_base(address_map &map) +{ - AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_SHARE("nvram") //8k RAM - AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 2+3 latch - AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch - AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch + map(0x0000, 0x1FFF).ram().share("nvram"); //8k RAM + map(0x2000, 0x21FF).w(this, FUNC(bfm_sc1_state::reel34_w)); // reel 2+3 latch + map(0x2200, 0x23FF).w(this, FUNC(bfm_sc1_state::reel12_w)); // reel 1+2 latch + map(0x2400, 0x25FF).w(this, FUNC(bfm_sc1_state::vfd_w)); // vfd latch - AM_RANGE(0x2600, 0x27FF) AM_READWRITE(mmtr_r,mmtr_w) // mechanical meters - AM_RANGE(0x2800, 0x2800) AM_READWRITE(triac_r,triac_w) // payslide triacs + map(0x2600, 0x27FF).rw(this, FUNC(bfm_sc1_state::mmtr_r), FUNC(bfm_sc1_state::mmtr_w)); // mechanical meters + map(0x2800, 0x2800).rw(this, FUNC(bfm_sc1_state::triac_r), FUNC(bfm_sc1_state::triac_w)); // payslide triacs - AM_RANGE(0x2A00, 0x2A00) AM_READWRITE(mux1latch_r,mux1latch_w) // mux1 - AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux1datlo_r,mux1datlo_w) - AM_RANGE(0x2A02, 0x2A02) AM_READWRITE(mux1dathi_r,mux1dathi_w) + map(0x2A00, 0x2A00).rw(this, FUNC(bfm_sc1_state::mux1latch_r), FUNC(bfm_sc1_state::mux1latch_w)); // mux1 + map(0x2A01, 0x2A01).rw(this, FUNC(bfm_sc1_state::mux1datlo_r), FUNC(bfm_sc1_state::mux1datlo_w)); + map(0x2A02, 0x2A02).rw(this, FUNC(bfm_sc1_state::mux1dathi_r), FUNC(bfm_sc1_state::mux1dathi_w)); - AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch + map(0x2E00, 0x2E00).r(this, FUNC(bfm_sc1_state::irqlatch_r)); // irq latch - AM_RANGE(0x3001, 0x3001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x3101, 0x3201) AM_DEVWRITE("aysnd", ay8910_device, address_w) + map(0x3001, 0x3001).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x3001, 0x3001).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x3101, 0x3201).w("aysnd", FUNC(ay8910_device::address_w)); - AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w) // MC6850 status register - AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w) // MC6850 data register + map(0x3406, 0x3406).rw(this, FUNC(bfm_sc1_state::aciastat_r), FUNC(bfm_sc1_state::aciactrl_w)); // MC6850 status register + map(0x3407, 0x3407).rw(this, FUNC(bfm_sc1_state::aciadata_r), FUNC(bfm_sc1_state::aciadata_w)); // MC6850 data register - AM_RANGE(0x3408, 0x3408) AM_READWRITE(mux2latch_r,mux2latch_w) // mux2 - AM_RANGE(0x3409, 0x3409) AM_READWRITE(mux2datlo_r,mux2datlo_w) - AM_RANGE(0x340A, 0x340A) AM_READWRITE(mux2dathi_r,mux2dathi_w) + map(0x3408, 0x3408).rw(this, FUNC(bfm_sc1_state::mux2latch_r), FUNC(bfm_sc1_state::mux2latch_w)); // mux2 + map(0x3409, 0x3409).rw(this, FUNC(bfm_sc1_state::mux2datlo_r), FUNC(bfm_sc1_state::mux2datlo_w)); + map(0x340A, 0x340A).rw(this, FUNC(bfm_sc1_state::mux2dathi_r), FUNC(bfm_sc1_state::mux2dathi_w)); - AM_RANGE(0x3600, 0x3600) AM_WRITE(bankswitch_w) // write bank - AM_RANGE(0x3800, 0x39FF) AM_WRITE(reel56_w) // reel 5+6 latch + map(0x3600, 0x3600).w(this, FUNC(bfm_sc1_state::bankswitch_w)); // write bank + map(0x3800, 0x39FF).w(this, FUNC(bfm_sc1_state::reel56_w)); // reel 5+6 latch - AM_RANGE(0x4000, 0x5FFF) AM_ROM // 8k ROM - AM_RANGE(0x6000, 0x7FFF) AM_ROMBANK("bank1") // 8k paged ROM (4 pages) - AM_RANGE(0x8000, 0xFFFF) AM_ROM AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) // 32k ROM + map(0x4000, 0x5FFF).rom(); // 8k ROM + map(0x6000, 0x7FFF).bankr("bank1"); // 8k paged ROM (4 pages) + map(0x8000, 0xFFFF).rom().w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 32k ROM -ADDRESS_MAP_END +} ///////////////////////////////////////////////////////////////////////////////////// // scorpion1 board + adder2 expansion memory map //////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -ADDRESS_MAP_START(bfm_sc1_state::sc1_adder2) - AM_IMPORT_FROM( sc1_base ) +void bfm_sc1_state::sc1_adder2(address_map &map) +{ + sc1_base(map); - AM_RANGE(0x3E00, 0x3E00) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_ctrl_r,vid_uart_ctrl_w) // video uart control reg read - AM_RANGE(0x3E01, 0x3E01) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_rx_r,vid_uart_tx_w) // video uart receive reg -ADDRESS_MAP_END + map(0x3E00, 0x3E00).rw("adder2", FUNC(bfm_adder2_device::vid_uart_ctrl_r), FUNC(bfm_adder2_device::vid_uart_ctrl_w)); // video uart control reg read + map(0x3E01, 0x3E01).rw("adder2", FUNC(bfm_adder2_device::vid_uart_rx_r), FUNC(bfm_adder2_device::vid_uart_tx_w)); // video uart receive reg +} ///////////////////////////////////////////////////////////////////////////////////// // scorpion1 board + upd7759 soundcard memory map /////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -ADDRESS_MAP_START(bfm_sc1_state::sc1_viper) - AM_IMPORT_FROM( sc1_base ) +void bfm_sc1_state::sc1_viper(address_map &map) +{ + sc1_base(map); - AM_RANGE(0x3404, 0x3404) AM_READ(dipcoin_r ) // coin input on gamecard - AM_RANGE(0x3801, 0x3801) AM_READ(nec_r) - AM_RANGE(0x3800, 0x39FF) AM_WRITE(nec_latch_w) -ADDRESS_MAP_END + map(0x3404, 0x3404).r(this, FUNC(bfm_sc1_state::dipcoin_r)); // coin input on gamecard + map(0x3801, 0x3801).r(this, FUNC(bfm_sc1_state::nec_r)); + map(0x3800, 0x39FF).w(this, FUNC(bfm_sc1_state::nec_latch_w)); +} // input ports for scorpion1 board ////////////////////////////////////////////////// diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp index 67642bdbe61..86a1cac5190 100644 --- a/src/mame/drivers/bfm_sc2.cpp +++ b/src/mame/drivers/bfm_sc2.cpp @@ -1529,50 +1529,51 @@ void bfm_sc2_novid_state::save_state() } -ADDRESS_MAP_START(bfm_sc2_state::sc2_basemap) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") //8k - - AM_RANGE(0x2300, 0x230B) AM_READ(mux_input_r) - AM_RANGE(0x2300, 0x231F) AM_WRITE(mux_output_w) - AM_RANGE(0x2320, 0x2323) AM_WRITE(dimas_w) /* ?unknown dim related */ - - AM_RANGE(0x2324, 0x2324) AM_READWRITE(expansion_latch_r, expansion_latch_w) - AM_RANGE(0x2325, 0x2327) AM_WRITE(unknown_w) - AM_RANGE(0x2328, 0x2328) AM_WRITE(muxena_w) - AM_RANGE(0x2329, 0x2329) AM_READWRITE(timerirqclr_r, timerirq_w) - AM_RANGE(0x232A, 0x232D) AM_WRITE(unknown_w) - AM_RANGE(0x232E, 0x232E) AM_READ(irqstatus_r) - - AM_RANGE(0x232F, 0x232F) AM_WRITE(coininhib_w) - AM_RANGE(0x2330, 0x2330) AM_WRITE(payout_latch_w) - AM_RANGE(0x2331, 0x2331) AM_WRITE(payout_triac_w) - AM_RANGE(0x2332, 0x2332) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2333, 0x2333) AM_WRITE(mmtr_w) - AM_RANGE(0x2334, 0x2335) AM_WRITE(unknown_w) - AM_RANGE(0x2336, 0x2336) AM_WRITE(dimcnt_w) - AM_RANGE(0x2337, 0x2337) AM_WRITE(volume_override_w) - AM_RANGE(0x2338, 0x2338) AM_WRITE(payout_select_w) - AM_RANGE(0x2339, 0x2339) AM_WRITE(unknown_w) - AM_RANGE(0x2400, 0x2400) AM_READWRITE(uart1stat_r, uart1ctrl_w) /* mc6850 compatible uart */ - AM_RANGE(0x2500, 0x2500) AM_READWRITE(uart1data_r, uart1data_w) - AM_RANGE(0x2600, 0x2600) AM_READWRITE(uart2stat_r, uart2ctrl_w) /* mc6850 compatible uart */ - AM_RANGE(0x2700, 0x2700) AM_READWRITE(uart2data_r, uart2data_w) - AM_RANGE(0x2800, 0x2800) AM_WRITE(vfd1_bd1_w) /* vfd1 data */ - AM_RANGE(0x2900, 0x2900) AM_WRITE(vfd_reset_w) /* vfd1+vfd2 reset line */ - AM_RANGE(0x2A00, 0x2AFF) AM_WRITE(nec_latch_w) - AM_RANGE(0x2B00, 0x2BFF) AM_WRITE(nec_reset_w) - AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w) /* custom chip unlock */ - AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w) /* write bank (rom page select for 0x6000 - 0x7fff ) */ +void bfm_sc2_state::sc2_basemap(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); //8k + + map(0x2300, 0x230B).r(this, FUNC(bfm_sc2_state::mux_input_r)); + map(0x2300, 0x231F).w(this, FUNC(bfm_sc2_state::mux_output_w)); + map(0x2320, 0x2323).w(this, FUNC(bfm_sc2_state::dimas_w)); /* ?unknown dim related */ + + map(0x2324, 0x2324).rw(this, FUNC(bfm_sc2_state::expansion_latch_r), FUNC(bfm_sc2_state::expansion_latch_w)); + map(0x2325, 0x2327).w(this, FUNC(bfm_sc2_state::unknown_w)); + map(0x2328, 0x2328).w(this, FUNC(bfm_sc2_state::muxena_w)); + map(0x2329, 0x2329).rw(this, FUNC(bfm_sc2_state::timerirqclr_r), FUNC(bfm_sc2_state::timerirq_w)); + map(0x232A, 0x232D).w(this, FUNC(bfm_sc2_state::unknown_w)); + map(0x232E, 0x232E).r(this, FUNC(bfm_sc2_state::irqstatus_r)); + + map(0x232F, 0x232F).w(this, FUNC(bfm_sc2_state::coininhib_w)); + map(0x2330, 0x2330).w(this, FUNC(bfm_sc2_state::payout_latch_w)); + map(0x2331, 0x2331).w(this, FUNC(bfm_sc2_state::payout_triac_w)); + map(0x2332, 0x2332).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2333, 0x2333).w(this, FUNC(bfm_sc2_state::mmtr_w)); + map(0x2334, 0x2335).w(this, FUNC(bfm_sc2_state::unknown_w)); + map(0x2336, 0x2336).w(this, FUNC(bfm_sc2_state::dimcnt_w)); + map(0x2337, 0x2337).w(this, FUNC(bfm_sc2_state::volume_override_w)); + map(0x2338, 0x2338).w(this, FUNC(bfm_sc2_state::payout_select_w)); + map(0x2339, 0x2339).w(this, FUNC(bfm_sc2_state::unknown_w)); + map(0x2400, 0x2400).rw(this, FUNC(bfm_sc2_state::uart1stat_r), FUNC(bfm_sc2_state::uart1ctrl_w)); /* mc6850 compatible uart */ + map(0x2500, 0x2500).rw(this, FUNC(bfm_sc2_state::uart1data_r), FUNC(bfm_sc2_state::uart1data_w)); + map(0x2600, 0x2600).rw(this, FUNC(bfm_sc2_state::uart2stat_r), FUNC(bfm_sc2_state::uart2ctrl_w)); /* mc6850 compatible uart */ + map(0x2700, 0x2700).rw(this, FUNC(bfm_sc2_state::uart2data_r), FUNC(bfm_sc2_state::uart2data_w)); + map(0x2800, 0x2800).w(this, FUNC(bfm_sc2_state::vfd1_bd1_w)); /* vfd1 data */ + map(0x2900, 0x2900).w(this, FUNC(bfm_sc2_state::vfd_reset_w)); /* vfd1+vfd2 reset line */ + map(0x2A00, 0x2AFF).w(this, FUNC(bfm_sc2_state::nec_latch_w)); + map(0x2B00, 0x2BFF).w(this, FUNC(bfm_sc2_state::nec_reset_w)); + map(0x2C00, 0x2C00).w(this, FUNC(bfm_sc2_state::unlock_w)); /* custom chip unlock */ + map(0x2D00, 0x2D01).w(m_ym2413, FUNC(ym2413_device::write)); + map(0x2E00, 0x2E00).w(this, FUNC(bfm_sc2_state::bankswitch_w)); /* write bank (rom page select for 0x6000 - 0x7fff ) */ //AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w) /* vfd2 data (not usually connected!)*/ - AM_RANGE(0x3FFE, 0x3FFE) AM_READ(direct_input_r ) - AM_RANGE(0x3FFF, 0x3FFF) AM_READ(coin_input_r) - AM_RANGE(0x4000, 0x5FFF) AM_ROM - AM_RANGE(0x4000, 0xFFFF) AM_WRITE(unknown_w) // contains unknown I/O registers - AM_RANGE(0x6000, 0x7FFF) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xFFFF) AM_ROM -ADDRESS_MAP_END + map(0x3FFE, 0x3FFE).r(this, FUNC(bfm_sc2_state::direct_input_r)); + map(0x3FFF, 0x3FFF).r(this, FUNC(bfm_sc2_state::coin_input_r)); + map(0x4000, 0x5FFF).rom(); + map(0x4000, 0xFFFF).w(this, FUNC(bfm_sc2_state::unknown_w)); // contains unknown I/O registers + map(0x6000, 0x7FFF).bankr("bank1"); + map(0x8000, 0xFFFF).rom(); +} ADDRESS_MAP_START(bfm_sc2_novid_state::memmap_no_vid) AM_IMPORT_FROM( sc2_basemap ) @@ -1584,20 +1585,21 @@ ADDRESS_MAP_END // memory map for scorpion2 board video addon ///////////////////////////// -ADDRESS_MAP_START(bfm_sc2_vid_state::memmap_vid) - AM_IMPORT_FROM( sc2_basemap ) +void bfm_sc2_vid_state::memmap_vid(address_map &map) +{ + sc2_basemap(map); - AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_hop_r) // vfd status register - AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_vid_w) - AM_RANGE(0x2100, 0x21FF) AM_WRITENOP - AM_RANGE(0x2200, 0x22FF) AM_WRITENOP + map(0x2000, 0x2000).r(this, FUNC(bfm_sc2_vid_state::vfd_status_hop_r)); // vfd status register + map(0x2000, 0x20FF).w(this, FUNC(bfm_sc2_vid_state::reel12_vid_w)); + map(0x2100, 0x21FF).nopw(); + map(0x2200, 0x22FF).nopw(); - AM_RANGE(0x3C00, 0x3C07) AM_READ(key_r) - AM_RANGE(0x3C80, 0x3C80) AM_WRITE(e2ram_w) + map(0x3C00, 0x3C07).r(this, FUNC(bfm_sc2_vid_state::key_r)); + map(0x3C80, 0x3C80).w(this, FUNC(bfm_sc2_vid_state::e2ram_w)); - AM_RANGE(0x3E00, 0x3E00) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_ctrl_r, vid_uart_ctrl_w) // video uart control reg - AM_RANGE(0x3E01, 0x3E01) AM_DEVREADWRITE("adder2", bfm_adder2_device, vid_uart_rx_r, vid_uart_tx_w) // video uart data reg -ADDRESS_MAP_END + map(0x3E00, 0x3E00).rw("adder2", FUNC(bfm_adder2_device::vid_uart_ctrl_r), FUNC(bfm_adder2_device::vid_uart_ctrl_w)); // video uart control reg + map(0x3E01, 0x3E01).rw("adder2", FUNC(bfm_adder2_device::vid_uart_rx_r), FUNC(bfm_adder2_device::vid_uart_tx_w)); // video uart data reg +} // input ports for pyramid //////////////////////////////////////// diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp index 0cb777215bd..d71cf1ad59a 100644 --- a/src/mame/drivers/bfm_sc4.cpp +++ b/src/mame/drivers/bfm_sc4.cpp @@ -612,10 +612,11 @@ WRITE16_MEMBER(sc4_state::sc4_mem_w) } } -ADDRESS_MAP_START(sc4_state::sc4_map) - AM_RANGE(0x0000000, 0xffffff) AM_READWRITE(sc4_mem_r, sc4_mem_w) - AM_RANGE(0x0000000, 0x0fffff) AM_READ(sc4_cs1_r) // technically we should be going through the cs handler, but this is always set to ROM, and assuming that is a lot faster -ADDRESS_MAP_END +void sc4_state::sc4_map(address_map &map) +{ + map(0x0000000, 0xffffff).rw(this, FUNC(sc4_state::sc4_mem_r), FUNC(sc4_state::sc4_mem_w)); + map(0x0000000, 0x0fffff).r(this, FUNC(sc4_state::sc4_cs1_r)); // technically we should be going through the cs handler, but this is always set to ROM, and assuming that is a lot faster +} @@ -662,9 +663,10 @@ WRITE32_MEMBER(sc4_adder4_state::adder4_mem_w) } -ADDRESS_MAP_START(sc4_adder4_state::sc4_adder4_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(adder4_mem_r, adder4_mem_w) -ADDRESS_MAP_END +void sc4_adder4_state::sc4_adder4_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(sc4_adder4_state::adder4_mem_r), FUNC(sc4_adder4_state::adder4_mem_w)); +} diff --git a/src/mame/drivers/bfm_sc5.cpp b/src/mame/drivers/bfm_sc5.cpp index 1f44cc6939c..62e98f95867 100644 --- a/src/mame/drivers/bfm_sc5.cpp +++ b/src/mame/drivers/bfm_sc5.cpp @@ -80,78 +80,79 @@ WRITE8_MEMBER( bfm_sc5_state::sc5_mux2_w ) } -ADDRESS_MAP_START(bfm_sc5_state::sc5_map) +void bfm_sc5_state::sc5_map(address_map &map) +{ // ROM (max size?) - AM_RANGE(0x00000000, 0x002fffff) AM_ROM + map(0x00000000, 0x002fffff).rom(); // ? - AM_RANGE(0x01000000, 0x0100ffff) AM_RAM + map(0x01000000, 0x0100ffff).ram(); #if 1 // dev1 - AM_RANGE(0x01010000, 0x010101ff) AM_READWRITE8(sc5_mux1_r, sc5_mux1_w,0xffffffff) // guess + map(0x01010000, 0x010101ff).rw(this, FUNC(bfm_sc5_state::sc5_mux1_r), FUNC(bfm_sc5_state::sc5_mux1_w)); // guess #endif #if 0 - AM_RANGE(0x01010200, 0x01010203) AM_WRITENOP - AM_RANGE(0x01010210, 0x01010213) AM_WRITENOP - AM_RANGE(0x01010220, 0x01010223) AM_WRITENOP - AM_RANGE(0x01010230, 0x01010233) AM_WRITENOP + map(0x01010200, 0x01010203).nopw(); + map(0x01010210, 0x01010213).nopw(); + map(0x01010220, 0x01010223).nopw(); + map(0x01010230, 0x01010233).nopw(); - AM_RANGE(0x01010280, 0x01010283) AM_WRITENOP + map(0x01010280, 0x01010283).nopw(); - AM_RANGE(0x010102a0, 0x010102a3) AM_WRITENOP + map(0x010102a0, 0x010102a3).nopw(); - AM_RANGE(0x010102c0, 0x010102c3) AM_WRITENOP + map(0x010102c0, 0x010102c3).nopw(); - AM_RANGE(0x010102f0, 0x010102f3) AM_WRITENOP + map(0x010102f0, 0x010102f3).nopw(); - AM_RANGE(0x01010300, 0x01010303) AM_WRITENOP + map(0x01010300, 0x01010303).nopw(); - AM_RANGE(0x01010330, 0x01010333) AM_WRITENOP + map(0x01010330, 0x01010333).nopw(); - AM_RANGE(0x01010360, 0x01010363) AM_WRITENOP + map(0x01010360, 0x01010363).nopw(); - AM_RANGE(0x01010380, 0x01010383) AM_WRITENOP - AM_RANGE(0x01010390, 0x01010393) AM_WRITENOP + map(0x01010380, 0x01010383).nopw(); + map(0x01010390, 0x01010393).nopw(); #endif #if 1 // dev2 - AM_RANGE(0x01020000, 0x010201ff) AM_WRITE8(sc5_mux2_w,0xffffffff) // guess + map(0x01020000, 0x010201ff).w(this, FUNC(bfm_sc5_state::sc5_mux2_w)); // guess #endif #if 0 - AM_RANGE(0x01020200, 0x01020203) AM_WRITENOP - AM_RANGE(0x01020210, 0x01020213) AM_WRITENOP - AM_RANGE(0x01020220, 0x01020223) AM_WRITENOP - AM_RANGE(0x01020230, 0x01020233) AM_WRITENOP + map(0x01020200, 0x01020203).nopw(); + map(0x01020210, 0x01020213).nopw(); + map(0x01020220, 0x01020223).nopw(); + map(0x01020230, 0x01020233).nopw(); - AM_RANGE(0x01020280, 0x01020283) AM_WRITENOP + map(0x01020280, 0x01020283).nopw(); - AM_RANGE(0x010202a0, 0x010202a3) AM_WRITENOP - AM_RANGE(0x010202b0, 0x010202b3) AM_WRITENOP - AM_RANGE(0x010202c0, 0x010202c3) AM_WRITENOP + map(0x010202a0, 0x010202a3).nopw(); + map(0x010202b0, 0x010202b3).nopw(); + map(0x010202c0, 0x010202c3).nopw(); #endif - AM_RANGE(0x010202F0, 0x010202F3) AM_READWRITE8(sc5_10202F0_r, sc5_10202F0_w, 0xffffffff) + map(0x010202F0, 0x010202F3).rw(this, FUNC(bfm_sc5_state::sc5_10202F0_r), FUNC(bfm_sc5_state::sc5_10202F0_w)); #if 1 - AM_RANGE(0x01020330, 0x01020333) AM_WRITENOP + map(0x01020330, 0x01020333).nopw(); - AM_RANGE(0x01020350, 0x01020353) AM_WRITENOP - AM_RANGE(0x01020360, 0x01020363) AM_WRITENOP - AM_RANGE(0x01020370, 0x01020373) AM_WRITENOP + map(0x01020350, 0x01020353).nopw(); + map(0x01020360, 0x01020363).nopw(); + map(0x01020370, 0x01020373).nopw(); - AM_RANGE(0x01020390, 0x01020393) AM_WRITENOP + map(0x01020390, 0x01020393).nopw(); #endif - AM_RANGE(0x02000000, 0x0200001f) AM_WRITE16(sc5_duart_w, 0xffffffff) + map(0x02000000, 0x0200001f).w(this, FUNC(bfm_sc5_state::sc5_duart_w)); // ram - AM_RANGE(0x40000000, 0x4000ffff) AM_RAM + map(0x40000000, 0x4000ffff).ram(); // peripherals - AM_RANGE(0xffff0000, 0xffff03ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR -ADDRESS_MAP_END + map(0xffff0000, 0xffff03ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR +} INPUT_PORTS_START( bfm_sc5 ) INPUT_PORTS_END diff --git a/src/mame/drivers/bfm_swp.cpp b/src/mame/drivers/bfm_swp.cpp index 3cf477b0cbe..8833281136c 100644 --- a/src/mame/drivers/bfm_swp.cpp +++ b/src/mame/drivers/bfm_swp.cpp @@ -182,10 +182,11 @@ WRITE32_MEMBER(bfm_swp_state::bfm_swp_mem_w) -ADDRESS_MAP_START(bfm_swp_state::bfm_swp_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(bfm_swp_mem_r, bfm_swp_mem_w) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM -ADDRESS_MAP_END +void bfm_swp_state::bfm_swp_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(bfm_swp_state::bfm_swp_mem_r), FUNC(bfm_swp_state::bfm_swp_mem_w)); + map(0x00000000, 0x000fffff).rom(); +} static INPUT_PORTS_START( bfm_swp ) diff --git a/src/mame/drivers/bfmsys83.cpp b/src/mame/drivers/bfmsys83.cpp index e46f8cff074..5b4e3c65649 100644 --- a/src/mame/drivers/bfmsys83.cpp +++ b/src/mame/drivers/bfmsys83.cpp @@ -24,9 +24,10 @@ public: -ADDRESS_MAP_START(bfmsys83_state::memmap) - AM_RANGE(0x4000, 0xffff) AM_ROM // 32K ROM -ADDRESS_MAP_END +void bfmsys83_state::memmap(address_map &map) +{ + map(0x4000, 0xffff).rom(); // 32K ROM +} static INPUT_PORTS_START( bfmsys83 ) INPUT_PORTS_END diff --git a/src/mame/drivers/bfmsys85.cpp b/src/mame/drivers/bfmsys85.cpp index 73db8a2256b..7819d48b2bb 100644 --- a/src/mame/drivers/bfmsys85.cpp +++ b/src/mame/drivers/bfmsys85.cpp @@ -356,34 +356,35 @@ void bfmsys85_state::machine_start() // memory map for bellfruit system85 board //////////////////////////////// -ADDRESS_MAP_START(bfmsys85_state::memmap) +void bfmsys85_state::memmap(address_map &map) +{ - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") //8k RAM - AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 3+4 latch - AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch - AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch + map(0x0000, 0x1fff).ram().share("nvram"); //8k RAM + map(0x2000, 0x21FF).w(this, FUNC(bfmsys85_state::reel34_w)); // reel 3+4 latch + map(0x2200, 0x23FF).w(this, FUNC(bfmsys85_state::reel12_w)); // reel 1+2 latch + map(0x2400, 0x25FF).w(this, FUNC(bfmsys85_state::vfd_w)); // vfd latch - AM_RANGE(0x2600, 0x27FF) AM_READWRITE(mmtr_r,mmtr_w)// mechanical meter latch - AM_RANGE(0x2800, 0x2800) AM_READ(triac_r) // payslide triacs - AM_RANGE(0x2800, 0x29FF) AM_WRITE(triac_w) // triacs + map(0x2600, 0x27FF).rw(this, FUNC(bfmsys85_state::mmtr_r), FUNC(bfmsys85_state::mmtr_w));// mechanical meter latch + map(0x2800, 0x2800).r(this, FUNC(bfmsys85_state::triac_r)); // payslide triacs + map(0x2800, 0x29FF).w(this, FUNC(bfmsys85_state::triac_w)); // triacs - AM_RANGE(0x2A00, 0x2A00) AM_READWRITE(mux_data_r,mux_data_w)// mux - AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux_ctrl_r,mux_ctrl_w)// mux status register - AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch ( MC6850 / timer ) + map(0x2A00, 0x2A00).rw(this, FUNC(bfmsys85_state::mux_data_r), FUNC(bfmsys85_state::mux_data_w));// mux + map(0x2A01, 0x2A01).rw(this, FUNC(bfmsys85_state::mux_ctrl_r), FUNC(bfmsys85_state::mux_ctrl_w));// mux status register + map(0x2E00, 0x2E00).r(this, FUNC(bfmsys85_state::irqlatch_r)); // irq latch ( MC6850 / timer ) - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x3001, 0x3001) AM_READNOP //sound latch - AM_RANGE(0x3200, 0x3200) AM_DEVWRITE("aysnd", ay8910_device, address_w) + map(0x3000, 0x3000).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x3001, 0x3001).nopr(); //sound latch + map(0x3200, 0x3200).w("aysnd", FUNC(ay8910_device::address_w)); - AM_RANGE(0x3402, 0x3403) AM_DEVWRITE("acia6850_0", acia6850_device, write) - AM_RANGE(0x3406, 0x3407) AM_DEVREAD("acia6850_0", acia6850_device, read) + map(0x3402, 0x3403).w(m_acia6850_0, FUNC(acia6850_device::write)); + map(0x3406, 0x3407).r(m_acia6850_0, FUNC(acia6850_device::read)); - AM_RANGE(0x3600, 0x3600) AM_WRITE(mux_enable_w) // mux enable + map(0x3600, 0x3600).w(this, FUNC(bfmsys85_state::mux_enable_w)); // mux enable - AM_RANGE(0x4000, 0xffff) AM_ROM // 48K ROM - AM_RANGE(0x8000, 0xFFFF) AM_WRITE(watchdog_w) // kick watchdog + map(0x4000, 0xffff).rom(); // 48K ROM + map(0x8000, 0xFFFF).w(this, FUNC(bfmsys85_state::watchdog_w)); // kick watchdog -ADDRESS_MAP_END +} // machine driver for system85 board ////////////////////////////////////// diff --git a/src/mame/drivers/bgt.cpp b/src/mame/drivers/bgt.cpp index 8431c0bfc97..1b85c9b4ad5 100644 --- a/src/mame/drivers/bgt.cpp +++ b/src/mame/drivers/bgt.cpp @@ -31,15 +31,17 @@ protected: }; -ADDRESS_MAP_START(bgt_state::bgt_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xf8000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void bgt_state::bgt_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0xf8000, 0xfffff).rom(); +} -ADDRESS_MAP_START(bgt_state::bgt_io) -ADDRESS_MAP_END +void bgt_state::bgt_io(address_map &map) +{ +} diff --git a/src/mame/drivers/big10.cpp b/src/mame/drivers/big10.cpp index fb39602ca3c..b9868123972 100644 --- a/src/mame/drivers/big10.cpp +++ b/src/mame/drivers/big10.cpp @@ -124,20 +124,22 @@ READ8_MEMBER(big10_state::mux_r) * Memory Map * **************************************/ -ADDRESS_MAP_START(big10_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(big10_state::main_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(mux_r) /* present in test mode */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") /* coins and service */ - AM_RANGE(0x98, 0x9b) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r) /* Dip-Switches routes here. */ -ADDRESS_MAP_END +void big10_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram().share("nvram"); + map(0xf000, 0xffff).ram(); +} + +void big10_state::main_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(big10_state::mux_r)); /* present in test mode */ + map(0x02, 0x02).portr("SYSTEM"); /* coins and service */ + map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); /* Dip-Switches routes here. */ +} /************************************** diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp index 3b7921d5b02..22f1ec6b0e1 100644 --- a/src/mame/drivers/bigbord2.cpp +++ b/src/mame/drivers/bigbord2.cpp @@ -322,33 +322,35 @@ WRITE8_MEMBER(bigbord2_state::syslatch2_w) /* Memory Maps */ -ADDRESS_MAP_START(bigbord2_state::bigbord2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bankr") - AM_RANGE(0x1000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAMBANK("bankv") - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("banka") - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bigbord2_state::bigbord2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) // u16 - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // u37 has issues - AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // u21 - AM_RANGE(0x8c, 0x8f) AM_DEVREADWRITE("dma", z80dma_device, read, write) // u62 - AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("proglatch", ls259_device, write_nibble_d3) // u41 - eprom programming port - AM_RANGE(0xc4, 0xc7) AM_READ(status_port_r) // u11 - AM_RANGE(0xc8, 0xcb) AM_DEVWRITE("syslatch1", ls259_device, write_nibble_d3) // u14 - AM_RANGE(0xcc, 0xcf) AM_WRITE(syslatch2_w) - AM_RANGE(0xd0, 0xd3) AM_READ(kbd_r) // u1 - AM_RANGE(0xd4, 0xd7) AM_DEVREADWRITE("fdc", mb8877_device, read, write) // u10 +void bigbord2_state::bigbord2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("bankr"); + map(0x1000, 0x5fff).ram(); + map(0x6000, 0x6fff).bankrw("bankv"); + map(0x7000, 0x7fff).bankrw("banka"); + map(0x8000, 0xffff).ram(); +} + +void bigbord2_state::bigbord2_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x80, 0x83).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); // u16 + map(0x84, 0x87).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // u37 has issues + map(0x88, 0x8b).rw(m_ctc2, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // u21 + map(0x8c, 0x8f).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); // u62 + map(0xc0, 0xc3).w("proglatch", FUNC(ls259_device::write_nibble_d3)); // u41 - eprom programming port + map(0xc4, 0xc7).r(this, FUNC(bigbord2_state::status_port_r)); // u11 + map(0xc8, 0xcb).w(m_syslatch1, FUNC(ls259_device::write_nibble_d3)); // u14 + map(0xcc, 0xcf).w(this, FUNC(bigbord2_state::syslatch2_w)); + map(0xd0, 0xd3).r(this, FUNC(bigbord2_state::kbd_r)); // u1 + map(0xd4, 0xd7).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write)); // u10 //AM_RANGE(0xd8, 0xdb) AM_READWRITE(portd8_r, portd8_w) // various external data ports; DB = centronics printer - AM_RANGE(0xd9, 0xd9) AM_DEVWRITE("outlatch1", ls259_device, write_nibble_d3) // u96 - AM_RANGE(0xdc, 0xdc) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // u30 - AM_RANGE(0xdd, 0xdd) AM_MIRROR(2) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END + map(0xd9, 0xd9).w("outlatch1", FUNC(ls259_device::write_nibble_d3)); // u96 + map(0xdc, 0xdc).mirror(2).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); // u30 + map(0xdd, 0xdd).mirror(2).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/bigevglf.cpp b/src/mame/drivers/bigevglf.cpp index f0198bd7f03..e5fc7fc70c0 100644 --- a/src/mame/drivers/bigevglf.cpp +++ b/src/mame/drivers/bigevglf.cpp @@ -233,37 +233,40 @@ INPUT_PORTS_END /*****************************************************************************/ /* Main CPU */ -ADDRESS_MAP_START(bigevglf_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_ROMBANK("bank1") - AM_RANGE(0xd800, 0xdbff) AM_RAM AM_SHARE("share1") /* only half of the RAM is accessible, line a10 of IC73 (6116) is GNDed */ - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(bigevglf_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram1") /* sprite 'templates' */ - AM_RANGE(0xf000, 0xf0ff) AM_READWRITE(bigevglf_vidram_r, bigevglf_vidram_w) /* 41464 (64kB * 8 chips), addressed using ports 1 and 5 */ - AM_RANGE(0xf840, 0xf8ff) AM_RAM AM_SHARE("spriteram2") /* spriteram (x,y,offset in spriteram1,palette) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(bigevglf_state::bigevglf_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP /* video ram enable ???*/ - AM_RANGE(0x01, 0x01) AM_WRITE(bigevglf_gfxcontrol_w) /* plane select */ - AM_RANGE(0x02, 0x02) AM_WRITE(beg_banking_w) - AM_RANGE(0x03, 0x03) AM_WRITE(beg13_a_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE(beg13_b_clr_w) - AM_RANGE(0x05, 0x05) AM_WRITE(bigevglf_vidram_addr_w) /* video banking (256 banks) for f000-f0ff area */ - AM_RANGE(0x06, 0x06) AM_READ(beg_status_r) -ADDRESS_MAP_END +void bigevglf_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).bankr("bank1"); + map(0xd800, 0xdbff).ram().share("share1"); /* only half of the RAM is accessible, line a10 of IC73 (6116) is GNDed */ + map(0xe000, 0xe7ff).w(this, FUNC(bigevglf_state::bigevglf_palette_w)).share("paletteram"); + map(0xe800, 0xefff).writeonly().share("spriteram1"); /* sprite 'templates' */ + map(0xf000, 0xf0ff).rw(this, FUNC(bigevglf_state::bigevglf_vidram_r), FUNC(bigevglf_state::bigevglf_vidram_w)); /* 41464 (64kB * 8 chips), addressed using ports 1 and 5 */ + map(0xf840, 0xf8ff).ram().share("spriteram2"); /* spriteram (x,y,offset in spriteram1,palette) */ +} + +void bigevglf_state::bigevglf_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); /* video ram enable ???*/ + map(0x01, 0x01).w(this, FUNC(bigevglf_state::bigevglf_gfxcontrol_w)); /* plane select */ + map(0x02, 0x02).w(this, FUNC(bigevglf_state::beg_banking_w)); + map(0x03, 0x03).w(this, FUNC(bigevglf_state::beg13_a_set_w)); + map(0x04, 0x04).w(this, FUNC(bigevglf_state::beg13_b_clr_w)); + map(0x05, 0x05).w(this, FUNC(bigevglf_state::bigevglf_vidram_addr_w)); /* video banking (256 banks) for f000-f0ff area */ + map(0x06, 0x06).r(this, FUNC(bigevglf_state::beg_status_r)); +} /*********************************************************************************/ /* Sub CPU */ -ADDRESS_MAP_START(bigevglf_state::sub_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1") /* shared with main CPU */ -ADDRESS_MAP_END +void bigevglf_state::sub_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x83ff).ram().share("share1"); /* shared with main CPU */ +} READ8_MEMBER(bigevglf_state::sub_cpu_mcu_coin_port_r) @@ -282,26 +285,27 @@ READ8_MEMBER(bigevglf_state::sub_cpu_mcu_coin_port_r) m_mcu_coin_bit5; /* bit 0 and bit 1 - coin inputs */ } -ADDRESS_MAP_START(bigevglf_state::bigevglf_sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("PORT00") - AM_RANGE(0x01, 0x01) AM_READNOP - AM_RANGE(0x02, 0x02) AM_READ(beg_trackball_x_r) - AM_RANGE(0x03, 0x03) AM_READ(beg_trackball_y_r) - AM_RANGE(0x04, 0x04) AM_READ(sub_cpu_mcu_coin_port_r) - AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW1") - AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2") - AM_RANGE(0x07, 0x07) AM_READNOP - AM_RANGE(0x08, 0x08) AM_WRITE(beg_port08_w) /* muxed port select + other unknown stuff */ - AM_RANGE(0x0b, 0x0b) AM_DEVREAD("bmcu", taito68705_mcu_device, data_r) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("bmcu", taito68705_mcu_device, data_w) - AM_RANGE(0x0e, 0x0e) AM_WRITENOP /* 0-enable MCU, 1-keep reset line ASSERTED; D0 goes to the input of ls74 and the /Q of this ls74 goes to reset line on 68705 */ - AM_RANGE(0x10, 0x17) AM_WRITE(beg13_a_clr_w) - AM_RANGE(0x18, 0x1f) AM_WRITE(beg13_b_set_w) - AM_RANGE(0x20, 0x20) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write) - AM_RANGE(0x21, 0x21) AM_READ(soundstate_r) -ADDRESS_MAP_END +void bigevglf_state::bigevglf_sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("PORT00"); + map(0x01, 0x01).nopr(); + map(0x02, 0x02).r(this, FUNC(bigevglf_state::beg_trackball_x_r)); + map(0x03, 0x03).r(this, FUNC(bigevglf_state::beg_trackball_y_r)); + map(0x04, 0x04).r(this, FUNC(bigevglf_state::sub_cpu_mcu_coin_port_r)); + map(0x05, 0x05).portr("DSW1"); + map(0x06, 0x06).portr("DSW2"); + map(0x07, 0x07).nopr(); + map(0x08, 0x08).w(this, FUNC(bigevglf_state::beg_port08_w)); /* muxed port select + other unknown stuff */ + map(0x0b, 0x0b).r(m_bmcu, FUNC(taito68705_mcu_device::data_r)); + map(0x0c, 0x0c).w(m_bmcu, FUNC(taito68705_mcu_device::data_w)); + map(0x0e, 0x0e).nopw(); /* 0-enable MCU, 1-keep reset line ASSERTED; D0 goes to the input of ls74 and the /Q of this ls74 goes to reset line on 68705 */ + map(0x10, 0x17).w(this, FUNC(bigevglf_state::beg13_a_clr_w)); + map(0x18, 0x1f).w(this, FUNC(bigevglf_state::beg13_b_set_w)); + map(0x20, 0x20).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x20, 0x20).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0x21, 0x21).r(this, FUNC(bigevglf_state::soundstate_r)); +} @@ -309,21 +313,22 @@ ADDRESS_MAP_END /*********************************************************************************/ /* Sound CPU */ -ADDRESS_MAP_START(bigevglf_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ym2149_device, address_data_w) - AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP - AM_RANGE(0xce00, 0xce00) AM_WRITENOP - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) - AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* write to D800 sets bit 1 in status */ - AM_RANGE(0xda00, 0xda00) AM_READ(soundstate_r) - AM_RANGE(0xda00, 0xda00) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>) // enable NMI - AM_RANGE(0xdc00, 0xdc00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>) // disable NMI - AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC & unknown read */ - AM_RANGE(0xe000, 0xefff) AM_READNOP /* space for diagnostics ROM */ -ADDRESS_MAP_END +void bigevglf_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).w("aysnd", FUNC(ym2149_device::address_data_w)); + map(0xca00, 0xca0d).w(m_msm, FUNC(msm5232_device::write)); + map(0xcc00, 0xcc00).nopw(); + map(0xce00, 0xce00).nopw(); + map(0xd800, 0xd800).r("soundlatch1", FUNC(generic_latch_8_device::read)); + map(0xd800, 0xd800).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* write to D800 sets bit 1 in status */ + map(0xda00, 0xda00).r(this, FUNC(bigevglf_state::soundstate_r)); + map(0xda00, 0xda00).w("soundnmi", FUNC(input_merger_device::in_set<1>)); // enable NMI + map(0xdc00, 0xdc00).w("soundnmi", FUNC(input_merger_device::in_clear<1>)); // disable NMI + map(0xde00, 0xde00).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC & unknown read */ + map(0xe000, 0xefff).nopr(); /* space for diagnostics ROM */ +} diff --git a/src/mame/drivers/bigstrkb.cpp b/src/mame/drivers/bigstrkb.cpp index 95e020a292e..65c4580b291 100644 --- a/src/mame/drivers/bigstrkb.cpp +++ b/src/mame/drivers/bigstrkb.cpp @@ -39,50 +39,51 @@ lev 7 : 0x7c : 0000 05be - xxx /* some regions might be too large */ -ADDRESS_MAP_START(bigstrkb_state::bigstrkb_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void bigstrkb_state::bigstrkb_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // AM_RANGE(0x0c0000, 0x0cffff) AM_READWRITE_LEGACY(megasys1_vregs_C_r, megasys1_vregs_C_w) AM_SHARE("megasys1_vregs") - AM_RANGE(0x0C2004, 0x0C2005) AM_WRITENOP - AM_RANGE(0x0C200C, 0x0C200d) AM_WRITENOP - AM_RANGE(0x0C2104, 0x0C2105) AM_WRITENOP - AM_RANGE(0x0C2108, 0x0C2109) AM_WRITENOP - AM_RANGE(0x0C2200, 0x0C2201) AM_WRITENOP - AM_RANGE(0x0C2208, 0x0C2209) AM_WRITENOP - AM_RANGE(0x0c2308, 0x0c2309) AM_WRITENOP // bit 0 of DSW1 (flip screen) - use vregs + map(0x0C2004, 0x0C2005).nopw(); + map(0x0C200C, 0x0C200d).nopw(); + map(0x0C2104, 0x0C2105).nopw(); + map(0x0C2108, 0x0C2109).nopw(); + map(0x0C2200, 0x0C2201).nopw(); + map(0x0C2208, 0x0C2209).nopw(); + map(0x0c2308, 0x0c2309).nopw(); // bit 0 of DSW1 (flip screen) - use vregs - AM_RANGE(0x0D0000, 0x0dffff) AM_RAM // 0xd2000 - 0xd3fff? 0xd8000? + map(0x0D0000, 0x0dffff).ram(); // 0xd2000 - 0xd3fff? 0xd8000? - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(videoram3_w) AM_SHARE("videoram3") - AM_RANGE(0x0ec000, 0x0effff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + map(0x0e0000, 0x0e3fff).ram().w(this, FUNC(bigstrkb_state::videoram2_w)).share("videoram2"); + map(0x0e8000, 0x0ebfff).ram().w(this, FUNC(bigstrkb_state::videoram3_w)).share("videoram3"); + map(0x0ec000, 0x0effff).ram().w(this, FUNC(bigstrkb_state::videoram_w)).share("videoram"); - AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM - AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0f8800, 0x0fffff) AM_RAM + map(0x0f0000, 0x0f7fff).ram(); + map(0x0f8000, 0x0f87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0f8800, 0x0fffff).ram(); - AM_RANGE(0x1f0000, 0x1f7fff) AM_RAM - AM_RANGE(0x1f8000, 0x1f87ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1f8800, 0x1fffff) AM_RAM + map(0x1f0000, 0x1f7fff).ram(); + map(0x1f8000, 0x1f87ff).ram().share("spriteram"); + map(0x1f8800, 0x1fffff).ram(); - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW0") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("P2") - AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("P1") - AM_RANGE(0x700020, 0x700027) AM_WRITEONLY AM_SHARE("vidreg1") - AM_RANGE(0x700030, 0x700037) AM_WRITEONLY AM_SHARE("vidreg2") + map(0x700000, 0x700001).portr("DSW0"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700004, 0x700005).portr("SYSTEM"); + map(0x70000a, 0x70000b).portr("P2"); + map(0x70000c, 0x70000d).portr("P1"); + map(0x700020, 0x700027).writeonly().share("vidreg1"); + map(0x700030, 0x700037).writeonly().share("vidreg2"); - AM_RANGE(0xB00000, 0xB00001) AM_WRITENOP + map(0xB00000, 0xB00001).nopw(); - AM_RANGE(0xE00000, 0xE00001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xE00002, 0xE00003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + map(0xe00001, 0xe00001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe00003, 0xe00003).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0xE00008, 0xE00009) AM_WRITENOP - AM_RANGE(0xE0000c, 0xE0000d) AM_WRITENOP + map(0xE00008, 0xE00009).nopw(); + map(0xE0000c, 0xE0000d).nopw(); - AM_RANGE(0xF00000, 0xFFFFFF) AM_RAM -ADDRESS_MAP_END + map(0xF00000, 0xFFFFFF).ram(); +} #define BIGSTRKB_PLAYER_INPUT( player, start ) \ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(player) PORT_8WAY \ diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp index 18dda0e979e..4673efec2c1 100644 --- a/src/mame/drivers/binbug.cpp +++ b/src/mame/drivers/binbug.cpp @@ -113,18 +113,20 @@ WRITE_LINE_MEMBER( binbug_state::binbug_serial_w ) m_cass->output(state ? -1.0 : +1.0); } -ADDRESS_MAP_START(binbug_state::binbug_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x03ff) AM_ROM - AM_RANGE( 0x0400, 0x77ff) AM_RAM - AM_RANGE( 0x7800, 0x7bff) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0x7c00, 0x7fff) AM_RAM AM_SHARE("attribram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(binbug_state::binbug_data) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_WRITE(binbug_ctrl_w) -ADDRESS_MAP_END +void binbug_state::binbug_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x77ff).ram(); + map(0x7800, 0x7bff).ram().share("videoram"); + map(0x7c00, 0x7fff).ram().share("attribram"); +} + +void binbug_state::binbug_data(address_map &map) +{ + map.unmap_value_high(); + map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(this, FUNC(binbug_state::binbug_ctrl_w)); +} /* Input ports */ static INPUT_PORTS_START( binbug ) @@ -437,25 +439,27 @@ private: required_device<z80pio_device> m_pio; }; -ADDRESS_MAP_START(dg680_state::dg680_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xcfff) AM_RAM - AM_RANGE( 0xd000, 0xd7ff) AM_ROM - AM_RANGE( 0xd800, 0xefff) AM_RAM - AM_RANGE( 0xf000, 0xf3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0xf400, 0xf7ff) AM_RAM AM_SHARE("attribram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dg680_state::dg680_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x04,0x07) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) - AM_RANGE(0x08,0x08) AM_READWRITE(port08_r,port08_w) //SWP Control and Status +void dg680_state::dg680_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xcfff).ram(); + map(0xd000, 0xd7ff).rom(); + map(0xd800, 0xefff).ram(); + map(0xf000, 0xf3ff).ram().share("videoram"); + map(0xf400, 0xf7ff).ram().share("attribram"); +} + +void dg680_state::dg680_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x04, 0x07).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x08, 0x08).rw(this, FUNC(dg680_state::port08_r), FUNC(dg680_state::port08_w)); //SWP Control and Status //AM_RANGE(0x09,0x09) parallel input port // Optional AM9519 Programmable Interrupt Controller (port c = data, port d = control) //AM_RANGE(0x0c,0x0d) AM_DEVREADWRITE("am9519", am9519_device, read, write) -ADDRESS_MAP_END +} void dg680_state::machine_reset() { diff --git a/src/mame/drivers/bingo.cpp b/src/mame/drivers/bingo.cpp index 3e9b400d578..00c3fe2d5c1 100644 --- a/src/mame/drivers/bingo.cpp +++ b/src/mame/drivers/bingo.cpp @@ -28,11 +28,12 @@ public: }; -ADDRESS_MAP_START(bingo_state::bingo_map) - AM_RANGE(0x0000, 0x7fff) AM_NOP - AM_RANGE(0x0000, 0x1eff) AM_ROM - AM_RANGE(0x1f00, 0x1fff) AM_RAM -ADDRESS_MAP_END +void bingo_state::bingo_map(address_map &map) +{ + map(0x0000, 0x7fff).noprw(); + map(0x0000, 0x1eff).rom(); + map(0x1f00, 0x1fff).ram(); +} static INPUT_PORTS_START( bingo ) INPUT_PORTS_END @@ -73,8 +74,9 @@ public: }; -ADDRESS_MAP_START(seeben_state::seeben_map) -ADDRESS_MAP_END +void seeben_state::seeben_map(address_map &map) +{ +} static INPUT_PORTS_START( seeben ) INPUT_PORTS_END @@ -114,11 +116,12 @@ public: DECLARE_DRIVER_INIT(splin); }; -ADDRESS_MAP_START(splin_state::splin_map) - AM_RANGE(0x00000, 0x0bfff) AM_RAM - AM_RANGE(0x0d900, 0x0d9ff) AM_RAM - AM_RANGE(0xe0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void splin_state::splin_map(address_map &map) +{ + map(0x00000, 0x0bfff).ram(); + map(0x0d900, 0x0d9ff).ram(); + map(0xe0000, 0xfffff).rom(); +} static INPUT_PORTS_START( splin ) INPUT_PORTS_END diff --git a/src/mame/drivers/bingoc.cpp b/src/mame/drivers/bingoc.cpp index 30377225a85..c3f9ee3e7b6 100644 --- a/src/mame/drivers/bingoc.cpp +++ b/src/mame/drivers/bingoc.cpp @@ -124,47 +124,50 @@ WRITE8_MEMBER(bingoc_state::sound_play_w) // printf("%02x\n",data); } -ADDRESS_MAP_START(bingoc_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE8("uart1", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("uart1", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100008, 0x100009) AM_DEVREADWRITE8("uart2", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x10000a, 0x10000b) AM_DEVREADWRITE8("uart2", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100010, 0x100011) AM_DEVREADWRITE8("uart3", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x100012, 0x100013) AM_DEVREADWRITE8("uart3", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("uart4", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x10001a, 0x10001b) AM_DEVREADWRITE8("uart4", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100020, 0x100021) AM_DEVREADWRITE8("uart5", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x100022, 0x100023) AM_DEVREADWRITE8("uart5", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100028, 0x100029) AM_DEVREADWRITE8("uart6", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x10002a, 0x10002b) AM_DEVREADWRITE8("uart6", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100030, 0x100031) AM_DEVREADWRITE8("uart7", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x100032, 0x100033) AM_DEVREADWRITE8("uart7", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x100038, 0x100039) AM_DEVREADWRITE8("uart8", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x10003a, 0x10003b) AM_DEVREADWRITE8("uart8", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x180000, 0x18007f) AM_READ(unknown_r) //lamps? +void bingoc_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100001, 0x100001).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x100003, 0x100003).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100009, 0x100009).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x10000b, 0x10000b).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100011, 0x100011).rw("uart3", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x100013, 0x100013).rw("uart3", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100019, 0x100019).rw("uart4", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x10001b, 0x10001b).rw("uart4", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100021, 0x100021).rw("uart5", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x100023, 0x100023).rw("uart5", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100029, 0x100029).rw("uart6", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x10002b, 0x10002b).rw("uart6", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100031, 0x100031).rw("uart7", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x100033, 0x100033).rw("uart7", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x100039, 0x100039).rw("uart8", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x10003b, 0x10003b).rw("uart8", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x180000, 0x18007f).r(this, FUNC(bingoc_state::unknown_r)); //lamps? #if !SOUND_TEST - AM_RANGE(0x180010, 0x180011) AM_WRITE(main_sound_latch_w) //WRONG there... + map(0x180010, 0x180011).w(this, FUNC(bingoc_state::main_sound_latch_w)); //WRONG there... #endif - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bingoc_state::sound_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bingoc_state::sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITE(sound_play_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("upd", upd7759_device, port_w) + map(0xff8000, 0xffffff).ram(); +} + +void bingoc_state::sound_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0xf800, 0xffff).ram(); +} + +void bingoc_state::sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).w(this, FUNC(bingoc_state::sound_play_w)); + map(0x80, 0x80).w(m_upd7759, FUNC(upd7759_device::port_w)); #if !SOUND_TEST - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); #else - AM_RANGE(0xc0, 0xc0) AM_READ(sound_test_r) + map(0xc0, 0xc0).r(this, FUNC(bingoc_state::sound_test_r)); #endif -ADDRESS_MAP_END +} static INPUT_PORTS_START( bingoc ) diff --git a/src/mame/drivers/bingoman.cpp b/src/mame/drivers/bingoman.cpp index e7e81f163d8..8f558926231 100644 --- a/src/mame/drivers/bingoman.cpp +++ b/src/mame/drivers/bingoman.cpp @@ -279,13 +279,15 @@ uint32_t bingoman_state::screen_update( screen_device &screen, bitmap_ind16 &bit return 0; } -ADDRESS_MAP_START(bingoman_state::bingoman_prg_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM -ADDRESS_MAP_END +void bingoman_state::bingoman_prg_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); +} -ADDRESS_MAP_START(bingoman_state::bingoman_io_map) +void bingoman_state::bingoman_io_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +} static INPUT_PORTS_START( bingoman ) /* dummy active high structure */ diff --git a/src/mame/drivers/bingor.cpp b/src/mame/drivers/bingor.cpp index e601024693f..1b840905c96 100644 --- a/src/mame/drivers/bingor.cpp +++ b/src/mame/drivers/bingor.cpp @@ -600,22 +600,25 @@ uint32_t bingor_state::screen_update_bingor(screen_device &screen, bitmap_rgb32 } -ADDRESS_MAP_START(bingor_state::bingor_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM - AM_RANGE(0x90000, 0x9ffff) AM_ROM AM_REGION("gfx", 0) - AM_RANGE(0xa0000, 0xaffff) AM_RAM AM_SHARE("blit_ram") - AM_RANGE(0xa0300, 0xa031f) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") //wrong - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("boot_prg", 0) -ADDRESS_MAP_END +void bingor_state::bingor_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); + map(0x90000, 0x9ffff).rom().region("gfx", 0); + map(0xa0000, 0xaffff).ram().share("blit_ram"); + map(0xa0300, 0xa031f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); //wrong + map(0xf0000, 0xfffff).rom().region("boot_prg", 0); +} -ADDRESS_MAP_START(bingor_state::bingor2_map) - AM_IMPORT_FROM(bingor_map) - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("boot_prg", 0) // banked? -ADDRESS_MAP_END +void bingor_state::bingor2_map(address_map &map) +{ + bingor_map(map); + map(0xe0000, 0xfffff).rom().region("boot_prg", 0); // banked? +} -ADDRESS_MAP_START(bingor_state::bingor_io) - AM_RANGE(0x0100, 0x0103) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) -ADDRESS_MAP_END +void bingor_state::bingor_io(address_map &map) +{ + map(0x0100, 0x0103).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); +} static INPUT_PORTS_START( bingor ) @@ -721,22 +724,24 @@ MACHINE_CONFIG_START(bingor_state::bingor2) MACHINE_CONFIG_END -ADDRESS_MAP_START(bingor_state::vip2000_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM - AM_RANGE(0x40000, 0x4ffff) AM_RAM AM_SHARE("blit_ram") - AM_RANGE(0x40300, 0x4031f) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") //wrong +void bingor_state::vip2000_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); + map(0x40000, 0x4ffff).ram().share("blit_ram"); + map(0x40300, 0x4031f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); //wrong //AM_RANGE(0x50000, 0x5ffff) AM_ROM AM_REGION("gfx", 0) - AM_RANGE(0x60000, 0x60003) AM_DEVWRITE8("ymz", ymz284_device, address_data_w, 0x00ff) - AM_RANGE(0x80000, 0xeffff) AM_DEVREADWRITE("flash", intelfsh16_device, read, write) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("boot_prg", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bingor_state::vip2000_io) - AM_RANGE(0x0000, 0x0001) AM_READNOP // watchdog - AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x0100, 0x0101) AM_READWRITE8(fromslave_r, toslave_w, 0x00ff) - AM_RANGE(0x0280, 0x0281) AM_WRITE(vip2000_outputs_w) -ADDRESS_MAP_END + map(0x60000, 0x60003).w("ymz", FUNC(ymz284_device::address_data_w)).umask16(0x00ff); + map(0x80000, 0xeffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0xf0000, 0xfffff).rom().region("boot_prg", 0); +} + +void bingor_state::vip2000_io(address_map &map) +{ + map(0x0000, 0x0001).nopr(); // watchdog + map(0x0080, 0x009f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x0100, 0x0100).rw(this, FUNC(bingor_state::fromslave_r), FUNC(bingor_state::toslave_w)); + map(0x0280, 0x0281).w(this, FUNC(bingor_state::vip2000_outputs_w)); +} WRITE8_MEMBER(bingor_state::toslave_w) { @@ -763,14 +768,16 @@ WRITE16_MEMBER(bingor_state::vip2000_outputs_w) m_slavecpu->set_input_line(MCS51_INT0_LINE, BIT(data, 15) ? CLEAR_LINE : ASSERT_LINE); } -ADDRESS_MAP_START(bingor_state::slave_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void bingor_state::slave_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} -ADDRESS_MAP_START(bingor_state::slave_io) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(toslave_r, fromslave_w) - AM_RANGE(0xc000, 0xcfff) AM_RAM -ADDRESS_MAP_END +void bingor_state::slave_io(address_map &map) +{ + map(0x0000, 0x0000).rw(this, FUNC(bingor_state::toslave_r), FUNC(bingor_state::fromslave_w)); + map(0xc000, 0xcfff).ram(); +} MACHINE_CONFIG_START(bingor_state::vip2000) MCFG_CPU_ADD("maincpu", I80186, XTAL(10'000'000)) diff --git a/src/mame/drivers/bingowav.cpp b/src/mame/drivers/bingowav.cpp index 990e6b4e5b6..a66b29c8d1d 100644 --- a/src/mame/drivers/bingowav.cpp +++ b/src/mame/drivers/bingowav.cpp @@ -73,35 +73,39 @@ void bingowav_state::machine_start() } -ADDRESS_MAP_START(bingowav_state::bingowav_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x120000, 0x12001f) AM_DEVREADWRITE8("mainioh", te7750_device, read, write, 0xff00) - AM_RANGE(0x120000, 0x12001f) AM_DEVREADWRITE8("mainiol", te7750_device, read, write, 0x00ff) - AM_RANGE(0x140000, 0x140001) AM_READNOP - AM_RANGE(0x150000, 0x150001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x150002, 0x150003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("maintmp", tmp68301_device, regs_r, regs_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bingowav_state::bingowav_audio_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xf200, 0xf200) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(bingowav_state::bingowav_drive_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bingowav_state::bingowav_control_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_WRITENOP -ADDRESS_MAP_END +void bingowav_state::bingowav_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x120000, 0x12001f).rw("mainioh", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0xff00); + map(0x120000, 0x12001f).rw("mainiol", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff); + map(0x140000, 0x140001).nopr(); + map(0x150001, 0x150001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x150003, 0x150003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0xfffc00, 0xffffff).rw("maintmp", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); +} + +void bingowav_state::bingowav_audio_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xf200, 0xf200).nopw(); +} + +void bingowav_state::bingowav_drive_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); +} + +void bingowav_state::bingowav_control_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xf000, 0xf000).nopw(); +} static INPUT_PORTS_START( bingowav ) diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp index 04a56ed1ef8..cd2041bb586 100644 --- a/src/mame/drivers/bionicc.cpp +++ b/src/mame/drivers/bionicc.cpp @@ -162,33 +162,35 @@ TIMER_DEVICE_CALLBACK_MEMBER(bionicc_state::scanline) * *************************************/ -ADDRESS_MAP_START(bionicc_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM /* RAM? */ - AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfe0d00, 0xfe3fff) AM_RAM /* RAM? */ - AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(gfxctrl_w) /* + coin counters */ - AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("DSW") - AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(scroll_w) - AM_RANGE(0xfe8018, 0xfe8019) AM_WRITENOP // vblank irq ack? - AM_RANGE(0xfe801a, 0xfe801b) AM_WRITE(mpu_trigger_w) /* ??? not sure, but looks like it */ - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */ - AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */ - AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w) /* hack */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bionicc_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END +void bionicc_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfe0000, 0xfe07ff).ram(); /* RAM? */ + map(0xfe0800, 0xfe0cff).ram().share("spriteram"); + map(0xfe0d00, 0xfe3fff).ram(); /* RAM? */ + map(0xfe4000, 0xfe4001).w(this, FUNC(bionicc_state::gfxctrl_w)); /* + coin counters */ + map(0xfe4000, 0xfe4001).portr("SYSTEM"); + map(0xfe4002, 0xfe4003).portr("DSW"); + map(0xfe8010, 0xfe8017).w(this, FUNC(bionicc_state::scroll_w)); + map(0xfe8018, 0xfe8019).nopw(); // vblank irq ack? + map(0xfe801a, 0xfe801b).w(this, FUNC(bionicc_state::mpu_trigger_w)); /* ??? not sure, but looks like it */ + map(0xfec000, 0xfecfff).ram().w(this, FUNC(bionicc_state::txvideoram_w)).share("txvideoram"); + map(0xff0000, 0xff3fff).ram().w(this, FUNC(bionicc_state::fgvideoram_w)).share("fgvideoram"); + map(0xff4000, 0xff7fff).ram().w(this, FUNC(bionicc_state::bgvideoram_w)).share("bgvideoram"); + map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffc000, 0xfffff7).ram(); /* working RAM */ + map(0xfffff8, 0xfffff9).rw(this, FUNC(bionicc_state::hacked_soundcommand_r), FUNC(bionicc_state::hacked_soundcommand_w)); /* hack */ + map(0xfffffa, 0xffffff).rw(this, FUNC(bionicc_state::hacked_controls_r), FUNC(bionicc_state::hacked_controls_w)); /* hack */ +} + + +void bionicc_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc7ff).ram(); +} /************************************* diff --git a/src/mame/drivers/bishi.cpp b/src/mame/drivers/bishi.cpp index 08c486ac048..575345bb880 100644 --- a/src/mame/drivers/bishi.cpp +++ b/src/mame/drivers/bishi.cpp @@ -144,25 +144,26 @@ READ16_MEMBER(bishi_state::bishi_K056832_rom_r) return m_k056832->bishi_rom_word_r(space, ouroffs, mem_mask); } -ADDRESS_MAP_START(bishi_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x407fff) AM_RAM // Work RAM - AM_RANGE(0x800000, 0x800001) AM_READWRITE(control_r, control_w) - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW") - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x800008, 0x800009) AM_READ_PORT("INPUTS") - AM_RANGE(0x810000, 0x810003) AM_WRITE(control2_w) // bank switch for K056832 character ROM test - AM_RANGE(0x820000, 0x820001) AM_WRITENOP // lamps (see lamp test in service menu) - AM_RANGE(0x830000, 0x83003f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x840000, 0x840007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS - AM_RANGE(0x850000, 0x85001f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC - AM_RANGE(0x870000, 0x8700ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2 - AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00) - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xb04000, 0xb047ff) AM_READ(bishi_mirror_r) // bug in the ram/rom test? - AM_RANGE(0xc00000, 0xc01fff) AM_READ(bishi_K056832_rom_r) -ADDRESS_MAP_END +void bishi_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x407fff).ram(); // Work RAM + map(0x800000, 0x800001).rw(this, FUNC(bishi_state::control_r), FUNC(bishi_state::control_w)); + map(0x800004, 0x800005).portr("DSW"); + map(0x800006, 0x800007).portr("SYSTEM"); + map(0x800008, 0x800009).portr("INPUTS"); + map(0x810000, 0x810003).w(this, FUNC(bishi_state::control2_w)); // bank switch for K056832 character ROM test + map(0x820000, 0x820001).nopw(); // lamps (see lamp test in service menu) + map(0x830000, 0x83003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x840000, 0x840007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS + map(0x850000, 0x85001f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC + map(0x870000, 0x8700ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); // PCU2 + map(0x880000, 0x880003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00); + map(0xa00000, 0xa01fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // Graphic planes + map(0xb00000, 0xb03fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xb04000, 0xb047ff).r(this, FUNC(bishi_state::bishi_mirror_r)); // bug in the ram/rom test? + map(0xc00000, 0xc01fff).r(this, FUNC(bishi_state::bishi_K056832_rom_r)); +} static INPUT_PORTS_START( bishi ) /* Currently, this "IN0" is not read */ diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp index 274c95ce397..d4e87b632a2 100644 --- a/src/mame/drivers/bitgraph.cpp +++ b/src/mame/drivers/bitgraph.cpp @@ -170,40 +170,42 @@ private: uint8_t m_ppu[4]; }; -ADDRESS_MAP_START(bitgraph_state::bitgrapha_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x007fff) AM_ROM - AM_RANGE(0x010000, 0x010001) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, data_r, data_w, 0xff00) // HOST - AM_RANGE(0x010002, 0x010003) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, status_r, control_w, 0xff00) - AM_RANGE(0x010008, 0x010009) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, data_r, data_w, 0x00ff) // KEYBOARD - AM_RANGE(0x01000a, 0x01000b) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, status_r, control_w, 0x00ff) - AM_RANGE(0x010010, 0x010011) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, data_r, data_w, 0x00ff) // DEBUGGER - AM_RANGE(0x010012, 0x010013) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, status_r, control_w, 0x00ff) - AM_RANGE(0x010018, 0x010019) AM_DEVREADWRITE8(ACIA3_TAG, acia6850_device, data_r, data_w, 0x00ff) // POINTER - AM_RANGE(0x01001a, 0x01001b) AM_DEVREADWRITE8(ACIA3_TAG, acia6850_device, status_r, control_w, 0x00ff) - AM_RANGE(0x010020, 0x010027) AM_READWRITE8(adlc_r, adlc_w, 0xff00) - AM_RANGE(0x010028, 0x01002f) AM_READWRITE8(pia_r, pia_w, 0xff00) // EAROM, PSG - AM_RANGE(0x010030, 0x010031) AM_WRITE(baud_write) - AM_RANGE(0x3e0000, 0x3fffff) AM_RAM -ADDRESS_MAP_END +void bitgraph_state::bitgrapha_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x007fff).rom(); + map(0x010000, 0x010000).rw(m_acia0, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // HOST + map(0x010002, 0x010002).rw(m_acia0, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x010009, 0x010009).rw(m_acia1, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // KEYBOARD + map(0x01000b, 0x01000b).rw(m_acia1, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x010011, 0x010011).rw(m_acia2, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // DEBUGGER + map(0x010013, 0x010013).rw(m_acia2, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x010019, 0x010019).rw(m_acia3, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // POINTER + map(0x01001b, 0x01001b).rw(m_acia3, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x010020, 0x010027).rw(this, FUNC(bitgraph_state::adlc_r), FUNC(bitgraph_state::adlc_w)).umask16(0xff00); + map(0x010028, 0x01002f).rw(this, FUNC(bitgraph_state::pia_r), FUNC(bitgraph_state::pia_w)).umask16(0xff00); // EAROM, PSG + map(0x010030, 0x010031).w(this, FUNC(bitgraph_state::baud_write)); + map(0x3e0000, 0x3fffff).ram(); +} -ADDRESS_MAP_START(bitgraph_state::bitgraphb_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x007fff) AM_ROM - AM_RANGE(0x010000, 0x010001) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, data_r, data_w, 0xff00) // HOST - AM_RANGE(0x010002, 0x010003) AM_DEVREADWRITE8(ACIA0_TAG, acia6850_device, status_r, control_w, 0xff00) - AM_RANGE(0x010008, 0x010009) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, data_r, data_w, 0x00ff) // KEYBOARD - AM_RANGE(0x01000a, 0x01000b) AM_DEVREADWRITE8(ACIA1_TAG, acia6850_device, status_r, control_w, 0x00ff) - AM_RANGE(0x010010, 0x010011) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, data_r, data_w, 0x00ff) // DEBUGGER - AM_RANGE(0x010012, 0x010013) AM_DEVREADWRITE8(ACIA2_TAG, acia6850_device, status_r, control_w, 0x00ff) - AM_RANGE(0x01001a, 0x01001b) AM_WRITE8(misccr_write, 0x00ff) - AM_RANGE(0x010020, 0x010027) AM_READWRITE8(adlc_r, adlc_w, 0xff00) - AM_RANGE(0x010028, 0x01002f) AM_READWRITE8(pia_r, pia_w, 0xff00) // EAROM, PSG - AM_RANGE(0x010030, 0x010031) AM_WRITE(baud_write) +void bitgraph_state::bitgraphb_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x007fff).rom(); + map(0x010000, 0x010000).rw(m_acia0, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // HOST + map(0x010002, 0x010002).rw(m_acia0, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x010009, 0x010009).rw(m_acia1, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // KEYBOARD + map(0x01000b, 0x01000b).rw(m_acia1, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x010011, 0x010011).rw(m_acia2, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); // DEBUGGER + map(0x010013, 0x010013).rw(m_acia2, FUNC(acia6850_device::status_r), FUNC(acia6850_device::control_w)); + map(0x01001b, 0x01001b).w(this, FUNC(bitgraph_state::misccr_write)); + map(0x010020, 0x010027).rw(this, FUNC(bitgraph_state::adlc_r), FUNC(bitgraph_state::adlc_w)).umask16(0xff00); + map(0x010028, 0x01002f).rw(this, FUNC(bitgraph_state::pia_r), FUNC(bitgraph_state::pia_w)).umask16(0xff00); // EAROM, PSG + map(0x010030, 0x010031).w(this, FUNC(bitgraph_state::baud_write)); // AM_RANGE(0x010030, 0x010037) AM_READ8(ppu_read, 0x00ff) - AM_RANGE(0x010038, 0x01003f) AM_WRITE8(ppu_write, 0x00ff) - AM_RANGE(0x380000, 0x3fffff) AM_RAM -ADDRESS_MAP_END + map(0x010038, 0x01003f).w(this, FUNC(bitgraph_state::ppu_write)).umask16(0x00ff); + map(0x380000, 0x3fffff).ram(); +} static INPUT_PORTS_START(bitgraph) INPUT_PORTS_END diff --git a/src/mame/drivers/bk.cpp b/src/mame/drivers/bk.cpp index 1af4b29ef11..a85fef41078 100644 --- a/src/mame/drivers/bk.cpp +++ b/src/mame/drivers/bk.cpp @@ -22,34 +22,36 @@ /* Address maps */ -ADDRESS_MAP_START(bk_state::bk0010_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_RAM // RAM - AM_RANGE( 0x4000, 0x7fff ) AM_RAM AM_SHARE("video_ram") // Video RAM - AM_RANGE( 0x8000, 0x9fff ) AM_ROM // ROM - AM_RANGE( 0xa000, 0xbfff ) AM_ROM // ROM - AM_RANGE( 0xc000, 0xdfff ) AM_ROM // ROM - AM_RANGE( 0xe000, 0xfeff ) AM_ROM // ROM - AM_RANGE( 0xffb0, 0xffb1 ) AM_READWRITE(bk_key_state_r,bk_key_state_w) - AM_RANGE( 0xffb2, 0xffb3 ) AM_READ(bk_key_code_r) - AM_RANGE( 0xffb4, 0xffb5 ) AM_READWRITE(bk_vid_scrool_r,bk_vid_scrool_w) - AM_RANGE( 0xffce, 0xffcf ) AM_READWRITE(bk_key_press_r,bk_key_press_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bk_state::bk0010fd_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_RAM // RAM - AM_RANGE( 0x4000, 0x7fff ) AM_RAM AM_SHARE("video_ram") // Video RAM - AM_RANGE( 0x8000, 0x9fff ) AM_ROM // ROM - AM_RANGE( 0xa000, 0xdfff ) AM_RAM // RAM - AM_RANGE( 0xe000, 0xfdff ) AM_ROM // ROM - AM_RANGE( 0xfe58, 0xfe59 ) AM_READWRITE(bk_floppy_cmd_r,bk_floppy_cmd_w) - AM_RANGE( 0xfe5a, 0xfe5b ) AM_READWRITE(bk_floppy_data_r,bk_floppy_data_w) - AM_RANGE( 0xffb0, 0xffb1 ) AM_READWRITE(bk_key_state_r,bk_key_state_w) - AM_RANGE( 0xffb2, 0xffb3 ) AM_READ(bk_key_code_r) - AM_RANGE( 0xffb4, 0xffb5 ) AM_READWRITE(bk_vid_scrool_r,bk_vid_scrool_w) - AM_RANGE( 0xffce, 0xffcf ) AM_READWRITE(bk_key_press_r,bk_key_press_w) -ADDRESS_MAP_END +void bk_state::bk0010_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram(); // RAM + map(0x4000, 0x7fff).ram().share("video_ram"); // Video RAM + map(0x8000, 0x9fff).rom(); // ROM + map(0xa000, 0xbfff).rom(); // ROM + map(0xc000, 0xdfff).rom(); // ROM + map(0xe000, 0xfeff).rom(); // ROM + map(0xffb0, 0xffb1).rw(this, FUNC(bk_state::bk_key_state_r), FUNC(bk_state::bk_key_state_w)); + map(0xffb2, 0xffb3).r(this, FUNC(bk_state::bk_key_code_r)); + map(0xffb4, 0xffb5).rw(this, FUNC(bk_state::bk_vid_scrool_r), FUNC(bk_state::bk_vid_scrool_w)); + map(0xffce, 0xffcf).rw(this, FUNC(bk_state::bk_key_press_r), FUNC(bk_state::bk_key_press_w)); +} + +void bk_state::bk0010fd_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram(); // RAM + map(0x4000, 0x7fff).ram().share("video_ram"); // Video RAM + map(0x8000, 0x9fff).rom(); // ROM + map(0xa000, 0xdfff).ram(); // RAM + map(0xe000, 0xfdff).rom(); // ROM + map(0xfe58, 0xfe59).rw(this, FUNC(bk_state::bk_floppy_cmd_r), FUNC(bk_state::bk_floppy_cmd_w)); + map(0xfe5a, 0xfe5b).rw(this, FUNC(bk_state::bk_floppy_data_r), FUNC(bk_state::bk_floppy_data_w)); + map(0xffb0, 0xffb1).rw(this, FUNC(bk_state::bk_key_state_r), FUNC(bk_state::bk_key_state_w)); + map(0xffb2, 0xffb3).r(this, FUNC(bk_state::bk_key_code_r)); + map(0xffb4, 0xffb5).rw(this, FUNC(bk_state::bk_vid_scrool_r), FUNC(bk_state::bk_vid_scrool_w)); + map(0xffce, 0xffcf).rw(this, FUNC(bk_state::bk_key_press_r), FUNC(bk_state::bk_key_press_w)); +} /* Input ports */ static INPUT_PORTS_START( bk0010 ) diff --git a/src/mame/drivers/bking.cpp b/src/mame/drivers/bking.cpp index 72e3195eef4..68507be9584 100644 --- a/src/mame/drivers/bking.cpp +++ b/src/mame/drivers/bking.cpp @@ -81,67 +81,71 @@ READ8_MEMBER(bking_state::bking3_mcu_status_r) ((CLEAR_LINE != m_bmcu->mcu_semaphore_r()) ? 0x02 : 0x00); } -ADDRESS_MAP_START(bking_state::bking_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(bking_playfield_w) AM_SHARE("playfield_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bking_state::bking_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w) - AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w) - AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w) - AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w) - AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w) - AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w) +void bking_state::bking_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x9000, 0x97ff).ram().w(this, FUNC(bking_state::bking_playfield_w)).share("playfield_ram"); +} + +void bking_state::bking_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w(this, FUNC(bking_state::bking_xld1_w)); + map(0x01, 0x01).portr("IN1").w(this, FUNC(bking_state::bking_yld1_w)); + map(0x02, 0x02).portr("DSWA").w(this, FUNC(bking_state::bking_xld2_w)); + map(0x03, 0x03).portr("DSWB").w(this, FUNC(bking_state::bking_yld2_w)); + map(0x04, 0x04).portr("DSWC").w(this, FUNC(bking_state::bking_xld3_w)); + map(0x05, 0x05).rw(this, FUNC(bking_state::bking_input_port_5_r), FUNC(bking_state::bking_yld3_w)); + map(0x06, 0x06).rw(this, FUNC(bking_state::bking_input_port_6_r), FUNC(bking_state::bking_msk_w)); + map(0x07, 0x07).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x08, 0x08).w(this, FUNC(bking_state::bking_cont1_w)); + map(0x09, 0x09).w(this, FUNC(bking_state::bking_cont2_w)); + map(0x0a, 0x0a).w(this, FUNC(bking_state::bking_cont3_w)); + map(0x0b, 0x0b).w(this, FUNC(bking_state::bking_soundlatch_w)); // AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere - AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w) - AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bking_state::bking3_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(bking_xld1_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(bking_yld1_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWA") AM_WRITE(bking_xld2_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWB") AM_WRITE(bking_yld2_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWC") AM_WRITE(bking_xld3_w) - AM_RANGE(0x05, 0x05) AM_READWRITE(bking_input_port_5_r, bking_yld3_w) - AM_RANGE(0x06, 0x06) AM_READWRITE(bking_input_port_6_r, bking_msk_w) - AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x08, 0x08) AM_WRITE(bking_cont1_w) - AM_RANGE(0x09, 0x09) AM_WRITE(bking_cont2_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(bking_cont3_w) - AM_RANGE(0x0b, 0x0b) AM_WRITE(bking_soundlatch_w) + map(0x0d, 0x0d).w(this, FUNC(bking_state::bking_hitclr_w)); + map(0x07, 0x1f).r(this, FUNC(bking_state::bking_pos_r)); +} + +void bking_state::bking3_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w(this, FUNC(bking_state::bking_xld1_w)); + map(0x01, 0x01).portr("IN1").w(this, FUNC(bking_state::bking_yld1_w)); + map(0x02, 0x02).portr("DSWA").w(this, FUNC(bking_state::bking_xld2_w)); + map(0x03, 0x03).portr("DSWB").w(this, FUNC(bking_state::bking_yld2_w)); + map(0x04, 0x04).portr("DSWC").w(this, FUNC(bking_state::bking_xld3_w)); + map(0x05, 0x05).rw(this, FUNC(bking_state::bking_input_port_5_r), FUNC(bking_state::bking_yld3_w)); + map(0x06, 0x06).rw(this, FUNC(bking_state::bking_input_port_6_r), FUNC(bking_state::bking_msk_w)); + map(0x07, 0x07).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x08, 0x08).w(this, FUNC(bking_state::bking_cont1_w)); + map(0x09, 0x09).w(this, FUNC(bking_state::bking_cont2_w)); + map(0x0a, 0x0a).w(this, FUNC(bking_state::bking_cont3_w)); + map(0x0b, 0x0b).w(this, FUNC(bking_state::bking_soundlatch_w)); // AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere - AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w) - AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r) - AM_RANGE(0x2f, 0x2f) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0x4f, 0x4f) AM_READWRITE(bking3_mcu_status_r, unk_w) - AM_RANGE(0x60, 0x60) AM_READ(bking3_extrarom_r) - AM_RANGE(0x6f, 0x6f) AM_READWRITE(bking3_ext_check_r, bking3_addr_h_w) - AM_RANGE(0x8f, 0x8f) AM_WRITE(bking3_addr_l_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bking_state::bking_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2fff) AM_ROM //only bking3 - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4400, 0x4401) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x4401, 0x4401) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x4402, 0x4403) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x4403, 0x4403) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x4800, 0x4800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking_sndnmi_disable_r, bking_sndnmi_enable_w) - AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */ -ADDRESS_MAP_END + map(0x0d, 0x0d).w(this, FUNC(bking_state::bking_hitclr_w)); + map(0x07, 0x1f).r(this, FUNC(bking_state::bking_pos_r)); + map(0x2f, 0x2f).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0x4f, 0x4f).rw(this, FUNC(bking_state::bking3_mcu_status_r), FUNC(bking_state::unk_w)); + map(0x60, 0x60).r(this, FUNC(bking_state::bking3_extrarom_r)); + map(0x6f, 0x6f).rw(this, FUNC(bking_state::bking3_ext_check_r), FUNC(bking_state::bking3_addr_h_w)); + map(0x8f, 0x8f).w(this, FUNC(bking_state::bking3_addr_l_w)); +} + +void bking_state::bking_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x2fff).rom(); //only bking3 + map(0x4000, 0x43ff).ram(); + map(0x4400, 0x4401).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x4401, 0x4401).r("ay1", FUNC(ay8910_device::data_r)); + map(0x4402, 0x4403).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x4403, 0x4403).r("ay2", FUNC(ay8910_device::data_r)); + map(0x4800, 0x4800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4802, 0x4802).rw(this, FUNC(bking_state::bking_sndnmi_disable_r), FUNC(bking_state::bking_sndnmi_enable_w)); + map(0xe000, 0xefff).rom(); /* Space for diagnostic ROM */ +} static INPUT_PORTS_START( bking ) diff --git a/src/mame/drivers/blackt96.cpp b/src/mame/drivers/blackt96.cpp index 17090d5ad26..568c43bb125 100644 --- a/src/mame/drivers/blackt96.cpp +++ b/src/mame/drivers/blackt96.cpp @@ -240,26 +240,30 @@ WRITE16_MEMBER(blackt96_state::tx_vram_w) m_tx_tilemap->mark_tile_dirty(offset/2); } -ADDRESS_MAP_START(blackt96_state::blackt96_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1_P2") AM_WRITE8(sound_cmd_w,0xff00) // soundlatch - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN1") AM_WRITE8(output_w,0x00ff) // COIN INPUT - AM_RANGE(0x0e0000, 0x0e0001) AM_READ( random_r ) // unk, from sound? - called in tandem with result discarded, watchdog? - AM_RANGE(0x0e8000, 0x0e8001) AM_READ( random_r ) // unk, from sound? / - AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") - AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2") AM_WRITENOP // service mode, left-over? - - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("tilemapram") // text tilemap - AM_RANGE(0x200000, 0x207fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - - AM_RANGE(0xc00000, 0xc03fff) AM_RAM // main ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(blackt96_state::oki1_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki1bank") -ADDRESS_MAP_END +void blackt96_state::blackt96_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("P1_P2"); + map(0x080000, 0x080000).w(this, FUNC(blackt96_state::sound_cmd_w)); // soundlatch + map(0x0c0000, 0x0c0001).portr("IN1"); // COIN INPUT + map(0x0c0001, 0x0c0001).w(this, FUNC(blackt96_state::output_w)); + map(0x0e0000, 0x0e0001).r(this, FUNC(blackt96_state::random_r)); // unk, from sound? - called in tandem with result discarded, watchdog? + map(0x0e8000, 0x0e8001).r(this, FUNC(blackt96_state::random_r)); // unk, from sound? / + map(0x0f0000, 0x0f0001).portr("DSW1"); + map(0x0f0008, 0x0f0009).portr("DSW2").nopw(); // service mode, left-over? + + map(0x100000, 0x100fff).ram().w(this, FUNC(blackt96_state::tx_vram_w)).share("tilemapram"); // text tilemap + map(0x200000, 0x207fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram"); // only partially populated + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + + map(0xc00000, 0xc03fff).ram(); // main ram +} + +void blackt96_state::oki1_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("oki1bank"); +} diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp index 0f284c6d3f3..04b199d0e7e 100644 --- a/src/mame/drivers/bladestl.cpp +++ b/src/mame/drivers/bladestl.cpp @@ -125,37 +125,39 @@ WRITE8_MEMBER(bladestl_state::bladestl_speech_ctrl_w) * *************************************/ -ADDRESS_MAP_START(bladestl_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */ - AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */ - AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */ - AM_RANGE(0x2400, 0x245f) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") /* palette */ - AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */ - AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("COINSW") /* DIPSW #3, coinsw, startsw */ - AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1") /* 1P controls */ - AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2") /* 2P controls */ - AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2") /* DISPW #2 */ - AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1") /* DIPSW #1 */ - AM_RANGE(0x2e80, 0x2e80) AM_WRITE(bladestl_sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x2ec0, 0x2ec0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2f00, 0x2f03) AM_READ(trackball_r) /* Trackballs */ - AM_RANGE(0x2f40, 0x2f40) AM_WRITE(bladestl_bankswitch_w) /* bankswitch control */ - AM_RANGE(0x2f80, 0x2f9f) AM_DEVREADWRITE("k051733", k051733_device, read, write) /* Protection: 051733 */ - AM_RANGE(0x2fc0, 0x2fc0) AM_WRITENOP /* ??? */ - AM_RANGE(0x4000, 0x5fff) AM_RAM /* Work RAM */ - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bladestl_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM2203 */ - AM_RANGE(0x3000, 0x3000) AM_WRITE(bladestl_speech_ctrl_w) /* UPD7759 */ - AM_RANGE(0x4000, 0x4000) AM_READ(bladestl_speech_busy_r) /* UPD7759 */ - AM_RANGE(0x5000, 0x5000) AM_WRITENOP /* ??? */ - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void bladestl_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(m_k007342, FUNC(k007342_device::read), FUNC(k007342_device::write)); /* Color RAM + Video RAM */ + map(0x2000, 0x21ff).rw(m_k007420, FUNC(k007420_device::read), FUNC(k007420_device::write)); /* Sprite RAM */ + map(0x2200, 0x23ff).rw(m_k007342, FUNC(k007342_device::scroll_r), FUNC(k007342_device::scroll_w)); /* Scroll RAM */ + map(0x2400, 0x245f).ram().w("palette", FUNC(palette_device::write_indirect)).share("palette"); /* palette */ + map(0x2600, 0x2607).w(m_k007342, FUNC(k007342_device::vreg_w)); /* Video Registers */ + map(0x2e00, 0x2e00).portr("COINSW"); /* DIPSW #3, coinsw, startsw */ + map(0x2e01, 0x2e01).portr("P1"); /* 1P controls */ + map(0x2e02, 0x2e02).portr("P2"); /* 2P controls */ + map(0x2e03, 0x2e03).portr("DSW2"); /* DISPW #2 */ + map(0x2e40, 0x2e40).portr("DSW1"); /* DIPSW #1 */ + map(0x2e80, 0x2e80).w(this, FUNC(bladestl_state::bladestl_sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x2ec0, 0x2ec0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2f00, 0x2f03).r(this, FUNC(bladestl_state::trackball_r)); /* Trackballs */ + map(0x2f40, 0x2f40).w(this, FUNC(bladestl_state::bladestl_bankswitch_w)); /* bankswitch control */ + map(0x2f80, 0x2f9f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* Protection: 051733 */ + map(0x2fc0, 0x2fc0).nopw(); /* ??? */ + map(0x4000, 0x5fff).ram(); /* Work RAM */ + map(0x6000, 0x7fff).bankr("rombank"); /* banked ROM */ + map(0x8000, 0xffff).rom(); +} + +void bladestl_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x1001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM2203 */ + map(0x3000, 0x3000).w(this, FUNC(bladestl_state::bladestl_speech_ctrl_w)); /* UPD7759 */ + map(0x4000, 0x4000).r(this, FUNC(bladestl_state::bladestl_speech_busy_r)); /* UPD7759 */ + map(0x5000, 0x5000).nopw(); /* ??? */ + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp index f633dc80de6..5ccfbe75df8 100644 --- a/src/mame/drivers/blitz68k.cpp +++ b/src/mame/drivers/blitz68k.cpp @@ -620,65 +620,67 @@ WRITE16_MEMBER(blitz68k_state::sound_write_w) } #endif -ADDRESS_MAP_START(blitz68k_state::ilpag_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blitter", 0) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram") +void blitz68k_state::ilpag_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1fffff).rom().region("blitter", 0); + map(0x200000, 0x20ffff).ram().share("nvram"); // AM_RANGE(0x800000, 0x800001) AM_READ(test_r) // AM_RANGE(0x880000, 0x880001) AM_READ(test_r) - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 ) - AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) - AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("blit_transpen") //video registers for the blitter write - AM_RANGE(0x990000, 0x990007) AM_RAM AM_SHARE("blit_vregs") //pens - AM_RANGE(0x998000, 0x998001) AM_RAM AM_SHARE("blit_romaddr") - AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_SHARE("blit_attr1_ram") - AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_SHARE("blitram_loword") - AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_SHARE("blit_attr2_ram") - AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE(blit_copy_w ) AM_SHARE("blitram_hiword") - AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r) - - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(lamps_w) - AM_RANGE(0xc00180, 0xc00181) AM_READ_PORT("IN2") + map(0x900000, 0x900000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x900002, 0x900002).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x900004, 0x900004).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x980000, 0x98000f).ram().share("blit_transpen"); //video registers for the blitter write + map(0x990000, 0x990007).ram().share("blit_vregs"); //pens + map(0x998000, 0x998001).ram().share("blit_romaddr"); + map(0x9a0000, 0x9a0001).ram().share("blit_attr1_ram"); + map(0x9a8000, 0x9a8001).ram().share("blitram_loword"); + map(0x9b0000, 0x9b0001).ram().share("blit_attr2_ram"); + map(0x9b8000, 0x9b8001).ram().w(this, FUNC(blitz68k_state::blit_copy_w)).share("blitram_hiword"); + map(0x9e0000, 0x9e0001).r(this, FUNC(blitz68k_state::blitter_status_r)); + + map(0xc00000, 0xc00001).w(this, FUNC(blitz68k_state::lamps_w)); + map(0xc00180, 0xc00181).portr("IN2"); // AM_RANGE(0xc00200, 0xc00201) AM_WRITE(sound_write_w) - AM_RANGE(0xc00380, 0xc00381) AM_READ_PORT("IN3") + map(0xc00380, 0xc00381).portr("IN3"); // AM_RANGE(0xc00300, 0xc00301) AM_WRITE(irq_callback_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(blitz68k_state::steaser_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x1fffff) AM_ROM AM_REGION("blitter", 0) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram") +void blitz68k_state::steaser_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x1fffff).rom().region("blitter", 0); + map(0x200000, 0x20ffff).ram().share("nvram"); - AM_RANGE(0x800000, 0x800001) AM_READ(test_r) + map(0x800000, 0x800001).r(this, FUNC(blitz68k_state::test_r)); // AM_RANGE(0x840000, 0x840001) AM_WRITE(sound_write_w) - AM_RANGE(0x880000, 0x880001) AM_READ(test_r) + map(0x880000, 0x880001).r(this, FUNC(blitz68k_state::test_r)); // AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE(sound_write_w) - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 ) - AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) - AM_RANGE(0x940000, 0x940001) AM_WRITENOP //? Seems a dword write for some read, written consecutively - AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("blit_transpen")//probably transparency pens - AM_RANGE(0x990000, 0x990005) AM_RAM AM_SHARE("blit_vregs") - AM_RANGE(0x998000, 0x998001) AM_RAM AM_SHARE("blit_romaddr") - AM_RANGE(0x9a0000, 0x9a0001) AM_RAM AM_SHARE("blit_attr1_ram") - AM_RANGE(0x9a8000, 0x9a8001) AM_RAM AM_SHARE("blitram_loword") - AM_RANGE(0x9b0000, 0x9b0001) AM_RAM AM_SHARE("blit_attr2_ram") - AM_RANGE(0x9b8000, 0x9b8001) AM_RAM_WRITE(blit_copy_w ) AM_SHARE("blitram_hiword") - AM_RANGE(0x9c0002, 0x9c0003) AM_READNOP //pen control? - AM_RANGE(0x9d0000, 0x9d0001) AM_READNOP //? - AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r) - AM_RANGE(0x9f0000, 0x9f0001) AM_WRITENOP //??? + map(0x900000, 0x900000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x900002, 0x900002).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x900004, 0x900004).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x940000, 0x940001).nopw(); //? Seems a dword write for some read, written consecutively + map(0x980000, 0x98000f).ram().share("blit_transpen");//probably transparency pens + map(0x990000, 0x990005).ram().share("blit_vregs"); + map(0x998000, 0x998001).ram().share("blit_romaddr"); + map(0x9a0000, 0x9a0001).ram().share("blit_attr1_ram"); + map(0x9a8000, 0x9a8001).ram().share("blitram_loword"); + map(0x9b0000, 0x9b0001).ram().share("blit_attr2_ram"); + map(0x9b8000, 0x9b8001).ram().w(this, FUNC(blitz68k_state::blit_copy_w)).share("blitram_hiword"); + map(0x9c0002, 0x9c0003).nopr(); //pen control? + map(0x9d0000, 0x9d0001).nopr(); //? + map(0x9e0000, 0x9e0001).r(this, FUNC(blitz68k_state::blitter_status_r)); + map(0x9f0000, 0x9f0001).nopw(); //??? // AM_RANGE(0xc00000, 0xc00001) AM_WRITE(lamps_w) - AM_RANGE(0xbd0000, 0xbd0001) AM_READ(test_r) + map(0xbd0000, 0xbd0001).r(this, FUNC(blitz68k_state::test_r)); // AM_RANGE(0xc00200, 0xc00201) AM_WRITE(sound_write_w) // AM_RANGE(0xc00380, 0xc00381) AM_READ_PORT("IN3") // AM_RANGE(0xc00300, 0xc00301) AM_WRITE(irq_callback_w) -ADDRESS_MAP_END +} /************************************************************************************************************* Bank Robbery @@ -717,56 +719,57 @@ WRITE8_MEMBER(blitz68k_state::bankrob_mcu2_w) logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data); } -ADDRESS_MAP_START(blitz68k_state::bankrob_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM +void blitz68k_state::bankrob_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); - AM_RANGE(0x220000, 0x220001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 ) - AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0xff00 ) + map(0x220000, 0x220000).r("ramdac", FUNC(ramdac_device::index_r)); + map(0x220002, 0x220002).r("ramdac", FUNC(ramdac_device::pal_r)); - AM_RANGE(0x240000, 0x240001) AM_WRITE8(blit_addr0_w, 0xff00) - AM_RANGE(0x240002, 0x240003) AM_WRITE8(blit_addr1_w, 0xff00) - AM_RANGE(0x240004, 0x240005) AM_WRITE8(blit_addr2_w, 0xff00) + map(0x240000, 0x240000).w(this, FUNC(blitz68k_state::blit_addr0_w)); + map(0x240002, 0x240002).w(this, FUNC(blitz68k_state::blit_addr1_w)); + map(0x240004, 0x240004).w(this, FUNC(blitz68k_state::blit_addr2_w)); - AM_RANGE(0x240006, 0x240007) AM_WRITE8(blit_x_w, 0xff00) - AM_RANGE(0x240008, 0x240009) AM_WRITE8(blit_y_w, 0xff00) + map(0x240006, 0x240006).w(this, FUNC(blitz68k_state::blit_x_w)); + map(0x240008, 0x240008).w(this, FUNC(blitz68k_state::blit_y_w)); - AM_RANGE(0x24000a, 0x24000b) AM_WRITE8(blit_w_w, 0xff00) - AM_RANGE(0x24000c, 0x24000d) AM_WRITE8(blit_h_w, 0xff00) + map(0x24000a, 0x24000a).w(this, FUNC(blitz68k_state::blit_w_w)); + map(0x24000c, 0x24000c).w(this, FUNC(blitz68k_state::blit_h_w)); - AM_RANGE(0x24000e, 0x24000f) AM_WRITE8(blit_draw_w, 0xff00) + map(0x24000e, 0x24000e).w(this, FUNC(blitz68k_state::blit_draw_w)); - AM_RANGE(0x260000, 0x260001) AM_WRITE8(blit_pen0_w, 0xff00) - AM_RANGE(0x260002, 0x260003) AM_WRITE8(blit_pen1_w, 0xff00) - AM_RANGE(0x260004, 0x260005) AM_WRITE8(blit_pen2_w, 0xff00) - AM_RANGE(0x260006, 0x260007) AM_WRITE8(blit_pen3_w, 0xff00) + map(0x260000, 0x260000).w(this, FUNC(blitz68k_state::blit_pen0_w)); + map(0x260002, 0x260002).w(this, FUNC(blitz68k_state::blit_pen1_w)); + map(0x260004, 0x260004).w(this, FUNC(blitz68k_state::blit_pen2_w)); + map(0x260006, 0x260006).w(this, FUNC(blitz68k_state::blit_pen3_w)); - AM_RANGE(0x280000, 0x280001) AM_READ(blitter_status_r) + map(0x280000, 0x280001).r(this, FUNC(blitz68k_state::blitter_status_r)); - AM_RANGE(0x2c0000, 0x2c0001) AM_WRITENOP // 1->0 + map(0x2c0000, 0x2c0001).nopw(); // 1->0 - AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE8(blit_flag0_w, 0xff00) - AM_RANGE(0x2e0002, 0x2e0003) AM_WRITE8(blit_flag1_w, 0xff00) - AM_RANGE(0x2e0004, 0x2e0005) AM_WRITE8(blit_flipx_w, 0xff00) - AM_RANGE(0x2e0006, 0x2e0007) AM_WRITE8(blit_flipy_w, 0xff00) - AM_RANGE(0x2e0008, 0x2e0009) AM_WRITE8(blit_solid_w, 0xff00) - AM_RANGE(0x2e000a, 0x2e000b) AM_WRITE8(blit_trans_w, 0xff00) - AM_RANGE(0x2e000c, 0x2e000d) AM_WRITE8(blit_flag6_w, 0xff00) - AM_RANGE(0x2e000e, 0x2e000f) AM_WRITE8(blit_flag7_w, 0xff00) + map(0x2e0000, 0x2e0000).w(this, FUNC(blitz68k_state::blit_flag0_w)); + map(0x2e0002, 0x2e0002).w(this, FUNC(blitz68k_state::blit_flag1_w)); + map(0x2e0004, 0x2e0004).w(this, FUNC(blitz68k_state::blit_flipx_w)); + map(0x2e0006, 0x2e0006).w(this, FUNC(blitz68k_state::blit_flipy_w)); + map(0x2e0008, 0x2e0008).w(this, FUNC(blitz68k_state::blit_solid_w)); + map(0x2e000a, 0x2e000a).w(this, FUNC(blitz68k_state::blit_trans_w)); + map(0x2e000c, 0x2e000c).w(this, FUNC(blitz68k_state::blit_flag6_w)); + map(0x2e000e, 0x2e000e).w(this, FUNC(blitz68k_state::blit_flag7_w)); - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 ) - AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) + map(0x300000, 0x300000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x300002, 0x300002).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x300004, 0x300004).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x400000, 0x400001) AM_READ8(bankrob_mcu_status_write_r, 0x00ff) - AM_RANGE(0x400002, 0x400003) AM_READ8(bankrob_mcu_status_read_r, 0x00ff) + map(0x400001, 0x400001).r(this, FUNC(blitz68k_state::bankrob_mcu_status_write_r)); + map(0x400003, 0x400003).r(this, FUNC(blitz68k_state::bankrob_mcu_status_read_r)); - AM_RANGE(0x400004, 0x400005) AM_READWRITE8(bankrob_mcu1_r, bankrob_mcu1_w, 0x00ff) - AM_RANGE(0x400006, 0x400007) AM_READWRITE8(bankrob_mcu2_r, bankrob_mcu2_w, 0xff00) + map(0x400005, 0x400005).rw(this, FUNC(blitz68k_state::bankrob_mcu1_r), FUNC(blitz68k_state::bankrob_mcu1_w)); + map(0x400006, 0x400006).rw(this, FUNC(blitz68k_state::bankrob_mcu2_r), FUNC(blitz68k_state::bankrob_mcu2_w)); - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) // triggered by MCU? - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) -ADDRESS_MAP_END + map(0x800000, 0x800000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); // triggered by MCU? + map(0x800002, 0x800002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} // bankroba: @@ -802,58 +805,59 @@ WRITE8_MEMBER(blitz68k_state::bankroba_mcu2_w) logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data); } -ADDRESS_MAP_START(blitz68k_state::bankroba_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM +void blitz68k_state::bankroba_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20ffff).ram(); - AM_RANGE(0x800000, 0x800001) AM_READ8(bankroba_mcu1_r, 0x00ff) // lev 4 - AM_RANGE(0x840000, 0x840001) AM_WRITE8(bankroba_mcu1_w, 0x00ff) + map(0x800001, 0x800001).r(this, FUNC(blitz68k_state::bankroba_mcu1_r)); // lev 4 + map(0x840001, 0x840001).w(this, FUNC(blitz68k_state::bankroba_mcu1_w)); - AM_RANGE(0x880000, 0x880001) AM_READ8(bankroba_mcu2_r, 0x00ff) // lev 3 - AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE8(bankroba_mcu2_w, 0x00ff) + map(0x880001, 0x880001).r(this, FUNC(blitz68k_state::bankroba_mcu2_r)); // lev 3 + map(0x8c0001, 0x8c0001).w(this, FUNC(blitz68k_state::bankroba_mcu2_w)); - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 ) - AM_RANGE(0x900004, 0x900005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) + map(0x900000, 0x900000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x900002, 0x900002).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x900004, 0x900004).w("ramdac", FUNC(ramdac_device::mask_w)); // AM_RANGE(0x940000, 0x940001) AM_WRITE // lev 6 - AM_RANGE(0x980000, 0x980001) AM_WRITE8(blit_flag0_w, 0xff00) - AM_RANGE(0x980002, 0x980003) AM_WRITE8(blit_flag1_w, 0xff00) - AM_RANGE(0x980004, 0x980005) AM_WRITE8(blit_flipx_w, 0xff00) - AM_RANGE(0x980006, 0x980007) AM_WRITE8(blit_flipy_w, 0xff00) - AM_RANGE(0x980008, 0x980009) AM_WRITE8(blit_solid_w, 0xff00) - AM_RANGE(0x98000a, 0x98000b) AM_WRITE8(blit_trans_w, 0xff00) - AM_RANGE(0x98000c, 0x98000d) AM_WRITE8(blit_flag6_w, 0xff00) - AM_RANGE(0x98000e, 0x98000f) AM_WRITE8(blit_flag7_w, 0xff00) + map(0x980000, 0x980000).w(this, FUNC(blitz68k_state::blit_flag0_w)); + map(0x980002, 0x980002).w(this, FUNC(blitz68k_state::blit_flag1_w)); + map(0x980004, 0x980004).w(this, FUNC(blitz68k_state::blit_flipx_w)); + map(0x980006, 0x980006).w(this, FUNC(blitz68k_state::blit_flipy_w)); + map(0x980008, 0x980008).w(this, FUNC(blitz68k_state::blit_solid_w)); + map(0x98000a, 0x98000a).w(this, FUNC(blitz68k_state::blit_trans_w)); + map(0x98000c, 0x98000c).w(this, FUNC(blitz68k_state::blit_flag6_w)); + map(0x98000e, 0x98000e).w(this, FUNC(blitz68k_state::blit_flag7_w)); - AM_RANGE(0x990000, 0x990001) AM_WRITE8(blit_pen0_w, 0xff00) - AM_RANGE(0x990002, 0x990003) AM_WRITE8(blit_pen1_w, 0xff00) - AM_RANGE(0x990004, 0x990005) AM_WRITE8(blit_pen2_w, 0xff00) - AM_RANGE(0x990006, 0x990007) AM_WRITE8(blit_pen3_w, 0xff00) + map(0x990000, 0x990000).w(this, FUNC(blitz68k_state::blit_pen0_w)); + map(0x990002, 0x990002).w(this, FUNC(blitz68k_state::blit_pen1_w)); + map(0x990004, 0x990004).w(this, FUNC(blitz68k_state::blit_pen2_w)); + map(0x990006, 0x990006).w(this, FUNC(blitz68k_state::blit_pen3_w)); - AM_RANGE(0x998000, 0x998001) AM_WRITE8(blit_addr01_w, 0xffff) - AM_RANGE(0x9a0000, 0x9a0001) AM_WRITE8(blit_addr2_w, 0xff00) + map(0x998000, 0x998001).w(this, FUNC(blitz68k_state::blit_addr01_w)); + map(0x9a0000, 0x9a0000).w(this, FUNC(blitz68k_state::blit_addr2_w)); - AM_RANGE(0x9a8000, 0x9a8001) AM_WRITE8(blit_xy_w, 0xffff) + map(0x9a8000, 0x9a8001).w(this, FUNC(blitz68k_state::blit_xy_w)); - AM_RANGE(0x9b0000, 0x9b0001) AM_WRITE8(blit_wh_w, 0xffff) + map(0x9b0000, 0x9b0001).w(this, FUNC(blitz68k_state::blit_wh_w)); - AM_RANGE(0x9b8000, 0x9b8001) AM_WRITE8(blit_draw_w, 0x00ff) + map(0x9b8001, 0x9b8001).w(this, FUNC(blitz68k_state::blit_draw_w)); - AM_RANGE(0x9c0000, 0x9c0001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 ) - AM_RANGE(0x9c0002, 0x9c0003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0xff00 ) + map(0x9c0000, 0x9c0000).r("ramdac", FUNC(ramdac_device::index_r)); + map(0x9c0002, 0x9c0002).r("ramdac", FUNC(ramdac_device::pal_r)); - AM_RANGE(0x9d0000, 0x9d0001) AM_READ8(bankroba_mcu1_status_write_r, 0xff00) + map(0x9d0000, 0x9d0000).r(this, FUNC(blitz68k_state::bankroba_mcu1_status_write_r)); - AM_RANGE(0x9e0000, 0x9e0001) AM_READ(blitter_status_r) + map(0x9e0000, 0x9e0001).r(this, FUNC(blitz68k_state::blitter_status_r)); - AM_RANGE(0x9f0000, 0x9f0001) AM_WRITENOP // 1 + map(0x9f0000, 0x9f0001).nopw(); // 1 - AM_RANGE(0xbd0000, 0xbd0001) AM_READ8(bankroba_mcu2_status_write_r, 0xff00) + map(0xbd0000, 0xbd0000).r(this, FUNC(blitz68k_state::bankroba_mcu2_status_write_r)); // CRTC connected to MCU? -ADDRESS_MAP_END +} /************************************************************************************************************* Funny Fruit @@ -945,42 +949,43 @@ WRITE16_MEMBER(blitz68k_state::cjffruit_mcu_w) logerror("%s: mcu written with %02x\n", machine().describe_context(),data >> 8); } -ADDRESS_MAP_START(blitz68k_state::cjffruit_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x480000, 0x4807ff) AM_RAM +void blitz68k_state::cjffruit_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x41ffff).ram().share("nvram"); + map(0x480000, 0x4807ff).ram(); - AM_RANGE(0x820000, 0x820007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff) + map(0x820000, 0x820007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w)); - AM_RANGE(0x850000, 0x850001) AM_READ(cjffruit_mcu_r ) + map(0x850000, 0x850001).r(this, FUNC(blitz68k_state::cjffruit_mcu_r)); - AM_RANGE(0x870000, 0x870001) AM_READ_PORT("IN0") - AM_RANGE(0x872000, 0x872001) AM_READ_PORT("IN1") - AM_RANGE(0x874000, 0x874001) AM_READ_PORT("IN2") - AM_RANGE(0x876000, 0x876001) AM_READ_PORT("DSW") + map(0x870000, 0x870001).portr("IN0"); + map(0x872000, 0x872001).portr("IN1"); + map(0x874000, 0x874001).portr("IN2"); + map(0x876000, 0x876001).portr("DSW"); - AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x880000, 0x880001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x880002, 0x880003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) - AM_RANGE(0x880000, 0x880001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 ) - AM_RANGE(0x880000, 0x880001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff ) + map(0x880000, 0x880000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x880001, 0x880001).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x880002, 0x880002).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x880000, 0x880000).r("ramdac", FUNC(ramdac_device::index_r)); + map(0x880001, 0x880001).r("ramdac", FUNC(ramdac_device::pal_r)); - AM_RANGE(0x8a0000, 0x8a0007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff) + map(0x8a0000, 0x8a0007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w)); - AM_RANGE(0x8b0000, 0x8b0003) AM_WRITE8(blit_pens_w, 0xffff) + map(0x8b0000, 0x8b0003).w(this, FUNC(blitz68k_state::blit_pens_w)); - AM_RANGE(0x8e0000, 0x8e0001) AM_WRITE(cjffruit_mcu_w ) + map(0x8e0000, 0x8e0001).w(this, FUNC(blitz68k_state::cjffruit_mcu_w)); - AM_RANGE(0x8f8000, 0x8f8001) AM_WRITE(cjffruit_leds1_w) AM_SHARE("leds0") - AM_RANGE(0x8fa000, 0x8fa001) AM_WRITE(cjffruit_leds2_w) AM_SHARE("leds1") - AM_RANGE(0x8fc000, 0x8fc001) AM_WRITE(cjffruit_leds3_w) AM_SHARE("leds2") + map(0x8f8000, 0x8f8001).w(this, FUNC(blitz68k_state::cjffruit_leds1_w)).share("leds0"); + map(0x8fa000, 0x8fa001).w(this, FUNC(blitz68k_state::cjffruit_leds2_w)).share("leds1"); + map(0x8fc000, 0x8fc001).w(this, FUNC(blitz68k_state::cjffruit_leds3_w)).share("leds2"); - AM_RANGE(0x8fe000, 0x8fe003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans - AM_RANGE(0x8fe004, 0x8fe005) AM_WRITEONLY - AM_RANGE(0x8fe006, 0x8fe007) AM_WRITE(crtc_lpen_w) // 0x8fe006: 0->1, 0x8fe007: 1->0 + map(0x8fe000, 0x8fe003).w(this, FUNC(blitz68k_state::blit_flags_w)); // flipx,y,solid,trans + map(0x8fe004, 0x8fe005).writeonly(); + map(0x8fe006, 0x8fe007).w(this, FUNC(blitz68k_state::crtc_lpen_w)); // 0x8fe006: 0->1, 0x8fe007: 1->0 - AM_RANGE(0xc40000, 0xc40001) AM_READWRITE8(crtc_r, crtc_w, 0xffff) -ADDRESS_MAP_END + map(0xc40000, 0xc40001).rw(this, FUNC(blitz68k_state::crtc_r), FUNC(blitz68k_state::crtc_w)); +} /************************************************************************************************************* Deuces Wild 2 @@ -1044,42 +1049,43 @@ WRITE16_MEMBER(blitz68k_state::deucesw2_leds3_w) } } -ADDRESS_MAP_START(blitz68k_state::deucesw2_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM +void blitz68k_state::deucesw2_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x41ffff).ram(); - AM_RANGE(0x800000, 0x800007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff) + map(0x800000, 0x800007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w)); - AM_RANGE(0x812000, 0x812001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 ) - AM_RANGE(0x812000, 0x812001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff ) + map(0x812000, 0x812000).r("ramdac", FUNC(ramdac_device::index_r)); + map(0x812001, 0x812001).r("ramdac", FUNC(ramdac_device::pal_r)); - AM_RANGE(0x830000, 0x830001) AM_READ(deucesw2_mcu_r ) + map(0x830000, 0x830001).r(this, FUNC(blitz68k_state::deucesw2_mcu_r)); - AM_RANGE(0x840000, 0x840001) AM_READ_PORT("IN0") - AM_RANGE(0x850000, 0x850001) AM_READ_PORT("IN1") - AM_RANGE(0x860000, 0x860001) AM_READ_PORT("IN2") - AM_RANGE(0x870000, 0x870001) AM_READ_PORT("DSW") + map(0x840000, 0x840001).portr("IN0"); + map(0x850000, 0x850001).portr("IN1"); + map(0x860000, 0x860001).portr("IN2"); + map(0x870000, 0x870001).portr("DSW"); - AM_RANGE(0x880000, 0x880007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff) + map(0x880000, 0x880007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w)); - AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x890000, 0x890001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x890002, 0x890003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) + map(0x890000, 0x890000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x890001, 0x890001).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x890002, 0x890002).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x894000, 0x894003) AM_WRITE8(blit_pens_w, 0xffff) + map(0x894000, 0x894003).w(this, FUNC(blitz68k_state::blit_pens_w)); - AM_RANGE(0x896000, 0x896001) AM_WRITE(deucesw2_mcu_w ) + map(0x896000, 0x896001).w(this, FUNC(blitz68k_state::deucesw2_mcu_w)); - AM_RANGE(0x898000, 0x898001) AM_WRITE(deucesw2_leds1_w) AM_SHARE("leds0") - AM_RANGE(0x89a000, 0x89a001) AM_WRITE(deucesw2_leds2_w) AM_SHARE("leds1") - AM_RANGE(0x89c000, 0x89c001) AM_WRITE(deucesw2_leds3_w) AM_SHARE("leds2") + map(0x898000, 0x898001).w(this, FUNC(blitz68k_state::deucesw2_leds1_w)).share("leds0"); + map(0x89a000, 0x89a001).w(this, FUNC(blitz68k_state::deucesw2_leds2_w)).share("leds1"); + map(0x89c000, 0x89c001).w(this, FUNC(blitz68k_state::deucesw2_leds3_w)).share("leds2"); - AM_RANGE(0x89e000, 0x89e003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans - AM_RANGE(0x89e004, 0x89e005) AM_WRITEONLY - AM_RANGE(0x89e006, 0x89e007) AM_WRITE(crtc_lpen_w) // 0x89e006: 0->1, 0x89e007: 1->0 + map(0x89e000, 0x89e003).w(this, FUNC(blitz68k_state::blit_flags_w)); // flipx,y,solid,trans + map(0x89e004, 0x89e005).writeonly(); + map(0x89e006, 0x89e007).w(this, FUNC(blitz68k_state::crtc_lpen_w)); // 0x89e006: 0->1, 0x89e007: 1->0 - AM_RANGE(0xc00000, 0xc00001) AM_READWRITE8(crtc_r, crtc_w, 0xffff) -ADDRESS_MAP_END + map(0xc00000, 0xc00001).rw(this, FUNC(blitz68k_state::crtc_r), FUNC(blitz68k_state::crtc_w)); +} /************************************************************************************************************* Dual Games @@ -1118,59 +1124,60 @@ WRITE8_MEMBER(blitz68k_state::dualgame_mcu2_w) logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data); } -ADDRESS_MAP_START(blitz68k_state::dualgame_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM +void blitz68k_state::dualgame_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); - AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 ) - AM_RANGE(0x220002, 0x220003) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff ) + map(0x220002, 0x220002).r("ramdac", FUNC(ramdac_device::index_r)); + map(0x220003, 0x220003).r("ramdac", FUNC(ramdac_device::pal_r)); - AM_RANGE(0x240000, 0x240001) AM_WRITE8(blit_addr0_w, 0xff00) - AM_RANGE(0x240002, 0x240003) AM_WRITE8(blit_addr1_w, 0xff00) - AM_RANGE(0x240004, 0x240005) AM_WRITE8(blit_addr2_w, 0xff00) + map(0x240000, 0x240000).w(this, FUNC(blitz68k_state::blit_addr0_w)); + map(0x240002, 0x240002).w(this, FUNC(blitz68k_state::blit_addr1_w)); + map(0x240004, 0x240004).w(this, FUNC(blitz68k_state::blit_addr2_w)); - AM_RANGE(0x240006, 0x240007) AM_WRITE8(blit_x_w, 0xff00) - AM_RANGE(0x240008, 0x240009) AM_WRITE8(blit_y_w, 0xff00) + map(0x240006, 0x240006).w(this, FUNC(blitz68k_state::blit_x_w)); + map(0x240008, 0x240008).w(this, FUNC(blitz68k_state::blit_y_w)); - AM_RANGE(0x24000a, 0x24000b) AM_WRITE8(blit_w_w, 0xff00) - AM_RANGE(0x24000c, 0x24000d) AM_WRITE8(blit_h_w, 0xff00) + map(0x24000a, 0x24000a).w(this, FUNC(blitz68k_state::blit_w_w)); + map(0x24000c, 0x24000c).w(this, FUNC(blitz68k_state::blit_h_w)); - AM_RANGE(0x24000e, 0x24000f) AM_WRITE8(blit_draw_w, 0xff00) + map(0x24000e, 0x24000e).w(this, FUNC(blitz68k_state::blit_draw_w)); - AM_RANGE(0x260000, 0x260001) AM_WRITE8(blit_pen0_w, 0xff00) - AM_RANGE(0x260002, 0x260003) AM_WRITE8(blit_pen1_w, 0xff00) - AM_RANGE(0x260004, 0x260005) AM_WRITE8(blit_pen2_w, 0xff00) - AM_RANGE(0x260006, 0x260007) AM_WRITE8(blit_pen3_w, 0xff00) + map(0x260000, 0x260000).w(this, FUNC(blitz68k_state::blit_pen0_w)); + map(0x260002, 0x260002).w(this, FUNC(blitz68k_state::blit_pen1_w)); + map(0x260004, 0x260004).w(this, FUNC(blitz68k_state::blit_pen2_w)); + map(0x260006, 0x260006).w(this, FUNC(blitz68k_state::blit_pen3_w)); - AM_RANGE(0x280000, 0x280001) AM_READ8(blit_status_r, 0xff00) + map(0x280000, 0x280000).r(this, FUNC(blitz68k_state::blit_status_r)); - AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(crtc_lpen_w) - AM_RANGE(0x2a0000, 0x2a0001) AM_READNOP + map(0x2a0000, 0x2a0001).w(this, FUNC(blitz68k_state::crtc_lpen_w)); + map(0x2a0000, 0x2a0001).nopr(); - AM_RANGE(0x2c0000, 0x2c0001) AM_WRITENOP // 1->0 (MCU related?) + map(0x2c0000, 0x2c0001).nopw(); // 1->0 (MCU related?) - AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE8(blit_flag0_w, 0xff00) - AM_RANGE(0x2e0002, 0x2e0003) AM_WRITE8(blit_flag1_w, 0xff00) - AM_RANGE(0x2e0004, 0x2e0005) AM_WRITE8(blit_flipx_w, 0xff00) // flipx - AM_RANGE(0x2e0006, 0x2e0007) AM_WRITE8(blit_flipy_w, 0xff00) // flipy - AM_RANGE(0x2e0008, 0x2e0009) AM_WRITE8(blit_solid_w, 0xff00) // solid - AM_RANGE(0x2e000a, 0x2e000b) AM_WRITE8(blit_trans_w, 0xff00) // transparency - AM_RANGE(0x2e000c, 0x2e000d) AM_WRITE8(blit_flag6_w, 0xff00) - AM_RANGE(0x2e000e, 0x2e000f) AM_WRITE8(blit_flag7_w, 0xff00) + map(0x2e0000, 0x2e0000).w(this, FUNC(blitz68k_state::blit_flag0_w)); + map(0x2e0002, 0x2e0002).w(this, FUNC(blitz68k_state::blit_flag1_w)); + map(0x2e0004, 0x2e0004).w(this, FUNC(blitz68k_state::blit_flipx_w)); // flipx + map(0x2e0006, 0x2e0006).w(this, FUNC(blitz68k_state::blit_flipy_w)); // flipy + map(0x2e0008, 0x2e0008).w(this, FUNC(blitz68k_state::blit_solid_w)); // solid + map(0x2e000a, 0x2e000a).w(this, FUNC(blitz68k_state::blit_trans_w)); // transparency + map(0x2e000c, 0x2e000c).w(this, FUNC(blitz68k_state::blit_flag6_w)); + map(0x2e000e, 0x2e000e).w(this, FUNC(blitz68k_state::blit_flag7_w)); - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0xff00 ) - AM_RANGE(0x300004, 0x300005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) + map(0x300000, 0x300000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x300002, 0x300002).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x300004, 0x300004).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x400000, 0x400001) AM_READ8(dualgame_mcu_status_write_r, 0x00ff) - AM_RANGE(0x400002, 0x400003) AM_READ8(dualgame_mcu_status_read_r, 0x00ff) + map(0x400001, 0x400001).r(this, FUNC(blitz68k_state::dualgame_mcu_status_write_r)); + map(0x400003, 0x400003).r(this, FUNC(blitz68k_state::dualgame_mcu_status_read_r)); - AM_RANGE(0x400004, 0x400005) AM_READWRITE8(dualgame_mcu1_r, dualgame_mcu1_w, 0x00ff) - AM_RANGE(0x400006, 0x400007) AM_READWRITE8(dualgame_mcu2_r, dualgame_mcu2_w, 0xff00) + map(0x400005, 0x400005).rw(this, FUNC(blitz68k_state::dualgame_mcu1_r), FUNC(blitz68k_state::dualgame_mcu1_w)); + map(0x400006, 0x400006).rw(this, FUNC(blitz68k_state::dualgame_mcu2_r), FUNC(blitz68k_state::dualgame_mcu2_w)); - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) -ADDRESS_MAP_END + map(0x800000, 0x800000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x800002, 0x800002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} /************************************************************************************************************* The Hermit @@ -1220,42 +1227,43 @@ READ16_MEMBER(blitz68k_state::hermit_track_r) ((0xf - ((ioport("TRACK_X")->read() + 0x7) & 0xf)) << 8) ; } -ADDRESS_MAP_START(blitz68k_state::hermit_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x400000, 0x41ffff) AM_RAM +void blitz68k_state::hermit_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x400000, 0x41ffff).ram(); - AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) - AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0xff00 ) - AM_RANGE(0x840000, 0x840001) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x840002, 0x840003) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0xff00 ) - AM_RANGE(0x840000, 0x840001) AM_DEVREAD8("ramdac",ramdac_device, index_r, 0xff00 ) - AM_RANGE(0x840000, 0x840001) AM_DEVREAD8("ramdac",ramdac_device, pal_r, 0x00ff ) + map(0x800000, 0x800000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x800001, 0x800001).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x800002, 0x800002).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x840000, 0x840000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x840001, 0x840001).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x840002, 0x840002).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x840000, 0x840000).r("ramdac", FUNC(ramdac_device::index_r)); + map(0x840001, 0x840001).r("ramdac", FUNC(ramdac_device::pal_r)); - AM_RANGE(0x8c0000, 0x8c0003) AM_WRITE8(blit_pens_w, 0xffff ) + map(0x8c0000, 0x8c0003).w(this, FUNC(blitz68k_state::blit_pens_w)); - AM_RANGE(0x940000, 0x940001) AM_READ(hermit_mcu_r ) - AM_RANGE(0x980000, 0x980001) AM_WRITE(hermit_mcu_w ) + map(0x940000, 0x940001).r(this, FUNC(blitz68k_state::hermit_mcu_r)); + map(0x980000, 0x980001).w(this, FUNC(blitz68k_state::hermit_mcu_w)); - AM_RANGE(0x9c0000, 0x9c0001) AM_READ_PORT("IN0") - AM_RANGE(0x9c8000, 0x9c8001) AM_READ(hermit_track_r ) - AM_RANGE(0x9d0000, 0x9d0001) AM_READ_PORT("IN2") - AM_RANGE(0x9d8000, 0x9d8001) AM_READ_PORT("DSW") + map(0x9c0000, 0x9c0001).portr("IN0"); + map(0x9c8000, 0x9c8001).r(this, FUNC(blitz68k_state::hermit_track_r)); + map(0x9d0000, 0x9d0001).portr("IN2"); + map(0x9d8000, 0x9d8001).portr("DSW"); - AM_RANGE(0x9e0000, 0x9e0001) AM_WRITE(hermit_leds1_w) AM_SHARE("leds0") - AM_RANGE(0x9e8000, 0x9e8001) AM_WRITE(hermit_leds2_w) AM_SHARE("leds1") + map(0x9e0000, 0x9e0001).w(this, FUNC(blitz68k_state::hermit_leds1_w)).share("leds0"); + map(0x9e8000, 0x9e8001).w(this, FUNC(blitz68k_state::hermit_leds2_w)).share("leds1"); - AM_RANGE(0x9f0000, 0x9f0003) AM_WRITE8(blit_flags_w, 0xffff) // flipx,y,solid,trans - AM_RANGE(0x9f0004, 0x9f0005) AM_WRITEONLY - AM_RANGE(0x9f0006, 0x9f0007) AM_WRITE(crtc_lpen_w) // 0x9f0006: 0->1, 0x9f0007: 1->0 + map(0x9f0000, 0x9f0003).w(this, FUNC(blitz68k_state::blit_flags_w)); // flipx,y,solid,trans + map(0x9f0004, 0x9f0005).writeonly(); + map(0x9f0006, 0x9f0007).w(this, FUNC(blitz68k_state::crtc_lpen_w)); // 0x9f0006: 0->1, 0x9f0007: 1->0 - AM_RANGE(0xb00000, 0xb00001) AM_READWRITE8(crtc_r, crtc_w, 0xffff) // triggered by MCU? + map(0xb00000, 0xb00001).rw(this, FUNC(blitz68k_state::crtc_r), FUNC(blitz68k_state::crtc_w)); // triggered by MCU? - AM_RANGE(0xc80000, 0xc80007) AM_WRITE8(blit_hwyxa_draw_w, 0xffff) -ADDRESS_MAP_END + map(0xc80000, 0xc80007).w(this, FUNC(blitz68k_state::blit_hwyxa_draw_w)); +} /************************************************************************************************************* Maxi Double Poker @@ -1294,24 +1302,25 @@ WRITE8_MEMBER(blitz68k_state::maxidbl_mcu2_w) logerror("%s: mcu2 written with %02x\n", machine().describe_context(), data); } -ADDRESS_MAP_START(blitz68k_state::maxidbl_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM +void blitz68k_state::maxidbl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20ffff).ram(); - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("frame_buffer") + map(0x400000, 0x40ffff).ram().share("frame_buffer"); - AM_RANGE(0x30000c, 0x30000d) AM_WRITENOP // 0->1 (IRQ3 ack.?) - AM_RANGE(0x30000e, 0x30000f) AM_WRITENOP // 1->0 (MCU related?) + map(0x30000c, 0x30000d).nopw(); // 0->1 (IRQ3 ack.?) + map(0x30000e, 0x30000f).nopw(); // 1->0 (MCU related?) - AM_RANGE(0x500000, 0x500001) AM_READ8(maxidbl_mcu_status_write_r, 0x00ff) - AM_RANGE(0x500002, 0x500003) AM_READ8(maxidbl_mcu_status_read_r, 0x00ff) + map(0x500001, 0x500001).r(this, FUNC(blitz68k_state::maxidbl_mcu_status_write_r)); + map(0x500003, 0x500003).r(this, FUNC(blitz68k_state::maxidbl_mcu_status_read_r)); - AM_RANGE(0x500004, 0x500005) AM_READWRITE8(maxidbl_mcu1_r, maxidbl_mcu1_w, 0x00ff) - AM_RANGE(0x500006, 0x500007) AM_READWRITE8(maxidbl_mcu2_r, maxidbl_mcu2_w, 0xff00) + map(0x500005, 0x500005).rw(this, FUNC(blitz68k_state::maxidbl_mcu1_r), FUNC(blitz68k_state::maxidbl_mcu1_w)); + map(0x500006, 0x500006).rw(this, FUNC(blitz68k_state::maxidbl_mcu2_r), FUNC(blitz68k_state::maxidbl_mcu2_w)); - AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff00) // triggered by MCU? - AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) -ADDRESS_MAP_END + map(0x600000, 0x600000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); // triggered by MCU? + map(0x600002, 0x600002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} @@ -1689,9 +1698,10 @@ MC6845_ON_UPDATE_ADDR_CHANGED(blitz68k_state::crtc_addr) { } -ADDRESS_MAP_START(blitz68k_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void blitz68k_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(blitz68k_state::ilpag) MCFG_CPU_ADD("maincpu", M68000, 11059200 ) // ? diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp index 47766e4ffcc..09321a8a3e0 100644 --- a/src/mame/drivers/blktiger.cpp +++ b/src/mame/drivers/blktiger.cpp @@ -74,58 +74,62 @@ WRITE8_MEMBER(blktiger_state::blktiger_coinlockout_w) } -ADDRESS_MAP_START(blktiger_state::blktiger_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_READWRITE(blktiger_bgvideoram_r, blktiger_bgvideoram_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(blktiger_txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(blktiger_state::blktiger_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(blktiger_bankswitch_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(blktiger_coinlockout_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") AM_WRITE(blktiger_video_control_w) - AM_RANGE(0x05, 0x05) AM_READ_PORT("FREEZE") - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_READWRITE(blktiger_from_mcu_r,blktiger_to_mcu_w) /* Software protection (7) */ - AM_RANGE(0x08, 0x09) AM_WRITE(blktiger_scrollx_w) - AM_RANGE(0x0a, 0x0b) AM_WRITE(blktiger_scrolly_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(blktiger_video_enable_w) - AM_RANGE(0x0d, 0x0d) AM_WRITE(blktiger_bgvideoram_bank_w) - AM_RANGE(0x0e, 0x0e) AM_WRITE(blktiger_screen_layout_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(blktiger_state::blktigerbl_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(blktiger_bankswitch_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(blktiger_coinlockout_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") AM_WRITE(blktiger_video_control_w) - AM_RANGE(0x05, 0x05) AM_READ_PORT("FREEZE") - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_NOP /* Software protection (7) */ - AM_RANGE(0x08, 0x09) AM_WRITE(blktiger_scrollx_w) - AM_RANGE(0x0a, 0x0b) AM_WRITE(blktiger_scrolly_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(blktiger_video_enable_w) - AM_RANGE(0x0d, 0x0d) AM_WRITE(blktiger_bgvideoram_bank_w) - AM_RANGE(0x0e, 0x0e) AM_WRITE(blktiger_screen_layout_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(blktiger_state::blktiger_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xe002, 0xe003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void blktiger_state::blktiger_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).rw(this, FUNC(blktiger_state::blktiger_bgvideoram_r), FUNC(blktiger_state::blktiger_bgvideoram_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(blktiger_state::blktiger_txvideoram_w)).share("txvideoram"); + map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xdc00, 0xdfff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xe000, 0xfdff).ram(); + map(0xfe00, 0xffff).ram().share("spriteram"); +} + +void blktiger_state::blktiger_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x01, 0x01).portr("IN1").w(this, FUNC(blktiger_state::blktiger_bankswitch_w)); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).portr("DSW0").w(this, FUNC(blktiger_state::blktiger_coinlockout_w)); + map(0x04, 0x04).portr("DSW1").w(this, FUNC(blktiger_state::blktiger_video_control_w)); + map(0x05, 0x05).portr("FREEZE"); + map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).rw(this, FUNC(blktiger_state::blktiger_from_mcu_r), FUNC(blktiger_state::blktiger_to_mcu_w)); /* Software protection (7) */ + map(0x08, 0x09).w(this, FUNC(blktiger_state::blktiger_scrollx_w)); + map(0x0a, 0x0b).w(this, FUNC(blktiger_state::blktiger_scrolly_w)); + map(0x0c, 0x0c).w(this, FUNC(blktiger_state::blktiger_video_enable_w)); + map(0x0d, 0x0d).w(this, FUNC(blktiger_state::blktiger_bgvideoram_bank_w)); + map(0x0e, 0x0e).w(this, FUNC(blktiger_state::blktiger_screen_layout_w)); +} + +void blktiger_state::blktigerbl_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x01, 0x01).portr("IN1").w(this, FUNC(blktiger_state::blktiger_bankswitch_w)); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).portr("DSW0").w(this, FUNC(blktiger_state::blktiger_coinlockout_w)); + map(0x04, 0x04).portr("DSW1").w(this, FUNC(blktiger_state::blktiger_video_control_w)); + map(0x05, 0x05).portr("FREEZE"); + map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).noprw(); /* Software protection (7) */ + map(0x08, 0x09).w(this, FUNC(blktiger_state::blktiger_scrollx_w)); + map(0x0a, 0x0b).w(this, FUNC(blktiger_state::blktiger_scrolly_w)); + map(0x0c, 0x0c).w(this, FUNC(blktiger_state::blktiger_video_enable_w)); + map(0x0d, 0x0d).w(this, FUNC(blktiger_state::blktiger_bgvideoram_bank_w)); + map(0x0e, 0x0e).w(this, FUNC(blktiger_state::blktiger_screen_layout_w)); +} + +void blktiger_state::blktiger_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xe002, 0xe003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} diff --git a/src/mame/drivers/blmbycar.cpp b/src/mame/drivers/blmbycar.cpp index 3908dab8130..defcec824ef 100644 --- a/src/mame/drivers/blmbycar.cpp +++ b/src/mame/drivers/blmbycar.cpp @@ -100,35 +100,37 @@ READ16_MEMBER(blmbycar_state::blmbycar_opt_wheel_r) ***************************************************************************/ -ADDRESS_MAP_START(blmbycar_state::common_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0xfec000, 0xfeffff) AM_RAM - AM_RANGE(0x100000, 0x103fff) AM_WRITEONLY // ??? - AM_RANGE(0x104000, 0x105fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1 - AM_RANGE(0x106000, 0x107fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0 - AM_RANGE(0x108000, 0x10bfff) AM_WRITEONLY // ??? - AM_RANGE(0x10c000, 0x10c003) AM_WRITEONLY AM_SHARE("scroll_1") // Scroll 1 - AM_RANGE(0x10c004, 0x10c007) AM_WRITEONLY AM_SHARE("scroll_0") // Scroll 0 - AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") AM_MIRROR(0x4000) // Palette - AM_RANGE(0x200600, 0x203fff) AM_RAM AM_MIRROR(0x4000) - AM_RANGE(0x440000, 0x441fff) AM_RAM - AM_RANGE(0x444000, 0x445fff) AM_WRITEONLY AM_SHARE("spriteram")// Sprites (size?) - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2") - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okibank_w) // Sound - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound -ADDRESS_MAP_END - -ADDRESS_MAP_START(blmbycar_state::blmbycar_map) - AM_IMPORT_FROM(common_map) - - AM_RANGE(0x700004, 0x700005) AM_READ(blmbycar_opt_wheel_r) // Wheel (optical) - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("UNK") - AM_RANGE(0x700008, 0x700009) AM_READ(blmbycar_pot_wheel_r) // Wheel (potentiometer) - AM_RANGE(0x70000a, 0x70000b) AM_WRITENOP // ? Wheel - AM_RANGE(0x70006a, 0x70006b) AM_WRITE(blmbycar_pot_wheel_reset_w) // Wheel (potentiometer) - AM_RANGE(0x70007a, 0x70007b) AM_WRITE(blmbycar_pot_wheel_shift_w) // -ADDRESS_MAP_END +void blmbycar_state::common_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0xfec000, 0xfeffff).ram(); + map(0x100000, 0x103fff).writeonly(); // ??? + map(0x104000, 0x105fff).ram().w(this, FUNC(blmbycar_state::vram_1_w)).share("vram_1"); // Layer 1 + map(0x106000, 0x107fff).ram().w(this, FUNC(blmbycar_state::vram_0_w)).share("vram_0"); // Layer 0 + map(0x108000, 0x10bfff).writeonly(); // ??? + map(0x10c000, 0x10c003).writeonly().share("scroll_1"); // Scroll 1 + map(0x10c004, 0x10c007).writeonly().share("scroll_0"); // Scroll 0 + map(0x200000, 0x2005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette").mirror(0x4000); // Palette + map(0x200600, 0x203fff).ram().mirror(0x4000); + map(0x440000, 0x441fff).ram(); + map(0x444000, 0x445fff).writeonly().share("spriteram");// Sprites (size?) + map(0x700000, 0x700001).portr("DSW"); + map(0x700002, 0x700003).portr("P1_P2"); + map(0x70000c, 0x70000d).w(this, FUNC(blmbycar_state::okibank_w)); // Sound + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound +} + +void blmbycar_state::blmbycar_map(address_map &map) +{ + common_map(map); + + map(0x700004, 0x700005).r(this, FUNC(blmbycar_state::blmbycar_opt_wheel_r)); // Wheel (optical) + map(0x700006, 0x700007).portr("UNK"); + map(0x700008, 0x700009).r(this, FUNC(blmbycar_state::blmbycar_pot_wheel_r)); // Wheel (potentiometer) + map(0x70000a, 0x70000b).nopw(); // ? Wheel + map(0x70006a, 0x70006b).w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_reset_w)); // Wheel (potentiometer) + map(0x70007a, 0x70007b).w(this, FUNC(blmbycar_state::blmbycar_pot_wheel_shift_w)); // +} READ16_MEMBER(blmbycar_state::waterball_unk_r) { @@ -136,18 +138,20 @@ READ16_MEMBER(blmbycar_state::waterball_unk_r) return m_retvalue; } -ADDRESS_MAP_START(blmbycar_state::watrball_map) - AM_IMPORT_FROM(common_map) +void blmbycar_state::watrball_map(address_map &map) +{ + common_map(map); - AM_RANGE(0x700006, 0x700007) AM_READNOP // read - AM_RANGE(0x700008, 0x700009) AM_READ(waterball_unk_r) // 0x0008 must toggle - AM_RANGE(0x70000a, 0x70000b) AM_WRITEONLY // ?? busy -ADDRESS_MAP_END + map(0x700006, 0x700007).nopr(); // read + map(0x700008, 0x700009).r(this, FUNC(blmbycar_state::waterball_unk_r)); // 0x0008 must toggle + map(0x70000a, 0x70000b).writeonly(); // ?? busy +} -ADDRESS_MAP_START(blmbycar_state::blmbycar_oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void blmbycar_state::blmbycar_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} /*************************************************************************** diff --git a/src/mame/drivers/blockade.cpp b/src/mame/drivers/blockade.cpp index cf9b784fd8a..2b4f1c6dff0 100644 --- a/src/mame/drivers/blockade.cpp +++ b/src/mame/drivers/blockade.cpp @@ -81,19 +81,21 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(blockade_state::main_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x6000) AM_ROM - AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x6000) AM_ROM // comotion, blasto, hustle - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x6f00) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(blockade_state::main_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(coin_latch_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITE(sound_freq_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(env_on_w) - AM_RANGE(0x08, 0x08) AM_WRITE(env_off_w) -ADDRESS_MAP_END +void blockade_state::main_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x6000).rom(); + map(0x0400, 0x07ff).mirror(0x6000).rom(); // comotion, blasto, hustle + map(0x8000, 0x83ff).mirror(0x6c00).ram().w(this, FUNC(blockade_state::videoram_w)).share("videoram"); + map(0x9000, 0x90ff).mirror(0x6f00).ram(); +} + +void blockade_state::main_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0").w(this, FUNC(blockade_state::coin_latch_w)); + map(0x02, 0x02).portr("IN1").w(this, FUNC(blockade_state::sound_freq_w)); + map(0x04, 0x04).portr("IN2").w(this, FUNC(blockade_state::env_on_w)); + map(0x08, 0x08).w(this, FUNC(blockade_state::env_off_w)); +} //************************************************************************** diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp index 30d3263ea64..f4b10356129 100644 --- a/src/mame/drivers/blockhl.cpp +++ b/src/mame/drivers/blockhl.cpp @@ -79,34 +79,37 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(blockhl_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sound_irq_w) - AM_RANGE(0x1f8c, 0x1f8c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW3") - AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1") - AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2") - AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1") - AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW2") - AM_RANGE(0x4000, 0x57ff) AM_RAM - AM_RANGE(0x5800, 0x5fff) AM_DEVICE("bank5800", address_map_bank_device, amap8) - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(blockhl_state::bank5800_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x0800, 0x0fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(blockhl_state::audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP // leftover from missing 007232? -ADDRESS_MAP_END +void blockhl_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(blockhl_state::k052109_051960_r), FUNC(blockhl_state::k052109_051960_w)); + map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1f88, 0x1f88).w(this, FUNC(blockhl_state::sound_irq_w)); + map(0x1f8c, 0x1f8c).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1f94, 0x1f94).portr("DSW3"); + map(0x1f95, 0x1f95).portr("P1"); + map(0x1f96, 0x1f96).portr("P2"); + map(0x1f97, 0x1f97).portr("DSW1"); + map(0x1f98, 0x1f98).portr("DSW2"); + map(0x4000, 0x57ff).ram(); + map(0x5800, 0x5fff).m(m_bank5800, FUNC(address_map_bank_device::amap8)); + map(0x6000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom().region("maincpu", 0x8000); +} + +void blockhl_state::bank5800_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x0800, 0x0fff).ram(); +} + +void blockhl_state::audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe00c, 0xe00d).nopw(); // leftover from missing 007232? +} //************************************************************************** diff --git a/src/mame/drivers/blockout.cpp b/src/mame/drivers/blockout.cpp index a295aaf4dfd..0b982065b92 100644 --- a/src/mame/drivers/blockout.cpp +++ b/src/mame/drivers/blockout.cpp @@ -95,53 +95,56 @@ WRITE16_MEMBER(blockout_state::blockout_irq5_ack_w) * *************************************/ -ADDRESS_MAP_START(blockout_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P2") - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100006, 0x100007) AM_READ_PORT("DSW1") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW2") - AM_RANGE(0x100010, 0x100011) AM_WRITE(blockout_irq6_ack_w) - AM_RANGE(0x100012, 0x100013) AM_WRITE(blockout_irq5_ack_w) - AM_RANGE(0x100014, 0x100015) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* don't know, maybe reset sound CPU */ - AM_RANGE(0x180000, 0x1bffff) AM_RAM_WRITE(blockout_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1d4000, 0x1dffff) AM_RAM /* work RAM */ - AM_RANGE(0x1f4000, 0x1fffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("frontvideoram") - AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */ - AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w) - AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_SHARE("paletteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(blockout_state::agress_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P2") - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100006, 0x100007) AM_READ_PORT("DSW1") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW2") - AM_RANGE(0x100010, 0x100011) AM_WRITE(blockout_irq6_ack_w) - AM_RANGE(0x100012, 0x100013) AM_WRITE(blockout_irq5_ack_w) - AM_RANGE(0x100014, 0x100015) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* don't know, maybe reset sound CPU */ - AM_RANGE(0x180000, 0x1bffff) AM_RAM_WRITE(blockout_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1d4000, 0x1dffff) AM_RAM /* work RAM */ - AM_RANGE(0x1f4000, 0x1fffff) AM_RAM /* work RAM */ - AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("frontvideoram") - AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */ - AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w) - AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_SHARE("paletteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(blockout_state::audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void blockout_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100001).portr("P1"); + map(0x100002, 0x100003).portr("P2"); + map(0x100004, 0x100005).portr("SYSTEM"); + map(0x100006, 0x100007).portr("DSW1"); + map(0x100008, 0x100009).portr("DSW2"); + map(0x100010, 0x100011).w(this, FUNC(blockout_state::blockout_irq6_ack_w)); + map(0x100012, 0x100013).w(this, FUNC(blockout_state::blockout_irq5_ack_w)); + map(0x100015, 0x100015).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x100016, 0x100017).nopw(); /* don't know, maybe reset sound CPU */ + map(0x180000, 0x1bffff).ram().w(this, FUNC(blockout_state::blockout_videoram_w)).share("videoram"); + map(0x1d4000, 0x1dffff).ram(); /* work RAM */ + map(0x1f4000, 0x1fffff).ram(); /* work RAM */ + map(0x200000, 0x207fff).ram().share("frontvideoram"); + map(0x208000, 0x21ffff).ram(); /* ??? */ + map(0x280002, 0x280003).w(this, FUNC(blockout_state::blockout_frontcolor_w)); + map(0x280200, 0x2805ff).ram().w(this, FUNC(blockout_state::blockout_paletteram_w)).share("paletteram"); +} + +void blockout_state::agress_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100001).portr("P1"); + map(0x100002, 0x100003).portr("P2"); + map(0x100004, 0x100005).portr("SYSTEM"); + map(0x100006, 0x100007).portr("DSW1"); + map(0x100008, 0x100009).portr("DSW2"); + map(0x100010, 0x100011).w(this, FUNC(blockout_state::blockout_irq6_ack_w)); + map(0x100012, 0x100013).w(this, FUNC(blockout_state::blockout_irq5_ack_w)); + map(0x100015, 0x100015).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x100016, 0x100017).nopw(); /* don't know, maybe reset sound CPU */ + map(0x180000, 0x1bffff).ram().w(this, FUNC(blockout_state::blockout_videoram_w)).share("videoram"); + map(0x1d4000, 0x1dffff).ram(); /* work RAM */ + map(0x1f4000, 0x1fffff).ram(); /* work RAM */ + map(0x200000, 0x207fff).ram().share("frontvideoram"); + map(0x208000, 0x21ffff).ram(); /* ??? */ + map(0x280002, 0x280003).w(this, FUNC(blockout_state::blockout_frontcolor_w)); + map(0x280200, 0x2805ff).ram().w(this, FUNC(blockout_state::blockout_paletteram_w)).share("paletteram"); +} + +void blockout_state::audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /************************************* diff --git a/src/mame/drivers/bloodbro.cpp b/src/mame/drivers/bloodbro.cpp index 5e86ad4bcfa..29272272195 100644 --- a/src/mame/drivers/bloodbro.cpp +++ b/src/mame/drivers/bloodbro.cpp @@ -149,37 +149,40 @@ Video: /* Memory Maps */ -ADDRESS_MAP_START(bloodbro_state::common_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08afff) AM_RAM - AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08c000, 0x08c3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x08c400, 0x08cfff) AM_RAM - AM_RANGE(0x08d000, 0x08d3ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x08d400, 0x08d7ff) AM_RAM - AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0x08e000, 0x08e7ff) AM_RAM - AM_RANGE(0x08e800, 0x08f7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08f800, 0x08ffff) AM_RAM - AM_RANGE(0x0a0000, 0x0a000d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) +void bloodbro_state::common_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08afff).ram(); + map(0x08b000, 0x08bfff).ram().share("spriteram"); + map(0x08c000, 0x08c3ff).ram().w(this, FUNC(bloodbro_state::bgvideoram_w)).share("bgvideoram"); + map(0x08c400, 0x08cfff).ram(); + map(0x08d000, 0x08d3ff).ram().w(this, FUNC(bloodbro_state::fgvideoram_w)).share("fgvideoram"); + map(0x08d400, 0x08d7ff).ram(); + map(0x08d800, 0x08dfff).ram().w(this, FUNC(bloodbro_state::txvideoram_w)).share("txvideoram"); + map(0x08e000, 0x08e7ff).ram(); + map(0x08e800, 0x08f7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08f800, 0x08ffff).ram(); + map(0x0a0000, 0x0a000d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); // AM_RANGE(0x0c0000, 0x0c007f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x0c0080, 0x0c0081) AM_WRITENOP // ??? IRQ Ack VBL? - AM_RANGE(0x0c00c0, 0x0c00c1) AM_WRITENOP // ??? watchdog? - AM_RANGE(0x0c0100, 0x0c0101) AM_WRITENOP // ??? written once - AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("DSW") - AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("IN0") - AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("IN1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bloodbro_state::bloodbro_map) - AM_IMPORT_FROM(common_map) - AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bloodbro_state::skysmash_map) - AM_IMPORT_FROM(common_map) - AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read_alt, write_alt) -ADDRESS_MAP_END + map(0x0c0080, 0x0c0081).nopw(); // ??? IRQ Ack VBL? + map(0x0c00c0, 0x0c00c1).nopw(); // ??? watchdog? + map(0x0c0100, 0x0c0101).nopw(); // ??? written once + map(0x0e0000, 0x0e0001).portr("DSW"); + map(0x0e0002, 0x0e0003).portr("IN0"); + map(0x0e0004, 0x0e0005).portr("IN1"); +} + +void bloodbro_state::bloodbro_map(address_map &map) +{ + common_map(map); + map(0xc0000, 0xc004f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); +} + +void bloodbro_state::skysmash_map(address_map &map) +{ + common_map(map); + map(0xc0000, 0xc004f).rw("crtc", FUNC(seibu_crtc_device::read_alt), FUNC(seibu_crtc_device::write_alt)); +} WRITE8_MEMBER(bloodbro_state::weststry_soundlatch_w) { @@ -189,24 +192,25 @@ WRITE8_MEMBER(bloodbro_state::weststry_soundlatch_w) m_audiocpu->set_input_line(0, ASSERT_LINE); } -ADDRESS_MAP_START(bloodbro_state::weststry_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM // old VRAM areas still used, but bootleg code copies them to higher addresses - AM_RANGE(0x0c1000, 0x0c1001) AM_READ_PORT("DSW") - AM_RANGE(0x0c1002, 0x0c1003) AM_READ_PORT("IN0") - AM_RANGE(0x0c1004, 0x0c1005) AM_READ_PORT("IN1") - AM_RANGE(0x0c1000, 0x0c1003) AM_WRITE8(weststry_soundlatch_w, 0xff00) - AM_RANGE(0x0c1004, 0x0c100b) AM_WRITE(weststry_layer_scroll_w) - AM_RANGE(0x0e0002, 0x0e0003) AM_READNOP // remnant of old code - AM_RANGE(0x122800, 0x122bff) AM_RAM // cleared at startup - AM_RANGE(0x122c00, 0x122fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x123000, 0x1233ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x123400, 0x1237ff) AM_RAM // cleared at startup - AM_RANGE(0x123800, 0x123fff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0x124000, 0x124005) AM_RAM - AM_RANGE(0x124006, 0x1247fd) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x128000, 0x1287ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END +void bloodbro_state::weststry_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram(); // old VRAM areas still used, but bootleg code copies them to higher addresses + map(0x0c1000, 0x0c1001).portr("DSW"); + map(0x0c1002, 0x0c1003).portr("IN0"); + map(0x0c1004, 0x0c1005).portr("IN1"); + map(0x0c1000, 0x0c1003).w(this, FUNC(bloodbro_state::weststry_soundlatch_w)).umask16(0xff00); + map(0x0c1004, 0x0c100b).w(this, FUNC(bloodbro_state::weststry_layer_scroll_w)); + map(0x0e0002, 0x0e0003).nopr(); // remnant of old code + map(0x122800, 0x122bff).ram(); // cleared at startup + map(0x122c00, 0x122fff).ram().w(this, FUNC(bloodbro_state::fgvideoram_w)).share("fgvideoram"); + map(0x123000, 0x1233ff).ram().w(this, FUNC(bloodbro_state::bgvideoram_w)).share("bgvideoram"); + map(0x123400, 0x1237ff).ram(); // cleared at startup + map(0x123800, 0x123fff).ram().w(this, FUNC(bloodbro_state::txvideoram_w)).share("txvideoram"); + map(0x124000, 0x124005).ram(); + map(0x124006, 0x1247fd).ram().share("spriteram"); + map(0x128000, 0x1287ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} WRITE_LINE_MEMBER(bloodbro_state::weststry_opl_irq_w) { @@ -234,10 +238,11 @@ void bloodbro_state::weststry_soundnmi_update() m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -ADDRESS_MAP_START(bloodbro_state::weststry_sound_map) - AM_IMPORT_FROM(seibu_sound_map) - AM_RANGE(0x4002, 0x4002) AM_WRITE(weststry_soundnmi_ack_w) -ADDRESS_MAP_END +void bloodbro_state::weststry_sound_map(address_map &map) +{ + seibu_sound_map(map); + map(0x4002, 0x4002).w(this, FUNC(bloodbro_state::weststry_soundnmi_ack_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/blstroid.cpp b/src/mame/drivers/blstroid.cpp index ba93ea5ec89..5450bd56cc0 100644 --- a/src/mame/drivers/blstroid.cpp +++ b/src/mame/drivers/blstroid.cpp @@ -64,29 +64,30 @@ void blstroid_state::machine_reset() *************************************/ /* full map verified from schematics */ -ADDRESS_MAP_START(blstroid_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x83ffff) - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x000000) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x0381fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x0381fe) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0x800400, 0x800401) AM_MIRROR(0x0381fe) AM_WRITE(video_int_ack_w) - AM_RANGE(0x800600, 0x800601) AM_MIRROR(0x0381fe) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x800800, 0x8009ff) AM_MIRROR(0x038000) AM_WRITEONLY AM_SHARE("priorityram") - AM_RANGE(0x800a00, 0x800a01) AM_MIRROR(0x0381fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) - AM_RANGE(0x800c00, 0x800c01) AM_MIRROR(0x0381fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) - AM_RANGE(0x800e00, 0x800e01) AM_MIRROR(0x0381fe) AM_WRITE(blstroid_halt_until_hblank_0_w) - AM_RANGE(0x801400, 0x801401) AM_MIRROR(0x0383fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) - AM_RANGE(0x801800, 0x801801) AM_MIRROR(0x0383f8) AM_READ_PORT("DIAL0") - AM_RANGE(0x801804, 0x801805) AM_MIRROR(0x0383f8) AM_READ_PORT("DIAL1") - AM_RANGE(0x801c00, 0x801c01) AM_MIRROR(0x0383fc) AM_READ_PORT("IN0") - AM_RANGE(0x801c02, 0x801c03) AM_MIRROR(0x0383fc) AM_READ_PORT("IN1") - AM_RANGE(0x802000, 0x8023ff) AM_MIRROR(0x038c00) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x803000, 0x8033ff) AM_MIRROR(0x038c00) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x804000, 0x804fff) AM_MIRROR(0x038000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x805000, 0x805fff) AM_MIRROR(0x038000) AM_RAM AM_SHARE("mob") - AM_RANGE(0x806000, 0x807fff) AM_MIRROR(0x038000) AM_RAM -ADDRESS_MAP_END +void blstroid_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x83ffff); + map(0x000000, 0x03ffff).mirror(0x000000).rom(); + map(0x800000, 0x800001).mirror(0x0381fe).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x800200, 0x800201).mirror(0x0381fe).w(this, FUNC(blstroid_state::scanline_int_ack_w)); + map(0x800400, 0x800401).mirror(0x0381fe).w(this, FUNC(blstroid_state::video_int_ack_w)); + map(0x800600, 0x800601).mirror(0x0381fe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x800800, 0x8009ff).mirror(0x038000).writeonly().share("priorityram"); + map(0x800a01, 0x800a01).mirror(0x0381fe).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w)); + map(0x800c00, 0x800c01).mirror(0x0381fe).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w)); + map(0x800e00, 0x800e01).mirror(0x0381fe).w(this, FUNC(blstroid_state::blstroid_halt_until_hblank_0_w)); + map(0x801401, 0x801401).mirror(0x0383fe).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r)); + map(0x801800, 0x801801).mirror(0x0383f8).portr("DIAL0"); + map(0x801804, 0x801805).mirror(0x0383f8).portr("DIAL1"); + map(0x801c00, 0x801c01).mirror(0x0383fc).portr("IN0"); + map(0x801c02, 0x801c03).mirror(0x0383fc).portr("IN1"); + map(0x802000, 0x8023ff).mirror(0x038c00).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x803000, 0x8033ff).mirror(0x038c00).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x804000, 0x804fff).mirror(0x038000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x805000, 0x805fff).mirror(0x038000).ram().share("mob"); + map(0x806000, 0x807fff).mirror(0x038000).ram(); +} diff --git a/src/mame/drivers/blueprnt.cpp b/src/mame/drivers/blueprnt.cpp index 03012879afb..54292de4fee 100644 --- a/src/mame/drivers/blueprnt.cpp +++ b/src/mame/drivers/blueprnt.cpp @@ -101,40 +101,44 @@ WRITE8_MEMBER(blueprnt_state::blueprnt_coin_counter_w) * *************************************/ -ADDRESS_MAP_START(blueprnt_state::blueprnt_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // service mode checks for 8 chips = 64K - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(blueprnt_videoram_w) AM_MIRROR(0x400) AM_SHARE("videoram") - AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0xb000, 0xb0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") AM_WRITE(blueprnt_coin_counter_w) - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ(blueprnt_sh_dipsw_r) - AM_RANGE(0xd000, 0xd000) AM_WRITE(blueprnt_sound_command_w) - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(blueprnt_flipscreen_w) - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(blueprnt_colorram_w) AM_MIRROR(0x400) AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(blueprnt_state::grasspin_map) - AM_IMPORT_FROM( blueprnt_map ) - AM_RANGE(0xc003, 0xc003) AM_READ(grasspin_sh_dipsw_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(blueprnt_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_MIRROR(0x1000) - AM_RANGE(0x2000, 0x2fff) AM_ROM AM_MIRROR(0x1000) - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x6002, 0x6002) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8002, 0x8002) AM_DEVREAD("ay2", ay8910_device, data_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(blueprnt_state::sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_NOP // nmi mask maybe? grasspin writes it 0/1 -ADDRESS_MAP_END +void blueprnt_state::blueprnt_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // service mode checks for 8 chips = 64K + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(blueprnt_state::blueprnt_videoram_w)).mirror(0x400).share("videoram"); + map(0xa000, 0xa0ff).ram().share("scrollram"); + map(0xb000, 0xb0ff).ram().share("spriteram"); + map(0xc000, 0xc000).portr("P1").w(this, FUNC(blueprnt_state::blueprnt_coin_counter_w)); + map(0xc001, 0xc001).portr("P2"); + map(0xc003, 0xc003).r(this, FUNC(blueprnt_state::blueprnt_sh_dipsw_r)); + map(0xd000, 0xd000).w(this, FUNC(blueprnt_state::blueprnt_sound_command_w)); + map(0xe000, 0xe000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(blueprnt_state::blueprnt_flipscreen_w)); + map(0xf000, 0xf3ff).ram().w(this, FUNC(blueprnt_state::blueprnt_colorram_w)).mirror(0x400).share("colorram"); +} + +void blueprnt_state::grasspin_map(address_map &map) +{ + blueprnt_map(map); + map(0xc003, 0xc003).r(this, FUNC(blueprnt_state::grasspin_sh_dipsw_r)); +} + + +void blueprnt_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().mirror(0x1000); + map(0x2000, 0x2fff).rom().mirror(0x1000); + map(0x4000, 0x43ff).ram(); + map(0x6000, 0x6001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x6002, 0x6002).r("ay1", FUNC(ay8910_device::data_r)); + map(0x8000, 0x8001).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8002, 0x8002).r("ay2", FUNC(ay8910_device::data_r)); +} + +void blueprnt_state::sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x02).noprw(); // nmi mask maybe? grasspin writes it 0/1 +} diff --git a/src/mame/drivers/bmcbowl.cpp b/src/mame/drivers/bmcbowl.cpp index 0fb0dd94485..755aa4bd3ea 100644 --- a/src/mame/drivers/bmcbowl.cpp +++ b/src/mame/drivers/bmcbowl.cpp @@ -312,41 +312,42 @@ void bmcbowl_state::machine_reset() #endif } -ADDRESS_MAP_START(bmcbowl_state::bmcbowl_mem) - AM_RANGE(0x000000, 0x01ffff) AM_ROM +void bmcbowl_state::bmcbowl_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); - AM_RANGE(0x090000, 0x090001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x090002, 0x090003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x090004, 0x090005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) + map(0x090001, 0x090001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x090003, 0x090003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x090005, 0x090005).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x090800, 0x090803) AM_WRITENOP - AM_RANGE(0x091000, 0x091001) AM_WRITENOP - AM_RANGE(0x091800, 0x091801) AM_WRITE(scroll_w) + map(0x090800, 0x090803).nopw(); + map(0x091000, 0x091001).nopw(); + map(0x091800, 0x091801).w(this, FUNC(bmcbowl_state::scroll_w)); - AM_RANGE(0x092000, 0x09201f) AM_DEVREADWRITE8("via6522_0", via6522_device, read, write, 0x00ff) + map(0x092000, 0x09201f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0x00ff); - AM_RANGE(0x093000, 0x093003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8("aysnd", ay8910_device, data_address_w, 0xff00) - AM_RANGE(0x092802, 0x092803) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0xff00) - AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0") - AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("nvram") /* 8 bit */ - AM_RANGE(0x097000, 0x097001) AM_READNOP - AM_RANGE(0x140000, 0x1bffff) AM_ROM - AM_RANGE(0x1c0000, 0x1effff) AM_RAM AM_SHARE("vid1") - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("vid2") + map(0x093000, 0x093003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x092800, 0x092803).w("aysnd", FUNC(ay8910_device::data_address_w)).umask16(0xff00); + map(0x092802, 0x092802).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x093802, 0x093803).portr("IN0"); + map(0x095000, 0x095fff).ram().share("nvram"); /* 8 bit */ + map(0x097000, 0x097001).nopr(); + map(0x140000, 0x1bffff).rom(); + map(0x1c0000, 0x1effff).ram().share("vid1"); + map(0x1f0000, 0x1fffff).ram(); + map(0x200000, 0x21ffff).ram().share("vid2"); - AM_RANGE(0x28c000, 0x28c001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) + map(0x28c000, 0x28c000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* protection device*/ - AM_RANGE(0x30c000, 0x30c001) AM_WRITENOP - AM_RANGE(0x30c040, 0x30c041) AM_WRITENOP - AM_RANGE(0x30c080, 0x30c081) AM_WRITENOP - AM_RANGE(0x30c0c0, 0x30c0c1) AM_WRITENOP - AM_RANGE(0x30c100, 0x30c101) AM_READ(bmc_protection_r) - AM_RANGE(0x30c140, 0x30c141) AM_WRITENOP - AM_RANGE(0x30ca00, 0x30ca01) AM_READ(bmc_random_read) AM_WRITENOP -ADDRESS_MAP_END + map(0x30c000, 0x30c001).nopw(); + map(0x30c040, 0x30c041).nopw(); + map(0x30c080, 0x30c081).nopw(); + map(0x30c0c0, 0x30c0c1).nopw(); + map(0x30c100, 0x30c101).r(this, FUNC(bmcbowl_state::bmc_protection_r)); + map(0x30c140, 0x30c141).nopw(); + map(0x30ca00, 0x30ca01).r(this, FUNC(bmcbowl_state::bmc_random_read)).nopw(); +} static INPUT_PORTS_START( bmcbowl ) @@ -449,9 +450,10 @@ WRITE8_MEMBER(bmcbowl_state::input_mux_w) m_bmc_input=data; } -ADDRESS_MAP_START(bmcbowl_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void bmcbowl_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(bmcbowl_state::bmcbowl) MCFG_CPU_ADD("maincpu", M68000, XTAL(21'477'272) / 2 ) diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp index 7afa622fc4b..95c74678cd3 100644 --- a/src/mame/drivers/bmcpokr.cpp +++ b/src/mame/drivers/bmcpokr.cpp @@ -380,50 +380,51 @@ WRITE16_MEMBER(bmcpokr_state::irq_ack_w) } } -ADDRESS_MAP_START(bmcpokr_state::bmcpokr_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("nvram") +void bmcpokr_state::bmcpokr_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x210000, 0x21ffff).ram().share("nvram"); - AM_RANGE(0x280000, 0x287fff) AM_RAM_WRITE(videoram_1_w) AM_SHARE("videoram_1") - AM_RANGE(0x288000, 0x28ffff) AM_RAM_WRITE(videoram_2_w) AM_SHARE("videoram_2") - AM_RANGE(0x290000, 0x297fff) AM_RAM + map(0x280000, 0x287fff).ram().w(this, FUNC(bmcpokr_state::videoram_1_w)).share("videoram_1"); + map(0x288000, 0x28ffff).ram().w(this, FUNC(bmcpokr_state::videoram_2_w)).share("videoram_2"); + map(0x290000, 0x297fff).ram(); - AM_RANGE(0x2a0000, 0x2dffff) AM_RAM_WRITE(pixram_w) AM_SHARE("pixram") + map(0x2a0000, 0x2dffff).ram().w(this, FUNC(bmcpokr_state::pixram_w)).share("pixram"); - AM_RANGE(0x2ff800, 0x2ff9ff) AM_RAM AM_SHARE("scrollram_1") - AM_RANGE(0x2ffa00, 0x2ffbff) AM_RAM AM_SHARE("scrollram_2") - AM_RANGE(0x2ffc00, 0x2ffdff) AM_RAM AM_SHARE("scrollram_3") - AM_RANGE(0x2ffe00, 0x2fffff) AM_RAM + map(0x2ff800, 0x2ff9ff).ram().share("scrollram_1"); + map(0x2ffa00, 0x2ffbff).ram().share("scrollram_2"); + map(0x2ffc00, 0x2ffdff).ram().share("scrollram_3"); + map(0x2ffe00, 0x2fffff).ram(); - AM_RANGE(0x320000, 0x320003) AM_RAM AM_SHARE("layerctrl") + map(0x320000, 0x320003).ram().share("layerctrl"); - AM_RANGE(0x330000, 0x330001) AM_READWRITE(prot_r, prot_w) + map(0x330000, 0x330001).rw(this, FUNC(bmcpokr_state::prot_r), FUNC(bmcpokr_state::prot_w)); - AM_RANGE(0x340000, 0x340001) AM_RAM // 340001.b, rw - AM_RANGE(0x340002, 0x340003) AM_RAM // 340003.b, w(9d) - AM_RANGE(0x340006, 0x340007) AM_WRITE(irq_ack_w) - AM_RANGE(0x340008, 0x340009) AM_WRITE(irq_enable_w) - AM_RANGE(0x34000e, 0x34000f) AM_RAM AM_SHARE("priority") // 34000f.b, w (priority?) - AM_RANGE(0x340016, 0x340017) AM_WRITE(pixpal_w) - AM_RANGE(0x340018, 0x340019) AM_RAM // 340019.b, w - AM_RANGE(0x34001a, 0x34001b) AM_READ(unk_r) AM_WRITENOP - AM_RANGE(0x34001c, 0x34001d) AM_RAM // 34001d.b, w(0) + map(0x340000, 0x340001).ram(); // 340001.b, rw + map(0x340002, 0x340003).ram(); // 340003.b, w(9d) + map(0x340006, 0x340007).w(this, FUNC(bmcpokr_state::irq_ack_w)); + map(0x340008, 0x340009).w(this, FUNC(bmcpokr_state::irq_enable_w)); + map(0x34000e, 0x34000f).ram().share("priority"); // 34000f.b, w (priority?) + map(0x340016, 0x340017).w(this, FUNC(bmcpokr_state::pixpal_w)); + map(0x340018, 0x340019).ram(); // 340019.b, w + map(0x34001a, 0x34001b).r(this, FUNC(bmcpokr_state::unk_r)).nopw(); + map(0x34001c, 0x34001d).ram(); // 34001d.b, w(0) - AM_RANGE(0x350000, 0x350001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x00ff ) - AM_RANGE(0x350002, 0x350003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x350004, 0x350005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x00ff ) + map(0x350001, 0x350001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x350003, 0x350003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x350005, 0x350005).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x360000, 0x360001) AM_READ(dsw_r) + map(0x360000, 0x360001).r(this, FUNC(bmcpokr_state::dsw_r)); - AM_RANGE(0x370000, 0x370001) AM_READ_PORT("INPUTS") + map(0x370000, 0x370001).portr("INPUTS"); - AM_RANGE(0x380000, 0x380001) AM_WRITE(mux_w) + map(0x380000, 0x380001).w(this, FUNC(bmcpokr_state::mux_w)); - AM_RANGE(0x390000, 0x390003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x398000, 0x398001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x390000, 0x390003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x398001, 0x398001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("INPUTS2") -ADDRESS_MAP_END + map(0x3b0000, 0x3b0001).portr("INPUTS2"); +} READ16_MEMBER(bmcpokr_state::mjmaglmp_dsw_r) @@ -452,46 +453,47 @@ READ16_MEMBER(bmcpokr_state::mjmaglmp_key_r) return ioport("INPUTS")->read() | (key & 0x3f); } -ADDRESS_MAP_START(bmcpokr_state::mjmaglmp_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("nvram") +void bmcpokr_state::mjmaglmp_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x210000, 0x21ffff).ram().share("nvram"); - AM_RANGE(0x280000, 0x287fff) AM_RAM_WRITE(videoram_1_w) AM_SHARE("videoram_1") - AM_RANGE(0x288000, 0x28ffff) AM_RAM_WRITE(videoram_2_w) AM_SHARE("videoram_2") - AM_RANGE(0x290000, 0x297fff) AM_RAM + map(0x280000, 0x287fff).ram().w(this, FUNC(bmcpokr_state::videoram_1_w)).share("videoram_1"); + map(0x288000, 0x28ffff).ram().w(this, FUNC(bmcpokr_state::videoram_2_w)).share("videoram_2"); + map(0x290000, 0x297fff).ram(); - AM_RANGE(0x2a0000, 0x2dffff) AM_RAM_WRITE(pixram_w) AM_SHARE("pixram") + map(0x2a0000, 0x2dffff).ram().w(this, FUNC(bmcpokr_state::pixram_w)).share("pixram"); - AM_RANGE(0x2ff800, 0x2ff9ff) AM_RAM AM_SHARE("scrollram_1") - AM_RANGE(0x2ffa00, 0x2ffbff) AM_RAM AM_SHARE("scrollram_2") - AM_RANGE(0x2ffc00, 0x2ffdff) AM_RAM AM_SHARE("scrollram_3") - AM_RANGE(0x2ffe00, 0x2fffff) AM_RAM + map(0x2ff800, 0x2ff9ff).ram().share("scrollram_1"); + map(0x2ffa00, 0x2ffbff).ram().share("scrollram_2"); + map(0x2ffc00, 0x2ffdff).ram().share("scrollram_3"); + map(0x2ffe00, 0x2fffff).ram(); - AM_RANGE(0x320000, 0x320003) AM_RAM AM_SHARE("layerctrl") + map(0x320000, 0x320003).ram().share("layerctrl"); - AM_RANGE(0x388000, 0x388001) AM_WRITE(mux_w) + map(0x388000, 0x388001).w(this, FUNC(bmcpokr_state::mux_w)); - AM_RANGE(0x390000, 0x390001) AM_READ(mjmaglmp_dsw_r) + map(0x390000, 0x390001).r(this, FUNC(bmcpokr_state::mjmaglmp_dsw_r)); - AM_RANGE(0x398000, 0x398001) AM_READ(mjmaglmp_key_r) + map(0x398000, 0x398001).r(this, FUNC(bmcpokr_state::mjmaglmp_key_r)); - AM_RANGE(0x3c8800, 0x3c8803) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x3c9000, 0x3c9001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x3c8800, 0x3c8803).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x3c9001, 0x3c9001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x3c9800, 0x3c9801) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x00ff ) - AM_RANGE(0x3c9802, 0x3c9803) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x3c9804, 0x3c9805) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x00ff ) + map(0x3c9801, 0x3c9801).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x3c9803, 0x3c9803).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x3c9805, 0x3c9805).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x3ca000, 0x3ca001) AM_RAM // 3ca001.b, rw - AM_RANGE(0x3ca002, 0x3ca003) AM_RAM // 3ca003.b, w(9d) - AM_RANGE(0x3ca006, 0x3ca007) AM_WRITE(irq_ack_w) - AM_RANGE(0x3ca008, 0x3ca009) AM_WRITE(irq_enable_w) - AM_RANGE(0x3ca00e, 0x3ca00f) AM_RAM AM_SHARE("priority") // 3ca00f.b, w (priority?) - AM_RANGE(0x3ca016, 0x3ca017) AM_WRITE(pixpal_w) - AM_RANGE(0x3ca018, 0x3ca019) AM_RAM // 3ca019.b, w - AM_RANGE(0x3ca01a, 0x3ca01b) AM_READ(unk_r) AM_WRITENOP - AM_RANGE(0x3ca01c, 0x3ca01d) AM_RAM // 3ca01d.b, w(0) -ADDRESS_MAP_END + map(0x3ca000, 0x3ca001).ram(); // 3ca001.b, rw + map(0x3ca002, 0x3ca003).ram(); // 3ca003.b, w(9d) + map(0x3ca006, 0x3ca007).w(this, FUNC(bmcpokr_state::irq_ack_w)); + map(0x3ca008, 0x3ca009).w(this, FUNC(bmcpokr_state::irq_enable_w)); + map(0x3ca00e, 0x3ca00f).ram().share("priority"); // 3ca00f.b, w (priority?) + map(0x3ca016, 0x3ca017).w(this, FUNC(bmcpokr_state::pixpal_w)); + map(0x3ca018, 0x3ca019).ram(); // 3ca019.b, w + map(0x3ca01a, 0x3ca01b).r(this, FUNC(bmcpokr_state::unk_r)).nopw(); + map(0x3ca01c, 0x3ca01d).ram(); // 3ca01d.b, w(0) +} /*************************************************************************** Input Ports @@ -801,9 +803,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(bmcpokr_state::interrupt) if (m_irq_enable & (1<<6)) m_maincpu->set_input_line(6, ASSERT_LINE); } -ADDRESS_MAP_START(bmcpokr_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void bmcpokr_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(bmcpokr_state::bmcpokr) MCFG_CPU_ADD("maincpu", M68000, XTAL(42'000'000) / 4) // 68000 @10.50MHz (42/4) diff --git a/src/mame/drivers/bmjr.cpp b/src/mame/drivers/bmjr.cpp index e89e758d02a..cfce4002fdf 100644 --- a/src/mame/drivers/bmjr.cpp +++ b/src/mame/drivers/bmjr.cpp @@ -164,28 +164,29 @@ WRITE8_MEMBER( bmjr_state::xor_display_w ) m_xor_display = data; } -ADDRESS_MAP_START(bmjr_state::bmjr_mem) - ADDRESS_MAP_UNMAP_HIGH +void bmjr_state::bmjr_mem(address_map &map) +{ + map.unmap_value_high(); //0x0100, 0x03ff basic vram //0x0900, 0x20ff vram, modes 0x40 / 0xc0 //0x2100, 0x38ff vram, modes 0x44 / 0xcc - AM_RANGE(0x0000, 0xafff) AM_RAM AM_SHARE("wram") - AM_RANGE(0xb000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_ROM + map(0x0000, 0xafff).ram().share("wram"); + map(0xb000, 0xdfff).rom(); + map(0xe000, 0xe7ff).rom(); // AM_RANGE(0xe890, 0xe890) W MP-1710 tile color // AM_RANGE(0xe891, 0xe891) W MP-1710 background color // AM_RANGE(0xe892, 0xe892) W MP-1710 monochrome / color setting - AM_RANGE(0xee00, 0xee00) AM_READ(tape_stop_r) //R stop tape - AM_RANGE(0xee20, 0xee20) AM_READ(tape_start_r) //R start tape - AM_RANGE(0xee40, 0xee40) AM_WRITE(xor_display_w) //W Picture reverse - AM_RANGE(0xee80, 0xee80) AM_READWRITE(tape_r,tape_w)//RW tape input / output - AM_RANGE(0xeec0, 0xeec0) AM_READWRITE(key_r,key_w)//RW keyboard - AM_RANGE(0xef00, 0xef00) AM_READ(ff_r) //R timer - AM_RANGE(0xef40, 0xef40) AM_READ(ff_r) //R unknown - AM_RANGE(0xef80, 0xef80) AM_READ(unk_r) //R unknown + map(0xee00, 0xee00).r(this, FUNC(bmjr_state::tape_stop_r)); //R stop tape + map(0xee20, 0xee20).r(this, FUNC(bmjr_state::tape_start_r)); //R start tape + map(0xee40, 0xee40).w(this, FUNC(bmjr_state::xor_display_w)); //W Picture reverse + map(0xee80, 0xee80).rw(this, FUNC(bmjr_state::tape_r), FUNC(bmjr_state::tape_w));//RW tape input / output + map(0xeec0, 0xeec0).rw(this, FUNC(bmjr_state::key_r), FUNC(bmjr_state::key_w));//RW keyboard + map(0xef00, 0xef00).r(this, FUNC(bmjr_state::ff_r)); //R timer + map(0xef40, 0xef40).r(this, FUNC(bmjr_state::ff_r)); //R unknown + map(0xef80, 0xef80).r(this, FUNC(bmjr_state::unk_r)); //R unknown // AM_RANGE(0xefe0, 0xefe0) W screen mode - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xf000, 0xffff).rom(); +} /* Input ports */ static INPUT_PORTS_START( bmjr ) diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp index d199f517ed5..1cb795549ae 100644 --- a/src/mame/drivers/bml3.cpp +++ b/src/mame/drivers/bml3.cpp @@ -401,70 +401,73 @@ WRITE_LINE_MEMBER(bml3_state::bml3bus_firq_w) } -ADDRESS_MAP_START(bml3_state::bml3_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x43ff) AM_READWRITE(bml3_vram_r,bml3_vram_w) - AM_RANGE(0x4400, 0x9fff) AM_RAM - AM_RANGE(0xff40, 0xff46) AM_NOP // lots of unknown reads and writes - AM_RANGE(0xffc0, 0xffc3) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xffc4, 0xffc5) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xffc6, 0xffc7) AM_READWRITE(bml3_6845_r,bml3_6845_w) +void bml3_state::bml3_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x43ff).rw(this, FUNC(bml3_state::bml3_vram_r), FUNC(bml3_state::bml3_vram_w)); + map(0x4400, 0x9fff).ram(); + map(0xff40, 0xff46).noprw(); // lots of unknown reads and writes + map(0xffc0, 0xffc3).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xffc4, 0xffc5).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xffc6, 0xffc7).rw(this, FUNC(bml3_state::bml3_6845_r), FUNC(bml3_state::bml3_6845_w)); // KBNMI - Keyboard "Break" key non-maskable interrupt - AM_RANGE(0xffc8, 0xffc8) AM_READ(bml3_keyb_nmi_r) // keyboard nmi + map(0xffc8, 0xffc8).r(this, FUNC(bml3_state::bml3_keyb_nmi_r)); // keyboard nmi // DIPSW - DIP switches on system mainboard - AM_RANGE(0xffc9, 0xffc9) AM_READ_PORT("DSW") + map(0xffc9, 0xffc9).portr("DSW"); // TIMER - System timer enable - AM_RANGE(0xffca, 0xffca) AM_READ(bml3_firq_status_r) // timer irq + map(0xffca, 0xffca).r(this, FUNC(bml3_state::bml3_firq_status_r)); // timer irq // LPFLG - Light pen interrupt // AM_RANGE(0xffcb, 0xffcb) // MODE_SEL - Graphics mode select - AM_RANGE(0xffd0, 0xffd0) AM_WRITE(bml3_hres_reg_w) + map(0xffd0, 0xffd0).w(this, FUNC(bml3_state::bml3_hres_reg_w)); // TRACE - Trace counter // AM_RANGE(0xffd1, 0xffd1) // REMOTE - Remote relay control for cassette - bit 7 - AM_RANGE(0xffd2, 0xffd2) AM_WRITE(relay_w) + map(0xffd2, 0xffd2).w(this, FUNC(bml3_state::relay_w)); // MUSIC_SEL - Music select: toggle audio output level when rising - AM_RANGE(0xffd3, 0xffd3) AM_READWRITE(bml3_beep_r,bml3_beep_w) + map(0xffd3, 0xffd3).rw(this, FUNC(bml3_state::bml3_beep_r), FUNC(bml3_state::bml3_beep_w)); // TIME_MASK - Prohibit timer IRQ - AM_RANGE(0xffd4, 0xffd4) AM_WRITE(bml3_firq_mask_w) + map(0xffd4, 0xffd4).w(this, FUNC(bml3_state::bml3_firq_mask_w)); // LPENBL - Light pen operation enable - AM_RANGE(0xffd5, 0xffd5) AM_NOP + map(0xffd5, 0xffd5).noprw(); // INTERLACE_SEL - Interlaced video mode (manual has "INTERACE SEL"!) - AM_RANGE(0xffd6, 0xffd6) AM_WRITE(bml3_vres_reg_w) + map(0xffd6, 0xffd6).w(this, FUNC(bml3_state::bml3_vres_reg_w)); // AM_RANGE(0xffd7, 0xffd7) baud select // C_REG_SEL - Attribute register (character/video mode and colours) - AM_RANGE(0xffd8, 0xffd8) AM_READWRITE(bml3_vram_attr_r,bml3_vram_attr_w) + map(0xffd8, 0xffd8).rw(this, FUNC(bml3_state::bml3_vram_attr_r), FUNC(bml3_state::bml3_vram_attr_w)); // KB - Keyboard mode register, interrupt control, keyboard LEDs - AM_RANGE(0xffe0, 0xffe0) AM_READWRITE(bml3_keyboard_r,bml3_keyboard_w) + map(0xffe0, 0xffe0).rw(this, FUNC(bml3_state::bml3_keyboard_r), FUNC(bml3_state::bml3_keyboard_w)); // AM_RANGE(0xffe8, 0xffe8) bank register // AM_RANGE(0xffe9, 0xffe9) IG mode register // AM_RANGE(0xffea, 0xffea) IG enable register - AM_RANGE(0xa000, 0xfeff) AM_ROM AM_REGION("maincpu", 0xa000) - AM_RANGE(0xfff0, 0xffff) AM_ROM AM_REGION("maincpu", 0xfff0) - AM_RANGE(0xa000, 0xbfff) AM_WRITE(bml3_a000_w) - AM_RANGE(0xc000, 0xdfff) AM_WRITE(bml3_c000_w) - AM_RANGE(0xe000, 0xefff) AM_WRITE(bml3_e000_w) - AM_RANGE(0xf000, 0xfeff) AM_WRITE(bml3_f000_w) - AM_RANGE(0xfff0, 0xffff) AM_WRITE(bml3_fff0_w) + map(0xa000, 0xfeff).rom().region("maincpu", 0xa000); + map(0xfff0, 0xffff).rom().region("maincpu", 0xfff0); + map(0xa000, 0xbfff).w(this, FUNC(bml3_state::bml3_a000_w)); + map(0xc000, 0xdfff).w(this, FUNC(bml3_state::bml3_c000_w)); + map(0xe000, 0xefff).w(this, FUNC(bml3_state::bml3_e000_w)); + map(0xf000, 0xfeff).w(this, FUNC(bml3_state::bml3_f000_w)); + map(0xfff0, 0xffff).w(this, FUNC(bml3_state::bml3_fff0_w)); #if 0 - AM_RANGE(0xff00, 0xff00) AM_READWRITE(bml3_ym2203_r,bml3_ym2203_w) - AM_RANGE(0xff02, 0xff02) AM_READWRITE(bml3_psg_latch_r,bml3_psg_latch_w) // PSG address/data select + map(0xff00, 0xff00).rw(this, FUNC(bml3_state::bml3_ym2203_r), FUNC(bml3_state::bml3_ym2203_w)); + map(0xff02, 0xff02).rw(this, FUNC(bml3_state::bml3_psg_latch_r), FUNC(bml3_state::bml3_psg_latch_w)); // PSG address/data select #endif -ADDRESS_MAP_END +} -ADDRESS_MAP_START(bml3_state::bml3mk2_mem) - AM_IMPORT_FROM(bml3_mem) +void bml3_state::bml3mk2_mem(address_map &map) +{ + bml3_mem(map); // TODO: anything to add here? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(bml3_state::bml3mk5_mem) - AM_IMPORT_FROM(bml3_mem) +void bml3_state::bml3mk5_mem(address_map &map) +{ + bml3_mem(map); // TODO: anything to add here? -ADDRESS_MAP_END +} /* Input ports */ diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp index 4589b4aa8b7..e255fc48c47 100644 --- a/src/mame/drivers/bnstars.cpp +++ b/src/mame/drivers/bnstars.cpp @@ -742,63 +742,65 @@ WRITE32_MEMBER(bnstars_state::bnstars1_mahjong_select_w) } -ADDRESS_MAP_START(bnstars_state::bnstars_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM +void bnstars_state::bnstars_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom(); - AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) + map(0xfc800000, 0xfc800003).w(this, FUNC(bnstars_state::ms32_sound_w)); - AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("P1") - AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_PORT("P2") - AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW") + map(0xfcc00004, 0xfcc00007).portr("P1"); + map(0xfcc00008, 0xfcc0000b).portr("P2"); + map(0xfcc00010, 0xfcc00013).portr("DSW"); - AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP - AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w) + map(0xfce00034, 0xfce00037).nopw(); + map(0xfce00038, 0xfce0003b).w(this, FUNC(bnstars_state::reset_sub_w)); - AM_RANGE(0xfce00050, 0xfce00053) AM_WRITENOP - AM_RANGE(0xfce00058, 0xfce0005b) AM_WRITENOP - AM_RANGE(0xfce0005c, 0xfce0005f) AM_WRITENOP - AM_RANGE(0xfce00300, 0xfce00303) AM_WRITENOP + map(0xfce00050, 0xfce00053).nopw(); + map(0xfce00058, 0xfce0005b).nopw(); + map(0xfce0005c, 0xfce0005f).nopw(); + map(0xfce00300, 0xfce00303).nopw(); - AM_RANGE(0xfce00400, 0xfce0045f) AM_WRITEONLY AM_SHARE("roz_ctrl.0") - AM_RANGE(0xfce00700, 0xfce0075f) AM_WRITEONLY AM_SHARE("roz_ctrl.1") // guess - AM_RANGE(0xfce00a00, 0xfce00a17) AM_WRITEONLY AM_SHARE("tx0_scroll") - AM_RANGE(0xfce00a20, 0xfce00a37) AM_WRITEONLY AM_SHARE("bg0_scroll") - AM_RANGE(0xfce00c00, 0xfce00c17) AM_WRITEONLY AM_SHARE("tx1_scroll") - AM_RANGE(0xfce00c20, 0xfce00c37) AM_WRITEONLY AM_SHARE("bg1_scroll") + map(0xfce00400, 0xfce0045f).writeonly().share("roz_ctrl.0"); + map(0xfce00700, 0xfce0075f).writeonly().share("roz_ctrl.1"); // guess + map(0xfce00a00, 0xfce00a17).writeonly().share("tx0_scroll"); + map(0xfce00a20, 0xfce00a37).writeonly().share("bg0_scroll"); + map(0xfce00c00, 0xfce00c17).writeonly().share("tx1_scroll"); + map(0xfce00c20, 0xfce00c37).writeonly().share("bg1_scroll"); - AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(bnstars1_mahjong_select_w) // ? + map(0xfce00e00, 0xfce00e03).w(this, FUNC(bnstars_state::bnstars1_mahjong_select_w)); // ? - AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r) + map(0xfd000000, 0xfd000003).r(this, FUNC(bnstars_state::ms32_sound_r)); /* wrote together */ - AM_RANGE(0xfd040000, 0xfd047fff) AM_RAM // priority ram - AM_RANGE(0xfd080000, 0xfd087fff) AM_RAM - AM_RANGE(0xfd200000, 0xfd237fff) AM_DEVREADWRITE16("palette2", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette2") - AM_RANGE(0xfd400000, 0xfd437fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE(ms32_roz1_ram_w) AM_SHARE("roz1_ram") - AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE(ms32_roz0_ram_w) AM_SHARE("roz0_ram") - AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM AM_SHARE("spram") - AM_RANGE(0xfea00000, 0xfea07fff) AM_RAM_WRITE(ms32_tx1_ram_w) AM_SHARE("tx1_ram") - AM_RANGE(0xfea08000, 0xfea0ffff) AM_RAM_WRITE(ms32_bg1_ram_w) AM_SHARE("bg1_ram") - AM_RANGE(0xfec00000, 0xfec07fff) AM_RAM_WRITE(ms32_tx0_ram_w) AM_SHARE("tx0_ram") - AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_SHARE("bg0_ram") - - AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bnstars_state::bnstars_sound_map) - AM_RANGE(0x0000, 0x3eff) AM_ROM - AM_RANGE(0x3f00, 0x3f0f) AM_DEVREADWRITE("ymf2", ymf271_device, read, write) - AM_RANGE(0x3f10, 0x3f10) AM_READWRITE(latch_r,to_main_w) - AM_RANGE(0x3f20, 0x3f2f) AM_DEVREADWRITE("ymf1", ymf271_device, read, write) - AM_RANGE(0x3f40, 0x3f40) AM_WRITENOP /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */ - AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP // watchdog? banking? very noisy - AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank1") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("z80bank2") -ADDRESS_MAP_END + map(0xfd040000, 0xfd047fff).ram(); // priority ram + map(0xfd080000, 0xfd087fff).ram(); + map(0xfd200000, 0xfd237fff).rw("palette2", FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette2"); + map(0xfd400000, 0xfd437fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0xfe000000, 0xfe01ffff).ram().w(this, FUNC(bnstars_state::ms32_roz1_ram_w)).share("roz1_ram"); + map(0xfe400000, 0xfe41ffff).ram().w(this, FUNC(bnstars_state::ms32_roz0_ram_w)).share("roz0_ram"); + map(0xfe800000, 0xfe83ffff).ram().share("spram"); + map(0xfea00000, 0xfea07fff).ram().w(this, FUNC(bnstars_state::ms32_tx1_ram_w)).share("tx1_ram"); + map(0xfea08000, 0xfea0ffff).ram().w(this, FUNC(bnstars_state::ms32_bg1_ram_w)).share("bg1_ram"); + map(0xfec00000, 0xfec07fff).ram().w(this, FUNC(bnstars_state::ms32_tx0_ram_w)).share("tx0_ram"); + map(0xfec08000, 0xfec0ffff).ram().w(this, FUNC(bnstars_state::ms32_bg0_ram_w)).share("bg0_ram"); + + map(0xfee00000, 0xfee1ffff).ram(); + map(0xffe00000, 0xffffffff).rom().region("maincpu", 0); +} + +void bnstars_state::bnstars_sound_map(address_map &map) +{ + map(0x0000, 0x3eff).rom(); + map(0x3f00, 0x3f0f).rw("ymf2", FUNC(ymf271_device::read), FUNC(ymf271_device::write)); + map(0x3f10, 0x3f10).rw(this, FUNC(bnstars_state::latch_r), FUNC(bnstars_state::to_main_w)); + map(0x3f20, 0x3f2f).rw("ymf1", FUNC(ymf271_device::read), FUNC(ymf271_device::write)); + map(0x3f40, 0x3f40).nopw(); /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */ + map(0x3f70, 0x3f70).nopw(); // watchdog? banking? very noisy + map(0x3f80, 0x3f80).w(this, FUNC(bnstars_state::ms32_snd_bank_w)); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0xbfff).bankr("z80bank1"); + map(0xc000, 0xffff).bankr("z80bank2"); +} MACHINE_CONFIG_START(bnstars_state::bnstars) diff --git a/src/mame/drivers/bntyhunt.cpp b/src/mame/drivers/bntyhunt.cpp index 99dbba77831..122a9431406 100644 --- a/src/mame/drivers/bntyhunt.cpp +++ b/src/mame/drivers/bntyhunt.cpp @@ -43,9 +43,10 @@ uint32_t bntyhunt_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -ADDRESS_MAP_START(bntyhunt_state::bntyhunt_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM -ADDRESS_MAP_END +void bntyhunt_state::bntyhunt_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); +} static INPUT_PORTS_START( bntyhunt ) INPUT_PORTS_END diff --git a/src/mame/drivers/bob85.cpp b/src/mame/drivers/bob85.cpp index bddcf97a0a1..7d0e36688c2 100644 --- a/src/mame/drivers/bob85.cpp +++ b/src/mame/drivers/bob85.cpp @@ -143,17 +143,19 @@ WRITE8_MEMBER(bob85_state::bob85_7seg_w) output().set_digit_value(offset, bitswap<8>( data,3,2,1,0,7,6,5,4 )); } -ADDRESS_MAP_START(bob85_state::bob85_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x02ff) AM_ROM - AM_RANGE(0x0600, 0x09ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bob85_state::bob85_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0a, 0x0a) AM_READ(bob85_keyboard_r) - AM_RANGE(0x0a, 0x0f) AM_WRITE(bob85_7seg_w) -ADDRESS_MAP_END +void bob85_state::bob85_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x02ff).rom(); + map(0x0600, 0x09ff).ram(); +} + +void bob85_state::bob85_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0a, 0x0a).r(this, FUNC(bob85_state::bob85_keyboard_r)); + map(0x0a, 0x0f).w(this, FUNC(bob85_state::bob85_7seg_w)); +} /* Input ports */ static INPUT_PORTS_START( bob85 ) diff --git a/src/mame/drivers/bogeyman.cpp b/src/mame/drivers/bogeyman.cpp index 8c10a6efd21..e4b4ead65a8 100644 --- a/src/mame/drivers/bogeyman.cpp +++ b/src/mame/drivers/bogeyman.cpp @@ -48,20 +48,21 @@ WRITE8_MEMBER(bogeyman_state::ay8910_control_w) /* Memory Map */ -ADDRESS_MAP_START(bogeyman_state::bogeyman_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2100, 0x21ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x300f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") AM_WRITE(ay8910_control_w) - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") AM_WRITE(ay8910_latch_w) - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW1") - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW2") AM_WRITENOP // ??? sound - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void bogeyman_state::bogeyman_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); + map(0x1800, 0x1bff).ram().w(this, FUNC(bogeyman_state::videoram2_w)).share("videoram2"); + map(0x1c00, 0x1fff).ram().w(this, FUNC(bogeyman_state::colorram2_w)).share("colorram2"); + map(0x2000, 0x20ff).ram().w(this, FUNC(bogeyman_state::videoram_w)).share("videoram"); + map(0x2100, 0x21ff).ram().w(this, FUNC(bogeyman_state::colorram_w)).share("colorram"); + map(0x2800, 0x2bff).ram().share("spriteram"); + map(0x3000, 0x300f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3800, 0x3800).portr("P1").w(this, FUNC(bogeyman_state::ay8910_control_w)); + map(0x3801, 0x3801).portr("P2").w(this, FUNC(bogeyman_state::ay8910_latch_w)); + map(0x3802, 0x3802).portr("DSW1"); + map(0x3803, 0x3803).portr("DSW2").nopw(); // ??? sound + map(0x4000, 0xffff).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/bombjack.cpp b/src/mame/drivers/bombjack.cpp index 77265b85100..fd188f131ad 100644 --- a/src/mame/drivers/bombjack.cpp +++ b/src/mame/drivers/bombjack.cpp @@ -128,39 +128,42 @@ WRITE8_MEMBER(bombjack_state::irq_mask_w) m_nmi_mask = data & 1; } -ADDRESS_MAP_START(bombjack_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(bombjack_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(bombjack_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9820, 0x987f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x9a00, 0x9a00) AM_WRITENOP - AM_RANGE(0x9c00, 0x9cff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x9e00, 0x9e00) AM_WRITE(bombjack_background_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("P1") - AM_RANGE(0xb000, 0xb000) AM_WRITE(irq_mask_w) - AM_RANGE(0xb001, 0xb001) AM_READ_PORT("P2") - AM_RANGE(0xb002, 0xb002) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb003, 0xb003) AM_READNOP /* watchdog reset? */ - AM_RANGE(0xb004, 0xb004) AM_READ_PORT("DSW1") - AM_RANGE(0xb004, 0xb004) AM_WRITE(bombjack_flipscreen_w) - AM_RANGE(0xb005, 0xb005) AM_READ_PORT("DSW2") - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc000, 0xdfff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bombjack_state::audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_read_and_clear) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bombjack_state::audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay3", ay8910_device, address_data_w) -ADDRESS_MAP_END +void bombjack_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(bombjack_state::bombjack_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(bombjack_state::bombjack_colorram_w)).share("colorram"); + map(0x9820, 0x987f).writeonly().share("spriteram"); + map(0x9a00, 0x9a00).nopw(); + map(0x9c00, 0x9cff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x9e00, 0x9e00).w(this, FUNC(bombjack_state::bombjack_background_w)); + map(0xb000, 0xb000).portr("P1"); + map(0xb000, 0xb000).w(this, FUNC(bombjack_state::irq_mask_w)); + map(0xb001, 0xb001).portr("P2"); + map(0xb002, 0xb002).portr("SYSTEM"); + map(0xb003, 0xb003).nopr(); /* watchdog reset? */ + map(0xb004, 0xb004).portr("DSW1"); + map(0xb004, 0xb004).w(this, FUNC(bombjack_state::bombjack_flipscreen_w)); + map(0xb005, 0xb005).portr("DSW2"); + map(0xb800, 0xb800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc000, 0xdfff).rom(); +} + +void bombjack_state::audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x6000, 0x6000).r(this, FUNC(bombjack_state::soundlatch_read_and_clear)); +} + +void bombjack_state::audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x10, 0x11).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x80, 0x81).w("ay3", FUNC(ay8910_device::address_data_w)); +} /************************************* diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp index a71f71641d9..29eccd5f3e2 100644 --- a/src/mame/drivers/boogwing.cpp +++ b/src/mame/drivers/boogwing.cpp @@ -87,7 +87,6 @@ #include "includes/boogwing.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "machine/deco102.h" #include "machine/decocrpt.h" #include "machine/gen_latch.h" @@ -123,58 +122,61 @@ WRITE16_MEMBER( boogwing_state::priority_w ) } -ADDRESS_MAP_START(boogwing_state::boogwing_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM +void boogwing_state::boogwing_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); - AM_RANGE(0x220000, 0x220001) AM_WRITE(priority_w) - AM_RANGE(0x220002, 0x22000f) AM_NOP + map(0x220000, 0x220001).w(this, FUNC(boogwing_state::priority_w)); + map(0x220002, 0x22000f).noprw(); - AM_RANGE(0x240000, 0x240001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x242000, 0x2427ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x244000, 0x244001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) - AM_RANGE(0x246000, 0x2467ff) AM_RAM AM_SHARE("spriteram2") + map(0x240000, 0x240001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x242000, 0x2427ff).ram().share("spriteram"); + map(0x244000, 0x244001).w(m_spriteram2, FUNC(buffered_spriteram16_device::write)); + map(0x246000, 0x2467ff).ram().share("spriteram2"); // AM_RANGE(0x24e6c0, 0x24e6c1) AM_READ_PORT("DSW") // AM_RANGE(0x24e138, 0x24e139) AM_READ_PORT("SYSTEM") // AM_RANGE(0x24e344, 0x24e345) AM_READ_PORT("INPUTS") - AM_RANGE(0x24e000, 0x24efff) AM_READWRITE(boogwing_protection_region_0_104_r,boogwing_protection_region_0_104_w) AM_SHARE("prot16ram") /* Protection device */ - - AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x264000, 0x265fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x266000, 0x267fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x268000, 0x268fff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x26a000, 0x26afff) AM_RAM AM_SHARE("pf2_rowscroll") - - AM_RANGE(0x270000, 0x27000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) - AM_RANGE(0x274000, 0x275fff) AM_RAM_DEVWRITE("tilegen2", deco16ic_device, pf1_data_w) - AM_RANGE(0x276000, 0x277fff) AM_RAM_DEVWRITE("tilegen2", deco16ic_device, pf2_data_w) - AM_RANGE(0x278000, 0x278fff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x27a000, 0x27afff) AM_RAM AM_SHARE("pf4_rowscroll") - - AM_RANGE(0x280000, 0x28000f) AM_NOP // ? - AM_RANGE(0x282000, 0x282001) AM_NOP // Palette setup? - AM_RANGE(0x282008, 0x282009) AM_DEVWRITE("deco_ace", deco_ace_device, palette_dma_w) - AM_RANGE(0x284000, 0x285fff) AM_DEVREADWRITE("deco_ace", deco_ace_device, buffered_palette16_r, buffered_palette16_w) - - AM_RANGE(0x3c0000, 0x3c004f) AM_DEVREADWRITE("deco_ace", deco_ace_device, ace_r, ace_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(boogwing_state::decrypted_opcodes_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(boogwing_state::audio_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_NOP - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco104_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END + map(0x24e000, 0x24efff).rw(this, FUNC(boogwing_state::boogwing_protection_region_0_104_r), FUNC(boogwing_state::boogwing_protection_region_0_104_w)).share("prot16ram"); /* Protection device */ + + map(0x260000, 0x26000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x264000, 0x265fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x266000, 0x267fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x268000, 0x268fff).ram().share("pf1_rowscroll"); + map(0x26a000, 0x26afff).ram().share("pf2_rowscroll"); + + map(0x270000, 0x27000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w)); + map(0x274000, 0x275fff).ram().w(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_w)); + map(0x276000, 0x277fff).ram().w(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_w)); + map(0x278000, 0x278fff).ram().share("pf3_rowscroll"); + map(0x27a000, 0x27afff).ram().share("pf4_rowscroll"); + + map(0x280000, 0x28000f).noprw(); // ? + map(0x282000, 0x282001).noprw(); // Palette setup? + map(0x282008, 0x282009).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w)); + map(0x284000, 0x285fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette16_r), FUNC(deco_ace_device::buffered_palette16_w)); + + map(0x3c0000, 0x3c004f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)); +} + +void boogwing_state::decrypted_opcodes_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().share("decrypted_opcodes"); +} + +void boogwing_state::audio_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).noprw(); + map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140000).r(m_deco104, FUNC(deco104_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /**********************************************************************************/ diff --git a/src/mame/drivers/bottom9.cpp b/src/mame/drivers/bottom9.cpp index 4f283a06cd9..df28ae99552 100644 --- a/src/mame/drivers/bottom9.cpp +++ b/src/mame/drivers/bottom9.cpp @@ -159,35 +159,37 @@ WRITE8_MEMBER(bottom9_state::sound_bank_w) } -ADDRESS_MAP_START(bottom9_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - AM_RANGE(0x0000, 0x07ff) AM_READWRITE(bottom9_bankedram1_r, bottom9_bankedram1_w) - AM_RANGE(0x1f80, 0x1f80) AM_WRITE(bankswitch_w) - AM_RANGE(0x1f90, 0x1f90) AM_WRITE(bottom9_1f90_w) - AM_RANGE(0x1fa0, 0x1fa0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1fb0, 0x1fb0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(bottom9_sh_irqtrigger_w) - AM_RANGE(0x1fd0, 0x1fd0) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1fd1, 0x1fd1) AM_READ_PORT("P1") - AM_RANGE(0x1fd2, 0x1fd2) AM_READ_PORT("P2") - AM_RANGE(0x1fd3, 0x1fd3) AM_READ_PORT("DSW1") - AM_RANGE(0x1fe0, 0x1fe0) AM_READ_PORT("DSW2") - AM_RANGE(0x1ff0, 0x1fff) AM_DEVWRITE("k051316", k051316_device, ctrl_w) - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(bottom9_bankedram2_r, bottom9_bankedram2_w) AM_SHARE("palette") - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bottom9_state::audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) - AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_enable_w) -ADDRESS_MAP_END +void bottom9_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(bottom9_state::k052109_051960_r), FUNC(bottom9_state::k052109_051960_w)); + map(0x0000, 0x07ff).rw(this, FUNC(bottom9_state::bottom9_bankedram1_r), FUNC(bottom9_state::bottom9_bankedram1_w)); + map(0x1f80, 0x1f80).w(this, FUNC(bottom9_state::bankswitch_w)); + map(0x1f90, 0x1f90).w(this, FUNC(bottom9_state::bottom9_1f90_w)); + map(0x1fa0, 0x1fa0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1fb0, 0x1fb0).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1fc0, 0x1fc0).w(this, FUNC(bottom9_state::bottom9_sh_irqtrigger_w)); + map(0x1fd0, 0x1fd0).portr("SYSTEM"); + map(0x1fd1, 0x1fd1).portr("P1"); + map(0x1fd2, 0x1fd2).portr("P2"); + map(0x1fd3, 0x1fd3).portr("DSW1"); + map(0x1fe0, 0x1fe0).portr("DSW2"); + map(0x1ff0, 0x1fff).w(m_k051316, FUNC(k051316_device::ctrl_w)); + map(0x2000, 0x27ff).rw(this, FUNC(bottom9_state::bottom9_bankedram2_r), FUNC(bottom9_state::bottom9_bankedram2_w)).share("palette"); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + +void bottom9_state::audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(bottom9_state::sound_bank_w)); + map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf000).w(this, FUNC(bottom9_state::nmi_enable_w)); +} static INPUT_PORTS_START( bottom9 ) diff --git a/src/mame/drivers/bowltry.cpp b/src/mame/drivers/bowltry.cpp index f9fc85a75a6..098efc405fc 100644 --- a/src/mame/drivers/bowltry.cpp +++ b/src/mame/drivers/bowltry.cpp @@ -77,16 +77,17 @@ WRITE16_MEMBER(bowltry_state::hack_w) } #endif -ADDRESS_MAP_START(bowltry_state::bowltry_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0x080000, 0x083fff ) AM_RAM - AM_RANGE( 0x600000, 0x60ffff ) AM_RAM +void bowltry_state::bowltry_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x080000, 0x083fff).ram(); + map(0x600000, 0x60ffff).ram(); #if HACK_ENABLED - AM_RANGE( 0x60e090, 0x60e093 ) AM_READWRITE(hack_r,hack_w) + map(0x60e090, 0x60e093).rw(this, FUNC(bowltry_state::hack_r), FUNC(bowltry_state::hack_w)); #endif -ADDRESS_MAP_END +} static INPUT_PORTS_START( bowltry ) INPUT_PORTS_END diff --git a/src/mame/drivers/boxer.cpp b/src/mame/drivers/boxer.cpp index c35a1484e2b..eea60b8509d 100644 --- a/src/mame/drivers/boxer.cpp +++ b/src/mame/drivers/boxer.cpp @@ -341,22 +341,23 @@ WRITE8_MEMBER(boxer_state::led_w) * *************************************/ -ADDRESS_MAP_START(boxer_state::boxer_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x03ff) AM_RAM AM_SHARE("tile_ram") - AM_RANGE(0x0800, 0x08ff) AM_READ(input_r) - AM_RANGE(0x1000, 0x17ff) AM_READ(misc_r) - AM_RANGE(0x1800, 0x1800) AM_WRITE(pot_w) - AM_RANGE(0x1900, 0x19ff) AM_WRITE(led_w) - AM_RANGE(0x1a00, 0x1aff) AM_WRITE(sound_w) - AM_RANGE(0x1b00, 0x1bff) AM_WRITE(crowd_w) - AM_RANGE(0x1c00, 0x1cff) AM_WRITE(irq_reset_w) - AM_RANGE(0x1d00, 0x1dff) AM_WRITE(bell_w) - AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_SHARE("sprite_ram") - AM_RANGE(0x1f00, 0x1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void boxer_state::boxer_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x03ff).ram().share("tile_ram"); + map(0x0800, 0x08ff).r(this, FUNC(boxer_state::input_r)); + map(0x1000, 0x17ff).r(this, FUNC(boxer_state::misc_r)); + map(0x1800, 0x1800).w(this, FUNC(boxer_state::pot_w)); + map(0x1900, 0x19ff).w(this, FUNC(boxer_state::led_w)); + map(0x1a00, 0x1aff).w(this, FUNC(boxer_state::sound_w)); + map(0x1b00, 0x1bff).w(this, FUNC(boxer_state::crowd_w)); + map(0x1c00, 0x1cff).w(this, FUNC(boxer_state::irq_reset_w)); + map(0x1d00, 0x1dff).w(this, FUNC(boxer_state::bell_w)); + map(0x1e00, 0x1eff).writeonly().share("sprite_ram"); + map(0x1f00, 0x1fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3000, 0x3fff).rom(); +} /************************************* diff --git a/src/mame/drivers/bpmmicro.cpp b/src/mame/drivers/bpmmicro.cpp index f2c716b60be..eb51d338967 100644 --- a/src/mame/drivers/bpmmicro.cpp +++ b/src/mame/drivers/bpmmicro.cpp @@ -330,24 +330,26 @@ read <- 00 Address Maps ******************************************************************************/ -ADDRESS_MAP_START(bpmmicro_state::i286_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_RAM // 512k ram - AM_RANGE(0x082200, 0x82201) AM_WRITE(unknown_82200_w) - AM_RANGE(0x084000, 0x84001) AM_READ(latch_84000_r) // GUESS: this is reading the octal latch - AM_RANGE(0x084002, 0x84003) AM_WRITE(latch_84002_w) // GUESS: this is clocking the CK pin on the octal latch from bit 0, dumping the contents of a serial in parallel out shifter into said latch - AM_RANGE(0x08400e, 0x8400f) AM_WRITE(unknown_8400e_w) - AM_RANGE(0x084018, 0x84019) AM_WRITE(unknown_84018_w) - AM_RANGE(0x08401a, 0x8401b) AM_WRITE(unknown_8401a_w) - AM_RANGE(0x08401c, 0x8401d) AM_WRITE(eeprom_8401c_w) - AM_RANGE(0x0f0000, 0x0fffff) AM_ROM AM_REGION("bios", 0x10000) +void bpmmicro_state::i286_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).ram(); // 512k ram + map(0x082200, 0x82201).w(this, FUNC(bpmmicro_state::unknown_82200_w)); + map(0x084000, 0x84001).r(this, FUNC(bpmmicro_state::latch_84000_r)); // GUESS: this is reading the octal latch + map(0x084002, 0x84003).w(this, FUNC(bpmmicro_state::latch_84002_w)); // GUESS: this is clocking the CK pin on the octal latch from bit 0, dumping the contents of a serial in parallel out shifter into said latch + map(0x08400e, 0x8400f).w(this, FUNC(bpmmicro_state::unknown_8400e_w)); + map(0x084018, 0x84019).w(this, FUNC(bpmmicro_state::unknown_84018_w)); + map(0x08401a, 0x8401b).w(this, FUNC(bpmmicro_state::unknown_8401a_w)); + map(0x08401c, 0x8401d).w(this, FUNC(bpmmicro_state::eeprom_8401c_w)); + map(0x0f0000, 0x0fffff).rom().region("bios", 0x10000); //AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0) //? - AM_RANGE(0xfffff0, 0xffffff) AM_ROM AM_REGION("bios", 0x1fff0) //? -ADDRESS_MAP_END + map(0xfffff0, 0xffffff).rom().region("bios", 0x1fff0); //? +} -ADDRESS_MAP_START(bpmmicro_state::i286_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void bpmmicro_state::i286_io(address_map &map) +{ + map.unmap_value_high(); +} /****************************************************************************** diff --git a/src/mame/drivers/br8641.cpp b/src/mame/drivers/br8641.cpp index 353351ea705..4b097c06da8 100644 --- a/src/mame/drivers/br8641.cpp +++ b/src/mame/drivers/br8641.cpp @@ -63,21 +63,23 @@ private: required_device<beep_device> m_beep; }; -ADDRESS_MAP_START(brandt8641_state::brandt8641_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM // 27256 at U12 - AM_RANGE(0x8000, 0x9fff) AM_RAM // 8KB static ram 6264 at U12 -ADDRESS_MAP_END - -ADDRESS_MAP_START(brandt8641_state::brandt8641_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio2", z80pio_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio3", z80pio_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x1E, 0x1F) AM_WRITENOP // unknown device -ADDRESS_MAP_END +void brandt8641_state::brandt8641_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); // 27256 at U12 + map(0x8000, 0x9fff).ram(); // 8KB static ram 6264 at U12 +} + +void brandt8641_state::brandt8641_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x04, 0x07).rw(m_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).rw(m_pio2, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x0c, 0x0f).rw(m_pio3, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x10, 0x13).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x1E, 0x1F).nopw(); // unknown device +} /* Input ports */ // No idea what each key does diff --git a/src/mame/drivers/brkthru.cpp b/src/mame/drivers/brkthru.cpp index 7b7de9d9fca..8f161310042 100644 --- a/src/mame/drivers/brkthru.cpp +++ b/src/mame/drivers/brkthru.cpp @@ -108,49 +108,52 @@ INPUT_CHANGED_MEMBER(brkthru_state::coin_inserted) * *************************************/ -ADDRESS_MAP_START(brkthru_state::brkthru_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(brkthru_fgram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x0400, 0x0bff) AM_RAM - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(brkthru_bgram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1100, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("P2") - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("DSW1") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW2/COIN") - AM_RANGE(0x1800, 0x1801) AM_WRITE(brkthru_1800_w) /* bg scroll and color, ROM bank selection, flip screen */ - AM_RANGE(0x1802, 0x1802) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1803, 0x1803) AM_WRITE(brkthru_1803_w) /* NMI enable, + ? */ - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void brkthru_state::brkthru_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().w(this, FUNC(brkthru_state::brkthru_fgram_w)).share("fg_videoram"); + map(0x0400, 0x0bff).ram(); + map(0x0c00, 0x0fff).ram().w(this, FUNC(brkthru_state::brkthru_bgram_w)).share("videoram"); + map(0x1000, 0x10ff).ram().share("spriteram"); + map(0x1100, 0x17ff).ram(); + map(0x1800, 0x1800).portr("P1"); + map(0x1801, 0x1801).portr("P2"); + map(0x1802, 0x1802).portr("DSW1"); + map(0x1803, 0x1803).portr("DSW2/COIN"); + map(0x1800, 0x1801).w(this, FUNC(brkthru_state::brkthru_1800_w)); /* bg scroll and color, ROM bank selection, flip screen */ + map(0x1802, 0x1802).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1803, 0x1803).w(this, FUNC(brkthru_state::brkthru_1803_w)); /* NMI enable, + ? */ + map(0x2000, 0x3fff).bankr("bank1"); + map(0x4000, 0xffff).rom(); +} /* same as brktrhu, but xor 0x1000 below 8k */ -ADDRESS_MAP_START(brkthru_state::darwin_map) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(brkthru_fgram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x1400, 0x1bff) AM_RAM - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(brkthru_bgram_w) AM_SHARE("videoram") - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0100, 0x01ff) AM_WRITENOP /*tidyup, nothing really here?*/ - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("P1") - AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2") - AM_RANGE(0x0802, 0x0802) AM_READ_PORT("DSW1") - AM_RANGE(0x0803, 0x0803) AM_READ_PORT("DSW2/COIN") - AM_RANGE(0x0800, 0x0801) AM_WRITE(brkthru_1800_w) /* bg scroll and color, ROM bank selection, flip screen */ - AM_RANGE(0x0802, 0x0802) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x0803, 0x0803) AM_WRITE(darwin_0803_w) /* NMI enable, + ? */ - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(brkthru_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym2", ym3526_device, write) - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void brkthru_state::darwin_map(address_map &map) +{ + map(0x1000, 0x13ff).ram().w(this, FUNC(brkthru_state::brkthru_fgram_w)).share("fg_videoram"); + map(0x1400, 0x1bff).ram(); + map(0x1c00, 0x1fff).ram().w(this, FUNC(brkthru_state::brkthru_bgram_w)).share("videoram"); + map(0x0000, 0x00ff).ram().share("spriteram"); + map(0x0100, 0x01ff).nopw(); /*tidyup, nothing really here?*/ + map(0x0800, 0x0800).portr("P1"); + map(0x0801, 0x0801).portr("P2"); + map(0x0802, 0x0802).portr("DSW1"); + map(0x0803, 0x0803).portr("DSW2/COIN"); + map(0x0800, 0x0801).w(this, FUNC(brkthru_state::brkthru_1800_w)); /* bg scroll and color, ROM bank selection, flip screen */ + map(0x0802, 0x0802).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0803, 0x0803).w(this, FUNC(brkthru_state::darwin_0803_w)); /* NMI enable, + ? */ + map(0x2000, 0x3fff).bankr("bank1"); + map(0x4000, 0xffff).rom(); +} + + +void brkthru_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).w("ym2", FUNC(ym3526_device::write)); + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x6000, 0x6001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/bsktball.cpp b/src/mame/drivers/bsktball.cpp index f7b6b71c60c..33989c4cf78 100644 --- a/src/mame/drivers/bsktball.cpp +++ b/src/mame/drivers/bsktball.cpp @@ -76,21 +76,22 @@ PALETTE_INIT_MEMBER(bsktball_state, bsktball) * *************************************/ -ADDRESS_MAP_START(bsktball_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM /* Zero Page RAM */ - AM_RANGE(0x0800, 0x0800) AM_READ(bsktball_in0_r) - AM_RANGE(0x0802, 0x0802) AM_READ_PORT("IN1") - AM_RANGE(0x0803, 0x0803) AM_READ_PORT("DSW") - AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* Timer Reset */ - AM_RANGE(0x1010, 0x1010) AM_WRITE(bsktball_bounce_w) /* Crowd Amp / Bounce */ - AM_RANGE(0x1020, 0x102f) AM_DEVWRITE("outlatch", f9334_device, write_a0) - AM_RANGE(0x1030, 0x1030) AM_WRITE(bsktball_note_w) /* Music Ckt Note Dvsr */ - AM_RANGE(0x1800, 0x1bbf) AM_RAM_WRITE(bsktball_videoram_w) AM_SHARE("videoram") /* DISPLAY */ - AM_RANGE(0x1bc0, 0x1bff) AM_RAM AM_SHARE("motion") - AM_RANGE(0x1c00, 0x1cff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_ROM /* PROGRAM */ -ADDRESS_MAP_END +void bsktball_state::main_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x01ff).ram(); /* Zero Page RAM */ + map(0x0800, 0x0800).r(this, FUNC(bsktball_state::bsktball_in0_r)); + map(0x0802, 0x0802).portr("IN1"); + map(0x0803, 0x0803).portr("DSW"); + map(0x1000, 0x1000).nopw(); /* Timer Reset */ + map(0x1010, 0x1010).w(this, FUNC(bsktball_state::bsktball_bounce_w)); /* Crowd Amp / Bounce */ + map(0x1020, 0x102f).w("outlatch", FUNC(f9334_device::write_a0)); + map(0x1030, 0x1030).w(this, FUNC(bsktball_state::bsktball_note_w)); /* Music Ckt Note Dvsr */ + map(0x1800, 0x1bbf).ram().w(this, FUNC(bsktball_state::bsktball_videoram_w)).share("videoram"); /* DISPLAY */ + map(0x1bc0, 0x1bff).ram().share("motion"); + map(0x1c00, 0x1cff).ram(); + map(0x2000, 0x3fff).rom(); /* PROGRAM */ +} diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp index f96ca4a9c26..f572ebf19d6 100644 --- a/src/mame/drivers/btime.cpp +++ b/src/mame/drivers/btime.cpp @@ -184,161 +184,171 @@ TIMER_DEVICE_CALLBACK_MEMBER(btime_state::audio_nmi_gen) m_audionmi->in_w<1>((scanline & 8) >> 3); } -ADDRESS_MAP_START(btime_state::btime_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x0c00, 0x0c0f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w) - AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITENOP - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("P2") - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("SYSTEM") AM_WRITE(btime_video_control_w) - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW2") AM_WRITE(bnj_scroll1_w) - AM_RANGE(0xb000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::cookrace_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x0500, 0x3fff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xc800, 0xcbff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w) - AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w) - AM_RANGE(0xd000, 0xd0ff) AM_RAM /* background? */ - AM_RANGE(0xd100, 0xd3ff) AM_RAM /* ? */ - AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("bnj_bgram") - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1") AM_WRITE(bnj_video_control_w) - AM_RANGE(0xe300, 0xe300) AM_READ_PORT("DSW1") /* mirror address used on high score name entry */ +void btime_state::btime_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("rambase"); + map(0x0c00, 0x0c0f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x1000, 0x13ff).ram().share("videoram"); + map(0x1400, 0x17ff).ram().share("colorram"); + map(0x1800, 0x1bff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w)); + map(0x1c00, 0x1fff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w)); + map(0x4000, 0x4000).portr("P1").nopw(); + map(0x4001, 0x4001).portr("P2"); + map(0x4002, 0x4002).portr("SYSTEM").w(this, FUNC(btime_state::btime_video_control_w)); + map(0x4003, 0x4003).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x4004, 0x4004).portr("DSW2").w(this, FUNC(btime_state::bnj_scroll1_w)); + map(0xb000, 0xffff).rom(); +} + +void btime_state::cookrace_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("rambase"); + map(0x0500, 0x3fff).rom(); + map(0xc000, 0xc3ff).ram().share("videoram"); + map(0xc400, 0xc7ff).ram().share("colorram"); + map(0xc800, 0xcbff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w)); + map(0xcc00, 0xcfff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w)); + map(0xd000, 0xd0ff).ram(); /* background? */ + map(0xd100, 0xd3ff).ram(); /* ? */ + map(0xd400, 0xd7ff).ram().share("bnj_bgram"); + map(0xe000, 0xe000).portr("DSW1").w(this, FUNC(btime_state::bnj_video_control_w)); + map(0xe300, 0xe300).portr("DSW1"); /* mirror address used on high score name entry */ /* screen */ - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1") - AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2") - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfff9, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::tisland_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x0c00, 0x0c0f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w) - AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITENOP - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("P2") - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("SYSTEM") AM_WRITE(btime_video_control_w) - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW2") AM_WRITE(bnj_scroll1_w) - AM_RANGE(0x4005, 0x4005) AM_WRITE(bnj_scroll2_w) - AM_RANGE(0x9000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::zoar_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x8000, 0x83ff) AM_WRITEONLY AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_WRITEONLY AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8bff) AM_WRITE(btime_mirrorvideoram_w) - AM_RANGE(0x8c00, 0x8fff) AM_WRITE(btime_mirrorcolorram_w) - AM_RANGE(0x9000, 0x9000) AM_WRITE(zoar_video_control_w) - AM_RANGE(0x9800, 0x9800) AM_READ(zoar_dsw1_read) - AM_RANGE(0x9801, 0x9801) AM_READ_PORT("DSW2") - AM_RANGE(0x9802, 0x9802) AM_READ_PORT("P1") - AM_RANGE(0x9803, 0x9803) AM_READ_PORT("P2") - AM_RANGE(0x9800, 0x9803) AM_WRITEONLY AM_SHARE("zoar_scrollram") - AM_RANGE(0x9804, 0x9804) AM_READ_PORT("SYSTEM") AM_WRITE(bnj_scroll2_w) - AM_RANGE(0x9805, 0x9805) AM_WRITE(bnj_scroll1_w) - AM_RANGE(0x9806, 0x9806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::lnc_map) - AM_RANGE(0x0000, 0x3bff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(lnc_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7800, 0x7bff) AM_WRITEONLY AM_SHARE("colorram") /* this is just here to initialize the pointer */ - AM_RANGE(0x7c00, 0x7fff) AM_READWRITE(btime_mirrorvideoram_r, lnc_mirrorvideoram_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW1") AM_WRITENOP /* ??? */ - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW2") AM_WRITE(bnj_video_control_w) - AM_RANGE(0x8003, 0x8003) AM_WRITEONLY AM_SHARE("lnc_charbank") - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("P1") AM_WRITENOP /* IRQ ack??? */ - AM_RANGE(0x9001, 0x9001) AM_READ_PORT("P2") - AM_RANGE(0x9002, 0x9002) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xb000, 0xb1ff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::mmonkey_map) - AM_RANGE(0x0000, 0x3bff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(lnc_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7800, 0x7bff) AM_WRITEONLY AM_SHARE("colorram") /* this is just here to initialize the pointer */ - AM_RANGE(0x7c00, 0x7fff) AM_READWRITE(btime_mirrorvideoram_r, lnc_mirrorvideoram_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW1") - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW2") AM_WRITE(bnj_video_control_w) - AM_RANGE(0x8003, 0x8003) AM_WRITEONLY AM_SHARE("lnc_charbank") - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("P1") AM_WRITENOP /* IRQ ack??? */ - AM_RANGE(0x9001, 0x9001) AM_READ_PORT("P2") - AM_RANGE(0x9002, 0x9002) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xb000, 0xbfff) AM_READWRITE(mmonkey_protection_r, mmonkey_protection_w) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::bnj_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1") - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW2") AM_WRITE(bnj_video_control_w) - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("P2") - AM_RANGE(0x1004, 0x1004) AM_READ_PORT("SYSTEM") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w) - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(btime_mirrorcolorram_r, btime_mirrorcolorram_w) - AM_RANGE(0x5000, 0x51ff) AM_RAM_WRITE(bnj_background_w) AM_SHARE("bnj_bgram") - AM_RANGE(0x5200, 0x53ff) AM_RAM - AM_RANGE(0x5400, 0x5400) AM_WRITE(bnj_scroll1_w) - AM_RANGE(0x5800, 0x5800) AM_WRITE(bnj_scroll2_w) - AM_RANGE(0x5c00, 0x5c0f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::disco_map) - AM_RANGE(0x0000, 0x04ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x2000, 0x7fff) AM_RAM_WRITE(deco_charram_w) AM_SHARE("deco_charram") - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x8800, 0x881f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") - AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") - AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1") - AM_RANGE(0x9a00, 0x9a00) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x9c00, 0x9c00) AM_READ_PORT("VBLANK") AM_WRITE(disco_video_control_w) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(btime_state::audio_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM AM_SHARE("audio_rambase") - AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x4000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x8000, 0x9fff) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa000, 0xbfff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xdfff) AM_WRITE(audio_nmi_enable_w) - AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btime_state::disco_audio_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xe001, 0xe001).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe002, 0xe002).portr("P1"); + map(0xe003, 0xe003).portr("P2"); + map(0xe004, 0xe004).portr("SYSTEM"); + map(0xfff9, 0xffff).rom(); +} + +void btime_state::tisland_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("rambase"); + map(0x0c00, 0x0c0f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x1000, 0x13ff).ram().share("videoram"); + map(0x1400, 0x17ff).ram().share("colorram"); + map(0x1800, 0x1bff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w)); + map(0x1c00, 0x1fff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w)); + map(0x4000, 0x4000).portr("P1").nopw(); + map(0x4001, 0x4001).portr("P2"); + map(0x4002, 0x4002).portr("SYSTEM").w(this, FUNC(btime_state::btime_video_control_w)); + map(0x4003, 0x4003).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x4004, 0x4004).portr("DSW2").w(this, FUNC(btime_state::bnj_scroll1_w)); + map(0x4005, 0x4005).w(this, FUNC(btime_state::bnj_scroll2_w)); + map(0x9000, 0xffff).rom(); +} + +void btime_state::zoar_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("rambase"); + map(0x8000, 0x83ff).writeonly().share("videoram"); + map(0x8400, 0x87ff).writeonly().share("colorram"); + map(0x8800, 0x8bff).w(this, FUNC(btime_state::btime_mirrorvideoram_w)); + map(0x8c00, 0x8fff).w(this, FUNC(btime_state::btime_mirrorcolorram_w)); + map(0x9000, 0x9000).w(this, FUNC(btime_state::zoar_video_control_w)); + map(0x9800, 0x9800).r(this, FUNC(btime_state::zoar_dsw1_read)); + map(0x9801, 0x9801).portr("DSW2"); + map(0x9802, 0x9802).portr("P1"); + map(0x9803, 0x9803).portr("P2"); + map(0x9800, 0x9803).writeonly().share("zoar_scrollram"); + map(0x9804, 0x9804).portr("SYSTEM").w(this, FUNC(btime_state::bnj_scroll2_w)); + map(0x9805, 0x9805).w(this, FUNC(btime_state::bnj_scroll1_w)); + map(0x9806, 0x9806).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd000, 0xffff).rom(); +} + +void btime_state::lnc_map(address_map &map) +{ + map(0x0000, 0x3bff).ram().share("rambase"); + map(0x3c00, 0x3fff).ram().w(this, FUNC(btime_state::lnc_videoram_w)).share("videoram"); + map(0x7800, 0x7bff).writeonly().share("colorram"); /* this is just here to initialize the pointer */ + map(0x7c00, 0x7fff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::lnc_mirrorvideoram_w)); + map(0x8000, 0x8000).portr("DSW1").nopw(); /* ??? */ + map(0x8001, 0x8001).portr("DSW2").w(this, FUNC(btime_state::bnj_video_control_w)); + map(0x8003, 0x8003).writeonly().share("lnc_charbank"); + map(0x9000, 0x9000).portr("P1").nopw(); /* IRQ ack??? */ + map(0x9001, 0x9001).portr("P2"); + map(0x9002, 0x9002).portr("SYSTEM").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xb000, 0xb1ff).ram(); + map(0xc000, 0xffff).rom(); +} + +void btime_state::mmonkey_map(address_map &map) +{ + map(0x0000, 0x3bff).ram().share("rambase"); + map(0x3c00, 0x3fff).ram().w(this, FUNC(btime_state::lnc_videoram_w)).share("videoram"); + map(0x7800, 0x7bff).writeonly().share("colorram"); /* this is just here to initialize the pointer */ + map(0x7c00, 0x7fff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::lnc_mirrorvideoram_w)); + map(0x8000, 0x8000).portr("DSW1"); + map(0x8001, 0x8001).portr("DSW2").w(this, FUNC(btime_state::bnj_video_control_w)); + map(0x8003, 0x8003).writeonly().share("lnc_charbank"); + map(0x9000, 0x9000).portr("P1").nopw(); /* IRQ ack??? */ + map(0x9001, 0x9001).portr("P2"); + map(0x9002, 0x9002).portr("SYSTEM").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xb000, 0xbfff).rw(this, FUNC(btime_state::mmonkey_protection_r), FUNC(btime_state::mmonkey_protection_w)); + map(0xc000, 0xffff).rom(); +} + +void btime_state::bnj_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("rambase"); + map(0x1000, 0x1000).portr("DSW1"); + map(0x1001, 0x1001).portr("DSW2").w(this, FUNC(btime_state::bnj_video_control_w)); + map(0x1002, 0x1002).portr("P1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1003, 0x1003).portr("P2"); + map(0x1004, 0x1004).portr("SYSTEM"); + map(0x4000, 0x43ff).ram().share("videoram"); + map(0x4400, 0x47ff).ram().share("colorram"); + map(0x4800, 0x4bff).rw(this, FUNC(btime_state::btime_mirrorvideoram_r), FUNC(btime_state::btime_mirrorvideoram_w)); + map(0x4c00, 0x4fff).rw(this, FUNC(btime_state::btime_mirrorcolorram_r), FUNC(btime_state::btime_mirrorcolorram_w)); + map(0x5000, 0x51ff).ram().w(this, FUNC(btime_state::bnj_background_w)).share("bnj_bgram"); + map(0x5200, 0x53ff).ram(); + map(0x5400, 0x5400).w(this, FUNC(btime_state::bnj_scroll1_w)); + map(0x5800, 0x5800).w(this, FUNC(btime_state::bnj_scroll2_w)); + map(0x5c00, 0x5c0f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xa000, 0xffff).rom(); +} + +void btime_state::disco_map(address_map &map) +{ + map(0x0000, 0x04ff).ram().share("rambase"); + map(0x2000, 0x7fff).ram().w(this, FUNC(btime_state::deco_charram_w)).share("deco_charram"); + map(0x8000, 0x83ff).ram().share("videoram"); + map(0x8400, 0x87ff).ram().share("colorram"); + map(0x8800, 0x881f).ram().share("spriteram"); + map(0x9000, 0x9000).portr("SYSTEM"); + map(0x9200, 0x9200).portr("P1"); + map(0x9400, 0x9400).portr("P2"); + map(0x9800, 0x9800).portr("DSW1"); + map(0x9a00, 0x9a00).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x9c00, 0x9c00).portr("VBLANK").w(this, FUNC(btime_state::disco_video_control_w)); + map(0xa000, 0xffff).rom(); +} + + + +void btime_state::audio_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram().share("audio_rambase"); + map(0x2000, 0x3fff).w("ay1", FUNC(ay8910_device::data_w)); + map(0x4000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x7fff).w("ay2", FUNC(ay8910_device::data_w)); + map(0x8000, 0x9fff).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa000, 0xbfff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc000, 0xdfff).w(this, FUNC(btime_state::audio_nmi_enable_w)); + map(0xe000, 0xefff).mirror(0x1000).rom(); +} + +void btime_state::disco_audio_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x4000, 0x4fff).w("ay1", FUNC(ay8910_device::data_w)); + map(0x5000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6fff).w("ay2", FUNC(ay8910_device::data_w)); + map(0x7000, 0x7fff).w("ay2", FUNC(ay8910_device::address_w)); + map(0x8000, 0x8fff).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0xf000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(btime_state::coin_inserted_irq_hi) diff --git a/src/mame/drivers/btoads.cpp b/src/mame/drivers/btoads.cpp index a6fb2a890ed..b19f3670ddc 100644 --- a/src/mame/drivers/btoads.cpp +++ b/src/mame/drivers/btoads.cpp @@ -166,33 +166,34 @@ WRITE8_MEMBER( btoads_state::bsmt2000_port_w ) * *************************************/ -ADDRESS_MAP_START(btoads_state::main_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM - AM_RANGE(0x20000000, 0x2000007f) AM_READ_PORT("P1") - AM_RANGE(0x20000080, 0x200000ff) AM_READ_PORT("P2") - AM_RANGE(0x20000100, 0x2000017f) AM_READ_PORT("P3") - AM_RANGE(0x20000180, 0x200001ff) AM_READ_PORT("UNK") - AM_RANGE(0x20000200, 0x2000027f) AM_READ_PORT("SPECIAL") - AM_RANGE(0x20000280, 0x200002ff) AM_READ_PORT("SW1") - AM_RANGE(0x20000000, 0x200000ff) AM_WRITEONLY AM_SHARE("sprite_scale") - AM_RANGE(0x20000100, 0x2000017f) AM_WRITEONLY AM_SHARE("sprite_control") - AM_RANGE(0x20000180, 0x200001ff) AM_WRITE(display_control_w) - AM_RANGE(0x20000200, 0x2000027f) AM_WRITE(scroll0_w) - AM_RANGE(0x20000280, 0x200002ff) AM_WRITE(scroll1_w) - AM_RANGE(0x20000300, 0x2000037f) AM_READWRITE(paletteram_r, paletteram_w) - AM_RANGE(0x20000380, 0x200003ff) AM_READWRITE(main_sound_r, main_sound_w) - AM_RANGE(0x20000400, 0x2000047f) AM_WRITE(misc_control_w) - AM_RANGE(0x40000000, 0x4000000f) AM_WRITENOP /* watchdog? */ - AM_RANGE(0x60000000, 0x6003ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa0000000, 0xa03fffff) AM_READWRITE(vram_fg_display_r, vram_fg_display_w) AM_SHARE("vram_fg0") - AM_RANGE(0xa4000000, 0xa43fffff) AM_READWRITE(vram_fg_draw_r, vram_fg_draw_w) AM_SHARE("vram_fg1") - AM_RANGE(0xa8000000, 0xa87fffff) AM_RAM AM_SHARE("vram_fg_data") - AM_RANGE(0xa8800000, 0xa8ffffff) AM_WRITENOP - AM_RANGE(0xb0000000, 0xb03fffff) AM_READWRITE(vram_bg0_r, vram_bg0_w) AM_SHARE("vram_bg0") - AM_RANGE(0xb4000000, 0xb43fffff) AM_READWRITE(vram_bg1_r, vram_bg1_w) AM_SHARE("vram_bg1") - AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("maincpu", tms34020_device, io_register_r, io_register_w) - AM_RANGE(0xfc000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void btoads_state::main_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram(); + map(0x20000000, 0x2000007f).portr("P1"); + map(0x20000080, 0x200000ff).portr("P2"); + map(0x20000100, 0x2000017f).portr("P3"); + map(0x20000180, 0x200001ff).portr("UNK"); + map(0x20000200, 0x2000027f).portr("SPECIAL"); + map(0x20000280, 0x200002ff).portr("SW1"); + map(0x20000000, 0x200000ff).writeonly().share("sprite_scale"); + map(0x20000100, 0x2000017f).writeonly().share("sprite_control"); + map(0x20000180, 0x200001ff).w(this, FUNC(btoads_state::display_control_w)); + map(0x20000200, 0x2000027f).w(this, FUNC(btoads_state::scroll0_w)); + map(0x20000280, 0x200002ff).w(this, FUNC(btoads_state::scroll1_w)); + map(0x20000300, 0x2000037f).rw(this, FUNC(btoads_state::paletteram_r), FUNC(btoads_state::paletteram_w)); + map(0x20000380, 0x200003ff).rw(this, FUNC(btoads_state::main_sound_r), FUNC(btoads_state::main_sound_w)); + map(0x20000400, 0x2000047f).w(this, FUNC(btoads_state::misc_control_w)); + map(0x40000000, 0x4000000f).nopw(); /* watchdog? */ + map(0x60000000, 0x6003ffff).ram().share("nvram"); + map(0xa0000000, 0xa03fffff).rw(this, FUNC(btoads_state::vram_fg_display_r), FUNC(btoads_state::vram_fg_display_w)).share("vram_fg0"); + map(0xa4000000, 0xa43fffff).rw(this, FUNC(btoads_state::vram_fg_draw_r), FUNC(btoads_state::vram_fg_draw_w)).share("vram_fg1"); + map(0xa8000000, 0xa87fffff).ram().share("vram_fg_data"); + map(0xa8800000, 0xa8ffffff).nopw(); + map(0xb0000000, 0xb03fffff).rw(this, FUNC(btoads_state::vram_bg0_r), FUNC(btoads_state::vram_bg0_w)).share("vram_bg0"); + map(0xb4000000, 0xb43fffff).rw(this, FUNC(btoads_state::vram_bg1_r), FUNC(btoads_state::vram_bg1_w)).share("vram_bg1"); + map(0xc0000000, 0xc00003ff).rw(m_maincpu, FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w)); + map(0xfc000000, 0xffffffff).rom().region("user1", 0); +} @@ -202,19 +203,21 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(btoads_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(btoads_state::sound_io_map) - AM_RANGE(0x0000, 0x7fff) AM_WRITE(bsmt2000_port_w) - AM_RANGE(0x8000, 0x8000) AM_READWRITE(sound_data_r, sound_data_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE(sound_int_state_w) - AM_RANGE(0x8004, 0x8004) AM_READ(sound_data_ready_r) - AM_RANGE(0x8005, 0x8005) AM_READ(sound_ready_to_send_r) - AM_RANGE(0x8006, 0x8006) AM_READ(bsmt_ready_r) -ADDRESS_MAP_END +void btoads_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).ram(); +} + +void btoads_state::sound_io_map(address_map &map) +{ + map(0x0000, 0x7fff).w(this, FUNC(btoads_state::bsmt2000_port_w)); + map(0x8000, 0x8000).rw(this, FUNC(btoads_state::sound_data_r), FUNC(btoads_state::sound_data_w)); + map(0x8002, 0x8002).w(this, FUNC(btoads_state::sound_int_state_w)); + map(0x8004, 0x8004).r(this, FUNC(btoads_state::sound_data_ready_r)); + map(0x8005, 0x8005).r(this, FUNC(btoads_state::sound_ready_to_send_r)); + map(0x8006, 0x8006).r(this, FUNC(btoads_state::bsmt_ready_r)); +} diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp index c564912141a..bf67d650bd3 100644 --- a/src/mame/drivers/bublbobl.cpp +++ b/src/mame/drivers/bublbobl.cpp @@ -292,30 +292,33 @@ TODO: * Address maps * *************************************/ -ADDRESS_MAP_START(bublbobl_state::common_maincpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::bublbobl_maincpu_map) - AM_IMPORT_FROM(common_maincpu_map) - AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x007c) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write) - AM_RANGE(0xfa01, 0xfa01) AM_MIRROR(0x007c) AM_READ(common_sound_semaphores_r) - AM_RANGE(0xfa03, 0xfa03) AM_MIRROR(0x007c) AM_WRITE(bublbobl_soundcpu_reset_w) - AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0x003f) AM_WRITE(bublbobl_nmitrigger_w) - AM_RANGE(0xfb40, 0xfb40) AM_MIRROR(0x003f) AM_WRITE(bublbobl_bankswitch_w) - AM_RANGE(0xfc00, 0xffff) AM_RAM AM_SHARE("mcu_sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::subcpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END +void bublbobl_state::common_maincpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdcff).ram().share("videoram"); + map(0xdd00, 0xdfff).ram().share("objectram"); + map(0xe000, 0xf7ff).ram().share("share1"); + map(0xf800, 0xf9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void bublbobl_state::bublbobl_maincpu_map(address_map &map) +{ + common_maincpu_map(map); + map(0xfa00, 0xfa00).mirror(0x007c).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write)); + map(0xfa01, 0xfa01).mirror(0x007c).r(this, FUNC(bublbobl_state::common_sound_semaphores_r)); + map(0xfa03, 0xfa03).mirror(0x007c).w(this, FUNC(bublbobl_state::bublbobl_soundcpu_reset_w)); + map(0xfa80, 0xfa80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xfb00, 0xfb00).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_nmitrigger_w)); + map(0xfb40, 0xfb40).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_bankswitch_w)); + map(0xfc00, 0xffff).ram().share("mcu_sharedram"); +} + +void bublbobl_state::subcpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xf7ff).ram().share("share1"); +} /* Sound cpu address map | | | @@ -343,92 +346,100 @@ Sound cpu semaphores are both active low: 74ls74@ic9 [1/2] 'sound_has_written', appears on d0 74ls74@ic10 [2/2] 'maincpu_has_written', appears on d1 */ -ADDRESS_MAP_START(bublbobl_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ym2", ym3526_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x0ffc) AM_DEVREAD("main_to_sound", generic_latch_8_device, read) AM_DEVWRITE("sound_to_main", generic_latch_8_device, write) - AM_RANGE(0xb001, 0xb001) AM_MIRROR(0x0ffc) AM_READ(common_sound_semaphores_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<0>) - AM_RANGE(0xb002, 0xb002) AM_MIRROR(0x0ffc) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>); - AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM? -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::mcu_map) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(bublbobl_mcu_ddr1_r, bublbobl_mcu_ddr1_w) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(bublbobl_mcu_ddr2_r, bublbobl_mcu_ddr2_w) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(bublbobl_mcu_port1_r, bublbobl_mcu_port1_w) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(bublbobl_mcu_port2_r, bublbobl_mcu_port2_w) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(bublbobl_mcu_ddr3_r, bublbobl_mcu_ddr3_w) - AM_RANGE(0x0005, 0x0005) AM_READWRITE(bublbobl_mcu_ddr4_r, bublbobl_mcu_ddr4_w) - AM_RANGE(0x0006, 0x0006) AM_READWRITE(bublbobl_mcu_port3_r, bublbobl_mcu_port3_w) - AM_RANGE(0x0007, 0x0007) AM_READWRITE(bublbobl_mcu_port4_r, bublbobl_mcu_port4_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::bootleg_map) - AM_IMPORT_FROM(common_maincpu_map) - AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x007c) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write) - AM_RANGE(0xfa01, 0xfa01) AM_MIRROR(0x007c) AM_READ(common_sound_semaphores_r) - AM_RANGE(0xfa03, 0xfa03) AM_MIRROR(0x007c) AM_WRITE(bublbobl_soundcpu_reset_w) - AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0x003f) AM_WRITE(bublbobl_nmitrigger_w) - AM_RANGE(0xfb40, 0xfb40) AM_MIRROR(0x003f) AM_WRITE(bublbobl_bankswitch_w) +void bublbobl_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).mirror(0x0ffe).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa001).mirror(0x0ffe).rw("ym2", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); + map(0xb000, 0xb000).mirror(0x0ffc).r(m_main_to_sound, FUNC(generic_latch_8_device::read)).w(m_sound_to_main, FUNC(generic_latch_8_device::write)); + map(0xb001, 0xb001).mirror(0x0ffc).r(this, FUNC(bublbobl_state::common_sound_semaphores_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<0>)); + map(0xb002, 0xb002).mirror(0x0ffc).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>)); + map(0xe000, 0xffff).rom(); // space for diagnostic ROM? +} + +void bublbobl_state::mcu_map(address_map &map) +{ + map(0x0000, 0x0000).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr1_r), FUNC(bublbobl_state::bublbobl_mcu_ddr1_w)); + map(0x0001, 0x0001).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr2_r), FUNC(bublbobl_state::bublbobl_mcu_ddr2_w)); + map(0x0002, 0x0002).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port1_r), FUNC(bublbobl_state::bublbobl_mcu_port1_w)); + map(0x0003, 0x0003).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port2_r), FUNC(bublbobl_state::bublbobl_mcu_port2_w)); + map(0x0004, 0x0004).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr3_r), FUNC(bublbobl_state::bublbobl_mcu_ddr3_w)); + map(0x0005, 0x0005).rw(this, FUNC(bublbobl_state::bublbobl_mcu_ddr4_r), FUNC(bublbobl_state::bublbobl_mcu_ddr4_w)); + map(0x0006, 0x0006).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port3_r), FUNC(bublbobl_state::bublbobl_mcu_port3_w)); + map(0x0007, 0x0007).rw(this, FUNC(bublbobl_state::bublbobl_mcu_port4_r), FUNC(bublbobl_state::bublbobl_mcu_port4_w)); + map(0x0040, 0x00ff).ram(); + map(0xf000, 0xffff).rom(); +} + +void bublbobl_state::bootleg_map(address_map &map) +{ + common_maincpu_map(map); + map(0xfa00, 0xfa00).mirror(0x007c).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write)); + map(0xfa01, 0xfa01).mirror(0x007c).r(this, FUNC(bublbobl_state::common_sound_semaphores_r)); + map(0xfa03, 0xfa03).mirror(0x007c).w(this, FUNC(bublbobl_state::bublbobl_soundcpu_reset_w)); + map(0xfa80, 0xfa80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xfb00, 0xfb00).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_nmitrigger_w)); + map(0xfb40, 0xfb40).mirror(0x003f).w(this, FUNC(bublbobl_state::bublbobl_bankswitch_w)); // above here is identical to non-bootleg - AM_RANGE(0xfc00, 0xfcff) AM_RAM - AM_RANGE(0xfd00, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xfe03) AM_READWRITE(boblbobl_ic43_a_r, boblbobl_ic43_a_w) - AM_RANGE(0xfe80, 0xfe83) AM_READWRITE(boblbobl_ic43_b_r, boblbobl_ic43_b_w) - AM_RANGE(0xff00, 0xff00) AM_READ_PORT("DSW0") - AM_RANGE(0xff01, 0xff01) AM_READ_PORT("DSW1") - AM_RANGE(0xff02, 0xff02) AM_READ_PORT("IN0") - AM_RANGE(0xff03, 0xff03) AM_READ_PORT("IN1") - AM_RANGE(0xff94, 0xff94) AM_WRITENOP // ??? - AM_RANGE(0xff98, 0xff98) AM_WRITENOP // ??? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bublbobl_state::tokio_map) - AM_IMPORT_FROM(common_maincpu_map) - AM_RANGE(0xfa00, 0xfa00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xfa03, 0xfa03) AM_READ_PORT("DSW0") - AM_RANGE(0xfa04, 0xfa04) AM_READ_PORT("DSW1") - AM_RANGE(0xfa05, 0xfa05) AM_READ_PORT("IN0") - AM_RANGE(0xfa06, 0xfa06) AM_READ_PORT("IN1") - AM_RANGE(0xfa07, 0xfa07) AM_READ_PORT("IN2") - AM_RANGE(0xfa80, 0xfa80) AM_WRITE(tokio_bankswitch_w) - AM_RANGE(0xfb00, 0xfb00) AM_WRITE(tokio_videoctrl_w) - AM_RANGE(0xfb80, 0xfb80) AM_WRITE(bublbobl_nmitrigger_w) - AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::tokio_map_mcu) - AM_IMPORT_FROM(tokio_map) - AM_RANGE(0xfe00, 0xfe00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::tokio_map_bootleg) - AM_IMPORT_FROM(tokio_map) - AM_RANGE(0xfe00, 0xfe00) AM_READ( tokiob_mcu_r ) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bublbobl_state::tokio_subcpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bublbobl_state::tokio_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_DEVREAD("main_to_sound", generic_latch_8_device, read) AM_DEVWRITE("sound_to_main", generic_latch_8_device, write) - AM_RANGE(0x9800, 0x9800) AM_READ(common_sound_semaphores_r) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>) - AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("soundnmi", input_merger_device, in_set<0>) - AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM? -ADDRESS_MAP_END + map(0xfc00, 0xfcff).ram(); + map(0xfd00, 0xfdff).ram(); + map(0xfe00, 0xfe03).rw(this, FUNC(bublbobl_state::boblbobl_ic43_a_r), FUNC(bublbobl_state::boblbobl_ic43_a_w)); + map(0xfe80, 0xfe83).rw(this, FUNC(bublbobl_state::boblbobl_ic43_b_r), FUNC(bublbobl_state::boblbobl_ic43_b_w)); + map(0xff00, 0xff00).portr("DSW0"); + map(0xff01, 0xff01).portr("DSW1"); + map(0xff02, 0xff02).portr("IN0"); + map(0xff03, 0xff03).portr("IN1"); + map(0xff94, 0xff94).nopw(); // ??? + map(0xff98, 0xff98).nopw(); // ??? +} + + +void bublbobl_state::tokio_map(address_map &map) +{ + common_maincpu_map(map); + map(0xfa00, 0xfa00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xfa03, 0xfa03).portr("DSW0"); + map(0xfa04, 0xfa04).portr("DSW1"); + map(0xfa05, 0xfa05).portr("IN0"); + map(0xfa06, 0xfa06).portr("IN1"); + map(0xfa07, 0xfa07).portr("IN2"); + map(0xfa80, 0xfa80).w(this, FUNC(bublbobl_state::tokio_bankswitch_w)); + map(0xfb00, 0xfb00).w(this, FUNC(bublbobl_state::tokio_videoctrl_w)); + map(0xfb80, 0xfb80).w(this, FUNC(bublbobl_state::bublbobl_nmitrigger_w)); + map(0xfc00, 0xfc00).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write)); +} + +void bublbobl_state::tokio_map_mcu(address_map &map) +{ + tokio_map(map); + map(0xfe00, 0xfe00).rw("bmcu", FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); +} + +void bublbobl_state::tokio_map_bootleg(address_map &map) +{ + tokio_map(map); + map(0xfe00, 0xfe00).r(this, FUNC(bublbobl_state::tokiob_mcu_r)); +} + + +void bublbobl_state::tokio_subcpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x97ff).ram().share("share1"); +} + +void bublbobl_state::tokio_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9000).r(m_main_to_sound, FUNC(generic_latch_8_device::read)).w(m_sound_to_main, FUNC(generic_latch_8_device::write)); + map(0x9800, 0x9800).r(this, FUNC(bublbobl_state::common_sound_semaphores_r)); + map(0xa000, 0xa000).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>)); + map(0xa800, 0xa800).w(m_soundnmi, FUNC(input_merger_device::in_set<0>)); + map(0xb000, 0xb001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xe000, 0xffff).rom(); // space for diagnostic ROM? +} /************************************* diff --git a/src/mame/drivers/buggychl.cpp b/src/mame/drivers/buggychl.cpp index 373c56ee42e..94140f0e0a6 100644 --- a/src/mame/drivers/buggychl.cpp +++ b/src/mame/drivers/buggychl.cpp @@ -194,63 +194,65 @@ READ8_MEMBER(buggychl_state::sound_status_sound_r) 1 1 1 0 ? ? ? ? ? ? ? ? ? ? ? ? ? (unknown, cut off on schematic) 1 1 1 1 ? ? ? ? ? ? ? ? ? ? ? ? ? (unknown, cut off on schematic) */ -ADDRESS_MAP_START(buggychl_state::buggychl_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM /* A22-04 (23) */ - AM_RANGE(0x4000, 0x7fff) AM_ROM /* A22-05 (22) */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* 6116 SRAM (36) */ - AM_RANGE(0x8800, 0x8fff) AM_RAM /* 6116 SRAM (35) */ - AM_RANGE(0x9000, 0x9fff) AM_WRITE(buggychl_sprite_lookup_w) - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") AM_WRITE(buggychl_chargen_w) AM_SHARE("charram") - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd000) AM_WRITENOP // ??? - AM_RANGE(0xd100, 0xd100) AM_MIRROR(0x00ff) AM_WRITE(buggychl_ctrl_w) - AM_RANGE(0xd200, 0xd200) AM_MIRROR(0x00ff) AM_WRITE(bankswitch_w) - AM_RANGE(0xd300, 0xd300) AM_MIRROR(0x00f8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) +void buggychl_state::buggychl_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); /* A22-04 (23) */ + map(0x4000, 0x7fff).rom(); /* A22-05 (22) */ + map(0x8000, 0x87ff).ram(); /* 6116 SRAM (36) */ + map(0x8800, 0x8fff).ram(); /* 6116 SRAM (35) */ + map(0x9000, 0x9fff).w(this, FUNC(buggychl_state::buggychl_sprite_lookup_w)); + map(0xa000, 0xbfff).bankr("bank1").w(this, FUNC(buggychl_state::buggychl_chargen_w)).share("charram"); + map(0xc800, 0xcfff).ram().share("videoram"); + map(0xd000, 0xd000).nopw(); // ??? + map(0xd100, 0xd100).mirror(0x00ff).w(this, FUNC(buggychl_state::buggychl_ctrl_w)); + map(0xd200, 0xd200).mirror(0x00ff).w(this, FUNC(buggychl_state::bankswitch_w)); + map(0xd300, 0xd300).mirror(0x00f8).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // d301 = flp stuff, unused? // d302 = mcu reset latched d0 - AM_RANGE(0xd303, 0xd303) AM_MIRROR(0x00f8) AM_WRITE(buggychl_sprite_lookup_bank_w) - AM_RANGE(0xd304, 0xd307) AM_WRITENOP // d304-d307 is SCCON, which seems to be for a bezel mounted 7seg score/time display like Grand Champion has - AM_RANGE(0xd400, 0xd400) AM_MIRROR(0x00fc) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0xd401, 0xd401) AM_MIRROR(0x00fc) AM_READ(mcu_status_r) - AM_RANGE(0xd500, 0xd57f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd600, 0xd600) AM_MIRROR(0x00e4) AM_READ_PORT("DSW1") - AM_RANGE(0xd601, 0xd601) AM_MIRROR(0x00e4) AM_READ_PORT("DSW2") - AM_RANGE(0xd602, 0xd602) AM_MIRROR(0x00e4) AM_READ_PORT("DSW3") - AM_RANGE(0xd603, 0xd603) AM_MIRROR(0x00e4) AM_READ_PORT("IN0") /* player inputs */ - AM_RANGE(0xd608, 0xd608) AM_MIRROR(0x00e4) AM_READ_PORT("WHEEL") - AM_RANGE(0xd609, 0xd609) AM_MIRROR(0x00e4) AM_READ_PORT("IN1") /* coin + accelerator */ + map(0xd303, 0xd303).mirror(0x00f8).w(this, FUNC(buggychl_state::buggychl_sprite_lookup_bank_w)); + map(0xd304, 0xd307).nopw(); // d304-d307 is SCCON, which seems to be for a bezel mounted 7seg score/time display like Grand Champion has + map(0xd400, 0xd400).mirror(0x00fc).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0xd401, 0xd401).mirror(0x00fc).r(this, FUNC(buggychl_state::mcu_status_r)); + map(0xd500, 0xd57f).writeonly().share("spriteram"); + map(0xd600, 0xd600).mirror(0x00e4).portr("DSW1"); + map(0xd601, 0xd601).mirror(0x00e4).portr("DSW2"); + map(0xd602, 0xd602).mirror(0x00e4).portr("DSW3"); + map(0xd603, 0xd603).mirror(0x00e4).portr("IN0"); /* player inputs */ + map(0xd608, 0xd608).mirror(0x00e4).portr("WHEEL"); + map(0xd609, 0xd609).mirror(0x00e4).portr("IN1"); /* coin + accelerator */ // AM_RANGE(0xd60a, 0xd60a) AM_MIRROR(0x00e4) // other inputs, not used? // AM_RANGE(0xd60b, 0xd60b) AM_MIRROR(0x00e4) // other inputs, not used? - AM_RANGE(0xd610, 0xd610) AM_MIRROR(0x00e4) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd611, 0xd611) AM_MIRROR(0x00e4) AM_READ(sound_status_main_r) + map(0xd610, 0xd610).mirror(0x00e4).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd611, 0xd611).mirror(0x00e4).r(this, FUNC(buggychl_state::sound_status_main_r)); // AM_RANGE(0xd613, 0xd613) AM_MIRROR(0x00e4) AM_WRITE(sound_reset_w) - AM_RANGE(0xd618, 0xd618) AM_MIRROR(0x00e7) AM_WRITENOP /* accelerator clear; TODO: should we emulate the proper quadrature counter here? */ - AM_RANGE(0xd700, 0xd7ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xd820, 0xd83f) AM_RAM // TODO - AM_RANGE(0xd840, 0xd85f) AM_WRITEONLY AM_SHARE("scrollv") - AM_RANGE(0xdb00, 0xdbff) AM_WRITEONLY AM_SHARE("scrollh") - AM_RANGE(0xdc04, 0xdc04) AM_WRITEONLY /* should be fg scroll */ - AM_RANGE(0xdc06, 0xdc06) AM_WRITE(buggychl_bg_scrollx_w) -ADDRESS_MAP_END + map(0xd618, 0xd618).mirror(0x00e7).nopw(); /* accelerator clear; TODO: should we emulate the proper quadrature counter here? */ + map(0xd700, 0xd7ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd820, 0xd83f).ram(); // TODO + map(0xd840, 0xd85f).writeonly().share("scrollv"); + map(0xdb00, 0xdbff).writeonly().share("scrollh"); + map(0xdc04, 0xdc04).writeonly(); /* should be fg scroll */ + map(0xdc06, 0xdc06).w(this, FUNC(buggychl_state::buggychl_bg_scrollx_w)); +} /* The schematics for buggy challenge has the wrong sound board schematic attached to it. (The schematic is for an unknown taito game, possibly never released.) The final buggy challenge sound board is more similar to Fairyland Story sound hardware, except it has two YM2149 chips instead of one, and much less ROM space. */ -ADDRESS_MAP_START(buggychl_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4801) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x4802, 0x4803) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x4810, 0x481d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0x4820, 0x4820) AM_WRITE(ta7630_volbal_msm_w) /* VOL/BAL for the 7630 on the MSM5232 output */ - AM_RANGE(0x4830, 0x4830) AM_RAM /* TRBL/BASS for the 7630 on the MSM5232 output */ - AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x5001, 0x5001) AM_READ(sound_status_sound_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>) - AM_RANGE(0x5002, 0x5002) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>) - AM_RANGE(0x5003, 0x5003) AM_WRITE(sound_enable_w) // unclear what this actually controls - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */ -ADDRESS_MAP_END +void buggychl_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4801).w(m_ay1, FUNC(ay8910_device::address_data_w)); + map(0x4802, 0x4803).w(m_ay2, FUNC(ay8910_device::address_data_w)); + map(0x4810, 0x481d).w(m_msm, FUNC(msm5232_device::write)); + map(0x4820, 0x4820).w(this, FUNC(buggychl_state::ta7630_volbal_msm_w)); /* VOL/BAL for the 7630 on the MSM5232 output */ + map(0x4830, 0x4830).ram(); /* TRBL/BASS for the 7630 on the MSM5232 output */ + map(0x5000, 0x5000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0x5001, 0x5001).r(this, FUNC(buggychl_state::sound_status_sound_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<1>)); + map(0x5002, 0x5002).w(m_soundnmi, FUNC(input_merger_device::in_clear<1>)); + map(0x5003, 0x5003).w(this, FUNC(buggychl_state::sound_enable_w)); // unclear what this actually controls + map(0xe000, 0xefff).rom(); /* space for diagnostics ROM */ +} /******************************************************************************/ diff --git a/src/mame/drivers/bullet.cpp b/src/mame/drivers/bullet.cpp index 938c7b4759d..62f0b8d91b9 100644 --- a/src/mame/drivers/bullet.cpp +++ b/src/mame/drivers/bullet.cpp @@ -607,58 +607,62 @@ READ8_MEMBER( bulletf_state::hwsts_r ) // ADDRESS_MAP( bullet_mem ) //------------------------------------------------- -ADDRESS_MAP_START(bullet_state::bullet_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w) -ADDRESS_MAP_END +void bullet_state::bullet_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(bullet_state::mreq_r), FUNC(bullet_state::mreq_w)); +} //------------------------------------------------- // ADDRESS_MAP( bullet_io ) //------------------------------------------------- -ADDRESS_MAP_START(bullet_state::bullet_io) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x03) AM_READWRITE(win_r, wstrobe_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write) - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write) - AM_RANGE(0x15, 0x15) AM_READWRITE(brom_r, brom_w) - AM_RANGE(0x16, 0x16) AM_WRITE(exdsk_w) - AM_RANGE(0x17, 0x17) AM_WRITE(exdma_w) - AM_RANGE(0x18, 0x18) AM_WRITE(hdcon_w) - AM_RANGE(0x19, 0x19) AM_READ(info_r) - AM_RANGE(0x1a, 0x1a) AM_WRITE(segst_w) -ADDRESS_MAP_END +void bullet_state::bullet_io(address_map &map) +{ + map.global_mask(0x1f); + map(0x00, 0x03).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x04, 0x07).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0c).mirror(0x03).rw(this, FUNC(bullet_state::win_r), FUNC(bullet_state::wstrobe_w)); + map(0x10, 0x13).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write)); + map(0x14, 0x14).rw(m_dmac, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x15, 0x15).rw(this, FUNC(bullet_state::brom_r), FUNC(bullet_state::brom_w)); + map(0x16, 0x16).w(this, FUNC(bullet_state::exdsk_w)); + map(0x17, 0x17).w(this, FUNC(bullet_state::exdma_w)); + map(0x18, 0x18).w(this, FUNC(bullet_state::hdcon_w)); + map(0x19, 0x19).r(this, FUNC(bullet_state::info_r)); + map(0x1a, 0x1a).w(this, FUNC(bullet_state::segst_w)); +} //------------------------------------------------- // ADDRESS_MAP( bulletf_mem ) //------------------------------------------------- -ADDRESS_MAP_START(bulletf_state::bulletf_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w) -ADDRESS_MAP_END +void bulletf_state::bulletf_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(bulletf_state::mreq_r), FUNC(bulletf_state::mreq_w)); +} //------------------------------------------------- // ADDRESS_MAP( bulletf_io ) //------------------------------------------------- -ADDRESS_MAP_START(bulletf_state::bulletf_io) - ADDRESS_MAP_GLOBAL_MASK(0x3f) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write) - AM_RANGE(0x14, 0x14) AM_WRITE(xdma0_w) - AM_RANGE(0x16, 0x16) AM_WRITE(xfdc_w) - AM_RANGE(0x17, 0x17) AM_WRITE(mbank_w) - AM_RANGE(0x19, 0x19) AM_READWRITE(scsi_r, scsi_w) - AM_RANGE(0x1a, 0x1a) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write) - AM_RANGE(0x1b, 0x1b) AM_READ(hwsts_r) -ADDRESS_MAP_END +void bulletf_state::bulletf_io(address_map &map) +{ + map.global_mask(0x3f); + map(0x00, 0x03).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x04, 0x07).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x13).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write)); + map(0x14, 0x14).w(this, FUNC(bulletf_state::xdma0_w)); + map(0x16, 0x16).w(this, FUNC(bulletf_state::xfdc_w)); + map(0x17, 0x17).w(this, FUNC(bulletf_state::mbank_w)); + map(0x19, 0x19).rw(this, FUNC(bulletf_state::scsi_r), FUNC(bulletf_state::scsi_w)); + map(0x1a, 0x1a).rw(m_dmac, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x1b, 0x1b).r(this, FUNC(bulletf_state::hwsts_r)); +} diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp index ae6cfa4cf86..8c9146a93f9 100644 --- a/src/mame/drivers/busicom.cpp +++ b/src/mame/drivers/busicom.cpp @@ -99,32 +99,37 @@ WRITE8_MEMBER(busicom_state::printer_ctrl_w) { } -ADDRESS_MAP_START(busicom_state::busicom_rom) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x04FF) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07F) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_stat) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x01F) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_rp) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_WRITE(shifter_w) // ROM0 I/O - AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x0700) AM_READWRITE(keyboard_r,printer_ctrl_w) // ROM1 I/O - AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x0700) AM_READ(printer_r) // ROM2 I/O -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_mp) - AM_RANGE(0x00, 0x00) AM_WRITE(printer_w) // RAM0 output - AM_RANGE(0x01, 0x01) AM_WRITE(status_w) // RAM1 output -ADDRESS_MAP_END +void busicom_state::busicom_rom(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x04FF).rom().region("maincpu", 0); +} + +void busicom_state::busicom_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07F).ram(); +} + +void busicom_state::busicom_stat(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x01F).ram(); +} + +void busicom_state::busicom_rp(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x000f).mirror(0x0700).w(this, FUNC(busicom_state::shifter_w)); // ROM0 I/O + map(0x0010, 0x001f).mirror(0x0700).rw(this, FUNC(busicom_state::keyboard_r), FUNC(busicom_state::printer_ctrl_w)); // ROM1 I/O + map(0x0020, 0x002f).mirror(0x0700).r(this, FUNC(busicom_state::printer_r)); // ROM2 I/O +} + +void busicom_state::busicom_mp(address_map &map) +{ + map(0x00, 0x00).w(this, FUNC(busicom_state::printer_w)); // RAM0 output + map(0x01, 0x01).w(this, FUNC(busicom_state::status_w)); // RAM1 output +} /* Input ports */ static INPUT_PORTS_START( busicom ) diff --git a/src/mame/drivers/buster.cpp b/src/mame/drivers/buster.cpp index 1d3bbbc2bc3..85a524136ba 100644 --- a/src/mame/drivers/buster.cpp +++ b/src/mame/drivers/buster.cpp @@ -79,25 +79,26 @@ WRITE8_MEMBER(buster_state::coin_output_w) // bit 7 enabled on spin } -ADDRESS_MAP_START(buster_state::mainmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM// AM_SHARE("rom") - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("wram") - AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x7c00, 0x7cff) AM_RAM // i/o, protected/exotic chip??? - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN0") - AM_RANGE(0x7c82, 0x7c82) AM_READ_PORT("IN1") - AM_RANGE(0x7c84, 0x7c84) AM_READ_PORT("IN2") - AM_RANGE(0x7c86, 0x7c86) AM_READ_PORT("IN3") - AM_RANGE(0x7c88, 0x7c88) AM_READ_PORT("IN4") - AM_RANGE(0x7c8a, 0x7c8a) AM_READ_PORT("IN5") - AM_RANGE(0x7c8c, 0x7c8c) AM_READ_PORT("IN6") - AM_RANGE(0x7c8e, 0x7c8e) AM_READ_PORT("IN7") - AM_RANGE(0x7cb0, 0x7cb7) AM_WRITE(coin_output_w) - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("wram") // ??? - AM_RANGE(0xa000, 0xa0ff) AM_RAM // nvram? -ADDRESS_MAP_END +void buster_state::mainmap(address_map &map) +{ + map(0x0000, 0x3fff).rom();// AM_SHARE("rom") + map(0x4000, 0x47ff).ram().share("wram"); + map(0x5000, 0x5fff).ram().share("vram"); + map(0x6000, 0x6000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x6001, 0x6001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x7c00, 0x7cff).ram(); // i/o, protected/exotic chip??? + map(0x7c80, 0x7c80).portr("IN0"); + map(0x7c82, 0x7c82).portr("IN1"); + map(0x7c84, 0x7c84).portr("IN2"); + map(0x7c86, 0x7c86).portr("IN3"); + map(0x7c88, 0x7c88).portr("IN4"); + map(0x7c8a, 0x7c8a).portr("IN5"); + map(0x7c8c, 0x7c8c).portr("IN6"); + map(0x7c8e, 0x7c8e).portr("IN7"); + map(0x7cb0, 0x7cb7).w(this, FUNC(buster_state::coin_output_w)); + map(0x8800, 0x8fff).ram().share("wram"); // ??? + map(0xa000, 0xa0ff).ram(); // nvram? +} diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp index ac1ff5686f0..02a3b9b00b8 100644 --- a/src/mame/drivers/bw12.cpp +++ b/src/mame/drivers/bw12.cpp @@ -168,23 +168,25 @@ READ8_MEMBER( bw12_state::ls259_r ) /* Memory Maps */ -ADDRESS_MAP_START(bw12_state::bw12_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1") - AM_RANGE(0x8000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(bw12_state::bw12_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_READWRITE(ls259_r, ls259_w) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) - AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w) - AM_RANGE(0x20, 0x21) AM_MIRROR(0x0e) AM_DEVICE(UPD765_TAG, upd765a_device, map) - AM_RANGE(0x30, 0x33) AM_MIRROR(0x0c) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write) - AM_RANGE(0x40, 0x43) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x60, 0x63) AM_MIRROR(0x0c) AM_DEVREADWRITE(PIT8253_TAG, pit8253_device, read, write) -ADDRESS_MAP_END +void bw12_state::bw12_mem(address_map &map) +{ + map(0x0000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("video_ram"); +} + +void bw12_state::bw12_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).rw(this, FUNC(bw12_state::ls259_r), FUNC(bw12_state::ls259_w)); + map(0x10, 0x10).mirror(0x0e).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x11, 0x11).mirror(0x0e).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x20, 0x21).mirror(0x0e).m(m_fdc, FUNC(upd765a_device::map)); + map(0x30, 0x33).mirror(0x0c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x40, 0x43).mirror(0x0c).rw(m_sio, FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w)); + map(0x50, 0x50).mirror(0x0f).w("dac", FUNC(dac_byte_interface::write)); + map(0x60, 0x63).mirror(0x0c).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp index 67366d42591..2ca8bb637b0 100644 --- a/src/mame/drivers/bw2.cpp +++ b/src/mame/drivers/bw2.cpp @@ -202,39 +202,42 @@ WRITE8_MEMBER( bw2_state::write ) // ADDRESS_MAP( bw2_mem ) //------------------------------------------------- -ADDRESS_MAP_START(bw2_state::bw2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void bw2_state::bw2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(bw2_state::read), FUNC(bw2_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( bw2_io ) //------------------------------------------------- -ADDRESS_MAP_START(bw2_state::bw2_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write) - AM_RANGE(0x20, 0x21) AM_DEVICE(MSM6255_TAG, msm6255_device, map) - AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, slot_r, slot_w) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x41, 0x41) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x50, 0x50) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(WD2797_TAG, wd2797_device, read, write) - AM_RANGE(0x70, 0x7f) AM_DEVREADWRITE(BW2_EXPANSION_SLOT_TAG, bw2_expansion_slot_device, modsel_r, modsel_w) -ADDRESS_MAP_END +void bw2_state::bw2_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x13).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x20, 0x21).m(m_lcdc, FUNC(msm6255_device::map)); + map(0x30, 0x3f).rw(m_exp, FUNC(bw2_expansion_slot_device::slot_r), FUNC(bw2_expansion_slot_device::slot_w)); + map(0x40, 0x40).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x41, 0x41).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x50, 0x50).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x60, 0x63).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)); + map(0x70, 0x7f).rw(m_exp, FUNC(bw2_expansion_slot_device::modsel_r), FUNC(bw2_expansion_slot_device::modsel_w)); +} //------------------------------------------------- // ADDRESS_MAP( lcdc_map ) //------------------------------------------------- -ADDRESS_MAP_START(bw2_state::lcdc_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void bw2_state::lcdc_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x3fff).ram().share("videoram"); +} diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp index bdae3bcabba..783972ebef7 100644 --- a/src/mame/drivers/bwidow.cpp +++ b/src/mame/drivers/bwidow.cpp @@ -375,65 +375,68 @@ WRITE8_MEMBER(bwidow_state::irq_ack_w) * *************************************/ -ADDRESS_MAP_START(bwidow_state::bwidow_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x2800, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x6800, 0x6fff) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x7800, 0x7800) AM_READ_PORT("IN0") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN3") - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("IN4") - AM_RANGE(0x8800, 0x8800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */ - AM_RANGE(0x8840, 0x8840) AM_DEVWRITE("avg", avg_device, go_w) - AM_RANGE(0x8880, 0x8880) AM_DEVWRITE("avg", avg_device, reset_w) - AM_RANGE(0x88c0, 0x88c0) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x8900, 0x8900) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x8940, 0x897f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x8980, 0x89ed) AM_WRITENOP /* watchdog clear */ - AM_RANGE(0x9000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bwidow_state::bwidowp_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x0810, 0x081f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_READ(bwidowp_in_r) - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0") - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("avg", avg_device, go_w) - AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("avg", avg_device, reset_w) - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3800, 0x3800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */ - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000) - AM_RANGE(0x4800, 0x6fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x8000, 0x803f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x9000, 0x9000) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x9800, 0x9800) AM_WRITENOP /* ? written once at startup */ - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bwidow_state::spacduel_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") - AM_RANGE(0x0900, 0x0907) AM_READ(spacduel_IN3_r) /* IN1 */ - AM_RANGE(0x0905, 0x0906) AM_WRITENOP /* ignore? */ - AM_RANGE(0x0a00, 0x0a00) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(spacduel_coin_counter_w) /* coin out */ - AM_RANGE(0x0c80, 0x0c80) AM_DEVWRITE("avg", avg_device, go_w) - AM_RANGE(0x0d00, 0x0d00) AM_WRITENOP /* watchdog clear */ - AM_RANGE(0x0d80, 0x0d80) AM_DEVWRITE("avg", avg_device, reset_w) - AM_RANGE(0x0e00, 0x0e00) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x0e80, 0x0e80) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x0f00, 0x0f3f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x1000, 0x10ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x1400, 0x14ff) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x2800, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void bwidow_state::bwidow_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x2800, 0x5fff).rom(); + map(0x6000, 0x67ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x6800, 0x6fff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x7000, 0x7000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x7800, 0x7800).portr("IN0"); + map(0x8000, 0x8000).portr("IN3"); + map(0x8800, 0x8800).portr("IN4"); + map(0x8800, 0x8800).w(this, FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */ + map(0x8840, 0x8840).w("avg", FUNC(avg_device::go_w)); + map(0x8880, 0x8880).w("avg", FUNC(avg_device::reset_w)); + map(0x88c0, 0x88c0).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ + map(0x8900, 0x8900).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x8940, 0x897f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x8980, 0x89ed).nopw(); /* watchdog clear */ + map(0x9000, 0xffff).rom(); +} + +void bwidow_state::bwidowp_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x080f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x0810, 0x081f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1000, 0x1000).r(this, FUNC(bwidow_state::bwidowp_in_r)); + map(0x1800, 0x1800).portr("IN0"); + map(0x2000, 0x2000).w("avg", FUNC(avg_device::go_w)); + map(0x2800, 0x2800).w("avg", FUNC(avg_device::reset_w)); + map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3800, 0x3800).w(this, FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */ + map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000); + map(0x4800, 0x6fff).rom(); + map(0x6000, 0x6000).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ + map(0x8000, 0x803f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x8800, 0x8800).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x9000, 0x9000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x9800, 0x9800).nopw(); /* ? written once at startup */ + map(0xa000, 0xffff).rom(); +} + +void bwidow_state::spacduel_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0800, 0x0800).portr("IN0"); + map(0x0900, 0x0907).r(this, FUNC(bwidow_state::spacduel_IN3_r)); /* IN1 */ + map(0x0905, 0x0906).nopw(); /* ignore? */ + map(0x0a00, 0x0a00).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x0c00, 0x0c00).w(this, FUNC(bwidow_state::spacduel_coin_counter_w)); /* coin out */ + map(0x0c80, 0x0c80).w("avg", FUNC(avg_device::go_w)); + map(0x0d00, 0x0d00).nopw(); /* watchdog clear */ + map(0x0d80, 0x0d80).w("avg", FUNC(avg_device::reset_w)); + map(0x0e00, 0x0e00).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ + map(0x0e80, 0x0e80).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x0f00, 0x0f3f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x1000, 0x10ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1400, 0x14ff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x2800, 0x3fff).rom(); + map(0x4000, 0xffff).rom(); +} diff --git a/src/mame/drivers/bwing.cpp b/src/mame/drivers/bwing.cpp index 2940490d487..519dd648ec8 100644 --- a/src/mame/drivers/bwing.cpp +++ b/src/mame/drivers/bwing.cpp @@ -121,58 +121,63 @@ WRITE8_MEMBER(bwing_state::bwp2_ctrl_w) // CPU Memory Maps // Main CPU -ADDRESS_MAP_START(bwing_state::bwp1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x0800, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x19ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1a00, 0x1aff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x1b00, 0x1b00) AM_READ_PORT("DSW0") - AM_RANGE(0x1b01, 0x1b01) AM_READ_PORT("DSW1") - AM_RANGE(0x1b02, 0x1b02) AM_READ_PORT("IN0") - AM_RANGE(0x1b03, 0x1b03) AM_READ_PORT("IN1") - AM_RANGE(0x1b04, 0x1b04) AM_READ_PORT("IN2") - AM_RANGE(0x1b00, 0x1b07) AM_WRITE(scrollreg_w) - AM_RANGE(0x1c00, 0x1c07) AM_RAM_WRITE(bwp1_ctrl_w) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE("vrambank", address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xffff) AM_ROM // "B-Wings US" writes to 9631-9632(debug?) -ADDRESS_MAP_END +void bwing_state::bwp1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("sharedram"); + map(0x0800, 0x0fff).ram(); + map(0x1000, 0x13ff).ram().w(this, FUNC(bwing_state::videoram_w)).share("videoram"); + map(0x1400, 0x17ff).ram(); + map(0x1800, 0x19ff).ram().share("spriteram"); + map(0x1a00, 0x1aff).ram().w(this, FUNC(bwing_state::paletteram_w)).share("paletteram"); + map(0x1b00, 0x1b00).portr("DSW0"); + map(0x1b01, 0x1b01).portr("DSW1"); + map(0x1b02, 0x1b02).portr("IN0"); + map(0x1b03, 0x1b03).portr("IN1"); + map(0x1b04, 0x1b04).portr("IN2"); + map(0x1b00, 0x1b07).w(this, FUNC(bwing_state::scrollreg_w)); + map(0x1c00, 0x1c07).ram().w(this, FUNC(bwing_state::bwp1_ctrl_w)); + map(0x2000, 0x3fff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xffff).rom(); // "B-Wings US" writes to 9631-9632(debug?) +} // Banked video RAM -ADDRESS_MAP_START(bwing_state::bank_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(fgscrollram_w) AM_SHARE("fgscrollram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(bgscrollram_w) AM_SHARE("bgscrollram") - AM_RANGE(0x2000, 0x7fff) AM_RAM_WRITE(gfxram_w) AM_SHARE("gfxram") -ADDRESS_MAP_END +void bwing_state::bank_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().w(this, FUNC(bwing_state::fgscrollram_w)).share("fgscrollram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(bwing_state::bgscrollram_w)).share("bgscrollram"); + map(0x2000, 0x7fff).ram().w(this, FUNC(bwing_state::gfxram_w)).share("gfxram"); +} // Sub CPU -ADDRESS_MAP_START(bwing_state::bwp2_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x0800, 0x0fff) AM_RAM - AM_RANGE(0x1800, 0x1803) AM_WRITE(bwp2_ctrl_w) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END +void bwing_state::bwp2_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("sharedram"); + map(0x0800, 0x0fff).ram(); + map(0x1800, 0x1803).w(this, FUNC(bwing_state::bwp2_ctrl_w)); + map(0xa000, 0xffff).rom(); +} // Sound CPU -ADDRESS_MAP_START(bwing_state::bwp3_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x0200) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x1000, 0x1000) AM_WRITE(bwp3_nmiack_w) - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8912_device, data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8912_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd000) AM_WRITE(bwp3_nmimask_w) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(bwing_state::bwp3_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("VBLANK") AM_WRITE(bwp3_u8F_w) -ADDRESS_MAP_END +void bwing_state::bwp3_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x0200).w("dac", FUNC(dac_byte_interface::write)); + map(0x1000, 0x1000).w(this, FUNC(bwing_state::bwp3_nmiack_w)); + map(0x2000, 0x2000).w("ay1", FUNC(ay8912_device::data_w)); + map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w)); + map(0x6000, 0x6000).w("ay2", FUNC(ay8912_device::data_w)); + map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd000).w(this, FUNC(bwing_state::bwp3_nmimask_w)); + map(0xe000, 0xffff).rom().region("audiocpu", 0); +} + + +void bwing_state::bwp3_io_map(address_map &map) +{ + map(0x00, 0x00).portr("VBLANK").w(this, FUNC(bwing_state::bwp3_u8F_w)); +} //**************************************************************************** // I/O Port Maps diff --git a/src/mame/drivers/by17.cpp b/src/mame/drivers/by17.cpp index eed081329d7..18622d01c0a 100644 --- a/src/mame/drivers/by17.cpp +++ b/src/mame/drivers/by17.cpp @@ -125,14 +125,15 @@ private: }; -ADDRESS_MAP_START(by17_state::by17_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) - AM_RANGE(0x0200, 0x02ff) AM_RAM AM_READWRITE(nibble_nvram_r, nibble_nvram_w) AM_SHARE("nvram") - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0 ) -ADDRESS_MAP_END +void by17_state::by17_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x007f).ram(); + map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0200, 0x02ff).ram().rw(this, FUNC(by17_state::nibble_nvram_r), FUNC(by17_state::nibble_nvram_w)).share("nvram"); + map(0x1000, 0x1fff).rom().region("roms", 0); +} static INPUT_PORTS_START( by17 ) diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp index c3b16085963..9c18e6ba952 100644 --- a/src/mame/drivers/by35.cpp +++ b/src/mame/drivers/by35.cpp @@ -241,22 +241,24 @@ protected: }; -ADDRESS_MAP_START(by35_state::by35_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 is not connected - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) - AM_RANGE(0x0200, 0x02ff) AM_RAM AM_READWRITE(nibble_nvram_r, nibble_nvram_w) AM_SHARE("nvram") - AM_RANGE(0x1000, 0x7fff) AM_ROM // AM_REGION("roms", 0 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(by35_state::nuovo_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") +void by35_state::by35_map(address_map &map) +{ + map.global_mask(0x7fff); // A15 is not connected + map(0x0000, 0x007f).ram(); + map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0200, 0x02ff).ram().rw(this, FUNC(by35_state::nibble_nvram_r), FUNC(by35_state::nibble_nvram_w)).share("nvram"); + map(0x1000, 0x7fff).rom(); // AM_REGION("roms", 0 ) +} + +void by35_state::nuovo_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); // AM_RANGE(0x0000, 0x007f) AM_RAM // Schematics infer that the M6802 internal RAM is disabled. - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) - AM_RANGE(0x1000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0xffff).rom(); +} diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp index 48f8d3debe0..7f86f43adde 100644 --- a/src/mame/drivers/by6803.cpp +++ b/src/mame/drivers/by6803.cpp @@ -90,17 +90,19 @@ private: }; -ADDRESS_MAP_START(by6803_state::by6803_map) - AM_RANGE(0x0020, 0x0023) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("nvram") // 6116 ram - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(by6803_state::by6803_io) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(port1_r, port1_w) // P10-P17 - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(port2_r, port2_w) // P20-P24 -ADDRESS_MAP_END +void by6803_state::by6803_map(address_map &map) +{ + map(0x0020, 0x0023).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0040, 0x0043).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x17ff).ram().share("nvram"); // 6116 ram + map(0x8000, 0xffff).rom(); +} + +void by6803_state::by6803_io(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(by6803_state::port1_r), FUNC(by6803_state::port1_w)); // P10-P17 + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(by6803_state::port2_r), FUNC(by6803_state::port2_w)); // P20-P24 +} static INPUT_PORTS_START( by6803 ) PORT_START("TEST") diff --git a/src/mame/drivers/by68701.cpp b/src/mame/drivers/by68701.cpp index 9e1bf7b5be0..42ebe38b41f 100644 --- a/src/mame/drivers/by68701.cpp +++ b/src/mame/drivers/by68701.cpp @@ -26,13 +26,14 @@ public: }; -ADDRESS_MAP_START(by68701_state::by68701_map) - AM_RANGE(0x0000, 0xffff) AM_NOP - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0400, 0x04ff) AM_RAM - AM_RANGE(0x0500, 0x07ff) AM_RAM - AM_RANGE(0x7000, 0xffff) AM_ROM -ADDRESS_MAP_END +void by68701_state::by68701_map(address_map &map) +{ + map(0x0000, 0xffff).noprw(); + map(0x0000, 0x00ff).ram(); + map(0x0400, 0x04ff).ram(); + map(0x0500, 0x07ff).ram(); + map(0x7000, 0xffff).rom(); +} static INPUT_PORTS_START( by68701 ) INPUT_PORTS_END diff --git a/src/mame/drivers/byvid.cpp b/src/mame/drivers/byvid.cpp index 23d7a951b4c..d7f742c5017 100644 --- a/src/mame/drivers/byvid.cpp +++ b/src/mame/drivers/byvid.cpp @@ -149,49 +149,54 @@ private: }; -ADDRESS_MAP_START(by133_state::main_map) // U9 MPU - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // 128x8 in MC6810 U7 MPU - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) // PIA U10 MPU - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) // PIA U11 MPU - AM_RANGE(0x0200, 0x03ff) AM_RAM AM_SHARE("nvram") // 256x4 in 5101L U8 MPU, battery backed (D4-7 are data, A4-8 are address) - AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("roms", 0x0000) - AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("roms", 0x1000) - AM_RANGE(0x5000, 0x57ff) AM_ROM AM_REGION("roms", 0x0800) - AM_RANGE(0x5800, 0x5fff) AM_ROM AM_REGION("roms", 0x1800) - AM_RANGE(0x7000, 0x7fff) AM_ROM AM_REGION("roms", 0x1000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(by133_state::video_map) // U8 Vidiot - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(sound_data_r,sound_data_w) - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia_u7", pia6821_device, read, write) // PIA U7 Vidiot - AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x4001, 0x4001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write) - AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(by133_state::granny_map) - AM_RANGE(0x0000, 0x0001) AM_READWRITE(sound_data_r,sound_data_w) - AM_RANGE(0x0002, 0x0002) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x0003, 0x0003) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write) - AM_RANGE(0x0004, 0x0004) AM_DEVREADWRITE("crtc2", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x0005, 0x0005) AM_DEVREADWRITE("crtc2", tms9928a_device, register_read, register_write) - AM_RANGE(0x0006, 0x0007) AM_WRITE(granny_crtc_w) // can write to both at once - AM_RANGE(0x0008, 0x000b) AM_DEVREADWRITE("pia_u7", pia6821_device, read, write) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x2801, 0x2801) AM_READNOP // The '9' test reads this location constantly and throws away the result - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(by133_state::sound_map) // U27 Vidiot - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(by133_state::sound_portmap) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVWRITE("dac", dac_byte_interface, write) // P10-P17 - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w) // P20-P24 sound command in -ADDRESS_MAP_END +void by133_state::main_map(address_map &map) +{ // U9 MPU + map.global_mask(0x7fff); + map(0x0000, 0x007f).ram(); // 128x8 in MC6810 U7 MPU + map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // PIA U10 MPU + map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // PIA U11 MPU + map(0x0200, 0x03ff).ram().share("nvram"); // 256x4 in 5101L U8 MPU, battery backed (D4-7 are data, A4-8 are address) + map(0x1000, 0x17ff).rom().region("roms", 0x0000); + map(0x1800, 0x1fff).rom().region("roms", 0x1000); + map(0x5000, 0x57ff).rom().region("roms", 0x0800); + map(0x5800, 0x5fff).rom().region("roms", 0x1800); + map(0x7000, 0x7fff).rom().region("roms", 0x1000); +} + +void by133_state::video_map(address_map &map) +{ // U8 Vidiot + map(0x0000, 0x1fff).rw(this, FUNC(by133_state::sound_data_r), FUNC(by133_state::sound_data_w)); + map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pia_u7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // PIA U7 Vidiot + map(0x4000, 0x4000).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x4001, 0x4001).mirror(0x0ffe).rw(m_crtc, FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0x6000, 0x63ff).mirror(0x1c00).ram(); + map(0x8000, 0xffff).rom(); +} + +void by133_state::granny_map(address_map &map) +{ + map(0x0000, 0x0001).rw(this, FUNC(by133_state::sound_data_r), FUNC(by133_state::sound_data_w)); + map(0x0002, 0x0002).rw(m_crtc, FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x0003, 0x0003).rw(m_crtc, FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0x0004, 0x0004).rw(m_crtc2, FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x0005, 0x0005).rw(m_crtc2, FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0x0006, 0x0007).w(this, FUNC(by133_state::granny_crtc_w)); // can write to both at once + map(0x0008, 0x000b).rw(m_pia_u7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x27ff).ram(); + map(0x2801, 0x2801).nopr(); // The '9' test reads this location constantly and throws away the result + map(0x4000, 0xffff).rom(); +} + +void by133_state::sound_map(address_map &map) +{ // U27 Vidiot + map(0xc000, 0xffff).rom(); +} + +void by133_state::sound_portmap(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).w("dac", FUNC(dac_byte_interface::write)); // P10-P17 + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(by133_state::m6803_port2_r), FUNC(by133_state::m6803_port2_w)); // P20-P24 sound command in +} INPUT_CHANGED_MEMBER( by133_state::video_test ) diff --git a/src/mame/drivers/bzone.cpp b/src/mame/drivers/bzone.cpp index f8370939367..21c015838b6 100644 --- a/src/mame/drivers/bzone.cpp +++ b/src/mame/drivers/bzone.cpp @@ -300,49 +300,51 @@ WRITE8_MEMBER(redbaron_state::redbaron_joysound_w) * *************************************/ -ADDRESS_MAP_START(bzone_state::bzone_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") - AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW0") - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("DSW1") - AM_RANGE(0x1000, 0x1000) AM_WRITE(bzone_coin_counter_w) - AM_RANGE(0x1200, 0x1200) AM_DEVWRITE("avg", avg_bzone_device, go_w) - AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1600, 0x1600) AM_DEVWRITE("avg", avg_bzone_device, reset_w) - AM_RANGE(0x1800, 0x1800) AM_DEVREAD("mathbox", mathbox_device, status_r) - AM_RANGE(0x1810, 0x1810) AM_DEVREAD("mathbox", mathbox_device, lo_r) - AM_RANGE(0x1818, 0x1818) AM_DEVREAD("mathbox", mathbox_device, hi_r) - AM_RANGE(0x1820, 0x182f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x1840, 0x1840) AM_WRITE(bzone_sounds_w) - AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_device, go_w) - AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x3000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(redbaron_state::redbaron_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") - AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW0") - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("DSW1") - AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* coin out - Manual states this is "Coin Counter" */ - AM_RANGE(0x1200, 0x1200) AM_DEVWRITE("avg", avg_bzone_device, go_w) - AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1600, 0x1600) AM_DEVWRITE("avg", avg_bzone_device, reset_w) - AM_RANGE(0x1800, 0x1800) AM_DEVREAD("mathbox", mathbox_device, status_r) - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN4") - AM_RANGE(0x1804, 0x1804) AM_DEVREAD("mathbox", mathbox_device, lo_r) - AM_RANGE(0x1806, 0x1806) AM_DEVREAD("mathbox", mathbox_device, hi_r) - AM_RANGE(0x1808, 0x1808) AM_WRITE(redbaron_joysound_w) /* and select joystick pot also */ - AM_RANGE(0x180a, 0x180a) AM_WRITENOP /* sound reset, yet todo */ - AM_RANGE(0x180c, 0x180c) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x1820, 0x185f) AM_DEVREADWRITE("earom", atari_vg_earom_device, read, write) - AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_device, go_w) - AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x3000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void bzone_state::bzone_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).ram(); + map(0x0800, 0x0800).portr("IN0"); + map(0x0a00, 0x0a00).portr("DSW0"); + map(0x0c00, 0x0c00).portr("DSW1"); + map(0x1000, 0x1000).w(this, FUNC(bzone_state::bzone_coin_counter_w)); + map(0x1200, 0x1200).w("avg", FUNC(avg_bzone_device::go_w)); + map(0x1400, 0x1400).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1600, 0x1600).w("avg", FUNC(avg_bzone_device::reset_w)); + map(0x1800, 0x1800).r(m_mathbox, FUNC(mathbox_device::status_r)); + map(0x1810, 0x1810).r(m_mathbox, FUNC(mathbox_device::lo_r)); + map(0x1818, 0x1818).r(m_mathbox, FUNC(mathbox_device::hi_r)); + map(0x1820, 0x182f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1840, 0x1840).w(this, FUNC(bzone_state::bzone_sounds_w)); + map(0x1860, 0x187f).w(m_mathbox, FUNC(mathbox_device::go_w)); + map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x3000, 0x7fff).rom(); +} + +void redbaron_state::redbaron_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).ram(); + map(0x0800, 0x0800).portr("IN0"); + map(0x0a00, 0x0a00).portr("DSW0"); + map(0x0c00, 0x0c00).portr("DSW1"); + map(0x1000, 0x1000).nopw(); /* coin out - Manual states this is "Coin Counter" */ + map(0x1200, 0x1200).w("avg", FUNC(avg_bzone_device::go_w)); + map(0x1400, 0x1400).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1600, 0x1600).w("avg", FUNC(avg_bzone_device::reset_w)); + map(0x1800, 0x1800).r("mathbox", FUNC(mathbox_device::status_r)); + map(0x1802, 0x1802).portr("IN4"); + map(0x1804, 0x1804).r("mathbox", FUNC(mathbox_device::lo_r)); + map(0x1806, 0x1806).r("mathbox", FUNC(mathbox_device::hi_r)); + map(0x1808, 0x1808).w(this, FUNC(redbaron_state::redbaron_joysound_w)); /* and select joystick pot also */ + map(0x180a, 0x180a).nopw(); /* sound reset, yet todo */ + map(0x180c, 0x180c).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x1810, 0x181f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1820, 0x185f).rw("earom", FUNC(atari_vg_earom_device::read), FUNC(atari_vg_earom_device::write)); + map(0x1860, 0x187f).w("mathbox", FUNC(mathbox_device::go_w)); + map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x3000, 0x7fff).rom(); +} diff --git a/src/mame/drivers/c10.cpp b/src/mame/drivers/c10.cpp index 32b2732b87b..cb7eb38c857 100644 --- a/src/mame/drivers/c10.cpp +++ b/src/mame/drivers/c10.cpp @@ -52,18 +52,20 @@ private: -ADDRESS_MAP_START(c10_state::c10_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") - AM_RANGE(0x1000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xf0a1) AM_RAM - AM_RANGE(0xf0a2, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(c10_state::c10_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void c10_state::c10_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("boot"); + map(0x1000, 0x7fff).ram(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xf0a1).ram(); + map(0xf0a2, 0xffff).ram().share("videoram"); +} + +void c10_state::c10_io(address_map &map) +{ + map.global_mask(0xff); +} /* Input ports */ static INPUT_PORTS_START( c10 ) diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp index 31ee2830f48..c80eaca0b95 100644 --- a/src/mame/drivers/c128.cpp +++ b/src/mame/drivers/c128.cpp @@ -670,54 +670,60 @@ READ8_MEMBER( c128_state::vic_colorram_r ) // ADDRESS_MAP( z80_mem ) //------------------------------------------------- -ADDRESS_MAP_START(c128_state::z80_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_r, z80_w) -ADDRESS_MAP_END +void c128_state::z80_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(c128_state::z80_r), FUNC(c128_state::z80_w)); +} //------------------------------------------------- // ADDRESS_MAP( z80_io ) //------------------------------------------------- -ADDRESS_MAP_START(c128_state::z80_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_io_r, z80_io_w) -ADDRESS_MAP_END +void c128_state::z80_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(c128_state::z80_io_r), FUNC(c128_state::z80_io_w)); +} //------------------------------------------------- // ADDRESS_MAP( m8502_mem ) //------------------------------------------------- -ADDRESS_MAP_START(c128_state::m8502_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void c128_state::m8502_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(c128_state::read), FUNC(c128_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(c128_state::vic_videoram_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) -ADDRESS_MAP_END +void c128_state::vic_videoram_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(c128_state::vic_videoram_r)); +} //------------------------------------------------- // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -ADDRESS_MAP_START(c128_state::vic_colorram_map) - AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) -ADDRESS_MAP_END +void c128_state::vic_colorram_map(address_map &map) +{ + map(0x000, 0x3ff).r(this, FUNC(c128_state::vic_colorram_r)); +} //------------------------------------------------- // ADDRESS_MAP( vdc_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(c128_state::vdc_videoram_map) - AM_RANGE(0x0000, 0xffff) AM_RAM -ADDRESS_MAP_END +void c128_state::vdc_videoram_map(address_map &map) +{ + map(0x0000, 0xffff).ram(); +} diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp index e621ed67c5c..cdc4824d2e7 100644 --- a/src/mame/drivers/c64.cpp +++ b/src/mame/drivers/c64.cpp @@ -536,27 +536,30 @@ READ8_MEMBER( c64_state::vic_colorram_r ) // ADDRESS_MAP( c64_mem ) //------------------------------------------------- -ADDRESS_MAP_START(c64_state::c64_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void c64_state::c64_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(c64_state::read), FUNC(c64_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(c64_state::vic_videoram_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) -ADDRESS_MAP_END +void c64_state::vic_videoram_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(c64_state::vic_videoram_r)); +} //------------------------------------------------- // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -ADDRESS_MAP_START(c64_state::vic_colorram_map) - AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) -ADDRESS_MAP_END +void c64_state::vic_colorram_map(address_map &map) +{ + map(0x000, 0x3ff).r(this, FUNC(c64_state::vic_colorram_r)); +} diff --git a/src/mame/drivers/c65.cpp b/src/mame/drivers/c65.cpp index 796df763bc2..ef870a3c4de 100644 --- a/src/mame/drivers/c65.cpp +++ b/src/mame/drivers/c65.cpp @@ -484,31 +484,32 @@ READ8_MEMBER(c65_state::dummy_r) return 0; } -ADDRESS_MAP_START(c65_state::c65_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("wram") // TODO: bank - AM_RANGE(0x0c800, 0x0cfff) AM_ROM AM_REGION("maincpu", 0xc800) - AM_RANGE(0x0d000, 0x0d07f) AM_READWRITE(vic4567_dummy_r,vic4567_dummy_w) // 0x0d000, 0x0d07f VIC-4567 - AM_RANGE(0x0d080, 0x0d081) AM_READ(dummy_r) // 0x0d080, 0x0d09f FDC +void c65_state::c65_map(address_map &map) +{ + map(0x00000, 0x07fff).ram().share("wram"); // TODO: bank + map(0x0c800, 0x0cfff).rom().region("maincpu", 0xc800); + map(0x0d000, 0x0d07f).rw(this, FUNC(c65_state::vic4567_dummy_r), FUNC(c65_state::vic4567_dummy_w)); // 0x0d000, 0x0d07f VIC-4567 + map(0x0d080, 0x0d081).r(this, FUNC(c65_state::dummy_r)); // 0x0d080, 0x0d09f FDC // 0x0d0a0, 0x0d0ff Ram Expansion Control (REC) - AM_RANGE(0x0d100, 0x0d1ff) AM_RAM_WRITE(PalRed_w) AM_SHARE("redpal")// 0x0d100, 0x0d1ff Red Palette - AM_RANGE(0x0d200, 0x0d2ff) AM_RAM_WRITE(PalGreen_w) AM_SHARE("greenpal") // 0x0d200, 0x0d2ff Green Palette - AM_RANGE(0x0d300, 0x0d3ff) AM_RAM_WRITE(PalBlue_w) AM_SHARE("bluepal") // 0x0d300, 0x0d3ff Blue Palette + map(0x0d100, 0x0d1ff).ram().w(this, FUNC(c65_state::PalRed_w)).share("redpal");// 0x0d100, 0x0d1ff Red Palette + map(0x0d200, 0x0d2ff).ram().w(this, FUNC(c65_state::PalGreen_w)).share("greenpal"); // 0x0d200, 0x0d2ff Green Palette + map(0x0d300, 0x0d3ff).ram().w(this, FUNC(c65_state::PalBlue_w)).share("bluepal"); // 0x0d300, 0x0d3ff Blue Palette // 0x0d400, 0x0d4*f Right SID // 0x0d440, 0x0d4*f Left SID - AM_RANGE(0x0d600, 0x0d6ff) AM_READWRITE(uart_r, uart_w) - AM_RANGE(0x0d700, 0x0d702) AM_WRITE(DMAgic_w) AM_SHARE("dmalist") // 0x0d700, 0x0d7** DMAgic + map(0x0d600, 0x0d6ff).rw(this, FUNC(c65_state::uart_r), FUNC(c65_state::uart_w)); + map(0x0d700, 0x0d702).w(this, FUNC(c65_state::DMAgic_w)).share("dmalist"); // 0x0d700, 0x0d7** DMAgic //AM_RANGE(0x0d703, 0x0d703) AM_READ(DMAgic_r) // 0x0d800, 0x0d8** Color matrix - AM_RANGE(0x0d800, 0x0dfff) AM_READWRITE(CIASelect_r,CIASelect_w) AM_SHARE("cram") + map(0x0d800, 0x0dfff).rw(this, FUNC(c65_state::CIASelect_r), FUNC(c65_state::CIASelect_w)).share("cram"); // 0x0dc00, 0x0dc** CIA-1 // 0x0dd00, 0x0dd** CIA-2 // 0x0de00, 0x0de** Ext I/O Select 1 // 0x0df00, 0x0df** Ext I/O Select 2 (RAM window?) - AM_RANGE(0x0e000, 0x0ffff) AM_ROM AM_REGION("maincpu",0x0e000) - AM_RANGE(0x10000, 0x1f7ff) AM_RAM - AM_RANGE(0x1f800, 0x1ffff) AM_RAM // VRAM attributes - AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END + map(0x0e000, 0x0ffff).rom().region("maincpu", 0x0e000); + map(0x10000, 0x1f7ff).ram(); + map(0x1f800, 0x1ffff).ram(); // VRAM attributes + map(0x20000, 0x3ffff).rom().region("maincpu", 0); +} diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp index 3411bf15fda..e1b3c5c1531 100644 --- a/src/mame/drivers/c80.cpp +++ b/src/mame/drivers/c80.cpp @@ -63,17 +63,19 @@ data of next byte, and so on. /* Memory Maps */ -ADDRESS_MAP_START(c80_state::c80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(c80_state::c80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7c, 0x7f) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write) - AM_RANGE(0xbc, 0xbf) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write) -ADDRESS_MAP_END +void c80_state::c80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x0bff).mirror(0x400).ram(); +} + +void c80_state::c80_io(address_map &map) +{ + map.global_mask(0xff); + map(0x7c, 0x7f).rw(Z80PIO2_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xbc, 0xbf).rw(m_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp index b1942c3e1bd..65ba9a95074 100644 --- a/src/mame/drivers/c900.cpp +++ b/src/mame/drivers/c900.cpp @@ -56,22 +56,25 @@ private: required_device<generic_terminal_device> m_terminal; }; -ADDRESS_MAP_START(c900_state::mem_map) - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void c900_state::mem_map(address_map &map) +{ + map(0x00000, 0x07fff).rom().region("roms", 0); +} -ADDRESS_MAP_START(c900_state::data_map) - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x08000, 0x6ffff) AM_RAM -ADDRESS_MAP_END +void c900_state::data_map(address_map &map) +{ + map(0x00000, 0x07fff).rom().region("roms", 0); + map(0x08000, 0x6ffff).ram(); +} -ADDRESS_MAP_START(c900_state::io_map) - AM_RANGE(0x0000, 0x007f) AM_DEVREADWRITE8("cio", z8036_device, read, write, 0x00ff) +void c900_state::io_map(address_map &map) +{ + map(0x0000, 0x007f).rw("cio", FUNC(z8036_device::read), FUNC(z8036_device::write)).umask16(0x00ff); //AM_RANGE(0x0100, 0x011f) AM_DEVREADWRITE8("scc", scc8030_device, zbus_r, zbus_w, 0x00ff) // range for one channel - AM_RANGE(0x0100, 0x0101) AM_READ(stat_r) - AM_RANGE(0x0110, 0x0111) AM_READ(key_r) - AM_RANGE(0x0110, 0x0111) AM_DEVWRITE8("terminal", generic_terminal_device, write, 0x00ff) -ADDRESS_MAP_END + map(0x0100, 0x0101).r(this, FUNC(c900_state::stat_r)); + map(0x0110, 0x0111).r(this, FUNC(c900_state::key_r)); + map(0x0111, 0x0111).w(m_terminal, FUNC(generic_terminal_device::write)); +} static INPUT_PORTS_START( c900 ) INPUT_PORTS_END diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp index dc4c724743b..b60be2f1bc7 100644 --- a/src/mame/drivers/cabal.cpp +++ b/src/mame/drivers/cabal.cpp @@ -102,54 +102,57 @@ WRITE16_MEMBER(cabal_state::cabalbl_sound_irq_trigger_word_w) -ADDRESS_MAP_START(cabal_state::main_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x40000, 0x437ff) AM_RAM - AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x44000, 0x4ffff) AM_RAM - AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram") - AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x80200, 0x803ff) AM_RAM - AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW") - AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("IN2") - AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS") - AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */ - AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w) - AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xe8000, 0xe800d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0xe8008, 0xe8009) AM_WRITE(sound_irq_trigger_word_w) // fix coin insertion -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(cabal_state::trackball_main_map) - AM_IMPORT_FROM(main_map) - AM_RANGE(0xa0008, 0xa000f) AM_DEVREAD8("upd4701l", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xa0008, 0xa000f) AM_DEVREAD8("upd4701h", upd4701_device, read_xy, 0xff00) - AM_RANGE(0xc0000, 0xc0001) AM_DEVWRITE8("upd4701l", upd4701_device, reset_xy, 0x00ff) - AM_RANGE(0xc0000, 0xc0001) AM_DEVWRITE8("upd4701h", upd4701_device, reset_xy, 0xff00) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(cabal_state::cabalbl_main_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x40000, 0x437ff) AM_RAM - AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x44000, 0x4ffff) AM_RAM - AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram") - AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x80200, 0x803ff) AM_RAM - AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW") - AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("JOY") - AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS") - AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */ - AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w) - AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w) - AM_RANGE(0xe8004, 0xe8005) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabalbl_sound_irq_trigger_word_w) -ADDRESS_MAP_END +void cabal_state::main_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x40000, 0x437ff).ram(); + map(0x43800, 0x43fff).ram().share("spriteram"); + map(0x44000, 0x4ffff).ram(); + map(0x60000, 0x607ff).ram().w(this, FUNC(cabal_state::text_videoram_w)).share("colorram"); + map(0x80000, 0x801ff).ram().w(this, FUNC(cabal_state::background_videoram_w)).share("videoram"); + map(0x80200, 0x803ff).ram(); + map(0xa0000, 0xa0001).portr("DSW"); + map(0xa0008, 0xa0009).portr("IN2"); + map(0xa0010, 0xa0011).portr("INPUTS"); + map(0xc0040, 0xc0041).nopw(); /* ??? */ + map(0xc0080, 0xc0081).w(this, FUNC(cabal_state::flipscreen_w)); + map(0xe0000, 0xe07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xe8000, 0xe800d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0xe8008, 0xe8009).w(this, FUNC(cabal_state::sound_irq_trigger_word_w)); // fix coin insertion +} + + + +void cabal_state::trackball_main_map(address_map &map) +{ + main_map(map); + map(0xa0008, 0xa000f).r("upd4701l", FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xa0008, 0xa000f).r("upd4701h", FUNC(upd4701_device::read_xy)).umask16(0xff00); + map(0xc0001, 0xc0001).w("upd4701l", FUNC(upd4701_device::reset_xy)); + map(0xc0000, 0xc0000).w("upd4701h", FUNC(upd4701_device::reset_xy)); +} + + + +void cabal_state::cabalbl_main_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x40000, 0x437ff).ram(); + map(0x43800, 0x43fff).ram().share("spriteram"); + map(0x44000, 0x4ffff).ram(); + map(0x60000, 0x607ff).ram().w(this, FUNC(cabal_state::text_videoram_w)).share("colorram"); + map(0x80000, 0x801ff).ram().w(this, FUNC(cabal_state::background_videoram_w)).share("videoram"); + map(0x80200, 0x803ff).ram(); + map(0xa0000, 0xa0001).portr("DSW"); + map(0xa0008, 0xa0009).portr("JOY"); + map(0xa0010, 0xa0011).portr("INPUTS"); + map(0xc0040, 0xc0041).nopw(); /* ??? */ + map(0xc0080, 0xc0081).w(this, FUNC(cabal_state::flipscreen_w)); + map(0xe0000, 0xe07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xe8000, 0xe8003).w(this, FUNC(cabal_state::cabalbl_sndcmd_w)); + map(0xe8005, 0xe8005).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe8008, 0xe8009).w(this, FUNC(cabal_state::cabalbl_sound_irq_trigger_word_w)); +} /*********************************************************************/ @@ -172,68 +175,73 @@ WRITE8_MEMBER(cabal_state::cabalbl_coin_w) //data & 0x40? video enable? } -ADDRESS_MAP_START(cabal_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_device, adr_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm1", seibu_adpcm_device, ctl_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6005, 0x6006) AM_DEVWRITE("adpcm2", seibu_adpcm_device, adr_w) - AM_RANGE(0x601a, 0x601a) AM_DEVWRITE("adpcm2", seibu_adpcm_device, ctl_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::sound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::cabalbl_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2fff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0x4004, 0x4004) AM_WRITE(cabalbl_coin_w) - AM_RANGE(0x4006, 0x4006) AM_READ_PORT("COIN") - AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r) - AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r) - AM_RANGE(0x400c, 0x400c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x6000, 0x6000) AM_WRITENOP /* ??? */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::cabalbl2_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_device, adr_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm1", seibu_adpcm_device, ctl_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6005, 0x6006) AM_DEVWRITE("adpcm2", seibu_adpcm_device, adr_w) - AM_RANGE(0x601a, 0x601a) AM_DEVWRITE("adpcm2", seibu_adpcm_device, ctl_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::cabalbl2_predecrypted_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiocpu", 0x2000) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000) -ADDRESS_MAP_END +void cabal_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x2000, 0x27ff).ram(); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4005, 0x4006).w(m_adpcm1, FUNC(seibu_adpcm_device::adr_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401a, 0x401a).w(m_adpcm1, FUNC(seibu_adpcm_device::ctl_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6005, 0x6006).w(m_adpcm2, FUNC(seibu_adpcm_device::adr_w)); + map(0x601a, 0x601a).w(m_adpcm2, FUNC(seibu_adpcm_device::ctl_w)); + map(0x8000, 0xffff).rom(); +} + +void cabal_state::sound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); + map(0x8000, 0xffff).rom().region("audiocpu", 0x8000); +} + +void cabal_state::cabalbl_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x2fff).ram(); + map(0x4000, 0x4000).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x4002, 0x4002).w("soundlatch3", FUNC(generic_latch_8_device::write)); + map(0x4004, 0x4004).w(this, FUNC(cabal_state::cabalbl_coin_w)); + map(0x4006, 0x4006).portr("COIN"); + map(0x4008, 0x4008).r(this, FUNC(cabal_state::cabalbl_snd2_r)); + map(0x400a, 0x400a).r(this, FUNC(cabal_state::cabalbl_snd1_r)); + map(0x400c, 0x400c).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x400e, 0x400f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x6000, 0x6000).nopw(); /* ??? */ + map(0x8000, 0xffff).rom(); +} + +void cabal_state::cabalbl2_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4005, 0x4006).w(m_adpcm1, FUNC(seibu_adpcm_device::adr_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401a, 0x401a).w(m_adpcm1, FUNC(seibu_adpcm_device::ctl_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6005, 0x6006).w(m_adpcm2, FUNC(seibu_adpcm_device::adr_w)); + map(0x601a, 0x601a).w(m_adpcm2, FUNC(seibu_adpcm_device::ctl_w)); + map(0x8000, 0xffff).rom(); +} + +void cabal_state::cabalbl2_predecrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("audiocpu", 0x2000); + map(0x8000, 0xffff).rom().region("audiocpu", 0x8000); +} /* the bootleg has 2x z80 sample players */ @@ -253,25 +261,29 @@ WRITE8_MEMBER(cabal_state::cabalbl_2_adpcm_w) m_msm2->vclk_w(1); m_msm2->vclk_w(0); } -ADDRESS_MAP_START(cabal_state::cabalbl_talk1_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::cabalbl_talk1_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_1_adpcm_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::cabalbl_talk2_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(cabal_state::cabalbl_talk2_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) - AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_2_adpcm_w) -ADDRESS_MAP_END +void cabal_state::cabalbl_talk1_map(address_map &map) +{ + map(0x0000, 0xffff).rom().nopw(); +} + +void cabal_state::cabalbl_talk1_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x01, 0x01).w(this, FUNC(cabal_state::cabalbl_1_adpcm_w)); +} + +void cabal_state::cabalbl_talk2_map(address_map &map) +{ + map(0x0000, 0xffff).rom().nopw(); +} + +void cabal_state::cabalbl_talk2_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch3", FUNC(generic_latch_8_device::read)); + map(0x01, 0x01).w(this, FUNC(cabal_state::cabalbl_2_adpcm_w)); +} /***************************************************************************/ diff --git a/src/mame/drivers/cabaret.cpp b/src/mame/drivers/cabaret.cpp index 83587feb178..ec1b1323451 100644 --- a/src/mame/drivers/cabaret.cpp +++ b/src/mame/drivers/cabaret.cpp @@ -189,33 +189,35 @@ WRITE8_MEMBER(cabaret_state::ppi2_c_w) -ADDRESS_MAP_START(cabaret_state::cabaret_map) - AM_RANGE( 0x00000, 0x0efff ) AM_ROM - AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM AM_REGION("maincpu", 0xf000) -ADDRESS_MAP_END +void cabaret_state::cabaret_map(address_map &map) +{ + map(0x00000, 0x0efff).rom(); + map(0x0f000, 0x0ffff).ram().region("maincpu", 0xf000); +} -ADDRESS_MAP_START(cabaret_state::cabaret_portmap) - AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs +void cabaret_state::cabaret_portmap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // Z180 internal regs - AM_RANGE( 0x0080, 0x0083 ) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE( 0x0090, 0x0093 ) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE( 0x00a0, 0x00a3 ) AM_DEVREADWRITE("ppi3", i8255_device, read, write) + map(0x0080, 0x0083).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0090, 0x0093).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x00a0, 0x00a3).rw("ppi3", FUNC(i8255_device::read), FUNC(i8255_device::write)); - AM_RANGE( 0x00b0, 0x00b0 ) AM_READ_PORT("DSW3") /* DSW3 */ + map(0x00b0, 0x00b0).portr("DSW3"); /* DSW3 */ - AM_RANGE( 0x00e0, 0x00e1 ) AM_DEVWRITE("ymsnd", ym2413_device, write) + map(0x00e0, 0x00e1).w("ymsnd", FUNC(ym2413_device::write)); - AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") - AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") + map(0x2000, 0x27ff).ram().w(this, FUNC(cabaret_state::fg_tile_w)).share("fg_tile_ram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(cabaret_state::fg_color_w)).share("fg_color_ram"); - AM_RANGE( 0x3000, 0x37ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE( 0x3800, 0x3fff ) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") + map(0x3000, 0x37ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3800, 0x3fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); - AM_RANGE( 0x1000, 0x103f ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll") + map(0x1000, 0x103f).ram().w(this, FUNC(cabaret_state::bg_scroll_w)).share("bg_scroll"); - AM_RANGE( 0x1800, 0x19ff ) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram") - AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("gfx3", 0) -ADDRESS_MAP_END + map(0x1800, 0x19ff).ram().w(this, FUNC(cabaret_state::bg_tile_w)).share("bg_tile_ram"); + map(0x8000, 0xffff).rom().region("gfx3", 0); +} /*************************************************************************** diff --git a/src/mame/drivers/calchase.cpp b/src/mame/drivers/calchase.cpp index 65d317f4d90..a752ec6e107 100644 --- a/src/mame/drivers/calchase.cpp +++ b/src/mame/drivers/calchase.cpp @@ -387,30 +387,31 @@ READ16_MEMBER(calchase_state::calchase_iocard5_r) } -ADDRESS_MAP_START(calchase_state::calchase_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) // VGA VRAM - AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0) - AM_RANGE(0x000c8000, 0x000cffff) AM_NOP +void calchase_state::calchase_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w)); // VGA VRAM + map(0x000c0000, 0x000c7fff).ram().region("video_bios", 0); + map(0x000c8000, 0x000cffff).noprw(); //AM_RANGE(0x000d0000, 0x000d0003) AM_RAM // XYLINX - Sincronus serial communication - AM_RANGE(0x000d0004, 0x000d0007) AM_READ16(calchase_iocard1_r, 0x0000ffff) - AM_RANGE(0x000d000c, 0x000d000f) AM_READ16(calchase_iocard2_r, 0x0000ffff) - AM_RANGE(0x000d0030, 0x000d0033) AM_READ16(calchase_iocard3_r, 0xffff0000) - AM_RANGE(0x000d0030, 0x000d0033) AM_READ16(calchase_iocard4_r, 0x0000ffff) - AM_RANGE(0x000d0034, 0x000d0037) AM_READ16(calchase_iocard5_r, 0x0000ffff) - AM_RANGE(0x000d0008, 0x000d000b) AM_WRITENOP // ??? - AM_RANGE(0x000d0024, 0x000d0027) AM_DEVWRITE16("ldac", dac_word_interface, write, 0x0000ffff) - AM_RANGE(0x000d0028, 0x000d002b) AM_DEVWRITE16("rdac", dac_word_interface, write, 0x0000ffff) - AM_RANGE(0x000d0800, 0x000d0fff) AM_ROM AM_REGION("nvram",0) // + map(0x000d0004, 0x000d0005).r(this, FUNC(calchase_state::calchase_iocard1_r)); + map(0x000d000c, 0x000d000d).r(this, FUNC(calchase_state::calchase_iocard2_r)); + map(0x000d0032, 0x000d0033).r(this, FUNC(calchase_state::calchase_iocard3_r)); + map(0x000d0030, 0x000d0031).r(this, FUNC(calchase_state::calchase_iocard4_r)); + map(0x000d0034, 0x000d0035).r(this, FUNC(calchase_state::calchase_iocard5_r)); + map(0x000d0008, 0x000d000b).nopw(); // ??? + map(0x000d0024, 0x000d0025).w("ldac", FUNC(dac_word_interface::write)); + map(0x000d0028, 0x000d0029).w("rdac", FUNC(dac_word_interface::write)); + map(0x000d0800, 0x000d0fff).rom().region("nvram", 0); // // AM_RANGE(0x000d0800, 0x000d0fff) AM_RAM // GAME_CMOS //GRULL AM_RANGE(0x000e0000, 0x000effff) AM_RAM //GRULL-AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1") //GRULL AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w) - AM_RANGE(0x000e0000, 0x000effff) AM_ROMBANK("bios_ext") AM_WRITE(bios_ext_ram_w) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x03ffffff) AM_RAM // 64MB - AM_RANGE(0x04000000, 0x28ffffff) AM_NOP + map(0x000e0000, 0x000effff).bankr("bios_ext").w(this, FUNC(calchase_state::bios_ext_ram_w)); + map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(calchase_state::bios_ram_w)); + map(0x00100000, 0x03ffffff).ram(); // 64MB + map(0x04000000, 0x28ffffff).noprw(); //AM_RANGE(0x04000000, 0x040001ff) AM_RAM //AM_RANGE(0x08000000, 0x080001ff) AM_RAM //AM_RANGE(0x0c000000, 0x0c0001ff) AM_RAM @@ -419,43 +420,44 @@ ADDRESS_MAP_START(calchase_state::calchase_map) //AM_RANGE(0x18000000, 0x180001ff) AM_RAM //AM_RANGE(0x20000000, 0x200001ff) AM_RAM //AM_RANGE(0x28000000, 0x280001ff) AM_RAM - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} -ADDRESS_MAP_START(calchase_state::calchase_io) - AM_IMPORT_FROM(pcat32_io_common) +void calchase_state::calchase_io(address_map &map) +{ + pcat32_io_common(map); //AM_RANGE(0x00e8, 0x00eb) AM_NOP - AM_RANGE(0x00e8, 0x00ef) AM_NOP //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY - AM_RANGE(0x0170, 0x0177) AM_NOP //To debug - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x0200, 0x021f) AM_NOP //To debug - AM_RANGE(0x0260, 0x026f) AM_NOP //To debug - AM_RANGE(0x0278, 0x027b) AM_WRITENOP//AM_WRITE(pnp_config_w) - AM_RANGE(0x0280, 0x0287) AM_NOP //To debug - AM_RANGE(0x02a0, 0x02a7) AM_NOP //To debug - AM_RANGE(0x02c0, 0x02c7) AM_NOP //To debug - AM_RANGE(0x02e0, 0x02ef) AM_NOP //To debug - AM_RANGE(0x02f8, 0x02ff) AM_NOP //To debug - AM_RANGE(0x0320, 0x038f) AM_NOP //To debug - AM_RANGE(0x03a0, 0x03a7) AM_NOP //To debug - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03e0, 0x03ef) AM_NOP //To debug - AM_RANGE(0x0378, 0x037f) AM_NOP //To debug + map(0x00e8, 0x00ef).noprw(); //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY + map(0x0170, 0x0177).noprw(); //To debug + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x0200, 0x021f).noprw(); //To debug + map(0x0260, 0x026f).noprw(); //To debug + map(0x0278, 0x027b).nopw();//AM_WRITE(pnp_config_w) + map(0x0280, 0x0287).noprw(); //To debug + map(0x02a0, 0x02a7).noprw(); //To debug + map(0x02c0, 0x02c7).noprw(); //To debug + map(0x02e0, 0x02ef).noprw(); //To debug + map(0x02f8, 0x02ff).noprw(); //To debug + map(0x0320, 0x038f).noprw(); //To debug + map(0x03a0, 0x03a7).noprw(); //To debug + map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w)); + map(0x03e0, 0x03ef).noprw(); //To debug + map(0x0378, 0x037f).noprw(); //To debug // AM_RANGE(0x0300, 0x03af) AM_NOP // AM_RANGE(0x03b0, 0x03df) AM_NOP - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1) - AM_RANGE(0x03f8, 0x03ff) AM_NOP // To debug Serial Port COM1: - AM_RANGE(0x0a78, 0x0a7b) AM_WRITENOP//AM_WRITE(pnp_data_w) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) - AM_RANGE(0x42e8, 0x43ef) AM_NOP //To debug - AM_RANGE(0x43c4, 0x43cb) AM_DEVREADWRITE8("vga", trident_vga_device, port_43c6_r, port_43c6_w, 0xffffffff) // Trident Memory and Video Clock register - AM_RANGE(0x46e8, 0x46ef) AM_NOP //To debug - AM_RANGE(0x4ae8, 0x4aef) AM_NOP //To debug - AM_RANGE(0x83c4, 0x83cb) AM_DEVREADWRITE8("vga", trident_vga_device, port_83c6_r, port_83c6_w, 0xffffffff) // Trident LUTDAC - AM_RANGE(0x92e8, 0x92ef) AM_NOP //To debug -ADDRESS_MAP_END + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + map(0x03f8, 0x03ff).noprw(); // To debug Serial Port COM1: + map(0x0a78, 0x0a7b).nopw();//AM_WRITE(pnp_data_w) + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); + map(0x42e8, 0x43ef).noprw(); //To debug + map(0x43c4, 0x43cb).rw("vga", FUNC(trident_vga_device::port_43c6_r), FUNC(trident_vga_device::port_43c6_w)); // Trident Memory and Video Clock register + map(0x46e8, 0x46ef).noprw(); //To debug + map(0x4ae8, 0x4aef).noprw(); //To debug + map(0x83c4, 0x83cb).rw("vga", FUNC(trident_vga_device::port_83c6_r), FUNC(trident_vga_device::port_83c6_w)); // Trident LUTDAC + map(0x92e8, 0x92ef).noprw(); //To debug +} #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1) diff --git a/src/mame/drivers/calcune.cpp b/src/mame/drivers/calcune.cpp index d71431ae52b..022c6f31a23 100644 --- a/src/mame/drivers/calcune.cpp +++ b/src/mame/drivers/calcune.cpp @@ -123,24 +123,25 @@ WRITE16_MEMBER(calcune_state::cal_vdp_w) m_vdp2->vdp_w(space, offset, data, mem_mask); } -ADDRESS_MAP_START(calcune_state::calcune_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM +void calcune_state::calcune_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); - AM_RANGE(0x700000, 0x700001) AM_READ(cal_700000_r) + map(0x700000, 0x700001).r(this, FUNC(calcune_state::cal_700000_r)); - AM_RANGE(0x710000, 0x710001) AM_READ_PORT("710000") - AM_RANGE(0x720000, 0x720001) AM_READ_PORT("720000") + map(0x710000, 0x710001).portr("710000"); + map(0x720000, 0x720001).portr("720000"); // AM_RANGE(0x730000, 0x730001) possible Z80 control? - AM_RANGE(0x760000, 0x760003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00) + map(0x760000, 0x760003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00); - AM_RANGE(0x770000, 0x770001) AM_WRITE(cal_770000_w) + map(0x770000, 0x770001).w(this, FUNC(calcune_state::cal_770000_w)); - AM_RANGE(0xA14100, 0xA14101) AM_NOP // on startup, possible z80 control + map(0xA14100, 0xA14101).noprw(); // on startup, possible z80 control - AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(cal_vdp_r, cal_vdp_w) + map(0xc00000, 0xc0001f).rw(this, FUNC(calcune_state::cal_vdp_r), FUNC(calcune_state::cal_vdp_w)); - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // battery on PCB -ADDRESS_MAP_END + map(0xff0000, 0xffffff).ram().share("nvram"); // battery on PCB +} uint32_t calcune_state::screen_update_calcune(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp index 3e1f0d54f70..5d821c71f50 100644 --- a/src/mame/drivers/calomega.cpp +++ b/src/mame/drivers/calomega.cpp @@ -822,57 +822,61 @@ WRITE8_MEMBER(calomega_state::lamps_905_w) * Memory map information * *************************************************/ -ADDRESS_MAP_START(calomega_state::sys903_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0840, 0x0841) AM_DEVWRITE("ay8912", ay8910_device, address_data_w) - AM_RANGE(0x0880, 0x0880) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0881, 0x0881) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x08c4, 0x08c7) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x08c8, 0x08cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x08d0, 0x08d1) AM_DEVREADWRITE("acia6850_0", acia6850_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1800, 0x3fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(calomega_state::s903mod_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0840, 0x0841) AM_DEVWRITE("ay8912", ay8910_device, address_data_w) - AM_RANGE(0x0880, 0x0880) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0881, 0x0881) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x08c4, 0x08c7) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x08c8, 0x08cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1800, 0x3fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(calomega_state::sys905_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1040, 0x1041) AM_DEVWRITE("ay8912", ay8910_device, address_data_w) - AM_RANGE(0x1080, 0x1080) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x1081, 0x1081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x10c4, 0x10c7) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x10c8, 0x10cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2800, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(calomega_state::sys906_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x280c, 0x280f) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x2824, 0x2827) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x2c04, 0x2c04) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2c05, 0x2c05) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2c08, 0x2c09) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_data_w) - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END +void calomega_state::sys903_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0840, 0x0841).w("ay8912", FUNC(ay8910_device::address_data_w)); + map(0x0880, 0x0880).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0881, 0x0881).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x08c4, 0x08c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x08c8, 0x08cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x08d0, 0x08d1).rw(m_acia6850_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram"); + map(0x1400, 0x17ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram"); + map(0x1800, 0x3fff).rom(); +} + +void calomega_state::s903mod_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0840, 0x0841).w("ay8912", FUNC(ay8910_device::address_data_w)); + map(0x0880, 0x0880).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0881, 0x0881).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x08c4, 0x08c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x08c8, 0x08cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram"); + map(0x1400, 0x17ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram"); + map(0x1800, 0x3fff).rom(); +} + +void calomega_state::sys905_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x1040, 0x1041).w("ay8912", FUNC(ay8910_device::address_data_w)); + map(0x1080, 0x1080).w("crtc", FUNC(mc6845_device::address_w)); + map(0x1081, 0x1081).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x10c4, 0x10c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x10c8, 0x10cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x23ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram"); + map(0x2400, 0x27ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram"); + map(0x2800, 0x7fff).rom(); +} + +void calomega_state::sys906_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x280c, 0x280f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2824, 0x2827).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2c04, 0x2c04).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2c05, 0x2c05).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2c08, 0x2c09).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x2000, 0x23ff).ram().w(this, FUNC(calomega_state::calomega_videoram_w)).share("videoram"); + map(0x2400, 0x27ff).ram().w(this, FUNC(calomega_state::calomega_colorram_w)).share("colorram"); + map(0x6000, 0xffff).rom(); +} /************************************************* diff --git a/src/mame/drivers/calorie.cpp b/src/mame/drivers/calorie.cpp index 3a60057fead..ae6a92f1605 100644 --- a/src/mame/drivers/calorie.cpp +++ b/src/mame/drivers/calorie.cpp @@ -264,44 +264,48 @@ WRITE8_MEMBER(calorie_state::bogus_w) * *************************************/ -ADDRESS_MAP_START(calorie_state::calorie_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_ram_w) AM_SHARE("fg_ram") - AM_RANGE(0xd800, 0xdbff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0xdc00, 0xdcff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xde00, 0xde00) AM_WRITE(bg_bank_w) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1") - AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P2") - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW1") AM_WRITE(calorie_flipscreen_w) - AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW2") - AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(calorie_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(calorie_state::calorie_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_READ(calorie_soundlatch_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(calorie_state::calorie_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void calorie_state::calorie_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().share("ram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(calorie_state::fg_ram_w)).share("fg_ram"); + map(0xd800, 0xdbff).ram().share("sprites"); + map(0xdc00, 0xdcff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xde00, 0xde00).w(this, FUNC(calorie_state::bg_bank_w)); + map(0xf000, 0xf000).portr("P1"); + map(0xf001, 0xf001).portr("P2"); + map(0xf002, 0xf002).portr("SYSTEM"); + map(0xf004, 0xf004).portr("DSW1").w(this, FUNC(calorie_state::calorie_flipscreen_w)); + map(0xf005, 0xf005).portr("DSW2"); + map(0xf800, 0xf800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + +void calorie_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().share("ram"); +} + +void calorie_state::calorie_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xc000).r(this, FUNC(calorie_state::calorie_soundlatch_r)); +} + +void calorie_state::calorie_sound_io_map(address_map &map) +{ + map.global_mask(0xff); // 3rd ? - AM_RANGE(0x00, 0xff) AM_WRITE(bogus_w) + map(0x00, 0xff).w(this, FUNC(calorie_state::bogus_w)); - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ym2149_device, address_data_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ym2149_device, data_r) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay2", ym2149_device, address_data_w) - AM_RANGE(0x11, 0x11) AM_DEVREAD("ay2", ym2149_device, data_r) -ADDRESS_MAP_END + map(0x00, 0x01).w("ay1", FUNC(ym2149_device::address_data_w)); + map(0x01, 0x01).r("ay1", FUNC(ym2149_device::data_r)); + map(0x10, 0x11).w("ay2", FUNC(ym2149_device::address_data_w)); + map(0x11, 0x11).r("ay2", FUNC(ym2149_device::data_r)); +} /************************************* diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp index 2a86dc88e6c..8aaa1986eea 100644 --- a/src/mame/drivers/camplynx.cpp +++ b/src/mame/drivers/camplynx.cpp @@ -458,83 +458,88 @@ d0 = read from bank 4 */ } } -ADDRESS_MAP_START(camplynx_state::lynx48k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1") - AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2") - AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3") - AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4") - AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5") - AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6") - AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7") - AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8") - AM_RANGE(0x0000,0xffff) AM_WRITE(bank6_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(camplynx_state::lynx128k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1") - AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2") - AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3") - AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4") - AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5") - AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6") - AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7") - AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8") - AM_RANGE(0x0000,0xffff) AM_WRITE(bank1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(camplynx_state::lynx48k_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x007f,0x007f) AM_MIRROR(0xff80) AM_WRITE(port7f_w) - AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w) - AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ(port80_r) - AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1") - AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2") - AM_RANGE(0x0380,0x0380) AM_MIRROR(0xf000) AM_READ_PORT("LINE3") - AM_RANGE(0x0480,0x0480) AM_MIRROR(0xf000) AM_READ_PORT("LINE4") - AM_RANGE(0x0580,0x0580) AM_MIRROR(0xf000) AM_READ_PORT("LINE5") - AM_RANGE(0x0680,0x0680) AM_MIRROR(0xf000) AM_READ_PORT("LINE6") - AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7") - AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8") - AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9") - AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w) - AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(camplynx_state::lynx96k_io) - AM_IMPORT_FROM(lynx48k_io) - AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_device, read) - AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_device, write) - AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(camplynx_state::lynx128k_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_device, read) - AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_device, write) - AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w) +void camplynx_state::lynx48k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankr("bankr1"); + map(0x2000, 0x3fff).bankr("bankr2"); + map(0x4000, 0x5fff).bankr("bankr3"); + map(0x6000, 0x7fff).bankr("bankr4"); + map(0x8000, 0x9fff).bankr("bankr5"); + map(0xa000, 0xbfff).bankr("bankr6"); + map(0xc000, 0xdfff).bankr("bankr7"); + map(0xe000, 0xffff).bankr("bankr8"); + map(0x0000, 0xffff).w(this, FUNC(camplynx_state::bank6_w)); +} + +void camplynx_state::lynx128k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankr("bankr1"); + map(0x2000, 0x3fff).bankr("bankr2"); + map(0x4000, 0x5fff).bankr("bankr3"); + map(0x6000, 0x7fff).bankr("bankr4"); + map(0x8000, 0x9fff).bankr("bankr5"); + map(0xa000, 0xbfff).bankr("bankr6"); + map(0xc000, 0xdfff).bankr("bankr7"); + map(0xe000, 0xffff).bankr("bankr8"); + map(0x0000, 0xffff).w(this, FUNC(camplynx_state::bank1_w)); +} + +void camplynx_state::lynx48k_io(address_map &map) +{ + map.unmap_value_high(); + map(0x007f, 0x007f).mirror(0xff80).w(this, FUNC(camplynx_state::port7f_w)); + map(0x0080, 0x0080).mirror(0xff00).w(this, FUNC(camplynx_state::port80_w)); + map(0x0080, 0x0080).mirror(0xf000).r(this, FUNC(camplynx_state::port80_r)); + map(0x0180, 0x0180).mirror(0xf000).portr("LINE1"); + map(0x0280, 0x0280).mirror(0xf000).portr("LINE2"); + map(0x0380, 0x0380).mirror(0xf000).portr("LINE3"); + map(0x0480, 0x0480).mirror(0xf000).portr("LINE4"); + map(0x0580, 0x0580).mirror(0xf000).portr("LINE5"); + map(0x0680, 0x0680).mirror(0xf000).portr("LINE6"); + map(0x0780, 0x0780).mirror(0xf000).portr("LINE7"); + map(0x0880, 0x0880).mirror(0xf000).portr("LINE8"); + map(0x0980, 0x0980).mirror(0xf000).portr("LINE9"); + map(0x0084, 0x0084).mirror(0xff00).w(this, FUNC(camplynx_state::port84_w)); + map(0x0086, 0x0086).mirror(0xff00).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x0087, 0x0087).mirror(0xff00).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} + +void camplynx_state::lynx96k_io(address_map &map) +{ + lynx48k_io(map); + map(0x0050, 0x0053).mirror(0xff80).r("fdc", FUNC(fd1793_device::read)); + map(0x0054, 0x0057).mirror(0xff80).w("fdc", FUNC(fd1793_device::write)); + map(0x0058, 0x0058).mirror(0xff80).w(this, FUNC(camplynx_state::port58_w)); +} + +void camplynx_state::lynx128k_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0050, 0x0053).mirror(0xff80).r("fdc", FUNC(fd1793_device::read)); + map(0x0054, 0x0057).mirror(0xff80).w("fdc", FUNC(fd1793_device::write)); + map(0x0058, 0x0058).mirror(0xff80).w(this, FUNC(camplynx_state::port58_w)); // AM_RANGE(0x007a,0x007b) AM_MIRROR(0xff80) AM_READ(lynx128k_joysticks_r) // AM_RANGE(0x007c,0x007c) AM_MIRROR(0xff80) AM_READ(lynx128k_printer_r) // AM_RANGE(0x007d,0x007d) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_init_w) // this is rw // AM_RANGE(0x007e,0x007e) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_w) - AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w) - AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ_PORT("LINE0") - AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1") - AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2") - AM_RANGE(0x0380,0x0380) AM_MIRROR(0xf000) AM_READ_PORT("LINE3") - AM_RANGE(0x0480,0x0480) AM_MIRROR(0xf000) AM_READ_PORT("LINE4") - AM_RANGE(0x0580,0x0580) AM_MIRROR(0xf000) AM_READ_PORT("LINE5") - AM_RANGE(0x0680,0x0680) AM_MIRROR(0xf000) AM_READ_PORT("LINE6") - AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7") - AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8") - AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9") - AM_RANGE(0x0082,0x0082) AM_MIRROR(0xff00) AM_READWRITE(port82_r,port82_w) // read=serial buffer - AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w) - AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END + map(0x0080, 0x0080).mirror(0xff00).w(this, FUNC(camplynx_state::port80_w)); + map(0x0080, 0x0080).mirror(0xf000).portr("LINE0"); + map(0x0180, 0x0180).mirror(0xf000).portr("LINE1"); + map(0x0280, 0x0280).mirror(0xf000).portr("LINE2"); + map(0x0380, 0x0380).mirror(0xf000).portr("LINE3"); + map(0x0480, 0x0480).mirror(0xf000).portr("LINE4"); + map(0x0580, 0x0580).mirror(0xf000).portr("LINE5"); + map(0x0680, 0x0680).mirror(0xf000).portr("LINE6"); + map(0x0780, 0x0780).mirror(0xf000).portr("LINE7"); + map(0x0880, 0x0880).mirror(0xf000).portr("LINE8"); + map(0x0980, 0x0980).mirror(0xf000).portr("LINE9"); + map(0x0082, 0x0082).mirror(0xff00).rw(this, FUNC(camplynx_state::port82_r), FUNC(camplynx_state::port82_w)); // read=serial buffer + map(0x0084, 0x0084).mirror(0xff00).w(this, FUNC(camplynx_state::port84_w)); + map(0x0086, 0x0086).mirror(0xff00).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x0087, 0x0087).mirror(0xff00).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} /* Input ports */ static INPUT_PORTS_START( lynx48k ) diff --git a/src/mame/drivers/candela.cpp b/src/mame/drivers/candela.cpp index 50becbb886b..e116df387cc 100644 --- a/src/mame/drivers/candela.cpp +++ b/src/mame/drivers/candela.cpp @@ -471,10 +471,11 @@ WRITE_LINE_MEMBER (can09t_state::write_acia_clock){ * *0xe000-0xffff PROM monitor 0xe000-0xffff PROM monitor */ -ADDRESS_MAP_START(can09t_state::can09t_map) +void can09t_state::can09t_map(address_map &map) +{ // Everything is dynamically and asymetrically mapped through the PAL decoded by read/write - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END + map(0x0000, 0xffff).rw(this, FUNC(can09t_state::read), FUNC(can09t_state::write)); +} static INPUT_PORTS_START( can09t ) INPUT_PORTS_END @@ -625,7 +626,8 @@ INPUT_PORTS_END // traced and guessed from pcb images and debugger // It is very likelly that this is a PIA based dynamic address map, needs more analysis -ADDRESS_MAP_START(can09_state::can09_map) +void can09_state::can09_map(address_map &map) +{ /* * Port A=0x18 B=0x20 erase 0-7fff * Port A=0x18 B=0x30 erase 0-7fff @@ -633,21 +635,21 @@ ADDRESS_MAP_START(can09_state::can09_map) * Port A=0x10 B= */ // AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x0000, 0x7fff) AM_RAM AM_RAMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xe020, 0xe020) AM_DEVWRITE("crtc", h46505_device, address_w) - AM_RANGE(0xe021, 0xe021) AM_DEVWRITE("crtc", h46505_device, register_w) - AM_RANGE(0xe034, 0xe037) AM_DEVREADWRITE(PIA1_TAG, pia6821_device, read, write) + map(0x0000, 0x7fff).ram().bankrw("bank1"); + map(0xe000, 0xffff).rom().region("roms", 0); + map(0xe020, 0xe020).w(m_crtc, FUNC(h46505_device::address_w)); + map(0xe021, 0xe021).w(m_crtc, FUNC(h46505_device::register_w)); + map(0xe034, 0xe037).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); #if 0 - AM_RANGE(0xb100, 0xb101) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xb110, 0xb113) AM_DEVREADWRITE(PIA1_TAG, pia6821_device, read_alt, write_alt) - AM_RANGE(0xb120, 0xb123) AM_DEVREADWRITE(PIA2_TAG, pia6821_device, read_alt, write_alt) - AM_RANGE(0xb130, 0xb137) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xb200, 0xc1ff) AM_ROM AM_REGION("roms", 0x3200) - AM_RANGE(0xc200, 0xdfff) AM_RAM /* Needed for BASIC etc */ + map(0xb100, 0xb101).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xb110, 0xb113).rw(m_pia1, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xb120, 0xb123).rw(PIA2_TAG, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xb130, 0xb137).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xb200, 0xc1ff).rom().region("roms", 0x3200); + map(0xc200, 0xdfff).ram(); /* Needed for BASIC etc */ #endif -ADDRESS_MAP_END +} #ifdef UNUSED_VARIABLE static DEVICE_INPUT_DEFAULTS_START( terminal ) diff --git a/src/mame/drivers/canon_s80.cpp b/src/mame/drivers/canon_s80.cpp index 3ace908cbbf..a4e6f68320d 100644 --- a/src/mame/drivers/canon_s80.cpp +++ b/src/mame/drivers/canon_s80.cpp @@ -33,10 +33,11 @@ public: }; -ADDRESS_MAP_START(canons80_state::canons80_map) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void canons80_state::canons80_map(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xffff).rom(); +} MACHINE_CONFIG_START(canons80_state::canons80) /* basic machine hardware */ diff --git a/src/mame/drivers/canyon.cpp b/src/mame/drivers/canyon.cpp index f738a160ea9..e93ba74d957 100644 --- a/src/mame/drivers/canyon.cpp +++ b/src/mame/drivers/canyon.cpp @@ -120,18 +120,19 @@ WRITE_LINE_MEMBER(canyon_state::led2_w) * *************************************/ -ADDRESS_MAP_START(canyon_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x100) AM_RAM - AM_RANGE(0x0400, 0x0401) AM_WRITE(canyon_motor_w) - AM_RANGE(0x0500, 0x0500) AM_WRITE(canyon_explode_w) - AM_RANGE(0x0501, 0x0501) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog, disabled in service mode */ - AM_RANGE(0x0600, 0x0603) AM_SELECT(0x0180) AM_WRITE(output_latch_w) - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(canyon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x17ff) AM_READ(canyon_switches_r) AM_WRITENOP /* sloppy code writes here */ - AM_RANGE(0x1800, 0x1fff) AM_READ(canyon_options_r) - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void canyon_state::main_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x00ff).mirror(0x100).ram(); + map(0x0400, 0x0401).w(this, FUNC(canyon_state::canyon_motor_w)); + map(0x0500, 0x0500).w(this, FUNC(canyon_state::canyon_explode_w)); + map(0x0501, 0x0501).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); /* watchdog, disabled in service mode */ + map(0x0600, 0x0603).select(0x0180).w(this, FUNC(canyon_state::output_latch_w)); + map(0x0800, 0x0bff).ram().w(this, FUNC(canyon_state::canyon_videoram_w)).share("videoram"); + map(0x1000, 0x17ff).r(this, FUNC(canyon_state::canyon_switches_r)).nopw(); /* sloppy code writes here */ + map(0x1800, 0x1fff).r(this, FUNC(canyon_state::canyon_options_r)); + map(0x2000, 0x3fff).rom(); +} diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp index 0c15b0981ee..fa7c3a639e9 100644 --- a/src/mame/drivers/capbowl.cpp +++ b/src/mame/drivers/capbowl.cpp @@ -208,31 +208,33 @@ WRITE8_MEMBER(capbowl_state::sndcmd_w) * *************************************/ -ADDRESS_MAP_START(capbowl_state::capbowl_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x4000) AM_WRITEONLY AM_SHARE("rowaddress") - AM_RANGE(0x4800, 0x4800) AM_WRITE(capbowl_rom_select_w) - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x5800, 0x5fff) AM_READWRITE(tms34061_r, tms34061_w) - AM_RANGE(0x6000, 0x6000) AM_WRITE(sndcmd_w) - AM_RANGE(0x6800, 0x6800) AM_WRITE(track_reset_w) AM_READNOP /* + watchdog */ - AM_RANGE(0x7000, 0x7000) AM_READ(track_0_r) /* + other inputs */ - AM_RANGE(0x7800, 0x7800) AM_READ(track_1_r) /* + other inputs */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(capbowl_state::bowlrama_map) - AM_RANGE(0x0000, 0x001f) AM_READWRITE(bowlrama_blitter_r, bowlrama_blitter_w) - AM_RANGE(0x4000, 0x4000) AM_WRITEONLY AM_SHARE("rowaddress") - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x5800, 0x5fff) AM_READWRITE(tms34061_r, tms34061_w) - AM_RANGE(0x6000, 0x6000) AM_WRITE(sndcmd_w) - AM_RANGE(0x6800, 0x6800) AM_WRITE(track_reset_w) AM_READNOP /* + watchdog */ - AM_RANGE(0x7000, 0x7000) AM_READ(track_0_r) /* + other inputs */ - AM_RANGE(0x7800, 0x7800) AM_READ(track_1_r) /* + other inputs */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void capbowl_state::capbowl_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x4000).writeonly().share("rowaddress"); + map(0x4800, 0x4800).w(this, FUNC(capbowl_state::capbowl_rom_select_w)); + map(0x5000, 0x57ff).ram().share("nvram"); + map(0x5800, 0x5fff).rw(this, FUNC(capbowl_state::tms34061_r), FUNC(capbowl_state::tms34061_w)); + map(0x6000, 0x6000).w(this, FUNC(capbowl_state::sndcmd_w)); + map(0x6800, 0x6800).w(this, FUNC(capbowl_state::track_reset_w)).nopr(); /* + watchdog */ + map(0x7000, 0x7000).r(this, FUNC(capbowl_state::track_0_r)); /* + other inputs */ + map(0x7800, 0x7800).r(this, FUNC(capbowl_state::track_1_r)); /* + other inputs */ + map(0x8000, 0xffff).rom(); +} + + +void capbowl_state::bowlrama_map(address_map &map) +{ + map(0x0000, 0x001f).rw(this, FUNC(capbowl_state::bowlrama_blitter_r), FUNC(capbowl_state::bowlrama_blitter_w)); + map(0x4000, 0x4000).writeonly().share("rowaddress"); + map(0x5000, 0x57ff).ram().share("nvram"); + map(0x5800, 0x5fff).rw(this, FUNC(capbowl_state::tms34061_r), FUNC(capbowl_state::tms34061_w)); + map(0x6000, 0x6000).w(this, FUNC(capbowl_state::sndcmd_w)); + map(0x6800, 0x6800).w(this, FUNC(capbowl_state::track_reset_w)).nopr(); /* + watchdog */ + map(0x7000, 0x7000).r(this, FUNC(capbowl_state::track_0_r)); /* + other inputs */ + map(0x7800, 0x7800).r(this, FUNC(capbowl_state::track_1_r)); /* + other inputs */ + map(0x8000, 0xffff).rom(); +} @@ -242,14 +244,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(capbowl_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* watchdog */ - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void capbowl_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x1001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x2000, 0x2000).nopw(); /* watchdog */ + map(0x6000, 0x6000).w("dac", FUNC(dac_byte_interface::write)); + map(0x7000, 0x7000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/capcom.cpp b/src/mame/drivers/capcom.cpp index ce5385cdfce..9cbc14466ad 100644 --- a/src/mame/drivers/capcom.cpp +++ b/src/mame/drivers/capcom.cpp @@ -30,9 +30,10 @@ public: }; -ADDRESS_MAP_START(capcom_state::capcom_map) - AM_RANGE(0x0000, 0xffffff) AM_NOP -ADDRESS_MAP_END +void capcom_state::capcom_map(address_map &map) +{ + map(0x0000, 0xffffff).noprw(); +} static INPUT_PORTS_START( capcom ) INPUT_PORTS_END diff --git a/src/mame/drivers/capr1.cpp b/src/mame/drivers/capr1.cpp index 77aa5e1ae58..93151990c6f 100644 --- a/src/mame/drivers/capr1.cpp +++ b/src/mame/drivers/capr1.cpp @@ -66,17 +66,18 @@ WRITE8_MEMBER(capr1_state::output_w) ***************************************************************************/ -ADDRESS_MAP_START(capr1_state::cspin2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa00f) AM_DEVREADWRITE("te7750", te7750_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2203_device, read, write) - AM_RANGE(0xc004, 0xc004) AM_DEVREADWRITE("oki", okim6295_device, read, write) +void capr1_state::cspin2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa00f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)); + map(0xc000, 0xc001).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc004, 0xc004).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // AM_RANGE(0xc008, 0xc009) AM_DEVWRITE("fifo1", m66300_device, write) // AM_RANGE(0xc00c, 0xc00d) AM_DEVWRITE("fifo2", m66300_device, write) // AM_RANGE(0xe000, 0xe001) AM_WRITENOP // AM_RANGE(0xe002, 0xe004) AM_WRITENOP -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/caprcyc.cpp b/src/mame/drivers/caprcyc.cpp index 1102705697f..0c9be4059b7 100644 --- a/src/mame/drivers/caprcyc.cpp +++ b/src/mame/drivers/caprcyc.cpp @@ -39,9 +39,10 @@ public: ***************************************************************************/ -ADDRESS_MAP_START(caprcyc_state::caprcyc_map) // TODO... - AM_RANGE(0x00000000, 0x0003ffff) AM_ROM -ADDRESS_MAP_END +void caprcyc_state::caprcyc_map(address_map &map) +{ // TODO... + map(0x00000000, 0x0003ffff).rom(); +} diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp index 40317c9d05f..1c9726bf83b 100644 --- a/src/mame/drivers/cardline.cpp +++ b/src/mame/drivers/cardline.cpp @@ -212,28 +212,30 @@ WRITE8_MEMBER(cardline_state::lamps_w) output().set_lamp_value(7,(data >> 7) & 1); } -ADDRESS_MAP_START(cardline_state::mem_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cardline_state::mem_io) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("IN0") - AM_RANGE(0x2005, 0x2005) AM_READ_PORT("IN1") - AM_RANGE(0x2006, 0x2006) AM_READ_PORT("DSW") - AM_RANGE(0x2007, 0x2007) AM_WRITE(lamps_w) - AM_RANGE(0x2008, 0x2008) AM_NOP // set to 1 during coin input +void cardline_state::mem_prg(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} + +void cardline_state::mem_io(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2003, 0x2003).portr("IN0"); + map(0x2005, 0x2005).portr("IN1"); + map(0x2006, 0x2006).portr("DSW"); + map(0x2007, 0x2007).w(this, FUNC(cardline_state::lamps_w)); + map(0x2008, 0x2008).noprw(); // set to 1 during coin input //AM_RANGE(0x2080, 0x213f) AM_NOP // ???? - AM_RANGE(0x2100, 0x213f) AM_READWRITE(asic_r, asic_w) - AM_RANGE(0x2400, 0x2400) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2801, 0x2801) AM_DEVWRITE("crtc", mc6845_device, register_w) + map(0x2100, 0x213f).rw(this, FUNC(cardline_state::asic_r), FUNC(cardline_state::asic_w)); + map(0x2400, 0x2400).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2801, 0x2801).w("crtc", FUNC(mc6845_device::register_w)); //AM_RANGE(0x2840, 0x2840) AM_NOP // ??? //AM_RANGE(0x2880, 0x2880) AM_NOP // ??? - AM_RANGE(0x3003, 0x3003) AM_WRITE(a3003_w) - AM_RANGE(0xc000, 0xdfff) AM_WRITE(vram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xffff) AM_WRITE(attr_w) AM_SHARE("colorram") -ADDRESS_MAP_END + map(0x3003, 0x3003).w(this, FUNC(cardline_state::a3003_w)); + map(0xc000, 0xdfff).w(this, FUNC(cardline_state::vram_w)).share("videoram"); + map(0xe000, 0xffff).w(this, FUNC(cardline_state::attr_w)).share("colorram"); +} static INPUT_PORTS_START( cardline ) diff --git a/src/mame/drivers/carjmbre.cpp b/src/mame/drivers/carjmbre.cpp index 6840af31d14..fd987a94566 100644 --- a/src/mame/drivers/carjmbre.cpp +++ b/src/mame/drivers/carjmbre.cpp @@ -241,37 +241,40 @@ WRITE8_MEMBER(carjmbre_state::flipscreen_w) flip_screen_set(data & 1); } -ADDRESS_MAP_START(carjmbre_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8803, 0x8803) AM_WRITE(nmi_enable_w) - AM_RANGE(0x8805, 0x8805) AM_WRITE(bgcolor_w) - AM_RANGE(0x8807, 0x8807) AM_WRITE(flipscreen_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM // 6116 - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") // 2114*4 - AM_RANGE(0x9800, 0x98ff) AM_RAM AM_SHARE("spriteram") // 5101*2 - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN1") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN2") - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END +void carjmbre_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8803, 0x8803).w(this, FUNC(carjmbre_state::nmi_enable_w)); + map(0x8805, 0x8805).w(this, FUNC(carjmbre_state::bgcolor_w)); + map(0x8807, 0x8807).w(this, FUNC(carjmbre_state::flipscreen_w)); + map(0x8000, 0x87ff).ram(); // 6116 + map(0x9000, 0x97ff).ram().w(this, FUNC(carjmbre_state::videoram_w)).share("videoram"); // 2114*4 + map(0x9800, 0x98ff).ram().share("spriteram"); // 5101*2 + map(0xa000, 0xa000).portr("IN1"); + map(0xa800, 0xa800).portr("IN2"); + map(0xb800, 0xb800).portr("DSW").w("soundlatch", FUNC(generic_latch_8_device::write)); +} // audiocpu side -ADDRESS_MAP_START(carjmbre_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM // 6116 -ADDRESS_MAP_END - -ADDRESS_MAP_START(carjmbre_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x22, 0x22) AM_WRITENOP // bdir/bc2/bc1 1/0/1 inactive write - AM_RANGE(0x24, 0x24) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x30, 0x31) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x32, 0x32) AM_WRITENOP // bdir/bc2/bc1 1/0/1 inactive write - AM_RANGE(0x34, 0x34) AM_DEVREAD("ay2", ay8910_device, data_r) -ADDRESS_MAP_END +void carjmbre_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).mirror(0x1000).rom(); + map(0x2000, 0x27ff).ram(); // 6116 +} + +void carjmbre_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x20, 0x21).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x22, 0x22).nopw(); // bdir/bc2/bc1 1/0/1 inactive write + map(0x24, 0x24).r("ay1", FUNC(ay8910_device::data_r)); + map(0x30, 0x31).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x32, 0x32).nopw(); // bdir/bc2/bc1 1/0/1 inactive write + map(0x34, 0x34).r("ay2", FUNC(ay8910_device::data_r)); +} diff --git a/src/mame/drivers/carpolo.cpp b/src/mame/drivers/carpolo.cpp index e2a2c6ecf44..6370d0f7a8b 100644 --- a/src/mame/drivers/carpolo.cpp +++ b/src/mame/drivers/carpolo.cpp @@ -34,29 +34,30 @@ * *************************************/ -ADDRESS_MAP_START(carpolo_state::main_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x3000, 0x30ff) AM_WRITEONLY AM_SHARE("alpharam") - AM_RANGE(0x4000, 0x400f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x5400, 0x5403) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x5800, 0x5803) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_READ(carpolo_ball_screen_collision_cause_r) - AM_RANGE(0xa001, 0xa001) AM_READ(carpolo_car_ball_collision_x_r) - AM_RANGE(0xa002, 0xa002) AM_READ(carpolo_car_ball_collision_y_r) - AM_RANGE(0xa003, 0xa003) AM_READ(carpolo_car_car_collision_cause_r) - AM_RANGE(0xa004, 0xa004) AM_READ(carpolo_car_border_collision_cause_r) - AM_RANGE(0xa005, 0xa005) AM_READ(carpolo_car_ball_collision_cause_r) - AM_RANGE(0xa006, 0xa006) AM_READ(carpolo_car_goal_collision_cause_r) - AM_RANGE(0xa007, 0xa007) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_WRITE(carpolo_ball_screen_interrupt_clear_w) - AM_RANGE(0xb001, 0xb001) AM_WRITE(carpolo_timer_interrupt_clear_w) - AM_RANGE(0xb003, 0xb003) AM_WRITE(carpolo_car_car_interrupt_clear_w) - AM_RANGE(0xb004, 0xb004) AM_WRITE(carpolo_car_border_interrupt_clear_w) - AM_RANGE(0xb005, 0xb005) AM_WRITE(carpolo_car_ball_interrupt_clear_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(carpolo_car_goal_interrupt_clear_w) - AM_RANGE(0xc000, 0xc000) AM_READ(carpolo_interrupt_cause_r) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void carpolo_state::main_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x3000, 0x30ff).writeonly().share("alpharam"); + map(0x4000, 0x400f).writeonly().share("spriteram"); + map(0x5400, 0x5403).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5800, 0x5803).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xa000, 0xa000).r(this, FUNC(carpolo_state::carpolo_ball_screen_collision_cause_r)); + map(0xa001, 0xa001).r(this, FUNC(carpolo_state::carpolo_car_ball_collision_x_r)); + map(0xa002, 0xa002).r(this, FUNC(carpolo_state::carpolo_car_ball_collision_y_r)); + map(0xa003, 0xa003).r(this, FUNC(carpolo_state::carpolo_car_car_collision_cause_r)); + map(0xa004, 0xa004).r(this, FUNC(carpolo_state::carpolo_car_border_collision_cause_r)); + map(0xa005, 0xa005).r(this, FUNC(carpolo_state::carpolo_car_ball_collision_cause_r)); + map(0xa006, 0xa006).r(this, FUNC(carpolo_state::carpolo_car_goal_collision_cause_r)); + map(0xa007, 0xa007).portr("IN1"); + map(0xb000, 0xb000).w(this, FUNC(carpolo_state::carpolo_ball_screen_interrupt_clear_w)); + map(0xb001, 0xb001).w(this, FUNC(carpolo_state::carpolo_timer_interrupt_clear_w)); + map(0xb003, 0xb003).w(this, FUNC(carpolo_state::carpolo_car_car_interrupt_clear_w)); + map(0xb004, 0xb004).w(this, FUNC(carpolo_state::carpolo_car_border_interrupt_clear_w)); + map(0xb005, 0xb005).w(this, FUNC(carpolo_state::carpolo_car_ball_interrupt_clear_w)); + map(0xb006, 0xb006).w(this, FUNC(carpolo_state::carpolo_car_goal_interrupt_clear_w)); + map(0xc000, 0xc000).r(this, FUNC(carpolo_state::carpolo_interrupt_cause_r)); + map(0xf000, 0xffff).rom(); +} diff --git a/src/mame/drivers/carrera.cpp b/src/mame/drivers/carrera.cpp index b7a9cce6b41..f1a1c52890e 100644 --- a/src/mame/drivers/carrera.cpp +++ b/src/mame/drivers/carrera.cpp @@ -79,25 +79,27 @@ public: }; -ADDRESS_MAP_START(carrera_state::carrera_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe801, 0xe801) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("tileram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(carrera_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3") - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4") - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5") - AM_RANGE(0x06, 0x06) AM_WRITENOP // ? - AM_RANGE(0x08, 0x09) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void carrera_state::carrera_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xe800).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe801, 0xe801).w("crtc", FUNC(mc6845_device::register_w)); + map(0xf000, 0xffff).ram().share("tileram"); +} + +void carrera_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).portr("IN3"); + map(0x04, 0x04).portr("IN4"); + map(0x05, 0x05).portr("IN5"); + map(0x06, 0x06).nopw(); // ? + map(0x08, 0x09).w("aysnd", FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( carrera ) PORT_START("IN0") /* Port 0 */ diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp index a4eadcd402d..11f074bf444 100644 --- a/src/mame/drivers/casloopy.cpp +++ b/src/mame/drivers/casloopy.cpp @@ -424,23 +424,24 @@ READ32_MEMBER(casloopy_state::cart_r) } -ADDRESS_MAP_START(casloopy_state::casloopy_map) - AM_RANGE(0x00000000, 0x00007fff) AM_RAM AM_SHARE("bios_rom") - AM_RANGE(0x01000000, 0x0107ffff) AM_RAM AM_SHARE("wram")// stack pointer points here - AM_RANGE(0x04000000, 0x0401ffff) AM_READWRITE8(bitmap_r, bitmap_w, 0xffffffff) - AM_RANGE(0x04040000, 0x0404ffff) AM_READWRITE8(vram_r, vram_w, 0xffffffff) // tilemap + PCG - AM_RANGE(0x04050000, 0x040503ff) AM_RAM // ??? - AM_RANGE(0x04051000, 0x040511ff) AM_READWRITE16(pal_r, pal_w, 0xffffffff) - AM_RANGE(0x04058000, 0x04058007) AM_READWRITE16(vregs_r, vregs_w, 0xffffffff) - AM_RANGE(0x0405b000, 0x0405b00f) AM_RAM AM_SHARE("vregs") // RGB555 brightness control plus scrolling +void casloopy_state::casloopy_map(address_map &map) +{ + map(0x00000000, 0x00007fff).ram().share("bios_rom"); + map(0x01000000, 0x0107ffff).ram().share("wram");// stack pointer points here + map(0x04000000, 0x0401ffff).rw(this, FUNC(casloopy_state::bitmap_r), FUNC(casloopy_state::bitmap_w)); + map(0x04040000, 0x0404ffff).rw(this, FUNC(casloopy_state::vram_r), FUNC(casloopy_state::vram_w)); // tilemap + PCG + map(0x04050000, 0x040503ff).ram(); // ??? + map(0x04051000, 0x040511ff).rw(this, FUNC(casloopy_state::pal_r), FUNC(casloopy_state::pal_w)); + map(0x04058000, 0x04058007).rw(this, FUNC(casloopy_state::vregs_r), FUNC(casloopy_state::vregs_w)); + map(0x0405b000, 0x0405b00f).ram().share("vregs"); // RGB555 brightness control plus scrolling // AM_RANGE(0x05ffff00, 0x05ffffff) AM_READWRITE16(sh7021_r, sh7021_w, 0xffffffff) // AM_RANGE(0x05ffff00, 0x05ffffff) - SH7021 internal i/o - AM_RANGE(0x06000000, 0x062fffff) AM_READ(cart_r) - AM_RANGE(0x07000000, 0x070003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb) - AM_RANGE(0x09000000, 0x0907ffff) AM_RAM AM_SHARE("wram") - AM_RANGE(0x0e000000, 0x0e2fffff) AM_READ(cart_r) - AM_RANGE(0x0f000000, 0x0f0003ff) AM_RAM AM_SHARE("oram") -ADDRESS_MAP_END + map(0x06000000, 0x062fffff).r(this, FUNC(casloopy_state::cart_r)); + map(0x07000000, 0x070003ff).ram().share("oram");// on-chip RAM, actually at 0xf000000 (1 kb) + map(0x09000000, 0x0907ffff).ram().share("wram"); + map(0x0e000000, 0x0e2fffff).r(this, FUNC(casloopy_state::cart_r)); + map(0x0f000000, 0x0f0003ff).ram().share("oram"); +} #if 0 ADDRESS_MAP_START(casloopy_state::casloopy_sub_map) diff --git a/src/mame/drivers/castle.cpp b/src/mame/drivers/castle.cpp index 4fc65727059..25769b94c91 100644 --- a/src/mame/drivers/castle.cpp +++ b/src/mame/drivers/castle.cpp @@ -67,13 +67,15 @@ protected: }; -ADDRESS_MAP_START(castle_state::V1rvE_mastermap) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void castle_state::V1rvE_mastermap(address_map &map) +{ + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(castle_state::V1rvE_slavemap) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void castle_state::V1rvE_slavemap(address_map &map) +{ + map(0x8000, 0xffff).rom(); +} @@ -91,9 +93,10 @@ MACHINE_CONFIG_END -ADDRESS_MAP_START(castle_state::V2rvA_map) - AM_RANGE(0x2000, 0xffff) AM_ROM -ADDRESS_MAP_END +void castle_state::V2rvA_map(address_map &map) +{ + map(0x2000, 0xffff).rom(); +} MACHINE_CONFIG_START(castle_state::castle_V2rvA) diff --git a/src/mame/drivers/caswin.cpp b/src/mame/drivers/caswin.cpp index 14e39c84db0..aeeb6cfd476 100644 --- a/src/mame/drivers/caswin.cpp +++ b/src/mame/drivers/caswin.cpp @@ -197,25 +197,27 @@ WRITE8_MEMBER(caswin_state::vvillage_lamps_w) output().set_led_value(4, data & 0x10); } -ADDRESS_MAP_START(caswin_state::vvillage_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_READ(vvillage_rng_r) //accessed by caswin only - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram") - AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sc0_attr_w) AM_SHARE("sc0_attr") -ADDRESS_MAP_END - -ADDRESS_MAP_START(caswin_state::vvillage_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10,0x10) AM_READ_PORT("IN0") - AM_RANGE(0x11,0x11) AM_READ_PORT("IN1") - AM_RANGE(0x10,0x10) AM_WRITE(vvillage_scroll_w) - AM_RANGE(0x11,0x11) AM_WRITE(vvillage_vregs_w) - AM_RANGE(0x12,0x12) AM_WRITE(vvillage_lamps_w) - AM_RANGE(0x13,0x13) AM_WRITE(vvillage_output_w) -ADDRESS_MAP_END +void caswin_state::vvillage_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa000).r(this, FUNC(caswin_state::vvillage_rng_r)); //accessed by caswin only + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xf000, 0xf3ff).ram().w(this, FUNC(caswin_state::sc0_vram_w)).share("sc0_vram"); + map(0xf800, 0xfbff).ram().w(this, FUNC(caswin_state::sc0_attr_w)).share("sc0_attr"); +} + +void caswin_state::vvillage_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("IN0"); + map(0x11, 0x11).portr("IN1"); + map(0x10, 0x10).w(this, FUNC(caswin_state::vvillage_scroll_w)); + map(0x11, 0x11).w(this, FUNC(caswin_state::vvillage_vregs_w)); + map(0x12, 0x12).w(this, FUNC(caswin_state::vvillage_lamps_w)); + map(0x13, 0x13).w(this, FUNC(caswin_state::vvillage_output_w)); +} static INPUT_PORTS_START( vvillage ) diff --git a/src/mame/drivers/cat.cpp b/src/mame/drivers/cat.cpp index 3657f02f4ad..35224150507 100644 --- a/src/mame/drivers/cat.cpp +++ b/src/mame/drivers/cat.cpp @@ -757,32 +757,33 @@ a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 */ -ADDRESS_MAP_START(cat_state::cat_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_MIRROR(0x180000) // 256 KB ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("svram") AM_MIRROR(0x18C000)// SRAM powered by battery - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("svrom",0x0000) AM_MIRROR(0x180000) // SV ROM - AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_SHARE("p_cat_vram") AM_MIRROR(0x180000) // 512 KB RAM - AM_RANGE(0x600000, 0x67ffff) AM_READWRITE(cat_2e80_r,cat_video_control_w) AM_MIRROR(0x180000) // Gate Array #1: Video Addressing and Timing, dram refresh timing, dram /cs and /wr (ga2 does the actual video invert/display and access to the dram data bus) - AM_RANGE(0x800000, 0x800001) AM_READWRITE(cat_floppy_control_r, cat_floppy_control_w) AM_MIRROR(0x18FFE0) // floppy control lines and readback - AM_RANGE(0x800002, 0x800003) AM_READWRITE(cat_0080_r, cat_keyboard_w) AM_MIRROR(0x18FFE0) // keyboard col write - AM_RANGE(0x800004, 0x800005) AM_READWRITE(cat_0080_r, cat_printer_data_w) AM_MIRROR(0x18FFE0) // Centronics Printer Data - AM_RANGE(0x800006, 0x800007) AM_READWRITE(cat_floppy_data_r,cat_floppy_data_w) AM_MIRROR(0x18FFE0) // floppy data read/write - AM_RANGE(0x800008, 0x800009) AM_READ(cat_floppy_status_r) AM_MIRROR(0x18FFE0) // floppy status lines - AM_RANGE(0x80000a, 0x80000b) AM_READ(cat_keyboard_r) AM_MIRROR(0x18FFE0) // keyboard row read - AM_RANGE(0x80000c, 0x80000d) AM_READ(cat_0080_r) AM_MIRROR(0x18FFE0) // Open bus? - AM_RANGE(0x80000e, 0x80000f) AM_READWRITE(cat_battery_r,cat_printer_control_w) AM_MIRROR(0x18FFE0) // Centronics Printer Control, keyboard led and country code enable - AM_RANGE(0x800010, 0x80001f) AM_READ(cat_0080_r) AM_MIRROR(0x18FFE0) // Open bus? - AM_RANGE(0x810000, 0x81001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff ) AM_MIRROR(0x18FFE0) - AM_RANGE(0x820000, 0x82003f) AM_READWRITE(cat_modem_r,cat_modem_w) AM_MIRROR(0x18FFC0) // AMI S35213 Modem Chip, all access is on bit 7 - AM_RANGE(0x830000, 0x830001) AM_READ(cat_6ms_counter_r) AM_MIRROR(0x18FFFE) // 16bit 6ms counter clocked by output of another 16bit counter clocked at 10mhz - AM_RANGE(0x840000, 0x840001) AM_READWRITE(cat_2e80_r,cat_opr_w) AM_MIRROR(0x18FFFE) // GA2 Output port register (video enable, invert, watchdog reset, phone relays) - AM_RANGE(0x850000, 0x850001) AM_READ(cat_wdt_r) AM_MIRROR(0x18FFFE) // watchdog and power fail state read - AM_RANGE(0x860000, 0x860001) AM_READWRITE(cat_0000_r, cat_tcb_w) AM_MIRROR(0x18FFFE) // Test mode - AM_RANGE(0x870000, 0x870001) AM_READ(cat_2e80_r) AM_MIRROR(0x18FFFE) // Open bus? - AM_RANGE(0xA00000, 0xA00001) AM_READ(cat_2e80_r) AM_MIRROR(0x1FFFFE) // Open bus/dtack? The 0xA00000-0xA3ffff area is ram used for shadow rom storage on cat developer machines, which is either banked over top of, or jumped to instead of the normal rom - AM_RANGE(0xC00000, 0xC00001) AM_READ(cat_2e80_r) AM_MIRROR(0x3FFFFE) // Open bus/vme? -ADDRESS_MAP_END +void cat_state::cat_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom().mirror(0x180000); // 256 KB ROM + map(0x040000, 0x043fff).ram().share("svram").mirror(0x18C000);// SRAM powered by battery + map(0x200000, 0x27ffff).rom().region("svrom", 0x0000).mirror(0x180000); // SV ROM + map(0x400000, 0x47ffff).ram().share("p_cat_vram").mirror(0x180000); // 512 KB RAM + map(0x600000, 0x67ffff).rw(this, FUNC(cat_state::cat_2e80_r), FUNC(cat_state::cat_video_control_w)).mirror(0x180000); // Gate Array #1: Video Addressing and Timing, dram refresh timing, dram /cs and /wr (ga2 does the actual video invert/display and access to the dram data bus) + map(0x800000, 0x800001).rw(this, FUNC(cat_state::cat_floppy_control_r), FUNC(cat_state::cat_floppy_control_w)).mirror(0x18FFE0); // floppy control lines and readback + map(0x800002, 0x800003).rw(this, FUNC(cat_state::cat_0080_r), FUNC(cat_state::cat_keyboard_w)).mirror(0x18FFE0); // keyboard col write + map(0x800004, 0x800005).rw(this, FUNC(cat_state::cat_0080_r), FUNC(cat_state::cat_printer_data_w)).mirror(0x18FFE0); // Centronics Printer Data + map(0x800006, 0x800007).rw(this, FUNC(cat_state::cat_floppy_data_r), FUNC(cat_state::cat_floppy_data_w)).mirror(0x18FFE0); // floppy data read/write + map(0x800008, 0x800009).r(this, FUNC(cat_state::cat_floppy_status_r)).mirror(0x18FFE0); // floppy status lines + map(0x80000a, 0x80000b).r(this, FUNC(cat_state::cat_keyboard_r)).mirror(0x18FFE0); // keyboard row read + map(0x80000c, 0x80000d).r(this, FUNC(cat_state::cat_0080_r)).mirror(0x18FFE0); // Open bus? + map(0x80000e, 0x80000f).rw(this, FUNC(cat_state::cat_battery_r), FUNC(cat_state::cat_printer_control_w)).mirror(0x18FFE0); // Centronics Printer Control, keyboard led and country code enable + map(0x800010, 0x80001f).r(this, FUNC(cat_state::cat_0080_r)).mirror(0x18FFE0); // Open bus? + map(0x810000, 0x81001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff).mirror(0x18FFE0); + map(0x820000, 0x82003f).rw(this, FUNC(cat_state::cat_modem_r), FUNC(cat_state::cat_modem_w)).mirror(0x18FFC0); // AMI S35213 Modem Chip, all access is on bit 7 + map(0x830000, 0x830001).r(this, FUNC(cat_state::cat_6ms_counter_r)).mirror(0x18FFFE); // 16bit 6ms counter clocked by output of another 16bit counter clocked at 10mhz + map(0x840000, 0x840001).rw(this, FUNC(cat_state::cat_2e80_r), FUNC(cat_state::cat_opr_w)).mirror(0x18FFFE); // GA2 Output port register (video enable, invert, watchdog reset, phone relays) + map(0x850000, 0x850001).r(this, FUNC(cat_state::cat_wdt_r)).mirror(0x18FFFE); // watchdog and power fail state read + map(0x860000, 0x860001).rw(this, FUNC(cat_state::cat_0000_r), FUNC(cat_state::cat_tcb_w)).mirror(0x18FFFE); // Test mode + map(0x870000, 0x870001).r(this, FUNC(cat_state::cat_2e80_r)).mirror(0x18FFFE); // Open bus? + map(0xA00000, 0xA00001).r(this, FUNC(cat_state::cat_2e80_r)).mirror(0x1FFFFE); // Open bus/dtack? The 0xA00000-0xA3ffff area is ram used for shadow rom storage on cat developer machines, which is either banked over top of, or jumped to instead of the normal rom + map(0xC00000, 0xC00001).r(this, FUNC(cat_state::cat_2e80_r)).mirror(0x3FFFFE); // Open bus/vme? +} /* Input ports */ diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp index 3df9d155d4f..d42add50cdd 100644 --- a/src/mame/drivers/cave.cpp +++ b/src/mame/drivers/cave.cpp @@ -491,48 +491,50 @@ WRITE16_MEMBER(cave_state::vram_8x8_w) Dangun Feveron ***************************************************************************/ -ADDRESS_MAP_START(cave_state::dfeveron_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x708000, 0x708fff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x710000, 0x710bff) AM_READONLY // ? - AM_RANGE(0x710c00, 0x710fff) AM_RAM // ? - AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::dfeveron_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x708000, 0x708fff).ram().share("paletteram.0"); // Palette + map(0x710000, 0x710bff).readonly(); // ? + map(0x710c00, 0x710fff).ram(); // ? + map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs + map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control + map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control + map(0xb00000, 0xb00001).portr("IN0"); // Inputs + map(0xb00002, 0xb00003).portr("IN1"); // Inputs + EEPROM + map(0xc00000, 0xc00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM +} /*************************************************************************** Dodonpachi ***************************************************************************/ -ADDRESS_MAP_START(cave_state::ddonpach_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(vram_8x8_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::ddonpach_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x700000, 0x70ffff).ram().w(this, FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2 + map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs + map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control + map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control + map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control + map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette + map(0xd00000, 0xd00001).portr("IN0"); // Inputs + map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM +} /*************************************************************************** @@ -552,130 +554,135 @@ READ16_MEMBER(cave_state::donpachi_videoregs_r) } } -ADDRESS_MAP_START(cave_state::donpachi_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x200000, 0x207fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(vram_8x8_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x600000, 0x600005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0x700000, 0x700005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x800000, 0x800005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0x900000, 0x90007f) AM_RAM_READ(donpachi_videoregs_r) AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0xa08000, 0xa08fff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0xb00000, 0xb00003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 - AM_RANGE(0xb00010, 0xb00013) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) // - AM_RANGE(0xb00020, 0xb0002f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) // - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::donpachi_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x200000, 0x207fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x400000, 0x407fff).ram().w(this, FUNC(cave_state::vram_8x8_w<2>)).share("vram.2"); // Layer 2 + map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites + map(0x600000, 0x600005).ram().share("vctrl.1"); // Layer 1 Control + map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control + map(0x800000, 0x800005).ram().share("vctrl.2"); // Layer 2 Control + map(0x900000, 0x90007f).ram().r(this, FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs + map(0xa08000, 0xa08fff).ram().share("paletteram.0"); // Palette + map(0xb00000, 0xb00003).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // M6295 + map(0xb00010, 0xb00013).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // + map(0xb00020, 0xb0002f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); // + map(0xc00000, 0xc00001).portr("IN0"); // Inputs + map(0xc00002, 0xc00003).portr("IN1"); // Inputs + EEPROM + map(0xd00000, 0xd00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM +} /*************************************************************************** Esprade ***************************************************************************/ -ADDRESS_MAP_START(cave_state::esprade_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0" ) // Inputs - AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1" ) // Inputs + EEPROM - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::esprade_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x700000, 0x707fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs + map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control + map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control + map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control + map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette + map(0xd00000, 0xd00001).portr("IN0"); // Inputs + map(0xd00002, 0xd00003).portr("IN1"); // Inputs + EEPROM + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM +} /*************************************************************************** Gaia Crusaders ***************************************************************************/ -ADDRESS_MAP_START(cave_state::gaia_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprite - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x508000, 0x50ffff) AM_RAM // More Layer 0, Tested but not used? - AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x608000, 0x60ffff) AM_RAM // More Layer 1, Tested but not used? - AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x708000, 0x70ffff) AM_RAM // More Layer 2, Tested but not used? - AM_RANGE(0x800000, 0x80007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xd00010, 0xd00011) AM_WRITE(gaia_coin_lsb_w) // Coin counter only - AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0xd00014, 0xd00015) AM_READ_PORT("DSW") // Dips - AM_RANGE(0xd00014, 0xd00015) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog? -ADDRESS_MAP_END +void cave_state::gaia_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprite + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x508000, 0x50ffff).ram(); // More Layer 0, Tested but not used? + map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x608000, 0x60ffff).ram(); // More Layer 1, Tested but not used? + map(0x700000, 0x707fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0x708000, 0x70ffff).ram(); // More Layer 2, Tested but not used? + map(0x800000, 0x80007f).writeonly().share("videoregs.0"); // Video Regs + map(0x800000, 0x800007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control + map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control + map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control + map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette + map(0xd00010, 0xd00011).portr("IN0"); // Inputs + map(0xd00010, 0xd00011).w(this, FUNC(cave_state::gaia_coin_lsb_w)); // Coin counter only + map(0xd00012, 0xd00013).portr("IN1"); // Inputs + map(0xd00014, 0xd00015).portr("DSW"); // Dips + map(0xd00014, 0xd00015).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog? +} /*************************************************************************** Guwange ***************************************************************************/ -ADDRESS_MAP_START(cave_state::guwange_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control -/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xd00010, 0xd00011) AM_WRITE(cave_eeprom_lsb_w) // EEPROM - AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1") // Inputs + EEPROM +void cave_state::guwange_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs + map(0x300000, 0x300007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x600000, 0x607fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x700000, 0x707fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x900000, 0x900005).ram().share("vctrl.0"); // Layer 0 Control + map(0xa00000, 0xa00005).ram().share("vctrl.1"); // Layer 1 Control + map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control +/**/map(0xc00000, 0xc0ffff).ram().share("paletteram.0"); // Palette + map(0xd00010, 0xd00011).portr("IN0"); // Inputs + map(0xd00010, 0xd00011).w(this, FUNC(cave_state::cave_eeprom_lsb_w)); // EEPROM + map(0xd00012, 0xd00013).portr("IN1"); // Inputs + EEPROM // AM_RANGE(0xd00012, 0xd00013) AM_WRITENOP // ? // AM_RANGE(0xd00014, 0xd00015) AM_WRITENOP // ? $800068 in dfeveron ? probably Watchdog -ADDRESS_MAP_END +} /*************************************************************************** Hotdog Storm ***************************************************************************/ -ADDRESS_MAP_START(cave_state::hotdogst_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM - AM_RANGE(0x408000, 0x408fff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0xa80000, 0xa8007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause +void cave_state::hotdogst_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x300000, 0x30ffff).ram(); // RAM + map(0x408000, 0x408fff).ram().share("paletteram.0"); // Palette + map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x980000, 0x987fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0xa80000, 0xa8007f).writeonly().share("videoregs.0"); // Video Regs + map(0xa80000, 0xa80007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause // AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r) // From Sound CPU - AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w) // To Sound CPU - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(hotdogst_eeprom_msb_w) // EEPROM - AM_RANGE(0xd00002, 0xd00003) AM_WRITENOP // ??? - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites -ADDRESS_MAP_END + map(0xa8006e, 0xa8006f).w(this, FUNC(cave_state::sound_cmd_w)); // To Sound CPU + map(0xb00000, 0xb00005).ram().share("vctrl.0"); // Layer 0 Control + map(0xb80000, 0xb80005).ram().share("vctrl.1"); // Layer 1 Control + map(0xc00000, 0xc00005).ram().share("vctrl.2"); // Layer 2 Control + map(0xc80000, 0xc80001).portr("IN0"); // Inputs + map(0xc80002, 0xc80003).portr("IN1"); // Inputs + EEPROM + map(0xd00000, 0xd00001).w(this, FUNC(cave_state::hotdogst_eeprom_msb_w)); // EEPROM + map(0xd00002, 0xd00003).nopw(); // ??? + map(0xf00000, 0xf0ffff).ram().share("spriteram.0"); // Sprites +} /*************************************************************************** @@ -743,94 +750,98 @@ CUSTOM_INPUT_MEMBER(cave_state::korokoro_hopper_r) } -ADDRESS_MAP_START(cave_state::korokoro_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x107fff) AM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x1c0000, 0x1c007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x1c0000, 0x1c0007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x200000, 0x207fff) AM_WRITEONLY AM_SHARE("paletteram.0") // Palette +void cave_state::korokoro_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x107fff).w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x140000, 0x140005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x180000, 0x187fff).writeonly().share("spriteram.0"); // Sprites + map(0x1c0000, 0x1c007f).writeonly().share("videoregs.0"); // Video Regs + map(0x1c0000, 0x1c0007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x200000, 0x207fff).writeonly().share("paletteram.0"); // Palette // AM_RANGE(0x240000, 0x240003) AM_DEVREAD8("ymz", ymz280b_device, read, 0x00ff) // YMZ280 - AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // YMZ280 - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ??? - AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) // Leds - AM_RANGE(0x28000a, 0x28000b) AM_WRITE(korokoro_eeprom_msb_w) // EEPROM - AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cave_state::crusherm_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x107fff) AM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x140000, 0x140005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x180000, 0x187fff) AM_WRITEONLY AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x200000, 0x207fff) AM_WRITEONLY AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // YMZ280 - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Inputs + ??? - AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w) // Leds - AM_RANGE(0x28000a, 0x28000b) AM_WRITE(korokoro_eeprom_msb_w) // EEPROM - AM_RANGE(0x28000c, 0x28000d) AM_WRITENOP // 0 (watchdog?) - AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x340000, 0x34ffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0x240000, 0x240003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x280000, 0x280001).portr("IN0"); // Inputs + ??? + map(0x280002, 0x280003).portr("IN1"); // Inputs + EEPROM + map(0x280008, 0x280009).w(this, FUNC(cave_state::korokoro_leds_w)); // Leds + map(0x28000a, 0x28000b).w(this, FUNC(cave_state::korokoro_eeprom_msb_w)); // EEPROM + map(0x28000c, 0x28000d).nopw(); // 0 (watchdog?) + map(0x300000, 0x30ffff).ram(); // RAM +} + +void cave_state::crusherm_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x107fff).w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x140000, 0x140005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x180000, 0x187fff).writeonly().share("spriteram.0"); // Sprites + map(0x200000, 0x207fff).writeonly().share("paletteram.0"); // Palette + map(0x240000, 0x240003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x280000, 0x280001).portr("IN0"); // Inputs + ??? + map(0x280002, 0x280003).portr("IN1"); // Inputs + EEPROM + map(0x280008, 0x280009).w(this, FUNC(cave_state::korokoro_leds_w)); // Leds + map(0x28000a, 0x28000b).w(this, FUNC(cave_state::korokoro_eeprom_msb_w)); // EEPROM + map(0x28000c, 0x28000d).nopw(); // 0 (watchdog?) + map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs + map(0x300000, 0x300007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x340000, 0x34ffff).ram(); // RAM +} /*************************************************************************** Mazinger Z ***************************************************************************/ -ADDRESS_MAP_START(cave_state::mazinger_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x300000, 0x30007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x300068, 0x300069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - AM_RANGE(0x30006e, 0x30006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU - AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(vram_8x8_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_8x8_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x600000, 0x600005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0x700000, 0x700005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0x900000, 0x900001) AM_WRITE(cave_eeprom_msb_w) // EEPROM - AM_RANGE(0xc08000, 0xc0ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0xd00000, 0xd7ffff) AM_ROM AM_REGION("user1", 0) // extra data ROM -ADDRESS_MAP_END +void cave_state::mazinger_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites + map(0x300000, 0x30007f).writeonly().share("videoregs.0"); // Video Regs + map(0x300000, 0x300007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x300068, 0x300069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0x30006e, 0x30006f).rw(this, FUNC(cave_state::soundlatch_ack_r), FUNC(cave_state::sound_cmd_w)); // From Sound CPU + map(0x400000, 0x407fff).ram().w(this, FUNC(cave_state::vram_8x8_w<1>)).share("vram.1"); // Layer 1 + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_8x8_w<0>)).share("vram.0"); // Layer 0 + map(0x600000, 0x600005).ram().share("vctrl.1"); // Layer 1 Control + map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control + map(0x800000, 0x800001).portr("IN0"); // Inputs + map(0x800002, 0x800003).portr("IN1"); // Inputs + EEPROM + map(0x900000, 0x900001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM + map(0xc08000, 0xc0ffff).ram().share("paletteram.0"); // Palette + map(0xd00000, 0xd7ffff).rom().region("user1", 0); // extra data ROM +} /*************************************************************************** Metamoqester ***************************************************************************/ -ADDRESS_MAP_START(cave_state::metmqstr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x27ffff) AM_ROM // ROM - AM_RANGE(0x408000, 0x408fff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x600000, 0x600001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog? - AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x888000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x908000, 0x90ffff) AM_RAM // - AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x988000, 0x98ffff) AM_RAM // - AM_RANGE(0xa80000, 0xa8007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0xa80068, 0xa80069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog? - AM_RANGE(0xa8006c, 0xa8006d) AM_READ(soundflags_ack_r) AM_WRITENOP // Communication - AM_RANGE(0xa8006e, 0xa8006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w) // From Sound CPU - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(metmqstr_eeprom_msb_w) // EEPROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites -ADDRESS_MAP_END +void cave_state::metmqstr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).rom(); // ROM + map(0x200000, 0x27ffff).rom(); // ROM + map(0x408000, 0x408fff).ram().share("paletteram.0"); // Palette + map(0x600000, 0x600001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog? + map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0x888000, 0x88ffff).ram(); // + map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x908000, 0x90ffff).ram(); // + map(0x980000, 0x987fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x988000, 0x98ffff).ram(); // + map(0xa80000, 0xa8007f).writeonly().share("videoregs.0"); // Video Regs + map(0xa80000, 0xa80007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0xa80068, 0xa80069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog? + map(0xa8006c, 0xa8006d).r(this, FUNC(cave_state::soundflags_ack_r)).nopw(); // Communication + map(0xa8006e, 0xa8006f).rw(this, FUNC(cave_state::soundlatch_ack_r), FUNC(cave_state::sound_cmd_w)); // From Sound CPU + map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control + map(0xb80000, 0xb80005).ram().share("vctrl.1"); // Layer 1 Control + map(0xc00000, 0xc00005).ram().share("vctrl.0"); // Layer 0 Control + map(0xc80000, 0xc80001).portr("IN0"); // Inputs + map(0xc80002, 0xc80003).portr("IN1"); // Inputs + EEPROM + map(0xd00000, 0xd00001).w(this, FUNC(cave_state::metmqstr_eeprom_msb_w)); // EEPROM + map(0xf00000, 0xf0ffff).ram().share("spriteram.0"); // Sprites +} /*************************************************************************** @@ -914,46 +925,47 @@ WRITE16_MEMBER(cave_state::ppsatan_out_w) // popmessage("OUT %04x", data); } -ADDRESS_MAP_START(cave_state::ppsatan_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040000, 0x04ffff) AM_RAM // RAM +void cave_state::ppsatan_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040000, 0x04ffff).ram(); // RAM // Left Screen (Player 2) - AM_RANGE(0x080000, 0x080005) AM_RAM AM_SHARE("vctrl.1") // Layer Control - AM_RANGE(0x100000, 0x107fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer + map(0x080000, 0x080005).ram().share("vctrl.1"); // Layer Control + map(0x100000, 0x107fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer // AM_RANGE(0x180000, 0x1803ff) AM_RAM // Palette (Tilemaps) // AM_RANGE(0x187800, 0x188fff) AM_RAM AM_SHARE("paletteram.1") // Palette (Sprites) - AM_RANGE(0x180000, 0x188fff) AM_RAM AM_SHARE("paletteram.1") // Palette - AM_RANGE(0x1c0000, 0x1c7fff) AM_RAM AM_SHARE("spriteram.1") // Sprites - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("SYSTEM" ) // DSW + (unused) EEPROM - AM_RANGE(0x200000, 0x200001) AM_WRITE(ppsatan_out_w) // Outputs + OKI banking - AM_RANGE(0x200002, 0x200003) AM_READWRITE(ppsatan_touch2_r, ppsatan_eeprom_msb_w) // Touch Screen + (unused) EEPROM - AM_RANGE(0x200004, 0x200005) AM_READWRITE(ppsatan_touch1_r, ppsatan_io_mux_w) // Touch Screen - AM_RANGE(0x200006, 0x200007) AM_WRITENOP // Lev. 2 IRQ Ack? - AM_RANGE(0x2c0000, 0x2c007f) AM_WRITEONLY AM_SHARE("videoregs.1") // Video Regs - AM_RANGE(0x2c0000, 0x2c0007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x2c0068, 0x2c0069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - - AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 + map(0x180000, 0x188fff).ram().share("paletteram.1"); // Palette + map(0x1c0000, 0x1c7fff).ram().share("spriteram.1"); // Sprites + map(0x200000, 0x200001).portr("SYSTEM"); // DSW + (unused) EEPROM + map(0x200000, 0x200001).w(this, FUNC(cave_state::ppsatan_out_w)); // Outputs + OKI banking + map(0x200002, 0x200003).rw(this, FUNC(cave_state::ppsatan_touch2_r), FUNC(cave_state::ppsatan_eeprom_msb_w)); // Touch Screen + (unused) EEPROM + map(0x200004, 0x200005).rw(this, FUNC(cave_state::ppsatan_touch1_r), FUNC(cave_state::ppsatan_io_mux_w)); // Touch Screen + map(0x200006, 0x200007).nopw(); // Lev. 2 IRQ Ack? + map(0x2c0000, 0x2c007f).writeonly().share("videoregs.1"); // Video Regs + map(0x2c0000, 0x2c0007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x2c0068, 0x2c0069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + + map(0x300001, 0x300001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 // Right Screen (Player 1) - AM_RANGE(0x480000, 0x480005) AM_RAM AM_SHARE("vctrl.2") // Layer Control - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer + map(0x480000, 0x480005).ram().share("vctrl.2"); // Layer Control + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer // AM_RANGE(0x580000, 0x5803ff) AM_RAM // Palette (Tilemaps) // AM_RANGE(0x587800, 0x588fff) AM_RAM //AM_SHARE("paletteram.2") // Palette (Sprites) - AM_RANGE(0x580000, 0x588fff) AM_RAM AM_SHARE("paletteram.2") // Palette - AM_RANGE(0x5c0000, 0x5c7fff) AM_RAM AM_SHARE("spriteram.2") // Sprites - AM_RANGE(0x6c0000, 0x6c007f) AM_WRITEONLY AM_SHARE("videoregs.2") // Video Regs + map(0x580000, 0x588fff).ram().share("paletteram.2"); // Palette + map(0x5c0000, 0x5c7fff).ram().share("spriteram.2"); // Sprites + map(0x6c0000, 0x6c007f).writeonly().share("videoregs.2"); // Video Regs // Top Screen - AM_RANGE(0x880000, 0x880005) AM_RAM AM_SHARE("vctrl.0") // Layer Control - AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer + map(0x880000, 0x880005).ram().share("vctrl.0"); // Layer Control + map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer // AM_RANGE(0x980000, 0x9803ff) AM_RAM // Palette (Tilemaps) // AM_RANGE(0x987800, 0x988fff) AM_RAM AM_SHARE("paletteram.0") // Palette (Sprites) - AM_RANGE(0x980000, 0x988fff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x9c0000, 0x9c7fff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0xac0000, 0xac007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs -ADDRESS_MAP_END + map(0x980000, 0x988fff).ram().share("paletteram.0"); // Palette + map(0x9c0000, 0x9c7fff).ram().share("spriteram.0"); // Sprites + map(0xac0000, 0xac007f).writeonly().share("videoregs.0"); // Video Regs +} /*************************************************************************** @@ -983,29 +995,30 @@ WRITE16_MEMBER(cave_state::pwrinst2_vctrl_w) COMBINE_DATA(&VCTRL[offset]); } -ADDRESS_MAP_START(cave_state::pwrinst2_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // - AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("user1", 0) // extra data ROM space - AM_RANGE(0x700000, 0x700001) AM_WRITE(cave_eeprom_msb_w) // EEPROM - AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(vram_8x8_w<3>) AM_SHARE("vram.3") // Layer 3 - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0xa10000, 0xa1ffff) AM_RAM // Sprites? - AM_RANGE(0xa80000, 0xa8007f) AM_RAM_READ(donpachi_videoregs_r) AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0xb00000, 0xb00005) AM_RAM_WRITE(pwrinst2_vctrl_w<2>) AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xb80000, 0xb80005) AM_RAM_WRITE(pwrinst2_vctrl_w<0>) AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xc00000, 0xc00005) AM_RAM_WRITE(pwrinst2_vctrl_w<1>) AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xc80000, 0xc80005) AM_RAM_WRITE(pwrinst2_vctrl_w<3>) AM_SHARE("vctrl.3") // Layer 3 Control - AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r) // ? From Sound CPU - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w) // To Sound CPU - AM_RANGE(0xe80000, 0xe80001) AM_READ(pwrinst2_eeprom_r) // EEPROM - AM_RANGE(0xf00000, 0xf04fff) AM_RAM AM_SHARE("paletteram.0") // Palette -ADDRESS_MAP_END +void cave_state::pwrinst2_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x400000, 0x40ffff).ram(); // RAM + map(0x500000, 0x500001).portr("IN0"); // Inputs + map(0x500002, 0x500003).portr("IN1"); // + map(0x600000, 0x6fffff).rom().region("user1", 0); // extra data ROM space + map(0x700000, 0x700001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM + map(0x800000, 0x807fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x980000, 0x987fff).ram().w(this, FUNC(cave_state::vram_8x8_w<3>)).share("vram.3"); // Layer 3 + map(0xa00000, 0xa0ffff).ram().share("spriteram.0"); // Sprites + map(0xa10000, 0xa1ffff).ram(); // Sprites? + map(0xa80000, 0xa8007f).ram().r(this, FUNC(cave_state::donpachi_videoregs_r)).share("videoregs.0"); // Video Regs + map(0xb00000, 0xb00005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<2>)).share("vctrl.2"); // Layer 2 Control + map(0xb80000, 0xb80005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<0>)).share("vctrl.0"); // Layer 0 Control + map(0xc00000, 0xc00005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<1>)).share("vctrl.1"); // Layer 1 Control + map(0xc80000, 0xc80005).ram().w(this, FUNC(cave_state::pwrinst2_vctrl_w<3>)).share("vctrl.3"); // Layer 3 Control + map(0xd80000, 0xd80001).r(this, FUNC(cave_state::soundlatch_ack_r)); // ? From Sound CPU + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::sound_cmd_w)); // To Sound CPU + map(0xe80000, 0xe80001).r(this, FUNC(cave_state::pwrinst2_eeprom_r)); // EEPROM + map(0xf00000, 0xf04fff).ram().share("paletteram.0"); // Palette +} /*************************************************************************** @@ -1018,77 +1031,80 @@ READ16_MEMBER(cave_state::sailormn_input0_r) return ioport("IN0")->read(); } -ADDRESS_MAP_START(cave_state::sailormn_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x110000, 0x110001) AM_RAM // (agallet) - AM_RANGE(0x200000, 0x3fffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x407fff) AM_RAM // (agallet) - AM_RANGE(0x408000, 0x40bfff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x40c000, 0x40ffff) AM_RAM // (agallet) - AM_RANGE(0x410000, 0x410001) AM_RAM // (agallet) - AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x510000, 0x510001) AM_RAM // (agallet) - AM_RANGE(0x600000, 0x600001) AM_READ(sailormn_input0_r) // Inputs + Watchdog! - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0x700000, 0x700001) AM_WRITE(sailormn_eeprom_msb_w) // EEPROM - AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram.1") // Layer 1 - AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(vram_w<2>) AM_SHARE("vram.2") // Layer 2 - AM_RANGE(0x908000, 0x908001) AM_RAM // (agallet) - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_SHARE("vctrl.1") // Layer 1 Control - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl.2") // Layer 2 Control - AM_RANGE(0xb80000, 0xb8007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0xb80000, 0xb80007) AM_READ(cave_irq_cause_r) // IRQ Cause (bit 2 tested!) - AM_RANGE(0xb8006c, 0xb8006d) AM_READ(soundflags_ack_r) // Communication - AM_RANGE(0xb8006e, 0xb8006f) AM_READ(soundlatch_ack_r) // From Sound CPU - AM_RANGE(0xb8006e, 0xb8006f) AM_WRITE(sound_cmd_w) // To Sound CPU -ADDRESS_MAP_END +void cave_state::sailormn_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x110000, 0x110001).ram(); // (agallet) + map(0x200000, 0x3fffff).rom(); // ROM + map(0x400000, 0x407fff).ram(); // (agallet) + map(0x408000, 0x40bfff).ram().share("paletteram.0"); // Palette + map(0x40c000, 0x40ffff).ram(); // (agallet) + map(0x410000, 0x410001).ram(); // (agallet) + map(0x500000, 0x50ffff).ram().share("spriteram.0"); // Sprites + map(0x510000, 0x510001).ram(); // (agallet) + map(0x600000, 0x600001).r(this, FUNC(cave_state::sailormn_input0_r)); // Inputs + Watchdog! + map(0x600002, 0x600003).portr("IN1"); // Inputs + EEPROM + map(0x700000, 0x700001).w(this, FUNC(cave_state::sailormn_eeprom_msb_w)); // EEPROM + map(0x800000, 0x807fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x880000, 0x887fff).ram().w(this, FUNC(cave_state::vram_w<1>)).share("vram.1"); // Layer 1 + map(0x900000, 0x907fff).ram().w(this, FUNC(cave_state::vram_w<2>)).share("vram.2"); // Layer 2 + map(0x908000, 0x908001).ram(); // (agallet) + map(0xa00000, 0xa00005).ram().share("vctrl.0"); // Layer 0 Control + map(0xa80000, 0xa80005).ram().share("vctrl.1"); // Layer 1 Control + map(0xb00000, 0xb00005).ram().share("vctrl.2"); // Layer 2 Control + map(0xb80000, 0xb8007f).writeonly().share("videoregs.0"); // Video Regs + map(0xb80000, 0xb80007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause (bit 2 tested!) + map(0xb8006c, 0xb8006d).r(this, FUNC(cave_state::soundflags_ack_r)); // Communication + map(0xb8006e, 0xb8006f).r(this, FUNC(cave_state::soundlatch_ack_r)); // From Sound CPU + map(0xb8006e, 0xb8006f).w(this, FUNC(cave_state::sound_cmd_w)); // To Sound CPU +} /*************************************************************************** Tekken Card World ***************************************************************************/ -ADDRESS_MAP_START(cave_state::tekkencw_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::tekkencw_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery) + map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites + map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x400000, 0x400001).portr("IN0"); // Inputs + EEPROM + Hopper + map(0x400002, 0x400003).portr("IN1"); // Inputs + map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette + map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs + map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0xc00000, 0xc00001).w(this, FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM +} /*************************************************************************** Tekken Battle Scratch ***************************************************************************/ -ADDRESS_MAP_START(cave_state::tekkenbs_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::tekkenbs_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery) + map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites + map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette + map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper + map(0x600002, 0x600003).portr("IN1"); // Inputs + map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs + map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0xc00000, 0xc00001).w(this, FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM +} /*************************************************************************** @@ -1135,23 +1151,24 @@ CUSTOM_INPUT_MEMBER(cave_state::tjumpman_hopper_r) return (m_hopper && !(m_screen->frame_number() % 10)) ? 0 : 1; } -ADDRESS_MAP_START(cave_state::tjumpman_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x304000, 0x307fff) AM_WRITE(vram_w<0>) // Layer 0 - 16x16 tiles mapped here - AM_RANGE(0x400000, 0x400005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::tjumpman_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery) + map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites + map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x304000, 0x307fff).w(this, FUNC(cave_state::vram_w<0>)); // Layer 0 - 16x16 tiles mapped here + map(0x400000, 0x400005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x500000, 0x50ffff).ram().share("paletteram.0"); // Palette + map(0x600000, 0x600001).portr("IN0"); // Inputs + EEPROM + Hopper + map(0x600002, 0x600003).portr("IN1"); // Inputs + map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs + map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0xc00000, 0xc00001).w(this, FUNC(cave_state::tjumpman_leds_w)); // Leds + Hopper + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM +} /*************************************************************************** @@ -1174,22 +1191,23 @@ WRITE16_MEMBER(cave_state::pacslot_leds_w) // popmessage("led %04X", data); } -ADDRESS_MAP_START(cave_state::pacslot_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x400000, 0x40007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x400000, 0x400007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x400068, 0x400069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(pacslot_leds_w) // Leds + Hopper - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::pacslot_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery) + map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites + map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x400000, 0x40007f).writeonly().share("videoregs.0"); // Video Regs + map(0x400000, 0x400007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x400068, 0x400069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0x500000, 0x500005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x600000, 0x60ffff).ram().share("paletteram.0"); // Palette + map(0x700000, 0x700001).portr("IN0"); // Inputs + EEPROM + Hopper + map(0x700002, 0x700003).portr("IN1"); // Inputs + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0xc00000, 0xc00001).w(this, FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM +} /*************************************************************************** @@ -1198,41 +1216,43 @@ ADDRESS_MAP_END //TODO: leds need verifying -ADDRESS_MAP_START(cave_state::paceight_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM (battery) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0x600000, 0x600005) AM_WRITEONLY AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x700068, 0x700069) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // Watchdog - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // M6295 - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(pacslot_leds_w) // Leds + Hopper - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(tjumpman_eeprom_lsb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::paceight_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("nvram"); // RAM (battery) + map(0x200000, 0x20ffff).ram().share("spriteram.0"); // Sprites + map(0x300000, 0x307fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x400000, 0x40ffff).ram().share("paletteram.0"); // Palette + map(0x500000, 0x500001).portr("IN0"); // Inputs + EEPROM + Hopper + map(0x500002, 0x500003).portr("IN1"); // Inputs + map(0x600000, 0x600005).writeonly().share("vctrl.0"); // Layer 0 Control + map(0x700000, 0x70007f).writeonly().share("videoregs.0"); // Video Regs + map(0x700000, 0x700007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x700068, 0x700069).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0xc00000, 0xc00001).w(this, FUNC(cave_state::pacslot_leds_w)); // Leds + Hopper + map(0xe00000, 0xe00001).w(this, FUNC(cave_state::tjumpman_eeprom_lsb_w)); // EEPROM +} /*************************************************************************** Uo Poko ***************************************************************************/ -ADDRESS_MAP_START(cave_state::uopoko_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // YMZ280 - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram.0") // Sprites - AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram.0") // Layer 0 - AM_RANGE(0x600000, 0x60007f) AM_WRITEONLY AM_SHARE("videoregs.0") // Video Regs - AM_RANGE(0x600000, 0x600007) AM_READ(cave_irq_cause_r) // IRQ Cause - AM_RANGE(0x700000, 0x700005) AM_RAM AM_SHARE("vctrl.0") // Layer 0 Control - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("paletteram.0") // Palette - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1") // Inputs + EEPROM - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(cave_eeprom_msb_w) // EEPROM -ADDRESS_MAP_END +void cave_state::uopoko_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x300000, 0x300003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // YMZ280 + map(0x400000, 0x40ffff).ram().share("spriteram.0"); // Sprites + map(0x500000, 0x507fff).ram().w(this, FUNC(cave_state::vram_w<0>)).share("vram.0"); // Layer 0 + map(0x600000, 0x60007f).writeonly().share("videoregs.0"); // Video Regs + map(0x600000, 0x600007).r(this, FUNC(cave_state::cave_irq_cause_r)); // IRQ Cause + map(0x700000, 0x700005).ram().share("vctrl.0"); // Layer 0 Control + map(0x800000, 0x80ffff).ram().share("paletteram.0"); // Palette + map(0x900000, 0x900001).portr("IN0"); // Inputs + map(0x900002, 0x900003).portr("IN1"); // Inputs + EEPROM + map(0xa00000, 0xa00001).w(this, FUNC(cave_state::cave_eeprom_msb_w)); // EEPROM +} @@ -1272,132 +1292,144 @@ WRITE8_MEMBER(cave_state::oki2_bank_w) } -ADDRESS_MAP_START(cave_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki1_banklo") - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1_bankhi") -ADDRESS_MAP_END +void cave_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).bankr("oki1_banklo"); + map(0x20000, 0x3ffff).bankr("oki1_bankhi"); +} -ADDRESS_MAP_START(cave_state::oki2_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("oki2_banklo") - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2_bankhi") -ADDRESS_MAP_END +void cave_state::oki2_map(address_map &map) +{ + map(0x00000, 0x1ffff).bankr("oki2_banklo"); + map(0x20000, 0x3ffff).bankr("oki2_bankhi"); +} /*************************************************************************** Hotdog Storm ***************************************************************************/ -ADDRESS_MAP_START(cave_state::hotdogst_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked) - AM_RANGE(0xe000, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END +void cave_state::hotdogst_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked) + map(0xe000, 0xffff).ram(); // RAM +} -ADDRESS_MAP_START(cave_state::hotdogst_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x0f>) // ROM bank - AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU - AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // - AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) // - AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 - AM_RANGE(0x70, 0x70) AM_WRITE(oki1_bank_w<0x3>) // Samples bank -ADDRESS_MAP_END +void cave_state::hotdogst_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x0f>)); // ROM bank + map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU + map(0x40, 0x40).r(this, FUNC(cave_state::soundlatch_hi_r)); // + map(0x50, 0x51).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // + map(0x60, 0x60).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0x70, 0x70).w(this, FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank +} /*************************************************************************** Mazinger Z ***************************************************************************/ -ADDRESS_MAP_START(cave_state::mazinger_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked) - AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM - AM_RANGE(0xf800, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cave_state::mazinger_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x07>) // ROM bank - AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU - AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU - AM_RANGE(0x50, 0x51) AM_DEVWRITE("ymsnd", ym2203_device, write) // YM2203 - AM_RANGE(0x52, 0x53) AM_DEVREAD("ymsnd", ym2203_device, read) // YM2203 - AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki1", okim6295_device, write) // M6295 - AM_RANGE(0x74, 0x74) AM_WRITE(oki1_bank_w<0x3>) // Samples bank -ADDRESS_MAP_END +void cave_state::mazinger_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked) + map(0xc000, 0xc7ff).ram(); // RAM + map(0xf800, 0xffff).ram(); // RAM +} + +void cave_state::mazinger_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank + map(0x10, 0x10).w(this, FUNC(cave_state::soundlatch_ack_w)); // To Main CPU + map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU + map(0x50, 0x51).w("ymsnd", FUNC(ym2203_device::write)); // YM2203 + map(0x52, 0x53).r("ymsnd", FUNC(ym2203_device::read)); // YM2203 + map(0x70, 0x70).w("oki1", FUNC(okim6295_device::write)); // M6295 + map(0x74, 0x74).w(this, FUNC(cave_state::oki1_bank_w<0x3>)); // Samples bank +} /*************************************************************************** Metamoqester ***************************************************************************/ -ADDRESS_MAP_START(cave_state::metmqstr_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked) - AM_RANGE(0xe000, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cave_state::metmqstr_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x0f>) // Rom Bank - AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication - AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU - AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // - AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 - AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_device, write) // M6295 #0 - AM_RANGE(0x70, 0x70) AM_WRITE(oki1_bank_w<0x7>) // Samples Bank #0 - AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_device, write) // M6295 #1 - AM_RANGE(0x90, 0x90) AM_WRITE(oki2_bank_w<0x7>) // Samples Bank #1 -ADDRESS_MAP_END +void cave_state::metmqstr_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked) + map(0xe000, 0xffff).ram(); // RAM +} + +void cave_state::metmqstr_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x0f>)); // Rom Bank + map(0x20, 0x20).r(this, FUNC(cave_state::soundflags_r)); // Communication + map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU + map(0x40, 0x40).r(this, FUNC(cave_state::soundlatch_hi_r)); // + map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151 + map(0x60, 0x60).w("oki1", FUNC(okim6295_device::write)); // M6295 #0 + map(0x70, 0x70).w(this, FUNC(cave_state::oki1_bank_w<0x7>)); // Samples Bank #0 + map(0x80, 0x80).w("oki2", FUNC(okim6295_device::write)); // M6295 #1 + map(0x90, 0x90).w(this, FUNC(cave_state::oki2_bank_w<0x7>)); // Samples Bank #1 +} /*************************************************************************** Power Instinct 2 ***************************************************************************/ -ADDRESS_MAP_START(cave_state::pwrinst2_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") // ROM (Banked) - AM_RANGE(0xe000, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cave_state::pwrinst2_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("oki2", okim6295_device, read, write) // - AM_RANGE(0x10, 0x17) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) // Samples bank - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) // - AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w) // To Main CPU +void cave_state::pwrinst2_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("z80bank"); // ROM (Banked) + map(0xe000, 0xffff).ram(); // RAM +} + +void cave_state::pwrinst2_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0x08, 0x08).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0x10, 0x17).w("nmk112", FUNC(nmk112_device::okibank_w)); // Samples bank + map(0x40, 0x41).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // + map(0x50, 0x50).w(this, FUNC(cave_state::soundlatch_ack_w)); // To Main CPU // AM_RANGE(0x51, 0x51) AM_WRITENOP // ?? volume - AM_RANGE(0x80, 0x80) AM_WRITE(z80_rombank_w<0x07>) // ROM bank - AM_RANGE(0x60, 0x60) AM_READ(soundlatch_hi_r) // From Main CPU - AM_RANGE(0x70, 0x70) AM_READ(soundlatch_lo_r) // -ADDRESS_MAP_END + map(0x80, 0x80).w(this, FUNC(cave_state::z80_rombank_w<0x07>)); // ROM bank + map(0x60, 0x60).r(this, FUNC(cave_state::soundlatch_hi_r)); // From Main CPU + map(0x70, 0x70).r(this, FUNC(cave_state::soundlatch_lo_r)); // +} /*************************************************************************** Sailor Moon ***************************************************************************/ -ADDRESS_MAP_START(cave_state::sailormn_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") // ROM (Banked) - AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_RAM // RAM (8KB, mirrored) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cave_state::sailormn_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(z80_rombank_w<0x1f>) // Rom Bank - AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w) // To Main CPU - AM_RANGE(0x20, 0x20) AM_READ(soundflags_r) // Communication - AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r) // From Main CPU - AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r) // - AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 - AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 #0 - AM_RANGE(0x70, 0x70) AM_WRITE(oki1_bank_w<0xf>) // Samples Bank #0 - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_device, read, write) // M6295 #1 - AM_RANGE(0xc0, 0xc0) AM_WRITE(oki2_bank_w<0xf>) // Samples Bank #1 -ADDRESS_MAP_END +void cave_state::sailormn_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0x7fff).bankr("z80bank"); // ROM (Banked) + map(0xc000, 0xdfff).mirror(0x2000).ram(); // RAM (8KB, mirrored) +} + +void cave_state::sailormn_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(cave_state::z80_rombank_w<0x1f>)); // Rom Bank + map(0x10, 0x10).w(this, FUNC(cave_state::soundlatch_ack_w)); // To Main CPU + map(0x20, 0x20).r(this, FUNC(cave_state::soundflags_r)); // Communication + map(0x30, 0x30).r(this, FUNC(cave_state::soundlatch_lo_r)); // From Main CPU + map(0x40, 0x40).r(this, FUNC(cave_state::soundlatch_hi_r)); // + map(0x50, 0x51).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151 + map(0x60, 0x60).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 #0 + map(0x70, 0x70).w(this, FUNC(cave_state::oki1_bank_w<0xf>)); // Samples Bank #0 + map(0x80, 0x80).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 #1 + map(0xc0, 0xc0).w(this, FUNC(cave_state::oki2_bank_w<0xf>)); // Samples Bank #1 +} diff --git a/src/mame/drivers/cavepc.cpp b/src/mame/drivers/cavepc.cpp index 6b949de72df..9487b15739f 100644 --- a/src/mame/drivers/cavepc.cpp +++ b/src/mame/drivers/cavepc.cpp @@ -86,13 +86,15 @@ uint32_t cavepc_state::screen_update_cavepc(screen_device &screen, bitmap_ind16 /*****************************************************************************/ -ADDRESS_MAP_START(cavepc_state::cavepc_map) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1") - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END +void cavepc_state::cavepc_map(address_map &map) +{ + map(0x000f0000, 0x000fffff).bankr("bank1"); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} -ADDRESS_MAP_START(cavepc_state::cavepc_io) -ADDRESS_MAP_END +void cavepc_state::cavepc_io(address_map &map) +{ +} /*****************************************************************************/ diff --git a/src/mame/drivers/cb2001.cpp b/src/mame/drivers/cb2001.cpp index b78051a9ad1..54fe316ce5c 100644 --- a/src/mame/drivers/cb2001.cpp +++ b/src/mame/drivers/cb2001.cpp @@ -569,23 +569,25 @@ WRITE16_MEMBER(cb2001_state::cb2001_bg_w) } -ADDRESS_MAP_START(cb2001_state::cb2001_map) - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0x20000, 0x20fff) AM_RAM AM_SHARE("vrafg") - AM_RANGE(0x21000, 0x21fff) AM_RAM_WRITE(cb2001_bg_w) AM_SHARE("vrabg") - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cb2001_state::cb2001_io) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0xffff) /* Input Ports */ - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0xffff) /* DIP switches */ - AM_RANGE(0x20, 0x21) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0xff00) - AM_RANGE(0x22, 0x23) AM_DEVWRITE8("aysnd", ay8910_device, data_address_w, 0xffff) - - AM_RANGE(0x30, 0x31) AM_READ8(irq_ack_r, 0x00ff) - AM_RANGE(0x30, 0x31) AM_WRITE(cb2001_vidctrl_w) - AM_RANGE(0x32, 0x33) AM_WRITE(cb2001_vidctrl2_w) -ADDRESS_MAP_END +void cb2001_state::cb2001_map(address_map &map) +{ + map(0x00000, 0x1ffff).ram(); + map(0x20000, 0x20fff).ram().share("vrafg"); + map(0x21000, 0x21fff).ram().w(this, FUNC(cb2001_state::cb2001_bg_w)).share("vrabg"); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void cb2001_state::cb2001_io(address_map &map) +{ + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */ + map(0x21, 0x21).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x22, 0x23).w("aysnd", FUNC(ay8910_device::data_address_w)); + + map(0x30, 0x30).r(this, FUNC(cb2001_state::irq_ack_r)); + map(0x30, 0x31).w(this, FUNC(cb2001_state::cb2001_vidctrl_w)); + map(0x32, 0x33).w(this, FUNC(cb2001_state::cb2001_vidctrl2_w)); +} static INPUT_PORTS_START( cb2001 ) PORT_START("IN0") diff --git a/src/mame/drivers/cball.cpp b/src/mame/drivers/cball.cpp index 291bcb8c973..b9f3cab512d 100644 --- a/src/mame/drivers/cball.cpp +++ b/src/mame/drivers/cball.cpp @@ -162,31 +162,32 @@ WRITE8_MEMBER(cball_state::wram_w) -ADDRESS_MAP_START(cball_state::cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - - AM_RANGE(0x0000, 0x03ff) AM_READ(wram_r) AM_MASK(0x7f) - AM_RANGE(0x0400, 0x07ff) AM_READONLY - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("1001") - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("1003") - AM_RANGE(0x1020, 0x1020) AM_READ_PORT("1020") - AM_RANGE(0x1040, 0x1040) AM_READ_PORT("1040") - AM_RANGE(0x1060, 0x1060) AM_READ_PORT("1060") - AM_RANGE(0x2000, 0x2001) AM_NOP - AM_RANGE(0x2800, 0x2800) AM_READ_PORT("2800") - - AM_RANGE(0x0000, 0x03ff) AM_WRITE(wram_w) AM_MASK(0x7f) - AM_RANGE(0x0400, 0x07ff) AM_WRITE(vram_w) AM_SHARE("video_ram") - AM_RANGE(0x1800, 0x1800) AM_NOP /* watchdog? */ - AM_RANGE(0x1810, 0x1811) AM_NOP - AM_RANGE(0x1820, 0x1821) AM_NOP - AM_RANGE(0x1830, 0x1831) AM_NOP - AM_RANGE(0x1840, 0x1841) AM_NOP - AM_RANGE(0x1850, 0x1851) AM_NOP - AM_RANGE(0x1870, 0x1871) AM_NOP - - AM_RANGE(0x7000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void cball_state::cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + + map(0x0000, 0x03ff).r(this, FUNC(cball_state::wram_r)).mask(0x7f); + map(0x0400, 0x07ff).readonly(); + map(0x1001, 0x1001).portr("1001"); + map(0x1003, 0x1003).portr("1003"); + map(0x1020, 0x1020).portr("1020"); + map(0x1040, 0x1040).portr("1040"); + map(0x1060, 0x1060).portr("1060"); + map(0x2000, 0x2001).noprw(); + map(0x2800, 0x2800).portr("2800"); + + map(0x0000, 0x03ff).w(this, FUNC(cball_state::wram_w)).mask(0x7f); + map(0x0400, 0x07ff).w(this, FUNC(cball_state::vram_w)).share("video_ram"); + map(0x1800, 0x1800).noprw(); /* watchdog? */ + map(0x1810, 0x1811).noprw(); + map(0x1820, 0x1821).noprw(); + map(0x1830, 0x1831).noprw(); + map(0x1840, 0x1841).noprw(); + map(0x1850, 0x1851).noprw(); + map(0x1870, 0x1871).noprw(); + + map(0x7000, 0x7fff).rom(); +} static INPUT_PORTS_START( cball ) diff --git a/src/mame/drivers/cbasebal.cpp b/src/mame/drivers/cbasebal.cpp index 5a938159ed5..7efbe941721 100644 --- a/src/mame/drivers/cbasebal.cpp +++ b/src/mame/drivers/cbasebal.cpp @@ -94,35 +94,38 @@ WRITE8_MEMBER(cbasebal_state::cbasebal_coinctrl_w) * *************************************/ -ADDRESS_MAP_START(cbasebal_state::cbasebal_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("palette") /* palette + vram + scrollram */ - AM_RANGE(0xe000, 0xfdff) AM_RAM /* work RAM */ - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cbasebal_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cbasebal_state::cbasebal_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(cbasebal_bankswitch_w) - AM_RANGE(0x01, 0x01) AM_WRITE_PORT("IO_01") - AM_RANGE(0x02, 0x02) AM_WRITE_PORT("IO_02") - AM_RANGE(0x03, 0x03) AM_WRITE_PORT("IO_03") - AM_RANGE(0x05, 0x05) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0x06, 0x07) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x08, 0x09) AM_WRITE(cbasebal_scrollx_w) - AM_RANGE(0x0a, 0x0b) AM_WRITE(cbasebal_scrolly_w) - AM_RANGE(0x10, 0x10) AM_READ_PORT("P1") - AM_RANGE(0x11, 0x11) AM_READ_PORT("P2") - AM_RANGE(0x12, 0x12) AM_READ_PORT("SYSTEM") - AM_RANGE(0x13, 0x13) AM_WRITE(cbasebal_gfxctrl_w) - AM_RANGE(0x14, 0x14) AM_WRITE(cbasebal_coinctrl_w) -ADDRESS_MAP_END +void cbasebal_state::cbasebal_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).rw(this, FUNC(cbasebal_state::bankedram_r), FUNC(cbasebal_state::bankedram_w)).share("palette"); /* palette + vram + scrollram */ + map(0xe000, 0xfdff).ram(); /* work RAM */ + map(0xfe00, 0xffff).ram().share("spriteram"); +} + +void cbasebal_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); +} + +void cbasebal_state::cbasebal_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(cbasebal_state::cbasebal_bankswitch_w)); + map(0x01, 0x01).portw("IO_01"); + map(0x02, 0x02).portw("IO_02"); + map(0x03, 0x03).portw("IO_03"); + map(0x05, 0x05).w("oki", FUNC(okim6295_device::write)); + map(0x06, 0x07).w("ymsnd", FUNC(ym2413_device::write)); + map(0x08, 0x09).w(this, FUNC(cbasebal_state::cbasebal_scrollx_w)); + map(0x0a, 0x0b).w(this, FUNC(cbasebal_state::cbasebal_scrolly_w)); + map(0x10, 0x10).portr("P1"); + map(0x11, 0x11).portr("P2"); + map(0x12, 0x12).portr("SYSTEM"); + map(0x13, 0x13).w(this, FUNC(cbasebal_state::cbasebal_gfxctrl_w)); + map(0x14, 0x14).w(this, FUNC(cbasebal_state::cbasebal_coinctrl_w)); +} /************************************* diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp index 01477c9d635..9b228d76d37 100644 --- a/src/mame/drivers/cbm2.cpp +++ b/src/mame/drivers/cbm2.cpp @@ -1157,9 +1157,10 @@ READ8_MEMBER( p500_state::vic_colorram_r ) // ADDRESS_MAP( cbm2_mem ) //------------------------------------------------- -ADDRESS_MAP_START(cbm2_state::cbm2_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void cbm2_state::cbm2_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(cbm2_state::read), FUNC(cbm2_state::write)); +} //------------------------------------------------- @@ -1187,27 +1188,30 @@ ADDRESS_MAP_END // ADDRESS_MAP( p500_mem ) //------------------------------------------------- -ADDRESS_MAP_START(p500_state::p500_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void p500_state::p500_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(p500_state::read), FUNC(p500_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(p500_state::vic_videoram_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) -ADDRESS_MAP_END +void p500_state::vic_videoram_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(p500_state::vic_videoram_r)); +} //------------------------------------------------- // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -ADDRESS_MAP_START(p500_state::vic_colorram_map) - AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) -ADDRESS_MAP_END +void p500_state::vic_colorram_map(address_map &map) +{ + map(0x000, 0x3ff).r(this, FUNC(p500_state::vic_colorram_r)); +} diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp index 14432deceb3..a06c445d4e2 100644 --- a/src/mame/drivers/cbuster.cpp +++ b/src/mame/drivers/cbuster.cpp @@ -42,7 +42,6 @@ #include "includes/cbuster.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "sound/2203intf.h" #include "sound/ym2151.h" #include "sound/okim6295.h" @@ -126,43 +125,45 @@ READ16_MEMBER(cbuster_state::twocrude_control_r) /******************************************************************************/ -ADDRESS_MAP_START(cbuster_state::twocrude_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - - AM_RANGE(0x0a0000, 0x0a1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x0a2000, 0x0a2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x0a4000, 0x0a47ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x0a6000, 0x0a67ff) AM_RAM AM_SHARE("pf2_rowscroll") - - AM_RANGE(0x0a8000, 0x0a8fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x0aa000, 0x0aafff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x0ac000, 0x0ac7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x0ae000, 0x0ae7ff) AM_RAM AM_SHARE("pf4_rowscroll") - - AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0b4000, 0x0b4001) AM_WRITENOP - AM_RANGE(0x0b5000, 0x0b500f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x0b6000, 0x0b600f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) - AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM_WRITE(cbuster_palette_w) AM_SHARE("palette") - AM_RANGE(0x0b9000, 0x0b9fff) AM_RAM_WRITE(cbuster_palette_ext_w) AM_SHARE("palette_ext") - AM_RANGE(0x0bc000, 0x0bc00f) AM_READWRITE(twocrude_control_r, twocrude_control_w) -ADDRESS_MAP_END +void cbuster_state::twocrude_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x083fff).ram(); + + map(0x0a0000, 0x0a1fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x0a2000, 0x0a2fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x0a4000, 0x0a47ff).ram().share("pf1_rowscroll"); + map(0x0a6000, 0x0a67ff).ram().share("pf2_rowscroll"); + + map(0x0a8000, 0x0a8fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x0aa000, 0x0aafff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x0ac000, 0x0ac7ff).ram().share("pf3_rowscroll"); + map(0x0ae000, 0x0ae7ff).ram().share("pf4_rowscroll"); + + map(0x0b0000, 0x0b07ff).ram().share("spriteram"); + map(0x0b4000, 0x0b4001).nopw(); + map(0x0b5000, 0x0b500f).w("tilegen1", FUNC(deco16ic_device::pf_control_w)); + map(0x0b6000, 0x0b600f).w("tilegen2", FUNC(deco16ic_device::pf_control_w)); + map(0x0b8000, 0x0b8fff).ram().w(this, FUNC(cbuster_state::cbuster_palette_w)).share("palette"); + map(0x0b9000, 0x0b9fff).ram().w(this, FUNC(cbuster_state::cbuster_palette_ext_w)).share("palette_ext"); + map(0x0bc000, 0x0bc00f).rw(this, FUNC(cbuster_state::twocrude_control_r), FUNC(cbuster_state::twocrude_control_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(cbuster_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void cbuster_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).ram(); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp index ac580afd735..bcdf399b15b 100644 --- a/src/mame/drivers/cc40.cpp +++ b/src/mame/drivers/cc40.cpp @@ -363,25 +363,26 @@ WRITE8_MEMBER(cc40_state::keyboard_w) m_key_select = data; } -ADDRESS_MAP_START(cc40_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - - AM_RANGE(0x0110, 0x0110) AM_READWRITE(bus_control_r, bus_control_w) - AM_RANGE(0x0111, 0x0111) AM_WRITE(power_w) - AM_RANGE(0x0112, 0x0112) AM_NOP // d0-d3: Hexbus data - AM_RANGE(0x0113, 0x0113) AM_NOP // d0: Hexbus available - AM_RANGE(0x0114, 0x0114) AM_NOP // d0,d1: Hexbus handshake - AM_RANGE(0x0115, 0x0115) AM_DEVWRITE("dac", dac_bit_interface, write) // d0: piezo control - AM_RANGE(0x0116, 0x0116) AM_READ(battery_r) - AM_RANGE(0x0119, 0x0119) AM_READWRITE(bankswitch_r, bankswitch_w) - AM_RANGE(0x011a, 0x011a) AM_READWRITE(clock_control_r, clock_control_w) - AM_RANGE(0x011e, 0x011f) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) - - AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("sysram.0") - AM_RANGE(0x1000, 0x4fff) AM_READWRITE(sysram_r, sysram_w) - AM_RANGE(0x5000, 0xcfff) AM_ROMBANK("cartbank") - AM_RANGE(0xd000, 0xefff) AM_ROMBANK("sysbank") -ADDRESS_MAP_END +void cc40_state::main_map(address_map &map) +{ + map.unmap_value_high(); + + map(0x0110, 0x0110).rw(this, FUNC(cc40_state::bus_control_r), FUNC(cc40_state::bus_control_w)); + map(0x0111, 0x0111).w(this, FUNC(cc40_state::power_w)); + map(0x0112, 0x0112).noprw(); // d0-d3: Hexbus data + map(0x0113, 0x0113).noprw(); // d0: Hexbus available + map(0x0114, 0x0114).noprw(); // d0,d1: Hexbus handshake + map(0x0115, 0x0115).w("dac", FUNC(dac_bit_interface::write)); // d0: piezo control + map(0x0116, 0x0116).r(this, FUNC(cc40_state::battery_r)); + map(0x0119, 0x0119).rw(this, FUNC(cc40_state::bankswitch_r), FUNC(cc40_state::bankswitch_w)); + map(0x011a, 0x011a).rw(this, FUNC(cc40_state::clock_control_r), FUNC(cc40_state::clock_control_w)); + map(0x011e, 0x011f).rw("hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write)); + + map(0x0800, 0x0fff).ram().share("sysram.0"); + map(0x1000, 0x4fff).rw(this, FUNC(cc40_state::sysram_r), FUNC(cc40_state::sysram_w)); + map(0x5000, 0xcfff).bankr("cartbank"); + map(0xd000, 0xefff).bankr("sysbank"); +} diff --git a/src/mame/drivers/ccastles.cpp b/src/mame/drivers/ccastles.cpp index 00a4f60e582..671bd0c52d2 100644 --- a/src/mame/drivers/ccastles.cpp +++ b/src/mame/drivers/ccastles.cpp @@ -321,31 +321,32 @@ WRITE8_MEMBER(ccastles_state::nvram_w) *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(ccastles_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_RAM_WRITE(ccastles_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0000, 0x0001) AM_WRITE(ccastles_bitmode_addr_w) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ccastles_bitmode_r, ccastles_bitmode_w) - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x8e00, 0x8fff) AM_SHARE("spriteram") - AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0300) AM_READWRITE(nvram_r, nvram_w) - AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x01fc) AM_READ(leta_r) - AM_RANGE(0x9600, 0x97ff) AM_READ_PORT("IN0") - AM_RANGE(0x9800, 0x980f) AM_MIRROR(0x01f0) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x9a00, 0x9a0f) AM_MIRROR(0x01f0) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x9c00, 0x9c7f) AM_WRITE(nvram_recall_w) - AM_RANGE(0x9c80, 0x9cff) AM_WRITE(ccastles_hscroll_w) - AM_RANGE(0x9d00, 0x9d7f) AM_WRITE(ccastles_vscroll_w) - AM_RANGE(0x9d80, 0x9dff) AM_WRITE(irq_ack_w) - AM_RANGE(0x9e00, 0x9e7f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9e80, 0x9e81) AM_MIRROR(0x0078) AM_WRITE(led_w) - AM_RANGE(0x9e82, 0x9e83) AM_MIRROR(0x0078) AM_WRITE(nvram_store_w) - AM_RANGE(0x9e85, 0x9e86) AM_MIRROR(0x0078) AM_WRITE(ccounter_w) - AM_RANGE(0x9e87, 0x9e87) AM_MIRROR(0x0078) AM_WRITE(bankswitch_w) - AM_RANGE(0x9f00, 0x9f07) AM_MIRROR(0x0078) AM_WRITE(ccastles_video_control_w) - AM_RANGE(0x9f80, 0x9fbf) AM_MIRROR(0x0040) AM_WRITE(ccastles_paletteram_w) - AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ccastles_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).ram().w(this, FUNC(ccastles_state::ccastles_videoram_w)).share("videoram"); + map(0x0000, 0x0001).w(this, FUNC(ccastles_state::ccastles_bitmode_addr_w)); + map(0x0002, 0x0002).rw(this, FUNC(ccastles_state::ccastles_bitmode_r), FUNC(ccastles_state::ccastles_bitmode_w)); + map(0x8000, 0x8fff).ram(); + map(0x8e00, 0x8fff).share("spriteram"); + map(0x9000, 0x90ff).mirror(0x0300).rw(this, FUNC(ccastles_state::nvram_r), FUNC(ccastles_state::nvram_w)); + map(0x9400, 0x9403).mirror(0x01fc).r(this, FUNC(ccastles_state::leta_r)); + map(0x9600, 0x97ff).portr("IN0"); + map(0x9800, 0x980f).mirror(0x01f0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x9a00, 0x9a0f).mirror(0x01f0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x9c00, 0x9c7f).w(this, FUNC(ccastles_state::nvram_recall_w)); + map(0x9c80, 0x9cff).w(this, FUNC(ccastles_state::ccastles_hscroll_w)); + map(0x9d00, 0x9d7f).w(this, FUNC(ccastles_state::ccastles_vscroll_w)); + map(0x9d80, 0x9dff).w(this, FUNC(ccastles_state::irq_ack_w)); + map(0x9e00, 0x9e7f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x9e80, 0x9e81).mirror(0x0078).w(this, FUNC(ccastles_state::led_w)); + map(0x9e82, 0x9e83).mirror(0x0078).w(this, FUNC(ccastles_state::nvram_store_w)); + map(0x9e85, 0x9e86).mirror(0x0078).w(this, FUNC(ccastles_state::ccounter_w)); + map(0x9e87, 0x9e87).mirror(0x0078).w(this, FUNC(ccastles_state::bankswitch_w)); + map(0x9f00, 0x9f07).mirror(0x0078).w(this, FUNC(ccastles_state::ccastles_video_control_w)); + map(0x9f80, 0x9fbf).mirror(0x0040).w(this, FUNC(ccastles_state::ccastles_paletteram_w)); + map(0xa000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).rom(); +} diff --git a/src/mame/drivers/cchance.cpp b/src/mame/drivers/cchance.cpp index 35bcb452c7b..103c038a425 100644 --- a/src/mame/drivers/cchance.cpp +++ b/src/mame/drivers/cchance.cpp @@ -82,24 +82,25 @@ WRITE8_MEMBER(cchance_state::output_1_w) m_bell_io = (data & 0x80)>>4; } -ADDRESS_MAP_START(cchance_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void cchance_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); - AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) + map(0xa000, 0xafff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0xb000, 0xbfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); - AM_RANGE(0xc000, 0xdfff) AM_RAM + map(0xc000, 0xdfff).ram(); - AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xe300, 0xe303) AM_RAM AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */ - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */ + map(0xe000, 0xe2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xe300, 0xe303).ram().mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */ + map(0xe800, 0xe800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */ - AM_RANGE(0xf000, 0xf000) AM_READNOP AM_WRITENOP //??? - AM_RANGE(0xf001, 0xf001) AM_READ(input_1_r) AM_WRITE(output_0_w) - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN0") AM_WRITE(output_1_w) - AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xf801, 0xf801) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END + map(0xf000, 0xf000).nopr().nopw(); //??? + map(0xf001, 0xf001).r(this, FUNC(cchance_state::input_1_r)).w(this, FUNC(cchance_state::output_0_w)); + map(0xf002, 0xf002).portr("IN0").w(this, FUNC(cchance_state::output_1_w)); + map(0xf800, 0xf801).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xf801, 0xf801).r("aysnd", FUNC(ay8910_device::data_r)); +} static INPUT_PORTS_START( cchance ) diff --git a/src/mame/drivers/cchasm.cpp b/src/mame/drivers/cchasm.cpp index 92fb09db52e..da6f86d35f0 100644 --- a/src/mame/drivers/cchasm.cpp +++ b/src/mame/drivers/cchasm.cpp @@ -35,15 +35,16 @@ * *************************************/ -ADDRESS_MAP_START(cchasm_state::memmap) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x04000f) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0xff) - AM_RANGE(0x050000, 0x050001) AM_WRITE(refresh_control_w) - AM_RANGE(0x060000, 0x060001) AM_READ_PORT("DSW") AM_WRITE(led_w) - AM_RANGE(0x070000, 0x070001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xf80000, 0xf800ff) AM_READWRITE(io_r,io_w) - AM_RANGE(0xffb000, 0xffffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END +void cchasm_state::memmap(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x04000f).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0x050000, 0x050001).w(this, FUNC(cchasm_state::refresh_control_w)); + map(0x060000, 0x060001).portr("DSW").w(this, FUNC(cchasm_state::led_w)); + map(0x070000, 0x070001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xf80000, 0xf800ff).rw(this, FUNC(cchasm_state::io_r), FUNC(cchasm_state::io_w)); + map(0xffb000, 0xffffff).ram().share("ram"); +} /************************************* * @@ -51,25 +52,27 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cchasm_state::sound_memmap) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM - AM_RANGE(0x6000, 0x6001) AM_MIRROR(0xf9e) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0xf9e) AM_READ(coin_sound_r) - AM_RANGE(0x6001, 0x6001) AM_MIRROR(0xf9e) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x6020, 0x6021) AM_MIRROR(0xf9e) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x6021, 0x6021) AM_MIRROR(0xf9e) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x6040, 0x6040) AM_MIRROR(0xf9e) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0x6041, 0x6041) AM_MIRROR(0xf9e) AM_READWRITE(soundlatch2_r, soundlatch4_w) - AM_RANGE(0x6061, 0x6061) AM_MIRROR(0xf9e) AM_WRITE(reset_coin_flag_w) - AM_RANGE(0x7041, 0x7041) AM_NOP // TODO -ADDRESS_MAP_END - -ADDRESS_MAP_START(cchasm_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void cchasm_state::sound_memmap(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x5000, 0x53ff).ram(); + map(0x6000, 0x6001).mirror(0xf9e).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6000).mirror(0xf9e).r(this, FUNC(cchasm_state::coin_sound_r)); + map(0x6001, 0x6001).mirror(0xf9e).r("ay1", FUNC(ay8910_device::data_r)); + map(0x6020, 0x6021).mirror(0xf9e).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x6021, 0x6021).mirror(0xf9e).r("ay2", FUNC(ay8910_device::data_r)); + map(0x6040, 0x6040).mirror(0xf9e).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch3, FUNC(generic_latch_8_device::write)); + map(0x6041, 0x6041).mirror(0xf9e).rw(this, FUNC(cchasm_state::soundlatch2_r), FUNC(cchasm_state::soundlatch4_w)); + map(0x6061, 0x6061).mirror(0xf9e).w(this, FUNC(cchasm_state::reset_coin_flag_w)); + map(0x7041, 0x7041).noprw(); // TODO +} + +void cchasm_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /************************************* * diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp index d4fa10c5a57..bb95ef3bc7d 100644 --- a/src/mame/drivers/cclimber.cpp +++ b/src/mame/drivers/cclimber.cpp @@ -321,186 +321,202 @@ READ8_MEMBER(cclimber_state::bagmanf_a000_r) /* Note that River Patrol reads/writes to a000-a4f0. This is a bug in the code. The instruction at 0x0593 should say LD DE,$8000 */ -ADDRESS_MAP_START(cclimber_state::cclimber_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */ - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram") - AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */ - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") +void cclimber_state::cclimber_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6bff).ram(); /* Crazy Kong only */ + map(0x8000, 0x83ff).ram(); + map(0x8800, 0x88ff).ram().share("bigspriteram"); + map(0x8900, 0x8bff).ram(); /* not used, but initialized */ + map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram"); /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */ /* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */ - AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */ - AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll") - AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl") - AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::cannonb_map) - AM_RANGE(0x5045, 0x505f) AM_WRITENOP /* do not errorlog this */ - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x8800, 0x88ff) AM_READNOP AM_WRITEONLY AM_SHARE("bigspriteram") /* must not return what's written (game will reset after coin insert if it returns 0xff)*/ + map(0x9800, 0x9bff).ram(); /* not used, but initialized */ + map(0x9800, 0x981f).ram().share("column_scroll"); + map(0x9880, 0x989f).ram().share("spriteram"); + map(0x98dc, 0x98df).ram().share("bigspritectrl"); + map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram"); + map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa000, 0xa000).portr("P1"); + map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w)); + map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w)); + map(0xb800, 0xb800).portr("SYSTEM"); +} + +void cclimber_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().share("decrypted_opcodes"); +} + +void cclimber_state::cannonb_map(address_map &map) +{ + map(0x5045, 0x505f).nopw(); /* do not errorlog this */ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6bff).ram(); + map(0x8000, 0x83ff).ram(); + map(0x8800, 0x88ff).nopr().writeonly().share("bigspriteram"); /* must not return what's written (game will reset after coin insert if it returns 0xff)*/ // AM_RANGE(0x8900, 0x8bff) AM_WRITEONLY /* not used, but initialized */ - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") + map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram"); /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */ /* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */ - AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */ - AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll") - AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl") - AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::swimmer_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_RAM AM_SHARE("bigspriteram") - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("column_scroll") - AM_RANGE(0x9880, 0x989f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x98fc, 0x98ff) AM_WRITEONLY AM_SHARE("bigspritectrl") - AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1") AM_WRITE(swimmer_sh_soundlatch_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1") - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("bgcolor") - AM_RANGE(0xb880, 0xb880) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::guzzler_map) - AM_IMPORT_FROM(swimmer_map) - AM_RANGE(0xc000, 0xc7ff) AM_RAM /* ??? used by Guzzler */ - AM_RANGE(0xe000, 0xffff) AM_ROM /* Guzzler only */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::yamato_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM - AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram") - AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */ - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") + map(0x9800, 0x9bff).ram(); /* not used, but initialized */ + map(0x9800, 0x981f).ram().share("column_scroll"); + map(0x9880, 0x989f).ram().share("spriteram"); + map(0x98dc, 0x98df).ram().share("bigspritectrl"); + map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram"); + map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa000, 0xa000).portr("P1"); + map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w)); + map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w)); + map(0xb800, 0xb800).portr("SYSTEM"); +} + +void cclimber_state::swimmer_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x88ff).mirror(0x0100).ram().share("bigspriteram"); + map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram"); + map(0x9800, 0x981f).writeonly().share("column_scroll"); + map(0x9880, 0x989f).writeonly().share("spriteram"); + map(0x98fc, 0x98ff).writeonly().share("bigspritectrl"); + map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram"); + map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa000, 0xa000).portr("P2"); + map(0xa800, 0xa800).portr("P1").w(this, FUNC(cclimber_state::swimmer_sh_soundlatch_w)); + map(0xb000, 0xb000).portr("DSW1"); + map(0xb800, 0xb800).portr("DSW2").writeonly().share("bgcolor"); + map(0xb880, 0xb880).portr("SYSTEM"); +} + +void cclimber_state::guzzler_map(address_map &map) +{ + swimmer_map(map); + map(0xc000, 0xc7ff).ram(); /* ??? used by Guzzler */ + map(0xe000, 0xffff).rom(); /* Guzzler only */ +} + +void cclimber_state::yamato_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).rom(); + map(0x8800, 0x88ff).ram().share("bigspriteram"); + map(0x8900, 0x8bff).ram(); /* not used, but initialized */ + map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram"); /* 9800-9bff and 9c00-9fff share the same RAM, interleaved */ /* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */ - AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */ - AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll") - AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl") - AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("COIN") - AM_RANGE(0xba00, 0xba00) AM_READ_PORT("START") /* maybe a mirror of b800 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::yamato_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::toprollr_map) - AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0x6bff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram") - AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_SHARE("bg_videoram") - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM AM_SHARE("bg_coloram") - AM_RANGE(0x9800, 0x987f) AM_RAM /* unused ? */ - AM_RANGE(0x9880, 0x995f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x99dc, 0x99df) AM_RAM AM_SHARE("bigspritectrl") - AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::bagmanf_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */ - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P1") - AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram") // wrong - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("P2") - AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */ - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xffe0, 0xffff) AM_RAM AM_SHARE("column_scroll") // wrong, is this area even connected? - AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9800, 0x9800) AM_READ_PORT("SYSTEM") - AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl") // wrong - AM_RANGE(0x9c00, 0x9fff) AM_RAM /* not used, but initialized */ - AM_RANGE(0xa000, 0xa000) AM_READ(bagmanf_a000_r) - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa800, 0xa800) AM_READNOP AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w) - AM_RANGE(0xb800, 0xb800) AM_READNOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::toprollr_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1d") - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0xc000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::cclimber_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x09) AM_DEVWRITE("cclimber_audio:aysnd", ay8910_device, address_data_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("cclimber_audio:aysnd", ay8910_device, data_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::yamato_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(yamato_p0_w) /* ??? */ - AM_RANGE(0x01, 0x01) AM_WRITE(yamato_p1_w) /* ??? */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(cclimber_state::swimmer_audio_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0x4001) AM_RAM /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::yamato_audio_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x5000, 0x53ff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(cclimber_state::swimmer_audio_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cclimber_state::yamato_audio_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x04, 0x04) AM_READ(yamato_p0_r) /* ??? */ - AM_RANGE(0x08, 0x08) AM_READ(yamato_p1_r) /* ??? */ -ADDRESS_MAP_END + map(0x9800, 0x9bff).ram(); /* not used, but initialized */ + map(0x9800, 0x981f).ram().share("column_scroll"); + map(0x9880, 0x989f).ram().share("spriteram"); + map(0x98dc, 0x98df).ram().share("bigspritectrl"); + map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram"); + map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa000, 0xa000).portr("P1"); + map(0xa800, 0xa800).portr("P2"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb800, 0xb800).portr("COIN"); + map(0xba00, 0xba00).portr("START"); /* maybe a mirror of b800 */ +} + +void cclimber_state::yamato_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + +void cclimber_state::toprollr_map(address_map &map) +{ + map(0x0000, 0x5fff).bankr("bank1"); + map(0x6000, 0x6bff).ram().share("ram"); + map(0x8800, 0x88ff).ram().share("bigspriteram"); + map(0x8c00, 0x8fff).ram().share("bg_videoram"); + map(0x9000, 0x93ff).ram().share("videoram"); + map(0x9400, 0x97ff).ram().share("bg_coloram"); + map(0x9800, 0x987f).ram(); /* unused ? */ + map(0x9880, 0x995f).ram().share("spriteram"); + map(0x99dc, 0x99df).ram().share("bigspritectrl"); + map(0x9c00, 0x9fff).ram().share("colorram"); + map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa000, 0xa000).portr("P1"); + map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w)); + map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w)); + map(0xb800, 0xb800).portr("SYSTEM"); + map(0xc000, 0xffff).rom(); +} + +void cclimber_state::bagmanf_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6bff).ram(); /* Crazy Kong only */ + map(0x8000, 0x8000).portr("P1"); + map(0x8800, 0x88ff).ram().share("bigspriteram"); // wrong + map(0x8800, 0x8800).portr("P2"); + map(0x8900, 0x8bff).ram(); /* not used, but initialized */ + map(0x9000, 0x93ff).ram().share("videoram"); + map(0xffe0, 0xffff).ram().share("column_scroll"); // wrong, is this area even connected? + map(0x9800, 0x9bff).ram().share("colorram"); + map(0x9800, 0x981f).ram().share("spriteram"); + map(0x9800, 0x9800).portr("SYSTEM"); + map(0x98dc, 0x98df).ram().share("bigspritectrl"); // wrong + map(0x9c00, 0x9fff).ram(); /* not used, but initialized */ + map(0xa000, 0xa000).r(this, FUNC(cclimber_state::bagmanf_a000_r)); + map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa800, 0xa800).nopr().w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w)); + map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w)); + map(0xb800, 0xb800).nopr(); +} + +void cclimber_state::toprollr_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x5fff).bankr("bank1d"); + map(0xc000, 0xffff).rom().region("maincpu", 0xc000); +} + +void cclimber_state::cclimber_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x09).w("cclimber_audio:aysnd", FUNC(ay8910_device::address_data_w)); + map(0x0c, 0x0c).r("cclimber_audio:aysnd", FUNC(ay8910_device::data_r)); +} + +void cclimber_state::yamato_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(cclimber_state::yamato_p0_w)); /* ??? */ + map(0x01, 0x01).w(this, FUNC(cclimber_state::yamato_p1_w)); /* ??? */ +} + + +void cclimber_state::swimmer_audio_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4000, 0x4001).ram(); /* ??? */ +} + +void cclimber_state::yamato_audio_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x5000, 0x53ff).ram(); +} + + +void cclimber_state::swimmer_audio_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x80, 0x81).w("ay2", FUNC(ay8910_device::data_address_w)); +} + +void cclimber_state::yamato_audio_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x04, 0x04).r(this, FUNC(cclimber_state::yamato_p0_r)); /* ??? */ + map(0x08, 0x08).r(this, FUNC(cclimber_state::yamato_p1_r)); /* ??? */ +} static INPUT_PORTS_START( cclimber ) diff --git a/src/mame/drivers/ccs2810.cpp b/src/mame/drivers/ccs2810.cpp index e3d6fe90ad6..2bf39f94ca7 100644 --- a/src/mame/drivers/ccs2810.cpp +++ b/src/mame/drivers/ccs2810.cpp @@ -178,21 +178,24 @@ WRITE8_MEMBER(ccs_state::io_write) m_ins8250->ins8250_w(space, offset & 7, data); } -ADDRESS_MAP_START(ccs_state::ccs2810_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(memory_read, memory_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ccs_state::ccs2810_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_read, io_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ccs_state::ccs2422_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_read, io_write) - AM_RANGE(0x04, 0x04) AM_MIRROR(0xff00) AM_READWRITE(port04_r,port04_w) - AM_RANGE(0x30, 0x33) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", mb8877_device, read, write) - AM_RANGE(0x34, 0x34) AM_MIRROR(0xff00) AM_READWRITE(port34_r,port34_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(port40_w) -ADDRESS_MAP_END +void ccs_state::ccs2810_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(ccs_state::memory_read), FUNC(ccs_state::memory_write)); +} + +void ccs_state::ccs2810_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(ccs_state::io_read), FUNC(ccs_state::io_write)); +} + +void ccs_state::ccs2422_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(ccs_state::io_read), FUNC(ccs_state::io_write)); + map(0x04, 0x04).mirror(0xff00).rw(this, FUNC(ccs_state::port04_r), FUNC(ccs_state::port04_w)); + map(0x30, 0x33).mirror(0xff00).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write)); + map(0x34, 0x34).mirror(0xff00).rw(this, FUNC(ccs_state::port34_r), FUNC(ccs_state::port34_w)); + map(0x40, 0x40).mirror(0xff00).w(this, FUNC(ccs_state::port40_w)); +} /* Input ports */ static INPUT_PORTS_START( ccs2810 ) diff --git a/src/mame/drivers/ccs300.cpp b/src/mame/drivers/ccs300.cpp index 6a7c1ee19df..a3e5dcb5ed3 100644 --- a/src/mame/drivers/ccs300.cpp +++ b/src/mame/drivers/ccs300.cpp @@ -47,24 +47,26 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(ccs300_state::ccs300_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ccs300_state::ccs300_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt) // init bytes seem to be for a PIO - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) // init bytes seem to be for a CTC - AM_RANGE(0x30, 0x33) // fdc? - AM_RANGE(0x34, 0x34) // motor control? - AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) - AM_RANGE(0xf0, 0xf0) // unknown, long sequence of init bytes - AM_RANGE(0xf2, 0xf2) // dip or jumper? -ADDRESS_MAP_END +void ccs300_state::ccs300_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0"); + map(0x0800, 0xffff).ram(); +} + +void ccs300_state::ccs300_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x10, 0x13).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x14, 0x17).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // init bytes seem to be for a PIO + map(0x18, 0x1b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // init bytes seem to be for a CTC + map(0x30, 0x33); // fdc? + map(0x34, 0x34); // motor control? + map(0x40, 0x40).w(this, FUNC(ccs300_state::port40_w)); + map(0xf0, 0xf0); // unknown, long sequence of init bytes + map(0xf2, 0xf2); // dip or jumper? +} /* Input ports */ static INPUT_PORTS_START( ccs300 ) diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp index 47c617d1a38..c818eda1e2f 100644 --- a/src/mame/drivers/cd2650.cpp +++ b/src/mame/drivers/cd2650.cpp @@ -117,20 +117,23 @@ READ8_MEMBER(cd2650_state::keyin_r) return ret; } -ADDRESS_MAP_START(cd2650_state::cd2650_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x1000, 0x7fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cd2650_state::cd2650_io) - ADDRESS_MAP_UNMAP_HIGH +void cd2650_state::cd2650_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("roms", 0); + map(0x1000, 0x7fff).ram().share("videoram"); +} + +void cd2650_state::cd2650_io(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x80, 0x84) disk i/o -ADDRESS_MAP_END +} -ADDRESS_MAP_START(cd2650_state::cd2650_data) - AM_RANGE(S2650_DATA_PORT,S2650_DATA_PORT) AM_READ(keyin_r) AM_DEVWRITE("outlatch", f9334_device, write_nibble_d3) -ADDRESS_MAP_END +void cd2650_state::cd2650_data(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(cd2650_state::keyin_r)).w("outlatch", FUNC(f9334_device::write_nibble_d3)); +} /* Input ports */ static INPUT_PORTS_START( cd2650 ) diff --git a/src/mame/drivers/cdc721.cpp b/src/mame/drivers/cdc721.cpp index df10fc4cd07..590813ceed6 100644 --- a/src/mame/drivers/cdc721.cpp +++ b/src/mame/drivers/cdc721.cpp @@ -41,18 +41,20 @@ private: required_shared_ptr<u8> m_p_videoram; }; -ADDRESS_MAP_START(cdc721_state::mem_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM AM_REGION("maincpu", 0x10000) +void cdc721_state::mem_map(address_map &map) +{ + map(0x0000, 0x4fff).rom().region("maincpu", 0x10000); // AM_RANGE(0x0000, 0x4fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x8000, 0xe10f) AM_RAM - AM_RANGE(0xe110, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END + map(0x8000, 0xe10f).ram(); + map(0xe110, 0xffff).ram().share("videoram"); +} -ADDRESS_MAP_START(cdc721_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("crtc", tms9927_device, read, write) +void cdc721_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x1f).rw("crtc", FUNC(tms9927_device::read), FUNC(tms9927_device::write)); // AM_RANGE(0x70, 0x70) AM_WRITE(port70_w) -ADDRESS_MAP_END +} static INPUT_PORTS_START( cdc721 ) INPUT_PORTS_END diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp index 34cd0fdc8a5..d875373ccf0 100644 --- a/src/mame/drivers/cdi.cpp +++ b/src/mame/drivers/cdi.cpp @@ -67,76 +67,81 @@ static inline void ATTR_PRINTF(3,4) verboselog(device_t& device, int n_level, co * Memory maps * *************************/ -ADDRESS_MAP_START(cdi_state::cdimono1_mem) - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea") - AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb") - AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w) +void cdi_state::cdimono1_mem(address_map &map) +{ + map(0x00000000, 0x0007ffff).ram().share("planea"); + map(0x00200000, 0x0027ffff).ram().share("planeb"); + map(0x00300000, 0x00303bff).rw(m_cdic, FUNC(cdicdic_device::ram_r), FUNC(cdicdic_device::ram_w)); #if ENABLE_UART_PRINTING - AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable) + map(0x00301400, 0x00301403).r(m_scc, FUNC(cdi68070_device::uart_loopback_enable)); #endif - AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w) - AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave_hle", cdislave_device, slave_r, slave_w) - AM_RANGE(0x00318000, 0x0031ffff) AM_NOP - AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */ - AM_RANGE(0x00400000, 0x0047ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w) - AM_RANGE(0x00500000, 0x0057ffff) AM_RAM - AM_RANGE(0x00580000, 0x00ffffff) AM_NOP - AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC - AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cdi_state::cdimono2_mem) - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea") - AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb") + map(0x00303c00, 0x00303fff).rw(m_cdic, FUNC(cdicdic_device::regs_r), FUNC(cdicdic_device::regs_w)); + map(0x00310000, 0x00317fff).rw(m_slave_hle, FUNC(cdislave_device::slave_r), FUNC(cdislave_device::slave_w)); + map(0x00318000, 0x0031ffff).noprw(); + map(0x00320000, 0x00323fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */ + map(0x00400000, 0x0047ffff).rom().region("maincpu", 0); + map(0x004fffe0, 0x004fffff).rw(m_mcd212, FUNC(mcd212_device::regs_r), FUNC(mcd212_device::regs_w)); + map(0x00500000, 0x0057ffff).ram(); + map(0x00580000, 0x00ffffff).noprw(); + map(0x00e00000, 0x00efffff).ram(); // DVC + map(0x80000000, 0x8000807f).rw(m_scc, FUNC(cdi68070_device::periphs_r), FUNC(cdi68070_device::periphs_w)); +} + +void cdi_state::cdimono2_mem(address_map &map) +{ + map(0x00000000, 0x0007ffff).ram().share("planea"); + map(0x00200000, 0x0027ffff).ram().share("planeb"); #if ENABLE_UART_PRINTING - AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable) + map(0x00301400, 0x00301403).r(m_scc, FUNC(cdi68070_device::uart_loopback_enable)); #endif //AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w) //AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w) //AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave", cdislave_device, slave_r, slave_w) //AM_RANGE(0x00318000, 0x0031ffff) AM_NOP - AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */ - AM_RANGE(0x00400000, 0x0047ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w) + map(0x00320000, 0x00323fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */ + map(0x00400000, 0x0047ffff).rom().region("maincpu", 0); + map(0x004fffe0, 0x004fffff).rw(m_mcd212, FUNC(mcd212_device::regs_r), FUNC(mcd212_device::regs_w)); //AM_RANGE(0x00500000, 0x0057ffff) AM_RAM - AM_RANGE(0x00500000, 0x00ffffff) AM_NOP + map(0x00500000, 0x00ffffff).noprw(); //AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC - AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w) -ADDRESS_MAP_END + map(0x80000000, 0x8000807f).rw(m_scc, FUNC(cdi68070_device::periphs_r), FUNC(cdi68070_device::periphs_w)); +} -ADDRESS_MAP_START(cdi_state::cdi910_mem) - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("planea") - AM_RANGE(0x00180000, 0x001fffff) AM_ROM AM_REGION("maincpu", 0) // boot vectors point here +void cdi_state::cdi910_mem(address_map &map) +{ + map(0x00000000, 0x0007ffff).ram().share("planea"); + map(0x00180000, 0x001fffff).rom().region("maincpu", 0); // boot vectors point here - AM_RANGE(0x00200000, 0x0027ffff) AM_RAM AM_SHARE("planeb") + map(0x00200000, 0x0027ffff).ram().share("planeb"); #if ENABLE_UART_PRINTING - AM_RANGE(0x00301400, 0x00301403) AM_DEVREAD("scc68070", cdi68070_device, uart_loopback_enable) + map(0x00301400, 0x00301403).r(m_scc, FUNC(cdi68070_device::uart_loopback_enable)); #endif // AM_RANGE(0x00300000, 0x00303bff) AM_DEVREADWRITE("cdic", cdicdic_device, ram_r, ram_w) // AM_RANGE(0x00303c00, 0x00303fff) AM_DEVREADWRITE("cdic", cdicdic_device, regs_r, regs_w) // AM_RANGE(0x00310000, 0x00317fff) AM_DEVREADWRITE("slave_hle", cdislave_device, slave_r, slave_w) // AM_RANGE(0x00318000, 0x0031ffff) AM_NOP - AM_RANGE(0x00320000, 0x00323fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */ - AM_RANGE(0x004fffe0, 0x004fffff) AM_DEVREADWRITE("mcd212", mcd212_device, regs_r, regs_w) + map(0x00320000, 0x00323fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */ + map(0x004fffe0, 0x004fffff).rw(m_mcd212, FUNC(mcd212_device::regs_r), FUNC(mcd212_device::regs_w)); // AM_RANGE(0x00500000, 0x0057ffff) AM_RAM - AM_RANGE(0x00500000, 0x00ffffff) AM_NOP + map(0x00500000, 0x00ffffff).noprw(); // AM_RANGE(0x00e00000, 0x00efffff) AM_RAM // DVC - AM_RANGE(0x80000000, 0x8000807f) AM_DEVREADWRITE("scc68070", cdi68070_device, periphs_r, periphs_w) -ADDRESS_MAP_END + map(0x80000000, 0x8000807f).rw(m_scc, FUNC(cdi68070_device::periphs_r), FUNC(cdi68070_device::periphs_w)); +} -ADDRESS_MAP_START(cdi_state::cdimono2_servo_mem) - AM_RANGE(0x0000, 0x001f) AM_READWRITE(servo_io_r, servo_io_w) - AM_RANGE(0x0050, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x1fff) AM_ROM AM_REGION("servo", 0x100) -ADDRESS_MAP_END +void cdi_state::cdimono2_servo_mem(address_map &map) +{ + map(0x0000, 0x001f).rw(this, FUNC(cdi_state::servo_io_r), FUNC(cdi_state::servo_io_w)); + map(0x0050, 0x00ff).ram(); + map(0x0100, 0x1fff).rom().region("servo", 0x100); +} -ADDRESS_MAP_START(cdi_state::cdimono2_slave_mem) - AM_RANGE(0x0000, 0x001f) AM_READWRITE(slave_io_r, slave_io_w) - AM_RANGE(0x0050, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x1fff) AM_ROM AM_REGION("slave", 0x100) -ADDRESS_MAP_END +void cdi_state::cdimono2_slave_mem(address_map &map) +{ + map(0x0000, 0x001f).rw(this, FUNC(cdi_state::slave_io_r), FUNC(cdi_state::slave_io_w)); + map(0x0050, 0x00ff).ram(); + map(0x0100, 0x1fff).rom().region("slave", 0x100); +} /************************* * Input ports * diff --git a/src/mame/drivers/cedar_magnet.cpp b/src/mame/drivers/cedar_magnet.cpp index 1678c26247c..5fca0f13136 100644 --- a/src/mame/drivers/cedar_magnet.cpp +++ b/src/mame/drivers/cedar_magnet.cpp @@ -241,65 +241,70 @@ public: ***********************/ -ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_mainboard_sub_pal_map) +void cedar_magnet_state::cedar_magnet_mainboard_sub_pal_map(address_map &map) +{ // these are 3x MOTOROLA MM2114N SRAM 4096 bit RAM (twice the size because we map bytes, but only 4 bits are used) // these are on the master board memory sub-board - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(palette_r_w) AM_SHARE("pal_r") - AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(palette_g_w) AM_SHARE("pal_g") - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(palette_b_w) AM_SHARE("pal_b") -ADDRESS_MAP_END + map(0x2400, 0x27ff).ram().w(this, FUNC(cedar_magnet_state::palette_r_w)).share("pal_r"); + map(0x2800, 0x2bff).ram().w(this, FUNC(cedar_magnet_state::palette_g_w)).share("pal_g"); + map(0x3000, 0x33ff).ram().w(this, FUNC(cedar_magnet_state::palette_b_w)).share("pal_b"); +} -ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_mainboard_sub_ram_map) +void cedar_magnet_state::cedar_magnet_mainboard_sub_ram_map(address_map &map) +{ // these are 8x SIEMENS HYB 41256-15 AA - 262,144 bit DRAM (32kbytes) // these are on the master board memory sub-board - AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("ram0") -ADDRESS_MAP_END + map(0x00000, 0x3ffff).ram().share("ram0"); +} -ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_map) - AM_RANGE(0x0000, 0xffff) AM_DEVICE("bank0", address_map_bank_device, amap8) -ADDRESS_MAP_END +void cedar_magnet_state::cedar_magnet_map(address_map &map) +{ + map(0x0000, 0xffff).m(m_bank0, FUNC(address_map_bank_device::amap8)); +} -ADDRESS_MAP_START(cedar_magnet_state::cedar_magnet_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void cedar_magnet_state::cedar_magnet_io(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE(0x18, 0x18) AM_READWRITE(port18_r, port18_w) - AM_RANGE(0x19, 0x19) AM_READWRITE(port19_r, port19_w) - AM_RANGE(0x1a, 0x1a) AM_READ(port1a_r) - AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w) + map(0x18, 0x18).rw(this, FUNC(cedar_magnet_state::port18_r), FUNC(cedar_magnet_state::port18_w)); + map(0x19, 0x19).rw(this, FUNC(cedar_magnet_state::port19_r), FUNC(cedar_magnet_state::port19_w)); + map(0x1a, 0x1a).r(this, FUNC(cedar_magnet_state::port1a_r)); + map(0x1b, 0x1b).w(this, FUNC(cedar_magnet_state::port1b_w)); - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("z80pio_ic48", z80pio_device, read_alt, write_alt) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_ic49", z80pio_device, read_alt, write_alt) + map(0x20, 0x23).rw(m_ic48_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x40, 0x43).rw(m_ic49_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("flop", cedar_magnet_flop_device, read, write) + map(0x60, 0x63).rw("flop", FUNC(cedar_magnet_flop_device::read), FUNC(cedar_magnet_flop_device::write)); - AM_RANGE(0x64, 0x64) AM_READ_PORT("P1_IN") - AM_RANGE(0x68, 0x68) AM_READ_PORT("P2_IN") - AM_RANGE(0x6c, 0x6c) AM_READ_PORT("TEST") + map(0x64, 0x64).portr("P1_IN"); + map(0x68, 0x68).portr("P2_IN"); + map(0x6c, 0x6c).portr("TEST"); // banking / access controls to the sub-board memory - AM_RANGE(0x70, 0x70) AM_WRITE(rambank_palbank_w) - AM_RANGE(0x74, 0x74) AM_WRITE(palupload_w) - AM_RANGE(0x78, 0x78) AM_READWRITE(watchdog_r, paladdr_w) - AM_RANGE(0x7c, 0x7c) AM_READ(port7c_r) // protection?? + map(0x70, 0x70).w(this, FUNC(cedar_magnet_state::rambank_palbank_w)); + map(0x74, 0x74).w(this, FUNC(cedar_magnet_state::palupload_w)); + map(0x78, 0x78).rw(this, FUNC(cedar_magnet_state::watchdog_r), FUNC(cedar_magnet_state::paladdr_w)); + map(0x7c, 0x7c).r(this, FUNC(cedar_magnet_state::port7c_r)); // protection?? - AM_RANGE(0xff, 0xff) AM_DEVWRITE("cedtop", cedar_magnet_sound_device, sound_command_w) -ADDRESS_MAP_END + map(0xff, 0xff).w(m_cedsound, FUNC(cedar_magnet_sound_device::sound_command_w)); +} -ADDRESS_MAP_START(cedar_magnet_state::cedar_bank0) +void cedar_magnet_state::cedar_bank0(address_map &map) +{ /* memory configuration 0 */ - AM_RANGE(0x00000, 0x0ffff) AM_DEVICE("mb_sub_ram", address_map_bank_device, amap8) + map(0x00000, 0x0ffff).m(m_sub_ram_bankdev, FUNC(address_map_bank_device::amap8)); /* memory configuration 1 */ - AM_RANGE(0x10000, 0x1dfff) AM_DEVICE("mb_sub_ram", address_map_bank_device, amap8) - AM_RANGE(0x1e000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0x0000) + map(0x10000, 0x1dfff).m(m_sub_ram_bankdev, FUNC(address_map_bank_device::amap8)); + map(0x1e000, 0x1ffff).rom().region("maincpu", 0x0000); /* memory configuration 2*/ - AM_RANGE(0x20000, 0x2bfff) AM_DEVICE("mb_sub_ram", address_map_bank_device, amap8) - AM_RANGE(0x2c000, 0x2ffff) AM_READWRITE(other_cpu_r, other_cpu_w) + map(0x20000, 0x2bfff).m(m_sub_ram_bankdev, FUNC(address_map_bank_device::amap8)); + map(0x2c000, 0x2ffff).rw(this, FUNC(cedar_magnet_state::other_cpu_r), FUNC(cedar_magnet_state::other_cpu_w)); /* memory configuration 3*/ - AM_RANGE(0x30000, 0x31fff) AM_ROM AM_REGION("maincpu", 0x0000) AM_MIRROR(0x0e000) -ADDRESS_MAP_END + map(0x30000, 0x31fff).rom().region("maincpu", 0x0000).mirror(0x0e000); +} /*********************** diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp index a91335aaa1b..f5d9d1b1114 100644 --- a/src/mame/drivers/centiped.cpp +++ b/src/mame/drivers/centiped.cpp @@ -676,73 +676,78 @@ WRITE_LINE_MEMBER(centiped_state::bullsdrt_coin_count_w) * *************************************/ -ADDRESS_MAP_START(centiped_state::centiped_base_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW1") - AM_RANGE(0x0801, 0x0801) AM_READ_PORT("DSW2") - AM_RANGE(0x0c00, 0x0c00) AM_READ(centiped_IN0_r) - AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("IN1") - AM_RANGE(0x0c02, 0x0c02) AM_READ(centiped_IN2_r) - AM_RANGE(0x0c03, 0x0c03) AM_READ_PORT("IN3") - AM_RANGE(0x1400, 0x140f) AM_WRITE(centiped_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x1600, 0x163f) AM_DEVWRITE("earom",atari_vg_earom_device, write) - AM_RANGE(0x1680, 0x1680) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x1700, 0x173f) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x1800, 0x1800) AM_WRITE(irq_ack_w) - AM_RANGE(0x1c00, 0x1c07) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(centiped_state::centiped_map) - AM_IMPORT_FROM(centiped_base_map) - AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey", pokey_device, read, write) -ADDRESS_MAP_END +void centiped_state::centiped_base_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x03ff).ram().share("rambase"); + map(0x0400, 0x07bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x07c0, 0x07ff).ram().share("spriteram"); + map(0x0800, 0x0800).portr("DSW1"); + map(0x0801, 0x0801).portr("DSW2"); + map(0x0c00, 0x0c00).r(this, FUNC(centiped_state::centiped_IN0_r)); + map(0x0c01, 0x0c01).portr("IN1"); + map(0x0c02, 0x0c02).r(this, FUNC(centiped_state::centiped_IN2_r)); + map(0x0c03, 0x0c03).portr("IN3"); + map(0x1400, 0x140f).w(this, FUNC(centiped_state::centiped_paletteram_w)).share("paletteram"); + map(0x1600, 0x163f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x1680, 0x1680).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x1700, 0x173f).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x1800, 0x1800).w(this, FUNC(centiped_state::irq_ack_w)); + map(0x1c00, 0x1c07).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x2000, 0x2000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2000, 0x3fff).rom(); +} + + +void centiped_state::centiped_map(address_map &map) +{ + centiped_base_map(map); + map(0x1000, 0x100f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); +} //// Centipede bootlegs //// -ADDRESS_MAP_START(centiped_state::centipdb_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x0400, 0x07bf) AM_MIRROR(0x4000) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x07c0, 0x07ff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x4000) AM_READ_PORT("DSW1") - AM_RANGE(0x0801, 0x0801) AM_MIRROR(0x4000) AM_READ_PORT("DSW2") - AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x4000) AM_READ(centiped_IN0_r) - AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x4000) AM_READ_PORT("IN1") - AM_RANGE(0x0c02, 0x0c02) AM_MIRROR(0x4000) AM_READ(centiped_IN2_r) - AM_RANGE(0x0c03, 0x0c03) AM_MIRROR(0x4000) AM_READ_PORT("IN3") - AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x4000) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x4000) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x1400, 0x140f) AM_MIRROR(0x4000) AM_WRITE(centiped_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x1600, 0x163f) AM_MIRROR(0x4000) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x4000) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x1700, 0x173f) AM_MIRROR(0x4000) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x4000) AM_WRITE(irq_ack_w) - AM_RANGE(0x1c00, 0x1c07) AM_MIRROR(0x4000) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x2000, 0x27ff) AM_ROM - AM_RANGE(0x2800, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(centiped_state::magworm_map) - AM_IMPORT_FROM(centiped_base_map) - AM_RANGE(0x1001, 0x1001) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x1003, 0x1003) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(centiped_state::caterplr_map) - AM_IMPORT_FROM(centiped_base_map) - AM_RANGE(0x1780, 0x1780) AM_READ(caterplr_unknown_r) - AM_RANGE(0x1000, 0x100f) AM_READWRITE(caterplr_AY8910_r, caterplr_AY8910_w) -ADDRESS_MAP_END +void centiped_state::centipdb_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).mirror(0x4000).ram(); + map(0x0400, 0x07bf).mirror(0x4000).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x07c0, 0x07ff).mirror(0x4000).ram().share("spriteram"); + map(0x0800, 0x0800).mirror(0x4000).portr("DSW1"); + map(0x0801, 0x0801).mirror(0x4000).portr("DSW2"); + map(0x0c00, 0x0c00).mirror(0x4000).r(this, FUNC(centiped_state::centiped_IN0_r)); + map(0x0c01, 0x0c01).mirror(0x4000).portr("IN1"); + map(0x0c02, 0x0c02).mirror(0x4000).r(this, FUNC(centiped_state::centiped_IN2_r)); + map(0x0c03, 0x0c03).mirror(0x4000).portr("IN3"); + map(0x1000, 0x1001).mirror(0x4000).w(m_aysnd, FUNC(ay8910_device::data_address_w)); + map(0x1001, 0x1001).mirror(0x4000).r(m_aysnd, FUNC(ay8910_device::data_r)); + map(0x1400, 0x140f).mirror(0x4000).w(this, FUNC(centiped_state::centiped_paletteram_w)).share("paletteram"); + map(0x1600, 0x163f).mirror(0x4000).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x1680, 0x1680).mirror(0x4000).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x1700, 0x173f).mirror(0x4000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x1800, 0x1800).mirror(0x4000).w(this, FUNC(centiped_state::irq_ack_w)); + map(0x1c00, 0x1c07).mirror(0x4000).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x2000, 0x27ff).rom(); + map(0x2800, 0x3fff).mirror(0x4000).rom(); + map(0x6000, 0x67ff).rom(); +} + + +void centiped_state::magworm_map(address_map &map) +{ + centiped_base_map(map); + map(0x1001, 0x1001).w(m_aysnd, FUNC(ay8910_device::address_w)); + map(0x1003, 0x1003).rw(m_aysnd, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} + + +void centiped_state::caterplr_map(address_map &map) +{ + centiped_base_map(map); + map(0x1780, 0x1780).r(this, FUNC(centiped_state::caterplr_unknown_r)); + map(0x1000, 0x100f).rw(this, FUNC(centiped_state::caterplr_AY8910_r), FUNC(centiped_state::caterplr_AY8910_w)); +} WRITE8_MEMBER(centiped_state::caterplr_AY8910_w) { @@ -764,26 +769,27 @@ READ8_MEMBER(centiped_state::caterplr_AY8910_r) * *************************************/ -ADDRESS_MAP_START(centiped_state::milliped_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2000) AM_READ(centiped_IN0_r) - AM_RANGE(0x2001, 0x2001) AM_READ(milliped_IN1_r) - AM_RANGE(0x2010, 0x2010) AM_READ(milliped_IN2_r) - AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN3") - AM_RANGE(0x2030, 0x2030) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x2480, 0x249f) AM_WRITE(milliped_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x2500, 0x2507) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w) - AM_RANGE(0x2680, 0x2680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2700, 0x2700) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x2780, 0x27bf) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x4000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void centiped_state::milliped_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x040f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x0800, 0x080f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1000, 0x13bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x13c0, 0x13ff).ram().share("spriteram"); + map(0x2000, 0x2000).r(this, FUNC(centiped_state::centiped_IN0_r)); + map(0x2001, 0x2001).r(this, FUNC(centiped_state::milliped_IN1_r)); + map(0x2010, 0x2010).r(this, FUNC(centiped_state::milliped_IN2_r)); + map(0x2011, 0x2011).portr("IN3"); + map(0x2030, 0x2030).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x2480, 0x249f).w(this, FUNC(centiped_state::milliped_paletteram_w)).share("paletteram"); + map(0x2500, 0x2507).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x2600, 0x2600).w(this, FUNC(centiped_state::irq_ack_w)); + map(0x2680, 0x2680).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2700, 0x2700).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x2780, 0x27bf).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x4000, 0x7fff).rom(); +} @@ -809,30 +815,31 @@ ADDRESS_MAP_END TODO: centiped does not work yet, the game reconfigures the memorymap */ -ADDRESS_MAP_START(centiped_state::multiped_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2000) AM_READ(centiped_IN0_r) - AM_RANGE(0x2001, 0x2001) AM_READ(milliped_IN1_r) - AM_RANGE(0x2010, 0x2010) AM_READ(milliped_IN2_r) - AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN3") - AM_RANGE(0x2030, 0x2030) AM_READNOP - AM_RANGE(0x2480, 0x249f) AM_WRITE(milliped_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x2500, 0x2507) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w) - AM_RANGE(0x2680, 0x2680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2700, 0x2700) AM_WRITENOP - AM_RANGE(0x2780, 0x27bf) AM_WRITENOP - AM_RANGE(0x4000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_WRITE(multiped_eeprom_w) - AM_RANGE(0xd800, 0xd800) AM_MIRROR(0x03ff) AM_READWRITE(multiped_eeprom_r, multiped_prgbank_w) - AM_RANGE(0xdc00, 0xdc00) AM_MIRROR(0x03ff) AM_WRITE(multiped_gfxbank_w) -ADDRESS_MAP_END +void centiped_state::multiped_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x040f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x0800, 0x080f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1000, 0x13bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x13c0, 0x13ff).ram().share("spriteram"); + map(0x2000, 0x2000).r(this, FUNC(centiped_state::centiped_IN0_r)); + map(0x2001, 0x2001).r(this, FUNC(centiped_state::milliped_IN1_r)); + map(0x2010, 0x2010).r(this, FUNC(centiped_state::milliped_IN2_r)); + map(0x2011, 0x2011).portr("IN3"); + map(0x2030, 0x2030).nopr(); + map(0x2480, 0x249f).w(this, FUNC(centiped_state::milliped_paletteram_w)).share("paletteram"); + map(0x2500, 0x2507).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x2600, 0x2600).w(this, FUNC(centiped_state::irq_ack_w)); + map(0x2680, 0x2680).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2700, 0x2700).nopw(); + map(0x2780, 0x27bf).nopw(); + map(0x4000, 0x5fff).rom(); + map(0x6000, 0x7fff).mirror(0x8000).rom(); + map(0x8000, 0xbfff).rom(); + map(0xd000, 0xd7ff).w(this, FUNC(centiped_state::multiped_eeprom_w)); + map(0xd800, 0xd800).mirror(0x03ff).rw(this, FUNC(centiped_state::multiped_eeprom_r), FUNC(centiped_state::multiped_prgbank_w)); + map(0xdc00, 0xdc00).mirror(0x03ff).w(this, FUNC(centiped_state::multiped_gfxbank_w)); +} READ8_MEMBER(centiped_state::multiped_eeprom_r) { @@ -881,21 +888,22 @@ WRITE8_MEMBER(centiped_state::multiped_prgbank_w) * *************************************/ -ADDRESS_MAP_START(centiped_state::warlords_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW1") - AM_RANGE(0x0801, 0x0801) AM_READ_PORT("DSW2") - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("IN0") - AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("IN1") - AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x1800, 0x1800) AM_WRITE(irq_ack_w) - AM_RANGE(0x1c00, 0x1c07) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void centiped_state::warlords_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x07c0, 0x07ff).ram().share("spriteram"); + map(0x0800, 0x0800).portr("DSW1"); + map(0x0801, 0x0801).portr("DSW2"); + map(0x0c00, 0x0c00).portr("IN0"); + map(0x0c01, 0x0c01).portr("IN1"); + map(0x1000, 0x100f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1800, 0x1800).w(this, FUNC(centiped_state::irq_ack_w)); + map(0x1c00, 0x1c07).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x4000, 0x4000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x7fff).rom(); +} @@ -905,28 +913,29 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(centiped_state::mazeinv_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x040f) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x1000, 0x13bf) AM_RAM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x13c0, 0x13ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN0") - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("IN1") - AM_RANGE(0x2010, 0x2010) AM_READ_PORT("IN2") - AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN3") - AM_RANGE(0x2020, 0x2020) AM_READ(mazeinv_input_r) - AM_RANGE(0x2030, 0x2030) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x2480, 0x249f) AM_WRITE(mazeinv_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x2500, 0x2507) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x2580, 0x2583) AM_WRITE(mazeinv_input_select_w) - AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w) - AM_RANGE(0x2680, 0x2680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2700, 0x2700) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x2780, 0x27bf) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x3000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void centiped_state::mazeinv_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x040f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x0800, 0x080f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1000, 0x13bf).ram().w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x13c0, 0x13ff).ram().share("spriteram"); + map(0x2000, 0x2000).portr("IN0"); + map(0x2001, 0x2001).portr("IN1"); + map(0x2010, 0x2010).portr("IN2"); + map(0x2011, 0x2011).portr("IN3"); + map(0x2020, 0x2020).r(this, FUNC(centiped_state::mazeinv_input_r)); + map(0x2030, 0x2030).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x2480, 0x249f).w(this, FUNC(centiped_state::mazeinv_paletteram_w)).share("paletteram"); + map(0x2500, 0x2507).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x2580, 0x2583).w(this, FUNC(centiped_state::mazeinv_input_select_w)); + map(0x2600, 0x2600).w(this, FUNC(centiped_state::irq_ack_w)); + map(0x2680, 0x2680).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2700, 0x2700).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x2780, 0x27bf).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x3000, 0x7fff).rom(); +} @@ -936,35 +945,38 @@ ADDRESS_MAP_END * ****************************************/ -ADDRESS_MAP_START(centiped_state::bullsdrt_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x6000) AM_READ_PORT("DSW1") - AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x6000) AM_READ(centiped_IN0_r) - AM_RANGE(0x1081, 0x1081) AM_MIRROR(0x6000) AM_READ_PORT("IN1") - AM_RANGE(0x1082, 0x1082) AM_MIRROR(0x6000) AM_READ(centiped_IN2_r) - AM_RANGE(0x1200, 0x123f) AM_MIRROR(0x6000) AM_DEVREADWRITE("earom",atari_vg_earom_device, read, write) - AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x6000) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x6000) AM_READ_PORT("DSW2") - AM_RANGE(0x1400, 0x140f) AM_MIRROR(0x6000) AM_WRITE(centiped_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x1480, 0x1487) AM_MIRROR(0x6000) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_NOP - AM_RANGE(0x1800, 0x1bbf) AM_MIRROR(0x6000) AM_WRITE(centiped_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1bc0, 0x1bff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(centiped_state::bullsdrt_port_map) - AM_RANGE(0x00, 0x00) AM_WRITE(bullsdrt_sprites_bank_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(bullsdrt_tilesbank_w) AM_SHARE("bullsdrt_bank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(centiped_state::bullsdrt_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(bullsdrt_data_port_r) AM_DEVWRITE("snsnd", sn76496_device, write) -ADDRESS_MAP_END +void centiped_state::bullsdrt_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x1000).mirror(0x6000).portr("DSW1"); + map(0x1080, 0x1080).mirror(0x6000).r(this, FUNC(centiped_state::centiped_IN0_r)); + map(0x1081, 0x1081).mirror(0x6000).portr("IN1"); + map(0x1082, 0x1082).mirror(0x6000).r(this, FUNC(centiped_state::centiped_IN2_r)); + map(0x1200, 0x123f).mirror(0x6000).rw("earom", FUNC(atari_vg_earom_device::read), FUNC(atari_vg_earom_device::write)); + map(0x1280, 0x1280).mirror(0x6000).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x1300, 0x1300).mirror(0x6000).portr("DSW2"); + map(0x1400, 0x140f).mirror(0x6000).w(this, FUNC(centiped_state::centiped_paletteram_w)).share("paletteram"); + map(0x1480, 0x1487).mirror(0x6000).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x1500, 0x1500).mirror(0x6000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1580, 0x1580).mirror(0x6000).noprw(); + map(0x1800, 0x1bbf).mirror(0x6000).w(this, FUNC(centiped_state::centiped_videoram_w)).share("videoram"); + map(0x1bc0, 0x1bff).mirror(0x6000).ram().share("spriteram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} + +void centiped_state::bullsdrt_port_map(address_map &map) +{ + map(0x00, 0x00).w(this, FUNC(centiped_state::bullsdrt_sprites_bank_w)); + map(0x20, 0x3f).w(this, FUNC(centiped_state::bullsdrt_tilesbank_w)).share("bullsdrt_bank"); +} + +void centiped_state::bullsdrt_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(centiped_state::bullsdrt_data_port_r)).w("snsnd", FUNC(sn76496_device::write)); +} diff --git a/src/mame/drivers/cesclass.cpp b/src/mame/drivers/cesclass.cpp index b6057908fc4..83fe8088c97 100644 --- a/src/mame/drivers/cesclass.cpp +++ b/src/mame/drivers/cesclass.cpp @@ -125,24 +125,25 @@ WRITE16_MEMBER( cesclassic_state::outputs_w ) logerror("Output: %02x\n",data); } -ADDRESS_MAP_START(cesclassic_state::cesclassic_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40cfff) AM_RAM - AM_RANGE(0x40d000, 0x40ffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x410000, 0x410001) AM_READ_PORT("VBLANK") //probably m68681 lies there instead - AM_RANGE(0x410004, 0x410005) AM_WRITE(irq3_ack_w) - AM_RANGE(0x410006, 0x410007) AM_WRITE(irq2_ack_w) - AM_RANGE(0x480000, 0x481fff) AM_RAM AM_SHARE("nvram") //8k according to schematics (games doesn't use that much tho) - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x610000, 0x610001) AM_WRITE(outputs_w) +void cesclassic_state::cesclassic_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40cfff).ram(); + map(0x40d000, 0x40ffff).ram().share("vram"); + map(0x410000, 0x410001).portr("VBLANK"); //probably m68681 lies there instead + map(0x410004, 0x410005).w(this, FUNC(cesclassic_state::irq3_ack_w)); + map(0x410006, 0x410007).w(this, FUNC(cesclassic_state::irq2_ack_w)); + map(0x480000, 0x481fff).ram().share("nvram"); //8k according to schematics (games doesn't use that much tho) + map(0x600000, 0x600001).portr("SYSTEM"); + map(0x610000, 0x610001).w(this, FUNC(cesclassic_state::outputs_w)); // AM_RANGE(0x640000, 0x640001) AM_WRITENOP - AM_RANGE(0x640040, 0x640041) AM_WRITE(lamps_w) - AM_RANGE(0x670000, 0x670001) AM_READ_PORT("DSW") - AM_RANGE(0x70ff00, 0x70ff01) AM_WRITENOP // writes 0xffff at irq 3 end of service, watchdog? - AM_RANGE(0x900000, 0x900001) AM_DEVREAD8("oki", okim6295_device, read,0x00ff) // unsure about this ... - AM_RANGE(0x900100, 0x900101) AM_DEVWRITE8("oki", okim6295_device, write,0x00ff) + map(0x640040, 0x640041).w(this, FUNC(cesclassic_state::lamps_w)); + map(0x670000, 0x670001).portr("DSW"); + map(0x70ff00, 0x70ff01).nopw(); // writes 0xffff at irq 3 end of service, watchdog? + map(0x900001, 0x900001).r(m_oki, FUNC(okim6295_device::read)); // unsure about this ... + map(0x900101, 0x900101).w(m_oki, FUNC(okim6295_device::write)); // AM_RANGE(0x904000, 0x904001) AM_WRITENOP //some kind of serial -ADDRESS_MAP_END +} static INPUT_PORTS_START( cesclassic ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/cfx9850.cpp b/src/mame/drivers/cfx9850.cpp index 9b4ef70d57d..aa8b5ec3f7f 100644 --- a/src/mame/drivers/cfx9850.cpp +++ b/src/mame/drivers/cfx9850.cpp @@ -68,16 +68,17 @@ private: }; -ADDRESS_MAP_START(cfx9850_state::cfx9850) - AM_RANGE( 0x000000, 0x007fff ) AM_ROM - AM_RANGE( 0x080000, 0x0807ff ) AM_RAM AM_SHARE("video_ram") +void cfx9850_state::cfx9850(address_map &map) +{ + map(0x000000, 0x007fff).rom(); + map(0x080000, 0x0807ff).ram().share("video_ram"); // AM_RANGE( 0x100000, 0x10ffff ) // some memory mapped i/o??? // AM_RANGE( 0x110000, 0x11ffff ) // some memory mapped i/o??? - AM_RANGE( 0x200000, 0x27ffff ) AM_ROM AM_REGION( "bios", 0 ) - AM_RANGE( 0x400000, 0x40ffff ) AM_RAM - AM_RANGE( 0x600000, 0x6007ff ) AM_MIRROR(0xf800) AM_RAM AM_SHARE("display_ram") + map(0x200000, 0x27ffff).rom().region("bios", 0); + map(0x400000, 0x40ffff).ram(); + map(0x600000, 0x6007ff).mirror(0xf800).ram().share("display_ram"); // AM_RANGE( 0xe10000, 0xe1ffff ) // some memory mapped i/o??? -ADDRESS_MAP_END +} WRITE8_MEMBER(cfx9850_state::kol_w) diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp index 75d801dcaf4..5718bf52fb9 100644 --- a/src/mame/drivers/cgc7900.cpp +++ b/src/mame/drivers/cgc7900.cpp @@ -334,72 +334,74 @@ WRITE_LINE_MEMBER(cgc7900_state::write_rs449_clock) ADDRESS_MAP( cgc7900_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(cgc7900_state::cgc7900_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chrom_ram") - AM_RANGE(0x800000, 0x80ffff) AM_ROM AM_REGION(M68000_TAG, 0) - AM_RANGE(0x810000, 0x9fffff) AM_READ(unmapped_r) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(z_mode_r, z_mode_w) - AM_RANGE(0xc00000, 0xdfffff) AM_RAM AM_SHARE("plane_ram") - AM_RANGE(0xe00000, 0xe1ffff) AM_WRITE(color_status_w) +void cgc7900_state::cgc7900_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).ram().share("chrom_ram"); + map(0x800000, 0x80ffff).rom().region(M68000_TAG, 0); + map(0x810000, 0x9fffff).r(this, FUNC(cgc7900_state::unmapped_r)); + map(0xa00000, 0xbfffff).rw(this, FUNC(cgc7900_state::z_mode_r), FUNC(cgc7900_state::z_mode_w)); + map(0xc00000, 0xdfffff).ram().share("plane_ram"); + map(0xe00000, 0xe1ffff).w(this, FUNC(cgc7900_state::color_status_w)); // AM_RANGE(0xe20000, 0xe23fff) Raster Processor - AM_RANGE(0xe30000, 0xe303ff) AM_RAM AM_SHARE("clut_ram") - AM_RANGE(0xe38000, 0xe3bfff) AM_RAM AM_SHARE("overlay_ram") - AM_RANGE(0xe40000, 0xe40001) AM_RAM AM_SHARE("roll_bitmap") - AM_RANGE(0xe40002, 0xe40003) AM_RAM AM_SHARE("pan_x") - AM_RANGE(0xe40004, 0xe40005) AM_RAM AM_SHARE("pan_y") - AM_RANGE(0xe40006, 0xe40007) AM_RAM AM_SHARE("zoom") - AM_RANGE(0xe40008, 0xe40009) AM_RAM - AM_RANGE(0xe4000a, 0xe4000f) AM_RAM // Raster Processor - AM_RANGE(0xe40010, 0xe40011) AM_RAM AM_SHARE("blink_select") - AM_RANGE(0xe40012, 0xe40013) AM_RAM AM_SHARE("plane_select") - AM_RANGE(0xe40014, 0xe40015) AM_RAM AM_SHARE("plane_switch") - AM_RANGE(0xe40016, 0xe40017) AM_RAM AM_SHARE("color_status_fg") - AM_RANGE(0xe40018, 0xe40019) AM_RAM AM_SHARE("color_status_bg") - AM_RANGE(0xe4001a, 0xe4001b) AM_RAM AM_SHARE("roll_overlay") - AM_RANGE(0xe4001c, 0xe40fff) AM_RAM + map(0xe30000, 0xe303ff).ram().share("clut_ram"); + map(0xe38000, 0xe3bfff).ram().share("overlay_ram"); + map(0xe40000, 0xe40001).ram().share("roll_bitmap"); + map(0xe40002, 0xe40003).ram().share("pan_x"); + map(0xe40004, 0xe40005).ram().share("pan_y"); + map(0xe40006, 0xe40007).ram().share("zoom"); + map(0xe40008, 0xe40009).ram(); + map(0xe4000a, 0xe4000f).ram(); // Raster Processor + map(0xe40010, 0xe40011).ram().share("blink_select"); + map(0xe40012, 0xe40013).ram().share("plane_select"); + map(0xe40014, 0xe40015).ram().share("plane_switch"); + map(0xe40016, 0xe40017).ram().share("color_status_fg"); + map(0xe40018, 0xe40019).ram().share("color_status_bg"); + map(0xe4001a, 0xe4001b).ram().share("roll_overlay"); + map(0xe4001c, 0xe40fff).ram(); // AM_RANGE(0xefc440, 0xefc441) HVG Load X // AM_RANGE(0xefc442, 0xefc443) HVG Load Y // AM_RANGE(0xefc444, 0xefc445) HVG Load dX // AM_RANGE(0xefc446, 0xefc447) HVG Load dY // AM_RANGE(0xefc448, 0xefc449) HVG Load Pixel Color // AM_RANGE(0xefc44a, 0xefc44b) HVG Load Trip - AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8(INS8251_0_TAG, i8251_device, data_r, data_w, 0xff) - AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8(INS8251_0_TAG, i8251_device, status_r, control_w, 0xff) - AM_RANGE(0xff8040, 0xff8041) AM_DEVREADWRITE8(INS8251_1_TAG, i8251_device, data_r, data_w, 0xff) - AM_RANGE(0xff8042, 0xff8043) AM_DEVREADWRITE8(INS8251_1_TAG, i8251_device, status_r, control_w, 0xff) - AM_RANGE(0xff8080, 0xff8081) AM_READWRITE(keyboard_r, keyboard_w) + map(0xff8001, 0xff8001).rw(m_i8251_0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xff8003, 0xff8003).rw(m_i8251_0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xff8041, 0xff8041).rw(m_i8251_1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xff8043, 0xff8043).rw(m_i8251_1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xff8080, 0xff8081).rw(this, FUNC(cgc7900_state::keyboard_r), FUNC(cgc7900_state::keyboard_w)); // AM_RANGE(0xff80c6, 0xff80c7) Joystick X axis // AM_RANGE(0xff80ca, 0xff80cb) Joystick Y axis // AM_RANGE(0xff80cc, 0xff80cd) Joystick Z axis - AM_RANGE(0xff8100, 0xff8101) AM_READWRITE(disk_data_r, disk_data_w) - AM_RANGE(0xff8120, 0xff8121) AM_READWRITE(disk_status_r, disk_command_w) - AM_RANGE(0xff8140, 0xff8141) AM_READ_PORT("BEZEL") - AM_RANGE(0xff8180, 0xff8181) AM_WRITE8(baud_write, 0xff00) - AM_RANGE(0xff81c0, 0xff81ff) AM_DEVREADWRITE8(MM58167_TAG, mm58167_device, read, write, 0xff) - AM_RANGE(0xff8200, 0xff8201) AM_WRITE(interrupt_mask_w) + map(0xff8100, 0xff8101).rw(this, FUNC(cgc7900_state::disk_data_r), FUNC(cgc7900_state::disk_data_w)); + map(0xff8120, 0xff8121).rw(this, FUNC(cgc7900_state::disk_status_r), FUNC(cgc7900_state::disk_command_w)); + map(0xff8140, 0xff8141).portr("BEZEL"); + map(0xff8180, 0xff8180).w(this, FUNC(cgc7900_state::baud_write)); + map(0xff81c0, 0xff81ff).rw(MM58167_TAG, FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff); + map(0xff8200, 0xff8201).w(this, FUNC(cgc7900_state::interrupt_mask_w)); // AM_RANGE(0xff8240, 0xff8241) Light Pen enable // AM_RANGE(0xff8242, 0xff8243) Light Pen X value // AM_RANGE(0xff8244, 0xff8245) Light Pen Y value // AM_RANGE(0xff8246, 0xff8247) Buffer memory parity check // AM_RANGE(0xff8248, 0xff8249) Buffer memory parity set/reset - AM_RANGE(0xff824a, 0xff824b) AM_READ(sync_r) - AM_RANGE(0xff83c0, 0xff83c1) AM_DEVWRITE8(AY8910_TAG, ay8910_device, address_w, 0xff00) - AM_RANGE(0xff83c2, 0xff83c3) AM_DEVREAD8(AY8910_TAG, ay8910_device, data_r, 0xff00) - AM_RANGE(0xff83c4, 0xff83c5) AM_DEVWRITE8(AY8910_TAG, ay8910_device, data_w, 0xff00) + map(0xff824a, 0xff824b).r(this, FUNC(cgc7900_state::sync_r)); + map(0xff83c0, 0xff83c0).w(AY8910_TAG, FUNC(ay8910_device::address_w)); + map(0xff83c2, 0xff83c2).r(AY8910_TAG, FUNC(ay8910_device::data_r)); + map(0xff83c4, 0xff83c4).w(AY8910_TAG, FUNC(ay8910_device::data_w)); // DDMA option board // AM_RANGE(0xff8500, 0xff8501) Disk DMA Command Register // AM_RANGE(0xff8502, 0xff8503) Disk DMA Address Register // AM_RANGE(0xff8507, 0xff8507) Disk DMA Control/Status Register -ADDRESS_MAP_END +} /*------------------------------------------------- ADDRESS_MAP( keyboard_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(cgc7900_state::keyboard_mem) - AM_RANGE(0x000, 0x7ff) AM_ROM -ADDRESS_MAP_END +void cgc7900_state::keyboard_mem(address_map &map) +{ + map(0x000, 0x7ff).rom(); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp index d6e60b4c0b9..2e0b91a03e2 100644 --- a/src/mame/drivers/cgenie.cpp +++ b/src/mame/drivers/cgenie.cpp @@ -108,25 +108,27 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(cgenie_state::cgenie_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM +void cgenie_state::cgenie_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); // AM_RANGE(0x4000, 0xbfff) AM_RAM // set up in machine_start - AM_RANGE(0xc000, 0xefff) AM_NOP // cartridge space - AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(colorram_r, colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf400, 0xf7ff) AM_RAM AM_SHARE("fontram") - AM_RANGE(0xf800, 0xf8ff) AM_MIRROR(0x300) AM_READ(keyboard_r) - AM_RANGE(0xfc00, 0xffff) AM_NOP // cartridge space -ADDRESS_MAP_END - -ADDRESS_MAP_START(cgenie_state::cgenie_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf8, 0xf8) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xf9, 0xf9) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w) - AM_RANGE(0xfa, 0xfa) AM_DEVWRITE("crtc", hd6845_device, address_w) - AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE("crtc", hd6845_device, register_r, register_w) - AM_RANGE(0xff, 0xff) AM_READWRITE(control_r, control_w) -ADDRESS_MAP_END + map(0xc000, 0xefff).noprw(); // cartridge space + map(0xf000, 0xf3ff).rw(this, FUNC(cgenie_state::colorram_r), FUNC(cgenie_state::colorram_w)).share("colorram"); + map(0xf400, 0xf7ff).ram().share("fontram"); + map(0xf800, 0xf8ff).mirror(0x300).r(this, FUNC(cgenie_state::keyboard_r)); + map(0xfc00, 0xffff).noprw(); // cartridge space +} + +void cgenie_state::cgenie_io(address_map &map) +{ + map.global_mask(0xff); + map(0xf8, 0xf8).w("ay8910", FUNC(ay8910_device::address_w)); + map(0xf9, 0xf9).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xfa, 0xfa).w(m_crtc, FUNC(hd6845_device::address_w)); + map(0xfb, 0xfb).rw(m_crtc, FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w)); + map(0xff, 0xff).rw(this, FUNC(cgenie_state::control_r), FUNC(cgenie_state::control_w)); +} //************************************************************************** diff --git a/src/mame/drivers/chaknpop.cpp b/src/mame/drivers/chaknpop.cpp index 8cfe6edae67..28c80b80d86 100644 --- a/src/mame/drivers/chaknpop.cpp +++ b/src/mame/drivers/chaknpop.cpp @@ -161,26 +161,27 @@ WRITE8_MEMBER(chaknpop_state::coinlock_w) ***************************************************************************/ -ADDRESS_MAP_START(chaknpop_state::chaknpop_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0x8801, 0x8801) AM_READ(mcu_status_r) - AM_RANGE(0x8802, 0x8802) AM_WRITE(unknown_port_3_w) - AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) - AM_RANGE(0x8806, 0x8807) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w) - AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSWC") - AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1") - AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM") - AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2") - AM_RANGE(0x880c, 0x880c) AM_READWRITE(gfxmode_r, gfxmode_w) - AM_RANGE(0x880d, 0x880d) AM_WRITE(coinlock_w) // coin lock out - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(txram_w) AM_SHARE("tx_ram") // TX tilemap - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(attrram_w) AM_SHARE("attr_ram") // Color attribute - AM_RANGE(0x9840, 0x98ff) AM_RAM AM_SHARE("spr_ram") // sprite - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank1") // bitmap plane 1-4 -ADDRESS_MAP_END +void chaknpop_state::chaknpop_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0x8801, 0x8801).r(this, FUNC(chaknpop_state::mcu_status_r)); + map(0x8802, 0x8802).w(this, FUNC(chaknpop_state::unknown_port_3_w)); + map(0x8804, 0x8805).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x8806, 0x8807).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x8808, 0x8808).portr("DSWC"); + map(0x8809, 0x8809).portr("P1"); + map(0x880a, 0x880a).portr("SYSTEM"); + map(0x880b, 0x880b).portr("P2"); + map(0x880c, 0x880c).rw(this, FUNC(chaknpop_state::gfxmode_r), FUNC(chaknpop_state::gfxmode_w)); + map(0x880d, 0x880d).w(this, FUNC(chaknpop_state::coinlock_w)); // coin lock out + map(0x9000, 0x93ff).ram().w(this, FUNC(chaknpop_state::txram_w)).share("tx_ram"); // TX tilemap + map(0x9800, 0x983f).ram().w(this, FUNC(chaknpop_state::attrram_w)).share("attr_ram"); // Color attribute + map(0x9840, 0x98ff).ram().share("spr_ram"); // sprite + map(0xa000, 0xbfff).rom(); + map(0xc000, 0xffff).bankrw("bank1"); // bitmap plane 1-4 +} /*************************************************************************** diff --git a/src/mame/drivers/cham24.cpp b/src/mame/drivers/cham24.cpp index d04660392a1..164dcc16872 100644 --- a/src/mame/drivers/cham24.cpp +++ b/src/mame/drivers/cham24.cpp @@ -222,14 +222,15 @@ WRITE8_MEMBER(cham24_state::cham24_mapper_w) } } -ADDRESS_MAP_START(cham24_state::cham24_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(cham24_IN0_r, cham24_IN0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(cham24_IN1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(cham24_mapper_w) -ADDRESS_MAP_END +void cham24_state::cham24_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* NES RAM */ + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(cham24_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(cham24_state::cham24_IN0_r), FUNC(cham24_state::cham24_IN0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(cham24_state::cham24_IN1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x8000, 0xffff).rom().w(this, FUNC(cham24_state::cham24_mapper_w)); +} static INPUT_PORTS_START( cham24 ) PORT_START("P1") /* IN0 */ diff --git a/src/mame/drivers/champbas.cpp b/src/mame/drivers/champbas.cpp index 04a3752861c..3581b69d18d 100644 --- a/src/mame/drivers/champbas.cpp +++ b/src/mame/drivers/champbas.cpp @@ -181,99 +181,110 @@ READ8_MEMBER(champbas_state::champbja_protection_r) // maincpu // base map -ADDRESS_MAP_START(champbas_state::champbas_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(tilemap_w) AM_SHARE("vram") - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("mainram") +void champbas_state::champbas_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x7000, 0x7001).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x8000, 0x87ff).ram().w(this, FUNC(champbas_state::tilemap_w)).share("vram"); + map(0x8800, 0x8fff).ram().share("mainram"); - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa040, 0xa040) AM_READ_PORT("P2") - AM_RANGE(0xa080, 0xa080) AM_MIRROR(0x0020) AM_READ_PORT("DSW") - AM_RANGE(0xa0c0, 0xa0c0) AM_READ_PORT("SYSTEM") + map(0xa000, 0xa000).portr("P1"); + map(0xa040, 0xa040).portr("P2"); + map(0xa080, 0xa080).mirror(0x0020).portr("DSW"); + map(0xa0c0, 0xa0c0).portr("SYSTEM"); - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); - AM_RANGE(0xa060, 0xa06f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa0c0, 0xa0c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END + map(0xa060, 0xa06f).writeonly().share("spriteram"); + map(0xa080, 0xa080).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xa0c0, 0xa0c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} // base map + ALPHA-8x0x protection -ADDRESS_MAP_START(champbas_state::champbasj_map) - AM_IMPORT_FROM( champbas_map ) - AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("alpha_8201", alpha_8201_device, ext_ram_r, ext_ram_w) -ADDRESS_MAP_END +void champbas_state::champbasj_map(address_map &map) +{ + champbas_map(map); + map(0x6000, 0x63ff).rw(m_alpha_8201, FUNC(alpha_8201_device::ext_ram_r), FUNC(alpha_8201_device::ext_ram_w)); +} // different protection for champbasja -ADDRESS_MAP_START(champbas_state::champbasja_map) - AM_IMPORT_FROM( champbas_map ) - AM_RANGE(0x6000, 0x63ff) AM_RAM - AM_RANGE(0x6800, 0x68ff) AM_READ(champbja_protection_r) -ADDRESS_MAP_END +void champbas_state::champbasja_map(address_map &map) +{ + champbas_map(map); + map(0x6000, 0x63ff).ram(); + map(0x6800, 0x68ff).r(this, FUNC(champbas_state::champbja_protection_r)); +} // champbasjb appears to have no protection -ADDRESS_MAP_START(champbas_state::champbasjb_map) - AM_IMPORT_FROM( champbas_map ) - AM_RANGE(0x6000, 0x63ff) AM_RAM -ADDRESS_MAP_END +void champbas_state::champbasjb_map(address_map &map) +{ + champbas_map(map); + map(0x6000, 0x63ff).ram(); +} // champbb2 -ADDRESS_MAP_START(champbas_state::champbb2_map) - AM_IMPORT_FROM( champbasj_map ) - AM_RANGE(0x7800, 0x7fff) AM_ROM -ADDRESS_MAP_END +void champbas_state::champbb2_map(address_map &map) +{ + champbasj_map(map); + map(0x7800, 0x7fff).rom(); +} -ADDRESS_MAP_START(champbas_state::tbasebal_map) - AM_IMPORT_FROM( champbas_map ) - AM_RANGE(0x7800, 0x7fff) AM_ROM -ADDRESS_MAP_END +void champbas_state::tbasebal_map(address_map &map) +{ + champbas_map(map); + map(0x7800, 0x7fff).rom(); +} // more sprites in exctsccr -ADDRESS_MAP_START(champbas_state::exctsccr_map) - AM_IMPORT_FROM( champbasj_map ) - AM_RANGE(0x7000, 0x7001) AM_UNMAP // aysnd is controlled by audiocpu - AM_RANGE(0x7c00, 0x7fff) AM_RAM - AM_RANGE(0xa040, 0xa04f) AM_WRITEONLY AM_SHARE("spriteram2") -ADDRESS_MAP_END +void champbas_state::exctsccr_map(address_map &map) +{ + champbasj_map(map); + map(0x7000, 0x7001).unmaprw(); // aysnd is controlled by audiocpu + map(0x7c00, 0x7fff).ram(); + map(0xa040, 0xa04f).writeonly().share("spriteram2"); +} // exctsccrb -ADDRESS_MAP_START(champbas_state::exctsccrb_map) - AM_IMPORT_FROM( champbasj_map ) - AM_RANGE(0xa040, 0xa04f) AM_WRITEONLY AM_SHARE("spriteram2") -ADDRESS_MAP_END +void champbas_state::exctsccrb_map(address_map &map) +{ + champbasj_map(map); + map(0xa040, 0xa04f).writeonly().share("spriteram2"); +} // audiocpu // champbas/champbb2 (note: talbot doesn't have audiocpu) -ADDRESS_MAP_START(champbas_state::champbas_sound_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_WRITENOP // 4-bit return code to main CPU (not used) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe000, 0xe3ff) AM_MIRROR(0x1c00) AM_RAM -ADDRESS_MAP_END +void champbas_state::champbas_sound_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8000).mirror(0x1fff).nopw(); // 4-bit return code to main CPU (not used) + map(0xa000, 0xa000).mirror(0x1fff).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); + map(0xc000, 0xc000).mirror(0x1fff).w("dac", FUNC(dac_byte_interface::write)); + map(0xe000, 0xe3ff).mirror(0x1c00).ram(); +} // exctsccr -ADDRESS_MAP_START(champbas_state::exctsccr_sound_map) - AM_RANGE(0x0000, 0x8fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xc008, 0xc008) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0xc009, 0xc009) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0xc00c, 0xc00c) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0xc00d, 0xc00d) AM_DEVREAD("soundlatch", generic_latch_8_device, read) +void champbas_state::exctsccr_sound_map(address_map &map) +{ + map(0x0000, 0x8fff).rom(); + map(0xa000, 0xa7ff).ram(); + map(0xc008, 0xc008).w("dac1", FUNC(dac_byte_interface::write)); + map(0xc009, 0xc009).w("dac2", FUNC(dac_byte_interface::write)); + map(0xc00c, 0xc00c).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); + map(0xc00d, 0xc00d).r("soundlatch", FUNC(generic_latch_8_device::read)); // AM_RANGE(0xc00f, 0xc00f) AM_WRITENOP // ? -ADDRESS_MAP_END - -ADDRESS_MAP_START(champbas_state::exctsccr_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK( 0x00ff ) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x86, 0x87) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x8a, 0x8b) AM_DEVWRITE("ay3", ay8910_device, data_address_w) - AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay4", ay8910_device, data_address_w) -ADDRESS_MAP_END +} + +void champbas_state::exctsccr_sound_io_map(address_map &map) +{ + map.global_mask(0x00ff); + map(0x82, 0x83).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x86, 0x87).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x8a, 0x8b).w("ay3", FUNC(ay8910_device::data_address_w)); + map(0x8e, 0x8f).w("ay4", FUNC(ay8910_device::data_address_w)); +} diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp index 414571dab8f..7338628de43 100644 --- a/src/mame/drivers/champbwl.cpp +++ b/src/mame/drivers/champbwl.cpp @@ -249,29 +249,30 @@ WRITE8_MEMBER(champbwl_state::champbwl_misc_w) membank("bank1")->set_entry((data & 0x30) >> 4); } -ADDRESS_MAP_START(champbwl_state::champbwl_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("x1snd", x1_010_device, read, write) - AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xe300, 0xe303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */ - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */ - - AM_RANGE(0xf000, 0xf000) AM_READ(trackball_r) - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN0") - AM_RANGE(0xf004, 0xf004) AM_READ(trackball_reset_r) - AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2") - AM_RANGE(0xf007, 0xf007) AM_READ_PORT("IN3") - - AM_RANGE(0xf000, 0xf000) AM_WRITE(champbwl_misc_w) - AM_RANGE(0xf002, 0xf002) AM_WRITENOP //buttons light? - AM_RANGE(0xf004, 0xf004) AM_WRITENOP //buttons light? - AM_RANGE(0xf006, 0xf006) AM_WRITENOP //buttons light? - AM_RANGE(0xf800, 0xf800) AM_WRITENOP -ADDRESS_MAP_END +void champbwl_state::champbwl_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("maincpu", 0x10000); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).ram().share("nvram"); + map(0xa000, 0xafff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0xb000, 0xbfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); + map(0xc000, 0xdfff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); + map(0xe000, 0xe2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xe300, 0xe303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */ + map(0xe800, 0xe800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */ + + map(0xf000, 0xf000).r(this, FUNC(champbwl_state::trackball_r)); + map(0xf002, 0xf002).portr("IN0"); + map(0xf004, 0xf004).r(this, FUNC(champbwl_state::trackball_reset_r)); + map(0xf006, 0xf006).portr("IN2"); + map(0xf007, 0xf007).portr("IN3"); + + map(0xf000, 0xf000).w(this, FUNC(champbwl_state::champbwl_misc_w)); + map(0xf002, 0xf002).nopw(); //buttons light? + map(0xf004, 0xf004).nopw(); //buttons light? + map(0xf006, 0xf006).nopw(); //buttons light? + map(0xf800, 0xf800).nopw(); +} @@ -288,22 +289,23 @@ WRITE8_MEMBER(champbwl_state::doraemon_outputs_w) // popmessage("%02x", data); } -ADDRESS_MAP_START(champbwl_state::doraemon) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xc000, 0xc07f) AM_DEVREADWRITE("x1snd", x1_010_device, read, write) // Sound - AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xe300, 0xe303) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */ - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN0") AM_WRITE(doraemon_outputs_w) - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN1") AM_WRITENOP // Ack? - AM_RANGE(0xf004, 0xf004) AM_WRITENOP // Ack? - AM_RANGE(0xf006, 0xf006) AM_READ_PORT("DSW") AM_WRITENOP // Ack? - AM_RANGE(0xf800, 0xf800) AM_WRITENOP // 0 -ADDRESS_MAP_END +void champbwl_state::doraemon(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).ram().share("nvram"); + map(0xa000, 0xafff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0xb000, 0xbfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); + map(0xc000, 0xc07f).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); // Sound + map(0xe000, 0xe2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xe300, 0xe303).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); + map(0xe800, 0xe800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */ + map(0xf000, 0xf000).portr("IN0").w(this, FUNC(champbwl_state::doraemon_outputs_w)); + map(0xf002, 0xf002).portr("IN1").nopw(); // Ack? + map(0xf004, 0xf004).nopw(); // Ack? + map(0xf006, 0xf006).portr("DSW").nopw(); // Ack? + map(0xf800, 0xf800).nopw(); // 0 +} diff --git a/src/mame/drivers/chanbara.cpp b/src/mame/drivers/chanbara.cpp index ca750e5442a..be917571ca5 100644 --- a/src/mame/drivers/chanbara.cpp +++ b/src/mame/drivers/chanbara.cpp @@ -228,21 +228,22 @@ uint32_t chanbara_state::screen_update_chanbara(screen_device &screen, bitmap_in /***************************************************************************/ -ADDRESS_MAP_START(chanbara_state::chanbara_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(chanbara_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(chanbara_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1800, 0x19ff) AM_RAM_WRITE(chanbara_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x1a00, 0x1bff) AM_RAM_WRITE(chanbara_colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2") - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P1") - AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void chanbara_state::chanbara_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0bff).ram().w(this, FUNC(chanbara_state::chanbara_videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(chanbara_state::chanbara_colorram_w)).share("colorram"); + map(0x1000, 0x10ff).ram().share("spriteram"); + map(0x1800, 0x19ff).ram().w(this, FUNC(chanbara_state::chanbara_videoram2_w)).share("videoram2"); + map(0x1a00, 0x1bff).ram().w(this, FUNC(chanbara_state::chanbara_colorram2_w)).share("colorram2"); + map(0x2000, 0x2000).portr("DSW1"); + map(0x2001, 0x2001).portr("SYSTEM"); + map(0x2002, 0x2002).portr("P2"); + map(0x2003, 0x2003).portr("P1"); + map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} /***************************************************************************/ diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp index 5acc9825643..01e68eadba4 100644 --- a/src/mame/drivers/chance32.cpp +++ b/src/mame/drivers/chance32.cpp @@ -199,30 +199,32 @@ WRITE8_MEMBER(chance32_state::muxout_w) } -ADDRESS_MAP_START(chance32_state::chance32_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM - AM_RANGE(0xd800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(chance32_fgram_w) AM_SHARE("fgram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(chance32_bgram_w) AM_SHARE("bgram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(chance32_state::chance32_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITENOP // writing bit3 constantly... watchdog? - AM_RANGE(0x13, 0x13) AM_WRITE(mux_w) - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW0") - AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW1") - AM_RANGE(0x22, 0x22) AM_READ_PORT("DSW2") - AM_RANGE(0x23, 0x23) AM_READ_PORT("DSW3") - AM_RANGE(0x24, 0x24) AM_READ_PORT("DSW4") - AM_RANGE(0x25, 0x25) AM_READ(mux_r) - AM_RANGE(0x26, 0x26) AM_READ_PORT("UNK") // vblank (other bits are checked for different reasons) - AM_RANGE(0x30, 0x30) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x31, 0x31) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x60, 0x60) AM_WRITE(muxout_w) -ADDRESS_MAP_END +void chance32_state::chance32_map(address_map &map) +{ + map(0x0000, 0xcfff).rom(); + map(0xd800, 0xdfff).ram(); + map(0xe000, 0xefff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(chance32_state::chance32_fgram_w)).share("fgram"); + map(0xf800, 0xffff).ram().w(this, FUNC(chance32_state::chance32_bgram_w)).share("bgram"); +} + +void chance32_state::chance32_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).nopw(); // writing bit3 constantly... watchdog? + map(0x13, 0x13).w(this, FUNC(chance32_state::mux_w)); + map(0x20, 0x20).portr("DSW0"); + map(0x21, 0x21).portr("DSW1"); + map(0x22, 0x22).portr("DSW2"); + map(0x23, 0x23).portr("DSW3"); + map(0x24, 0x24).portr("DSW4"); + map(0x25, 0x25).r(this, FUNC(chance32_state::mux_r)); + map(0x26, 0x26).portr("UNK"); // vblank (other bits are checked for different reasons) + map(0x30, 0x30).w("crtc", FUNC(mc6845_device::address_w)); + map(0x31, 0x31).w("crtc", FUNC(mc6845_device::register_w)); + map(0x50, 0x50).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x60, 0x60).w(this, FUNC(chance32_state::muxout_w)); +} static INPUT_PORTS_START( chance32 ) diff --git a/src/mame/drivers/changela.cpp b/src/mame/drivers/changela.cpp index 9cb21e91572..c5638801a7b 100644 --- a/src/mame/drivers/changela.cpp +++ b/src/mame/drivers/changela.cpp @@ -159,41 +159,42 @@ WRITE_LINE_MEMBER(changela_state::coin_counter_2_w) } -ADDRESS_MAP_START(changela_state::changela_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("spriteram") /* OBJ0 RAM */ - AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("videoram") /* OBJ1 RAM */ - AM_RANGE(0xa000, 0xa07f) AM_WRITE(changela_colors_w) AM_SHARE("colorram") /* Color 93419 RAM 64x9(nine!!!) bits A0-used as the 8-th bit data input (d0-d7->normal, a0->d8) */ - AM_RANGE(0xb000, 0xbfff) AM_ROM +void changela_state::changela_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().share("spriteram"); /* OBJ0 RAM */ + map(0x9000, 0x97ff).ram().share("videoram"); /* OBJ1 RAM */ + map(0xa000, 0xa07f).w(this, FUNC(changela_state::changela_colors_w)).share("colorram"); /* Color 93419 RAM 64x9(nine!!!) bits A0-used as the 8-th bit data input (d0-d7->normal, a0->d8) */ + map(0xb000, 0xbfff).rom(); - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(changela_mem_device_r, changela_mem_device_w) /* RAM4 (River Bed RAM); RAM5 (Tree RAM) */ + map(0xc000, 0xc7ff).rw(this, FUNC(changela_state::changela_mem_device_r), FUNC(changela_state::changela_mem_device_w)); /* RAM4 (River Bed RAM); RAM5 (Tree RAM) */ /* LS138 - U16 */ - AM_RANGE(0xc800, 0xc800) AM_WRITENOP /* not connected */ - AM_RANGE(0xc900, 0xc900) AM_WRITE(changela_mem_device_select_w) /* selects the memory device to be accessible at 0xc000-0xc7ff */ - AM_RANGE(0xca00, 0xca00) AM_WRITE(changela_slope_rom_addr_hi_w) - AM_RANGE(0xcb00, 0xcb00) AM_WRITE(changela_slope_rom_addr_lo_w) + map(0xc800, 0xc800).nopw(); /* not connected */ + map(0xc900, 0xc900).w(this, FUNC(changela_state::changela_mem_device_select_w)); /* selects the memory device to be accessible at 0xc000-0xc7ff */ + map(0xca00, 0xca00).w(this, FUNC(changela_state::changela_slope_rom_addr_hi_w)); + map(0xcb00, 0xcb00).w(this, FUNC(changela_state::changela_slope_rom_addr_lo_w)); - AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) - AM_RANGE(0xd010, 0xd011) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w) + map(0xd000, 0xd001).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0xd010, 0xd011).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); /* LS259 - U44 */ - AM_RANGE(0xd020, 0xd027) AM_DEVWRITE("outlatch", ls259_device, write_d0) + map(0xd020, 0xd027).w("outlatch", FUNC(ls259_device::write_d0)); /* LS139 - U24 */ - AM_RANGE(0xd024, 0xd024) AM_READ(changela_24_r) - AM_RANGE(0xd025, 0xd025) AM_READ(changela_25_r) - AM_RANGE(0xd028, 0xd028) AM_READ(mcu_r) - AM_RANGE(0xd02c, 0xd02c) AM_READ(changela_2c_r) - AM_RANGE(0xd02d, 0xd02d) AM_READ(changela_2d_r) + map(0xd024, 0xd024).r(this, FUNC(changela_state::changela_24_r)); + map(0xd025, 0xd025).r(this, FUNC(changela_state::changela_25_r)); + map(0xd028, 0xd028).r(this, FUNC(changela_state::mcu_r)); + map(0xd02c, 0xd02c).r(this, FUNC(changela_state::changela_2c_r)); + map(0xd02d, 0xd02d).r(this, FUNC(changela_state::changela_2d_r)); - AM_RANGE(0xd030, 0xd030) AM_READWRITE(changela_30_r, mcu_w) - AM_RANGE(0xd031, 0xd031) AM_READ(changela_31_r) + map(0xd030, 0xd030).rw(this, FUNC(changela_state::changela_30_r), FUNC(changela_state::mcu_w)); + map(0xd031, 0xd031).r(this, FUNC(changela_state::changela_31_r)); - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* Watchdog */ + map(0xe000, 0xe000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM /* RAM2 (Processor RAM) */ -ADDRESS_MAP_END + map(0xf000, 0xf7ff).ram(); /* RAM2 (Processor RAM) */ +} static INPUT_PORTS_START( changela ) diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp index 73fa5b02a91..374d61460dc 100644 --- a/src/mame/drivers/channelf.cpp +++ b/src/mame/drivers/channelf.cpp @@ -119,17 +119,19 @@ WRITE8_MEMBER( channelf_state::port_5_w ) m_row_reg = (data | 0xc0) ^ 0xff; } -ADDRESS_MAP_START(channelf_state::channelf_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0xffff) AM_DEVREAD("cartslot", channelf_cart_slot_device, read_rom) -ADDRESS_MAP_END - -ADDRESS_MAP_START(channelf_state::channelf_io) - AM_RANGE(0x00, 0x00) AM_READWRITE(port_0_r, port_0_w) /* Front panel switches */ - AM_RANGE(0x01, 0x01) AM_READWRITE(port_1_r, port_1_w) /* Right controller */ - AM_RANGE(0x04, 0x04) AM_READWRITE(port_4_r, port_4_w) /* Left controller */ - AM_RANGE(0x05, 0x05) AM_READWRITE(port_5_r, port_5_w) -ADDRESS_MAP_END +void channelf_state::channelf_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0xffff).r(m_cart, FUNC(channelf_cart_slot_device::read_rom)); +} + +void channelf_state::channelf_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(channelf_state::port_0_r), FUNC(channelf_state::port_0_w)); /* Front panel switches */ + map(0x01, 0x01).rw(this, FUNC(channelf_state::port_1_r), FUNC(channelf_state::port_1_w)); /* Right controller */ + map(0x04, 0x04).rw(this, FUNC(channelf_state::port_4_r), FUNC(channelf_state::port_4_w)); /* Left controller */ + map(0x05, 0x05).rw(this, FUNC(channelf_state::port_5_r), FUNC(channelf_state::port_5_w)); +} diff --git a/src/mame/drivers/chaos.cpp b/src/mame/drivers/chaos.cpp index a4944306929..069f7e53cda 100644 --- a/src/mame/drivers/chaos.cpp +++ b/src/mame/drivers/chaos.cpp @@ -64,23 +64,26 @@ private: }; -ADDRESS_MAP_START(chaos_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(chaos_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x1e, 0x1e) AM_READ(port1e_r) - AM_RANGE(0x1f, 0x1f) AM_READWRITE(port90_r, port1f_w) - AM_RANGE(0x90, 0x90) AM_READ(port90_r) - AM_RANGE(0x91, 0x91) AM_READ(port91_r) - AM_RANGE(0x92, 0x92) AM_DEVWRITE("terminal", generic_terminal_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chaos_state::data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_NOP // stops error log filling up while using debug -ADDRESS_MAP_END +void chaos_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram().share("ram"); +} + +void chaos_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x1e, 0x1e).r(this, FUNC(chaos_state::port1e_r)); + map(0x1f, 0x1f).rw(this, FUNC(chaos_state::port90_r), FUNC(chaos_state::port1f_w)); + map(0x90, 0x90).r(this, FUNC(chaos_state::port90_r)); + map(0x91, 0x91).r(this, FUNC(chaos_state::port91_r)); + map(0x92, 0x92).w(m_terminal, FUNC(generic_terminal_device::write)); +} + +void chaos_state::data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).noprw(); // stops error log filling up while using debug +} /* Input ports */ static INPUT_PORTS_START( chaos ) diff --git a/src/mame/drivers/cheekyms.cpp b/src/mame/drivers/cheekyms.cpp index 34bbc522c48..a9e1197878a 100644 --- a/src/mame/drivers/cheekyms.cpp +++ b/src/mame/drivers/cheekyms.cpp @@ -20,20 +20,22 @@ INPUT_CHANGED_MEMBER(cheekyms_state::coin_inserted) } -ADDRESS_MAP_START(cheekyms_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3000, 0x33ff) AM_RAM - AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cheekyms_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") - AM_RANGE(0x01, 0x01) AM_READ_PORT("INPUTS") - AM_RANGE(0x20, 0x3f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x40, 0x40) AM_WRITE(port_40_w) - AM_RANGE(0x80, 0x80) AM_WRITE(port_80_w) AM_SHARE("port_80") -ADDRESS_MAP_END +void cheekyms_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x33ff).ram(); + map(0x3800, 0x3bff).ram().share("videoram"); +} + +void cheekyms_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW"); + map(0x01, 0x01).portr("INPUTS"); + map(0x20, 0x3f).writeonly().share("spriteram"); + map(0x40, 0x40).w(this, FUNC(cheekyms_state::port_40_w)); + map(0x80, 0x80).w(this, FUNC(cheekyms_state::port_80_w)).share("port_80"); +} static INPUT_PORTS_START( cheekyms ) diff --git a/src/mame/drivers/chessmst.cpp b/src/mame/drivers/chessmst.cpp index ed77600d74a..0ce0272f53e 100644 --- a/src/mame/drivers/chessmst.cpp +++ b/src/mame/drivers/chessmst.cpp @@ -88,32 +88,36 @@ private: }; -ADDRESS_MAP_START(chessmst_state::chessmst_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 not connected - AM_RANGE( 0x0000, 0x27ff ) AM_ROM - AM_RANGE( 0x3400, 0x3bff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(chessmst_state::chessmstdm) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0x7fff ) AM_DEVREAD("cartslot", generic_slot_device, read_rom) - AM_RANGE( 0x8000, 0x8bff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(chessmst_state::chessmst_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void chessmst_state::chessmst_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x7fff); // A15 not connected + map(0x0000, 0x27ff).rom(); + map(0x3400, 0x3bff).ram(); +} + +void chessmst_state::chessmstdm(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom)); + map(0x8000, 0x8bff).ram(); +} + +void chessmst_state::chessmst_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); //AM_RANGE(0x00, 0x03) AM_MIRROR(0xf0) read/write in both, not used by the software - AM_RANGE(0x04, 0x07) AM_MIRROR(0xf0) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write) - AM_RANGE(0x08, 0x0b) AM_MIRROR(0xf0) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chessmst_state::chessmstdm_io) - AM_IMPORT_FROM(chessmst_io) - AM_RANGE(0x4c, 0x4c) AM_WRITE(digits_w) -ADDRESS_MAP_END + map(0x04, 0x07).mirror(0xf0).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).mirror(0xf0).rw(m_pia2, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} + +void chessmst_state::chessmstdm_io(address_map &map) +{ + chessmst_io(map); + map(0x4c, 0x4c).w(this, FUNC(chessmst_state::digits_w)); +} WRITE_LINE_MEMBER( chessmst_state::timer_555_w ) { diff --git a/src/mame/drivers/chesstrv.cpp b/src/mame/drivers/chesstrv.cpp index 96cde372f43..dd18b2a6617 100644 --- a/src/mame/drivers/chesstrv.cpp +++ b/src/mame/drivers/chesstrv.cpp @@ -123,25 +123,28 @@ READ8_MEMBER( chesstrv_state::diplomat_keypad_r ) } -ADDRESS_MAP_START(chesstrv_state::chesstrv_mem) - ADDRESS_MAP_GLOBAL_MASK(0x7ff) - AM_RANGE( 0x0000, 0x07ff ) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(chesstrv_state::chesstrv_io) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE( ram_addr_r, ram_addr_w ) - AM_RANGE( 0x01, 0x01 ) AM_WRITE( display_w ) - AM_RANGE( 0x04, 0x04 ) AM_READWRITE( ram_r, ram_w ) - AM_RANGE( 0x05, 0x05 ) AM_READWRITE( keypad_r, matrix_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chesstrv_state::borisdpl_io) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE( diplomat_keypad_r, matrix_w ) - AM_RANGE( 0x01, 0x01 ) AM_WRITE( diplomat_display_w ) - AM_RANGE( 0x04, 0x04 ) AM_READWRITE( ram_r, ram_w ) - AM_RANGE( 0x05, 0x05 ) AM_READWRITE( ram_addr_r, ram_addr_w ) -ADDRESS_MAP_END +void chesstrv_state::chesstrv_mem(address_map &map) +{ + map.global_mask(0x7ff); + map(0x0000, 0x07ff).rom(); +} + + +void chesstrv_state::chesstrv_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(chesstrv_state::ram_addr_r), FUNC(chesstrv_state::ram_addr_w)); + map(0x01, 0x01).w(this, FUNC(chesstrv_state::display_w)); + map(0x04, 0x04).rw(this, FUNC(chesstrv_state::ram_r), FUNC(chesstrv_state::ram_w)); + map(0x05, 0x05).rw(this, FUNC(chesstrv_state::keypad_r), FUNC(chesstrv_state::matrix_w)); +} + +void chesstrv_state::borisdpl_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(chesstrv_state::diplomat_keypad_r), FUNC(chesstrv_state::matrix_w)); + map(0x01, 0x01).w(this, FUNC(chesstrv_state::diplomat_display_w)); + map(0x04, 0x04).rw(this, FUNC(chesstrv_state::ram_r), FUNC(chesstrv_state::ram_w)); + map(0x05, 0x05).rw(this, FUNC(chesstrv_state::ram_addr_r), FUNC(chesstrv_state::ram_addr_w)); +} static INPUT_PORTS_START( chesstrv ) PORT_START("LINE1") diff --git a/src/mame/drivers/chexx.cpp b/src/mame/drivers/chexx.cpp index b45ea22c058..47d4986e168 100644 --- a/src/mame/drivers/chexx.cpp +++ b/src/mame/drivers/chexx.cpp @@ -174,12 +174,13 @@ READ8_MEMBER(chexx_state::input_r) // Chexx Memory Map -ADDRESS_MAP_START(chexx_state::chexx83_map) - AM_RANGE(0x0000, 0x007f) AM_RAM AM_MIRROR(0x100) // 6810 - 128 x 8 static RAM - AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("via6522", via6522_device, read, write) - AM_RANGE(0x8000, 0x8000) AM_READ(input_r) - AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void chexx_state::chexx83_map(address_map &map) +{ + map(0x0000, 0x007f).ram().mirror(0x100); // 6810 - 128 x 8 static RAM + map(0x4000, 0x400f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x8000, 0x8000).r(this, FUNC(chexx_state::input_r)); + map(0xf800, 0xffff).rom().region("maincpu", 0); +} // Face-Off Memory Map @@ -211,14 +212,15 @@ WRITE8_MEMBER(chexx_state::ay_w) m_ay_cmd = data; } -ADDRESS_MAP_START(chexx_state::faceoffh_map) - AM_RANGE(0x0000, 0x007f) AM_RAM AM_MIRROR(0x100) // M58725P - 2KB - AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("via6522", via6522_device, read, write) - AM_RANGE(0x8000, 0x8000) AM_READ(input_r) - AM_RANGE(0xa000, 0xa001) AM_WRITE(ay_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(lamp_w) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void chexx_state::faceoffh_map(address_map &map) +{ + map(0x0000, 0x007f).ram().mirror(0x100); // M58725P - 2KB + map(0x4000, 0x400f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x8000, 0x8000).r(this, FUNC(chexx_state::input_r)); + map(0xa000, 0xa001).w(this, FUNC(chexx_state::ay_w)); + map(0xc000, 0xc000).w(this, FUNC(chexx_state::lamp_w)); + map(0xf000, 0xffff).rom().region("maincpu", 0); +} // Inputs diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp index ded28a94c78..aaafc7e2b88 100644 --- a/src/mame/drivers/chihiro.cpp +++ b/src/mame/drivers/chihiro.cpp @@ -1700,15 +1700,17 @@ WRITE32_MEMBER(chihiro_state::mediaboard_w) xbox_base_devs.pic8259_2->ir2_w(0); } -ADDRESS_MAP_START(chihiro_state::chihiro_map) - AM_IMPORT_FROM(xbox_base_map) - AM_RANGE(0xff000000, 0xff07ffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chihiro_state::chihiro_map_io) - AM_IMPORT_FROM(xbox_base_map_io) - AM_RANGE(0x4000, 0x40ff) AM_READWRITE(mediaboard_r, mediaboard_w) -ADDRESS_MAP_END +void chihiro_state::chihiro_map(address_map &map) +{ + xbox_base_map(map); + map(0xff000000, 0xff07ffff).rom().region("bios", 0).mirror(0x00f80000); +} + +void chihiro_state::chihiro_map_io(address_map &map) +{ + xbox_base_map_io(map); + map(0x4000, 0x40ff).rw(this, FUNC(chihiro_state::mediaboard_r), FUNC(chihiro_state::mediaboard_w)); +} static INPUT_PORTS_START(chihiro) PORT_START("TILT") diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp index f1bfc6cd1a5..9cd02c1b445 100644 --- a/src/mame/drivers/chinagat.cpp +++ b/src/mame/drivers/chinagat.cpp @@ -334,75 +334,81 @@ WRITE_LINE_MEMBER(chinagat_state::saiyugoub1_m5205_irq_w) m_adpcm_sound_irq = 1; } -ADDRESS_MAP_START(chinagat_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x3000, 0x317f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3400, 0x357f) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3800, 0x397f) AM_WRITE_BANK("bank3") AM_SHARE("spriteram") - AM_RANGE(0x3e00, 0x3e04) AM_WRITE(interrupt_w) - AM_RANGE(0x3e06, 0x3e06) AM_WRITEONLY AM_SHARE("scrolly_lo") - AM_RANGE(0x3e07, 0x3e07) AM_WRITEONLY AM_SHARE("scrollx_lo") - AM_RANGE(0x3f00, 0x3f00) AM_WRITE(video_ctrl_w) - AM_RANGE(0x3f01, 0x3f01) AM_WRITE(bankswitch_w) - AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3f01, 0x3f01) AM_READ_PORT("DSW1") - AM_RANGE(0x3f02, 0x3f02) AM_READ_PORT("DSW2") - AM_RANGE(0x3f03, 0x3f03) AM_READ_PORT("P1") - AM_RANGE(0x3f04, 0x3f04) AM_READ_PORT("P2") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinagat_state::sub_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x2000, 0x2000) AM_WRITE(sub_bankswitch_w) - AM_RANGE(0x2800, 0x2800) AM_WRITE(sub_irq_ack_w) /* Called on CPU start and after return from jump table */ +void chinagat_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("share1"); + map(0x2000, 0x27ff).ram().w(this, FUNC(chinagat_state::ddragon_fgvideoram_w)).share("fgvideoram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(chinagat_state::ddragon_bgvideoram_w)).share("bgvideoram"); + map(0x3000, 0x317f).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3400, 0x357f).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x3800, 0x397f).bankw("bank3").share("spriteram"); + map(0x3e00, 0x3e04).w(this, FUNC(chinagat_state::interrupt_w)); + map(0x3e06, 0x3e06).writeonly().share("scrolly_lo"); + map(0x3e07, 0x3e07).writeonly().share("scrollx_lo"); + map(0x3f00, 0x3f00).w(this, FUNC(chinagat_state::video_ctrl_w)); + map(0x3f01, 0x3f01).w(this, FUNC(chinagat_state::bankswitch_w)); + map(0x3f00, 0x3f00).portr("SYSTEM"); + map(0x3f01, 0x3f01).portr("DSW1"); + map(0x3f02, 0x3f02).portr("DSW2"); + map(0x3f03, 0x3f03).portr("P1"); + map(0x3f04, 0x3f04).portr("P2"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + +void chinagat_state::sub_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("share1"); + map(0x2000, 0x2000).w(this, FUNC(chinagat_state::sub_bankswitch_w)); + map(0x2800, 0x2800).w(this, FUNC(chinagat_state::sub_irq_ack_w)); /* Called on CPU start and after return from jump table */ // AM_RANGE(0x2a2b, 0x2a2b) AM_READNOP /* What lives here? */ // AM_RANGE(0x2a30, 0x2a30) AM_READNOP /* What lives here? */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank4") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinagat_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinagat_state::ym2203c_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM + map(0x4000, 0x7fff).bankr("bank4"); + map(0x8000, 0xffff).rom(); +} + +void chinagat_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xA000, 0xA000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void chinagat_state::ym2203c_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); // 8804 and/or 8805 make a gong sound when the coin goes in // but only on the title screen.... - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym1", ym2203_device, read, write) + map(0x8800, 0x8801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // AM_RANGE(0x8802, 0x8802) AM_DEVREADWRITE("oki", okim6295_device, read, write) // AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ym2", ym2203_device, read, write) + map(0x8804, 0x8805).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // AM_RANGE(0x8804, 0x8804) AM_WRITEONLY // AM_RANGE(0x8805, 0x8805) AM_WRITEONLY // AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinagat_state::saiyugoub1_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_WRITE(saiyugoub1_mcu_command_w) - AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinagat_state::i8748_map) - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x0400, 0x07ff) AM_ROM /* i8749 version */ -ADDRESS_MAP_END + map(0xA000, 0xA000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void chinagat_state::saiyugoub1_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).w(this, FUNC(chinagat_state::saiyugoub1_mcu_command_w)); + map(0xA000, 0xA000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void chinagat_state::i8748_map(address_map &map) +{ + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x07ff).rom(); /* i8749 version */ +} diff --git a/src/mame/drivers/chinsan.cpp b/src/mame/drivers/chinsan.cpp index 4667ff7b67e..82221bdc519 100644 --- a/src/mame/drivers/chinsan.cpp +++ b/src/mame/drivers/chinsan.cpp @@ -105,33 +105,37 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(chinsan_state::chinsan_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("color_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinsan_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinsan_state::chinsan_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x20, 0x20) AM_WRITE(adpcm_w) - AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(chinsan_state::mayumi_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x30, 0x30) AM_READ_PORT("extra") AM_WRITE(ctrl_w) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END +void chinsan_state::chinsan_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram().share("nvram"); + map(0xe000, 0xefff).ram().share("video_ram"); + map(0xf000, 0xf7ff).ram().share("color_ram"); +} + +void chinsan_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); +} + +void chinsan_state::chinsan_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x11).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x20, 0x20).w(this, FUNC(chinsan_state::adpcm_w)); + map(0x30, 0x30).w(this, FUNC(chinsan_state::ctrl_w)); +} + +void chinsan_state::mayumi_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x30, 0x30).portr("extra").w(this, FUNC(chinsan_state::ctrl_w)); + map(0xc0, 0xc3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xd0, 0xd1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} //************************************************************************** diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp index 2f644db3291..00e59fe4604 100644 --- a/src/mame/drivers/chqflag.cpp +++ b/src/mame/drivers/chqflag.cpp @@ -138,36 +138,38 @@ WRITE8_MEMBER(chqflag_state::chqflag_sh_irqtrigger_w) /****************************************************************************/ -ADDRESS_MAP_START(chqflag_state::chqflag_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_DEVICE("bank1000", address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x2007) AM_DEVREADWRITE("k051960", k051960_device, k051937_r, k051937_w) /* Sprite control registers */ - AM_RANGE(0x2400, 0x27ff) AM_DEVREADWRITE("k051960", k051960_device, k051960_r, k051960_w) /* Sprite RAM */ - AM_RANGE(0x2800, 0x2fff) AM_READ(k051316_2_ramrom_r) AM_DEVWRITE("k051316_2", k051316_device, write) /* 051316 zoom/rotation (chip 2) */ - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound code # */ - AM_RANGE(0x3001, 0x3001) AM_WRITE(chqflag_sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x3002, 0x3002) AM_WRITE(chqflag_bankswitch_w) /* bankswitch control */ - AM_RANGE(0x3003, 0x3003) AM_WRITE(chqflag_vreg_w) /* enable K051316 ROM reading */ - AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW1") /* DIPSW #1 */ - AM_RANGE(0x3200, 0x3200) AM_READ_PORT("IN1") /* COINSW, STARTSW, test mode */ - AM_RANGE(0x3201, 0x3201) AM_READ_PORT("IN0") /* DIPSW #3, SW 4 */ - AM_RANGE(0x3203, 0x3203) AM_READ_PORT("DSW2") /* DIPSW #2 */ - AM_RANGE(0x3300, 0x3300) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog timer */ - AM_RANGE(0x3400, 0x341f) AM_DEVREADWRITE("k051733", k051733_device, read, write) /* 051733 (protection) */ - AM_RANGE(0x3500, 0x350f) AM_DEVWRITE("k051316_1", k051316_device, ctrl_w) /* 051316 control registers (chip 1) */ - AM_RANGE(0x3600, 0x360f) AM_DEVWRITE("k051316_2", k051316_device, ctrl_w) /* 051316 control registers (chip 2) */ - AM_RANGE(0x3700, 0x3700) AM_WRITE(select_analog_ctrl_w) /* select accelerator/wheel */ - AM_RANGE(0x3701, 0x3701) AM_READ_PORT("IN2") /* Brake + Shift + ? */ - AM_RANGE(0x3702, 0x3702) AM_READWRITE(analog_read_r, select_analog_ctrl_w) /* accelerator/wheel */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x48000) /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(chqflag_state::bank1000_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_READ(k051316_1_ramrom_r) AM_DEVWRITE("k051316_1", k051316_device, write) - AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END +void chqflag_state::chqflag_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1fff).m(m_bank1000, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x2007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); /* Sprite control registers */ + map(0x2400, 0x27ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); /* Sprite RAM */ + map(0x2800, 0x2fff).r(this, FUNC(chqflag_state::k051316_2_ramrom_r)).w(m_k051316_2, FUNC(k051316_device::write)); /* 051316 zoom/rotation (chip 2) */ + map(0x3000, 0x3000).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound code # */ + map(0x3001, 0x3001).w(this, FUNC(chqflag_state::chqflag_sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x3002, 0x3002).w(this, FUNC(chqflag_state::chqflag_bankswitch_w)); /* bankswitch control */ + map(0x3003, 0x3003).w(this, FUNC(chqflag_state::chqflag_vreg_w)); /* enable K051316 ROM reading */ + map(0x3100, 0x3100).portr("DSW1"); /* DIPSW #1 */ + map(0x3200, 0x3200).portr("IN1"); /* COINSW, STARTSW, test mode */ + map(0x3201, 0x3201).portr("IN0"); /* DIPSW #3, SW 4 */ + map(0x3203, 0x3203).portr("DSW2"); /* DIPSW #2 */ + map(0x3300, 0x3300).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog timer */ + map(0x3400, 0x341f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* 051733 (protection) */ + map(0x3500, 0x350f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)); /* 051316 control registers (chip 1) */ + map(0x3600, 0x360f).w(m_k051316_2, FUNC(k051316_device::ctrl_w)); /* 051316 control registers (chip 2) */ + map(0x3700, 0x3700).w(this, FUNC(chqflag_state::select_analog_ctrl_w)); /* select accelerator/wheel */ + map(0x3701, 0x3701).portr("IN2"); /* Brake + Shift + ? */ + map(0x3702, 0x3702).rw(this, FUNC(chqflag_state::analog_read_r), FUNC(chqflag_state::select_analog_ctrl_w)); /* accelerator/wheel */ + map(0x4000, 0x7fff).bankr("rombank"); /* banked ROM */ + map(0x8000, 0xffff).rom().region("maincpu", 0x48000); /* ROM */ +} + +void chqflag_state::bank1000_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x17ff).r(this, FUNC(chqflag_state::k051316_1_ramrom_r)).w(m_k051316_1, FUNC(k051316_device::write)); + map(0x1800, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} WRITE8_MEMBER(chqflag_state::k007232_bankswitch_w) @@ -185,19 +187,20 @@ WRITE8_MEMBER(chqflag_state::k007232_bankswitch_w) m_k007232_2->set_bank(bank_A, bank_B); } -ADDRESS_MAP_START(chqflag_state::chqflag_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ - AM_RANGE(0x9000, 0x9000) AM_WRITE(k007232_bankswitch_w) /* 007232 bankswitch */ - AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) /* 007232 (chip 1) */ - AM_RANGE(0xa01c, 0xa01c) AM_WRITE(k007232_extvolume_w) /* extra volume, goes to the 007232 w/ A4 */ +void chqflag_state::chqflag_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM */ + map(0x8000, 0x87ff).ram(); /* RAM */ + map(0x9000, 0x9000).w(this, FUNC(chqflag_state::k007232_bankswitch_w)); /* 007232 bankswitch */ + map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 (chip 1) */ + map(0xa01c, 0xa01c).w(this, FUNC(chqflag_state::k007232_extvolume_w)); /* extra volume, goes to the 007232 w/ A4 */ /* selecting a different latch for the external port */ - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 (chip 2) */ - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* engine sound volume */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ??? */ -ADDRESS_MAP_END + map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 (chip 2) */ + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */ + map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe000).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); /* engine sound volume */ + map(0xf000, 0xf000).nopw(); /* ??? */ +} static INPUT_PORTS_START( chqflag ) diff --git a/src/mame/drivers/chsuper.cpp b/src/mame/drivers/chsuper.cpp index 8c3f2b89418..3bcdd3e55cf 100644 --- a/src/mame/drivers/chsuper.cpp +++ b/src/mame/drivers/chsuper.cpp @@ -206,29 +206,31 @@ WRITE8_MEMBER( chsuper_state::chsuper_outportb_w ) // Port EFh * Memory Map handlers * ***************************/ -ADDRESS_MAP_START(chsuper_state::chsuper_prg_map) - AM_RANGE(0x00000, 0x0efff) AM_ROM - AM_RANGE(0x00000, 0x01fff) AM_WRITE( chsuper_vram_w ) - AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_REGION("maincpu", 0xf000) - AM_RANGE(0xfb000, 0xfbfff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void chsuper_state::chsuper_prg_map(address_map &map) +{ + map(0x00000, 0x0efff).rom(); + map(0x00000, 0x01fff).w(this, FUNC(chsuper_state::chsuper_vram_w)); + map(0x0f000, 0x0ffff).ram().region("maincpu", 0xf000); + map(0xfb000, 0xfbfff).ram().share("nvram"); +} // AM_RANGE(0xaff8, 0xaff8) AM_DEVWRITE_MODERN("oki", okim6295_device, write) -ADDRESS_MAP_START(chsuper_state::chsuper_portmap) - AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs - AM_RANGE( 0x00e8, 0x00e8 ) AM_READ_PORT("IN0") - AM_RANGE( 0x00e9, 0x00e9 ) AM_READ_PORT("IN1") - AM_RANGE( 0x00ea, 0x00ea ) AM_READ_PORT("DSW") - AM_RANGE( 0x00ed, 0x00ed ) AM_WRITENOP // mirror of EFh, but with bit0 active... - AM_RANGE( 0x00ee, 0x00ee ) AM_WRITE(chsuper_outporta_w) - AM_RANGE( 0x00ef, 0x00ef ) AM_WRITE(chsuper_outportb_w) - AM_RANGE( 0x00fc, 0x00fc ) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE( 0x00fd, 0x00fd ) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE( 0x00fe, 0x00fe ) AM_DEVWRITE("ramdac", ramdac_device, mask_w) - AM_RANGE( 0x8300, 0x8300 ) AM_READ_PORT("IN2") // valid input port present in test mode. - AM_RANGE( 0xff20, 0xff3f ) AM_DEVWRITE("dac", dac_byte_interface, write) // unk writes -ADDRESS_MAP_END +void chsuper_state::chsuper_portmap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // Z180 internal regs + map(0x00e8, 0x00e8).portr("IN0"); + map(0x00e9, 0x00e9).portr("IN1"); + map(0x00ea, 0x00ea).portr("DSW"); + map(0x00ed, 0x00ed).nopw(); // mirror of EFh, but with bit0 active... + map(0x00ee, 0x00ee).w(this, FUNC(chsuper_state::chsuper_outporta_w)); + map(0x00ef, 0x00ef).w(this, FUNC(chsuper_state::chsuper_outportb_w)); + map(0x00fc, 0x00fc).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x00fd, 0x00fd).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x00fe, 0x00fe).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x8300, 0x8300).portr("IN2"); // valid input port present in test mode. + map(0xff20, 0xff3f).w("dac", FUNC(dac_byte_interface::write)); // unk writes +} /* About Sound... @@ -346,9 +348,10 @@ static GFXDECODE_START( chsuper ) GFXDECODE_ENTRY( "gfx1", 0x00000, charlayout, 0, 1 ) GFXDECODE_END -ADDRESS_MAP_START(chsuper_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void chsuper_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} /*************************** diff --git a/src/mame/drivers/cidelsa.cpp b/src/mame/drivers/cidelsa.cpp index 7864d3a5985..3927d2c605e 100644 --- a/src/mame/drivers/cidelsa.cpp +++ b/src/mame/drivers/cidelsa.cpp @@ -141,61 +141,69 @@ WRITE8_MEMBER( draco_state::out1_w ) // Destroyer -ADDRESS_MAP_START(cidelsa_state::destryer_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map) - AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cidelsa_state::destryera_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map) - AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cidelsa_state::destryer_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(destryer_out1_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x07) AM_WRITE(cdp1869_w) -ADDRESS_MAP_END +void cidelsa_state::destryer_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).ram().share("nvram"); + map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map)); + map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map)); +} + +void cidelsa_state::destryera_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x30ff).ram().share("nvram"); + map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map)); + map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map)); +} + +void cidelsa_state::destryer_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0").w(this, FUNC(cidelsa_state::destryer_out1_w)); + map(0x02, 0x02).portr("IN1"); + map(0x03, 0x07).w(this, FUNC(cidelsa_state::cdp1869_w)); +} // Altair -ADDRESS_MAP_START(cidelsa_state::altair_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map) - AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map) -ADDRESS_MAP_END +void cidelsa_state::altair_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x30ff).ram().share("nvram"); + map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map)); + map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map)); +} -ADDRESS_MAP_START(cidelsa_state::altair_io_map) - AM_RANGE(0x01, 0x01) AM_DEVREAD("ic23", cdp1852_device, read) AM_DEVWRITE("ic26", cdp1852_device, write) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ic24", cdp1852_device, read) - AM_RANGE(0x04, 0x04) AM_DEVREAD("ic25", cdp1852_device, read) - AM_RANGE(0x03, 0x07) AM_WRITE(cdp1869_w) -ADDRESS_MAP_END +void cidelsa_state::altair_io_map(address_map &map) +{ + map(0x01, 0x01).r("ic23", FUNC(cdp1852_device::read)).w("ic26", FUNC(cdp1852_device::write)); + map(0x02, 0x02).r("ic24", FUNC(cdp1852_device::read)); + map(0x04, 0x04).r("ic25", FUNC(cdp1852_device::read)); + map(0x03, 0x07).w(this, FUNC(cidelsa_state::cdp1869_w)); +} // Draco -ADDRESS_MAP_START(draco_state::draco_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map) - AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(draco_state::draco_io_map) - AM_RANGE(0x01, 0x01) AM_DEVREAD("ic29", cdp1852_device, read) AM_DEVWRITE("ic32", cdp1852_device, write) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ic30", cdp1852_device, read) - AM_RANGE(0x04, 0x04) AM_DEVREAD("ic31", cdp1852_device, read) - AM_RANGE(0x03, 0x07) AM_WRITE(cdp1869_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(draco_state::draco_sound_map) - AM_RANGE(0x000, 0x3ff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void draco_state::draco_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).ram().share("nvram"); + map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map)); + map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map)); +} + +void draco_state::draco_io_map(address_map &map) +{ + map(0x01, 0x01).r("ic29", FUNC(cdp1852_device::read)).w("ic32", FUNC(cdp1852_device::write)); + map(0x02, 0x02).r("ic30", FUNC(cdp1852_device::read)); + map(0x04, 0x04).r("ic31", FUNC(cdp1852_device::read)); + map(0x03, 0x07).w(this, FUNC(draco_state::cdp1869_w)); +} + +void draco_state::draco_sound_map(address_map &map) +{ + map(0x000, 0x3ff).bankr("bank1"); +} /* Input Ports */ diff --git a/src/mame/drivers/cinemat.cpp b/src/mame/drivers/cinemat.cpp index 2a457edb9a1..85e2cabeaf5 100644 --- a/src/mame/drivers/cinemat.cpp +++ b/src/mame/drivers/cinemat.cpp @@ -283,52 +283,60 @@ WRITE8_MEMBER(cinemat_state::qb3_ram_bank_w) * *************************************/ -ADDRESS_MAP_START(cinemat_state::program_map_4k) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void cinemat_state::program_map_4k(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x0fff).rom(); +} -ADDRESS_MAP_START(cinemat_state::program_map_8k) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM - AM_RANGE(0x2000, 0x2fff) AM_MIRROR(0x1000) AM_ROM AM_REGION("maincpu", 0x1000) -ADDRESS_MAP_END +void cinemat_state::program_map_8k(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x0fff).mirror(0x1000).rom(); + map(0x2000, 0x2fff).mirror(0x1000).rom().region("maincpu", 0x1000); +} -ADDRESS_MAP_START(cinemat_state::program_map_16k) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void cinemat_state::program_map_16k(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x3fff).rom(); +} -ADDRESS_MAP_START(cinemat_state::program_map_32k) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void cinemat_state::program_map_32k(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x7fff).rom(); +} -ADDRESS_MAP_START(cinemat_state::data_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM -ADDRESS_MAP_END +void cinemat_state::data_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); +} -ADDRESS_MAP_START(cinemat_state::data_map_qb3) - AM_RANGE(0x0000, 0x03ff) AM_RAMBANK("bank1") AM_SHARE("rambase") -ADDRESS_MAP_END +void cinemat_state::data_map_qb3(address_map &map) +{ + map(0x0000, 0x03ff).bankrw("bank1").share("rambase"); +} -ADDRESS_MAP_START(cinemat_state::io_map) - AM_RANGE(0x00, 0x0f) AM_READ(inputs_r) - AM_RANGE(0x10, 0x16) AM_READ(switches_r) - AM_RANGE(0x17, 0x17) AM_READ(coin_input_r) +void cinemat_state::io_map(address_map &map) +{ + map(0x00, 0x0f).r(this, FUNC(cinemat_state::inputs_r)); + map(0x10, 0x16).r(this, FUNC(cinemat_state::switches_r)); + map(0x17, 0x17).r(this, FUNC(cinemat_state::coin_input_r)); - AM_RANGE(0x00, 0x07) AM_DEVWRITE("outlatch", ls259_device, write_d0) -ADDRESS_MAP_END + map(0x00, 0x07).w(m_outlatch, FUNC(ls259_device::write_d0)); +} -ADDRESS_MAP_START(cinemat_state::io_map_qb3) - AM_IMPORT_FROM(io_map) +void cinemat_state::io_map_qb3(address_map &map) +{ + io_map(map); // Some of the outputs here are definitely not mapped through the LS259, since they use multiple bits of data - AM_RANGE(0x00, 0x00) AM_WRITE(qb3_ram_bank_w) - AM_RANGE(0x04, 0x04) AM_WRITE(qb3_sound_fifo_w) - AM_RANGE(0x0f, 0x0f) AM_READ(qb3_frame_r) -ADDRESS_MAP_END + map(0x00, 0x00).w(this, FUNC(cinemat_state::qb3_ram_bank_w)); + map(0x04, 0x04).w(this, FUNC(cinemat_state::qb3_sound_fifo_w)); + map(0x0f, 0x0f).r(this, FUNC(cinemat_state::qb3_frame_r)); +} diff --git a/src/mame/drivers/circus.cpp b/src/mame/drivers/circus.cpp index 764631bfbac..79f5c261639 100644 --- a/src/mame/drivers/circus.cpp +++ b/src/mame/drivers/circus.cpp @@ -63,18 +63,19 @@ READ8_MEMBER(circus_state::circus_paddle_r) return ioport("PADDLE")->read(); } -ADDRESS_MAP_START(circus_state::circus_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2000) AM_WRITE(circus_clown_x_w) - AM_RANGE(0x3000, 0x3000) AM_WRITE(circus_clown_y_w) - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(circus_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x8000) AM_RAM_WRITE(circus_clown_z_w) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW") - AM_RANGE(0xd000, 0xd000) AM_READ(circus_paddle_r) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void circus_state::circus_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x1000, 0x1fff).rom(); + map(0x2000, 0x2000).w(this, FUNC(circus_state::circus_clown_x_w)); + map(0x3000, 0x3000).w(this, FUNC(circus_state::circus_clown_y_w)); + map(0x4000, 0x43ff).ram().w(this, FUNC(circus_state::circus_videoram_w)).share("videoram"); + map(0x8000, 0x8000).ram().w(this, FUNC(circus_state::circus_clown_z_w)); + map(0xa000, 0xa000).portr("INPUTS"); + map(0xc000, 0xc000).portr("DSW"); + map(0xd000, 0xd000).r(this, FUNC(circus_state::circus_paddle_r)); + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( circus ) diff --git a/src/mame/drivers/circusc.cpp b/src/mame/drivers/circusc.cpp index 85dc634d72c..07c6f24d203 100644 --- a/src/mame/drivers/circusc.cpp +++ b/src/mame/drivers/circusc.cpp @@ -152,34 +152,36 @@ WRITE_LINE_MEMBER(circusc_state::irq_mask_w) m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); } -ADDRESS_MAP_START(circusc_state::circusc_map) - AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x03f8) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x0400, 0x0400) AM_MIRROR(0x03ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* WDOG */ - AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x03ff) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* SOUND DATA */ - AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_WRITE(circusc_sh_irqtrigger_w) /* SOUND-ON causes interrupt on audio CPU */ - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03fc) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x03fc) AM_READ_PORT("P1") - AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x03fc) AM_READ_PORT("P2") - AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x03fc) AM_READNOP /* unpopulated DIPSW 3*/ - AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x03ff) AM_READ_PORT("DSW2") - AM_RANGE(0x1c00, 0x1c00) AM_MIRROR(0x03ff) AM_WRITEONLY AM_SHARE("scroll") /* VGAP */ - AM_RANGE(0x2000, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(circusc_colorram_w) AM_SHARE("colorram") /* colorram */ - AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(circusc_videoram_w) AM_SHARE("videoram") /* videoram */ - AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("spriteram_2") /* spriteram2 */ - AM_RANGE(0x3900, 0x39ff) AM_RAM AM_SHARE("spriteram") /* spriteram */ - AM_RANGE(0x3a00, 0x3fff) AM_RAM - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(circusc_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* CS0 */ - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(circusc_sh_timer_r) /* CS1 */ - AM_RANGE(0xa000, 0xa07f) AM_MIRROR(0x1f80) AM_WRITE(circusc_sound_w) /* CS2 - CS6 */ -ADDRESS_MAP_END +void circusc_state::circusc_map(address_map &map) +{ + map(0x0000, 0x0007).mirror(0x03f8).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x0400, 0x0400).mirror(0x03ff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* WDOG */ + map(0x0800, 0x0800).mirror(0x03ff).w("soundlatch", FUNC(generic_latch_8_device::write)); /* SOUND DATA */ + map(0x0c00, 0x0c00).mirror(0x03ff).w(this, FUNC(circusc_state::circusc_sh_irqtrigger_w)); /* SOUND-ON causes interrupt on audio CPU */ + map(0x1000, 0x1000).mirror(0x03fc).portr("SYSTEM"); + map(0x1001, 0x1001).mirror(0x03fc).portr("P1"); + map(0x1002, 0x1002).mirror(0x03fc).portr("P2"); + map(0x1003, 0x1003).mirror(0x03fc).nopr(); /* unpopulated DIPSW 3*/ + map(0x1400, 0x1400).mirror(0x03ff).portr("DSW1"); + map(0x1800, 0x1800).mirror(0x03ff).portr("DSW2"); + map(0x1c00, 0x1c00).mirror(0x03ff).writeonly().share("scroll"); /* VGAP */ + map(0x2000, 0x2fff).ram(); + map(0x3000, 0x33ff).ram().w(this, FUNC(circusc_state::circusc_colorram_w)).share("colorram"); /* colorram */ + map(0x3400, 0x37ff).ram().w(this, FUNC(circusc_state::circusc_videoram_w)).share("videoram"); /* videoram */ + map(0x3800, 0x38ff).ram().share("spriteram_2"); /* spriteram2 */ + map(0x3900, 0x39ff).ram().share("spriteram"); /* spriteram */ + map(0x3a00, 0x3fff).ram(); + map(0x6000, 0xffff).rom(); +} + +void circusc_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0x1c00).ram(); + map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read)); /* CS0 */ + map(0x8000, 0x8000).mirror(0x1fff).r(this, FUNC(circusc_state::circusc_sh_timer_r)); /* CS1 */ + map(0xa000, 0xa07f).mirror(0x1f80).w(this, FUNC(circusc_state::circusc_sound_w)); /* CS2 - CS6 */ +} diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp index 03256f9d147..73738bdfabc 100644 --- a/src/mame/drivers/cischeat.cpp +++ b/src/mame/drivers/cischeat.cpp @@ -196,44 +196,45 @@ Cisco Heat. **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::bigrun_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") AM_WRITE(leds_out_w) // Coins - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN2") AM_WRITE(unknown_out_w) // Buttons - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN3") AM_WRITE(motor_out_w) // Motor Limit Switches - AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN4") AM_WRITE(wheel_out_w) // DSW 1 & 2 - AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu - AM_RANGE(0x08000a, 0x08000b) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu - AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // ?? - AM_RANGE(0x080010, 0x080011) AM_READWRITE(bigrun_ip_select_r, ip_select_w) - AM_RANGE(0x080012, 0x080013) AM_WRITE(ip_select_plus1_w) - AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only - AM_RANGE(0x082200, 0x082201) AM_READ_PORT("IN5") // DSW 3 (4 bits) - AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset - AM_RANGE(0x082308, 0x082309) AM_WRITE(cischeat_comms_w) - AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w) +void cischeat_state::bigrun_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x080000, 0x080001).portr("IN1").w(this, FUNC(cischeat_state::leds_out_w)); // Coins + map(0x080002, 0x080003).portr("IN2").w(this, FUNC(cischeat_state::unknown_out_w)); // Buttons + map(0x080004, 0x080005).portr("IN3").w(this, FUNC(cischeat_state::motor_out_w)); // Motor Limit Switches + map(0x080006, 0x080007).portr("IN4").w(this, FUNC(cischeat_state::wheel_out_w)); // DSW 1 & 2 + map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu + map(0x08000a, 0x08000b).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu + map(0x08000c, 0x08000d).nopw(); // ?? + map(0x080010, 0x080011).rw(this, FUNC(cischeat_state::bigrun_ip_select_r), FUNC(cischeat_state::ip_select_w)); + map(0x080012, 0x080013).w(this, FUNC(cischeat_state::ip_select_plus1_w)); + map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082108, 0x082109).noprw(); // ? written with 0 only + map(0x082200, 0x082201).portr("IN5"); // DSW 3 (4 bits) + map(0x082208, 0x082209).noprw(); // watchdog reset + map(0x082308, 0x082309).w(this, FUNC(cischeat_state::cischeat_comms_w)); + map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w)); /* It's actually 0x840000-0x847ff, divided in four banks and shared with other boards. Each board expects reads from the other boards and writes to own bank. Amusingly, if you run the communication test as ID = X then soft reset -> ID = Y, what was at ID = X gets an OK in the second test so it's likely to be the only thing needed. */ - AM_RANGE(0x084000, 0x0847ff) AM_RAM // Linking with other units - AM_RANGE(0x088000, 0x08bfff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2 - AM_RANGE(0x08c000, 0x08ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1 + map(0x084000, 0x0847ff).ram(); // Linking with other units + map(0x088000, 0x08bfff).ram().share("share2"); // Sharedram with sub CPU#2 + map(0x08c000, 0x08ffff).ram().share("share1"); // Sharedram with sub CPU#1 /* Only writes to the first 0x40000 bytes affect the tilemaps: */ /* either these games support larger tilemaps or have more ram than needed */ - AM_RANGE(0x090000, 0x093fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0 - AM_RANGE(0x094000, 0x097fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1 - AM_RANGE(0x098000, 0x09bfff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2 + map(0x090000, 0x093fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0 + map(0x094000, 0x097fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1 + map(0x098000, 0x09bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2 - AM_RANGE(0x09c000, 0x09ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM - AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("user1",0) // ROM -ADDRESS_MAP_END + map(0x09c000, 0x09ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes + map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM + map(0x100000, 0x13ffff).rom().region("user1", 0); // ROM +} /************************************************************************** @@ -250,27 +251,28 @@ ADDRESS_MAP_END bec00-befff < text */ -ADDRESS_MAP_START(cischeat_state::cischeat_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") AM_WRITE(leds_out_w) // Coins - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN2") AM_WRITE(unknown_out_w) // Buttons - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN3") AM_WRITE(motor_out_w) // Motor Limit Switches - AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN4") AM_WRITE(wheel_out_w) // DSW 1 & 2 - AM_RANGE(0x08000a, 0x08000b) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu - AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // ?? - AM_RANGE(0x080010, 0x080011) AM_READWRITE(cischeat_ip_select_r, ip_select_w) - AM_RANGE(0x080012, 0x080013) AM_WRITENOP // value above + 1 - AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only - AM_RANGE(0x082200, 0x082201) AM_READ_PORT("IN5") // DSW 3 (4 bits) - AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset - AM_RANGE(0x082300, 0x082301) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) AM_WRITE(cischeat_soundlatch_w) // From sound cpu - AM_RANGE(0x082308, 0x082309) AM_WRITE(cischeat_comms_w) - AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w) - - AM_RANGE(0x088000, 0x0887ff) AM_RAM // Linking with other units +void cischeat_state::cischeat_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x080000, 0x080001).portr("IN1").w(this, FUNC(cischeat_state::leds_out_w)); // Coins + map(0x080002, 0x080003).portr("IN2").w(this, FUNC(cischeat_state::unknown_out_w)); // Buttons + map(0x080004, 0x080005).portr("IN3").w(this, FUNC(cischeat_state::motor_out_w)); // Motor Limit Switches + map(0x080006, 0x080007).portr("IN4").w(this, FUNC(cischeat_state::wheel_out_w)); // DSW 1 & 2 + map(0x08000a, 0x08000b).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu + map(0x08000c, 0x08000d).nopw(); // ?? + map(0x080010, 0x080011).rw(this, FUNC(cischeat_state::cischeat_ip_select_r), FUNC(cischeat_state::ip_select_w)); + map(0x080012, 0x080013).nopw(); // value above + 1 + map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082108, 0x082109).noprw(); // ? written with 0 only + map(0x082200, 0x082201).portr("IN5"); // DSW 3 (4 bits) + map(0x082208, 0x082209).noprw(); // watchdog reset + map(0x082300, 0x082301).r(m_soundlatch2, FUNC(generic_latch_16_device::read)).w(this, FUNC(cischeat_state::cischeat_soundlatch_w)); // From sound cpu + map(0x082308, 0x082309).w(this, FUNC(cischeat_state::cischeat_comms_w)); + map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w)); + + map(0x088000, 0x0887ff).ram(); // Linking with other units /* Only the first 0x800 bytes are tested but: CPU #0 PC 0000278c: warning - write 68c0 to unmapped memory address 0009c7fe @@ -278,19 +280,19 @@ ADDRESS_MAP_START(cischeat_state::cischeat_map) No mem access error from the other CPU's, though.. */ /* this is the right order of sharedram's */ - AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2 - AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1 + map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2 + map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1 /* Only writes to the first 0x40000 bytes affect the tilemaps: */ /* either these games support larger tilemaps or have more ram than needed */ - AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0 - AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1 - AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes + map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0 + map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1 + map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM -ADDRESS_MAP_END + map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM + map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM +} /************************************************************************** @@ -312,41 +314,42 @@ CPU #0 PC 002350 : Warning, vreg 0002 <- 0000 CPU #0 PC 00235C : Warning, vreg 0006 <- 0000 */ -ADDRESS_MAP_START(cischeat_state::f1gpstar_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") // DSW 1 & 2 - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN2") AM_WRITE(f1gpstar_motor_w) // Buttons - AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN3") // ? Read at boot only - AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu - AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu - AM_RANGE(0x08000c, 0x08000d) AM_READ_PORT("IN4") // DSW 3 - AM_RANGE(0x080010, 0x080011) AM_READ(f1gpstar_wheel_r) AM_WRITENOP // Accel + Driving Wheel - AM_RANGE(0x080014, 0x080015) AM_WRITENOP - AM_RANGE(0x080018, 0x080019) AM_WRITE(f1gpstar_soundint_w) - - AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only - AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset - AM_RANGE(0x082308, 0x082309) AM_READNOP AM_WRITE(f1gpstar_comms_w) - AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w) - - AM_RANGE(0x088000, 0x0883ff) AM_RAM // Linking with other units - - AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2 - AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1 +void cischeat_state::f1gpstar_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x080000, 0x080001).portr("IN1"); // DSW 1 & 2 + map(0x080004, 0x080005).portr("IN2").w(this, FUNC(cischeat_state::f1gpstar_motor_w)); // Buttons + map(0x080006, 0x080007).portr("IN3"); // ? Read at boot only + map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu + map(0x080008, 0x080009).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu + map(0x08000c, 0x08000d).portr("IN4"); // DSW 3 + map(0x080010, 0x080011).r(this, FUNC(cischeat_state::f1gpstar_wheel_r)).nopw(); // Accel + Driving Wheel + map(0x080014, 0x080015).nopw(); + map(0x080018, 0x080019).w(this, FUNC(cischeat_state::f1gpstar_soundint_w)); + + map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082108, 0x082109).noprw(); // ? written with 0 only + map(0x082208, 0x082209).noprw(); // watchdog reset + map(0x082308, 0x082309).nopr().w(this, FUNC(cischeat_state::f1gpstar_comms_w)); + map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w)); + + map(0x088000, 0x0883ff).ram(); // Linking with other units + + map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2 + map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1 /* Only writes to the first 0x40000 bytes affect the tilemaps: */ /* either these games support larger tilemaps or have more ram than needed */ - AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0 - AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1 - AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes + map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0 + map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1 + map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM -ADDRESS_MAP_END + map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM + map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM +} /************************************************************************** @@ -386,42 +389,43 @@ WRITE16_MEMBER(cischeat_state::wildplt_mux_w) // Same as f1gpstar, but vregs are slightly different: -ADDRESS_MAP_START(cischeat_state::wildplt_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") AM_WRITE(f1gpstr2_io_w) // DSW 1 & 2 - AM_RANGE(0x080004, 0x080005) AM_READ(wildplt_mux_r) AM_WRITE(wildplt_mux_w) // Buttons - AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu - AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu - AM_RANGE(0x08000c, 0x08000d) AM_WRITENOP // 1000, 3000 - AM_RANGE(0x080010, 0x080011) AM_READ(wildplt_xy_r) AM_WRITE(ip_select_w) // X, Y - AM_RANGE(0x080014, 0x080015) AM_WRITENOP - AM_RANGE(0x080018, 0x080019) AM_READWRITE(f1gpstr2_ioready_r, f1gpstar_soundint_w) - - AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("shareio") - - AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only - AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset - AM_RANGE(0x082308, 0x082309) AM_READNOP AM_WRITE(f1gpstar_comms_w) - AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w) +void cischeat_state::wildplt_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x080000, 0x080001).portr("IN0").w(this, FUNC(cischeat_state::f1gpstr2_io_w)); // DSW 1 & 2 + map(0x080004, 0x080005).r(this, FUNC(cischeat_state::wildplt_mux_r)).w(this, FUNC(cischeat_state::wildplt_mux_w)); // Buttons + map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu + map(0x080008, 0x080009).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu + map(0x08000c, 0x08000d).nopw(); // 1000, 3000 + map(0x080010, 0x080011).r(this, FUNC(cischeat_state::wildplt_xy_r)).w(this, FUNC(cischeat_state::ip_select_w)); // X, Y + map(0x080014, 0x080015).nopw(); + map(0x080018, 0x080019).rw(this, FUNC(cischeat_state::f1gpstr2_ioready_r), FUNC(cischeat_state::f1gpstar_soundint_w)); + + map(0x081000, 0x081fff).ram().share("shareio"); + + map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082108, 0x082109).noprw(); // ? written with 0 only + map(0x082208, 0x082209).noprw(); // watchdog reset + map(0x082308, 0x082309).nopr().w(this, FUNC(cischeat_state::f1gpstar_comms_w)); + map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w)); // AM_RANGE(0x088000, 0x088fff) AM_RAM // Linking with other units - AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2 - AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1 + map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2 + map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1 /* Only writes to the first 0x40000 bytes affect the tilemaps: */ /* either these games support larger tilemaps or have more ram than needed */ - AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0 - AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1 - AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes + map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0 + map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1 + map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM -ADDRESS_MAP_END + map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM + map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM +} /************************************************************************** @@ -429,44 +433,45 @@ ADDRESS_MAP_END **************************************************************************/ // Same as f1gpstar, but vregs are slightly different: -ADDRESS_MAP_START(cischeat_state::f1gpstr2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN1") AM_WRITE(f1gpstr2_io_w) // DSW 1 & 2 - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("IN2") AM_WRITE(f1gpstar_motor_w) // Buttons - AM_RANGE(0x080006, 0x080007) AM_READ_PORT("IN3") // ? Read at boot only - AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) // From sound cpu - AM_RANGE(0x080008, 0x080009) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) // To sound cpu - AM_RANGE(0x08000c, 0x08000d) AM_READ_PORT("IN4") // DSW 3 - AM_RANGE(0x080010, 0x080011) AM_READ(f1gpstar_wheel_r) AM_WRITENOP - AM_RANGE(0x080014, 0x080015) AM_WRITENOP - AM_RANGE(0x080018, 0x080019) AM_READWRITE(f1gpstr2_ioready_r, f1gpstar_soundint_w) - - AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("shareio") - - AM_RANGE(0x082000, 0x082005) AM_DEVREADWRITE("scroll0", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_DEVREADWRITE("scroll1", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082100, 0x082105) AM_DEVREADWRITE("scroll2", megasys1_tilemap_device, scroll_r, scroll_w) - AM_RANGE(0x082108, 0x082109) AM_NOP // ? written with 0 only - AM_RANGE(0x082208, 0x082209) AM_NOP // watchdog reset - AM_RANGE(0x082308, 0x082309) AM_READNOP AM_WRITE(f1gpstar_comms_w) - AM_RANGE(0x082400, 0x082401) AM_WRITE(active_layers_w) +void cischeat_state::f1gpstr2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x080000, 0x080001).portr("IN1").w(this, FUNC(cischeat_state::f1gpstr2_io_w)); // DSW 1 & 2 + map(0x080004, 0x080005).portr("IN2").w(this, FUNC(cischeat_state::f1gpstar_motor_w)); // Buttons + map(0x080006, 0x080007).portr("IN3"); // ? Read at boot only + map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); // From sound cpu + map(0x080008, 0x080009).w(m_soundlatch, FUNC(generic_latch_16_device::write)); // To sound cpu + map(0x08000c, 0x08000d).portr("IN4"); // DSW 3 + map(0x080010, 0x080011).r(this, FUNC(cischeat_state::f1gpstar_wheel_r)).nopw(); + map(0x080014, 0x080015).nopw(); + map(0x080018, 0x080019).rw(this, FUNC(cischeat_state::f1gpstr2_ioready_r), FUNC(cischeat_state::f1gpstar_soundint_w)); + + map(0x081000, 0x081fff).ram().share("shareio"); + + map(0x082000, 0x082005).rw("scroll0", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).rw("scroll1", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082100, 0x082105).rw("scroll2", FUNC(megasys1_tilemap_device::scroll_r), FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082108, 0x082109).noprw(); // ? written with 0 only + map(0x082208, 0x082209).noprw(); // watchdog reset + map(0x082308, 0x082309).nopr().w(this, FUNC(cischeat_state::f1gpstar_comms_w)); + map(0x082400, 0x082401).w(this, FUNC(cischeat_state::active_layers_w)); // 0x100 RAM banks instead of 0x200 - AM_RANGE(0x088000, 0x0887ff) AM_RAM // Linking with other units + map(0x088000, 0x0887ff).ram(); // Linking with other units - AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("share2") // Sharedram with sub CPU#2 - AM_RANGE(0x098000, 0x09ffff) AM_RAM AM_SHARE("share1") // Sharedram with sub CPU#1 + map(0x090000, 0x097fff).ram().share("share2"); // Sharedram with sub CPU#2 + map(0x098000, 0x09ffff).ram().share("share1"); // Sharedram with sub CPU#1 /* Only writes to the first 0x40000 bytes affect the tilemaps: */ /* either these games support larger tilemaps or have more ram than needed */ - AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0 - AM_RANGE(0x0a8000, 0x0affff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1") // Scroll ram 1 - AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palettes + map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0 + map(0x0a8000, 0x0affff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1"); // Scroll ram 1 + map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palettes - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // RAM - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1",0) // ROM -ADDRESS_MAP_END + map(0x0f0000, 0x0fffff).ram().share("ram"); // RAM + map(0x100000, 0x17ffff).rom().region("user1", 0); // ROM +} /************************************************************************** @@ -570,26 +575,27 @@ WRITE16_MEMBER(cischeat_state::scudhamm_oki_bank_w) } } -ADDRESS_MAP_START(cischeat_state::scudhamm_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_WRITENOP // UNUSED LAYER - AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082208, 0x082209) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll RAM 0 - AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll RAM 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram - AM_RANGE(0x100000, 0x100001) AM_WRITE(scudhamm_oki_bank_w) // Sound - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0") AM_WRITE(scudhamm_leds_w) // Buttons - AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) // - AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w) // ? - AM_RANGE(0x100040, 0x100041) AM_READ(scudhamm_analog_r) AM_WRITENOP // A / D - AM_RANGE(0x100044, 0x100045) AM_READ(scudhamm_motor_pos_r) // Motor Position - AM_RANGE(0x100050, 0x100051) AM_READ(scudhamm_motor_status_r) AM_WRITE(scudhamm_motor_command_w) // Motor Limit Switches - AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("IN2") // 2 x DSW -ADDRESS_MAP_END +void cischeat_state::scudhamm_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x082000, 0x082005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).nopw(); // UNUSED LAYER + map(0x082100, 0x082105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082208, 0x082209).rw(m_watchdog, FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0000, 0x0a3fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll RAM 0 + map(0x0b0000, 0x0b3fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll RAM 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x0f0000, 0x0fffff).ram().share("ram"); // Work RAM + Spriteram + map(0x100000, 0x100001).w(this, FUNC(cischeat_state::scudhamm_oki_bank_w)); // Sound + map(0x100008, 0x100009).portr("IN0").w(this, FUNC(cischeat_state::scudhamm_leds_w)); // Buttons + map(0x100015, 0x100015).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x100019, 0x100019).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0x10001c, 0x10001d).w(this, FUNC(cischeat_state::scudhamm_enable_w)); // ? + map(0x100040, 0x100041).r(this, FUNC(cischeat_state::scudhamm_analog_r)).nopw(); // A / D + map(0x100044, 0x100045).r(this, FUNC(cischeat_state::scudhamm_motor_pos_r)); // Motor Position + map(0x100050, 0x100051).r(this, FUNC(cischeat_state::scudhamm_motor_status_r)).w(this, FUNC(cischeat_state::scudhamm_motor_command_w)); // Motor Limit Switches + map(0x10005c, 0x10005d).portr("IN2"); // 2 x DSW +} /************************************************************************** @@ -654,24 +660,25 @@ WRITE16_MEMBER(cischeat_state::armchmp2_leds_w) } } -ADDRESS_MAP_START(cischeat_state::armchmp2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_WRITENOP // UNUSED LAYER - AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082208, 0x082209) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll ram 0 - AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll ram 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN2") AM_WRITE(scudhamm_oki_bank_w) // DSW + Sound - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("IN3") // DSW - AM_RANGE(0x100008, 0x100009) AM_READWRITE(armchmp2_buttons_r, armchmp2_leds_w) // Leds + Coin Counters + Buttons + Sensors - AM_RANGE(0x10000c, 0x10000d) AM_READ(armchmp2_analog_r) AM_WRITENOP // A / D - AM_RANGE(0x100010, 0x100011) AM_READWRITE(armchmp2_motor_status_r, armchmp2_motor_command_w) // Motor Limit Switches? - AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff ) // Sound - AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff ) // -ADDRESS_MAP_END +void cischeat_state::armchmp2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x082000, 0x082005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).nopw(); // UNUSED LAYER + map(0x082100, 0x082105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082208, 0x082209).rw(m_watchdog, FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll ram 0 + map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll ram 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x0f0000, 0x0fffff).ram().share("ram"); // Work RAM + Spriteram + map(0x100000, 0x100001).portr("IN2").w(this, FUNC(cischeat_state::scudhamm_oki_bank_w)); // DSW + Sound + map(0x100004, 0x100005).portr("IN3"); // DSW + map(0x100008, 0x100009).rw(this, FUNC(cischeat_state::armchmp2_buttons_r), FUNC(cischeat_state::armchmp2_leds_w)); // Leds + Coin Counters + Buttons + Sensors + map(0x10000c, 0x10000d).r(this, FUNC(cischeat_state::armchmp2_analog_r)).nopw(); // A / D + map(0x100010, 0x100011).rw(this, FUNC(cischeat_state::armchmp2_motor_status_r), FUNC(cischeat_state::armchmp2_motor_command_w)); // Motor Limit Switches? + map(0x100015, 0x100015).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x100019, 0x100019).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // +} /************************************************************************** @@ -798,37 +805,40 @@ CUSTOM_INPUT_MEMBER(cischeat_state::captflag_motor_busy_r) return 0; } -ADDRESS_MAP_START(cischeat_state::captflag_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x082000, 0x082005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082008, 0x08200d) AM_WRITENOP // UNUSED LAYER - AM_RANGE(0x082100, 0x082105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w) - AM_RANGE(0x082208, 0x082209) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0x090008, 0x090009) AM_WRITENOP // 0? - AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0") // Scroll RAM 0 - AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2") // Scroll RAM 2 - AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("ram") // Work RAM + Spriteram - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SW1_2") AM_WRITE(captflag_oki_bank_w) // 2 x DSW + Sound - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("Buttons") AM_WRITE(captflag_leds_w) // Buttons + Leds - AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) // - AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w) // ? - AM_RANGE(0x100040, 0x100041) AM_READ_PORT("SW01") // DSW + Motor - AM_RANGE(0x100044, 0x100045) AM_WRITE(captflag_motor_command_left_w) // Motor Command (Left) - AM_RANGE(0x100048, 0x100049) AM_WRITE(captflag_motor_command_right_w) // Motor Command (Right) - AM_RANGE(0x100060, 0x10007d) AM_RAM // 7-seg? NVRAM? -ADDRESS_MAP_END - -ADDRESS_MAP_START(cischeat_state::captflag_oki1_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki1_bank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cischeat_state::captflag_oki2_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("oki2_bank") -ADDRESS_MAP_END +void cischeat_state::captflag_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x082000, 0x082005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082008, 0x08200d).nopw(); // UNUSED LAYER + map(0x082100, 0x082105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w)); + map(0x082208, 0x082209).rw(m_watchdog, FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0x090008, 0x090009).nopw(); // 0? + map(0x0a0000, 0x0a7fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0"); // Scroll RAM 0 + map(0x0b0000, 0x0b7fff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2"); // Scroll RAM 2 + map(0x0b8000, 0x0bffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x0f0000, 0x0fffff).ram().share("ram"); // Work RAM + Spriteram + map(0x100000, 0x100001).portr("SW1_2").w(this, FUNC(cischeat_state::captflag_oki_bank_w)); // 2 x DSW + Sound + map(0x100008, 0x100009).portr("Buttons").w(this, FUNC(cischeat_state::captflag_leds_w)); // Buttons + Leds + map(0x100015, 0x100015).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x100019, 0x100019).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0x10001c, 0x10001d).w(this, FUNC(cischeat_state::scudhamm_enable_w)); // ? + map(0x100040, 0x100041).portr("SW01"); // DSW + Motor + map(0x100044, 0x100045).w(this, FUNC(cischeat_state::captflag_motor_command_left_w)); // Motor Command (Left) + map(0x100048, 0x100049).w(this, FUNC(cischeat_state::captflag_motor_command_right_w)); // Motor Command (Right) + map(0x100060, 0x10007d).ram(); // 7-seg? NVRAM? +} + +void cischeat_state::captflag_oki1_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("oki1_bank"); +} + +void cischeat_state::captflag_oki2_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("oki2_bank"); +} /************************************************************************** @@ -843,42 +853,46 @@ ADDRESS_MAP_END Big Run **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::bigrun_map2) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share1") // Shared RAM (with Main CPU) - AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.0") // Road RAM - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM -ADDRESS_MAP_END +void cischeat_state::bigrun_map2(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040000, 0x047fff).ram().share("share1"); // Shared RAM (with Main CPU) + map(0x080000, 0x0807ff).ram().share("roadram.0"); // Road RAM + map(0x0c0000, 0x0c3fff).ram(); // RAM +} -ADDRESS_MAP_START(cischeat_state::bigrun_map3) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share2") // Shared RAM (with Main CPU) - AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.1") // Road RAM - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM -ADDRESS_MAP_END +void cischeat_state::bigrun_map3(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040000, 0x047fff).ram().share("share2"); // Shared RAM (with Main CPU) + map(0x080000, 0x0807ff).ram().share("roadram.1"); // Road RAM + map(0x0c0000, 0x0c3fff).ram(); // RAM +} /************************************************************************** Cisco Heat **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::cischeat_map2) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share1") // Shared RAM (with Main CPU) - AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.0") // Road RAM - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // watchdog - AM_RANGE(0x200000, 0x23ffff) AM_ROM AM_REGION("cpu2",0x40000) // ROM -ADDRESS_MAP_END +void cischeat_state::cischeat_map2(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040000, 0x047fff).ram().share("share1"); // Shared RAM (with Main CPU) + map(0x080000, 0x0807ff).ram().share("roadram.0"); // Road RAM + map(0x0c0000, 0x0c3fff).ram(); // RAM + map(0x100000, 0x100001).nopw(); // watchdog + map(0x200000, 0x23ffff).rom().region("cpu2", 0x40000); // ROM +} -ADDRESS_MAP_START(cischeat_state::cischeat_map3) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040000, 0x047fff) AM_RAM AM_SHARE("share2") // Shared RAM (with Main CPU) - AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("roadram.1") // Road RAM - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // watchdog - AM_RANGE(0x200000, 0x23ffff) AM_ROM AM_REGION("cpu3",0x40000) // ROM -ADDRESS_MAP_END +void cischeat_state::cischeat_map3(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040000, 0x047fff).ram().share("share2"); // Shared RAM (with Main CPU) + map(0x080000, 0x0807ff).ram().share("roadram.1"); // Road RAM + map(0x0c0000, 0x0c3fff).ram(); // RAM + map(0x100000, 0x100001).nopw(); // watchdog + map(0x200000, 0x23ffff).rom().region("cpu3", 0x40000); // ROM +} @@ -886,21 +900,23 @@ ADDRESS_MAP_END F1 GrandPrix Star **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::f1gpstar_map2) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("share1") // Shared RAM (with Main CPU) - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("roadram.0") // Road RAM - AM_RANGE(0x180000, 0x183fff) AM_RAM // RAM - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // watchdog -ADDRESS_MAP_END +void cischeat_state::f1gpstar_map2(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x080000, 0x0807ff).ram().share("share1"); // Shared RAM (with Main CPU) + map(0x100000, 0x1007ff).ram().share("roadram.0"); // Road RAM + map(0x180000, 0x183fff).ram(); // RAM + map(0x200000, 0x200001).nopw(); // watchdog +} -ADDRESS_MAP_START(cischeat_state::f1gpstar_map3) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_SHARE("share2") // Shared RAM (with Main CPU) - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("roadram.1") // Road RAM - AM_RANGE(0x180000, 0x183fff) AM_RAM // RAM - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // watchdog -ADDRESS_MAP_END +void cischeat_state::f1gpstar_map3(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x080000, 0x0807ff).ram().share("share2"); // Shared RAM (with Main CPU) + map(0x100000, 0x1007ff).ram().share("roadram.1"); // Road RAM + map(0x180000, 0x183fff).ram(); // RAM + map(0x200000, 0x200001).nopw(); // watchdog +} /************************************************************************** @@ -927,15 +943,16 @@ WRITE16_MEMBER(cischeat_state::bigrun_soundbank_w) } } -ADDRESS_MAP_START(cischeat_state::bigrun_sound_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_WRITE(bigrun_soundbank_w) // From Main CPU - 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, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM -ADDRESS_MAP_END +void cischeat_state::bigrun_sound_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(this, FUNC(cischeat_state::bigrun_soundbank_w)); // From Main CPU + 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(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0f0000, 0x0fffff).ram(); // RAM +} /************************************************************************** @@ -952,51 +969,54 @@ WRITE16_MEMBER(cischeat_state::cischeat_soundbank_2_w) if (ACCESSING_BITS_0_7) m_oki2->set_rom_bank(data & 1); } -ADDRESS_MAP_START(cischeat_state::cischeat_sound_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040002, 0x040003) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking - AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking - AM_RANGE(0x060002, 0x060003) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // To Main CPU - AM_RANGE(0x060004, 0x060005) AM_DEVREAD("soundlatch", generic_latch_16_device, read) // From Main CPU - AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM -ADDRESS_MAP_END +void cischeat_state::cischeat_sound_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040002, 0x040003).w(this, FUNC(cischeat_state::cischeat_soundbank_1_w)); // Sample Banking + map(0x040004, 0x040005).w(this, FUNC(cischeat_state::cischeat_soundbank_2_w)); // Sample Banking + map(0x060002, 0x060003).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // To Main CPU + map(0x060004, 0x060005).r(m_soundlatch, FUNC(generic_latch_16_device::read)); // From Main CPU + map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0f0000, 0x0fffff).ram(); // RAM +} /************************************************************************** F1 GrandPrix Star **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::f1gpstar_sound_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking (cischeat: 40002) - AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking (cischeat: 40004) - AM_RANGE(0x060000, 0x060001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // From Main CPU (cischeat: 60004) - AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM (cischeat: f0000-fffff) -ADDRESS_MAP_END +void cischeat_state::f1gpstar_sound_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040004, 0x040005).w(this, FUNC(cischeat_state::cischeat_soundbank_1_w)); // Sample Banking (cischeat: 40002) + map(0x040008, 0x040009).w(this, FUNC(cischeat_state::cischeat_soundbank_2_w)); // Sample Banking (cischeat: 40004) + map(0x060000, 0x060001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // From Main CPU (cischeat: 60004) + map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0e0000, 0x0fffff).ram(); // RAM (cischeat: f0000-fffff) +} /************************************************************************** F1 GrandPrix Star II **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::f1gpstr2_sound_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x040004, 0x040005) AM_WRITE(cischeat_soundbank_1_w) // Sample Banking - AM_RANGE(0x040008, 0x040009) AM_WRITE(cischeat_soundbank_2_w) // Sample Banking - AM_RANGE(0x04000e, 0x04000f) AM_WRITENOP // ? 0 (f1gpstar: no) - AM_RANGE(0x060002, 0x060003) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // To Main CPU - AM_RANGE(0x060004, 0x060005) AM_DEVREAD("soundlatch", generic_latch_16_device, read) // From Main CPU - AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0e0000, 0x0fffff) AM_RAM // RAM -ADDRESS_MAP_END +void cischeat_state::f1gpstr2_sound_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x040004, 0x040005).w(this, FUNC(cischeat_state::cischeat_soundbank_1_w)); // Sample Banking + map(0x040008, 0x040009).w(this, FUNC(cischeat_state::cischeat_soundbank_2_w)); // Sample Banking + map(0x04000e, 0x04000f).nopw(); // ? 0 (f1gpstar: no) + map(0x060002, 0x060003).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // To Main CPU + map(0x060004, 0x060005).r(m_soundlatch, FUNC(generic_latch_16_device::read)); // From Main CPU + map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x0a0000, 0x0a0003).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0c0000, 0x0c0003).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x0e0000, 0x0fffff).ram(); // RAM +} /************************************************************************** @@ -1006,13 +1026,14 @@ ADDRESS_MAP_END **************************************************************************/ -ADDRESS_MAP_START(cischeat_state::f1gpstr2_io_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("shareio") - AM_RANGE(0x100000, 0x100001) AM_WRITEONLY AM_SHARE("ioready") // - AM_RANGE(0x180000, 0x183fff) AM_RAM // RAM - AM_RANGE(0x200000, 0x200001) AM_NOP // -ADDRESS_MAP_END +void cischeat_state::f1gpstr2_io_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x080000, 0x080fff).ram().share("shareio"); + map(0x100000, 0x100001).writeonly().share("ioready"); // + map(0x180000, 0x183fff).ram(); // RAM + map(0x200000, 0x200001).noprw(); // +} /*************************************************************************** diff --git a/src/mame/drivers/cit220.cpp b/src/mame/drivers/cit220.cpp index 21bb7e9bbad..ca6849a1c44 100644 --- a/src/mame/drivers/cit220.cpp +++ b/src/mame/drivers/cit220.cpp @@ -46,30 +46,33 @@ WRITE_LINE_MEMBER(cit220_state::sod_w) // probably asserts PBREQ on SCN2674 to access memory at Exxx } -ADDRESS_MAP_START(cit220_state::mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa1ff) AM_ROM AM_REGION("eeprom", 0x800) - AM_RANGE(0xe000, 0xe7ff) AM_RAM // ??? -ADDRESS_MAP_END - -ADDRESS_MAP_START(cit220_state::io_map) - AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w) - AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w) - AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("avdc", scn2674_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_UNMAP // ??? - AM_RANGE(0xc0, 0xc0) AM_UNMAP // ??? -ADDRESS_MAP_END +void cit220_state::mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa1ff).rom().region("eeprom", 0x800); + map(0xe000, 0xe7ff).ram(); // ??? +} + +void cit220_state::io_map(address_map &map) +{ + map(0x00, 0x0f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0x10, 0x10).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x11, 0x11).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x20, 0x27).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write)); + map(0xa0, 0xa0).unmaprw(); // ??? + map(0xc0, 0xc0).unmaprw(); // ??? +} SCN2674_DRAW_CHARACTER_MEMBER(cit220_state::draw_character) { } -ADDRESS_MAP_START(cit220_state::vram_map) - AM_RANGE(0x0000, 0x27ff) AM_NOP -ADDRESS_MAP_END +void cit220_state::vram_map(address_map &map) +{ + map(0x0000, 0x27ff).noprw(); +} static INPUT_PORTS_START( cit220p ) diff --git a/src/mame/drivers/citycon.cpp b/src/mame/drivers/citycon.cpp index 8f980e1e48c..5db550d845c 100644 --- a/src/mame/drivers/citycon.cpp +++ b/src/mame/drivers/citycon.cpp @@ -32,27 +32,29 @@ READ8_MEMBER(citycon_state::citycon_irq_ack_r) return 0; } -ADDRESS_MAP_START(citycon_state::citycon_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(citycon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(citycon_linecolor_w) AM_SHARE("linecolor") AM_MIRROR(0x0700) - AM_RANGE(0x2800, 0x28ff) AM_RAM AM_SHARE("spriteram") AM_MIRROR(0x0700) //0x2900-0x2fff cleared at post but unused - AM_RANGE(0x3000, 0x3000) AM_READ(citycon_in_r) AM_WRITE(citycon_background_w) /* player 1 & 2 inputs multiplexed */ - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x3004, 0x3005) AM_READNOP AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x3007, 0x3007) AM_READ(citycon_irq_ack_r) - AM_RANGE(0x3800, 0x3cff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(citycon_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x4002, 0x4002) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void citycon_state::citycon_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().w(this, FUNC(citycon_state::citycon_videoram_w)).share("videoram"); + map(0x2000, 0x20ff).ram().w(this, FUNC(citycon_state::citycon_linecolor_w)).share("linecolor").mirror(0x0700); + map(0x2800, 0x28ff).ram().share("spriteram").mirror(0x0700); //0x2900-0x2fff cleared at post but unused + map(0x3000, 0x3000).r(this, FUNC(citycon_state::citycon_in_r)).w(this, FUNC(citycon_state::citycon_background_w)); /* player 1 & 2 inputs multiplexed */ + map(0x3001, 0x3001).portr("DSW1").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3002, 0x3002).portr("DSW2").w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x3004, 0x3005).nopr().writeonly().share("scroll"); + map(0x3007, 0x3007).r(this, FUNC(citycon_state::citycon_irq_ack_r)); + map(0x3800, 0x3cff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x4000, 0xffff).rom(); +} + +void citycon_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x4000, 0x4001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x4002, 0x4002).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x6000, 0x6001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/ckz80.cpp b/src/mame/drivers/ckz80.cpp index 5ec6a507f7d..1943b1978c2 100644 --- a/src/mame/drivers/ckz80.cpp +++ b/src/mame/drivers/ckz80.cpp @@ -278,11 +278,12 @@ DRIVER_INIT_MEMBER(ckz80_state, master) // Master -ADDRESS_MAP_START(ckz80_state::master_map) - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM AM_REGION("maincpu", 0) // _A15 - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_READWRITE(master_input_r, master_control_w) // A13 - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM // A14 -ADDRESS_MAP_END +void ckz80_state::master_map(address_map &map) +{ + map(0x0000, 0x1fff).mirror(0x6000).rom().region("maincpu", 0); // _A15 + map(0xa000, 0xa000).mirror(0x1fff).rw(this, FUNC(ckz80_state::master_input_r), FUNC(ckz80_state::master_control_w)); // A13 + map(0xc000, 0xc7ff).mirror(0x3800).ram(); // A14 +} // PCB design is prone to bus conflicts, but should be fine if software obeys WRITE8_MEMBER(ckz80_state::master_trampoline_w) @@ -306,9 +307,10 @@ READ8_MEMBER(ckz80_state::master_trampoline_r) return data; } -ADDRESS_MAP_START(ckz80_state::master_trampoline) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(master_trampoline_r, master_trampoline_w) -ADDRESS_MAP_END +void ckz80_state::master_trampoline(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(ckz80_state::master_trampoline_r), FUNC(ckz80_state::master_trampoline_w)); +} diff --git a/src/mame/drivers/clayshoo.cpp b/src/mame/drivers/clayshoo.cpp index b4c76b5a57c..5ad771f0a43 100644 --- a/src/mame/drivers/clayshoo.cpp +++ b/src/mame/drivers/clayshoo.cpp @@ -214,14 +214,15 @@ uint32_t clayshoo_state::screen_update_clayshoo(screen_device &screen, bitmap_rg * *************************************/ -ADDRESS_MAP_START(clayshoo_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x47ff) AM_ROM - AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("videoram") /* 6k of video ram according to readme */ - AM_RANGE(0x9800, 0xa800) AM_WRITENOP /* not really mapped, but cleared */ - AM_RANGE(0xc800, 0xc800) AM_READWRITE(analog_r, analog_reset_w) -ADDRESS_MAP_END +void clayshoo_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x47ff).rom(); + map(0x8000, 0x97ff).ram().share("videoram"); /* 6k of video ram according to readme */ + map(0x9800, 0xa800).nopw(); /* not really mapped, but cleared */ + map(0xc800, 0xc800).rw(this, FUNC(clayshoo_state::analog_r), FUNC(clayshoo_state::analog_reset_w)); +} @@ -231,15 +232,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(clayshoo_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) +void clayshoo_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x20, 0x23).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x30, 0x33).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // AM_RANGE(0x40, 0x43) AM_NOP // 8253 for sound? // AM_RANGE(0x50, 0x50) AM_NOP // ? // AM_RANGE(0x60, 0x60) AM_NOP // ? -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/clcd.cpp b/src/mame/drivers/clcd.cpp index a836c0e84f8..50161a455bb 100644 --- a/src/mame/drivers/clcd.cpp +++ b/src/mame/drivers/clcd.cpp @@ -604,45 +604,47 @@ void clcd_state::nvram_init(nvram_device &nvram, void *data, size_t size) } -ADDRESS_MAP_START(clcd_state::clcd_banked_mem) +void clcd_state::clcd_banked_mem(address_map &map) +{ /* KERN/APPL/RAM */ - AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x40000) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x20000, 0x3ffff) AM_MIRROR(0x40000) AM_ROM AM_REGION("maincpu",0) + map(0x00000, 0x1ffff).mirror(0x40000).rw(this, FUNC(clcd_state::ram_r), FUNC(clcd_state::ram_w)); + map(0x20000, 0x3ffff).mirror(0x40000).rom().region("maincpu", 0); /* TEST */ - AM_RANGE(0x81000, 0x83fff) AM_READ(mmu_offset1_r) - AM_RANGE(0x84000, 0x87fff) AM_READ(mmu_offset2_r) - AM_RANGE(0x88000, 0x8bfff) AM_READ(mmu_offset3_r) - AM_RANGE(0x8c000, 0x8dfff) AM_READ(mmu_offset4_r) - AM_RANGE(0x8e000, 0x8f7ff) AM_READ(mmu_offset5_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(clcd_state::clcd_mem) - AM_RANGE(0x0000, 0x0fff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x1000, 0x3fff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8) - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank2", address_map_bank_device, read8, write8) - AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank3", address_map_bank_device, read8, write8) - AM_RANGE(0xc000, 0xf7ff) AM_DEVREADWRITE("bank4", address_map_bank_device, read8, write8) - AM_RANGE(0xf800, 0xf80f) AM_MIRROR(0x70) AM_DEVREADWRITE("via0", via6522_device, read, write) - AM_RANGE(0xf880, 0xf88f) AM_MIRROR(0x70) AM_DEVREADWRITE("via1", via6522_device, read, write) - AM_RANGE(0xf980, 0xf983) AM_MIRROR(0x7c) AM_DEVREADWRITE("acia", mos6551_device, read, write) - AM_RANGE(0xfa00, 0xffff) AM_ROM AM_REGION("maincpu", 0x1fa00) - AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_kern_w) - AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_appl_w) - AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_ram_w) - AM_RANGE(0xfb80, 0xfb80) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_recall_w) - AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_save_w) - AM_RANGE(0xfc80, 0xfc80) AM_MIRROR(0x7f) AM_WRITE(mmu_mode_test_w) - AM_RANGE(0xfd00, 0xfd00) AM_MIRROR(0x7f) AM_WRITE(mmu_offset1_w) - AM_RANGE(0xfd80, 0xfd80) AM_MIRROR(0x7f) AM_WRITE(mmu_offset2_w) - AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x7f) AM_WRITE(mmu_offset3_w) - AM_RANGE(0xfe80, 0xfe80) AM_MIRROR(0x7f) AM_WRITE(mmu_offset4_w) - AM_RANGE(0xff00, 0xff00) AM_MIRROR(0x7f) AM_WRITE(mmu_offset5_w) - AM_RANGE(0xff80, 0xff80) AM_MIRROR(0x7c) AM_WRITE(lcd_scrollx_w) - AM_RANGE(0xff81, 0xff81) AM_MIRROR(0x7c) AM_WRITE(lcd_scrolly_w) - AM_RANGE(0xff82, 0xff82) AM_MIRROR(0x7c) AM_WRITE(lcd_mode_w) - AM_RANGE(0xff83, 0xff83) AM_MIRROR(0x7c) AM_WRITE(lcd_size_w) -ADDRESS_MAP_END + map(0x81000, 0x83fff).r(this, FUNC(clcd_state::mmu_offset1_r)); + map(0x84000, 0x87fff).r(this, FUNC(clcd_state::mmu_offset2_r)); + map(0x88000, 0x8bfff).r(this, FUNC(clcd_state::mmu_offset3_r)); + map(0x8c000, 0x8dfff).r(this, FUNC(clcd_state::mmu_offset4_r)); + map(0x8e000, 0x8f7ff).r(this, FUNC(clcd_state::mmu_offset5_r)); +} + +void clcd_state::clcd_mem(address_map &map) +{ + map(0x0000, 0x0fff).rw(this, FUNC(clcd_state::ram_r), FUNC(clcd_state::ram_w)); + map(0x1000, 0x3fff).rw(m_bank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x4000, 0x7fff).rw(m_bank2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0xbfff).rw(m_bank3, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xf7ff).rw(m_bank4, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xf800, 0xf80f).mirror(0x70).rw(m_via0, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xf880, 0xf88f).mirror(0x70).rw("via1", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xf980, 0xf983).mirror(0x7c).rw(m_acia, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xfa00, 0xffff).rom().region("maincpu", 0x1fa00); + map(0xfa00, 0xfa00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_kern_w)); + map(0xfa80, 0xfa80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_appl_w)); + map(0xfb00, 0xfb00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_ram_w)); + map(0xfb80, 0xfb80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_recall_w)); + map(0xfc00, 0xfc00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_save_w)); + map(0xfc80, 0xfc80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_mode_test_w)); + map(0xfd00, 0xfd00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset1_w)); + map(0xfd80, 0xfd80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset2_w)); + map(0xfe00, 0xfe00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset3_w)); + map(0xfe80, 0xfe80).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset4_w)); + map(0xff00, 0xff00).mirror(0x7f).w(this, FUNC(clcd_state::mmu_offset5_w)); + map(0xff80, 0xff80).mirror(0x7c).w(this, FUNC(clcd_state::lcd_scrollx_w)); + map(0xff81, 0xff81).mirror(0x7c).w(this, FUNC(clcd_state::lcd_scrolly_w)); + map(0xff82, 0xff82).mirror(0x7c).w(this, FUNC(clcd_state::lcd_mode_w)); + map(0xff83, 0xff83).mirror(0x7c).w(this, FUNC(clcd_state::lcd_size_w)); +} /* Input ports */ static INPUT_PORTS_START( clcd ) diff --git a/src/mame/drivers/cliffhgr.cpp b/src/mame/drivers/cliffhgr.cpp index db54a1d6c8f..25eefe28066 100644 --- a/src/mame/drivers/cliffhgr.cpp +++ b/src/mame/drivers/cliffhgr.cpp @@ -240,30 +240,32 @@ void cliffhgr_state::machine_reset() /********************************************************/ -ADDRESS_MAP_START(cliffhgr_state::mainmem) - AM_RANGE(0x0000, 0xbfff) AM_ROM /* ROM */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") /* NVRAM */ - AM_RANGE(0xe800, 0xefff) AM_RAM /* RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cliffhgr_state::mainport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x44, 0x44) AM_DEVWRITE("tms9928a", tms9928a_device, vram_write) - AM_RANGE(0x45, 0x45) AM_DEVREAD("tms9928a", tms9928a_device, vram_read) - AM_RANGE(0x46, 0x46) AM_WRITE(cliff_sound_overlay_w) - AM_RANGE(0x50, 0x52) AM_READ(cliff_phillips_code_r) - AM_RANGE(0x53, 0x53) AM_READ(cliff_irq_ack_r) - AM_RANGE(0x54, 0x54) AM_DEVWRITE("tms9928a", tms9928a_device, register_write) - AM_RANGE(0x55, 0x55) AM_DEVREAD("tms9928a", tms9928a_device, register_read) - AM_RANGE(0x57, 0x57) AM_WRITE(cliff_phillips_clear_w) - AM_RANGE(0x60, 0x60) AM_WRITE(cliff_port_bank_w) - AM_RANGE(0x62, 0x62) AM_READ(cliff_port_r) - AM_RANGE(0x64, 0x64) AM_WRITENOP /* unused in schematics, may be used as timing delay for IR interface */ - AM_RANGE(0x66, 0x66) AM_WRITE(cliff_ldwire_w) - AM_RANGE(0x68, 0x68) AM_WRITE(cliff_coin_counter_w) - AM_RANGE(0x6a, 0x6a) AM_WRITENOP /* /LAMP0 (Infrared?) */ - AM_RANGE(0x6e, 0x6f) AM_WRITE(cliff_test_led_w) -ADDRESS_MAP_END +void cliffhgr_state::mainmem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); /* ROM */ + map(0xe000, 0xe7ff).ram().share("nvram"); /* NVRAM */ + map(0xe800, 0xefff).ram(); /* RAM */ +} + +void cliffhgr_state::mainport(address_map &map) +{ + map.global_mask(0xff); + map(0x44, 0x44).w("tms9928a", FUNC(tms9928a_device::vram_write)); + map(0x45, 0x45).r("tms9928a", FUNC(tms9928a_device::vram_read)); + map(0x46, 0x46).w(this, FUNC(cliffhgr_state::cliff_sound_overlay_w)); + map(0x50, 0x52).r(this, FUNC(cliffhgr_state::cliff_phillips_code_r)); + map(0x53, 0x53).r(this, FUNC(cliffhgr_state::cliff_irq_ack_r)); + map(0x54, 0x54).w("tms9928a", FUNC(tms9928a_device::register_write)); + map(0x55, 0x55).r("tms9928a", FUNC(tms9928a_device::register_read)); + map(0x57, 0x57).w(this, FUNC(cliffhgr_state::cliff_phillips_clear_w)); + map(0x60, 0x60).w(this, FUNC(cliffhgr_state::cliff_port_bank_w)); + map(0x62, 0x62).r(this, FUNC(cliffhgr_state::cliff_port_r)); + map(0x64, 0x64).nopw(); /* unused in schematics, may be used as timing delay for IR interface */ + map(0x66, 0x66).w(this, FUNC(cliffhgr_state::cliff_ldwire_w)); + map(0x68, 0x68).w(this, FUNC(cliffhgr_state::cliff_coin_counter_w)); + map(0x6a, 0x6a).nopw(); /* /LAMP0 (Infrared?) */ + map(0x6e, 0x6f).w(this, FUNC(cliffhgr_state::cliff_test_led_w)); +} /************************************* diff --git a/src/mame/drivers/cloak.cpp b/src/mame/drivers/cloak.cpp index f9a528aa199..fb31d3af07f 100644 --- a/src/mame/drivers/cloak.cpp +++ b/src/mame/drivers/cloak.cpp @@ -180,26 +180,27 @@ WRITE8_MEMBER(cloak_state::cloak_nvram_enable_w) * *************************************/ -ADDRESS_MAP_START(cloak_state::master_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(cloak_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) /* DSW0 also */ - AM_RANGE(0x1800, 0x180f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) /* DSW1 also */ - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("P1") - AM_RANGE(0x2200, 0x2200) AM_READ_PORT("P2") - AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2600, 0x2600) AM_WRITE(cloak_custom_w) - AM_RANGE(0x2800, 0x29ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2f00, 0x2fff) AM_NOP - AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3200, 0x327f) AM_WRITE(cloak_paletteram_w) - AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(cloak_irq_reset_0_w) - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(cloak_nvram_enable_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cloak_state::master_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(cloak_state::cloak_videoram_w)).share("videoram"); + map(0x0800, 0x0fff).ram().share("share1"); + map(0x1000, 0x100f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); /* DSW0 also */ + map(0x1800, 0x180f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); /* DSW1 also */ + map(0x2000, 0x2000).portr("P1"); + map(0x2200, 0x2200).portr("P2"); + map(0x2400, 0x2400).portr("SYSTEM"); + map(0x2600, 0x2600).w(this, FUNC(cloak_state::cloak_custom_w)); + map(0x2800, 0x29ff).ram().share("nvram"); + map(0x2f00, 0x2fff).noprw(); + map(0x3000, 0x30ff).ram().share("spriteram"); + map(0x3200, 0x327f).w(this, FUNC(cloak_state::cloak_paletteram_w)); + map(0x3800, 0x3807).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x3a00, 0x3a00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3c00, 0x3c00).w(this, FUNC(cloak_state::cloak_irq_reset_0_w)); + map(0x3e00, 0x3e00).w(this, FUNC(cloak_state::cloak_nvram_enable_w)); + map(0x4000, 0xffff).rom(); +} /************************************* @@ -208,16 +209,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cloak_state::slave_map) - AM_RANGE(0x0000, 0x0007) AM_RAM - AM_RANGE(0x0008, 0x000f) AM_READWRITE(graph_processor_r, graph_processor_w) - AM_RANGE(0x0010, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x1000) AM_WRITE(cloak_irq_reset_1_w) - AM_RANGE(0x1200, 0x1200) AM_WRITE(cloak_clearbmp_w) - AM_RANGE(0x1400, 0x1400) AM_WRITE(cloak_custom_w) - AM_RANGE(0x2000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cloak_state::slave_map(address_map &map) +{ + map(0x0000, 0x0007).ram(); + map(0x0008, 0x000f).rw(this, FUNC(cloak_state::graph_processor_r), FUNC(cloak_state::graph_processor_w)); + map(0x0010, 0x07ff).ram(); + map(0x0800, 0x0fff).ram().share("share1"); + map(0x1000, 0x1000).w(this, FUNC(cloak_state::cloak_irq_reset_1_w)); + map(0x1200, 0x1200).w(this, FUNC(cloak_state::cloak_clearbmp_w)); + map(0x1400, 0x1400).w(this, FUNC(cloak_state::cloak_custom_w)); + map(0x2000, 0xffff).rom(); +} diff --git a/src/mame/drivers/cloud9.cpp b/src/mame/drivers/cloud9.cpp index e1cf83946bc..e4353f9e9a2 100644 --- a/src/mame/drivers/cloud9.cpp +++ b/src/mame/drivers/cloud9.cpp @@ -276,26 +276,27 @@ WRITE8_MEMBER(cloud9_state::nvram_store_w) * *************************************/ -ADDRESS_MAP_START(cloud9_state::cloud9_map) - AM_RANGE(0x0000, 0x4fff) AM_ROMBANK("bank1") AM_WRITE(cloud9_videoram_w) - AM_RANGE(0x0000, 0x0001) AM_WRITE(cloud9_bitmode_addr_w) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(cloud9_bitmode_r, cloud9_bitmode_w) - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5400, 0x547f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5480, 0x54ff) AM_WRITE(irq_ack_w) - AM_RANGE(0x5500, 0x557f) AM_RAM_WRITE(cloud9_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x5580, 0x5587) AM_MIRROR(0x0078) AM_DEVWRITE("videolatch", ls259_device, write_d7) // video control registers - AM_RANGE(0x5600, 0x5607) AM_MIRROR(0x0078) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x5680, 0x56ff) AM_WRITE(nvram_store_w) - AM_RANGE(0x5700, 0x577f) AM_WRITE(nvram_recall_w) - AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x007e) AM_READ_PORT("IN0") - AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x007e) AM_READ_PORT("IN1") - AM_RANGE(0x5900, 0x5903) AM_MIRROR(0x007c) AM_READ(leta_r) - AM_RANGE(0x5a00, 0x5a0f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x5b00, 0x5b0f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x5c00, 0x5cff) AM_MIRROR(0x0300) AM_DEVREADWRITE("nvram", x2212_device, read, write) - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cloud9_state::cloud9_map(address_map &map) +{ + map(0x0000, 0x4fff).bankr("bank1").w(this, FUNC(cloud9_state::cloud9_videoram_w)); + map(0x0000, 0x0001).w(this, FUNC(cloud9_state::cloud9_bitmode_addr_w)); + map(0x0002, 0x0002).rw(this, FUNC(cloud9_state::cloud9_bitmode_r), FUNC(cloud9_state::cloud9_bitmode_w)); + map(0x5000, 0x53ff).ram().share("spriteram"); + map(0x5400, 0x547f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5480, 0x54ff).w(this, FUNC(cloud9_state::irq_ack_w)); + map(0x5500, 0x557f).ram().w(this, FUNC(cloud9_state::cloud9_paletteram_w)).share("paletteram"); + map(0x5580, 0x5587).mirror(0x0078).w(m_videolatch, FUNC(ls259_device::write_d7)); // video control registers + map(0x5600, 0x5607).mirror(0x0078).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x5680, 0x56ff).w(this, FUNC(cloud9_state::nvram_store_w)); + map(0x5700, 0x577f).w(this, FUNC(cloud9_state::nvram_recall_w)); + map(0x5800, 0x5800).mirror(0x007e).portr("IN0"); + map(0x5801, 0x5801).mirror(0x007e).portr("IN1"); + map(0x5900, 0x5903).mirror(0x007c).r(this, FUNC(cloud9_state::leta_r)); + map(0x5a00, 0x5a0f).mirror(0x00f0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x5b00, 0x5b0f).mirror(0x00f0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x5c00, 0x5cff).mirror(0x0300).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)); + map(0x6000, 0xffff).rom(); +} diff --git a/src/mame/drivers/clowndwn.cpp b/src/mame/drivers/clowndwn.cpp index c52dbb4ece2..59cf332c9c4 100644 --- a/src/mame/drivers/clowndwn.cpp +++ b/src/mame/drivers/clowndwn.cpp @@ -31,15 +31,16 @@ public: void clowndwn_map(address_map &map); }; -ADDRESS_MAP_START(clowndwn_state::clowndwn_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x4100, 0x4103) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x4200, 0x4203) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x4400, 0x4403) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("pia3", pia6821_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia4", pia6821_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void clowndwn_state::clowndwn_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x4100, 0x4103).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4200, 0x4203).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4400, 0x4403).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4800, 0x4803).rw("pia3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5000, 0x5003).rw("pia4", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe000, 0xffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( clowndwn ) INPUT_PORTS_END diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp index 9bec05b97c2..a6bc0a519c0 100644 --- a/src/mame/drivers/clpoker.cpp +++ b/src/mame/drivers/clpoker.cpp @@ -79,28 +79,31 @@ private: bool m_nmi_enable; }; -ADDRESS_MAP_START(clpoker_state::prg_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0xf001, 0xf001) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE(0xf002, 0xf002) AM_DEVWRITE("ramdac", ramdac_device, mask_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(clpoker_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi_outputs", i8255_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi_inputs", i8255_device, read, write) - AM_RANGE(0x30, 0x30) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x32, 0x32) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xc0, 0xc0) AM_READNOP // mystery read at startup -ADDRESS_MAP_END - -ADDRESS_MAP_START(clpoker_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void clpoker_state::prg_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram().w(this, FUNC(clpoker_state::videoram_w)).share("videoram"); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xf000, 0xf000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0xf001, 0xf001).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0xf002, 0xf002).w("ramdac", FUNC(ramdac_device::mask_w)); +} + +void clpoker_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi_outputs", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x13).rw("ppi_inputs", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x30, 0x30).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x32, 0x32).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x34, 0x34).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xc0, 0xc0).nopr(); // mystery read at startup +} + +void clpoker_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} WRITE8_MEMBER(clpoker_state::output_a_w) { diff --git a/src/mame/drivers/clshroad.cpp b/src/mame/drivers/clshroad.cpp index c5659435ff9..fbd506daaaf 100644 --- a/src/mame/drivers/clshroad.cpp +++ b/src/mame/drivers/clshroad.cpp @@ -70,25 +70,27 @@ WRITE_LINE_MEMBER(clshroad_state::sound_irq_mask_w) } -ADDRESS_MAP_START(clshroad_state::clshroad_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x95ff) AM_RAM - AM_RANGE(0x9600, 0x97ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x9800, 0x9dff) AM_RAM - AM_RANGE(0x9e00, 0x9fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa100, 0xa107) AM_READ(input_r) - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1 - AM_RANGE(0xb000, 0xb003) AM_WRITEONLY AM_SHARE("vregs") // Scroll - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0 -ADDRESS_MAP_END - -ADDRESS_MAP_START(clshroad_state::clshroad_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("custom", wiping_sound_device, sound_w) - AM_RANGE(0x9600, 0x97ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void clshroad_state::clshroad_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x95ff).ram(); + map(0x9600, 0x97ff).ram().share("share1"); + map(0x9800, 0x9dff).ram(); + map(0x9e00, 0x9fff).ram().share("spriteram"); + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xa100, 0xa107).r(this, FUNC(clshroad_state::input_r)); + map(0xa800, 0xafff).ram().w(this, FUNC(clshroad_state::vram_1_w)).share("vram_1"); // Layer 1 + map(0xb000, 0xb003).writeonly().share("vregs"); // Scroll + map(0xc000, 0xc7ff).ram().w(this, FUNC(clshroad_state::vram_0_w)).share("vram_0"); // Layer 0 +} + +void clshroad_state::clshroad_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).w("custom", FUNC(wiping_sound_device::sound_w)); + map(0x9600, 0x97ff).ram().share("share1"); + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); +} diff --git a/src/mame/drivers/cm1800.cpp b/src/mame/drivers/cm1800.cpp index dafba38e526..1c7dae6ad9a 100644 --- a/src/mame/drivers/cm1800.cpp +++ b/src/mame/drivers/cm1800.cpp @@ -64,17 +64,19 @@ READ8_MEMBER(cm1800_state::uart_status_r) return (m_uart->dav_r()) | (m_uart->tbmt_r() << 2); } -ADDRESS_MAP_START(cm1800_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff ) AM_ROM AM_REGION("roms", 0) - AM_RANGE( 0x0800, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cm1800_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0x01, 0x01) AM_READ(uart_status_r) -ADDRESS_MAP_END +void cm1800_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom().region("roms", 0); + map(0x0800, 0xffff).ram(); +} + +void cm1800_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0x01, 0x01).r(this, FUNC(cm1800_state::uart_status_r)); +} /* Input ports */ static INPUT_PORTS_START( cm1800 ) diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp index 424e910cdf6..446b235c0c6 100644 --- a/src/mame/drivers/cmi.cpp +++ b/src/mame/drivers/cmi.cpp @@ -1070,49 +1070,55 @@ READ16_MEMBER( cmi_state::midi_dma_r ) } /* The maps are dynamically populated */ -ADDRESS_MAP_START(cmi_state::maincpu1_map) - AM_RANGE(0xfffe, 0xffff) AM_READ(vector_r<0>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cmi_state::maincpu2_map) - AM_RANGE(0xfffe, 0xffff) AM_READ(vector_r<1>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cmi_state::muskeys_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("cmi10_pia_u21", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("cmi10_pia_u20", pia6821_device, read, write) - AM_RANGE(0x00a0, 0x00a1) AM_DEVREADWRITE("acia_mkbd_kbd", acia6850_device, read, write) - AM_RANGE(0x00b0, 0x00b1) AM_DEVREADWRITE("acia_mkbd_cmi", acia6850_device, read, write) - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0xb000, 0xb400) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cmi_state::alphakeys_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_READ_PORT("ANK_OPTIONS") - AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("ank_pia", pia6821_device, read, write) - AM_RANGE(0xc000, 0xc3ff) AM_ROM AM_MIRROR(0x3c00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cmi_state::midicpu_map) - AM_RANGE(0x000000, 0x003fff) AM_ROM - AM_RANGE(0x040000, 0x05ffff) AM_READWRITE(midi_dma_r, midi_dma_w) +void cmi_state::maincpu1_map(address_map &map) +{ + map(0xfffe, 0xffff).r(this, FUNC(cmi_state::vector_r<0>)); +} + +void cmi_state::maincpu2_map(address_map &map) +{ + map(0xfffe, 0xffff).r(this, FUNC(cmi_state::vector_r<1>)); +} + +void cmi_state::muskeys_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x007f).ram(); + map(0x0080, 0x0083).rw(m_cmi10_pia_u21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_cmi10_pia_u20, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x00a0, 0x00a1).rw(m_acia_mkbd_kbd, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x00b0, 0x00b1).rw(m_acia_mkbd_cmi, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x4000, 0x47ff).ram(); + map(0xb000, 0xb400).rom(); + map(0xf000, 0xffff).rom(); +} + +void cmi_state::alphakeys_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x007f).ram(); + map(0x4000, 0x7fff).portr("ANK_OPTIONS"); + map(0x8000, 0xbfff).rw(m_ank_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc000, 0xc3ff).rom().mirror(0x3c00); +} + +void cmi_state::midicpu_map(address_map &map) +{ + map(0x000000, 0x003fff).rom(); + map(0x040000, 0x05ffff).rw(this, FUNC(cmi_state::midi_dma_r), FUNC(cmi_state::midi_dma_w)); // AM_RANGE(0x060000, 0x06001f) TIMERS // AM_RANGE(0x060050, 0x06005f) ACIA // AM_RANGE(0x060070, 0x06007f) SMPTE - AM_RANGE(0x080000, 0x083fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cmi_state::cmi07cpu_map) - AM_RANGE(0x0000, 0x3fff) AM_NOP // TODO - AM_RANGE(0x4000, 0x4fff) AM_NOP // TODO - AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("cmi07_ptm", ptm6840_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("cmi07_ram") -ADDRESS_MAP_END + map(0x080000, 0x083fff).ram(); +} + +void cmi_state::cmi07cpu_map(address_map &map) +{ + map(0x0000, 0x3fff).noprw(); // TODO + map(0x4000, 0x4fff).noprw(); // TODO + map(0x8000, 0x8fff).rw(m_cmi07_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xc000, 0xffff).ram().share("cmi07_ram"); +} /* Input ports */ static INPUT_PORTS_START( cmi2x ) diff --git a/src/mame/drivers/cmmb.cpp b/src/mame/drivers/cmmb.cpp index bd3b43e7541..a272317871b 100644 --- a/src/mame/drivers/cmmb.cpp +++ b/src/mame/drivers/cmmb.cpp @@ -204,29 +204,30 @@ WRITE8_MEMBER(cmmb_state::flash_dbg_1_w) } /* overlap empty addresses */ -ADDRESS_MAP_START(cmmb_state::cmmb_map) - ADDRESS_MAP_GLOBAL_MASK(0xffff) - AM_RANGE(0x0000, 0x0fff) AM_RAM /* zero page address */ +void cmmb_state::cmmb_map(address_map &map) +{ + map.global_mask(0xffff); + map(0x0000, 0x0fff).ram(); /* zero page address */ // AM_RANGE(0x13c0, 0x13ff) AM_RAM //spriteram - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN3") - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("IN4") - AM_RANGE(0x2011, 0x2011) AM_READ_PORT("IN5") - AM_RANGE(0x2480, 0x249f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2505, 0x2505) AM_WRITE(irq_enable_w) - AM_RANGE(0x2600, 0x2600) AM_WRITE(irq_ack_w) + map(0x1000, 0x13ff).ram().share("videoram"); + map(0x2000, 0x2000).portr("IN3"); + map(0x2001, 0x2001).portr("IN4"); + map(0x2011, 0x2011).portr("IN5"); + map(0x2480, 0x249f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2505, 0x2505).w(this, FUNC(cmmb_state::irq_enable_w)); + map(0x2600, 0x2600).w(this, FUNC(cmmb_state::irq_ack_w)); //AM_RANGE(0x4000, 0x400f) AM_READWRITE(cmmb_input_r,cmmb_output_w) //AM_RANGE(0x4900, 0x4900) AM_READ(kludge_r) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x18000) - AM_RANGE(0xa000, 0xafff) AM_RAM - AM_RANGE(0xb000, 0xbfff) AM_READWRITE(cmmb_charram_r,cmmb_charram_w) - AM_RANGE(0xc000, 0xc00f) AM_READWRITE(cmmb_input_r,cmmb_output_w) + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x9fff).rom().region("maincpu", 0x18000); + map(0xa000, 0xafff).ram(); + map(0xb000, 0xbfff).rw(this, FUNC(cmmb_state::cmmb_charram_r), FUNC(cmmb_state::cmmb_charram_w)); + map(0xc000, 0xc00f).rw(this, FUNC(cmmb_state::cmmb_input_r), FUNC(cmmb_state::cmmb_output_w)); // debugging, to be removed // AM_RANGE(0x2aaa, 0x2aaa) AM_WRITE(flash_dbg_0_w) // AM_RANGE(0x5555, 0x5555) AM_WRITE(flash_dbg_1_w) - AM_RANGE(0xc010, 0xffff) AM_ROM AM_REGION("maincpu", 0x1c010) -ADDRESS_MAP_END + map(0xc010, 0xffff).rom().region("maincpu", 0x1c010); +} static INPUT_PORTS_START( cmmb ) diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp index ac39fdccd06..2f0d3afc50f 100644 --- a/src/mame/drivers/cninja.cpp +++ b/src/mame/drivers/cninja.cpp @@ -47,7 +47,6 @@ Note about version levels using Mutant Fighter as the example: #include "cpu/z80/z80.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "machine/decocrpt.h" #include "sound/2203intf.h" #include "sound/ym2151.h" @@ -106,63 +105,65 @@ READ16_MEMBER(cninja_state::cninjabl2_sprite_dma_r) } -ADDRESS_MAP_START(cninja_state::cninja_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM +void cninja_state::cninja_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); - AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll") - AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll") + map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w)); + map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x14c000, 0x14c7ff).writeonly().share("pf1_rowscroll"); + map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll"); - AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll") + map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w)); + map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll"); + map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll"); - AM_RANGE(0x184000, 0x187fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x190000, 0x190007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff) - AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x184000, 0x187fff).ram().share("ram"); + map(0x190000, 0x190007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff); + map(0x19c000, 0x19dfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */ - AM_RANGE(0x1bc000, 0x1bffff) AM_READWRITE(cninja_protection_region_0_104_r,cninja_protection_region_0_104_w) AM_SHARE("prot16ram") /* Protection device */ + map(0x1a4000, 0x1a47ff).ram().share("spriteram"); /* Sprites */ + map(0x1b4000, 0x1b4001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */ + map(0x1bc000, 0x1bffff).rw(this, FUNC(cninja_state::cninja_protection_region_0_104_r), FUNC(cninja_state::cninja_protection_region_0_104_w)).share("prot16ram"); /* Protection device */ - AM_RANGE(0x308000, 0x308fff) AM_WRITENOP /* Bootleg only */ -ADDRESS_MAP_END + map(0x308000, 0x308fff).nopw(); /* Bootleg only */ +} -ADDRESS_MAP_START(cninja_state::cninjabl_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM +void cninja_state::cninjabl_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); - AM_RANGE(0x138000, 0x1387ff) AM_RAM AM_SHARE("spriteram") /* bootleg sprite-ram (sprites rewritten here in new format) */ + map(0x138000, 0x1387ff).ram().share("spriteram"); /* bootleg sprite-ram (sprites rewritten here in new format) */ - AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x14c000, 0x14c7ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll") - AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll") + map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w)); + map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x14c000, 0x14c7ff).writeonly().share("pf1_rowscroll"); + map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll"); - AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) // not used / incorrect on this - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll") + map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w)); // not used / incorrect on this + map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll"); + map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll"); - AM_RANGE(0x17ff22, 0x17ff23) AM_READ_PORT("DSW") - AM_RANGE(0x17ff28, 0x17ff29) AM_READ_PORT("SYSTEM") - AM_RANGE(0x17ff2a, 0x17ff2b) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x17ff2c, 0x17ff2d) AM_READ_PORT("INPUTS") + map(0x17ff22, 0x17ff23).portr("DSW"); + map(0x17ff28, 0x17ff29).portr("SYSTEM"); + map(0x17ff2b, 0x17ff2b).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x17ff2c, 0x17ff2d).portr("INPUTS"); - AM_RANGE(0x180000, 0x187fff) AM_RAM // more ram on bootleg? + map(0x180000, 0x187fff).ram(); // more ram on bootleg? - AM_RANGE(0x190000, 0x190007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff) - AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x190000, 0x190007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff); + map(0x19c000, 0x19dfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */ -ADDRESS_MAP_END + map(0x1b4000, 0x1b4001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */ +} READ16_MEMBER( cninja_state::sshangha_protection_region_8_146_r ) { @@ -208,68 +209,70 @@ WRITE16_MEMBER( cninja_state::sshangha_protection_region_6_146_w ) m_ioprot->write_data( space, deco146_addr, data, mem_mask, cs ); } -ADDRESS_MAP_START(cninja_state::edrandy_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - - AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll") - - AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll") - - AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x194000, 0x197fff) AM_RAM AM_SHARE("ram") /* Main ram */ - AM_RANGE(0x198000, 0x19bfff) AM_READWRITE(sshangha_protection_region_6_146_r,sshangha_protection_region_6_146_w) AM_SHARE("prot16ram") /* Protection device */ +void cninja_state::edrandy_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + + map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w)); + map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x14c000, 0x14c7ff).ram().share("pf1_rowscroll"); + map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll"); + + map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w)); + map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll"); + map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll"); + + map(0x188000, 0x189fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x194000, 0x197fff).ram().share("ram"); /* Main ram */ + map(0x198000, 0x19bfff).rw(this, FUNC(cninja_state::sshangha_protection_region_6_146_r), FUNC(cninja_state::sshangha_protection_region_6_146_w)).share("prot16ram"); /* Protection device */ // AM_RANGE(0x198000, 0x1987ff) AM_READWRITE(sshangha_protection_region_6_146_r,sshangha_protection_region_6_146_w) AM_SHARE("prot16ram") /* Protection device */ - AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(sshangha_protection_region_8_146_r,sshangha_protection_region_8_146_w) + map(0x1a0000, 0x1a3fff).rw(this, FUNC(cninja_state::sshangha_protection_region_8_146_r), FUNC(cninja_state::sshangha_protection_region_8_146_w)); - AM_RANGE(0x1a4000, 0x1a4007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff) - AM_RANGE(0x1ac000, 0x1ac001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */ - AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x1bc800, 0x1bcfff) AM_WRITENOP /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */ -ADDRESS_MAP_END + map(0x1a4000, 0x1a4007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff); + map(0x1ac000, 0x1ac001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */ + map(0x1bc000, 0x1bc7ff).ram().share("spriteram"); /* Sprites */ + map(0x1bc800, 0x1bcfff).nopw(); /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */ +} WRITE16_MEMBER(cninja_state::robocop2_priority_w) { COMBINE_DATA(&m_priority); } -ADDRESS_MAP_START(cninja_state::robocop2_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM +void cninja_state::robocop2_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); - AM_RANGE(0x140000, 0x14000f) AM_WRITE(cninja_pf12_control_w) - AM_RANGE(0x144000, 0x144fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x146000, 0x146fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_SHARE("pf2_rowscroll") + map(0x140000, 0x14000f).w(this, FUNC(cninja_state::cninja_pf12_control_w)); + map(0x144000, 0x144fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x146000, 0x146fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x14c000, 0x14c7ff).ram().share("pf1_rowscroll"); + map(0x14e000, 0x14e7ff).ram().share("pf2_rowscroll"); - AM_RANGE(0x150000, 0x15000f) AM_WRITE(cninja_pf34_control_w) - AM_RANGE(0x154000, 0x154fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x156000, 0x156fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll") + map(0x150000, 0x15000f).w(this, FUNC(cninja_state::cninja_pf34_control_w)); + map(0x154000, 0x154fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x156000, 0x156fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x15c000, 0x15c7ff).ram().share("pf3_rowscroll"); + map(0x15e000, 0x15e7ff).ram().share("pf4_rowscroll"); - AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_SHARE("spriteram") + map(0x180000, 0x1807ff).ram().share("spriteram"); // AM_RANGE(0x18c000, 0x18c0ff) AM_WRITE(cninja_loopback_w) /* Protection writes */ // AM_RANGE(0x18c000, 0x18c7ff) AM_DEVREAD("ioprot", deco146_device,robocop2_prot_r) /* Protection device */ // AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w) - AM_RANGE(0x18c000, 0x18ffff) AM_READWRITE(mutantf_protection_region_0_146_r,mutantf_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */ + map(0x18c000, 0x18ffff).rw(this, FUNC(cninja_state::mutantf_protection_region_0_146_r), FUNC(cninja_state::mutantf_protection_region_0_146_w)).share("prot16ram"); /* Protection device */ -AM_RANGE(0x198000, 0x198001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */ - AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1b0000, 0x1b0007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff) - AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_SHARE("ram") /* Main ram */ - AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(robocop2_priority_w) - AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */ -ADDRESS_MAP_END +map(0x198000, 0x198001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* DMA flag */ + map(0x1a8000, 0x1a9fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x1b0000, 0x1b0007).m("irq", FUNC(deco_irq_device::map)).umask16(0x00ff); + map(0x1b8000, 0x1bbfff).ram().share("ram"); /* Main ram */ + map(0x1f0000, 0x1f0001).w(this, FUNC(cninja_state::robocop2_priority_w)); + map(0x1f8000, 0x1f8001).portr("DSW3"); /* Dipswitch #3 */ +} @@ -296,87 +299,94 @@ READ16_MEMBER( cninja_state::mutantf_71_r ) return 0xffff; // todo } -ADDRESS_MAP_START(cninja_state::mutantf_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x180001) AM_WRITE(robocop2_priority_w) - AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */ - AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(mutantf_protection_region_0_146_r,mutantf_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */ - AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) AM_READ(mutantf_71_r) - AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) - - AM_RANGE(0x300000, 0x30000f) AM_WRITE(cninja_pf12_control_w) - AM_RANGE(0x304000, 0x305fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x306000, 0x307fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_SHARE("pf2_rowscroll") - - AM_RANGE(0x310000, 0x31000f) AM_WRITE(cninja_pf34_control_w) - AM_RANGE(0x314000, 0x315fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x316000, 0x317fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_SHARE("pf4_rowscroll") - - AM_RANGE(0xad00ac, 0xad00ff) AM_READNOP /* Reads from here seem to be a game code bug */ -ADDRESS_MAP_END +void cninja_state::mutantf_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x140000, 0x1407ff).ram().share("spriteram2"); + map(0x160000, 0x161fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x180001).w(this, FUNC(cninja_state::robocop2_priority_w)); + map(0x180002, 0x180003).nopw(); /* VBL irq ack */ + map(0x1a0000, 0x1a3fff).rw(this, FUNC(cninja_state::mutantf_protection_region_0_146_r), FUNC(cninja_state::mutantf_protection_region_0_146_w)).share("prot16ram"); /* Protection device */ + map(0x1c0000, 0x1c0001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)).r(this, FUNC(cninja_state::mutantf_71_r)); + map(0x1e0000, 0x1e0001).w(m_spriteram2, FUNC(buffered_spriteram16_device::write)); + + map(0x300000, 0x30000f).w(this, FUNC(cninja_state::cninja_pf12_control_w)); + map(0x304000, 0x305fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x306000, 0x307fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x308000, 0x3087ff).ram().share("pf1_rowscroll"); + map(0x30a000, 0x30a7ff).ram().share("pf2_rowscroll"); + + map(0x310000, 0x31000f).w(this, FUNC(cninja_state::cninja_pf34_control_w)); + map(0x314000, 0x315fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x316000, 0x317fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x318000, 0x3187ff).ram().share("pf3_rowscroll"); + map(0x31a000, 0x31a7ff).ram().share("pf4_rowscroll"); + + map(0xad00ac, 0xad00ff).nopr(); /* Reads from here seem to be a game code bug */ +} /******************************************************************************/ -ADDRESS_MAP_START(cninja_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cninja_state::sound_map_mutantf) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_NOP - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cninja_state::stoneage_s_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cninja_state::cninjabl_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cninja_state::cninjabl2_s_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(cninjabl2_oki_bank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cninja_state::cninjabl2_oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("oki1", 0) - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void cninja_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); +} + +void cninja_state::sound_map_mutantf(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).noprw(); + map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); +} + +void cninja_state::stoneage_s_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); +} + +void cninja_state::cninjabl_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void cninja_state::cninjabl2_s_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(cninja_state::cninjabl2_oki_bank_w)); + map(0x9800, 0x9800).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); +} + +void cninja_state::cninjabl2_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom().region("oki1", 0); + map(0x30000, 0x3ffff).bankr("okibank"); +} /*********************************************************** Basic INPUT PORTS, DIPs diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp index f7d4c1d7795..bd0f0a71fc7 100644 --- a/src/mame/drivers/cntsteer.cpp +++ b/src/mame/drivers/cntsteer.cpp @@ -579,54 +579,58 @@ READ8_MEMBER(cntsteer_state::cntsteer_adx_r) /***************************************************************************/ -ADDRESS_MAP_START(cntsteer_state::gekitsui_cpu1_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1200, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(cntsteer_foreground_vram_w) AM_SHARE("videoram") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(cntsteer_foreground_attr_w) AM_SHARE("colorram") - AM_RANGE(0x3000, 0x3003) AM_WRITE(zerotrgt_ctrl_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cntsteer_state::gekitsui_cpu2_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("videoram2") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("COINS") - AM_RANGE(0x3000, 0x3004) AM_WRITE(zerotrgt_vregs_w) - AM_RANGE(0x3005, 0x3005) AM_WRITE(gekitsui_sub_irq_ack) - AM_RANGE(0x3007, 0x3007) AM_WRITE(cntsteer_sound_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cntsteer_state::cntsteer_cpu1_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(cntsteer_foreground_vram_w) AM_SHARE("videoram") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(cntsteer_foreground_attr_w) AM_SHARE("colorram") - AM_RANGE(0x3000, 0x3000) AM_WRITE(cntsteer_sub_nmi_w) - AM_RANGE(0x3001, 0x3001) AM_WRITE(cntsteer_sub_irq_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cntsteer_state::cntsteer_cpu2_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("videoram2") - AM_RANGE(0x2000, 0x2fff) AM_READWRITE(cntsteer_background_mirror_r,cntsteer_background_w) - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0") - AM_RANGE(0x3001, 0x3001) AM_READ(cntsteer_adx_r) - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("COINS") - AM_RANGE(0x3000, 0x3004) AM_WRITE(cntsteer_vregs_w) - AM_RANGE(0x3005, 0x3005) AM_WRITE(gekitsui_sub_irq_ack) - AM_RANGE(0x3006, 0x3006) AM_WRITE(cntsteer_main_irq_w) - AM_RANGE(0x3007, 0x3007) AM_WRITE(cntsteer_sound_w) - AM_RANGE(0x3007, 0x3007) AM_READNOP //m6809 bug. - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cntsteer_state::gekitsui_cpu1_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x11ff).ram().share("spriteram"); + map(0x1200, 0x1fff).ram(); + map(0x2000, 0x23ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_vram_w)).share("videoram"); + map(0x2400, 0x27ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_attr_w)).share("colorram"); + map(0x3000, 0x3003).w(this, FUNC(cntsteer_state::zerotrgt_ctrl_w)); + map(0x8000, 0xffff).rom(); +} + +void cntsteer_state::gekitsui_cpu2_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x1fff).ram().w(this, FUNC(cntsteer_state::cntsteer_background_w)).share("videoram2"); + map(0x3000, 0x3000).portr("DSW0"); + map(0x3001, 0x3001).portr("P2"); + map(0x3002, 0x3002).portr("P1"); + map(0x3003, 0x3003).portr("COINS"); + map(0x3000, 0x3004).w(this, FUNC(cntsteer_state::zerotrgt_vregs_w)); + map(0x3005, 0x3005).w(this, FUNC(cntsteer_state::gekitsui_sub_irq_ack)); + map(0x3007, 0x3007).w(this, FUNC(cntsteer_state::cntsteer_sound_w)); + map(0x4000, 0xffff).rom(); +} + +void cntsteer_state::cntsteer_cpu1_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x11ff).ram().share("spriteram"); + map(0x2000, 0x23ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_vram_w)).share("videoram"); + map(0x2400, 0x27ff).ram().w(this, FUNC(cntsteer_state::cntsteer_foreground_attr_w)).share("colorram"); + map(0x3000, 0x3000).w(this, FUNC(cntsteer_state::cntsteer_sub_nmi_w)); + map(0x3001, 0x3001).w(this, FUNC(cntsteer_state::cntsteer_sub_irq_w)); + map(0x8000, 0xffff).rom(); +} + +void cntsteer_state::cntsteer_cpu2_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x1fff).ram().w(this, FUNC(cntsteer_state::cntsteer_background_w)).share("videoram2"); + map(0x2000, 0x2fff).rw(this, FUNC(cntsteer_state::cntsteer_background_mirror_r), FUNC(cntsteer_state::cntsteer_background_w)); + map(0x3000, 0x3000).portr("DSW0"); + map(0x3001, 0x3001).r(this, FUNC(cntsteer_state::cntsteer_adx_r)); + map(0x3002, 0x3002).portr("P1"); + map(0x3003, 0x3003).portr("COINS"); + map(0x3000, 0x3004).w(this, FUNC(cntsteer_state::cntsteer_vregs_w)); + map(0x3005, 0x3005).w(this, FUNC(cntsteer_state::gekitsui_sub_irq_ack)); + map(0x3006, 0x3006).w(this, FUNC(cntsteer_state::cntsteer_main_irq_w)); + map(0x3007, 0x3007).w(this, FUNC(cntsteer_state::cntsteer_sound_w)); + map(0x3007, 0x3007).nopr(); //m6809 bug. + map(0x4000, 0xffff).rom(); +} /***************************************************************************/ @@ -652,17 +656,18 @@ INTERRUPT_GEN_MEMBER(cntsteer_state::sound_interrupt) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(cntsteer_state::sound_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM +void cntsteer_state::sound_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // AM_RANGE(0x1000, 0x1000) AM_WRITE(nmiack_w) - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd000) AM_WRITE(nmimask_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x2000, 0x2000).w("ay1", FUNC(ay8910_device::data_w)); + map(0x4000, 0x4000).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::data_w)); + map(0x8000, 0x8000).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd000).w(this, FUNC(cntsteer_state::nmimask_w)); + map(0xe000, 0xffff).rom(); +} /***************************************************************************/ diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 6a224f9b8e6..16d5b99c469 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -1744,16 +1744,17 @@ WRITE32_MEMBER(cobra_state::main_cpu_dc_store) } } -ADDRESS_MAP_START(cobra_state::cobra_main_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM - AM_RANGE(0x80000cf8, 0x80000cff) AM_READWRITE(main_mpc106_r, main_mpc106_w) - AM_RANGE(0xc0000000, 0xc03fffff) AM_RAM AM_SHARE("gfx_main_ram_0") // GFX board main ram, bank 0 - AM_RANGE(0xc7c00000, 0xc7ffffff) AM_RAM AM_SHARE("gfx_main_ram_1") // GFX board main ram, bank 1 - AM_RANGE(0xfff00000, 0xfff7ffff) AM_ROM AM_REGION("user1", 0) /* Boot ROM */ - AM_RANGE(0xfff80000, 0xfffbffff) AM_READWRITE(main_comram_r, main_comram_w) - AM_RANGE(0xffff0000, 0xffff0007) AM_READWRITE(main_fifo_r, main_fifo_w) -ADDRESS_MAP_END +void cobra_state::cobra_main_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("main_ram"); + map(0x07c00000, 0x07ffffff).ram(); + map(0x80000cf8, 0x80000cff).rw(this, FUNC(cobra_state::main_mpc106_r), FUNC(cobra_state::main_mpc106_w)); + map(0xc0000000, 0xc03fffff).ram().share("gfx_main_ram_0"); // GFX board main ram, bank 0 + map(0xc7c00000, 0xc7ffffff).ram().share("gfx_main_ram_1"); // GFX board main ram, bank 1 + map(0xfff00000, 0xfff7ffff).rom().region("user1", 0); /* Boot ROM */ + map(0xfff80000, 0xfffbffff).rw(this, FUNC(cobra_state::main_comram_r), FUNC(cobra_state::main_comram_w)); + map(0xffff0000, 0xffff0007).rw(this, FUNC(cobra_state::main_fifo_r), FUNC(cobra_state::main_fifo_w)); +} /*****************************************************************************/ @@ -2084,28 +2085,29 @@ WRITE8_MEMBER(cobra_state::sub_jvs_w) } } -ADDRESS_MAP_START(cobra_state::cobra_sub_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("sub_ram") // Main RAM - AM_RANGE(0x70000000, 0x7003ffff) AM_READWRITE(sub_comram_r, sub_comram_w) // Double buffered shared RAM between Main and Sub +void cobra_state::cobra_sub_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("sub_ram"); // Main RAM + map(0x70000000, 0x7003ffff).rw(this, FUNC(cobra_state::sub_comram_r), FUNC(cobra_state::sub_comram_w)); // Double buffered shared RAM between Main and Sub // AM_RANGE(0x78000000, 0x780000ff) AM_NOP // SCSI controller (unused) - AM_RANGE(0x78040000, 0x7804ffff) AM_DEVREADWRITE16("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w, 0xffffffff) - AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE16(sub_ata0_r, sub_ata0_w, 0xffffffff) - AM_RANGE(0x780c0010, 0x780c001f) AM_READWRITE16(sub_ata1_r, sub_ata1_w, 0xffffffff) - AM_RANGE(0x78200000, 0x782000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w) // PSAC registers - AM_RANGE(0x78210000, 0x78217fff) AM_RAM_WRITE(sub_psac_palette_w) AM_SHARE("paletteram") // PSAC palette RAM - AM_RANGE(0x78220000, 0x7823ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w) // PSAC tile RAM - AM_RANGE(0x78240000, 0x7827ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w) // PSAC character RAM - AM_RANGE(0x78280000, 0x7828000f) AM_NOP // ??? - AM_RANGE(0x78300000, 0x7830000f) AM_READWRITE(sub_psac2_r, sub_psac2_w) // PSAC - AM_RANGE(0x7e000000, 0x7e000003) AM_READWRITE(sub_unk7e_r, sub_debug_w) - AM_RANGE(0x7e040000, 0x7e041fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */ - AM_RANGE(0x7e180000, 0x7e180003) AM_READWRITE(sub_unk1_r, sub_unk1_w) // TMS57002? - AM_RANGE(0x7e200000, 0x7e200003) AM_READWRITE(sub_config_r, sub_config_w) - AM_RANGE(0x7e280000, 0x7e28ffff) AM_NOP // LANC - AM_RANGE(0x7e300000, 0x7e30ffff) AM_NOP // LANC - AM_RANGE(0x7e380000, 0x7e380003) AM_READWRITE(sub_mainbd_r, sub_mainbd_w) - AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user2", 0) /* Boot ROM */ -ADDRESS_MAP_END + map(0x78040000, 0x7804ffff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); + map(0x78080000, 0x7808000f).rw(this, FUNC(cobra_state::sub_ata0_r), FUNC(cobra_state::sub_ata0_w)); + map(0x780c0010, 0x780c001f).rw(this, FUNC(cobra_state::sub_ata1_r), FUNC(cobra_state::sub_ata1_w)); + map(0x78200000, 0x782000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w)); // PSAC registers + map(0x78210000, 0x78217fff).ram().w(this, FUNC(cobra_state::sub_psac_palette_w)).share("paletteram"); // PSAC palette RAM + map(0x78220000, 0x7823ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w)); // PSAC tile RAM + map(0x78240000, 0x7827ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w)); // PSAC character RAM + map(0x78280000, 0x7828000f).noprw(); // ??? + map(0x78300000, 0x7830000f).rw(this, FUNC(cobra_state::sub_psac2_r), FUNC(cobra_state::sub_psac2_w)); // PSAC + map(0x7e000000, 0x7e000003).rw(this, FUNC(cobra_state::sub_unk7e_r), FUNC(cobra_state::sub_debug_w)); + map(0x7e040000, 0x7e041fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */ + map(0x7e180000, 0x7e180003).rw(this, FUNC(cobra_state::sub_unk1_r), FUNC(cobra_state::sub_unk1_w)); // TMS57002? + map(0x7e200000, 0x7e200003).rw(this, FUNC(cobra_state::sub_config_r), FUNC(cobra_state::sub_config_w)); + map(0x7e280000, 0x7e28ffff).noprw(); // LANC + map(0x7e300000, 0x7e30ffff).noprw(); // LANC + map(0x7e380000, 0x7e380003).rw(this, FUNC(cobra_state::sub_mainbd_r), FUNC(cobra_state::sub_mainbd_w)); + map(0x7ff80000, 0x7fffffff).rom().region("user2", 0); /* Boot ROM */ +} /*****************************************************************************/ @@ -3190,19 +3192,20 @@ WRITE64_MEMBER(cobra_state::gfx_debug_state_w) } } -ADDRESS_MAP_START(cobra_state::cobra_gfx_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("gfx_main_ram_0") - AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM AM_SHARE("gfx_main_ram_1") - AM_RANGE(0x10000000, 0x100007ff) AM_WRITE(gfx_fifo0_w) - AM_RANGE(0x18000000, 0x180007ff) AM_WRITE(gfx_fifo1_w) - AM_RANGE(0x1e000000, 0x1e0007ff) AM_WRITE(gfx_fifo2_w) - AM_RANGE(0x20000000, 0x20000007) AM_WRITE(gfx_buf_w) // this might really map to 0x1e000000, depending on the pagetable - AM_RANGE(0x7f000000, 0x7f00ffff) AM_RAM AM_SHARE("pagetable") - AM_RANGE(0xfff00000, 0xfff7ffff) AM_ROM AM_REGION("user3", 0) /* Boot ROM */ - AM_RANGE(0xfff80000, 0xfff80007) AM_WRITE(gfx_debug_state_w) - AM_RANGE(0xffff0000, 0xffff0007) AM_READWRITE(gfx_unk1_r, gfx_unk1_w) - AM_RANGE(0xffff0010, 0xffff001f) AM_READ(gfx_fifo_r) -ADDRESS_MAP_END +void cobra_state::cobra_gfx_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("gfx_main_ram_0"); + map(0x07c00000, 0x07ffffff).ram().share("gfx_main_ram_1"); + map(0x10000000, 0x100007ff).w(this, FUNC(cobra_state::gfx_fifo0_w)); + map(0x18000000, 0x180007ff).w(this, FUNC(cobra_state::gfx_fifo1_w)); + map(0x1e000000, 0x1e0007ff).w(this, FUNC(cobra_state::gfx_fifo2_w)); + map(0x20000000, 0x20000007).w(this, FUNC(cobra_state::gfx_buf_w)); // this might really map to 0x1e000000, depending on the pagetable + map(0x7f000000, 0x7f00ffff).ram().share("pagetable"); + map(0xfff00000, 0xfff7ffff).rom().region("user3", 0); /* Boot ROM */ + map(0xfff80000, 0xfff80007).w(this, FUNC(cobra_state::gfx_debug_state_w)); + map(0xffff0000, 0xffff0007).rw(this, FUNC(cobra_state::gfx_unk1_r), FUNC(cobra_state::gfx_unk1_w)); + map(0xffff0010, 0xffff001f).r(this, FUNC(cobra_state::gfx_fifo_r)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp index 78574399992..0092206c6fc 100644 --- a/src/mame/drivers/coco12.cpp +++ b/src/mame/drivers/coco12.cpp @@ -399,9 +399,10 @@ MACHINE_CONFIG_END // MACHINE_CONFIG ( coco_floating ) //------------------------------------------------- -ADDRESS_MAP_START(coco_state::coco_floating_map) - AM_RANGE(0x0000, 0xFFFF) AM_READ(floating_bus_read) -ADDRESS_MAP_END +void coco_state::coco_floating_map(address_map &map) +{ + map(0x0000, 0xFFFF).r(this, FUNC(coco_state::floating_bus_read)); +} MACHINE_CONFIG_START(coco_state::coco_floating) diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp index 24e2d0292da..a1bd10a3cf1 100644 --- a/src/mame/drivers/coco3.cpp +++ b/src/mame/drivers/coco3.cpp @@ -30,29 +30,30 @@ // ADDRESS_MAP( coco3_mem ) //------------------------------------------------- -ADDRESS_MAP_START(coco3_state::coco3_mem) - AM_RANGE(0x0000, 0x1FFF) AM_READ_BANK("rbank0") AM_WRITE_BANK("wbank0") - AM_RANGE(0x2000, 0x3FFF) AM_READ_BANK("rbank1") AM_WRITE_BANK("wbank1") - AM_RANGE(0x4000, 0x5FFF) AM_READ_BANK("rbank2") AM_WRITE_BANK("wbank2") - AM_RANGE(0x6000, 0x7FFF) AM_READ_BANK("rbank3") AM_WRITE_BANK("wbank3") - AM_RANGE(0x8000, 0x9FFF) AM_READ_BANK("rbank4") AM_WRITE_BANK("wbank4") - AM_RANGE(0xA000, 0xBFFF) AM_READ_BANK("rbank5") AM_WRITE_BANK("wbank5") - AM_RANGE(0xC000, 0xDFFF) AM_READ_BANK("rbank6") AM_WRITE_BANK("wbank6") - AM_RANGE(0xE000, 0xFDFF) AM_READ_BANK("rbank7") AM_WRITE_BANK("wbank7") - AM_RANGE(0xFE00, 0xFEFF) AM_READ_BANK("rbank8") AM_WRITE_BANK("wbank8") - AM_RANGE(0xFF00, 0xFF1F) AM_READWRITE(ff00_read, ff00_write) - AM_RANGE(0xFF20, 0xFF3F) AM_READWRITE(ff20_read, ff20_write) - AM_RANGE(0xFF40, 0xFF5F) AM_READWRITE(ff40_read, ff40_write) - AM_RANGE(0xFF60, 0xFF8F) AM_READWRITE(ff60_read, ff60_write) - AM_RANGE(0xFF90, 0xFFDF) AM_DEVREADWRITE(GIME_TAG, gime_device, read, write) +void coco3_state::coco3_mem(address_map &map) +{ + map(0x0000, 0x1FFF).bankr("rbank0").bankw("wbank0"); + map(0x2000, 0x3FFF).bankr("rbank1").bankw("wbank1"); + map(0x4000, 0x5FFF).bankr("rbank2").bankw("wbank2"); + map(0x6000, 0x7FFF).bankr("rbank3").bankw("wbank3"); + map(0x8000, 0x9FFF).bankr("rbank4").bankw("wbank4"); + map(0xA000, 0xBFFF).bankr("rbank5").bankw("wbank5"); + map(0xC000, 0xDFFF).bankr("rbank6").bankw("wbank6"); + map(0xE000, 0xFDFF).bankr("rbank7").bankw("wbank7"); + map(0xFE00, 0xFEFF).bankr("rbank8").bankw("wbank8"); + map(0xFF00, 0xFF1F).rw(this, FUNC(coco3_state::ff00_read), FUNC(coco3_state::ff00_write)); + map(0xFF20, 0xFF3F).rw(this, FUNC(coco3_state::ff20_read), FUNC(coco3_state::ff20_write)); + map(0xFF40, 0xFF5F).rw(this, FUNC(coco3_state::ff40_read), FUNC(coco3_state::ff40_write)); + map(0xFF60, 0xFF8F).rw(this, FUNC(coco3_state::ff60_read), FUNC(coco3_state::ff60_write)); + map(0xFF90, 0xFFDF).rw(m_gime, FUNC(gime_device::read), FUNC(gime_device::write)); // While Tepolt and other sources say that the interrupt vectors are mapped to // the same memory accessed at $BFFx, William Astle offered evidence that this // memory on a CoCo 3 is not the same. // // http://lost.l-w.ca/0x05/coco3-and-interrupt-vectors/ - AM_RANGE(0xFFE0, 0xFFFF) AM_ROM AM_REGION(MAINCPU_TAG, 0x7FE0) -ADDRESS_MAP_END + map(0xFFE0, 0xFFFF).rom().region(MAINCPU_TAG, 0x7FE0); +} diff --git a/src/mame/drivers/cocoloco.cpp b/src/mame/drivers/cocoloco.cpp index 6d387910ed7..5a028791fa7 100644 --- a/src/mame/drivers/cocoloco.cpp +++ b/src/mame/drivers/cocoloco.cpp @@ -399,18 +399,19 @@ WRITE8_MEMBER( cocoloco_state::coincounter_w ) * Memory Map Information * ***********************************/ -ADDRESS_MAP_START(cocoloco_state::cocoloco_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(vram_r, vram_w) // 256 x 256 x 1 - AM_RANGE(0x6001, 0x6001) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0x6003, 0x6003) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0x8003, 0x8003) AM_WRITE(vbank_w) - AM_RANGE(0x8005, 0x8005) AM_WRITE(coincounter_w) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa005, 0xa005) AM_WRITE(vram_clear_w) - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cocoloco_state::cocoloco_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).rw(this, FUNC(cocoloco_state::vram_r), FUNC(cocoloco_state::vram_w)); // 256 x 256 x 1 + map(0x6001, 0x6001).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x6002, 0x6002).w("ay8910", FUNC(ay8910_device::data_w)); + map(0x6003, 0x6003).w("ay8910", FUNC(ay8910_device::address_w)); + map(0x8003, 0x8003).w(this, FUNC(cocoloco_state::vbank_w)); + map(0x8005, 0x8005).w(this, FUNC(cocoloco_state::coincounter_w)); + map(0xa000, 0xa000).portr("IN0"); + map(0xa005, 0xa005).w(this, FUNC(cocoloco_state::vram_clear_w)); + map(0xd000, 0xffff).rom(); +} /* 1800-3fff: RW --> code inits reading and writing the whole range. diff --git a/src/mame/drivers/codata.cpp b/src/mame/drivers/codata.cpp index d85cb857376..a6af58b8ebf 100644 --- a/src/mame/drivers/codata.cpp +++ b/src/mame/drivers/codata.cpp @@ -34,18 +34,19 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(codata_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x200000, 0x203fff) AM_ROM AM_REGION("user1", 0); - AM_RANGE(0x400000, 0x403fff) AM_ROM AM_REGION("user1", 0x4000); - AM_RANGE(0x600000, 0x600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("uart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00) - AM_RANGE(0x800000, 0x800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("timer", am9513_device, read16, write16) - AM_RANGE(0xe00000, 0xe00001) AM_MIRROR(0x1ffffe) AM_READ_PORT("INPUT") +void codata_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).ram().share("rambase"); + map(0x200000, 0x203fff).rom().region("user1", 0); + map(0x400000, 0x403fff).rom().region("user1", 0x4000); + map(0x600000, 0x600007).mirror(0x1ffff8).rw("uart", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0xff00); + map(0x800000, 0x800003).mirror(0x1ffffc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); + map(0xe00000, 0xe00001).mirror(0x1ffffe).portr("INPUT"); //AM_RANGE(0xa00000, 0xbfffff) page map (rw) //AM_RANGE(0xc00000, 0xdfffff) segment map (rw), context register (r) //AM_RANGE(0xe00000, 0xffffff) context register (w), 16-bit parallel input port (r) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( codata ) diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp index d60735f6552..5530f107b39 100644 --- a/src/mame/drivers/coinmstr.cpp +++ b/src/mame/drivers/coinmstr.cpp @@ -339,59 +339,64 @@ READ8_MEMBER(coinmstr_state::ff_r) // Common memory map -ADDRESS_MAP_START(coinmstr_state::coinmstr_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_SHARE("attr_ram1") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_SHARE("attr_ram2") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_SHARE("attr_ram3") -ADDRESS_MAP_END +void coinmstr_state::coinmstr_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_bg_w)).share("videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr1_w)).share("attr_ram1"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr2_w)).share("attr_ram2"); + map(0xf800, 0xffff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr3_w)).share("attr_ram3"); +} /* 2x 6462 hardware C000-DFFF & E000-FFFF */ -ADDRESS_MAP_START(coinmstr_state::jpcoin_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM /* 2x 6462 hardware */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_SHARE("attr_ram1") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_SHARE("attr_ram2") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_SHARE("attr_ram3") -ADDRESS_MAP_END +void coinmstr_state::jpcoin_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); /* 2x 6462 hardware */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_bg_w)).share("videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr1_w)).share("attr_ram1"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr2_w)).share("attr_ram2"); + map(0xf800, 0xffff).ram().w(this, FUNC(coinmstr_state::quizmstr_attr3_w)).share("attr_ram3"); +} // Different I/O mappping for every game -ADDRESS_MAP_START(coinmstr_state::quizmstr_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(question_r) - AM_RANGE(0x00, 0x03) AM_WRITE(question_w) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x41, 0x41) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x50, 0x53) AM_READNOP - AM_RANGE(0x50, 0x53) AM_WRITENOP - AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0x70, 0x70) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x71, 0x71) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xc0, 0xc3) AM_READNOP - AM_RANGE(0xc0, 0xc3) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(coinmstr_state::trailblz_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(question_r) - AM_RANGE(0x00, 0x03) AM_WRITE(question_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x48, 0x49) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x49, 0x49) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //? - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0xc1, 0xc3) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(coinmstr_state::supnudg2_io_map) +void coinmstr_state::quizmstr_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(coinmstr_state::question_r)); + map(0x00, 0x03).w(this, FUNC(coinmstr_state::question_w)); + map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x41, 0x41).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x48, 0x4b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x50, 0x53).nopr(); + map(0x50, 0x53).nopw(); + map(0x58, 0x5b).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x70, 0x70).w("crtc", FUNC(mc6845_device::address_w)); + map(0x71, 0x71).w("crtc", FUNC(mc6845_device::register_w)); + map(0xc0, 0xc3).nopr(); + map(0xc0, 0xc3).nopw(); +} + +void coinmstr_state::trailblz_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(coinmstr_state::question_r)); + map(0x00, 0x03).w(this, FUNC(coinmstr_state::question_w)); + map(0x40, 0x40).w("crtc", FUNC(mc6845_device::address_w)); + map(0x41, 0x41).w("crtc", FUNC(mc6845_device::register_w)); + map(0x48, 0x49).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x49, 0x49).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x50, 0x53).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //? + map(0x60, 0x63).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x70, 0x73).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc1, 0xc3).nopw(); +} + +void coinmstr_state::supnudg2_io_map(address_map &map) +{ /* out 40 in 40 @@ -420,22 +425,23 @@ out C3 E0-E1 CRTC */ - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(question_r) - AM_RANGE(0x00, 0x03) AM_WRITE(question_w) - AM_RANGE(0x48, 0x48) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x49, 0x49) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0x78, 0x79) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x79, 0x79) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xc0, 0xc1) AM_READNOP - AM_RANGE(0xc0, 0xc3) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(coinmstr_state::pokeroul_io_map) + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(coinmstr_state::question_r)); + map(0x00, 0x03).w(this, FUNC(coinmstr_state::question_w)); + map(0x48, 0x48).w("crtc", FUNC(mc6845_device::address_w)); + map(0x49, 0x49).w("crtc", FUNC(mc6845_device::register_w)); + map(0x40, 0x43).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x50, 0x53).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x68, 0x6b).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x78, 0x79).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x79, 0x79).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xc0, 0xc1).nopr(); + map(0xc0, 0xc3).nopw(); +} + +void coinmstr_state::pokeroul_io_map(address_map &map) +{ /* out 68 in 69 @@ -456,18 +462,19 @@ out 7A E0-E1 CRTC */ - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x48, 0x49) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x49, 0x49) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia0", pia6821_device, read, write) /* confirmed */ - AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) /* confirmed */ - AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) /* confirmed */ - AM_RANGE(0xc0, 0xc1) AM_READ(ff_r) /* needed to boot */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(coinmstr_state::jpcoin_io_map) + map.global_mask(0xff); + map(0x40, 0x40).w("crtc", FUNC(mc6845_device::address_w)); + map(0x41, 0x41).w("crtc", FUNC(mc6845_device::register_w)); + map(0x48, 0x49).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x49, 0x49).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x58, 0x5b).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */ + map(0x68, 0x6b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */ + map(0x78, 0x7b).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */ + map(0xc0, 0xc1).r(this, FUNC(coinmstr_state::ff_r)); /* needed to boot */ +} + +void coinmstr_state::jpcoin_io_map(address_map &map) +{ /* out C0 in C1 @@ -484,17 +491,17 @@ out DA E0-E1 CRTC */ - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("crtc", mc6845_device, address_w) /* confirmed */ - AM_RANGE(0xe1, 0xe1) AM_DEVWRITE("crtc", mc6845_device, register_w) /* confirmed */ - AM_RANGE(0xc0, 0xc1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xc1, 0xc1) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("pia0", pia6821_device, read, write) /* confirmed */ - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("pia2", pia6821_device, read, write) /* confirmed */ + map.global_mask(0xff); + map(0xe0, 0xe0).w("crtc", FUNC(mc6845_device::address_w)); /* confirmed */ + map(0xe1, 0xe1).w("crtc", FUNC(mc6845_device::register_w)); /* confirmed */ + map(0xc0, 0xc1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xc1, 0xc1).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xc8, 0xcb).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */ + map(0xd0, 0xd3).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xd8, 0xdb).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* confirmed */ // AM_RANGE(0xc0, 0xc1) AM_READ(ff_r) /* needed to boot */ - AM_RANGE(0xc4, 0xc4) AM_READ(ff_r) /* needed to boot */ -ADDRESS_MAP_END + map(0xc4, 0xc4).r(this, FUNC(coinmstr_state::ff_r)); /* needed to boot */ +} static INPUT_PORTS_START( quizmstr ) diff --git a/src/mame/drivers/coinmvga.cpp b/src/mame/drivers/coinmvga.cpp index 01919609061..ebc8b27f1dd 100644 --- a/src/mame/drivers/coinmvga.cpp +++ b/src/mame/drivers/coinmvga.cpp @@ -315,34 +315,36 @@ READ16_MEMBER(coinmvga_state::test_r) * Memory Map Information * *************************/ -ADDRESS_MAP_START(coinmvga_state::coinmvga_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0) //maybe not +void coinmvga_state::coinmvga_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x0fffff).rom().region("maincpu", 0); //maybe not // AM_RANGE(0x0a0000, 0x0fffff) AM_RAM // AM_RANGE(0x100000, 0x1fffff) AM_RAM //colorama - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("vram") + map(0x210000, 0x21ffff).ram().share("vram"); // AM_RANGE(0x40746e, 0x40746f) AM_READ(test_r) AM_WRITENOP //touch screen related, colorama // AM_RANGE(0x403afa, 0x403afb) AM_READ(test_r) AM_WRITENOP //touch screen related, cmrltv75 - AM_RANGE(0x400000, 0x40ffff) AM_RAM + map(0x400000, 0x40ffff).ram(); - AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00) - AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x600002, 0x600003) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00) - AM_RANGE(0x600004, 0x600005) AM_DEVWRITE8("ramdac2", ramdac_device, index_w, 0xff00) - AM_RANGE(0x600004, 0x600005) AM_DEVWRITE8("ramdac2", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x600006, 0x600007) AM_DEVWRITE8("ramdac2", ramdac_device, mask_w, 0xff00) - AM_RANGE(0x600008, 0x600009) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff) - AM_RANGE(0x610000, 0x61000f) AM_RAM //touch screen i/o + map(0x600000, 0x600000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x600001, 0x600001).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x600002, 0x600002).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x600004, 0x600004).w("ramdac2", FUNC(ramdac_device::index_w)); + map(0x600005, 0x600005).w("ramdac2", FUNC(ramdac_device::pal_w)); + map(0x600006, 0x600006).w("ramdac2", FUNC(ramdac_device::mask_w)); + map(0x600008, 0x600009).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); + map(0x610000, 0x61000f).ram(); //touch screen i/o - AM_RANGE(0x700000, 0x7fffff) AM_ROM AM_REGION("maincpu", 0) // ? + map(0x700000, 0x7fffff).rom().region("maincpu", 0); // ? - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") //"arrow" r? - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") + map(0x800000, 0x800001).portr("DSW1"); //"arrow" r? + map(0x800002, 0x800003).portr("DSW2"); //0x800008 "arrow" w? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(coinmvga_state::coinmvga_io_map) +void coinmvga_state::coinmvga_io_map(address_map &map) +{ /* Digital I/O ports (ports 4-B are valid on 16-bit H8/3xx) */ // AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) // AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) @@ -358,7 +360,7 @@ ADDRESS_MAP_START(coinmvga_state::coinmvga_io_map) // AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) // AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) // AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) -ADDRESS_MAP_END +} /* unknown writes (cmrltv75): @@ -622,13 +624,15 @@ INTERRUPT_GEN_MEMBER(coinmvga_state::vblank_irq) * Machine Drivers * *************************/ -ADDRESS_MAP_START(coinmvga_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void coinmvga_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} -ADDRESS_MAP_START(coinmvga_state::ramdac2_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac2",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void coinmvga_state::ramdac2_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac2", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(coinmvga_state::coinmvga) diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp index 87a208bc139..ebe96d7da9e 100644 --- a/src/mame/drivers/coleco.cpp +++ b/src/mame/drivers/coleco.cpp @@ -94,28 +94,31 @@ WRITE8_MEMBER( coleco_state::paddle_on_w ) /* Memory Maps */ -ADDRESS_MAP_START(coleco_state::coleco_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) AM_SHARE("ram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(coleco_state::coleco_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_WRITE(paddle_off_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_WRITE(paddle_on_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x1f) AM_DEVWRITE("sn76489a", sn76489a_device, write) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x1d) AM_READ(paddle_1_r) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x1d) AM_READ(paddle_2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(coleco_state::czz50_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) AM_SHARE("ram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void coleco_state::coleco_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x6000, 0x63ff).ram().mirror(0x1c00).share("ram"); + map(0x8000, 0xffff).rom(); +} + +void coleco_state::coleco_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x80).mirror(0x1f).w(this, FUNC(coleco_state::paddle_off_w)); + map(0xa0, 0xa0).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0xa1, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0xc0, 0xc0).mirror(0x1f).w(this, FUNC(coleco_state::paddle_on_w)); + map(0xe0, 0xe0).mirror(0x1f).w("sn76489a", FUNC(sn76489a_device::write)); + map(0xe0, 0xe0).mirror(0x1d).r(this, FUNC(coleco_state::paddle_1_r)); + map(0xe2, 0xe2).mirror(0x1d).r(this, FUNC(coleco_state::paddle_2_r)); +} + +void coleco_state::czz50_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x63ff).ram().mirror(0x1c00).share("ram"); + map(0x8000, 0xffff).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp index 5cdfc068b0b..64df611e046 100644 --- a/src/mame/drivers/combatsc.cpp +++ b/src/mame/drivers/combatsc.cpp @@ -346,56 +346,59 @@ READ8_MEMBER(combatsc_state::unk_r) * *************************************/ -ADDRESS_MAP_START(combatsc_state::combatsc_map) - AM_RANGE(0x0000, 0x0007) AM_WRITE(combatsc_pf_control_w) - AM_RANGE(0x001f, 0x001f) AM_READ(unk_r) - AM_RANGE(0x0020, 0x005f) AM_READWRITE(combatsc_scrollram_r, combatsc_scrollram_w) +void combatsc_state::combatsc_map(address_map &map) +{ + map(0x0000, 0x0007).w(this, FUNC(combatsc_state::combatsc_pf_control_w)); + map(0x001f, 0x001f).r(this, FUNC(combatsc_state::unk_r)); + map(0x0020, 0x005f).rw(this, FUNC(combatsc_state::combatsc_scrollram_r), FUNC(combatsc_state::combatsc_scrollram_w)); // AM_RANGE(0x0060, 0x00ff) AM_WRITEONLY /* RAM */ - AM_RANGE(0x0200, 0x0201) AM_READWRITE(protection_r, protection_w) - AM_RANGE(0x0206, 0x0206) AM_WRITE(protection_clock_w) - - AM_RANGE(0x0400, 0x0400) AM_READ_PORT("IN0") - AM_RANGE(0x0401, 0x0401) AM_READ_PORT("DSW3") /* DSW #3 */ - AM_RANGE(0x0402, 0x0402) AM_READ_PORT("DSW1") /* DSW #1 */ - AM_RANGE(0x0403, 0x0403) AM_READ_PORT("DSW2") /* DSW #2 */ - AM_RANGE(0x0404, 0x0407) AM_READ(trackball_r) /* 1P & 2P controls / trackball */ - AM_RANGE(0x0408, 0x0408) AM_WRITE(combatsc_coin_counter_w) /* coin counters */ - AM_RANGE(0x040c, 0x040c) AM_WRITE(combatsc_vreg_w) - AM_RANGE(0x0410, 0x0410) AM_READNOP AM_WRITE(combatsc_bankselect_w) // read is clr a (discarded) - AM_RANGE(0x0414, 0x0414) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x0418, 0x0418) AM_WRITE(combatsc_sh_irqtrigger_w) - AM_RANGE(0x041c, 0x041c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset? */ - - AM_RANGE(0x0600, 0x06ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0x0800, 0x1fff) AM_RAM /* RAM */ - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(combatsc_video_r, combatsc_video_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM area */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(combatsc_state::combatscb_map) - AM_RANGE(0x0000, 0x04ff) AM_RAM - AM_RANGE(0x0500, 0x0500) AM_WRITE(combatscb_bankselect_w) - AM_RANGE(0x0600, 0x06ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0x0800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(combatsc_video_r, combatsc_video_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM/RAM area */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(combatsc_state::combatsc_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ - - AM_RANGE(0x9000, 0x9000) AM_WRITE(combatsc_play_w) /* upd7759 play voice */ - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("upd", upd7759_device, port_w) /* upd7759 voice select */ - AM_RANGE(0xb000, 0xb000) AM_READ(combatsc_busy_r) /* upd7759 busy? */ - AM_RANGE(0xc000, 0xc000) AM_WRITE(combatsc_voice_reset_w) /* upd7759 reset? */ - - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* soundlatch read? */ - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM 2203 intercepted */ -ADDRESS_MAP_END + map(0x0200, 0x0201).rw(this, FUNC(combatsc_state::protection_r), FUNC(combatsc_state::protection_w)); + map(0x0206, 0x0206).w(this, FUNC(combatsc_state::protection_clock_w)); + + map(0x0400, 0x0400).portr("IN0"); + map(0x0401, 0x0401).portr("DSW3"); /* DSW #3 */ + map(0x0402, 0x0402).portr("DSW1"); /* DSW #1 */ + map(0x0403, 0x0403).portr("DSW2"); /* DSW #2 */ + map(0x0404, 0x0407).r(this, FUNC(combatsc_state::trackball_r)); /* 1P & 2P controls / trackball */ + map(0x0408, 0x0408).w(this, FUNC(combatsc_state::combatsc_coin_counter_w)); /* coin counters */ + map(0x040c, 0x040c).w(this, FUNC(combatsc_state::combatsc_vreg_w)); + map(0x0410, 0x0410).nopr().w(this, FUNC(combatsc_state::combatsc_bankselect_w)); // read is clr a (discarded) + map(0x0414, 0x0414).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0418, 0x0418).w(this, FUNC(combatsc_state::combatsc_sh_irqtrigger_w)); + map(0x041c, 0x041c).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset? */ + + map(0x0600, 0x06ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0x0800, 0x1fff).ram(); /* RAM */ + map(0x2000, 0x3fff).rw(this, FUNC(combatsc_state::combatsc_video_r), FUNC(combatsc_state::combatsc_video_w)); + map(0x4000, 0x7fff).bankr("bank1"); /* banked ROM area */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void combatsc_state::combatscb_map(address_map &map) +{ + map(0x0000, 0x04ff).ram(); + map(0x0500, 0x0500).w(this, FUNC(combatsc_state::combatscb_bankselect_w)); + map(0x0600, 0x06ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0x0800, 0x1fff).ram(); + map(0x2000, 0x3fff).rw(this, FUNC(combatsc_state::combatsc_video_r), FUNC(combatsc_state::combatsc_video_w)); + map(0x4000, 0x7fff).bankr("bank1"); /* banked ROM/RAM area */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void combatsc_state::combatsc_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM */ + map(0x8000, 0x87ff).ram(); /* RAM */ + + map(0x9000, 0x9000).w(this, FUNC(combatsc_state::combatsc_play_w)); /* upd7759 play voice */ + map(0xa000, 0xa000).w(m_upd7759, FUNC(upd7759_device::port_w)); /* upd7759 voice select */ + map(0xb000, 0xb000).r(this, FUNC(combatsc_state::combatsc_busy_r)); /* upd7759 busy? */ + map(0xc000, 0xc000).w(this, FUNC(combatsc_state::combatsc_voice_reset_w)); /* upd7759 reset? */ + + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* soundlatch read? */ + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM 2203 intercepted */ +} WRITE8_MEMBER(combatsc_state::combatscb_msm_w) { @@ -410,16 +413,17 @@ WRITE8_MEMBER(combatsc_state::combatscb_sound_irq_ack) m_audiocpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(combatsc_state::combatscb_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM 2203 */ - AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ymsnd", ym2203_device, read) /* ??? */ - AM_RANGE(0x9800, 0x9800) AM_WRITE(combatscb_msm_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* soundlatch read? */ - AM_RANGE(0xa800, 0xa800) AM_WRITE(combatscb_sound_irq_ack) - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bl_abank") -ADDRESS_MAP_END +void combatsc_state::combatscb_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM */ + map(0x8000, 0x87ff).ram(); /* RAM */ + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM 2203 */ + map(0x9008, 0x9009).r("ymsnd", FUNC(ym2203_device::read)); /* ??? */ + map(0x9800, 0x9800).w(this, FUNC(combatsc_state::combatscb_msm_w)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* soundlatch read? */ + map(0xa800, 0xa800).w(this, FUNC(combatsc_state::combatscb_sound_irq_ack)); + map(0xc000, 0xffff).bankr("bl_abank"); +} /************************************* * diff --git a/src/mame/drivers/comebaby.cpp b/src/mame/drivers/comebaby.cpp index 7eba6e2c9b8..41a6eac692c 100644 --- a/src/mame/drivers/comebaby.cpp +++ b/src/mame/drivers/comebaby.cpp @@ -218,16 +218,18 @@ uint32_t comebaby_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -ADDRESS_MAP_START(comebaby_state::comebaby_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_RAM - AM_RANGE(0x000c0000, 0x000fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(comebaby_state::comebaby_io) - AM_IMPORT_FROM(pcat32_io_common) -ADDRESS_MAP_END +void comebaby_state::comebaby_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).ram(); + map(0x000c0000, 0x000fffff).rom().region("bios", 0); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); +} + +void comebaby_state::comebaby_io(address_map &map) +{ + pcat32_io_common(map); +} static INPUT_PORTS_START( comebaby ) INPUT_PORTS_END diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp index 5a022f446ac..2b026570302 100644 --- a/src/mame/drivers/commando.cpp +++ b/src/mame/drivers/commando.cpp @@ -56,37 +56,40 @@ Note : there is an ingame typo bug that doesn't display the bonus life values /* Memory Maps */ -ADDRESS_MAP_START(commando_state::commando_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc804, 0xc804) AM_WRITE(commando_c804_w) - AM_RANGE(0xc808, 0xc809) AM_WRITE(commando_scrollx_w) - AM_RANGE(0xc80a, 0xc80b) AM_WRITE(commando_scrolly_w) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(commando_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(commando_colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(commando_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(commando_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xff7f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xff80, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(commando_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(commando_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ym2", ym2203_device, write) -ADDRESS_MAP_END +void commando_state::commando_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc804, 0xc804).w(this, FUNC(commando_state::commando_c804_w)); + map(0xc808, 0xc809).w(this, FUNC(commando_state::commando_scrollx_w)); + map(0xc80a, 0xc80b).w(this, FUNC(commando_state::commando_scrolly_w)); + map(0xd000, 0xd3ff).ram().w(this, FUNC(commando_state::commando_videoram2_w)).share("videoram2"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(commando_state::commando_colorram2_w)).share("colorram2"); + map(0xd800, 0xdbff).ram().w(this, FUNC(commando_state::commando_videoram_w)).share("videoram"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(commando_state::commando_colorram_w)).share("colorram"); + map(0xe000, 0xfdff).ram(); + map(0xfe00, 0xff7f).ram().share("spriteram"); + map(0xff80, 0xffff).ram(); +} + +void commando_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0xbfff).rom().share("decrypted_opcodes"); +} + +void commando_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8001).w("ym1", FUNC(ym2203_device::write)); + map(0x8002, 0x8003).w("ym2", FUNC(ym2203_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/compc.cpp b/src/mame/drivers/compc.cpp index 7c3f0f7e9ff..3a4a88c3c55 100644 --- a/src/mame/drivers/compc.cpp +++ b/src/mame/drivers/compc.cpp @@ -172,22 +172,25 @@ static INPUT_PORTS_START(compc) PORT_INCLUDE(pc_keyboard) INPUT_PORTS_END -ADDRESS_MAP_START(compc_state::compc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(compc_state::compc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map) - AM_RANGE(0x0060, 0x0063) AM_READWRITE(pio_r, pio_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(compc_state::compciii_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map) - AM_RANGE(0x0060, 0x0063) AM_READWRITE(pioiii_r, pioiii_w) -ADDRESS_MAP_END +void compc_state::compc_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void compc_state::compc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x0060, 0x0063).rw(this, FUNC(compc_state::pio_r), FUNC(compc_state::pio_w)); +} + +void compc_state::compciii_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x0060, 0x0063).rw(this, FUNC(compc_state::pioiii_r), FUNC(compc_state::pioiii_w)); +} MACHINE_CONFIG_START(compc_state::compc) MCFG_CPU_ADD("maincpu", I8088, 4772720*2) diff --git a/src/mame/drivers/compgolf.cpp b/src/mame/drivers/compgolf.cpp index 80ac9ee3191..6649b12ee1b 100644 --- a/src/mame/drivers/compgolf.cpp +++ b/src/mame/drivers/compgolf.cpp @@ -60,20 +60,21 @@ WRITE8_MEMBER(compgolf_state::compgolf_ctrl_w) * *************************************/ -ADDRESS_MAP_START(compgolf_state::compgolf_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(compgolf_video_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(compgolf_back_w) AM_SHARE("bg_ram") - AM_RANGE(0x2000, 0x2060) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2061, 0x2061) AM_WRITENOP - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("P1") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") AM_WRITE(compgolf_ctrl_w) - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2") - AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void compgolf_state::compgolf_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x17ff).ram().w(this, FUNC(compgolf_state::compgolf_video_w)).share("videoram"); + map(0x1800, 0x1fff).ram().w(this, FUNC(compgolf_state::compgolf_back_w)).share("bg_ram"); + map(0x2000, 0x2060).ram().share("spriteram"); + map(0x2061, 0x2061).nopw(); + map(0x3000, 0x3000).portr("P1"); + map(0x3001, 0x3001).portr("P2").w(this, FUNC(compgolf_state::compgolf_ctrl_w)); + map(0x3002, 0x3002).portr("DSW1"); + map(0x3003, 0x3003).portr("DSW2"); + map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp index e940929774b..6fe593d274a 100644 --- a/src/mame/drivers/compis.cpp +++ b/src/mame/drivers/compis.cpp @@ -393,46 +393,49 @@ WRITE16_MEMBER( compis_state::pcs6_14_15_w ) // ADDRESS_MAP( compis_mem ) //------------------------------------------------- -ADDRESS_MAP_START(compis_state::compis_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0x60000, 0x63fff) AM_MIRROR(0x1c000) AM_DEVICE(I80130_TAG, i80130_device, rom_map) - AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0) -ADDRESS_MAP_END +void compis_state::compis_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).ram(); + map(0x60000, 0x63fff).mirror(0x1c000).m(m_osp, FUNC(i80130_device::rom_map)); + map(0xe0000, 0xeffff).mirror(0x10000).rom().region(I80186_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( compis2_mem ) //------------------------------------------------- -ADDRESS_MAP_START(compis_state::compis2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x3ffff) AM_RAM - AM_RANGE(0xe0000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION(I80186_TAG, 0) -ADDRESS_MAP_END +void compis_state::compis2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x3ffff).ram(); + map(0xe0000, 0xeffff).mirror(0x10000).rom().region(I80186_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( compis_io ) //------------------------------------------------- -ADDRESS_MAP_START(compis_state::compis_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0007) /* PCS0 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8255_TAG, i8255_device, read, write, 0xff00) - AM_RANGE(0x0080, 0x0087) /* PCS1 */ AM_MIRROR(0x78) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0x0100, 0x011f) /* PCS2 */ AM_MIRROR(0x60) AM_DEVREADWRITE8(MM58174A_TAG, mm58274c_device, read, write, 0x00ff) - AM_RANGE(0x0180, 0x01ff) /* PCS3 */ AM_DEVREADWRITE(GRAPHICS_TAG, compis_graphics_slot_device, pcs3_r, pcs3_w) - //AM_RANGE(0x0200, 0x0201) /* PCS4 */ AM_MIRROR(0x7e) - AM_RANGE(0x0280, 0x028f) /* PCS5 */ AM_MIRROR(0x70) AM_DEVICE(I80130_TAG, i80130_device, io_map) - AM_RANGE(0x0300, 0x030f) AM_READWRITE(pcs6_0_1_r, pcs6_0_1_w) - AM_RANGE(0x0310, 0x031f) AM_READWRITE(pcs6_2_3_r, pcs6_2_3_w) - AM_RANGE(0x0320, 0x032f) AM_READWRITE(pcs6_4_5_r, pcs6_4_5_w) - AM_RANGE(0x0330, 0x033f) AM_READWRITE(pcs6_6_7_r, pcs6_6_7_w) - AM_RANGE(0x0340, 0x034f) AM_READWRITE(pcs6_8_9_r, pcs6_8_9_w) - AM_RANGE(0x0350, 0x035f) AM_READWRITE(pcs6_10_11_r, pcs6_10_11_w) - AM_RANGE(0x0360, 0x036f) AM_READWRITE(pcs6_12_13_r, pcs6_12_13_w) - AM_RANGE(0x0370, 0x037f) AM_READWRITE(pcs6_14_15_r, pcs6_14_15_w) -ADDRESS_MAP_END +void compis_state::compis_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0007) /* PCS0 */ .mirror(0x78).rw(I8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); + map(0x0080, 0x0087) /* PCS1 */ .mirror(0x78).rw(I8253_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x0100, 0x011f) /* PCS2 */ .mirror(0x60).rw(MM58174A_TAG, FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)).umask16(0x00ff); + map(0x0180, 0x01ff) /* PCS3 */ .rw(GRAPHICS_TAG, FUNC(compis_graphics_slot_device::pcs3_r), FUNC(compis_graphics_slot_device::pcs3_w)); + //map(0x0200, 0x0201) /* PCS4 */ .mirror(0x7e); + map(0x0280, 0x028f) /* PCS5 */ .mirror(0x70).m(I80130_TAG, FUNC(i80130_device::io_map)); + map(0x0300, 0x030f).rw(this, FUNC(compis_state::pcs6_0_1_r), FUNC(compis_state::pcs6_0_1_w)); + map(0x0310, 0x031f).rw(this, FUNC(compis_state::pcs6_2_3_r), FUNC(compis_state::pcs6_2_3_w)); + map(0x0320, 0x032f).rw(this, FUNC(compis_state::pcs6_4_5_r), FUNC(compis_state::pcs6_4_5_w)); + map(0x0330, 0x033f).rw(this, FUNC(compis_state::pcs6_6_7_r), FUNC(compis_state::pcs6_6_7_w)); + map(0x0340, 0x034f).rw(this, FUNC(compis_state::pcs6_8_9_r), FUNC(compis_state::pcs6_8_9_w)); + map(0x0350, 0x035f).rw(this, FUNC(compis_state::pcs6_10_11_r), FUNC(compis_state::pcs6_10_11_w)); + map(0x0360, 0x036f).rw(this, FUNC(compis_state::pcs6_12_13_r), FUNC(compis_state::pcs6_12_13_w)); + map(0x0370, 0x037f).rw(this, FUNC(compis_state::pcs6_14_15_r), FUNC(compis_state::pcs6_14_15_w)); +} diff --git a/src/mame/drivers/compucolor.cpp b/src/mame/drivers/compucolor.cpp index 7d4db38ebee..4ddc2f1cac2 100644 --- a/src/mame/drivers/compucolor.cpp +++ b/src/mame/drivers/compucolor.cpp @@ -83,17 +83,19 @@ public: void compucolor2_mem(address_map &map); }; -ADDRESS_MAP_START(compucolor2_state::compucolor2_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION(I8080_TAG, 0) - AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(compucolor2_state::compucolor2_io) - AM_RANGE(0x00, 0x0f) AM_MIRROR(0x10) AM_DEVICE(TMS5501_TAG, tms5501_device, io_map) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0x10) AM_DEVREADWRITE(CRT5027_TAG, crt5027_device, read, write) - AM_RANGE(0x80, 0x9f) AM_MIRROR(0x60) AM_ROM AM_REGION("ua1", 0) -ADDRESS_MAP_END +void compucolor2_state::compucolor2_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom().region(I8080_TAG, 0); + map(0x6000, 0x6fff).mirror(0x1000).ram().share("videoram"); + map(0x8000, 0xffff).ram(); +} + +void compucolor2_state::compucolor2_io(address_map &map) +{ + map(0x00, 0x0f).mirror(0x10).m(m_mioc, FUNC(tms5501_device::io_map)); + map(0x60, 0x6f).mirror(0x10).rw(m_vtac, FUNC(crt5027_device::read), FUNC(crt5027_device::write)); + map(0x80, 0x9f).mirror(0x60).rom().region("ua1", 0); +} static INPUT_PORTS_START( compucolor2 ) PORT_START("Y0") diff --git a/src/mame/drivers/comquest.cpp b/src/mame/drivers/comquest.cpp index 0e9ec13ae20..57ff8434d98 100644 --- a/src/mame/drivers/comquest.cpp +++ b/src/mame/drivers/comquest.cpp @@ -62,10 +62,11 @@ WRITE8_MEMBER(comquest_state::comquest_write) } #endif -ADDRESS_MAP_START(comquest_state::comquest_mem) +void comquest_state::comquest_mem(address_map &map) +{ // { 0x0000, 0x7fff, SMH_BANK(1) }, - AM_RANGE(0x0000, 0xfff) AM_ROM -ADDRESS_MAP_END + map(0x0000, 0xfff).rom(); +} static INPUT_PORTS_START( comquest ) PORT_START("in0") diff --git a/src/mame/drivers/comx35.cpp b/src/mame/drivers/comx35.cpp index 8925c55d6fe..cb11fde8a9a 100644 --- a/src/mame/drivers/comx35.cpp +++ b/src/mame/drivers/comx35.cpp @@ -292,20 +292,22 @@ WRITE8_MEMBER( comx35_state::io_w ) // ADDRESS_MAP( comx35_mem ) //------------------------------------------------- -ADDRESS_MAP_START(comx35_state::comx35_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w) -ADDRESS_MAP_END +void comx35_state::comx35_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(comx35_state::mem_r), FUNC(comx35_state::mem_w)); +} //------------------------------------------------- // ADDRESS_MAP( comx35_io ) //------------------------------------------------- -ADDRESS_MAP_START(comx35_state::comx35_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x07) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void comx35_state::comx35_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x07).rw(this, FUNC(comx35_state::io_r), FUNC(comx35_state::io_w)); +} diff --git a/src/mame/drivers/concept.cpp b/src/mame/drivers/concept.cpp index 967a7621e60..57eb691ca98 100644 --- a/src/mame/drivers/concept.cpp +++ b/src/mame/drivers/concept.cpp @@ -42,15 +42,16 @@ #include "screen.h" #include "speaker.h" -ADDRESS_MAP_START(concept_state::concept_memmap) - AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION("maincpu", 0x010000) /* boot ROM mirror */ - AM_RANGE(0x000008, 0x000fff) AM_RAM /* static RAM */ - AM_RANGE(0x010000, 0x011fff) AM_ROM AM_REGION("maincpu", 0x010000) /* boot ROM */ - AM_RANGE(0x020000, 0x021fff) AM_ROM AM_REGION("macsbug", 0x0) /* macsbugs ROM (optional) */ - AM_RANGE(0x030000, 0x03ffff) AM_READWRITE(concept_io_r,concept_io_w) /* I/O space */ - - AM_RANGE(0x080000, 0x0fffff) AM_RAM AM_SHARE("videoram")/* AM_RAMBANK(2) */ /* DRAM */ -ADDRESS_MAP_END +void concept_state::concept_memmap(address_map &map) +{ + map(0x000000, 0x000007).rom().region("maincpu", 0x010000); /* boot ROM mirror */ + map(0x000008, 0x000fff).ram(); /* static RAM */ + map(0x010000, 0x011fff).rom().region("maincpu", 0x010000); /* boot ROM */ + map(0x020000, 0x021fff).rom().region("macsbug", 0x0); /* macsbugs ROM (optional) */ + map(0x030000, 0x03ffff).rw(this, FUNC(concept_state::concept_io_r), FUNC(concept_state::concept_io_w)); /* I/O space */ + + map(0x080000, 0x0fffff).ram().share("videoram");/* AM_RAMBANK(2) */ /* DRAM */ +} static INPUT_PORTS_START( concept ) diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp index 86075041e3d..360a3ce00d7 100644 --- a/src/mame/drivers/contra.cpp +++ b/src/mame/drivers/contra.cpp @@ -55,50 +55,52 @@ WRITE8_MEMBER(contra_state::contra_coin_counter_w) } -ADDRESS_MAP_START(contra_state::contra_map) - AM_RANGE(0x0000, 0x0007) AM_WRITE(contra_K007121_ctrl_0_w) - AM_RANGE(0x0010, 0x0010) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0011, 0x0011) AM_READ_PORT("P1") - AM_RANGE(0x0012, 0x0012) AM_READ_PORT("P2") - - AM_RANGE(0x0014, 0x0014) AM_READ_PORT("DSW1") - AM_RANGE(0x0015, 0x0015) AM_READ_PORT("DSW2") - AM_RANGE(0x0016, 0x0016) AM_READ_PORT("DSW3") - - AM_RANGE(0x0018, 0x0018) AM_WRITE(contra_coin_counter_w) - AM_RANGE(0x001a, 0x001a) AM_WRITE(contra_sh_irqtrigger_w) - AM_RANGE(0x001c, 0x001c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x001e, 0x001e) AM_WRITENOP /* ? */ - AM_RANGE(0x0060, 0x0067) AM_WRITE(contra_K007121_ctrl_1_w) - - AM_RANGE(0x0c00, 0x0cff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - - AM_RANGE(0x1000, 0x1fff) AM_RAM - - AM_RANGE(0x2000, 0x5fff) AM_READONLY - AM_RANGE(0x2000, 0x23ff) AM_WRITE(contra_fg_cram_w) AM_SHARE("fg_cram") - AM_RANGE(0x2400, 0x27ff) AM_WRITE(contra_fg_vram_w) AM_SHARE("fg_vram") - AM_RANGE(0x2800, 0x2bff) AM_WRITE(contra_text_cram_w) AM_SHARE("tx_cram") - AM_RANGE(0x2c00, 0x2fff) AM_WRITE(contra_text_vram_w) AM_SHARE("tx_vram") - AM_RANGE(0x3000, 0x37ff) AM_WRITEONLY AM_SHARE("spriteram")/* 2nd bank is at 0x5000 */ - AM_RANGE(0x3800, 0x3fff) AM_WRITEONLY // second sprite buffer - AM_RANGE(0x4000, 0x43ff) AM_WRITE(contra_bg_cram_w) AM_SHARE("bg_cram") - AM_RANGE(0x4400, 0x47ff) AM_WRITE(contra_bg_vram_w) AM_SHARE("bg_vram") - AM_RANGE(0x4800, 0x5fff) AM_WRITEONLY - - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x7000, 0x7000) AM_WRITE(contra_bankswitch_w) - - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(contra_state::sound_map) - AM_RANGE(0x0000, 0x0000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */ - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void contra_state::contra_map(address_map &map) +{ + map(0x0000, 0x0007).w(this, FUNC(contra_state::contra_K007121_ctrl_0_w)); + map(0x0010, 0x0010).portr("SYSTEM"); + map(0x0011, 0x0011).portr("P1"); + map(0x0012, 0x0012).portr("P2"); + + map(0x0014, 0x0014).portr("DSW1"); + map(0x0015, 0x0015).portr("DSW2"); + map(0x0016, 0x0016).portr("DSW3"); + + map(0x0018, 0x0018).w(this, FUNC(contra_state::contra_coin_counter_w)); + map(0x001a, 0x001a).w(this, FUNC(contra_state::contra_sh_irqtrigger_w)); + map(0x001c, 0x001c).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x001e, 0x001e).nopw(); /* ? */ + map(0x0060, 0x0067).w(this, FUNC(contra_state::contra_K007121_ctrl_1_w)); + + map(0x0c00, 0x0cff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + + map(0x1000, 0x1fff).ram(); + + map(0x2000, 0x5fff).readonly(); + map(0x2000, 0x23ff).w(this, FUNC(contra_state::contra_fg_cram_w)).share("fg_cram"); + map(0x2400, 0x27ff).w(this, FUNC(contra_state::contra_fg_vram_w)).share("fg_vram"); + map(0x2800, 0x2bff).w(this, FUNC(contra_state::contra_text_cram_w)).share("tx_cram"); + map(0x2c00, 0x2fff).w(this, FUNC(contra_state::contra_text_vram_w)).share("tx_vram"); + map(0x3000, 0x37ff).writeonly().share("spriteram");/* 2nd bank is at 0x5000 */ + map(0x3800, 0x3fff).writeonly(); // second sprite buffer + map(0x4000, 0x43ff).w(this, FUNC(contra_state::contra_bg_cram_w)).share("bg_cram"); + map(0x4400, 0x47ff).w(this, FUNC(contra_state::contra_bg_vram_w)).share("bg_vram"); + map(0x4800, 0x5fff).writeonly(); + + map(0x6000, 0x7fff).bankr("bank1"); + map(0x7000, 0x7000).w(this, FUNC(contra_state::contra_bankswitch_w)); + + map(0x8000, 0xffff).rom(); +} + +void contra_state::sound_map(address_map &map) +{ + map(0x0000, 0x0000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x4000, 0x4000).nopw(); /* read triggers irq reset and latch read (in the hardware only). */ + map(0x6000, 0x67ff).ram(); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/controlid.cpp b/src/mame/drivers/controlid.cpp index a1bc1d9e0e7..e50f6172bf6 100644 --- a/src/mame/drivers/controlid.cpp +++ b/src/mame/drivers/controlid.cpp @@ -62,13 +62,15 @@ private: * Memory map information * *************************/ -ADDRESS_MAP_START(controlidx628_state::prog_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void controlidx628_state::prog_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} -ADDRESS_MAP_START(controlidx628_state::io_map) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void controlidx628_state::io_map(address_map &map) +{ + map(0x8000, 0xffff).ram(); +} WRITE8_MEMBER( controlidx628_state::p0_w ) diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp index 0022c3056ac..e4b8c63342c 100644 --- a/src/mame/drivers/coolpool.cpp +++ b/src/mame/drivers/coolpool.cpp @@ -605,38 +605,41 @@ READ16_MEMBER(coolpool_state::coolpool_input_r) * *************************************/ -ADDRESS_MAP_START(coolpool_state::amerdart_map) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("vram_base") - AM_RANGE(0x04000000, 0x0400000f) AM_WRITE(amerdart_misc_w) - AM_RANGE(0x05000000, 0x0500000f) AM_READWRITE(amerdart_iop_r, amerdart_iop_w) - AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffb00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(coolpool_state::coolpool_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base") - AM_RANGE(0x01000000, 0x010000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) // IMSG176P-40 - AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w) - AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w) - AM_RANGE(0x03000000, 0x03ffffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0x06000000, 0x06007fff) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(coolpool_state::nballsht_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base") - AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w) - AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w) - AM_RANGE(0x04000000, 0x040000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) // IMSG176P-40 - AM_RANGE(0x06000000, 0x0601ffff) AM_MIRROR(0x00020000) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xff000000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void coolpool_state::amerdart_map(address_map &map) +{ + map(0x00000000, 0x000fffff).ram().share("vram_base"); + map(0x04000000, 0x0400000f).w(this, FUNC(coolpool_state::amerdart_misc_w)); + map(0x05000000, 0x0500000f).rw(this, FUNC(coolpool_state::amerdart_iop_r), FUNC(coolpool_state::amerdart_iop_w)); + map(0x06000000, 0x06007fff).ram().w(this, FUNC(coolpool_state::nvram_thrash_data_w)).share("nvram"); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xffb00000, 0xffffffff).rom().region("user1", 0); +} + + +void coolpool_state::coolpool_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("vram_base"); + map(0x01000000, 0x010000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40 + map(0x02000000, 0x020000ff).rw(this, FUNC(coolpool_state::coolpool_iop_r), FUNC(coolpool_state::coolpool_iop_w)); + map(0x03000000, 0x0300000f).w(this, FUNC(coolpool_state::coolpool_misc_w)); + map(0x03000000, 0x03ffffff).rom().region("gfx1", 0); + map(0x06000000, 0x06007fff).ram().w(this, FUNC(coolpool_state::nvram_thrash_data_w)).share("nvram"); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xffe00000, 0xffffffff).rom().region("user1", 0); +} + + +void coolpool_state::nballsht_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("vram_base"); + map(0x02000000, 0x020000ff).rw(this, FUNC(coolpool_state::coolpool_iop_r), FUNC(coolpool_state::coolpool_iop_w)); + map(0x03000000, 0x0300000f).w(this, FUNC(coolpool_state::coolpool_misc_w)); + map(0x04000000, 0x040000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); // IMSG176P-40 + map(0x06000000, 0x0601ffff).mirror(0x00020000).ram().w(this, FUNC(coolpool_state::nvram_thrash_data_w)).share("nvram"); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xff000000, 0xff7fffff).rom().region("gfx1", 0); + map(0xffc00000, 0xffffffff).rom().region("user1", 0); +} @@ -646,37 +649,41 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(coolpool_state::amerdart_dsp_pgm_map) - AM_RANGE(0x000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void coolpool_state::amerdart_dsp_pgm_map(address_map &map) +{ + map(0x000, 0x0fff).rom(); +} /* 000 - 0FF TMS32015 Internal Data RAM (256 words) in Data Address Space */ -ADDRESS_MAP_START(coolpool_state::amerdart_dsp_io_map) - AM_RANGE(0x00, 0x01) AM_WRITE(dsp_romaddr_w) - AM_RANGE(0x02, 0x02) AM_WRITE(amerdart_dsp_answer_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac", dac_word_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r) - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0") - AM_RANGE(0x06, 0x06) AM_READ(amerdart_trackball_r) - AM_RANGE(0x07, 0x07) AM_READ(amerdart_dsp_cmd_r) -ADDRESS_MAP_END +void coolpool_state::amerdart_dsp_io_map(address_map &map) +{ + map(0x00, 0x01).w(this, FUNC(coolpool_state::dsp_romaddr_w)); + map(0x02, 0x02).w(this, FUNC(coolpool_state::amerdart_dsp_answer_w)); + map(0x03, 0x03).w("dac", FUNC(dac_word_interface::write)); + map(0x04, 0x04).r(this, FUNC(coolpool_state::dsp_rom_r)); + map(0x05, 0x05).portr("IN0"); + map(0x06, 0x06).r(this, FUNC(coolpool_state::amerdart_trackball_r)); + map(0x07, 0x07).r(this, FUNC(coolpool_state::amerdart_dsp_cmd_r)); +} -ADDRESS_MAP_START(coolpool_state::coolpool_dsp_pgm_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void coolpool_state::coolpool_dsp_pgm_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} -ADDRESS_MAP_START(coolpool_state::coolpool_dsp_io_map) - AM_RANGE(0x00, 0x01) AM_WRITE(dsp_romaddr_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(dsp_cmd_r, dsp_answer_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac", dac_word_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(dsp_rom_r) - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0") - AM_RANGE(0x07, 0x07) AM_READ_PORT("IN1") -ADDRESS_MAP_END +void coolpool_state::coolpool_dsp_io_map(address_map &map) +{ + map(0x00, 0x01).w(this, FUNC(coolpool_state::dsp_romaddr_w)); + map(0x02, 0x02).rw(this, FUNC(coolpool_state::dsp_cmd_r), FUNC(coolpool_state::dsp_answer_w)); + map(0x03, 0x03).w("dac", FUNC(dac_word_interface::write)); + map(0x04, 0x04).r(this, FUNC(coolpool_state::dsp_rom_r)); + map(0x05, 0x05).portr("IN0"); + map(0x07, 0x07).portr("IN1"); +} diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp index 04f6fb2b5a3..00bcf159fc8 100644 --- a/src/mame/drivers/coolridr.cpp +++ b/src/mame/drivers/coolridr.cpp @@ -2824,33 +2824,35 @@ WRITE32_MEMBER(coolridr_state::sysh1_dma_w) } -ADDRESS_MAP_START(coolridr_state::system_h1_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_SHARE("share1") AM_WRITENOP - AM_RANGE(0x01000000, 0x01ffffff) AM_ROM AM_REGION("gfx_data",0x0000000) - - AM_RANGE(0x03c00000, 0x03c1ffff) AM_MIRROR(0x00200000) AM_RAM_WRITE(sysh1_dma_w) AM_SHARE("fb_vram") /* mostly mapped at 0x03e00000 */ - - AM_RANGE(0x03f00000, 0x03f0ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ - AM_RANGE(0x03f40000, 0x03f4ffff) AM_RAM AM_SHARE("txt_vram")//text tilemap + "lineram" - AM_RANGE(0x04000000, 0x0400000f) AM_READWRITE(sysh1_unk_blit_r,sysh1_unk_blit_w) AM_SHARE("sysh1_txt_blit") - AM_RANGE(0x04000010, 0x04000013) AM_WRITE(sysh1_blit_mode_w) - AM_RANGE(0x04000014, 0x04000017) AM_WRITE(sysh1_blit_data_w) - AM_RANGE(0x04000018, 0x0400001b) AM_WRITE(sysh1_fb_mode_w) - AM_RANGE(0x0400001c, 0x0400001f) AM_WRITE(sysh1_fb_data_w) - - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("sysh1_workrah") - AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_SHARE("share1") - - AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(coolridr_state::aquastge_h1_map) - AM_IMPORT_FROM(system_h1_map) - AM_RANGE(0x03c00000, 0x03c0ffff) AM_MIRROR(0x00200000) AM_RAM_WRITE(sysh1_dma_w) AM_SHARE("fb_vram") /* mostly mapped at 0x03e00000 */ - AM_RANGE(0x03f50000, 0x03f5ffff) AM_RAM // video registers - AM_RANGE(0x03e10000, 0x03e1ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ - AM_RANGE(0x03f00000, 0x03f0ffff) AM_RAM /*Communication area RAM*/ -ADDRESS_MAP_END +void coolridr_state::system_h1_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom().share("share1").nopw(); + map(0x01000000, 0x01ffffff).rom().region("gfx_data", 0x0000000); + + map(0x03c00000, 0x03c1ffff).mirror(0x00200000).ram().w(this, FUNC(coolridr_state::sysh1_dma_w)).share("fb_vram"); /* mostly mapped at 0x03e00000 */ + + map(0x03f00000, 0x03f0ffff).ram().share("share3"); /*Communication area RAM*/ + map(0x03f40000, 0x03f4ffff).ram().share("txt_vram");//text tilemap + "lineram" + map(0x04000000, 0x0400000f).rw(this, FUNC(coolridr_state::sysh1_unk_blit_r), FUNC(coolridr_state::sysh1_unk_blit_w)).share("sysh1_txt_blit"); + map(0x04000010, 0x04000013).w(this, FUNC(coolridr_state::sysh1_blit_mode_w)); + map(0x04000014, 0x04000017).w(this, FUNC(coolridr_state::sysh1_blit_data_w)); + map(0x04000018, 0x0400001b).w(this, FUNC(coolridr_state::sysh1_fb_mode_w)); + map(0x0400001c, 0x0400001f).w(this, FUNC(coolridr_state::sysh1_fb_data_w)); + + map(0x06000000, 0x060fffff).ram().share("sysh1_workrah"); + map(0x20000000, 0x201fffff).rom().share("share1"); + + map(0x60000000, 0x600003ff).nopw(); +} + +void coolridr_state::aquastge_h1_map(address_map &map) +{ + system_h1_map(map); + map(0x03c00000, 0x03c0ffff).mirror(0x00200000).ram().w(this, FUNC(coolridr_state::sysh1_dma_w)).share("fb_vram"); /* mostly mapped at 0x03e00000 */ + map(0x03f50000, 0x03f5ffff).ram(); // video registers + map(0x03e10000, 0x03e1ffff).ram().share("share3"); /*Communication area RAM*/ + map(0x03f00000, 0x03f0ffff).ram(); /*Communication area RAM*/ +} READ16_MEMBER( coolridr_state::h1_soundram_r) { @@ -2988,42 +2990,45 @@ WRITE32_MEMBER(coolridr_state::sysh1_sound_dma_w) -ADDRESS_MAP_START(coolridr_state::coolridr_submap) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM // note: SH7032 only supports 64KB - - AM_RANGE(0x01000000, 0x0100ffff) AM_RAM //communication RAM - - AM_RANGE(0x03000000, 0x0307ffff) AM_READWRITE16(h1_soundram_r, h1_soundram_w,0xffffffff) //AM_SHARE("soundram") - AM_RANGE(0x03100000, 0x03100fff) AM_DEVREADWRITE16("scsp1", scsp_device, read, write, 0xffffffff) - AM_RANGE(0x03200000, 0x0327ffff) AM_READWRITE16(h1_soundram2_r, h1_soundram2_w,0xffffffff) //AM_SHARE("soundram2") - AM_RANGE(0x03300000, 0x03300fff) AM_DEVREADWRITE16("scsp2", scsp_device, read, write, 0xffffffff) - - AM_RANGE(0x04000000, 0x0400003f) AM_READWRITE(sysh1_sound_dma_r,sysh1_sound_dma_w) AM_SHARE("sound_dma") -// AM_RANGE(0x04200000, 0x0420003f) AM_RAM /* unknown */ - - AM_RANGE(0x05000000, 0x05000fff) AM_RAM - AM_RANGE(0x05200000, 0x052001ff) AM_RAM - AM_RANGE(0x05300000, 0x0530ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ -// AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7032_r,sh7032_w,0xffffffff) // SH-7032H internal i/o - AM_RANGE(0x06000000, 0x060001ff) AM_RAM AM_SHARE("nvram") // backup RAM - AM_RANGE(0x06100000, 0x06100003) AM_READ_PORT("IN0") AM_WRITE8(lamps_w,0x000000ff) - AM_RANGE(0x06100004, 0x06100007) AM_READ_PORT("IN1") - AM_RANGE(0x06100008, 0x0610000b) AM_READ_PORT("IN5") - AM_RANGE(0x0610000c, 0x0610000f) AM_READ_PORT("IN6") - AM_RANGE(0x06100010, 0x06100013) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0x06100014, 0x06100017) AM_READ_PORT("IN3") - AM_RANGE(0x0610001c, 0x0610001f) AM_READWRITE8(analog_mux_r,analog_mux_w,0x000000ff) //AM_WRITENOP - AM_RANGE(0x06200000, 0x06200fff) AM_RAM //network related? - AM_RANGE(0x07ffe000, 0x07ffffff) AM_RAM // On-Chip RAM (actually mapped at 0x0fffe000-0x0fffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(coolridr_state::aquastge_submap) - AM_IMPORT_FROM(coolridr_submap) - AM_RANGE(0x05200000, 0x0537ffff) AM_RAM - AM_RANGE(0x05210000, 0x0521ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ - AM_RANGE(0x06000200, 0x06000207) AM_WRITENOP // program bug? - AM_RANGE(0x06100018, 0x0610001b) AM_READ_PORT("IN7") -ADDRESS_MAP_END +void coolridr_state::coolridr_submap(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); // note: SH7032 only supports 64KB + + map(0x01000000, 0x0100ffff).ram(); //communication RAM + + map(0x03000000, 0x0307ffff).rw(this, FUNC(coolridr_state::h1_soundram_r), FUNC(coolridr_state::h1_soundram_w)); //.share("soundram"); + map(0x03100000, 0x03100fff).rw("scsp1", FUNC(scsp_device::read), FUNC(scsp_device::write)); + map(0x03200000, 0x0327ffff).rw(this, FUNC(coolridr_state::h1_soundram2_r), FUNC(coolridr_state::h1_soundram2_w)); //.share("soundram2"); + map(0x03300000, 0x03300fff).rw("scsp2", FUNC(scsp_device::read), FUNC(scsp_device::write)); + + map(0x04000000, 0x0400003f).rw(this, FUNC(coolridr_state::sysh1_sound_dma_r), FUNC(coolridr_state::sysh1_sound_dma_w)).share("sound_dma"); +// map(0x04200000, 0x0420003f).ram(); /* unknown */ + + map(0x05000000, 0x05000fff).ram(); + map(0x05200000, 0x052001ff).ram(); + map(0x05300000, 0x0530ffff).ram().share("share3"); /*Communication area RAM*/ +// map(0x05fffe00, 0x05ffffff).rw(this, FUNC(coolridr_state::sh7032_r), FUNC(coolridr_state::sh7032_w)); // SH-7032H internal i/o + map(0x06000000, 0x060001ff).ram().share("nvram"); // backup RAM + map(0x06100000, 0x06100003).portr("IN0"); + map(0x06100003, 0x06100003).w(this, FUNC(coolridr_state::lamps_w)); + map(0x06100004, 0x06100007).portr("IN1"); + map(0x06100008, 0x0610000b).portr("IN5"); + map(0x0610000c, 0x0610000f).portr("IN6"); + map(0x06100010, 0x06100013).portr("IN2").nopw(); + map(0x06100014, 0x06100017).portr("IN3"); + map(0x0610001f, 0x0610001f).rw(this, FUNC(coolridr_state::analog_mux_r), FUNC(coolridr_state::analog_mux_w)); // .nopw(); + map(0x06200000, 0x06200fff).ram(); //network related? + map(0x07ffe000, 0x07ffffff).ram(); // On-Chip RAM (actually mapped at 0x0fffe000-0x0fffffff) +} + +void coolridr_state::aquastge_submap(address_map &map) +{ + coolridr_submap(map); + map(0x05200000, 0x0537ffff).ram(); + map(0x05210000, 0x0521ffff).ram().share("share3"); /*Communication area RAM*/ + map(0x06000200, 0x06000207).nopw(); // program bug? + map(0x06100018, 0x0610001b).portr("IN7"); +} /* TODO: what is this for, volume mixing? MIDI? */ WRITE8_MEMBER(coolridr_state::sound_to_sh1_w) @@ -3031,14 +3036,15 @@ WRITE8_MEMBER(coolridr_state::sound_to_sh1_w) sound_fifo = data; } -ADDRESS_MAP_START(coolridr_state::system_h1_sound_map) - AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_REGION("scsp1",0) AM_SHARE("soundram") - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp1", scsp_device, read, write) - AM_RANGE(0x200000, 0x27ffff) AM_RAM AM_REGION("scsp2",0) AM_SHARE("soundram2") - AM_RANGE(0x300000, 0x300fff) AM_DEVREADWRITE("scsp2", scsp_device, read, write) - AM_RANGE(0x800000, 0x80ffff) AM_MIRROR(0x200000) AM_RAM - AM_RANGE(0x900000, 0x900001) AM_WRITE8(sound_to_sh1_w,0x00ff) -ADDRESS_MAP_END +void coolridr_state::system_h1_sound_map(address_map &map) +{ + map(0x000000, 0x07ffff).ram().region("scsp1", 0).share("soundram"); + map(0x100000, 0x100fff).rw("scsp1", FUNC(scsp_device::read), FUNC(scsp_device::write)); + map(0x200000, 0x27ffff).ram().region("scsp2", 0).share("soundram2"); + map(0x300000, 0x300fff).rw("scsp2", FUNC(scsp_device::read), FUNC(scsp_device::write)); + map(0x800000, 0x80ffff).mirror(0x200000).ram(); + map(0x900001, 0x900001).w(this, FUNC(coolridr_state::sound_to_sh1_w)); +} diff --git a/src/mame/drivers/cop01.cpp b/src/mame/drivers/cop01.cpp index 6ca1018e572..0e4fc1f2694 100644 --- a/src/mame/drivers/cop01.cpp +++ b/src/mame/drivers/cop01.cpp @@ -123,51 +123,56 @@ READ8_MEMBER(cop01_state::cop01_sound_irq_ack_w) * *************************************/ -ADDRESS_MAP_START(cop01_state::cop01_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM /* c000-c7ff in cop01 */ - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(cop01_background_w) AM_SHARE("bgvideoram") - AM_RANGE(0xe000, 0xe0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf3ff) AM_WRITE(cop01_foreground_w) AM_SHARE("fgvideoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cop01_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x40, 0x43) AM_WRITE(cop01_vreg_w) - AM_RANGE(0x44, 0x44) AM_WRITE(cop01_sound_command_w) - AM_RANGE(0x45, 0x45) AM_WRITE(cop01_irq_ack_w) /* ? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cop01_state::mightguy_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x40, 0x43) AM_WRITE(cop01_vreg_w) - AM_RANGE(0x44, 0x44) AM_WRITE(cop01_sound_command_w) - AM_RANGE(0x45, 0x45) AM_WRITE(cop01_irq_ack_w) /* ? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cop01_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_READ(cop01_sound_irq_ack_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cop01_state::audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_READ(cop01_sound_command_r) -ADDRESS_MAP_END +void cop01_state::cop01_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); /* c000-c7ff in cop01 */ + map(0xd000, 0xdfff).ram().w(this, FUNC(cop01_state::cop01_background_w)).share("bgvideoram"); + map(0xe000, 0xe0ff).writeonly().share("spriteram"); + map(0xf000, 0xf3ff).w(this, FUNC(cop01_state::cop01_foreground_w)).share("fgvideoram"); +} + +void cop01_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).portr("P2"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x40, 0x43).w(this, FUNC(cop01_state::cop01_vreg_w)); + map(0x44, 0x44).w(this, FUNC(cop01_state::cop01_sound_command_w)); + map(0x45, 0x45).w(this, FUNC(cop01_state::cop01_irq_ack_w)); /* ? */ +} + +void cop01_state::mightguy_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).portr("P2"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x40, 0x43).w(this, FUNC(cop01_state::cop01_vreg_w)); + map(0x44, 0x44).w(this, FUNC(cop01_state::cop01_sound_command_w)); + map(0x45, 0x45).w(this, FUNC(cop01_state::cop01_irq_ack_w)); /* ? */ +} + +void cop01_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8000).r(this, FUNC(cop01_state::cop01_sound_irq_ack_w)); + map(0xc000, 0xc7ff).ram(); +} + +void cop01_state::audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x04, 0x05).w("ay3", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r(this, FUNC(cop01_state::cop01_sound_command_r)); +} /* @@ -239,14 +244,15 @@ WRITE8_MEMBER(cop01_state::prot_data_w) } } -ADDRESS_MAP_START(cop01_state::mightguy_audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x02, 0x02) AM_WRITE(prot_address_w) /* 1412M2 address? */ - AM_RANGE(0x03, 0x03) AM_WRITE(prot_data_w) /* 1412M2 data? */ - AM_RANGE(0x03, 0x03) AM_READ(prot_data_r) /* 1412M2? */ - AM_RANGE(0x06, 0x06) AM_READ(cop01_sound_command_r) -ADDRESS_MAP_END +void cop01_state::mightguy_audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write)); + map(0x02, 0x02).w(this, FUNC(cop01_state::prot_address_w)); /* 1412M2 address? */ + map(0x03, 0x03).w(this, FUNC(cop01_state::prot_data_w)); /* 1412M2 data? */ + map(0x03, 0x03).r(this, FUNC(cop01_state::prot_data_r)); /* 1412M2? */ + map(0x06, 0x06).r(this, FUNC(cop01_state::cop01_sound_command_r)); +} /************************************* diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp index 2c6eec37eb3..dac8bbb90f3 100644 --- a/src/mame/drivers/cops.cpp +++ b/src/mame/drivers/cops.cpp @@ -802,27 +802,29 @@ WRITE_LINE_MEMBER(cops_state::via2_irq) * *************************************/ -ADDRESS_MAP_START(cops_state::cops_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x9fff) AM_ROM AM_REGION("program", 0) - AM_RANGE(0xa000, 0xafff) AM_READWRITE(io1_r, io1_w) - AM_RANGE(0xb000, 0xb00f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 1 */ - AM_RANGE(0xb800, 0xb80f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) /* VIA 2 */ - AM_RANGE(0xc000, 0xcfff) AM_READWRITE(io2_r, io2_w) - AM_RANGE(0xd000, 0xd007) AM_READWRITE(dacia_r, dacia_w) - AM_RANGE(0xd800, 0xd80f) AM_DEVREADWRITE("via6522_3", via6522_device, read, write) /* VIA 3 */ - AM_RANGE(0xe000, 0xffff) AM_ROMBANK("sysbank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cops_state::revlatns_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x9fff) AM_ROM AM_REGION("program", 0) - AM_RANGE(0xa000, 0xafff) AM_READWRITE(io1_lm_r, io1_w) - AM_RANGE(0xb000, 0xb00f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 1 */ - AM_RANGE(0xc000, 0xc00f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0xd000, 0xd007) AM_READWRITE(dacia_r, dacia_w) - AM_RANGE(0xe000, 0xffff) AM_ROMBANK("sysbank1") -ADDRESS_MAP_END +void cops_state::cops_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x9fff).rom().region("program", 0); + map(0xa000, 0xafff).rw(this, FUNC(cops_state::io1_r), FUNC(cops_state::io1_w)); + map(0xb000, 0xb00f).rw("via6522_1", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 1 */ + map(0xb800, 0xb80f).rw("via6522_2", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 2 */ + map(0xc000, 0xcfff).rw(this, FUNC(cops_state::io2_r), FUNC(cops_state::io2_w)); + map(0xd000, 0xd007).rw(this, FUNC(cops_state::dacia_r), FUNC(cops_state::dacia_w)); + map(0xd800, 0xd80f).rw("via6522_3", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 3 */ + map(0xe000, 0xffff).bankr("sysbank1"); +} + +void cops_state::revlatns_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x9fff).rom().region("program", 0); + map(0xa000, 0xafff).rw(this, FUNC(cops_state::io1_lm_r), FUNC(cops_state::io1_w)); + map(0xb000, 0xb00f).rw("via6522_1", FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 1 */ + map(0xc000, 0xc00f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0xd000, 0xd007).rw(this, FUNC(cops_state::dacia_r), FUNC(cops_state::dacia_w)); + map(0xe000, 0xffff).bankr("sysbank1"); +} static INPUT_PORTS_START( cops ) PORT_START("SW0") diff --git a/src/mame/drivers/copsnrob.cpp b/src/mame/drivers/copsnrob.cpp index c5bad1c3865..de45158fde4 100644 --- a/src/mame/drivers/copsnrob.cpp +++ b/src/mame/drivers/copsnrob.cpp @@ -90,28 +90,29 @@ WRITE8_MEMBER(copsnrob_state::copsnrob_misc2_w) * *************************************/ -ADDRESS_MAP_START(copsnrob_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0500, 0x0507) AM_DEVWRITE("latch", f9334_device, write_d0) - AM_RANGE(0x0600, 0x0600) AM_WRITEONLY AM_SHARE("trucky") - AM_RANGE(0x0700, 0x07ff) AM_WRITEONLY AM_SHARE("truckram") - AM_RANGE(0x0800, 0x08ff) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x0900, 0x0903) AM_WRITEONLY AM_SHARE("carimage") - AM_RANGE(0x0a00, 0x0a03) AM_WRITEONLY AM_SHARE("cary") - AM_RANGE(0x0b00, 0x0bff) AM_RAM - AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1000, 0x1000) AM_READ(copsnrob_misc_r) - AM_RANGE(0x1000, 0x1000) AM_WRITE(copsnrob_misc2_w) - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("CTRL1") - AM_RANGE(0x1006, 0x1006) AM_READ_PORT("CTRL2") - AM_RANGE(0x100a, 0x100a) AM_READ_PORT("CTRL3") - AM_RANGE(0x100e, 0x100e) AM_READ_PORT("CTRL4") - AM_RANGE(0x1012, 0x1012) AM_READ_PORT("DSW") - AM_RANGE(0x1016, 0x1016) AM_READ_PORT("IN1") - AM_RANGE(0x101a, 0x101a) AM_READ_PORT("IN2") - AM_RANGE(0x1200, 0x1fff) AM_ROM -ADDRESS_MAP_END +void copsnrob_state::main_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x01ff).ram(); + map(0x0500, 0x0507).w("latch", FUNC(f9334_device::write_d0)); + map(0x0600, 0x0600).writeonly().share("trucky"); + map(0x0700, 0x07ff).writeonly().share("truckram"); + map(0x0800, 0x08ff).ram().share("bulletsram"); + map(0x0900, 0x0903).writeonly().share("carimage"); + map(0x0a00, 0x0a03).writeonly().share("cary"); + map(0x0b00, 0x0bff).ram(); + map(0x0c00, 0x0fff).ram().share("videoram"); + map(0x1000, 0x1000).r(this, FUNC(copsnrob_state::copsnrob_misc_r)); + map(0x1000, 0x1000).w(this, FUNC(copsnrob_state::copsnrob_misc2_w)); + map(0x1002, 0x1002).portr("CTRL1"); + map(0x1006, 0x1006).portr("CTRL2"); + map(0x100a, 0x100a).portr("CTRL3"); + map(0x100e, 0x100e).portr("CTRL4"); + map(0x1012, 0x1012).portr("DSW"); + map(0x1016, 0x1016).portr("IN1"); + map(0x101a, 0x101a).portr("IN2"); + map(0x1200, 0x1fff).rom(); +} diff --git a/src/mame/drivers/corona.cpp b/src/mame/drivers/corona.cpp index 15e38a57824..6bcfc71b49b 100644 --- a/src/mame/drivers/corona.cpp +++ b/src/mame/drivers/corona.cpp @@ -627,44 +627,48 @@ WRITE8_MEMBER(corona_state::wc_meters_w) */ -ADDRESS_MAP_START(corona_state::winner81_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xb800, 0xb8ff) AM_RAM // copied from 8000 (0x10 bytes, repeated) -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::winner81_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x70, 0x70) AM_WRITE(blitter_x_w) - AM_RANGE(0x71, 0x71) AM_WRITE(blitter_unk_w) - AM_RANGE(0x72, 0x72) AM_WRITE(blitter_trig_wdht_w) - AM_RANGE(0x74, 0x74) AM_WRITE(blitter_y_w) - AM_RANGE(0x75, 0x75) AM_READ(blitter_status_r) - AM_RANGE(0x76, 0x76) AM_WRITE(blitter_aux_w) - - AM_RANGE(0xd8, 0xd8) AM_WRITENOP /* dunno, but is writing 0's very often */ - AM_RANGE(0xdf, 0xdf) AM_WRITE(sound_latch_w) - - AM_RANGE(0xe8, 0xe8) AM_READ_PORT("IN0") /* credits for players A, B, C, D */ - AM_RANGE(0xe9, 0xe9) AM_READ_PORT("IN3") - AM_RANGE(0xea, 0xea) AM_READ_PORT("IN1") /* left & right for all players */ - AM_RANGE(0xeb, 0xeb) AM_READ_PORT("IN2") /* bet for all players */ - AM_RANGE(0xec, 0xec) AM_READ_PORT("IN4") - AM_RANGE(0xed, 0xed) AM_READ_PORT("DSW1") /* DIP switches bank 1 */ - AM_RANGE(0xee, 0xee) AM_READ_PORT("DSW2") - AM_RANGE(0xef, 0xef) AM_WRITE(wc_meters_w) /* meters: coin1 = bit0, coin2 = bit1, coinout = bit2 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::winner81_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::winner81_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void corona_state::winner81_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x8fff).ram().share("nvram"); + map(0xb800, 0xb8ff).ram(); // copied from 8000 (0x10 bytes, repeated) +} + +void corona_state::winner81_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x70, 0x70).w(this, FUNC(corona_state::blitter_x_w)); + map(0x71, 0x71).w(this, FUNC(corona_state::blitter_unk_w)); + map(0x72, 0x72).w(this, FUNC(corona_state::blitter_trig_wdht_w)); + map(0x74, 0x74).w(this, FUNC(corona_state::blitter_y_w)); + map(0x75, 0x75).r(this, FUNC(corona_state::blitter_status_r)); + map(0x76, 0x76).w(this, FUNC(corona_state::blitter_aux_w)); + + map(0xd8, 0xd8).nopw(); /* dunno, but is writing 0's very often */ + map(0xdf, 0xdf).w(this, FUNC(corona_state::sound_latch_w)); + + map(0xe8, 0xe8).portr("IN0"); /* credits for players A, B, C, D */ + map(0xe9, 0xe9).portr("IN3"); + map(0xea, 0xea).portr("IN1"); /* left & right for all players */ + map(0xeb, 0xeb).portr("IN2"); /* bet for all players */ + map(0xec, 0xec).portr("IN4"); + map(0xed, 0xed).portr("DSW1"); /* DIP switches bank 1 */ + map(0xee, 0xee).portr("DSW2"); + map(0xef, 0xef).w(this, FUNC(corona_state::wc_meters_w)); /* meters: coin1 = bit0, coin2 = bit1, coinout = bit2 */ +} + +void corona_state::winner81_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x8000, 0x83ff).ram(); +} + +void corona_state::winner81_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /* Winners Circle 1982 @@ -684,42 +688,46 @@ ADDRESS_MAP_END FE ---> Sound Latch (writes 01, 02 and 03 during attract)... */ -ADDRESS_MAP_START(corona_state::winner82_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0x80ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::winner82_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_WRITE(blitter_x_w) - AM_RANGE(0xf1, 0xf1) AM_WRITE(blitter_y_w) - AM_RANGE(0xf2, 0xf2) AM_WRITE(blitter_trig_wdht_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE(blitter_aux_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(blitter_unk_w) - AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r) - - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW1") /* coinage DIP SW */ - AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN0") /* controls for players A & B */ - AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN1") /* credits for players A, B, C, D */ - AM_RANGE(0xfb, 0xfb) AM_READ_PORT("IN3") /* single credits for players A, B, C, D, + fix bits 3, 4, 5, 6 in meters */ - AM_RANGE(0xfc, 0xfc) AM_WRITE(wc_meters_w) - AM_RANGE(0xfd, 0xfd) AM_READ_PORT("IN2") /* controls for players C & D */ - AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w) - AM_RANGE(0xff, 0xff) AM_READ_PORT("DSW2") /* no idea */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::winner82_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::winner82_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_WRITENOP /* socket for another ay, inited but never played */ -ADDRESS_MAP_END +void corona_state::winner82_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).ram().share("nvram"); + map(0x8000, 0x80ff).ram(); +} + +void corona_state::winner82_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).w(this, FUNC(corona_state::blitter_x_w)); + map(0xf1, 0xf1).w(this, FUNC(corona_state::blitter_y_w)); + map(0xf2, 0xf2).w(this, FUNC(corona_state::blitter_trig_wdht_w)); + map(0xf3, 0xf3).w(this, FUNC(corona_state::blitter_aux_w)); + map(0xf4, 0xf4).w(this, FUNC(corona_state::blitter_unk_w)); + map(0xf5, 0xf5).r(this, FUNC(corona_state::blitter_status_r)); + + map(0xf8, 0xf8).portr("DSW1"); /* coinage DIP SW */ + map(0xf9, 0xf9).portr("IN0"); /* controls for players A & B */ + map(0xfa, 0xfa).portr("IN1"); /* credits for players A, B, C, D */ + map(0xfb, 0xfb).portr("IN3"); /* single credits for players A, B, C, D, + fix bits 3, 4, 5, 6 in meters */ + map(0xfc, 0xfc).w(this, FUNC(corona_state::wc_meters_w)); + map(0xfd, 0xfd).portr("IN2"); /* controls for players C & D */ + map(0xfe, 0xfe).w(this, FUNC(corona_state::sound_latch_w)); + map(0xff, 0xff).portr("DSW2"); /* no idea */ +} + +void corona_state::winner82_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram(); +} + +void corona_state::winner82_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x03).nopw(); /* socket for another ay, inited but never played */ +} /* Ruleta RE-800 @@ -748,38 +756,42 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(corona_state::re800_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") //801a comm? -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::re800_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_WRITE(blitter_x_w) - AM_RANGE(0xf1, 0xf1) AM_WRITE(blitter_y_w) - AM_RANGE(0xf2, 0xf2) AM_WRITE(blitter_trig_wdht_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE(blitter_aux_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(blitter_unk_w) - AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r) - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("IN1") - AM_RANGE(0xf9, 0xf9) AM_READ_PORT("DSW1") - AM_RANGE(0xfc, 0xfc) AM_WRITE(mux_port_w) - AM_RANGE(0xfd, 0xfd) AM_READ(mux_port_r) - AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w) - AM_RANGE(0xff, 0xff) AM_WRITE(ball_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::re800_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::re800_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void corona_state::re800_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x87ff).ram().share("nvram"); //801a comm? +} + +void corona_state::re800_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).w(this, FUNC(corona_state::blitter_x_w)); + map(0xf1, 0xf1).w(this, FUNC(corona_state::blitter_y_w)); + map(0xf2, 0xf2).w(this, FUNC(corona_state::blitter_trig_wdht_w)); + map(0xf3, 0xf3).w(this, FUNC(corona_state::blitter_aux_w)); + map(0xf4, 0xf4).w(this, FUNC(corona_state::blitter_unk_w)); + map(0xf5, 0xf5).r(this, FUNC(corona_state::blitter_status_r)); + map(0xf8, 0xf8).portr("IN1"); + map(0xf9, 0xf9).portr("DSW1"); + map(0xfc, 0xfc).w(this, FUNC(corona_state::mux_port_w)); + map(0xfd, 0xfd).r(this, FUNC(corona_state::mux_port_r)); + map(0xfe, 0xfe).w(this, FUNC(corona_state::sound_latch_w)); + map(0xff, 0xff).w(this, FUNC(corona_state::ball_w)); +} + +void corona_state::re800_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x8000, 0x83ff).ram(); +} + +void corona_state::re800_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /* Lucky Roulette @@ -808,38 +820,42 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(corona_state::luckyrlt_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::luckyrlt_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_WRITE(blitter_x_w) - AM_RANGE(0xf1, 0xf1) AM_WRITE(blitter_y_w) - AM_RANGE(0xf2, 0xf2) AM_WRITE(blitter_trig_wdht_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE(blitter_aux_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(blitter_unk_w) - AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r) - - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW2") - AM_RANGE(0xf9, 0xf9) AM_WRITE(ball_w) - AM_RANGE(0xfa, 0xfa) AM_READ_PORT("DSW1") - AM_RANGE(0xfc, 0xfc) AM_WRITE(mux_port_w) - AM_RANGE(0xfd, 0xfd) AM_READ(mux_port_r) - AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::luckyrlt_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(corona_state::luckyrlt_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sound_latch_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void corona_state::luckyrlt_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().share("nvram"); +} + +void corona_state::luckyrlt_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).w(this, FUNC(corona_state::blitter_x_w)); + map(0xf1, 0xf1).w(this, FUNC(corona_state::blitter_y_w)); + map(0xf2, 0xf2).w(this, FUNC(corona_state::blitter_trig_wdht_w)); + map(0xf3, 0xf3).w(this, FUNC(corona_state::blitter_aux_w)); + map(0xf4, 0xf4).w(this, FUNC(corona_state::blitter_unk_w)); + map(0xf5, 0xf5).r(this, FUNC(corona_state::blitter_status_r)); + + map(0xf8, 0xf8).portr("DSW2"); + map(0xf9, 0xf9).w(this, FUNC(corona_state::ball_w)); + map(0xfa, 0xfa).portr("DSW1"); + map(0xfc, 0xfc).w(this, FUNC(corona_state::mux_port_w)); + map(0xfd, 0xfd).r(this, FUNC(corona_state::mux_port_r)); + map(0xfe, 0xfe).w(this, FUNC(corona_state::sound_latch_w)); +} + +void corona_state::luckyrlt_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram(); +} + +void corona_state::luckyrlt_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(corona_state::sound_latch_r)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /********************************* diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp index d9482ff4414..a2711de60f6 100644 --- a/src/mame/drivers/cortex.cpp +++ b/src/mame/drivers/cortex.cpp @@ -85,20 +85,22 @@ private: required_ioport m_io_dsw; }; -ADDRESS_MAP_START(cortex_state::mem_map) - AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x8000, 0xefff) AM_RAM - AM_RANGE(0xf100, 0xf11f) AM_RAM // memory mapping unit - AM_RANGE(0xf120, 0xf120) AM_DEVREADWRITE("crtc", tms9928a_device, vram_read, vram_write) - AM_RANGE(0xf121, 0xf121) AM_DEVREADWRITE("crtc", tms9928a_device, register_read, register_write) +void cortex_state::mem_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bankr0").bankw("bankw0"); + map(0x8000, 0xefff).ram(); + map(0xf100, 0xf11f).ram(); // memory mapping unit + map(0xf120, 0xf120).rw("crtc", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0xf121, 0xf121).rw("crtc", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); //AM_RANGE(0xf140, 0xf147) // fdc tms9909 -ADDRESS_MAP_END +} -ADDRESS_MAP_START(cortex_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x18) AM_DEVWRITE("control", ls259_device, write_d0) - AM_RANGE(0x0000, 0x0000) AM_READ(pio_r) - AM_RANGE(0x0001, 0x0001) AM_READ(keyboard_r) +void cortex_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0007).mirror(0x18).w("control", FUNC(ls259_device::write_d0)); + map(0x0000, 0x0000).r(this, FUNC(cortex_state::pio_r)); + map(0x0001, 0x0001).r(this, FUNC(cortex_state::keyboard_r)); //AM_RANGE(0x0040, 0x005f) AM_DEVWRITE("uart1", tms9902_device, cruwrite) // RS232 (r12 = 80-bf) //AM_RANGE(0x0008, 0x000b) AM_DEVREAD("uart1", tms9902_device, cruread) // RS232 //AM_RANGE(0x00c0, 0x00df) AM_DEVWRITE("uart2", tms9902_device, cruwrite) // Cassette (r12 = 180-1bf) @@ -108,7 +110,7 @@ ADDRESS_MAP_START(cortex_state::io_map) //AM_RANGE(0x0400, 0x0407) AM_WRITE(cent_data_w) // r12 = 800-80e //AM_RANGE(0x0408, 0x0408) AM_WRITE(cent_strobe_w) // r12 = 810 //AM_RANGE(0x0081, 0x0081) AM_READ(cent_stat_r) // CRU 409 (r12 = 812) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( cortex ) diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp index 4471b97e5ee..81a10e46730 100644 --- a/src/mame/drivers/cosmic.cpp +++ b/src/mame/drivers/cosmic.cpp @@ -376,61 +376,66 @@ WRITE8_MEMBER(cosmic_state::flip_screen_w) } -ADDRESS_MAP_START(cosmic_state::panic_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x601f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1") - AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2") - AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW") - AM_RANGE(0x6803, 0x6803) AM_READ_PORT("SYSTEM") - AM_RANGE(0x7000, 0x700b) AM_WRITE(panic_sound_output_w) - AM_RANGE(0x700c, 0x700e) AM_WRITE(cosmic_color_register_w) - AM_RANGE(0x700f, 0x700f) AM_WRITE(flip_screen_w) - AM_RANGE(0x7800, 0x7801) AM_WRITE(panic_sound_output2_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(cosmic_state::cosmica_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x601f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1") - AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2") - AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW") - AM_RANGE(0x6803, 0x6803) AM_READ(cosmica_pixel_clock_r) - AM_RANGE(0x7000, 0x700b) AM_WRITE(cosmica_sound_output_w) - AM_RANGE(0x700c, 0x700d) AM_WRITE(cosmic_color_register_w) - AM_RANGE(0x700f, 0x700f) AM_WRITE(flip_screen_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(cosmic_state::cosmicg_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cosmic_state::cosmicg_io_map) - AM_RANGE(0x00, 0x00) AM_READ(cosmicg_port_0_r) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x00, 0x15) AM_WRITE(cosmicg_output_w) - AM_RANGE(0x16, 0x17) AM_WRITE(cosmic_color_register_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(cosmic_state::magspot_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3800, 0x3807) AM_READ(magspot_coinage_dip_r) - AM_RANGE(0x4000, 0x401f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x4800, 0x4800) AM_WRITE(dac_w) - AM_RANGE(0x480c, 0x480d) AM_WRITE(cosmic_color_register_w) - AM_RANGE(0x480f, 0x480f) AM_WRITE(flip_screen_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") - AM_RANGE(0x5001, 0x5001) AM_READ_PORT("IN1") - AM_RANGE(0x5002, 0x5002) AM_READ_PORT("IN2") - AM_RANGE(0x5003, 0x5003) AM_READ_PORT("IN3") - AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void cosmic_state::panic_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x601f).writeonly().share("spriteram"); + map(0x6800, 0x6800).portr("P1"); + map(0x6801, 0x6801).portr("P2"); + map(0x6802, 0x6802).portr("DSW"); + map(0x6803, 0x6803).portr("SYSTEM"); + map(0x7000, 0x700b).w(this, FUNC(cosmic_state::panic_sound_output_w)); + map(0x700c, 0x700e).w(this, FUNC(cosmic_state::cosmic_color_register_w)); + map(0x700f, 0x700f).w(this, FUNC(cosmic_state::flip_screen_w)); + map(0x7800, 0x7801).w(this, FUNC(cosmic_state::panic_sound_output2_w)); +} + + +void cosmic_state::cosmica_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x601f).writeonly().share("spriteram"); + map(0x6800, 0x6800).portr("P1"); + map(0x6801, 0x6801).portr("P2"); + map(0x6802, 0x6802).portr("DSW"); + map(0x6803, 0x6803).r(this, FUNC(cosmic_state::cosmica_pixel_clock_r)); + map(0x7000, 0x700b).w(this, FUNC(cosmic_state::cosmica_sound_output_w)); + map(0x700c, 0x700d).w(this, FUNC(cosmic_state::cosmic_color_register_w)); + map(0x700f, 0x700f).w(this, FUNC(cosmic_state::flip_screen_w)); +} + + +void cosmic_state::cosmicg_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("videoram"); +} + +void cosmic_state::cosmicg_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(cosmic_state::cosmicg_port_0_r)); + map(0x01, 0x01).portr("IN1"); + map(0x00, 0x15).w(this, FUNC(cosmic_state::cosmicg_output_w)); + map(0x16, 0x17).w(this, FUNC(cosmic_state::cosmic_color_register_w)); +} + + +void cosmic_state::magspot_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3800, 0x3807).r(this, FUNC(cosmic_state::magspot_coinage_dip_r)); + map(0x4000, 0x401f).writeonly().share("spriteram"); + map(0x4800, 0x4800).w(this, FUNC(cosmic_state::dac_w)); + map(0x480c, 0x480d).w(this, FUNC(cosmic_state::cosmic_color_register_w)); + map(0x480f, 0x480f).w(this, FUNC(cosmic_state::flip_screen_w)); + map(0x5000, 0x5000).portr("IN0"); + map(0x5001, 0x5001).portr("IN1"); + map(0x5002, 0x5002).portr("IN2"); + map(0x5003, 0x5003).portr("IN3"); + map(0x6000, 0x7fff).ram().share("videoram"); +} WRITE_LINE_MEMBER(cosmic_state::panic_coin_inserted) diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp index a064a532350..609bf5631e4 100644 --- a/src/mame/drivers/cosmicos.cpp +++ b/src/mame/drivers/cosmicos.cpp @@ -179,20 +179,22 @@ WRITE8_MEMBER( cosmicos_state::display_w ) /* Memory Maps */ -ADDRESS_MAP_START(cosmicos_state::cosmicos_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void cosmicos_state::cosmicos_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(cosmicos_state::read), FUNC(cosmicos_state::write)); +} -ADDRESS_MAP_START(cosmicos_state::cosmicos_io) +void cosmicos_state::cosmicos_io(address_map &map) +{ // AM_RANGE(0x00, 0x00) - AM_RANGE(0x01, 0x01) AM_READ(video_on_r) - AM_RANGE(0x02, 0x02) AM_READWRITE(video_off_r, audio_latch_w) + map(0x01, 0x01).r(this, FUNC(cosmicos_state::video_on_r)); + map(0x02, 0x02).rw(this, FUNC(cosmicos_state::video_off_r), FUNC(cosmicos_state::audio_latch_w)); // AM_RANGE(0x03, 0x03) // AM_RANGE(0x04, 0x04) - AM_RANGE(0x05, 0x05) AM_READWRITE(hex_keyboard_r, hex_keylatch_w) - AM_RANGE(0x06, 0x06) AM_READWRITE(reset_counter_r, segment_w) - AM_RANGE(0x07, 0x07) AM_READWRITE(data_r, display_w) -ADDRESS_MAP_END + map(0x05, 0x05).rw(this, FUNC(cosmicos_state::hex_keyboard_r), FUNC(cosmicos_state::hex_keylatch_w)); + map(0x06, 0x06).rw(this, FUNC(cosmicos_state::reset_counter_r), FUNC(cosmicos_state::segment_w)); + map(0x07, 0x07).rw(this, FUNC(cosmicos_state::data_r), FUNC(cosmicos_state::display_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp index 88e32f6fb54..16ef8d7b843 100644 --- a/src/mame/drivers/cp1.cpp +++ b/src/mame/drivers/cp1.cpp @@ -181,10 +181,11 @@ WRITE8_MEMBER(cp1_state::i8155_portc_w) } -ADDRESS_MAP_START(cp1_state::cp1_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0xff ) AM_READWRITE( i8155_read, i8155_write) -ADDRESS_MAP_END +void cp1_state::cp1_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0xff).rw(this, FUNC(cp1_state::i8155_read), FUNC(cp1_state::i8155_write)); +} /* Input ports */ INPUT_PORTS_START( cp1 ) diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp index 5497eafc7eb..5ac0dced03b 100644 --- a/src/mame/drivers/cps1.cpp +++ b/src/mame/drivers/cps1.cpp @@ -535,34 +535,36 @@ All PRGx go to B-board. Provision for up to 4MB of ROM space, which was never us */ -ADDRESS_MAP_START(cps_state::main_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ +void cps_state::main_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x800007).portr("IN1"); /* Player input ports */ /* forgottn, willow, cawing, nemo, varth read from 800010. Probably debug input leftover from development */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800020, 0x800021) AM_READNOP /* ? Used by Rockman ? not mapped according to PAL */ - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800020, 0x800021).nopr(); /* ? Used by Rockman ? not mapped according to PAL */ + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); /* Forgotten Worlds has dial controls on B-board mapped at 800040-80005f. See below */ - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ /* CPS-B custom is mapped by the PAL IOB2 on the B-board. SF2 revision "E" World and USA 910228 has it at a different address, see DRIVER_INIT */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */ - AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x800180, 0x800187).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */ + map(0x800188, 0x80018f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* SF2CE executes code from here */ + map(0xff0000, 0xffffff).ram().share("mainram"); +} /* Forgotten Worlds has a NEC uPD4701AC on the B-board handling dial inputs from the CN-MOWS connector. */ /* The memory mapping is handled by PAL LWIO */ -ADDRESS_MAP_START(cps_state::forgottn_map) - AM_IMPORT_FROM(main_map) - AM_RANGE(0x800040, 0x800041) AM_DEVWRITE8("upd4701", upd4701_device, reset_x, 0x00ff) - AM_RANGE(0x800048, 0x800049) AM_DEVWRITE8("upd4701", upd4701_device, reset_y, 0x00ff) - AM_RANGE(0x800052, 0x800055) AM_DEVREAD8("upd4701", upd4701_device, read_x, 0x00ff) - AM_RANGE(0x80005a, 0x80005d) AM_DEVREAD8("upd4701", upd4701_device, read_y, 0x00ff) -ADDRESS_MAP_END +void cps_state::forgottn_map(address_map &map) +{ + main_map(map); + map(0x800041, 0x800041).w("upd4701", FUNC(upd4701_device::reset_x)); + map(0x800049, 0x800049).w("upd4701", FUNC(upd4701_device::reset_y)); + map(0x800052, 0x800055).r("upd4701", FUNC(upd4701_device::read_x)).umask16(0x00ff); + map(0x80005a, 0x80005d).r("upd4701", FUNC(upd4701_device::read_y)).umask16(0x00ff); +} /* PAL SOU1 (16P8 @ 13E): @@ -587,84 +589,90 @@ SOUNDA15 = pin13 = ( I1 ) /SOUNDCE = pin12 = ! ( !I0 & (!I1 | ( I1 & !I2)) ) */ -ADDRESS_MAP_START(cps_state::sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w) - AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */ - AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound command */ - AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* Sound timer fade */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::qsound_main_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom (mapped by LWIO/IOB1 PAL on B-board) */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */ - AM_RANGE(0xf00000, 0xf0ffff) AM_READ(qsound_rom_r) /* Slammasters protection */ - AM_RANGE(0xf18000, 0xf19fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */ - AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */ - AM_RANGE(0xf1c002, 0xf1c003) AM_READ_PORT("IN3") /* Player 4 controls ("Muscle Bombers") */ - AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */ - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xf1e000, 0xf1ffff) AM_READWRITE(qsound_sharedram2_r, qsound_sharedram2_w) /* Q RAM */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::qsound_sub_map) // used by cps2.c too - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* banked (contains music data) */ - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("qsound_ram1") - AM_RANGE(0xd000, 0xd002) AM_DEVWRITE("qsound", qsound_device, qsound_w) - AM_RANGE(0xd003, 0xd003) AM_WRITE(qsound_banksw_w) - AM_RANGE(0xd007, 0xd007) AM_DEVREAD("qsound", qsound_device, qsound_r) - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("qsound_ram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::qsound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("decrypted") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sf2m3_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800010, 0x800011) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800028, 0x80002f) AM_READ(cps1_hack_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x800186, 0x800187) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */ - AM_RANGE(0x800190, 0x800197) AM_WRITE(cps1_soundlatch_w) /* Sound command */ - AM_RANGE(0x800198, 0x80019f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ - AM_RANGE(0x8001a0, 0x8001c3) AM_WRITE(cps1_cps_a_w) - AM_RANGE(0x8001c4, 0x8001c5) AM_WRITE(sf2m3_layer_w) - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sf2m10_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_hack_dsw_r) - AM_RANGE(0x800020, 0x800021) AM_READNOP - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) - AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) - AM_RANGE(0x8001a2, 0x8001b3) AM_WRITE(cps1_cps_a_w) // make 8001b2 point at 800110 - AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // writes FFFF here a lot - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xe00000, 0xefffff) AM_RAM // it writes to the whole range at start - AM_RANGE(0xf1c000, 0xf1c001) AM_READ(cps1_in2_r) - AM_RANGE(0xfeff00, 0xfeffff) AM_RAM // fix stack crash at start - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END +void cps_state::sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xd000, 0xd7ff).ram(); + map(0xf000, 0xf001).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf004, 0xf004).w(this, FUNC(cps_state::cps1_snd_bankswitch_w)); + map(0xf006, 0xf006).w(this, FUNC(cps_state::cps1_oki_pin7_w)); /* controls pin 7 of OKI chip */ + map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound command */ + map(0xf00a, 0xf00a).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); /* Sound timer fade */ +} + +void cps_state::qsound_main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x800000, 0x800007).portr("IN1"); /* Player input ports */ + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom (mapped by LWIO/IOB1 PAL on B-board) */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* SF2CE executes code from here */ + map(0xf00000, 0xf0ffff).r(this, FUNC(cps_state::qsound_rom_r)); /* Slammasters protection */ + map(0xf18000, 0xf19fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */ + map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */ + map(0xf1c002, 0xf1c003).portr("IN3"); /* Player 4 controls ("Muscle Bombers") */ + map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ + map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); + map(0xf1e000, 0xf1ffff).rw(this, FUNC(cps_state::qsound_sharedram2_r), FUNC(cps_state::qsound_sharedram2_w)); /* Q RAM */ + map(0xff0000, 0xffffff).ram().share("mainram"); +} + +void cps_state::qsound_sub_map(address_map &map) +{ // used by cps2.c too + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); /* banked (contains music data) */ + map(0xc000, 0xcfff).ram().share("qsound_ram1"); + map(0xd000, 0xd002).w("qsound", FUNC(qsound_device::qsound_w)); + map(0xd003, 0xd003).w(this, FUNC(cps_state::qsound_banksw_w)); + map(0xd007, 0xd007).r("qsound", FUNC(qsound_device::qsound_r)); + map(0xf000, 0xffff).ram().share("qsound_ram2"); +} + +void cps_state::qsound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("decrypted"); +} + +void cps_state::sf2m3_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800010, 0x800011).portr("IN1"); /* Player input ports */ + map(0x800028, 0x80002f).r(this, FUNC(cps_state::cps1_hack_dsw_r)); /* System input ports / Dip Switches */ + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */ + map(0x800186, 0x800187).r(this, FUNC(cps_state::cps1_in2_r)); /* Buttons 4,5,6 for both players */ + map(0x800190, 0x800197).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */ + map(0x800198, 0x80019f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */ + map(0x8001a0, 0x8001c3).w(this, FUNC(cps_state::cps1_cps_a_w)); + map(0x8001c4, 0x8001c5).w(this, FUNC(cps_state::sf2m3_layer_w)); + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::sf2m10_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x800007).portr("IN1"); + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_hack_dsw_r)); + map(0x800020, 0x800021).nopr(); + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x800180, 0x800187).w(this, FUNC(cps_state::cps1_soundlatch_w)); + map(0x800188, 0x80018f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); + map(0x8001a2, 0x8001b3).w(this, FUNC(cps_state::cps1_cps_a_w)); // make 8001b2 point at 800110 + map(0x8001fe, 0x8001ff).nopw(); // writes FFFF here a lot + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xe00000, 0xefffff).ram(); // it writes to the whole range at start + map(0xf1c000, 0xf1c001).r(this, FUNC(cps_state::cps1_in2_r)); + map(0xfeff00, 0xfeffff).ram(); // fix stack crash at start + map(0xff0000, 0xffffff).ram().share("mainram"); +} /*********************************************************** INPUT PORTS, DIPs diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index a1c50963ee9..c6f2569ffdb 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -926,65 +926,68 @@ READ16_MEMBER(cps_state::joy_or_paddle_ecofghtr_r) * *************************************/ -ADDRESS_MAP_START(cps_state::cps2_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM /* 68000 ROM */ - AM_RANGE(0x400000, 0x40000b) AM_RAM AM_SHARE("output") /* CPS2 object output */ - AM_RANGE(0x618000, 0x619fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */ - AM_RANGE(0x660000, 0x663fff) AM_RAM /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */ - AM_RANGE(0x662000, 0x662001) AM_RAM /* Network adapter related, accessed in SSF2TB */ - AM_RANGE(0x662008, 0x662009) AM_RAM /* Network adapter related, accessed in SSF2TB */ - AM_RANGE(0x662020, 0x662021) AM_RAM /* Network adapter related, accessed in SSF2TB */ - AM_RANGE(0x664000, 0x664001) AM_RAM /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */ - AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_SHARE("objram1") /* Object RAM, no game seems to use it directly */ - AM_RANGE(0x708000, 0x709fff) AM_MIRROR(0x006000) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_SHARE("objram2") /* Object RAM */ - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* mirror (sfa) */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* mirror (sfa) */ - AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2") /* IN2 + EEPROM */ - AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r) /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ - AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w) /* EEPROM */ - AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP /* Unknown (reset once on startup) */ - AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r) /* unknown (xmcotaj hangs if this is 0) */ - AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w) /* bit 0 = Object ram bank swap */ - AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x804140, 0x80417f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) /* CPS-B custom */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* Video RAM */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM /* RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::decrypted_opcodes_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_SHARE("decrypted_opcodes") /* 68000 ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::dead_cps2_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM /* 68000 ROM */ - AM_RANGE(0x400000, 0x40000b) AM_RAM AM_SHARE("output") /* CPS2 object output */ - AM_RANGE(0x618000, 0x619fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w) /* Q RAM */ - AM_RANGE(0x660000, 0x663fff) AM_RAM /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */ - AM_RANGE(0x662000, 0x662001) AM_RAM /* Network adapter related, accessed in SSF2TB */ - AM_RANGE(0x662008, 0x662009) AM_RAM /* Network adapter related, accessed in SSF2TB */ - AM_RANGE(0x662020, 0x662021) AM_RAM /* Network adapter related, accessed in SSF2TB */ - AM_RANGE(0x664000, 0x664001) AM_RAM /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */ - AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_SHARE("objram1") /* Object RAM, no game seems to use it directly */ - AM_RANGE(0x708000, 0x709fff) AM_MIRROR(0x006000) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_SHARE("objram2") /* Object RAM */ - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* mirror (sfa) */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* mirror (sfa) */ - AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2") /* IN2 + EEPROM */ - AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r) /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ - AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w) /* EEPROM */ - AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP /* Unknown (reset once on startup) */ - AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r) /* unknown (xmcotaj hangs if this is 0) */ - AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w) /* bit 0 = Object ram bank swap */ - AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x804140, 0x80417f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) /* CPS-B custom */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* Video RAM */ - AM_RANGE(0xff0000, 0xffffef) AM_RAM /* RAM */ - AM_RANGE(0xfffff0, 0xfffffb) AM_RAM AM_SHARE("output") /* CPS2 output */ - AM_RANGE(0xfffffc, 0xffffff) AM_RAM -ADDRESS_MAP_END +void cps_state::cps2_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); /* 68000 ROM */ + map(0x400000, 0x40000b).ram().share("output"); /* CPS2 object output */ + map(0x618000, 0x619fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */ + map(0x660000, 0x663fff).ram(); /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */ + map(0x662000, 0x662001).ram(); /* Network adapter related, accessed in SSF2TB */ + map(0x662008, 0x662009).ram(); /* Network adapter related, accessed in SSF2TB */ + map(0x662020, 0x662021).ram(); /* Network adapter related, accessed in SSF2TB */ + map(0x664000, 0x664001).ram(); /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */ + map(0x700000, 0x701fff).w(this, FUNC(cps_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */ + map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps_state::cps2_objram2_r), FUNC(cps_state::cps2_objram2_w)).share("objram2"); /* Object RAM */ + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */ + map(0x804000, 0x804001).portr("IN0"); /* IN0 */ + map(0x804010, 0x804011).portr("IN1"); /* IN1 */ + map(0x804020, 0x804021).portr("IN2"); /* IN2 + EEPROM */ + map(0x804030, 0x804031).r(this, FUNC(cps_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ + map(0x804040, 0x804041).w(this, FUNC(cps_state::cps2_eeprom_port_w)); /* EEPROM */ + map(0x8040a0, 0x8040a1).nopw(); /* Unknown (reset once on startup) */ + map(0x8040b0, 0x8040b3).r(this, FUNC(cps_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */ + map(0x8040e0, 0x8040e1).w(this, FUNC(cps_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */ + map(0x804100, 0x80413f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x804140, 0x80417f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)); /* CPS-B custom */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */ + map(0xff0000, 0xffffff).ram(); /* RAM */ +} + +void cps_state::decrypted_opcodes_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom().share("decrypted_opcodes"); /* 68000 ROM */ +} + +void cps_state::dead_cps2_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); /* 68000 ROM */ + map(0x400000, 0x40000b).ram().share("output"); /* CPS2 object output */ + map(0x618000, 0x619fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */ + map(0x660000, 0x663fff).ram(); /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */ + map(0x662000, 0x662001).ram(); /* Network adapter related, accessed in SSF2TB */ + map(0x662008, 0x662009).ram(); /* Network adapter related, accessed in SSF2TB */ + map(0x662020, 0x662021).ram(); /* Network adapter related, accessed in SSF2TB */ + map(0x664000, 0x664001).ram(); /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */ + map(0x700000, 0x701fff).w(this, FUNC(cps_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */ + map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps_state::cps2_objram2_r), FUNC(cps_state::cps2_objram2_w)).share("objram2"); /* Object RAM */ + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */ + map(0x804000, 0x804001).portr("IN0"); /* IN0 */ + map(0x804010, 0x804011).portr("IN1"); /* IN1 */ + map(0x804020, 0x804021).portr("IN2"); /* IN2 + EEPROM */ + map(0x804030, 0x804031).r(this, FUNC(cps_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ + map(0x804040, 0x804041).w(this, FUNC(cps_state::cps2_eeprom_port_w)); /* EEPROM */ + map(0x8040a0, 0x8040a1).nopw(); /* Unknown (reset once on startup) */ + map(0x8040b0, 0x8040b3).r(this, FUNC(cps_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */ + map(0x8040e0, 0x8040e1).w(this, FUNC(cps_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */ + map(0x804100, 0x80413f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x804140, 0x80417f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)); /* CPS-B custom */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */ + map(0xff0000, 0xffffef).ram(); /* RAM */ + map(0xfffff0, 0xfffffb).ram().share("output"); /* CPS2 output */ + map(0xfffffc, 0xffffff).ram(); +} /************************************* diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index aed09d9f26d..d2a468f2e2c 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -2147,77 +2147,79 @@ WRITE32_MEMBER(cps3_state::cps3_colourram_w) /* there are more unknown writes, but you get the idea */ -ADDRESS_MAP_START(cps3_state::cps3_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("bios", 0) // Bios ROM - AM_RANGE(0x02000000, 0x0207ffff) AM_RAM AM_SHARE("mainram") // Main RAM +void cps3_state::cps3_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().region("bios", 0); // Bios ROM + map(0x02000000, 0x0207ffff).ram().share("mainram"); // Main RAM - AM_RANGE(0x03000000, 0x030003ff) AM_RAM // 'FRAM' (SFIII memory test mode ONLY) + map(0x03000000, 0x030003ff).ram(); // 'FRAM' (SFIII memory test mode ONLY) // AM_RANGE(0x04000000, 0x0407dfff) AM_RAM AM_SHARE("spriteram")//AM_WRITEONLY // Sprite RAM (jojoba tests this size) - AM_RANGE(0x04000000, 0x0407ffff) AM_RAM AM_SHARE("spriteram")//AM_WRITEONLY // Sprite RAM + map(0x04000000, 0x0407ffff).ram().share("spriteram");//AM_WRITEONLY // Sprite RAM - AM_RANGE(0x04080000, 0x040bffff) AM_READWRITE(cps3_colourram_r, cps3_colourram_w) AM_SHARE("colourram") // Colour RAM (jojoba tests this size) 0x20000 colours?! + map(0x04080000, 0x040bffff).rw(this, FUNC(cps3_state::cps3_colourram_r), FUNC(cps3_state::cps3_colourram_w)).share("colourram"); // Colour RAM (jojoba tests this size) 0x20000 colours?! // video registers of some kind probably - AM_RANGE(0x040C0000, 0x040C0003) AM_READ(cps3_40C0000_r)//?? every frame - AM_RANGE(0x040C0004, 0x040C0007) AM_READ(cps3_40C0004_r)//AM_READ(cps3_40C0004_r) // warzard reads this! + map(0x040C0000, 0x040C0003).r(this, FUNC(cps3_state::cps3_40C0000_r));//?? every frame + map(0x040C0004, 0x040C0007).r(this, FUNC(cps3_state::cps3_40C0004_r));//AM_READ(cps3_40C0004_r) // warzard reads this! // AM_RANGE(0x040C0008, 0x040C000b) AM_WRITENOP//?? - AM_RANGE(0x040C000c, 0x040C000f) AM_READ(cps3_vbl_r)// AM_WRITENOP/ + map(0x040C000c, 0x040C000f).r(this, FUNC(cps3_state::cps3_vbl_r));// AM_WRITENOP/ - AM_RANGE(0x040C0000, 0x040C001f) AM_WRITE(cps3_unk_vidregs_w) - AM_RANGE(0x040C0020, 0x040C002b) AM_WRITEONLY AM_SHARE("tmap20_regs") - AM_RANGE(0x040C0030, 0x040C003b) AM_WRITEONLY AM_SHARE("tmap30_regs") - AM_RANGE(0x040C0040, 0x040C004b) AM_WRITEONLY AM_SHARE("tmap40_regs") - AM_RANGE(0x040C0050, 0x040C005b) AM_WRITEONLY AM_SHARE("tmap50_regs") + map(0x040C0000, 0x040C001f).w(this, FUNC(cps3_state::cps3_unk_vidregs_w)); + map(0x040C0020, 0x040C002b).writeonly().share("tmap20_regs"); + map(0x040C0030, 0x040C003b).writeonly().share("tmap30_regs"); + map(0x040C0040, 0x040C004b).writeonly().share("tmap40_regs"); + map(0x040C0050, 0x040C005b).writeonly().share("tmap50_regs"); - AM_RANGE(0x040C0060, 0x040C007f) AM_RAM AM_SHARE("fullscreenzoom") + map(0x040C0060, 0x040C007f).ram().share("fullscreenzoom"); - AM_RANGE(0x040C0094, 0x040C009b) AM_WRITE(cps3_characterdma_w) + map(0x040C0094, 0x040C009b).w(this, FUNC(cps3_state::cps3_characterdma_w)); - AM_RANGE(0x040C00a0, 0x040C00af) AM_WRITE(cps3_palettedma_w) + map(0x040C00a0, 0x040C00af).w(this, FUNC(cps3_state::cps3_palettedma_w)); - AM_RANGE(0x040C0084, 0x040C0087) AM_WRITE(cram_bank_w) - AM_RANGE(0x040C0088, 0x040C008b) AM_WRITE(cram_gfxflash_bank_w) + map(0x040C0084, 0x040C0087).w(this, FUNC(cps3_state::cram_bank_w)); + map(0x040C0088, 0x040C008b).w(this, FUNC(cps3_state::cram_gfxflash_bank_w)); - AM_RANGE(0x040e0000, 0x040e02ff) AM_DEVREADWRITE("cps3sound", cps3_sound_device, cps3_sound_r, cps3_sound_w) + map(0x040e0000, 0x040e02ff).rw(m_cps3sound, FUNC(cps3_sound_device::cps3_sound_r), FUNC(cps3_sound_device::cps3_sound_w)); - AM_RANGE(0x04100000, 0x041fffff) AM_READWRITE(cram_data_r, cram_data_w) - AM_RANGE(0x04200000, 0x043fffff) AM_READWRITE(cps3_gfxflash_r, cps3_gfxflash_w) // GFX Flash ROMS + map(0x04100000, 0x041fffff).rw(this, FUNC(cps3_state::cram_data_r), FUNC(cps3_state::cram_data_w)); + map(0x04200000, 0x043fffff).rw(this, FUNC(cps3_state::cps3_gfxflash_r), FUNC(cps3_state::cps3_gfxflash_w)); // GFX Flash ROMS - AM_RANGE(0x05000000, 0x05000003) AM_READ_PORT("INPUTS") - AM_RANGE(0x05000004, 0x05000007) AM_READ_PORT("EXTRA") + map(0x05000000, 0x05000003).portr("INPUTS"); + map(0x05000004, 0x05000007).portr("EXTRA"); - AM_RANGE(0x05000008, 0x0500000b) AM_WRITENOP // ?? every frame + map(0x05000008, 0x0500000b).nopw(); // ?? every frame - AM_RANGE(0x05000a00, 0x05000a1f) AM_READ(cps3_unk_io_r ) // ?? every frame + map(0x05000a00, 0x05000a1f).r(this, FUNC(cps3_state::cps3_unk_io_r)); // ?? every frame - AM_RANGE(0x05001000, 0x05001203) AM_READWRITE(cps3_eeprom_r, cps3_eeprom_w ) + map(0x05001000, 0x05001203).rw(this, FUNC(cps3_state::cps3_eeprom_r), FUNC(cps3_state::cps3_eeprom_w)); - AM_RANGE(0x05040000, 0x0504ffff) AM_READWRITE(cps3_ssram_r,cps3_ssram_w) // 'SS' RAM (Score Screen) (text tilemap + toles) + map(0x05040000, 0x0504ffff).rw(this, FUNC(cps3_state::cps3_ssram_r), FUNC(cps3_state::cps3_ssram_w)); // 'SS' RAM (Score Screen) (text tilemap + toles) //0x25050020 - AM_RANGE(0x05050020, 0x05050023) AM_WRITE(cps3_ss_bank_base_w ) - AM_RANGE(0x05050024, 0x05050027) AM_WRITE(cps3_ss_pal_base_w ) + map(0x05050020, 0x05050023).w(this, FUNC(cps3_state::cps3_ss_bank_base_w)); + map(0x05050024, 0x05050027).w(this, FUNC(cps3_state::cps3_ss_pal_base_w)); - AM_RANGE(0x05100000, 0x05100003) AM_WRITE(cps3_irq12_ack_w ) - AM_RANGE(0x05110000, 0x05110003) AM_WRITE(cps3_irq10_ack_w ) + map(0x05100000, 0x05100003).w(this, FUNC(cps3_state::cps3_irq12_ack_w)); + map(0x05110000, 0x05110003).w(this, FUNC(cps3_state::cps3_irq10_ack_w)); - AM_RANGE(0x05140000, 0x05140003) AM_DEVREADWRITE8("wd33c93", wd33c93_device, read, write, 0x00ff00ff ) + map(0x05140000, 0x05140003).rw("wd33c93", FUNC(wd33c93_device::read), FUNC(wd33c93_device::write)).umask32(0x00ff00ff); - AM_RANGE(0x06000000, 0x067fffff) AM_READWRITE(cps3_flash1_r, cps3_flash1_w ) /* Flash ROMs simm 1 */ - AM_RANGE(0x06800000, 0x06ffffff) AM_READWRITE(cps3_flash2_r, cps3_flash2_w ) /* Flash ROMs simm 2 */ + map(0x06000000, 0x067fffff).rw(this, FUNC(cps3_state::cps3_flash1_r), FUNC(cps3_state::cps3_flash1_w)); /* Flash ROMs simm 1 */ + map(0x06800000, 0x06ffffff).rw(this, FUNC(cps3_state::cps3_flash2_r), FUNC(cps3_state::cps3_flash2_w)); /* Flash ROMs simm 2 */ - AM_RANGE(0x07ff0048, 0x07ff004b) AM_WRITENOP // bit 0 toggles during programming - AM_RANGE(0xc0000000, 0xc00003ff) AM_RAM_WRITE(cps3_0xc0000000_ram_w ) AM_SHARE("0xc0000000_ram") /* Executes code from here */ -ADDRESS_MAP_END + map(0x07ff0048, 0x07ff004b).nopw(); // bit 0 toggles during programming + map(0xc0000000, 0xc00003ff).ram().w(this, FUNC(cps3_state::cps3_0xc0000000_ram_w)).share("0xc0000000_ram"); /* Executes code from here */ +} -ADDRESS_MAP_START(cps3_state::decrypted_opcodes_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("bios", 0) // Bios ROM - AM_RANGE(0x06000000, 0x06ffffff) AM_ROM AM_SHARE("decrypted_gamerom") - AM_RANGE(0xc0000000, 0xc00003ff) AM_ROM AM_SHARE("0xc0000000_ram_decrypted") -ADDRESS_MAP_END +void cps3_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().region("bios", 0); // Bios ROM + map(0x06000000, 0x06ffffff).rom().share("decrypted_gamerom"); + map(0xc0000000, 0xc00003ff).rom().share("0xc0000000_ram_decrypted"); +} static INPUT_PORTS_START( cps3 ) PORT_START("INPUTS") diff --git a/src/mame/drivers/craft.cpp b/src/mame/drivers/craft.cpp index ea320a17586..3228365e81b 100644 --- a/src/mame/drivers/craft.cpp +++ b/src/mame/drivers/craft.cpp @@ -185,17 +185,20 @@ void craft_state::video_update() * Address maps * \****************************************************/ -ADDRESS_MAP_START(craft_state::craft_prg_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void craft_state::craft_prg_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} -ADDRESS_MAP_START(craft_state::craft_data_map) - AM_RANGE(0x0100, 0x04ff) AM_RAM -ADDRESS_MAP_END +void craft_state::craft_data_map(address_map &map) +{ + map(0x0100, 0x04ff).ram(); +} -ADDRESS_MAP_START(craft_state::craft_io_map) - AM_RANGE(AVR8_IO_PORTA, AVR8_IO_PORTD) AM_READWRITE( port_r, port_w ) -ADDRESS_MAP_END +void craft_state::craft_io_map(address_map &map) +{ + map(AVR8_IO_PORTA, AVR8_IO_PORTD).rw(this, FUNC(craft_state::port_r), FUNC(craft_state::port_w)); +} /****************************************************\ * Input ports * diff --git a/src/mame/drivers/crbaloon.cpp b/src/mame/drivers/crbaloon.cpp index 734350f90a2..6a039cf8487 100644 --- a/src/mame/drivers/crbaloon.cpp +++ b/src/mame/drivers/crbaloon.cpp @@ -192,14 +192,15 @@ WRITE8_MEMBER(crbaloon_state::port_sound_w) * *************************************/ -ADDRESS_MAP_START(crbaloon_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 is not decoded */ - AM_RANGE(0x0000, 0x3fff) AM_ROM /* not fully populated */ - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(crbaloon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(crbaloon_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x5800, 0x7fff) AM_NOP -ADDRESS_MAP_END +void crbaloon_state::main_map(address_map &map) +{ + map.global_mask(0x7fff); /* A15 is not decoded */ + map(0x0000, 0x3fff).rom(); /* not fully populated */ + map(0x4000, 0x43ff).mirror(0x0400).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(crbaloon_state::crbaloon_videoram_w)).share("videoram"); + map(0x5000, 0x53ff).mirror(0x0400).ram().w(this, FUNC(crbaloon_state::crbaloon_colorram_w)).share("colorram"); + map(0x5800, 0x7fff).noprw(); +} @@ -209,23 +210,24 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(crbaloon_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xf) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("DSW0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_SELECT(0x0c) AM_READ(pc3259_r) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN1") - - AM_RANGE(0x00, 0x00) AM_WRITENOP /* not connected */ - AM_RANGE(0x01, 0x01) AM_WRITENOP /* watchdog */ - AM_RANGE(0x02, 0x04) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x05, 0x05) AM_WRITE(crbaloon_audio_set_music_freq) - AM_RANGE(0x06, 0x06) AM_WRITE(port_sound_w) - AM_RANGE(0x07, 0x0b) AM_WRITE(pc3092_w) AM_SHARE("pc3092_data") - AM_RANGE(0x0c, 0x0c) AM_WRITENOP /* MSK - to PC3259 */ - AM_RANGE(0x0d, 0x0d) AM_WRITENOP /* schematics has it in a box marked "NOT USE" */ - AM_RANGE(0x0e, 0x0f) AM_WRITENOP -ADDRESS_MAP_END +void crbaloon_state::main_io_map(address_map &map) +{ + map.global_mask(0xf); + map(0x00, 0x00).mirror(0x0c).portr("DSW0"); + map(0x01, 0x01).mirror(0x0c).portr("IN0"); + map(0x02, 0x02).select(0x0c).r(this, FUNC(crbaloon_state::pc3259_r)); + map(0x03, 0x03).mirror(0x0c).portr("IN1"); + + map(0x00, 0x00).nopw(); /* not connected */ + map(0x01, 0x01).nopw(); /* watchdog */ + map(0x02, 0x04).writeonly().share("spriteram"); + map(0x05, 0x05).w(this, FUNC(crbaloon_state::crbaloon_audio_set_music_freq)); + map(0x06, 0x06).w(this, FUNC(crbaloon_state::port_sound_w)); + map(0x07, 0x0b).w(this, FUNC(crbaloon_state::pc3092_w)).share("pc3092_data"); + map(0x0c, 0x0c).nopw(); /* MSK - to PC3259 */ + map(0x0d, 0x0d).nopw(); /* schematics has it in a box marked "NOT USE" */ + map(0x0e, 0x0f).nopw(); +} diff --git a/src/mame/drivers/crgolf.cpp b/src/mame/drivers/crgolf.cpp index d1ad58e73ef..b0f78dd3613 100644 --- a/src/mame/drivers/crgolf.cpp +++ b/src/mame/drivers/crgolf.cpp @@ -276,21 +276,23 @@ WRITE_LINE_MEMBER(crgolf_state::screenb_enable_w) * *************************************/ -ADDRESS_MAP_START(crgolf_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x8800, 0x8800) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write) - AM_RANGE(0x9000, 0x9000) AM_WRITE(rom_bank_select_w) - AM_RANGE(0xa000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(crgolf_state::vrambank_map) - AM_RANGE(0x0000, 0x5fff) AM_RAM AM_SHARE("vrama") - AM_RANGE(0x8000, 0xdfff) AM_RAM AM_SHARE("vramb") -ADDRESS_MAP_END +void crgolf_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0x8007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x8800, 0x8800).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x8800, 0x8800).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0x9000, 0x9000).w(this, FUNC(crgolf_state::rom_bank_select_w)); + map(0xa000, 0xffff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); +} + +void crgolf_state::vrambank_map(address_map &map) +{ + map(0x0000, 0x5fff).ram().share("vrama"); + map(0x8000, 0xdfff).ram().share("vramb"); +} /************************************* @@ -299,16 +301,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(crgolf_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xc002, 0xc002) AM_WRITENOP - AM_RANGE(0xe000, 0xe000) AM_READWRITE(switch_input_r, switch_input_select_w) - AM_RANGE(0xe001, 0xe001) AM_READWRITE(analog_input_r, unknown_w) - AM_RANGE(0xe003, 0xe003) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) - AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void crgolf_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xc002, 0xc002).nopw(); + map(0xe000, 0xe000).rw(this, FUNC(crgolf_state::switch_input_r), FUNC(crgolf_state::switch_input_select_w)); + map(0xe001, 0xe001).rw(this, FUNC(crgolf_state::analog_input_r), FUNC(crgolf_state::unknown_w)); + map(0xe003, 0xe003).r("soundlatch1", FUNC(generic_latch_8_device::read)); + map(0xe003, 0xe003).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} @@ -316,30 +319,33 @@ ADDRESS_MAP_END -ADDRESS_MAP_START(crgolf_state::mastrglf_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0x8fff) AM_RAM // maybe RAM and ROM here? - AM_RANGE(0x9000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8) +void crgolf_state::mastrglf_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).bankr("bank1"); + map(0x6000, 0x8fff).ram(); // maybe RAM and ROM here? + map(0x9000, 0x9fff).ram(); + map(0xa000, 0xffff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(crgolf_state::mastrglf_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) +void crgolf_state::mastrglf_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0)); // AM_RANGE(0x20, 0x20) AM_WRITE(rom_bank_select_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write) - AM_RANGE(0xa0, 0xa0) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0x40, 0x40).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xa0, 0xa0).r("soundlatch2", FUNC(generic_latch_8_device::read)); +} -ADDRESS_MAP_START(crgolf_state::mastrglf_submap) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END +void crgolf_state::mastrglf_submap(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); +} READ8_MEMBER(crgolf_state::unk_sub_02_r) @@ -362,17 +368,18 @@ WRITE8_MEMBER(crgolf_state::unk_sub_0c_w) } -ADDRESS_MAP_START(crgolf_state::mastrglf_subio) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) AM_WRITENOP - AM_RANGE(0x02, 0x02) AM_READ(unk_sub_02_r ) - AM_RANGE(0x05, 0x05) AM_READ(unk_sub_05_r ) - AM_RANGE(0x06, 0x06) AM_READNOP - AM_RANGE(0x07, 0x07) AM_READ(unk_sub_07_r ) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x0c, 0x0c) AM_WRITE(unk_sub_0c_w) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void crgolf_state::mastrglf_subio(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch1", FUNC(generic_latch_8_device::read)).nopw(); + map(0x02, 0x02).r(this, FUNC(crgolf_state::unk_sub_02_r)); + map(0x05, 0x05).r(this, FUNC(crgolf_state::unk_sub_05_r)); + map(0x06, 0x06).nopr(); + map(0x07, 0x07).r(this, FUNC(crgolf_state::unk_sub_07_r)); + map(0x08, 0x08).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x0c, 0x0c).w(this, FUNC(crgolf_state::unk_sub_0c_w)); + map(0x10, 0x11).w("aysnd", FUNC(ay8910_device::address_data_w)); +} diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp index dfaf75357e6..a6432aaeb3b 100644 --- a/src/mame/drivers/crimfght.cpp +++ b/src/mame/drivers/crimfght.cpp @@ -81,37 +81,40 @@ WRITE8_MEMBER(crimfght_state::ym2151_ct_w) m_k007232->set_bank(bank_a, bank_b); } -ADDRESS_MAP_START(crimfght_state::crimfght_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8) - AM_RANGE(0x0400, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x5fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) /* video RAM + sprite RAM */ - AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P1") - AM_RANGE(0x3f82, 0x3f82) AM_READ_PORT("P2") - AM_RANGE(0x3f83, 0x3f83) AM_READ_PORT("DSW2") - AM_RANGE(0x3f84, 0x3f84) AM_READ_PORT("DSW3") - AM_RANGE(0x3f85, 0x3f85) AM_READ_PORT("P3") - AM_RANGE(0x3f86, 0x3f86) AM_READ_PORT("P4") - AM_RANGE(0x3f87, 0x3f87) AM_READ_PORT("DSW1") - AM_RANGE(0x3f88, 0x3f88) AM_MIRROR(0x03) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(crimfght_coin_w) // 051550 - AM_RANGE(0x3f8c, 0x3f8c) AM_MIRROR(0x03) AM_WRITE(sound_w) - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x18000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(crimfght_state::bank0000_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END +void crimfght_state::crimfght_map(address_map &map) +{ + map(0x0000, 0x03ff).m(m_bank0000, FUNC(address_map_bank_device::amap8)); + map(0x0400, 0x1fff).ram(); + map(0x2000, 0x5fff).rw(this, FUNC(crimfght_state::k052109_051960_r), FUNC(crimfght_state::k052109_051960_w)); /* video RAM + sprite RAM */ + map(0x3f80, 0x3f80).portr("SYSTEM"); + map(0x3f81, 0x3f81).portr("P1"); + map(0x3f82, 0x3f82).portr("P2"); + map(0x3f83, 0x3f83).portr("DSW2"); + map(0x3f84, 0x3f84).portr("DSW3"); + map(0x3f85, 0x3f85).portr("P3"); + map(0x3f86, 0x3f86).portr("P4"); + map(0x3f87, 0x3f87).portr("DSW1"); + map(0x3f88, 0x3f88).mirror(0x03).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(crimfght_state::crimfght_coin_w)); // 051550 + map(0x3f8c, 0x3f8c).mirror(0x03).w(this, FUNC(crimfght_state::sound_w)); + map(0x6000, 0x7fff).bankr("rombank"); /* banked ROM */ + map(0x8000, 0xffff).rom().region("maincpu", 0x18000); +} + +void crimfght_state::bank0000_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} // full memory map derived from schematics -ADDRESS_MAP_START(crimfght_state::crimfght_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe00f) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("k007232", k007232_device, read, write) -ADDRESS_MAP_END +void crimfght_state::crimfght_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).mirror(0x1800).ram(); + map(0xa000, 0xa001).mirror(0x1ffe).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc000, 0xc000).mirror(0x1fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe00f).mirror(0x1ff0).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/crospang.cpp b/src/mame/drivers/crospang.cpp index 2043c6e76f3..aed4eba32a8 100644 --- a/src/mame/drivers/crospang.cpp +++ b/src/mame/drivers/crospang.cpp @@ -45,71 +45,77 @@ /* main cpu */ -ADDRESS_MAP_START(crospang_state::crospang_base_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_WRITENOP // writes to rom quite often - - AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x270000, 0x270001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x270004, 0x270007) AM_WRITENOP // ?? - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2") - AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN") - AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW") -ADDRESS_MAP_END - -ADDRESS_MAP_START(crospang_state::crospang_map) - AM_IMPORT_FROM(crospang_base_map) - - AM_RANGE(0x100000, 0x100001) AM_WRITENOP - AM_RANGE(0x100002, 0x100003) AM_WRITE(crospang_fg_scrolly_w) - AM_RANGE(0x100004, 0x100005) AM_WRITE(crospang_bg_scrollx_w) - AM_RANGE(0x100006, 0x100007) AM_WRITE(crospang_bg_scrolly_w) - AM_RANGE(0x100008, 0x100009) AM_WRITE(crospang_fg_scrollx_w) - AM_RANGE(0x10000e, 0x10000f) AM_WRITENOP - - AM_RANGE(0x320000, 0x32ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(crospang_state::bestri_map) - AM_IMPORT_FROM(crospang_base_map) - - AM_RANGE(0x100004, 0x100005) AM_WRITE(bestri_fg_scrollx_w) - AM_RANGE(0x100006, 0x100007) AM_WRITE(bestri_fg_scrolly_w) - AM_RANGE(0x10000a, 0x10000b) AM_WRITE(bestri_bg_scrolly_w) - AM_RANGE(0x10000c, 0x10000d) AM_WRITE(bestri_bg_scrollx_w) - AM_RANGE(0x10000e, 0x10000f) AM_WRITE(bestri_tilebank_w) - - AM_RANGE(0x3a0000, 0x3affff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(crospang_state::bestria_map) - AM_IMPORT_FROM(crospang_base_map) - - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ?? - AM_RANGE(0x100006, 0x100007) AM_WRITE(bestri_fg_scrollx_w) - AM_RANGE(0x100008, 0x100009) AM_WRITE(bestri_fg_scrolly_w) - AM_RANGE(0x10000a, 0x10000b) AM_WRITE(bestri_bg_scrollx_w) - AM_RANGE(0x10000c, 0x10000d) AM_WRITE(bestri_bg_scrolly_w) - AM_RANGE(0x10000e, 0x10000f) AM_WRITE(bestri_tilebank_w) - - AM_RANGE(0x340000, 0x34ffff) AM_RAM -ADDRESS_MAP_END +void crospang_state::crospang_base_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().nopw(); // writes to rom quite often + + map(0x120000, 0x1207ff).ram().w(this, FUNC(crospang_state::crospang_fg_videoram_w)).share("fg_videoram"); + map(0x122000, 0x1227ff).ram().w(this, FUNC(crospang_state::crospang_bg_videoram_w)).share("bg_videoram"); + map(0x200000, 0x2005ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x210000, 0x2107ff).ram().share("spriteram"); + map(0x270001, 0x270001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x270004, 0x270007).nopw(); // ?? + map(0x280000, 0x280001).portr("P1_P2"); + map(0x280002, 0x280003).portr("COIN"); + map(0x280004, 0x280005).portr("DSW"); +} + +void crospang_state::crospang_map(address_map &map) +{ + crospang_base_map(map); + + map(0x100000, 0x100001).nopw(); + map(0x100002, 0x100003).w(this, FUNC(crospang_state::crospang_fg_scrolly_w)); + map(0x100004, 0x100005).w(this, FUNC(crospang_state::crospang_bg_scrollx_w)); + map(0x100006, 0x100007).w(this, FUNC(crospang_state::crospang_bg_scrolly_w)); + map(0x100008, 0x100009).w(this, FUNC(crospang_state::crospang_fg_scrollx_w)); + map(0x10000e, 0x10000f).nopw(); + + map(0x320000, 0x32ffff).ram(); +} + +void crospang_state::bestri_map(address_map &map) +{ + crospang_base_map(map); + + map(0x100004, 0x100005).w(this, FUNC(crospang_state::bestri_fg_scrollx_w)); + map(0x100006, 0x100007).w(this, FUNC(crospang_state::bestri_fg_scrolly_w)); + map(0x10000a, 0x10000b).w(this, FUNC(crospang_state::bestri_bg_scrolly_w)); + map(0x10000c, 0x10000d).w(this, FUNC(crospang_state::bestri_bg_scrollx_w)); + map(0x10000e, 0x10000f).w(this, FUNC(crospang_state::bestri_tilebank_w)); + + map(0x3a0000, 0x3affff).ram(); +} + +void crospang_state::bestria_map(address_map &map) +{ + crospang_base_map(map); + + map(0x100000, 0x100001).nopw(); // ?? + map(0x100006, 0x100007).w(this, FUNC(crospang_state::bestri_fg_scrollx_w)); + map(0x100008, 0x100009).w(this, FUNC(crospang_state::bestri_fg_scrolly_w)); + map(0x10000a, 0x10000b).w(this, FUNC(crospang_state::bestri_bg_scrollx_w)); + map(0x10000c, 0x10000d).w(this, FUNC(crospang_state::bestri_bg_scrolly_w)); + map(0x10000e, 0x10000f).w(this, FUNC(crospang_state::bestri_tilebank_w)); + + map(0x340000, 0x34ffff).ram(); +} /* sound cpu */ -ADDRESS_MAP_START(crospang_state::crospang_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(crospang_state::crospang_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void crospang_state::crospang_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); +} + +void crospang_state::crospang_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x02, 0x02).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /* verified from M68000 code */ diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp index 72ddc779c0b..ea375c5892c 100644 --- a/src/mame/drivers/crshrace.cpp +++ b/src/mame/drivers/crshrace.cpp @@ -146,40 +146,43 @@ WRITE8_MEMBER(crshrace_state::crshrace_sh_bankswitch_w) } -ADDRESS_MAP_START(crshrace_state::crshrace_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("user2", 0) AM_MIRROR(0x100000) - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xd00000, 0xd01fff) AM_RAM_WRITE(crshrace_videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0xe00000, 0xe01fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM - AM_RANGE(0xffc000, 0xffc001) AM_WRITE(crshrace_roz_bank_w) - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(crshrace_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") AM_WRITE(crshrace_gfxctrl_w) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2") - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW0") - AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2") - AM_RANGE(0xfff008, 0xfff009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW1") - AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("P3") - AM_RANGE(0xfff020, 0xfff03f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) - AM_RANGE(0xfff044, 0xfff047) AM_WRITEONLY // ??? moves during race -ADDRESS_MAP_END - -ADDRESS_MAP_START(crshrace_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(crshrace_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END +void crshrace_state::crshrace_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x300000, 0x3fffff).rom().region("user1", 0); + map(0x400000, 0x4fffff).rom().region("user2", 0).mirror(0x100000); + map(0xa00000, 0xa0ffff).ram().share("spriteram2"); + map(0xd00000, 0xd01fff).ram().w(this, FUNC(crshrace_state::crshrace_videoram1_w)).share("videoram1"); + map(0xe00000, 0xe01fff).ram().share("spriteram"); + map(0xfe0000, 0xfeffff).ram(); + map(0xffc000, 0xffc001).w(this, FUNC(crshrace_state::crshrace_roz_bank_w)); + map(0xffd000, 0xffdfff).ram().w(this, FUNC(crshrace_state::crshrace_videoram2_w)).share("videoram2"); + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("P1").w(this, FUNC(crshrace_state::crshrace_gfxctrl_w)); + map(0xfff002, 0xfff003).portr("P2"); + map(0xfff004, 0xfff005).portr("DSW0"); + map(0xfff006, 0xfff007).portr("DSW2"); + map(0xfff009, 0xfff009).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xfff00a, 0xfff00b).portr("DSW1"); + map(0xfff00e, 0xfff00f).portr("P3"); + map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w)); + map(0xfff044, 0xfff047).writeonly(); // ??? moves during race +} + +void crshrace_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void crshrace_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(crshrace_state::crshrace_sh_bankswitch_w)); + map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} static INPUT_PORTS_START( crshrace ) diff --git a/src/mame/drivers/crvision.cpp b/src/mame/drivers/crvision.cpp index cb82376e39d..47dff8631d9 100644 --- a/src/mame/drivers/crvision.cpp +++ b/src/mame/drivers/crvision.cpp @@ -142,38 +142,40 @@ CN1 - main board connector (17x2 pin header) ADDRESS_MAP( crvision_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(crvision_state::crvision_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, vram_read) - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, register_read) - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, vram_write) - AM_RANGE(0x3001, 0x3001) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, register_write) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(BANK_ROM2) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(BANK_ROM1) +void crvision_state::crvision_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x0c00).ram(); + map(0x1000, 0x1003).mirror(0x0ffc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x2000).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::vram_read)); + map(0x2001, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::register_read)); + map(0x3000, 0x3000).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::vram_write)); + map(0x3001, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::register_write)); + map(0x4000, 0x7fff).bankr(BANK_ROM2); + map(0x8000, 0xbfff).bankr(BANK_ROM1); // AM_RANGE(0xc000, 0xe7ff) AM_RAMBANK(3) - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0xe801, 0xe801) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0xe801, 0xe801) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write) + map(0xe800, 0xe800).w(m_cent_data_out, FUNC(output_latch_device::write)); + map(0xe801, 0xe801).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0xe801, 0xe801).w("cent_ctrl_out", FUNC(output_latch_device::write)); // AM_RANGE(0xe802, 0xf7ff) AM_RAMBANK(4) - AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0) -ADDRESS_MAP_END + map(0xf800, 0xffff).rom().region(M6502_TAG, 0); +} /*------------------------------------------------- ADDRESS_MAP( lasr2001_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(laser2001_state::lasr2001_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, vram_read) - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffe) AM_DEVREAD(TMS9929_TAG, tms9928a_device, register_read) - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, vram_write) - AM_RANGE(0x3001, 0x3001) AM_MIRROR(0x0ffe) AM_DEVWRITE(TMS9929_TAG, tms9928a_device, register_write) - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK(BANK_ROM2) - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK(BANK_ROM1) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0) -ADDRESS_MAP_END +void laser2001_state::lasr2001_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x0c00).ram(); + map(0x1000, 0x1003).mirror(0x0ffc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x2000).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::vram_read)); + map(0x2001, 0x2001).mirror(0x0ffe).r(TMS9929_TAG, FUNC(tms9928a_device::register_read)); + map(0x3000, 0x3000).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::vram_write)); + map(0x3001, 0x3001).mirror(0x0ffe).w(TMS9929_TAG, FUNC(tms9928a_device::register_write)); + map(0x4000, 0x7fff).bankrw(BANK_ROM2); + map(0x8000, 0xbfff).bankrw(BANK_ROM1); + map(0xc000, 0xffff).rom().region(M6502_TAG, 0); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/crystal.cpp b/src/mame/drivers/crystal.cpp index 08fc0f4ec53..d8494ec7e5f 100644 --- a/src/mame/drivers/crystal.cpp +++ b/src/mame/drivers/crystal.cpp @@ -650,39 +650,40 @@ WRITE32_MEMBER(crystal_state::DMA1_w) } -ADDRESS_MAP_START(crystal_state::crystal_mem) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_WRITENOP +void crystal_state::crystal_mem(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom().nopw(); - AM_RANGE(0x01200000, 0x0120000f) AM_READ(Input_r) - AM_RANGE(0x01280000, 0x01280003) AM_WRITE(Banksw_w) - AM_RANGE(0x01400000, 0x0140ffff) AM_RAM AM_SHARE("nvram") + map(0x01200000, 0x0120000f).r(this, FUNC(crystal_state::Input_r)); + map(0x01280000, 0x01280003).w(this, FUNC(crystal_state::Banksw_w)); + map(0x01400000, 0x0140ffff).ram().share("nvram"); - AM_RANGE(0x01800000, 0x0180ffff) AM_RAM AM_SHARE("sysregs") + map(0x01800000, 0x0180ffff).ram().share("sysregs"); - AM_RANGE(0x01800800, 0x01800803) AM_READWRITE(DMA0_r, DMA0_w) - AM_RANGE(0x01800810, 0x01800813) AM_READWRITE(DMA1_r, DMA1_w) + map(0x01800800, 0x01800803).rw(this, FUNC(crystal_state::DMA0_r), FUNC(crystal_state::DMA0_w)); + map(0x01800810, 0x01800813).rw(this, FUNC(crystal_state::DMA1_r), FUNC(crystal_state::DMA1_w)); - AM_RANGE(0x01800c04, 0x01800c07) AM_WRITE(IntAck_w) + map(0x01800c04, 0x01800c07).w(this, FUNC(crystal_state::IntAck_w)); - AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w) - AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w) - AM_RANGE(0x01801410, 0x01801413) AM_READWRITE(Timer2_r, Timer2_w) - AM_RANGE(0x01801418, 0x0180141b) AM_READWRITE(Timer3_r, Timer3_w) - AM_RANGE(0x01802004, 0x01802007) AM_READWRITE(PIO_r, PIO_w) + map(0x01801400, 0x01801403).rw(this, FUNC(crystal_state::Timer0_r), FUNC(crystal_state::Timer0_w)); + map(0x01801408, 0x0180140b).rw(this, FUNC(crystal_state::Timer1_r), FUNC(crystal_state::Timer1_w)); + map(0x01801410, 0x01801413).rw(this, FUNC(crystal_state::Timer2_r), FUNC(crystal_state::Timer2_w)); + map(0x01801418, 0x0180141b).rw(this, FUNC(crystal_state::Timer3_r), FUNC(crystal_state::Timer3_w)); + map(0x01802004, 0x01802007).rw(this, FUNC(crystal_state::PIO_r), FUNC(crystal_state::PIO_w)); - AM_RANGE(0x02000000, 0x027fffff) AM_RAM AM_SHARE("workram") + map(0x02000000, 0x027fffff).ram().share("workram"); - AM_RANGE(0x03000000, 0x0300ffff) AM_RAM AM_SHARE("vidregs") - AM_RANGE(0x030000a4, 0x030000a7) AM_READWRITE(FlipCount_r, FlipCount_w) - AM_RANGE(0x03800000, 0x03ffffff) AM_RAM AM_SHARE("textureram") - AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("frameram") - AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vrender0_device, vr0_snd_read, vr0_snd_write) + map(0x03000000, 0x0300ffff).ram().share("vidregs"); + map(0x030000a4, 0x030000a7).rw(this, FUNC(crystal_state::FlipCount_r), FUNC(crystal_state::FlipCount_w)); + map(0x03800000, 0x03ffffff).ram().share("textureram"); + map(0x04000000, 0x047fffff).ram().share("frameram"); + map(0x04800000, 0x04800fff).rw("vrender", FUNC(vrender0_device::vr0_snd_read), FUNC(vrender0_device::vr0_snd_write)); - AM_RANGE(0x05000000, 0x05ffffff) AM_ROMBANK("bank1") - AM_RANGE(0x05000000, 0x05000003) AM_READWRITE(FlashCmd_r, FlashCmd_w) + map(0x05000000, 0x05ffffff).bankr("bank1"); + map(0x05000000, 0x05000003).rw(this, FUNC(crystal_state::FlashCmd_r), FUNC(crystal_state::FlashCmd_w)); - AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch") -ADDRESS_MAP_END + map(0x44414F4C, 0x44414F7F).ram().share("reset_patch"); +} // Trivia R Us // To do: touch panel, RTC @@ -708,57 +709,59 @@ WRITE32_MEMBER(crystal_state::trivrus_input_w) m_trivrus_input = data & 0xff; } -ADDRESS_MAP_START(crystal_state::trivrus_mem) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_WRITENOP +void crystal_state::trivrus_mem(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().nopw(); // 0x01280000 & 0x0000ffff (written at boot) - AM_RANGE(0x01500000, 0x01500003) AM_READWRITE(trivrus_input_r, trivrus_input_w) + map(0x01500000, 0x01500003).rw(this, FUNC(crystal_state::trivrus_input_r), FUNC(crystal_state::trivrus_input_w)); // 0x01500010 & 0x000000ff = sec // 0x01500010 & 0x00ff0000 = min // 0x01500014 & 0x000000ff = hour // 0x01500014 & 0x00ff0000 = day // 0x01500018 & 0x000000ff = month // 0x0150001c & 0x000000ff = year - 2000 - AM_RANGE(0x01600000, 0x01607fff) AM_RAM AM_SHARE("nvram") + map(0x01600000, 0x01607fff).ram().share("nvram"); - AM_RANGE(0x01800000, 0x0180ffff) AM_RAM AM_SHARE("sysregs") + map(0x01800000, 0x0180ffff).ram().share("sysregs"); - AM_RANGE(0x01800800, 0x01800803) AM_READWRITE(DMA0_r, DMA0_w) - AM_RANGE(0x01800810, 0x01800813) AM_READWRITE(DMA1_r, DMA1_w) + map(0x01800800, 0x01800803).rw(this, FUNC(crystal_state::DMA0_r), FUNC(crystal_state::DMA0_w)); + map(0x01800810, 0x01800813).rw(this, FUNC(crystal_state::DMA1_r), FUNC(crystal_state::DMA1_w)); - AM_RANGE(0x01800c04, 0x01800c07) AM_WRITE(IntAck_w) + map(0x01800c04, 0x01800c07).w(this, FUNC(crystal_state::IntAck_w)); - AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w) - AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w) - AM_RANGE(0x01801410, 0x01801413) AM_READWRITE(Timer2_r, Timer2_w) - AM_RANGE(0x01801418, 0x0180141b) AM_READWRITE(Timer3_r, Timer3_w) - AM_RANGE(0x01802004, 0x01802007) AM_READWRITE(PIO_r, PIO_w) + map(0x01801400, 0x01801403).rw(this, FUNC(crystal_state::Timer0_r), FUNC(crystal_state::Timer0_w)); + map(0x01801408, 0x0180140b).rw(this, FUNC(crystal_state::Timer1_r), FUNC(crystal_state::Timer1_w)); + map(0x01801410, 0x01801413).rw(this, FUNC(crystal_state::Timer2_r), FUNC(crystal_state::Timer2_w)); + map(0x01801418, 0x0180141b).rw(this, FUNC(crystal_state::Timer3_r), FUNC(crystal_state::Timer3_w)); + map(0x01802004, 0x01802007).rw(this, FUNC(crystal_state::PIO_r), FUNC(crystal_state::PIO_w)); - AM_RANGE(0x02000000, 0x027fffff) AM_RAM AM_SHARE("workram") + map(0x02000000, 0x027fffff).ram().share("workram"); - AM_RANGE(0x03000000, 0x0300ffff) AM_RAM AM_SHARE("vidregs") - AM_RANGE(0x030000a4, 0x030000a7) AM_READWRITE(FlipCount_r, FlipCount_w) - AM_RANGE(0x03800000, 0x03ffffff) AM_RAM AM_SHARE("textureram") - AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("frameram") - AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vrender0_device, vr0_snd_read, vr0_snd_write) + map(0x03000000, 0x0300ffff).ram().share("vidregs"); + map(0x030000a4, 0x030000a7).rw(this, FUNC(crystal_state::FlipCount_r), FUNC(crystal_state::FlipCount_w)); + map(0x03800000, 0x03ffffff).ram().share("textureram"); + map(0x04000000, 0x047fffff).ram().share("frameram"); + map(0x04800000, 0x04800fff).rw("vrender", FUNC(vrender0_device::vr0_snd_read), FUNC(vrender0_device::vr0_snd_write)); - AM_RANGE(0x05000000, 0x05ffffff) AM_ROMBANK("bank1") - AM_RANGE(0x05000000, 0x05000003) AM_READWRITE(FlashCmd_r, FlashCmd_w) + map(0x05000000, 0x05ffffff).bankr("bank1"); + map(0x05000000, 0x05000003).rw(this, FUNC(crystal_state::FlashCmd_r), FUNC(crystal_state::FlashCmd_w)); // AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch") -ADDRESS_MAP_END - -ADDRESS_MAP_START(crystal_state::crospuzl_mem) - AM_IMPORT_FROM( trivrus_mem ) +} - AM_RANGE(0x01500000, 0x01500003) AM_READ(FlashCmd_r) - AM_RANGE(0x01500100, 0x01500103) AM_WRITE(FlashCmd_w) - AM_RANGE(0x01510000, 0x01510003) AM_READ_PORT("IN0") - AM_RANGE(0x01511000, 0x01511003) AM_READ_PORT("IN1") - AM_RANGE(0x01512000, 0x01512003) AM_READ_PORT("IN2") - AM_RANGE(0x01513000, 0x01513003) AM_READ_PORT("IN3") -ADDRESS_MAP_END +void crystal_state::crospuzl_mem(address_map &map) +{ + trivrus_mem(map); + + map(0x01500000, 0x01500003).r(this, FUNC(crystal_state::FlashCmd_r)); + map(0x01500100, 0x01500103).w(this, FUNC(crystal_state::FlashCmd_w)); + map(0x01510000, 0x01510003).portr("IN0"); + map(0x01511000, 0x01511003).portr("IN1"); + map(0x01512000, 0x01512003).portr("IN2"); + map(0x01513000, 0x01513003).portr("IN3"); +} // Crazy Dou Di Zhu II // To do: HY04 (pic?) protection @@ -801,41 +804,42 @@ crzyddz2 in out return 0xffffff00 | data | m_crzyddz2_prot; } -ADDRESS_MAP_START(crystal_state::crzyddz2_mem) - AM_RANGE(0x00000000, 0x00ffffff) AM_ROM AM_WRITENOP +void crystal_state::crzyddz2_mem(address_map &map) +{ + map(0x00000000, 0x00ffffff).rom().nopw(); - AM_RANGE(0x01280000, 0x01280003) AM_WRITE(Banksw_w) - AM_RANGE(0x01400000, 0x0140ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x01500000, 0x01500003) AM_READ_PORT("P1_P2") - AM_RANGE(0x01500004, 0x01500007) AM_READ(crzyddz2_key_r) + map(0x01280000, 0x01280003).w(this, FUNC(crystal_state::Banksw_w)); + map(0x01400000, 0x0140ffff).ram().share("nvram"); + map(0x01500000, 0x01500003).portr("P1_P2"); + map(0x01500004, 0x01500007).r(this, FUNC(crystal_state::crzyddz2_key_r)); - AM_RANGE(0x01800000, 0x0180ffff) AM_RAM AM_SHARE("sysregs") + map(0x01800000, 0x0180ffff).ram().share("sysregs"); - AM_RANGE(0x01800800, 0x01800803) AM_READWRITE(DMA0_r, DMA0_w) - AM_RANGE(0x01800810, 0x01800813) AM_READWRITE(DMA1_r, DMA1_w) + map(0x01800800, 0x01800803).rw(this, FUNC(crystal_state::DMA0_r), FUNC(crystal_state::DMA0_w)); + map(0x01800810, 0x01800813).rw(this, FUNC(crystal_state::DMA1_r), FUNC(crystal_state::DMA1_w)); - AM_RANGE(0x01800c04, 0x01800c07) AM_WRITE(IntAck_w) + map(0x01800c04, 0x01800c07).w(this, FUNC(crystal_state::IntAck_w)); - AM_RANGE(0x01801400, 0x01801403) AM_READWRITE(Timer0_r, Timer0_w) - AM_RANGE(0x01801408, 0x0180140b) AM_READWRITE(Timer1_r, Timer1_w) - AM_RANGE(0x01801410, 0x01801413) AM_READWRITE(Timer2_r, Timer2_w) - AM_RANGE(0x01801418, 0x0180141b) AM_READWRITE(Timer3_r, Timer3_w) - AM_RANGE(0x01802004, 0x01802007) AM_READWRITE(PIO_r, crzyddz2_PIO_w) + map(0x01801400, 0x01801403).rw(this, FUNC(crystal_state::Timer0_r), FUNC(crystal_state::Timer0_w)); + map(0x01801408, 0x0180140b).rw(this, FUNC(crystal_state::Timer1_r), FUNC(crystal_state::Timer1_w)); + map(0x01801410, 0x01801413).rw(this, FUNC(crystal_state::Timer2_r), FUNC(crystal_state::Timer2_w)); + map(0x01801418, 0x0180141b).rw(this, FUNC(crystal_state::Timer3_r), FUNC(crystal_state::Timer3_w)); + map(0x01802004, 0x01802007).rw(this, FUNC(crystal_state::PIO_r), FUNC(crystal_state::crzyddz2_PIO_w)); - AM_RANGE(0x02000000, 0x027fffff) AM_RAM AM_SHARE("workram") + map(0x02000000, 0x027fffff).ram().share("workram"); - AM_RANGE(0x03000000, 0x0300ffff) AM_RAM AM_SHARE("vidregs") - AM_RANGE(0x030000a4, 0x030000a7) AM_READWRITE(FlipCount_r, FlipCount_w) - AM_RANGE(0x03800000, 0x03ffffff) AM_RAM AM_SHARE("textureram") - AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("frameram") - AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vrender0_device, vr0_snd_read, vr0_snd_write) + map(0x03000000, 0x0300ffff).ram().share("vidregs"); + map(0x030000a4, 0x030000a7).rw(this, FUNC(crystal_state::FlipCount_r), FUNC(crystal_state::FlipCount_w)); + map(0x03800000, 0x03ffffff).ram().share("textureram"); + map(0x04000000, 0x047fffff).ram().share("frameram"); + map(0x04800000, 0x04800fff).rw("vrender", FUNC(vrender0_device::vr0_snd_read), FUNC(vrender0_device::vr0_snd_write)); - AM_RANGE(0x05000000, 0x05ffffff) AM_ROMBANK("bank1") - AM_RANGE(0x05000000, 0x05000003) AM_READWRITE(FlashCmd_r, FlashCmd_w) + map(0x05000000, 0x05ffffff).bankr("bank1"); + map(0x05000000, 0x05000003).rw(this, FUNC(crystal_state::FlashCmd_r), FUNC(crystal_state::FlashCmd_w)); // AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_SHARE("reset_patch") -ADDRESS_MAP_END +} void crystal_state::PatchReset( ) diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp index c026dc1bbd2..dc707b2a5c0 100644 --- a/src/mame/drivers/csplayh5.cpp +++ b/src/mame/drivers/csplayh5.cpp @@ -130,21 +130,23 @@ WRITE16_MEMBER(csplayh5_state::csplayh5_mux_w) m_mux_data = (~data & 0x1f); } -ADDRESS_MAP_START(csplayh5_state::csplayh5_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void csplayh5_state::csplayh5_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("DSW") AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00) - AM_RANGE(0x200200, 0x200201) AM_READWRITE(csplayh5_mux_r,csplayh5_mux_w) - AM_RANGE(0x200400, 0x200401) AM_READ_PORT("SYSTEM") + map(0x200000, 0x200001).portr("DSW"); + map(0x200000, 0x200000).w(m_nichisnd, FUNC(nichisnd_device::sound_host_command_w)); + map(0x200200, 0x200201).rw(this, FUNC(csplayh5_state::csplayh5_mux_r), FUNC(csplayh5_state::csplayh5_mux_w)); + map(0x200400, 0x200401).portr("SYSTEM"); - AM_RANGE(0x200600, 0x200607) AM_DEVREADWRITE8("v9958", v9958_device, read, write, 0x00ff) + map(0x200600, 0x200607).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write)).umask16(0x00ff); - AM_RANGE(0x800000, 0xbfffff) AM_ROM AM_REGION("blit_gfx",0) // GFX ROM routes here + map(0x800000, 0xbfffff).rom().region("blit_gfx", 0); // GFX ROM routes here - AM_RANGE(0xc00000, 0xc7ffff) AM_RAM AM_SHARE("nvram") AM_MIRROR(0x380000) // work RAM + map(0xc00000, 0xc7ffff).ram().share("nvram").mirror(0x380000); // work RAM - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} #if USE_H8 READ16_MEMBER(csplayh5_state::test_r) diff --git a/src/mame/drivers/cswat.cpp b/src/mame/drivers/cswat.cpp index 7e844dede43..4abc14e1fff 100644 --- a/src/mame/drivers/cswat.cpp +++ b/src/mame/drivers/cswat.cpp @@ -137,18 +137,19 @@ READ8_MEMBER(cswat_state::sensors_r) return machine().rand(); } -ADDRESS_MAP_START(cswat_state::cswat_map) - AM_RANGE(0x0000, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM +void cswat_state::cswat_map(address_map &map) +{ + map(0x0000, 0x0bff).ram().w(this, FUNC(cswat_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram(); // AM_RANGE(0x1800, 0x1800) AM_READNOP // ? reads here after writing to $4000 - AM_RANGE(0x2000, 0x2000) AM_WRITE(irq_ack_w) // writes 1 at end of vblank irq, 0 at gamestart - AM_RANGE(0x2000, 0x2001) AM_READ(dipswitch_r) - AM_RANGE(0x2002, 0x2002) AM_WRITE(irq_ack_w) // writes 0 at start of vblank irq - AM_RANGE(0x2002, 0x2002) AM_READ(sensors_r) - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("IN0") + map(0x2000, 0x2000).w(this, FUNC(cswat_state::irq_ack_w)); // writes 1 at end of vblank irq, 0 at gamestart + map(0x2000, 0x2001).r(this, FUNC(cswat_state::dipswitch_r)); + map(0x2002, 0x2002).w(this, FUNC(cswat_state::irq_ack_w)); // writes 0 at start of vblank irq + map(0x2002, 0x2002).r(this, FUNC(cswat_state::sensors_r)); + map(0x2003, 0x2003).portr("IN0"); // AM_RANGE(0x4000, 0x4009) AM_NOP // ? - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x8000, 0xffff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/ct486.cpp b/src/mame/drivers/ct486.cpp index 4287fa3d0b3..44824156745 100644 --- a/src/mame/drivers/ct486.cpp +++ b/src/mame/drivers/ct486.cpp @@ -95,12 +95,14 @@ WRITE_LINE_MEMBER( ct486_state::cs4031_hold ) // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(ct486_state::ct486_map) -ADDRESS_MAP_END +void ct486_state::ct486_map(address_map &map) +{ +} -ADDRESS_MAP_START(ct486_state::ct486_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void ct486_state::ct486_io(address_map &map) +{ + map.unmap_value_high(); +} //************************************************************************** diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp index 04aaeb87d6a..265d2775488 100644 --- a/src/mame/drivers/cubeqst.cpp +++ b/src/mame/drivers/cubeqst.cpp @@ -425,30 +425,33 @@ WRITE16_MEMBER(cubeqst_state::write_sndram) m_soundcpu->sndram_w(space, offset, data, mem_mask); } -ADDRESS_MAP_START(cubeqst_state::m68k_program_map) - ADDRESS_MAP_GLOBAL_MASK(0x03ffff) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x027fff) AM_READWRITE(read_rotram, write_rotram) - AM_RANGE(0x028000, 0x028fff) AM_READWRITE(read_sndram, write_sndram) - AM_RANGE(0x038000, 0x038001) AM_READWRITE(io_r, io_w) - AM_RANGE(0x038002, 0x038003) AM_READWRITE(chop_r, ldaud_w) - AM_RANGE(0x038008, 0x038009) AM_READWRITE(line_r, reset_w) - AM_RANGE(0x03800e, 0x03800f) AM_READWRITE(laserdisc_r, laserdisc_w) - AM_RANGE(0x03c800, 0x03c9ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") - AM_RANGE(0x03cc00, 0x03cc01) AM_WRITE(control_w) - AM_RANGE(0x03e000, 0x03efff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x03f000, 0x03ffff) AM_RAM -ADDRESS_MAP_END +void cubeqst_state::m68k_program_map(address_map &map) +{ + map.global_mask(0x03ffff); + map(0x000000, 0x01ffff).rom(); + map(0x020000, 0x027fff).rw(this, FUNC(cubeqst_state::read_rotram), FUNC(cubeqst_state::write_rotram)); + map(0x028000, 0x028fff).rw(this, FUNC(cubeqst_state::read_sndram), FUNC(cubeqst_state::write_sndram)); + map(0x038000, 0x038001).rw(this, FUNC(cubeqst_state::io_r), FUNC(cubeqst_state::io_w)); + map(0x038002, 0x038003).rw(this, FUNC(cubeqst_state::chop_r), FUNC(cubeqst_state::ldaud_w)); + map(0x038008, 0x038009).rw(this, FUNC(cubeqst_state::line_r), FUNC(cubeqst_state::reset_w)); + map(0x03800e, 0x03800f).rw(this, FUNC(cubeqst_state::laserdisc_r), FUNC(cubeqst_state::laserdisc_w)); + map(0x03c800, 0x03c9ff).ram().w(this, FUNC(cubeqst_state::palette_w)).share("paletteram"); + map(0x03cc00, 0x03cc01).w(this, FUNC(cubeqst_state::control_w)); + map(0x03e000, 0x03efff).ram().share("nvram"); + map(0x03f000, 0x03ffff).ram(); +} /* For the bit-sliced CPUs */ -ADDRESS_MAP_START(cubeqst_state::rotate_map) - AM_RANGE(0x000, 0x1ff) AM_ROM -ADDRESS_MAP_END +void cubeqst_state::rotate_map(address_map &map) +{ + map(0x000, 0x1ff).rom(); +} -ADDRESS_MAP_START(cubeqst_state::line_sound_map) - AM_RANGE(0x000, 0x0ff) AM_ROM -ADDRESS_MAP_END +void cubeqst_state::line_sound_map(address_map &map) +{ + map(0x000, 0x0ff).rom(); +} /************************************* diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp index e8b7fbd196b..535bc2fe0a1 100644 --- a/src/mame/drivers/cubo.cpp +++ b/src/mame/drivers/cubo.cpp @@ -416,25 +416,27 @@ WRITE8_MEMBER( cubo_state::akiko_cia_0_port_a_write ) -ADDRESS_MAP_START(cubo_state::overlay_2mb_map32) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cubo_state::cubo_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap32) - AM_RANGE(0x800000, 0x800003) AM_READ_PORT("DIPSW1") - AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2") - AM_RANGE(0xa80000, 0xb7ffff) AM_NOP - AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE("akiko", akiko_device, read, write) - AM_RANGE(0xbf0000, 0xbfffff) AM_READWRITE16(cia_r, gayle_cia_w, 0xffffffff) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(custom_chip_r, custom_chip_w, 0xffffffff) - AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("kickstart", 0x80000) - AM_RANGE(0xe80000, 0xf7ffff) AM_NOP - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END +void cubo_state::overlay_2mb_map32(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).ram().share("chip_ram"); + map(0x200000, 0x27ffff).rom().region("kickstart", 0); +} + +void cubo_state::cubo_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap32)); + map(0x800000, 0x800003).portr("DIPSW1"); + map(0x800010, 0x800013).portr("DIPSW2"); + map(0xa80000, 0xb7ffff).noprw(); + map(0xb80000, 0xb8003f).rw("akiko", FUNC(akiko_device::read), FUNC(akiko_device::write)); + map(0xbf0000, 0xbfffff).rw(this, FUNC(cubo_state::cia_r), FUNC(cubo_state::gayle_cia_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(cubo_state::custom_chip_r), FUNC(cubo_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).rom().region("kickstart", 0x80000); + map(0xe80000, 0xf7ffff).noprw(); + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} /************************************* diff --git a/src/mame/drivers/cultures.cpp b/src/mame/drivers/cultures.cpp index 7850967463b..de3209d1989 100644 --- a/src/mame/drivers/cultures.cpp +++ b/src/mame/drivers/cultures.cpp @@ -188,54 +188,58 @@ WRITE8_MEMBER(cultures_state::bg_bank_w) } -ADDRESS_MAP_START(cultures_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cultures_state::vrambank_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(bg0_videoram_w) AM_SHARE("bg0_videoram") - AM_RANGE(0x4000, 0x6fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cultures_state::cultures_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("prgbank") - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("vrambank", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cultures_state::cultures_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_RAM - AM_RANGE(0x10, 0x13) AM_RAM - AM_RANGE(0x20, 0x23) AM_RAM AM_SHARE("bg0_regs_x") - AM_RANGE(0x30, 0x33) AM_RAM AM_SHARE("bg0_regs_y") - AM_RANGE(0x40, 0x43) AM_RAM AM_SHARE("bg1_regs_x") - AM_RANGE(0x50, 0x53) AM_RAM AM_SHARE("bg1_regs_y") - AM_RANGE(0x60, 0x63) AM_RAM AM_SHARE("bg2_regs_x") - AM_RANGE(0x70, 0x73) AM_RAM AM_SHARE("bg2_regs_y") - AM_RANGE(0x80, 0x80) AM_WRITE(cpu_bankswitch_w) - AM_RANGE(0x90, 0x90) AM_WRITE(misc_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(bg_bank_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xd0, 0xd0) AM_READ_PORT("SW1_A") - AM_RANGE(0xd1, 0xd1) AM_READ_PORT("SW1_B") - AM_RANGE(0xd2, 0xd2) AM_READ_PORT("SW2_A") - AM_RANGE(0xd3, 0xd3) AM_READ_PORT("SW2_B") - AM_RANGE(0xe0, 0xe0) AM_READ_PORT("KEY0") - AM_RANGE(0xe1, 0xe1) AM_READ_PORT("KEY1") - AM_RANGE(0xe2, 0xe2) AM_READ_PORT("KEY2") - AM_RANGE(0xe3, 0xe3) AM_READ_PORT("KEY3") - AM_RANGE(0xe4, 0xe4) AM_READ_PORT("KEY4") - AM_RANGE(0xe5, 0xe5) AM_READ_PORT("START") - AM_RANGE(0xf0, 0xf0) AM_READ_PORT("UNUSED1") - AM_RANGE(0xf1, 0xf1) AM_READ_PORT("UNUSED2") - AM_RANGE(0xf2, 0xf2) AM_READ_PORT("UNUSED3") - AM_RANGE(0xf3, 0xf3) AM_READ_PORT("UNUSED4") - AM_RANGE(0xf7, 0xf7) AM_READ_PORT("COINS") -ADDRESS_MAP_END +void cultures_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} + +void cultures_state::vrambank_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(cultures_state::bg0_videoram_w)).share("bg0_videoram"); + map(0x4000, 0x6fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void cultures_state::cultures_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("prgbank"); + map(0x8000, 0xbfff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xdfff).ram(); + map(0xf000, 0xffff).ram(); +} + +void cultures_state::cultures_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).ram(); + map(0x10, 0x13).ram(); + map(0x20, 0x23).ram().share("bg0_regs_x"); + map(0x30, 0x33).ram().share("bg0_regs_y"); + map(0x40, 0x43).ram().share("bg1_regs_x"); + map(0x50, 0x53).ram().share("bg1_regs_y"); + map(0x60, 0x63).ram().share("bg2_regs_x"); + map(0x70, 0x73).ram().share("bg2_regs_y"); + map(0x80, 0x80).w(this, FUNC(cultures_state::cpu_bankswitch_w)); + map(0x90, 0x90).w(this, FUNC(cultures_state::misc_w)); + map(0xa0, 0xa0).w(this, FUNC(cultures_state::bg_bank_w)); + map(0xc0, 0xc0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xd0, 0xd0).portr("SW1_A"); + map(0xd1, 0xd1).portr("SW1_B"); + map(0xd2, 0xd2).portr("SW2_A"); + map(0xd3, 0xd3).portr("SW2_B"); + map(0xe0, 0xe0).portr("KEY0"); + map(0xe1, 0xe1).portr("KEY1"); + map(0xe2, 0xe2).portr("KEY2"); + map(0xe3, 0xe3).portr("KEY3"); + map(0xe4, 0xe4).portr("KEY4"); + map(0xe5, 0xe5).portr("START"); + map(0xf0, 0xf0).portr("UNUSED1"); + map(0xf1, 0xf1).portr("UNUSED2"); + map(0xf2, 0xf2).portr("UNUSED3"); + map(0xf3, 0xf3).portr("UNUSED4"); + map(0xf7, 0xf7).portr("COINS"); +} static INPUT_PORTS_START( cultures ) diff --git a/src/mame/drivers/cupidon.cpp b/src/mame/drivers/cupidon.cpp index b8597858320..1e53524984d 100644 --- a/src/mame/drivers/cupidon.cpp +++ b/src/mame/drivers/cupidon.cpp @@ -79,23 +79,24 @@ uint32_t cupidon_state::screen_update_cupidon(screen_device &screen, bitmap_ind1 } // could be pumped through the get_cs function (if they use the memory protection features we might have to) but that's slow... -ADDRESS_MAP_START(cupidon_state::cupidon_map) - AM_RANGE(0x0000000, 0x07fffff) AM_ROM AM_MIRROR(0x1000000) +void cupidon_state::cupidon_map(address_map &map) +{ + map(0x0000000, 0x07fffff).rom().mirror(0x1000000); - AM_RANGE(0x1000000, 0x100ffff) AM_RAM - AM_RANGE(0x1800000, 0x1800003) AM_READ(cupidon_return_ffffffff) - AM_RANGE(0x2000074, 0x2000077) AM_RAM // port + map(0x1000000, 0x100ffff).ram(); + map(0x1800000, 0x1800003).r(this, FUNC(cupidon_state::cupidon_return_ffffffff)); + map(0x2000074, 0x2000077).ram(); // port // AM_RANGE(0x2000040, 0x200004f) AM_RAM // might just be 4mb of VRAM - AM_RANGE(0x3000000, 0x33bffff) AM_RAM - AM_RANGE(0x33c0000, 0x33fffff) AM_RAM AM_SHARE("gfxram") // seems to upload graphics to here, tiles etc. if you skip the loop after the romtest in funnyfm + map(0x3000000, 0x33bffff).ram(); + map(0x33c0000, 0x33fffff).ram().share("gfxram"); // seems to upload graphics to here, tiles etc. if you skip the loop after the romtest in funnyfm // AM_RANGE(0x3400000, 0x3400fff) AM_RAM // AM_RANGE(0x3F80000, 0x3F80003) AM_RAM - AM_RANGE(0x3FF0400, 0x3FF0403) AM_RAM // register? gangrose likes to read this? -ADDRESS_MAP_END + map(0x3FF0400, 0x3FF0403).ram(); // register? gangrose likes to read this? +} static INPUT_PORTS_START( cupidon ) INPUT_PORTS_END diff --git a/src/mame/drivers/cv1k.cpp b/src/mame/drivers/cv1k.cpp index 8c813aaf2b6..34ff368d9c0 100644 --- a/src/mame/drivers/cv1k.cpp +++ b/src/mame/drivers/cv1k.cpp @@ -342,34 +342,37 @@ WRITE8_MEMBER( cv1k_state::serial_rtc_eeprom_w ) } -ADDRESS_MAP_START(cv1k_state::cv1k_map) - AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason.. - AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("mainram")// work RAM - AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(flash_io_r, flash_io_w, 0xffffffffffffffffU) - AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, 0xffffffffffffffffU) - AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, 0xffffffffffffffffU) +void cv1k_state::cv1k_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom().region("maincpu", 0).nopw().share("rombase"); // mmmbanc writes here on startup for some reason.. + map(0x0c000000, 0x0c7fffff).ram().share("mainram");// work RAM + map(0x10000000, 0x10000007).rw(this, FUNC(cv1k_state::flash_io_r), FUNC(cv1k_state::flash_io_w)); + map(0x10400000, 0x10400007).w("ymz770", FUNC(ymz770_device::write)); + map(0x10C00000, 0x10C00007).rw(this, FUNC(cv1k_state::serial_rtc_eeprom_r), FUNC(cv1k_state::serial_rtc_eeprom_w)); // AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset - AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM // mem mapped cache (sh3 internal?) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cv1k_state::cv1k_d_map) - AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP AM_SHARE("rombase") // mmmbanc writes here on startup for some reason.. - AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("mainram") // work RAM - AM_RANGE(0x10000000, 0x10000007) AM_READWRITE8(flash_io_r, flash_io_w, 0xffffffffffffffffU) - AM_RANGE(0x10400000, 0x10400007) AM_DEVWRITE8("ymz770", ymz770_device, write, 0xffffffffffffffffU) - AM_RANGE(0x10C00000, 0x10C00007) AM_READWRITE8(serial_rtc_eeprom_r, serial_rtc_eeprom_w, 0xffffffffffffffffU) + map(0xf0000000, 0xf0ffffff).ram(); // mem mapped cache (sh3 internal?) +} + +void cv1k_state::cv1k_d_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom().region("maincpu", 0).nopw().share("rombase"); // mmmbanc writes here on startup for some reason.. + map(0x0c000000, 0x0cffffff).ram().share("mainram"); // work RAM + map(0x10000000, 0x10000007).rw(this, FUNC(cv1k_state::flash_io_r), FUNC(cv1k_state::flash_io_w)); + map(0x10400000, 0x10400007).w("ymz770", FUNC(ymz770_device::write)); + map(0x10C00000, 0x10C00007).rw(this, FUNC(cv1k_state::serial_rtc_eeprom_r), FUNC(cv1k_state::serial_rtc_eeprom_w)); // AM_RANGE(0x18000000, 0x18000057) // blitter, installed on reset - AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM // mem mapped cache (sh3 internal?) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cv1k_state::cv1k_port) - AM_RANGE(SH3_PORT_C, SH3_PORT_C+7) AM_READ_PORT("PORT_C") - AM_RANGE(SH3_PORT_D, SH3_PORT_D+7) AM_READ_PORT("PORT_D") - AM_RANGE(SH3_PORT_E, SH3_PORT_E+7) AM_READ( flash_port_e_r ) - AM_RANGE(SH3_PORT_F, SH3_PORT_F+7) AM_READ_PORT("PORT_F") - AM_RANGE(SH3_PORT_L, SH3_PORT_L+7) AM_READ_PORT("PORT_L") - AM_RANGE(SH3_PORT_J, SH3_PORT_J+7) AM_DEVREADWRITE( "blitter", epic12_device, fpga_r, fpga_w ) -ADDRESS_MAP_END + map(0xf0000000, 0xf0ffffff).ram(); // mem mapped cache (sh3 internal?) +} + +void cv1k_state::cv1k_port(address_map &map) +{ + map(SH3_PORT_C, SH3_PORT_C+7).portr("PORT_C"); + map(SH3_PORT_D, SH3_PORT_D+7).portr("PORT_D"); + map(SH3_PORT_E, SH3_PORT_E+7).r(this, FUNC(cv1k_state::flash_port_e_r)); + map(SH3_PORT_F, SH3_PORT_F+7).portr("PORT_F"); + map(SH3_PORT_L, SH3_PORT_L+7).portr("PORT_L"); + map(SH3_PORT_J, SH3_PORT_J+7).rw(m_blitter, FUNC(epic12_device::fpga_r), FUNC(epic12_device::fpga_w)); +} static INPUT_PORTS_START( cv1k_base ) diff --git a/src/mame/drivers/cvicny.cpp b/src/mame/drivers/cvicny.cpp index f78ffc91a35..4cf6a80a593 100644 --- a/src/mame/drivers/cvicny.cpp +++ b/src/mame/drivers/cvicny.cpp @@ -77,14 +77,15 @@ READ8_MEMBER( cvicny_state::key_r ) return ((data << 4) ^ 0xf0) | data; } -ADDRESS_MAP_START(cvicny_state::cvicny_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM // 1 x 2716 - AM_RANGE(0x0800, 0x0bff) AM_RAM AM_MIRROR(0x400) // 2x 2114 static ram - AM_RANGE(0x1000, 0x17ff) AM_READ(key_r) - AM_RANGE(0x1800, 0x1fff) AM_WRITE(digit_w) - AM_RANGE(0x2000, 0x27ff) AM_WRITE(segment_w) -ADDRESS_MAP_END +void cvicny_state::cvicny_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); // 1 x 2716 + map(0x0800, 0x0bff).ram().mirror(0x400); // 2x 2114 static ram + map(0x1000, 0x17ff).r(this, FUNC(cvicny_state::key_r)); + map(0x1800, 0x1fff).w(this, FUNC(cvicny_state::digit_w)); + map(0x2000, 0x27ff).w(this, FUNC(cvicny_state::segment_w)); +} /* Input ports */ diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index bd6d137f3ac..37b821f7618 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -445,28 +445,31 @@ WRITE8_MEMBER(cvs_state::audio_command_w) * *************************************/ -ADDRESS_MAP_START(cvs_state::cvs_main_cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_bullet_ram_or_palette_r, cvs_bullet_ram_or_palette_w) AM_SHARE("bullet_ram") - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_2_or_character_ram_r, cvs_s2636_2_or_character_ram_w) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_1_or_character_ram_r, cvs_s2636_1_or_character_ram_w) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_0_or_character_ram_r, cvs_s2636_0_or_character_ram_w) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(cvs_video_or_color_ram_r, cvs_video_or_color_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x33ff) AM_ROM - AM_RANGE(0x4000, 0x53ff) AM_ROM - AM_RANGE(0x6000, 0x73ff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cvs_state::cvs_main_cpu_io_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(cvs_input_r, cvs_scroll_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cvs_state::cvs_main_cpu_data_map) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(cvs_collision_r, audio_command_w) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(cvs_collision_clear, cvs_video_fx_w) -ADDRESS_MAP_END +void cvs_state::cvs_main_cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x13ff).rom(); + map(0x1400, 0x14ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_bullet_ram_or_palette_r), FUNC(cvs_state::cvs_bullet_ram_or_palette_w)).share("bullet_ram"); + map(0x1500, 0x15ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_s2636_2_or_character_ram_r), FUNC(cvs_state::cvs_s2636_2_or_character_ram_w)); + map(0x1600, 0x16ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_s2636_1_or_character_ram_r), FUNC(cvs_state::cvs_s2636_1_or_character_ram_w)); + map(0x1700, 0x17ff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_s2636_0_or_character_ram_r), FUNC(cvs_state::cvs_s2636_0_or_character_ram_w)); + map(0x1800, 0x1bff).mirror(0x6000).rw(this, FUNC(cvs_state::cvs_video_or_color_ram_r), FUNC(cvs_state::cvs_video_or_color_ram_w)).share("video_ram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x33ff).rom(); + map(0x4000, 0x53ff).rom(); + map(0x6000, 0x73ff).rom(); +} + +void cvs_state::cvs_main_cpu_io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(cvs_state::cvs_input_r), FUNC(cvs_state::cvs_scroll_w)); +} + +void cvs_state::cvs_main_cpu_data_map(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(cvs_state::cvs_collision_r), FUNC(cvs_state::audio_command_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(cvs_state::cvs_collision_clear), FUNC(cvs_state::cvs_video_fx_w)); +} /************************************* * @@ -474,15 +477,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cvs_state::cvs_dac_cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x107f) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1840, 0x1840) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x1880, 0x1883) AM_WRITE(cvs_4_bit_dac_data_w) AM_SHARE("4bit_dac") - AM_RANGE(0x1884, 0x1887) AM_WRITE(cvs_unknown_w) AM_SHARE("dac3_state") /* ???? not connected to anything */ -ADDRESS_MAP_END +void cvs_state::cvs_dac_cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x107f).ram(); + map(0x1800, 0x1800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1840, 0x1840).w("dac1", FUNC(dac_byte_interface::write)); + map(0x1880, 0x1883).w(this, FUNC(cvs_state::cvs_4_bit_dac_data_w)).share("4bit_dac"); + map(0x1884, 0x1887).w(this, FUNC(cvs_state::cvs_unknown_w)).share("dac3_state"); /* ???? not connected to anything */ +} @@ -492,15 +496,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cvs_state::cvs_speech_cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x1d00, 0x1d00) AM_WRITE(cvs_speech_rom_address_lo_w) - AM_RANGE(0x1d40, 0x1d40) AM_WRITE(cvs_speech_rom_address_hi_w) - AM_RANGE(0x1d80, 0x1d80) AM_READ(cvs_speech_command_r) - AM_RANGE(0x1ddc, 0x1dde) AM_WRITE(cvs_tms5110_ctl_w) AM_SHARE("tms5110_ctl") - AM_RANGE(0x1ddf, 0x1ddf) AM_WRITE(cvs_tms5110_pdc_w) -ADDRESS_MAP_END +void cvs_state::cvs_speech_cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).rom(); + map(0x1d00, 0x1d00).w(this, FUNC(cvs_state::cvs_speech_rom_address_lo_w)); + map(0x1d40, 0x1d40).w(this, FUNC(cvs_state::cvs_speech_rom_address_hi_w)); + map(0x1d80, 0x1d80).r(this, FUNC(cvs_state::cvs_speech_command_r)); + map(0x1ddc, 0x1dde).w(this, FUNC(cvs_state::cvs_tms5110_ctl_w)).share("tms5110_ctl"); + map(0x1ddf, 0x1ddf).w(this, FUNC(cvs_state::cvs_tms5110_pdc_w)); +} /************************************* diff --git a/src/mame/drivers/cxgz80.cpp b/src/mame/drivers/cxgz80.cpp index 490c1fbec5a..7fc17cf9435 100644 --- a/src/mame/drivers/cxgz80.cpp +++ b/src/mame/drivers/cxgz80.cpp @@ -268,12 +268,13 @@ READ8_MEMBER(cxgz80_state::ch2001_input_r) // Chess 2001 -ADDRESS_MAP_START(cxgz80_state::ch2001_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x3800) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x3fff) AM_READWRITE(ch2001_input_r, ch2001_leds_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x3fff) AM_WRITE(ch2001_speaker_on_w) -ADDRESS_MAP_END +void cxgz80_state::ch2001_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).mirror(0x3800).ram(); + map(0x8000, 0x8000).mirror(0x3fff).rw(this, FUNC(cxgz80_state::ch2001_input_r), FUNC(cxgz80_state::ch2001_leds_w)); + map(0xc000, 0xc000).mirror(0x3fff).w(this, FUNC(cxgz80_state::ch2001_speaker_on_w)); +} diff --git a/src/mame/drivers/cxhumax.cpp b/src/mame/drivers/cxhumax.cpp index f834c0a80e8..e4b75c11aab 100644 --- a/src/mame/drivers/cxhumax.cpp +++ b/src/mame/drivers/cxhumax.cpp @@ -943,40 +943,41 @@ uint32_t cxhumax_state::screen_update_cxhumax(screen_device &screen, bitmap_rgb3 return 0; } -ADDRESS_MAP_START(cxhumax_state::cxhumax_map) - AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("ram") AM_MIRROR(0x40000000) // 64?MB RAM - AM_RANGE(0xe0000000, 0xe000ffff) AM_READWRITE(cx_hsx_r, cx_hsx_w) // HSX - AM_RANGE(0xe0010000, 0xe0010003) AM_READWRITE(cx_romdescr_r, cx_romdescr_w) // ROM Descriptor - AM_RANGE(0xe0010004, 0xe001000f) AM_READWRITE(cx_isaromdescr_r, cx_isaromdescr_w) // ISA/ROM Descriptors - AM_RANGE(0xe0010010, 0xe001001f) AM_READWRITE(cx_isadescr_r, cx_isadescr_w) // ISA Descriptors - AM_RANGE(0xe0010020, 0xe001002f) AM_READWRITE(cx_rommap_r, cx_rommap_w) // ROM Mapping - AM_RANGE(0xe0010030, 0xe0010033) AM_READWRITE(cx_rommode_r, cx_rommode_w) // ISA Mode - AM_RANGE(0xe0010034, 0xe0010037) AM_READWRITE(cx_xoemask_r, cx_xoemask_w) // XOE Mask - AM_RANGE(0xe0010040, 0xe0010047) AM_READWRITE(cx_pci_r, cx_pci_w) // PCI - AM_RANGE(0xe0010080, 0xe00100ff) AM_READWRITE(cx_extdesc_r, cx_extdesc_w) // Extended Control - AM_RANGE(0xe0400014, 0xe0400017) AM_WRITE(cx_remap_w) // RST_REMAP_REG - AM_RANGE(0xe0400024, 0xe0400027) AM_READWRITE(cx_scratch_r, cx_scratch_w) // RST_SCRATCH_REG - System Scratch Register - AM_RANGE(0xe0430000, 0xe0430103) AM_READWRITE(cx_timers_r, cx_timers_w) // Timers - AM_RANGE(0xe0411000, 0xe0411033) AM_READWRITE(cx_uart2_r, cx_uart2_w) // UART2 - AM_RANGE(0xe0440000, 0xe0440013) AM_READWRITE(cx_pll_r, cx_pll_w) // PLL Registers - AM_RANGE(0xe0440020, 0xe0440037) AM_READWRITE(cx_clkdiv_r, cx_clkdiv_w) // Clock Divider Registers - AM_RANGE(0xe0440094, 0xe0440097) AM_READWRITE(cx_pllprescale_r, cx_pllprescale_w) // PLL Prescale - AM_RANGE(0xe0440100, 0xe0440173) AM_READWRITE(cx_chipcontrol_r, cx_chipcontrol_w) // Chip Control Registers - AM_RANGE(0xe0450000, 0xe0450037) AM_READWRITE(cx_intctrl_r, cx_intctrl_w) // Interrupt Controller Registers - AM_RANGE(0xe0490000, 0xe0490017) AM_READWRITE(cx_ss_r, cx_ss_w) // Synchronous Serial Port - AM_RANGE(0xe04e0000, 0xe04e001f) AM_READWRITE(cx_i2c0_r, cx_i2c0_w) // I2C0 - AM_RANGE(0xe04e1000, 0xe04e101f) AM_READWRITE(cx_i2c1_r, cx_i2c1_w) // I2C1 - AM_RANGE(0xe04e2000, 0xe04e201f) AM_READWRITE(cx_i2c2_r, cx_i2c2_w) // I2C2 - AM_RANGE(0xe0500300, 0xe050030b) AM_READWRITE(cx_mc_cfg_r, cx_mc_cfg_w) // Memory Controller configuration - AM_RANGE(0xe0560000, 0xe05600fb) AM_READWRITE(cx_drm0_r, cx_drm0_w) // DRM0 - AM_RANGE(0xe0570000, 0xe05700fb) AM_READWRITE(cx_drm1_r, cx_drm1_w) // DRM1 - AM_RANGE(0xe05d0800, 0xe05d0bff) AM_READWRITE(cx_hdmi_r, cx_hdmi_w) // HDMI - AM_RANGE(0xe0600000, 0xe063ffff) AM_READWRITE(cx_gxa_r, cx_gxa_w) // GXA - AM_RANGE(0xe4017000, 0xe40173ff) AM_RAM // HSX - BSP - 1K Video Shared Dual Port RAM (shared with MVP) - AM_RANGE(0xe4080000, 0xe4083fff) AM_RAM // HSX - TSP 0 - 16K Private Instructions/Data and Host-Shared Data - AM_RANGE(0xf0000000, 0xf03fffff) AM_READWRITE(flash_r, flash_w) AM_MIRROR(0x08000000) // 4MB FLASH (INTEL 28F320J3D) - AM_RANGE(0xf4000000, 0xf43fffff) AM_READ(dummy_flash_r) // do we need it? -ADDRESS_MAP_END +void cxhumax_state::cxhumax_map(address_map &map) +{ + map(0x00000000, 0x03ffffff).ram().share("ram").mirror(0x40000000); // 64?MB RAM + map(0xe0000000, 0xe000ffff).rw(this, FUNC(cxhumax_state::cx_hsx_r), FUNC(cxhumax_state::cx_hsx_w)); // HSX + map(0xe0010000, 0xe0010003).rw(this, FUNC(cxhumax_state::cx_romdescr_r), FUNC(cxhumax_state::cx_romdescr_w)); // ROM Descriptor + map(0xe0010004, 0xe001000f).rw(this, FUNC(cxhumax_state::cx_isaromdescr_r), FUNC(cxhumax_state::cx_isaromdescr_w)); // ISA/ROM Descriptors + map(0xe0010010, 0xe001001f).rw(this, FUNC(cxhumax_state::cx_isadescr_r), FUNC(cxhumax_state::cx_isadescr_w)); // ISA Descriptors + map(0xe0010020, 0xe001002f).rw(this, FUNC(cxhumax_state::cx_rommap_r), FUNC(cxhumax_state::cx_rommap_w)); // ROM Mapping + map(0xe0010030, 0xe0010033).rw(this, FUNC(cxhumax_state::cx_rommode_r), FUNC(cxhumax_state::cx_rommode_w)); // ISA Mode + map(0xe0010034, 0xe0010037).rw(this, FUNC(cxhumax_state::cx_xoemask_r), FUNC(cxhumax_state::cx_xoemask_w)); // XOE Mask + map(0xe0010040, 0xe0010047).rw(this, FUNC(cxhumax_state::cx_pci_r), FUNC(cxhumax_state::cx_pci_w)); // PCI + map(0xe0010080, 0xe00100ff).rw(this, FUNC(cxhumax_state::cx_extdesc_r), FUNC(cxhumax_state::cx_extdesc_w)); // Extended Control + map(0xe0400014, 0xe0400017).w(this, FUNC(cxhumax_state::cx_remap_w)); // RST_REMAP_REG + map(0xe0400024, 0xe0400027).rw(this, FUNC(cxhumax_state::cx_scratch_r), FUNC(cxhumax_state::cx_scratch_w)); // RST_SCRATCH_REG - System Scratch Register + map(0xe0430000, 0xe0430103).rw(this, FUNC(cxhumax_state::cx_timers_r), FUNC(cxhumax_state::cx_timers_w)); // Timers + map(0xe0411000, 0xe0411033).rw(this, FUNC(cxhumax_state::cx_uart2_r), FUNC(cxhumax_state::cx_uart2_w)); // UART2 + map(0xe0440000, 0xe0440013).rw(this, FUNC(cxhumax_state::cx_pll_r), FUNC(cxhumax_state::cx_pll_w)); // PLL Registers + map(0xe0440020, 0xe0440037).rw(this, FUNC(cxhumax_state::cx_clkdiv_r), FUNC(cxhumax_state::cx_clkdiv_w)); // Clock Divider Registers + map(0xe0440094, 0xe0440097).rw(this, FUNC(cxhumax_state::cx_pllprescale_r), FUNC(cxhumax_state::cx_pllprescale_w)); // PLL Prescale + map(0xe0440100, 0xe0440173).rw(this, FUNC(cxhumax_state::cx_chipcontrol_r), FUNC(cxhumax_state::cx_chipcontrol_w)); // Chip Control Registers + map(0xe0450000, 0xe0450037).rw(this, FUNC(cxhumax_state::cx_intctrl_r), FUNC(cxhumax_state::cx_intctrl_w)); // Interrupt Controller Registers + map(0xe0490000, 0xe0490017).rw(this, FUNC(cxhumax_state::cx_ss_r), FUNC(cxhumax_state::cx_ss_w)); // Synchronous Serial Port + map(0xe04e0000, 0xe04e001f).rw(this, FUNC(cxhumax_state::cx_i2c0_r), FUNC(cxhumax_state::cx_i2c0_w)); // I2C0 + map(0xe04e1000, 0xe04e101f).rw(this, FUNC(cxhumax_state::cx_i2c1_r), FUNC(cxhumax_state::cx_i2c1_w)); // I2C1 + map(0xe04e2000, 0xe04e201f).rw(this, FUNC(cxhumax_state::cx_i2c2_r), FUNC(cxhumax_state::cx_i2c2_w)); // I2C2 + map(0xe0500300, 0xe050030b).rw(this, FUNC(cxhumax_state::cx_mc_cfg_r), FUNC(cxhumax_state::cx_mc_cfg_w)); // Memory Controller configuration + map(0xe0560000, 0xe05600fb).rw(this, FUNC(cxhumax_state::cx_drm0_r), FUNC(cxhumax_state::cx_drm0_w)); // DRM0 + map(0xe0570000, 0xe05700fb).rw(this, FUNC(cxhumax_state::cx_drm1_r), FUNC(cxhumax_state::cx_drm1_w)); // DRM1 + map(0xe05d0800, 0xe05d0bff).rw(this, FUNC(cxhumax_state::cx_hdmi_r), FUNC(cxhumax_state::cx_hdmi_w)); // HDMI + map(0xe0600000, 0xe063ffff).rw(this, FUNC(cxhumax_state::cx_gxa_r), FUNC(cxhumax_state::cx_gxa_w)); // GXA + map(0xe4017000, 0xe40173ff).ram(); // HSX - BSP - 1K Video Shared Dual Port RAM (shared with MVP) + map(0xe4080000, 0xe4083fff).ram(); // HSX - TSP 0 - 16K Private Instructions/Data and Host-Shared Data + map(0xf0000000, 0xf03fffff).rw(this, FUNC(cxhumax_state::flash_r), FUNC(cxhumax_state::flash_w)).mirror(0x08000000); // 4MB FLASH (INTEL 28F320J3D) + map(0xf4000000, 0xf43fffff).r(this, FUNC(cxhumax_state::dummy_flash_r)); // do we need it? +} static INPUT_PORTS_START( cxhumax ) INPUT_PORTS_END diff --git a/src/mame/drivers/cyberbal.cpp b/src/mame/drivers/cyberbal.cpp index ced3401ec8b..61e3296afba 100644 --- a/src/mame/drivers/cyberbal.cpp +++ b/src/mame/drivers/cyberbal.cpp @@ -121,30 +121,31 @@ WRITE16_MEMBER(cyberbal_state::p2_reset_w) * *************************************/ -ADDRESS_MAP_START(cyberbal_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfc0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xfc8000, 0xfcffff) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0xff00) - AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xfd2000, 0xfd3fff) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w) - AM_RANGE(0xfd4000, 0xfd5fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xfd6000, 0xfd7fff) AM_WRITE(p2_reset_w) - AM_RANGE(0xfd8000, 0xfd9fff) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0xff00) - AM_RANGE(0xfe0000, 0xfe0fff) AM_READ_PORT("IN0") - AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1") - AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield2", tilemap_device, write16) AM_SHARE("playfield2") - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha2", tilemap_device, write16) AM_SHARE("alpha2") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob2") - AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("ff3800") - AM_RANGE(0xff4000, 0xff5fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff6000, 0xff6fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff7000, 0xff77ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xffa000, 0xffbfff) AM_READONLY AM_WRITENOP AM_SHARE("extraram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END +void cyberbal_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfc0000, 0xfc0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xfc8000, 0xfcffff).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)).umask16(0xff00); + map(0xfd0000, 0xfd1fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xfd2000, 0xfd3fff).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w)); + map(0xfd4000, 0xfd5fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xfd6000, 0xfd7fff).w(this, FUNC(cyberbal_state::p2_reset_w)); + map(0xfd8000, 0xfd9fff).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)).umask16(0xff00); + map(0xfe0000, 0xfe0fff).portr("IN0"); + map(0xfe1000, 0xfe1fff).portr("IN1"); + map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette"); + map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette"); + map(0xff0000, 0xff1fff).ram().w(m_playfield2_tilemap, FUNC(tilemap_device::write16)).share("playfield2"); + map(0xff2000, 0xff2fff).ram().w(m_alpha2_tilemap, FUNC(tilemap_device::write16)).share("alpha2"); + map(0xff3000, 0xff37ff).ram().share("mob2"); + map(0xff3800, 0xff3fff).ram().share("ff3800"); + map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff7000, 0xff77ff).ram().share("mob"); + map(0xff7800, 0xff9fff).ram().share("sharedram"); + map(0xffa000, 0xffbfff).readonly().nopw().share("extraram"); + map(0xffc000, 0xffffff).ram().share("mainram"); +} @@ -154,24 +155,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal_state::extra_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfdffff) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfe0000, 0xfe0fff) AM_READ_PORT("IN0") - AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1") - AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield2", tilemap_device, write16) AM_SHARE("playfield2") - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha2", tilemap_device, write16) AM_SHARE("alpha2") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob2") - AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("ff3800") - AM_RANGE(0xff4000, 0xff5fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff6000, 0xff6fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff7000, 0xff77ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("extraram") - AM_RANGE(0xffc000, 0xffffff) AM_READONLY AM_WRITENOP AM_SHARE("mainram") -ADDRESS_MAP_END +void cyberbal_state::extra_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfc0000, 0xfdffff).w(this, FUNC(cyberbal_state::video_int_ack_w)); + map(0xfe0000, 0xfe0fff).portr("IN0"); + map(0xfe1000, 0xfe1fff).portr("IN1"); + map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette"); + map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette"); + map(0xff0000, 0xff1fff).ram().w(m_playfield2_tilemap, FUNC(tilemap_device::write16)).share("playfield2"); + map(0xff2000, 0xff2fff).ram().w(m_alpha2_tilemap, FUNC(tilemap_device::write16)).share("alpha2"); + map(0xff3000, 0xff37ff).ram().share("mob2"); + map(0xff3800, 0xff3fff).ram().share("ff3800"); + map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff7000, 0xff77ff).ram().share("mob"); + map(0xff7800, 0xff9fff).ram().share("sharedram"); + map(0xffa000, 0xffbfff).ram().share("extraram"); + map(0xffc000, 0xffffff).readonly().nopw().share("mainram"); +} @@ -181,20 +183,21 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x2800, 0x2801) AM_WRITE(sound_68k_6502_w) - AM_RANGE(0x2802, 0x2803) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_r, sound_irq_ack_w) - AM_RANGE(0x2804, 0x2805) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_response_w) - AM_RANGE(0x2806, 0x2807) AM_WRITE(sound_bank_select_w) - AM_RANGE(0x2c00, 0x2c01) AM_DEVREAD("soundcomm", atari_sound_comm_device, sound_command_r) - AM_RANGE(0x2c02, 0x2c03) AM_READ(special_port3_r) - AM_RANGE(0x2c04, 0x2c05) AM_READ(sound_68k_6502_r) - AM_RANGE(0x2c06, 0x2c07) AM_READ(sound_6502_stat_r) - AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("soundbank") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cyberbal_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2800, 0x2801).w(this, FUNC(cyberbal_state::sound_68k_6502_w)); + map(0x2802, 0x2803).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); + map(0x2804, 0x2805).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w)); + map(0x2806, 0x2807).w(this, FUNC(cyberbal_state::sound_bank_select_w)); + map(0x2c00, 0x2c01).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r)); + map(0x2c02, 0x2c03).r(this, FUNC(cyberbal_state::special_port3_r)); + map(0x2c04, 0x2c05).r(this, FUNC(cyberbal_state::sound_68k_6502_r)); + map(0x2c06, 0x2c07).r(this, FUNC(cyberbal_state::sound_6502_stat_r)); + map(0x3000, 0x3fff).bankr("soundbank"); + map(0x4000, 0xffff).rom(); +} @@ -204,14 +207,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal_state::sound_68k_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xff8000, 0xff87ff) AM_READ(sound_68k_r) - AM_RANGE(0xff8800, 0xff8fff) AM_WRITE(sound_68k_w) - AM_RANGE(0xff9000, 0xff97ff) AM_WRITE(io_68k_irq_ack_w) - AM_RANGE(0xff9800, 0xff9fff) AM_WRITE(sound_68k_dac_w) - AM_RANGE(0xfff000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void cyberbal_state::sound_68k_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xff8000, 0xff87ff).r(this, FUNC(cyberbal_state::sound_68k_r)); + map(0xff8800, 0xff8fff).w(this, FUNC(cyberbal_state::sound_68k_w)); + map(0xff9000, 0xff97ff).w(this, FUNC(cyberbal_state::io_68k_irq_ack_w)); + map(0xff9800, 0xff9fff).w(this, FUNC(cyberbal_state::sound_68k_dac_w)); + map(0xfff000, 0xffffff).ram(); +} @@ -221,25 +225,26 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal2p_state::cyberbal2p_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfc0003) AM_READ_PORT("IN0") - AM_RANGE(0xfc2000, 0xfc2003) AM_READ_PORT("IN1") - AM_RANGE(0xfc4000, 0xfc4003) AM_READ_PORT("IN2") - AM_RANGE(0xfc6000, 0xfc6003) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0xff00) - AM_RANGE(0xfc8000, 0xfc8fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xfca000, 0xfcafff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfd0000, 0xfd0003) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xfd2000, 0xfd2003) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0xfd4000, 0xfd4003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xfd6000, 0xfd6003) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfd8000, 0xfd8003) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0xff00) - AM_RANGE(0xfe0000, 0xfe0003) AM_READ(sound_state_r) - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xff3800, 0xffffff) AM_RAM -ADDRESS_MAP_END +void cyberbal2p_state::cyberbal2p_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0xfc0000, 0xfc0003).portr("IN0"); + map(0xfc2000, 0xfc2003).portr("IN1"); + map(0xfc4000, 0xfc4003).portr("IN2"); + map(0xfc6000, 0xfc6003).r("jsa", FUNC(atari_jsa_ii_device::main_response_r)).umask16(0xff00); + map(0xfc8000, 0xfc8fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xfca000, 0xfcafff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xfd0000, 0xfd0003).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xfd2000, 0xfd2003).w("jsa", FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0xfd4000, 0xfd4003).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xfd6000, 0xfd6003).w(this, FUNC(cyberbal2p_state::video_int_ack_w)); + map(0xfd8000, 0xfd8003).w("jsa", FUNC(atari_jsa_ii_device::main_command_w)).umask16(0xff00); + map(0xfe0000, 0xfe0003).r(this, FUNC(cyberbal2p_state::sound_state_r)); + map(0xff0000, 0xff1fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); + map(0xff2000, 0xff2fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff3000, 0xff37ff).ram().share("mob"); + map(0xff3800, 0xffffff).ram(); +} diff --git a/src/mame/drivers/cybertnk.cpp b/src/mame/drivers/cybertnk.cpp index 2f13d2e9a63..3bdaafb5019 100644 --- a/src/mame/drivers/cybertnk.cpp +++ b/src/mame/drivers/cybertnk.cpp @@ -607,50 +607,53 @@ WRITE8_MEMBER( cybertnk_state::cybertnk_cnt_w ) } -ADDRESS_MAP_START(cybertnk_state::master_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_RAM /*Work RAM*/ - AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_SHARE("spr_ram") // non-tile based sprite ram - AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(tilemap0_vram_w) AM_SHARE("tilemap0_vram") - AM_RANGE(0x0c4000, 0x0c5fff) AM_RAM_WRITE(tilemap1_vram_w) AM_SHARE("tilemap1_vram") - AM_RANGE(0x0c8000, 0x0c9fff) AM_RAM_WRITE(tilemap2_vram_w) AM_SHARE("tilemap2_vram") - AM_RANGE(0x0e0000, 0x0e0fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x100000, 0x107fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* 2x palettes, one for each screen */ - - AM_RANGE(0x110000, 0x110001) AM_WRITE8(cybertnk_sound_cmd_w,0xffff) - AM_RANGE(0x110002, 0x110003) AM_READ_PORT("DSW1") AM_WRITENOP// watchdog? - AM_RANGE(0x110004, 0x110005) AM_READ8(cybertnk_io_rdy_r,0xff00) - AM_RANGE(0x110006, 0x110007) AM_READ_PORT("IN0") - AM_RANGE(0x110006, 0x110007) AM_WRITE8(cybertnk_mux_w,0xffff) - AM_RANGE(0x110008, 0x110009) AM_READ_PORT("IN1") AM_WRITE8(cybertnk_cnt_w, 0xffff) - AM_RANGE(0x11000a, 0x11000b) AM_READ_PORT("DSW2") - AM_RANGE(0x11000c, 0x11000d) AM_WRITE8(cybertnk_irq_ack_w,0xffff) - - AM_RANGE(0x110040, 0x110045) AM_RAM AM_SHARE("tilemap0_scroll") - AM_RANGE(0x110048, 0x11004d) AM_RAM AM_SHARE("tilemap1_scroll") - AM_RANGE(0x110080, 0x110085) AM_RAM AM_SHARE("tilemap2_scroll") - - AM_RANGE(0x1100d4, 0x1100d5) AM_READ8(cybertnk_mux_r, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cybertnk_state::slave_mem) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x020001) AM_READNOP // POST debug? - AM_RANGE(0x07fff8, 0x07fffd) AM_READNOP // POST debug? - AM_RANGE(0x080000, 0x083fff) AM_RAM /*Work RAM*/ - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM AM_SHARE("roadram") - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x140000, 0x140003) AM_NOP /*Watchdog? Written during loops and interrupts*/ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cybertnk_state::sound_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", y8950_device, read, write) - AM_RANGE(0xa001, 0xa001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xa005, 0xa006) AM_NOP - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", y8950_device, read, write) -ADDRESS_MAP_END +void cybertnk_state::master_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x087fff).ram(); /*Work RAM*/ + map(0x0a0000, 0x0a0fff).ram().share("spr_ram"); // non-tile based sprite ram + map(0x0c0000, 0x0c1fff).ram().w(this, FUNC(cybertnk_state::tilemap0_vram_w)).share("tilemap0_vram"); + map(0x0c4000, 0x0c5fff).ram().w(this, FUNC(cybertnk_state::tilemap1_vram_w)).share("tilemap1_vram"); + map(0x0c8000, 0x0c9fff).ram().w(this, FUNC(cybertnk_state::tilemap2_vram_w)).share("tilemap2_vram"); + map(0x0e0000, 0x0e0fff).ram().share("sharedram"); + map(0x100000, 0x107fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* 2x palettes, one for each screen */ + + map(0x110000, 0x110001).w(this, FUNC(cybertnk_state::cybertnk_sound_cmd_w)); + map(0x110002, 0x110003).portr("DSW1").nopw();// watchdog? + map(0x110004, 0x110004).r(this, FUNC(cybertnk_state::cybertnk_io_rdy_r)); + map(0x110006, 0x110007).portr("IN0"); + map(0x110006, 0x110007).w(this, FUNC(cybertnk_state::cybertnk_mux_w)); + map(0x110008, 0x110009).portr("IN1").w(this, FUNC(cybertnk_state::cybertnk_cnt_w)); + map(0x11000a, 0x11000b).portr("DSW2"); + map(0x11000c, 0x11000d).w(this, FUNC(cybertnk_state::cybertnk_irq_ack_w)); + + map(0x110040, 0x110045).ram().share("tilemap0_scroll"); + map(0x110048, 0x11004d).ram().share("tilemap1_scroll"); + map(0x110080, 0x110085).ram().share("tilemap2_scroll"); + + map(0x1100d5, 0x1100d5).r(this, FUNC(cybertnk_state::cybertnk_mux_r)); +} + +void cybertnk_state::slave_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x020000, 0x020001).nopr(); // POST debug? + map(0x07fff8, 0x07fffd).nopr(); // POST debug? + map(0x080000, 0x083fff).ram(); /*Work RAM*/ + map(0x0c0000, 0x0c0fff).ram().share("roadram"); + map(0x100000, 0x100fff).ram().share("sharedram"); + map(0x140000, 0x140003).noprw(); /*Watchdog? Written during loops and interrupts*/ +} + +void cybertnk_state::sound_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa001).rw("ym1", FUNC(y8950_device::read), FUNC(y8950_device::write)); + map(0xa001, 0xa001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xa005, 0xa006).noprw(); + map(0xc000, 0xc001).rw("ym2", FUNC(y8950_device::read), FUNC(y8950_device::write)); +} // Player 1 controls the Driving and the Cannons // Player 2 controls the Machine Guns diff --git a/src/mame/drivers/cybiko.cpp b/src/mame/drivers/cybiko.cpp index eee6af78903..412a64c8518 100644 --- a/src/mame/drivers/cybiko.cpp +++ b/src/mame/drivers/cybiko.cpp @@ -61,11 +61,12 @@ ToDo: /////////////////////////// // 512 kbyte ram + no memory mapped flash -ADDRESS_MAP_START(cybiko_state::cybikov1_mem) - AM_RANGE( 0x000000, 0x007fff ) AM_ROM - AM_RANGE( 0x600000, 0x600001 ) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w ) +void cybiko_state::cybikov1_mem(address_map &map) +{ + map(0x000000, 0x007fff).rom(); + map(0x600000, 0x600001).rw(this, FUNC(cybiko_state::cybiko_lcd_r), FUNC(cybiko_state::cybiko_lcd_w)); // AM_RANGE( 0xe00000, 0xe07fff ) AM_READ( cybikov1_key_r ) -ADDRESS_MAP_END +} /* @@ -101,21 +102,23 @@ ptr: 243150=24297a // +-------------------------------------+ // 256 kbyte ram + 256 kbyte memory mapped flash -ADDRESS_MAP_START(cybiko_state::cybikov2_mem) - AM_RANGE( 0x000000, 0x007fff ) AM_ROM - AM_RANGE( 0x100000, 0x13ffff ) AM_DEVREAD8("flash2", sst_39vf020_device, read, 0xffff) AM_MIRROR( 0x0c0000 ) - AM_RANGE( 0x600000, 0x600001 ) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w ) AM_MIRROR( 0x1ffffe ) - AM_RANGE( 0xe00000, 0xffdbff ) AM_READ( cybikov2_key_r ) -ADDRESS_MAP_END +void cybiko_state::cybikov2_mem(address_map &map) +{ + map(0x000000, 0x007fff).rom(); + map(0x100000, 0x13ffff).r("flash2", FUNC(sst_39vf020_device::read)).mirror(0x0c0000); + map(0x600000, 0x600001).rw(this, FUNC(cybiko_state::cybiko_lcd_r), FUNC(cybiko_state::cybiko_lcd_w)).mirror(0x1ffffe); + map(0xe00000, 0xffdbff).r(this, FUNC(cybiko_state::cybikov2_key_r)); +} // 2048 kbyte ram + 512 kbyte memory mapped flash -ADDRESS_MAP_START(cybiko_state::cybikoxt_mem) - AM_RANGE( 0x000000, 0x007fff ) AM_ROM AM_MIRROR( 0x038000 ) - AM_RANGE( 0x100000, 0x100001 ) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w ) - AM_RANGE( 0x200000, 0x200003 ) AM_WRITE( cybiko_usb_w ) - AM_RANGE( 0x600000, 0x67ffff ) AM_DEVREAD("flashxt", sst_39vf400a_device, read) AM_MIRROR( 0x180000 ) - AM_RANGE( 0xe00000, 0xefffff ) AM_READ( cybikoxt_key_r ) -ADDRESS_MAP_END +void cybiko_state::cybikoxt_mem(address_map &map) +{ + map(0x000000, 0x007fff).rom().mirror(0x038000); + map(0x100000, 0x100001).rw(this, FUNC(cybiko_state::cybiko_lcd_r), FUNC(cybiko_state::cybiko_lcd_w)); + map(0x200000, 0x200003).w(this, FUNC(cybiko_state::cybiko_usb_w)); + map(0x600000, 0x67ffff).r("flashxt", FUNC(sst_39vf400a_device::read)).mirror(0x180000); + map(0xe00000, 0xefffff).r(this, FUNC(cybiko_state::cybikoxt_key_r)); +} WRITE16_MEMBER(cybiko_state::serflash_w) { @@ -182,25 +185,28 @@ READ16_MEMBER(cybiko_state::port0_r) // ADDRESS MAP - IO // ////////////////////// -ADDRESS_MAP_START(cybiko_state::cybikov1_io) - AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(serflash_w) - AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(clock_r, clock_w) - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(adc1_r) - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(adc2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cybiko_state::cybikov2_io) - AM_RANGE(h8_device::PORT_1, h8_device::PORT_1) AM_READ(port0_r) - AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(serflash_w) - AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(clock_r, clock_w) - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(adc1_r) - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(adc2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cybiko_state::cybikoxt_io) - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READ(xtpower_r) - AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_READWRITE(xtclock_r, xtclock_w) -ADDRESS_MAP_END +void cybiko_state::cybikov1_io(address_map &map) +{ + map(h8_device::PORT_3, h8_device::PORT_3).w(this, FUNC(cybiko_state::serflash_w)); + map(h8_device::PORT_F, h8_device::PORT_F).rw(this, FUNC(cybiko_state::clock_r), FUNC(cybiko_state::clock_w)); + map(h8_device::ADC_1, h8_device::ADC_1).r(this, FUNC(cybiko_state::adc1_r)); + map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(cybiko_state::adc2_r)); +} + +void cybiko_state::cybikov2_io(address_map &map) +{ + map(h8_device::PORT_1, h8_device::PORT_1).r(this, FUNC(cybiko_state::port0_r)); + map(h8_device::PORT_3, h8_device::PORT_3).w(this, FUNC(cybiko_state::serflash_w)); + map(h8_device::PORT_F, h8_device::PORT_F).rw(this, FUNC(cybiko_state::clock_r), FUNC(cybiko_state::clock_w)); + map(h8_device::ADC_1, h8_device::ADC_1).r(this, FUNC(cybiko_state::adc1_r)); + map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(cybiko_state::adc2_r)); +} + +void cybiko_state::cybikoxt_io(address_map &map) +{ + map(h8_device::PORT_A, h8_device::PORT_A).r(this, FUNC(cybiko_state::xtpower_r)); + map(h8_device::PORT_F, h8_device::PORT_F).rw(this, FUNC(cybiko_state::xtclock_r), FUNC(cybiko_state::xtclock_w)); +} ///////////////// // INPUT PORTS // diff --git a/src/mame/drivers/cybstorm.cpp b/src/mame/drivers/cybstorm.cpp index d11b2907bae..256fc0d4b71 100644 --- a/src/mame/drivers/cybstorm.cpp +++ b/src/mame/drivers/cybstorm.cpp @@ -88,32 +88,34 @@ WRITE32_MEMBER(cybstorm_state::latch_w) * *************************************/ -ADDRESS_MAP_START(cybstorm_state::main_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE16("vad", atari_vad_device, control_read, control_write, 0xffffffff) - AM_RANGE(0x3f0000, 0x3fffff) AM_DEVICE16("vadbank", address_map_bank_device, amap16, 0xffffffff) - AM_RANGE(0x9f0000, 0x9f0003) AM_READ_PORT("9F0000") - AM_RANGE(0x9f0010, 0x9f0013) AM_READ(special_port1_r) - AM_RANGE(0x9f0030, 0x9f0033) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff0000) - AM_RANGE(0x9f0040, 0x9f0043) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff0000) - AM_RANGE(0x9f0050, 0x9f0053) AM_WRITE(latch_w) - AM_RANGE(0xfb0000, 0xfb0003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w) - AM_RANGE(0xfc0000, 0xfc0003) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write32) - AM_RANGE(0xfd0000, 0xfd0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00) - AM_RANGE(0xfe0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cybstorm_state::vadbank_map) - AM_RANGE(0x000000, 0x001fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2") - AM_RANGE(0x002000, 0x003fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield") - AM_RANGE(0x004000, 0x005fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext") - AM_RANGE(0x006000, 0x007fff) AM_RAM AM_SHARE("vad:mob") - AM_RANGE(0x008000, 0x008eff) AM_DEVWRITE("vad", atari_vad_device, alpha_w) AM_SHARE("vad:alpha") - AM_RANGE(0x008f00, 0x008f7f) AM_RAM AM_SHARE("vad:eof") - AM_RANGE(0x008f80, 0x008fff) AM_RAM AM_SHARE("vad:mob:slip") - AM_RANGE(0x009000, 0x00ffff) AM_RAM -ADDRESS_MAP_END +void cybstorm_state::main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x20ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); + map(0x3f0000, 0x3fffff).m(m_vadbank, FUNC(address_map_bank_device::amap16)); + map(0x9f0000, 0x9f0003).portr("9F0000"); + map(0x9f0010, 0x9f0013).r(this, FUNC(cybstorm_state::special_port1_r)); + map(0x9f0031, 0x9f0031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r)); + map(0x9f0041, 0x9f0041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w)); + map(0x9f0050, 0x9f0053).w(this, FUNC(cybstorm_state::latch_w)); + map(0xfb0000, 0xfb0003).w("watchdog", FUNC(watchdog_timer_device::reset32_w)); + map(0xfc0000, 0xfc0003).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write32)); + map(0xfd0000, 0xfd0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00); + map(0xfe0000, 0xffffff).ram(); +} + +void cybstorm_state::vadbank_map(address_map &map) +{ + map(0x000000, 0x001fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2"); + map(0x002000, 0x003fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield"); + map(0x004000, 0x005fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext"); + map(0x006000, 0x007fff).ram().share("vad:mob"); + map(0x008000, 0x008eff).w(m_vad, FUNC(atari_vad_device::alpha_w)).share("vad:alpha"); + map(0x008f00, 0x008f7f).ram().share("vad:eof"); + map(0x008f80, 0x008fff).ram().share("vad:mob:slip"); + map(0x009000, 0x00ffff).ram(); +} diff --git a/src/mame/drivers/cyclemb.cpp b/src/mame/drivers/cyclemb.cpp index 6cbd4bb52e7..3ae36db92b1 100644 --- a/src/mame/drivers/cyclemb.cpp +++ b/src/mame/drivers/cyclemb.cpp @@ -572,41 +572,45 @@ WRITE8_MEMBER( cyclemb_state::skydest_i8741_0_w ) } -ADDRESS_MAP_START(cyclemb_state::cyclemb_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("bank1") - AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("cram") - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("obj1_ram") //ORAM1 (only a000-a3ff tested) - AM_RANGE(0xa800, 0xafff) AM_RAM AM_SHARE("obj2_ram") //ORAM2 (only a800-abff tested) - AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("obj3_ram") //ORAM3 (only b000-b3ff tested) - AM_RANGE(0xb800, 0xbfff) AM_RAM //WRAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cyclemb_state::cyclemb_io) +void cyclemb_state::cyclemb_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).bankr("bank1"); + map(0x9000, 0x97ff).ram().share("vram"); + map(0x9800, 0x9fff).ram().share("cram"); + map(0xa000, 0xa7ff).ram().share("obj1_ram"); //ORAM1 (only a000-a3ff tested) + map(0xa800, 0xafff).ram().share("obj2_ram"); //ORAM2 (only a800-abff tested) + map(0xb000, 0xb7ff).ram().share("obj3_ram"); //ORAM3 (only b000-b3ff tested) + map(0xb800, 0xbfff).ram(); //WRAM +} + +void cyclemb_state::cyclemb_io(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc000, 0xc000) AM_WRITE(cyclemb_bankswitch_w) + map(0xc000, 0xc000).w(this, FUNC(cyclemb_state::cyclemb_bankswitch_w)); //AM_RANGE(0xc020, 0xc020) AM_WRITENOP // ? - AM_RANGE(0xc09e, 0xc09f) AM_READWRITE(skydest_i8741_0_r, skydest_i8741_0_w) - AM_RANGE(0xc0bf, 0xc0bf) AM_WRITE(cyclemb_flip_w) //flip screen -ADDRESS_MAP_END + map(0xc09e, 0xc09f).rw(this, FUNC(cyclemb_state::skydest_i8741_0_r), FUNC(cyclemb_state::skydest_i8741_0_w)); + map(0xc0bf, 0xc0bf).w(this, FUNC(cyclemb_state::cyclemb_flip_w)); //flip screen +} -ADDRESS_MAP_START(cyclemb_state::skydest_io) +void cyclemb_state::skydest_io(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc000, 0xc000) AM_WRITE(cyclemb_bankswitch_w) + map(0xc000, 0xc000).w(this, FUNC(cyclemb_state::cyclemb_bankswitch_w)); //AM_RANGE(0xc020, 0xc020) AM_WRITENOP // ? - AM_RANGE(0xc080, 0xc081) AM_READWRITE(skydest_i8741_0_r, skydest_i8741_0_w) + map(0xc080, 0xc081).rw(this, FUNC(cyclemb_state::skydest_i8741_0_r), FUNC(cyclemb_state::skydest_i8741_0_w)); //AM_RANGE(0xc0a0, 0xc0a0) AM_WRITENOP // ? - AM_RANGE(0xc0bf, 0xc0bf) AM_WRITE(cyclemb_flip_w) //flip screen -ADDRESS_MAP_END + map(0xc0bf, 0xc0bf).w(this, FUNC(cyclemb_state::cyclemb_flip_w)); //flip screen +} -ADDRESS_MAP_START(cyclemb_state::cyclemb_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM +void cyclemb_state::cyclemb_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x63ff).ram(); -ADDRESS_MAP_END +} READ8_MEMBER(cyclemb_state::skydest_i8741_1_r) { @@ -633,11 +637,12 @@ WRITE8_MEMBER(cyclemb_state::skydest_i8741_1_w) } -ADDRESS_MAP_START(cyclemb_state::cyclemb_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x40, 0x41) AM_READWRITE(skydest_i8741_1_r, skydest_i8741_1_w) -ADDRESS_MAP_END +void cyclemb_state::cyclemb_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x40, 0x41).rw(this, FUNC(cyclemb_state::skydest_i8741_1_r), FUNC(cyclemb_state::skydest_i8741_1_w)); +} void cyclemb_state::machine_start() diff --git a/src/mame/drivers/czk80.cpp b/src/mame/drivers/czk80.cpp index 615d9ccea81..6d4572cc9d5 100644 --- a/src/mame/drivers/czk80.cpp +++ b/src/mame/drivers/czk80.cpp @@ -105,24 +105,26 @@ READ8_MEMBER( czk80_state::port81_r ) return (m_term_data) ? 3 : 1; } -ADDRESS_MAP_START(czk80_state::czk80_mem) - AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x2000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(czk80_state::czk80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) - AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("pio", z80pio_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x80, 0x80) AM_READ(port80_r) AM_DEVWRITE("terminal", generic_terminal_device, write) - AM_RANGE(0x81, 0x81) AM_READ(port81_r) +void czk80_state::czk80_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bankr0").bankw("bankw0"); + map(0x2000, 0xdfff).ram(); + map(0xe000, 0xffff).bankr("bankr1").bankw("bankw1"); +} + +void czk80_state::czk80_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).w(this, FUNC(czk80_state::port40_w)); + map(0x4c, 0x4f).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x50, 0x53).rw("dart", FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); + map(0x54, 0x57).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x80).r(this, FUNC(czk80_state::port80_r)).w(m_terminal, FUNC(generic_terminal_device::write)); + map(0x81, 0x81).r(this, FUNC(czk80_state::port81_r)); /* Select one of the below */ //AM_RANGE(0xc0, 0xc0) AM_READ(portc0_r) - AM_RANGE(0xc0, 0xc1) AM_DEVICE("fdc", upd765a_device, map) -ADDRESS_MAP_END + map(0xc0, 0xc1).m(m_fdc, FUNC(upd765a_device::map)); +} /* Input ports */ static INPUT_PORTS_START( czk80 ) diff --git a/src/mame/drivers/d400.cpp b/src/mame/drivers/d400.cpp index 888ce75a96b..48b75976a26 100644 --- a/src/mame/drivers/d400.cpp +++ b/src/mame/drivers/d400.cpp @@ -34,17 +34,18 @@ u32 d400_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const return 0; } -ADDRESS_MAP_START(d400_state::mem_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM +void d400_state::mem_map(address_map &map) +{ + map(0x0000, 0x3fff).ram(); //AM_RANGE(0x4000, 0x403f) AM_DEVREADWRITE("vpac", crt9007_device, read, write) - AM_RANGE(0x4800, 0x48ff) AM_RAM - AM_RANGE(0x5000, 0x50ff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0x7880, 0x78bf) AM_DEVREADWRITE("novram", x2210_device, read, write) - AM_RANGE(0x7c00, 0x7c00) AM_WRITENOP - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0x4800, 0x48ff).ram(); + map(0x5000, 0x50ff).ram(); + map(0x6000, 0x6fff).ram(); + map(0x7800, 0x780f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0x7880, 0x78bf).rw("novram", FUNC(x2210_device::read), FUNC(x2210_device::write)); + map(0x7c00, 0x7c00).nopw(); + map(0x8000, 0xffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( d461 ) INPUT_PORTS_END diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp index 33558abb0b4..8a8053e09aa 100644 --- a/src/mame/drivers/d6800.cpp +++ b/src/mame/drivers/d6800.cpp @@ -110,13 +110,14 @@ private: /* Memory Maps */ -ADDRESS_MAP_START(d6800_state::d6800_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0200, 0x0fff) AM_RAM - AM_RANGE(0x8010, 0x8013) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_ROM -ADDRESS_MAP_END +void d6800_state::d6800_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("videoram"); + map(0x0200, 0x0fff).ram(); + map(0x8010, 0x8013).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc000, 0xc7ff).mirror(0x3800).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp index c4d0496c244..212be5a3796 100644 --- a/src/mame/drivers/d6809.cpp +++ b/src/mame/drivers/d6809.cpp @@ -123,15 +123,16 @@ WRITE8_MEMBER( d6809_state::term_w ) m_terminal->write(space, 0, data); } -ADDRESS_MAP_START(d6809_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH +void d6809_state::mem_map(address_map &map) +{ + map.unmap_value_high(); // 00-FF is for various devices. - AM_RANGE(0x0000, 0x0003) AM_DEVREADWRITE("acia1", mos6551_device, read, write) - AM_RANGE(0x0004, 0x0007) AM_DEVREADWRITE("acia2", mos6551_device, read, write) - AM_RANGE(0x00ff, 0x00ff) AM_READWRITE(term_r,term_w) - AM_RANGE(0x1000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END + map(0x0000, 0x0003).rw("acia1", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x0004, 0x0007).rw("acia2", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x00ff, 0x00ff).rw(this, FUNC(d6809_state::term_r), FUNC(d6809_state::term_w)); + map(0x1000, 0xdfff).ram(); + map(0xe000, 0xffff).rom().region("roms", 0); +} /* Input ports */ diff --git a/src/mame/drivers/d9final.cpp b/src/mame/drivers/d9final.cpp index efb3c41e4c7..797cbe9f2b6 100644 --- a/src/mame/drivers/d9final.cpp +++ b/src/mame/drivers/d9final.cpp @@ -126,31 +126,33 @@ READ8_MEMBER(d9final_state::prot_latch_r) } -ADDRESS_MAP_START(d9final_state::d9final_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc800, 0xcbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xcc00, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sc0_lovram) AM_SHARE("lo_vram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sc0_hivram) AM_SHARE("hi_vram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sc0_cram) AM_SHARE("cram") - AM_RANGE(0xf000, 0xf007) AM_READ(prot_latch_r) //AM_DEVREADWRITE("essnd", es8712_device, read, write) - AM_RANGE(0xf800, 0xf80f) AM_DEVREADWRITE("rtc", rtc62421_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(d9final_state::d9final_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void d9final_state::d9final_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram().share("nvram"); + map(0xc800, 0xcbff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xcc00, 0xcfff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(d9final_state::sc0_lovram)).share("lo_vram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(d9final_state::sc0_hivram)).share("hi_vram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(d9final_state::sc0_cram)).share("cram"); + map(0xf000, 0xf007).r(this, FUNC(d9final_state::prot_latch_r)); //AM_DEVREADWRITE("essnd", es8712_device, read, write) + map(0xf800, 0xf80f).rw("rtc", FUNC(rtc62421_device::read), FUNC(rtc62421_device::write)); +} + +void d9final_state::d9final_io(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0x00) AM_WRITENOP //bit 0: irq enable? screen enable? - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWB") - AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWC") - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x60, 0x60) AM_READ_PORT("DSWD") - AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0") - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN1") AM_WRITE(bank_w) - AM_RANGE(0xe0, 0xe0) AM_READ_PORT("IN2") -ADDRESS_MAP_END + map(0x00, 0x00).portr("DSWA"); + map(0x20, 0x20).portr("DSWB"); + map(0x40, 0x40).portr("DSWC"); + map(0x40, 0x41).w("ymsnd", FUNC(ym2413_device::write)); + map(0x60, 0x60).portr("DSWD"); + map(0x80, 0x80).portr("IN0"); + map(0xa0, 0xa0).portr("IN1").w(this, FUNC(d9final_state::bank_w)); + map(0xe0, 0xe0).portr("IN2"); +} static INPUT_PORTS_START( d9final ) PORT_START("IN0") diff --git a/src/mame/drivers/dacholer.cpp b/src/mame/drivers/dacholer.cpp index d603936f186..4d04fe96722 100644 --- a/src/mame/drivers/dacholer.cpp +++ b/src/mame/drivers/dacholer.cpp @@ -233,47 +233,52 @@ WRITE8_MEMBER(dacholer_state::main_irq_ack_w) } -ADDRESS_MAP_START(dacholer_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8800, 0x97ff) AM_RAM - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x400) AM_RAM_WRITE(background_w) AM_SHARE("bgvideoram") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(foreground_w) AM_SHARE("fgvideoram") - AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dacholer_state::itaten_main_map) - AM_IMPORT_FROM( main_map ) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xb7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dacholer_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWA") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB") - AM_RANGE(0x05, 0x05) AM_READNOP // watchdog in itaten - AM_RANGE(0x20, 0x20) AM_WRITE(coins_w) - AM_RANGE(0x21, 0x21) AM_WRITE(bg_bank_w) - AM_RANGE(0x22, 0x22) AM_WRITE(bg_scroll_x_w) - AM_RANGE(0x23, 0x23) AM_WRITE(bg_scroll_y_w) - AM_RANGE(0x24, 0x24) AM_WRITE(main_irq_ack_w) - AM_RANGE(0x27, 0x27) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dacholer_state::snd_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xd000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dacholer_state::itaten_snd_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END +void dacholer_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8800, 0x97ff).ram(); + map(0xc000, 0xc3ff).mirror(0x400).ram().w(this, FUNC(dacholer_state::background_w)).share("bgvideoram"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(dacholer_state::foreground_w)).share("fgvideoram"); + map(0xe000, 0xe0ff).ram().share("spriteram"); +} + +void dacholer_state::itaten_main_map(address_map &map) +{ + main_map(map); + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xb7ff).ram(); +} + +void dacholer_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).portr("P2"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x03, 0x03).portr("DSWA"); + map(0x04, 0x04).portr("DSWB"); + map(0x05, 0x05).nopr(); // watchdog in itaten + map(0x20, 0x20).w(this, FUNC(dacholer_state::coins_w)); + map(0x21, 0x21).w(this, FUNC(dacholer_state::bg_bank_w)); + map(0x22, 0x22).w(this, FUNC(dacholer_state::bg_scroll_x_w)); + map(0x23, 0x23).w(this, FUNC(dacholer_state::bg_scroll_y_w)); + map(0x24, 0x24).w(this, FUNC(dacholer_state::main_irq_ack_w)); + map(0x27, 0x27).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + + +void dacholer_state::snd_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0xd000, 0xe7ff).ram(); +} + + +void dacholer_state::itaten_snd_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0xe000, 0xe7ff).ram(); +} WRITE8_MEMBER(dacholer_state::adpcm_w) @@ -302,25 +307,27 @@ WRITE8_MEMBER(dacholer_state::music_irq_w) m_music_interrupt_enable = data; } -ADDRESS_MAP_START(dacholer_state::snd_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x04, 0x04) AM_WRITE(music_irq_w) - AM_RANGE(0x08, 0x08) AM_WRITE(snd_irq_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(snd_ack_w) - AM_RANGE(0x80, 0x80) AM_WRITE(adpcm_w) - AM_RANGE(0x86, 0x87) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x8a, 0x8b) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay3", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dacholer_state::itaten_snd_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x86, 0x87) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x8a, 0x8b) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay3", ay8910_device, data_address_w) -ADDRESS_MAP_END +void dacholer_state::snd_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x04, 0x04).w(this, FUNC(dacholer_state::music_irq_w)); + map(0x08, 0x08).w(this, FUNC(dacholer_state::snd_irq_w)); + map(0x0c, 0x0c).w(this, FUNC(dacholer_state::snd_ack_w)); + map(0x80, 0x80).w(this, FUNC(dacholer_state::adpcm_w)); + map(0x86, 0x87).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x8a, 0x8b).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x8e, 0x8f).w("ay3", FUNC(ay8910_device::data_address_w)); +} + +void dacholer_state::itaten_snd_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x86, 0x87).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x8a, 0x8b).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x8e, 0x8f).w("ay3", FUNC(ay8910_device::data_address_w)); +} static INPUT_PORTS_START( dacholer ) diff --git a/src/mame/drivers/dai.cpp b/src/mame/drivers/dai.cpp index d2bfcb9f8bb..9501de50f9e 100644 --- a/src/mame/drivers/dai.cpp +++ b/src/mame/drivers/dai.cpp @@ -67,22 +67,24 @@ Timings: #include "speaker.h" /* I/O ports */ -ADDRESS_MAP_START(dai_state::dai_io) -ADDRESS_MAP_END +void dai_state::dai_io(address_map &map) +{ +} /* memory w/r functions */ -ADDRESS_MAP_START(dai_state::dai_mem) - AM_RANGE( 0x0000, 0xbfff) AM_RAMBANK("bank1") - AM_RANGE( 0xc000, 0xdfff) AM_ROM - AM_RANGE( 0xe000, 0xefff) AM_ROMBANK("bank2") - AM_RANGE( 0xf000, 0xf7ff) AM_WRITE(dai_stack_interrupt_circuit_w ) - AM_RANGE( 0xf800, 0xf8ff) AM_RAM - AM_RANGE( 0xfb00, 0xfbff) AM_READWRITE(dai_amd9511_r, dai_amd9511_w ) - AM_RANGE( 0xfc00, 0xfcff) AM_READWRITE(dai_pit_r, dai_pit_w) // AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE( 0xfd00, 0xfdff) AM_READWRITE(dai_io_discrete_devices_r, dai_io_discrete_devices_w ) - AM_RANGE( 0xfe00, 0xfeff) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0xff00, 0xff0f) AM_MIRROR(0xf0) AM_DEVICE("tms5501", tms5501_device, io_map) -ADDRESS_MAP_END +void dai_state::dai_mem(address_map &map) +{ + map(0x0000, 0xbfff).bankrw("bank1"); + map(0xc000, 0xdfff).rom(); + map(0xe000, 0xefff).bankr("bank2"); + map(0xf000, 0xf7ff).w(this, FUNC(dai_state::dai_stack_interrupt_circuit_w)); + map(0xf800, 0xf8ff).ram(); + map(0xfb00, 0xfbff).rw(this, FUNC(dai_state::dai_amd9511_r), FUNC(dai_state::dai_amd9511_w)); + map(0xfc00, 0xfcff).rw(this, FUNC(dai_state::dai_pit_r), FUNC(dai_state::dai_pit_w)); // AM_DEVREADWRITE("pit8253", pit8253_device, read, write) + map(0xfd00, 0xfdff).rw(this, FUNC(dai_state::dai_io_discrete_devices_r), FUNC(dai_state::dai_io_discrete_devices_w)); + map(0xfe00, 0xfeff).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xff00, 0xff0f).mirror(0xf0).m(m_tms5501, FUNC(tms5501_device::io_map)); +} /* keyboard input */ diff --git a/src/mame/drivers/dai3wksi.cpp b/src/mame/drivers/dai3wksi.cpp index 75a55ba3954..9a2b95e307d 100644 --- a/src/mame/drivers/dai3wksi.cpp +++ b/src/mame/drivers/dai3wksi.cpp @@ -321,16 +321,17 @@ WRITE8_MEMBER(dai3wksi_state::dai3wksi_audio_3_w) * *************************************/ -ADDRESS_MAP_START(dai3wksi_state::main_map) - AM_RANGE(0x0000, 0x1bff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x2400, 0x24ff) AM_MIRROR(0x100) AM_READ_PORT("IN0") - AM_RANGE(0x2800, 0x28ff) AM_MIRROR(0x100) AM_READ_PORT("IN1") - AM_RANGE(0x3000, 0x3000) AM_WRITE(dai3wksi_audio_1_w) - AM_RANGE(0x3400, 0x3400) AM_WRITE(dai3wksi_audio_2_w) - AM_RANGE(0x3800, 0x3800) AM_WRITE(dai3wksi_audio_3_w) - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void dai3wksi_state::main_map(address_map &map) +{ + map(0x0000, 0x1bff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x2400, 0x24ff).mirror(0x100).portr("IN0"); + map(0x2800, 0x28ff).mirror(0x100).portr("IN1"); + map(0x3000, 0x3000).w(this, FUNC(dai3wksi_state::dai3wksi_audio_1_w)); + map(0x3400, 0x3400).w(this, FUNC(dai3wksi_state::dai3wksi_audio_2_w)); + map(0x3800, 0x3800).w(this, FUNC(dai3wksi_state::dai3wksi_audio_3_w)); + map(0x8000, 0xbfff).ram().share("videoram"); +} /************************************* diff --git a/src/mame/drivers/dambustr.cpp b/src/mame/drivers/dambustr.cpp index 3f5dccb4cf3..5500409bc75 100644 --- a/src/mame/drivers/dambustr.cpp +++ b/src/mame/drivers/dambustr.cpp @@ -87,42 +87,43 @@ WRITE8_MEMBER(dambustr_state::dambustr_noise_enable_w) } -ADDRESS_MAP_START(dambustr_state::dambustr_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - - AM_RANGE(0x8000, 0x8000) AM_WRITE(dambustr_bg_color_w) - AM_RANGE(0x8001, 0x8001) AM_WRITE(dambustr_bg_split_line_w) - - AM_RANGE(0xc000, 0xc7ff) AM_RAM - - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_READ(galaxold_videoram_r) - AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd860, 0xd87f) AM_RAM AM_SHARE("bulletsram") - - AM_RANGE(0xd880, 0xd8ff) AM_RAM - - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") - AM_RANGE(0xe002, 0xe003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xe004, 0xe007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - - AM_RANGE(0xe800, 0xefff) AM_READ_PORT("IN1") - AM_RANGE(0xe800, 0xe802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xe803, 0xe803) AM_WRITE(dambustr_noise_enable_w) - AM_RANGE(0xe804, 0xe804) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) // probably louder than normal shot - AM_RANGE(0xe805, 0xe805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) // normal shot (like Galaxian) - AM_RANGE(0xe806, 0xe807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - - AM_RANGE(0xf000, 0xf7ff) AM_READ_PORT("DSW") - AM_RANGE(0xf001, 0xf001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xf004, 0xf004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xf006, 0xf006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xf007, 0xf007) AM_WRITE(galaxold_flip_screen_y_w) - - AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0xf800, 0xffff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END +void dambustr_state::dambustr_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + + map(0x8000, 0x8000).w(this, FUNC(dambustr_state::dambustr_bg_color_w)); + map(0x8001, 0x8001).w(this, FUNC(dambustr_state::dambustr_bg_split_line_w)); + + map(0xc000, 0xc7ff).ram(); + + map(0xd000, 0xd3ff).ram().w(this, FUNC(dambustr_state::galaxold_videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).r(this, FUNC(dambustr_state::galaxold_videoram_r)); + map(0xd800, 0xd83f).ram().w(this, FUNC(dambustr_state::galaxold_attributesram_w)).share("attributesram"); + map(0xd840, 0xd85f).ram().share("spriteram"); + map(0xd860, 0xd87f).ram().share("bulletsram"); + + map(0xd880, 0xd8ff).ram(); + + map(0xe000, 0xe000).portr("IN0"); + map(0xe002, 0xe003).w(this, FUNC(dambustr_state::galaxold_coin_counter_w)); + map(0xe004, 0xe007).w(m_custom, FUNC(galaxian_sound_device::lfo_freq_w)); + + map(0xe800, 0xefff).portr("IN1"); + map(0xe800, 0xe802).w(m_custom, FUNC(galaxian_sound_device::background_enable_w)); + map(0xe803, 0xe803).w(this, FUNC(dambustr_state::dambustr_noise_enable_w)); + map(0xe804, 0xe804).w(m_custom, FUNC(galaxian_sound_device::fire_enable_w)); // probably louder than normal shot + map(0xe805, 0xe805).w(m_custom, FUNC(galaxian_sound_device::fire_enable_w)); // normal shot (like Galaxian) + map(0xe806, 0xe807).w(m_custom, FUNC(galaxian_sound_device::vol_w)); + + map(0xf000, 0xf7ff).portr("DSW"); + map(0xf001, 0xf001).w(this, FUNC(dambustr_state::galaxold_nmi_enable_w)); + map(0xf004, 0xf004).w(this, FUNC(dambustr_state::galaxold_stars_enable_w)); + map(0xf006, 0xf006).w(this, FUNC(dambustr_state::galaxold_flip_screen_x_w)); + map(0xf007, 0xf007).w(this, FUNC(dambustr_state::galaxold_flip_screen_y_w)); + + map(0xf800, 0xf800).w(m_custom, FUNC(galaxian_sound_device::pitch_w)); + map(0xf800, 0xffff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} /* verified from Z80 code */ diff --git a/src/mame/drivers/darius.cpp b/src/mame/drivers/darius.cpp index 8405fb5cbde..5f3aefc5598 100644 --- a/src/mame/drivers/darius.cpp +++ b/src/mame/drivers/darius.cpp @@ -192,40 +192,43 @@ WRITE16_MEMBER(darius_state::coin_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(darius_state::darius_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main RAM */ - AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x0b0000, 0x0b0001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xc00000, 0xc00001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0xc00002, 0xc00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("P1") - AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("P2") - AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc0000e, 0xc0000f) AM_READ(coin_r) - AM_RANGE(0xc00010, 0xc00011) AM_READ_PORT("DSW") - AM_RANGE(0xc00050, 0xc00051) AM_NOP // unknown, written by both cpus - always 0? - AM_RANGE(0xc00060, 0xc00061) AM_WRITE(coin_w) - AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xd20000, 0xd20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0xd40000, 0xd40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xd50000, 0xd50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd80000, 0xd80fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* palette */ - AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE("fg_ram") - AM_RANGE(0xe10000, 0xe10fff) AM_RAM /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(darius_state::darius_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04ffff) AM_RAM /* local RAM */ - AM_RANGE(0xc00050, 0xc00051) AM_NOP // unknown, written by both cpus - always 0? - AM_RANGE(0xd80000, 0xd80fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE("fg_ram") -ADDRESS_MAP_END +void darius_state::darius_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x080000, 0x08ffff).ram(); /* main RAM */ + map(0x0a0000, 0x0a0001).w(this, FUNC(darius_state::cpua_ctrl_w)); + map(0x0b0000, 0x0b0001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xc00000, 0xc00001).nopr(); + map(0xc00001, 0xc00001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xc00003, 0xc00003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xc00008, 0xc00009).portr("P1"); + map(0xc0000a, 0xc0000b).portr("P2"); + map(0xc0000c, 0xc0000d).portr("SYSTEM"); + map(0xc0000e, 0xc0000f).r(this, FUNC(darius_state::coin_r)); + map(0xc00010, 0xc00011).portr("DSW"); + map(0xc00050, 0xc00051).noprw(); // unknown, written by both cpus - always 0? + map(0xc00060, 0xc00061).w(this, FUNC(darius_state::coin_w)); + map(0xd00000, 0xd0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); /* tilemaps */ + map(0xd20000, 0xd20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0xd40000, 0xd40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xd50000, 0xd50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd80000, 0xd80fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* palette */ + map(0xe00100, 0xe00fff).ram().share("spriteram"); + map(0xe01000, 0xe02fff).ram().share("share2"); + map(0xe08000, 0xe0ffff).ram().w(this, FUNC(darius_state::darius_fg_layer_w)).share("fg_ram"); + map(0xe10000, 0xe10fff).ram(); /* ??? */ +} + +void darius_state::darius_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04ffff).ram(); /* local RAM */ + map(0xc00050, 0xc00051).noprw(); // unknown, written by both cpus - always 0? + map(0xd80000, 0xd80fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xe00100, 0xe00fff).ram().share("spriteram"); + map(0xe01000, 0xe02fff).ram().share("share2"); + map(0xe08000, 0xe0ffff).ram().w(this, FUNC(darius_state::darius_fg_layer_w)).share("fg_ram"); +} /***************************************************** @@ -418,28 +421,30 @@ WRITE8_MEMBER(darius_state::darius_write_portB1) Sound memory structures / ADPCM *****************************************************/ -ADDRESS_MAP_START(darius_state::darius_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xb001, 0xb001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(darius_fm0_pan) - AM_RANGE(0xc400, 0xc400) AM_WRITE(darius_fm1_pan) - AM_RANGE(0xc800, 0xc800) AM_WRITE(darius_psg0_pan) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(darius_psg1_pan) - AM_RANGE(0xd000, 0xd000) AM_WRITE(darius_da_pan) - AM_RANGE(0xd400, 0xd400) AM_WRITE(adpcm_command_w) /* ADPCM command for second Z80 to read from port 0x00 */ +void darius_state::darius_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb000, 0xb000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xb001, 0xb001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xc000, 0xc000).w(this, FUNC(darius_state::darius_fm0_pan)); + map(0xc400, 0xc400).w(this, FUNC(darius_state::darius_fm1_pan)); + map(0xc800, 0xc800).w(this, FUNC(darius_state::darius_psg0_pan)); + map(0xcc00, 0xcc00).w(this, FUNC(darius_state::darius_psg1_pan)); + map(0xd000, 0xd000).w(this, FUNC(darius_state::darius_da_pan)); + map(0xd400, 0xd400).w(this, FUNC(darius_state::adpcm_command_w)); /* ADPCM command for second Z80 to read from port 0x00 */ // AM_RANGE(0xd800, 0xd800) AM_WRITE(display_value) /* ??? */ - AM_RANGE(0xdc00, 0xdc00) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END + map(0xdc00, 0xdc00).w(this, FUNC(darius_state::sound_bankswitch_w)); +} -ADDRESS_MAP_START(darius_state::darius_sound2_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP +void darius_state::darius_sound2_map(address_map &map) +{ + map(0x0000, 0xffff).rom().nopw(); /* yes, no RAM */ -ADDRESS_MAP_END +} WRITE_LINE_MEMBER(darius_state::darius_adpcm_int) @@ -482,13 +487,14 @@ WRITE8_MEMBER(darius_state::adpcm_data_w) m_msm->reset_w(!(data & 0x20)); /* my best guess, but it could be output enable as well */ } -ADDRESS_MAP_START(darius_state::darius_sound2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(adpcm_command_read, adpcm_nmi_disable) - AM_RANGE(0x01, 0x01) AM_WRITE(adpcm_nmi_enable) - AM_RANGE(0x02, 0x02) AM_READ(readport2) AM_WRITE(adpcm_data_w) /* readport2 ??? */ - AM_RANGE(0x03, 0x03) AM_READ(readport3) /* ??? */ -ADDRESS_MAP_END +void darius_state::darius_sound2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(darius_state::adpcm_command_read), FUNC(darius_state::adpcm_nmi_disable)); + map(0x01, 0x01).w(this, FUNC(darius_state::adpcm_nmi_enable)); + map(0x02, 0x02).r(this, FUNC(darius_state::readport2)).w(this, FUNC(darius_state::adpcm_data_w)); /* readport2 ??? */ + map(0x03, 0x03).r(this, FUNC(darius_state::readport3)); /* ??? */ +} /*********************************************************** diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp index c0b584af4f5..44c571fe480 100644 --- a/src/mame/drivers/darkmist.cpp +++ b/src/mame/drivers/darkmist.cpp @@ -44,34 +44,36 @@ WRITE8_MEMBER(darkmist_state::hw_w) membank("bank1")->set_entry((data&0x80)?1:0); } -ADDRESS_MAP_START(darkmist_state::memmap) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1") - AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2") - AM_RANGE(0xc803, 0xc803) AM_READ_PORT("START") - AM_RANGE(0xc804, 0xc804) AM_WRITE(hw_w) - AM_RANGE(0xc805, 0xc805) AM_WRITEONLY AM_SHARE("spritebank") - AM_RANGE(0xc806, 0xc806) AM_READ_PORT("DSW1") - AM_RANGE(0xc807, 0xc807) AM_READ_PORT("DSW2") - AM_RANGE(0xc808, 0xc808) AM_READ_PORT("UNK") - AM_RANGE(0xd000, 0xd0ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0xd200, 0xd2ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect_ext) AM_SHARE("palette_ext") - AM_RANGE(0xd400, 0xd41f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0xd600, 0xd67f) AM_DEVREADWRITE("t5182", t5182_device, sharedram_r, sharedram_w) - AM_RANGE(0xd680, 0xd680) AM_DEVWRITE("t5182", t5182_device, sound_irq_w) - AM_RANGE(0xd681, 0xd681) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r) - AM_RANGE(0xd682, 0xd682) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w) - AM_RANGE(0xd683, 0xd683) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w) - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("workram") - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(darkmist_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void darkmist_state::memmap(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc801, 0xc801).portr("P1"); + map(0xc802, 0xc802).portr("P2"); + map(0xc803, 0xc803).portr("START"); + map(0xc804, 0xc804).w(this, FUNC(darkmist_state::hw_w)); + map(0xc805, 0xc805).writeonly().share("spritebank"); + map(0xc806, 0xc806).portr("DSW1"); + map(0xc807, 0xc807).portr("DSW2"); + map(0xc808, 0xc808).portr("UNK"); + map(0xd000, 0xd0ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0xd200, 0xd2ff).ram().w(m_palette, FUNC(palette_device::write_indirect_ext)).share("palette_ext"); + map(0xd400, 0xd41f).ram().share("scroll"); + map(0xd600, 0xd67f).rw(m_t5182, FUNC(t5182_device::sharedram_r), FUNC(t5182_device::sharedram_w)); + map(0xd680, 0xd680).w(m_t5182, FUNC(t5182_device::sound_irq_w)); + map(0xd681, 0xd681).r(m_t5182, FUNC(t5182_device::sharedram_semaphore_snd_r)); + map(0xd682, 0xd682).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_acquire_w)); + map(0xd683, 0xd683).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_release_w)); + map(0xd800, 0xdfff).ram().w(this, FUNC(darkmist_state::tx_vram_w)).share("videoram"); + map(0xe000, 0xefff).ram().share("workram"); + map(0xf000, 0xffff).ram().share("spriteram"); +} + +void darkmist_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).bankr("bank1"); +} static INPUT_PORTS_START( darkmist ) PORT_START("P1") diff --git a/src/mame/drivers/darkseal.cpp b/src/mame/drivers/darkseal.cpp index 1a74f3205c0..a3028273af4 100644 --- a/src/mame/drivers/darkseal.cpp +++ b/src/mame/drivers/darkseal.cpp @@ -38,45 +38,47 @@ WRITE16_MEMBER(darkseal_state::irq_ack_w) /******************************************************************************/ -ADDRESS_MAP_START(darkseal_state::darkseal_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(palette_24bit_rg_w) AM_SHARE("paletteram") - AM_RANGE(0x141000, 0x141fff) AM_RAM_WRITE(palette_24bit_b_w) AM_SHARE("paletteram2") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("P1_P2") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x180006, 0x180007) AM_READNOP AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x180008, 0x180009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16) - AM_RANGE(0x18000a, 0x18000b) AM_READNOP AM_WRITE(irq_ack_w) - - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) - - AM_RANGE(0x220000, 0x220fff) AM_RAM AM_SHARE("pf1_rowscroll") +void darkseal_state::darkseal_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("ram"); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x140000, 0x140fff).ram().w(this, FUNC(darkseal_state::palette_24bit_rg_w)).share("paletteram"); + map(0x141000, 0x141fff).ram().w(this, FUNC(darkseal_state::palette_24bit_b_w)).share("paletteram2"); + map(0x180000, 0x180001).portr("DSW"); + map(0x180002, 0x180003).portr("P1_P2"); + map(0x180004, 0x180005).portr("SYSTEM"); + map(0x180006, 0x180007).nopr().w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x180008, 0x180009).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16); + map(0x18000a, 0x18000b).nopr().w(this, FUNC(darkseal_state::irq_ack_w)); + + map(0x200000, 0x201fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x203fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x240000, 0x24000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w)); + + map(0x220000, 0x220fff).ram().share("pf1_rowscroll"); // pf2 & 4 rowscrolls are where? (maybe don't exist?) - AM_RANGE(0x222000, 0x222fff) AM_RAM AM_SHARE("pf3_rowscroll") + map(0x222000, 0x222fff).ram().share("pf3_rowscroll"); - AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x262000, 0x263fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x2a0000, 0x2a000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) -ADDRESS_MAP_END + map(0x260000, 0x261fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x262000, 0x263fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x2a0000, 0x2a000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(darkseal_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void darkseal_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/daruma.cpp b/src/mame/drivers/daruma.cpp index f26b771e11e..74ef4071a69 100644 --- a/src/mame/drivers/daruma.cpp +++ b/src/mame/drivers/daruma.cpp @@ -83,18 +83,20 @@ WRITE8_MEMBER(daruma_state::dev2_w) //m_speaker->level_w(data & 0x01); } -ADDRESS_MAP_START(daruma_state::mem_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void daruma_state::mem_prg(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} -ADDRESS_MAP_START(daruma_state::mem_io) - AM_RANGE(0x0000, 0x0000) AM_READ(dev0_r) - AM_RANGE(0x1000, 0x1000) AM_WRITE(dev1_w) +void daruma_state::mem_io(address_map &map) +{ + map(0x0000, 0x0000).r(this, FUNC(daruma_state::dev0_r)); + map(0x1000, 0x1000).w(this, FUNC(daruma_state::dev1_w)); // AM_RANGE(0x2000, 0x2000) AM_WRITE(dev2_w) // AM_RANGE(0x3000, 0x3000) AM_WRITE(dev3_w) - AM_RANGE(0x4000, 0x4000) AM_READ(dev4_r) - AM_RANGE(0x8000, 0xffff) AM_RAM /* 32K CMOS SRAM (HYUNDAY hy62256a) */ -ADDRESS_MAP_END + map(0x4000, 0x4000).r(this, FUNC(daruma_state::dev4_r)); + map(0x8000, 0xffff).ram(); /* 32K CMOS SRAM (HYUNDAY hy62256a) */ +} //TODO: These buttons and switches are all guesses. We'll need to further investigate this. static INPUT_PORTS_START( daruma ) diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp index aa59a2c1779..68c57f14fb5 100644 --- a/src/mame/drivers/dassault.cpp +++ b/src/mame/drivers/dassault.cpp @@ -213,7 +213,6 @@ TODO: #include "includes/dassault.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "machine/mb8421.h" #include "sound/2203intf.h" #include "sound/ym2151.h" @@ -275,62 +274,65 @@ READ16_MEMBER(dassault_state::dassault_sub_control_r) /**********************************************************************************/ -ADDRESS_MAP_START(dassault_state::dassault_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void dassault_state::dassault_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); - AM_RANGE(0x100000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x100000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x140004, 0x140005) AM_WRITE(main_irq_ack_w) - AM_RANGE(0x140006, 0x140007) AM_WRITENOP /* ? */ + map(0x140004, 0x140005).w(this, FUNC(dassault_state::main_irq_ack_w)); + map(0x140006, 0x140007).nopw(); /* ? */ - AM_RANGE(0x180000, 0x180001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) + map(0x180001, 0x180001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r) - AM_RANGE(0x1c000a, 0x1c000b) AM_WRITE(priority_w) - AM_RANGE(0x1c000c, 0x1c000d) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) - AM_RANGE(0x1c000e, 0x1c000f) AM_WRITE(dassault_control_w) + map(0x1c0000, 0x1c000f).r(this, FUNC(dassault_state::dassault_control_r)); + map(0x1c000a, 0x1c000b).w(this, FUNC(dassault_state::priority_w)); + map(0x1c000c, 0x1c000d).w(m_spriteram2, FUNC(buffered_spriteram16_device::write)); + map(0x1c000e, 0x1c000f).w(this, FUNC(dassault_state::dassault_control_w)); - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x212000, 0x212fff) AM_WRITEONLY AM_SHARE("pf2_rowscroll") - AM_RANGE(0x220000, 0x22000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) + map(0x200000, 0x201fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x203fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x212000, 0x212fff).writeonly().share("pf2_rowscroll"); + map(0x220000, 0x22000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); - AM_RANGE(0x240000, 0x240fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x242000, 0x242fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x252000, 0x252fff) AM_WRITEONLY AM_SHARE("pf4_rowscroll") - AM_RANGE(0x260000, 0x26000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) + map(0x240000, 0x240fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x242000, 0x242fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x252000, 0x252fff).writeonly().share("pf4_rowscroll"); + map(0x260000, 0x26000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w)); - AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("ram") /* Main ram */ - AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram2") /* Spriteram (2nd) */ - AM_RANGE(0x3fe000, 0x3fefff) AM_DEVREADWRITE("sharedram", mb8421_mb8431_16_device, left_r, left_w) -ADDRESS_MAP_END + map(0x3f8000, 0x3fbfff).ram().share("ram"); /* Main ram */ + map(0x3fc000, 0x3fcfff).ram().share("spriteram2"); /* Spriteram (2nd) */ + map(0x3fe000, 0x3fefff).rw("sharedram", FUNC(mb8421_mb8431_16_device::left_r), FUNC(mb8421_mb8431_16_device::left_w)); +} -ADDRESS_MAP_START(dassault_state::dassault_sub_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void dassault_state::dassault_sub_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); - AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x100002, 0x100003) AM_WRITE(sub_irq_ack_w) - AM_RANGE(0x100004, 0x100007) AM_WRITENOP /* ? */ - AM_RANGE(0x100004, 0x100005) AM_READ(dassault_sub_control_r) + map(0x100000, 0x100001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x100002, 0x100003).w(this, FUNC(dassault_state::sub_irq_ack_w)); + map(0x100004, 0x100007).nopw(); /* ? */ + map(0x100004, 0x100005).r(this, FUNC(dassault_state::dassault_sub_control_r)); - AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("ram2") /* Sub cpu ram */ - AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_SHARE("spriteram") /* Sprite ram */ - AM_RANGE(0x3fe000, 0x3fefff) AM_DEVREADWRITE("sharedram", mb8421_mb8431_16_device, right_r, right_w) -ADDRESS_MAP_END + map(0x3f8000, 0x3fbfff).ram().share("ram2"); /* Sub cpu ram */ + map(0x3fc000, 0x3fcfff).ram().share("spriteram"); /* Sprite ram */ + map(0x3fe000, 0x3fefff).rw("sharedram", FUNC(mb8421_mb8431_16_device::right_r), FUNC(mb8421_mb8431_16_device::right_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(dassault_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void dassault_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /**********************************************************************************/ diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp index ffeaf62a46d..a017913cd5c 100644 --- a/src/mame/drivers/datum.cpp +++ b/src/mame/drivers/datum.cpp @@ -81,16 +81,17 @@ private: }; -ADDRESS_MAP_START(datum_state::datum_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK (0x7fff) // A15 not used - AM_RANGE(0x0000, 0x007f) AM_RAM // inside CPU - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_RAM // main ram 2x 2114 - AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void datum_state::datum_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x7fff); // A15 not used + map(0x0000, 0x007f).ram(); // inside CPU + map(0x1000, 0x13ff).mirror(0x0c00).ram(); // main ram 2x 2114 + map(0x4000, 0x4001).mirror(0x0ffe).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x5000, 0x5003).mirror(0x0ffc).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x6000, 0x6003).mirror(0x0ffc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x7000, 0x77ff).mirror(0x0800).rom().region("roms", 0); +} /* Input ports */ diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp index 1ad1273e0e9..ee3e5325d66 100644 --- a/src/mame/drivers/dblcrown.cpp +++ b/src/mame/drivers/dblcrown.cpp @@ -339,35 +339,37 @@ WRITE8_MEMBER(dblcrown_state::watchdog_w) } -ADDRESS_MAP_START(dblcrown_state::dblcrown_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rom_bank") - AM_RANGE(0xa000, 0xb7ff) AM_RAM // work ram - AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_r, palette_w) - AM_RANGE(0xfe00, 0xfeff) AM_RAM // ??? - AM_RANGE(0xff00, 0xffff) AM_RAM // ???, intentional fall-through - AM_RANGE(0xff00, 0xff01) AM_READWRITE(vram_bank_r, vram_bank_w) - AM_RANGE(0xff04, 0xff04) AM_READWRITE(irq_source_r,irq_source_w) - -ADDRESS_MAP_END - -ADDRESS_MAP_START(dblcrown_state::dblcrown_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSWB") - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSWC") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWD") - AM_RANGE(0x04, 0x04) AM_READ(in_mux_r) - AM_RANGE(0x05, 0x05) AM_READ(in_mux_type_r) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x20, 0x21) AM_DEVWRITE("ymz", ymz284_device, address_data_w) - AM_RANGE(0x30, 0x30) AM_WRITE(watchdog_w) - AM_RANGE(0x40, 0x40) AM_WRITE(output_w) -ADDRESS_MAP_END +void dblcrown_state::dblcrown_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("rom_bank"); + map(0xa000, 0xb7ff).ram(); // work ram + map(0xb800, 0xbfff).ram().share("nvram"); + map(0xc000, 0xdfff).rw(this, FUNC(dblcrown_state::vram_r), FUNC(dblcrown_state::vram_w)); + map(0xf000, 0xf1ff).rw(this, FUNC(dblcrown_state::palette_r), FUNC(dblcrown_state::palette_w)); + map(0xfe00, 0xfeff).ram(); // ??? + map(0xff00, 0xffff).ram(); // ???, intentional fall-through + map(0xff00, 0xff01).rw(this, FUNC(dblcrown_state::vram_bank_r), FUNC(dblcrown_state::vram_bank_w)); + map(0xff04, 0xff04).rw(this, FUNC(dblcrown_state::irq_source_r), FUNC(dblcrown_state::irq_source_w)); + +} + +void dblcrown_state::dblcrown_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x00).portr("DSWA"); + map(0x01, 0x01).portr("DSWB"); + map(0x02, 0x02).portr("DSWC"); + map(0x03, 0x03).portr("DSWD"); + map(0x04, 0x04).r(this, FUNC(dblcrown_state::in_mux_r)); + map(0x05, 0x05).r(this, FUNC(dblcrown_state::in_mux_type_r)); + map(0x10, 0x13).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x21).w("ymz", FUNC(ymz284_device::address_data_w)); + map(0x30, 0x30).w(this, FUNC(dblcrown_state::watchdog_w)); + map(0x40, 0x40).w(this, FUNC(dblcrown_state::output_w)); +} static INPUT_PORTS_START( dblcrown ) PORT_START("IN0") diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp index 0280b416518..050ac8f0693 100644 --- a/src/mame/drivers/dblewing.cpp +++ b/src/mame/drivers/dblewing.cpp @@ -173,29 +173,31 @@ WRITE_LINE_MEMBER( dblewing_state::soundlatch_irq_w ) m_soundlatch_pending = bool(state); } -ADDRESS_MAP_START(dblewing_state::dblewing_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void dblewing_state::dblewing_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x104000, 0x104fff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x106000, 0x106fff) AM_RAM AM_SHARE("pf2_rowscroll") + map(0x100000, 0x100fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x102000, 0x102fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x104000, 0x104fff).ram().share("pf1_rowscroll"); + map(0x106000, 0x106fff).ram().share("pf2_rowscroll"); // AM_RANGE(0x280000, 0x2807ff) AM_DEVREADWRITE("ioprot104", deco104_device, dblewing_prot_r, dblewing_prot_w) AM_SHARE("prot16ram") - AM_RANGE(0x280000, 0x283fff) AM_READWRITE(wf_protection_region_0_104_r,wf_protection_region_0_104_w) AM_SHARE("prot16ram") /* Protection device */ + map(0x280000, 0x283fff).rw(this, FUNC(dblewing_state::wf_protection_region_0_104_r), FUNC(dblewing_state::wf_protection_region_0_104_w)).share("prot16ram"); /* Protection device */ - AM_RANGE(0x284000, 0x284001) AM_RAM - AM_RANGE(0x288000, 0x288001) AM_RAM - AM_RANGE(0x28c000, 0x28c00f) AM_RAM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x320000, 0x3207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM -ADDRESS_MAP_END + map(0x284000, 0x284001).ram(); + map(0x288000, 0x288001).ram(); + map(0x28c000, 0x28c00f).ram().w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x300000, 0x3007ff).ram().share("spriteram"); + map(0x320000, 0x3207ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xff3fff).mirror(0xc000).ram(); +} -ADDRESS_MAP_START(dblewing_state::decrypted_opcodes_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END +void dblewing_state::decrypted_opcodes_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().share("decrypted_opcodes"); +} READ8_MEMBER(dblewing_state::irq_latch_r) { @@ -203,19 +205,21 @@ READ8_MEMBER(dblewing_state::irq_latch_r) return m_soundlatch_pending ? 0 : 1; } -ADDRESS_MAP_START(dblewing_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write) - AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("ioprot", deco104_device, soundlatch_r) - AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch? - AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dblewing_state::sound_io) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END +void dblewing_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write)); + map(0xb000, 0xb000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc000, 0xc000).r(m_deco104, FUNC(deco104_device::soundlatch_r)); + map(0xd000, 0xd000).r(this, FUNC(dblewing_state::irq_latch_r)); //timing? sound latch? + map(0xf000, 0xf000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void dblewing_state::sound_io(address_map &map) +{ + map(0x0000, 0xffff).rom().region("audiocpu", 0); +} diff --git a/src/mame/drivers/dbox.cpp b/src/mame/drivers/dbox.cpp index 6e16d12feb3..64103d867bd 100644 --- a/src/mame/drivers/dbox.cpp +++ b/src/mame/drivers/dbox.cpp @@ -568,15 +568,16 @@ READ16_MEMBER (dbox_state::sysflash_r){ /* End of flash emulation */ #endif -ADDRESS_MAP_START(dbox_state::dbox_map) +void dbox_state::dbox_map(address_map &map) +{ // CS0 - bootrom // 008004ee Address mask CS0 00000040, 003ffff5 (ffffffff) - Mask: 003fff00 FCM:0f DD:1 PS: 16-Bit // 008004f8 Base address CS0 00000044, 0000005b (ffffffff) - Base: 00000000 BFC:05 WP:1 FTE:0 NCS:1 Valid: Yes #if LOCALFLASH - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_READ16(sysflash_r, 0xffffffff) AM_REGION("flash", 0) - AM_RANGE(0x000000, 0x3fffff) AM_WRITE16(sysflash_w, 0xffffffff) + map(0x000000, 0x3fffff).rom().r(this, FUNC(dbox_state::sysflash_r)).region("flash", 0); + map(0x000000, 0x3fffff).w(this, FUNC(dbox_state::sysflash_w)); #else - AM_RANGE(0x000000, 0x3fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) + map(0x000000, 0x3fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); #endif // CS2 - CS demux // 0000009a Address mask CS2 00000050, 00007fff (ffffffff) - Mask: 00007f00 FCM:0f DD:3 PS: External DSACK response @@ -586,13 +587,13 @@ ADDRESS_MAP_START(dbox_state::dbox_map) // 000000aa Address mask CS3 00000058, 000007f2 (ffffffff) - Mask: 00000700 FCM:0f DD:0 PS: 8-bit // 000000b2 Base address CS3 0000005c, 00780003 (ffffffff) - Base: 00780000 BFC:00 WP:0 FTE:0 NCS:1 Valid: Yes // AM_RANGE(0x780000, 0x7807ff) - AM_RANGE(0x780100, 0x7801ff) AM_WRITE8(sda5708_reset, 0xffffffff) - AM_RANGE(0x780600, 0x7806ff) AM_WRITE8(sda5708_clk, 0xffffffff) + map(0x780100, 0x7801ff).w(this, FUNC(dbox_state::sda5708_reset)); + map(0x780600, 0x7806ff).w(this, FUNC(dbox_state::sda5708_clk)); // CS1 - RAM area // 0000008a Address mask CS1 00000048, 003ffff5 (ffffffff) - Mask: 003fff00 FCM:0f DD:1 PS: 16-Bit // 00000092 Base address CS1 0000004c, 00800003 (ffffffff) - Base: 00800000 BFC:00 WP:0 FTE:0 NCS:1 Valid: Yes - AM_RANGE(0x800000, 0xcfffff) AM_RAM -ADDRESS_MAP_END + map(0x800000, 0xcfffff).ram(); +} /* Input ports */ static INPUT_PORTS_START( dbox ) diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp index 551ba68ffe5..c834d239355 100644 --- a/src/mame/drivers/dbz.cpp +++ b/src/mame/drivers/dbz.cpp @@ -106,55 +106,58 @@ WRITE16_MEMBER(dbz_state::dbz_sound_cause_nmi) } -ADDRESS_MAP_START(dbz_state::dbz_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x480000, 0x48ffff) AM_RAM - AM_RANGE(0x490000, 0x491fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // '157 RAM is mirrored twice - AM_RANGE(0x492000, 0x493fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x498000, 0x49ffff) AM_DEVREAD("k056832", k056832_device, rom_word_8000_r) // code near a60 in dbz2, subroutine at 730 in dbz - AM_RANGE(0x4a0000, 0x4a0fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) - AM_RANGE(0x4a1000, 0x4a3fff) AM_RAM - AM_RANGE(0x4a8000, 0x4abfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette - AM_RANGE(0x4c0000, 0x4c0001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x4c4000, 0x4c4007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x4c8000, 0x4c8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) - AM_RANGE(0x4cc000, 0x4cc03f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x4d0000, 0x4d001f) AM_DEVWRITE("k053936_1", k053936_device, ctrl_w) - AM_RANGE(0x4d4000, 0x4d401f) AM_DEVWRITE("k053936_2", k053936_device, ctrl_w) - AM_RANGE(0x4e0000, 0x4e0001) AM_READ_PORT("P1_P2") - AM_RANGE(0x4e0002, 0x4e0003) AM_READ_PORT("SYSTEM_DSW1") - AM_RANGE(0x4e4000, 0x4e4001) AM_READ_PORT("DSW2") - AM_RANGE(0x4e8000, 0x4e8001) AM_WRITENOP - AM_RANGE(0x4ec000, 0x4ec001) AM_WRITE(dbzcontrol_w) - AM_RANGE(0x4f0000, 0x4f0001) AM_WRITE(dbz_sound_command_w) - AM_RANGE(0x4f4000, 0x4f4001) AM_WRITE(dbz_sound_cause_nmi) - AM_RANGE(0x4f8000, 0x4f801f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00) // 251 #1 - AM_RANGE(0x4fc000, 0x4fc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) // 251 #2 - - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(dbz_bg2_videoram_w) AM_SHARE("bg2_videoram") - AM_RANGE(0x508000, 0x509fff) AM_RAM_WRITE(dbz_bg1_videoram_w) AM_SHARE("bg1_videoram") - AM_RANGE(0x510000, 0x513fff) AM_DEVREADWRITE("k053936_1", k053936_device, linectrl_r, linectrl_w) // ?? guess, it might not be - AM_RANGE(0x518000, 0x51bfff) AM_DEVREADWRITE("k053936_2", k053936_device, linectrl_r, linectrl_w) // ?? guess, it might not be - AM_RANGE(0x600000, 0x6fffff) AM_READNOP // PSAC 1 ROM readback window - AM_RANGE(0x700000, 0x7fffff) AM_READNOP // PSAC 2 ROM readback window -ADDRESS_MAP_END +void dbz_state::dbz_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x480000, 0x48ffff).ram(); + map(0x490000, 0x491fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // '157 RAM is mirrored twice + map(0x492000, 0x493fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x498000, 0x49ffff).r(m_k056832, FUNC(k056832_device::rom_word_8000_r)); // code near a60 in dbz2, subroutine at 730 in dbz + map(0x4a0000, 0x4a0fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w)); + map(0x4a1000, 0x4a3fff).ram(); + map(0x4a8000, 0x4abfff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); // palette + map(0x4c0000, 0x4c0001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x4c0000, 0x4c0007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x4c4000, 0x4c4007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x4c8000, 0x4c8007).w(m_k056832, FUNC(k056832_device::b_word_w)); + map(0x4cc000, 0x4cc03f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x4d0000, 0x4d001f).w(m_k053936_1, FUNC(k053936_device::ctrl_w)); + map(0x4d4000, 0x4d401f).w(m_k053936_2, FUNC(k053936_device::ctrl_w)); + map(0x4e0000, 0x4e0001).portr("P1_P2"); + map(0x4e0002, 0x4e0003).portr("SYSTEM_DSW1"); + map(0x4e4000, 0x4e4001).portr("DSW2"); + map(0x4e8000, 0x4e8001).nopw(); + map(0x4ec000, 0x4ec001).w(this, FUNC(dbz_state::dbzcontrol_w)); + map(0x4f0000, 0x4f0001).w(this, FUNC(dbz_state::dbz_sound_command_w)); + map(0x4f4000, 0x4f4001).w(this, FUNC(dbz_state::dbz_sound_cause_nmi)); + map(0x4f8000, 0x4f801f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0xff00); // 251 #1 + map(0x4fc000, 0x4fc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); // 251 #2 + + map(0x500000, 0x501fff).ram().w(this, FUNC(dbz_state::dbz_bg2_videoram_w)).share("bg2_videoram"); + map(0x508000, 0x509fff).ram().w(this, FUNC(dbz_state::dbz_bg1_videoram_w)).share("bg1_videoram"); + map(0x510000, 0x513fff).rw(m_k053936_1, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); // ?? guess, it might not be + map(0x518000, 0x51bfff).rw(m_k053936_2, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); // ?? guess, it might not be + map(0x600000, 0x6fffff).nopr(); // PSAC 1 ROM readback window + map(0x700000, 0x7fffff).nopr(); // PSAC 2 ROM readback window +} /* dbz sound */ /* IRQ: from YM2151. NMI: from 68000. Port 0: write to ack NMI */ -ADDRESS_MAP_START(dbz_state::dbz_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe000, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dbz_state::dbz_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP -ADDRESS_MAP_END +void dbz_state::dbz_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd000, 0xd002).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe000, 0xe001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void dbz_state::dbz_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); +} /**********************************************************************************/ diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp index bcca1a1e08e..1ee148f590a 100644 --- a/src/mame/drivers/dccons.cpp +++ b/src/mame/drivers/dccons.cpp @@ -361,21 +361,22 @@ WRITE8_MEMBER(dc_cons_state::dc_flash_w) } #endif -ADDRESS_MAP_START(dc_cons_state::dc_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_WRITENOP // BIOS - AM_RANGE(0x00200000, 0x0021ffff) AM_ROM AM_REGION("dcflash",0)//AM_READWRITE8(dc_flash_r,dc_flash_w, 0xffffffffffffffffU) - AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) - AM_RANGE(0x005f6c00, 0x005f6cff) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7000, 0x005f701f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7080, 0x005f709f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE32(dc_mess_g1_ctrl_r, dc_mess_g1_ctrl_w, 0xffffffffffffffffU ) - AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w ) - AM_RANGE(0x005f7c00, 0x005f7cff) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU) - AM_RANGE(0x005f8000, 0x005f9fff) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU) - AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE(dc_modem_r, dc_modem_w ) - AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) - AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x009fffff) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) +void dc_cons_state::dc_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom().nopw(); // BIOS + map(0x00200000, 0x0021ffff).rom().region("dcflash", 0);//AM_READWRITE8(dc_flash_r,dc_flash_w, 0xffffffffffffffffU) + map(0x005f6800, 0x005f69ff).rw(this, FUNC(dc_cons_state::dc_sysctrl_r), FUNC(dc_cons_state::dc_sysctrl_w)); + map(0x005f6c00, 0x005f6cff).m(m_maple, FUNC(maple_dc_device::amap)); + map(0x005f7000, 0x005f701f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)).umask64(0x0000ffff0000ffff); + map(0x005f7080, 0x005f709f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)).umask64(0x0000ffff0000ffff); + map(0x005f7400, 0x005f74ff).rw(this, FUNC(dc_cons_state::dc_mess_g1_ctrl_r), FUNC(dc_cons_state::dc_mess_g1_ctrl_w)); + map(0x005f7800, 0x005f78ff).rw(this, FUNC(dc_cons_state::dc_g2_ctrl_r), FUNC(dc_cons_state::dc_g2_ctrl_w)); + map(0x005f7c00, 0x005f7cff).m(m_powervr2, FUNC(powervr2_device::pd_dma_map)); + map(0x005f8000, 0x005f9fff).m(m_powervr2, FUNC(powervr2_device::ta_map)); + map(0x00600000, 0x006007ff).rw(this, FUNC(dc_cons_state::dc_modem_r), FUNC(dc_cons_state::dc_modem_w)); + map(0x00700000, 0x00707fff).rw(this, FUNC(dc_cons_state::dc_aica_reg_r), FUNC(dc_cons_state::dc_aica_reg_w)); + map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff); + map(0x00800000, 0x009fffff).rw(this, FUNC(dc_cons_state::sh4_soundram_r), FUNC(dc_cons_state::sh4_soundram_w)); // AM_RANGE(0x01000000, 0x01ffffff) G2 Ext Device #1 // AM_RANGE(0x02700000, 0x02707fff) AICA reg mirror // AM_RANGE(0x02800000, 0x02ffffff) AICA wave mem mirror @@ -383,40 +384,42 @@ ADDRESS_MAP_START(dc_cons_state::dc_map) // AM_RANGE(0x03000000, 0x03ffffff) G2 Ext Device #2 /* Area 1 */ - AM_RANGE(0x04000000, 0x04ffffff) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access - AM_RANGE(0x05000000, 0x05ffffff) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now + map(0x04000000, 0x04ffffff).ram().share("dc_texture_ram"); // texture memory 64 bit access + map(0x05000000, 0x05ffffff).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now /* Area 3 */ - AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("dc_ram") - AM_RANGE(0x0d000000, 0x0dffffff) AM_RAM AM_SHARE("dc_ram")// extra ram on Naomi (mirror on DC) - AM_RANGE(0x0e000000, 0x0effffff) AM_RAM AM_SHARE("dc_ram")// mirror - AM_RANGE(0x0f000000, 0x0fffffff) AM_RAM AM_SHARE("dc_ram")// mirror + map(0x0c000000, 0x0cffffff).ram().share("dc_ram"); + map(0x0d000000, 0x0dffffff).ram().share("dc_ram");// extra ram on Naomi (mirror on DC) + map(0x0e000000, 0x0effffff).ram().share("dc_ram");// mirror + map(0x0f000000, 0x0fffffff).ram().share("dc_ram");// mirror /* Area 4 */ - AM_RANGE(0x10000000, 0x107fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w) - AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU) - AM_RANGE(0x11000000, 0x117fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue + map(0x10000000, 0x107fffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w)); + map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w)); + map(0x11000000, 0x117fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue - AM_RANGE(0x12000000, 0x127fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w) - AM_RANGE(0x12800000, 0x12ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU) - AM_RANGE(0x13000000, 0x137fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue + map(0x12000000, 0x127fffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w)); + map(0x12800000, 0x12ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w)); + map(0x13000000, 0x137fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue // AM_RANGE(0x14000000, 0x17ffffff) G2 Ext Device #3 - AM_RANGE(0x8c000000, 0x8cffffff) AM_RAM AM_SHARE("dc_ram") // another RAM mirror + map(0x8c000000, 0x8cffffff).ram().share("dc_ram"); // another RAM mirror - AM_RANGE(0xa0000000, 0xa01fffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0xa0000000, 0xa01fffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(dc_cons_state::dc_port) - AM_RANGE(0x00000000, 0x00000007) AM_READWRITE(dc_pdtra_r, dc_pdtra_w ) -ADDRESS_MAP_END +void dc_cons_state::dc_port(address_map &map) +{ + map(0x00000000, 0x00000007).rw(this, FUNC(dc_cons_state::dc_pdtra_r), FUNC(dc_cons_state::dc_pdtra_w)); +} -ADDRESS_MAP_START(dc_cons_state::dc_audio_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("dc_sound_ram") /* shared with SH-4 */ - AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w) -ADDRESS_MAP_END +void dc_cons_state::dc_audio_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x001fffff).ram().share("dc_sound_ram"); /* shared with SH-4 */ + map(0x00800000, 0x00807fff).rw(this, FUNC(dc_cons_state::dc_arm_aica_r), FUNC(dc_cons_state::dc_arm_aica_w)); +} static INPUT_PORTS_START( dc ) PORT_START("P1:0") diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp index 11605515d63..4a3c61cc0f0 100644 --- a/src/mame/drivers/dcheese.cpp +++ b/src/mame/drivers/dcheese.cpp @@ -171,19 +171,20 @@ WRITE8_MEMBER(dcheese_state::bsmt_data_w) * *************************************/ -ADDRESS_MAP_START(dcheese_state::main_cpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("200000") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x220000, 0x220001) AM_READ_PORT("220000") AM_WRITE(madmax_blitter_color_w) - AM_RANGE(0x240000, 0x240001) AM_READ_PORT("240000") AM_WRITE(eeprom_control_w) - AM_RANGE(0x260000, 0x26001f) AM_WRITE(madmax_blitter_xparam_w) - AM_RANGE(0x280000, 0x28001f) AM_WRITE(madmax_blitter_yparam_w) - AM_RANGE(0x2a0000, 0x2a003f) AM_READWRITE(madmax_blitter_vidparam_r, madmax_blitter_vidparam_w) - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_WRITE(madmax_blitter_unknown_w) -ADDRESS_MAP_END +void dcheese_state::main_cpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x200001).portr("200000").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x220000, 0x220001).portr("220000").w(this, FUNC(dcheese_state::madmax_blitter_color_w)); + map(0x240000, 0x240001).portr("240000").w(this, FUNC(dcheese_state::eeprom_control_w)); + map(0x260000, 0x26001f).w(this, FUNC(dcheese_state::madmax_blitter_xparam_w)); + map(0x280000, 0x28001f).w(this, FUNC(dcheese_state::madmax_blitter_yparam_w)); + map(0x2a0000, 0x2a003f).rw(this, FUNC(dcheese_state::madmax_blitter_vidparam_r), FUNC(dcheese_state::madmax_blitter_vidparam_w)); + map(0x2e0001, 0x2e0001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x300000, 0x300001).w(this, FUNC(dcheese_state::madmax_blitter_unknown_w)); +} @@ -193,14 +194,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(dcheese_state::sound_cpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_READWRITE(sound_status_r, sound_control_w) - AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x0700) AM_WRITE(bsmt_data_w) - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dcheese_state::sound_cpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rw(this, FUNC(dcheese_state::sound_status_r), FUNC(dcheese_state::sound_control_w)); + map(0x0800, 0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1000, 0x10ff).mirror(0x0700).w(this, FUNC(dcheese_state::bsmt_data_w)); + map(0x1800, 0x1fff).ram(); + map(0x2000, 0xffff).rom(); +} diff --git a/src/mame/drivers/dcon.cpp b/src/mame/drivers/dcon.cpp index 25c20277caf..8ec949416b1 100644 --- a/src/mame/drivers/dcon.cpp +++ b/src/mame/drivers/dcon.cpp @@ -38,31 +38,33 @@ READ8_MEMBER(dcon_state::sdgndmps_sound_comms_r) return m_seibu_sound->main_r(space, offset); } -ADDRESS_MAP_START(dcon_state::dcon_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x80000, 0x8bfff) AM_RAM - - AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(background_w) AM_SHARE("back_data") - AM_RANGE(0x8c800, 0x8cfff) AM_RAM_WRITE(foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x8d000, 0x8d7ff) AM_RAM_WRITE(midground_w) AM_SHARE("mid_data") - AM_RANGE(0x8d800, 0x8e7ff) AM_RAM_WRITE(text_w) AM_SHARE("textram") - AM_RANGE(0x8e800, 0x8f7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x8f800, 0x8ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9d000, 0x9d7ff) AM_WRITE(gfxbank_w) - - AM_RANGE(0xa0000, 0xa000d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0xc0080, 0xc0081) AM_WRITENOP - AM_RANGE(0xc00c0, 0xc00c1) AM_WRITENOP - AM_RANGE(0xe0000, 0xe0001) AM_READ_PORT("DSW") - AM_RANGE(0xe0002, 0xe0003) AM_READ_PORT("P1_P2") - AM_RANGE(0xe0004, 0xe0005) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dcon_state::sdgndmps_map) - AM_IMPORT_FROM(dcon_map) - AM_RANGE(0xa0000, 0xa000d) AM_READ8(sdgndmps_sound_comms_r, 0x00ff) -ADDRESS_MAP_END +void dcon_state::dcon_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0x80000, 0x8bfff).ram(); + + map(0x8c000, 0x8c7ff).ram().w(this, FUNC(dcon_state::background_w)).share("back_data"); + map(0x8c800, 0x8cfff).ram().w(this, FUNC(dcon_state::foreground_w)).share("fore_data"); + map(0x8d000, 0x8d7ff).ram().w(this, FUNC(dcon_state::midground_w)).share("mid_data"); + map(0x8d800, 0x8e7ff).ram().w(this, FUNC(dcon_state::text_w)).share("textram"); + map(0x8e800, 0x8f7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x8f800, 0x8ffff).ram().share("spriteram"); + map(0x9d000, 0x9d7ff).w(this, FUNC(dcon_state::gfxbank_w)); + + map(0xa0000, 0xa000d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0xc0000, 0xc004f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0xc0080, 0xc0081).nopw(); + map(0xc00c0, 0xc00c1).nopw(); + map(0xe0000, 0xe0001).portr("DSW"); + map(0xe0002, 0xe0003).portr("P1_P2"); + map(0xe0004, 0xe0005).portr("SYSTEM"); +} + +void dcon_state::sdgndmps_map(address_map &map) +{ + dcon_map(map); + map(0xa0000, 0xa000d).r(this, FUNC(dcon_state::sdgndmps_sound_comms_r)).umask16(0x00ff); +} /******************************************************************************/ diff --git a/src/mame/drivers/dct11em.cpp b/src/mame/drivers/dct11em.cpp index e39cd45a9d1..a19e68639eb 100644 --- a/src/mame/drivers/dct11em.cpp +++ b/src/mame/drivers/dct11em.cpp @@ -27,12 +27,13 @@ public: void dct11em_mem(address_map &map); }; -ADDRESS_MAP_START(dct11em_state::dct11em_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_RAM // RAM - AM_RANGE( 0x2000, 0x2fff ) AM_RAM // Optional RAM - AM_RANGE( 0xa000, 0xdfff ) AM_ROM // RAM -ADDRESS_MAP_END +void dct11em_state::dct11em_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).ram(); // RAM + map(0x2000, 0x2fff).ram(); // Optional RAM + map(0xa000, 0xdfff).rom(); // RAM +} /* Input ports */ static INPUT_PORTS_START( dct11em ) diff --git a/src/mame/drivers/dday.cpp b/src/mame/drivers/dday.cpp index 74242aaf235..9fa0fb511fc 100644 --- a/src/mame/drivers/dday.cpp +++ b/src/mame/drivers/dday.cpp @@ -58,22 +58,23 @@ write: #include "speaker.h" -ADDRESS_MAP_START(dday_state::dday_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_WRITE(dday_sl_control_w) - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(dday_textvideoram_w) AM_SHARE("textvideoram") - AM_RANGE(0x5400, 0x57ff) AM_RAM_WRITE(dday_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x5800, 0x5bff) AM_RAM_WRITE(dday_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x5c00, 0x5fff) AM_READWRITE(dday_colorram_r, dday_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0x63ff) AM_RAM - AM_RANGE(0x6400, 0x6401) AM_MIRROR(0x000e) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x6800, 0x6801) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x6c00, 0x6c00) AM_READ_PORT("BUTTONS") - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0") - AM_RANGE(0x7400, 0x7400) AM_READ_PORT("DSW1") - AM_RANGE(0x7800, 0x7800) AM_READWRITE(dday_countdown_timer_r, dday_control_w) - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("PADDLE") -ADDRESS_MAP_END +void dday_state::dday_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4000).w(this, FUNC(dday_state::dday_sl_control_w)); + map(0x5000, 0x53ff).ram().w(this, FUNC(dday_state::dday_textvideoram_w)).share("textvideoram"); + map(0x5400, 0x57ff).ram().w(this, FUNC(dday_state::dday_fgvideoram_w)).share("fgvideoram"); + map(0x5800, 0x5bff).ram().w(this, FUNC(dday_state::dday_bgvideoram_w)).share("bgvideoram"); + map(0x5c00, 0x5fff).rw(this, FUNC(dday_state::dday_colorram_r), FUNC(dday_state::dday_colorram_w)).share("colorram"); + map(0x6000, 0x63ff).ram(); + map(0x6400, 0x6401).mirror(0x000e).w(m_ay1, FUNC(ay8910_device::address_data_w)); + map(0x6800, 0x6801).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x6c00, 0x6c00).portr("BUTTONS"); + map(0x7000, 0x7000).portr("DSW0"); + map(0x7400, 0x7400).portr("DSW1"); + map(0x7800, 0x7800).rw(this, FUNC(dday_state::dday_countdown_timer_r), FUNC(dday_state::dday_control_w)); + map(0x7c00, 0x7c00).portr("PADDLE"); +} diff --git a/src/mame/drivers/ddayjlc.cpp b/src/mame/drivers/ddayjlc.cpp index 90eff6bbeb2..d9a163f526b 100644 --- a/src/mame/drivers/ddayjlc.cpp +++ b/src/mame/drivers/ddayjlc.cpp @@ -266,41 +266,43 @@ WRITE8_MEMBER(ddayjlc_state::i8257_LMSR_w) } } -ADDRESS_MAP_START(ddayjlc_state::main_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(ddayjlc_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(ddayjlc_bgram_w) AM_SHARE("bgram") /* 9800-981f - videoregs */ - AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank1") AM_WRITENOP - AM_RANGE(0xe000, 0xe003) AM_WRITE(i8257_CH0_w) - AM_RANGE(0xe008, 0xe008) AM_WRITENOP - AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_w) - AM_RANGE(0xf100, 0xf100) AM_WRITENOP - AM_RANGE(0xf080, 0xf080) AM_WRITE(char_bank_w) - AM_RANGE(0xf081, 0xf081) AM_WRITENOP - AM_RANGE(0xf083, 0xf083) AM_WRITE(i8257_LMSR_w) - AM_RANGE(0xf084, 0xf084) AM_WRITE(bg0_w) - AM_RANGE(0xf085, 0xf085) AM_WRITE(bg1_w) - AM_RANGE(0xf086, 0xf086) AM_WRITE(bg2_w) - AM_RANGE(0xf101, 0xf101) AM_WRITE(main_nmi_w) - AM_RANGE(0xf102, 0xf105) AM_WRITE(prot_w) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("INPUTS") - AM_RANGE(0xf100, 0xf100) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf180, 0xf180) AM_READ_PORT("DSW1") - AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddayjlc_state::sound_cpu) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x7000, 0x7000) AM_WRITE(sound_nmi_w) -ADDRESS_MAP_END +void ddayjlc_state::main_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().share("mainram"); + map(0x9000, 0x93ff).ram().share("spriteram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(ddayjlc_state::ddayjlc_videoram_w)).share("videoram"); + map(0x9800, 0x9fff).ram().w(this, FUNC(ddayjlc_state::ddayjlc_bgram_w)).share("bgram"); /* 9800-981f - videoregs */ + map(0xa000, 0xdfff).bankr("bank1").nopw(); + map(0xe000, 0xe003).w(this, FUNC(ddayjlc_state::i8257_CH0_w)); + map(0xe008, 0xe008).nopw(); + map(0xf000, 0xf000).w(this, FUNC(ddayjlc_state::sound_w)); + map(0xf100, 0xf100).nopw(); + map(0xf080, 0xf080).w(this, FUNC(ddayjlc_state::char_bank_w)); + map(0xf081, 0xf081).nopw(); + map(0xf083, 0xf083).w(this, FUNC(ddayjlc_state::i8257_LMSR_w)); + map(0xf084, 0xf084).w(this, FUNC(ddayjlc_state::bg0_w)); + map(0xf085, 0xf085).w(this, FUNC(ddayjlc_state::bg1_w)); + map(0xf086, 0xf086).w(this, FUNC(ddayjlc_state::bg2_w)); + map(0xf101, 0xf101).w(this, FUNC(ddayjlc_state::main_nmi_w)); + map(0xf102, 0xf105).w(this, FUNC(ddayjlc_state::prot_w)); + map(0xf000, 0xf000).portr("INPUTS"); + map(0xf100, 0xf100).portr("SYSTEM"); + map(0xf180, 0xf180).portr("DSW1"); + map(0xf200, 0xf200).portr("DSW2"); +} + + +void ddayjlc_state::sound_cpu(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x4000, 0x4000).w("ay1", FUNC(ay8910_device::address_w)); + map(0x5000, 0x5000).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::address_w)); + map(0x7000, 0x7000).w(this, FUNC(ddayjlc_state::sound_nmi_w)); +} static INPUT_PORTS_START( ddayjlc ) PORT_START("INPUTS") diff --git a/src/mame/drivers/ddealer.cpp b/src/mame/drivers/ddealer.cpp index 0b2f0e6f6eb..084a8dec283 100644 --- a/src/mame/drivers/ddealer.cpp +++ b/src/mame/drivers/ddealer.cpp @@ -472,28 +472,29 @@ WRITE16_MEMBER(ddealer_state::mcu_shared_w) } } -ADDRESS_MAP_START(ddealer_state::ddealer) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080006, 0x080007) AM_READ_PORT("UNK") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ymsnd", ym2203_device, write, 0x00ff) // ym ? - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08cfff) AM_RAM AM_SHARE("vregs") // palette ram +void ddealer_state::ddealer(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080006, 0x080007).portr("UNK"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x084000, 0x084003).w("ymsnd", FUNC(ym2203_device::write)).umask16(0x00ff); // ym ? + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08cfff).ram().share("vregs"); // palette ram /* this might actually be 1 tilemap with some funky rowscroll / columnscroll enabled, I'm not sure */ - AM_RANGE(0x090000, 0x090fff) AM_RAM AM_SHARE("left_fg_vratop") - AM_RANGE(0x091000, 0x091fff) AM_RAM AM_SHARE("right_fg_vratop") - AM_RANGE(0x092000, 0x092fff) AM_RAM AM_SHARE("left_fg_vrabot") - AM_RANGE(0x093000, 0x093fff) AM_RAM AM_SHARE("right_fg_vrabot") + map(0x090000, 0x090fff).ram().share("left_fg_vratop"); + map(0x091000, 0x091fff).ram().share("right_fg_vratop"); + map(0x092000, 0x092fff).ram().share("left_fg_vrabot"); + map(0x093000, 0x093fff).ram().share("right_fg_vrabot"); //AM_RANGE(0x094000, 0x094001) AM_NOP // always 0? - AM_RANGE(0x098000, 0x098001) AM_WRITE(flipscreen_w) - AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(back_vram_w) AM_SHARE("back_vram") // bg tilemap - AM_RANGE(0x0f0000, 0x0fdfff) AM_RAM AM_SHARE("work_ram") - AM_RANGE(0x0fe000, 0x0fefff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("mcu_shared_ram") - AM_RANGE(0x0ff000, 0x0fffff) AM_RAM -ADDRESS_MAP_END + map(0x098000, 0x098001).w(this, FUNC(ddealer_state::flipscreen_w)); + map(0x09c000, 0x09cfff).ram().w(this, FUNC(ddealer_state::back_vram_w)).share("back_vram"); // bg tilemap + map(0x0f0000, 0x0fdfff).ram().share("work_ram"); + map(0x0fe000, 0x0fefff).ram().w(this, FUNC(ddealer_state::mcu_shared_w)).share("mcu_shared_ram"); + map(0x0ff000, 0x0fffff).ram(); +} static INPUT_PORTS_START( ddealer ) PORT_START("IN0") diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index 2daf04e9e75..aa8cea9a4f6 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -1956,39 +1956,40 @@ WRITE16_MEMBER(ddenlovr_state::quiz365_protection_w) COMBINE_DATA(m_quiz365_protection + offset); } -ADDRESS_MAP_START(ddenlovr_state::quiz365_map) - AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM +void ddenlovr_state::quiz365_map(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); // ROM - AM_RANGE(0x200000, 0x2003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) + map(0x200000, 0x2003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); - AM_RANGE(0x200c02, 0x200c03) AM_READ(quiz365_protection_r) // Protection - AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(quiz365_protection_w) // Protection + map(0x200c02, 0x200c03).r(this, FUNC(ddenlovr_state::quiz365_protection_r)); // Protection + map(0x200e0a, 0x200e0d).w(this, FUNC(ddenlovr_state::quiz365_protection_w)); // Protection // AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ? - AM_RANGE(0x300200, 0x300201) AM_WRITE8(ddenlovr_select2_w, 0x00ff) - AM_RANGE(0x300202, 0x300203) AM_WRITE8(quiz365_coincounter_w, 0x00ff) // Coin Counters + more stuff written on startup - AM_RANGE(0x300204, 0x300207) AM_READ(quiz365_input2_r) // - - AM_RANGE(0x300240, 0x300247) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0x300248, 0x30024f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0x300250, 0x300257) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0x300258, 0x30025f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0x300268, 0x300269) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0x30026a, 0x30026b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0x30026c, 0x30026d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff) - AM_RANGE(0x300270, 0x300271) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) - AM_RANGE(0x300280, 0x300283) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r) // Video Chip - - AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)// Sound - AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0x300340, 0x30035f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) - AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x3003c0, 0x3003cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0x300201, 0x300201).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w)); + map(0x300203, 0x300203).w(this, FUNC(ddenlovr_state::quiz365_coincounter_w)); // Coin Counters + more stuff written on startup + map(0x300204, 0x300207).r(this, FUNC(ddenlovr_state::quiz365_input2_r)); // + + map(0x300240, 0x300247).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0x300248, 0x30024f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0x300250, 0x300257).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0x300258, 0x30025f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0x300269, 0x300269).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x30026b, 0x30026b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x30026d, 0x30026d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x300270, 0x300271).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover) + map(0x300280, 0x300283).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0x300286, 0x300287).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip + + map(0x3002c1, 0x3002c1).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));// Sound + map(0x300300, 0x300303).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x300340, 0x30035f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x300380, 0x300383).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x300385, 0x300385).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x3003c0, 0x3003cf).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); + + map(0xff0000, 0xffffff).ram(); // RAM +} READ16_MEMBER(ddenlovr_state::ddenlovj_dsw_r) @@ -2012,36 +2013,37 @@ CUSTOM_INPUT_MEMBER(ddenlovr_state::ddenlovj_blitter_r) return m_ddenlovr_blitter_irq_flag ? 0x03 : 0x00; // bit 4 = 1 -> blitter busy } -ADDRESS_MAP_START(ddenlovr_state::ddenlovj_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM +void ddenlovr_state::ddenlovj_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM - AM_RANGE(0x200000, 0x2003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) + map(0x200000, 0x2003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); // AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ? B0 on startup, then 00 - AM_RANGE(0x300040, 0x300047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0x300048, 0x30004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0x300050, 0x300057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0x300058, 0x30005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0x300068, 0x300069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0x30006a, 0x30006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0x30006c, 0x30006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff) - AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) - AM_RANGE(0x300080, 0x300083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r) // Video Chip - AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) - AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1") - AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2") - AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") - AM_RANGE(0x300186, 0x300187) AM_READ(ddenlovj_dsw_r) // DSW - AM_RANGE(0x300188, 0x300189) AM_WRITE8(ddenlovj_coincounter_w, 0x00ff) - AM_RANGE(0x30018a, 0x30018b) AM_WRITE8(ddenlovr_select_w, 0x00ff) // DSW select - AM_RANGE(0x30018c, 0x30018d) AM_WRITE8(ddenlovr_oki_bank_w, 0x00ff) - AM_RANGE(0x3001c0, 0x3001cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)// Sound - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0x300040, 0x300047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0x300048, 0x30004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0x300050, 0x300057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0x300058, 0x30005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0x300069, 0x300069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x30006b, 0x30006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x30006d, 0x30006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x300070, 0x300071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover) + map(0x300080, 0x300083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0x300086, 0x300087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip + map(0x3000c0, 0x3000c3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x300100, 0x30011f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x300140, 0x300143).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x300180, 0x300181).portr("P1"); + map(0x300182, 0x300183).portr("P2"); + map(0x300184, 0x300185).portr("SYSTEM"); + map(0x300186, 0x300187).r(this, FUNC(ddenlovr_state::ddenlovj_dsw_r)); // DSW + map(0x300189, 0x300189).w(this, FUNC(ddenlovr_state::ddenlovj_coincounter_w)); + map(0x30018b, 0x30018b).w(this, FUNC(ddenlovr_state::ddenlovr_select_w)); // DSW select + map(0x30018d, 0x30018d).w(this, FUNC(ddenlovr_state::ddenlovr_oki_bank_w)); + map(0x3001c0, 0x3001cf).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x300241, 0x300241).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));// Sound + map(0xff0000, 0xffffff).ram(); // RAM +} READ16_MEMBER(ddenlovr_state::ddenlovrk_protection1_r) @@ -2067,73 +2069,75 @@ WRITE16_MEMBER(ddenlovr_state::ddenlovrk_protection2_w) m_oki->set_rom_bank((*m_protection2) & 0x7); } -ADDRESS_MAP_START(ddenlovr_state::ddenlovrk_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM +void ddenlovr_state::ddenlovrk_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM - AM_RANGE(0x100000, 0x100001) AM_RAM_READ(ddenlovrk_protection1_r) AM_SHARE("protection1") - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ddenlovrk_protection2_r, ddenlovrk_protection2_w) AM_SHARE("protection2") + map(0x100000, 0x100001).ram().r(this, FUNC(ddenlovr_state::ddenlovrk_protection1_r)).share("protection1"); + map(0x200000, 0x200001).rw(this, FUNC(ddenlovr_state::ddenlovrk_protection2_r), FUNC(ddenlovr_state::ddenlovrk_protection2_w)).share("protection2"); - AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) + map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); // AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00 - AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff) - AM_RANGE(0xe00070, 0xe00071) AM_READNOP - AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip - - AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1") - AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") - AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") - AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) - AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0xe00070, 0xe00071).nopr(); + map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip + map(0xe00100, 0xe00101).portr("P1"); + map(0xe00102, 0xe00103).portr("P2"); + map(0xe00104, 0xe00105).portr("SYSTEM"); + map(0xe00200, 0xe00201).portr("DSW"); + map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xff0000, 0xffffff).ram(); // RAM +} -ADDRESS_MAP_START(ddenlovr_state::ddenlovr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x300001) AM_WRITE8(ddenlovr_oki_bank_w, 0x00ff) +void ddenlovr_state::ddenlovr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM - AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) + map(0x300001, 0x300001).w(this, FUNC(ddenlovr_state::ddenlovr_oki_bank_w)); + + map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); // AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00 - AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff) - AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) - AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip - - AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1") - AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") - AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") - AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) - AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0xe00070, 0xe00071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover) + map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip + + map(0xe00100, 0xe00101).portr("P1"); + map(0xe00102, 0xe00103).portr("P2"); + map(0xe00104, 0xe00105).portr("SYSTEM"); + map(0xe00200, 0xe00201).portr("DSW"); + map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xff0000, 0xffffff).ram(); // RAM +} CUSTOM_INPUT_MEMBER(ddenlovr_state::nettoqc_special_r) @@ -2177,38 +2181,39 @@ WRITE8_MEMBER(ddenlovr_state::nettoqc_oki_bank_w ) m_oki->set_rom_bank(data & 3); } -ADDRESS_MAP_START(ddenlovr_state::nettoqc_map) - AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM - - AM_RANGE(0x200000, 0x2003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) - AM_RANGE(0x200c02, 0x200c03) AM_READ(nettoqc_protection1_r) // Protection 1 - AM_RANGE(0x200e0a, 0x200e0d) AM_WRITEONLY AM_SHARE("protection1") // "" - AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ? - - AM_RANGE(0x300040, 0x300047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0x300048, 0x30004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0x300050, 0x300057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0x300058, 0x30005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0x300068, 0x300069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0x30006a, 0x30006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0x30006c, 0x30006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff) - AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) - AM_RANGE(0x300080, 0x300083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r) // Video Chip - AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) - AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1") - AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2") - AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM") - AM_RANGE(0x300186, 0x300187) AM_READ(nettoqc_input_r) // DSW's - AM_RANGE(0x300188, 0x300189) AM_WRITE8(nettoqc_coincounter_w, 0x00ff) - AM_RANGE(0x30018a, 0x30018b) AM_WRITE8(ddenlovr_select_w, 0x00ff) - AM_RANGE(0x30018c, 0x30018d) AM_WRITE8(nettoqc_oki_bank_w, 0x00ff) - AM_RANGE(0x3001c0, 0x3001cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END +void ddenlovr_state::nettoqc_map(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); // ROM + + map(0x200000, 0x2003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); + map(0x200c02, 0x200c03).r(this, FUNC(ddenlovr_state::nettoqc_protection1_r)); // Protection 1 + map(0x200e0a, 0x200e0d).writeonly().share("protection1"); // "" + map(0x201000, 0x2017ff).writeonly(); // ? + + map(0x300040, 0x300047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0x300048, 0x30004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0x300050, 0x300057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0x300058, 0x30005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0x300069, 0x300069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x30006b, 0x30006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x30006d, 0x30006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x300070, 0x300071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover) + map(0x300080, 0x300083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0x300086, 0x300087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip + map(0x3000c0, 0x3000c3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x300100, 0x30011f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x300140, 0x300143).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x300180, 0x300181).portr("P1"); + map(0x300182, 0x300183).portr("P2"); + map(0x300184, 0x300185).portr("SYSTEM"); + map(0x300186, 0x300187).r(this, FUNC(ddenlovr_state::nettoqc_input_r)); // DSW's + map(0x300189, 0x300189).w(this, FUNC(ddenlovr_state::nettoqc_coincounter_w)); + map(0x30018b, 0x30018b).w(this, FUNC(ddenlovr_state::ddenlovr_select_w)); + map(0x30018d, 0x30018d).w(this, FUNC(ddenlovr_state::nettoqc_oki_bank_w)); + map(0x3001c0, 0x3001cf).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x300241, 0x300241).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xff0000, 0xffffff).ram(); // RAM +} READ16_MEMBER(ddenlovr_state::ultrchmp_protection2_r) @@ -2226,42 +2231,43 @@ WRITE16_MEMBER(ddenlovr_state::ultrchmp_protection2_w) m_oki->set_rom_bank(data & 0xf); } -ADDRESS_MAP_START(ddenlovr_state::ultrchmp_map) - AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM - - AM_RANGE(0x224680, 0x224681) AM_RAM_READ(ultrchmp_protection2_r) AM_SHARE("protection2") // Protection 2 - AM_RANGE(0x313570, 0x313571) AM_WRITE(ultrchmp_protection2_w) // "" + OKI bank - - AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) - - AM_RANGE(0xd00c02, 0xd00c03) AM_READ(nettoqc_protection1_r) // Protection 1 - AM_RANGE(0xd00e0a, 0xd00e0d) AM_WRITEONLY AM_SHARE("protection1") // "" - - AM_RANGE(0xd01000, 0xd017ff) AM_WRITEONLY // ? - - AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_layer_enable_w, 0x00ff) - AM_RANGE(0xe00070, 0xe00071) AM_READNOP - AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip - - AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1") - AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") - AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") - AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) - AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (Battey-backed) -ADDRESS_MAP_END +void ddenlovr_state::ultrchmp_map(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); // ROM + + map(0x224680, 0x224681).ram().r(this, FUNC(ddenlovr_state::ultrchmp_protection2_r)).share("protection2"); // Protection 2 + map(0x313570, 0x313571).w(this, FUNC(ddenlovr_state::ultrchmp_protection2_w)); // "" + OKI bank + + map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); + + map(0xd00c02, 0xd00c03).r(this, FUNC(ddenlovr_state::nettoqc_protection1_r)); // Protection 1 + map(0xd00e0a, 0xd00e0d).writeonly().share("protection1"); // "" + + map(0xd01000, 0xd017ff).writeonly(); // ? + + map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0xe00070, 0xe00071).nopr(); + map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip + + map(0xe00100, 0xe00101).portr("P1"); + map(0xe00102, 0xe00103).portr("P2"); + map(0xe00104, 0xe00105).portr("SYSTEM"); + map(0xe00200, 0xe00201).portr("DSW"); + map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xff0000, 0xffffff).ram().share("nvram"); // RAM (Battey-backed) +} /*************************************************************************** @@ -2291,78 +2297,82 @@ WRITE8_MEMBER(ddenlovr_state::rongrong_select_w) } -ADDRESS_MAP_START(ddenlovr_state::quizchq_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w) -ADDRESS_MAP_END +void ddenlovr_state::quizchq_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0x8000, 0x81ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); +} -ADDRESS_MAP_START(ddenlovr_state::quizchq_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w) - - AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r) - AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w) - AM_RANGE(0x20, 0x20) AM_WRITE(ddenlovr_select2_w) - AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r) - - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym2413", ym2413_device, write) - - AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup - - AM_RANGE(0xa0, 0xaf) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_WRITE(quizchq_oki_bank_w) - AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at 8000 -ADDRESS_MAP_END +void ddenlovr_state::quizchq_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::rongrong_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1b, 0x1b).rw(this, FUNC(ddenlovr_state::rongrong_blitter_busy_r), FUNC(ddenlovr_state::rongrong_blitter_busy_w)); + map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::rongrong_input_r)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::rongrong_select_w)); + map(0x20, 0x20).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w)); + map(0x22, 0x23).r(this, FUNC(ddenlovr_state::rongrong_input2_r)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x60, 0x61).w("ym2413", FUNC(ym2413_device::write)); -ADDRESS_MAP_START(ddenlovr_state::rongrong_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) -ADDRESS_MAP_END + map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup -ADDRESS_MAP_START(ddenlovr_state::rongrong_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w) - - AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r) - AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w) - - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym2413", ym2413_device, write) - - AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup - - AM_RANGE(0xa0, 0xa0) AM_WRITE(ddenlovr_select2_w) - AM_RANGE(0xa2, 0xa3) AM_READ(rongrong_input2_r) - AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at f000, and protection device at f705/f706/f601 -ADDRESS_MAP_END + map(0xa0, 0xaf).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0xc0, 0xc0).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w)); + map(0xc2, 0xc2).nopw(); // enables palette RAM at 8000 +} + + + +void ddenlovr_state::rongrong_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0xf000, 0xf1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); +} + +void ddenlovr_state::rongrong_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::rongrong_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1b, 0x1b).rw(this, FUNC(ddenlovr_state::rongrong_blitter_busy_r), FUNC(ddenlovr_state::rongrong_blitter_busy_w)); + + map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::rongrong_input_r)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::rongrong_select_w)); + + map(0x20, 0x2f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x60, 0x61).w("ym2413", FUNC(ym2413_device::write)); + + map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + + map(0xa0, 0xa0).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w)); + map(0xa2, 0xa3).r(this, FUNC(ddenlovr_state::rongrong_input2_r)); + map(0xc2, 0xc2).nopw(); // enables palette RAM at f000, and protection device at f705/f706/f601 +} /* 1e input select,1c input read 3e=dsw1 3d=dsw2 @@ -2429,77 +2439,81 @@ READ8_MEMBER(ddenlovr_state::mmpanic_link_r){ return 0xff; } /* Main CPU */ -ADDRESS_MAP_START(ddenlovr_state::mmpanic_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x0051, 0x0051) AM_READ(magic_r) // ? - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w) -ADDRESS_MAP_END +void ddenlovr_state::mmpanic_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x0051, 0x0051).r(this, FUNC(ddenlovr_state::magic_r)); // ? + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0x8000, 0x81ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); +} -ADDRESS_MAP_START(ddenlovr_state::mmpanic_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) +void ddenlovr_state::mmpanic_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); // Layers 0-3: - AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x38, 0x38) AM_READ(unk_r) // ? must be 78 on startup + map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x38, 0x38).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup // Layers 4-7: - AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base2_w) - AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask2_w) - AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen2_w) - AM_RANGE(0x4c, 0x4f) AM_WRITE(ddenlovr_transparency_mask2_w) - AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor2_w) - AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority2_w) - AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable2_w) - AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup - - AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w) - AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r) // Video Chip - AM_RANGE(0x64, 0x65) AM_WRITE(mmpanic_blitter2_w) - AM_RANGE(0x68, 0x68) AM_WRITE(ddenlovr_select_w) - AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w) - AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0") - AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1") - AM_RANGE(0x6c, 0x6d) AM_READ(mmpanic_link_r) // Other cabinets? - AM_RANGE(0x74, 0x74) AM_WRITE(mmpanic_rombank_w) - AM_RANGE(0x78, 0x78) AM_WRITENOP // 0, during RST 08 (irq acknowledge?) - AM_RANGE(0x7c, 0x7c) AM_DEVREADWRITE("oki", okim6295_device, read, write) // Sound - AM_RANGE(0x8c, 0x8c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x88, 0x88) AM_WRITE(mmpanic_leds_w) // Leds - AM_RANGE(0x90, 0x90) AM_WRITENOP // written just before port 8c - AM_RANGE(0x94, 0x94) AM_READ_PORT("DSW1") - AM_RANGE(0x98, 0x98) AM_READ_PORT("DSW2") - AM_RANGE(0x9c, 0x9c) AM_READ_PORT("DSW3") // DSW 1&2 high bits - AM_RANGE(0xa6, 0xa6) AM_WRITE(mmpanic_leds2_w) // -ADDRESS_MAP_END + map(0x40, 0x43).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base2_w)); + map(0x44, 0x47).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask2_w)); + map(0x48, 0x4b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen2_w)); + map(0x4c, 0x4f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask2_w)); + map(0x54, 0x54).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor2_w)); + map(0x55, 0x55).w(this, FUNC(ddenlovr_state::ddenlovr_priority2_w)); + map(0x56, 0x56).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable2_w)); + map(0x58, 0x58).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + + map(0x60, 0x61).w(this, FUNC(ddenlovr_state::mmpanic_blitter_w)); + map(0x63, 0x63).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); // Video Chip + map(0x64, 0x65).w(this, FUNC(ddenlovr_state::mmpanic_blitter2_w)); + map(0x68, 0x68).w(this, FUNC(ddenlovr_state::ddenlovr_select_w)); + map(0x69, 0x69).w(this, FUNC(ddenlovr_state::mmpanic_lockout_w)); + map(0x6a, 0x6a).portr("IN0"); + map(0x6b, 0x6b).portr("IN1"); + map(0x6c, 0x6d).r(this, FUNC(ddenlovr_state::mmpanic_link_r)); // Other cabinets? + map(0x74, 0x74).w(this, FUNC(ddenlovr_state::mmpanic_rombank_w)); + map(0x78, 0x78).nopw(); // 0, during RST 08 (irq acknowledge?) + map(0x7c, 0x7c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x8c, 0x8c).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x88, 0x88).w(this, FUNC(ddenlovr_state::mmpanic_leds_w)); // Leds + map(0x90, 0x90).nopw(); // written just before port 8c + map(0x94, 0x94).portr("DSW1"); + map(0x98, 0x98).portr("DSW2"); + map(0x9c, 0x9c).portr("DSW3"); // DSW 1&2 high bits + map(0xa6, 0xa6).w(this, FUNC(ddenlovr_state::mmpanic_leds2_w)); // +} /* Sound CPU */ -ADDRESS_MAP_START(ddenlovr_state::mmpanic_sound_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x66ff) AM_RAM // RAM - AM_RANGE(0x8000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END +void ddenlovr_state::mmpanic_sound_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x66ff).ram(); // RAM + map(0x8000, 0xffff).rom(); // ROM +} -ADDRESS_MAP_START(ddenlovr_state::mmpanic_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x02, 0x02) AM_READNOP // read just before port 00 - AM_RANGE(0x04, 0x04) AM_NOP // read only once at the start - AM_RANGE(0x06, 0x06) AM_WRITENOP // almost always 1, sometimes 0 - AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END +void ddenlovr_state::mmpanic_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x02, 0x02).nopr(); // read just before port 00 + map(0x04, 0x04).noprw(); // read only once at the start + map(0x06, 0x06).nopw(); // almost always 1, sometimes 0 + map(0x08, 0x09).w("ym2413", FUNC(ym2413_device::write)); + map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x0e, 0x0e).w("aysnd", FUNC(ay8910_device::address_w)); +} @@ -2509,15 +2523,16 @@ ADDRESS_MAP_END /* Main CPU */ -ADDRESS_MAP_START(ddenlovr_state::funkyfig_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) +void ddenlovr_state::funkyfig_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w) - AM_RANGE(0x8400, 0x87ff) AM_WRITENOP -ADDRESS_MAP_END + map(0x8000, 0xffff).bankr("bank1"); + map(0x8000, 0x81ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); + map(0x8400, 0x87ff).nopw(); +} READ8_MEMBER(ddenlovr_state::funkyfig_busy_r) @@ -2590,47 +2605,49 @@ WRITE8_MEMBER(ddenlovr_state::funkyfig_lockout_w) } } -ADDRESS_MAP_START(ddenlovr_state::funkyfig_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write) // Sound - AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w) // Leds - AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x04, 0x04) AM_READ(funkyfig_busy_r) - AM_RANGE(0x1c, 0x1c) AM_READ(funkyfig_dsw_r) - AM_RANGE(0x1e, 0x1e) AM_WRITE(funkyfig_rombank_w) - AM_RANGE(0x20, 0x21) AM_WRITE(funkyfig_blitter_w) - AM_RANGE(0x23, 0x23) AM_READ(rongrong_gfxrom_r) // Video Chip - AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) +void ddenlovr_state::funkyfig_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x01, 0x01).w(this, FUNC(ddenlovr_state::mmpanic_leds_w)); // Leds + map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x04, 0x04).r(this, FUNC(ddenlovr_state::funkyfig_busy_r)); + map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::funkyfig_dsw_r)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::funkyfig_rombank_w)); + map(0x20, 0x21).w(this, FUNC(ddenlovr_state::funkyfig_blitter_w)); + map(0x23, 0x23).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); // Video Chip + map(0x40, 0x4f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); // Layers 0-3: - AM_RANGE(0x60, 0x63) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x64, 0x67) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x68, 0x6b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x6c, 0x6f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x74, 0x74) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x75, 0x75) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x76, 0x76) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x78, 0x78) AM_READ(unk_r) // ? must be 78 on startup - - AM_RANGE(0x80, 0x80) AM_WRITE(ddenlovr_select2_w) - AM_RANGE(0x81, 0x81) AM_WRITE(funkyfig_lockout_w) - AM_RANGE(0x82, 0x82) AM_READ(funkyfig_coin_r) - AM_RANGE(0x83, 0x83) AM_READ(funkyfig_key_r) - - AM_RANGE(0xa2, 0xa2) AM_WRITE(mmpanic_leds2_w) -ADDRESS_MAP_END + map(0x60, 0x63).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x64, 0x67).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x68, 0x6b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x6c, 0x6f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x74, 0x74).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x75, 0x75).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x76, 0x76).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x78, 0x78).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::ddenlovr_select2_w)); + map(0x81, 0x81).w(this, FUNC(ddenlovr_state::funkyfig_lockout_w)); + map(0x82, 0x82).r(this, FUNC(ddenlovr_state::funkyfig_coin_r)); + map(0x83, 0x83).r(this, FUNC(ddenlovr_state::funkyfig_key_r)); + + map(0xa2, 0xa2).w(this, FUNC(ddenlovr_state::mmpanic_leds2_w)); +} /* Sound CPU */ -ADDRESS_MAP_START(ddenlovr_state::funkyfig_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x04) AM_READNOP // read only once at the start - AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END +void ddenlovr_state::funkyfig_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x04).nopr(); // read only once at the start + map(0x08, 0x09).w("ym2413", FUNC(ym2413_device::write)); + map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x0e, 0x0e).w("aysnd", FUNC(ay8910_device::address_w)); +} /*************************************************************************** @@ -2645,12 +2662,13 @@ WRITE8_MEMBER(ddenlovr_state::hanakanz_rombank_w) membank("bank2")->set_entry(((data & 0xf0) >> 4)); } -ADDRESS_MAP_START(ddenlovr_state::hanakanz_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) -ADDRESS_MAP_END +void ddenlovr_state::hanakanz_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) +} WRITE8_MEMBER(ddenlovr_state::hanakanz_keyb_w) @@ -2766,94 +2784,98 @@ READ8_MEMBER(ddenlovr_state::hanakanz_rand_r) return machine().rand(); } -ADDRESS_MAP_START(ddenlovr_state::hanakanz_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x91, 0x92) AM_READ(hanakanz_keyb_r) - AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w) - AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddenlovr_state::hkagerou_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r) - AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w) - AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +void ddenlovr_state::hanakanz_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0x90, 0x90).portr("SYSTEM"); + map(0x91, 0x92).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r)); + map(0x93, 0x93).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); + map(0x94, 0x94).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x96, 0x96).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write)); + map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe0, 0xef).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} + + +void ddenlovr_state::hkagerou_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write)); + map(0xb0, 0xb0).portr("SYSTEM"); + map(0xb1, 0xb2).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r)); + map(0xb3, 0xb3).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); + map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0xb6, 0xb6).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe0, 0xef).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} // same as hkagerou, different inputs, no RTC -ADDRESS_MAP_START(ddenlovr_state::kotbinyo_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM") +void ddenlovr_state::kotbinyo_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write)); + map(0xb0, 0xb0).portr("SYSTEM"); // AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r) - AM_RANGE(0xb1, 0xb1) AM_READ_PORT("KEYB0") - AM_RANGE(0xb2, 0xb2) AM_READ_PORT("KEYB1") - AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w) + map(0xb1, 0xb1).portr("KEYB0"); + map(0xb2, 0xb2).portr("KEYB1"); + map(0xb3, 0xb3).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); // AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0xb6, 0xb6).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +} // same as hkagerou, different inputs, no RTC -ADDRESS_MAP_START(ddenlovr_state::kotbinsp_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") +void ddenlovr_state::kotbinsp_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write)); + map(0x90, 0x90).portr("SYSTEM"); // AM_RANGE(0x91, 0x91) AM_READ(hanakanz_keyb_r) - AM_RANGE(0x91, 0x91) AM_READ_PORT("KEYB0") - AM_RANGE(0x92, 0x92) AM_READ_PORT("KEYB1") - AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w) + map(0x91, 0x91).portr("KEYB0"); + map(0x92, 0x92).portr("KEYB1"); + map(0x93, 0x93).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); // AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x96, 0x96).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +} WRITE8_MEMBER(ddenlovr_state::mjreach1_protection_w) @@ -2866,26 +2888,27 @@ READ8_MEMBER(ddenlovr_state::mjreach1_protection_r) return m_prot_val; } -ADDRESS_MAP_START(ddenlovr_state::mjreach1_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(hanakanz_busy_r, hanakanz_oki_bank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0x90, 0x90) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x92, 0x92) AM_READ(hanakanz_rand_r) - AM_RANGE(0x93, 0x93) AM_READWRITE(mjreach1_protection_r, mjreach1_protection_w) - AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM") - AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r) - AM_RANGE(0x97, 0x97) AM_WRITE(hanakanz_coincounter_w) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +void ddenlovr_state::mjreach1_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::hanakanz_busy_r), FUNC(ddenlovr_state::hanakanz_oki_bank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::hanakanz_dsw_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x81, 0x81).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x83, 0x84).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0x90, 0x90).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x92, 0x92).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0x93, 0x93).rw(this, FUNC(ddenlovr_state::mjreach1_protection_r), FUNC(ddenlovr_state::mjreach1_protection_w)); + map(0x94, 0x94).portr("SYSTEM"); + map(0x95, 0x96).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r)); + map(0x97, 0x97).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); + map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write)); + map(0xc0, 0xc0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe0, 0xef).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} /*************************************************************************** @@ -2992,28 +3015,29 @@ WRITE8_MEMBER(ddenlovr_state::mjchuuka_oki_bank_w ) #endif } -ADDRESS_MAP_START(ddenlovr_state::mjchuuka_portmap) // 16 bit I/O - AM_RANGE(0x13, 0x13) AM_MIRROR(0xff00) AM_READ(hanakanz_rand_r) - AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_oki_bank_w) - AM_RANGE(0x20, 0x20) AM_SELECT(0xff00) AM_WRITE(mjchuuka_blitter_w) - AM_RANGE(0x21, 0x21) AM_SELECT(0xff00) AM_WRITE(mjchuuka_palette_w) - AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_0_r) - AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_coincounter_w) - AM_RANGE(0x41, 0x41) AM_MIRROR(0xff00) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x42, 0x42) AM_MIRROR(0xff00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x43, 0x44) AM_MIRROR(0xff00) AM_READ(mjchuuka_keyb_r) - AM_RANGE(0x45, 0x45) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_1_r) - AM_RANGE(0x60, 0x60) AM_MIRROR(0xff00) AM_READ_PORT("DSW1") - AM_RANGE(0x61, 0x61) AM_MIRROR(0xff00) AM_READ_PORT("DSW2") - AM_RANGE(0x62, 0x62) AM_MIRROR(0xff00) AM_READ_PORT("DSW3") - AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4") - AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5") // DSW 1-4 high bits - AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void ddenlovr_state::mjchuuka_portmap(address_map &map) +{ // 16 bit I/O + map(0x13, 0x13).mirror(0xff00).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0x1c, 0x1c).mirror(0xff00).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x1e, 0x1e).mirror(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_oki_bank_w)); + map(0x20, 0x20).select(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_blitter_w)); + map(0x21, 0x21).select(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_palette_w)); + map(0x23, 0x23).mirror(0xff00).r(this, FUNC(ddenlovr_state::mjchuuka_gfxrom_0_r)); + map(0x40, 0x40).mirror(0xff00).w(this, FUNC(ddenlovr_state::mjchuuka_coincounter_w)); + map(0x41, 0x41).mirror(0xff00).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x42, 0x42).mirror(0xff00).portr("SYSTEM"); + map(0x43, 0x44).mirror(0xff00).r(this, FUNC(ddenlovr_state::mjchuuka_keyb_r)); + map(0x45, 0x45).mirror(0xff00).r(this, FUNC(ddenlovr_state::mjchuuka_gfxrom_1_r)); + map(0x60, 0x60).mirror(0xff00).portr("DSW1"); + map(0x61, 0x61).mirror(0xff00).portr("DSW2"); + map(0x62, 0x62).mirror(0xff00).portr("DSW3"); + map(0x63, 0x63).mirror(0xff00).portr("DSW4"); + map(0x64, 0x64).mirror(0xff00).portr("DSW5"); // DSW 1-4 high bits + map(0x80, 0x80).mirror(0xff00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa0, 0xa1).mirror(0xff00).w("ym2413", FUNC(ym2413_device::write)); + map(0xc0, 0xcf).mirror(0xff00).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0xe0, 0xe1).mirror(0xff00).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /*************************************************************************** @@ -3037,57 +3061,59 @@ READ8_MEMBER(ddenlovr_state::mjschuka_protection_r) return m_prot_val; } -ADDRESS_MAP_START(ddenlovr_state::mjschuka_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int - AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w) +void ddenlovr_state::mjschuka_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mjflove_rombank_w)); - AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog + map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x38, 0x38).nopr(); // ? ack or watchdog - AM_RANGE(0x40, 0x41) AM_WRITE(mjmyster_blitter_w) - AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x50, 0x50) AM_WRITE(mjflove_okibank_w) + map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjmyster_blitter_w)); + map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x50, 0x50).w(this, FUNC(ddenlovr_state::mjflove_okibank_w)); - AM_RANGE(0x54, 0x54) AM_READWRITE(mjschuka_protection_r, mjschuka_protection_w) + map(0x54, 0x54).rw(this, FUNC(ddenlovr_state::mjschuka_protection_r), FUNC(ddenlovr_state::mjschuka_protection_w)); // 58 writes ? (0/1) - AM_RANGE(0x5c, 0x5c) AM_READ(hanakanz_rand_r) - - AM_RANGE(0x60, 0x60) AM_WRITE(sryudens_coincounter_w) - AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x62, 0x62) AM_READ_PORT("SYSTEM") - AM_RANGE(0x63, 0x64) AM_READ(sryudens_keyb_r) - - AM_RANGE(0x68, 0x68) AM_READ_PORT("DSW1") - AM_RANGE(0x69, 0x69) AM_READ_PORT("DSW2") - AM_RANGE(0x6a, 0x6a) AM_READ_PORT("DSW3") - AM_RANGE(0x6b, 0x6b) AM_READ_PORT("DSW4") - AM_RANGE(0x6c, 0x6c) AM_READ_PORT("DSW5") // DSW 1-4 high bits - AM_RANGE(0x70, 0x71) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x74, 0x74) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x78, 0x79) AM_DEVWRITE("ym2413", ym2413_device, write) -ADDRESS_MAP_END + map(0x5c, 0x5c).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + + map(0x60, 0x60).w(this, FUNC(ddenlovr_state::sryudens_coincounter_w)); + map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x62, 0x62).portr("SYSTEM"); + map(0x63, 0x64).r(this, FUNC(ddenlovr_state::sryudens_keyb_r)); + + map(0x68, 0x68).portr("DSW1"); + map(0x69, 0x69).portr("DSW2"); + map(0x6a, 0x6a).portr("DSW3"); + map(0x6b, 0x6b).portr("DSW4"); + map(0x6c, 0x6c).portr("DSW5"); // DSW 1-4 high bits + map(0x70, 0x71).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x74, 0x74).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x78, 0x79).w("ym2413", FUNC(ym2413_device::write)); +} /*************************************************************************** Mahjong The Mysterious World ***************************************************************************/ -ADDRESS_MAP_START(ddenlovr_state::mjmyster_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM/RAM (Banked) - AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) // RAM enabled by bit 4 of rombank - AM_RANGE(0xf200, 0xffff) AM_WRITENOP // "" -ADDRESS_MAP_END +void ddenlovr_state::mjmyster_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM/RAM (Banked) + map(0xf000, 0xf1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); // RAM enabled by bit 4 of rombank + map(0xf200, 0xffff).nopw(); // "" +} WRITE8_MEMBER(ddenlovr_state::mjmyster_rambank_w) { @@ -3168,33 +3194,34 @@ WRITE8_MEMBER(ddenlovr_state::mjmyster_blitter_w) blitter_w(0, offset, data, 0xfc); } -ADDRESS_MAP_START(ddenlovr_state::mjmyster_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w) - AM_RANGE(0x1e, 0x1e) AM_WRITE(mmpanic_rombank_w) - AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w) - AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w) - AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r) - AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup - AM_RANGE(0xc2, 0xc2) AM_READ(hanakanz_rand_r) - AM_RANGE(0xc3, 0xc3) AM_READ(mjmyster_dsw_r) -ADDRESS_MAP_END +void ddenlovr_state::mjmyster_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::mjmyster_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1c, 0x1c).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mmpanic_rombank_w)); + map(0x20, 0x20).w(this, FUNC(ddenlovr_state::mjmyster_select2_w)); + map(0x21, 0x21).w(this, FUNC(ddenlovr_state::mjmyster_coincounter_w)); + map(0x22, 0x22).r(this, FUNC(ddenlovr_state::mjmyster_coins_r)); + map(0x23, 0x23).r(this, FUNC(ddenlovr_state::mjmyster_keyb_r)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x42, 0x43).w("ym2413", FUNC(ym2413_device::write)); + map(0x44, 0x44).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x46, 0x46).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x48, 0x48).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + map(0xc2, 0xc2).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xc3, 0xc3).r(this, FUNC(ddenlovr_state::mjmyster_dsw_r)); +} /*************************************************************************** Hanafuda Hana Ginga @@ -3216,15 +3243,16 @@ READ8_MEMBER(ddenlovr_state::hginga_protection_r) return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xf601 - 0x8000]; } -ADDRESS_MAP_START(ddenlovr_state::hginga_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM/RAM (Banked) - AM_RANGE(0xf601, 0xf601) AM_READ(hginga_protection_r) - AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) // RAM enabled by bit 4 of rombank - AM_RANGE(0xf700, 0xf706) AM_WRITENOP -ADDRESS_MAP_END +void ddenlovr_state::hginga_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM/RAM (Banked) + map(0xf601, 0xf601).r(this, FUNC(ddenlovr_state::hginga_protection_r)); + map(0xf000, 0xf1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); // RAM enabled by bit 4 of rombank + map(0xf700, 0xf706).nopw(); +} READ8_MEMBER(ddenlovr_state::hginga_dsw_r ) { @@ -3338,31 +3366,32 @@ WRITE8_MEMBER(ddenlovr_state::hginga_blitter_w) blitter_w(0, offset, data, 0xfc); } -ADDRESS_MAP_START(ddenlovr_state::hginga_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) - AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w) - AM_RANGE(0x22, 0x23) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w) - AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w) - AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r) - AM_RANGE(0x43, 0x43) AM_READ(hginga_input_r) - AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x80, 0x80) AM_WRITE(hginga_80_w) - AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0xa8, 0xab) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0xac, 0xaf) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0xb8, 0xb8) AM_READ(unk_r) // ? must be 78 on startup -ADDRESS_MAP_END +void ddenlovr_state::hginga_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::hginga_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w)); + map(0x22, 0x23).w("ym2413", FUNC(ym2413_device::write)); + map(0x24, 0x24).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x26, 0x26).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x28, 0x28).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x40, 0x40).w(this, FUNC(ddenlovr_state::hginga_input_w)); + map(0x41, 0x41).w(this, FUNC(ddenlovr_state::hginga_coins_w)); + map(0x42, 0x42).r(this, FUNC(ddenlovr_state::hginga_coins_r)); + map(0x43, 0x43).r(this, FUNC(ddenlovr_state::hginga_input_r)); + map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x80, 0x80).w(this, FUNC(ddenlovr_state::hginga_80_w)); + map(0xa0, 0xa3).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0xa4, 0xa7).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0xa8, 0xab).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0xac, 0xaf).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xb5, 0xb5).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xb6, 0xb6).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0xb8, 0xb8).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup +} /*************************************************************************** @@ -3437,42 +3466,44 @@ READ8_MEMBER(ddenlovr_state::hgokou_protection_r) return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xe601 - 0x8000]; } -ADDRESS_MAP_START(ddenlovr_state::hgokou_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w) - AM_RANGE(0xe601, 0xe601) AM_READ(hgokou_protection_r) - AM_RANGE(0xe700, 0xe706) AM_WRITENOP -ADDRESS_MAP_END +void ddenlovr_state::hgokou_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0xe000, 0xe1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); + map(0xe601, 0xe601).r(this, FUNC(ddenlovr_state::hgokou_protection_r)); + map(0xe700, 0xe706).nopw(); +} -ADDRESS_MAP_START(ddenlovr_state::hgokou_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int - AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w) - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x4c, 0x4f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup - AM_RANGE(0x60, 0x60) AM_WRITE(hgokou_dsw_sel_w) - AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w) - AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x84, 0x84) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x86, 0x86) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x88, 0x88) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r) -ADDRESS_MAP_END +void ddenlovr_state::hgokou_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::hginga_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); // ? ack on RTC int + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w)); + map(0x20, 0x2f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x40, 0x43).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x44, 0x47).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x48, 0x4b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x4c, 0x4f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x54, 0x54).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x55, 0x55).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x56, 0x56).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x58, 0x58).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + map(0x60, 0x60).w(this, FUNC(ddenlovr_state::hgokou_dsw_sel_w)); + map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hgokou_input_w)); + map(0x62, 0x62).r(this, FUNC(ddenlovr_state::hgokou_input_r)); + map(0x80, 0x80).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x82, 0x83).w("ym2413", FUNC(ym2413_device::write)); + map(0x84, 0x84).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x86, 0x86).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x88, 0x88).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xb0, 0xb0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); +} /*************************************************************************** @@ -3503,32 +3534,33 @@ READ8_MEMBER(ddenlovr_state::hgokbang_input_r) return 0xff; } -ADDRESS_MAP_START(ddenlovr_state::hgokbang_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int - AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x22, 0x23) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x40, 0x40) AM_WRITE(hgokou_dsw_sel_w) - AM_RANGE(0x41, 0x41) AM_WRITE(hgokou_input_w) - AM_RANGE(0x42, 0x42) AM_READ(hgokou_input_r) - AM_RANGE(0x43, 0x43) AM_READ(hgokbang_input_r) - AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0xa8, 0xab) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0xac, 0xaf) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0xb8, 0xb8) AM_READ(unk_r) // ? must be 78 on startup - AM_RANGE(0xe0, 0xe0) AM_READ(hanakanz_rand_r) -ADDRESS_MAP_END +void ddenlovr_state::hgokbang_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::hginga_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); // ? ack on RTC int + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w)); + map(0x20, 0x20).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x22, 0x23).w("ym2413", FUNC(ym2413_device::write)); + map(0x24, 0x24).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x26, 0x26).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x28, 0x28).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x40, 0x40).w(this, FUNC(ddenlovr_state::hgokou_dsw_sel_w)); + map(0x41, 0x41).w(this, FUNC(ddenlovr_state::hgokou_input_w)); + map(0x42, 0x42).r(this, FUNC(ddenlovr_state::hgokou_input_r)); + map(0x43, 0x43).r(this, FUNC(ddenlovr_state::hgokbang_input_r)); + map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0xa0, 0xa3).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0xa4, 0xa7).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0xa8, 0xab).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0xac, 0xaf).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xb5, 0xb5).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xb6, 0xb6).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0xb8, 0xb8).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + map(0xe0, 0xe0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); +} /*************************************************************************** @@ -3584,37 +3616,39 @@ WRITE8_MEMBER(ddenlovr_state::hparadis_coin_w) } } -ADDRESS_MAP_START(ddenlovr_state::hparadis_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0xc000, 0xc1ff) AM_WRITE(rongrong_palette_w) -ADDRESS_MAP_END +void ddenlovr_state::hparadis_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0xc000, 0xc1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); +} // the RTC seems unused -ADDRESS_MAP_START(ddenlovr_state::hparadis_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w) - AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r) - AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup - AM_RANGE(0xa0, 0xa0) AM_WRITE(hginga_input_w) - AM_RANGE(0xa1, 0xa1) AM_WRITE(hparadis_coin_w) - AM_RANGE(0xa2, 0xa3) AM_READ(hparadis_input_r) - AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at c000 -ADDRESS_MAP_END +void ddenlovr_state::hparadis_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::rongrong_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1b, 0x1b).rw(this, FUNC(ddenlovr_state::rongrong_blitter_busy_r), FUNC(ddenlovr_state::rongrong_blitter_busy_w)); + map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::hparadis_dsw_r)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hparadis_select_w)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x60, 0x61).w("ym2413", FUNC(ym2413_device::write)); + map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + map(0xa0, 0xa0).w(this, FUNC(ddenlovr_state::hginga_input_w)); + map(0xa1, 0xa1).w(this, FUNC(ddenlovr_state::hparadis_coin_w)); + map(0xa2, 0xa3).r(this, FUNC(ddenlovr_state::hparadis_input_r)); + map(0xc2, 0xc2).nopw(); // enables palette RAM at c000 +} /*************************************************************************** @@ -3636,33 +3670,34 @@ READ8_MEMBER(ddenlovr_state::mjmywrld_coins_r) return 0xff; } -ADDRESS_MAP_START(ddenlovr_state::mjmywrld_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w) - AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w) - AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w) - AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w) - AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w) - AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r) - AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup - AM_RANGE(0xc0, 0xc0) AM_READ(hanakanz_rand_r) - AM_RANGE(0xe0, 0xe0) AM_READ(mjmyster_dsw_r) -ADDRESS_MAP_END +void ddenlovr_state::mjmywrld_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(ddenlovr_state::mjmyster_blitter_w)); + map(0x03, 0x03).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x1c, 0x1c).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::hginga_rombank_w)); + map(0x20, 0x20).w(this, FUNC(ddenlovr_state::mjmyster_select2_w)); + map(0x21, 0x21).w(this, FUNC(ddenlovr_state::mjmyster_coincounter_w)); + map(0x22, 0x22).r(this, FUNC(ddenlovr_state::mjmywrld_coins_r)); + map(0x23, 0x23).r(this, FUNC(ddenlovr_state::mjmyster_keyb_r)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x42, 0x43).w("ym2413", FUNC(ym2413_device::write)); + map(0x44, 0x44).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x46, 0x46).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x48, 0x48).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x60, 0x6f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x80, 0x83).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x84, 0x87).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x88, 0x8b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x8c, 0x8f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x94, 0x94).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x95, 0x95).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x96, 0x96).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x98, 0x98).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + map(0xc0, 0xc0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xe0, 0xe0).r(this, FUNC(ddenlovr_state::mjmyster_dsw_r)); +} /*************************************************************************** @@ -3720,47 +3755,48 @@ READ16_MEMBER(ddenlovr_state::akamaru_e0010d_r) return 0xffff; // read but not used, it seems } -ADDRESS_MAP_START(ddenlovr_state::akamaru_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM +void ddenlovr_state::akamaru_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM - AM_RANGE(0x213570, 0x213571) AM_WRITE(akamaru_protection1_w) // OKI bank - AM_RANGE(0x624680, 0x624681) AM_READ(akamaru_protection1_r) + map(0x213570, 0x213571).w(this, FUNC(ddenlovr_state::akamaru_protection1_w)); // OKI bank + map(0x624680, 0x624681).r(this, FUNC(ddenlovr_state::akamaru_protection1_r)); - AM_RANGE(0xd00000, 0xd003ff) AM_WRITE8(rongrong_palette_w, 0x00ff) - AM_RANGE(0xd00e00, 0xd00e09) AM_WRITENOP - AM_RANGE(0xd01000, 0xd017ff) AM_WRITENOP // 0 + map(0xd00000, 0xd003ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)).umask16(0x00ff); + map(0xd00e00, 0xd00e09).nopw(); + map(0xd01000, 0xd017ff).nopw(); // 0 - AM_RANGE(0xe00040, 0xe00047) AM_WRITE8(ddenlovr_palette_base_w, 0x00ff) - AM_RANGE(0xe00048, 0xe0004f) AM_WRITE8(ddenlovr_palette_mask_w, 0x00ff) - AM_RANGE(0xe00050, 0xe00057) AM_WRITE8(ddenlovr_transparency_pen_w, 0x00ff) - AM_RANGE(0xe00058, 0xe0005f) AM_WRITE8(ddenlovr_transparency_mask_w, 0x00ff) - AM_RANGE(0xe00068, 0xe00069) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE8(ddenlovr_priority_w, 0x00ff) - AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE8(ddenlovr_bgcolor_w, 0x00ff) - AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover) - AM_RANGE(0xe00080, 0xe00083) AM_WRITE8(ddenlovr_blitter_w, 0x00ff) - AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip + map(0xe00040, 0xe00047).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)).umask16(0x00ff); + map(0xe00048, 0xe0004f).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)).umask16(0x00ff); + map(0xe00050, 0xe00057).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)).umask16(0x00ff); + map(0xe00058, 0xe0005f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)).umask16(0x00ff); + map(0xe00069, 0xe00069).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xe0006b, 0xe0006b).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xe0006d, 0xe0006d).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xe00070, 0xe00071).r(this, FUNC(ddenlovr_state::unk16_r)); // ? must be 78 on startup (not necessary in ddlover) + map(0xe00080, 0xe00083).w(this, FUNC(ddenlovr_state::ddenlovr_blitter_w)).umask16(0x00ff); + map(0xe00086, 0xe00087).r(this, FUNC(ddenlovr_state::ddenlovr_gfxrom_r)); // Video Chip - AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1") - AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") - AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") + map(0xe00100, 0xe00101).portr("P1"); + map(0xe00102, 0xe00103).portr("P2"); + map(0xe00104, 0xe00105).portr("SYSTEM"); - AM_RANGE(0xe00106, 0xe00107) AM_READ(akamaru_protection2_r) - AM_RANGE(0xe00108, 0xe0010b) AM_WRITEONLY AM_SHARE("protection2") + map(0xe00106, 0xe00107).r(this, FUNC(ddenlovr_state::akamaru_protection2_r)); + map(0xe00108, 0xe0010b).writeonly().share("protection2"); - AM_RANGE(0xe0010c, 0xe0010d) AM_READ(akamaru_e0010d_r) - AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r) // DSW + map(0xe0010c, 0xe0010d).r(this, FUNC(ddenlovr_state::akamaru_e0010d_r)); + map(0xe00200, 0xe00201).r(this, FUNC(ddenlovr_state::akamaru_dsw_r)); // DSW - AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r) // Blitter Busy & IRQ + map(0xe00204, 0xe00205).r(this, FUNC(ddenlovr_state::akamaru_blitter_r)); // Blitter Busy & IRQ - AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_READNOP - AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0xe00300, 0xe0030f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff).nopr(); + map(0xe00400, 0xe00403).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0xe00500, 0xe0051f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0xe00600, 0xe00603).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0xe00605, 0xe00605).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xe00701, 0xe00701).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xff0000, 0xffffff).ram(); // RAM +} /*************************************************************************** @@ -3822,34 +3858,35 @@ WRITE8_MEMBER(ddenlovr_state::mjflove_coincounter_w) } } -ADDRESS_MAP_START(ddenlovr_state::mjflove_portmap) // 16 bit I/O - AM_RANGE(0x0010, 0x0010) AM_READ(hanakanz_rand_r) AM_MIRROR(0xff00) - AM_RANGE(0x001c, 0x001c) AM_READ_PORT("DSW2") AM_MIRROR(0xff00) - AM_RANGE(0x001e, 0x001e) AM_WRITE(hanakanz_keyb_w) AM_MIRROR(0xff00) - AM_RANGE(0x0020, 0x0023) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x0024, 0x0027) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x0028, 0x002b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x002c, 0x002f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x0034, 0x0034) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x0035, 0x0035) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x0036, 0x0036) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x0038, 0x0038) AM_READNOP // ? ack or watchdog - AM_RANGE(0x0040, 0x0041) AM_WRITE(mjflove_blitter_w) AM_MIRROR(0xff00) - AM_RANGE(0x0043, 0x0043) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x0080, 0x0081) AM_READ(mjflove_keyb_r) - AM_RANGE(0x0082, 0x0082) AM_READ_PORT("SYSTEM") - AM_RANGE(0x00da, 0x00da) AM_READ(mjflove_protection_r) AM_MIRROR(0xff00) - AM_RANGE(0x00f2, 0x00f2) AM_WRITE(mjmyster_rambank_w) AM_MIRROR(0xff00) - AM_RANGE(0x00f8, 0x00f8) AM_WRITE(mjflove_rombank_w) AM_MIRROR(0xff00) - AM_RANGE(0x00fa, 0x00fa) AM_WRITE(mjflove_okibank_w) - AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1") - AM_RANGE(0x0181, 0x0181) AM_WRITENOP // ? int. enable - AM_RANGE(0x0184, 0x0184) AM_WRITE(mjflove_coincounter_w) - AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x0280, 0x028f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x0300, 0x0301) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x0380, 0x0380) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void ddenlovr_state::mjflove_portmap(address_map &map) +{ // 16 bit I/O + map(0x0010, 0x0010).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)).mirror(0xff00); + map(0x001c, 0x001c).portr("DSW2").mirror(0xff00); + map(0x001e, 0x001e).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)).mirror(0xff00); + map(0x0020, 0x0023).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x0024, 0x0027).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x0028, 0x002b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x002c, 0x002f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x0034, 0x0034).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x0035, 0x0035).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x0036, 0x0036).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x0038, 0x0038).nopr(); // ? ack or watchdog + map(0x0040, 0x0041).w(this, FUNC(ddenlovr_state::mjflove_blitter_w)).mirror(0xff00); + map(0x0043, 0x0043).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x0080, 0x0081).r(this, FUNC(ddenlovr_state::mjflove_keyb_r)); + map(0x0082, 0x0082).portr("SYSTEM"); + map(0x00da, 0x00da).r(this, FUNC(ddenlovr_state::mjflove_protection_r)).mirror(0xff00); + map(0x00f2, 0x00f2).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)).mirror(0xff00); + map(0x00f8, 0x00f8).w(this, FUNC(ddenlovr_state::mjflove_rombank_w)).mirror(0xff00); + map(0x00fa, 0x00fa).w(this, FUNC(ddenlovr_state::mjflove_okibank_w)); + map(0x0100, 0x0100).portr("DSW1"); + map(0x0181, 0x0181).nopw(); // ? int. enable + map(0x0184, 0x0184).w(this, FUNC(ddenlovr_state::mjflove_coincounter_w)); + map(0x0200, 0x0201).w("ym2413", FUNC(ym2413_device::write)); + map(0x0280, 0x028f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x0300, 0x0301).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x0380, 0x0380).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /*************************************************************************** @@ -3872,24 +3909,25 @@ READ8_MEMBER(ddenlovr_state::jongtei_busy_r) return 0x04; // !bit 2 = blitter busy } -ADDRESS_MAP_START(ddenlovr_state::jongtei_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, jongtei_okibank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM") - AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r) - AM_RANGE(0x43, 0x43) AM_WRITE(hanakanz_coincounter_w) - AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r) - AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +void ddenlovr_state::jongtei_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::jongtei_busy_r), FUNC(ddenlovr_state::jongtei_okibank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::jongtei_dsw_keyb_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x40, 0x40).portr("SYSTEM"); + map(0x41, 0x42).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r)); + map(0x43, 0x43).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); + map(0x46, 0x46).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0x60, 0x60).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x63, 0x64).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0x80, 0x81).w("ym2413", FUNC(ym2413_device::write)); + map(0xa0, 0xa0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xcf).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} /*************************************************************************** @@ -3928,38 +3966,40 @@ READ8_MEMBER(ddenlovr_state::mjgnight_protection_r) return m_prot_val; } -ADDRESS_MAP_START(ddenlovr_state::mjgnight_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, jongtei_okibank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w) - AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM") - AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r) - AM_RANGE(0x46, 0x46) AM_WRITE(mjgnight_coincounter_w) - AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r) - AM_RANGE(0x47, 0x47) AM_READWRITE(mjgnight_protection_r, mjgnight_protection_w) - AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w) - AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w) - AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +void ddenlovr_state::mjgnight_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::jongtei_busy_r), FUNC(ddenlovr_state::jongtei_okibank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_rombank_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::jongtei_dsw_keyb_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x40, 0x40).portr("SYSTEM"); + map(0x41, 0x42).r(this, FUNC(ddenlovr_state::hanakanz_keyb_r)); + map(0x46, 0x46).w(this, FUNC(ddenlovr_state::mjgnight_coincounter_w)); + map(0x46, 0x46).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0x47, 0x47).rw(this, FUNC(ddenlovr_state::mjgnight_protection_r), FUNC(ddenlovr_state::mjgnight_protection_w)); + map(0x60, 0x60).w(this, FUNC(ddenlovr_state::hanakanz_blitter_data_w)); + map(0x61, 0x61).w(this, FUNC(ddenlovr_state::hanakanz_palette_w)); + map(0x63, 0x64).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0x80, 0x81).w("ym2413", FUNC(ym2413_device::write)); + map(0xa0, 0xa0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xcf).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} /*************************************************************************** Mahjong Seiryu Densetsu ***************************************************************************/ -ADDRESS_MAP_START(ddenlovr_state::sryudens_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w) -ADDRESS_MAP_END +void ddenlovr_state::sryudens_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0xe000, 0xe1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); +} READ8_MEMBER(ddenlovr_state::sryudens_keyb_r) { @@ -4003,36 +4043,37 @@ WRITE8_MEMBER(ddenlovr_state::sryudens_rambank_w) //logerror("%04x: rambank = %02x\n", m_maincpu->pc(), data); } -ADDRESS_MAP_START(ddenlovr_state::sryudens_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int - AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w) - AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog - AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w) - AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x50, 0x50) AM_READ(hanakanz_rand_r) - AM_RANGE(0x70, 0x70) AM_WRITE(quizchq_oki_bank_w) - AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW1") - AM_RANGE(0x91, 0x91) AM_READ_PORT("DSW2") - AM_RANGE(0x92, 0x92) AM_READ_PORT("DSW4") - AM_RANGE(0x93, 0x93) AM_READ_PORT("DSW3") - AM_RANGE(0x94, 0x94) AM_READ_PORT("DSWTOP") - AM_RANGE(0x98, 0x98) AM_WRITE(sryudens_coincounter_w) - AM_RANGE(0x99, 0x99) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x9a, 0x9a) AM_READ_PORT("SYSTEM") - AM_RANGE(0x9b, 0x9c) AM_READ(sryudens_keyb_r) -ADDRESS_MAP_END +void ddenlovr_state::sryudens_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x02, 0x03).w("ym2413", FUNC(ym2413_device::write)); + map(0x04, 0x05).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mjflove_rombank_w)); + map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x38, 0x38).nopr(); // ? ack or watchdog + map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjflove_blitter_w)); + map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x50, 0x50).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0x70, 0x70).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w)); + map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x90, 0x90).portr("DSW1"); + map(0x91, 0x91).portr("DSW2"); + map(0x92, 0x92).portr("DSW4"); + map(0x93, 0x93).portr("DSW3"); + map(0x94, 0x94).portr("DSWTOP"); + map(0x98, 0x98).w(this, FUNC(ddenlovr_state::sryudens_coincounter_w)); + map(0x99, 0x99).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x9a, 0x9a).portr("SYSTEM"); + map(0x9b, 0x9c).r(this, FUNC(ddenlovr_state::sryudens_keyb_r)); +} /*************************************************************************** @@ -4057,45 +4098,47 @@ WRITE8_MEMBER(ddenlovr_state::janshinp_coincounter_w) #endif } -ADDRESS_MAP_START(ddenlovr_state::janshinp_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddenlovr_state::janshinp_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW4") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW3") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWTOP") - AM_RANGE(0x08, 0x08) AM_WRITE(janshinp_coincounter_w) - AM_RANGE(0x09, 0x09) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x0a, 0x0a) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0b, 0x0c) AM_READ(sryudens_keyb_r) - AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int - AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w) - AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog - AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w) - AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x50, 0x5f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x60, 0x60) AM_READ(hanakanz_rand_r) - AM_RANGE(0x70, 0x70) AM_WRITE(quizchq_oki_bank_w) - AM_RANGE(0x80, 0x80) AM_RAM - AM_RANGE(0x90, 0x90) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x92, 0x93) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x94, 0x95) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void ddenlovr_state::janshinp_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0xe000, 0xe1ff).w(this, FUNC(ddenlovr_state::rongrong_palette_w)); +} + +void ddenlovr_state::janshinp_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1"); + map(0x01, 0x01).portr("DSW2"); + map(0x02, 0x02).portr("DSW4"); + map(0x03, 0x03).portr("DSW3"); + map(0x04, 0x04).portr("DSWTOP"); + map(0x08, 0x08).w(this, FUNC(ddenlovr_state::janshinp_coincounter_w)); + map(0x09, 0x09).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x0a, 0x0a).portr("SYSTEM"); + map(0x0b, 0x0c).r(this, FUNC(ddenlovr_state::sryudens_keyb_r)); + map(0x1c, 0x1c).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::mjflove_rombank_w)); + map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x38, 0x38).nopr(); // ? ack or watchdog + map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjflove_blitter_w)); + map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x50, 0x5f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x60, 0x60).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0x70, 0x70).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w)); + map(0x80, 0x80).ram(); + map(0x90, 0x90).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x92, 0x93).w("ym2413", FUNC(ym2413_device::write)); + map(0x94, 0x95).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /*************************************************************************** @@ -4142,41 +4185,43 @@ READ8_MEMBER(ddenlovr_state::seljan2_dsw_r ) return 0xff; } -ADDRESS_MAP_START(ddenlovr_state::seljan2_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked) - AM_RANGE(0x8000, 0xffff) AM_WRITE(seljan2_palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddenlovr_state::seljan2_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x1c, 0x1c) AM_READ(seljan2_busy_r) AM_WRITE(hanakanz_keyb_w) - AM_RANGE(0x1e, 0x1e) AM_WRITE(sryudens_coincounter_w) - AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w) - AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w) - AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w) - AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog - AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w) - AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r) - AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0x54, 0x54) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x58, 0x58) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x5c, 0x5c) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) // dsw - AM_RANGE(0x60, 0x60) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int - AM_RANGE(0x70, 0x70) AM_WRITE(seljan2_rombank_w) - AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM") AM_WRITE(seljan2_palette_enab_w) // writes: 1 = palette RAM at b000, 0 = ROM - AM_RANGE(0x84, 0x84) AM_READ(daimyojn_keyb1_r) - AM_RANGE(0x88, 0x88) AM_READ(daimyojn_keyb2_r) - AM_RANGE(0x90, 0x90) AM_WRITE(quizchq_oki_bank_w) - AM_RANGE(0xa0, 0xa0) AM_READ(hanakanz_rand_r) -ADDRESS_MAP_END +void ddenlovr_state::seljan2_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) + map(0x8000, 0xffff).bankr("bank1"); // ROM (Banked) + map(0x8000, 0xffff).w(this, FUNC(ddenlovr_state::seljan2_palette_w)); +} + +void ddenlovr_state::seljan2_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x1c, 0x1c).r(this, FUNC(ddenlovr_state::seljan2_busy_r)).w(this, FUNC(ddenlovr_state::hanakanz_keyb_w)); + map(0x1e, 0x1e).w(this, FUNC(ddenlovr_state::sryudens_coincounter_w)); + map(0x20, 0x23).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); + map(0x24, 0x27).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0x28, 0x2b).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0x2c, 0x2f).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); + map(0x34, 0x34).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0x35, 0x35).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0x36, 0x36).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0x38, 0x38).nopr(); // ? ack or watchdog + map(0x40, 0x41).w(this, FUNC(ddenlovr_state::mjflove_blitter_w)); + map(0x43, 0x43).r(this, FUNC(ddenlovr_state::rongrong_gfxrom_r)); + map(0x50, 0x51).w("ym2413", FUNC(ym2413_device::write)); + map(0x54, 0x54).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x58, 0x58).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x5c, 0x5c).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // dsw + map(0x60, 0x60).nopr().w(this, FUNC(ddenlovr_state::sryudens_rambank_w)); // ? ack on RTC int + map(0x70, 0x70).w(this, FUNC(ddenlovr_state::seljan2_rombank_w)); + map(0x80, 0x80).portr("SYSTEM").w(this, FUNC(ddenlovr_state::seljan2_palette_enab_w)); // writes: 1 = palette RAM at b000, 0 = ROM + map(0x84, 0x84).r(this, FUNC(ddenlovr_state::daimyojn_keyb1_r)); + map(0x88, 0x88).r(this, FUNC(ddenlovr_state::daimyojn_keyb2_r)); + map(0x90, 0x90).w(this, FUNC(ddenlovr_state::quizchq_oki_bank_w)); + map(0xa0, 0xa0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); +} /*************************************************************************** @@ -4299,47 +4344,49 @@ WRITE8_MEMBER(ddenlovr_state::htengoku_blit_romregion_w) logerror("%04x: unmapped romregion=%02X\n", m_maincpu->pc(), data); } -ADDRESS_MAP_START(ddenlovr_state::htengoku_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0x20, 0x20 ) AM_WRITE(htengoku_select_w) // Controls - AM_RANGE( 0x21, 0x21 ) AM_WRITE(htengoku_coin_w) // - AM_RANGE( 0x22, 0x22 ) AM_READ(htengoku_coin_r) // - AM_RANGE( 0x23, 0x23 ) AM_READ(htengoku_input_r) // - AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // AY8910 - AM_RANGE( 0x42, 0x42 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // - AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // - AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0xa0, 0xa3 ) AM_WRITE(ddenlovr_palette_base_w) // ddenlovr mixer chip - AM_RANGE( 0xa4, 0xa7 ) AM_WRITE(ddenlovr_palette_mask_w) - AM_RANGE( 0xa8, 0xab ) AM_WRITE(ddenlovr_transparency_pen_w) - AM_RANGE( 0xac, 0xaf ) AM_WRITE(ddenlovr_transparency_mask_w) +void ddenlovr_state::htengoku_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x07).w(this, FUNC(ddenlovr_state::dynax_blitter_rev2_w)); // Blitter + map(0x20, 0x20).w(this, FUNC(ddenlovr_state::htengoku_select_w)); // Controls + map(0x21, 0x21).w(this, FUNC(ddenlovr_state::htengoku_coin_w)); // + map(0x22, 0x22).r(this, FUNC(ddenlovr_state::htengoku_coin_r)); // + map(0x23, 0x23).r(this, FUNC(ddenlovr_state::htengoku_input_r)); // + map(0x40, 0x40).w("aysnd", FUNC(ay8910_device::address_w)); // AY8910 + map(0x42, 0x42).r("aysnd", FUNC(ay8910_device::data_r)); // + map(0x44, 0x44).w("aysnd", FUNC(ay8910_device::data_w)); // + map(0x46, 0x47).w("ym2413", FUNC(ym2413_device::write)); // + map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0xa0, 0xa3).w(this, FUNC(ddenlovr_state::ddenlovr_palette_base_w)); // ddenlovr mixer chip + map(0xa4, 0xa7).w(this, FUNC(ddenlovr_state::ddenlovr_palette_mask_w)); + map(0xa8, 0xab).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_pen_w)); + map(0xac, 0xaf).w(this, FUNC(ddenlovr_state::ddenlovr_transparency_mask_w)); // b0-b3 ? - AM_RANGE( 0xb4, 0xb4 ) AM_WRITE(ddenlovr_bgcolor_w) - AM_RANGE( 0xb5, 0xb5 ) AM_WRITE(ddenlovr_priority_w) - AM_RANGE( 0xb6, 0xb6 ) AM_WRITE(ddenlovr_layer_enable_w) - AM_RANGE( 0xb8, 0xb8 ) AM_READ(unk_r) // ? must be 78 on startup - AM_RANGE( 0xc2, 0xc2 ) AM_WRITE(htengoku_rombank_w) // BANK ROM Select - AM_RANGE( 0xc0, 0xc0 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0xc1, 0xc1 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0xc3, 0xc3 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0xc4, 0xc4 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0xc5, 0xc5 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(htengoku_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0xe0, 0xe7 ) AM_DEVWRITE("mainlatch", ls259_device, write_d1) -ADDRESS_MAP_END + map(0xb4, 0xb4).w(this, FUNC(ddenlovr_state::ddenlovr_bgcolor_w)); + map(0xb5, 0xb5).w(this, FUNC(ddenlovr_state::ddenlovr_priority_w)); + map(0xb6, 0xb6).w(this, FUNC(ddenlovr_state::ddenlovr_layer_enable_w)); + map(0xb8, 0xb8).r(this, FUNC(ddenlovr_state::unk_r)); // ? must be 78 on startup + map(0xc2, 0xc2).w(this, FUNC(ddenlovr_state::htengoku_rombank_w)); // BANK ROM Select + map(0xc0, 0xc0).w(this, FUNC(ddenlovr_state::dynax_extra_scrollx_w)); // screen scroll X + map(0xc1, 0xc1).w(this, FUNC(ddenlovr_state::dynax_extra_scrolly_w)); // screen scroll Y + map(0xc3, 0xc3).w(this, FUNC(ddenlovr_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0xc4, 0xc4).w(this, FUNC(ddenlovr_state::dynax_blit_pen_w)); // Destination Pen + map(0xc5, 0xc5).w(this, FUNC(ddenlovr_state::dynax_blit_dest_w)); // Destination Layer + map(0xc6, 0xc6).w(this, FUNC(ddenlovr_state::htengoku_blit_romregion_w)); // Blitter ROM bank + map(0xe0, 0xe7).w(m_mainlatch, FUNC(ls259_device::write_d1)); +} /*************************************************************************** Hanafuda Hana Tengoku ***************************************************************************/ -ADDRESS_MAP_START(ddenlovr_state::htengoku_mem_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x7000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END +void ddenlovr_state::htengoku_mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram().share("nvram"); + map(0x7000, 0x7fff).ram(); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} ADDRESS_MAP_START(dynax_state::htengoku_banked_map) AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000) @@ -4502,28 +4549,29 @@ READ8_MEMBER(ddenlovr_state::daimyojn_year_hack_r) return offset ? 1 : 0; // year = 0x10 (BCD) } -ADDRESS_MAP_START(ddenlovr_state::daimyojn_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, daimyojn_okibank_w) - AM_RANGE(0x2e, 0x2e) AM_WRITE(daimyojn_palette_sel_w) - AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_blitter_reg_w) - AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w) - AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r) - AM_RANGE(0x40, 0x40) AM_WRITE(daimyojn_blitter_data_palette_w) - AM_RANGE(0x42, 0x44) AM_READ(hanakanz_gfxrom_r) - AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x8a, 0x8b) AM_READ(daimyojn_year_hack_r) // ? - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym2413", ym2413_device, write) - AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa8, 0xa8) AM_READ_PORT("SYSTEM") - AM_RANGE(0xaa, 0xaa) AM_READ(daimyojn_keyb1_r) - AM_RANGE(0xac, 0xac) AM_READ(daimyojn_keyb2_r) - AM_RANGE(0xae, 0xae) AM_WRITE(hanakanz_coincounter_w) - AM_RANGE(0xb0, 0xb0) AM_WRITE(mjmyster_rambank_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(mjflove_rombank_w) - AM_RANGE(0xd0, 0xd0) AM_READ(hanakanz_rand_r) - AM_RANGE(0xe0, 0xe0) AM_READWRITE(daimyojn_protection_r, daimyojn_protection_w) -ADDRESS_MAP_END +void ddenlovr_state::daimyojn_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x2c, 0x2c).rw(this, FUNC(ddenlovr_state::jongtei_busy_r), FUNC(ddenlovr_state::daimyojn_okibank_w)); + map(0x2e, 0x2e).w(this, FUNC(ddenlovr_state::daimyojn_palette_sel_w)); + map(0x30, 0x30).w(this, FUNC(ddenlovr_state::hanakanz_blitter_reg_w)); + map(0x31, 0x31).w(this, FUNC(ddenlovr_state::jongtei_dsw_keyb_w)); + map(0x32, 0x32).r(this, FUNC(ddenlovr_state::hanakanz_dsw_r)); + map(0x40, 0x40).w(this, FUNC(ddenlovr_state::daimyojn_blitter_data_palette_w)); + map(0x42, 0x44).r(this, FUNC(ddenlovr_state::hanakanz_gfxrom_r)); + map(0x80, 0x8f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x8a, 0x8b).r(this, FUNC(ddenlovr_state::daimyojn_year_hack_r)); // ? + map(0xa0, 0xa1).w("ym2413", FUNC(ym2413_device::write)); + map(0xa2, 0xa2).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa8, 0xa8).portr("SYSTEM"); + map(0xaa, 0xaa).r(this, FUNC(ddenlovr_state::daimyojn_keyb1_r)); + map(0xac, 0xac).r(this, FUNC(ddenlovr_state::daimyojn_keyb2_r)); + map(0xae, 0xae).w(this, FUNC(ddenlovr_state::hanakanz_coincounter_w)); + map(0xb0, 0xb0).w(this, FUNC(ddenlovr_state::mjmyster_rambank_w)); + map(0xc0, 0xc0).w(this, FUNC(ddenlovr_state::mjflove_rombank_w)); + map(0xd0, 0xd0).r(this, FUNC(ddenlovr_state::hanakanz_rand_r)); + map(0xe0, 0xe0).rw(this, FUNC(ddenlovr_state::daimyojn_protection_r), FUNC(ddenlovr_state::daimyojn_protection_w)); +} diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp index d00c1528e75..c0ecf4f353b 100644 --- a/src/mame/drivers/ddragon.cpp +++ b/src/mame/drivers/ddragon.cpp @@ -489,48 +489,50 @@ READ8_MEMBER(ddragon_state::dd_adpcm_status_r) * *************************************/ -ADDRESS_MAP_START(ddragon_state::ddragon_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x1000, 0x11ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x1200, 0x13ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x2000, 0x21ff) AM_READWRITE(ddragon_comram_r, ddragon_comram_w) AM_SHARE("comram") AM_MIRROR(0x0600) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("EXTRA") - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") - AM_RANGE(0x3804, 0x3804) AM_READ_PORT("DSW1") - AM_RANGE(0x3808, 0x3808) AM_WRITE(ddragon_bankswitch_w) - AM_RANGE(0x3809, 0x3809) AM_WRITEONLY AM_SHARE("scrollx_lo") - AM_RANGE(0x380a, 0x380a) AM_WRITEONLY AM_SHARE("scrolly_lo") - AM_RANGE(0x380b, 0x380f) AM_READWRITE(ddragon_interrupt_r, ddragon_interrupt_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddragon_state::dd2_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(ddragon_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x2000, 0x21ff) AM_READWRITE(ddragon_comram_r, ddragon_comram_w) AM_SHARE("comram") AM_MIRROR(0x0600) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("EXTRA") - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") - AM_RANGE(0x3804, 0x3804) AM_READ_PORT("DSW1") - AM_RANGE(0x3808, 0x3808) AM_WRITE(ddragon_bankswitch_w) - AM_RANGE(0x3809, 0x3809) AM_WRITEONLY AM_SHARE("scrollx_lo") - AM_RANGE(0x380a, 0x380a) AM_WRITEONLY AM_SHARE("scrolly_lo") - AM_RANGE(0x380b, 0x380f) AM_READWRITE(ddragon_interrupt_r, ddragon_interrupt_w) - AM_RANGE(0x3c00, 0x3dff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3e00, 0x3fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ddragon_state::ddragon_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("rambase"); + map(0x1000, 0x11ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x1200, 0x13ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x1800, 0x1fff).ram().w(this, FUNC(ddragon_state::ddragon_fgvideoram_w)).share("fgvideoram"); + map(0x2000, 0x21ff).rw(this, FUNC(ddragon_state::ddragon_comram_r), FUNC(ddragon_state::ddragon_comram_w)).share("comram").mirror(0x0600); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(ddragon_state::ddragon_bgvideoram_w)).share("bgvideoram"); + map(0x3800, 0x3800).portr("P1"); + map(0x3801, 0x3801).portr("P2"); + map(0x3802, 0x3802).portr("EXTRA"); + map(0x3803, 0x3803).portr("DSW0"); + map(0x3804, 0x3804).portr("DSW1"); + map(0x3808, 0x3808).w(this, FUNC(ddragon_state::ddragon_bankswitch_w)); + map(0x3809, 0x3809).writeonly().share("scrollx_lo"); + map(0x380a, 0x380a).writeonly().share("scrolly_lo"); + map(0x380b, 0x380f).rw(this, FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + + +void ddragon_state::dd2_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); + map(0x1800, 0x1fff).ram().w(this, FUNC(ddragon_state::ddragon_fgvideoram_w)).share("fgvideoram"); + map(0x2000, 0x21ff).rw(this, FUNC(ddragon_state::ddragon_comram_r), FUNC(ddragon_state::ddragon_comram_w)).share("comram").mirror(0x0600); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(ddragon_state::ddragon_bgvideoram_w)).share("bgvideoram"); + map(0x3800, 0x3800).portr("P1"); + map(0x3801, 0x3801).portr("P2"); + map(0x3802, 0x3802).portr("EXTRA"); + map(0x3803, 0x3803).portr("DSW0"); + map(0x3804, 0x3804).portr("DSW1"); + map(0x3808, 0x3808).w(this, FUNC(ddragon_state::ddragon_bankswitch_w)); + map(0x3809, 0x3809).writeonly().share("scrollx_lo"); + map(0x380a, 0x380a).writeonly().share("scrolly_lo"); + map(0x380b, 0x380f).rw(this, FUNC(ddragon_state::ddragon_interrupt_r), FUNC(ddragon_state::ddragon_interrupt_w)); + map(0x3c00, 0x3dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3e00, 0x3fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} @@ -540,32 +542,36 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(ddragon_state::sub_map) - AM_RANGE(0x0000, 0x001f) AM_READWRITE(ddragon_hd63701_internal_registers_r, ddragon_hd63701_internal_registers_w) - AM_RANGE(0x0020, 0x0fff) AM_RAM - AM_RANGE(0x8000, 0x81ff) AM_RAM AM_SHARE("comram") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ddragon_state::sub_map(address_map &map) +{ + map(0x0000, 0x001f).rw(this, FUNC(ddragon_state::ddragon_hd63701_internal_registers_r), FUNC(ddragon_state::ddragon_hd63701_internal_registers_w)); + map(0x0020, 0x0fff).ram(); + map(0x8000, 0x81ff).ram().share("comram"); + map(0xc000, 0xffff).rom(); +} -ADDRESS_MAP_START(ddragon_state::ddragonba_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x8000, 0x81ff) AM_RAM AM_SHARE("comram") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ddragon_state::ddragonba_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x8000, 0x81ff).ram().share("comram"); + map(0xc000, 0xffff).rom(); +} -ADDRESS_MAP_START(ddragon_state::dd2_sub_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("comram") - AM_RANGE(0xd000, 0xd000) AM_WRITE(ddragon2_sub_irq_ack_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(ddragon2_sub_irq_w) -ADDRESS_MAP_END +void ddragon_state::dd2_sub_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram().share("comram"); + map(0xd000, 0xd000).w(this, FUNC(ddragon_state::ddragon2_sub_irq_ack_w)); + map(0xe000, 0xe000).w(this, FUNC(ddragon_state::ddragon2_sub_irq_w)); +} -ADDRESS_MAP_START(ddragon_state::ddragonba_sub_portmap) - AM_RANGE(0x0000, 0x01ff) AM_WRITE(ddragonba_port_w) -ADDRESS_MAP_END +void ddragon_state::ddragonba_sub_portmap(address_map &map) +{ + map(0x0000, 0x01ff).w(this, FUNC(ddragon_state::ddragonba_port_w)); +} @@ -575,23 +581,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(ddragon_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1800, 0x1800) AM_READ(dd_adpcm_status_r) - AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write) - AM_RANGE(0x3800, 0x3807) AM_WRITE(dd_adpcm_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddragon_state::dd2_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("fmsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void ddragon_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1800, 0x1800).r(this, FUNC(ddragon_state::dd_adpcm_status_r)); + map(0x2800, 0x2801).rw("fmsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x3800, 0x3807).w(this, FUNC(ddragon_state::dd_adpcm_w)); + map(0x8000, 0xffff).rom(); +} + + +void ddragon_state::dd2_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("fmsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp index dc92e9dbaea..fddd3b85eef 100644 --- a/src/mame/drivers/ddragon3.cpp +++ b/src/mame/drivers/ddragon3.cpp @@ -290,101 +290,107 @@ CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_c0_r) * *************************************/ -ADDRESS_MAP_START(ddragon3_state::ddragon3_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x000004, 0x000007) AM_WRITENOP - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */ - AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */ - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w) - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1_P2") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW") - AM_RANGE(0x100006, 0x100007) AM_READ_PORT("P3") - AM_RANGE(0x100000, 0x100001) AM_WRITE(ddragon3_vreg_w) - AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x100004, 0x100005) AM_WRITE(irq6_ack_w) - AM_RANGE(0x100006, 0x100007) AM_WRITE(irq5_ack_w) - AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddragon3_state::dd3b_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */ - AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */ - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w) - AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x140000, 0x140001) AM_WRITE(ddragon3_vreg_w) - AM_RANGE(0x140002, 0x140003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x140004, 0x140005) AM_WRITE(irq6_ack_w) - AM_RANGE(0x140006, 0x140007) AM_WRITE(irq5_ack_w) - AM_RANGE(0x140008, 0x140009) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2") - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddragon3_state::ctribe_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */ - AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */ - AM_RANGE(0x082800, 0x082fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c000f) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w) - AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x140000, 0x140001) AM_WRITE(ddragon3_vreg_w) - AM_RANGE(0x140002, 0x140003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x140004, 0x140005) AM_WRITE(irq6_ack_w) - AM_RANGE(0x140006, 0x140007) AM_WRITE(irq5_ack_w) - AM_RANGE(0x140008, 0x140009) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2") - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(wwfwfest_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(wwfwfest_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram - 4 bytes per tile */ - AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */ - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* BG0 Ram - 4 bytes per tile */ - AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* BG1 Ram - 2 bytes per tile */ - AM_RANGE(0x100000, 0x100007) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w) - AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w) - AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w) - AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite) - AM_RANGE(0x140010, 0x140011) AM_WRITE8(wwfwfest_priority_w, 0x00ff) - AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1") - AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2") - AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3") - AM_RANGE(0x140026, 0x140027) AM_READ_PORT("P4") - AM_RANGE(0x180000, 0x18ffff) AM_READWRITE(wwfwfest_paletteram_r,wwfwfest_paletteram_w) AM_SHARE("palette") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddragon3_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddragon3_state::ctribe_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void ddragon3_state::ddragon3_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x000004, 0x000007).nopw(); + map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */ + map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */ + map(0x0c0000, 0x0c000f).w(this, FUNC(ddragon3_state::ddragon3_scroll_w)); + map(0x100000, 0x100001).portr("P1_P2"); + map(0x100002, 0x100003).portr("SYSTEM"); + map(0x100004, 0x100005).portr("DSW"); + map(0x100006, 0x100007).portr("P3"); + map(0x100000, 0x100001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w)); + map(0x100003, 0x100003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x100004, 0x100005).w(this, FUNC(ddragon3_state::irq6_ack_w)); + map(0x100006, 0x100007).w(this, FUNC(ddragon3_state::irq5_ack_w)); + map(0x140000, 0x1405ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x180000, 0x180fff).ram().share("spriteram"); + map(0x1c0000, 0x1c3fff).ram(); /* work RAM */ +} + +void ddragon3_state::dd3b_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */ + map(0x081000, 0x081fff).ram().share("spriteram"); + map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */ + map(0x0c0000, 0x0c000f).w(this, FUNC(ddragon3_state::ddragon3_scroll_w)); + map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x140000, 0x140001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w)); + map(0x140003, 0x140003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x140004, 0x140005).w(this, FUNC(ddragon3_state::irq6_ack_w)); + map(0x140006, 0x140007).w(this, FUNC(ddragon3_state::irq5_ack_w)); + map(0x140008, 0x140009).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x180000, 0x180001).portr("IN0"); + map(0x180002, 0x180003).portr("IN1"); + map(0x180004, 0x180005).portr("IN2"); + map(0x180006, 0x180007).portr("IN3"); + map(0x1c0000, 0x1c3fff).ram(); /* work RAM */ +} + +void ddragon3_state::ctribe_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */ + map(0x081000, 0x081fff).ram().share("spriteram"); + map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */ + map(0x082800, 0x082fff).ram(); + map(0x0c0000, 0x0c000f).rw(this, FUNC(ddragon3_state::ddragon3_scroll_r), FUNC(ddragon3_state::ddragon3_scroll_w)); + map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x140000, 0x140001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w)); + map(0x140003, 0x140003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x140004, 0x140005).w(this, FUNC(ddragon3_state::irq6_ack_w)); + map(0x140006, 0x140007).w(this, FUNC(ddragon3_state::irq5_ack_w)); + map(0x140008, 0x140009).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x180000, 0x180001).portr("IN0"); + map(0x180002, 0x180003).portr("IN1"); + map(0x180004, 0x180005).portr("IN2"); + map(0x180006, 0x180007).portr("IN3"); + map(0x1c0000, 0x1c3fff).ram(); /* work RAM */ +} + +void wwfwfest_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0c1fff).ram().w(this, FUNC(wwfwfest_state::wwfwfest_fg0_videoram_w)).share("fg0_videoram"); /* FG0 Ram - 4 bytes per tile */ + map(0x0c2000, 0x0c3fff).ram().share("spriteram"); /* SPR Ram */ + map(0x080000, 0x080fff).ram().w(this, FUNC(wwfwfest_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* BG0 Ram - 4 bytes per tile */ + map(0x082000, 0x082fff).ram().w(this, FUNC(wwfwfest_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* BG1 Ram - 2 bytes per tile */ + map(0x100000, 0x100007).rw(this, FUNC(wwfwfest_state::ddragon3_scroll_r), FUNC(wwfwfest_state::ddragon3_scroll_w)); + map(0x10000a, 0x10000b).w(this, FUNC(wwfwfest_state::wwfwfest_flipscreen_w)); + map(0x140000, 0x140003).w(this, FUNC(wwfwfest_state::wwfwfest_irq_ack_w)); + map(0x14000c, 0x14000d).w(this, FUNC(wwfwfest_state::wwfwfest_soundwrite)); + map(0x140011, 0x140011).w(this, FUNC(wwfwfest_state::wwfwfest_priority_w)); + map(0x140020, 0x140021).portr("P1"); + map(0x140022, 0x140023).portr("P2"); + map(0x140024, 0x140025).portr("P3"); + map(0x140026, 0x140027).portr("P4"); + map(0x180000, 0x18ffff).rw(this, FUNC(wwfwfest_state::wwfwfest_paletteram_r), FUNC(wwfwfest_state::wwfwfest_paletteram_w)).share("palette"); + map(0x1c0000, 0x1c3fff).ram(); /* Work Ram */ +} + + +void ddragon3_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd800, 0xd800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).w(this, FUNC(ddragon3_state::oki_bankswitch_w)); +} + + +void ddragon3_state::ctribe_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ym2151", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /************************************* * diff --git a/src/mame/drivers/ddribble.cpp b/src/mame/drivers/ddribble.cpp index d68fff3d3fb..4e090881c2e 100644 --- a/src/mame/drivers/ddribble.cpp +++ b/src/mame/drivers/ddribble.cpp @@ -108,44 +108,48 @@ WRITE8_MEMBER(ddribble_state::ddribble_vlm5030_ctrl_w) } -ADDRESS_MAP_START(ddribble_state::cpu0_map) - AM_RANGE(0x0000, 0x0004) AM_WRITE(K005885_0_w) /* video registers (005885 #1) */ - AM_RANGE(0x0800, 0x0804) AM_WRITE(K005885_1_w) /* video registers (005885 #2) */ - AM_RANGE(0x1800, 0x187f) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") /* palette */ - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(ddribble_fg_videoram_w) AM_SHARE("fg_videoram") /* Video RAM 1 */ - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram_1") /* Object RAM 1 */ - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("sharedram") /* shared RAM with CPU #1 */ - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(ddribble_bg_videoram_w) AM_SHARE("bg_videoram") /* Video RAM 2 */ - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("spriteram_2") /* Object RAM 2 */ - AM_RANGE(0x8000, 0x8000) AM_WRITE(ddribble_bankswitch_w) /* bankswitch control */ - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddribble_state::cpu1_map) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ddribble_sharedram_r, ddribble_sharedram_w) /* shared RAM with CPU #0 */ - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(ddribble_snd_sharedram_r, ddribble_snd_sharedram_w) /* shared RAM with CPU #2 */ - AM_RANGE(0x2800, 0x2800) AM_READ_PORT("DSW1") - AM_RANGE(0x2801, 0x2801) AM_READ_PORT("P1") - AM_RANGE(0x2802, 0x2802) AM_READ_PORT("P2") - AM_RANGE(0x2803, 0x2803) AM_READ_PORT("SYSTEM") /* coinsw & start */ - AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("DSW2") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW3") - AM_RANGE(0x3400, 0x3400) AM_WRITE(ddribble_coin_counter_w) /* coin counters */ - AM_RANGE(0x3c00, 0x3c00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddribble_state::cpu2_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("snd_sharedram") /* shared RAM with CPU #1 */ - AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM2203 */ - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* Speech data */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddribble_state::vlm_map) - AM_RANGE(0x0000, 0xffff) AM_ROMBANK("vlmbank") -ADDRESS_MAP_END +void ddribble_state::cpu0_map(address_map &map) +{ + map(0x0000, 0x0004).w(this, FUNC(ddribble_state::K005885_0_w)); /* video registers (005885 #1) */ + map(0x0800, 0x0804).w(this, FUNC(ddribble_state::K005885_1_w)); /* video registers (005885 #2) */ + map(0x1800, 0x187f).ram().w("palette", FUNC(palette_device::write_indirect)).share("palette"); /* palette */ + map(0x2000, 0x2fff).ram().w(this, FUNC(ddribble_state::ddribble_fg_videoram_w)).share("fg_videoram"); /* Video RAM 1 */ + map(0x3000, 0x3fff).ram().share("spriteram_1"); /* Object RAM 1 */ + map(0x4000, 0x5fff).ram().share("sharedram"); /* shared RAM with CPU #1 */ + map(0x6000, 0x6fff).ram().w(this, FUNC(ddribble_state::ddribble_bg_videoram_w)).share("bg_videoram"); /* Video RAM 2 */ + map(0x7000, 0x7fff).ram().share("spriteram_2"); /* Object RAM 2 */ + map(0x8000, 0x8000).w(this, FUNC(ddribble_state::ddribble_bankswitch_w)); /* bankswitch control */ + map(0x8000, 0x9fff).bankr("bank1"); /* banked ROM */ + map(0xa000, 0xffff).rom(); /* ROM */ +} + +void ddribble_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(this, FUNC(ddribble_state::ddribble_sharedram_r), FUNC(ddribble_state::ddribble_sharedram_w)); /* shared RAM with CPU #0 */ + map(0x2000, 0x27ff).rw(this, FUNC(ddribble_state::ddribble_snd_sharedram_r), FUNC(ddribble_state::ddribble_snd_sharedram_w)); /* shared RAM with CPU #2 */ + map(0x2800, 0x2800).portr("DSW1"); + map(0x2801, 0x2801).portr("P1"); + map(0x2802, 0x2802).portr("P2"); + map(0x2803, 0x2803).portr("SYSTEM"); /* coinsw & start */ + map(0x2c00, 0x2c00).portr("DSW2"); + map(0x3000, 0x3000).portr("DSW3"); + map(0x3400, 0x3400).w(this, FUNC(ddribble_state::ddribble_coin_counter_w)); /* coin counters */ + map(0x3c00, 0x3c00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void ddribble_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("snd_sharedram"); /* shared RAM with CPU #1 */ + map(0x1000, 0x1001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* YM2203 */ + map(0x3000, 0x3000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* Speech data */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void ddribble_state::vlm_map(address_map &map) +{ + map(0x0000, 0xffff).bankr("vlmbank"); +} static INPUT_PORTS_START( ddribble ) PORT_START("P1") diff --git a/src/mame/drivers/de_2.cpp b/src/mame/drivers/de_2.cpp index be9374de77c..1fa92069a5c 100644 --- a/src/mame/drivers/de_2.cpp +++ b/src/mame/drivers/de_2.cpp @@ -135,17 +135,18 @@ ADDRESS_MAP_START(de_2_state::de_2_map) AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END -ADDRESS_MAP_START(de_2_state::de_2_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0x2400, 0x2400) AM_READ(sound_latch_r) - AM_RANGE(0x2800, 0x2800) AM_WRITE(sample_bank_w) +void de_2_state::de_2_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2400, 0x2400).r(this, FUNC(de_2_state::sound_latch_r)); + map(0x2800, 0x2800).w(this, FUNC(de_2_state::sample_bank_w)); // 0x2c00 - 4052(?) - AM_RANGE(0x3000, 0x3000) AM_WRITE(sample_w) + map(0x3000, 0x3000).w(this, FUNC(de_2_state::sample_w)); // 0x3800 - Watchdog reset - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("sample_bank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x4000, 0x7fff).bankr("sample_bank"); + map(0x8000, 0xffff).rom(); +} static INPUT_PORTS_START( de_2 ) PORT_START("INP0") diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp index 8ce7c0a9ace..539bd98f37a 100644 --- a/src/mame/drivers/deadang.cpp +++ b/src/mame/drivers/deadang.cpp @@ -64,59 +64,63 @@ READ16_MEMBER(deadang_state::ghunter_trackball_high_r) /* Memory Maps */ -ADDRESS_MAP_START(deadang_state::main_map) - AM_RANGE(0x00000, 0x037ff) AM_RAM - AM_RANGE(0x03800, 0x03fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x05000, 0x05fff) AM_WRITEONLY - AM_RANGE(0x06000, 0x0600f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0x06010, 0x07fff) AM_WRITEONLY - AM_RANGE(0x08000, 0x087ff) AM_WRITE(text_w) AM_SHARE("videoram") - AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY - AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2") - AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW") - AM_RANGE(0x0c000, 0x0cfff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0d000, 0x0dfff) AM_WRITEONLY - AM_RANGE(0x0e000, 0x0e0ff) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0x0e100, 0x0ffff) AM_WRITEONLY - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(deadang_state::sub_map) - AM_RANGE(0x00000, 0x037ff) AM_RAM - AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(foreground_w) AM_SHARE("video_data") - AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x08000, 0x08001) AM_WRITE(bank_w) - AM_RANGE(0x0c000, 0x0c001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xe0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(deadang_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm1", seibu_adpcm_device, adr_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm1", seibu_adpcm_device, ctl_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6005, 0x6006) AM_DEVWRITE("adpcm2", seibu_adpcm_device, adr_w) - AM_RANGE(0x6008, 0x6009) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0x601a, 0x601a) AM_DEVWRITE("adpcm2", seibu_adpcm_device, ctl_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(deadang_state::sound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END +void deadang_state::main_map(address_map &map) +{ + map(0x00000, 0x037ff).ram(); + map(0x03800, 0x03fff).ram().share("spriteram"); + map(0x04000, 0x04fff).ram().share("share1"); + map(0x05000, 0x05fff).writeonly(); + map(0x06000, 0x0600f).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0x06010, 0x07fff).writeonly(); + map(0x08000, 0x087ff).w(this, FUNC(deadang_state::text_w)).share("videoram"); + map(0x08800, 0x0bfff).writeonly(); + map(0x0a000, 0x0a001).portr("P1_P2"); + map(0x0a002, 0x0a003).portr("DSW"); + map(0x0c000, 0x0cfff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0d000, 0x0dfff).writeonly(); + map(0x0e000, 0x0e0ff).writeonly().share("scroll_ram"); + map(0x0e100, 0x0ffff).writeonly(); + map(0xc0000, 0xfffff).rom(); +} + +void deadang_state::sub_map(address_map &map) +{ + map(0x00000, 0x037ff).ram(); + map(0x03800, 0x03fff).ram().w(this, FUNC(deadang_state::foreground_w)).share("video_data"); + map(0x04000, 0x04fff).ram().share("share1"); + map(0x08000, 0x08001).w(this, FUNC(deadang_state::bank_w)); + map(0x0c000, 0x0c001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xe0000, 0xfffff).rom(); +} + +void deadang_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4005, 0x4006).w(m_adpcm1, FUNC(seibu_adpcm_device::adr_w)); + map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401a, 0x401a).w(m_adpcm1, FUNC(seibu_adpcm_device::ctl_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6005, 0x6006).w(m_adpcm2, FUNC(seibu_adpcm_device::adr_w)); + map(0x6008, 0x6009).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x601a, 0x601a).w(m_adpcm2, FUNC(seibu_adpcm_device::ctl_w)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} + +void deadang_state::sound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} /* Input Ports */ diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp index 0a4e9e62600..2f3e3252d64 100644 --- a/src/mame/drivers/dec0.cpp +++ b/src/mame/drivers/dec0.cpp @@ -333,7 +333,6 @@ Notes: #include "cpu/m68000/m68000.h" #include "cpu/m6502/m6502.h" -#include "cpu/h6280/h6280.h" #include "cpu/z80/z80.h" #include "cpu/mcs51/mcs51.h" #include "cpu/m6805/m68705.h" @@ -428,57 +427,60 @@ WRITE16_MEMBER(dec0_state::midres_sound_w) /******************************************************************************/ -ADDRESS_MAP_START(dec0_state::dec0_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */ - AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x242000, 0x24207f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x242400, 0x2427ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - AM_RANGE(0x242800, 0x243fff) AM_RAM /* Robocop only */ - AM_RANGE(0x244000, 0x245fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x246000, 0x246007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) /* first tile layer */ - AM_RANGE(0x246010, 0x246017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x248000, 0x24807f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x248400, 0x2487ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - AM_RANGE(0x24a000, 0x24a7ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x24c000, 0x24c007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) /* second tile layer */ - AM_RANGE(0x24c010, 0x24c017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x24c800, 0x24c87f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x24cc00, 0x24cfff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - AM_RANGE(0x24d000, 0x24d7ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("AN0") - AM_RANGE(0x300008, 0x300009) AM_READ_PORT("AN1") - AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r) - AM_RANGE(0x30c010, 0x30c01f) AM_WRITE(dec0_control_w) /* Priority, sound, etc. */ - AM_RANGE(0x30c012, 0x30c013) AM_READNOP // clr.w for sprite DMA - AM_RANGE(0x30c018, 0x30c019) AM_READNOP // clr.w for irq ack - AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x314000, 0x3147ff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext") - AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_SHARE("ram") /* Main ram */ - AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec0_state::robocop_sub_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM /* Main ram */ - AM_RANGE(0x1f2000, 0x1f3fff) AM_RAM AM_SHARE("robocop_shared") /* Shared ram */ - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("sub", h6280_device, irq_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec0_state::hippodrm_sub_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x180000, 0x18001f) AM_RAM AM_SHARE("hippodrm_shared") - AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control0_8bit_packed_w) - AM_RANGE(0x1a0010, 0x1a001f) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control1_8bit_swap_w) - AM_RANGE(0x1a1000, 0x1a17ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_8bit_swap_r, pf_data_8bit_swap_w) - AM_RANGE(0x1d0000, 0x1d00ff) AM_READWRITE(hippodrm_prot_r, hippodrm_prot_w) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* Main ram */ - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("sub", h6280_device, irq_status_w) - AM_RANGE(0x1ff402, 0x1ff403) AM_READ_PORT("VBLANK") -ADDRESS_MAP_END +void dec0_state::dec0_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x240000, 0x240007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */ + map(0x240010, 0x240017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x242000, 0x24207f).rw(m_tilegen1, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x242400, 0x2427ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x242800, 0x243fff).ram(); /* Robocop only */ + map(0x244000, 0x245fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x246000, 0x246007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_0_w)); /* first tile layer */ + map(0x246010, 0x246017).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x248000, 0x24807f).rw(m_tilegen2, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x248400, 0x2487ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x24a000, 0x24a7ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x24c000, 0x24c007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_0_w)); /* second tile layer */ + map(0x24c010, 0x24c017).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x24c800, 0x24c87f).rw(m_tilegen3, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x24cc00, 0x24cfff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x24d000, 0x24d7ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x300000, 0x300001).portr("AN0"); + map(0x300008, 0x300009).portr("AN1"); + map(0x30c000, 0x30c00b).r(this, FUNC(dec0_state::dec0_controls_r)); + map(0x30c010, 0x30c01f).w(this, FUNC(dec0_state::dec0_control_w)); /* Priority, sound, etc. */ + map(0x30c012, 0x30c013).nopr(); // clr.w for sprite DMA + map(0x30c018, 0x30c019).nopr(); // clr.w for irq ack + map(0x310000, 0x3107ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x314000, 0x3147ff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext"); + map(0xff8000, 0xffbfff).ram().share("ram"); /* Main ram */ + map(0xffc000, 0xffc7ff).ram().share("spriteram"); /* Sprites */ +} + +void dec0_state::robocop_sub_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x1f0000, 0x1f1fff).ram(); /* Main ram */ + map(0x1f2000, 0x1f3fff).ram().share("robocop_shared"); /* Shared ram */ + map(0x1ff400, 0x1ff403).w(m_subcpu, FUNC(h6280_device::irq_status_w)); +} + +void dec0_state::hippodrm_sub_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x180000, 0x18001f).ram().share("hippodrm_shared"); + map(0x1a0000, 0x1a0007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control0_8bit_packed_w)); + map(0x1a0010, 0x1a001f).w(m_tilegen3, FUNC(deco_bac06_device::pf_control1_8bit_swap_w)); + map(0x1a1000, 0x1a17ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_8bit_swap_r), FUNC(deco_bac06_device::pf_data_8bit_swap_w)); + map(0x1d0000, 0x1d00ff).rw(this, FUNC(dec0_state::hippodrm_prot_r), FUNC(dec0_state::hippodrm_prot_w)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); /* Main ram */ + map(0x1ff400, 0x1ff403).w(m_subcpu, FUNC(h6280_device::irq_status_w)); + map(0x1ff402, 0x1ff403).portr("VBLANK"); +} @@ -569,114 +571,120 @@ READ16_MEMBER(dec0_state::slyspy_state_r) } -ADDRESS_MAP_START(dec0_state::slyspy_protection_map) - AM_RANGE(0x04000, 0x04001) AM_MIRROR(0x30000) AM_READ(slyspy_state_r) AM_WRITENOP - AM_RANGE(0x0a000, 0x0a001) AM_MIRROR(0x30000) AM_WRITE(slyspy_state_w) +void dec0_state::slyspy_protection_map(address_map &map) +{ + map(0x04000, 0x04001).mirror(0x30000).r(this, FUNC(dec0_state::slyspy_state_r)).nopw(); + map(0x0a000, 0x0a001).mirror(0x30000).w(this, FUNC(dec0_state::slyspy_state_w)); // Default state (called by Traps 1, 3, 4, 7, C) - AM_RANGE(0x00000, 0x00007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) - AM_RANGE(0x00010, 0x00017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x02000, 0x0207f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_colscroll_w) - AM_RANGE(0x02400, 0x027ff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_rowscroll_w) - AM_RANGE(0x06000, 0x07fff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w) - AM_RANGE(0x08000, 0x08007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) - AM_RANGE(0x08010, 0x08017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x0c000, 0x0c07f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_colscroll_w) - AM_RANGE(0x0c400, 0x0c7ff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_rowscroll_w) - AM_RANGE(0x0e000, 0x0ffff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w) + map(0x00000, 0x00007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_0_w)); + map(0x00010, 0x00017).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x02000, 0x0207f).w(m_tilegen2, FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x02400, 0x027ff).w(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x06000, 0x07fff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w)); + map(0x08000, 0x08007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w)); + map(0x08010, 0x08017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x0c000, 0x0c07f).w(m_tilegen1, FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x0c400, 0x0c7ff).w(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x0e000, 0x0ffff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w)); // State 1 (Called by Trap 9) - AM_RANGE(0x18000, 0x19fff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w) - AM_RANGE(0x1c000, 0x1dfff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w) + map(0x18000, 0x19fff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w)); + map(0x1c000, 0x1dfff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w)); // State 2 (Called by Trap A) - AM_RANGE(0x20000, 0x21fff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w) - AM_RANGE(0x22000, 0x23fff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w) - AM_RANGE(0x2e000, 0x2ffff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w) + map(0x20000, 0x21fff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w)); + map(0x22000, 0x23fff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w)); + map(0x2e000, 0x2ffff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w)); // State 3 (Called by Trap B) - AM_RANGE(0x30000, 0x31fff) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_data_w) - AM_RANGE(0x38000, 0x39fff) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_data_w) -ADDRESS_MAP_END + map(0x30000, 0x31fff).w(m_tilegen1, FUNC(deco_bac06_device::pf_data_w)); + map(0x38000, 0x39fff).w(m_tilegen2, FUNC(deco_bac06_device::pf_data_w)); +} -ADDRESS_MAP_START(dec0_state::slyspy_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM +void dec0_state::slyspy_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); /* The location of pf1 & pf2 can change in the 240000 - 24ffff region according to protection */ - AM_RANGE(0x240000, 0x24ffff) AM_DEVICE("pfprotect", address_map_bank_device, amap16) + map(0x240000, 0x24ffff).m(m_pfprotect, FUNC(address_map_bank_device::amap16)); /* Pf3 is unaffected by protection */ - AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) - AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x300800, 0x30087f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x300c00, 0x300fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x304000, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */ - AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x314000, 0x314001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x314002, 0x314003) AM_WRITE(dec0_priority_w) - AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r) - AM_RANGE(0x31c000, 0x31c00f) AM_READ(slyspy_protection_r) AM_WRITENOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dec0_state::midres_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x1407ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x160001) AM_WRITE(dec0_priority_w) - AM_RANGE(0x180000, 0x18000f) AM_READ(midres_controls_r) - AM_RANGE(0x180008, 0x18000f) AM_WRITENOP /* ?? watchdog ?? */ - AM_RANGE(0x1a0000, 0x1a0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - - AM_RANGE(0x200000, 0x200007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) - AM_RANGE(0x200010, 0x200017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x220000, 0x2207ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x220800, 0x220fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) /* mirror address used in end sequence */ - AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - - AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) - AM_RANGE(0x280010, 0x280017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x2a0000, 0x2a07ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x2c0000, 0x2c007f) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x2c0400, 0x2c07ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - - AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) - AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec0_state::midresb_map) - AM_IMPORT_FROM( midres_map ) - AM_RANGE(0x160010, 0x160011) AM_WRITE(dec0_priority_w) - AM_RANGE(0x180000, 0x18000f) AM_READ(dec0_controls_r) - AM_RANGE(0x180012, 0x180013) AM_NOP - AM_RANGE(0x180014, 0x180015) AM_WRITE(midres_sound_w) - AM_RANGE(0x180018, 0x180019) AM_NOP - AM_RANGE(0x1a0000, 0x1a0001) AM_READ_PORT("AN0") - AM_RANGE(0x1a0008, 0x1a0009) AM_READ_PORT("AN1") -ADDRESS_MAP_END + map(0x300000, 0x300007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_0_w)); + map(0x300010, 0x300017).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x300800, 0x30087f).rw(m_tilegen3, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x300c00, 0x300fff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x301000, 0x3017ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x304000, 0x307fff).ram().share("ram"); /* Sly spy main ram */ + map(0x308000, 0x3087ff).ram().share("spriteram"); /* Sprites */ + map(0x310000, 0x3107ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x314001, 0x314001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x314002, 0x314003).w(this, FUNC(dec0_state::dec0_priority_w)); + map(0x314008, 0x31400f).r(this, FUNC(dec0_state::slyspy_controls_r)); + map(0x31c000, 0x31c00f).r(this, FUNC(dec0_state::slyspy_protection_r)).nopw(); +} + + +void dec0_state::midres_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("ram"); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x160001).w(this, FUNC(dec0_state::dec0_priority_w)); + map(0x180000, 0x18000f).r(this, FUNC(dec0_state::midres_controls_r)); + map(0x180008, 0x18000f).nopw(); /* ?? watchdog ?? */ + map(0x1a0001, 0x1a0001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + + map(0x200000, 0x200007).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_0_w)); + map(0x200010, 0x200017).w(m_tilegen2, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x220000, 0x2207ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x220800, 0x220fff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); /* mirror address used in end sequence */ + map(0x240000, 0x24007f).rw(m_tilegen2, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x240400, 0x2407ff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + + map(0x280000, 0x280007).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_0_w)); + map(0x280010, 0x280017).w(m_tilegen3, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x2a0000, 0x2a07ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x2c0000, 0x2c007f).rw(m_tilegen3, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x2c0400, 0x2c07ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + + map(0x300000, 0x300007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w)); + map(0x300010, 0x300017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x320000, 0x321fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x340000, 0x34007f).rw(m_tilegen1, FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x340400, 0x3407ff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); +} + +void dec0_state::midresb_map(address_map &map) +{ + midres_map(map); + map(0x160010, 0x160011).w(this, FUNC(dec0_state::dec0_priority_w)); + map(0x180000, 0x18000f).r(this, FUNC(dec0_state::dec0_controls_r)); + map(0x180012, 0x180013).noprw(); + map(0x180014, 0x180015).w(this, FUNC(dec0_state::midres_sound_w)); + map(0x180018, 0x180019).noprw(); + map(0x1a0000, 0x1a0001).portr("AN0"); + map(0x1a0008, 0x1a0009).portr("AN1"); +} /******************************************************************************/ -ADDRESS_MAP_START(dec0_state::dec0_s_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dec0_state::dec0_s_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x3800, 0x3800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).rom(); +} /* Physical memory map (21 bits) */ -ADDRESS_MAP_START(dec0_state::slyspy_s_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_DEVICE("sndprotect", address_map_bank_device, amap8 ) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void dec0_state::slyspy_s_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x080000, 0x0fffff).m(m_sndprotect, FUNC(address_map_bank_device::amap8)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); +} // sly spy sound state protection machine emulation // similar to the video state machine @@ -700,41 +708,43 @@ READ8_MEMBER(dec0_state::slyspy_sound_state_reset_r) return 0xff; } -ADDRESS_MAP_START(dec0_state::slyspy_sound_protection_map) - AM_RANGE(0x020000, 0x020001) AM_MIRROR(0x180000) AM_READ(slyspy_sound_state_r) /* Protection counter */ - AM_RANGE(0x050000, 0x050001) AM_MIRROR(0x180000) AM_READ(slyspy_sound_state_reset_r) +void dec0_state::slyspy_sound_protection_map(address_map &map) +{ + map(0x020000, 0x020001).mirror(0x180000).r(this, FUNC(dec0_state::slyspy_sound_state_r)); /* Protection counter */ + map(0x050000, 0x050001).mirror(0x180000).r(this, FUNC(dec0_state::slyspy_sound_state_reset_r)); // state 0 - AM_RANGE(0x010000, 0x010001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x030000, 0x030001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x060000, 0x060001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x070000, 0x070001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + map(0x010000, 0x010001).w("ym2", FUNC(ym3812_device::write)); + map(0x030000, 0x030001).w("ym1", FUNC(ym2203_device::write)); + map(0x060000, 0x060001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x070000, 0x070001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // state 1 - AM_RANGE(0x090000, 0x090001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x0f0000, 0x0f0001) AM_DEVWRITE("ym2", ym3812_device, write) + map(0x090000, 0x090001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c0000, 0x0c0001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0e0000, 0x0e0001).w("ym1", FUNC(ym2203_device::write)); + map(0x0f0000, 0x0f0001).w("ym2", FUNC(ym3812_device::write)); // state 2 - AM_RANGE(0x110000, 0x110001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x170000, 0x170001) AM_DEVWRITE("ym2", ym3812_device, write) + map(0x110000, 0x110001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x130000, 0x130001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).w("ym1", FUNC(ym2203_device::write)); + map(0x170000, 0x170001).w("ym2", FUNC(ym3812_device::write)); // state 3 - AM_RANGE(0x190000, 0x190001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1e0000, 0x1e0001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f0001) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END + map(0x190000, 0x190001).w("ym2", FUNC(ym3812_device::write)); + map(0x1c0000, 0x1c0001).w("ym1", FUNC(ym2203_device::write)); + map(0x1e0000, 0x1e0001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f0001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} -ADDRESS_MAP_START(dec0_state::midres_s_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x108000, 0x108001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x118000, 0x118001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x138000, 0x138001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void dec0_state::midres_s_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x108000, 0x108001).w("ym2", FUNC(ym3812_device::write)); + map(0x118000, 0x118001).w("ym1", FUNC(ym2203_device::write)); + map(0x130000, 0x130001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x138000, 0x138001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); +} @@ -766,96 +776,100 @@ WRITE16_MEMBER( dec0_automat_state::automat_palette_w ) -ADDRESS_MAP_START(dec0_automat_state::automat_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - - AM_RANGE(0x240000, 0x240007) AM_RAM /* text layer */ - AM_RANGE(0x240010, 0x240017) AM_RAM - AM_RANGE(0x242000, 0x24207f) AM_RAM - AM_RANGE(0x242400, 0x2427ff) AM_RAM - AM_RANGE(0x242800, 0x243fff) AM_RAM - AM_RANGE(0x244000, 0x245fff) AM_RAM AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x246000, 0x246007) AM_RAM /* first tile layer */ - AM_RANGE(0x246010, 0x246017) AM_RAM - AM_RANGE(0x248000, 0x24807f) AM_RAM - AM_RANGE(0x248400, 0x2487ff) AM_RAM - AM_RANGE(0x24a000, 0x24a7ff) AM_RAM AM_DEVREADWRITE("tilegen2",deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x24c000, 0x24c007) AM_RAM /* second tile layer */ - AM_RANGE(0x24c010, 0x24c017) AM_RAM - AM_RANGE(0x24c800, 0x24c87f) AM_RAM - AM_RANGE(0x24cc00, 0x24cfff) AM_RAM - AM_RANGE(0x24d000, 0x24d7ff) AM_RAM AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w) - - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("AN0") - AM_RANGE(0x300008, 0x300009) AM_READ_PORT("AN1") - AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r) - AM_RANGE(0x30c000, 0x30c01f) AM_WRITE(automat_control_w) /* Priority, sound, etc. */ - AM_RANGE(0x310000, 0x3107ff) AM_READWRITE(automat_palette_r, automat_palette_w) AM_SHARE("palette") - AM_RANGE(0x314000, 0x3147ff) AM_RAM +void dec0_automat_state::automat_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + + map(0x240000, 0x240007).ram(); /* text layer */ + map(0x240010, 0x240017).ram(); + map(0x242000, 0x24207f).ram(); + map(0x242400, 0x2427ff).ram(); + map(0x242800, 0x243fff).ram(); + map(0x244000, 0x245fff).ram().rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x246000, 0x246007).ram(); /* first tile layer */ + map(0x246010, 0x246017).ram(); + map(0x248000, 0x24807f).ram(); + map(0x248400, 0x2487ff).ram(); + map(0x24a000, 0x24a7ff).ram().rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x24c000, 0x24c007).ram(); /* second tile layer */ + map(0x24c010, 0x24c017).ram(); + map(0x24c800, 0x24c87f).ram(); + map(0x24cc00, 0x24cfff).ram(); + map(0x24d000, 0x24d7ff).ram().rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + + map(0x300000, 0x300001).portr("AN0"); + map(0x300008, 0x300009).portr("AN1"); + map(0x30c000, 0x30c00b).r(this, FUNC(dec0_automat_state::dec0_controls_r)); + map(0x30c000, 0x30c01f).w(this, FUNC(dec0_automat_state::automat_control_w)); /* Priority, sound, etc. */ + map(0x310000, 0x3107ff).rw(this, FUNC(dec0_automat_state::automat_palette_r), FUNC(dec0_automat_state::automat_palette_w)).share("palette"); + map(0x314000, 0x3147ff).ram(); // video regs are moved to here.. - AM_RANGE(0x400000, 0x400007) AM_WRITE(automat_scroll_w) - AM_RANGE(0x400008, 0x400009) AM_WRITE(dec0_priority_w) + map(0x400000, 0x400007).w(this, FUNC(dec0_automat_state::automat_scroll_w)); + map(0x400008, 0x400009).w(this, FUNC(dec0_automat_state::dec0_priority_w)); - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ??? + map(0x500000, 0x500001).nopw(); // ??? - AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_SHARE("ram") /* Main ram */ - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("spriteram") /* Sprites */ -ADDRESS_MAP_END + map(0xff8000, 0xffbfff).ram().share("ram"); /* Main ram */ + map(0xffc000, 0xffcfff).ram().share("spriteram"); /* Sprites */ +} -ADDRESS_MAP_START(dec0_automat_state::secretab_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM +void dec0_automat_state::secretab_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); // AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) // AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x246000, 0x247fff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) + map(0x246000, 0x247fff).rw(m_tilegen2, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); // AM_RANGE(0x240000, 0x24007f) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) // AM_RANGE(0x240400, 0x2407ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) // AM_RANGE(0x200000, 0x300007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) // AM_RANGE(0x300010, 0x300017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x24e000, 0x24ffff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w) + map(0x24e000, 0x24ffff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); // AM_RANGE(0x340000, 0x34007f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) // AM_RANGE(0x340400, 0x3407ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r) - AM_RANGE(0x314000, 0x314001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - - AM_RANGE(0x300000, 0x300007) AM_RAM - AM_RANGE(0x300010, 0x300017) AM_RAM - AM_RANGE(0x300800, 0x30087f) AM_RAM - AM_RANGE(0x300c00, 0x300fff) AM_RAM - AM_RANGE(0x301000, 0x3017ff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x301800, 0x307fff) AM_RAM AM_SHARE("ram") /* Sly spy main ram */ - AM_RANGE(0x310000, 0x3107ff) AM_READWRITE(automat_palette_r, automat_palette_w) AM_SHARE("palette") - AM_RANGE(0xb08000, 0xb08fff) AM_RAM AM_SHARE("spriteram") /* Sprites */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dec0_automat_state::automat_s_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("2203a", ym2203_device, read, write) - AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("2203b", ym2203_device, read, write) - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec0_automat_state::secretab_s_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("2203a", ym2203_device, read, write) - AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ym3812", ym3812_device, read, write) - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w) -ADDRESS_MAP_END + map(0x314008, 0x31400f).r(this, FUNC(dec0_automat_state::slyspy_controls_r)); + map(0x314001, 0x314001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + + map(0x300000, 0x300007).ram(); + map(0x300010, 0x300017).ram(); + map(0x300800, 0x30087f).ram(); + map(0x300c00, 0x300fff).ram(); + map(0x301000, 0x3017ff).rw(m_tilegen3, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x301800, 0x307fff).ram().share("ram"); /* Sly spy main ram */ + map(0x310000, 0x3107ff).rw(this, FUNC(dec0_automat_state::automat_palette_r), FUNC(dec0_automat_state::automat_palette_w)).share("palette"); + map(0xb08000, 0xb08fff).ram().share("spriteram"); /* Sprites */ +} + + +void dec0_automat_state::automat_s_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).rw("2203a", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xd000, 0xd001).rw("2203b", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe000).w(m_adpcm_select2, FUNC(ls157_device::ba_w)); + map(0xe800, 0xe800).w(this, FUNC(dec0_automat_state::sound_bankswitch_w)); + map(0xf000, 0xf000).w(m_adpcm_select1, FUNC(ls157_device::ba_w)); +} + +void dec0_automat_state::secretab_s_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).rw("2203a", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xd000, 0xd001).rw("ym3812", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe000).w(m_adpcm_select2, FUNC(ls157_device::ba_w)); + map(0xe800, 0xe800).w(this, FUNC(dec0_automat_state::sound_bankswitch_w)); + map(0xf000, 0xf000).w(m_adpcm_select1, FUNC(ls157_device::ba_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp index 4fef96dd373..6f2bb935736 100644 --- a/src/mame/drivers/dec8.cpp +++ b/src/mame/drivers/dec8.cpp @@ -463,332 +463,349 @@ WRITE8_MEMBER(dec8_state::flip_screen_w){ flip_screen_set(data); } /******************************************************************************/ -ADDRESS_MAP_START(dec8_state::lastmisn_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0") - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1") - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w) - AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r) - AM_RANGE(0x1807, 0x1807) AM_READWRITE(i8751_l_r, flip_screen_w) - AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmisn_scrollx_w) /* Scroll LSB */ - AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmisn_scrolly_w) /* Scroll LSB */ - AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) - AM_RANGE(0x180d, 0x180d) AM_WRITE(lastmisn_control_w) /* Bank switch + Scroll MSB */ - AM_RANGE(0x180e, 0x180f) AM_WRITE(lastmisn_i8751_w) - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::lastmisn_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0") - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1") - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w) - AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w) - AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) - AM_RANGE(0x2800, 0x2fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::shackled_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0") - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1") - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0") - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w) - AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w) - AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmisn_scrollx_w) /* Scroll LSB */ - AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmisn_scrolly_w) /* Scroll LSB */ - AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) - AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */ - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::shackled_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0") - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1") - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0") - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w) - AM_RANGE(0x1805, 0x1805) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r) - AM_RANGE(0x1807, 0x1807) AM_READWRITE(i8751_l_r, flip_screen_w) - AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmisn_scrollx_w) /* Scroll LSB */ - AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmisn_scrolly_w) /* Scroll LSB */ - AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) - AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */ - AM_RANGE(0x180e, 0x180f) AM_WRITE(shackled_i8751_w) - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::gondo_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data") - AM_RANGE(0x2800, 0x2bff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x2c00, 0x2fff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r) /* Player 1 rotary */ - AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r) /* Player 2 rotary */ - AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3") /* VBL */ - AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2") /* Fire buttons */ - AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w) - AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w) - AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */ - AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r) - AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r) - AM_RANGE(0x383a, 0x383b) AM_WRITE(dec8_i8751_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::garyoret_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data") - AM_RANGE(0x2800, 0x2bff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x2c00, 0x2fff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x3808, 0x3808) AM_READNOP /* ? */ - AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1") /* Player 2 + VBL */ - AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w) - AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w) - AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */ - AM_RANGE(0x3838, 0x3839) AM_WRITE(dec8_i8751_w) - AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r) - AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::meikyuh_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w) - AM_RANGE(0x2800, 0x2bff) AM_RAM // colscroll? mirror? - AM_RANGE(0x2c00, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_8bit_r, pf_rowscroll_8bit_w) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w) - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2") /* Player 3 */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0") /* Start buttons + VBL */ - AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1") /* Dip */ - AM_RANGE(0x3820, 0x3827) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x3830, 0x383f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w) - AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r) - AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w) - AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r) - AM_RANGE(0x3860, 0x3861) AM_WRITE(dec8_i8751_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::csilver_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN1") - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN0") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2") - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w) - AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* Dip 1, DMA */ - AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w) - AM_RANGE(0x1808, 0x180b) AM_WRITE(dec8_scroll2_w) - AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) - AM_RANGE(0x180d, 0x180d) AM_WRITE(csilver_control_w) - AM_RANGE(0x180e, 0x180f) AM_WRITE(csilver_i8751_w) - AM_RANGE(0x1c00, 0x1c00) AM_READ(i8751_h_r) - AM_RANGE(0x1e00, 0x1e00) AM_READ(i8751_l_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::csilver_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x13ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x1400, 0x17ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2") - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w) - AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w) - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::oscar_map) - AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0f00, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w) - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x3800, 0x3bff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0") - AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1") - AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2") /* VBL & coins */ - AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1") - AM_RANGE(0x3c00, 0x3c07) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x3c10, 0x3c1f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_w) - AM_RANGE(0x3c80, 0x3c80) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w) /* BNKS */ - AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w) /* SOUN */ - AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP /* COINCL */ - AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::oscar_sub_map) - AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0f00, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::srdarwin_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x13ff) AM_RAM - AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_bg_data_r, dec8_bg_data_w) AM_SHARE("bg_data") - AM_RANGE(0x1800, 0x1801) AM_WRITE(dec8_i8751_w) - AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w) /* Maybe.. */ - AM_RANGE(0x1803, 0x1803) AM_WRITENOP /* NMI ack */ - AM_RANGE(0x1804, 0x1804) AM_DEVWRITE("spriteram", buffered_spriteram8_device, write) /* DMA */ - AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */ - AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w) /* Sound */ - AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w) /* Flipscreen */ - AM_RANGE(0x2800, 0x288f) AM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x3000, 0x308f) AM_DEVWRITE("palette", deco_rmc3_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1") /* Player 2 (cocktail) + VBL */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dec8_state::cobra_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w) - AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w) - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x31ff) AM_RAM_DEVWRITE("palette", deco_rmc3_device, write8) AM_SHARE("palette") - AM_RANGE(0x3200, 0x37ff) AM_WRITEONLY /* Unused */ - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") /* Player 1 */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") /* Player 2 */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0") /* Dip 1 */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") /* Dip 2 */ - AM_RANGE(0x3800, 0x3807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x3810, 0x381f) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_w) - AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") /* VBL & coins */ - AM_RANGE(0x3a00, 0x3a07) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x3a10, 0x3a1f) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control1_8bit_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w) - AM_RANGE(0x3c02, 0x3c02) AM_WRITE(dec8_mxc06_karn_buffer_spriteram_w) /* DMA */ - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dec8_state::lastmisn_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x1800, 0x1800).portr("IN0"); + map(0x1801, 0x1801).portr("IN1"); + map(0x1802, 0x1802).portr("IN2"); + map(0x1803, 0x1803).portr("DSW0"); /* Dip 1 */ + map(0x1804, 0x1804).portr("DSW1"); /* Dip 2 */ + map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w)); + map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x1806, 0x1806).r(this, FUNC(dec8_state::i8751_h_r)); + map(0x1807, 0x1807).rw(this, FUNC(dec8_state::i8751_l_r), FUNC(dec8_state::flip_screen_w)); + map(0x1809, 0x1809).w(this, FUNC(dec8_state::lastmisn_scrollx_w)); /* Scroll LSB */ + map(0x180b, 0x180b).w(this, FUNC(dec8_state::lastmisn_scrolly_w)); /* Scroll LSB */ + map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x180d, 0x180d).w(this, FUNC(dec8_state::lastmisn_control_w)); /* Bank switch + Scroll MSB */ + map(0x180e, 0x180f).w(this, FUNC(dec8_state::lastmisn_i8751_w)); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().share("share2"); + map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data"); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::lastmisn_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x1800, 0x1800).portr("IN0"); + map(0x1801, 0x1801).portr("IN1"); + map(0x1802, 0x1802).portr("IN2"); + map(0x1803, 0x1803).portr("DSW0"); /* Dip 1 */ + map(0x1804, 0x1804).portr("DSW1"); /* Dip 2 */ + map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w)); + map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x1807, 0x1807).w(this, FUNC(dec8_state::flip_screen_w)); + map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)); + map(0x2800, 0x2fff).writeonly().share("spriteram"); + map(0x3000, 0x37ff).ram().share("share2"); + map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)); + map(0x4000, 0xffff).rom(); +} + +void dec8_state::shackled_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x1800, 0x1800).portr("IN0"); + map(0x1801, 0x1801).portr("IN1"); + map(0x1802, 0x1802).portr("IN2"); + map(0x1803, 0x1803).portr("DSW0"); + map(0x1804, 0x1804).portr("DSW1"); + map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w)); + map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x1807, 0x1807).w(this, FUNC(dec8_state::flip_screen_w)); + map(0x1809, 0x1809).w(this, FUNC(dec8_state::lastmisn_scrollx_w)); /* Scroll LSB */ + map(0x180b, 0x180b).w(this, FUNC(dec8_state::lastmisn_scrolly_w)); /* Scroll LSB */ + map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x180d, 0x180d).w(this, FUNC(dec8_state::shackled_control_w)); /* Bank switch + Scroll MSB */ + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().share("share2"); + map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data"); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::shackled_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x1800, 0x1800).portr("IN0"); + map(0x1801, 0x1801).portr("IN1"); + map(0x1802, 0x1802).portr("IN2"); + map(0x1803, 0x1803).portr("DSW0"); + map(0x1804, 0x1804).portr("DSW1"); + map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w)); + map(0x1805, 0x1805).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x1806, 0x1806).r(this, FUNC(dec8_state::i8751_h_r)); + map(0x1807, 0x1807).rw(this, FUNC(dec8_state::i8751_l_r), FUNC(dec8_state::flip_screen_w)); + map(0x1809, 0x1809).w(this, FUNC(dec8_state::lastmisn_scrollx_w)); /* Scroll LSB */ + map(0x180b, 0x180b).w(this, FUNC(dec8_state::lastmisn_scrolly_w)); /* Scroll LSB */ + map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x180d, 0x180d).w(this, FUNC(dec8_state::shackled_control_w)); /* Bank switch + Scroll MSB */ + map(0x180e, 0x180f).w(this, FUNC(dec8_state::shackled_i8751_w)); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().share("share2"); + map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)); + map(0x4000, 0xffff).rom(); +} + +void dec8_state::gondo_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); + map(0x1800, 0x1fff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2000, 0x27ff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data"); + map(0x2800, 0x2bff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x2c00, 0x2fff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x3000, 0x37ff).ram().share("spriteram"); /* Sprites */ + map(0x3800, 0x3800).portr("DSW0"); /* Dip 1 */ + map(0x3801, 0x3801).portr("DSW1"); /* Dip 2 */ + map(0x380a, 0x380b).r(this, FUNC(dec8_state::gondo_player_1_r)); /* Player 1 rotary */ + map(0x380c, 0x380d).r(this, FUNC(dec8_state::gondo_player_2_r)); /* Player 2 rotary */ + map(0x380e, 0x380e).portr("IN3"); /* VBL */ + map(0x380f, 0x380f).portr("IN2"); /* Fire buttons */ + map(0x3810, 0x3810).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x3818, 0x382f).w(this, FUNC(dec8_state::gondo_scroll_w)); + map(0x3830, 0x3830).w(this, FUNC(dec8_state::ghostb_bank_w)); /* Bank + NMI enable */ + map(0x3838, 0x3838).r(this, FUNC(dec8_state::i8751_h_r)); + map(0x3839, 0x3839).r(this, FUNC(dec8_state::i8751_l_r)); + map(0x383a, 0x383b).w(this, FUNC(dec8_state::dec8_i8751_w)); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::garyoret_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); + map(0x1800, 0x1fff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2000, 0x27ff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data"); + map(0x2800, 0x2bff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x2c00, 0x2fff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x3000, 0x37ff).ram().share("spriteram"); /* Sprites */ + map(0x3800, 0x3800).portr("DSW0"); /* Dip 1 */ + map(0x3801, 0x3801).portr("DSW1"); /* Dip 2 */ + map(0x3808, 0x3808).nopr(); /* ? */ + map(0x380a, 0x380a).portr("IN1"); /* Player 2 + VBL */ + map(0x380b, 0x380b).portr("IN0"); /* Player 1 */ + map(0x3810, 0x3810).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x3818, 0x382f).w(this, FUNC(dec8_state::gondo_scroll_w)); + map(0x3830, 0x3830).w(this, FUNC(dec8_state::ghostb_bank_w)); /* Bank + NMI enable */ + map(0x3838, 0x3839).w(this, FUNC(dec8_state::dec8_i8751_w)); + map(0x383a, 0x383a).r(this, FUNC(dec8_state::i8751_h_r)); + map(0x383b, 0x383b).r(this, FUNC(dec8_state::i8751_l_r)); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::meikyuh_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x17ff).ram(); + map(0x1800, 0x1fff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2000, 0x27ff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w)); + map(0x2800, 0x2bff).ram(); // colscroll? mirror? + map(0x2c00, 0x2fff).rw("tilegen1", FUNC(deco_bac06_device::pf_rowscroll_8bit_r), FUNC(deco_bac06_device::pf_rowscroll_8bit_w)); + map(0x3000, 0x37ff).ram().share("spriteram"); + map(0x3800, 0x3800).portr("IN0"); /* Player 1 */ + map(0x3800, 0x3800).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x3801, 0x3801).portr("IN1"); /* Player 2 */ + map(0x3802, 0x3802).portr("IN2"); /* Player 3 */ + map(0x3803, 0x3803).portr("DSW0"); /* Start buttons + VBL */ + map(0x3820, 0x3820).portr("DSW1"); /* Dip */ + map(0x3820, 0x3827).w("tilegen1", FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x3830, 0x383f).rw("tilegen1", FUNC(deco_bac06_device::pf_control1_8bit_r), FUNC(deco_bac06_device::pf_control1_8bit_w)); + map(0x3840, 0x3840).r(this, FUNC(dec8_state::i8751_h_r)); + map(0x3840, 0x3840).w(this, FUNC(dec8_state::ghostb_bank_w)); + map(0x3860, 0x3860).r(this, FUNC(dec8_state::i8751_l_r)); + map(0x3860, 0x3861).w(this, FUNC(dec8_state::dec8_i8751_w)); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::csilver_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x1800, 0x1800).portr("IN1"); + map(0x1801, 0x1801).portr("IN0"); + map(0x1803, 0x1803).portr("IN2"); + map(0x1804, 0x1804).portr("DSW1"); /* Dip 2 */ + map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w)); + map(0x1805, 0x1805).portr("DSW0").w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* Dip 1, DMA */ + map(0x1807, 0x1807).w(this, FUNC(dec8_state::flip_screen_w)); + map(0x1808, 0x180b).w(this, FUNC(dec8_state::dec8_scroll2_w)); + map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x180d, 0x180d).w(this, FUNC(dec8_state::csilver_control_w)); + map(0x180e, 0x180f).w(this, FUNC(dec8_state::csilver_i8751_w)); + map(0x1c00, 0x1c00).r(this, FUNC(dec8_state::i8751_h_r)); + map(0x1e00, 0x1e00).r(this, FUNC(dec8_state::i8751_l_r)); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().share("share2"); + map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data"); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::csilver_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); + map(0x1000, 0x13ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x1400, 0x17ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x1803, 0x1803).portr("IN2"); + map(0x1804, 0x1804).portr("DSW1"); + map(0x1800, 0x1804).w(this, FUNC(dec8_state::shackled_int_w)); + map(0x1805, 0x1805).portr("DSW0").w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x180c, 0x180c).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().share("share2"); + map(0x3800, 0x3fff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)); + map(0x4000, 0xffff).rom(); +} + +void dec8_state::oscar_map(address_map &map) +{ + map(0x0000, 0x0eff).ram().share("share1"); + map(0x0f00, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().share("share2"); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2800, 0x2fff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w)); + map(0x3000, 0x37ff).ram().share("spriteram"); /* Sprites */ + map(0x3800, 0x3bff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x3c00, 0x3c00).portr("IN0"); + map(0x3c01, 0x3c01).portr("IN1"); + map(0x3c02, 0x3c02).portr("IN2"); /* VBL & coins */ + map(0x3c03, 0x3c03).portr("DSW0"); /* Dip 1 */ + map(0x3c04, 0x3c04).portr("DSW1"); + map(0x3c00, 0x3c07).w("tilegen1", FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x3c10, 0x3c1f).w("tilegen1", FUNC(deco_bac06_device::pf_control1_8bit_w)); + map(0x3c80, 0x3c80).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x3d00, 0x3d00).w(this, FUNC(dec8_state::dec8_bank_w)); /* BNKS */ + map(0x3d80, 0x3d80).w(this, FUNC(dec8_state::dec8_sound_w)); /* SOUN */ + map(0x3e00, 0x3e00).nopw(); /* COINCL */ + map(0x3e80, 0x3e83).w(this, FUNC(dec8_state::oscar_int_w)); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::oscar_sub_map(address_map &map) +{ + map(0x0000, 0x0eff).ram().share("share1"); + map(0x0f00, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().share("share2"); + map(0x3e80, 0x3e83).w(this, FUNC(dec8_state::oscar_int_w)); + map(0x4000, 0xffff).rom(); +} + +void dec8_state::srdarwin_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x0600, 0x07ff).ram().share("spriteram"); + map(0x0800, 0x0fff).ram().w(this, FUNC(dec8_state::srdarwin_videoram_w)).share("videoram"); + map(0x1000, 0x13ff).ram(); + map(0x1400, 0x17ff).rw(this, FUNC(dec8_state::dec8_bg_data_r), FUNC(dec8_state::dec8_bg_data_w)).share("bg_data"); + map(0x1800, 0x1801).w(this, FUNC(dec8_state::dec8_i8751_w)); + map(0x1802, 0x1802).w(this, FUNC(dec8_state::i8751_reset_w)); /* Maybe.. */ + map(0x1803, 0x1803).nopw(); /* NMI ack */ + map(0x1804, 0x1804).w(m_spriteram, FUNC(buffered_spriteram8_device::write)); /* DMA */ + map(0x1805, 0x1806).w(this, FUNC(dec8_state::srdarwin_control_w)); /* Scroll & Bank */ + map(0x2000, 0x2000).rw(this, FUNC(dec8_state::i8751_h_r), FUNC(dec8_state::dec8_sound_w)); /* Sound */ + map(0x2001, 0x2001).rw(this, FUNC(dec8_state::i8751_l_r), FUNC(dec8_state::flip_screen_w)); /* Flipscreen */ + map(0x2800, 0x288f).w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x3000, 0x308f).w(m_palette, FUNC(deco_rmc3_device::write8_ext)).share("palette_ext"); + map(0x3800, 0x3800).portr("DSW0"); /* Dip 1 */ + map(0x3801, 0x3801).portr("IN0"); /* Player 1 */ + map(0x3802, 0x3802).portr("IN1"); /* Player 2 (cocktail) + VBL */ + map(0x3803, 0x3803).portr("DSW1"); /* Dip 2 */ + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void dec8_state::cobra_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0fff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w)); + map(0x1000, 0x17ff).rw("tilegen2", FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w)); + map(0x1800, 0x1fff).ram(); + map(0x2000, 0x27ff).ram().w(this, FUNC(dec8_state::dec8_videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x31ff).ram().w(m_palette, FUNC(deco_rmc3_device::write8)).share("palette"); + map(0x3200, 0x37ff).writeonly(); /* Unused */ + map(0x3800, 0x3800).portr("IN0"); /* Player 1 */ + map(0x3801, 0x3801).portr("IN1"); /* Player 2 */ + map(0x3802, 0x3802).portr("DSW0"); /* Dip 1 */ + map(0x3803, 0x3803).portr("DSW1"); /* Dip 2 */ + map(0x3800, 0x3807).w("tilegen1", FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x3810, 0x381f).w("tilegen1", FUNC(deco_bac06_device::pf_control1_8bit_w)); + map(0x3a00, 0x3a00).portr("IN2"); /* VBL & coins */ + map(0x3a00, 0x3a07).w("tilegen2", FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x3a10, 0x3a1f).w("tilegen2", FUNC(deco_bac06_device::pf_control1_8bit_w)); + map(0x3c00, 0x3c00).w(this, FUNC(dec8_state::dec8_bank_w)); + map(0x3c02, 0x3c02).w(this, FUNC(dec8_state::dec8_mxc06_karn_buffer_spriteram_w)); /* DMA */ + map(0x3e00, 0x3e00).w(this, FUNC(dec8_state::dec8_sound_w)); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} /******************************************************************************/ /* Used for Cobra Command, Maze Hunter, Super Real Darwin etc */ -ADDRESS_MAP_START(dec8_state::dec8_s_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dec8_state::dec8_s_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x2000, 0x2001).w("ym1", FUNC(ym2203_device::write)); + map(0x4000, 0x4001).w("ym2", FUNC(ym3812_device::write)); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} /* Used by Gondomania, Psycho-Nics Oscar & Garyo Retsuden */ -ADDRESS_MAP_START(dec8_state::oscar_s_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym2", ym3526_device, write) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dec8_state::oscar_s_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x2000, 0x2001).w("ym1", FUNC(ym2203_device::write)); + map(0x4000, 0x4001).w("ym2", FUNC(ym3526_device::write)); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} /* Used by Last Mission, Shackled & Breywood */ -ADDRESS_MAP_START(dec8_state::ym3526_s_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3526_device, write) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dec8_state::ym3526_s_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3526_device::write)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} /* Captain Silver - same sound system as Pocket Gal */ -ADDRESS_MAP_START(dec8_state::csilver_s_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3526_device, write) - AM_RANGE(0x1800, 0x1800) AM_WRITE(csilver_adpcm_data_w) /* ADPCM data for the MSM5205 chip */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(csilver_sound_bank_w) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x3400, 0x3400) AM_READ(csilver_adpcm_reset_r) /* ? not sure */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dec8_state::csilver_s_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3526_device::write)); + map(0x1800, 0x1800).w(this, FUNC(dec8_state::csilver_adpcm_data_w)); /* ADPCM data for the MSM5205 chip */ + map(0x2000, 0x2000).w(this, FUNC(dec8_state::csilver_sound_bank_w)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x3400, 0x3400).r(this, FUNC(dec8_state::csilver_adpcm_reset_r)); /* ? not sure */ + map(0x4000, 0x7fff).bankr("soundbank"); + map(0x8000, 0xffff).rom(); +} /******************************************************************************/ diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp index 2b2711abc90..908102486bd 100644 --- a/src/mame/drivers/deco156.cpp +++ b/src/mame/drivers/deco156.cpp @@ -124,41 +124,43 @@ WRITE32_MEMBER(deco156_state::pf2_rowscroll_w){ data &= 0x0000ffff; mem_mask &= WRITE32_MEMBER(deco156_state::spriteram_w){ data &= 0x0000ffff; mem_mask &= 0x0000ffff; COMBINE_DATA(&m_spriteram[offset]); } -ADDRESS_MAP_START(deco156_state::hvysmsh_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x120000, 0x120003) AM_READ_PORT("INPUTS") - AM_RANGE(0x120000, 0x120003) AM_WRITENOP // Volume control in low byte - AM_RANGE(0x120004, 0x120007) AM_WRITE(hvysmsh_eeprom_w) - AM_RANGE(0x120008, 0x12000b) AM_WRITENOP // IRQ ack? - AM_RANGE(0x12000c, 0x12000f) AM_WRITE(hvysmsh_oki_0_bank_w) - AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x160000, 0x160003) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1a0000, 0x1a0fff) AM_READWRITE(pf1_rowscroll_r, pf1_rowscroll_w) - AM_RANGE(0x1a4000, 0x1a4fff) AM_READWRITE(pf2_rowscroll_r, pf2_rowscroll_w) - AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x1d0010, 0x1d002f) AM_READNOP // Check for DMA complete? - AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(spriteram_r, spriteram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(deco156_state::wcvol95_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x110000, 0x111fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x114000, 0x115fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x120000, 0x120fff) AM_READWRITE(pf1_rowscroll_r, pf1_rowscroll_w) - AM_RANGE(0x124000, 0x124fff) AM_READWRITE(pf2_rowscroll_r, pf2_rowscroll_w) - AM_RANGE(0x130000, 0x137fff) AM_RAM - AM_RANGE(0x140000, 0x140003) AM_READ_PORT("INPUTS") - AM_RANGE(0x150000, 0x150003) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x160000, 0x161fff) AM_READWRITE(spriteram_r, spriteram_w) - AM_RANGE(0x170000, 0x170003) AM_NOP // Irq ack? - AM_RANGE(0x180000, 0x180fff) AM_READONLY AM_DEVWRITE16("palette", palette_device, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x1a0000, 0x1a0007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x000000ff) -ADDRESS_MAP_END +void deco156_state::hvysmsh_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x107fff).ram(); + map(0x120000, 0x120003).portr("INPUTS"); + map(0x120000, 0x120003).nopw(); // Volume control in low byte + map(0x120004, 0x120007).w(this, FUNC(deco156_state::hvysmsh_eeprom_w)); + map(0x120008, 0x12000b).nopw(); // IRQ ack? + map(0x12000c, 0x12000f).w(this, FUNC(deco156_state::hvysmsh_oki_0_bank_w)); + map(0x140000, 0x140000).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x160000, 0x160000).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x180000, 0x18001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x190000, 0x191fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x194000, 0x195fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1a0000, 0x1a0fff).rw(this, FUNC(deco156_state::pf1_rowscroll_r), FUNC(deco156_state::pf1_rowscroll_w)); + map(0x1a4000, 0x1a4fff).rw(this, FUNC(deco156_state::pf2_rowscroll_r), FUNC(deco156_state::pf2_rowscroll_w)); + map(0x1c0000, 0x1c0fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x1d0010, 0x1d002f).nopr(); // Check for DMA complete? + map(0x1e0000, 0x1e1fff).rw(this, FUNC(deco156_state::spriteram_r), FUNC(deco156_state::spriteram_w)); +} + +void deco156_state::wcvol95_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x110000, 0x111fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x114000, 0x115fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x120000, 0x120fff).rw(this, FUNC(deco156_state::pf1_rowscroll_r), FUNC(deco156_state::pf1_rowscroll_w)); + map(0x124000, 0x124fff).rw(this, FUNC(deco156_state::pf2_rowscroll_r), FUNC(deco156_state::pf2_rowscroll_w)); + map(0x130000, 0x137fff).ram(); + map(0x140000, 0x140003).portr("INPUTS"); + map(0x150000, 0x150003).portw("EEPROMOUT"); + map(0x160000, 0x161fff).rw(this, FUNC(deco156_state::spriteram_r), FUNC(deco156_state::spriteram_w)); + map(0x170000, 0x170003).noprw(); // Irq ack? + map(0x180000, 0x180fff).readonly().w(m_palette, FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x1a0000, 0x1a0007).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x000000ff); +} /***************************************************************************/ diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index 63487755f80..e325f51e388 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -368,7 +368,6 @@ NOTE: There are several unpopulated locations (denoted by *) for additional rom #include "includes/deco32.h" #include "cpu/arm/arm.h" -#include "cpu/h6280/h6280.h" #include "cpu/m6809/m6809.h" #include "cpu/z80/z80.h" #include "machine/decocrpt.h" @@ -383,268 +382,277 @@ NOTE: There are several unpopulated locations (denoted by *) for additional rom // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(captaven_state::captaven_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100007) AM_READ(_71_r) - AM_RANGE(0x100000, 0x100003) AM_WRITE(buffer_spriteram_w<0>) - AM_RANGE(0x108000, 0x108003) AM_WRITENOP /* ? */ - AM_RANGE(0x110000, 0x111fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>) - AM_RANGE(0x120000, 0x127fff) AM_RAM /* Main RAM */ - AM_RANGE(0x128000, 0x12ffff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff) - AM_RANGE(0x130000, 0x131fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x148000, 0x14800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff) - AM_RANGE(0x160000, 0x167fff) AM_RAM /* Extra work RAM */ - AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_dsw1_r, 0x000000ff) - AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_dsw2_r, 0x0000ff00) - AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_dsw3_r, 0x00ff0000) - AM_RANGE(0x168000, 0x168003) AM_READ8(captaven_soundcpu_status_r, 0xff000000) - AM_RANGE(0x178000, 0x178003) AM_WRITE(pri_w) - AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x192000, 0x193fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) /* Mirror address - bug in program code */ - AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) // unused - AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") // unused -ADDRESS_MAP_END +void captaven_state::captaven_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100007).r(this, FUNC(captaven_state::_71_r)); + map(0x100000, 0x100003).w(this, FUNC(captaven_state::buffer_spriteram_w<0>)); + map(0x108000, 0x108003).nopw(); /* ? */ + map(0x110000, 0x111fff).rw(this, FUNC(captaven_state::spriteram_r<0>), FUNC(captaven_state::spriteram_w<0>)); + map(0x120000, 0x127fff).ram(); /* Main RAM */ + map(0x128000, 0x12ffff).rw(this, FUNC(captaven_state::ioprot_r), FUNC(captaven_state::ioprot_w)).umask32(0x0000ffff); + map(0x130000, 0x131fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x148000, 0x14800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff); + map(0x160000, 0x167fff).ram(); /* Extra work RAM */ + map(0x168000, 0x168000).r(this, FUNC(captaven_state::captaven_dsw1_r)); + map(0x168001, 0x168001).r(this, FUNC(captaven_state::captaven_dsw2_r)); + map(0x168002, 0x168002).r(this, FUNC(captaven_state::captaven_dsw3_r)); + map(0x168003, 0x168003).r(this, FUNC(captaven_state::captaven_soundcpu_status_r)); + map(0x178000, 0x178003).w(this, FUNC(captaven_state::pri_w)); + map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x190000, 0x191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x192000, 0x193fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); /* Mirror address - bug in program code */ + map(0x194000, 0x195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1a0000, 0x1a3fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x1a4000, 0x1a5fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x1c0000, 0x1c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1d0000, 0x1d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1d4000, 0x1d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused + map(0x1e0000, 0x1e3fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x1e4000, 0x1e5fff).ram().w(this, FUNC(captaven_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused +} -ADDRESS_MAP_START(fghthist_state::fghthist_map) - ADDRESS_MAP_UNMAP_HIGH +void fghthist_state::fghthist_map(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(pf1_data_w) // wtf?? - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x11ffff) AM_RAM - AM_RANGE(0x120020, 0x120023) AM_READ16(fghthist_in0_r, 0x0000ffff) - AM_RANGE(0x120024, 0x120027) AM_READ16(fghthist_in1_r, 0x0000ffff) - AM_RANGE(0x120028, 0x12002b) AM_READ8(eeprom_r, 0x000000ff) - AM_RANGE(0x12002c, 0x12002f) AM_WRITE8(eeprom_w, 0x000000ff) - AM_RANGE(0x12002c, 0x12002f) AM_WRITE8(volume_w, 0x0000ff00) - AM_RANGE(0x1201fc, 0x1201ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff) - AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) - AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w) - AM_RANGE(0x16c010, 0x16c013) AM_READ(unk_status_r) - AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>) - AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<0>) - AM_RANGE(0x17c020, 0x17c023) AM_READ(unk_status_r) - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") - AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits - AM_RANGE(0x208800, 0x208803) AM_WRITENOP /* ? */ -ADDRESS_MAP_END + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x11ffff).ram(); + map(0x120020, 0x120021).r(this, FUNC(fghthist_state::fghthist_in0_r)); + map(0x120024, 0x120025).r(this, FUNC(fghthist_state::fghthist_in1_r)); + map(0x120028, 0x120028).r(this, FUNC(fghthist_state::eeprom_r)); + map(0x12002c, 0x12002c).w(this, FUNC(fghthist_state::eeprom_w)); + map(0x12002d, 0x12002d).w(this, FUNC(fghthist_state::volume_w)); + map(0x1201fc, 0x1201fc).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x140000, 0x140003).w(this, FUNC(fghthist_state::vblank_ack_w)); + map(0x168000, 0x169fff).ram().w(this, FUNC(fghthist_state::buffered_palette_w)).share("paletteram"); + map(0x16c008, 0x16c00b).w(this, FUNC(fghthist_state::palette_dma_w)); + map(0x16c010, 0x16c013).r(this, FUNC(fghthist_state::unk_status_r)); + map(0x178000, 0x179fff).rw(this, FUNC(fghthist_state::spriteram_r<0>), FUNC(fghthist_state::spriteram_w<0>)); + map(0x17c010, 0x17c013).w(this, FUNC(fghthist_state::buffer_spriteram_w<0>)); + map(0x17c020, 0x17c023).r(this, FUNC(fghthist_state::unk_status_r)); + map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x192000, 0x193fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x194000, 0x195fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); + map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x200000, 0x207fff).rw(this, FUNC(fghthist_state::ioprot_r), FUNC(fghthist_state::ioprot_w)).umask32(0xffff0000).share("prot32ram"); // only maps on 16-bits + map(0x208800, 0x208803).nopw(); /* ? */ +} -ADDRESS_MAP_START(fghthist_state::fghthsta_memmap) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x11ffff) AM_RAM - AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) - AM_RANGE(0x150000, 0x150003) AM_WRITE8(eeprom_w, 0x000000ff) - AM_RANGE(0x150000, 0x150003) AM_WRITE8(volume_w, 0x0000ff00) - AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(palette_dma_w) - AM_RANGE(0x16c010, 0x16c013) AM_READ(unk_status_r) - AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>) - AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<0>) - AM_RANGE(0x17c020, 0x17c023) AM_READ(unk_status_r) - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") - AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) AM_SHARE("prot32ram") // only maps on 16-bits -ADDRESS_MAP_END +void fghthist_state::fghthsta_memmap(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x11ffff).ram(); + map(0x140000, 0x140003).w(this, FUNC(fghthist_state::vblank_ack_w)); + map(0x150000, 0x150000).w(this, FUNC(fghthist_state::eeprom_w)); + map(0x150001, 0x150001).w(this, FUNC(fghthist_state::volume_w)); + map(0x168000, 0x169fff).ram().w(this, FUNC(fghthist_state::buffered_palette_w)).share("paletteram"); + map(0x16c008, 0x16c00b).w(this, FUNC(fghthist_state::palette_dma_w)); + map(0x16c010, 0x16c013).r(this, FUNC(fghthist_state::unk_status_r)); + map(0x178000, 0x179fff).rw(this, FUNC(fghthist_state::spriteram_r<0>), FUNC(fghthist_state::spriteram_w<0>)); + map(0x17c010, 0x17c013).w(this, FUNC(fghthist_state::buffer_spriteram_w<0>)); + map(0x17c020, 0x17c023).r(this, FUNC(fghthist_state::unk_status_r)); + map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x192000, 0x193fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x194000, 0x195fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(fghthist_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); + map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x200000, 0x207fff).rw(this, FUNC(fghthist_state::ioprot_r), FUNC(fghthist_state::ioprot_w)).umask32(0xffff0000).share("prot32ram"); // only maps on 16-bits +} // the video drawing (especially sprite) code on this is too slow to cope with proper partial updates // raster effects appear to need some work on it anyway? -ADDRESS_MAP_START(dragngun_state::dragngun_map) - AM_RANGE(0x0000000, 0x00fffff) AM_ROM - AM_RANGE(0x0100000, 0x011ffff) AM_RAM - AM_RANGE(0x0120000, 0x0127fff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff) +void dragngun_state::dragngun_map(address_map &map) +{ + map(0x0000000, 0x00fffff).rom(); + map(0x0100000, 0x011ffff).ram(); + map(0x0120000, 0x0127fff).rw(this, FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff); // AM_RANGE(0x01204c0, 0x01204c3) AM_WRITE(sound_w) - AM_RANGE(0x0128000, 0x012800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff) - AM_RANGE(0x0130000, 0x0131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x0138000, 0x0138003) AM_NOP /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */ - AM_RANGE(0x0138008, 0x013800b) AM_WRITE(palette_dma_w) - AM_RANGE(0x0170100, 0x0170103) AM_WRITENOP - AM_RANGE(0x0170038, 0x017003b) AM_WRITENOP - AM_RANGE(0x017002C, 0x017002f) AM_WRITENOP - AM_RANGE(0x0170224, 0x0170227) AM_WRITENOP - AM_RANGE(0x0180000, 0x018001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x0190000, 0x0191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x0194000, 0x0195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x01a0000, 0x01a3fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x01a4000, 0x01a5fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x01c0000, 0x01c001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x01d0000, 0x01d1fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x01d4000, 0x01d5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) // unused - AM_RANGE(0x01e0000, 0x01e3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x01e4000, 0x01e5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") // unused - AM_RANGE(0x0204800, 0x0204fff) AM_RAM // ace? 0x10 byte increments only // 13f ff stuff - AM_RANGE(0x0208000, 0x0208fff) AM_RAM AM_SHARE("lay0") - AM_RANGE(0x020c000, 0x020cfff) AM_RAM AM_SHARE("lay1") - AM_RANGE(0x0210000, 0x0217fff) AM_RAM AM_SHARE("look0") - AM_RANGE(0x0218000, 0x021ffff) AM_RAM AM_SHARE("look1") - AM_RANGE(0x0220000, 0x0221fff) AM_RAM AM_SHARE("spriteram") /* Main spriteram */ - AM_RANGE(0x0228000, 0x02283ff) AM_RAM //0x10 byte increments only - AM_RANGE(0x0230000, 0x0230003) AM_WRITE(spriteram_dma_w) - AM_RANGE(0x0300000, 0x03fffff) AM_ROM - AM_RANGE(0x0400000, 0x0400003) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x0410000, 0x0410003) AM_WRITE(volume_w) - AM_RANGE(0x0418000, 0x0418003) AM_WRITE(speaker_switch_w) - AM_RANGE(0x0420000, 0x0420003) AM_READWRITE8(eeprom_r, eeprom_w, 0x000000ff) - AM_RANGE(0x0430000, 0x043001f) AM_WRITE(lightgun_w) - AM_RANGE(0x0438000, 0x0438003) AM_READ(lightgun_r) - AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("IN2") - AM_RANGE(0x0500000, 0x0500003) AM_WRITE(sprite_control_w) + map(0x0128000, 0x012800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff); + map(0x0130000, 0x0131fff).ram().w(this, FUNC(dragngun_state::buffered_palette_w)).share("paletteram"); + map(0x0138000, 0x0138003).noprw(); /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */ + map(0x0138008, 0x013800b).w(this, FUNC(dragngun_state::palette_dma_w)); + map(0x0170100, 0x0170103).nopw(); + map(0x0170038, 0x017003b).nopw(); + map(0x017002C, 0x017002f).nopw(); + map(0x0170224, 0x0170227).nopw(); + map(0x0180000, 0x018001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x0190000, 0x0191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x0194000, 0x0195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x01a0000, 0x01a3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x01a4000, 0x01a5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x01c0000, 0x01c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x01d0000, 0x01d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x01d4000, 0x01d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused + map(0x01e0000, 0x01e3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x01e4000, 0x01e5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused + map(0x0204800, 0x0204fff).ram(); // ace? 0x10 byte increments only // 13f ff stuff + map(0x0208000, 0x0208fff).ram().share("lay0"); + map(0x020c000, 0x020cfff).ram().share("lay1"); + map(0x0210000, 0x0217fff).ram().share("look0"); + map(0x0218000, 0x021ffff).ram().share("look1"); + map(0x0220000, 0x0221fff).ram().share("spriteram"); /* Main spriteram */ + map(0x0228000, 0x02283ff).ram(); //0x10 byte increments only + map(0x0230000, 0x0230003).w(this, FUNC(dragngun_state::spriteram_dma_w)); + map(0x0300000, 0x03fffff).rom(); + map(0x0400000, 0x0400000).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0410000, 0x0410003).w(this, FUNC(dragngun_state::volume_w)); + map(0x0418000, 0x0418003).w(this, FUNC(dragngun_state::speaker_switch_w)); + map(0x0420000, 0x0420000).rw(this, FUNC(dragngun_state::eeprom_r), FUNC(dragngun_state::eeprom_w)); + map(0x0430000, 0x043001f).w(this, FUNC(dragngun_state::lightgun_w)); + map(0x0438000, 0x0438003).r(this, FUNC(dragngun_state::lightgun_r)); + map(0x0440000, 0x0440003).portr("IN2"); + map(0x0500000, 0x0500003).w(this, FUNC(dragngun_state::sprite_control_w)); // this is clearly the dvi video related area - AM_RANGE(0x1000000, 0x1000007) AM_READ(unk_video_r) - AM_RANGE(0x1000100, 0x1007fff) AM_RAM - AM_RANGE(0x10b0000, 0x10b01ff) AM_RAM - AM_RANGE(0x1400000, 0x1ffffff) AM_ROM AM_REGION("dvi", 0x00000) // reads from here during boss battles when the videos should be displayed at the offsets where the DVI headers are // as a result it ends up writing what looks like pointers to the frame data in the ram area above -ADDRESS_MAP_END + map(0x1000000, 0x1000007).r(this, FUNC(dragngun_state::unk_video_r)); + map(0x1000100, 0x1007fff).ram(); + map(0x10b0000, 0x10b01ff).ram(); + map(0x1400000, 0x1ffffff).rom().region("dvi", 0x00000); // reads from here during boss battles when the videos should be displayed at the offsets where the DVI headers are // as a result it ends up writing what looks like pointers to the frame data in the ram area above +} -ADDRESS_MAP_START(dragngun_state::lockloadu_map) - AM_IMPORT_FROM(dragngun_map) - AM_RANGE(0x0170000, 0x0170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */ -ADDRESS_MAP_END +void dragngun_state::lockloadu_map(address_map &map) +{ + dragngun_map(map); + map(0x0170000, 0x0170007).r(this, FUNC(dragngun_state::lockload_gun_mirror_r)); /* Not on Dragongun */ +} -ADDRESS_MAP_START(dragngun_state::lockload_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x11ffff) AM_RAM - AM_RANGE(0x120000, 0x127fff) AM_READWRITE16(ioprot_r, ioprot_w, 0x0000ffff) - AM_RANGE(0x128000, 0x12800f) AM_DEVICE8("irq", deco_irq_device, map, 0x000000ff) - AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x138000, 0x138003) AM_READONLY AM_WRITENOP //palette dma complete in bit 0x8? ack? return 0 else tight loop - AM_RANGE(0x138008, 0x13800b) AM_WRITE(palette_dma_w) - AM_RANGE(0x170000, 0x170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */ - AM_RANGE(0x178008, 0x17800f) AM_WRITE(gun_irq_ack_w) /* Gun read ACK's */ - AM_RANGE(0x180000, 0x18001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x190000, 0x191fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x194000, 0x195fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) // unused - AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x1e4000, 0x1e5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") // unused - AM_RANGE(0x204800, 0x204fff) AM_RAM //0x10 byte increments only - AM_RANGE(0x208000, 0x208fff) AM_RAM AM_SHARE("lay0") - AM_RANGE(0x20c000, 0x20cfff) AM_RAM AM_SHARE("lay1") - AM_RANGE(0x210000, 0x217fff) AM_RAM AM_SHARE("look0") - AM_RANGE(0x218000, 0x21ffff) AM_RAM AM_SHARE("look1") - AM_RANGE(0x220000, 0x221fff) AM_RAM AM_SHARE("spriteram") /* Main spriteram */ - AM_RANGE(0x228000, 0x2283ff) AM_RAM //0x10 byte increments only - AM_RANGE(0x230000, 0x230003) AM_WRITE(spriteram_dma_w) - AM_RANGE(0x300000, 0x3fffff) AM_ROM - AM_RANGE(0x410000, 0x410003) AM_WRITE(volume_w) - AM_RANGE(0x420000, 0x420003) AM_READWRITE8(eeprom_r, eeprom_w, 0x000000ff) - AM_RANGE(0x440000, 0x440003) AM_READ_PORT("IN2") - AM_RANGE(0x500000, 0x500003) AM_WRITE(sprite_control_w) -ADDRESS_MAP_END +void dragngun_state::lockload_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x11ffff).ram(); + map(0x120000, 0x127fff).rw(this, FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff); + map(0x128000, 0x12800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff); + map(0x130000, 0x131fff).ram().w(this, FUNC(dragngun_state::buffered_palette_w)).share("paletteram"); + map(0x138000, 0x138003).readonly().nopw(); //palette dma complete in bit 0x8? ack? return 0 else tight loop + map(0x138008, 0x13800b).w(this, FUNC(dragngun_state::palette_dma_w)); + map(0x170000, 0x170007).r(this, FUNC(dragngun_state::lockload_gun_mirror_r)); /* Not on Dragongun */ + map(0x178008, 0x17800f).w(this, FUNC(dragngun_state::gun_irq_ack_w)); /* Gun read ACK's */ + map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x190000, 0x191fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x194000, 0x195fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1a0000, 0x1a3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x1a4000, 0x1a5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x1c0000, 0x1c001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1d0000, 0x1d1fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1d4000, 0x1d5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); // unused + map(0x1e0000, 0x1e3fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x1e4000, 0x1e5fff).ram().w(this, FUNC(dragngun_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); // unused + map(0x204800, 0x204fff).ram(); //0x10 byte increments only + map(0x208000, 0x208fff).ram().share("lay0"); + map(0x20c000, 0x20cfff).ram().share("lay1"); + map(0x210000, 0x217fff).ram().share("look0"); + map(0x218000, 0x21ffff).ram().share("look1"); + map(0x220000, 0x221fff).ram().share("spriteram"); /* Main spriteram */ + map(0x228000, 0x2283ff).ram(); //0x10 byte increments only + map(0x230000, 0x230003).w(this, FUNC(dragngun_state::spriteram_dma_w)); + map(0x300000, 0x3fffff).rom(); + map(0x410000, 0x410003).w(this, FUNC(dragngun_state::volume_w)); + map(0x420000, 0x420000).rw(this, FUNC(dragngun_state::eeprom_r), FUNC(dragngun_state::eeprom_w)); + map(0x440000, 0x440003).portr("IN2"); + map(0x500000, 0x500003).w(this, FUNC(dragngun_state::sprite_control_w)); +} -ADDRESS_MAP_START(nslasher_state::tattass_map) - AM_RANGE(0x000000, 0x0f7fff) AM_ROM - AM_RANGE(0x0f8000, 0x0fffff) AM_ROM AM_WRITENOP - AM_RANGE(0x100000, 0x11ffff) AM_RAM - AM_RANGE(0x120000, 0x120003) AM_NOP /* ACIA (unused) */ - AM_RANGE(0x130000, 0x130003) AM_WRITENOP /* Coin port (unused?) */ - AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) - AM_RANGE(0x150000, 0x150003) AM_WRITE(tattass_control_w) /* Volume port/Eprom/Priority */ - AM_RANGE(0x162000, 0x162fff) AM_RAM /* 'Jack' RAM!? */ - AM_RANGE(0x163000, 0x16309f) AM_DEVREADWRITE16("deco_ace", deco_ace_device, ace_r, ace_w, 0x0000ffff) /* 'Ace' RAM */ - AM_RANGE(0x164000, 0x164003) AM_WRITENOP /* Palette control BG2/3 ($1a constant) */ - AM_RANGE(0x164004, 0x164007) AM_WRITENOP /* Palette control Obj1 ($6 constant) */ - AM_RANGE(0x164008, 0x16400b) AM_WRITENOP /* Palette control Obj2 ($5 constant) */ - AM_RANGE(0x16400c, 0x16400f) AM_WRITENOP - AM_RANGE(0x168000, 0x169fff) AM_DEVREADWRITE("deco_ace", deco_ace_device, buffered_palette_r, buffered_palette_w) - AM_RANGE(0x16c000, 0x16c003) AM_WRITENOP - AM_RANGE(0x16c008, 0x16c00b) AM_DEVWRITE16("deco_ace", deco_ace_device, palette_dma_w, 0xffffffff) - AM_RANGE(0x170000, 0x171fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>) - AM_RANGE(0x174000, 0x174003) AM_WRITENOP /* Sprite DMA mode (2) */ - AM_RANGE(0x174010, 0x174013) AM_WRITE(buffer_spriteram_w<0>) - AM_RANGE(0x174018, 0x17401b) AM_WRITENOP /* Sprite 'CPU' (unused) */ - AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<1>, spriteram_w<1>) - AM_RANGE(0x17c000, 0x17c003) AM_WRITENOP /* Sprite DMA mode (2) */ - AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<1>) - AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */ - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") - AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) - AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff) -ADDRESS_MAP_END +void nslasher_state::tattass_map(address_map &map) +{ + map(0x000000, 0x0f7fff).rom(); + map(0x0f8000, 0x0fffff).rom().nopw(); + map(0x100000, 0x11ffff).ram(); + map(0x120000, 0x120003).noprw(); /* ACIA (unused) */ + map(0x130000, 0x130003).nopw(); /* Coin port (unused?) */ + map(0x140000, 0x140003).w(this, FUNC(nslasher_state::vblank_ack_w)); + map(0x150000, 0x150003).w(this, FUNC(nslasher_state::tattass_control_w)); /* Volume port/Eprom/Priority */ + map(0x162000, 0x162fff).ram(); /* 'Jack' RAM!? */ + map(0x163000, 0x16309f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)).umask32(0x0000ffff); /* 'Ace' RAM */ + map(0x164000, 0x164003).nopw(); /* Palette control BG2/3 ($1a constant) */ + map(0x164004, 0x164007).nopw(); /* Palette control Obj1 ($6 constant) */ + map(0x164008, 0x16400b).nopw(); /* Palette control Obj2 ($5 constant) */ + map(0x16400c, 0x16400f).nopw(); + map(0x168000, 0x169fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette_r), FUNC(deco_ace_device::buffered_palette_w)); + map(0x16c000, 0x16c003).nopw(); + map(0x16c008, 0x16c00b).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w)); + map(0x170000, 0x171fff).rw(this, FUNC(nslasher_state::spriteram_r<0>), FUNC(nslasher_state::spriteram_w<0>)); + map(0x174000, 0x174003).nopw(); /* Sprite DMA mode (2) */ + map(0x174010, 0x174013).w(this, FUNC(nslasher_state::buffer_spriteram_w<0>)); + map(0x174018, 0x17401b).nopw(); /* Sprite 'CPU' (unused) */ + map(0x178000, 0x179fff).rw(this, FUNC(nslasher_state::spriteram_r<1>), FUNC(nslasher_state::spriteram_w<1>)); + map(0x17c000, 0x17c003).nopw(); /* Sprite DMA mode (2) */ + map(0x17c010, 0x17c013).w(this, FUNC(nslasher_state::buffer_spriteram_w<1>)); + map(0x17c018, 0x17c01b).nopw(); /* Sprite 'CPU' (unused) */ + map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x192000, 0x193fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x194000, 0x195fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); + map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x200000, 0x207fff).rw(this, FUNC(nslasher_state::ioprot_r), FUNC(nslasher_state::ioprot_w)).umask32(0xffff0000); + map(0x200000, 0x207fff).r(this, FUNC(nslasher_state::nslasher_debug_r)).umask32(0x0000ffff); +} -ADDRESS_MAP_START(nslasher_state::nslasher_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x11ffff) AM_RAM - AM_RANGE(0x120000, 0x1200ff) AM_NOP /* ACIA (unused) */ - AM_RANGE(0x140000, 0x140003) AM_WRITE(vblank_ack_w) - AM_RANGE(0x150000, 0x150003) AM_WRITE8(eeprom_w, 0x000000ff) - AM_RANGE(0x150000, 0x150003) AM_WRITE8(volume_w, 0x0000ff00) - AM_RANGE(0x163000, 0x16309f) AM_DEVREADWRITE16("deco_ace", deco_ace_device, ace_r, ace_w, 0x0000ffff) /* 'Ace' RAM */ - AM_RANGE(0x164000, 0x164003) AM_WRITENOP /* Palette control BG2/3 ($1a constant) */ - AM_RANGE(0x164004, 0x164007) AM_WRITENOP /* Palette control Obj1 ($4 constant) */ - AM_RANGE(0x164008, 0x16400b) AM_WRITENOP /* Palette control Obj2 ($6 constant) */ - AM_RANGE(0x16400c, 0x16400f) AM_WRITENOP - AM_RANGE(0x168000, 0x169fff) AM_DEVREADWRITE("deco_ace", deco_ace_device, buffered_palette_r, buffered_palette_w) - AM_RANGE(0x16c000, 0x16c003) AM_WRITENOP - AM_RANGE(0x16c008, 0x16c00b) AM_DEVWRITE16("deco_ace", deco_ace_device, palette_dma_w, 0xffffffff) - AM_RANGE(0x170000, 0x171fff) AM_READWRITE(spriteram_r<0>, spriteram_w<0>) - AM_RANGE(0x174000, 0x174003) AM_WRITENOP /* Sprite DMA mode (2) */ - AM_RANGE(0x174010, 0x174013) AM_WRITE(buffer_spriteram_w<0>) - AM_RANGE(0x174018, 0x17401b) AM_WRITENOP /* Sprite 'CPU' (unused) */ - AM_RANGE(0x178000, 0x179fff) AM_READWRITE(spriteram_r<1>, spriteram_w<1>) - AM_RANGE(0x17c000, 0x17c003) AM_WRITENOP /* Sprite DMA mode (2) */ - AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram_w<1>) - AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */ - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x184000, 0x185fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x192000, 0x193fff) AM_RAM_WRITE(pf_rowscroll_w<0>) AM_SHARE("pf1_rowscroll32") - AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(pf_rowscroll_w<1>) AM_SHARE("pf2_rowscroll32") - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1c2000, 0x1c3fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1c4000, 0x1c5fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM_WRITE(pf_rowscroll_w<2>) AM_SHARE("pf3_rowscroll32") - AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(pf_rowscroll_w<3>) AM_SHARE("pf4_rowscroll32") - AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(ioprot_r, ioprot_w, 0xffff0000) - AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff) // seems to be debug switches / code activated by this? -ADDRESS_MAP_END +void nslasher_state::nslasher_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x11ffff).ram(); + map(0x120000, 0x1200ff).noprw(); /* ACIA (unused) */ + map(0x140000, 0x140003).w(this, FUNC(nslasher_state::vblank_ack_w)); + map(0x150000, 0x150000).w(this, FUNC(nslasher_state::eeprom_w)); + map(0x150001, 0x150001).w(this, FUNC(nslasher_state::volume_w)); + map(0x163000, 0x16309f).rw(m_deco_ace, FUNC(deco_ace_device::ace_r), FUNC(deco_ace_device::ace_w)).umask32(0x0000ffff); /* 'Ace' RAM */ + map(0x164000, 0x164003).nopw(); /* Palette control BG2/3 ($1a constant) */ + map(0x164004, 0x164007).nopw(); /* Palette control Obj1 ($4 constant) */ + map(0x164008, 0x16400b).nopw(); /* Palette control Obj2 ($6 constant) */ + map(0x16400c, 0x16400f).nopw(); + map(0x168000, 0x169fff).rw(m_deco_ace, FUNC(deco_ace_device::buffered_palette_r), FUNC(deco_ace_device::buffered_palette_w)); + map(0x16c000, 0x16c003).nopw(); + map(0x16c008, 0x16c00b).w(m_deco_ace, FUNC(deco_ace_device::palette_dma_w)); + map(0x170000, 0x171fff).rw(this, FUNC(nslasher_state::spriteram_r<0>), FUNC(nslasher_state::spriteram_w<0>)); + map(0x174000, 0x174003).nopw(); /* Sprite DMA mode (2) */ + map(0x174010, 0x174013).w(this, FUNC(nslasher_state::buffer_spriteram_w<0>)); + map(0x174018, 0x17401b).nopw(); /* Sprite 'CPU' (unused) */ + map(0x178000, 0x179fff).rw(this, FUNC(nslasher_state::spriteram_r<1>), FUNC(nslasher_state::spriteram_w<1>)); + map(0x17c000, 0x17c003).nopw(); /* Sprite DMA mode (2) */ + map(0x17c010, 0x17c013).w(this, FUNC(nslasher_state::buffer_spriteram_w<1>)); + map(0x17c018, 0x17c01b).nopw(); /* Sprite 'CPU' (unused) */ + map(0x182000, 0x183fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x184000, 0x185fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x192000, 0x193fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<0>)).share("pf1_rowscroll32"); + map(0x194000, 0x195fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<1>)).share("pf2_rowscroll32"); + map(0x1a0000, 0x1a001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1c2000, 0x1c3fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1c4000, 0x1c5fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1d2000, 0x1d3fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<2>)).share("pf3_rowscroll32"); + map(0x1d4000, 0x1d5fff).ram().w(this, FUNC(nslasher_state::pf_rowscroll_w<3>)).share("pf4_rowscroll32"); + map(0x1e0000, 0x1e001f).rw("tilegen2", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x200000, 0x207fff).rw(this, FUNC(nslasher_state::ioprot_r), FUNC(nslasher_state::ioprot_w)).umask32(0xffff0000); + map(0x200000, 0x207fff).r(this, FUNC(nslasher_state::nslasher_debug_r)).umask32(0x0000ffff); // seems to be debug switches / code activated by this? +} // H6280 based sound -ADDRESS_MAP_START(deco32_state::h6280_sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void deco32_state::h6280_sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x110000, 0x110001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).ram(); + map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); +} ADDRESS_MAP_START(deco32_state::h6280_sound_custom_latch_map) AM_IMPORT_FROM(h6280_sound_map) @@ -652,29 +660,32 @@ ADDRESS_MAP_START(deco32_state::h6280_sound_custom_latch_map) ADDRESS_MAP_END // Z80 based sound -ADDRESS_MAP_START(deco32_state::z80_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) -ADDRESS_MAP_END +void deco32_state::z80_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xb000, 0xb000).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc000, 0xc000).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xd000, 0xd000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); +} ADDRESS_MAP_START(deco32_state::z80_sound_io) AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) ADDRESS_MAP_END // lockload needs hi bits of OKI2 bankswitching -ADDRESS_MAP_START(dragngun_state::lockload_sound_map) - AM_IMPORT_FROM(z80_sound_map) - AM_RANGE(0xe000, 0xe000) AM_WRITE(lockload_okibank_hi_w) -ADDRESS_MAP_END +void dragngun_state::lockload_sound_map(address_map &map) +{ + z80_sound_map(map); + map(0xe000, 0xe000).w(this, FUNC(dragngun_state::lockload_okibank_hi_w)); +} -ADDRESS_MAP_START(dragngun_state::lockloadu_sound_map) - AM_IMPORT_FROM(h6280_sound_map) - AM_RANGE(0x150000, 0x150000) AM_WRITE(lockload_okibank_hi_w) -ADDRESS_MAP_END +void dragngun_state::lockloadu_sound_map(address_map &map) +{ + h6280_sound_map(map); + map(0x150000, 0x150000).w(this, FUNC(dragngun_state::lockload_okibank_hi_w)); +} //************************************************************************** diff --git a/src/mame/drivers/deco_ld.cpp b/src/mame/drivers/deco_ld.cpp index be9d7c495ac..d73d592e5f2 100644 --- a/src/mame/drivers/deco_ld.cpp +++ b/src/mame/drivers/deco_ld.cpp @@ -269,26 +269,27 @@ READ8_MEMBER(deco_ld_state::acia_status_hack_r) return 0xff; } -ADDRESS_MAP_START(deco_ld_state::rblaster_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN0") AM_WRITENOP // (w) coin lockout - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW1") - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("DSW2") - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN1") - AM_RANGE(0x1004, 0x1004) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(decold_sound_cmd_w) - AM_RANGE(0x1005, 0x1005) AM_READ(sound_status_r) +void deco_ld_state::rblaster_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1000).portr("IN0").nopw(); // (w) coin lockout + map(0x1001, 0x1001).portr("DSW1"); + map(0x1002, 0x1002).portr("DSW2"); + map(0x1003, 0x1003).portr("IN1"); + map(0x1004, 0x1004).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(this, FUNC(deco_ld_state::decold_sound_cmd_w)); + map(0x1005, 0x1005).r(this, FUNC(deco_ld_state::sound_status_r)); //AM_RANGE(0x1006, 0x1007) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0x1006, 0x1006) AM_READ(acia_status_hack_r) - AM_RANGE(0x1007, 0x1007) AM_DEVREADWRITE("laserdisc", sony_ldp1000_device, status_r, command_w) - AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("vram0") - AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("attr0") - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("vram1") - AM_RANGE(0x3c00, 0x3fff) AM_RAM AM_SHARE("attr1") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x1006, 0x1006).r(this, FUNC(deco_ld_state::acia_status_hack_r)); + map(0x1007, 0x1007).rw(m_laserdisc, FUNC(sony_ldp1000_device::status_r), FUNC(sony_ldp1000_device::command_w)); + map(0x1800, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2000, 0x27ff).ram(); + map(0x2800, 0x2bff).ram().share("vram0"); + map(0x2c00, 0x2fff).ram().share("attr0"); + map(0x3000, 0x37ff).ram(); + map(0x3800, 0x3bff).ram().share("vram1"); + map(0x3c00, 0x3fff).ram().share("attr1"); + map(0x4000, 0xffff).rom(); +} /* sound arrangement is pratically identical to Zero Target. */ @@ -306,15 +307,16 @@ INTERRUPT_GEN_MEMBER(deco_ld_state::sound_interrupt) } -ADDRESS_MAP_START(deco_ld_state::rblaster_sound_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void deco_ld_state::rblaster_sound_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x2000, 0x2000).w("ay1", FUNC(ay8910_device::data_w)); + map(0x4000, 0x4000).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::data_w)); + map(0x8000, 0x8000).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xe000, 0xffff).rom(); +} CUSTOM_INPUT_MEMBER( deco_ld_state::begas_vblank_r ) { diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp index 9ee88f3661d..e9fc98a4deb 100644 --- a/src/mame/drivers/deco_mlc.cpp +++ b/src/mame/drivers/deco_mlc.cpp @@ -295,50 +295,52 @@ WRITE16_MEMBER( deco_mlc_state::sh96_protection_region_0_146_w ) /******************************************************************************/ -ADDRESS_MAP_START(deco_mlc_state::avengrgs_map) - AM_RANGE(0x0000000, 0x00fffff) AM_ROM AM_MIRROR(0xff000000) - AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0xff000000) - AM_RANGE(0x0200000, 0x0200003) AM_READ(mlc_200000_r) AM_MIRROR(0xff000000) - AM_RANGE(0x0200004, 0x0200007) AM_READ(mlc_200004_r) AM_MIRROR(0xff000000) - AM_RANGE(0x0200070, 0x0200073) AM_READ(mlc_200070_r) AM_MIRROR(0xff000000) - AM_RANGE(0x0200074, 0x0200077) AM_READ(mlc_scanline_r) AM_MIRROR(0xff000000) - AM_RANGE(0x020007c, 0x020007f) AM_READ(mlc_20007c_r) AM_MIRROR(0xff000000) - AM_RANGE(0x0200000, 0x020007f) AM_WRITE(irq_ram_w) AM_SHARE("irq_ram") AM_MIRROR(0xff000000) - AM_RANGE(0x0200080, 0x02000ff) AM_RAM AM_SHARE("clip_ram") AM_MIRROR(0xff000000) - AM_RANGE(0x0204000, 0x0206fff) AM_READWRITE( spriteram_r, spriteram_w ) AM_MIRROR(0xff000000) - AM_RANGE(0x0280000, 0x029ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0xff000000) - AM_RANGE(0x0300000, 0x0307fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff).cswidth(32) AM_SHARE("palette") AM_MIRROR(0xff000000) - AM_RANGE(0x0400000, 0x0400003) AM_READ_PORT("INPUTS") AM_MIRROR(0xff000000) - AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("INPUTS2") AM_MIRROR(0xff000000) - AM_RANGE(0x0440004, 0x0440007) AM_READ_PORT("INPUTS3") AM_MIRROR(0xff000000) - AM_RANGE(0x0440008, 0x044000b) AM_READ(mlc_440008_r) AM_MIRROR(0xff000000) - AM_RANGE(0x044001c, 0x044001f) AM_READWRITE(mlc_44001c_r, mlc_44001c_w) AM_MIRROR(0xff000000) - AM_RANGE(0x0500000, 0x0500003) AM_WRITE(eeprom_w) AM_MIRROR(0xff000000) - AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff000000) AM_MIRROR(0xff000000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(deco_mlc_state::decomlc_map) - AM_RANGE(0x0000000, 0x00fffff) AM_ROM - AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0200000, 0x0200003) AM_READ(mlc_200000_r) - AM_RANGE(0x0200004, 0x0200007) AM_READ(mlc_200004_r) - AM_RANGE(0x0200070, 0x0200073) AM_READ(mlc_200070_r) - AM_RANGE(0x0200074, 0x0200077) AM_READ(mlc_scanline_r) - AM_RANGE(0x020007c, 0x020007f) AM_READ(mlc_20007c_r) - AM_RANGE(0x0200000, 0x020007f) AM_WRITE(irq_ram_w) AM_SHARE("irq_ram") - AM_RANGE(0x0200080, 0x02000ff) AM_RAM AM_SHARE("clip_ram") - AM_RANGE(0x0204000, 0x0206fff) AM_READWRITE( spriteram_r, spriteram_w ) - AM_RANGE(0x0280000, 0x029ffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x0300000, 0x0307fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff).cswidth(32) AM_SHARE("palette") - AM_RANGE(0x0400000, 0x0400003) AM_READ_PORT("INPUTS") - AM_RANGE(0x0440000, 0x0440003) AM_READ_PORT("INPUTS2") - AM_RANGE(0x0440004, 0x0440007) AM_READ_PORT("INPUTS3") - AM_RANGE(0x0440008, 0x044000b) AM_READ(mlc_440008_r) - AM_RANGE(0x044001c, 0x044001f) AM_READWRITE(mlc_44001c_r, mlc_44001c_w) - AM_RANGE(0x0500000, 0x0500003) AM_WRITE(eeprom_w) - AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff000000) - AM_RANGE(0x070f000, 0x070ffff) AM_READWRITE16(sh96_protection_region_0_146_r, sh96_protection_region_0_146_w, 0xffff0000) -ADDRESS_MAP_END +void deco_mlc_state::avengrgs_map(address_map &map) +{ + map(0x0000000, 0x00fffff).rom().mirror(0xff000000); + map(0x0100000, 0x011ffff).ram().share("mainram").mirror(0xff000000); + map(0x0200000, 0x0200003).r(this, FUNC(deco_mlc_state::mlc_200000_r)).mirror(0xff000000); + map(0x0200004, 0x0200007).r(this, FUNC(deco_mlc_state::mlc_200004_r)).mirror(0xff000000); + map(0x0200070, 0x0200073).r(this, FUNC(deco_mlc_state::mlc_200070_r)).mirror(0xff000000); + map(0x0200074, 0x0200077).r(this, FUNC(deco_mlc_state::mlc_scanline_r)).mirror(0xff000000); + map(0x020007c, 0x020007f).r(this, FUNC(deco_mlc_state::mlc_20007c_r)).mirror(0xff000000); + map(0x0200000, 0x020007f).w(this, FUNC(deco_mlc_state::irq_ram_w)).share("irq_ram").mirror(0xff000000); + map(0x0200080, 0x02000ff).ram().share("clip_ram").mirror(0xff000000); + map(0x0204000, 0x0206fff).rw(this, FUNC(deco_mlc_state::spriteram_r), FUNC(deco_mlc_state::spriteram_w)).mirror(0xff000000); + map(0x0280000, 0x029ffff).ram().share("vram").mirror(0xff000000); + map(0x0300000, 0x0307fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).cswidth(32).share("palette").mirror(0xff000000); + map(0x0400000, 0x0400003).portr("INPUTS").mirror(0xff000000); + map(0x0440000, 0x0440003).portr("INPUTS2").mirror(0xff000000); + map(0x0440004, 0x0440007).portr("INPUTS3").mirror(0xff000000); + map(0x0440008, 0x044000b).r(this, FUNC(deco_mlc_state::mlc_440008_r)).mirror(0xff000000); + map(0x044001c, 0x044001f).rw(this, FUNC(deco_mlc_state::mlc_44001c_r), FUNC(deco_mlc_state::mlc_44001c_w)).mirror(0xff000000); + map(0x0500000, 0x0500003).w(this, FUNC(deco_mlc_state::eeprom_w)).mirror(0xff000000); + map(0x0600000, 0x0600007).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0xff000000).mirror(0xff000000); +} + +void deco_mlc_state::decomlc_map(address_map &map) +{ + map(0x0000000, 0x00fffff).rom(); + map(0x0100000, 0x011ffff).ram().share("mainram"); + map(0x0200000, 0x0200003).r(this, FUNC(deco_mlc_state::mlc_200000_r)); + map(0x0200004, 0x0200007).r(this, FUNC(deco_mlc_state::mlc_200004_r)); + map(0x0200070, 0x0200073).r(this, FUNC(deco_mlc_state::mlc_200070_r)); + map(0x0200074, 0x0200077).r(this, FUNC(deco_mlc_state::mlc_scanline_r)); + map(0x020007c, 0x020007f).r(this, FUNC(deco_mlc_state::mlc_20007c_r)); + map(0x0200000, 0x020007f).w(this, FUNC(deco_mlc_state::irq_ram_w)).share("irq_ram"); + map(0x0200080, 0x02000ff).ram().share("clip_ram"); + map(0x0204000, 0x0206fff).rw(this, FUNC(deco_mlc_state::spriteram_r), FUNC(deco_mlc_state::spriteram_w)); + map(0x0280000, 0x029ffff).ram().share("vram"); + map(0x0300000, 0x0307fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).cswidth(32).share("palette"); + map(0x0400000, 0x0400003).portr("INPUTS"); + map(0x0440000, 0x0440003).portr("INPUTS2"); + map(0x0440004, 0x0440007).portr("INPUTS3"); + map(0x0440008, 0x044000b).r(this, FUNC(deco_mlc_state::mlc_440008_r)); + map(0x044001c, 0x044001f).rw(this, FUNC(deco_mlc_state::mlc_44001c_r), FUNC(deco_mlc_state::mlc_44001c_w)); + map(0x0500000, 0x0500003).w(this, FUNC(deco_mlc_state::eeprom_w)); + map(0x0600000, 0x0600007).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0xff000000); + map(0x070f000, 0x070ffff).rw(this, FUNC(deco_mlc_state::sh96_protection_region_0_146_r), FUNC(deco_mlc_state::sh96_protection_region_0_146_w)).umask32(0xffff0000); +} /******************************************************************************/ diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp index 0757326f443..ca76e6ffff4 100644 --- a/src/mame/drivers/decocass.cpp +++ b/src/mame/drivers/decocass.cpp @@ -80,59 +80,61 @@ READ8_MEMBER(decocass_state::mirrorcolorram_r) } -ADDRESS_MAP_START(decocass_state::decocass_map) - AM_RANGE(0x0000, 0x5fff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x6000, 0xbfff) AM_RAM_WRITE(decocass_charram_w) AM_SHARE("charram") /* still RMS3 RAM */ - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(decocass_fgvideoram_w) AM_SHARE("fgvideoram") /* DSP3 RAM */ - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(decocass_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc800, 0xcbff) AM_READWRITE(mirrorvideoram_r, mirrorvideoram_w) - AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(mirrorcolorram_r, mirrorcolorram_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(decocass_tileram_w) AM_SHARE("tileram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(decocass_objectram_w) AM_SHARE("objectram") - AM_RANGE(0xe000, 0xe0ff) AM_RAM_WRITE(decocass_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xe300, 0xe300) AM_READ_PORT("DSW1") AM_WRITE(decocass_watchdog_count_w) - AM_RANGE(0xe301, 0xe301) AM_READ_PORT("DSW2") AM_WRITE(decocass_watchdog_flip_w) - AM_RANGE(0xe302, 0xe302) AM_WRITE(decocass_color_missiles_w) - AM_RANGE(0xe400, 0xe400) AM_WRITE(decocass_reset_w) +void decocass_state::decocass_map(address_map &map) +{ + map(0x0000, 0x5fff).ram().share("rambase"); + map(0x6000, 0xbfff).ram().w(this, FUNC(decocass_state::decocass_charram_w)).share("charram"); /* still RMS3 RAM */ + map(0xc000, 0xc3ff).ram().w(this, FUNC(decocass_state::decocass_fgvideoram_w)).share("fgvideoram"); /* DSP3 RAM */ + map(0xc400, 0xc7ff).ram().w(this, FUNC(decocass_state::decocass_colorram_w)).share("colorram"); + map(0xc800, 0xcbff).rw(this, FUNC(decocass_state::mirrorvideoram_r), FUNC(decocass_state::mirrorvideoram_w)); + map(0xcc00, 0xcfff).rw(this, FUNC(decocass_state::mirrorcolorram_r), FUNC(decocass_state::mirrorcolorram_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(decocass_state::decocass_tileram_w)).share("tileram"); + map(0xd800, 0xdbff).ram().w(this, FUNC(decocass_state::decocass_objectram_w)).share("objectram"); + map(0xe000, 0xe0ff).ram().w(this, FUNC(decocass_state::decocass_paletteram_w)).share("paletteram"); + map(0xe300, 0xe300).portr("DSW1").w(this, FUNC(decocass_state::decocass_watchdog_count_w)); + map(0xe301, 0xe301).portr("DSW2").w(this, FUNC(decocass_state::decocass_watchdog_flip_w)); + map(0xe302, 0xe302).w(this, FUNC(decocass_state::decocass_color_missiles_w)); + map(0xe400, 0xe400).w(this, FUNC(decocass_state::decocass_reset_w)); /* BIO-3 board */ - AM_RANGE(0xe402, 0xe402) AM_WRITE(decocass_mode_set_w) /* scroll mode regs + various enable regs */ - AM_RANGE(0xe403, 0xe403) AM_WRITE(decocass_back_h_shift_w) /* back (both) tilemap x scroll */ - AM_RANGE(0xe404, 0xe404) AM_WRITE(decocass_back_vl_shift_w) /* back (left) (top@rot0) tilemap y scroll */ - AM_RANGE(0xe405, 0xe405) AM_WRITE(decocass_back_vr_shift_w) /* back (right) (bot@rot0) tilemap y scroll */ - AM_RANGE(0xe406, 0xe406) AM_WRITE(decocass_part_h_shift_w) /* headlight */ - AM_RANGE(0xe407, 0xe407) AM_WRITE(decocass_part_v_shift_w) /* headlight */ - - AM_RANGE(0xe410, 0xe410) AM_WRITE(decocass_color_center_bot_w) - AM_RANGE(0xe411, 0xe411) AM_WRITE(decocass_center_h_shift_space_w) - AM_RANGE(0xe412, 0xe412) AM_WRITE(decocass_center_v_shift_w) - AM_RANGE(0xe413, 0xe413) AM_WRITE(decocass_coin_counter_w) - AM_RANGE(0xe414, 0xe414) AM_READWRITE(decocass_sound_command_main_r, decocass_sound_command_w) - AM_RANGE(0xe415, 0xe416) AM_WRITE(decocass_quadrature_decoder_reset_w) - AM_RANGE(0xe417, 0xe417) AM_WRITE(decocass_nmi_reset_w) - AM_RANGE(0xe420, 0xe42f) AM_WRITE(decocass_adc_w) - - AM_RANGE(0xe500, 0xe5ff) AM_READWRITE(decocass_e5xx_r, decocass_e5xx_w) /* read data from 8041/status */ - - AM_RANGE(0xe600, 0xe6ff) AM_READ(decocass_input_r) /* inputs */ - AM_RANGE(0xe700, 0xe700) AM_READ(decocass_sound_data_r) /* read sound CPU data */ - AM_RANGE(0xe701, 0xe701) AM_READ(decocass_sound_ack_r) /* read sound CPU ack status */ - - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(decocass_state::decocass_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_READWRITE(decocass_sound_nmi_enable_r, decocass_sound_nmi_enable_w) - AM_RANGE(0x1800, 0x1fff) AM_READWRITE(decocass_sound_data_ack_reset_r, decocass_sound_data_ack_reset_w) - AM_RANGE(0x2000, 0x2fff) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x8000, 0x8fff) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa000, 0xafff) AM_READ(decocass_sound_command_r) - AM_RANGE(0xc000, 0xcfff) AM_WRITE(decocass_sound_data_w) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xe402, 0xe402).w(this, FUNC(decocass_state::decocass_mode_set_w)); /* scroll mode regs + various enable regs */ + map(0xe403, 0xe403).w(this, FUNC(decocass_state::decocass_back_h_shift_w)); /* back (both) tilemap x scroll */ + map(0xe404, 0xe404).w(this, FUNC(decocass_state::decocass_back_vl_shift_w)); /* back (left) (top@rot0) tilemap y scroll */ + map(0xe405, 0xe405).w(this, FUNC(decocass_state::decocass_back_vr_shift_w)); /* back (right) (bot@rot0) tilemap y scroll */ + map(0xe406, 0xe406).w(this, FUNC(decocass_state::decocass_part_h_shift_w)); /* headlight */ + map(0xe407, 0xe407).w(this, FUNC(decocass_state::decocass_part_v_shift_w)); /* headlight */ + + map(0xe410, 0xe410).w(this, FUNC(decocass_state::decocass_color_center_bot_w)); + map(0xe411, 0xe411).w(this, FUNC(decocass_state::decocass_center_h_shift_space_w)); + map(0xe412, 0xe412).w(this, FUNC(decocass_state::decocass_center_v_shift_w)); + map(0xe413, 0xe413).w(this, FUNC(decocass_state::decocass_coin_counter_w)); + map(0xe414, 0xe414).rw(this, FUNC(decocass_state::decocass_sound_command_main_r), FUNC(decocass_state::decocass_sound_command_w)); + map(0xe415, 0xe416).w(this, FUNC(decocass_state::decocass_quadrature_decoder_reset_w)); + map(0xe417, 0xe417).w(this, FUNC(decocass_state::decocass_nmi_reset_w)); + map(0xe420, 0xe42f).w(this, FUNC(decocass_state::decocass_adc_w)); + + map(0xe500, 0xe5ff).rw(this, FUNC(decocass_state::decocass_e5xx_r), FUNC(decocass_state::decocass_e5xx_w)); /* read data from 8041/status */ + + map(0xe600, 0xe6ff).r(this, FUNC(decocass_state::decocass_input_r)); /* inputs */ + map(0xe700, 0xe700).r(this, FUNC(decocass_state::decocass_sound_data_r)); /* read sound CPU data */ + map(0xe701, 0xe701).r(this, FUNC(decocass_state::decocass_sound_ack_r)); /* read sound CPU ack status */ + + map(0xf000, 0xffff).rom(); +} + +void decocass_state::decocass_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x17ff).rw(this, FUNC(decocass_state::decocass_sound_nmi_enable_r), FUNC(decocass_state::decocass_sound_nmi_enable_w)); + map(0x1800, 0x1fff).rw(this, FUNC(decocass_state::decocass_sound_data_ack_reset_r), FUNC(decocass_state::decocass_sound_data_ack_reset_w)); + map(0x2000, 0x2fff).w("ay1", FUNC(ay8910_device::data_w)); + map(0x4000, 0x4fff).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6fff).w("ay2", FUNC(ay8910_device::data_w)); + map(0x8000, 0x8fff).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa000, 0xafff).r(this, FUNC(decocass_state::decocass_sound_command_r)); + map(0xc000, 0xcfff).w(this, FUNC(decocass_state::decocass_sound_data_w)); + map(0xf800, 0xffff).rom(); +} static INPUT_PORTS_START( decocass ) diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp index 83b64f2fa5d..6339b5f8f11 100644 --- a/src/mame/drivers/dectalk.cpp +++ b/src/mame/drivers/dectalk.cpp @@ -792,29 +792,32 @@ a23 a22 a21 a20 a19 a18 a17 a16 a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 | | | | | */ -ADDRESS_MAP_START(dectalk_state::m68k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x740000) AM_ROM /* ROM */ - AM_RANGE(0x080000, 0x093fff) AM_MIRROR(0x760000) AM_RAM /* RAM */ - AM_RANGE(0x094000, 0x0943ff) AM_MIRROR(0x763c00) AM_WRITE8(led_write, 0x00ff) /* LED array */ - AM_RANGE(0x094000, 0x0941ff) AM_MIRROR(0x763c00) AM_DEVREADWRITE8("x2212", x2212_device, read, write, 0xff00) /* Xicor X2212 NVRAM */ - AM_RANGE(0x094200, 0x0943ff) AM_MIRROR(0x763c00) AM_READWRITE8(nvram_recall, nvram_store, 0xff00) /* Xicor X2212 NVRAM */ - AM_RANGE(0x098000, 0x09801f) AM_MIRROR(0x763fe0) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0x00ff ) /* DUART */ - AM_RANGE(0x09c000, 0x09c001) AM_MIRROR(0x763ff8) AM_READWRITE(m68k_spcflags_r, m68k_spcflags_w) /* SPC flags reg */ - AM_RANGE(0x09c002, 0x09c003) AM_MIRROR(0x763ff8) AM_WRITE(m68k_infifo_w) /* SPC fifo reg */ - AM_RANGE(0x09c004, 0x09c005) AM_MIRROR(0x763ff8) AM_READWRITE(m68k_tlcflags_r, m68k_tlcflags_w) /* telephone status flags */ - AM_RANGE(0x09c006, 0x09c007) AM_MIRROR(0x763ff8) AM_READ(m68k_tlc_dtmf_r) /* telephone dtmf read */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(dectalk_state::tms32010_mem) - AM_RANGE(0x000, 0x7ff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(dectalk_state::tms32010_io) - AM_RANGE(0, 0) AM_WRITE(spc_latch_outfifo_error_stats) // *set* the outfifo_status_r semaphore, and also latch the error bit at D0. - AM_RANGE(1, 1) AM_READWRITE(spc_infifo_data_r, spc_outfifo_data_w) //read from input fifo, write to sound fifo +void dectalk_state::m68k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).mirror(0x740000).rom(); /* ROM */ + map(0x080000, 0x093fff).mirror(0x760000).ram(); /* RAM */ + map(0x094000, 0x0943ff).mirror(0x763c00).w(this, FUNC(dectalk_state::led_write)).umask16(0x00ff); /* LED array */ + map(0x094000, 0x0941ff).mirror(0x763c00).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0xff00); /* Xicor X2212 NVRAM */ + map(0x094200, 0x0943ff).mirror(0x763c00).rw(this, FUNC(dectalk_state::nvram_recall), FUNC(dectalk_state::nvram_store)).umask16(0xff00); /* Xicor X2212 NVRAM */ + map(0x098000, 0x09801f).mirror(0x763fe0).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); /* DUART */ + map(0x09c000, 0x09c001).mirror(0x763ff8).rw(this, FUNC(dectalk_state::m68k_spcflags_r), FUNC(dectalk_state::m68k_spcflags_w)); /* SPC flags reg */ + map(0x09c002, 0x09c003).mirror(0x763ff8).w(this, FUNC(dectalk_state::m68k_infifo_w)); /* SPC fifo reg */ + map(0x09c004, 0x09c005).mirror(0x763ff8).rw(this, FUNC(dectalk_state::m68k_tlcflags_r), FUNC(dectalk_state::m68k_tlcflags_w)); /* telephone status flags */ + map(0x09c006, 0x09c007).mirror(0x763ff8).r(this, FUNC(dectalk_state::m68k_tlc_dtmf_r)); /* telephone dtmf read */ +} + +void dectalk_state::tms32010_mem(address_map &map) +{ + map(0x000, 0x7ff).rom(); /* ROM */ +} + +void dectalk_state::tms32010_io(address_map &map) +{ + map(0, 0).w(this, FUNC(dectalk_state::spc_latch_outfifo_error_stats)); // *set* the outfifo_status_r semaphore, and also latch the error bit at D0. + map(1, 1).rw(this, FUNC(dectalk_state::spc_infifo_data_r), FUNC(dectalk_state::spc_outfifo_data_w)); //read from input fifo, write to sound fifo //AM_RANGE(8, 8) //the newer firmware seems to want something mapped here? -ADDRESS_MAP_END +} /****************************************************************************** Input Ports diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp index da2c32c1935..1dc8b4e2051 100644 --- a/src/mame/drivers/decwritr.cpp +++ b/src/mame/drivers/decwritr.cpp @@ -225,16 +225,17 @@ WRITE8_MEMBER( decwriter_state::la120_DC305_w ) 0 1 1 1 x x x x x x x x x x * * RW PTR (DC305 ASIC,e25) 1 * * * * * * * * * * * * * * * Expansion space (open bus) */ -ADDRESS_MAP_START(decwriter_state::la120_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x27ff ) AM_ROM - AM_RANGE( 0x3000, 0x301f ) AM_READWRITE(la120_KBD_r, la120_LED_w) AM_MIRROR(0xFE0) // keyboard read, write to status and 7seg LEDS - AM_RANGE( 0x4000, 0x43ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'low ram' - AM_RANGE( 0x5000, 0x53ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'high ram' - AM_RANGE( 0x6000, 0x67ff ) /*AM_MIRROR(0x08fe)*/AM_MIRROR(0x800) AM_READWRITE(la120_NVR_r, la120_NVR_w) // ER1400 EAROM; a10,9,8 are c3,2,1, a0 is clk, data i/o on d7, d0 always reads as 0 (there may have once been a second er1400 with data i/o on d0, sharing same address controls as the d7 one, not populated on shipping boards), d1-d6 read open bus - AM_RANGE( 0x7000, 0x7003 ) AM_MIRROR(0x0ffc) AM_READWRITE(la120_DC305_r, la120_DC305_w) // DC305 printer controller ASIC stuff; since this can generate interrupts (dot interrupt, lf interrupt, 2.5ms interrupt) this needs to be split to its own device. +void decwriter_state::la120_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x27ff).rom(); + map(0x3000, 0x301f).rw(this, FUNC(decwriter_state::la120_KBD_r), FUNC(decwriter_state::la120_LED_w)).mirror(0xFE0); // keyboard read, write to status and 7seg LEDS + map(0x4000, 0x43ff).mirror(0x0c00).ram(); // 1k 'low ram' + map(0x5000, 0x53ff).mirror(0x0c00).ram(); // 1k 'high ram' + map(0x6000, 0x67ff) /*.mirror(0x08fe)*/ .mirror(0x800).rw(this, FUNC(decwriter_state::la120_NVR_r), FUNC(decwriter_state::la120_NVR_w)); // ER1400 EAROM; a10,9,8 are c3,2,1, a0 is clk, data i/o on d7, d0 always reads as 0 (there may have once been a second er1400 with data i/o on d0, sharing same address controls as the d7 one, not populated on shipping boards), d1-d6 read open bus + map(0x7000, 0x7003).mirror(0x0ffc).rw(this, FUNC(decwriter_state::la120_DC305_r), FUNC(decwriter_state::la120_DC305_w)); // DC305 printer controller ASIC stuff; since this can generate interrupts (dot interrupt, lf interrupt, 2.5ms interrupt) this needs to be split to its own device. // 8000-ffff is reserved for expansion (i.e. unused, open bus) -ADDRESS_MAP_END +} /* * 8080 IO address map (x = ignored; * = selects address within this range) @@ -245,14 +246,15 @@ ADDRESS_MAP_END 0 x x x x x 1 x RW Flags Read/Write 1 x x x x x x x RW Expansion (Open bus) */ -ADDRESS_MAP_START(decwriter_state::la120_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) // 8251 Data - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) // 8251 Status/Control - //AM_RANGE(0x02, 0x02) AM_MIRROR(0x7D) // other io ports, serial loopback etc, see table 4-9 in TM +void decwriter_state::la120_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).mirror(0x7C).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); // 8251 Data + map(0x01, 0x01).mirror(0x7C).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 8251 Status/Control + //map(0x02, 0x02).mirror(0x7D); // other io ports, serial loopback etc, see table 4-9 in TM // 0x80-0xff are reserved for expansion (i.e. unused, open bus) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END + map.global_mask(0xff); +} /* Input ports */ static INPUT_PORTS_START( la120 ) diff --git a/src/mame/drivers/deniam.cpp b/src/mame/drivers/deniam.cpp index 3e2d152cd8c..1179d5ac987 100644 --- a/src/mame/drivers/deniam.cpp +++ b/src/mame/drivers/deniam.cpp @@ -73,55 +73,59 @@ WRITE16_MEMBER(deniam_state::deniam_irq_ack_w) m_maincpu->set_input_line(4, CLEAR_LINE); } -ADDRESS_MAP_START(deniam_state::deniam16b_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w) - AM_RANGE(0xc40004, 0xc40005) AM_WRITE(deniam_irq_ack_w) - AM_RANGE(0xc44000, 0xc44001) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1") - AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") AM_WRITENOP - AM_RANGE(0xc44006, 0xc44007) AM_READNOP /* unused? */ - AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(deniam_state::sound_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(deniam_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x07, 0x07) AM_WRITE(deniam16b_oki_rom_bank_w) -ADDRESS_MAP_END +void deniam_state::deniam16b_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(deniam_state::deniam_videoram_w)).share("videoram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(deniam_state::deniam_textram_w)).share("textram"); + map(0x440000, 0x4407ff).writeonly().share("spriteram"); + map(0x840000, 0x840fff).w(this, FUNC(deniam_state::deniam_palette_w)).share("paletteram"); + map(0xc40000, 0xc40000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc40002, 0xc40003).rw(this, FUNC(deniam_state::deniam_coinctrl_r), FUNC(deniam_state::deniam_coinctrl_w)); + map(0xc40004, 0xc40005).w(this, FUNC(deniam_state::deniam_irq_ack_w)); + map(0xc44000, 0xc44001).portr("SYSTEM"); + map(0xc44002, 0xc44003).portr("P1"); + map(0xc44004, 0xc44005).portr("P2").nopw(); + map(0xc44006, 0xc44007).nopr(); /* unused? */ + map(0xc4400a, 0xc4400b).portr("DSW"); + map(0xff0000, 0xffffff).ram(); +} + +void deniam_state::sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void deniam_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x02, 0x03).w("ymsnd", FUNC(ym3812_device::write)); + map(0x05, 0x05).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x07, 0x07).w(this, FUNC(deniam_state::deniam16b_oki_rom_bank_w)); +} /* identical to 16b, but handles sound directly */ -ADDRESS_MAP_START(deniam_state::deniam16c_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w) - AM_RANGE(0xc40004, 0xc40005) AM_WRITE(deniam_irq_ack_w) - AM_RANGE(0xc40006, 0xc40007) AM_WRITE(deniam16c_oki_rom_bank_w) - AM_RANGE(0xc44000, 0xc44001) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1") - AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") - AM_RANGE(0xc44006, 0xc44007) AM_READNOP /* read unused? extra input port/dipswitches? */ - AM_RANGE(0xc40008, 0xc4000b) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0xff00) - AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW") /* probably YM3812 input port */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void deniam_state::deniam16c_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(deniam_state::deniam_videoram_w)).share("videoram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(deniam_state::deniam_textram_w)).share("textram"); + map(0x440000, 0x4407ff).writeonly().share("spriteram"); + map(0x840000, 0x840fff).w(this, FUNC(deniam_state::deniam_palette_w)).share("paletteram"); + map(0xc40001, 0xc40001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc40002, 0xc40003).rw(this, FUNC(deniam_state::deniam_coinctrl_r), FUNC(deniam_state::deniam_coinctrl_w)); + map(0xc40004, 0xc40005).w(this, FUNC(deniam_state::deniam_irq_ack_w)); + map(0xc40006, 0xc40007).w(this, FUNC(deniam_state::deniam16c_oki_rom_bank_w)); + map(0xc44000, 0xc44001).portr("SYSTEM"); + map(0xc44002, 0xc44003).portr("P1"); + map(0xc44004, 0xc44005).portr("P2"); + map(0xc44006, 0xc44007).nopr(); /* read unused? extra input port/dipswitches? */ + map(0xc40008, 0xc4000b).w("ymsnd", FUNC(ym3812_device::write)).umask16(0xff00); + map(0xc4400a, 0xc4400b).portr("DSW"); /* probably YM3812 input port */ + map(0xff0000, 0xffffff).ram(); +} diff --git a/src/mame/drivers/deshoros.cpp b/src/mame/drivers/deshoros.cpp index 0daa0756d64..d1f41acdb92 100644 --- a/src/mame/drivers/deshoros.cpp +++ b/src/mame/drivers/deshoros.cpp @@ -170,23 +170,24 @@ WRITE8_MEMBER(destiny_state::sound_w) m_beeper->set_state(~offset & 1); } -ADDRESS_MAP_START(destiny_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_READWRITE(printer_status_r, firq_ack_w) - AM_RANGE(0x9001, 0x9001) AM_READ_PORT("SYSTEM") AM_WRITE(nmi_ack_w) - AM_RANGE(0x9002, 0x9002) AM_READWRITE(display_ready_r, display_w) - AM_RANGE(0x9003, 0x9003) AM_READ_PORT("KEY1") - AM_RANGE(0x9004, 0x9004) AM_READ_PORT("KEY2") - AM_RANGE(0x9005, 0x9005) AM_READ_PORT("DIPSW") AM_WRITE(out_w) +void destiny_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).bankr("bank1"); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).rw(this, FUNC(destiny_state::printer_status_r), FUNC(destiny_state::firq_ack_w)); + map(0x9001, 0x9001).portr("SYSTEM").w(this, FUNC(destiny_state::nmi_ack_w)); + map(0x9002, 0x9002).rw(this, FUNC(destiny_state::display_ready_r), FUNC(destiny_state::display_w)); + map(0x9003, 0x9003).portr("KEY1"); + map(0x9004, 0x9004).portr("KEY2"); + map(0x9005, 0x9005).portr("DIPSW").w(this, FUNC(destiny_state::out_w)); // AM_RANGE(0x9006, 0x9006) AM_NOP // printer motor on // AM_RANGE(0x9007, 0x9007) AM_NOP // printer data - AM_RANGE(0x900a, 0x900b) AM_WRITE(sound_w) - AM_RANGE(0x900c, 0x900c) AM_WRITE(bank_select_w) + map(0x900a, 0x900b).w(this, FUNC(destiny_state::sound_w)); + map(0x900c, 0x900c).w(this, FUNC(destiny_state::bank_select_w)); // AM_RANGE(0x900d, 0x900d) AM_NOP // printer motor off // AM_RANGE(0x900e, 0x900e) AM_NOP // printer motor jam reset - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xc000, 0xffff).rom(); +} diff --git a/src/mame/drivers/destroyr.cpp b/src/mame/drivers/destroyr.cpp index f372cd7f8d9..b2ece1255ac 100644 --- a/src/mame/drivers/destroyr.cpp +++ b/src/mame/drivers/destroyr.cpp @@ -290,21 +290,22 @@ READ8_MEMBER(destroyr_state::scanline_r) } -ADDRESS_MAP_START(destroyr_state::destroyr_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0xf00) AM_RAM - AM_RANGE(0x1000, 0x1001) AM_MIRROR(0xffe) AM_READ(input_r) - AM_RANGE(0x1000, 0x1007) AM_MIRROR(0xff0) AM_DEVWRITE("outlatch", f9334_device, write_d0) - AM_RANGE(0x1008, 0x1008) AM_MIRROR(0xff7) AM_WRITE(misc_w) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0xfff) AM_READ_PORT("IN2") - AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0xf00) AM_WRITEONLY AM_SHARE("alpha_nuram") - AM_RANGE(0x4000, 0x401f) AM_MIRROR(0xfe0) AM_WRITEONLY AM_SHARE("major_obj_ram") - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(cursor_load_w) - AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(interrupt_ack_w) - AM_RANGE(0x5002, 0x5007) AM_MIRROR(0xff8) AM_WRITEONLY AM_SHARE("minor_obj_ram") - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0xfff) AM_READ(scanline_r) - AM_RANGE(0x7000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void destroyr_state::destroyr_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).mirror(0xf00).ram(); + map(0x1000, 0x1001).mirror(0xffe).r(this, FUNC(destroyr_state::input_r)); + map(0x1000, 0x1007).mirror(0xff0).w("outlatch", FUNC(f9334_device::write_d0)); + map(0x1008, 0x1008).mirror(0xff7).w(this, FUNC(destroyr_state::misc_w)); + map(0x2000, 0x2000).mirror(0xfff).portr("IN2"); + map(0x3000, 0x30ff).mirror(0xf00).writeonly().share("alpha_nuram"); + map(0x4000, 0x401f).mirror(0xfe0).writeonly().share("major_obj_ram"); + map(0x5000, 0x5000).mirror(0xff8).w(this, FUNC(destroyr_state::cursor_load_w)); + map(0x5001, 0x5001).mirror(0xff8).w(this, FUNC(destroyr_state::interrupt_ack_w)); + map(0x5002, 0x5007).mirror(0xff8).writeonly().share("minor_obj_ram"); + map(0x6000, 0x6000).mirror(0xfff).r(this, FUNC(destroyr_state::scanline_r)); + map(0x7000, 0x7fff).rom(); +} static INPUT_PORTS_START( destroyr ) diff --git a/src/mame/drivers/dfruit.cpp b/src/mame/drivers/dfruit.cpp index 7980e851d7d..4c557c18291 100644 --- a/src/mame/drivers/dfruit.cpp +++ b/src/mame/drivers/dfruit.cpp @@ -164,31 +164,33 @@ WRITE8_MEMBER(dfruit_state::dfruit_ram_1_w) { ram_bank_w(offset, data, 1); } WRITE8_MEMBER(dfruit_state::dfruit_ram_2_w) { ram_bank_w(offset, data, 2); } WRITE8_MEMBER(dfruit_state::dfruit_ram_3_w) { ram_bank_w(offset, data, 3); } -ADDRESS_MAP_START(dfruit_state::tc0091lvc_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_READ(dfruit_rom_r) - - AM_RANGE(0x8000, 0x9fff) AM_RAM - - AM_RANGE(0xc000, 0xcfff) AM_READWRITE(dfruit_ram_0_r,dfruit_ram_0_w) - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(dfruit_ram_1_r,dfruit_ram_1_w) - AM_RANGE(0xe000, 0xefff) AM_READWRITE(dfruit_ram_2_r,dfruit_ram_2_w) - AM_RANGE(0xf000, 0xfdff) AM_READWRITE(dfruit_ram_3_r,dfruit_ram_3_w) - - AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("tc0091lvc", tc0091lvc_device, vregs_r, vregs_w) - AM_RANGE(0xff00, 0xff02) AM_READWRITE(dfruit_irq_vector_r, dfruit_irq_vector_w) - AM_RANGE(0xff03, 0xff03) AM_READWRITE(dfruit_irq_enable_r, dfruit_irq_enable_w) - AM_RANGE(0xff04, 0xff07) AM_READWRITE(dfruit_ram_bank_r, dfruit_ram_bank_w) - AM_RANGE(0xff08, 0xff08) AM_READWRITE(dfruit_rom_bank_r, dfruit_rom_bank_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dfruit_state::dfruit_map) - AM_IMPORT_FROM(tc0091lvc_map) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa004, 0xa005) AM_DEVREADWRITE("opn", ym2203_device, read, write) - AM_RANGE(0xa008, 0xa008) AM_READNOP //watchdog -ADDRESS_MAP_END +void dfruit_state::tc0091lvc_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).r(this, FUNC(dfruit_state::dfruit_rom_r)); + + map(0x8000, 0x9fff).ram(); + + map(0xc000, 0xcfff).rw(this, FUNC(dfruit_state::dfruit_ram_0_r), FUNC(dfruit_state::dfruit_ram_0_w)); + map(0xd000, 0xdfff).rw(this, FUNC(dfruit_state::dfruit_ram_1_r), FUNC(dfruit_state::dfruit_ram_1_w)); + map(0xe000, 0xefff).rw(this, FUNC(dfruit_state::dfruit_ram_2_r), FUNC(dfruit_state::dfruit_ram_2_w)); + map(0xf000, 0xfdff).rw(this, FUNC(dfruit_state::dfruit_ram_3_r), FUNC(dfruit_state::dfruit_ram_3_w)); + + map(0xfe00, 0xfeff).rw(m_vdp, FUNC(tc0091lvc_device::vregs_r), FUNC(tc0091lvc_device::vregs_w)); + map(0xff00, 0xff02).rw(this, FUNC(dfruit_state::dfruit_irq_vector_r), FUNC(dfruit_state::dfruit_irq_vector_w)); + map(0xff03, 0xff03).rw(this, FUNC(dfruit_state::dfruit_irq_enable_r), FUNC(dfruit_state::dfruit_irq_enable_w)); + map(0xff04, 0xff07).rw(this, FUNC(dfruit_state::dfruit_ram_bank_r), FUNC(dfruit_state::dfruit_ram_bank_w)); + map(0xff08, 0xff08).rw(this, FUNC(dfruit_state::dfruit_rom_bank_r), FUNC(dfruit_state::dfruit_rom_bank_w)); +} + + +void dfruit_state::dfruit_map(address_map &map) +{ + tc0091lvc_map(map); + map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa004, 0xa005).rw("opn", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa008, 0xa008).nopr(); //watchdog +} static INPUT_PORTS_START( dfruit ) diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp index 9da42091534..620f5212dcb 100644 --- a/src/mame/drivers/dgn_beta.cpp +++ b/src/mame/drivers/dgn_beta.cpp @@ -140,40 +140,41 @@ static const unsigned char dgnbeta_palette[] = */ -ADDRESS_MAP_START(dgn_beta_state::dgnbeta_map) - AM_RANGE(0x0000, 0x0FFF) AM_RAMBANK("bank1") - AM_RANGE(0x1000, 0x1FFF) AM_RAMBANK("bank2") - AM_RANGE(0x2000, 0x2FFF) AM_RAMBANK("bank3") - AM_RANGE(0x3000, 0x3FFF) AM_RAMBANK("bank4") - AM_RANGE(0x4000, 0x4FFF) AM_RAMBANK("bank5") - AM_RANGE(0x5000, 0x5FFF) AM_RAMBANK("bank6") - AM_RANGE(0x6000, 0x6FFF) AM_RAMBANK("bank7") AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7FFF) AM_RAMBANK("bank8") - AM_RANGE(0x8000, 0x8FFF) AM_RAMBANK("bank9") - AM_RANGE(0x9000, 0x9FFF) AM_RAMBANK("bank10") - AM_RANGE(0xA000, 0xAFFF) AM_RAMBANK("bank11") - AM_RANGE(0xB000, 0xBFFF) AM_RAMBANK("bank12") - AM_RANGE(0xC000, 0xCFFF) AM_RAMBANK("bank13") - AM_RANGE(0xD000, 0xDFFF) AM_RAMBANK("bank14") - AM_RANGE(0xE000, 0xEFFF) AM_RAMBANK("bank15") - AM_RANGE(0xF000, 0xFBFF) AM_RAMBANK("bank16") - AM_RANGE(0xfC00, 0xfC1F) AM_NOP - AM_RANGE(0xFC20, 0xFC23) AM_DEVREADWRITE(PIA_0_TAG, pia6821_device, read, write) - AM_RANGE(0xFC24, 0xFC27) AM_DEVREADWRITE(PIA_1_TAG, pia6821_device, read, write) - AM_RANGE(0xFC28, 0xfC7F) AM_NOP - AM_RANGE(0xfc80, 0xfc80) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xfc81, 0xfc81) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xfc82, 0xfC9F) AM_NOP - AM_RANGE(0xFCA0, 0xFCA3) AM_READNOP AM_WRITE(dgnbeta_colour_ram_w) /* 4x4bit colour ram for graphics modes */ - AM_RANGE(0xFCC0, 0xFCC3) AM_DEVREADWRITE(PIA_2_TAG, pia6821_device, read, write) - AM_RANGE(0xfcC4, 0xfcdf) AM_NOP - AM_RANGE(0xfce0, 0xfce3) AM_READWRITE(dgnbeta_wd2797_r, dgnbeta_wd2797_w) /* Onboard disk interface */ - AM_RANGE(0xfce4, 0xfdff) AM_NOP - AM_RANGE(0xFE00, 0xFE0F) AM_READWRITE(dgn_beta_page_r, dgn_beta_page_w) - AM_RANGE(0xfe10, 0xfEff) AM_NOP - AM_RANGE(0xFF00, 0xFFFF) AM_RAMBANK("bank17") - -ADDRESS_MAP_END +void dgn_beta_state::dgnbeta_map(address_map &map) +{ + map(0x0000, 0x0FFF).bankrw("bank1"); + map(0x1000, 0x1FFF).bankrw("bank2"); + map(0x2000, 0x2FFF).bankrw("bank3"); + map(0x3000, 0x3FFF).bankrw("bank4"); + map(0x4000, 0x4FFF).bankrw("bank5"); + map(0x5000, 0x5FFF).bankrw("bank6"); + map(0x6000, 0x6FFF).bankrw("bank7").share("videoram"); + map(0x7000, 0x7FFF).bankrw("bank8"); + map(0x8000, 0x8FFF).bankrw("bank9"); + map(0x9000, 0x9FFF).bankrw("bank10"); + map(0xA000, 0xAFFF).bankrw("bank11"); + map(0xB000, 0xBFFF).bankrw("bank12"); + map(0xC000, 0xCFFF).bankrw("bank13"); + map(0xD000, 0xDFFF).bankrw("bank14"); + map(0xE000, 0xEFFF).bankrw("bank15"); + map(0xF000, 0xFBFF).bankrw("bank16"); + map(0xfC00, 0xfC1F).noprw(); + map(0xFC20, 0xFC23).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xFC24, 0xFC27).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xFC28, 0xfC7F).noprw(); + map(0xfc80, 0xfc80).w(m_mc6845, FUNC(mc6845_device::address_w)); + map(0xfc81, 0xfc81).rw(m_mc6845, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xfc82, 0xfC9F).noprw(); + map(0xFCA0, 0xFCA3).nopr().w(this, FUNC(dgn_beta_state::dgnbeta_colour_ram_w)); /* 4x4bit colour ram for graphics modes */ + map(0xFCC0, 0xFCC3).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xfcC4, 0xfcdf).noprw(); + map(0xfce0, 0xfce3).rw(this, FUNC(dgn_beta_state::dgnbeta_wd2797_r), FUNC(dgn_beta_state::dgnbeta_wd2797_w)); /* Onboard disk interface */ + map(0xfce4, 0xfdff).noprw(); + map(0xFE00, 0xFE0F).rw(this, FUNC(dgn_beta_state::dgn_beta_page_r), FUNC(dgn_beta_state::dgn_beta_page_w)); + map(0xfe10, 0xfEff).noprw(); + map(0xFF00, 0xFFFF).bankrw("bank17"); + +} diff --git a/src/mame/drivers/dgpix.cpp b/src/mame/drivers/dgpix.cpp index 5d204a01845..790684a7441 100644 --- a/src/mame/drivers/dgpix.cpp +++ b/src/mame/drivers/dgpix.cpp @@ -324,24 +324,26 @@ READ32_MEMBER(dgpix_state::vblank_r) return m_vblank->read(); } -ADDRESS_MAP_START(dgpix_state::cpu_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM - AM_RANGE(0x40000000, 0x4003ffff) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0xe0000000, 0xe1ffffff) AM_READWRITE(flash_r, flash_w) - AM_RANGE(0xe2000000, 0xe3ffffff) AM_READWRITE(flash_r, flash_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("flash", 0x1c00000) AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dgpix_state::io_map) - AM_RANGE(0x0200, 0x0203) AM_READNOP // used to sync with the protecion PIC? tested bits 0 and 1 - AM_RANGE(0x0400, 0x0403) AM_READWRITE(vblank_r, vbuffer_w) - AM_RANGE(0x0a10, 0x0a13) AM_READ_PORT("INPUTS") - AM_RANGE(0x0200, 0x0203) AM_WRITE(coin_w) - AM_RANGE(0x0c00, 0x0c03) AM_WRITENOP // writes only: 1, 0, 1 at startup - AM_RANGE(0x0c80, 0x0c83) AM_WRITENOP // sound commands / latches - AM_RANGE(0x0c80, 0x0c83) AM_READNOP //read at startup -> cmp 0xFE - AM_RANGE(0x0c84, 0x0c87) AM_READNOP // sound status, checks bit 0x40 and 0x80 -ADDRESS_MAP_END +void dgpix_state::cpu_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram(); + map(0x40000000, 0x4003ffff).rw(this, FUNC(dgpix_state::vram_r), FUNC(dgpix_state::vram_w)); + map(0xe0000000, 0xe1ffffff).rw(this, FUNC(dgpix_state::flash_r), FUNC(dgpix_state::flash_w)); + map(0xe2000000, 0xe3ffffff).rw(this, FUNC(dgpix_state::flash_r), FUNC(dgpix_state::flash_w)); + map(0xffc00000, 0xffffffff).rom().region("flash", 0x1c00000).share("nvram"); +} + +void dgpix_state::io_map(address_map &map) +{ + map(0x0200, 0x0203).nopr(); // used to sync with the protecion PIC? tested bits 0 and 1 + map(0x0400, 0x0403).rw(this, FUNC(dgpix_state::vblank_r), FUNC(dgpix_state::vbuffer_w)); + map(0x0a10, 0x0a13).portr("INPUTS"); + map(0x0200, 0x0203).w(this, FUNC(dgpix_state::coin_w)); + map(0x0c00, 0x0c03).nopw(); // writes only: 1, 0, 1 at startup + map(0x0c80, 0x0c83).nopw(); // sound commands / latches + map(0x0c80, 0x0c83).nopr(); //read at startup -> cmp 0xFE + map(0x0c84, 0x0c87).nopr(); // sound status, checks bit 0x40 and 0x80 +} static INPUT_PORTS_START( dgpix ) diff --git a/src/mame/drivers/diablo1300.cpp b/src/mame/drivers/diablo1300.cpp index 3b3b150c21c..ca29ab9b7be 100644 --- a/src/mame/drivers/diablo1300.cpp +++ b/src/mame/drivers/diablo1300.cpp @@ -154,13 +154,15 @@ public: void diablo1300_data_map(address_map &map); }; -ADDRESS_MAP_START( diablo1300_state::diablo1300_map) //, AS_PROGRAM, 16, diablo1300_state ) - AM_RANGE(0x0000, 0x01ff) AM_ROM -ADDRESS_MAP_END +void diablo1300_state::diablo1300_map(address_map &map) +{ //, AS_PROGRAM, 16, diablo1300_state ) + map(0x0000, 0x01ff).rom(); +} -ADDRESS_MAP_START( diablo1300_state::diablo1300_data_map ) // , AS_DATA, 8, diablo1300_state ) - AM_RANGE(0x00, 0x1f) AM_RAM -ADDRESS_MAP_END +void diablo1300_state::diablo1300_data_map(address_map &map) +{ // , AS_DATA, 8, diablo1300_state ) + map(0x00, 0x1f).ram(); +} static INPUT_PORTS_START( diablo1300 ) INPUT_PORTS_END diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp index 44c91300af6..598dc96f0bd 100644 --- a/src/mame/drivers/didact.cpp +++ b/src/mame/drivers/didact.cpp @@ -285,12 +285,13 @@ void md6802_state::machine_reset() } // This address map is traced from schema -ADDRESS_MAP_START(md6802_state::md6802_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE(PIA1_TAG, pia6821_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE(PIA2_TAG, pia6821_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE(0xe000, 0xe7ff) AM_ROM AM_MIRROR(0x1800) AM_REGION("maincpu", 0xe000) -ADDRESS_MAP_END +void md6802_state::md6802_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().mirror(0x1800); + map(0xa000, 0xa003).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).mirror(0x1ffc); + map(0xc000, 0xc003).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).mirror(0x1ffc); + map(0xe000, 0xe7ff).rom().mirror(0x1800).region("maincpu", 0xe000); +} /* * ___________________________________________________________________________________________________________ _____________________________________________________ @@ -477,13 +478,14 @@ void mp68a_state::machine_start() } // This address map is traced from pcb -ADDRESS_MAP_START(mp68a_state::mp68a_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0xf000) - AM_RANGE(0x0500, 0x0503) AM_DEVREADWRITE(PIA1_TAG, pia6820_device, read, write) AM_MIRROR(0xf0fc) - AM_RANGE(0x0600, 0x0603) AM_DEVREADWRITE(PIA2_TAG, pia6820_device, read, write) AM_MIRROR(0xf0fc) - AM_RANGE(0x0700, 0x07ff) AM_RAM AM_MIRROR(0xf000) - AM_RANGE(0x0800, 0x0bff) AM_ROM AM_MIRROR(0xf400) AM_REGION("maincpu", 0x0800) -ADDRESS_MAP_END +void mp68a_state::mp68a_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().mirror(0xf000); + map(0x0500, 0x0503).rw(m_pia1, FUNC(pia6820_device::read), FUNC(pia6820_device::write)).mirror(0xf0fc); + map(0x0600, 0x0603).rw(m_pia2, FUNC(pia6820_device::read), FUNC(pia6820_device::write)).mirror(0xf0fc); + map(0x0700, 0x07ff).ram().mirror(0xf000); + map(0x0800, 0x0bff).rom().mirror(0xf400).region("maincpu", 0x0800); +} static INPUT_PORTS_START( md6802 ) PORT_START("LINE0") /* KEY ROW 0 */ diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp index e370b36c5b9..80d4c6143a2 100644 --- a/src/mame/drivers/dietgo.cpp +++ b/src/mame/drivers/dietgo.cpp @@ -24,7 +24,6 @@ PAL16R6A 11H #include "includes/dietgo.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "sound/ym2151.h" #include "sound/okim6295.h" #include "machine/decocrpt.h" @@ -52,36 +51,39 @@ WRITE16_MEMBER( dietgo_state::dietgo_protection_region_0_104_w ) } -ADDRESS_MAP_START(dietgo_state::dietgo_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x210000, 0x211fff) AM_DEVWRITE("tilegen1", deco16ic_device, pf1_data_w) - AM_RANGE(0x212000, 0x213fff) AM_DEVWRITE("tilegen1", deco16ic_device, pf2_data_w) - AM_RANGE(0x220000, 0x2207ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll") - AM_RANGE(0x222000, 0x2227ff) AM_WRITEONLY AM_SHARE("pf2_rowscroll") - AM_RANGE(0x280000, 0x2807ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300000, 0x300bff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x340000, 0x343fff) AM_READWRITE(dietgo_protection_region_0_104_r,dietgo_protection_region_0_104_w)AM_SHARE("prot16ram") /* Protection device */ - AM_RANGE(0x380000, 0x38ffff) AM_RAM // mainram -ADDRESS_MAP_END +void dietgo_state::dietgo_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x210000, 0x211fff).w(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_w)); + map(0x212000, 0x213fff).w(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_w)); + map(0x220000, 0x2207ff).writeonly().share("pf1_rowscroll"); + map(0x222000, 0x2227ff).writeonly().share("pf2_rowscroll"); + map(0x280000, 0x2807ff).ram().share("spriteram"); + map(0x300000, 0x300bff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x340000, 0x343fff).rw(this, FUNC(dietgo_state::dietgo_protection_region_0_104_r), FUNC(dietgo_state::dietgo_protection_region_0_104_w)).share("prot16ram"); /* Protection device */ + map(0x380000, 0x38ffff).ram(); // mainram +} -ADDRESS_MAP_START(dietgo_state::decrypted_opcodes_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END +void dietgo_state::decrypted_opcodes_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().share("decrypted_opcodes"); +} /* Physical memory map (21 bits) */ -ADDRESS_MAP_START(dietgo_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */ - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot104", deco104_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void dietgo_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).noprw(); /* YM2203 - this board doesn't have one */ + map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).noprw(); /* This board only has 1 oki chip */ + map(0x140000, 0x140000).r(m_deco104, FUNC(deco104_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} diff --git a/src/mame/drivers/digel804.cpp b/src/mame/drivers/digel804.cpp index 9d329605596..b937342f6ec 100644 --- a/src/mame/drivers/digel804.cpp +++ b/src/mame/drivers/digel804.cpp @@ -468,89 +468,93 @@ WRITE8_MEMBER( digel804_state::acia_control_w ) Address Maps ******************************************************************************/ -ADDRESS_MAP_START(digel804_state::z80_mem_804_1_4) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM // 3f in mapper = rom J3 +void digel804_state::z80_mem_804_1_4(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); // 3f in mapper = rom J3 //AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram") // 6f in mapper = RAM D43 (6164) //AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("main_ram") // 77 in mapper = RAM D44 (6164) //AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("main_ram") // 7b in mapper = RAM D45 (6164) //AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("main_ram") // 7d in mapper = RAM D46 (6164) - AM_RANGE(0x4000,0xbfff) AM_RAMBANK("bankedram") + map(0x4000, 0xbfff).bankrw("bankedram"); // c000-cfff is open bus in mapper, 7f - AM_RANGE(0xd000, 0xd7ff) AM_RAM // 7e in mapper = RAM P3 (6116) - AM_RANGE(0xd800, 0xf7ff) AM_ROM // 5f in mapper = rom K3 + map(0xd000, 0xd7ff).ram(); // 7e in mapper = RAM P3 (6116) + map(0xd800, 0xf7ff).rom(); // 5f in mapper = rom K3 // f800-ffff is open bus in mapper, 7f -ADDRESS_MAP_END +} -ADDRESS_MAP_START(ep804_state::z80_mem_804_1_2) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM // 3f in mapper = rom D41 - AM_RANGE(0x2000, 0x3fff) AM_ROM // 5f in mapper = rom D42 +void ep804_state::z80_mem_804_1_2(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); // 3f in mapper = rom D41 + map(0x2000, 0x3fff).rom(); // 5f in mapper = rom D42 //AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram") // 6f in mapper = RAM D43 (6164) //AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("main_ram") // 77 in mapper = RAM D44 (6164) //AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("main_ram") // 7b in mapper = RAM D45 (6164) //AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("main_ram") // 7d in mapper = RAM D46 (6164) - AM_RANGE(0x4000,0xbfff) AM_RAMBANK("bankedram") + map(0x4000, 0xbfff).bankrw("bankedram"); // c000-cfff is open bus in mapper, 7f //AM_RANGE(0xc000, 0xc7ff) AM_RAM // hack for now to test, since sometimes it writes to c3ff - AM_RANGE(0xd000, 0xd7ff) AM_RAM // 7e in mapper = RAM D47 (6116) + map(0xd000, 0xd7ff).ram(); // 7e in mapper = RAM D47 (6116) // d800-ffff is open bus in mapper, 7f -ADDRESS_MAP_END +} -ADDRESS_MAP_START(digel804_state::z80_io_1_4) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void digel804_state::z80_io_1_4(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // io bits: x 1 x x x * * * // writes to 47, 4e, 57, 5e, 67, 6e, 77, 7e, c7, ce, d7, de, e7, ee, f7, fe all go to 47, same with reads - AM_RANGE(0x00, 0x00) AM_MIRROR(0x38) AM_WRITE(op00) // W, banked ram - AM_RANGE(0x40, 0x40) AM_MIRROR(0xB8) AM_READWRITE(ip40, op40) // RW, eprom socket data bus input/output value - AM_RANGE(0x41, 0x41) AM_MIRROR(0xB8) AM_WRITE(op41) // W, eprom socket address low out - AM_RANGE(0x42, 0x42) AM_MIRROR(0xB8) AM_WRITE(op42) // W, eprom socket address hi/control out - AM_RANGE(0x43, 0x43) AM_MIRROR(0xB8) AM_READWRITE(ip43, op43_1_4) // RW, mode and status register, also checks if keypad is pressed; write is unknown - AM_RANGE(0x44, 0x44) AM_MIRROR(0xB8) AM_WRITE(op44) // W, 10937 vfd controller, z80 power and state control reg - AM_RANGE(0x45, 0x45) AM_MIRROR(0xB8) AM_WRITE(op45) // W, speaker bit; every write inverts state - AM_RANGE(0x46, 0x46) AM_MIRROR(0xB8) AM_READWRITE(ip46, op46) // RW, reads keypad, writes controls the front panel leds. - AM_RANGE(0x47, 0x47) AM_MIRROR(0xB8) AM_WRITE(op47) // W eprom socket power and timing control + map(0x00, 0x00).mirror(0x38).w(this, FUNC(digel804_state::op00)); // W, banked ram + map(0x40, 0x40).mirror(0xB8).rw(this, FUNC(digel804_state::ip40), FUNC(digel804_state::op40)); // RW, eprom socket data bus input/output value + map(0x41, 0x41).mirror(0xB8).w(this, FUNC(digel804_state::op41)); // W, eprom socket address low out + map(0x42, 0x42).mirror(0xB8).w(this, FUNC(digel804_state::op42)); // W, eprom socket address hi/control out + map(0x43, 0x43).mirror(0xB8).rw(this, FUNC(digel804_state::ip43), FUNC(digel804_state::op43_1_4)); // RW, mode and status register, also checks if keypad is pressed; write is unknown + map(0x44, 0x44).mirror(0xB8).w(this, FUNC(digel804_state::op44)); // W, 10937 vfd controller, z80 power and state control reg + map(0x45, 0x45).mirror(0xB8).w(this, FUNC(digel804_state::op45)); // W, speaker bit; every write inverts state + map(0x46, 0x46).mirror(0xB8).rw(this, FUNC(digel804_state::ip46), FUNC(digel804_state::op46)); // RW, reads keypad, writes controls the front panel leds. + map(0x47, 0x47).mirror(0xB8).w(this, FUNC(digel804_state::op47)); // W eprom socket power and timing control // io bits: 1 0 x x x * * * // writes to 80, 88, 90, 98, a0, a8, b0, b8 all go to 80, same with reads - AM_RANGE(0x80, 0x80) AM_MIRROR(0x38) AM_WRITE(acia_txd_w) // (ACIA xmit reg) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x38) AM_READ(acia_rxd_r) // (ACIA rcv reg) - AM_RANGE(0x82, 0x82) AM_MIRROR(0x38) AM_WRITE(acia_reset_w) // (ACIA reset reg) - AM_RANGE(0x83, 0x83) AM_MIRROR(0x38) AM_READ(acia_status_r) // (ACIA status reg) - AM_RANGE(0x84, 0x84) AM_MIRROR(0x38) AM_WRITE(acia_command_w) // (ACIA command reg) - AM_RANGE(0x85, 0x85) AM_MIRROR(0x38) AM_READ(acia_command_r) // (ACIA command reg) - AM_RANGE(0x86, 0x86) AM_MIRROR(0x38) AM_WRITE(acia_control_w) // (ACIA control reg) - AM_RANGE(0x87, 0x87) AM_MIRROR(0x38) AM_READ(acia_control_r) // (ACIA control reg) + map(0x80, 0x80).mirror(0x38).w(this, FUNC(digel804_state::acia_txd_w)); // (ACIA xmit reg) + map(0x81, 0x81).mirror(0x38).r(this, FUNC(digel804_state::acia_rxd_r)); // (ACIA rcv reg) + map(0x82, 0x82).mirror(0x38).w(this, FUNC(digel804_state::acia_reset_w)); // (ACIA reset reg) + map(0x83, 0x83).mirror(0x38).r(this, FUNC(digel804_state::acia_status_r)); // (ACIA status reg) + map(0x84, 0x84).mirror(0x38).w(this, FUNC(digel804_state::acia_command_w)); // (ACIA command reg) + map(0x85, 0x85).mirror(0x38).r(this, FUNC(digel804_state::acia_command_r)); // (ACIA command reg) + map(0x86, 0x86).mirror(0x38).w(this, FUNC(digel804_state::acia_control_w)); // (ACIA control reg) + map(0x87, 0x87).mirror(0x38).r(this, FUNC(digel804_state::acia_control_r)); // (ACIA control reg) //AM_RANGE(0x80,0x87) AM_MIRROR(0x38) AM_SHIFT(-1) AM_DEVREADWRITE("acia", mos6551_device, read, write) // this doesn't work since we lack an AM_SHIFT command -ADDRESS_MAP_END +} -ADDRESS_MAP_START(ep804_state::z80_io_1_2) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void ep804_state::z80_io_1_2(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // io bits: x 1 x x x * * * // writes to 47, 4e, 57, 5e, 67, 6e, 77, 7e, c7, ce, d7, de, e7, ee, f7, fe all go to 47, same with reads - AM_RANGE(0x40, 0x40) AM_MIRROR(0xB8) AM_READWRITE(ip40, op40) // RW, eprom socket data bus input/output value - AM_RANGE(0x41, 0x41) AM_MIRROR(0xB8) AM_WRITE(op41) // W, eprom socket address low out - AM_RANGE(0x42, 0x42) AM_MIRROR(0xB8) AM_WRITE(op42) // W, eprom socket address hi/control out - AM_RANGE(0x43, 0x43) AM_MIRROR(0xB8) AM_READWRITE(ip43, op43) // RW, mode and status register, also checks if keypad is pressed; write is unknown - AM_RANGE(0x44, 0x44) AM_MIRROR(0xB8) AM_WRITE(op44) // W, 10937 vfd controller, z80 power and state control reg - AM_RANGE(0x45, 0x45) AM_MIRROR(0xB8) AM_WRITE(op45) // W, speaker bit; every write inverts state - AM_RANGE(0x46, 0x46) AM_MIRROR(0xB8) AM_READWRITE(ip46, op46) // RW, reads keypad, writes controls the front panel leds. - AM_RANGE(0x47, 0x47) AM_MIRROR(0xB8) AM_WRITE(op47) // W eprom socket power and timing control + map(0x40, 0x40).mirror(0xB8).rw(this, FUNC(ep804_state::ip40), FUNC(ep804_state::op40)); // RW, eprom socket data bus input/output value + map(0x41, 0x41).mirror(0xB8).w(this, FUNC(ep804_state::op41)); // W, eprom socket address low out + map(0x42, 0x42).mirror(0xB8).w(this, FUNC(ep804_state::op42)); // W, eprom socket address hi/control out + map(0x43, 0x43).mirror(0xB8).rw(this, FUNC(ep804_state::ip43), FUNC(ep804_state::op43)); // RW, mode and status register, also checks if keypad is pressed; write is unknown + map(0x44, 0x44).mirror(0xB8).w(this, FUNC(ep804_state::op44)); // W, 10937 vfd controller, z80 power and state control reg + map(0x45, 0x45).mirror(0xB8).w(this, FUNC(ep804_state::op45)); // W, speaker bit; every write inverts state + map(0x46, 0x46).mirror(0xB8).rw(this, FUNC(ep804_state::ip46), FUNC(ep804_state::op46)); // RW, reads keypad, writes controls the front panel leds. + map(0x47, 0x47).mirror(0xB8).w(this, FUNC(ep804_state::op47)); // W eprom socket power and timing control // io bits: 1 0 x x x * * * // writes to 80, 88, 90, 98, a0, a8, b0, b8 all go to 80, same with reads - AM_RANGE(0x80, 0x80) AM_MIRROR(0x38) AM_WRITE(acia_txd_w) // (ACIA xmit reg) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x38) AM_READ(acia_rxd_r) // (ACIA rcv reg) - AM_RANGE(0x82, 0x82) AM_MIRROR(0x38) AM_WRITE(acia_reset_w) // (ACIA reset reg) - AM_RANGE(0x83, 0x83) AM_MIRROR(0x38) AM_READ(acia_status_r) // (ACIA status reg) - AM_RANGE(0x84, 0x84) AM_MIRROR(0x38) AM_WRITE(acia_command_w) // (ACIA command reg) - AM_RANGE(0x85, 0x85) AM_MIRROR(0x38) AM_READ(acia_command_r) // (ACIA command reg) - AM_RANGE(0x86, 0x86) AM_MIRROR(0x38) AM_WRITE(acia_control_w) // (ACIA control reg) - AM_RANGE(0x87, 0x87) AM_MIRROR(0x38) AM_READ(acia_control_r) // (ACIA control reg) + map(0x80, 0x80).mirror(0x38).w(this, FUNC(ep804_state::acia_txd_w)); // (ACIA xmit reg) + map(0x81, 0x81).mirror(0x38).r(this, FUNC(ep804_state::acia_rxd_r)); // (ACIA rcv reg) + map(0x82, 0x82).mirror(0x38).w(this, FUNC(ep804_state::acia_reset_w)); // (ACIA reset reg) + map(0x83, 0x83).mirror(0x38).r(this, FUNC(ep804_state::acia_status_r)); // (ACIA status reg) + map(0x84, 0x84).mirror(0x38).w(this, FUNC(ep804_state::acia_command_w)); // (ACIA command reg) + map(0x85, 0x85).mirror(0x38).r(this, FUNC(ep804_state::acia_command_r)); // (ACIA command reg) + map(0x86, 0x86).mirror(0x38).w(this, FUNC(ep804_state::acia_control_w)); // (ACIA control reg) + map(0x87, 0x87).mirror(0x38).r(this, FUNC(ep804_state::acia_control_r)); // (ACIA control reg) //AM_RANGE(0x80,0x87) AM_MIRROR(0x38) AM_SHIFT(-1) AM_DEVREADWRITE("acia", mos6551_device, read, write) // this doesn't work since we lack an AM_SHIFT command -ADDRESS_MAP_END +} /****************************************************************************** diff --git a/src/mame/drivers/digijet.cpp b/src/mame/drivers/digijet.cpp index 08635fa7473..adcb112da5b 100644 --- a/src/mame/drivers/digijet.cpp +++ b/src/mame/drivers/digijet.cpp @@ -41,8 +41,9 @@ public: void io_map(address_map &map); }; -ADDRESS_MAP_START(digijet_state::io_map) -ADDRESS_MAP_END +void digijet_state::io_map(address_map &map) +{ +} static INPUT_PORTS_START( digijet ) INPUT_PORTS_END diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp index bd6e8d36d6c..45604e6ce5a 100644 --- a/src/mame/drivers/dim68k.cpp +++ b/src/mame/drivers/dim68k.cpp @@ -184,33 +184,34 @@ WRITE16_MEMBER( dim68k_state::dim68k_banksw_w ) { } -ADDRESS_MAP_START(dim68k_state::dim68k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x00feffff) AM_RAM AM_SHARE("ram") // 16MB RAM / ROM at boot - AM_RANGE(0x00ff0000, 0x00ff1fff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0x00ff2000, 0x00ff7fff) AM_RAM // Graphics Video RAM - AM_RANGE(0x00ff8000, 0x00ff8001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0xff) - AM_RANGE(0x00ff8002, 0x00ff8003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff) - AM_RANGE(0x00ff8004, 0x00ff8005) AM_WRITE(dim68k_video_high_w) - AM_RANGE(0x00ff8008, 0x00ff8009) AM_WRITE(dim68k_video_control_w) - AM_RANGE(0x00ff800a, 0x00ff800b) AM_WRITE(dim68k_video_reset_w) - AM_RANGE(0x00ff8800, 0x00ff8fff) AM_ROM AM_REGION("cop6512",0) // slot 1 controller rom - AM_RANGE(0x00ff9000, 0x00ff97ff) AM_ROM AM_REGION("copz80",0) // slot 2 controller rom - AM_RANGE(0x00ff9800, 0x00ff9fff) AM_ROM AM_REGION("cop8086",0) // slot 3 controller rom +void dim68k_state::dim68k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x00feffff).ram().share("ram"); // 16MB RAM / ROM at boot + map(0x00ff0000, 0x00ff1fff).rom().region("bootrom", 0); + map(0x00ff2000, 0x00ff7fff).ram(); // Graphics Video RAM + map(0x00ff8001, 0x00ff8001).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x00ff8003, 0x00ff8003).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x00ff8004, 0x00ff8005).w(this, FUNC(dim68k_state::dim68k_video_high_w)); + map(0x00ff8008, 0x00ff8009).w(this, FUNC(dim68k_state::dim68k_video_control_w)); + map(0x00ff800a, 0x00ff800b).w(this, FUNC(dim68k_state::dim68k_video_reset_w)); + map(0x00ff8800, 0x00ff8fff).rom().region("cop6512", 0); // slot 1 controller rom + map(0x00ff9000, 0x00ff97ff).rom().region("copz80", 0); // slot 2 controller rom + map(0x00ff9800, 0x00ff9fff).rom().region("cop8086", 0); // slot 3 controller rom #if 0 - AM_RANGE(0x00ffa000, 0x00ffa7ff) AM_ROM // slot 4 controller rom - AM_RANGE(0x00ffa800, 0x00ffafff) AM_ROM // slot 5 controller rom - AM_RANGE(0x00ffb000, 0x00ffb7ff) AM_ROM // slot 6 controller rom + map(0x00ffa000, 0x00ffa7ff).rom(); // slot 4 controller rom + map(0x00ffa800, 0x00ffafff).rom(); // slot 5 controller rom + map(0x00ffb000, 0x00ffb7ff).rom(); // slot 6 controller rom #endif - AM_RANGE(0x00ffc400, 0x00ffc41f) AM_READWRITE(dim68k_duart_r,dim68k_duart_w) // Signetics SCN2681AC1N40 Dual UART - AM_RANGE(0x00ffc800, 0x00ffc801) AM_READWRITE(dim68k_speaker_r,dim68k_speaker_w) - AM_RANGE(0x00ffcc00, 0x00ffcc1f) AM_READWRITE(dim68k_game_switches_r,dim68k_reset_timers_w) - AM_RANGE(0x00ffd000, 0x00ffd003) AM_DEVICE8("fdc",upd765a_device,map,0x00ff) // NEC uPD765A - AM_RANGE(0x00ffd004, 0x00ffd005) AM_READWRITE(dim68k_fdc_r,dim68k_fdc_w) + map(0x00ffc400, 0x00ffc41f).rw(this, FUNC(dim68k_state::dim68k_duart_r), FUNC(dim68k_state::dim68k_duart_w)); // Signetics SCN2681AC1N40 Dual UART + map(0x00ffc800, 0x00ffc801).rw(this, FUNC(dim68k_state::dim68k_speaker_r), FUNC(dim68k_state::dim68k_speaker_w)); + map(0x00ffcc00, 0x00ffcc1f).rw(this, FUNC(dim68k_state::dim68k_game_switches_r), FUNC(dim68k_state::dim68k_reset_timers_w)); + map(0x00ffd000, 0x00ffd003).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff); // NEC uPD765A + map(0x00ffd004, 0x00ffd005).rw(this, FUNC(dim68k_state::dim68k_fdc_r), FUNC(dim68k_state::dim68k_fdc_w)); //AM_RANGE(0x00ffd400, 0x00ffd403) emulation trap control - AM_RANGE(0x00ffd800, 0x00ffd801) AM_WRITE(dim68k_printer_strobe_w) - AM_RANGE(0x00ffdc00, 0x00ffdc01) AM_WRITE(dim68k_banksw_w) -ADDRESS_MAP_END + map(0x00ffd800, 0x00ffd801).w(this, FUNC(dim68k_state::dim68k_printer_strobe_w)); + map(0x00ffdc00, 0x00ffdc01).w(this, FUNC(dim68k_state::dim68k_banksw_w)); +} /* Input ports */ static INPUT_PORTS_START( dim68k ) diff --git a/src/mame/drivers/discoboy.cpp b/src/mame/drivers/discoboy.cpp index 73efdd841d5..b657643cf15 100644 --- a/src/mame/drivers/discoboy.cpp +++ b/src/mame/drivers/discoboy.cpp @@ -273,20 +273,22 @@ WRITE8_MEMBER(discoboy_state::rambank2_w) printf("unk rb2_w\n"); } -ADDRESS_MAP_START(discoboy_state::discoboy_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xc7ff) AM_DEVICE("rambank1", address_map_bank_device, amap8) - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("att_ram") - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(rambank2_r, rambank2_w) - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(discoboy_state::rambank1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("ram_1") - AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("ram_2") -ADDRESS_MAP_END +void discoboy_state::discoboy_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xc7ff).m(m_rambank1, FUNC(address_map_bank_device::amap8)); + map(0xc800, 0xcfff).ram().share("att_ram"); + map(0xd000, 0xdfff).rw(this, FUNC(discoboy_state::rambank2_r), FUNC(discoboy_state::rambank2_w)); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram(); +} + +void discoboy_state::rambank1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("ram_1"); + map(0x0800, 0x0fff).ram().share("ram_2"); +} READ8_MEMBER(discoboy_state::port_06_r) @@ -294,16 +296,17 @@ READ8_MEMBER(discoboy_state::port_06_r) return 0x00; } -ADDRESS_MAP_START(discoboy_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") AM_WRITE(port_00_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_01_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB") - AM_RANGE(0x06, 0x06) AM_READWRITE(port_06_r, port_06_w) // ??? - AM_RANGE(0x07, 0x07) AM_WRITE(rambank_select_w) // 0x20 is palette bank bit.. others? -ADDRESS_MAP_END +void discoboy_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSWA").w(this, FUNC(discoboy_state::port_00_w)); + map(0x01, 0x01).portr("SYSTEM").w(this, FUNC(discoboy_state::port_01_w)); + map(0x02, 0x02).portr("P1"); + map(0x03, 0x03).portr("P2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x04, 0x04).portr("DSWB"); + map(0x06, 0x06).rw(this, FUNC(discoboy_state::port_06_r), FUNC(discoboy_state::port_06_w)); // ??? + map(0x07, 0x07).w(this, FUNC(discoboy_state::rambank_select_w)); // 0x20 is palette bank bit.. others? +} /* Sound */ @@ -318,15 +321,16 @@ WRITE8_MEMBER(discoboy_state::yunsung8_sound_bankswitch_w) logerror("%s: Bank %02X\n", machine().describe_context(), data); } -ADDRESS_MAP_START(discoboy_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("sndbank") - AM_RANGE(0xe000, 0xe000) AM_WRITE(yunsung8_sound_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w) - AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void discoboy_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("sndbank"); + map(0xe000, 0xe000).w(this, FUNC(discoboy_state::yunsung8_sound_bankswitch_w)); + map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w)); + map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( discoboy ) diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp index 31b7d12cae3..bc51a4a44e3 100644 --- a/src/mame/drivers/divebomb.cpp +++ b/src/mame/drivers/divebomb.cpp @@ -103,33 +103,35 @@ To verify against original HW: * *************************************/ -ADDRESS_MAP_START(divebomb_state::divebomb_fgcpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(divebomb_state::divebomb_fgcpu_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn0", sn76489_device, write) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("sn3", sn76489_device, write) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("sn4", sn76489_device, write) - AM_RANGE(0x05, 0x05) AM_DEVWRITE("sn5", sn76489_device, write) - AM_RANGE(0x10, 0x10) AM_READWRITE(fgcpu_roz_comm_r, fgcpu_roz_comm_w) - AM_RANGE(0x20, 0x20) AM_READWRITE(fgcpu_spr_comm_r, fgcpu_spr_comm_w) - AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") - AM_RANGE(0x31, 0x31) AM_READ_PORT("IN1") - AM_RANGE(0x32, 0x32) AM_READ_PORT("DSW1") - AM_RANGE(0x33, 0x33) AM_READ_PORT("DSW2") +void divebomb_state::divebomb_fgcpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(divebomb_state::fgram_w)).share("fgram"); + map(0xe000, 0xffff).ram(); +} + + +void divebomb_state::divebomb_fgcpu_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("sn0", FUNC(sn76489_device::write)); + map(0x01, 0x01).w("sn1", FUNC(sn76489_device::write)); + map(0x02, 0x02).w("sn2", FUNC(sn76489_device::write)); + map(0x03, 0x03).w("sn3", FUNC(sn76489_device::write)); + map(0x04, 0x04).w("sn4", FUNC(sn76489_device::write)); + map(0x05, 0x05).w("sn5", FUNC(sn76489_device::write)); + map(0x10, 0x10).rw(this, FUNC(divebomb_state::fgcpu_roz_comm_r), FUNC(divebomb_state::fgcpu_roz_comm_w)); + map(0x20, 0x20).rw(this, FUNC(divebomb_state::fgcpu_spr_comm_r), FUNC(divebomb_state::fgcpu_spr_comm_w)); + map(0x30, 0x30).portr("IN0"); + map(0x31, 0x31).portr("IN1"); + map(0x32, 0x32).portr("DSW1"); + map(0x33, 0x33).portr("DSW2"); // 34/35 aren't read but PCB has 4 banks of dips populated, so logically they would map here even if unused - AM_RANGE(0x34, 0x34) AM_READ_PORT("DSW3") - AM_RANGE(0x35, 0x35) AM_READ_PORT("DSW4") - AM_RANGE(0x36, 0x36) AM_READ_PORT("SYSTEM") - AM_RANGE(0x37, 0x37) AM_READ(fgcpu_comm_flags_r) -ADDRESS_MAP_END + map(0x34, 0x34).portr("DSW3"); + map(0x35, 0x35).portr("DSW4"); + map(0x36, 0x36).portr("SYSTEM"); + map(0x37, 0x37).r(this, FUNC(divebomb_state::fgcpu_comm_flags_r)); +} READ8_MEMBER(divebomb_state::fgcpu_spr_comm_r) @@ -182,19 +184,21 @@ READ8_MEMBER(divebomb_state::fgcpu_comm_flags_r) * *************************************/ -ADDRESS_MAP_START(divebomb_state::divebomb_spritecpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xdfff) AM_WRITENOP - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void divebomb_state::divebomb_spritecpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().share("spriteram"); + map(0xc800, 0xdfff).nopw(); + map(0xe000, 0xffff).ram(); +} -ADDRESS_MAP_START(divebomb_state::divebomb_spritecpu_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(spritecpu_port00_w) - AM_RANGE(0x80, 0x80) AM_READWRITE(spritecpu_comm_r, spritecpu_comm_w) -ADDRESS_MAP_END +void divebomb_state::divebomb_spritecpu_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(divebomb_state::spritecpu_port00_w)); + map(0x80, 0x80).rw(this, FUNC(divebomb_state::spritecpu_comm_r), FUNC(divebomb_state::spritecpu_comm_w)); +} READ8_MEMBER(divebomb_state::spritecpu_comm_r) @@ -226,27 +230,29 @@ WRITE8_MEMBER(divebomb_state::spritecpu_port00_w) * *************************************/ -ADDRESS_MAP_START(divebomb_state::divebomb_rozcpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_DEVREADWRITE("k051316_1", k051316_device, read, write) - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_DEVREADWRITE("k051316_2", k051316_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(divebomb_state::divebomb_rozcpu_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(rozcpu_bank_w) - AM_RANGE(0x10, 0x10) AM_WRITE(rozcpu_wrap2_enable_w) - AM_RANGE(0x12, 0x12) AM_WRITE(rozcpu_enable1_w) - AM_RANGE(0x13, 0x13) AM_WRITE(rozcpu_enable2_w) - AM_RANGE(0x14, 0x14) AM_WRITE(rozcpu_wrap1_enable_w) - AM_RANGE(0x20, 0x2f) AM_DEVWRITE("k051316_1", k051316_device, ctrl_w) - AM_RANGE(0x30, 0x3f) AM_DEVWRITE("k051316_2", k051316_device, ctrl_w) - AM_RANGE(0x40, 0x40) AM_READWRITE(rozcpu_comm_r, rozcpu_comm_w) - AM_RANGE(0x50, 0x50) AM_WRITE(rozcpu_pal_w) -ADDRESS_MAP_END +void divebomb_state::divebomb_rozcpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram().rw(m_k051316_1, FUNC(k051316_device::read), FUNC(k051316_device::write)); + map(0xd000, 0xd7ff).ram().rw(m_k051316_2, FUNC(k051316_device::read), FUNC(k051316_device::write)); + map(0xe000, 0xffff).ram(); +} + + +void divebomb_state::divebomb_rozcpu_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(divebomb_state::rozcpu_bank_w)); + map(0x10, 0x10).w(this, FUNC(divebomb_state::rozcpu_wrap2_enable_w)); + map(0x12, 0x12).w(this, FUNC(divebomb_state::rozcpu_enable1_w)); + map(0x13, 0x13).w(this, FUNC(divebomb_state::rozcpu_enable2_w)); + map(0x14, 0x14).w(this, FUNC(divebomb_state::rozcpu_wrap1_enable_w)); + map(0x20, 0x2f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)); + map(0x30, 0x3f).w(m_k051316_2, FUNC(k051316_device::ctrl_w)); + map(0x40, 0x40).rw(this, FUNC(divebomb_state::rozcpu_comm_r), FUNC(divebomb_state::rozcpu_comm_w)); + map(0x50, 0x50).w(this, FUNC(divebomb_state::rozcpu_pal_w)); +} WRITE8_MEMBER(divebomb_state::rozcpu_bank_w) diff --git a/src/mame/drivers/diverboy.cpp b/src/mame/drivers/diverboy.cpp index 69dd294a177..b64ce3fda16 100644 --- a/src/mame/drivers/diverboy.cpp +++ b/src/mame/drivers/diverboy.cpp @@ -161,30 +161,32 @@ WRITE8_MEMBER(diverboy_state::okibank_w) -ADDRESS_MAP_START(diverboy_state::diverboy_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04ffff) AM_RAM - AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w) - AM_RANGE(0x140000, 0x1407ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1_P2") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW") - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("COINS") +void diverboy_state::diverboy_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04ffff).ram(); + map(0x080000, 0x083fff).ram().share("spriteram"); + map(0x100000, 0x100001).w(this, FUNC(diverboy_state::soundcmd_w)); + map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x180001).portr("P1_P2"); + map(0x180002, 0x180003).portr("DSW"); + map(0x180008, 0x180009).portr("COINS"); // AM_RANGE(0x18000a, 0x18000b) AM_READNOP // AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP - AM_RANGE(0x320000, 0x3207ff) AM_WRITEONLY /* ?? */ - AM_RANGE(0x322000, 0x3227ff) AM_WRITEONLY /* ?? */ + map(0x320000, 0x3207ff).writeonly(); /* ?? */ + map(0x322000, 0x3227ff).writeonly(); /* ?? */ // AM_RANGE(0x340000, 0x340001) AM_WRITENOP // AM_RANGE(0x340002, 0x340003) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(diverboy_state::snd_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +} + +void diverboy_state::snd_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(diverboy_state::okibank_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp index c3c275001c6..181b9973841 100644 --- a/src/mame/drivers/djboy.cpp +++ b/src/mame/drivers/djboy.cpp @@ -244,60 +244,66 @@ WRITE8_MEMBER(djboy_state::cpu2_bankswitch_w) /******************************************************************************/ -ADDRESS_MAP_START(djboy_state::cpu0_am) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xafff) AM_ROMBANK("bank4") - AM_RANGE(0xb000, 0xbfff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_r, spriteram_w) - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(djboy_state::cpu0_port_am) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(cpu0_bankswitch_w) -ADDRESS_MAP_END +void djboy_state::cpu0_am(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xafff).bankr("bank4"); + map(0xb000, 0xbfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w)); + map(0xc000, 0xdfff).bankr("bank1"); + map(0xe000, 0xefff).ram().share("share1"); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram(); +} + +void djboy_state::cpu0_port_am(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(djboy_state::cpu0_bankswitch_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(djboy_state::cpu1_am) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(djboy_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(djboy_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd400, 0xd8ff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(djboy_state::cpu1_port_am) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(cpu1_bankswitch_w) - AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_sound_cpu2) - AM_RANGE(0x04, 0x04) AM_READWRITE(beast_data_r, beast_data_w) - AM_RANGE(0x06, 0x06) AM_WRITE(djboy_scrolly_w) - AM_RANGE(0x08, 0x08) AM_WRITE(djboy_scrollx_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(trigger_nmi_on_cpu0) - AM_RANGE(0x0c, 0x0c) AM_READ(beast_status_r) - AM_RANGE(0x0e, 0x0e) AM_WRITE(coin_count_w) -ADDRESS_MAP_END +void djboy_state::cpu1_am(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank2"); + map(0xc000, 0xcfff).ram().w(this, FUNC(djboy_state::djboy_videoram_w)).share("videoram"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(djboy_state::djboy_paletteram_w)).share("paletteram"); + map(0xd400, 0xd8ff).ram(); + map(0xe000, 0xffff).ram().share("share1"); +} + +void djboy_state::cpu1_port_am(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(djboy_state::cpu1_bankswitch_w)); + map(0x02, 0x02).w(this, FUNC(djboy_state::trigger_nmi_on_sound_cpu2)); + map(0x04, 0x04).rw(this, FUNC(djboy_state::beast_data_r), FUNC(djboy_state::beast_data_w)); + map(0x06, 0x06).w(this, FUNC(djboy_state::djboy_scrolly_w)); + map(0x08, 0x08).w(this, FUNC(djboy_state::djboy_scrollx_w)); + map(0x0a, 0x0a).w(this, FUNC(djboy_state::trigger_nmi_on_cpu0)); + map(0x0c, 0x0c).r(this, FUNC(djboy_state::beast_status_r)); + map(0x0e, 0x0e).w(this, FUNC(djboy_state::coin_count_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(djboy_state::cpu2_am) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3") - AM_RANGE(0xc000, 0xdfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(djboy_state::cpu2_port_am) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(cpu2_bankswitch_w) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("oki2", okim6295_device, read, write) -ADDRESS_MAP_END +void djboy_state::cpu2_am(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank3"); + map(0xc000, 0xdfff).ram(); +} + +void djboy_state::cpu2_port_am(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(djboy_state::cpu2_bankswitch_w)); + map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x06, 0x06).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x07, 0x07).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /******************************************************************************/ diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp index a34897f213e..94a32288641 100644 --- a/src/mame/drivers/djmain.cpp +++ b/src/mame/drivers/djmain.cpp @@ -373,58 +373,63 @@ WRITE_LINE_MEMBER( djmain_state::ide_interrupt ) * *************************************/ -ADDRESS_MAP_START(djmain_state::maincpu_djmain) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // PRG ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // WORK RAM - AM_RANGE(0x480000, 0x48443f) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // COLOR RAM - AM_RANGE(0x500000, 0x57ffff) AM_READWRITE(sndram_r, sndram_w) // SOUND RAM - AM_RANGE(0x580000, 0x58003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) // VIDEO REG (tilemap) - AM_RANGE(0x590000, 0x590007) AM_WRITE(unknown590000_w) // ?? - AM_RANGE(0x5a0000, 0x5a005f) AM_DEVWRITE("k055555", k055555_device, K055555_long_w) // 055555: priority encoder - AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00ff00) - AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff00ff) - AM_RANGE(0x5c0000, 0x5c0003) AM_READ8(inp1_r, 0xffffffff) // DSW3,BTN3,BTN2,BTN1 // input port control (buttons and DIP switches) - AM_RANGE(0x5c8000, 0x5c8003) AM_READ8(inp2_r, 0xffffffff) // DSW1,DSW2,UNK2,UNK1 // input port control (DIP switches) - AM_RANGE(0x5d0000, 0x5d0003) AM_WRITE(light_ctrl_1_w) // light/coin blocker control - AM_RANGE(0x5d2000, 0x5d2003) AM_WRITE(light_ctrl_2_w) // light/coin blocker control - AM_RANGE(0x5d4000, 0x5d4003) AM_WRITE(v_ctrl_w) // VIDEO control - AM_RANGE(0x5d6000, 0x5d6003) AM_WRITE(sndram_bank_w) // SOUND RAM bank - AM_RANGE(0x5e0000, 0x5e0003) AM_READWRITE(turntable_r, turntable_select_w) // input port control (turn tables) - AM_RANGE(0x600000, 0x601fff) AM_READ(v_rom_r) // VIDEO ROM readthrough (for POST) - AM_RANGE(0x801000, 0x8017ff) AM_RAM AM_SHARE("obj_ram") // OBJECT RAM - AM_RANGE(0x802000, 0x802fff) AM_WRITE(unknown802000_w) // ?? - AM_RANGE(0x803000, 0x80309f) AM_READWRITE(obj_ctrl_r, obj_ctrl_w) // OBJECT REGS - AM_RANGE(0x803800, 0x803fff) AM_READ(obj_rom_r) // OBJECT ROM readthrough (for POST) -ADDRESS_MAP_END - -ADDRESS_MAP_START(djmain_state::maincpu_djmainj) - AM_IMPORT_FROM(maincpu_djmain) - - AM_RANGE(0xc00000, 0xc01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) // VIDEO RAM (tilemap) (beatmania) - AM_RANGE(0xc02000, 0xc02047) AM_WRITE(unknownc02000_w) // ?? - AM_RANGE(0xf00000, 0xf0000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) // IDE control regs (beatmania) - AM_RANGE(0xf40000, 0xf4000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) // IDE status control reg (beatmania) -ADDRESS_MAP_END - -ADDRESS_MAP_START(djmain_state::maincpu_djmainu) - AM_IMPORT_FROM(maincpu_djmain) - - AM_RANGE(0xd00000, 0xd0000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) // IDE control regs (hiphopmania) - AM_RANGE(0xd40000, 0xd4000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) // IDE status control reg (hiphopmania) - AM_RANGE(0xe00000, 0xe01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) // VIDEO RAM (tilemap) (hiphopmania) -ADDRESS_MAP_END - -ADDRESS_MAP_START(djmain_state::maincpu_djmaina) - AM_IMPORT_FROM(maincpu_djmain) - - AM_RANGE(0xc00000, 0xc0000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) // IDE control regs - AM_RANGE(0xc40000, 0xc4000f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) // IDE status control reg - AM_RANGE(0xf00000, 0xf01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) // VIDEO RAM (tilemap) -ADDRESS_MAP_END - -ADDRESS_MAP_START(djmain_state::k054539_map) - AM_RANGE(0x000000, 0xffffff) AM_RAM AM_SHARE("sndram") -ADDRESS_MAP_END +void djmain_state::maincpu_djmain(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // PRG ROM + map(0x400000, 0x40ffff).ram(); // WORK RAM + map(0x480000, 0x48443f).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // COLOR RAM + map(0x500000, 0x57ffff).rw(this, FUNC(djmain_state::sndram_r), FUNC(djmain_state::sndram_w)); // SOUND RAM + map(0x580000, 0x58003f).rw(m_k056832, FUNC(k056832_device::long_r), FUNC(k056832_device::long_w)); // VIDEO REG (tilemap) + map(0x590000, 0x590007).w(this, FUNC(djmain_state::unknown590000_w)); // ?? + map(0x5a0000, 0x5a005f).w(m_k055555, FUNC(k055555_device::K055555_long_w)); // 055555: priority encoder + map(0x5b0000, 0x5b04ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask32(0xff00ff00); + map(0x5b0000, 0x5b04ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask32(0x00ff00ff); + map(0x5c0000, 0x5c0003).r(this, FUNC(djmain_state::inp1_r)); // DSW3,BTN3,BTN2,BTN1 // input port control (buttons and DIP switches) + map(0x5c8000, 0x5c8003).r(this, FUNC(djmain_state::inp2_r)); // DSW1,DSW2,UNK2,UNK1 // input port control (DIP switches) + map(0x5d0000, 0x5d0003).w(this, FUNC(djmain_state::light_ctrl_1_w)); // light/coin blocker control + map(0x5d2000, 0x5d2003).w(this, FUNC(djmain_state::light_ctrl_2_w)); // light/coin blocker control + map(0x5d4000, 0x5d4003).w(this, FUNC(djmain_state::v_ctrl_w)); // VIDEO control + map(0x5d6000, 0x5d6003).w(this, FUNC(djmain_state::sndram_bank_w)); // SOUND RAM bank + map(0x5e0000, 0x5e0003).rw(this, FUNC(djmain_state::turntable_r), FUNC(djmain_state::turntable_select_w)); // input port control (turn tables) + map(0x600000, 0x601fff).r(this, FUNC(djmain_state::v_rom_r)); // VIDEO ROM readthrough (for POST) + map(0x801000, 0x8017ff).ram().share("obj_ram"); // OBJECT RAM + map(0x802000, 0x802fff).w(this, FUNC(djmain_state::unknown802000_w)); // ?? + map(0x803000, 0x80309f).rw(this, FUNC(djmain_state::obj_ctrl_r), FUNC(djmain_state::obj_ctrl_w)); // OBJECT REGS + map(0x803800, 0x803fff).r(this, FUNC(djmain_state::obj_rom_r)); // OBJECT ROM readthrough (for POST) +} + +void djmain_state::maincpu_djmainj(address_map &map) +{ + maincpu_djmain(map); + + map(0xc00000, 0xc01fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); // VIDEO RAM (tilemap) (beatmania) + map(0xc02000, 0xc02047).w(this, FUNC(djmain_state::unknownc02000_w)); // ?? + map(0xf00000, 0xf0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // IDE control regs (beatmania) + map(0xf40000, 0xf4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); // IDE status control reg (beatmania) +} + +void djmain_state::maincpu_djmainu(address_map &map) +{ + maincpu_djmain(map); + + map(0xd00000, 0xd0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // IDE control regs (hiphopmania) + map(0xd40000, 0xd4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); // IDE status control reg (hiphopmania) + map(0xe00000, 0xe01fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); // VIDEO RAM (tilemap) (hiphopmania) +} + +void djmain_state::maincpu_djmaina(address_map &map) +{ + maincpu_djmain(map); + + map(0xc00000, 0xc0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // IDE control regs + map(0xc40000, 0xc4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); // IDE status control reg + map(0xf00000, 0xf01fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); // VIDEO RAM (tilemap) +} + +void djmain_state::k054539_map(address_map &map) +{ + map(0x000000, 0xffffff).ram().share("sndram"); +} /************************************* diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp index 4f080c35a9f..231c17f5921 100644 --- a/src/mame/drivers/dkong.cpp +++ b/src/mame/drivers/dkong.cpp @@ -797,124 +797,132 @@ WRITE8_MEMBER(dkong_state::nmi_mask_w) * *************************************/ -ADDRESS_MAP_START(dkong_state::dkong_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ - AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("ls175.3d", latch8_device, write) /* IN0, sound CPU intf */ - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w)/* IN1 */ - - AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */ - AM_RANGE(0x7d00, 0x7d07) AM_DEVWRITE("ls259.6h", latch8_device, bit0_w) /* Sound signals */ - - AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */ - AM_RANGE(0x7d81, 0x7d81) AM_WRITE(radarscp_grid_enable_w) - AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w) - AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ - AM_RANGE(0x7d84, 0x7d84) AM_WRITE(nmi_mask_w) - AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */ - AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dkong_state::dkongjr_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM - AM_RANGE(0x6c00, 0x6fff) AM_RAM /* DK3 bootleg only */ - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ - AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ - - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("ls174.3d", latch8_device, write) /* IN0, sound interface */ - - AM_RANGE(0x7c80, 0x7c87) AM_DEVWRITE("ls259.4h", latch8_device, bit0_w) /* latch for sound and signals above */ - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(dkongjr_gfxbank_w) - - AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */ - AM_RANGE(0x7d00, 0x7d07) AM_DEVWRITE("ls259.6h", latch8_device, bit0_w) /* Sound addrs */ - - AM_RANGE(0x7d80, 0x7d87) AM_DEVWRITE("ls259.5h", latch8_device, bit0_w) /* latch for sound and signals above*/ - AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */ - AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w) - AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ - AM_RANGE(0x7d84, 0x7d84) AM_WRITE(nmi_mask_w) - AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */ - AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w) - - AM_RANGE(0x8000, 0x9fff) AM_ROM /* bootleg DKjr only */ - AM_RANGE(0xb000, 0xbfff) AM_ROM /* pestplce only */ - AM_RANGE(0xd000, 0xdfff) AM_ROM /* DK3 bootleg only */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(dkong_state::dkong3_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x6800, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ - AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_DEVWRITE("latch1", latch8_device, write) - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_DEVWRITE("latch2", latch8_device, write) - AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_DEVWRITE("latch3", latch8_device, write) - AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW1") AM_WRITE(dkong3_2a03_reset_w) - AM_RANGE(0x7e80, 0x7e80) AM_WRITE(dkong3_coin_counter_w) - AM_RANGE(0x7e81, 0x7e81) AM_WRITE(dkong3_gfxbank_w) - AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w) - AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ - AM_RANGE(0x7e84, 0x7e84) AM_WRITE(nmi_mask_w) - AM_RANGE(0x7e85, 0x7e85) AM_WRITE(dkong_z80dma_rdy_w) /* ==> DMA Chip */ - AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w) - AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(dkong_state::dkong3_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("z80dma", z80dma_device, read, write) /* dma controller */ -ADDRESS_MAP_END +void dkong_state::dkong_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x6000, 0x6bff).ram(); + map(0x7000, 0x73ff).ram().share("sprite_ram"); /* sprite set 1 */ + map(0x7400, 0x77ff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram"); + map(0x7800, 0x780f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); /* P8257 control registers */ + map(0x7c00, 0x7c00).portr("IN0").w("ls175.3d", FUNC(latch8_device::write)); /* IN0, sound CPU intf */ + map(0x7c80, 0x7c80).portr("IN1").w(this, FUNC(dkong_state::radarscp_grid_color_w));/* IN1 */ + + map(0x7d00, 0x7d00).r(this, FUNC(dkong_state::dkong_in2_r)); /* IN2 */ + map(0x7d00, 0x7d07).w(m_dev_6h, FUNC(latch8_device::bit0_w)); /* Sound signals */ + + map(0x7d80, 0x7d80).portr("DSW0").w(this, FUNC(dkong_state::dkong_audio_irq_w)); /* DSW0 */ + map(0x7d81, 0x7d81).w(this, FUNC(dkong_state::radarscp_grid_enable_w)); + map(0x7d82, 0x7d82).w(this, FUNC(dkong_state::dkong_flipscreen_w)); + map(0x7d83, 0x7d83).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */ + map(0x7d84, 0x7d84).w(this, FUNC(dkong_state::nmi_mask_w)); + map(0x7d85, 0x7d85).w(this, FUNC(dkong_state::p8257_drq_w)); /* P8257 ==> /DRQ0 /DRQ1 */ + map(0x7d86, 0x7d87).w(this, FUNC(dkong_state::dkong_palettebank_w)); +} + +void dkong_state::dkongjr_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6bff).ram(); + map(0x6c00, 0x6fff).ram(); /* DK3 bootleg only */ + map(0x7000, 0x73ff).ram().share("sprite_ram"); /* sprite set 1 */ + map(0x7400, 0x77ff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram"); + map(0x7800, 0x780f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); /* P8257 control registers */ + + map(0x7c00, 0x7c00).portr("IN0").w("ls174.3d", FUNC(latch8_device::write)); /* IN0, sound interface */ + + map(0x7c80, 0x7c87).w("ls259.4h", FUNC(latch8_device::bit0_w)); /* latch for sound and signals above */ + map(0x7c80, 0x7c80).portr("IN1").w(this, FUNC(dkong_state::dkongjr_gfxbank_w)); + + map(0x7d00, 0x7d00).r(this, FUNC(dkong_state::dkong_in2_r)); /* IN2 */ + map(0x7d00, 0x7d07).w(m_dev_6h, FUNC(latch8_device::bit0_w)); /* Sound addrs */ + + map(0x7d80, 0x7d87).w("ls259.5h", FUNC(latch8_device::bit0_w)); /* latch for sound and signals above*/ + map(0x7d80, 0x7d80).portr("DSW0").w(this, FUNC(dkong_state::dkong_audio_irq_w)); /* DSW0 */ + map(0x7d82, 0x7d82).w(this, FUNC(dkong_state::dkong_flipscreen_w)); + map(0x7d83, 0x7d83).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */ + map(0x7d84, 0x7d84).w(this, FUNC(dkong_state::nmi_mask_w)); + map(0x7d85, 0x7d85).w(this, FUNC(dkong_state::p8257_drq_w)); /* P8257 ==> /DRQ0 /DRQ1 */ + map(0x7d86, 0x7d87).w(this, FUNC(dkong_state::dkong_palettebank_w)); + + map(0x8000, 0x9fff).rom(); /* bootleg DKjr only */ + map(0xb000, 0xbfff).rom(); /* pestplce only */ + map(0xd000, 0xdfff).rom(); /* DK3 bootleg only */ +} + +void dkong_state::dkong3_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x6800, 0x6fff).ram(); + map(0x7000, 0x73ff).ram().share("sprite_ram"); /* sprite set 1 */ + map(0x7400, 0x77ff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram"); + map(0x7c00, 0x7c00).portr("IN0").w("latch1", FUNC(latch8_device::write)); + map(0x7c80, 0x7c80).portr("IN1").w("latch2", FUNC(latch8_device::write)); + map(0x7d00, 0x7d00).portr("DSW0").w("latch3", FUNC(latch8_device::write)); + map(0x7d80, 0x7d80).portr("DSW1").w(this, FUNC(dkong_state::dkong3_2a03_reset_w)); + map(0x7e80, 0x7e80).w(this, FUNC(dkong_state::dkong3_coin_counter_w)); + map(0x7e81, 0x7e81).w(this, FUNC(dkong_state::dkong3_gfxbank_w)); + map(0x7e82, 0x7e82).w(this, FUNC(dkong_state::dkong_flipscreen_w)); + map(0x7e83, 0x7e83).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */ + map(0x7e84, 0x7e84).w(this, FUNC(dkong_state::nmi_mask_w)); + map(0x7e85, 0x7e85).w(this, FUNC(dkong_state::dkong_z80dma_rdy_w)); /* ==> DMA Chip */ + map(0x7e86, 0x7e87).w(this, FUNC(dkong_state::dkong_palettebank_w)); + map(0x8000, 0x9fff).rom(); /* DK3 and bootleg DKjr only */ +} + +void dkong_state::dkong3_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_z80dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); /* dma controller */ +} /* Epos conversions */ -ADDRESS_MAP_START(dkong_state::epos_readport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READ(epos_decrypt_rom) /* Switch protection logic */ -ADDRESS_MAP_END +void dkong_state::epos_readport(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).r(this, FUNC(dkong_state::epos_decrypt_rom)); /* Switch protection logic */ +} /* S2650 conversions */ -ADDRESS_MAP_START(dkong_state::s2650_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("sprite_ram") /* 0x7000 */ - AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x007f) AM_READ_PORT("IN0") AM_DEVWRITE("ls175.3d", latch8_device, write) - AM_RANGE(0x1480, 0x1480) AM_READ_PORT("IN1") - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x007f) AM_READ(dkong_in2_r) /* IN2 */ - AM_RANGE(0x1500, 0x1507) AM_DEVWRITE("ls259.6h", latch8_device, bit0_w) /* Sound signals */ - AM_RANGE(0x1580, 0x1580) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */ - AM_RANGE(0x1582, 0x1582) AM_WRITE(dkong_flipscreen_w) - AM_RANGE(0x1583, 0x1583) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ - AM_RANGE(0x1584, 0x1584) AM_NOP /* Possibly still interrupt enable */ - AM_RANGE(0x1585, 0x1585) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */ - AM_RANGE(0x1586, 0x1587) AM_WRITE(dkong_palettebank_w) - AM_RANGE(0x1600, 0x17ff) AM_RAM /* 0x6400 spriteram location */ - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") /* 0x7400 */ - AM_RANGE(0x1C00, 0x1f7f) AM_RAM /* 0x6000 */ - AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ +void dkong_state::s2650_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram().share("sprite_ram"); /* 0x7000 */ + map(0x1400, 0x1400).mirror(0x007f).portr("IN0").w("ls175.3d", FUNC(latch8_device::write)); + map(0x1480, 0x1480).portr("IN1"); + map(0x1500, 0x1500).mirror(0x007f).r(this, FUNC(dkong_state::dkong_in2_r)); /* IN2 */ + map(0x1500, 0x1507).w(m_dev_6h, FUNC(latch8_device::bit0_w)); /* Sound signals */ + map(0x1580, 0x1580).portr("DSW0").w(this, FUNC(dkong_state::dkong_audio_irq_w)); /* DSW0 */ + map(0x1582, 0x1582).w(this, FUNC(dkong_state::dkong_flipscreen_w)); + map(0x1583, 0x1583).w(this, FUNC(dkong_state::dkong_spritebank_w)); /* 2 PSL Signal */ + map(0x1584, 0x1584).noprw(); /* Possibly still interrupt enable */ + map(0x1585, 0x1585).w(this, FUNC(dkong_state::p8257_drq_w)); /* P8257 ==> /DRQ0 /DRQ1 */ + map(0x1586, 0x1587).w(this, FUNC(dkong_state::dkong_palettebank_w)); + map(0x1600, 0x17ff).ram(); /* 0x6400 spriteram location */ + map(0x1800, 0x1bff).ram().w(this, FUNC(dkong_state::dkong_videoram_w)).share("video_ram"); /* 0x7400 */ + map(0x1C00, 0x1f7f).ram(); /* 0x6000 */ + map(0x1f80, 0x1f8f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); /* P8257 control registers */ /* 0x6800 not remapped */ - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w) - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x5000, 0x5fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w) - AM_RANGE(0x6000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dkong_state::s2650_io_map) - AM_RANGE(0x00, 0x00) AM_READ(s2650_port0_r) - AM_RANGE(0x01, 0x01) AM_READ(s2650_port1_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dkong_state::s2650_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(s2650_data_w) -ADDRESS_MAP_END + map(0x2000, 0x2fff).rom(); + map(0x3000, 0x3fff).rw(this, FUNC(dkong_state::s2650_mirror_r), FUNC(dkong_state::s2650_mirror_w)); + map(0x4000, 0x4fff).rom(); + map(0x5000, 0x5fff).rw(this, FUNC(dkong_state::s2650_mirror_r), FUNC(dkong_state::s2650_mirror_w)); + map(0x6000, 0x6fff).rom(); + map(0x7000, 0x7fff).rw(this, FUNC(dkong_state::s2650_mirror_r), FUNC(dkong_state::s2650_mirror_w)); +} + +void dkong_state::s2650_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(dkong_state::s2650_port0_r)); + map(0x01, 0x01).r(this, FUNC(dkong_state::s2650_port1_r)); +} + +void dkong_state::s2650_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).w(this, FUNC(dkong_state::s2650_data_w)); +} diff --git a/src/mame/drivers/dlair.cpp b/src/mame/drivers/dlair.cpp index 739739cf65d..b34a32335c0 100644 --- a/src/mame/drivers/dlair.cpp +++ b/src/mame/drivers/dlair.cpp @@ -380,20 +380,21 @@ WRITE8_MEMBER(dlair_state::laserdisc_w) *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(dlair_state::dlus_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("P1") - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ(laserdisc_r) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE(misc_w) - AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1fc7) AM_WRITE(laserdisc_w) - AM_RANGE(0xe030, 0xe037) AM_MIRROR(0x1fc0) AM_WRITE(led_den2_w) - AM_RANGE(0xe038, 0xe03f) AM_MIRROR(0x1fc0) AM_WRITE(led_den1_w) -ADDRESS_MAP_END +void dlair_state::dlus_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa7ff).mirror(0x1800).ram(); + map(0xc000, 0xc000).mirror(0x1fc7).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xc008, 0xc008).mirror(0x1fc7).portr("P1"); + map(0xc010, 0xc010).mirror(0x1fc7).portr("SYSTEM"); + map(0xc020, 0xc020).mirror(0x1fc7).r(this, FUNC(dlair_state::laserdisc_r)); + map(0xe000, 0xe000).mirror(0x1fc7).w("aysnd", FUNC(ay8910_device::data_w)); + map(0xe008, 0xe008).mirror(0x1fc7).w(this, FUNC(dlair_state::misc_w)); + map(0xe010, 0xe010).mirror(0x1fc7).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xe020, 0xe020).mirror(0x1fc7).w(this, FUNC(dlair_state::laserdisc_w)); + map(0xe030, 0xe037).mirror(0x1fc0).w(this, FUNC(dlair_state::led_den2_w)); + map(0xe038, 0xe03f).mirror(0x1fc0).w(this, FUNC(dlair_state::led_den1_w)); +} @@ -404,31 +405,33 @@ ADDRESS_MAP_END *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(dlair_state::dleuro_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1f47) // WT LED 1 - AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1f47) // WT LED 2 - AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1f47) AM_WRITE(led_den1_w) // WT EXT LED 1 - AM_RANGE(0xe018, 0xe018) AM_MIRROR(0x1f47) AM_WRITE(led_den2_w) // WT EXT LED 2 - AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1f47) AM_WRITE(laserdisc_w) // DISC WT - AM_RANGE(0xe028, 0xe028) AM_MIRROR(0x1f47) AM_WRITE(dleuro_misc_w) // WT MISC - AM_RANGE(0xe030, 0xe030) AM_MIRROR(0x1f47) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) // CLR WDOG - AM_RANGE(0xe080, 0xe080) AM_MIRROR(0x1f47) AM_READ_PORT("P1") // CP A - AM_RANGE(0xe088, 0xe088) AM_MIRROR(0x1f47) AM_READ_PORT("SYSTEM") // CP B - AM_RANGE(0xe090, 0xe090) AM_MIRROR(0x1f47) AM_READ_PORT("DSW1") // OPT SW A - AM_RANGE(0xe098, 0xe098) AM_MIRROR(0x1f47) AM_READ_PORT("DSW2") // OPT SW B - AM_RANGE(0xe0a0, 0xe0a0) AM_MIRROR(0x1f47) AM_READ(laserdisc_r) // RD DISC DATA -ADDRESS_MAP_END +void dlair_state::dleuro_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa7ff).mirror(0x1800).ram(); + map(0xc000, 0xc7ff).mirror(0x1800).ram().share("videoram"); + map(0xe000, 0xe000).mirror(0x1f47); // WT LED 1 + map(0xe008, 0xe008).mirror(0x1f47); // WT LED 2 + map(0xe010, 0xe010).mirror(0x1f47).w(this, FUNC(dlair_state::led_den1_w)); // WT EXT LED 1 + map(0xe018, 0xe018).mirror(0x1f47).w(this, FUNC(dlair_state::led_den2_w)); // WT EXT LED 2 + map(0xe020, 0xe020).mirror(0x1f47).w(this, FUNC(dlair_state::laserdisc_w)); // DISC WT + map(0xe028, 0xe028).mirror(0x1f47).w(this, FUNC(dlair_state::dleuro_misc_w)); // WT MISC + map(0xe030, 0xe030).mirror(0x1f47).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // CLR WDOG + map(0xe080, 0xe080).mirror(0x1f47).portr("P1"); // CP A + map(0xe088, 0xe088).mirror(0x1f47).portr("SYSTEM"); // CP B + map(0xe090, 0xe090).mirror(0x1f47).portr("DSW1"); // OPT SW A + map(0xe098, 0xe098).mirror(0x1f47).portr("DSW2"); // OPT SW B + map(0xe0a0, 0xe0a0).mirror(0x1f47).r(this, FUNC(dlair_state::laserdisc_r)); // RD DISC DATA +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(dlair_state::dleuro_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x7c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) -ADDRESS_MAP_END +void dlair_state::dleuro_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x7c).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x83).mirror(0x7c).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); +} /* diff --git a/src/mame/drivers/dlair2.cpp b/src/mame/drivers/dlair2.cpp index 857c93c872b..d74cbd125ff 100644 --- a/src/mame/drivers/dlair2.cpp +++ b/src/mame/drivers/dlair2.cpp @@ -73,18 +73,20 @@ uint32_t dlair2_state::screen_update( screen_device &screen, bitmap_ind16 &bitma return 0; } -ADDRESS_MAP_START(dlair2_state::dlair2_map) - AM_RANGE(0x00000, 0xeffff) AM_RAM - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END +void dlair2_state::dlair2_map(address_map &map) +{ + map(0x00000, 0xeffff).ram(); + map(0xf0000, 0xfffff).rom().region("ipl", 0); +} -ADDRESS_MAP_START(dlair2_state::dlair2_io) +void dlair2_state::dlair2_io(address_map &map) +{ // AM_RANGE(0x020, 0x020) ICR // AM_RANGE(0x042, 0x043) sound related // AM_RANGE(0x061, 0x061) sound related // AM_RANGE(0x200, 0x203) i/o, coin, eeprom // AM_RANGE(0x2f8, 0x2ff) COM2 -ADDRESS_MAP_END +} static INPUT_PORTS_START( dlair2 ) /* dummy active high structure */ diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp index f68e3c2200e..40a689c2166 100644 --- a/src/mame/drivers/dm7000.cpp +++ b/src/mame/drivers/dm7000.cpp @@ -227,24 +227,25 @@ WRITE16_MEMBER( dm7000_state::dm7000_enet_w ) 400f 0xxx IDE Controller */ -ADDRESS_MAP_START(dm7000_state::dm7000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // RAM page 0 - 32MB - AM_RANGE(0x20000000, 0x21ffffff) AM_RAM // RAM page 1 - 32MB +void dm7000_state::dm7000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x01ffffff).ram(); // RAM page 0 - 32MB + map(0x20000000, 0x21ffffff).ram(); // RAM page 1 - 32MB - AM_RANGE(0x40030000, 0x4003000f) AM_READWRITE8(dm7000_iic0_r, dm7000_iic0_w, 0xffffffff) - AM_RANGE(0x40040000, 0x40040007) AM_READWRITE8(dm7000_scc0_r, dm7000_scc0_w, 0xffffffff) - AM_RANGE(0x40060000, 0x40060047) AM_READWRITE8(dm7000_gpio0_r, dm7000_gpio0_w, 0xffffffff) - AM_RANGE(0x400b0000, 0x400b000f) AM_READWRITE8(dm7000_iic1_r, dm7000_iic1_w, 0xffffffff) - AM_RANGE(0x400c0000, 0x400c0007) AM_READWRITE8(dm7000_scp0_r, dm7000_scp0_w, 0xffffffff) + map(0x40030000, 0x4003000f).rw(this, FUNC(dm7000_state::dm7000_iic0_r), FUNC(dm7000_state::dm7000_iic0_w)); + map(0x40040000, 0x40040007).rw(this, FUNC(dm7000_state::dm7000_scc0_r), FUNC(dm7000_state::dm7000_scc0_w)); + map(0x40060000, 0x40060047).rw(this, FUNC(dm7000_state::dm7000_gpio0_r), FUNC(dm7000_state::dm7000_gpio0_w)); + map(0x400b0000, 0x400b000f).rw(this, FUNC(dm7000_state::dm7000_iic1_r), FUNC(dm7000_state::dm7000_iic1_w)); + map(0x400c0000, 0x400c0007).rw(this, FUNC(dm7000_state::dm7000_scp0_r), FUNC(dm7000_state::dm7000_scp0_w)); /* ENET - ASIX AX88796 */ - AM_RANGE(0x72000300, 0x720003ff) AM_READWRITE16(dm7000_enet_r, dm7000_enet_w, 0xffffffff) + map(0x72000300, 0x720003ff).rw(this, FUNC(dm7000_state::dm7000_enet_r), FUNC(dm7000_state::dm7000_enet_w)); - AM_RANGE(0x7f800000, 0x7ffdffff) AM_ROM AM_REGION("user2",0) - AM_RANGE(0x7ffe0000, 0x7fffffff) AM_ROM AM_REGION("user1",0) + map(0x7f800000, 0x7ffdffff).rom().region("user2", 0); + map(0x7ffe0000, 0x7fffffff).rom().region("user1", 0); //AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( dm7000 ) diff --git a/src/mame/drivers/dmax8000.cpp b/src/mame/drivers/dmax8000.cpp index 4c00ec56958..be4b2fbef44 100644 --- a/src/mame/drivers/dmax8000.cpp +++ b/src/mame/drivers/dmax8000.cpp @@ -98,27 +98,29 @@ WRITE8_MEMBER( dmax8000_state::port40_w ) membank("bankr0")->set_entry(BIT(data, 0)); } -ADDRESS_MAP_START(dmax8000_state::dmax8000_mem) - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x1000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dmax8000_state::dmax8000_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio1", z80pio_device, read, write) // fdd controls - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio2", z80pio_device, read, write) // centronics & parallel ports - AM_RANGE(0x14, 0x17) AM_WRITE(port14_w) // control lines for the centronics & parallel ports +void dmax8000_state::dmax8000_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0xffff).ram(); +} + +void dmax8000_state::dmax8000_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x04, 0x07).rw("dart1", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x08, 0x0b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).rw("pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // fdd controls + map(0x10, 0x13).rw("pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // centronics & parallel ports + map(0x14, 0x17).w(this, FUNC(dmax8000_state::port14_w)); // control lines for the centronics & parallel ports //AM_RANGE(0x18, 0x19) AM_MIRROR(2) AM_DEVREADWRITE("am9511", am9512_device, read, write) // optional numeric coprocessor //AM_RANGE(0x1c, 0x1d) AM_MIRROR(2) // optional hard disk controller (1C=status, 1D=data) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("dart2", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) // memory bank control + map(0x20, 0x23).rw("dart2", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x40, 0x40).w(this, FUNC(dmax8000_state::port40_w)); // memory bank control //AM_RANGE(0x60, 0x67) // optional IEEE488 GPIB - AM_RANGE(0x70, 0x7f) AM_DEVREADWRITE("rtc", mm58274c_device, read, write) // optional RTC -ADDRESS_MAP_END + map(0x70, 0x7f).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)); // optional RTC +} /* Input ports */ static INPUT_PORTS_START( dmax8000 ) diff --git a/src/mame/drivers/dmndrby.cpp b/src/mame/drivers/dmndrby.cpp index 5d06938d1a8..b0289b3c597 100644 --- a/src/mame/drivers/dmndrby.cpp +++ b/src/mame/drivers/dmndrby.cpp @@ -145,31 +145,33 @@ WRITE8_MEMBER(dmndrby_state::output_w) // popmessage("%02x|%02x|%02x|%02x|%02x|%02x|%02x|%02x|",m_io_port[0],m_io_port[1],m_io_port[2],m_io_port[3],m_io_port[4],m_io_port[5],m_io_port[6],m_io_port[7]); } -ADDRESS_MAP_START(dmndrby_state::memmap) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xc007) AM_READ(input_r) - AM_RANGE(0xc000, 0xc007) AM_WRITE(output_w) - AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW1") - AM_RANGE(0xc803, 0xc803) AM_READ_PORT("DSW2") - AM_RANGE(0xca00, 0xca00) AM_WRITENOP//(vblank_irq_w) //??? - AM_RANGE(0xca01, 0xca01) AM_WRITENOP //watchdog - AM_RANGE(0xca02, 0xca02) AM_RAM_WRITE(dderby_sound_w) - AM_RANGE(0xca03, 0xca03) AM_WRITENOP//(timer_irq_w) //??? - AM_RANGE(0xcc00, 0xcc05) AM_RAM AM_SHARE("scroll_ram") - AM_RANGE(0xce08, 0xce1f) AM_RAM AM_SHARE("sprite_ram") // horse sprites - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("vidchars") // char ram - AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("vidattribs") // colours/ attrib ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(dmndrby_state::dderby_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x1000) AM_RAM //??? - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4001, 0x4001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x6000, 0x67ff) AM_RAM -ADDRESS_MAP_END +void dmndrby_state::memmap(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x8fff).ram().share("nvram"); + map(0xc000, 0xc007).r(this, FUNC(dmndrby_state::input_r)); + map(0xc000, 0xc007).w(this, FUNC(dmndrby_state::output_w)); + map(0xc802, 0xc802).portr("DSW1"); + map(0xc803, 0xc803).portr("DSW2"); + map(0xca00, 0xca00).nopw();//(vblank_irq_w) //??? + map(0xca01, 0xca01).nopw(); //watchdog + map(0xca02, 0xca02).ram().w(this, FUNC(dmndrby_state::dderby_sound_w)); + map(0xca03, 0xca03).nopw();//(timer_irq_w) //??? + map(0xcc00, 0xcc05).ram().share("scroll_ram"); + map(0xce08, 0xce1f).ram().share("sprite_ram"); // horse sprites + map(0xd000, 0xd3ff).ram().share("vidchars"); // char ram + map(0xd400, 0xd7ff).ram().share("vidattribs"); // colours/ attrib ram +} + +void dmndrby_state::dderby_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x1000).ram(); //??? + map(0x4000, 0x4001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4001, 0x4001).r("ay1", FUNC(ay8910_device::data_r)); + map(0x6000, 0x67ff).ram(); +} static INPUT_PORTS_START( dderby ) PORT_START("IN0") diff --git a/src/mame/drivers/dms5000.cpp b/src/mame/drivers/dms5000.cpp index 4b96f38e9e7..c76711cb6e8 100644 --- a/src/mame/drivers/dms5000.cpp +++ b/src/mame/drivers/dms5000.cpp @@ -30,15 +30,17 @@ public: }; -ADDRESS_MAP_START(dms5000_state::dms5000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dms5000_state::dms5000_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void dms5000_state::dms5000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).ram(); + map(0xfc000, 0xfffff).rom().region("user1", 0); +} + +void dms5000_state::dms5000_io(address_map &map) +{ + map.unmap_value_high(); +} /* Input ports */ static INPUT_PORTS_START( dms5000 ) diff --git a/src/mame/drivers/dms86.cpp b/src/mame/drivers/dms86.cpp index 74846c17e7b..742b8ee8245 100644 --- a/src/mame/drivers/dms86.cpp +++ b/src/mame/drivers/dms86.cpp @@ -81,23 +81,25 @@ READ16_MEMBER( dms86_state::port9c_r ) } -ADDRESS_MAP_START(dms86_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("roms",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dms86_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x82, 0x83) AM_READ(port82_r) +void dms86_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).ram(); + map(0xfe000, 0xfffff).rom().region("roms", 0); +} + +void dms86_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x82, 0x83).r(this, FUNC(dms86_state::port82_r)); //AM_RANGE(0x80, 0x87) AM_DEVREADWRITE8("sio1", z80sio_device, ba_cd_r, ba_cd_w, 0x00ff) - AM_RANGE(0x88, 0x8f) AM_DEVREADWRITE8("ctc", z80ctc_device, read, write, 0x00ff) - AM_RANGE(0x90, 0x97) AM_DEVREADWRITE8("sio2", z80sio_device, ba_cd_r, ba_cd_w, 0x00ff) - AM_RANGE(0x9A, 0x9B) AM_READ(port9a_r) // parallel SASI port - AM_RANGE(0x9c, 0x9d) AM_READ(port9c_r) - AM_RANGE(0x9c, 0x9d) AM_DEVWRITE8("terminal", generic_terminal_device, write, 0x00ff) -ADDRESS_MAP_END + map(0x88, 0x8f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff); + map(0x90, 0x97).rw("sio2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)).umask16(0x00ff); + map(0x9A, 0x9B).r(this, FUNC(dms86_state::port9a_r)); // parallel SASI port + map(0x9c, 0x9d).r(this, FUNC(dms86_state::port9c_r)); + map(0x9c, 0x9c).w("terminal", FUNC(generic_terminal_device::write)); +} /* Input ports */ static INPUT_PORTS_START( dms86 ) diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index e31c9f11632..9da496c0f82 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -513,34 +513,36 @@ uint8_t dmv_state::program_read(address_space &space, int cas, offs_t offset) return data; } -ADDRESS_MAP_START(dmv_state::dmv_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(program_r, program_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dmv_state::dmv_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(leds_w) - AM_RANGE(0x10, 0x10) AM_READWRITE(ramsel_r, ramsel_w) - AM_RANGE(0x11, 0x11) AM_READWRITE(romsel_r, romsel_w) - AM_RANGE(0x12, 0x12) AM_WRITE(tc_set_w) - AM_RANGE(0x13, 0x13) AM_READ(sys_status_r) - AM_RANGE(0x14, 0x14) AM_WRITE(fdd_motor_w) - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("dma8237", am9517a_device, read, write) - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("kb_ctrl_mcu", upi41_cpu_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x50, 0x51) AM_DEVICE("i8272", i8272a_device, map) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0xa0, 0xa1) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) - AM_RANGE(0xd0, 0xd7) AM_WRITE(switch16_w) - AM_RANGE(0xe0, 0xe7) AM_WRITE(rambank_w) - - AM_RANGE(0x60, 0x6f) AM_READWRITE(ifsel0_r, ifsel0_w) - AM_RANGE(0x70, 0x7f) AM_READWRITE(ifsel1_r, ifsel1_w) - AM_RANGE(0x30, 0x3f) AM_READWRITE(ifsel2_r, ifsel2_w) - AM_RANGE(0xb0, 0xbf) AM_READWRITE(ifsel3_r, ifsel3_w) - AM_RANGE(0xc0, 0xcf) AM_READWRITE(ifsel4_r, ifsel4_w) -ADDRESS_MAP_END +void dmv_state::dmv_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(dmv_state::program_r), FUNC(dmv_state::program_w)); +} + +void dmv_state::dmv_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(dmv_state::leds_w)); + map(0x10, 0x10).rw(this, FUNC(dmv_state::ramsel_r), FUNC(dmv_state::ramsel_w)); + map(0x11, 0x11).rw(this, FUNC(dmv_state::romsel_r), FUNC(dmv_state::romsel_w)); + map(0x12, 0x12).w(this, FUNC(dmv_state::tc_set_w)); + map(0x13, 0x13).r(this, FUNC(dmv_state::sys_status_r)); + map(0x14, 0x14).w(this, FUNC(dmv_state::fdd_motor_w)); + map(0x20, 0x2f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x40, 0x41).rw("kb_ctrl_mcu", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); + map(0x50, 0x51).m(m_fdc, FUNC(i8272a_device::map)); + map(0x80, 0x83).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xa0, 0xa1).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); + map(0xd0, 0xd7).w(this, FUNC(dmv_state::switch16_w)); + map(0xe0, 0xe7).w(this, FUNC(dmv_state::rambank_w)); + + map(0x60, 0x6f).rw(this, FUNC(dmv_state::ifsel0_r), FUNC(dmv_state::ifsel0_w)); + map(0x70, 0x7f).rw(this, FUNC(dmv_state::ifsel1_r), FUNC(dmv_state::ifsel1_w)); + map(0x30, 0x3f).rw(this, FUNC(dmv_state::ifsel2_r), FUNC(dmv_state::ifsel2_w)); + map(0xb0, 0xbf).rw(this, FUNC(dmv_state::ifsel3_r), FUNC(dmv_state::ifsel3_w)); + map(0xc0, 0xcf).rw(this, FUNC(dmv_state::ifsel4_r), FUNC(dmv_state::ifsel4_w)); +} READ8_MEMBER(dmv_state::kb_mcu_port1_r) { @@ -560,10 +562,11 @@ WRITE8_MEMBER(dmv_state::kb_mcu_port2_w) m_slot7->keyint_w(BIT(data, 4)); } -ADDRESS_MAP_START(dmv_state::upd7220_map) - ADDRESS_MAP_GLOBAL_MASK(0x1ffff) - AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END +void dmv_state::upd7220_map(address_map &map) +{ + map.global_mask(0x1ffff); + map(0x00000, 0x1ffff).ram().share("video_ram"); +} /* Input ports */ INPUT_PORTS_START( dmv ) diff --git a/src/mame/drivers/docastle.cpp b/src/mame/drivers/docastle.cpp index 9be86dd759d..e7ecfb0e410 100644 --- a/src/mame/drivers/docastle.cpp +++ b/src/mame/drivers/docastle.cpp @@ -220,79 +220,86 @@ WRITE8_MEMBER(docastle_state::idsoccer_adpcm_w) } /* Memory Maps */ -ADDRESS_MAP_START(docastle_state::docastle_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x97ff) AM_RAM - AM_RANGE(0x9800, 0x99ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w) - AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb400, 0xb7ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe000) AM_WRITE(docastle_nmitrigger_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(docastle_state::docastle_map2) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared1_r, docastle_shared0_w) - AM_RANGE(0xc000, 0xc007) AM_SELECT(0x0080) AM_READWRITE(inputs_flipscreen_r, flipscreen_w) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("sn3", sn76489a_device, write) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("sn4", sn76489a_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(docastle_state::docastle_map3) - AM_RANGE(0x0000, 0x00ff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8008) AM_READ(docastle_shared1_r) // ??? - AM_RANGE(0xc003, 0xc003) AM_NOP // EP according to schematics - AM_RANGE(0xc432, 0xc435) AM_NOP // ??? -ADDRESS_MAP_END - -ADDRESS_MAP_START(docastle_state::docastle_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("crtc", mc6845_device, register_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(docastle_state::dorunrun_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w) - AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(docastle_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb400, 0xb7ff) AM_RAM_WRITE(docastle_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xb800, 0xb800) AM_WRITE(docastle_nmitrigger_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(docastle_state::dorunrun_map2) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("sn3", sn76489a_device, write) - AM_RANGE(0xac00, 0xac00) AM_DEVWRITE("sn4", sn76489a_device, write) - AM_RANGE(0xc000, 0xc007) AM_SELECT(0x0080) AM_READWRITE(inputs_flipscreen_r, flipscreen_w) - AM_RANGE(0xe000, 0xe008) AM_READWRITE(docastle_shared1_r, docastle_shared0_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(docastle_state::idsoccer_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x57ff) AM_RAM - AM_RANGE(0x5800, 0x59ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x6000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa008) AM_READWRITE(docastle_shared0_r, docastle_shared1_w) - AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb400, 0xb7ff) AM_MIRROR(0x0800) AM_RAM_WRITE(docastle_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xc000) AM_READWRITE(idsoccer_adpcm_status_r, idsoccer_adpcm_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(docastle_nmitrigger_w) -ADDRESS_MAP_END +void docastle_state::docastle_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x97ff).ram(); + map(0x9800, 0x99ff).ram().share("spriteram"); + map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared0_r), FUNC(docastle_state::docastle_shared1_w)); + map(0xa800, 0xa800).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xb000, 0xb3ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_videoram_w)).share("videoram"); + map(0xb400, 0xb7ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_colorram_w)).share("colorram"); + map(0xe000, 0xe000).w(this, FUNC(docastle_state::docastle_nmitrigger_w)); +} + +void docastle_state::docastle_map2(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared1_r), FUNC(docastle_state::docastle_shared0_w)); + map(0xc000, 0xc007).select(0x0080).rw(this, FUNC(docastle_state::inputs_flipscreen_r), FUNC(docastle_state::flipscreen_w)); + map(0xe000, 0xe000).w("sn1", FUNC(sn76489a_device::write)); + map(0xe400, 0xe400).w("sn2", FUNC(sn76489a_device::write)); + map(0xe800, 0xe800).w("sn3", FUNC(sn76489a_device::write)); + map(0xec00, 0xec00).w("sn4", FUNC(sn76489a_device::write)); +} + +void docastle_state::docastle_map3(address_map &map) +{ + map(0x0000, 0x00ff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8008).r(this, FUNC(docastle_state::docastle_shared1_r)); // ??? + map(0xc003, 0xc003).noprw(); // EP according to schematics + map(0xc432, 0xc435).noprw(); // ??? +} + +void docastle_state::docastle_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x02, 0x02).w(m_crtc, FUNC(mc6845_device::register_w)); +} + + +void docastle_state::dorunrun_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x37ff).ram(); + map(0x3800, 0x39ff).ram().share("spriteram"); + map(0x4000, 0x9fff).rom(); + map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared0_r), FUNC(docastle_state::docastle_shared1_w)); + map(0xa800, 0xa800).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xb000, 0xb3ff).ram().w(this, FUNC(docastle_state::docastle_videoram_w)).share("videoram"); + map(0xb400, 0xb7ff).ram().w(this, FUNC(docastle_state::docastle_colorram_w)).share("colorram"); + map(0xb800, 0xb800).w(this, FUNC(docastle_state::docastle_nmitrigger_w)); +} + +void docastle_state::dorunrun_map2(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).w("sn1", FUNC(sn76489a_device::write)); + map(0xa400, 0xa400).w("sn2", FUNC(sn76489a_device::write)); + map(0xa800, 0xa800).w("sn3", FUNC(sn76489a_device::write)); + map(0xac00, 0xac00).w("sn4", FUNC(sn76489a_device::write)); + map(0xc000, 0xc007).select(0x0080).rw(this, FUNC(docastle_state::inputs_flipscreen_r), FUNC(docastle_state::flipscreen_w)); + map(0xe000, 0xe008).rw(this, FUNC(docastle_state::docastle_shared1_r), FUNC(docastle_state::docastle_shared0_w)); +} + + +void docastle_state::idsoccer_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x57ff).ram(); + map(0x5800, 0x59ff).ram().share("spriteram"); + map(0x6000, 0x9fff).rom(); + map(0xa000, 0xa008).rw(this, FUNC(docastle_state::docastle_shared0_r), FUNC(docastle_state::docastle_shared1_w)); + map(0xa800, 0xa800).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xb000, 0xb3ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_videoram_w)).share("videoram"); + map(0xb400, 0xb7ff).mirror(0x0800).ram().w(this, FUNC(docastle_state::docastle_colorram_w)).share("colorram"); + map(0xc000, 0xc000).rw(this, FUNC(docastle_state::idsoccer_adpcm_status_r), FUNC(docastle_state::idsoccer_adpcm_w)); + map(0xe000, 0xe000).w(this, FUNC(docastle_state::docastle_nmitrigger_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/dogfgt.cpp b/src/mame/drivers/dogfgt.cpp index c33657a1064..d5351e3489e 100644 --- a/src/mame/drivers/dogfgt.cpp +++ b/src/mame/drivers/dogfgt.cpp @@ -60,31 +60,33 @@ WRITE8_MEMBER(dogfgt_state::dogfgt_soundcontrol_w) -ADDRESS_MAP_START(dogfgt_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram") - AM_RANGE(0x0f80, 0x0fdf) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x1000, 0x17ff) AM_WRITE(dogfgt_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") - AM_RANGE(0x1800, 0x1800) AM_WRITE(dogfgt_1800_w) /* text color, flip screen & coin counters */ - AM_RANGE(0x1810, 0x1810) AM_READ_PORT("P2") - AM_RANGE(0x1810, 0x1810) AM_WRITE(subirqtrigger_w) - AM_RANGE(0x1820, 0x1820) AM_READ_PORT("DSW1") - AM_RANGE(0x1820, 0x1823) AM_WRITE(dogfgt_scroll_w) - AM_RANGE(0x1824, 0x1824) AM_WRITE(dogfgt_plane_select_w) - AM_RANGE(0x1830, 0x1830) AM_READ_PORT("DSW2") - AM_RANGE(0x1830, 0x1830) AM_WRITE(dogfgt_soundlatch_w) - AM_RANGE(0x1840, 0x1840) AM_WRITE(dogfgt_soundcontrol_w) - AM_RANGE(0x1870, 0x187f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dogfgt_bitmapram_r, dogfgt_bitmapram_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dogfgt_state::sub_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(sharedram_r, sharedram_w) - AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_irqack_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void dogfgt_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).rw(this, FUNC(dogfgt_state::sharedram_r), FUNC(dogfgt_state::sharedram_w)).share("sharedram"); + map(0x0f80, 0x0fdf).writeonly().share("spriteram"); + map(0x1000, 0x17ff).w(this, FUNC(dogfgt_state::dogfgt_bgvideoram_w)).share("bgvideoram"); + map(0x1800, 0x1800).portr("P1"); + map(0x1800, 0x1800).w(this, FUNC(dogfgt_state::dogfgt_1800_w)); /* text color, flip screen & coin counters */ + map(0x1810, 0x1810).portr("P2"); + map(0x1810, 0x1810).w(this, FUNC(dogfgt_state::subirqtrigger_w)); + map(0x1820, 0x1820).portr("DSW1"); + map(0x1820, 0x1823).w(this, FUNC(dogfgt_state::dogfgt_scroll_w)); + map(0x1824, 0x1824).w(this, FUNC(dogfgt_state::dogfgt_plane_select_w)); + map(0x1830, 0x1830).portr("DSW2"); + map(0x1830, 0x1830).w(this, FUNC(dogfgt_state::dogfgt_soundlatch_w)); + map(0x1840, 0x1840).w(this, FUNC(dogfgt_state::dogfgt_soundcontrol_w)); + map(0x1870, 0x187f).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2000, 0x3fff).rw(this, FUNC(dogfgt_state::dogfgt_bitmapram_r), FUNC(dogfgt_state::dogfgt_bitmapram_w)); + map(0x8000, 0xffff).rom(); +} + +void dogfgt_state::sub_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x27ff).rw(this, FUNC(dogfgt_state::sharedram_r), FUNC(dogfgt_state::sharedram_w)); + map(0x4000, 0x4000).w(this, FUNC(dogfgt_state::sub_irqack_w)); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp index d9fd3bda93d..7af993dad48 100644 --- a/src/mame/drivers/dolphunk.cpp +++ b/src/mame/drivers/dolphunk.cpp @@ -184,19 +184,21 @@ TIMER_DEVICE_CALLBACK_MEMBER(dauphin_state::dauphin_c) m_cass->output(BIT(m_cass_data, 0) ? -1.0 : +1.0); // 2000Hz } -ADDRESS_MAP_START(dauphin_state::dauphin_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x01ff) AM_ROM - AM_RANGE( 0x0200, 0x02ff) AM_RAM - AM_RANGE( 0x0c00, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dauphin_state::dauphin_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_WRITE(port00_w) // 4-led display - AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // speaker (NOT a keyclick) - AM_RANGE(0x07, 0x07) AM_READ(port07_r) // pushbuttons -ADDRESS_MAP_END +void dauphin_state::dauphin_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x01ff).rom(); + map(0x0200, 0x02ff).ram(); + map(0x0c00, 0x0fff).rom(); +} + +void dauphin_state::dauphin_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x03).w(this, FUNC(dauphin_state::port00_w)); // 4-led display + map(0x06, 0x06).w(this, FUNC(dauphin_state::port06_w)); // speaker (NOT a keyclick) + map(0x07, 0x07).r(this, FUNC(dauphin_state::port07_r)); // pushbuttons +} /* Input ports */ static INPUT_PORTS_START( dauphin ) diff --git a/src/mame/drivers/dominob.cpp b/src/mame/drivers/dominob.cpp index b75679d5719..72bb27f9062 100644 --- a/src/mame/drivers/dominob.cpp +++ b/src/mame/drivers/dominob.cpp @@ -179,25 +179,26 @@ WRITE8_MEMBER(dominob_state::dominob_d008_w) /* is there a purpose on this ? always set to 0x00 (read from 0xc47b in RAM) */ } -ADDRESS_MAP_START(dominob_state::memmap) - AM_RANGE(0x0000, 0xbfff) AM_ROM AM_WRITENOP // there are some garbage writes to ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xd001, 0xd001) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xd008, 0xd008) AM_WRITE(dominob_d008_w) - AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("IN0") - AM_RANGE(0xd010, 0xd010) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0xd018, 0xd018) AM_READ_PORT("IN2") AM_WRITENOP - - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe840, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf07f) AM_RAM AM_SHARE("bgram") - AM_RANGE(0xf080, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END +void dominob_state::memmap(address_map &map) +{ + map(0x0000, 0xbfff).rom().nopw(); // there are some garbage writes to ROM + map(0xc000, 0xc7ff).ram(); + + map(0xd000, 0xd001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xd001, 0xd001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xd008, 0xd008).w(this, FUNC(dominob_state::dominob_d008_w)); + map(0xd00c, 0xd00c).portr("IN0"); + map(0xd010, 0xd010).portr("IN1").nopw(); + map(0xd018, 0xd018).portr("IN2").nopw(); + + map(0xe000, 0xe7ff).ram().share("videoram"); + map(0xe800, 0xe83f).ram().share("spriteram"); + map(0xe840, 0xefff).ram(); + map(0xf000, 0xf07f).ram().share("bgram"); + map(0xf080, 0xf7ff).ram(); + map(0xf800, 0xfbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xfc00, 0xffff).ram(); +} /* I don't know if this has a purpose - also read in 'arkatayt' but not handled */ READ8_MEMBER(dominob_state::dominob_unk_port02_r) @@ -205,10 +206,11 @@ READ8_MEMBER(dominob_state::dominob_unk_port02_r) return 0xff; } -ADDRESS_MAP_START(dominob_state::portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_READ(dominob_unk_port02_r) -ADDRESS_MAP_END +void dominob_state::portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x02).r(this, FUNC(dominob_state::dominob_unk_port02_r)); +} static INPUT_PORTS_START( dominob ) diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp index 9ef8f215a1d..f0ddc0c10b9 100644 --- a/src/mame/drivers/dooyong.cpp +++ b/src/mame/drivers/dooyong.cpp @@ -794,190 +794,201 @@ uint32_t popbingo_state::screen_update_popbingo(screen_device &screen, bitmap_in ***************************************************************************/ -ADDRESS_MAP_START(dooyong_z80_ym2203_state::lastday_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xc008, 0xc00f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xc010, 0xc010) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc010, 0xc010) AM_WRITE(lastday_ctrl_w) /* coin counter, flip screen */ - AM_RANGE(0xc011, 0xc011) AM_READ_PORT("P1") - AM_RANGE(0xc011, 0xc011) AM_WRITE(bankswitch_w) - AM_RANGE(0xc012, 0xc012) AM_READ_PORT("P2") - AM_RANGE(0xc012, 0xc012) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc013, 0xc013) AM_READ_PORT("DSWA") - AM_RANGE(0xc014, 0xc014) AM_READ_PORT("DSWB") - AM_RANGE(0xc800, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(lastday_tx_r, lastday_tx_w) - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END +void dooyong_z80_ym2203_state::lastday_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc007).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xc008, 0xc00f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xc010, 0xc010).portr("SYSTEM"); + map(0xc010, 0xc010).w(this, FUNC(dooyong_z80_ym2203_state::lastday_ctrl_w)); /* coin counter, flip screen */ + map(0xc011, 0xc011).portr("P1"); + map(0xc011, 0xc011).w(this, FUNC(dooyong_z80_ym2203_state::bankswitch_w)); + map(0xc012, 0xc012).portr("P2"); + map(0xc012, 0xc012).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc013, 0xc013).portr("DSWA"); + map(0xc014, 0xc014).portr("DSWB"); + map(0xc800, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd000, 0xdfff).rw(this, FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w)); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("spriteram"); +} -ADDRESS_MAP_START(dooyong_z80_ym2203_state::pollux_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xefff) AM_READWRITE(lastday_tx_r, lastday_tx_w) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA") AM_WRITE(bankswitch_w) - AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB") - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P1") - AM_RANGE(0xf003, 0xf003) AM_READ_PORT("P2") - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf008, 0xf008) AM_WRITE(pollux_ctrl_w) /* coin counter, flip screen */ - AM_RANGE(0xf010, 0xf010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf018, 0xf01f) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xf020, 0xf027) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w) -ADDRESS_MAP_END +void dooyong_z80_ym2203_state::pollux_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xdfff).ram().share("spriteram"); + map(0xe000, 0xefff).rw(this, FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w)); + map(0xf000, 0xf000).portr("DSWA").w(this, FUNC(dooyong_z80_ym2203_state::bankswitch_w)); + map(0xf001, 0xf001).portr("DSWB"); + map(0xf002, 0xf002).portr("P1"); + map(0xf003, 0xf003).portr("P2"); + map(0xf004, 0xf004).portr("SYSTEM"); + map(0xf008, 0xf008).w(this, FUNC(dooyong_z80_ym2203_state::pollux_ctrl_w)); /* coin counter, flip screen */ + map(0xf010, 0xf010).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf018, 0xf01f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xf020, 0xf027).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xf800, 0xffff).rw(this, FUNC(dooyong_z80_ym2203_state::paletteram_flytiger_r), FUNC(dooyong_z80_ym2203_state::paletteram_flytiger_w)); +} -ADDRESS_MAP_START(dooyong_z80_ym2203_state::gulfstrm_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xefff) AM_READWRITE(lastday_tx_r, lastday_tx_w) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA") - AM_RANGE(0xf000, 0xf000) AM_WRITE(bankswitch_w) - AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB") - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2") - AM_RANGE(0xf003, 0xf003) AM_READ_PORT("P1") - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf008, 0xf008) AM_WRITE(pollux_ctrl_w) /* coin counter, flip screen */ - AM_RANGE(0xf010, 0xf010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf018, 0xf01f) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xf020, 0xf027) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END +void dooyong_z80_ym2203_state::gulfstrm_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xdfff).ram().share("spriteram"); + map(0xe000, 0xefff).rw(this, FUNC(dooyong_z80_ym2203_state::lastday_tx_r), FUNC(dooyong_z80_ym2203_state::lastday_tx_w)); + map(0xf000, 0xf000).portr("DSWA"); + map(0xf000, 0xf000).w(this, FUNC(dooyong_z80_ym2203_state::bankswitch_w)); + map(0xf001, 0xf001).portr("DSWB"); + map(0xf002, 0xf002).portr("P2"); + map(0xf003, 0xf003).portr("P1"); + map(0xf004, 0xf004).portr("SYSTEM"); + map(0xf008, 0xf008).w(this, FUNC(dooyong_z80_ym2203_state::pollux_ctrl_w)); /* coin counter, flip screen */ + map(0xf010, 0xf010).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf018, 0xf01f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xf020, 0xf027).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xf800, 0xffff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} -ADDRESS_MAP_START(dooyong_z80_state::bluehawk_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSWA") - AM_RANGE(0xc000, 0xc000) AM_WRITE(flip_screen_w) - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("DSWB") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc008, 0xc008) AM_WRITE(bankswitch_w) - AM_RANGE(0xc010, 0xc010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc018, 0xc01f) AM_DEVWRITE("fg2", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xc040, 0xc047) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xc048, 0xc04f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xc800, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(bluehawk_tx_r, bluehawk_tx_w) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void dooyong_z80_state::bluehawk_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("DSWA"); + map(0xc000, 0xc000).w(this, FUNC(dooyong_z80_state::flip_screen_w)); + map(0xc001, 0xc001).portr("DSWB"); + map(0xc002, 0xc002).portr("P1"); + map(0xc003, 0xc003).portr("P2"); + map(0xc004, 0xc004).portr("SYSTEM"); + map(0xc008, 0xc008).w(this, FUNC(dooyong_z80_state::bankswitch_w)); + map(0xc010, 0xc010).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc018, 0xc01f).w(m_fg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xc040, 0xc047).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xc048, 0xc04f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xc800, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd000, 0xdfff).rw(this, FUNC(dooyong_z80_state::bluehawk_tx_r), FUNC(dooyong_z80_state::bluehawk_tx_w)); + map(0xe000, 0xefff).ram().share("spriteram"); + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(dooyong_z80_state::flytiger_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("P1") - AM_RANGE(0xe000, 0xe000) AM_WRITE(bankswitch_w) - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P2") - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe006, 0xe006) AM_READ_PORT("DSWA") - AM_RANGE(0xe008, 0xe008) AM_READ_PORT("DSWB") - AM_RANGE(0xe010, 0xe010) AM_WRITE(flytiger_ctrl_w) /* coin counter, flip screen */ - AM_RANGE(0xe020, 0xe020) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xe030, 0xe037) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xe040, 0xe047) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xe800, 0xefff) AM_READWRITE(paletteram_flytiger_r, paletteram_flytiger_w) - AM_RANGE(0xf000, 0xffff) AM_READWRITE(lastday_tx_r, lastday_tx_w) -ADDRESS_MAP_END +void dooyong_z80_state::flytiger_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().share("spriteram"); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xe000).portr("P1"); + map(0xe000, 0xe000).w(this, FUNC(dooyong_z80_state::bankswitch_w)); + map(0xe002, 0xe002).portr("P2"); + map(0xe004, 0xe004).portr("SYSTEM"); + map(0xe006, 0xe006).portr("DSWA"); + map(0xe008, 0xe008).portr("DSWB"); + map(0xe010, 0xe010).w(this, FUNC(dooyong_z80_state::flytiger_ctrl_w)); /* coin counter, flip screen */ + map(0xe020, 0xe020).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xe030, 0xe037).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xe040, 0xe047).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xe800, 0xefff).rw(this, FUNC(dooyong_z80_state::paletteram_flytiger_r), FUNC(dooyong_z80_state::paletteram_flytiger_w)); + map(0xf000, 0xffff).rw(this, FUNC(dooyong_z80_state::lastday_tx_r), FUNC(dooyong_z80_state::lastday_tx_w)); +} -ADDRESS_MAP_START(dooyong_z80_state::primella_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_RAM /* what is this? looks like a palette? scratchpad RAM maybe? */ - AM_RANGE(0xe000, 0xefff) AM_READWRITE(bluehawk_tx_r, bluehawk_tx_w) - AM_RANGE(0xf000, 0xf7ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSWA") - AM_RANGE(0xf800, 0xf800) AM_WRITE(primella_ctrl_w) /* bank switch, flip screen etc */ - AM_RANGE(0xf810, 0xf810) AM_READ_PORT("DSWB") - AM_RANGE(0xf810, 0xf810) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf820, 0xf820) AM_READ_PORT("P1") - AM_RANGE(0xf830, 0xf830) AM_READ_PORT("P2") - AM_RANGE(0xf840, 0xf840) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("bg", dooyong_rom_tilemap_device, ctrl_w) - AM_RANGE(0xfc08, 0xfc0f) AM_DEVWRITE("fg", dooyong_rom_tilemap_device, ctrl_w) -ADDRESS_MAP_END +void dooyong_z80_state::primella_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd3ff).ram(); /* what is this? looks like a palette? scratchpad RAM maybe? */ + map(0xe000, 0xefff).rw(this, FUNC(dooyong_z80_state::bluehawk_tx_r), FUNC(dooyong_z80_state::bluehawk_tx_w)); + map(0xf000, 0xf7ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf800, 0xf800).portr("DSWA"); + map(0xf800, 0xf800).w(this, FUNC(dooyong_z80_state::primella_ctrl_w)); /* bank switch, flip screen etc */ + map(0xf810, 0xf810).portr("DSWB"); + map(0xf810, 0xf810).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf820, 0xf820).portr("P1"); + map(0xf830, 0xf830).portr("P2"); + map(0xf840, 0xf840).portr("SYSTEM"); + map(0xfc00, 0xfc07).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); + map(0xfc08, 0xfc0f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)); +} -ADDRESS_MAP_START(rshark_state::rshark_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) /* super-x needs this and is similar */ - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04cfff) AM_RAM - AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x04e000, 0x04ffff) AM_RAM - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW") - AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2") - AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c4000, 0x0c400f) AM_DEVWRITE8("bg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x0c4010, 0x0c401f) AM_DEVWRITE8("bg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x0c8000, 0x0c8fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0c0012, 0x0c0013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(ctrl_w) /* flip screen + unknown stuff */ - AM_RANGE(0x0cc000, 0x0cc00f) AM_DEVWRITE8("fg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x0cc010, 0x0cc01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) -ADDRESS_MAP_END +void rshark_state::rshark_map(address_map &map) +{ + map.global_mask(0xfffff); /* super-x needs this and is similar */ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04cfff).ram(); + map(0x04d000, 0x04dfff).ram().share("spriteram"); + map(0x04e000, 0x04ffff).ram(); + map(0x0c0002, 0x0c0003).portr("DSW"); + map(0x0c0004, 0x0c0005).portr("P1_P2"); + map(0x0c0006, 0x0c0007).portr("SYSTEM"); + map(0x0c4000, 0x0c400f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x0c4010, 0x0c401f).w(m_bg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x0c8000, 0x0c8fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0c0013, 0x0c0013).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0c0014, 0x0c0015).w(this, FUNC(rshark_state::ctrl_w)); /* flip screen + unknown stuff */ + map(0x0cc000, 0x0cc00f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x0cc010, 0x0cc01f).w(m_fg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); +} -ADDRESS_MAP_START(rshark_state::superx_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0d0000, 0x0dcfff) AM_RAM - AM_RANGE(0x0dd000, 0x0ddfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0de000, 0x0dffff) AM_RAM - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW") - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P1_P2") - AM_RANGE(0x080006, 0x080007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x084000, 0x08400f) AM_DEVWRITE8("bg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x084010, 0x08401f) AM_DEVWRITE8("bg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x088000, 0x088fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x080012, 0x080013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x080014, 0x080015) AM_WRITE(ctrl_w) /* flip screen + unknown stuff */ - AM_RANGE(0x08c000, 0x08c00f) AM_DEVWRITE8("fg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x08c010, 0x08c01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) -ADDRESS_MAP_END +void rshark_state::superx_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x03ffff).rom(); + map(0x0d0000, 0x0dcfff).ram(); + map(0x0dd000, 0x0ddfff).ram().share("spriteram"); + map(0x0de000, 0x0dffff).ram(); + map(0x080002, 0x080003).portr("DSW"); + map(0x080004, 0x080005).portr("P1_P2"); + map(0x080006, 0x080007).portr("SYSTEM"); + map(0x084000, 0x08400f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x084010, 0x08401f).w(m_bg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x088000, 0x088fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x080013, 0x080013).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x080014, 0x080015).w(this, FUNC(rshark_state::ctrl_w)); /* flip screen + unknown stuff */ + map(0x08c000, 0x08c00f).w(m_fg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x08c010, 0x08c01f).w(m_fg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); +} -ADDRESS_MAP_START(popbingo_state::popbingo_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04cfff) AM_RAM - AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x04e000, 0x04ffff) AM_RAM - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW") - AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2") - AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c0012, 0x0c0013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(ctrl_w) - AM_RANGE(0x0c0018, 0x0c001b) AM_WRITENOP // ? - AM_RANGE(0x0c4000, 0x0c400f) AM_DEVWRITE8("bg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x0c4010, 0x0c401f) AM_DEVWRITE8("bg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) - AM_RANGE(0x0c8000, 0x0c8fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") +void popbingo_state::popbingo_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04cfff).ram(); + map(0x04d000, 0x04dfff).ram().share("spriteram"); + map(0x04e000, 0x04ffff).ram(); + map(0x0c0002, 0x0c0003).portr("DSW"); + map(0x0c0004, 0x0c0005).portr("P1_P2"); + map(0x0c0006, 0x0c0007).portr("SYSTEM"); + map(0x0c0013, 0x0c0013).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0c0014, 0x0c0015).w(this, FUNC(popbingo_state::ctrl_w)); + map(0x0c0018, 0x0c001b).nopw(); // ? + map(0x0c4000, 0x0c400f).w(m_bg, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x0c4010, 0x0c401f).w(m_bg2, FUNC(dooyong_rom_tilemap_device::ctrl_w)).umask16(0x00ff); + map(0x0c8000, 0x0c8fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); //AM_RANGE(0x08c000, 0x08c00f) AM_DEVWRITE8("fg", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) apparently not present //AM_RANGE(0x08c010, 0x08c01f) AM_DEVWRITE8("fg2", dooyong_rom_tilemap_device, ctrl_w, 0x00ff) apparently not present - AM_RANGE(0x0dc000, 0x0dc01f) AM_RAM // registers of some kind? -ADDRESS_MAP_END + map(0x0dc000, 0x0dc01f).ram(); // registers of some kind? +} -ADDRESS_MAP_START(dooyong_z80_ym2203_state::lastday_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void dooyong_z80_ym2203_state::lastday_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} -ADDRESS_MAP_START(dooyong_z80_ym2203_state::pollux_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf802, 0xf803) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xf804, 0xf805) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void dooyong_z80_ym2203_state::pollux_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf802, 0xf803).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf804, 0xf805).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} ADDRESS_MAP_START(dooyong_state::bluehawk_sound_map) AM_RANGE(0x0000, 0xefff) AM_ROM diff --git a/src/mame/drivers/dorachan.cpp b/src/mame/drivers/dorachan.cpp index 49c24368319..5012c96dab7 100644 --- a/src/mame/drivers/dorachan.cpp +++ b/src/mame/drivers/dorachan.cpp @@ -130,24 +130,26 @@ WRITE8_MEMBER(dorachan_state::control_w) } -ADDRESS_MAP_START(dorachan_state::dorachan_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x23ff) AM_ROM - AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ(protection_r) - AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("IN0") - AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READ_PORT("IN1") - AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ(v128_r) - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x77ff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dorachan_state::dorachan_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_WRITENOP - AM_RANGE(0x02, 0x02) AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_WRITE(control_w) -ADDRESS_MAP_END +void dorachan_state::dorachan_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x1fff).ram(); + map(0x2000, 0x23ff).rom(); + map(0x2400, 0x2400).mirror(0x03ff).r(this, FUNC(dorachan_state::protection_r)); + map(0x2800, 0x2800).mirror(0x03ff).portr("IN0"); + map(0x2c00, 0x2c00).mirror(0x03ff).portr("IN1"); + map(0x3800, 0x3800).mirror(0x03ff).r(this, FUNC(dorachan_state::v128_r)); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x77ff).rom(); +} + +void dorachan_state::dorachan_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).nopw(); + map(0x02, 0x02).nopw(); + map(0x03, 0x03).w(this, FUNC(dorachan_state::control_w)); +} diff --git a/src/mame/drivers/dotrikun.cpp b/src/mame/drivers/dotrikun.cpp index 75c440c1550..bdc7fae441e 100644 --- a/src/mame/drivers/dotrikun.cpp +++ b/src/mame/drivers/dotrikun.cpp @@ -142,16 +142,18 @@ uint32_t dotrikun_state::screen_update(screen_device &screen, bitmap_ind16 &bitm * *************************************/ -ADDRESS_MAP_START(dotrikun_state::dotrikun_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x85ff) AM_RAM_WRITE(vram_w) AM_SHARE("vram") - AM_RANGE(0x8600, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dotrikun_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ_PORT("INPUTS") AM_WRITE(color_w) -ADDRESS_MAP_END +void dotrikun_state::dotrikun_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x85ff).ram().w(this, FUNC(dotrikun_state::vram_w)).share("vram"); + map(0x8600, 0x87ff).ram(); +} + +void dotrikun_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0xff).portr("INPUTS").w(this, FUNC(dotrikun_state::color_w)); +} /************************************* diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp index cce3f8462b3..8ee696b9ef5 100644 --- a/src/mame/drivers/dps1.cpp +++ b/src/mame/drivers/dps1.cpp @@ -58,35 +58,37 @@ private: //required_device<floppy_connector> m_floppy1; }; -ADDRESS_MAP_START(dps1_state::mem_map) - AM_RANGE(0x0000, 0x03ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x0400, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dps1_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("uart", mc2661_device, read, write) // S2651 - AM_RANGE(0xb0, 0xb1) AM_DEVICE("fdc", upd765_family_device, map) - AM_RANGE(0xb2, 0xb3) AM_WRITE(portb2_w) // set dma fdc->memory - AM_RANGE(0xb4, 0xb5) AM_WRITE(portb4_w) // set dma memory->fdc - AM_RANGE(0xb6, 0xb7) AM_WRITE(portb6_w) // enable eprom - AM_RANGE(0xb8, 0xb9) AM_WRITE(portb8_w) // set A16-23 - AM_RANGE(0xba, 0xbb) AM_WRITE(portba_w) // set A8-15 - AM_RANGE(0xbc, 0xbd) AM_WRITE(portbc_w) // set A0-7 - AM_RANGE(0xbe, 0xbf) AM_WRITE(portbe_w) // disable eprom - AM_RANGE(0xff, 0xff) AM_READWRITE(portff_r, portff_w) +void dps1_state::mem_map(address_map &map) +{ + map(0x0000, 0x03ff).bankr("bankr0").bankw("bankw0"); + map(0x0400, 0xffff).ram(); +} + +void dps1_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw("uart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // S2651 + map(0xb0, 0xb1).m(m_fdc, FUNC(upd765_family_device::map)); + map(0xb2, 0xb3).w(this, FUNC(dps1_state::portb2_w)); // set dma fdc->memory + map(0xb4, 0xb5).w(this, FUNC(dps1_state::portb4_w)); // set dma memory->fdc + map(0xb6, 0xb7).w(this, FUNC(dps1_state::portb6_w)); // enable eprom + map(0xb8, 0xb9).w(this, FUNC(dps1_state::portb8_w)); // set A16-23 + map(0xba, 0xbb).w(this, FUNC(dps1_state::portba_w)); // set A8-15 + map(0xbc, 0xbd).w(this, FUNC(dps1_state::portbc_w)); // set A0-7 + map(0xbe, 0xbf).w(this, FUNC(dps1_state::portbe_w)); // disable eprom + map(0xff, 0xff).rw(this, FUNC(dps1_state::portff_r), FUNC(dps1_state::portff_w)); // other allocated ports, optional // AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("uart2", mc2661_device, read, write) // S2651 // AM_RANGE(0x08, 0x0b) parallel ports // AM_RANGE(0x10, 0x11) // interrupt response - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("am9519a", am9519_device, data_r, data_w) - AM_RANGE(0x15, 0x15) AM_DEVREADWRITE("am9519a", am9519_device, stat_r, cmd_w) - AM_RANGE(0x16, 0x16) AM_DEVREADWRITE("am9519b", am9519_device, data_r, data_w) - AM_RANGE(0x17, 0x17) AM_DEVREADWRITE("am9519b", am9519_device, stat_r, cmd_w) + map(0x14, 0x14).rw("am9519a", FUNC(am9519_device::data_r), FUNC(am9519_device::data_w)); + map(0x15, 0x15).rw("am9519a", FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w)); + map(0x16, 0x16).rw("am9519b", FUNC(am9519_device::data_r), FUNC(am9519_device::data_w)); + map(0x17, 0x17).rw("am9519b", FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w)); // AM_RANGE(0x18, 0x1f) control lines 0 to 7 - AM_RANGE(0xe0, 0xe3) AM_NOP //unknown device -ADDRESS_MAP_END + map(0xe0, 0xe3).noprw(); //unknown device +} // read from disk, to memory diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp index ecb9912fb42..eefef179f4a 100644 --- a/src/mame/drivers/dragon.cpp +++ b/src/mame/drivers/dragon.cpp @@ -36,8 +36,9 @@ // ADDRESS_MAP( dragon_mem ) //------------------------------------------------- -ADDRESS_MAP_START(dragon_state::dragon_mem) -ADDRESS_MAP_END +void dragon_state::dragon_mem(address_map &map) +{ +} //************************************************************************** diff --git a/src/mame/drivers/dragrace.cpp b/src/mame/drivers/dragrace.cpp index 5f7ca805d5c..9edc9f2e0d3 100644 --- a/src/mame/drivers/dragrace.cpp +++ b/src/mame/drivers/dragrace.cpp @@ -118,25 +118,26 @@ READ8_MEMBER(dragrace_state::dragrace_scanline_r) } -ADDRESS_MAP_START(dragrace_state::dragrace_map) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x0800, 0x083f) AM_READ(dragrace_input_r) - AM_RANGE(0x0900, 0x0907) AM_DEVWRITE("latch_f5", addressable_latch_device, write_d0) - AM_RANGE(0x0908, 0x090f) AM_DEVWRITE("latch_a5", addressable_latch_device, write_d0) - AM_RANGE(0x0910, 0x0917) AM_DEVWRITE("latch_h5", addressable_latch_device, write_d0) - AM_RANGE(0x0918, 0x091f) AM_DEVWRITE("latch_e5", addressable_latch_device, write_d0) - AM_RANGE(0x0920, 0x0927) AM_DEVWRITE("latch_f5", addressable_latch_device, clear) - AM_RANGE(0x0928, 0x092f) AM_DEVWRITE("latch_a5", addressable_latch_device, clear) - AM_RANGE(0x0930, 0x0937) AM_DEVWRITE("latch_h5", addressable_latch_device, clear) - AM_RANGE(0x0938, 0x093f) AM_DEVWRITE("latch_e5", addressable_latch_device, clear) - AM_RANGE(0x0a00, 0x0aff) AM_WRITEONLY AM_SHARE("playfield_ram") - AM_RANGE(0x0b00, 0x0bff) AM_WRITEONLY AM_SHARE("position_ram") - AM_RANGE(0x0c00, 0x0c00) AM_READ(dragrace_steering_r) - AM_RANGE(0x0d00, 0x0d00) AM_READ(dragrace_scanline_r) - AM_RANGE(0x0e00, 0x0eff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1000, 0x1fff) AM_ROM /* program */ - AM_RANGE(0xf800, 0xffff) AM_ROM /* program mirror */ -ADDRESS_MAP_END +void dragrace_state::dragrace_map(address_map &map) +{ + map(0x0080, 0x00ff).ram(); + map(0x0800, 0x083f).r(this, FUNC(dragrace_state::dragrace_input_r)); + map(0x0900, 0x0907).w("latch_f5", FUNC(addressable_latch_device::write_d0)); + map(0x0908, 0x090f).w("latch_a5", FUNC(addressable_latch_device::write_d0)); + map(0x0910, 0x0917).w("latch_h5", FUNC(addressable_latch_device::write_d0)); + map(0x0918, 0x091f).w("latch_e5", FUNC(addressable_latch_device::write_d0)); + map(0x0920, 0x0927).w("latch_f5", FUNC(addressable_latch_device::clear)); + map(0x0928, 0x092f).w("latch_a5", FUNC(addressable_latch_device::clear)); + map(0x0930, 0x0937).w("latch_h5", FUNC(addressable_latch_device::clear)); + map(0x0938, 0x093f).w("latch_e5", FUNC(addressable_latch_device::clear)); + map(0x0a00, 0x0aff).writeonly().share("playfield_ram"); + map(0x0b00, 0x0bff).writeonly().share("position_ram"); + map(0x0c00, 0x0c00).r(this, FUNC(dragrace_state::dragrace_steering_r)); + map(0x0d00, 0x0d00).r(this, FUNC(dragrace_state::dragrace_scanline_r)); + map(0x0e00, 0x0eff).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x1000, 0x1fff).rom(); /* program */ + map(0xf800, 0xffff).rom(); /* program mirror */ +} static INPUT_PORTS_START( dragrace ) diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp index d8e5f64a3e0..53343842402 100644 --- a/src/mame/drivers/dreambal.cpp +++ b/src/mame/drivers/dreambal.cpp @@ -111,33 +111,34 @@ WRITE16_MEMBER( dreambal_state::dreambal_protection_region_0_104_w ) m_deco104->write_data( space, deco146_addr, data, mem_mask, cs ); } -ADDRESS_MAP_START(dreambal_state::dreambal_map) +void dreambal_state::dreambal_map(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x101000, 0x101fff) AM_RAM - AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x103000, 0x103fff) AM_RAM + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x101000, 0x101fff).ram(); + map(0x102000, 0x102fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x103000, 0x103fff).ram(); - AM_RANGE(0x120000, 0x123fff) AM_RAM - AM_RANGE(0x140000, 0x1403ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x120000, 0x123fff).ram(); + map(0x140000, 0x1403ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x160000, 0x163fff) AM_READWRITE(dreambal_protection_region_0_104_r,dreambal_protection_region_0_104_w)AM_SHARE("prot16ram") /* Protection device */ + map(0x160000, 0x163fff).rw(this, FUNC(dreambal_state::dreambal_protection_region_0_104_r), FUNC(dreambal_state::dreambal_protection_region_0_104_w)).share("prot16ram"); /* Protection device */ - AM_RANGE(0x161000, 0x16100f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) + map(0x161000, 0x16100f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); - AM_RANGE(0x180000, 0x180001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x180001, 0x180001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x162000, 0x162001) AM_WRITENOP // writes 0003 on startup - AM_RANGE(0x163000, 0x163001) AM_WRITENOP // something on bit 1 - AM_RANGE(0x164000, 0x164001) AM_WRITENOP // something on bit 1 + map(0x162000, 0x162001).nopw(); // writes 0003 on startup + map(0x163000, 0x163001).nopw(); // something on bit 1 + map(0x164000, 0x164001).nopw(); // something on bit 1 - AM_RANGE(0x165000, 0x165001) AM_WRITE( dreambal_eeprom_w ) // EEP Write? + map(0x165000, 0x165001).w(this, FUNC(dreambal_state::dreambal_eeprom_w)); // EEP Write? - AM_RANGE(0x16c002, 0x16c00d) AM_WRITENOP // writes 0000 to 0005 on startup - AM_RANGE(0x1a0000, 0x1a0003) AM_WRITENOP // RS-232C status / data ports (byte access) -ADDRESS_MAP_END + map(0x16c002, 0x16c00d).nopw(); // writes 0000 to 0005 on startup + map(0x1a0000, 0x1a0003).nopw(); // RS-232C status / data ports (byte access) +} static const gfx_layout tile_8x8_layout = diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp index c3f92107b6d..a9820d1ec94 100644 --- a/src/mame/drivers/dreamwld.cpp +++ b/src/mame/drivers/dreamwld.cpp @@ -431,15 +431,17 @@ READ32_MEMBER(dreamwld_state::dreamwld_protdata_r) return dat << 24; } -ADDRESS_MAP_START(dreamwld_state::oki1_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki1bank") -ADDRESS_MAP_END +void dreamwld_state::oki1_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("oki1bank"); +} -ADDRESS_MAP_START(dreamwld_state::oki2_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki2bank") -ADDRESS_MAP_END +void dreamwld_state::oki2_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("oki2bank"); +} WRITE32_MEMBER(dreamwld_state::dreamwld_6295_0_bank_w) { @@ -458,33 +460,35 @@ WRITE32_MEMBER(dreamwld_state::dreamwld_6295_1_bank_w) } -ADDRESS_MAP_START(dreamwld_state::baryon_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_WRITENOP +void dreamwld_state::baryon_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom().nopw(); - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(dreamwld_bg_videoram_w ) AM_SHARE("bg_videoram") - AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(dreamwld_bg2_videoram_w ) AM_SHARE("bg2_videoram") - AM_RANGE(0x804000, 0x8043ff) AM_READWRITE16(lineram16_r, lineram16_w, 0xffffffff) // linescroll - AM_RANGE(0x804400, 0x805fff) AM_RAM AM_SHARE("vregs") + map(0x400000, 0x401fff).ram().share("spriteram"); + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x800000, 0x801fff).ram().w(this, FUNC(dreamwld_state::dreamwld_bg_videoram_w)).share("bg_videoram"); + map(0x802000, 0x803fff).ram().w(this, FUNC(dreamwld_state::dreamwld_bg2_videoram_w)).share("bg2_videoram"); + map(0x804000, 0x8043ff).rw(this, FUNC(dreamwld_state::lineram16_r), FUNC(dreamwld_state::lineram16_w)); // linescroll + map(0x804400, 0x805fff).ram().share("vregs"); - AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS") - AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("c00004") + map(0xc00000, 0xc00003).portr("INPUTS"); + map(0xc00004, 0xc00007).portr("c00004"); - AM_RANGE(0xc0000c, 0xc0000f) AM_WRITE(dreamwld_6295_0_bank_w) // sfx - AM_RANGE(0xc00018, 0xc0001b) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0xff000000) // sfx + map(0xc0000c, 0xc0000f).w(this, FUNC(dreamwld_state::dreamwld_6295_0_bank_w)); // sfx + map(0xc00018, 0xc00018).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // sfx - AM_RANGE(0xc00030, 0xc00033) AM_READ(dreamwld_protdata_r) // it reads protection data (irq code) from here and puts it at ffd000 + map(0xc00030, 0xc00033).r(this, FUNC(dreamwld_state::dreamwld_protdata_r)); // it reads protection data (irq code) from here and puts it at ffd000 - AM_RANGE(0xfe0000, 0xffffff) AM_RAM AM_SHARE("workram") // work ram -ADDRESS_MAP_END + map(0xfe0000, 0xffffff).ram().share("workram"); // work ram +} -ADDRESS_MAP_START(dreamwld_state::dreamwld_map) - AM_IMPORT_FROM( baryon_map ) +void dreamwld_state::dreamwld_map(address_map &map) +{ + baryon_map(map); - AM_RANGE(0xc0002c, 0xc0002f) AM_WRITE(dreamwld_6295_1_bank_w) // sfx - AM_RANGE(0xc00028, 0xc0002b) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0xff000000) // sfx -ADDRESS_MAP_END + map(0xc0002c, 0xc0002f).w(this, FUNC(dreamwld_state::dreamwld_6295_1_bank_w)); // sfx + map(0xc00028, 0xc00028).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // sfx +} static INPUT_PORTS_START( dreamwld ) diff --git a/src/mame/drivers/drgnmst.cpp b/src/mame/drivers/drgnmst.cpp index dc58ce88218..fa5cb9c3de2 100644 --- a/src/mame/drivers/drgnmst.cpp +++ b/src/mame/drivers/drgnmst.cpp @@ -181,29 +181,30 @@ WRITE8_MEMBER(drgnmst_state::drgnmst_snd_control_w) /***************************** 68000 Memory Map *****************************/ -ADDRESS_MAP_START(drgnmst_state::drgnmst_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1_P2") - AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM") - AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1") - AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2") - AM_RANGE(0x800030, 0x800031) AM_WRITE(drgnmst_coin_w) - AM_RANGE(0x800100, 0x80011f) AM_WRITEONLY AM_SHARE("vidregs") - AM_RANGE(0x800120, 0x800121) AM_WRITENOP - AM_RANGE(0x80014a, 0x80014b) AM_WRITENOP - AM_RANGE(0x800154, 0x800155) AM_WRITEONLY AM_SHARE("vidregs2") // seems to be priority control - AM_RANGE(0x800176, 0x800177) AM_READ_PORT("EXTRA") - AM_RANGE(0x800180, 0x800181) AM_WRITE(drgnmst_snd_command_w) - AM_RANGE(0x800188, 0x800189) AM_WRITE(drgnmst_snd_flag_w) - AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(drgnmst_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x904000, 0x907fff) AM_RAM_WRITE(drgnmst_md_videoram_w) AM_SHARE("md_videoram") - AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(drgnmst_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(drgnmst_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x920000, 0x923fff) AM_RAM AM_SHARE("rowscrollram") // rowscroll ram - AM_RANGE(0x930000, 0x9307ff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void drgnmst_state::drgnmst_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x800000, 0x800001).portr("P1_P2"); + map(0x800018, 0x800019).portr("SYSTEM"); + map(0x80001a, 0x80001b).portr("DSW1"); + map(0x80001c, 0x80001d).portr("DSW2"); + map(0x800030, 0x800031).w(this, FUNC(drgnmst_state::drgnmst_coin_w)); + map(0x800100, 0x80011f).writeonly().share("vidregs"); + map(0x800120, 0x800121).nopw(); + map(0x80014a, 0x80014b).nopw(); + map(0x800154, 0x800155).writeonly().share("vidregs2"); // seems to be priority control + map(0x800176, 0x800177).portr("EXTRA"); + map(0x800180, 0x800181).w(this, FUNC(drgnmst_state::drgnmst_snd_command_w)); + map(0x800188, 0x800189).w(this, FUNC(drgnmst_state::drgnmst_snd_flag_w)); + map(0x8001e0, 0x8001e1).nopw(); + map(0x900000, 0x903fff).ram().w(this, FUNC(drgnmst_state::drgnmst_paletteram_w)).share("paletteram"); + map(0x904000, 0x907fff).ram().w(this, FUNC(drgnmst_state::drgnmst_md_videoram_w)).share("md_videoram"); + map(0x908000, 0x90bfff).ram().w(this, FUNC(drgnmst_state::drgnmst_bg_videoram_w)).share("bg_videoram"); + map(0x90c000, 0x90ffff).ram().w(this, FUNC(drgnmst_state::drgnmst_fg_videoram_w)).share("fg_videoram"); + map(0x920000, 0x923fff).ram().share("rowscrollram"); // rowscroll ram + map(0x930000, 0x9307ff).ram().share("spriteram"); // Sprites + map(0xff0000, 0xffffff).ram(); +} static INPUT_PORTS_START( drgnmst ) diff --git a/src/mame/drivers/dribling.cpp b/src/mame/drivers/dribling.cpp index e5b5b741d60..9b120bc05c8 100644 --- a/src/mame/drivers/dribling.cpp +++ b/src/mame/drivers/dribling.cpp @@ -175,18 +175,20 @@ WRITE8_MEMBER(dribling_state::iowrite) * *************************************/ -ADDRESS_MAP_START(dribling_state::dribling_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(dribling_colorram_w) AM_SHARE("colorram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dribling_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(ioread, iowrite) -ADDRESS_MAP_END +void dribling_state::dribling_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("videoram"); + map(0x4000, 0x7fff).rom(); + map(0xc000, 0xdfff).ram().w(this, FUNC(dribling_state::dribling_colorram_w)).share("colorram"); +} + + +void dribling_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(dribling_state::ioread), FUNC(dribling_state::iowrite)); +} diff --git a/src/mame/drivers/drmicro.cpp b/src/mame/drivers/drmicro.cpp index e929a70e464..e14f69d90af 100644 --- a/src/mame/drivers/drmicro.cpp +++ b/src/mame/drivers/drmicro.cpp @@ -76,22 +76,24 @@ WRITE8_MEMBER(drmicro_state::pcm_set_w) * *************************************/ -ADDRESS_MAP_START(drmicro_state::drmicro_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(drmicro_videoram_w) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(drmicro_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76496_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn3", sn76496_device, write) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") AM_WRITE(pcm_set_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_WRITE(nmi_enable_w) - AM_RANGE(0x05, 0x05) AM_NOP // unused? / watchdog? -ADDRESS_MAP_END +void drmicro_state::drmicro_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().w(this, FUNC(drmicro_state::drmicro_videoram_w)); + map(0xf000, 0xffff).ram(); +} + +void drmicro_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76496_device::write)); + map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76496_device::write)); + map(0x02, 0x02).w("sn3", FUNC(sn76496_device::write)); + map(0x03, 0x03).portr("DSW1").w(this, FUNC(drmicro_state::pcm_set_w)); + map(0x04, 0x04).portr("DSW2").w(this, FUNC(drmicro_state::nmi_enable_w)); + map(0x05, 0x05).noprw(); // unused? / watchdog? +} /************************************* * diff --git a/src/mame/drivers/drtomy.cpp b/src/mame/drivers/drtomy.cpp index c5b5c4cb3f1..8cbc3972b40 100644 --- a/src/mame/drivers/drtomy.cpp +++ b/src/mame/drivers/drtomy.cpp @@ -174,20 +174,21 @@ WRITE16_MEMBER(drtomy_state::drtomy_okibank_w) /* unknown bit 2 -> (data & 4) */ } -ADDRESS_MAP_START(drtomy_state::drtomy_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(drtomy_vram_fg_w) AM_SHARE("videorafg") /* Video RAM FG */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(drtomy_vram_bg_w) AM_SHARE("videorabg") /* Video RAM BG */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(drtomy_okibank_w) /* OKI banking */ - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI 6295*/ - AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END +void drtomy_state::drtomy_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); /* ROM */ + map(0x100000, 0x100fff).ram().w(this, FUNC(drtomy_state::drtomy_vram_fg_w)).share("videorafg"); /* Video RAM FG */ + map(0x101000, 0x101fff).ram().w(this, FUNC(drtomy_state::drtomy_vram_bg_w)).share("videorabg"); /* Video RAM BG */ + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW1"); + map(0x700002, 0x700003).portr("DSW2"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x70000c, 0x70000d).w(this, FUNC(drtomy_state::drtomy_okibank_w)); /* OKI banking */ + map(0x70000f, 0x70000f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI 6295*/ + map(0xffc000, 0xffffff).ram(); /* Work RAM */ +} static const gfx_layout tilelayout8= { diff --git a/src/mame/drivers/drw80pkr.cpp b/src/mame/drivers/drw80pkr.cpp index 9b6faf205f0..f52d308229a 100644 --- a/src/mame/drivers/drw80pkr.cpp +++ b/src/mame/drivers/drw80pkr.cpp @@ -401,13 +401,15 @@ DRIVER_INIT_MEMBER(drw80pkr_state,drw80pkr) * Memory map information * *************************/ -ADDRESS_MAP_START(drw80pkr_state::drw80pkr_map) - AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void drw80pkr_state::drw80pkr_map(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bank1"); +} -ADDRESS_MAP_START(drw80pkr_state::drw80pkr_io_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w) -ADDRESS_MAP_END +void drw80pkr_state::drw80pkr_io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(drw80pkr_state::drw80pkr_io_r), FUNC(drw80pkr_state::drw80pkr_io_w)); +} /************************* * Input ports * diff --git a/src/mame/drivers/dsb46.cpp b/src/mame/drivers/dsb46.cpp index d536b53421e..8ef6c2fc634 100644 --- a/src/mame/drivers/dsb46.cpp +++ b/src/mame/drivers/dsb46.cpp @@ -56,23 +56,25 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(dsb46_state::dsb46_mem) - AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("read") AM_WRITE_BANK("write") - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dsb46_state::dsb46_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) - AM_RANGE(0x1a, 0x1a) AM_WRITE(port1a_w) +void dsb46_state::dsb46_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankr("read").bankw("write"); + map(0x0800, 0xffff).ram(); +} + +void dsb46_state::dsb46_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x08, 0x0b).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x1a, 0x1a).w(this, FUNC(dsb46_state::port1a_w)); //AM_RANGE(0x10, 0x10) disk related //AM_RANGE(0x14, 0x14) ?? (read after CTC1 TRG3) //AM_RANGE(0x18, 0x18) ?? //AM_RANGE(0x1c, 0x1c) disk data //AM_RANGE(0x1d, 0x1d) disk status (FF = no fdc) -ADDRESS_MAP_END +} static INPUT_PORTS_START( dsb46 ) INPUT_PORTS_END diff --git a/src/mame/drivers/dual68.cpp b/src/mame/drivers/dual68.cpp index 4f4174b47f7..78c6b0235ce 100644 --- a/src/mame/drivers/dual68.cpp +++ b/src/mame/drivers/dual68.cpp @@ -48,31 +48,34 @@ WRITE16_MEMBER( dual68_state::terminal_w ) m_terminal->write(space, 0, data >> 8); } -ADDRESS_MAP_START(dual68_state::dual68_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0000ffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x00080000, 0x00081fff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0x007f0000, 0x007f0001) AM_WRITE(terminal_w) - AM_RANGE(0x00800000, 0x00801fff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dual68_state::sio4_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dual68_state::sio4_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x22, 0x22) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0x23, 0x23) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x2a, 0x2a) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) - AM_RANGE(0x2b, 0x2b) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0x32, 0x32) AM_DEVREADWRITE("uart3", i8251_device, status_r, control_w) - AM_RANGE(0x33, 0x33) AM_DEVREADWRITE("uart3", i8251_device, data_r, data_w) - AM_RANGE(0x3a, 0x3a) AM_DEVREADWRITE("uart4", i8251_device, status_r, control_w) - AM_RANGE(0x3b, 0x3b) AM_DEVREADWRITE("uart4", i8251_device, data_r, data_w) -ADDRESS_MAP_END +void dual68_state::dual68_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0000ffff).ram().share("ram"); + map(0x00080000, 0x00081fff).rom().region("user1", 0); + map(0x007f0000, 0x007f0001).w(this, FUNC(dual68_state::terminal_w)); + map(0x00800000, 0x00801fff).rom().region("user1", 0); +} + +void dual68_state::sio4_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0xffff).ram(); +} + +void dual68_state::sio4_io(address_map &map) +{ + map.unmap_value_high(); + map(0x22, 0x22).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x23, 0x23).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x2a, 0x2a).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x2b, 0x2b).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x32, 0x32).rw("uart3", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x33, 0x33).rw("uart3", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x3a, 0x3a).rw("uart4", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x3b, 0x3b).rw("uart4", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); +} /* Input ports */ static INPUT_PORTS_START( dual68 ) diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp index 6fa1526aeb4..22c7810dff3 100644 --- a/src/mame/drivers/duet16.cpp +++ b/src/mame/drivers/duet16.cpp @@ -143,34 +143,36 @@ READ16_MEMBER(duet16_state::sysstat_r) return 0xb484; } -ADDRESS_MAP_START(duet16_state::duet16_mem) - AM_RANGE(0x00000, 0x8ffff) AM_RAM - AM_RANGE(0xa8000, 0xbffff) AM_RAM AM_SHARE("gvram") - AM_RANGE(0xc0000, 0xc0fff) AM_RAM AM_SHARE("cvram") - AM_RANGE(0xf8000, 0xf801f) AM_READWRITE8(dmapg_r, dmapg_w, 0x00ff) - AM_RANGE(0xf8000, 0xf801f) AM_DEVREADWRITE8("dmac", am9517a_device, read, write, 0xff00) - AM_RANGE(0xf8020, 0xf8023) AM_READWRITE8(pic_r, pic_w, 0x00ff) - AM_RANGE(0xf8040, 0xf804f) AM_DEVREADWRITE8("itm", ptm6840_device, read, write, 0x00ff) - AM_RANGE(0xf8060, 0xf8067) AM_DEVREADWRITE8("bgpit", pit8253_device, read, write, 0x00ff) - AM_RANGE(0xf8080, 0xf8087) AM_DEVREADWRITE8("sio", upd7201_new_device, ba_cd_r, ba_cd_w, 0x00ff) - AM_RANGE(0xf80a0, 0xf80a1) AM_DEVREADWRITE8("kbusart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf80a2, 0xf80a3) AM_DEVREADWRITE8("kbusart", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xf80c0, 0xf80c1) AM_DEVREADWRITE8("crtc", h46505_device, status_r, address_w, 0x00ff) - AM_RANGE(0xf80c2, 0xf80c3) AM_DEVREADWRITE8("crtc", h46505_device, register_r, register_w, 0x00ff) - AM_RANGE(0xf80e0, 0xf80e3) AM_DEVREADWRITE8("i8741", upi41_cpu_device, upi41_master_r, upi41_master_w, 0x00ff) - AM_RANGE(0xf8100, 0xf8103) AM_DEVICE8("fdc", upd765a_device, map, 0x00ff) - AM_RANGE(0xf8120, 0xf8121) AM_READWRITE8(rtc_r, rtc_w, 0x00ff) - AM_RANGE(0xf8160, 0xf819f) AM_WRITE8(pal_w, 0xffff) - AM_RANGE(0xf8200, 0xf8201) AM_READ(sysstat_r) - AM_RANGE(0xf8220, 0xf8221) AM_WRITE8(fdcctrl_w, 0x00ff) - AM_RANGE(0xf8260, 0xf8261) AM_WRITE8(rtc_addr_w, 0x00ff) - AM_RANGE(0xf8280, 0xf8281) AM_READ8(rtc_stat_r, 0x00ff) - AM_RANGE(0xf8280, 0xf8281) AM_WRITE8(dispctrl_w, 0x00ff) - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("rom", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(duet16_state::duet16_io) -ADDRESS_MAP_END +void duet16_state::duet16_mem(address_map &map) +{ + map(0x00000, 0x8ffff).ram(); + map(0xa8000, 0xbffff).ram().share("gvram"); + map(0xc0000, 0xc0fff).ram().share("cvram"); + map(0xf8000, 0xf801f).rw(this, FUNC(duet16_state::dmapg_r), FUNC(duet16_state::dmapg_w)).umask16(0x00ff); + map(0xf8000, 0xf801f).rw("dmac", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0xff00); + map(0xf8020, 0xf8023).rw(this, FUNC(duet16_state::pic_r), FUNC(duet16_state::pic_w)).umask16(0x00ff); + map(0xf8040, 0xf804f).rw("itm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0xf8060, 0xf8067).rw("bgpit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xf8080, 0xf8087).rw("sio", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0x00ff); + map(0xf80a0, 0xf80a0).rw("kbusart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf80a2, 0xf80a2).rw("kbusart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf80c0, 0xf80c0).rw("crtc", FUNC(h46505_device::status_r), FUNC(h46505_device::address_w)); + map(0xf80c2, 0xf80c2).rw("crtc", FUNC(h46505_device::register_r), FUNC(h46505_device::register_w)); + map(0xf80e0, 0xf80e3).rw("i8741", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask16(0x00ff); + map(0xf8100, 0xf8103).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff); + map(0xf8120, 0xf8120).rw(this, FUNC(duet16_state::rtc_r), FUNC(duet16_state::rtc_w)); + map(0xf8160, 0xf819f).w(this, FUNC(duet16_state::pal_w)); + map(0xf8200, 0xf8201).r(this, FUNC(duet16_state::sysstat_r)); + map(0xf8220, 0xf8220).w(this, FUNC(duet16_state::fdcctrl_w)); + map(0xf8260, 0xf8260).w(this, FUNC(duet16_state::rtc_addr_w)); + map(0xf8280, 0xf8280).r(this, FUNC(duet16_state::rtc_stat_r)); + map(0xf8280, 0xf8280).w(this, FUNC(duet16_state::dispctrl_w)); + map(0xfe000, 0xfffff).rom().region("rom", 0); +} + +void duet16_state::duet16_io(address_map &map) +{ +} WRITE8_MEMBER(duet16_state::pal_w) { diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp index d72f7d4dbae..5844a016ada 100644 --- a/src/mame/drivers/dunhuang.cpp +++ b/src/mame/drivers/dunhuang.cpp @@ -428,11 +428,12 @@ WRITE8_MEMBER(dunhuang_state::layers_w) Memory Maps ***************************************************************************/ -ADDRESS_MAP_START(dunhuang_state::dunhuang_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) -ADDRESS_MAP_END +void dunhuang_state::dunhuang_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("mainbank"); +} // Inputs @@ -483,53 +484,55 @@ WRITE8_MEMBER(dunhuang_state::rombank_w) } -ADDRESS_MAP_START(dunhuang_state::dunhuang_io_map) - AM_RANGE( 0x0000, 0x0000 ) AM_WRITE(pos_x_w ) - AM_RANGE( 0x0001, 0x0001 ) AM_WRITE(pos_y_w ) - AM_RANGE( 0x0002, 0x0004 ) AM_WRITE(tile_w ) - AM_RANGE( 0x0005, 0x0007 ) AM_WRITE(tile2_w ) +void dunhuang_state::dunhuang_io_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(dunhuang_state::pos_x_w)); + map(0x0001, 0x0001).w(this, FUNC(dunhuang_state::pos_y_w)); + map(0x0002, 0x0004).w(this, FUNC(dunhuang_state::tile_w)); + map(0x0005, 0x0007).w(this, FUNC(dunhuang_state::tile2_w)); - AM_RANGE( 0x0008, 0x0008 ) AM_WRITE(vert_clear_w ) + map(0x0008, 0x0008).w(this, FUNC(dunhuang_state::vert_clear_w)); - AM_RANGE( 0x000c, 0x000c ) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) + map(0x000c, 0x000c).r("watchdog", FUNC(watchdog_timer_device::reset_r)); - AM_RANGE( 0x000f, 0x000f ) AM_WRITE(block_addr_lo_w ) - AM_RANGE( 0x0010, 0x0010 ) AM_WRITE(block_addr_hi_w ) + map(0x000f, 0x000f).w(this, FUNC(dunhuang_state::block_addr_lo_w)); + map(0x0010, 0x0010).w(this, FUNC(dunhuang_state::block_addr_hi_w)); // AM_RANGE( 0x0011, 0x0011 ) ? - AM_RANGE( 0x0012, 0x0012 ) AM_WRITE(block_c_w ) - AM_RANGE( 0x0015, 0x0015 ) AM_WRITE(block_x_w ) - AM_RANGE( 0x0016, 0x0016 ) AM_WRITE(block_y_w ) - AM_RANGE( 0x0017, 0x0017 ) AM_WRITE(block_w_w ) - AM_RANGE( 0x0018, 0x0018 ) AM_WRITE(block_h_w ) + map(0x0012, 0x0012).w(this, FUNC(dunhuang_state::block_c_w)); + map(0x0015, 0x0015).w(this, FUNC(dunhuang_state::block_x_w)); + map(0x0016, 0x0016).w(this, FUNC(dunhuang_state::block_y_w)); + map(0x0017, 0x0017).w(this, FUNC(dunhuang_state::block_w_w)); + map(0x0018, 0x0018).w(this, FUNC(dunhuang_state::block_h_w)); - AM_RANGE( 0x0019, 0x0019 ) AM_WRITE(clear_y_w ) - AM_RANGE( 0x001a, 0x001a ) AM_WRITE(horiz_clear_w ) + map(0x0019, 0x0019).w(this, FUNC(dunhuang_state::clear_y_w)); + map(0x001a, 0x001a).w(this, FUNC(dunhuang_state::horiz_clear_w)); - AM_RANGE( 0x001b, 0x001b ) AM_WRITE(block_dest_w ) + map(0x001b, 0x001b).w(this, FUNC(dunhuang_state::block_dest_w)); - AM_RANGE( 0x0081, 0x0081 ) AM_DEVWRITE("ymsnd", ym2413_device, register_port_w) - AM_RANGE( 0x0089, 0x0089 ) AM_DEVWRITE("ymsnd", ym2413_device, data_port_w) + map(0x0081, 0x0081).w("ymsnd", FUNC(ym2413_device::register_port_w)); + map(0x0089, 0x0089).w("ymsnd", FUNC(ym2413_device::data_port_w)); - AM_RANGE( 0x0082, 0x0082 ) AM_DEVWRITE("oki", okim6295_device, write) + map(0x0082, 0x0082).w("oki", FUNC(okim6295_device::write)); - AM_RANGE( 0x0083, 0x0083 ) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE( 0x008b, 0x008b ) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE( 0x0093, 0x0093 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x0083, 0x0083).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x008b, 0x008b).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0093, 0x0093).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE( 0x0084, 0x0084 ) AM_READ(service_r ) - AM_RANGE( 0x0085, 0x0085 ) AM_READ(input_r ) + map(0x0084, 0x0084).r(this, FUNC(dunhuang_state::service_r)); + map(0x0085, 0x0085).r(this, FUNC(dunhuang_state::input_r)); - AM_RANGE( 0x0086, 0x0086 ) AM_WRITE(rombank_w ) - AM_RANGE( 0x0087, 0x0087 ) AM_WRITE(layers_w ) + map(0x0086, 0x0086).w(this, FUNC(dunhuang_state::rombank_w)); + map(0x0087, 0x0087).w(this, FUNC(dunhuang_state::layers_w)); - AM_RANGE( 0x0088, 0x0088 ) AM_DEVREAD("ay8910", ay8910_device, data_r ) - AM_RANGE( 0x0090, 0x0090 ) AM_DEVWRITE("ay8910", ay8910_device, data_w ) - AM_RANGE( 0x0098, 0x0098 ) AM_DEVWRITE("ay8910", ay8910_device, address_w ) -ADDRESS_MAP_END + map(0x0088, 0x0088).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0090, 0x0090).w("ay8910", FUNC(ay8910_device::data_w)); + map(0x0098, 0x0098).w("ay8910", FUNC(ay8910_device::address_w)); +} -ADDRESS_MAP_START(dunhuang_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void dunhuang_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} /*************************************************************************** Input Ports diff --git a/src/mame/drivers/dvk_kcgd.cpp b/src/mame/drivers/dvk_kcgd.cpp index 5d75683148d..0c1d76d925d 100644 --- a/src/mame/drivers/dvk_kcgd.cpp +++ b/src/mame/drivers/dvk_kcgd.cpp @@ -120,18 +120,19 @@ protected: required_device<screen_device> m_screen; }; -ADDRESS_MAP_START(kcgd_state::kcgd_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0000000, 0077777) AM_READWRITE(vram_mmap_r, vram_mmap_w) - AM_RANGE (0100000, 0157777) AM_ROM - AM_RANGE (0160000, 0160001) AM_MIRROR(03774) AM_READWRITE(vram_addr_r, vram_addr_w) - AM_RANGE (0160002, 0160003) AM_MIRROR(03774) AM_READWRITE(vram_data_r, vram_data_w) - AM_RANGE (0167770, 0167771) AM_READWRITE(status_r, status_w) - AM_RANGE (0167772, 0167773) AM_READWRITE8(palette_index_r, palette_index_w, 0x00ff) // reads always return 0 - AM_RANGE (0167772, 0167773) AM_READWRITE8(palette_data_r, palette_data_w, 0xff00) -// AM_RANGE (0176560, 0176567) AM_RAM // USART2 -- host -// AM_RANGE (0177560, 0177567) AM_RAM // USART3 -- keyboard -ADDRESS_MAP_END +void kcgd_state::kcgd_mem(address_map &map) +{ + map.unmap_value_high(); + map(0000000, 0077777).rw(this, FUNC(kcgd_state::vram_mmap_r), FUNC(kcgd_state::vram_mmap_w)); + map(0100000, 0157777).rom(); + map(0160000, 0160001).mirror(03774).rw(this, FUNC(kcgd_state::vram_addr_r), FUNC(kcgd_state::vram_addr_w)); + map(0160002, 0160003).mirror(03774).rw(this, FUNC(kcgd_state::vram_data_r), FUNC(kcgd_state::vram_data_w)); + map(0167770, 0167771).rw(this, FUNC(kcgd_state::status_r), FUNC(kcgd_state::status_w)); + map(0167772, 0167772).rw(this, FUNC(kcgd_state::palette_index_r), FUNC(kcgd_state::palette_index_w)); // reads always return 0 + map(0167773, 0167773).rw(this, FUNC(kcgd_state::palette_data_r), FUNC(kcgd_state::palette_data_w)); +// map(0176560, 0176567).ram(); // USART2 -- host +// map(0177560, 0177567).ram(); // USART3 -- keyboard +} void kcgd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp index 34100bd55fb..fbceeecbda4 100644 --- a/src/mame/drivers/dvk_ksm.cpp +++ b/src/mame/drivers/dvk_ksm.cpp @@ -159,22 +159,24 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(ksm_state::ksm_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x0000, 0x0fff) AM_ROM - AM_RANGE (0x2000, 0x20ff) AM_RAM AM_MIRROR(0x0700) - AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksm_state::ksm_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x5e, 0x5f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE (0x6e, 0x6e) AM_DEVREADWRITE("i8251kbd", i8251_device, data_r, data_w) - AM_RANGE (0x6f, 0x6f) AM_DEVREADWRITE("i8251kbd", i8251_device, status_r, control_w) - AM_RANGE (0x76, 0x76) AM_DEVREADWRITE("i8251line", i8251_device, data_r, data_w) - AM_RANGE (0x77, 0x77) AM_DEVREADWRITE("i8251line", i8251_device, status_r, control_w) - AM_RANGE (0x78, 0x7b) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END +void ksm_state::ksm_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x20ff).ram().mirror(0x0700); + map(0xc000, 0xffff).ram().share("videoram"); +} + +void ksm_state::ksm_io(address_map &map) +{ + map.unmap_value_high(); + map(0x5e, 0x5f).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x6e, 0x6e).rw(m_i8251kbd, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x6f, 0x6f).rw(m_i8251kbd, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x76, 0x76).rw(m_i8251line, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x77, 0x77).rw(m_i8251line, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x78, 0x7b).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input ports */ static INPUT_PORTS_START( ksm ) diff --git a/src/mame/drivers/dwarfd.cpp b/src/mame/drivers/dwarfd.cpp index a29453b7a59..b264c03a710 100644 --- a/src/mame/drivers/dwarfd.cpp +++ b/src/mame/drivers/dwarfd.cpp @@ -409,39 +409,44 @@ READ8_MEMBER(dwarfd_state::qc_b8_r) return machine().rand(); } -ADDRESS_MAP_START(dwarfd_state::mem_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dwarfd_state::pokeresp_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dwarfd_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - - AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("i8275", i8275_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITENOP // unknown - AM_RANGE(0x60, 0x60) AM_WRITE(output1_w) - AM_RANGE(0x80, 0x80) AM_WRITE(output2_w) - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("DSW1") - AM_RANGE(0xc1, 0xc1) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dwarfd_state::qc_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dwarfd_state::qc_io_map) - AM_IMPORT_FROM( io_map ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xb8, 0xb8) AM_READ(qc_b8_r) -ADDRESS_MAP_END +void dwarfd_state::mem_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).rw(this, FUNC(dwarfd_state::dwarfd_ram_r), FUNC(dwarfd_state::dwarfd_ram_w)); +} + +void dwarfd_state::pokeresp_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x3fff).rw(this, FUNC(dwarfd_state::dwarfd_ram_r), FUNC(dwarfd_state::dwarfd_ram_w)); +} + +void dwarfd_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + + map(0x20, 0x21).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0x40, 0x40).nopw(); // unknown + map(0x60, 0x60).w(this, FUNC(dwarfd_state::output1_w)); + map(0x80, 0x80).w(this, FUNC(dwarfd_state::output2_w)); + map(0xc0, 0xc0).portr("DSW1"); + map(0xc1, 0xc1).portr("DSW2"); +} + +void dwarfd_state::qc_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).rw(this, FUNC(dwarfd_state::dwarfd_ram_r), FUNC(dwarfd_state::dwarfd_ram_w)); +} + +void dwarfd_state::qc_io_map(address_map &map) +{ + io_map(map); + map.global_mask(0xff); + map(0xb8, 0xb8).r(this, FUNC(dwarfd_state::qc_b8_r)); +} static INPUT_PORTS_START( dwarfd ) PORT_START("DSW1") diff --git a/src/mame/drivers/dynadice.cpp b/src/mame/drivers/dynadice.cpp index 430db08e4ab..b99214dcbf9 100644 --- a/src/mame/drivers/dynadice.cpp +++ b/src/mame/drivers/dynadice.cpp @@ -113,33 +113,37 @@ WRITE8_MEMBER(dynadice_state::sound_control_w) } -ADDRESS_MAP_START(dynadice_state::dynadice_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(dynadice_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynadice_state::dynadice_io_map) - AM_RANGE(0x50, 0x50) AM_READ_PORT("IN0") - AM_RANGE(0x51, 0x51) AM_READ_PORT("IN1") - AM_RANGE(0x52, 0x52) AM_READ_PORT("DSW") - AM_RANGE(0x62, 0x62) AM_WRITENOP - AM_RANGE(0x63, 0x63) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x70, 0x77) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynadice_state::dynadice_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynadice_state::dynadice_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(sound_control_w) -ADDRESS_MAP_END +void dynadice_state::dynadice_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram().w(this, FUNC(dynadice_state::dynadice_videoram_w)).share("videoram"); + map(0x4000, 0x40ff).ram().share("nvram"); +} + +void dynadice_state::dynadice_io_map(address_map &map) +{ + map(0x50, 0x50).portr("IN0"); + map(0x51, 0x51).portr("IN1"); + map(0x52, 0x52).portr("DSW"); + map(0x62, 0x62).nopw(); + map(0x63, 0x63).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x70, 0x77).nopw(); +} + +void dynadice_state::dynadice_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x2000, 0x23ff).ram(); +} + +void dynadice_state::dynadice_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x01, 0x01).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(dynadice_state::sound_data_w)); + map(0x03, 0x03).w(this, FUNC(dynadice_state::sound_control_w)); +} static INPUT_PORTS_START( dynadice ) PORT_START("IN0") diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp index 27d70abaf86..c9dd404b89d 100644 --- a/src/mame/drivers/dynax.cpp +++ b/src/mame/drivers/dynax.cpp @@ -368,174 +368,191 @@ MACHINE_RESET_MEMBER(dynax_state,adpcm) m_msm->reset_w(1); } -ADDRESS_MAP_START(dynax_state::cdracula_mem_map) - AM_RANGE( 0x0000, 0xbfff ) AM_ROM - AM_RANGE( 0xc000, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::sprtmtch_mem_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::hnoridur_mem_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::mcnpshnt_mem_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::nanajign_mem_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::mjdialq2_mem_map) - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0x0800, 0x0fff ) AM_RAM - AM_RANGE( 0x1000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::yarunara_mem_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END +void dynax_state::cdracula_mem_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xffff).ram(); +} + +void dynax_state::sprtmtch_mem_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).bankr("bank1"); +} + +void dynax_state::hnoridur_mem_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void dynax_state::mcnpshnt_mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void dynax_state::nanajign_mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void dynax_state::mjdialq2_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x0800, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().share("nvram"); + map(0x8000, 0xffff).bankr("bank1"); +} + +void dynax_state::yarunara_mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} //identical to yarunara, but nvram is in the 0x6000 - 0x6fff range -ADDRESS_MAP_START(dynax_state::quiztvqq_mem_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x7000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::jantouki_mem_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::jantouki_sound_mem_map) - AM_RANGE( 0x0000, 0x77ff ) AM_ROM - AM_RANGE( 0x7800, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank2") -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(dynax_state::hnoridur_banked_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x80000, 0x800ff) AM_WRITE(hnoridur_palette_lo_w) - AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(hnoridur_palette_hi_w) - AM_RANGE(0xc0000, 0xc7fff) AM_RAM // hnoridur: R/W RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::mjelctrn_banked_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x80000, 0x800ff) AM_WRITE(nanajign_palette_lo_w) - AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(nanajign_palette_hi_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::nanajign_banked_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x80000, 0x800ff) AM_WRITE(nanajign_palette_lo_w) - AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(nanajign_palette_hi_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::yarunara_banked_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x80000, 0x801ff) AM_WRITE(tenkai_palette_w) - AM_RANGE(0xe0000, 0xe000f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::mjangels_banked_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0x010000) - AM_RANGE(0x080000, 0x0801ff) AM_WRITE(tenkai_palette_w) - AM_RANGE(0x0a0000, 0x0bffff) AM_ROM AM_REGION("maincpu", 0x0b0000) - AM_RANGE(0x0e0000, 0x0e000f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("maincpu", 0x110000) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(dynax_state::hanamai_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x20, 0x20 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x41, 0x47 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select hnkochou only - AM_RANGE( 0x60, 0x60 ) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x61, 0x61 ) AM_READ(hanamai_keyboard_1_r) // P2 - AM_RANGE( 0x62, 0x62 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x63, 0x63 ) AM_READ(ret_ff) // ? - AM_RANGE( 0x64, 0x64 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x65, 0x65 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select hanamai only - AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x67, 0x67 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x68, 0x68 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable - AM_RANGE( 0x69, 0x69 ) AM_WRITE(hanamai_priority_w) // layer priority - AM_RANGE( 0x6a, 0x6a ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x6b, 0x6b ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x6c, 0x6c ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) - AM_RANGE( 0x6d, 0x6d ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x6e, 0x6e ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x78, 0x79 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // 2 x DSW - AM_RANGE( 0x7a, 0x7b ) AM_DEVWRITE("aysnd", ay8912_device, address_data_w) // AY8912 +void dynax_state::quiztvqq_mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram().share("nvram"); + map(0x7000, 0x7fff).ram(); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void dynax_state::jantouki_mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).bankr("bank1"); +} + +void dynax_state::jantouki_sound_mem_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank2"); +} + + + +void dynax_state::hnoridur_banked_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom().region("maincpu", 0x10000); + map(0x80000, 0x800ff).w(this, FUNC(dynax_state::hnoridur_palette_lo_w)); + map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::hnoridur_palette_hi_w)); + map(0xc0000, 0xc7fff).ram(); // hnoridur: R/W RAM +} + +void dynax_state::mjelctrn_banked_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom().region("maincpu", 0x10000); + map(0x80000, 0x800ff).w(this, FUNC(dynax_state::nanajign_palette_lo_w)); + map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::nanajign_palette_hi_w)); +} + +void dynax_state::nanajign_banked_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom().region("maincpu", 0x10000); + map(0x80000, 0x800ff).w(this, FUNC(dynax_state::nanajign_palette_lo_w)); + map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::nanajign_palette_hi_w)); +} + +void dynax_state::yarunara_banked_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom().region("maincpu", 0x10000); + map(0x80000, 0x801ff).w(this, FUNC(dynax_state::tenkai_palette_w)); + map(0xe0000, 0xe000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} + +void dynax_state::mjangels_banked_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("maincpu", 0x010000); + map(0x080000, 0x0801ff).w(this, FUNC(dynax_state::tenkai_palette_w)); + map(0x0a0000, 0x0bffff).rom().region("maincpu", 0x0b0000); + map(0x0e0000, 0x0e000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x100000, 0x13ffff).rom().region("maincpu", 0x110000); +} + + + +void dynax_state::hanamai_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x20, 0x20).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y + map(0x41, 0x47).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter + map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select hnkochou only + map(0x60, 0x60).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x61, 0x61).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2 + map(0x62, 0x62).portr("COINS"); // Coins + map(0x63, 0x63).r(this, FUNC(dynax_state::ret_ff)); // ? + map(0x64, 0x64).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x65, 0x65).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select hanamai only + map(0x66, 0x66).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x67, 0x67).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x68, 0x68).w(this, FUNC(dynax_state::dynax_layer_enable_w)); // Layers Enable + map(0x69, 0x69).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority + map(0x6a, 0x6a).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x6b, 0x6b).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x6c, 0x6c).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits) + map(0x6d, 0x6d).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x6e, 0x6e).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x70, 0x77).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x78, 0x79).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // 2 x DSW + map(0x7a, 0x7b).w("aysnd", FUNC(ay8912_device::address_data_w)); // AY8912 // AM_RANGE( 0x7c, 0x7c ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x7d, 0x7d ) AM_WRITENOP // - AM_RANGE( 0x7e, 0x7e ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank -ADDRESS_MAP_END + map(0x7e, 0x7e).w(this, FUNC(dynax_state::dynax_blit_romregion_w)); // Blitter ROM bank +} -ADDRESS_MAP_START(dynax_state::hnoridur_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter +void dynax_state::hnoridur_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter // AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x22, 0x22 ) AM_READ(hanamai_keyboard_1_r) // P2 - AM_RANGE( 0x23, 0x23 ) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW1") // DSW2 - AM_RANGE( 0x25, 0x25 ) AM_READ_PORT("DSW3") // DSW4 - AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW2") // DSW3 - AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, DSW0 - AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 - AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // - AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable - AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x46, 0x46 ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w) - AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select - AM_RANGE( 0x55, 0x55 ) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // ? - AM_RANGE( 0x60, 0x67 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("outlatch", ls259_device, write_d0) -ADDRESS_MAP_END + map(0x20, 0x20).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x21, 0x21).portr("COINS"); // Coins + map(0x22, 0x22).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2 + map(0x23, 0x23).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x24, 0x24).portr("DSW1"); // DSW2 + map(0x25, 0x25).portr("DSW3"); // DSW4 + map(0x26, 0x26).portr("DSW2"); // DSW3 + map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x32, 0x32).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x34, 0x35).w("ym2413", FUNC(ym2413_device::write)); // + map(0x36, 0x36).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912, DSW0 + map(0x38, 0x38).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912 + map(0x3a, 0x3a).w("aysnd", FUNC(ay8912_device::address_w)); // + map(0x40, 0x40).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x41, 0x41).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x42, 0x42).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0x43, 0x43).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x44, 0x44).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable + map(0x45, 0x45).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x46, 0x46).w(this, FUNC(dynax_state::dynax_blit_romregion_w)); // Blitter ROM bank + map(0x47, 0x47).w(this, FUNC(dynax_state::hnoridur_palbank_w)); + map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x51, 0x51).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y + map(0x54, 0x54).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select + map(0x55, 0x55).nopw(); // ? VBlank IRQ Ack + map(0x56, 0x56).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x57, 0x57).r(this, FUNC(dynax_state::ret_ff)); // ? + map(0x60, 0x67).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x70, 0x77).w("outlatch", FUNC(ls259_device::write_d0)); +} /*************************************************************************** Hana Jingi @@ -566,65 +583,68 @@ READ8_MEMBER(dynax_state::hjingi_keyboard_1_r) return hanamai_keyboard_1_r(space, 0) | ioport("BET")->read(); } -ADDRESS_MAP_START(dynax_state::hjingi_mem_map) - AM_RANGE( 0x0000, 0x01ff ) AM_ROM - AM_RANGE( 0x0200, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void dynax_state::hjingi_mem_map(address_map &map) +{ + map(0x0000, 0x01ff).rom(); + map(0x0200, 0x1fff).ram().share("nvram"); + map(0x2000, 0x7fff).rom(); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xffff).bankr("bank1"); +} -ADDRESS_MAP_START(dynax_state::hjingi_banked_map) - AM_RANGE(0x80000, 0x800ff) AM_WRITE(hnoridur_palette_lo_w) - AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(hnoridur_palette_hi_w) -ADDRESS_MAP_END +void dynax_state::hjingi_banked_map(address_map &map) +{ + map(0x80000, 0x800ff).w(this, FUNC(dynax_state::hnoridur_palette_lo_w)); + map(0xa0000, 0xa00ff).w(this, FUNC(dynax_state::hnoridur_palette_hi_w)); +} -ADDRESS_MAP_START(dynax_state::hjingi_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter +void dynax_state::hjingi_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter // AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x22, 0x22 ) AM_READ(hjingi_keyboard_1_r) // P2 + Hopper - AM_RANGE( 0x23, 0x23 ) AM_READ(hjingi_keyboard_0_r) // P1 + Hopper - AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW1") // DSW1 - AM_RANGE( 0x25, 0x25 ) AM_READ_PORT("DSW3") // DSW3 - AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW2") // DSW2 + map(0x20, 0x20).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x21, 0x21).portr("COINS"); // Coins + map(0x22, 0x22).r(this, FUNC(dynax_state::hjingi_keyboard_1_r)); // P2 + Hopper + map(0x23, 0x23).r(this, FUNC(dynax_state::hjingi_keyboard_0_r)); // P1 + Hopper + map(0x24, 0x24).portr("DSW1"); // DSW1 + map(0x25, 0x25).portr("DSW3"); // DSW3 + map(0x26, 0x26).portr("DSW2"); // DSW2 - AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) // + map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x32, 0x32).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x34, 0x35).w("ym2413", FUNC(ym2413_device::write)); // - AM_RANGE( 0x36, 0x36 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, DSW0 - AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 - AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // + map(0x36, 0x36).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912, DSW0 + map(0x38, 0x38).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912 + map(0x3a, 0x3a).w("aysnd", FUNC(ay8912_device::address_w)); // - AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable - AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x46, 0x46 ) AM_WRITE(dynax_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w) + map(0x40, 0x40).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x41, 0x41).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x42, 0x42).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0x43, 0x43).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x44, 0x44).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable + map(0x45, 0x45).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x46, 0x46).w(this, FUNC(dynax_state::dynax_blit_romregion_w)); // Blitter ROM bank + map(0x47, 0x47).w(this, FUNC(dynax_state::hnoridur_palbank_w)); - AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y + map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x51, 0x51).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y - AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // palette bank select + map(0x54, 0x54).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // palette bank select - AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // Blitter Busy + map(0x56, 0x56).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x57, 0x57).r(this, FUNC(dynax_state::ret_ff)); // Blitter Busy - AM_RANGE( 0x60, 0x67 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // Flip screen, layer half select, etc. + map(0x60, 0x67).w(m_mainlatch, FUNC(ls259_device::write_d0)); // Flip screen, layer half select, etc. - AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("outlatch", ls259_device, write_d0) // Coin Counters, Hopper, Coin Lockout + map(0x70, 0x77).w("outlatch", FUNC(ls259_device::write_d0)); // Coin Counters, Hopper, Coin Lockout - AM_RANGE( 0x80, 0x80 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select -ADDRESS_MAP_END + map(0x80, 0x80).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select +} /*************************************************************************** @@ -706,143 +726,148 @@ WRITE8_MEMBER(dynax_state::yarunara_blit_romregion_w) logerror("%s: unmapped romregion=%02X\n", machine().describe_context(), data); } -ADDRESS_MAP_START(dynax_state::yarunara_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x01 ) AM_WRITE(yarunara_input_w) // Controls - AM_RANGE( 0x02, 0x03 ) AM_READ(yarunara_input_r) // - AM_RANGE( 0x11, 0x17 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0x20, 0x20 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x22, 0x22 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x24, 0x25 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x28, 0x28 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 - AM_RANGE( 0x2a, 0x2a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // - AM_RANGE( 0x48, 0x48 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x49, 0x49 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x4a, 0x4a ) AM_WRITE(yarunara_rombank_w) // BANK ROM Select - AM_RANGE( 0x4b, 0x4b ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT("DSW0") // DSW 1 - AM_RANGE( 0x4f, 0x4f ) AM_READ_PORT("DSW1") // DSW 2 - AM_RANGE( 0x50, 0x57 ) AM_DEVWRITE("mainlatch", ls259_device, write_d1) - AM_RANGE( 0x68, 0x68 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x69, 0x69 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x6a, 0x6a ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0x6b, 0x6b ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x6c, 0x6c ) AM_WRITE(hanamai_priority_w) // layer priority and enable - AM_RANGE( 0x6d, 0x6d ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x6e, 0x6e ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank -ADDRESS_MAP_END +void dynax_state::yarunara_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(dynax_state::yarunara_input_w)); // Controls + map(0x02, 0x03).r(this, FUNC(dynax_state::yarunara_input_r)); // + map(0x11, 0x17).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter + map(0x20, 0x20).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x22, 0x22).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x24, 0x25).w("ym2413", FUNC(ym2413_device::write)); // + map(0x28, 0x28).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912 + map(0x2a, 0x2a).w("aysnd", FUNC(ay8912_device::address_w)); // + map(0x48, 0x48).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x49, 0x49).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y + map(0x4a, 0x4a).w(this, FUNC(dynax_state::yarunara_rombank_w)); // BANK ROM Select + map(0x4b, 0x4b).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x4c, 0x4c).portr("DSW0"); // DSW 1 + map(0x4f, 0x4f).portr("DSW1"); // DSW 2 + map(0x50, 0x57).w(m_mainlatch, FUNC(ls259_device::write_d1)); + map(0x68, 0x68).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x69, 0x69).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x6a, 0x6a).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0x6b, 0x6b).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x6c, 0x6c).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable + map(0x6d, 0x6d).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x6e, 0x6e).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank +} // Almost identical to hnoridur -ADDRESS_MAP_START(dynax_state::mcnpshnt_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter +void dynax_state::mcnpshnt_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter // AM_RANGE( 0x10, 0x10 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x11, 0x11 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x20, 0x20 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x22, 0x22 ) AM_READ(hanamai_keyboard_1_r) // P2 - AM_RANGE( 0x23, 0x23 ) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x24, 0x24 ) AM_READ_PORT("DSW0") // DSW2 - AM_RANGE( 0x26, 0x26 ) AM_READ_PORT("DSW1") // DSW3 - AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x32, 0x32 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x34, 0x35 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x38, 0x38 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 - AM_RANGE( 0x3a, 0x3a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // - AM_RANGE( 0x40, 0x40 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x41, 0x41 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x42, 0x42 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0x43, 0x43 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x44, 0x44 ) AM_WRITE(hanamai_priority_w) // layer priority and enable - AM_RANGE( 0x45, 0x45 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x46, 0x46 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0x47, 0x47 ) AM_WRITE(hnoridur_palbank_w) - AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x54, 0x54 ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select - AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // ? - AM_RANGE( 0x60, 0x67 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x70, 0x77 ) AM_DEVWRITE("outlatch", ls259_device, write_d0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dynax_state::sprtmtch_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0x10, 0x11 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // 2 x DSW + map(0x20, 0x20).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x21, 0x21).portr("COINS"); // Coins + map(0x22, 0x22).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2 + map(0x23, 0x23).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x24, 0x24).portr("DSW0"); // DSW2 + map(0x26, 0x26).portr("DSW1"); // DSW3 + map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x32, 0x32).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x34, 0x35).w("ym2413", FUNC(ym2413_device::write)); // + map(0x38, 0x38).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912 + map(0x3a, 0x3a).w("aysnd", FUNC(ay8912_device::address_w)); // + map(0x40, 0x40).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x41, 0x41).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x42, 0x42).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0x43, 0x43).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x44, 0x44).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable + map(0x45, 0x45).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x46, 0x46).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank + map(0x47, 0x47).w(this, FUNC(dynax_state::hnoridur_palbank_w)); + map(0x50, 0x50).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x51, 0x51).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y + map(0x54, 0x54).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select + map(0x56, 0x56).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x57, 0x57).r(this, FUNC(dynax_state::ret_ff)); // ? + map(0x60, 0x67).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x70, 0x77).w("outlatch", FUNC(ls259_device::write_d0)); +} + + +void dynax_state::sprtmtch_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x07).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter + map(0x10, 0x11).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // 2 x DSW // AM_RANGE( 0x12, 0x12 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x13, 0x13 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x20, 0x20 ) AM_READ_PORT("P1") // P1 - AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("P2") // P2 - AM_RANGE( 0x22, 0x22 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x23, 0x23 ) AM_READ(ret_ff) // ? - AM_RANGE( 0x30, 0x30 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable - AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select - AM_RANGE( 0x32, 0x32 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x33, 0x33 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x34, 0x34 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) - AM_RANGE( 0x35, 0x35 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x36, 0x36 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x37, 0x37 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x40, 0x47 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(dynax_state::mjfriday_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x01, 0x01 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) - AM_RANGE( 0x02, 0x02 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select - AM_RANGE( 0x03, 0x03 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x10, 0x17 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x41, 0x47 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter + map(0x20, 0x20).portr("P1"); // P1 + map(0x21, 0x21).portr("P2"); // P2 + map(0x22, 0x22).portr("COINS"); // Coins + map(0x23, 0x23).r(this, FUNC(dynax_state::ret_ff)); // ? + map(0x30, 0x30).w(this, FUNC(dynax_state::dynax_layer_enable_w)); // Layers Enable + map(0x31, 0x31).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select + map(0x32, 0x32).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x33, 0x33).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x34, 0x34).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits) + map(0x35, 0x35).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x36, 0x36).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x37, 0x37).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x40, 0x47).w(m_mainlatch, FUNC(ls259_device::write_d0)); +} + + + +void dynax_state::mjfriday_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x01, 0x01).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits) + map(0x02, 0x02).w(this, FUNC(dynax_state::dynax_rombank_w)); // BANK ROM Select + map(0x03, 0x03).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x10, 0x17).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x41, 0x47).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter // AM_RANGE( 0x50, 0x50 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x51, 0x51 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x60, 0x60 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x61, 0x61 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x62, 0x62 ) AM_READ(hanamai_keyboard_1_r) // P2 - AM_RANGE( 0x63, 0x63 ) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x64, 0x64 ) AM_READ_PORT("DSW0") // DSW - AM_RANGE( 0x67, 0x67 ) AM_READ_PORT("DSW1") // DSW - AM_RANGE( 0x70, 0x71 ) AM_DEVWRITE("ym2413", ym2413_device, write) // + map(0x60, 0x60).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x61, 0x61).portr("COINS"); // Coins + map(0x62, 0x62).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2 + map(0x63, 0x63).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x64, 0x64).portr("DSW0"); // DSW + map(0x67, 0x67).portr("DSW1"); // DSW + map(0x70, 0x71).w("ym2413", FUNC(ym2413_device::write)); // // AM_RANGE( 0x80, 0x80 ) AM_WRITENOP // IRQ ack? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dynax_state::nanajign_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x02, 0x02 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x04, 0x05 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x08, 0x08 ) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 - AM_RANGE( 0x0a, 0x0a ) AM_DEVWRITE("aysnd", ay8912_device, address_w) // - AM_RANGE( 0x10, 0x10 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x12, 0x12 ) AM_READ(hanamai_keyboard_1_r) // P2 - AM_RANGE( 0x13, 0x13 ) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x14, 0x14 ) AM_READ_PORT("DSW0") // DSW1 - AM_RANGE( 0x15, 0x15 ) AM_READ_PORT("DSW1") // DSW2 - AM_RANGE( 0x16, 0x16 ) AM_READ_PORT("DSW2") // DSW3 +} + + +void dynax_state::nanajign_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x02, 0x02).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x04, 0x05).w("ym2413", FUNC(ym2413_device::write)); // + map(0x08, 0x08).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912 + map(0x0a, 0x0a).w("aysnd", FUNC(ay8912_device::address_w)); // + map(0x10, 0x10).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x11, 0x11).portr("COINS"); // Coins + map(0x12, 0x12).r(this, FUNC(dynax_state::hanamai_keyboard_1_r)); // P2 + map(0x13, 0x13).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x14, 0x14).portr("DSW0"); // DSW1 + map(0x15, 0x15).portr("DSW1"); // DSW2 + map(0x16, 0x16).portr("DSW2"); // DSW3 // AM_RANGE( 0x20, 0x21 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x31, 0x37 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0x40, 0x47 ) AM_DEVWRITE("outlatch", ls259_device, write_d0) // Coin Counter - AM_RANGE( 0x50, 0x57 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x6a, 0x6a ) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select - AM_RANGE( 0x6c, 0x6c ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x70, 0x70 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x71, 0x71 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x72, 0x72 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0x73, 0x73 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x74, 0x74 ) AM_WRITE(hanamai_priority_w) // layer priority and enable - AM_RANGE( 0x75, 0x75 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x76, 0x76 ) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0x77, 0x77 ) AM_WRITE(hnoridur_palbank_w) -ADDRESS_MAP_END + map(0x31, 0x37).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter + map(0x40, 0x47).w("outlatch", FUNC(ls259_device::write_d0)); // Coin Counter + map(0x50, 0x57).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x60, 0x60).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x62, 0x62).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y + map(0x6a, 0x6a).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select + map(0x6c, 0x6c).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x70, 0x70).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x71, 0x71).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x72, 0x72).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0x73, 0x73).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x74, 0x74).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable + map(0x75, 0x75).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x76, 0x76).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank + map(0x77, 0x77).w(this, FUNC(dynax_state::hnoridur_palbank_w)); +} /*************************************************************************** @@ -866,34 +891,35 @@ WRITE8_MEMBER(dynax_state::jantouki_rombank_w) output().set_led_value(0, data & 0x10); // maybe } -ADDRESS_MAP_START(dynax_state::jantouki_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void dynax_state::jantouki_io_map(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE( 0x40, 0x41 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x48, 0x48 ) AM_WRITE(jantouki_rombank_w) // BANK ROM Select - AM_RANGE( 0x49, 0x49 ) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU - AM_RANGE( 0x4a, 0x4a ) AM_READ(jantouki_soundlatch_ack_r) // Soundlatch status - AM_RANGE( 0x4b, 0x4b ) AM_WRITE(dynax_blit2_dest_w) // Destination Layer 2 - AM_RANGE( 0x4d, 0x4d ) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0x4f, 0x4f ) AM_WRITE(dynax_blit2_romregion_w) // Blitter 2 ROM bank - AM_RANGE( 0x50, 0x50 ) AM_WRITE(jantouki_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x51, 0x51 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x52, 0x52 ) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x54, 0x54 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x55, 0x55 ) AM_READ_PORT("DSW0") // DSW1 - AM_RANGE( 0x56, 0x56 ) AM_READ_PORT("DSW1") // DSW2 - AM_RANGE( 0x58, 0x5f ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x60, 0x60 ) AM_WRITE(dynax_blit_palette67_w) // Layers Palettes (Low Bits) - AM_RANGE( 0x61, 0x61 ) AM_WRITE(dynax_blit_palette45_w) // - AM_RANGE( 0x62, 0x62 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x63, 0x63 ) AM_WRITE(dynax_blit_palette01_w) // - AM_RANGE( 0x64, 0x64 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x65, 0x65 ) AM_WRITE(dynax_blit2_pen_w) // Destination Pen 2 - AM_RANGE( 0x66, 0x66 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x67, 0x67 ) AM_READ(jantouki_blitter_busy_r) // - AM_RANGE( 0x69, 0x6f ) AM_WRITE(jantouki_blitter2_rev2_w) // Blitter 2 - AM_RANGE( 0x71, 0x77 ) AM_WRITE(jantouki_blitter_rev2_w) // Blitter - AM_RANGE( 0x78, 0x7e ) AM_WRITE(jantouki_layer_enable_w) // Layers Enable -ADDRESS_MAP_END + map(0x48, 0x48).w(this, FUNC(dynax_state::jantouki_rombank_w)); // BANK ROM Select + map(0x49, 0x49).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0x4a, 0x4a).r(this, FUNC(dynax_state::jantouki_soundlatch_ack_r)); // Soundlatch status + map(0x4b, 0x4b).w(this, FUNC(dynax_state::dynax_blit2_dest_w)); // Destination Layer 2 + map(0x4d, 0x4d).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0x4f, 0x4f).w(this, FUNC(dynax_state::dynax_blit2_romregion_w)); // Blitter 2 ROM bank + map(0x50, 0x50).w(this, FUNC(dynax_state::jantouki_vblank_ack_w)); // VBlank IRQ Ack + map(0x51, 0x51).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x52, 0x52).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x54, 0x54).portr("COINS"); // Coins + map(0x55, 0x55).portr("DSW0"); // DSW1 + map(0x56, 0x56).portr("DSW1"); // DSW2 + map(0x58, 0x5f).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x60, 0x60).w(this, FUNC(dynax_state::dynax_blit_palette67_w)); // Layers Palettes (Low Bits) + map(0x61, 0x61).w(this, FUNC(dynax_state::dynax_blit_palette45_w)); // + map(0x62, 0x62).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x63, 0x63).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // + map(0x64, 0x64).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x65, 0x65).w(this, FUNC(dynax_state::dynax_blit2_pen_w)); // Destination Pen 2 + map(0x66, 0x66).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x67, 0x67).r(this, FUNC(dynax_state::jantouki_blitter_busy_r)); // + map(0x69, 0x6f).w(this, FUNC(dynax_state::jantouki_blitter2_rev2_w)); // Blitter 2 + map(0x71, 0x77).w(this, FUNC(dynax_state::jantouki_blitter_rev2_w)); // Blitter + map(0x78, 0x7e).w(this, FUNC(dynax_state::jantouki_layer_enable_w)); // Layers Enable +} /*************************************************************************** Jantouki - Sound CPU @@ -904,19 +930,20 @@ READ8_MEMBER(dynax_state::jantouki_soundlatch_status_r) return m_soundlatch->pending_r() ? 0 : 0x80; } -ADDRESS_MAP_START(dynax_state::jantouki_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE(jantouki_sound_rombank_w) // BANK ROM Select - AM_RANGE( 0x10, 0x10 ) AM_WRITE(jantouki_sound_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x21, 0x21 ) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912 - AM_RANGE( 0x22, 0x23 ) AM_DEVWRITE("aysnd", ay8912_device, data_address_w) // - AM_RANGE( 0x28, 0x29 ) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) // - AM_RANGE( 0x30, 0x30 ) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x40, 0x40 ) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x50, 0x50 ) AM_READ(jantouki_soundlatch_status_r) // Soundlatch status - AM_RANGE( 0x60, 0x60 ) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE( 0x70, 0x70 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void dynax_state::jantouki_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(dynax_state::jantouki_sound_rombank_w)); // BANK ROM Select + map(0x10, 0x10).w(this, FUNC(dynax_state::jantouki_sound_vblank_ack_w)); // VBlank IRQ Ack + map(0x21, 0x21).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912 + map(0x22, 0x23).w("aysnd", FUNC(ay8912_device::data_address_w)); // + map(0x28, 0x29).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // + map(0x30, 0x30).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x40, 0x40).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x50, 0x50).r(this, FUNC(dynax_state::jantouki_soundlatch_status_r)); // Soundlatch status + map(0x60, 0x60).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x70, 0x70).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU +} @@ -937,64 +964,66 @@ READ8_MEMBER(dynax_state::mjelctrn_dsw_r) return ioport(dswnames[dsw])->read(); } -ADDRESS_MAP_START(dynax_state::mjelctrn_io_map) +void dynax_state::mjelctrn_io_map(address_map &map) +{ //ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_MIRROR(0xff00) AM_WRITE(adpcm_reset_w) // MSM5205 reset - AM_RANGE( 0x02, 0x02 ) AM_MIRROR(0xff00) AM_WRITE(adpcm_data_w) // MSM5205 data - AM_RANGE( 0x04, 0x05 ) AM_MIRROR(0xff00) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x08, 0x08 ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, data_w) // AY8912 - AM_RANGE( 0x0a, 0x0a ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, address_w) // + map(0x00, 0x00).mirror(0xff00).w(this, FUNC(dynax_state::adpcm_reset_w)); // MSM5205 reset + map(0x02, 0x02).mirror(0xff00).w(this, FUNC(dynax_state::adpcm_data_w)); // MSM5205 data + map(0x04, 0x05).mirror(0xff00).w("ym2413", FUNC(ym2413_device::write)); // + map(0x08, 0x08).mirror(0xff00).w("aysnd", FUNC(ay8912_device::data_w)); // AY8912 + map(0x0a, 0x0a).mirror(0xff00).w("aysnd", FUNC(ay8912_device::address_w)); // // AM_RANGE( 0x20, 0x20 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller // AM_RANGE( 0x21, 0x21 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller - AM_RANGE( 0x40, 0x47 ) AM_MIRROR(0xff00) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE( 0x60, 0x60 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X - AM_RANGE( 0x62, 0x62 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y + map(0x40, 0x47).mirror(0xff00).w("outlatch", FUNC(ls259_device::write_d0)); + map(0x60, 0x60).mirror(0xff00).w(this, FUNC(dynax_state::dynax_extra_scrollx_w)); // screen scroll X + map(0x62, 0x62).mirror(0xff00).w(this, FUNC(dynax_state::dynax_extra_scrolly_w)); // screen scroll Y // AM_RANGE( 0x64, 0x64 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X // AM_RANGE( 0x66, 0x66 ) AM_MIRROR(0xff00) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x6a, 0x6a ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select - AM_RANGE( 0x80, 0x80 ) AM_MIRROR(0xff00) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x81, 0x81 ) AM_MIRROR(0xff00) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x82, 0x82 ) AM_MIRROR(0xff00) AM_READ(mjelctrn_keyboard_1_r) // P2 - AM_RANGE( 0x83, 0x83 ) AM_MIRROR(0xff00) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x84, 0x84 ) AM_MIRROR(0xff00) AM_READ(mjelctrn_dsw_r) // DSW8 x 4 - AM_RANGE( 0x85, 0x85 ) AM_MIRROR(0xff00) AM_READ_PORT("SW1") // DSW2 - AM_RANGE( 0xa1, 0xa7 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0xc0, 0xc7 ) AM_MIRROR(0xff00) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0xe0, 0xe0 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0xe1, 0xe1 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_dest_w) // Destination Layer - AM_RANGE( 0xe2, 0xe2 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0xe3, 0xe3 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0xe4, 0xe4 ) AM_MIRROR(0xff00) AM_WRITE(hanamai_priority_w) // layer priority and enable - AM_RANGE( 0xe5, 0xe5 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0xe6, 0xe6 ) AM_MIRROR(0xff00) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0xe7, 0xe7 ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_palbank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::mjembase_io_map) + map(0x6a, 0x6a).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select + map(0x80, 0x80).mirror(0xff00).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x81, 0x81).mirror(0xff00).portr("COINS"); // Coins + map(0x82, 0x82).mirror(0xff00).r(this, FUNC(dynax_state::mjelctrn_keyboard_1_r)); // P2 + map(0x83, 0x83).mirror(0xff00).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x84, 0x84).mirror(0xff00).r(this, FUNC(dynax_state::mjelctrn_dsw_r)); // DSW8 x 4 + map(0x85, 0x85).mirror(0xff00).portr("SW1"); // DSW2 + map(0xa1, 0xa7).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter + map(0xc0, 0xc7).mirror(0xff00).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xe0, 0xe0).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0xe1, 0xe1).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_dest_w)); // Destination Layer + map(0xe2, 0xe2).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0xe3, 0xe3).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0xe4, 0xe4).mirror(0xff00).w(this, FUNC(dynax_state::hanamai_priority_w)); // layer priority and enable + map(0xe5, 0xe5).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0xe6, 0xe6).mirror(0xff00).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank + map(0xe7, 0xe7).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_palbank_w)); +} + +void dynax_state::mjembase_io_map(address_map &map) +{ //ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x04, 0x05 ) AM_MIRROR(0xff00) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x06, 0x06 ) AM_MIRROR(0xff00) AM_DEVREAD("aysnd", ay8912_device, data_r) // AY8912, dsw0 - AM_RANGE( 0x08, 0x08 ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, data_w) // - AM_RANGE( 0x0a, 0x0a ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8912_device, address_w) // - AM_RANGE( 0x20, 0x20 ) AM_MIRROR(0xff00) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x21, 0x21 ) AM_MIRROR(0xff00) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x22, 0x22 ) AM_MIRROR(0xff00) AM_READ(mjelctrn_keyboard_1_r) // P2 - AM_RANGE( 0x23, 0x23 ) AM_MIRROR(0xff00) AM_READ(hanamai_keyboard_0_r) // P1 - AM_RANGE( 0x24, 0x24 ) AM_MIRROR(0xff00) AM_READ_PORT("DSW3") + map(0x04, 0x05).mirror(0xff00).w("ym2413", FUNC(ym2413_device::write)); // + map(0x06, 0x06).mirror(0xff00).r("aysnd", FUNC(ay8912_device::data_r)); // AY8912, dsw0 + map(0x08, 0x08).mirror(0xff00).w("aysnd", FUNC(ay8912_device::data_w)); // + map(0x0a, 0x0a).mirror(0xff00).w("aysnd", FUNC(ay8912_device::address_w)); // + map(0x20, 0x20).mirror(0xff00).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x21, 0x21).mirror(0xff00).portr("COINS"); // Coins + map(0x22, 0x22).mirror(0xff00).r(this, FUNC(dynax_state::mjelctrn_keyboard_1_r)); // P2 + map(0x23, 0x23).mirror(0xff00).r(this, FUNC(dynax_state::hanamai_keyboard_0_r)); // P1 + map(0x24, 0x24).mirror(0xff00).portr("DSW3"); // AM_RANGE( 0x40, 0x40 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller // AM_RANGE( 0x41, 0x41 ) AM_MIRROR(0xff00) AM_WRITENOP // CRT Controller - AM_RANGE( 0x61, 0x67 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blitter_rev2_w) // Blitter - AM_RANGE( 0x80, 0x87 ) AM_MIRROR(0xff00) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0xa0, 0xa0 ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_rombank_w) // BANK ROM Select - AM_RANGE( 0xc0, 0xc0 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0xc1, 0xc1 ) AM_MIRROR(0xff00) AM_WRITE(mjembase_blit_dest_w) // Destination Layer - AM_RANGE( 0xc2, 0xc2 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes - AM_RANGE( 0xc3, 0xc3 ) AM_MIRROR(0xff00) AM_WRITE(mjembase_blit_palette23_w) // - AM_RANGE( 0xc4, 0xc4 ) AM_MIRROR(0xff00) AM_WRITE(mjembase_priority_w) // layer priority and enable - AM_RANGE( 0xc5, 0xc5 ) AM_MIRROR(0xff00) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0xc6, 0xc6 ) AM_MIRROR(0xff00) AM_WRITE(yarunara_blit_romregion_w) // Blitter ROM bank - AM_RANGE( 0xc7, 0xc7 ) AM_MIRROR(0xff00) AM_WRITE(hnoridur_palbank_w) -ADDRESS_MAP_END + map(0x61, 0x67).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter + map(0x80, 0x87).mirror(0xff00).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0xa0, 0xa0).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_rombank_w)); // BANK ROM Select + map(0xc0, 0xc0).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0xc1, 0xc1).mirror(0xff00).w(this, FUNC(dynax_state::mjembase_blit_dest_w)); // Destination Layer + map(0xc2, 0xc2).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes + map(0xc3, 0xc3).mirror(0xff00).w(this, FUNC(dynax_state::mjembase_blit_palette23_w)); // + map(0xc4, 0xc4).mirror(0xff00).w(this, FUNC(dynax_state::mjembase_priority_w)); // layer priority and enable + map(0xc5, 0xc5).mirror(0xff00).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0xc6, 0xc6).mirror(0xff00).w(this, FUNC(dynax_state::yarunara_blit_romregion_w)); // Blitter ROM bank + map(0xc7, 0xc7).mirror(0xff00).w(this, FUNC(dynax_state::hnoridur_palbank_w)); +} /*************************************************************************** @@ -1202,33 +1231,38 @@ WRITE8_MEMBER(dynax_state::tenkai_blit_romregion_w) logerror("%04x: unmapped romregion=%02X\n", m_maincpu->pc(), data); } -ADDRESS_MAP_START(dynax_state::tenkai_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) - AM_RANGE( 0x10000, 0x10000 ) AM_DEVREAD("aysnd", ay8910_device, data_r) // AY8910 - AM_RANGE( 0x10008, 0x10008 ) AM_DEVWRITE("aysnd", ay8910_device, data_w) // - AM_RANGE( 0x10010, 0x10010 ) AM_DEVWRITE("aysnd", ay8910_device, address_w) // - AM_RANGE( 0x10020, 0x10021 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x10040, 0x10040 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x10044, 0x10044 ) AM_WRITE(tenkai_blit_dest_w) // Destination Layer - AM_RANGE( 0x10048, 0x10048 ) AM_WRITE(tenkai_blit_palette23_w) // Layers Palettes - AM_RANGE( 0x1004c, 0x1004c ) AM_WRITE(tenkai_blit_palette01_w) // - AM_RANGE( 0x10050, 0x10050 ) AM_WRITE(tenkai_priority_w) // layer priority and enable - AM_RANGE( 0x10054, 0x10054 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x10058, 0x10058 ) AM_WRITE(tenkai_blit_romregion_w) // Blitter ROM bank - ;map(0x10060, 0x1007f).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d1(space, offset >> 2, data, mem_mask); }); - AM_RANGE( 0x100c0, 0x100c0 ) AM_WRITE(tenkai_ipsel_w) - AM_RANGE( 0x100c1, 0x100c1 ) AM_WRITE(tenkai_ip_w) - AM_RANGE( 0x100c2, 0x100c3 ) AM_READ(tenkai_ip_r) - AM_RANGE( 0x100e1, 0x100e7 ) AM_WRITE(tenkai_blitter_rev2_w) // Blitter (inverted scroll values) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::tenkai_banked_map) - AM_RANGE( 0x00000, 0x3ffff ) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE( 0x80000, 0x8000f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x90000, 0x97fff ) AM_READWRITE(tenkai_palette_r, tenkai_palette_w) -ADDRESS_MAP_END +void dynax_state::tenkai_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); + map(0x10000, 0x10000).r("aysnd", FUNC(ay8910_device::data_r)); // AY8910 + map(0x10008, 0x10008).w("aysnd", FUNC(ay8910_device::data_w)); // + map(0x10010, 0x10010).w("aysnd", FUNC(ay8910_device::address_w)); // + map(0x10020, 0x10021).w("ym2413", FUNC(ym2413_device::write)); // + map(0x10040, 0x10040).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x10044, 0x10044).w(this, FUNC(dynax_state::tenkai_blit_dest_w)); // Destination Layer + map(0x10048, 0x10048).w(this, FUNC(dynax_state::tenkai_blit_palette23_w)); // Layers Palettes + map(0x1004c, 0x1004c).w(this, FUNC(dynax_state::tenkai_blit_palette01_w)); // + map(0x10050, 0x10050).w(this, FUNC(dynax_state::tenkai_priority_w)); // layer priority and enable + map(0x10054, 0x10054).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x10058, 0x10058).w(this, FUNC(dynax_state::tenkai_blit_romregion_w)); // Blitter ROM bank + map(0x10060, 0x1007f).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_mainlatch->write_d1(space, offset >> 2, data, mem_mask); + }); + map(0x100c0, 0x100c0).w(this, FUNC(dynax_state::tenkai_ipsel_w)); + map(0x100c1, 0x100c1).w(this, FUNC(dynax_state::tenkai_ip_w)); + map(0x100c2, 0x100c3).r(this, FUNC(dynax_state::tenkai_ip_r)); + map(0x100e1, 0x100e7).w(this, FUNC(dynax_state::tenkai_blitter_rev2_w)); // Blitter (inverted scroll values) +} + +void dynax_state::tenkai_banked_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom().region("maincpu", 0x10000); + map(0x80000, 0x8000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x90000, 0x97fff).rw(this, FUNC(dynax_state::tenkai_palette_r), FUNC(dynax_state::tenkai_palette_w)); +} /*************************************************************************** Mahjong Gekisha @@ -1276,34 +1310,36 @@ WRITE8_MEMBER(dynax_state::gekisha_p4_w) } -ADDRESS_MAP_START(dynax_state::gekisha_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynax_state::gekisha_banked_map) - AM_RANGE( 0x00000, 0x0ffff ) AM_ROM AM_REGION("maincpu", 0x8000) - AM_RANGE( 0x10000, 0x10000 ) AM_WRITENOP // ? 0 - AM_RANGE( 0x10001, 0x10001 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) - AM_RANGE( 0x10002, 0x10002 ) AM_WRITENOP // ? 1 - AM_RANGE( 0x10003, 0x10003 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x10010, 0x10017 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x10020, 0x10021 ) AM_WRITE(gekisha_hopper_w) - AM_RANGE( 0x10041, 0x10047 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter +void dynax_state::gekisha_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void dynax_state::gekisha_banked_map(address_map &map) +{ + map(0x00000, 0x0ffff).rom().region("maincpu", 0x8000); + map(0x10000, 0x10000).nopw(); // ? 0 + map(0x10001, 0x10001).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits) + map(0x10002, 0x10002).nopw(); // ? 1 + map(0x10003, 0x10003).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x10010, 0x10017).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x10020, 0x10021).w(this, FUNC(dynax_state::gekisha_hopper_w)); + map(0x10041, 0x10047).w(this, FUNC(dynax_state::dynax_blitter_rev2_w)); // Blitter // AM_RANGE( 0x10050, 0x10050 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x10051, 0x10051 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x10060, 0x10060 ) AM_WRITE(hanamai_keyboard_w) // keyboard row select - AM_RANGE( 0x10061, 0x10061 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x10062, 0x10062 ) AM_READ(gekisha_keyboard_1_r) // P2 - AM_RANGE( 0x10063, 0x10063 ) AM_READ(gekisha_keyboard_0_r) // P1 - AM_RANGE( 0x10064, 0x10064 ) AM_READ_PORT("DSW1") // DSW - AM_RANGE( 0x10065, 0x10065 ) AM_READ_PORT("DSW3") // DSW - AM_RANGE( 0x10066, 0x10066 ) AM_READ_PORT("DSW4") // DSW - AM_RANGE( 0x10067, 0x10067 ) AM_READ_PORT("DSW2") // DSW - AM_RANGE( 0x10070, 0x10071 ) AM_DEVWRITE("ym2413", ym2413_device, write) // - AM_RANGE( 0x10080, 0x10080 ) AM_WRITENOP // ? 0,1,6 (bit 0 = screen disable?) -ADDRESS_MAP_END + map(0x10060, 0x10060).w(this, FUNC(dynax_state::hanamai_keyboard_w)); // keyboard row select + map(0x10061, 0x10061).portr("COINS"); // Coins + map(0x10062, 0x10062).r(this, FUNC(dynax_state::gekisha_keyboard_1_r)); // P2 + map(0x10063, 0x10063).r(this, FUNC(dynax_state::gekisha_keyboard_0_r)); // P1 + map(0x10064, 0x10064).portr("DSW1"); // DSW + map(0x10065, 0x10065).portr("DSW3"); // DSW + map(0x10066, 0x10066).portr("DSW4"); // DSW + map(0x10067, 0x10067).portr("DSW2"); // DSW + map(0x10070, 0x10071).w("ym2413", FUNC(ym2413_device::write)); // + map(0x10080, 0x10080).nopw(); // ? 0,1,6 (bit 0 = screen disable?) +} /*************************************************************************** @@ -1321,29 +1357,30 @@ WRITE8_MEMBER(dynax_state::cdracula_sound_rombank_w) logerror("%s: warning, invalid sound bank = %02x\n", machine().describe_context(), data); } -ADDRESS_MAP_START(dynax_state::cdracula_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x07 ) AM_WRITE(cdracula_blitter_rev2_w) // Blitter + Destination Layers - AM_RANGE( 0x10, 0x10 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x11, 0x11 ) AM_NOP // unpopulated oki +void dynax_state::cdracula_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x07).w(this, FUNC(dynax_state::cdracula_blitter_rev2_w)); // Blitter + Destination Layers + map(0x10, 0x10).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x11, 0x11).noprw(); // unpopulated oki // AM_RANGE( 0x12, 0x12 ) AM_WRITENOP // CRT Controller // AM_RANGE( 0x13, 0x13 ) AM_WRITENOP // CRT Controller - AM_RANGE( 0x20, 0x20 ) AM_READ_PORT("P1") // P1 - AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("P2") // P2 - AM_RANGE( 0x22, 0x22 ) AM_READ_PORT("COINS") // Coins - AM_RANGE( 0x30, 0x30 ) AM_WRITE(dynax_layer_enable_w) // Layers Enable + map(0x20, 0x20).portr("P1"); // P1 + map(0x21, 0x21).portr("P2"); // P2 + map(0x22, 0x22).portr("COINS"); // Coins + map(0x30, 0x30).w(this, FUNC(dynax_state::dynax_layer_enable_w)); // Layers Enable // AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w) // BANK ROM Select - AM_RANGE( 0x32, 0x32 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen - AM_RANGE( 0x33, 0x33 ) AM_WRITE(dynax_blit_flags_w) // Flags + Do Blit - AM_RANGE( 0x34, 0x34 ) AM_WRITE(dynax_blit_palette01_w) // Layers Palettes (Low Bits) - AM_RANGE( 0x35, 0x35 ) AM_WRITE(dynax_blit_palette23_w) // - AM_RANGE( 0x36, 0x36 ) AM_WRITE(dynax_blit_backpen_w) // Background Color - AM_RANGE( 0x37, 0x37 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack - AM_RANGE( 0x40, 0x47 ) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE( 0x60, 0x60 ) AM_READ_PORT("DSW2") - AM_RANGE( 0x61, 0x61 ) AM_READ_PORT("DSW1") - AM_RANGE( 0x6b, 0x6b ) AM_WRITE(cdracula_sound_rombank_w) // OKI Bank -ADDRESS_MAP_END + map(0x32, 0x32).w(this, FUNC(dynax_state::dynax_blit_pen_w)); // Destination Pen + map(0x33, 0x33).w(this, FUNC(dynax_state::dynax_blit_flags_w)); // Flags + Do Blit + map(0x34, 0x34).w(this, FUNC(dynax_state::dynax_blit_palette01_w)); // Layers Palettes (Low Bits) + map(0x35, 0x35).w(this, FUNC(dynax_state::dynax_blit_palette23_w)); // + map(0x36, 0x36).w(this, FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color + map(0x37, 0x37).w(this, FUNC(dynax_state::dynax_vblank_ack_w)); // VBlank IRQ Ack + map(0x40, 0x47).w(m_mainlatch, FUNC(ls259_device::write_d0)); + map(0x60, 0x60).portr("DSW2"); + map(0x61, 0x61).portr("DSW1"); + map(0x6b, 0x6b).w(this, FUNC(dynax_state::cdracula_sound_rombank_w)); // OKI Bank +} /*************************************************************************** diff --git a/src/mame/drivers/dynduke.cpp b/src/mame/drivers/dynduke.cpp index da9c00c2496..874070a189d 100644 --- a/src/mame/drivers/dynduke.cpp +++ b/src/mame/drivers/dynduke.cpp @@ -80,71 +80,77 @@ Also, implemented conditional port for Coin Mode (SW1:1) /* Memory Maps */ -ADDRESS_MAP_START(dynduke_state::master_map) - AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08000, 0x080ff) AM_RAM AM_SHARE("scroll_ram") - AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") - AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") - AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP - AM_RANGE(0x0b006, 0x0b007) AM_WRITE(control_w) - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(text_w) AM_SHARE("videoram") - AM_RANGE(0x0d000, 0x0d00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0xa0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynduke_state::slave_map) - AM_RANGE(0x00000, 0x05fff) AM_RAM - AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(background_w) AM_SHARE("back_data") - AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x07000, 0x07fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0a000, 0x0a001) AM_WRITE(gfxbank_w) - AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void dynduke_state::master_map(address_map &map) +{ + map(0x00000, 0x06fff).ram(); + map(0x07000, 0x07fff).ram().share("spriteram"); + map(0x08000, 0x080ff).ram().share("scroll_ram"); + map(0x0a000, 0x0afff).ram().share("share1"); + map(0x0b000, 0x0b001).portr("P1_P2"); + map(0x0b002, 0x0b003).portr("DSW"); + map(0x0b004, 0x0b005).nopw(); + map(0x0b006, 0x0b007).w(this, FUNC(dynduke_state::control_w)); + map(0x0c000, 0x0c7ff).ram().w(this, FUNC(dynduke_state::text_w)).share("videoram"); + map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0xa0000, 0xfffff).rom(); +} + +void dynduke_state::slave_map(address_map &map) +{ + map(0x00000, 0x05fff).ram(); + map(0x06000, 0x067ff).ram().w(this, FUNC(dynduke_state::background_w)).share("back_data"); + map(0x06800, 0x06fff).ram().w(this, FUNC(dynduke_state::foreground_w)).share("fore_data"); + map(0x07000, 0x07fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08000, 0x08fff).ram().share("share1"); + map(0x0a000, 0x0a001).w(this, FUNC(dynduke_state::gfxbank_w)); + map(0x0c000, 0x0c001).nopw(); + map(0xc0000, 0xfffff).rom(); +} /* Memory map used by DlbDyn - probably an addressing PAL is different */ -ADDRESS_MAP_START(dynduke_state::masterj_map) - AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08000, 0x087ff) AM_RAM_WRITE(text_w) AM_SHARE("videoram") - AM_RANGE(0x09000, 0x0900d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0x0c000, 0x0c0ff) AM_RAM AM_SHARE("scroll_ram") - AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0f000, 0x0f001) AM_READ_PORT("P1_P2") - AM_RANGE(0x0f002, 0x0f003) AM_READ_PORT("DSW") - AM_RANGE(0x0f004, 0x0f005) AM_WRITENOP - AM_RANGE(0x0f006, 0x0f007) AM_WRITE(control_w) - AM_RANGE(0xa0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynduke_state::sound_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynduke_state::sound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(dynduke_state::sei80bu_encrypted_full_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END +void dynduke_state::masterj_map(address_map &map) +{ + map(0x00000, 0x06fff).ram(); + map(0x07000, 0x07fff).ram().share("spriteram"); + map(0x08000, 0x087ff).ram().w(this, FUNC(dynduke_state::text_w)).share("videoram"); + map(0x09000, 0x0900d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0x0c000, 0x0c0ff).ram().share("scroll_ram"); + map(0x0e000, 0x0efff).ram().share("share1"); + map(0x0f000, 0x0f001).portr("P1_P2"); + map(0x0f002, 0x0f003).portr("DSW"); + map(0x0f004, 0x0f005).nopw(); + map(0x0f006, 0x0f007).w(this, FUNC(dynduke_state::control_w)); + map(0xa0000, 0xfffff).rom(); +} + +void dynduke_state::sound_map(address_map &map) +{ + map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void dynduke_state::sound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); +} + +void dynduke_state::sei80bu_encrypted_full_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("audiocpu", 0); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} /* Input Ports */ diff --git a/src/mame/drivers/e100.cpp b/src/mame/drivers/e100.cpp index 9f1066f7677..b79ba6a87f2 100644 --- a/src/mame/drivers/e100.cpp +++ b/src/mame/drivers/e100.cpp @@ -423,13 +423,14 @@ WRITE_LINE_MEMBER(e100_state::pia1_cb2_w) } // This map is derived from info in "TEMAL 100 - teknisk manual Esselte 100" -ADDRESS_MAP_START(e100_state::e100_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc800, 0xc81f) AM_READWRITE(pia_r, pia_w) AM_MIRROR(0x07e0) - AM_RANGE(0xd000, 0xffff) AM_ROM AM_REGION("roms", 0x1000) -ADDRESS_MAP_END +void e100_state::e100_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x8000, 0x87ff).rom().region("roms", 0); + map(0xc000, 0xc3ff).ram().share("videoram"); + map(0xc800, 0xc81f).rw(this, FUNC(e100_state::pia_r), FUNC(e100_state::pia_w)).mirror(0x07e0); + map(0xd000, 0xffff).rom().region("roms", 0x1000); +} /* E100 Input ports * Four e100 keys are not mapped yet, diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp index 24177aaf8ea..2ef947a1bb9 100644 --- a/src/mame/drivers/eacc.cpp +++ b/src/mame/drivers/eacc.cpp @@ -94,14 +94,15 @@ private: Address Maps ******************************************************************************/ -ADDRESS_MAP_START(eacc_state::eacc_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xc7ff) // A11,A12,A13 not connected - AM_RANGE(0x0000, 0x001f) AM_RAM AM_SHARE("nvram") // inside cpu, battery-backed - AM_RANGE(0x0020, 0x007f) AM_RAM // inside cpu - AM_RANGE(0x4000, 0x47ff) AM_ROM AM_MIRROR(0x8000) - AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x7fc) AM_DEVREADWRITE("pia", pia6821_device, read, write) -ADDRESS_MAP_END +void eacc_state::eacc_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xc7ff); // A11,A12,A13 not connected + map(0x0000, 0x001f).ram().share("nvram"); // inside cpu, battery-backed + map(0x0020, 0x007f).ram(); // inside cpu + map(0x4000, 0x47ff).rom().mirror(0x8000); + map(0x8000, 0x8003).mirror(0x7fc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); +} /****************************************************************************** diff --git a/src/mame/drivers/ec184x.cpp b/src/mame/drivers/ec184x.cpp index 737fbcbea5c..cd2722a8bf3 100644 --- a/src/mame/drivers/ec184x.cpp +++ b/src/mame/drivers/ec184x.cpp @@ -183,37 +183,43 @@ MACHINE_RESET_MEMBER(ec184x_state, ec1841) } -ADDRESS_MAP_START(ec184x_state::ec1840_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ec184x_state::ec1841_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ec184x_state::ec1847_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ec184x_state::ec1840_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5150_mb_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ec184x_state::ec1841_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ec1841_mb_device, map, 0xffff) - AM_RANGE(0x02b0, 0x02b3) AM_READWRITE8(memboard_r, memboard_w, 0xffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ec184x_state::ec1847_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) +void ec184x_state::ec1840_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void ec184x_state::ec1841_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void ec184x_state::ec1847_map(address_map &map) +{ + map.unmap_value_high(); + map(0xe0000, 0xfffff).rom().region("bios", 0); +} + +void ec184x_state::ec1840_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5150_mb_device::map)); +} + +void ec184x_state::ec1841_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ec1841_mb_device::map)); + map(0x02b0, 0x02b3).rw(this, FUNC(ec184x_state::memboard_r), FUNC(ec184x_state::memboard_w)); +} + +void ec184x_state::ec1847_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); // AM_RANGE(0x0210, 0x021f) AM_RAM // internal (non-standard?) bus extender -ADDRESS_MAP_END +} // XXX verify everything diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp index 5ba1963ad22..d847633a447 100644 --- a/src/mame/drivers/ec65.cpp +++ b/src/mame/drivers/ec65.cpp @@ -67,27 +67,29 @@ public: void ec65k_mem(address_map &map); }; -ADDRESS_MAP_START(ec65_state::ec65_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE(PIA6821_TAG, pia6821_device, read, write) - AM_RANGE(0xe010, 0xe011) AM_DEVREADWRITE(ACIA6850_TAG, acia6850_device, read, write) - AM_RANGE(0xe100, 0xe10f) AM_DEVREADWRITE(VIA6522_0_TAG, via6522_device, read, write) - AM_RANGE(0xe110, 0xe11f) AM_DEVREADWRITE(VIA6522_1_TAG, via6522_device, read, write) - AM_RANGE(0xe130, 0xe133) AM_DEVREADWRITE(ACIA6551_TAG, mos6551_device, read, write) - AM_RANGE(0xe140, 0xe140) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) - AM_RANGE(0xe141, 0xe141) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r , register_w) - AM_RANGE(0xe400, 0xe7ff) AM_RAM // 1KB on-board RAM - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ec65k_state::ec65k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ec65_state::ec65_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).ram(); + map(0xe000, 0xe003).rw(PIA6821_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe010, 0xe011).rw(ACIA6850_TAG, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe100, 0xe10f).rw(m_via_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe110, 0xe11f).rw(m_via_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe130, 0xe133).rw(ACIA6551_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xe140, 0xe140).w(MC6845_TAG, FUNC(mc6845_device::address_w)); + map(0xe141, 0xe141).rw(MC6845_TAG, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xe400, 0xe7ff).ram(); // 1KB on-board RAM + map(0xe800, 0xefff).ram().share("videoram"); + map(0xf000, 0xffff).rom(); +} + +void ec65k_state::ec65k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().share("videoram"); + map(0xf000, 0xffff).rom(); +} /* Input ports */ static INPUT_PORTS_START( ec65 ) diff --git a/src/mame/drivers/ecoinf1.cpp b/src/mame/drivers/ecoinf1.cpp index 3d5ea19ad8b..4d18854a09c 100644 --- a/src/mame/drivers/ecoinf1.cpp +++ b/src/mame/drivers/ecoinf1.cpp @@ -29,14 +29,16 @@ public: }; -ADDRESS_MAP_START(ecoinf1_state::older_memmap) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ecoinf1_state::older_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void ecoinf1_state::older_memmap(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x4fff).ram(); +} + +void ecoinf1_state::older_portmap(address_map &map) +{ + map.global_mask(0xff); +} diff --git a/src/mame/drivers/ecoinf2.cpp b/src/mame/drivers/ecoinf2.cpp index 940162e6020..b32c3452b33 100644 --- a/src/mame/drivers/ecoinf2.cpp +++ b/src/mame/drivers/ecoinf2.cpp @@ -230,25 +230,27 @@ WRITE8_MEMBER(ecoinf2_state::ox_port5c_out_w) // Watchdog? } -ADDRESS_MAP_START(ecoinf2_state::oxo_memmap) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ecoinf2_state::oxo_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_RAM // z180 internal area? - - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ic10_lamp", i8255_device, read, write) //* - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("ic24_coin", i8255_device, read, write) //* - AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("ic22_inpt", i8255_device, read, write) //* - AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ic23_reel", i8255_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("ic13_leds", i8255_device, read, write) //* +void ecoinf2_state::oxo_memmap(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xffff).ram(); +} + +void ecoinf2_state::oxo_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).ram(); // z180 internal area? + + map(0x40, 0x43).rw("ic10_lamp", FUNC(i8255_device::read), FUNC(i8255_device::write)); //* + map(0x44, 0x47).rw("ic24_coin", FUNC(i8255_device::read), FUNC(i8255_device::write)); //* + map(0x48, 0x4b).rw("ic22_inpt", FUNC(i8255_device::read), FUNC(i8255_device::write)); //* + map(0x4c, 0x4f).rw("ic23_reel", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x50, 0x53).rw("ic13_leds", FUNC(i8255_device::read), FUNC(i8255_device::write)); //* // AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ic25_dips", i8255_device, read, write) // is this an 8255, or a mirrored byte read? // AM_RANGE(0x5c, 0x5c) AM_WRITE(ox_port5c_out_w) -ADDRESS_MAP_END +} static INPUT_PORTS_START( ecoinf2 ) diff --git a/src/mame/drivers/ecoinf3.cpp b/src/mame/drivers/ecoinf3.cpp index ac88dea594b..e77a3912d21 100644 --- a/src/mame/drivers/ecoinf3.cpp +++ b/src/mame/drivers/ecoinf3.cpp @@ -427,28 +427,30 @@ WRITE8_MEMBER(ecoinf3_state::ppi8255_intf_e_write_a_alpha_display) std::transform(std::begin(m_chars), std::end(m_chars), std::begin(m_vfd_outputs), set_display); } -ADDRESS_MAP_START(ecoinf3_state::pyramid_memmap) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ecoinf3_state::pyramid_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_RAM // z180 internal area! - - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppi8255_a", i8255_device, read, write) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("ppi8255_b", i8255_device, read, write) - AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("ppi8255_c", i8255_device, read, write) - AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ppi8255_d", i8255_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("ppi8255_e", i8255_device, read, write) - AM_RANGE(0x54, 0x57) AM_DEVREADWRITE("ppi8255_f", i8255_device, read, write) - AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("ppi8255_g", i8255_device, read, write) - AM_RANGE(0x5c, 0x5f) AM_DEVREADWRITE("ppi8255_h", i8255_device, read, write) +void ecoinf3_state::pyramid_memmap(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xffff).ram(); +} + +void ecoinf3_state::pyramid_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).ram(); // z180 internal area! + + map(0x40, 0x43).rw("ppi8255_a", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x44, 0x47).rw("ppi8255_b", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x48, 0x4b).rw("ppi8255_c", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x4c, 0x4f).rw("ppi8255_d", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x50, 0x53).rw("ppi8255_e", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x54, 0x57).rw("ppi8255_f", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x58, 0x5b).rw("ppi8255_g", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5c, 0x5f).rw("ppi8255_h", FUNC(i8255_device::read), FUNC(i8255_device::write)); // frequently accesses DB after 5B, mirror? bug? - AM_RANGE(0xDB, 0xDB) AM_DEVWRITE("sn1", sn76489_device, write) // no idea what the sound chip is, this sounds terrible + map(0xDB, 0xDB).w("sn1", FUNC(sn76489_device::write)); // no idea what the sound chip is, this sounds terrible -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/ecoinfr.cpp b/src/mame/drivers/ecoinfr.cpp index 62a5cc51846..a7fe682a397 100644 --- a/src/mame/drivers/ecoinfr.cpp +++ b/src/mame/drivers/ecoinfr.cpp @@ -476,45 +476,47 @@ WRITE8_MEMBER(ecoinfr_state::ec_port18_out_w) } -ADDRESS_MAP_START(ecoinfr_state::memmap) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - - AM_RANGE(0xa000, 0xa000) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, status_r, control_w) - -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(ecoinfr_state::portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(ec_port00_out_w) AM_READ_PORT("IN0") // Reel 1 Write - AM_RANGE(0x01, 0x01) AM_WRITE(ec_port01_out_w) AM_READ_PORT("IN1") // Reel 2 Write + Reels Opto Read - AM_RANGE(0x02, 0x02) AM_WRITE(ec_port02_out_w) AM_READ_PORT("IN2") // Reel 3 Write - AM_RANGE(0x03, 0x03) AM_WRITE(ec_port03_out_w) AM_READ_PORT("IN3") - AM_RANGE(0x04, 0x04) AM_WRITE(ec_port04_out_w) AM_READ_PORT("IN4") - AM_RANGE(0x05, 0x05) AM_WRITE(ec_port05_out_w) AM_READ_PORT("IN5") - AM_RANGE(0x06, 0x06) AM_WRITE(ec_port06_out_w) AM_READ_PORT("IN6") - AM_RANGE(0x07, 0x07) AM_WRITE(ec_port07_out_w) AM_READ_PORT("IN7") - AM_RANGE(0x08, 0x08) AM_WRITE(ec_port08_out_bank_strobe_w) - AM_RANGE(0x09, 0x09) AM_WRITE(ec_port09_out_reelen_w) // 09 Reel Enables - AM_RANGE(0x0a, 0x0a) AM_WRITE(ec_port0a_out_w) // 10 (Sound 1) - AM_RANGE(0x0b, 0x0b) AM_WRITE(ec_port0b_out_w) // 11 (Sound 2) - AM_RANGE(0x0c, 0x0c) AM_WRITE(ec_port0c_out_cred_strobe_w) - AM_RANGE(0x0d, 0x0d) AM_WRITE(ec_port0d_out_cred_data_w) +void ecoinfr_state::memmap(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + + map(0xa000, 0xa000).rw(UPD8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xa001, 0xa001).rw(UPD8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + +} + + + +void ecoinfr_state::portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(ecoinfr_state::ec_port00_out_w)).portr("IN0"); // Reel 1 Write + map(0x01, 0x01).w(this, FUNC(ecoinfr_state::ec_port01_out_w)).portr("IN1"); // Reel 2 Write + Reels Opto Read + map(0x02, 0x02).w(this, FUNC(ecoinfr_state::ec_port02_out_w)).portr("IN2"); // Reel 3 Write + map(0x03, 0x03).w(this, FUNC(ecoinfr_state::ec_port03_out_w)).portr("IN3"); + map(0x04, 0x04).w(this, FUNC(ecoinfr_state::ec_port04_out_w)).portr("IN4"); + map(0x05, 0x05).w(this, FUNC(ecoinfr_state::ec_port05_out_w)).portr("IN5"); + map(0x06, 0x06).w(this, FUNC(ecoinfr_state::ec_port06_out_w)).portr("IN6"); + map(0x07, 0x07).w(this, FUNC(ecoinfr_state::ec_port07_out_w)).portr("IN7"); + map(0x08, 0x08).w(this, FUNC(ecoinfr_state::ec_port08_out_bank_strobe_w)); + map(0x09, 0x09).w(this, FUNC(ecoinfr_state::ec_port09_out_reelen_w)); // 09 Reel Enables + map(0x0a, 0x0a).w(this, FUNC(ecoinfr_state::ec_port0a_out_w)); // 10 (Sound 1) + map(0x0b, 0x0b).w(this, FUNC(ecoinfr_state::ec_port0b_out_w)); // 11 (Sound 2) + map(0x0c, 0x0c).w(this, FUNC(ecoinfr_state::ec_port0c_out_cred_strobe_w)); + map(0x0d, 0x0d).w(this, FUNC(ecoinfr_state::ec_port0d_out_cred_data_w)); // AM_RANGE(0x0e, 0x0e) AM_WRITE(ec_port0e_out_w) - AM_RANGE(0x0f, 0x0f) AM_WRITE(ec_port0f_out_bank_segdata_w) - AM_RANGE(0x10, 0x10) AM_WRITE(ec_port10_out_w) // 16 (Meter) - AM_RANGE(0x11, 0x11) AM_WRITE(ec_port11_out_w) // SEC - AM_RANGE(0x12, 0x12) AM_WRITE(ec_port12_out_w) // SEC - AM_RANGE(0x13, 0x13) AM_WRITE(ec_port13_out_w) - AM_RANGE(0x14, 0x14) AM_WRITE(ec_port14_out_w) - AM_RANGE(0x15, 0x15) AM_WRITE(ec_port15_out_w) // SEC + VDF (3rd party) - AM_RANGE(0x16, 0x16) AM_WRITE(ec_port16_out_w) - AM_RANGE(0x17, 0x17) AM_WRITE(ec_port17_out_w) // Hopper + VDF (3rd party) - AM_RANGE(0x18, 0x18) AM_WRITE(ec_port18_out_w) // 24 (Watchdog) -ADDRESS_MAP_END + map(0x0f, 0x0f).w(this, FUNC(ecoinfr_state::ec_port0f_out_bank_segdata_w)); + map(0x10, 0x10).w(this, FUNC(ecoinfr_state::ec_port10_out_w)); // 16 (Meter) + map(0x11, 0x11).w(this, FUNC(ecoinfr_state::ec_port11_out_w)); // SEC + map(0x12, 0x12).w(this, FUNC(ecoinfr_state::ec_port12_out_w)); // SEC + map(0x13, 0x13).w(this, FUNC(ecoinfr_state::ec_port13_out_w)); + map(0x14, 0x14).w(this, FUNC(ecoinfr_state::ec_port14_out_w)); + map(0x15, 0x15).w(this, FUNC(ecoinfr_state::ec_port15_out_w)); // SEC + VDF (3rd party) + map(0x16, 0x16).w(this, FUNC(ecoinfr_state::ec_port16_out_w)); + map(0x17, 0x17).w(this, FUNC(ecoinfr_state::ec_port17_out_w)); // Hopper + VDF (3rd party) + map(0x18, 0x18).w(this, FUNC(ecoinfr_state::ec_port18_out_w)); // 24 (Watchdog) +} CUSTOM_INPUT_MEMBER(ecoinfr_state::ecoinfr_reel1_opto_r) { diff --git a/src/mame/drivers/egghunt.cpp b/src/mame/drivers/egghunt.cpp index ff0bac2e31a..8ac8ca9ccfa 100644 --- a/src/mame/drivers/egghunt.cpp +++ b/src/mame/drivers/egghunt.cpp @@ -238,33 +238,36 @@ WRITE8_MEMBER(egghunt_state::egghunt_okibanking_w) m_oki->set_rom_bank((data >> 4) & 1); } -ADDRESS_MAP_START(egghunt_state::egghunt_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(egghunt_atram_w) AM_SHARE("atram") - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(egghunt_bgram_r, egghunt_bgram_w) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(egghunt_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(egghunt_vidram_bank_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(egghunt_gfx_banking_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_WRITE(egghunt_soundlatch_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x06, 0x06) AM_READ_PORT("UNK") AM_WRITENOP - AM_RANGE(0x07, 0x07) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(egghunt_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe001, 0xe001) AM_READWRITE(egghunt_okibanking_r, egghunt_okibanking_w) - AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void egghunt_state::egghunt_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xc800, 0xcfff).ram().w(this, FUNC(egghunt_state::egghunt_atram_w)).share("atram"); + map(0xd000, 0xdfff).rw(this, FUNC(egghunt_state::egghunt_bgram_r), FUNC(egghunt_state::egghunt_bgram_w)); + map(0xe000, 0xffff).ram(); +} + + +void egghunt_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1").w(this, FUNC(egghunt_state::egghunt_vidram_bank_w)); + map(0x01, 0x01).portr("SYSTEM").w(this, FUNC(egghunt_state::egghunt_gfx_banking_w)); + map(0x02, 0x02).portr("P1"); + map(0x03, 0x03).portr("P2").w(this, FUNC(egghunt_state::egghunt_soundlatch_w)); + map(0x04, 0x04).portr("DSW2"); + map(0x06, 0x06).portr("UNK").nopw(); + map(0x07, 0x07).nopw(); +} + +void egghunt_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe001, 0xe001).rw(this, FUNC(egghunt_state::egghunt_okibanking_r), FUNC(egghunt_state::egghunt_okibanking_w)); + map(0xe004, 0xe004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf000, 0xffff).ram(); +} static INPUT_PORTS_START( egghunt ) diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp index 34ceb6caadc..5de72a14224 100644 --- a/src/mame/drivers/einstein.cpp +++ b/src/mame/drivers/einstein.cpp @@ -413,31 +413,33 @@ void einstein_state::machine_reset() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(einstein_state::einstein_mem) - AM_RANGE(0x0000, 0x07fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") - AM_RANGE(0x8000, 0x0ffff) AM_RAMBANK("bank3") -ADDRESS_MAP_END +void einstein_state::einstein_mem(address_map &map) +{ + map(0x0000, 0x07fff).bankr("bank1").bankw("bank2"); + map(0x8000, 0x0ffff).bankrw("bank3"); +} // I/O ports are decoded into 8 blocks using address lines A3 to A7 -ADDRESS_MAP_START(einstein_state::einstein_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff04) AM_READWRITE(reset_r, reset_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I030, ay8910_device, data_r, address_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0xff04) AM_DEVWRITE(IC_I030, ay8910_device, data_w) - AM_RANGE(0x08, 0x08) AM_MIRROR(0xff06) AM_DEVREADWRITE("vdp", tms9129_device, vram_read, vram_write) - AM_RANGE(0x09, 0x09) AM_MIRROR(0xff06) AM_DEVREADWRITE("vdp", tms9129_device, register_read, register_write) - AM_RANGE(0x10, 0x10) AM_MIRROR(0xff06) AM_DEVREADWRITE(IC_I060, i8251_device, data_r, data_w) - AM_RANGE(0x11, 0x11) AM_MIRROR(0xff06) AM_DEVREADWRITE(IC_I060, i8251_device, status_r, control_w) - AM_RANGE(0x18, 0x1b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I042, wd1770_device, read, write) - AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_READWRITE(kybint_msk_r, kybint_msk_w) - AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_WRITE(adcint_msk_w) - AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_WRITE(drsel_w) - AM_RANGE(0x24, 0x24) AM_MIRROR(0xff00) AM_READWRITE(rom_r, rom_w) - AM_RANGE(0x25, 0x25) AM_MIRROR(0xff00) AM_WRITE(fireint_msk_w) - AM_RANGE(0x28, 0x2b) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I058, z80ctc_device, read, write) - AM_RANGE(0x30, 0x33) AM_MIRROR(0xff04) AM_DEVREADWRITE(IC_I063, z80pio_device, read_alt, write_alt) - AM_RANGE(0x38, 0x38) AM_MIRROR(0xff07) AM_DEVREADWRITE("adc", adc0844_device, read, write) -ADDRESS_MAP_END +void einstein_state::einstein_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).mirror(0xff04).rw(this, FUNC(einstein_state::reset_r), FUNC(einstein_state::reset_w)); + map(0x02, 0x02).mirror(0xff04).rw(m_psg, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x03, 0x03).mirror(0xff04).w(m_psg, FUNC(ay8910_device::data_w)); + map(0x08, 0x08).mirror(0xff06).rw("vdp", FUNC(tms9129_device::vram_read), FUNC(tms9129_device::vram_write)); + map(0x09, 0x09).mirror(0xff06).rw("vdp", FUNC(tms9129_device::register_read), FUNC(tms9129_device::register_write)); + map(0x10, 0x10).mirror(0xff06).rw(IC_I060, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x11, 0x11).mirror(0xff06).rw(IC_I060, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x18, 0x1b).mirror(0xff04).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); + map(0x20, 0x20).mirror(0xff00).rw(this, FUNC(einstein_state::kybint_msk_r), FUNC(einstein_state::kybint_msk_w)); + map(0x21, 0x21).mirror(0xff00).w(this, FUNC(einstein_state::adcint_msk_w)); + map(0x23, 0x23).mirror(0xff00).w(this, FUNC(einstein_state::drsel_w)); + map(0x24, 0x24).mirror(0xff00).rw(this, FUNC(einstein_state::rom_r), FUNC(einstein_state::rom_w)); + map(0x25, 0x25).mirror(0xff00).w(this, FUNC(einstein_state::fireint_msk_w)); + map(0x28, 0x2b).mirror(0xff04).rw(IC_I058, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x30, 0x33).mirror(0xff04).rw(IC_I063, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x38, 0x38).mirror(0xff07).rw("adc", FUNC(adc0844_device::read), FUNC(adc0844_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/electron.cpp b/src/mame/drivers/electron.cpp index 8d289364d29..10e2d02b926 100644 --- a/src/mame/drivers/electron.cpp +++ b/src/mame/drivers/electron.cpp @@ -88,14 +88,15 @@ PALETTE_INIT_MEMBER(electron_state, electron) palette.set_pen_colors(0, electron_palette, ARRAY_LENGTH(electron_palette)); } -ADDRESS_MAP_START(electron_state::electron_mem) - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(electron_mem_r, electron_mem_w) /* 32KB of RAM */ - AM_RANGE(0x8000, 0xbfff) AM_READWRITE(electron_paged_r, electron_paged_w) /* Banked ROM pages */ - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("mos", 0) AM_WRITE(electron_mos_w) /* OS ROM */ - AM_RANGE(0xfc00, 0xfcff) AM_READWRITE(electron_fred_r, electron_fred_w ) /* FRED */ - AM_RANGE(0xfd00, 0xfdff) AM_READWRITE(electron_jim_r, electron_jim_w ) /* JIM */ - AM_RANGE(0xfe00, 0xfeff) AM_READWRITE(electron_sheila_r, electron_sheila_w ) /* SHEILA */ -ADDRESS_MAP_END +void electron_state::electron_mem(address_map &map) +{ + map(0x0000, 0x7fff).rw(this, FUNC(electron_state::electron_mem_r), FUNC(electron_state::electron_mem_w)); /* 32KB of RAM */ + map(0x8000, 0xbfff).rw(this, FUNC(electron_state::electron_paged_r), FUNC(electron_state::electron_paged_w)); /* Banked ROM pages */ + map(0xc000, 0xffff).rom().region("mos", 0).w(this, FUNC(electron_state::electron_mos_w)); /* OS ROM */ + map(0xfc00, 0xfcff).rw(this, FUNC(electron_state::electron_fred_r), FUNC(electron_state::electron_fred_w)); /* FRED */ + map(0xfd00, 0xfdff).rw(this, FUNC(electron_state::electron_jim_r), FUNC(electron_state::electron_jim_w)); /* JIM */ + map(0xfe00, 0xfeff).rw(this, FUNC(electron_state::electron_sheila_r), FUNC(electron_state::electron_sheila_w)); /* SHEILA */ +} INPUT_CHANGED_MEMBER(electron_state::trigger_reset) { diff --git a/src/mame/drivers/elekscmp.cpp b/src/mame/drivers/elekscmp.cpp index 7fe1c306533..e9d2e376be7 100644 --- a/src/mame/drivers/elekscmp.cpp +++ b/src/mame/drivers/elekscmp.cpp @@ -98,14 +98,15 @@ READ8_MEMBER(elekscmp_state::keyboard_r) return 0; } -ADDRESS_MAP_START(elekscmp_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x0fff) - AM_RANGE(0x000, 0x5ff) AM_ROM // ROM - AM_RANGE(0x700, 0x707) AM_WRITE(hex_display_w) - AM_RANGE(0x708, 0x70f) AM_READ(keyboard_r) - AM_RANGE(0x800, 0xfff) AM_RAM // RAM - up to 2K of RAM -ADDRESS_MAP_END +void elekscmp_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x0fff); + map(0x000, 0x5ff).rom(); // ROM + map(0x700, 0x707).w(this, FUNC(elekscmp_state::hex_display_w)); + map(0x708, 0x70f).r(this, FUNC(elekscmp_state::keyboard_r)); + map(0x800, 0xfff).ram(); // RAM - up to 2K of RAM +} /* Input ports */ static INPUT_PORTS_START( elekscmp ) diff --git a/src/mame/drivers/elektronmono.cpp b/src/mame/drivers/elektronmono.cpp index 012e624b92c..a8dc80ae335 100644 --- a/src/mame/drivers/elektronmono.cpp +++ b/src/mame/drivers/elektronmono.cpp @@ -143,16 +143,17 @@ void elekmono_state::machine_reset() { } -ADDRESS_MAP_START(elekmono_state::elektron_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x00100000, 0x001fffff) AM_RAM // patch memory - AM_RANGE(0x00200000, 0x002fffff) AM_RAM // main RAM +void elekmono_state::elektron_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom().region("maincpu", 0); + map(0x00100000, 0x001fffff).ram(); // patch memory + map(0x00200000, 0x002fffff).ram(); // main RAM // 00300000 = Coldfire SIM // 00400000 = DSP1 Hi08 host registers (ICR, CVR, ISR, IVR, unused, RXH/TXH, RXM/TXM, RXL/TXL) // 00500000 = DSP2 Hi08 host registers (same as DSP1) - AM_RANGE(0x01000000, 0x01001fff) AM_RAM - AM_RANGE(0x10000000, 0x107fffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0x01000000, 0x01001fff).ram(); + map(0x10000000, 0x107fffff).rom().region("maincpu", 0); +} MACHINE_CONFIG_START(elekmono_state::elektron) MCFG_CPU_ADD("maincpu", MCF5206E, XTAL(25'447'000)) diff --git a/src/mame/drivers/elf.cpp b/src/mame/drivers/elf.cpp index d0f4a77519d..0f0fc2422b1 100644 --- a/src/mame/drivers/elf.cpp +++ b/src/mame/drivers/elf.cpp @@ -74,17 +74,19 @@ WRITE8_MEMBER( elf2_state::memory_w ) /* Memory Maps */ -ADDRESS_MAP_START(elf2_state::elf2_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x00ff) AM_RAMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(elf2_state::elf2_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x01, 0x01) AM_READ(dispon_r) - AM_RANGE(0x04, 0x04) AM_READWRITE(data_r, data_w) -ADDRESS_MAP_END +void elf2_state::elf2_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x0000, 0x00ff).bankrw("bank1"); +} + +void elf2_state::elf2_io(address_map &map) +{ + map.unmap_value_high(); + map(0x01, 0x01).r(this, FUNC(elf2_state::dispon_r)); + map(0x04, 0x04).rw(this, FUNC(elf2_state::data_r), FUNC(elf2_state::data_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp index 60e08f31e88..53d8d84410f 100644 --- a/src/mame/drivers/elwro800.cpp +++ b/src/mame/drivers/elwro800.cpp @@ -369,33 +369,38 @@ WRITE8_MEMBER(elwro800_state::elwro800jr_io_w) * *************************************/ -ADDRESS_MAP_START(elwro800_state::elwro800_mem) - AM_RANGE(0x0000, 0x1fff) AM_DEVICE("bank1", address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2", address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xffff) AM_RAMBANK("rambank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(elwro800_state::elwro800_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(elwro800jr_io_r, elwro800jr_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(elwro800_state::elwro800_m1) - AM_RANGE(0x0000, 0x1fff) AM_DEVICE("bank1", address_map_bank_device, amap8) - AM_RANGE(0x0066, 0x0066) AM_READ(nmi_r) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2", address_map_bank_device, amap8) - AM_RANGE(0x4000, 0xffff) AM_RAMBANK("rambank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(elwro800_state::elwro800_bank1) - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("rambank1") - AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x0000) AM_WRITENOP // BAS0 ROM - AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("maincpu", 0x4000) AM_WRITENOP // BOOT ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(elwro800_state::elwro800_bank2) - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("rambank2") - AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x2000) AM_WRITENOP // BAS1 ROM -ADDRESS_MAP_END +void elwro800_state::elwro800_mem(address_map &map) +{ + map(0x0000, 0x1fff).m(m_bank1, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x3fff).m(m_bank2, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xffff).bankrw("rambank3"); +} + +void elwro800_state::elwro800_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(elwro800_state::elwro800jr_io_r), FUNC(elwro800_state::elwro800jr_io_w)); +} + +void elwro800_state::elwro800_m1(address_map &map) +{ + map(0x0000, 0x1fff).m(m_bank1, FUNC(address_map_bank_device::amap8)); + map(0x0066, 0x0066).r(this, FUNC(elwro800_state::nmi_r)); + map(0x2000, 0x3fff).m(m_bank2, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0xffff).bankrw("rambank3"); +} + +void elwro800_state::elwro800_bank1(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("rambank1"); + map(0x2000, 0x3fff).rom().region("maincpu", 0x0000).nopw(); // BAS0 ROM + map(0x4000, 0x5fff).rom().region("maincpu", 0x4000).nopw(); // BOOT ROM +} + +void elwro800_state::elwro800_bank2(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("rambank2"); + map(0x2000, 0x3fff).rom().region("maincpu", 0x2000).nopw(); // BAS1 ROM +} /************************************* * diff --git a/src/mame/drivers/embargo.cpp b/src/mame/drivers/embargo.cpp index 93e0763ae81..34d80938dae 100644 --- a/src/mame/drivers/embargo.cpp +++ b/src/mame/drivers/embargo.cpp @@ -162,11 +162,12 @@ WRITE8_MEMBER(embargo_state::input_select_w) * *************************************/ -ADDRESS_MAP_START(embargo_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1e00, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void embargo_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1e00, 0x1fff).ram(); + map(0x2000, 0x3fff).ram().share("videoram"); +} @@ -176,16 +177,18 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(embargo_state::main_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(port_1_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(dial_r, port_2_w) - AM_RANGE(0x03, 0x03) AM_WRITENOP /* always 0xFE */ -ADDRESS_MAP_END +void embargo_state::main_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0").w(this, FUNC(embargo_state::port_1_w)); + map(0x02, 0x02).rw(this, FUNC(embargo_state::dial_r), FUNC(embargo_state::port_2_w)); + map(0x03, 0x03).nopw(); /* always 0xFE */ +} -ADDRESS_MAP_START(embargo_state::main_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ_PORT("IN2") - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(input_port_bit_r, input_select_w) -ADDRESS_MAP_END +void embargo_state::main_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).portr("IN2"); + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(embargo_state::input_port_bit_r), FUNC(embargo_state::input_select_w)); +} diff --git a/src/mame/drivers/enigma2.cpp b/src/mame/drivers/enigma2.cpp index c14cb0c6f74..d1ff8e3d18b 100644 --- a/src/mame/drivers/enigma2.cpp +++ b/src/mame/drivers/enigma2.cpp @@ -438,52 +438,56 @@ CUSTOM_INPUT_MEMBER(enigma2_state::p2_controls_r) return ioport("P1CONTROLS")->read(); } -ADDRESS_MAP_START(enigma2_state::engima2_main_cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP - AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4000, 0x4fff) AM_ROM AM_WRITENOP - AM_RANGE(0x5000, 0x57ff) AM_READ(dip_switch_r) AM_WRITENOP - AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_NOP - AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_READ_PORT("IN0") AM_WRITENOP - AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE(sound_data_w) - AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_NOP - AM_RANGE(0x5805, 0x5805) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE(enigma2_flip_screen_w) - AM_RANGE(0x5806, 0x5807) AM_MIRROR(0x07f8) AM_NOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(enigma2_state::engima2a_main_cpu_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP - AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4000, 0x4fff) AM_ROM AM_WRITENOP - AM_RANGE(0x5000, 0x57ff) AM_READ(dip_switch_r) AM_WRITENOP - AM_RANGE(0x5800, 0x5fff) AM_NOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(enigma2_state::engima2a_main_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_NOP - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITENOP - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_READNOP AM_WRITE(sound_data_w) - AM_RANGE(0x04, 0x04) AM_NOP - AM_RANGE(0x05, 0x05) AM_READNOP AM_WRITE(enigma2_flip_screen_w) - AM_RANGE(0x06, 0x07) AM_NOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(enigma2_state::engima2_audio_cpu_map) - AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM AM_WRITENOP - AM_RANGE(0x2000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x1ffc) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_NOP -ADDRESS_MAP_END +void enigma2_state::engima2_main_cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom().nopw(); + map(0x2000, 0x3fff).mirror(0x4000).ram().share("videoram"); + map(0x4000, 0x4fff).rom().nopw(); + map(0x5000, 0x57ff).r(this, FUNC(enigma2_state::dip_switch_r)).nopw(); + map(0x5800, 0x5800).mirror(0x07f8).noprw(); + map(0x5801, 0x5801).mirror(0x07f8).portr("IN0").nopw(); + map(0x5802, 0x5802).mirror(0x07f8).portr("IN1").nopw(); + map(0x5803, 0x5803).mirror(0x07f8).nopr().w(this, FUNC(enigma2_state::sound_data_w)); + map(0x5804, 0x5804).mirror(0x07f8).noprw(); + map(0x5805, 0x5805).mirror(0x07f8).nopr().w(this, FUNC(enigma2_state::enigma2_flip_screen_w)); + map(0x5806, 0x5807).mirror(0x07f8).noprw(); +} + + +void enigma2_state::engima2a_main_cpu_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().nopw(); + map(0x2000, 0x3fff).mirror(0x4000).ram().share("videoram"); + map(0x4000, 0x4fff).rom().nopw(); + map(0x5000, 0x57ff).r(this, FUNC(enigma2_state::dip_switch_r)).nopw(); + map(0x5800, 0x5fff).noprw(); +} + + +void enigma2_state::engima2a_main_cpu_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).noprw(); + map(0x01, 0x01).portr("IN0").nopw(); + map(0x02, 0x02).portr("IN1").nopw(); + map(0x03, 0x03).nopr().w(this, FUNC(enigma2_state::sound_data_w)); + map(0x04, 0x04).noprw(); + map(0x05, 0x05).nopr().w(this, FUNC(enigma2_state::enigma2_flip_screen_w)); + map(0x06, 0x07).noprw(); +} + + +void enigma2_state::engima2_audio_cpu_map(address_map &map) +{ + map(0x0000, 0x0fff).mirror(0x1000).rom().nopw(); + map(0x2000, 0x7fff).noprw(); + map(0x8000, 0x83ff).mirror(0x1c00).ram(); + map(0xa000, 0xa001).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xa002, 0xa002).mirror(0x1ffc).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xa003, 0xa003).mirror(0x1ffc).noprw(); + map(0xc000, 0xffff).noprw(); +} diff --git a/src/mame/drivers/enmirage.cpp b/src/mame/drivers/enmirage.cpp index 481dd3b1d0e..a30eb7855ca 100644 --- a/src/mame/drivers/enmirage.cpp +++ b/src/mame/drivers/enmirage.cpp @@ -123,17 +123,18 @@ void enmirage_state::machine_reset() membank("sndbank")->set_base(memregion("es5503")->base() ); } -ADDRESS_MAP_START(enmirage_state::mirage_map) - AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("sndbank") // 32k window on 128k of wave RAM - AM_RANGE(0x8000, 0xbfff) AM_RAM // main RAM - AM_RANGE(0xc000, 0xdfff) AM_RAM // expansion RAM - AM_RANGE(0xe100, 0xe101) AM_DEVREADWRITE("acia6850", acia6850_device, read, write) - AM_RANGE(0xe200, 0xe2ff) AM_DEVREADWRITE("via6522", via6522_device, read, write) - AM_RANGE(0xe400, 0xe4ff) AM_NOP - AM_RANGE(0xe800, 0xe803) AM_DEVREADWRITE("wd1772", wd1772_device, read, write) - AM_RANGE(0xec00, 0xecef) AM_DEVREADWRITE("es5503", es5503_device, read, write) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("osrom", 0) -ADDRESS_MAP_END +void enmirage_state::mirage_map(address_map &map) +{ + map(0x0000, 0x7fff).bankrw("sndbank"); // 32k window on 128k of wave RAM + map(0x8000, 0xbfff).ram(); // main RAM + map(0xc000, 0xdfff).ram(); // expansion RAM + map(0xe100, 0xe101).rw("acia6850", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe200, 0xe2ff).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe400, 0xe4ff).noprw(); + map(0xe800, 0xe803).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)); + map(0xec00, 0xecef).rw("es5503", FUNC(es5503_device::read), FUNC(es5503_device::write)); + map(0xf000, 0xffff).rom().region("osrom", 0); +} // port A: front panel // bits 0-2: column select from 0-7 diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp index 7c628786fe5..e4c90d5e397 100644 --- a/src/mame/drivers/eolith.cpp +++ b/src/mame/drivers/eolith.cpp @@ -217,18 +217,19 @@ WRITE8_MEMBER(eolith_state::soundcpu_to_qs1000) * *************************************/ -ADDRESS_MAP_START(eolith_state::eolith_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM // fort2b wants ram here - AM_RANGE(0x40000000, 0x401fffff) AM_RAM - AM_RANGE(0x90000000, 0x9003ffff) AM_READWRITE16(eolith_vram_r, eolith_vram_w, 0xffffffff) - AM_RANGE(0xfc000000, 0xfc000003) AM_READ(eolith_custom_r) - AM_RANGE(0xfc400000, 0xfc400003) AM_WRITE(systemcontrol_w) - AM_RANGE(0xfc800000, 0xfc800003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32) - AM_RANGE(0xfca00000, 0xfca00003) AM_READ_PORT("DSW1") - AM_RANGE(0xfcc00000, 0xfcc0005b) AM_WRITENOP // crt registers ? - AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("maindata", 0) - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void eolith_state::eolith_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram(); // fort2b wants ram here + map(0x40000000, 0x401fffff).ram(); + map(0x90000000, 0x9003ffff).rw(this, FUNC(eolith_state::eolith_vram_r), FUNC(eolith_state::eolith_vram_w)); + map(0xfc000000, 0xfc000003).r(this, FUNC(eolith_state::eolith_custom_r)); + map(0xfc400000, 0xfc400003).w(this, FUNC(eolith_state::systemcontrol_w)); + map(0xfc800000, 0xfc800003).w("soundlatch", FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32); + map(0xfca00000, 0xfca00003).portr("DSW1"); + map(0xfcc00000, 0xfcc0005b).nopw(); // crt registers ? + map(0xfd000000, 0xfeffffff).rom().region("maindata", 0); + map(0xfff80000, 0xffffffff).rom().region("maincpu", 0); +} ADDRESS_MAP_START(eolith_state::hidctch3_map) AM_IMPORT_FROM(eolith_map) @@ -245,14 +246,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(eolith_state::sound_prg_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void eolith_state::sound_prg_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} -ADDRESS_MAP_START(eolith_state::sound_io_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("sound_bank") - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void eolith_state::sound_io_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("sound_bank"); + map(0x8000, 0x8000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} /************************************* diff --git a/src/mame/drivers/eolith16.cpp b/src/mame/drivers/eolith16.cpp index be76d0ff196..7561dcdccff 100644 --- a/src/mame/drivers/eolith16.cpp +++ b/src/mame/drivers/eolith16.cpp @@ -71,19 +71,20 @@ READ16_MEMBER(eolith16_state::eolith16_custom_r) return m_special_io->read(); } -ADDRESS_MAP_START(eolith16_state::eolith16_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM - AM_RANGE(0x50000000, 0x5000ffff) AM_RAMBANK("vrambank") AM_SHARE("vram") - AM_RANGE(0x90000000, 0x9000002f) AM_WRITENOP //? - AM_RANGE(0xff000000, 0xff1fffff) AM_ROM AM_REGION("maindata", 0) - AM_RANGE(0xffe40000, 0xffe40001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xffe80000, 0xffe80001) AM_WRITE(eeprom_w) - AM_RANGE(0xffea0000, 0xffea0001) AM_READ(eolith16_custom_r) - AM_RANGE(0xffea0002, 0xffea0003) AM_READ_PORT("SYSTEM") - AM_RANGE(0xffec0000, 0xffec0001) AM_READNOP // not used? - AM_RANGE(0xffec0002, 0xffec0003) AM_READ_PORT("INPUTS") - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void eolith16_state::eolith16_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram(); + map(0x50000000, 0x5000ffff).bankrw("vrambank").share("vram"); + map(0x90000000, 0x9000002f).nopw(); //? + map(0xff000000, 0xff1fffff).rom().region("maindata", 0); + map(0xffe40001, 0xffe40001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xffe80000, 0xffe80001).w(this, FUNC(eolith16_state::eeprom_w)); + map(0xffea0000, 0xffea0001).r(this, FUNC(eolith16_state::eolith16_custom_r)); + map(0xffea0002, 0xffea0003).portr("SYSTEM"); + map(0xffec0000, 0xffec0001).nopr(); // not used? + map(0xffec0002, 0xffec0003).portr("INPUTS"); + map(0xfff80000, 0xffffffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( eolith16 ) PORT_START("SPECIAL") diff --git a/src/mame/drivers/ep64.cpp b/src/mame/drivers/ep64.cpp index c0ab98d949f..f78b1f419b0 100644 --- a/src/mame/drivers/ep64.cpp +++ b/src/mame/drivers/ep64.cpp @@ -363,52 +363,57 @@ WRITE8_MEMBER( ep64_state::wr2_w ) // ADDRESS_MAP( ep64_mem ) //------------------------------------------------- -ADDRESS_MAP_START(ep64_state::ep64_mem) - AM_RANGE(0x0000, 0xffff) AM_DEVICE(DAVE_TAG, dave_device, z80_program_map) -ADDRESS_MAP_END +void ep64_state::ep64_mem(address_map &map) +{ + map(0x0000, 0xffff).m(m_dave, FUNC(dave_device::z80_program_map)); +} //------------------------------------------------- // ADDRESS_MAP( ep64_io ) //------------------------------------------------- -ADDRESS_MAP_START(ep64_state::ep64_io) - AM_RANGE(0x0000, 0xffff) AM_DEVICE(DAVE_TAG, dave_device, z80_io_map) -ADDRESS_MAP_END +void ep64_state::ep64_io(address_map &map) +{ + map(0x0000, 0xffff).m(m_dave, FUNC(dave_device::z80_io_map)); +} //------------------------------------------------- // ADDRESS_MAP( dave_64k_mem ) //------------------------------------------------- -ADDRESS_MAP_START(ep64_state::dave_64k_mem) - AM_RANGE(0x000000, 0x007fff) AM_ROM AM_REGION(Z80_TAG, 0) +void ep64_state::dave_64k_mem(address_map &map) +{ + map(0x000000, 0x007fff).rom().region(Z80_TAG, 0); //AM_RANGE(0x010000, 0x01ffff) // mapped by the cartslot - AM_RANGE(0x3f0000, 0x3fffff) AM_DEVICE(NICK_TAG, nick_device, vram_map) -ADDRESS_MAP_END + map(0x3f0000, 0x3fffff).m(m_nick, FUNC(nick_device::vram_map)); +} //------------------------------------------------- // ADDRESS_MAP( dave_128k_mem ) //------------------------------------------------- -ADDRESS_MAP_START(ep64_state::dave_128k_mem) - AM_IMPORT_FROM(dave_64k_mem) - AM_RANGE(0x3e0000, 0x3effff) AM_RAM -ADDRESS_MAP_END +void ep64_state::dave_128k_mem(address_map &map) +{ + dave_64k_mem(map); + map(0x3e0000, 0x3effff).ram(); +} //------------------------------------------------- // ADDRESS_MAP( dave_io ) //------------------------------------------------- -ADDRESS_MAP_START(ep64_state::dave_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x8f) AM_DEVICE(NICK_TAG, nick_device, vio_map) - AM_RANGE(0xb5, 0xb5) AM_READWRITE(rd0_r, wr0_w) - AM_RANGE(0xb6, 0xb6) AM_READ(rd1_r) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0xb7, 0xb7) AM_WRITE(wr2_w) -ADDRESS_MAP_END +void ep64_state::dave_io(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x8f).m(m_nick, FUNC(nick_device::vio_map)); + map(0xb5, 0xb5).rw(this, FUNC(ep64_state::rd0_r), FUNC(ep64_state::wr0_w)); + map(0xb6, 0xb6).r(this, FUNC(ep64_state::rd1_r)).w("cent_data_out", FUNC(output_latch_device::write)); + map(0xb7, 0xb7).w(this, FUNC(ep64_state::wr2_w)); +} diff --git a/src/mame/drivers/epos.cpp b/src/mame/drivers/epos.cpp index 44e0dbabcb6..0b55aafaa29 100644 --- a/src/mame/drivers/epos.cpp +++ b/src/mame/drivers/epos.cpp @@ -70,18 +70,20 @@ WRITE8_MEMBER(epos_state::dealer_decrypt_rom) * *************************************/ -ADDRESS_MAP_START(epos_state::epos_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(epos_state::dealer_map) - AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank2") - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void epos_state::epos_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).ram().share("videoram"); +} + +void epos_state::dealer_map(address_map &map) +{ + map(0x0000, 0x5fff).bankr("bank1"); + map(0x6000, 0x6fff).bankr("bank2"); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).ram().share("videoram"); +} /************************************* * @@ -89,25 +91,27 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(epos_state::epos_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(port_1_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("INPUTS") AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("UNK") - AM_RANGE(0x06, 0x06) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(epos_state::dealer_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_WRITE(dealer_pal_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x20, 0x24) AM_WRITE(dealer_decrypt_rom) - AM_RANGE(0x34, 0x34) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x38, 0x38) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x3c, 0x3c) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void epos_state::epos_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x01, 0x01).portr("SYSTEM").w(this, FUNC(epos_state::port_1_w)); + map(0x02, 0x02).portr("INPUTS").w("aysnd", FUNC(ay8910_device::data_w)); + map(0x03, 0x03).portr("UNK"); + map(0x06, 0x06).w("aysnd", FUNC(ay8910_device::address_w)); +} + +void epos_state::dealer_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).w(this, FUNC(epos_state::dealer_pal_w)); + map(0x10, 0x13).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x24).w(this, FUNC(epos_state::dealer_decrypt_rom)); + map(0x34, 0x34).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x38, 0x38).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x3c, 0x3c).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x40, 0x40).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} READ8_MEMBER(epos_state::i8255_porta_r) { diff --git a/src/mame/drivers/eprom.cpp b/src/mame/drivers/eprom.cpp index 60ff51ba64d..17297286809 100644 --- a/src/mame/drivers/eprom.cpp +++ b/src/mame/drivers/eprom.cpp @@ -145,54 +145,56 @@ template<bool maincpu> WRITE16_MEMBER(eprom_state::sync_w) * *************************************/ -ADDRESS_MAP_START(eprom_state::main_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM - AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x16cc00, 0x16cc01) AM_READWRITE(sync_r, sync_w<true>) - AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000") - AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r) - AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r) - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_base_device, main_response_r, 0x00ff) - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w) - AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w) - AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_base_device, sound_reset_w) - AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_base_device, main_command_w, 0x00ff) - AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x3f0000, 0x3f9fff) AM_RAM - AM_RANGE(0x3f0000, 0x3f1fff) AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM AM_SHARE("mob") - AM_RANGE(0x3f4000, 0x3f4f7f) AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0x3f4f80, 0x3f4fff) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x3f8000, 0x3f9fff) AM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(eprom_state::guts_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM - AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x16cc00, 0x16cc01) AM_READWRITE(sync_r, sync_w<true>) - AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000") - AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r) - AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r) - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff) - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w) +void eprom_state::main_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); + map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x160000, 0x16ffff).ram().share("share1"); + map(0x16cc00, 0x16cc01).rw(this, FUNC(eprom_state::sync_r), FUNC(eprom_state::sync_w<true>)); + map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x26000f).portr("260000"); + map(0x260010, 0x26001f).r(this, FUNC(eprom_state::special_port1_r)); + map(0x260020, 0x26002f).r(this, FUNC(eprom_state::adc_r)); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_base_device::main_response_r)); + map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x360000, 0x360001).w(this, FUNC(eprom_state::video_int_ack_w)); + map(0x360010, 0x360011).w(this, FUNC(eprom_state::eprom_latch_w)); + map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_base_device::sound_reset_w)); + map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_base_device::main_command_w)); + map(0x3e0000, 0x3e0fff).ram().share("paletteram"); + map(0x3f0000, 0x3f9fff).ram(); + map(0x3f0000, 0x3f1fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x3f2000, 0x3f3fff).ram().share("mob"); + map(0x3f4000, 0x3f4f7f).w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0x3f4f80, 0x3f4fff).ram().share("mob:slip"); + map(0x3f8000, 0x3f9fff).w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext"); +} + + +void eprom_state::guts_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); + map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x160000, 0x16ffff).ram().share("share1"); + map(0x16cc00, 0x16cc01).rw(this, FUNC(eprom_state::sync_r), FUNC(eprom_state::sync_w<true>)); + map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x26000f).portr("260000"); + map(0x260010, 0x26001f).r(this, FUNC(eprom_state::special_port1_r)); + map(0x260020, 0x26002f).r(this, FUNC(eprom_state::adc_r)); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r)); + map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x360000, 0x360001).w(this, FUNC(eprom_state::video_int_ack_w)); // AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w) - AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff) - AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0xff0000, 0xff1fff) AM_RAM AM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext") - AM_RANGE(0xff8000, 0xff9fff) AM_RAM AM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xffc000, 0xffcf7f) AM_RAM AM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xffcf80, 0xffcfff) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0xffd000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w)); + map(0x3e0000, 0x3e0fff).ram().share("paletteram"); + map(0xff0000, 0xff1fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext"); + map(0xff8000, 0xff9fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0xffa000, 0xffbfff).ram().share("mob"); + map(0xffc000, 0xffcf7f).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0xffcf80, 0xffcfff).ram().share("mob:slip"); + map(0xffd000, 0xffffff).ram(); +} @@ -202,19 +204,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(eprom_state::extra_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x16cc00, 0x16cc01) AM_READWRITE(sync_r, sync_w<false>) AM_SHARE("sync_data") - AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000") - AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r) - AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r) - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_base_device, main_response_r, 0x00ff) - AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w) - AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w) - AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_base_device, sound_reset_w) - AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_base_device, main_command_w, 0x00ff) -ADDRESS_MAP_END +void eprom_state::extra_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x160000, 0x16ffff).ram().share("share1"); + map(0x16cc00, 0x16cc01).rw(this, FUNC(eprom_state::sync_r), FUNC(eprom_state::sync_w<false>)).share("sync_data"); + map(0x260000, 0x26000f).portr("260000"); + map(0x260010, 0x26001f).r(this, FUNC(eprom_state::special_port1_r)); + map(0x260020, 0x26002f).r(this, FUNC(eprom_state::adc_r)); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_base_device::main_response_r)); + map(0x360000, 0x360001).w(this, FUNC(eprom_state::video_int_ack_w)); + map(0x360010, 0x360011).w(this, FUNC(eprom_state::eprom_latch_w)); + map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_base_device::sound_reset_w)); + map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_base_device::main_command_w)); +} diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp index 9fc9bcbeaba..a2c68344dd0 100644 --- a/src/mame/drivers/equites.cpp +++ b/src/mame/drivers/equites.cpp @@ -640,66 +640,78 @@ WRITE_LINE_MEMBER(equites_state::mcu_switch_w) /******************************************************************************/ // CPU Memory Maps -ADDRESS_MAP_START(equites_state::equites_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM area is written several times (dev system?) - AM_RANGE(0x040000, 0x040fff) AM_RAM - AM_RANGE(0x080000, 0x080fff) AM_READWRITE8(equites_fg_videoram_r, equites_fg_videoram_w, 0x00ff) - AM_RANGE(0x0c0000, 0x0c01ff) AM_RAM_WRITE(equites_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x0c0200, 0x0c0fff) AM_RAM - AM_RANGE(0x100000, 0x1001ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x100000, 0x100001) AM_READ(equites_spriteram_kludge_r) - AM_RANGE(0x140000, 0x1407ff) AM_READWRITE8(mcu_ram_r, mcu_ram_w, 0x00ff) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN1") AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - ;map(0x180000, 0x180001).select(0x03c000).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_a3(space, offset >> 13, data, mem_mask); }).umask16(0xff00); - AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("IN0") AM_WRITE(equites_scrollreg_w) - AM_RANGE(0x380000, 0x380001) AM_WRITE8(equites_bgcolor_w, 0xff00) - AM_RANGE(0x780000, 0x780001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) -ADDRESS_MAP_END +void equites_state::equites_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).rom(); // ROM area is written several times (dev system?) + map(0x040000, 0x040fff).ram(); + map(0x080000, 0x080fff).rw(this, FUNC(equites_state::equites_fg_videoram_r), FUNC(equites_state::equites_fg_videoram_w)).umask16(0x00ff); + map(0x0c0000, 0x0c01ff).ram().w(this, FUNC(equites_state::equites_bg_videoram_w)).share("bg_videoram"); + map(0x0c0200, 0x0c0fff).ram(); + map(0x100000, 0x1001ff).ram().share("spriteram"); + map(0x100000, 0x100001).r(this, FUNC(equites_state::equites_spriteram_kludge_r)); + map(0x140000, 0x1407ff).rw(this, FUNC(equites_state::mcu_ram_r), FUNC(equites_state::mcu_ram_w)).umask16(0x00ff); + map(0x180000, 0x180001).portr("IN1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x180000, 0x180000).select(0x03c000).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_mainlatch->write_a3(space, offset >> 13, data, mem_mask); + }); + map(0x180001, 0x180001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1c0000, 0x1c0001).portr("IN0").w(this, FUNC(equites_state::equites_scrollreg_w)); + map(0x380000, 0x380000).w(this, FUNC(equites_state::equites_bgcolor_w)); + map(0x780000, 0x780001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); +} -ADDRESS_MAP_START(gekisou_state::gekisou_map) - AM_IMPORT_FROM( equites_map ) - AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram") // mainram is battery-backed - AM_RANGE(0x580000, 0x580001) AM_SELECT(0x020000) AM_WRITE(gekisou_unknown_bit_w) -ADDRESS_MAP_END +void gekisou_state::gekisou_map(address_map &map) +{ + equites_map(map); + map(0x040000, 0x040fff).ram().share("nvram"); // mainram is battery-backed + map(0x580000, 0x580001).select(0x020000).w(this, FUNC(gekisou_state::gekisou_unknown_bit_w)); +} -ADDRESS_MAP_START(splndrbt_state::splndrbt_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x040fff) AM_RAM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN1") - AM_RANGE(0x0c0000, 0x0c0001) AM_SELECT(0x020000) AM_WRITE8(equites_bgcolor_w, 0xff00) - ;map(0x0c0000, 0x0c0001).select(0x03c000).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_a3(space, offset >> 13, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100000, 0x100001) AM_WRITE(splndrbt_bg_scrollx_w) - AM_RANGE(0x140000, 0x140001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(splndrbt_bg_scrolly_w) - AM_RANGE(0x180000, 0x1807ff) AM_READWRITE8(mcu_ram_r, mcu_ram_w, 0x00ff) - AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x001000) AM_READWRITE8(equites_fg_videoram_r, equites_fg_videoram_w, 0x00ff) - AM_RANGE(0x400000, 0x4007ff) AM_RAM_WRITE(equites_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x400800, 0x400fff) AM_RAM - AM_RANGE(0x600000, 0x6000ff) AM_RAM AM_SHARE("spriteram") // sprite RAM 0,1 - AM_RANGE(0x600100, 0x6001ff) AM_RAM AM_SHARE("spriteram_2") // sprite RAM 2 (8-bit) -ADDRESS_MAP_END +void splndrbt_state::splndrbt_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x040fff).ram(); + map(0x080000, 0x080001).portr("IN0"); + map(0x0c0000, 0x0c0001).portr("IN1"); + map(0x0c0000, 0x0c0000).select(0x020000).w(this, FUNC(splndrbt_state::equites_bgcolor_w)); + map(0x0c0001, 0x0c0001).select(0x03c000).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_mainlatch->write_a3(space, offset >> 13, data, mem_mask); + }); + map(0x100000, 0x100001).w(this, FUNC(splndrbt_state::splndrbt_bg_scrollx_w)); + map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1c0000, 0x1c0001).w(this, FUNC(splndrbt_state::splndrbt_bg_scrolly_w)); + map(0x180000, 0x1807ff).rw(this, FUNC(splndrbt_state::mcu_ram_r), FUNC(splndrbt_state::mcu_ram_w)).umask16(0x00ff); + map(0x200000, 0x200fff).mirror(0x001000).rw(this, FUNC(splndrbt_state::equites_fg_videoram_r), FUNC(splndrbt_state::equites_fg_videoram_w)).umask16(0x00ff); + map(0x400000, 0x4007ff).ram().w(this, FUNC(splndrbt_state::equites_bg_videoram_w)).share("bg_videoram"); + map(0x400800, 0x400fff).ram(); + map(0x600000, 0x6000ff).ram().share("spriteram"); // sprite RAM 0,1 + map(0x600100, 0x6001ff).ram().share("spriteram_2"); // sprite RAM 2 (8-bit) +} -ADDRESS_MAP_START(equites_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc080, 0xc08d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0xc0a0, 0xc0a1) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0xc0b0, 0xc0b0) AM_WRITENOP // n.c. - AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(equites_cymbal_ctrl_w) - AM_RANGE(0xc0d0, 0xc0d0) AM_WRITE(equites_dac_latch_w) // followed by 1 (and usually 0) on 8155 port B - AM_RANGE(0xc0e0, 0xc0e0) AM_WRITE(equites_dac_latch_w) // followed by 2 (and usually 0) on 8155 port B - AM_RANGE(0xc0f8, 0xc0ff) AM_WRITE(equites_c0f8_w) - AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("audio8155", i8155_device, memory_r, memory_w) -ADDRESS_MAP_END +void equites_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc080, 0xc08d).w(m_msm, FUNC(msm5232_device::write)); + map(0xc0a0, 0xc0a1).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0xc0b0, 0xc0b0).nopw(); // n.c. + map(0xc0c0, 0xc0c0).w(this, FUNC(equites_state::equites_cymbal_ctrl_w)); + map(0xc0d0, 0xc0d0).w(this, FUNC(equites_state::equites_dac_latch_w)); // followed by 1 (and usually 0) on 8155 port B + map(0xc0e0, 0xc0e0).w(this, FUNC(equites_state::equites_dac_latch_w)); // followed by 2 (and usually 0) on 8155 port B + map(0xc0f8, 0xc0ff).w(this, FUNC(equites_state::equites_c0f8_w)); + map(0xe000, 0xe0ff).rw("audio8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); +} -ADDRESS_MAP_START(equites_state::sound_portmap) - AM_RANGE(0x00e0, 0x00e7) AM_DEVREADWRITE("audio8155", i8155_device, io_r, io_w) -ADDRESS_MAP_END +void equites_state::sound_portmap(address_map &map) +{ + map(0x00e0, 0x00e7).rw("audio8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} ADDRESS_MAP_START(equites_state::mcu_map) diff --git a/src/mame/drivers/ertictac.cpp b/src/mame/drivers/ertictac.cpp index 9ada51a3550..03b983d33c8 100644 --- a/src/mame/drivers/ertictac.cpp +++ b/src/mame/drivers/ertictac.cpp @@ -62,17 +62,18 @@ READ32_MEMBER(ertictac_state::ertictac_podule_r) return 0; } -ADDRESS_MAP_START(ertictac_state::ertictac_map) - AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE(archimedes_memc_logical_r, archimedes_memc_logical_w) - AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_SHARE("physicalram") /* physical RAM - 16 MB for now, should be 512k for the A310 */ - - AM_RANGE(0x03000000, 0x033fffff) AM_READWRITE(archimedes_ioc_r, archimedes_ioc_w) - AM_RANGE(0x03340000, 0x0334001f) AM_READ(ertictac_podule_r) - AM_RANGE(0x033c0000, 0x033c001f) AM_READ(ertictac_podule_r) - AM_RANGE(0x03400000, 0x035fffff) AM_READWRITE(archimedes_vidc_r, archimedes_vidc_w) - AM_RANGE(0x03600000, 0x037fffff) AM_READWRITE(archimedes_memc_r, archimedes_memc_w) - AM_RANGE(0x03800000, 0x03ffffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE(archimedes_memc_page_w) -ADDRESS_MAP_END +void ertictac_state::ertictac_map(address_map &map) +{ + map(0x00000000, 0x01ffffff).rw(this, FUNC(ertictac_state::archimedes_memc_logical_r), FUNC(ertictac_state::archimedes_memc_logical_w)); + map(0x02000000, 0x02ffffff).ram().share("physicalram"); /* physical RAM - 16 MB for now, should be 512k for the A310 */ + + map(0x03000000, 0x033fffff).rw(this, FUNC(ertictac_state::archimedes_ioc_r), FUNC(ertictac_state::archimedes_ioc_w)); + map(0x03340000, 0x0334001f).r(this, FUNC(ertictac_state::ertictac_podule_r)); + map(0x033c0000, 0x033c001f).r(this, FUNC(ertictac_state::ertictac_podule_r)); + map(0x03400000, 0x035fffff).rw(this, FUNC(ertictac_state::archimedes_vidc_r), FUNC(ertictac_state::archimedes_vidc_w)); + map(0x03600000, 0x037fffff).rw(this, FUNC(ertictac_state::archimedes_memc_r), FUNC(ertictac_state::archimedes_memc_w)); + map(0x03800000, 0x03ffffff).rom().region("maincpu", 0).w(this, FUNC(ertictac_state::archimedes_memc_page_w)); +} static INPUT_PORTS_START( ertictac ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp index 5ab9872759a..d6e1dd1fdf0 100644 --- a/src/mame/drivers/esd16.cpp +++ b/src/mame/drivers/esd16.cpp @@ -123,108 +123,131 @@ WRITE16_MEMBER(esd16_state::esd_eeprom_w) } -#define ESD16_IO_AREA_DSW( _BASE ) \ - AM_RANGE(_BASE + 0x0, _BASE + 0x1) AM_WRITENOP /* Irq Ack */ \ - AM_RANGE(_BASE + 0x2, _BASE + 0x3) AM_READ_PORT("P1_P2") \ - AM_RANGE(_BASE + 0x4, _BASE + 0x5) AM_READ_PORT("SYSTEM") \ - AM_RANGE(_BASE + 0x6, _BASE + 0x7) AM_READ_PORT("DSW") \ - AM_RANGE(_BASE + 0x8, _BASE + 0x9) AM_WRITE(esd16_tilemap0_color_w) \ - AM_RANGE(_BASE + 0xa, _BASE + 0xb) AM_WRITENOP /* Unknown */ \ - AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITE(esd16_sound_command_w) \ - AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITENOP /* n/c */ -#define ESD16_IO_AREA_EEPROM( _BASE ) \ - AM_RANGE(_BASE + 0x0, _BASE + 0x1) AM_WRITENOP /* Irq Ack */ \ - AM_RANGE(_BASE + 0x2, _BASE + 0x3) AM_READ_PORT("P1_P2") \ - AM_RANGE(_BASE + 0x4, _BASE + 0x5) AM_READ_PORT("SYSTEM") \ - AM_RANGE(_BASE + 0x6, _BASE + 0x7) AM_READ(esd_eeprom_r) \ - AM_RANGE(_BASE + 0x8, _BASE + 0x9) AM_WRITE(esd16_tilemap0_color_w) \ - AM_RANGE(_BASE + 0xa, _BASE + 0xb) AM_WRITENOP /* Unknown */ \ - AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITE(esd16_sound_command_w) \ - AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITE(esd_eeprom_w) -#define ESD16_VID_ATTR_AREA( _BASE ) \ - AM_RANGE(_BASE + 0x0, _BASE + 0x3) AM_WRITEONLY AM_SHARE("scroll_0") \ - AM_RANGE(_BASE + 0x4, _BASE + 0x7) AM_WRITEONLY AM_SHARE("scroll_1") \ - AM_RANGE(_BASE + 0x8, _BASE + 0x9) AM_WRITEONLY AM_SHARE("platform_x") \ - AM_RANGE(_BASE + 0xa, _BASE + 0xb) AM_WRITEONLY AM_SHARE("platform_y") \ - AM_RANGE(_BASE + 0xc, _BASE + 0xd) AM_WRITENOP \ - AM_RANGE(_BASE + 0xe, _BASE + 0xf) AM_WRITEONLY AM_SHARE("head_layersize") -#define ESD16_PALETTE_AREA( _BASE ) \ - AM_RANGE(_BASE + 0x000, _BASE + 0xfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -#define ESD16_SPRITE_AREA( _BASE ) \ - AM_RANGE(_BASE + 0x000, _BASE + 0x7ff) AM_WRITEONLY AM_SHARE("spriteram") AM_MIRROR(0x000800) -#define ESD16_VRAM_AREA( _BASE ) \ - AM_RANGE(_BASE + 0x00000, _BASE + 0x03fff) AM_WRITE(esd16_vram_0_w) AM_SHARE("vram_0") AM_MIRROR(0x4000) \ - AM_RANGE(_BASE + 0x20000, _BASE + 0x23fff) AM_WRITE(esd16_vram_1_w) AM_SHARE("vram_1") AM_MIRROR(0x4000) +void esd16_state::esd16_io_area_dsw(address_map &map, u32 base) +{ + map(base + 0x0, base + 0x1).nopw(); /* Irq Ack */ + map(base + 0x2, base + 0x3).portr("P1_P2"); + map(base + 0x4, base + 0x5).portr("SYSTEM"); + map(base + 0x6, base + 0x7).portr("DSW"); + map(base + 0x8, base + 0x9).w(this, FUNC(esd16_state::esd16_tilemap0_color_w)); + map(base + 0xa, base + 0xb).nopw(); /* Unknown */ + map(base + 0xc, base + 0xd).w(this, FUNC(esd16_state::esd16_sound_command_w)); + map(base + 0xe, base + 0xf).nopw(); /* n/c */ +} + +void esd16_state::esd16_io_area_eeprom(address_map &map, u32 base) +{ + map(base + 0x0, base + 0x1).nopw(); /* Irq Ack */ + map(base + 0x2, base + 0x3).portr("P1_P2"); + map(base + 0x4, base + 0x5).portr("SYSTEM"); + map(base + 0x6, base + 0x7).r(this, FUNC(esd16_state::esd_eeprom_r)); + map(base + 0x8, base + 0x9).w(this, FUNC(esd16_state::esd16_tilemap0_color_w)); + map(base + 0xa, base + 0xb).nopw(); /* Unknown */ + map(base + 0xc, base + 0xd).w(this, FUNC(esd16_state::esd16_sound_command_w)); + map(base + 0xe, base + 0xf).w(this, FUNC(esd16_state::esd_eeprom_w)); +} + +void esd16_state::esd16_vid_attr_area(address_map &map, u32 base) +{ + map(base + 0x0, base + 0x3).writeonly().share("scroll_0"); + map(base + 0x4, base + 0x7).writeonly().share("scroll_1"); + map(base + 0x8, base + 0x9).writeonly().share("platform_x"); + map(base + 0xa, base + 0xb).writeonly().share("platform_y"); + map(base + 0xc, base + 0xd).nopw(); + map(base + 0xe, base + 0xf).writeonly().share("head_layersize"); +} + +void esd16_state::esd16_palette_area(address_map &map, u32 base) +{ + map(base + 0x000, base + 0xfff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); +} + +void esd16_state::esd16_sprite_area(address_map &map, u32 base) +{ + map(base + 0x000, base + 0x7ff).writeonly().share("spriteram").mirror(0x000800); +} + +void esd16_state::esd16_vram_area(address_map &map, u32 base) +{ + map(base + 0x00000, base + 0x03fff).w(this, FUNC(esd16_state::esd16_vram_0_w)).share("vram_0").mirror(0x4000); + map(base + 0x20000, base + 0x23fff).w(this, FUNC(esd16_state::esd16_vram_1_w)).share("vram_1").mirror(0x4000); +} + /*** Memory Maps ***/ -ADDRESS_MAP_START(esd16_state::multchmp_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM +void esd16_state::multchmp_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); - ESD16_PALETTE_AREA( 0x200000 ) - ESD16_SPRITE_AREA( 0x300000 ) - ESD16_VRAM_AREA( 0x400000 ) - ESD16_VID_ATTR_AREA( 0x500000 ) - ESD16_IO_AREA_DSW( 0x600000 ) + esd16_palette_area(map, 0x200000); + esd16_sprite_area(map, 0x300000); + esd16_vram_area(map, 0x400000); + esd16_vid_attr_area(map, 0x500000); + esd16_io_area_dsw(map, 0x600000); - AM_RANGE(0x700008, 0x70000b) AM_READNOP // unused protection? -ADDRESS_MAP_END + map(0x700008, 0x70000b).nopr(); // unused protection? +} -ADDRESS_MAP_START(esd16_state::jumppop_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x120000, 0x123fff) AM_RAM - AM_RANGE(0x1a0000, 0x1a7fff) AM_RAM +void esd16_state::jumppop_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x120000, 0x123fff).ram(); + map(0x1a0000, 0x1a7fff).ram(); - AM_RANGE(0x180008, 0x180009) AM_WRITE(esd16_tilemap0_color_jumppop_w) // todo + map(0x180008, 0x180009).w(this, FUNC(esd16_state::esd16_tilemap0_color_jumppop_w)); // todo - ESD16_PALETTE_AREA( 0x140000 ) - ESD16_SPRITE_AREA( 0x160000 ) - ESD16_IO_AREA_DSW( 0x180000 ) - ESD16_VRAM_AREA( 0x300000 ) - ESD16_VID_ATTR_AREA( 0x380000 ) -ADDRESS_MAP_END + esd16_palette_area(map, 0x140000); + esd16_sprite_area(map, 0x160000); + esd16_io_area_dsw(map, 0x180000); + esd16_vram_area(map, 0x300000); + esd16_vid_attr_area(map, 0x380000); +} -ADDRESS_MAP_START(esd16_state::hedpanic_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM +void esd16_state::hedpanic_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); - ESD16_PALETTE_AREA( 0x800000 ) - ESD16_SPRITE_AREA( 0x900000 ) - ESD16_VRAM_AREA( 0xa00000 ) - ESD16_VID_ATTR_AREA( 0xb00000 ) - ESD16_IO_AREA_EEPROM( 0xc00000 ) + esd16_palette_area(map, 0x800000); + esd16_sprite_area(map, 0x900000); + esd16_vram_area(map, 0xa00000); + esd16_vid_attr_area(map, 0xb00000); + esd16_io_area_eeprom(map, 0xc00000); - AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) // protection -ADDRESS_MAP_END + map(0xd00008, 0xd00009).w(this, FUNC(esd16_state::hedpanic_platform_w)); // protection +} /* Multi Champ Deluxe, like Head Panic but different addresses */ -ADDRESS_MAP_START(esd16_state::mchampdx_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM +void esd16_state::mchampdx_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram(); - ESD16_VRAM_AREA( 0x300000 ) - ESD16_PALETTE_AREA( 0x400000 ) - ESD16_IO_AREA_EEPROM( 0x500000 ) - ESD16_SPRITE_AREA( 0x600000 ) - ESD16_VID_ATTR_AREA( 0x700000 ) + esd16_vram_area(map, 0x300000); + esd16_palette_area(map, 0x400000); + esd16_io_area_eeprom(map, 0x500000); + esd16_sprite_area(map, 0x600000); + esd16_vid_attr_area(map, 0x700000); - AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) // not used in mchampdx? -ADDRESS_MAP_END + map(0xd00008, 0xd00009).w(this, FUNC(esd16_state::hedpanic_platform_w)); // not used in mchampdx? +} /* Tang Tang & Deluxe 5 - like the others but again with different addresses */ -ADDRESS_MAP_START(esd16_state::tangtang_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x700000, 0x70ffff) AM_RAM - - ESD16_PALETTE_AREA( 0x100000 ) - ESD16_SPRITE_AREA( 0x200000 ) - ESD16_VRAM_AREA( 0x300000 ) - ESD16_VID_ATTR_AREA( 0x400000 ) - ESD16_IO_AREA_EEPROM( 0x500000 ) - AM_RANGE(0x600008, 0x600009) AM_WRITE(hedpanic_platform_w) -ADDRESS_MAP_END +void esd16_state::tangtang_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x700000, 0x70ffff).ram(); + + esd16_palette_area(map, 0x100000); + esd16_sprite_area(map, 0x200000); + esd16_vram_area(map, 0x300000); + esd16_vid_attr_area(map, 0x400000); + esd16_io_area_eeprom(map, 0x500000); + map(0x600008, 0x600009).w(this, FUNC(esd16_state::hedpanic_platform_w)); +} /*************************************************************************** @@ -241,11 +264,12 @@ WRITE8_MEMBER(esd16_state::esd16_sound_rombank_w) membank("bank1")->set_entry(bank); } -ADDRESS_MAP_START(esd16_state::multchmp_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - AM_RANGE(0xf800, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END +void esd16_state::multchmp_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + map(0xf800, 0xffff).ram(); // RAM +} READ8_MEMBER(esd16_state::esd16_sound_command_r) { @@ -254,15 +278,16 @@ READ8_MEMBER(esd16_state::esd16_sound_command_r) return m_soundlatch->read(space, 0); } -ADDRESS_MAP_START(esd16_state::multchmp_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3812_device, write) // YM3812 - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295 - AM_RANGE(0x03, 0x03) AM_READ(esd16_sound_command_r) // From Main CPU - AM_RANGE(0x04, 0x04) AM_WRITENOP // ? $00, $30 - AM_RANGE(0x05, 0x05) AM_WRITE(esd16_sound_rombank_w) // ROM Bank - AM_RANGE(0x06, 0x06) AM_NOP // ? At the start / ? 1 (End of NMI routine) -ADDRESS_MAP_END +void esd16_state::multchmp_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ymsnd", FUNC(ym3812_device::write)); // YM3812 + map(0x02, 0x02).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 + map(0x03, 0x03).r(this, FUNC(esd16_state::esd16_sound_command_r)); // From Main CPU + map(0x04, 0x04).nopw(); // ? $00, $30 + map(0x05, 0x05).w(this, FUNC(esd16_state::esd16_sound_rombank_w)); // ROM Bank + map(0x06, 0x06).noprw(); // ? At the start / ? 1 (End of NMI routine) +} /*************************************************************************** diff --git a/src/mame/drivers/esh.cpp b/src/mame/drivers/esh.cpp index 8182b20d16b..61b683e1824 100644 --- a/src/mame/drivers/esh.cpp +++ b/src/mame/drivers/esh.cpp @@ -210,27 +210,29 @@ WRITE8_MEMBER(esh_state::nmi_line_w) /* PROGRAM MAPS */ -ADDRESS_MAP_START(esh_state::z80_0_mem) - AM_RANGE(0x0000,0x3fff) AM_ROM - AM_RANGE(0xe000,0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000,0xf3ff) AM_RAM AM_SHARE("tile_ram") - AM_RANGE(0xf400,0xf7ff) AM_RAM AM_SHARE("tile_ctrl_ram") -ADDRESS_MAP_END +void esh_state::z80_0_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xf000, 0xf3ff).ram().share("tile_ram"); + map(0xf400, 0xf7ff).ram().share("tile_ctrl_ram"); +} /* IO MAPS */ -ADDRESS_MAP_START(esh_state::z80_0_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0,0xf0) AM_READ_PORT("IN0") - AM_RANGE(0xf1,0xf1) AM_READ_PORT("IN1") - AM_RANGE(0xf2,0xf2) AM_READ_PORT("IN2") - AM_RANGE(0xf3,0xf3) AM_READ_PORT("IN3") - AM_RANGE(0xf4,0xf4) AM_READWRITE(ldp_read,ldp_write) - AM_RANGE(0xf5,0xf5) AM_WRITE(misc_write) /* Continuously writes repeating patterns */ - AM_RANGE(0xf8,0xfd) AM_WRITE(led_writes) - AM_RANGE(0xfe,0xfe) AM_WRITE(nmi_line_w) /* Both 0xfe and 0xff flip quickly between 0 and 1 */ - AM_RANGE(0xff,0xff) AM_NOP /* (they're probably not NMI enables - likely LED's like their neighbors :) */ -ADDRESS_MAP_END /* (someday 0xf8-0xff will probably be a single handler) */ +void esh_state::z80_0_io(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).portr("IN0"); + map(0xf1, 0xf1).portr("IN1"); + map(0xf2, 0xf2).portr("IN2"); + map(0xf3, 0xf3).portr("IN3"); + map(0xf4, 0xf4).rw(this, FUNC(esh_state::ldp_read), FUNC(esh_state::ldp_write)); + map(0xf5, 0xf5).w(this, FUNC(esh_state::misc_write)); /* Continuously writes repeating patterns */ + map(0xf8, 0xfd).w(this, FUNC(esh_state::led_writes)); + map(0xfe, 0xfe).w(this, FUNC(esh_state::nmi_line_w)); /* Both 0xfe and 0xff flip quickly between 0 and 1 */ + map(0xff, 0xff).noprw(); /* (they're probably not NMI enables - likely LED's like their neighbors :) */ +} /* (someday 0xf8-0xff will probably be a single handler) */ /* PORTS */ diff --git a/src/mame/drivers/espial.cpp b/src/mame/drivers/espial.cpp index a8eafd7fe8b..eafd31e2a70 100644 --- a/src/mame/drivers/espial.cpp +++ b/src/mame/drivers/espial.cpp @@ -101,63 +101,67 @@ WRITE8_MEMBER(espial_state::espial_master_soundlatch_w) } -ADDRESS_MAP_START(espial_state::espial_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x5800, 0x5fff) AM_RAM - AM_RANGE(0x6081, 0x6081) AM_READ_PORT("IN0") - AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1") - AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN1") - AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN2") - AM_RANGE(0x6090, 0x6090) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(espial_master_soundlatch_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) - AM_RANGE(0x7100, 0x7100) AM_WRITE(espial_master_interrupt_mask_w) - AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w) - AM_RANGE(0x8000, 0x801f) AM_RAM AM_SHARE("spriteram_1") - AM_RANGE(0x8020, 0x803f) AM_READONLY - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8800, 0x880f) AM_WRITEONLY AM_SHARE("spriteram_3") - AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_SHARE("attributeram") - AM_RANGE(0x9000, 0x901f) AM_RAM AM_SHARE("spriteram_2") - AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_SHARE("scrollram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xcfff) AM_ROM -ADDRESS_MAP_END +void espial_state::espial_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x5800, 0x5fff).ram(); + map(0x6081, 0x6081).portr("IN0"); + map(0x6082, 0x6082).portr("DSW1"); + map(0x6083, 0x6083).portr("IN1"); + map(0x6084, 0x6084).portr("IN2"); + map(0x6090, 0x6090).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(this, FUNC(espial_state::espial_master_soundlatch_w)); + map(0x7000, 0x7000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); + map(0x7100, 0x7100).w(this, FUNC(espial_state::espial_master_interrupt_mask_w)); + map(0x7200, 0x7200).w(this, FUNC(espial_state::espial_flipscreen_w)); + map(0x8000, 0x801f).ram().share("spriteram_1"); + map(0x8020, 0x803f).readonly(); + map(0x8400, 0x87ff).ram().w(this, FUNC(espial_state::espial_videoram_w)).share("videoram"); + map(0x8800, 0x880f).writeonly().share("spriteram_3"); + map(0x8c00, 0x8fff).ram().w(this, FUNC(espial_state::espial_attributeram_w)).share("attributeram"); + map(0x9000, 0x901f).ram().share("spriteram_2"); + map(0x9020, 0x903f).ram().w(this, FUNC(espial_state::espial_scrollram_w)).share("scrollram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(espial_state::espial_colorram_w)).share("colorram"); + map(0xc000, 0xcfff).rom(); +} /* there are a lot of unmapped reads from all over memory as the code uses POP instructions in a delay loop */ -ADDRESS_MAP_START(espial_state::netwars_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x5800, 0x5fff) AM_RAM - AM_RANGE(0x6081, 0x6081) AM_READ_PORT("IN0") - AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1") - AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN1") - AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN2") - AM_RANGE(0x6090, 0x6090) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(espial_master_soundlatch_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) - AM_RANGE(0x7100, 0x7100) AM_WRITE(espial_master_interrupt_mask_w) - AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x801f) AM_RAM AM_SHARE("spriteram_1") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_SHARE("attributeram") - AM_RANGE(0x8800, 0x880f) AM_RAM AM_SHARE("spriteram_3") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9000, 0x901f) AM_RAM AM_SHARE("spriteram_2") - AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_SHARE("scrollram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(espial_state::espial_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_WRITE(espial_sound_nmi_mask_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(espial_state::espial_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void espial_state::netwars_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x5800, 0x5fff).ram(); + map(0x6081, 0x6081).portr("IN0"); + map(0x6082, 0x6082).portr("DSW1"); + map(0x6083, 0x6083).portr("IN1"); + map(0x6084, 0x6084).portr("IN2"); + map(0x6090, 0x6090).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(this, FUNC(espial_state::espial_master_soundlatch_w)); + map(0x7000, 0x7000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); + map(0x7100, 0x7100).w(this, FUNC(espial_state::espial_master_interrupt_mask_w)); + map(0x7200, 0x7200).w(this, FUNC(espial_state::espial_flipscreen_w)); + map(0x8000, 0x87ff).ram().w(this, FUNC(espial_state::espial_videoram_w)).share("videoram"); + map(0x8000, 0x801f).ram().share("spriteram_1"); + map(0x8800, 0x8fff).ram().w(this, FUNC(espial_state::espial_attributeram_w)).share("attributeram"); + map(0x8800, 0x880f).ram().share("spriteram_3"); + map(0x9000, 0x97ff).ram().w(this, FUNC(espial_state::espial_colorram_w)).share("colorram"); + map(0x9000, 0x901f).ram().share("spriteram_2"); + map(0x9020, 0x903f).ram().w(this, FUNC(espial_state::espial_scrollram_w)).share("scrollram"); +} + + +void espial_state::espial_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x4000).w(this, FUNC(espial_state::espial_sound_nmi_mask_w)); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} + +void espial_state::espial_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /* verified from Z80 code */ diff --git a/src/mame/drivers/esprit.cpp b/src/mame/drivers/esprit.cpp index 64a5b0f5aa4..f807f578fd1 100644 --- a/src/mame/drivers/esprit.cpp +++ b/src/mame/drivers/esprit.cpp @@ -43,22 +43,24 @@ private: optional_device<palette_device> m_palette; }; -ADDRESS_MAP_START(esprit_state::mem_map) - ADDRESS_MAP_GLOBAL_MASK (0x7fff) - AM_RANGE(0x0058,0x0058) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x0059,0x0059) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0080,0x1fff) AM_RAM - AM_RANGE(0x2000,0x6fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x7000,0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(esprit_state::mem3_map) - AM_RANGE(0x0000,0x202f) AM_RAM - AM_RANGE(0x2030,0x3fff) AM_RAM AM_SHARE("videoram") // it might start at 3000 - AM_RANGE(0x81c0,0x81c0) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x81c1,0x81c1) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xe000,0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void esprit_state::mem_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0058, 0x0058).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x0059, 0x0059).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0080, 0x1fff).ram(); + map(0x2000, 0x6fff).ram().share("videoram"); + map(0x7000, 0x7fff).rom().region("roms", 0); +} + +void esprit_state::mem3_map(address_map &map) +{ + map(0x0000, 0x202f).ram(); + map(0x2030, 0x3fff).ram().share("videoram"); // it might start at 3000 + map(0x81c0, 0x81c0).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x81c1, 0x81c1).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xe000, 0xffff).rom().region("roms", 0); +} static INPUT_PORTS_START( esprit ) INPUT_PORTS_END diff --git a/src/mame/drivers/esq1.cpp b/src/mame/drivers/esq1.cpp index a07f82d9080..33e657ba3a0 100644 --- a/src/mame/drivers/esq1.cpp +++ b/src/mame/drivers/esq1.cpp @@ -503,28 +503,30 @@ WRITE8_MEMBER(esq1_state::seqdosram_w) } } -ADDRESS_MAP_START(esq1_state::esq1_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM // OSRAM - AM_RANGE(0x4000, 0x5fff) AM_RAM // SEQRAM - AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("es5503", es5503_device, read, write) - AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0x6800, 0x68ff) AM_WRITE(analog_w) - AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("osbank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("osrom", 0x8000) // OS "high" ROM is always mapped here -ADDRESS_MAP_END - -ADDRESS_MAP_START(esq1_state::sq80_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM // OSRAM - AM_RANGE(0x4000, 0x5fff) AM_RAM // SEQRAM +void esq1_state::esq1_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); // OSRAM + map(0x4000, 0x5fff).ram(); // SEQRAM + map(0x6000, 0x63ff).rw("es5503", FUNC(es5503_device::read), FUNC(es5503_device::write)); + map(0x6400, 0x640f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0x6800, 0x68ff).w(this, FUNC(esq1_state::analog_w)); + map(0x7000, 0x7fff).bankr("osbank"); + map(0x8000, 0xffff).rom().region("osrom", 0x8000); // OS "high" ROM is always mapped here +} + +void esq1_state::sq80_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); // OSRAM + map(0x4000, 0x5fff).ram(); // SEQRAM // AM_RANGE(0x4000, 0x5fff) AM_READWRITE(seqdosram_r, seqdosram_w) - AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("es5503", es5503_device, read, write) - AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0x6800, 0x68ff) AM_WRITE(analog_w) - AM_RANGE(0x6c00, 0x6dff) AM_WRITE(mapper_w) - AM_RANGE(0x6e00, 0x6fff) AM_READWRITE(wd1772_r, wd1772_w) - AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("osbank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("osrom", 0x8000) // OS "high" ROM is always mapped here -ADDRESS_MAP_END + map(0x6000, 0x63ff).rw("es5503", FUNC(es5503_device::read), FUNC(es5503_device::write)); + map(0x6400, 0x640f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0x6800, 0x68ff).w(this, FUNC(esq1_state::analog_w)); + map(0x6c00, 0x6dff).w(this, FUNC(esq1_state::mapper_w)); + map(0x6e00, 0x6fff).rw(this, FUNC(esq1_state::wd1772_r), FUNC(esq1_state::wd1772_w)); + map(0x7000, 0x7fff).bankr("osbank"); + map(0x8000, 0xffff).rom().region("osrom", 0x8000); // OS "high" ROM is always mapped here +} // from the schematics: // diff --git a/src/mame/drivers/esq5505.cpp b/src/mame/drivers/esq5505.cpp index 43c53dfd03b..14fe07729e6 100644 --- a/src/mame/drivers/esq5505.cpp +++ b/src/mame/drivers/esq5505.cpp @@ -378,46 +378,50 @@ WRITE16_MEMBER(esq5505_state::lower_w) } } -ADDRESS_MAP_START(esq5505_state::vfx_map) - AM_RANGE(0x000000, 0x007fff) AM_READWRITE(lower_r, lower_w) - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write) - AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x00ff) - AM_RANGE(0xc00000, 0xc1ffff) AM_ROM AM_REGION("osrom", 0) - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(esq5505_state::vfxsd_map) - AM_RANGE(0x000000, 0x00ffff) AM_READWRITE(lower_r, lower_w) - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write) - AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x00ff) - AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_device, read, write, 0x00ff) - AM_RANGE(0x330000, 0x3bffff) AM_RAM // sequencer memory? - AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("osrom", 0) - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(esq5505_state::eps_map) - AM_RANGE(0x000000, 0x007fff) AM_READWRITE(lower_r, lower_w) - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write) - AM_RANGE(0x240000, 0x2400ff) AM_DEVREADWRITE("mc68450", hd63450_device, read, write) - AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_device, read, write, 0x00ff) - AM_RANGE(0x580000, 0x7fffff) AM_RAM // sample RAM? - AM_RANGE(0xc00000, 0xc1ffff) AM_ROM AM_REGION("osrom", 0) - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(esq5505_state::sq1_map) - AM_RANGE(0x000000, 0x03ffff) AM_READWRITE(lower_r, lower_w) - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("otis", es5505_device, read, write) - AM_RANGE(0x260000, 0x2601ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0x0ff) - AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x330000, 0x3bffff) AM_RAM // sequencer memory? - AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("osrom", 0) - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") -ADDRESS_MAP_END +void esq5505_state::vfx_map(address_map &map) +{ + map(0x000000, 0x007fff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w)); + map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write)); + map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask16(0x00ff); + map(0xc00000, 0xc1ffff).rom().region("osrom", 0); + map(0xff0000, 0xffffff).ram().share("osram"); +} + +void esq5505_state::vfxsd_map(address_map &map) +{ + map(0x000000, 0x00ffff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w)); + map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write)); + map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask16(0x00ff); + map(0x2c0000, 0x2c0007).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff); + map(0x330000, 0x3bffff).ram(); // sequencer memory? + map(0xc00000, 0xc3ffff).rom().region("osrom", 0); + map(0xff0000, 0xffffff).ram().share("osram"); +} + +void esq5505_state::eps_map(address_map &map) +{ + map(0x000000, 0x007fff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w)); + map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write)); + map(0x240000, 0x2400ff).rw(m_dmac, FUNC(hd63450_device::read), FUNC(hd63450_device::write)); + map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x2c0000, 0x2c0007).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff); + map(0x580000, 0x7fffff).ram(); // sample RAM? + map(0xc00000, 0xc1ffff).rom().region("osrom", 0); + map(0xff0000, 0xffffff).ram().share("osram"); +} + +void esq5505_state::sq1_map(address_map &map) +{ + map(0x000000, 0x03ffff).rw(this, FUNC(esq5505_state::lower_r), FUNC(esq5505_state::lower_w)); + map(0x200000, 0x20001f).rw("otis", FUNC(es5505_device::read), FUNC(es5505_device::write)); + map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask16(0x00ff); + map(0x280000, 0x28001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x330000, 0x3bffff).ram(); // sequencer memory? + map(0xc00000, 0xc3ffff).rom().region("osrom", 0); + map(0xff0000, 0xffffff).ram().share("osram"); +} WRITE_LINE_MEMBER(esq5505_state::esq5505_otis_irq) { diff --git a/src/mame/drivers/esqasr.cpp b/src/mame/drivers/esqasr.cpp index ae445bb74f5..8ce0a98e8a6 100644 --- a/src/mame/drivers/esqasr.cpp +++ b/src/mame/drivers/esqasr.cpp @@ -91,16 +91,18 @@ void esqasr_state::machine_reset() { } -ADDRESS_MAP_START(esqasr_state::asr_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xf00000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(esqasr_state::asrx_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x08000000, 0x081fffff) AM_RAM - AM_RANGE(0x0be00000, 0x0befffff) AM_RAM -ADDRESS_MAP_END +void esqasr_state::asr_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().region("maincpu", 0); + map(0xf00000, 0xffffff).ram(); +} + +void esqasr_state::asrx_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom().region("maincpu", 0); + map(0x08000000, 0x081fffff).ram(); + map(0x0be00000, 0x0befffff).ram(); +} WRITE_LINE_MEMBER(esqasr_state::esq5506_otto_irq) { diff --git a/src/mame/drivers/esqkt.cpp b/src/mame/drivers/esqkt.cpp index 1fed678febe..0f90c6d8e11 100644 --- a/src/mame/drivers/esqkt.cpp +++ b/src/mame/drivers/esqkt.cpp @@ -151,14 +151,15 @@ void esqkt_state::machine_reset() m_bCalibSecondByte = false; } -ADDRESS_MAP_START(esqkt_state::kt_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("osrom", 0) - AM_RANGE(0x200000, 0x20003f) AM_DEVREADWRITE8("ensoniq1", es5506_device, read, write, 0xffffffff) - AM_RANGE(0x240000, 0x24003f) AM_DEVREADWRITE8("ensoniq2", es5506_device, read, write, 0xffffffff) - AM_RANGE(0x280000, 0x2801ff) AM_DEVREADWRITE8("esp", es5510_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0xffffffff) - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") -ADDRESS_MAP_END +void esqkt_state::kt_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("osrom", 0); + map(0x200000, 0x20003f).rw("ensoniq1", FUNC(es5506_device::read), FUNC(es5506_device::write)); + map(0x240000, 0x24003f).rw("ensoniq2", FUNC(es5506_device::read), FUNC(es5506_device::write)); + map(0x280000, 0x2801ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)); + map(0x300000, 0x30001f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0xff0000, 0xffffff).ram().share("osram"); +} WRITE_LINE_MEMBER(esqkt_state::esq5506_otto_irq) { diff --git a/src/mame/drivers/esqmr.cpp b/src/mame/drivers/esqmr.cpp index 5ebb9ce9b97..4687c7a8f61 100644 --- a/src/mame/drivers/esqmr.cpp +++ b/src/mame/drivers/esqmr.cpp @@ -234,12 +234,13 @@ void esqmr_state::machine_reset() { } -ADDRESS_MAP_START(esqmr_state::mr_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0) +void esqmr_state::mr_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom().region("maincpu", 0); // AM_RANGE(0x200000, 0x20003f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0xffffffff) // AM_RANGE(0x240000, 0x24003f) AM_DEVREADWRITE8("ensoniq2", es5506_device, read, write, 0xffffffff) // AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") -ADDRESS_MAP_END +} WRITE_LINE_MEMBER(esqmr_state::esq5506_otto_irq) { diff --git a/src/mame/drivers/esripsys.cpp b/src/mame/drivers/esripsys.cpp index 8910f6b7f29..a06378be848 100644 --- a/src/mame/drivers/esripsys.cpp +++ b/src/mame/drivers/esripsys.cpp @@ -564,50 +564,54 @@ WRITE8_MEMBER(esripsys_state::esripsys_dac_w) * *************************************/ -ADDRESS_MAP_START(esripsys_state::game_cpu_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x4000, 0x42ff) AM_RAM AM_SHARE("pal_ram") - AM_RANGE(0x4300, 0x4300) AM_WRITE(esripsys_bg_intensity_w) - AM_RANGE(0x4400, 0x47ff) AM_NOP // Collision detection RAM - AM_RANGE(0x4800, 0x4bff) AM_READWRITE(g_status_r, g_status_w) - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(g_iobus_r, g_iobus_w) - AM_RANGE(0x5000, 0x53ff) AM_WRITE(g_ioadd_w) - AM_RANGE(0x5400, 0x57ff) AM_NOP - AM_RANGE(0x5c00, 0x5fff) AM_READWRITE(uart_r, uart_w) - AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(esripsys_state::frame_cpu_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x4000, 0x4fff) AM_READWRITE(fdt_r, fdt_w) - AM_RANGE(0x6000, 0x6000) AM_READWRITE(f_status_r, f_status_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(frame_w) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(esripsys_state::sound_cpu_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_RAM // Not installed on later PCBs - AM_RANGE(0x2008, 0x2009) AM_READWRITE(tms5220_r, tms5220_w) - AM_RANGE(0x200a, 0x200b) AM_WRITE(esripsys_dac_w) - AM_RANGE(0x200c, 0x200c) AM_DEVWRITE("dacvol", dac_byte_interface, write) - AM_RANGE(0x200d, 0x200d) AM_WRITE(control_w) - AM_RANGE(0x200e, 0x200e) AM_READWRITE(s_200e_r, s_200e_w) - AM_RANGE(0x200f, 0x200f) AM_READWRITE(s_200f_r, s_200f_w) - AM_RANGE(0x2020, 0x2027) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write) - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2") - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank3") - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank4") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(esripsys_state::video_cpu_map) - AM_RANGE(0x000, 0x1ff) AM_ROM -ADDRESS_MAP_END +void esripsys_state::game_cpu_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().share("share1"); + map(0x4000, 0x42ff).ram().share("pal_ram"); + map(0x4300, 0x4300).w(this, FUNC(esripsys_state::esripsys_bg_intensity_w)); + map(0x4400, 0x47ff).noprw(); // Collision detection RAM + map(0x4800, 0x4bff).rw(this, FUNC(esripsys_state::g_status_r), FUNC(esripsys_state::g_status_w)); + map(0x4c00, 0x4fff).rw(this, FUNC(esripsys_state::g_iobus_r), FUNC(esripsys_state::g_iobus_w)); + map(0x5000, 0x53ff).w(this, FUNC(esripsys_state::g_ioadd_w)); + map(0x5400, 0x57ff).noprw(); + map(0x5c00, 0x5fff).rw(this, FUNC(esripsys_state::uart_r), FUNC(esripsys_state::uart_w)); + map(0x6000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).rom(); +} + + +void esripsys_state::frame_cpu_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().share("share1"); + map(0x4000, 0x4fff).rw(this, FUNC(esripsys_state::fdt_r), FUNC(esripsys_state::fdt_w)); + map(0x6000, 0x6000).rw(this, FUNC(esripsys_state::f_status_r), FUNC(esripsys_state::f_status_w)); + map(0x8000, 0x8000).w(this, FUNC(esripsys_state::frame_w)); + map(0xc000, 0xffff).rom(); +} + + +void esripsys_state::sound_cpu_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0fff).ram(); // Not installed on later PCBs + map(0x2008, 0x2009).rw(this, FUNC(esripsys_state::tms5220_r), FUNC(esripsys_state::tms5220_w)); + map(0x200a, 0x200b).w(this, FUNC(esripsys_state::esripsys_dac_w)); + map(0x200c, 0x200c).w("dacvol", FUNC(dac_byte_interface::write)); + map(0x200d, 0x200d).w(this, FUNC(esripsys_state::control_w)); + map(0x200e, 0x200e).rw(this, FUNC(esripsys_state::s_200e_r), FUNC(esripsys_state::s_200e_w)); + map(0x200f, 0x200f).rw(this, FUNC(esripsys_state::s_200f_r), FUNC(esripsys_state::s_200f_w)); + map(0x2020, 0x2027).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x8000, 0x9fff).bankr("bank2"); + map(0xa000, 0xbfff).bankr("bank3"); + map(0xc000, 0xdfff).bankr("bank4"); + map(0xe000, 0xffff).rom(); +} + + +void esripsys_state::video_cpu_map(address_map &map) +{ + map(0x000, 0x1ff).rom(); +} /************************************* diff --git a/src/mame/drivers/et3400.cpp b/src/mame/drivers/et3400.cpp index bbe3a48bda9..a50641dbbd5 100644 --- a/src/mame/drivers/et3400.cpp +++ b/src/mame/drivers/et3400.cpp @@ -137,15 +137,16 @@ WRITE8_MEMBER(et3400_state::pia_bw) } -ADDRESS_MAP_START(et3400_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_RAM - AM_RANGE( 0x1000, 0x1003 ) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE( 0x1400, 0x23ff ) AM_ROM AM_REGION("roms", 0) - AM_RANGE( 0xc000, 0xc0ff ) AM_READ(keypad_r) - AM_RANGE( 0xc100, 0xc1ff ) AM_WRITE(display_w) - AM_RANGE( 0xfc00, 0xffff ) AM_ROM AM_REGION("roms", 0x1000) -ADDRESS_MAP_END +void et3400_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1003).mirror(0x03fc).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1400, 0x23ff).rom().region("roms", 0); + map(0xc000, 0xc0ff).r(this, FUNC(et3400_state::keypad_r)); + map(0xc100, 0xc1ff).w(this, FUNC(et3400_state::display_w)); + map(0xfc00, 0xffff).rom().region("roms", 0x1000); +} WRITE_LINE_MEMBER(et3400_state::reset_key_w) { diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp index 9955e428df7..bde64892b81 100644 --- a/src/mame/drivers/eti660.cpp +++ b/src/mame/drivers/eti660.cpp @@ -80,20 +80,22 @@ WRITE8_MEMBER( eti660_state::colorram_w ) /* Memory Maps */ -ADDRESS_MAP_START(eti660_state::mem_map) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x0400, 0x047f) AM_RAM - AM_RANGE(0x0480, 0x05ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0600, 0x0fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(eti660_state::io_map) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(pia_r, pia_w) - AM_RANGE(0x03, 0x03) AM_WRITE(colorram_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispoff_r, tone_latch_w) -ADDRESS_MAP_END +void eti660_state::mem_map(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x047f).ram(); + map(0x0480, 0x05ff).ram().share("videoram"); + map(0x0600, 0x0fff).ram(); +} + +void eti660_state::io_map(address_map &map) +{ + map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w)); + map(0x02, 0x02).rw(this, FUNC(eti660_state::pia_r), FUNC(eti660_state::pia_w)); + map(0x03, 0x03).w(this, FUNC(eti660_state::colorram_w)); + map(0x04, 0x04).rw(m_cti, FUNC(cdp1864_device::dispoff_r), FUNC(cdp1864_device::tone_latch_w)); +} /* Input Ports */ static INPUT_PORTS_START( eti660 ) diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp index 2a4d8a7eaa4..455d530ff98 100644 --- a/src/mame/drivers/ettrivia.cpp +++ b/src/mame/drivers/ettrivia.cpp @@ -155,21 +155,23 @@ WRITE8_MEMBER(ettrivia_state::b800_w) m_b800_prev = data; } -ADDRESS_MAP_START(ettrivia_state::cpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9000, 0x9000) AM_WRITE(ettrivia_control_w) - AM_RANGE(0x9800, 0x9800) AM_WRITENOP - AM_RANGE(0xa000, 0xa000) AM_WRITENOP - AM_RANGE(0xb000, 0xb000) AM_READ(b000_r) AM_WRITE(b000_w) - AM_RANGE(0xb800, 0xb800) AM_WRITE(b800_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(ettrivia_fg_w) AM_SHARE("fg_videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ettrivia_bg_w) AM_SHARE("bg_videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ettrivia_state::io_map) - AM_RANGE(0x0000, 0xffff) AM_READ(ettrivia_question_r) -ADDRESS_MAP_END +void ettrivia_state::cpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("nvram"); + map(0x9000, 0x9000).w(this, FUNC(ettrivia_state::ettrivia_control_w)); + map(0x9800, 0x9800).nopw(); + map(0xa000, 0xa000).nopw(); + map(0xb000, 0xb000).r(this, FUNC(ettrivia_state::b000_r)).w(this, FUNC(ettrivia_state::b000_w)); + map(0xb800, 0xb800).w(this, FUNC(ettrivia_state::b800_w)); + map(0xc000, 0xc7ff).ram().w(this, FUNC(ettrivia_state::ettrivia_fg_w)).share("fg_videoram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(ettrivia_state::ettrivia_bg_w)).share("bg_videoram"); +} + +void ettrivia_state::io_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(ettrivia_state::ettrivia_question_r)); +} static INPUT_PORTS_START( ettrivia ) PORT_START("IN0") diff --git a/src/mame/drivers/eurocom2.cpp b/src/mame/drivers/eurocom2.cpp index db78bfcaa18..6be6bd3bfee 100644 --- a/src/mame/drivers/eurocom2.cpp +++ b/src/mame/drivers/eurocom2.cpp @@ -330,26 +330,28 @@ uint32_t eurocom2_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -ADDRESS_MAP_START(eurocom2_state::eurocom2_map) - AM_RANGE(0x0000, 0xefff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf000, 0xfcef) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xfcf0, 0xfcf3) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0xfcf4, 0xfcf5) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xfcf6, 0xfcf7) AM_WRITE(vico_w) - AM_RANGE(0xfcf8, 0xfcfb) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0xfd30, 0xfd37) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0xfd38, 0xfd38) AM_READWRITE(fdc_aux_r, fdc_aux_w) - AM_RANGE(0xfd40, 0xffff) AM_ROM AM_REGION("maincpu", 0xd40) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(waveterm_state::waveterm_map) - AM_IMPORT_FROM(eurocom2_map) - AM_RANGE(0xfd00, 0xfd03) AM_DEVREADWRITE("pia3", pia6821_device, read, write) - AM_RANGE(0xfd08, 0xfd0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xfd10, 0xfd17) AM_UNMAP - AM_RANGE(0xfd18, 0xfd18) AM_READ(waveterm_adc) // AD558 ADC +void eurocom2_state::eurocom2_map(address_map &map) +{ + map(0x0000, 0xefff).ram().share("videoram"); + map(0xf000, 0xfcef).rom().region("maincpu", 0); + map(0xfcf0, 0xfcf3).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xfcf4, 0xfcf5).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xfcf6, 0xfcf7).w(this, FUNC(eurocom2_state::vico_w)); + map(0xfcf8, 0xfcfb).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xfd30, 0xfd37).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0xfd38, 0xfd38).rw(this, FUNC(eurocom2_state::fdc_aux_r), FUNC(eurocom2_state::fdc_aux_w)); + map(0xfd40, 0xffff).rom().region("maincpu", 0xd40).nopw(); +} + +void waveterm_state::waveterm_map(address_map &map) +{ + eurocom2_map(map); + map(0xfd00, 0xfd03).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xfd08, 0xfd0f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xfd10, 0xfd17).unmaprw(); + map(0xfd18, 0xfd18).r(this, FUNC(waveterm_state::waveterm_adc)); // AD558 ADC // AM_RANGE(0xfd20, 0xfd20) AM_READ(waveterm_dac) // ZN432 DAC ?? -ADDRESS_MAP_END +} static INPUT_PORTS_START(eurocom2) PORT_START("S1") diff --git a/src/mame/drivers/europc.cpp b/src/mame/drivers/europc.cpp index 7fa2d3cab2e..84722eb92d8 100644 --- a/src/mame/drivers/europc.cpp +++ b/src/mame/drivers/europc.cpp @@ -496,18 +496,20 @@ static INPUT_PORTS_START( europc ) PORT_BIT(0xfffe, IP_ACTIVE_HIGH, IPT_UNUSED) INPUT_PORTS_END -ADDRESS_MAP_START(europc_pc_state::europc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(europc_pc_state::europc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map) - AM_RANGE(0x0060, 0x0063) AM_READWRITE(europc_pio_r, europc_pio_w) - AM_RANGE(0x0250, 0x025f) AM_READWRITE(europc_jim_r, europc_jim_w) - AM_RANGE(0x02e0, 0x02e0) AM_READ(europc_jim2_r) -ADDRESS_MAP_END +void europc_pc_state::europc_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void europc_pc_state::europc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x0060, 0x0063).rw(this, FUNC(europc_pc_state::europc_pio_r), FUNC(europc_pc_state::europc_pio_w)); + map(0x0250, 0x025f).rw(this, FUNC(europc_pc_state::europc_jim_r), FUNC(europc_pc_state::europc_jim_w)); + map(0x02e0, 0x02e0).r(this, FUNC(europc_pc_state::europc_jim2_r)); +} /* single built-in 3.5" 720K drive, connector for optional external 3.5" or 5.25" drive */ void europc_pc_state::cfg_builtin_720K(device_t *device) diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp index 550aeddf845..7e865be7d6b 100644 --- a/src/mame/drivers/evmbug.cpp +++ b/src/mame/drivers/evmbug.cpp @@ -48,18 +48,20 @@ private: required_device<generic_terminal_device> m_terminal; }; -ADDRESS_MAP_START(evmbug_state::mem_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0xec00, 0xefff) AM_RAM -ADDRESS_MAP_END +void evmbug_state::mem_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0xec00, 0xefff).ram(); +} -ADDRESS_MAP_START(evmbug_state::io_map) - ADDRESS_MAP_UNMAP_HIGH +void evmbug_state::io_map(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x0000, 0x0003) AM_DEVREAD("uart1", tms9902_device, cruread) //AM_RANGE(0x0000, 0x001f) AM_DEVWRITE("uart1", tms9902_device, cruwrite) - AM_RANGE(0x0000, 0x0003) AM_READ(rs232_r) - AM_RANGE(0x0000, 0x001f) AM_WRITE(rs232_w) -ADDRESS_MAP_END + map(0x0000, 0x0003).r(this, FUNC(evmbug_state::rs232_r)); + map(0x0000, 0x001f).w(this, FUNC(evmbug_state::rs232_w)); +} /* Input ports */ static INPUT_PORTS_START( evmbug ) diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp index 13d7e6deb8b..36e316d3387 100644 --- a/src/mame/drivers/excali64.cpp +++ b/src/mame/drivers/excali64.cpp @@ -120,31 +120,33 @@ private: required_device<floppy_connector> m_floppy1; }; -ADDRESS_MAP_START(excali64_state::mem_map) - AM_RANGE(0x0000, 0x1FFF) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") - AM_RANGE(0x2000, 0x2FFF) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2") - AM_RANGE(0x3000, 0x3FFF) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3") - AM_RANGE(0x4000, 0xBFFF) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4") - AM_RANGE(0xC000, 0xFFFF) AM_RAM AM_REGION("rambank", 0xC000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(excali64_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_READ(port00_r) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w) - AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0e) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x31, 0x31) AM_MIRROR(0x0e) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x50, 0x5f) AM_READ(port50_r) - AM_RANGE(0x60, 0x63) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x70, 0x7f) AM_WRITE(port70_w) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0xe4, 0xe7) AM_WRITE(porte4_w) - AM_RANGE(0xe8, 0xeb) AM_READ(porte8_r) - AM_RANGE(0xec, 0xef) AM_WRITE(portec_w) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("fdc", wd2793_device, read, write) -ADDRESS_MAP_END +void excali64_state::mem_map(address_map &map) +{ + map(0x0000, 0x1FFF).bankr("bankr1").bankw("bankw1"); + map(0x2000, 0x2FFF).bankr("bankr2").bankw("bankw2"); + map(0x3000, 0x3FFF).bankr("bankr3").bankw("bankw3"); + map(0x4000, 0xBFFF).bankr("bankr4").bankw("bankw4"); + map(0xC000, 0xFFFF).ram().region("rambank", 0xC000); +} + +void excali64_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).r(this, FUNC(excali64_state::port00_r)); + map(0x10, 0x10).mirror(0x0e).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x11, 0x11).mirror(0x0e).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x20, 0x23).mirror(0x0c).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x30, 0x30).mirror(0x0e).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x31, 0x31).mirror(0x0e).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x50, 0x5f).r(this, FUNC(excali64_state::port50_r)); + map(0x60, 0x63).mirror(0x0c).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x70, 0x7f).w(this, FUNC(excali64_state::port70_w)); + map(0xe0, 0xe3).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0xe4, 0xe7).w(this, FUNC(excali64_state::porte4_w)); + map(0xe8, 0xeb).r(this, FUNC(excali64_state::porte8_r)); + map(0xec, 0xef).w(this, FUNC(excali64_state::portec_w)); + map(0xf0, 0xf3).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); +} static INPUT_PORTS_START( excali64 ) diff --git a/src/mame/drivers/exedexes.cpp b/src/mame/drivers/exedexes.cpp index 0794d2ae45e..3dc285a8032 100644 --- a/src/mame/drivers/exedexes.cpp +++ b/src/mame/drivers/exedexes.cpp @@ -34,36 +34,38 @@ TIMER_DEVICE_CALLBACK_MEMBER(exedexes_state::exedexes_scanline) } -ADDRESS_MAP_START(exedexes_state::exedexes_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW0") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1") - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc804, 0xc804) AM_WRITE(exedexes_c804_w) /* coin counters + text layer enable */ - AM_RANGE(0xc806, 0xc806) AM_WRITENOP /* Watchdog ?? */ - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(exedexes_videoram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(exedexes_colorram_w) AM_SHARE("colorram") /* Color RAM */ - AM_RANGE(0xd800, 0xd801) AM_WRITEONLY AM_SHARE("nbg_yscroll") - AM_RANGE(0xd802, 0xd803) AM_WRITEONLY AM_SHARE("nbg_xscroll") - AM_RANGE(0xd804, 0xd805) AM_WRITEONLY AM_SHARE("bg_scroll") - AM_RANGE(0xd807, 0xd807) AM_WRITE(exedexes_gfxctrl_w) /* layer enables */ - AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */ - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(exedexes_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn2", sn76489_device, write) -ADDRESS_MAP_END +void exedexes_state::exedexes_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW0"); + map(0xc004, 0xc004).portr("DSW1"); + map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc804, 0xc804).w(this, FUNC(exedexes_state::exedexes_c804_w)); /* coin counters + text layer enable */ + map(0xc806, 0xc806).nopw(); /* Watchdog ?? */ + map(0xd000, 0xd3ff).ram().w(this, FUNC(exedexes_state::exedexes_videoram_w)).share("videoram"); /* Video RAM */ + map(0xd400, 0xd7ff).ram().w(this, FUNC(exedexes_state::exedexes_colorram_w)).share("colorram"); /* Color RAM */ + map(0xd800, 0xd801).writeonly().share("nbg_yscroll"); + map(0xd802, 0xd803).writeonly().share("nbg_xscroll"); + map(0xd804, 0xd805).writeonly().share("bg_scroll"); + map(0xd807, 0xd807).w(this, FUNC(exedexes_state::exedexes_gfxctrl_w)); /* layer enables */ + map(0xe000, 0xefff).ram(); /* Work RAM */ + map(0xf000, 0xffff).ram().share("spriteram"); /* Sprite RAM */ +} + + + +void exedexes_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x8002, 0x8002).w("sn1", FUNC(sn76489_device::write)); + map(0x8003, 0x8003).w("sn2", FUNC(sn76489_device::write)); +} diff --git a/src/mame/drivers/exelv.cpp b/src/mame/drivers/exelv.cpp index adc0ab04564..cf781c67530 100644 --- a/src/mame/drivers/exelv.cpp +++ b/src/mame/drivers/exelv.cpp @@ -409,35 +409,37 @@ READ8_MEMBER(exelv_state::rom_r) @>f800-@>ffff: tms7020/tms7040 internal ROM */ -ADDRESS_MAP_START(exelv_state::tms7020_mem) - AM_RANGE(0x0080, 0x00ff) AM_NOP - AM_RANGE(0x0124, 0x0124) AM_DEVREAD("tms3556", tms3556_device, vram_r) - AM_RANGE(0x0125, 0x0125) AM_DEVREAD("tms3556", tms3556_device, reg_r) - AM_RANGE(0x0128, 0x0128) AM_DEVREAD("tms3556", tms3556_device, initptr_r) - AM_RANGE(0x012d, 0x012d) AM_DEVWRITE("tms3556", tms3556_device, reg_w) - AM_RANGE(0x012e, 0x012e) AM_DEVWRITE("tms3556", tms3556_device, vram_w) - - AM_RANGE(0x0130, 0x0130) AM_READWRITE(mailbox_wx319_r, mailbox_wx318_w) - AM_RANGE(0x0200, 0x7fff) AM_READ(rom_r) - AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xc7ff) AM_RAM /* CPU RAM */ - AM_RANGE(0xc800, 0xf7ff) AM_NOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exelv_state::tms7040_mem) - AM_RANGE(0x0080, 0x00ff) AM_NOP - AM_RANGE(0x0124, 0x0124) AM_DEVREAD("tms3556", tms3556_device, vram_r) - AM_RANGE(0x0125, 0x0125) AM_DEVREAD("tms3556", tms3556_device, reg_r) - AM_RANGE(0x0128, 0x0128) AM_DEVREAD("tms3556", tms3556_device, initptr_r) - AM_RANGE(0x012d, 0x012d) AM_DEVWRITE("tms3556", tms3556_device, reg_w) - AM_RANGE(0x012e, 0x012e) AM_DEVWRITE("tms3556", tms3556_device, vram_w) - AM_RANGE(0x0130, 0x0130) AM_READWRITE(mailbox_wx319_r, mailbox_wx318_w) - AM_RANGE(0x0200, 0x7fff) AM_ROMBANK("bank1") /* system ROM */ - AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xc7ff) AM_RAM /* CPU RAM */ - AM_RANGE(0xc800, 0xefff) AM_NOP -ADDRESS_MAP_END +void exelv_state::tms7020_mem(address_map &map) +{ + map(0x0080, 0x00ff).noprw(); + map(0x0124, 0x0124).r(m_tms3556, FUNC(tms3556_device::vram_r)); + map(0x0125, 0x0125).r(m_tms3556, FUNC(tms3556_device::reg_r)); + map(0x0128, 0x0128).r(m_tms3556, FUNC(tms3556_device::initptr_r)); + map(0x012d, 0x012d).w(m_tms3556, FUNC(tms3556_device::reg_w)); + map(0x012e, 0x012e).w(m_tms3556, FUNC(tms3556_device::vram_w)); + + map(0x0130, 0x0130).rw(this, FUNC(exelv_state::mailbox_wx319_r), FUNC(exelv_state::mailbox_wx318_w)); + map(0x0200, 0x7fff).r(this, FUNC(exelv_state::rom_r)); + map(0x8000, 0xbfff).noprw(); + map(0xc000, 0xc7ff).ram(); /* CPU RAM */ + map(0xc800, 0xf7ff).noprw(); +} + + +void exelv_state::tms7040_mem(address_map &map) +{ + map(0x0080, 0x00ff).noprw(); + map(0x0124, 0x0124).r(m_tms3556, FUNC(tms3556_device::vram_r)); + map(0x0125, 0x0125).r(m_tms3556, FUNC(tms3556_device::reg_r)); + map(0x0128, 0x0128).r(m_tms3556, FUNC(tms3556_device::initptr_r)); + map(0x012d, 0x012d).w(m_tms3556, FUNC(tms3556_device::reg_w)); + map(0x012e, 0x012e).w(m_tms3556, FUNC(tms3556_device::vram_w)); + map(0x0130, 0x0130).rw(this, FUNC(exelv_state::mailbox_wx319_r), FUNC(exelv_state::mailbox_wx318_w)); + map(0x0200, 0x7fff).bankr("bank1"); /* system ROM */ + map(0x8000, 0xbfff).noprw(); + map(0xc000, 0xc7ff).ram(); /* CPU RAM */ + map(0xc800, 0xefff).noprw(); +} /* keyboard: ??? */ diff --git a/src/mame/drivers/exerion.cpp b/src/mame/drivers/exerion.cpp index 28640198681..8e5e3e22b3c 100644 --- a/src/mame/drivers/exerion.cpp +++ b/src/mame/drivers/exerion.cpp @@ -191,22 +191,23 @@ READ8_MEMBER(exerion_state::exerion_protection_r) * *************************************/ -ADDRESS_MAP_START(exerion_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x6008, 0x600b) AM_READ(exerion_protection_r) - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8800, 0x887f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8880, 0x8bff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("DSW0") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1") - AM_RANGE(0xc000, 0xc000) AM_WRITE(exerion_videoreg_w) - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xd800, 0xd801) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xd802, 0xd802) AM_DEVREAD("ay2", ay8910_device, data_r) -ADDRESS_MAP_END +void exerion_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram().share("main_ram"); + map(0x6008, 0x600b).r(this, FUNC(exerion_state::exerion_protection_r)); + map(0x8000, 0x87ff).ram().share("videoram"); + map(0x8800, 0x887f).ram().share("spriteram"); + map(0x8880, 0x8bff).ram(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa800, 0xa800).portr("DSW0"); + map(0xb000, 0xb000).portr("DSW1"); + map(0xc000, 0xc000).w(this, FUNC(exerion_state::exerion_videoreg_w)); + map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xd000, 0xd001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xd800, 0xd801).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xd802, 0xd802).r("ay2", FUNC(ay8910_device::data_r)); +} @@ -216,13 +217,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(exerion_state::sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x800c) AM_WRITE(exerion_video_latch_w) - AM_RANGE(0xa000, 0xa000) AM_READ(exerion_video_timing_r) -ADDRESS_MAP_END +void exerion_state::sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x800c).w(this, FUNC(exerion_state::exerion_video_latch_w)); + map(0xa000, 0xa000).r(this, FUNC(exerion_state::exerion_video_timing_r)); +} diff --git a/src/mame/drivers/exidy.cpp b/src/mame/drivers/exidy.cpp index 774178478a3..4cc23184cc0 100644 --- a/src/mame/drivers/exidy.cpp +++ b/src/mame/drivers/exidy.cpp @@ -200,104 +200,112 @@ WRITE8_MEMBER(exidy_state::fax_bank_select_w) * *************************************/ -ADDRESS_MAP_START(exidy_state::exidy_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite1_xpos") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite1_ypos") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite2_xpos") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x003f) AM_WRITEONLY AM_SHARE("sprite2_ypos") - AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_READ_PORT("DSW") - AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("spriteno") - AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_READ_PORT("IN0") - AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("sprite_enable") - AM_RANGE(0x5103, 0x5103) AM_MIRROR(0x00fc) AM_READ(exidy_interrupt_r) - AM_RANGE(0x5210, 0x5212) AM_WRITEONLY AM_SHARE("color_latch") - AM_RANGE(0x5213, 0x5213) AM_READ_PORT("IN2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::sidetrac_map) - AM_IMPORT_FROM(exidy_map) - AM_RANGE(0x0800, 0x3fff) AM_ROM - AM_RANGE(0x4800, 0x4fff) AM_ROM AM_SHARE("characterram") - AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w) - AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w) - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::targ_map) - AM_IMPORT_FROM(exidy_map) - AM_RANGE(0x0800, 0x3fff) AM_ROM - AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram") - AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w) - AM_RANGE(0x5201, 0x5201) AM_WRITE(targ_audio_2_w) - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::spectar_map) - AM_IMPORT_FROM(exidy_map) - AM_RANGE(0x0800, 0x3fff) AM_ROM - AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram") - AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w) - AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w) - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::rallys_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram") - AM_RANGE(0x5000, 0x5000) AM_WRITEONLY AM_SHARE("sprite1_xpos") - AM_RANGE(0x5001, 0x5001) AM_WRITEONLY AM_SHARE("sprite1_ypos") - AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_READ_PORT("DSW") - AM_RANGE(0x5100, 0x5100) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("spriteno") - AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_READ_PORT("IN0") - AM_RANGE(0x5101, 0x5101) AM_MIRROR(0x00fc) AM_WRITEONLY AM_SHARE("sprite_enable") - AM_RANGE(0x5103, 0x5103) AM_MIRROR(0x00fc) AM_READ(exidy_interrupt_r) - AM_RANGE(0x5200, 0x5200) AM_WRITE(targ_audio_1_w) - AM_RANGE(0x5201, 0x5201) AM_WRITE(spectar_audio_2_w) - AM_RANGE(0x5210, 0x5212) AM_WRITEONLY AM_SHARE("color_latch") - AM_RANGE(0x5213, 0x5213) AM_READ_PORT("IN2") - AM_RANGE(0x5300, 0x5300) AM_WRITEONLY AM_SHARE("sprite2_xpos") - AM_RANGE(0x5301, 0x5301) AM_WRITEONLY AM_SHARE("sprite2_ypos") - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::venture_map) - AM_IMPORT_FROM(exidy_map) - AM_RANGE(0x4800, 0x4fff) AM_RAM AM_SHARE("characterram") - AM_RANGE(0x5200, 0x520f) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::pepper2_map) - AM_IMPORT_FROM(exidy_map) - AM_RANGE(0x4800, 0x4fff) AM_NOP - AM_RANGE(0x5200, 0x520f) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("characterram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exidy_state::fax_map) - AM_IMPORT_FROM(exidy_map) - AM_RANGE(0x0400, 0x07ff) AM_RAM - AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("IN4") - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("IN3") - AM_RANGE(0x2000, 0x2000) AM_WRITE(fax_bank_select_w) - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x5200, 0x520f) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x5213, 0x5217) AM_WRITENOP /* empty control lines on color/sound board */ - AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("characterram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void exidy_state::exidy_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x4000, 0x43ff).mirror(0x0400).ram().share("videoram"); + map(0x5000, 0x5000).mirror(0x003f).writeonly().share("sprite1_xpos"); + map(0x5040, 0x5040).mirror(0x003f).writeonly().share("sprite1_ypos"); + map(0x5080, 0x5080).mirror(0x003f).writeonly().share("sprite2_xpos"); + map(0x50c0, 0x50c0).mirror(0x003f).writeonly().share("sprite2_ypos"); + map(0x5100, 0x5100).mirror(0x00fc).portr("DSW"); + map(0x5100, 0x5100).mirror(0x00fc).writeonly().share("spriteno"); + map(0x5101, 0x5101).mirror(0x00fc).portr("IN0"); + map(0x5101, 0x5101).mirror(0x00fc).writeonly().share("sprite_enable"); + map(0x5103, 0x5103).mirror(0x00fc).r(this, FUNC(exidy_state::exidy_interrupt_r)); + map(0x5210, 0x5212).writeonly().share("color_latch"); + map(0x5213, 0x5213).portr("IN2"); +} + + +void exidy_state::sidetrac_map(address_map &map) +{ + exidy_map(map); + map(0x0800, 0x3fff).rom(); + map(0x4800, 0x4fff).rom().share("characterram"); + map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w)); + map(0x5201, 0x5201).w(this, FUNC(exidy_state::spectar_audio_2_w)); + map(0xff00, 0xffff).rom().region("maincpu", 0x3f00); +} + + +void exidy_state::targ_map(address_map &map) +{ + exidy_map(map); + map(0x0800, 0x3fff).rom(); + map(0x4800, 0x4fff).ram().share("characterram"); + map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w)); + map(0x5201, 0x5201).w(this, FUNC(exidy_state::targ_audio_2_w)); + map(0xff00, 0xffff).rom().region("maincpu", 0x3f00); +} + + +void exidy_state::spectar_map(address_map &map) +{ + exidy_map(map); + map(0x0800, 0x3fff).rom(); + map(0x4800, 0x4fff).ram().share("characterram"); + map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w)); + map(0x5201, 0x5201).w(this, FUNC(exidy_state::spectar_audio_2_w)); + map(0xff00, 0xffff).rom().region("maincpu", 0x3f00); +} + + +void exidy_state::rallys_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0800, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0x0400).ram().share("videoram"); + map(0x4800, 0x4fff).ram().share("characterram"); + map(0x5000, 0x5000).writeonly().share("sprite1_xpos"); + map(0x5001, 0x5001).writeonly().share("sprite1_ypos"); + map(0x5100, 0x5100).mirror(0x00fc).portr("DSW"); + map(0x5100, 0x5100).mirror(0x00fc).writeonly().share("spriteno"); + map(0x5101, 0x5101).mirror(0x00fc).portr("IN0"); + map(0x5101, 0x5101).mirror(0x00fc).writeonly().share("sprite_enable"); + map(0x5103, 0x5103).mirror(0x00fc).r(this, FUNC(exidy_state::exidy_interrupt_r)); + map(0x5200, 0x5200).w(this, FUNC(exidy_state::targ_audio_1_w)); + map(0x5201, 0x5201).w(this, FUNC(exidy_state::spectar_audio_2_w)); + map(0x5210, 0x5212).writeonly().share("color_latch"); + map(0x5213, 0x5213).portr("IN2"); + map(0x5300, 0x5300).writeonly().share("sprite2_xpos"); + map(0x5301, 0x5301).writeonly().share("sprite2_ypos"); + map(0xff00, 0xffff).rom().region("maincpu", 0x3f00); +} + + +void exidy_state::venture_map(address_map &map) +{ + exidy_map(map); + map(0x4800, 0x4fff).ram().share("characterram"); + map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xffff).rom(); +} + + +void exidy_state::pepper2_map(address_map &map) +{ + exidy_map(map); + map(0x4800, 0x4fff).noprw(); + map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x6000, 0x6fff).ram().share("characterram"); + map(0x8000, 0xffff).rom(); +} + + +void exidy_state::fax_map(address_map &map) +{ + exidy_map(map); + map(0x0400, 0x07ff).ram(); + map(0x1a00, 0x1a00).portr("IN4"); + map(0x1c00, 0x1c00).portr("IN3"); + map(0x2000, 0x2000).w(this, FUNC(exidy_state::fax_bank_select_w)); + map(0x2000, 0x3fff).bankr("bank1"); + map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5213, 0x5217).nopw(); /* empty control lines on color/sound board */ + map(0x6000, 0x6fff).ram().share("characterram"); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp index 1a107cd65d2..1362450230d 100644 --- a/src/mame/drivers/exidy440.cpp +++ b/src/mame/drivers/exidy440.cpp @@ -468,27 +468,28 @@ void exidy440_state::machine_reset() * *************************************/ -ADDRESS_MAP_START(exidy440_state::exidy440_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("imageram") - AM_RANGE(0x2000, 0x209f) AM_RAM_WRITE(exidy440_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x20a0, 0x29ff) AM_RAM - AM_RANGE(0x2a00, 0x2aff) AM_READWRITE(exidy440_videoram_r, exidy440_videoram_w) - AM_RANGE(0x2b00, 0x2b00) AM_READ(exidy440_vertical_pos_r) - AM_RANGE(0x2b01, 0x2b01) AM_READWRITE(exidy440_horizontal_pos_r, exidy440_interrupt_clear_w) - AM_RANGE(0x2b02, 0x2b02) AM_RAM AM_SHARE("scanline") - AM_RANGE(0x2b03, 0x2b03) AM_READ_PORT("IN0") AM_WRITE(exidy440_control_w) - AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(exidy440_paletteram_r, exidy440_paletteram_w) - AM_RANGE(0x2e00, 0x2e1f) AM_RAM_WRITE(sound_command_w) - AM_RANGE(0x2e20, 0x2e3f) AM_READWRITE(exidy440_input_port_3_r, exidy440_input_port_3_w) - AM_RANGE(0x2e40, 0x2e5f) AM_READNOP AM_WRITE(exidy440_coin_counter_w) /* read: clear coin counters I/O2 */ - AM_RANGE(0x2e60, 0x2e7f) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x2e80, 0x2e9f) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0x2ea0, 0x2ebf) AM_READ(sound_command_ack_r) AM_WRITENOP - AM_RANGE(0x2ec0, 0x2eff) AM_NOP - AM_RANGE(0x3000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE(bankram_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void exidy440_state::exidy440_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("imageram"); + map(0x2000, 0x209f).ram().w(this, FUNC(exidy440_state::exidy440_spriteram_w)).share("spriteram"); + map(0x20a0, 0x29ff).ram(); + map(0x2a00, 0x2aff).rw(this, FUNC(exidy440_state::exidy440_videoram_r), FUNC(exidy440_state::exidy440_videoram_w)); + map(0x2b00, 0x2b00).r(this, FUNC(exidy440_state::exidy440_vertical_pos_r)); + map(0x2b01, 0x2b01).rw(this, FUNC(exidy440_state::exidy440_horizontal_pos_r), FUNC(exidy440_state::exidy440_interrupt_clear_w)); + map(0x2b02, 0x2b02).ram().share("scanline"); + map(0x2b03, 0x2b03).portr("IN0").w(this, FUNC(exidy440_state::exidy440_control_w)); + map(0x2c00, 0x2dff).rw(this, FUNC(exidy440_state::exidy440_paletteram_r), FUNC(exidy440_state::exidy440_paletteram_w)); + map(0x2e00, 0x2e1f).ram().w(this, FUNC(exidy440_state::sound_command_w)); + map(0x2e20, 0x2e3f).rw(this, FUNC(exidy440_state::exidy440_input_port_3_r), FUNC(exidy440_state::exidy440_input_port_3_w)); + map(0x2e40, 0x2e5f).nopr().w(this, FUNC(exidy440_state::exidy440_coin_counter_w)); /* read: clear coin counters I/O2 */ + map(0x2e60, 0x2e7f).portr("IN1").nopw(); + map(0x2e80, 0x2e9f).portr("IN2").nopw(); + map(0x2ea0, 0x2ebf).r(this, FUNC(exidy440_state::sound_command_ack_r)).nopw(); + map(0x2ec0, 0x2eff).noprw(); + map(0x3000, 0x3fff).ram(); + map(0x4000, 0x7fff).bankr("bank1").w(this, FUNC(exidy440_state::bankram_w)); + map(0x8000, 0xffff).rom(); +} /************************************* @@ -497,19 +498,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(exidy440_state::exidy440_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x801f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("custom", exidy440_sound_device, m6844_r, m6844_w) - AM_RANGE(0x8400, 0x840f) AM_MIRROR(0x03f0) AM_DEVREADWRITE("custom", exidy440_sound_device, sound_volume_r, sound_volume_w) - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_DEVREAD("custom", exidy440_sound_device, sound_command_r) AM_WRITENOP - AM_RANGE(0x8c00, 0x93ff) AM_NOP - AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x03fc) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_banks_w) - AM_RANGE(0x9800, 0x9800) AM_MIRROR(0x03ff) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_interrupt_clear_w) - AM_RANGE(0x9c00, 0x9fff) AM_NOP - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_NOP - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void exidy440_state::exidy440_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).noprw(); + map(0x8000, 0x801f).mirror(0x03e0).rw(m_custom, FUNC(exidy440_sound_device::m6844_r), FUNC(exidy440_sound_device::m6844_w)); + map(0x8400, 0x840f).mirror(0x03f0).rw(m_custom, FUNC(exidy440_sound_device::sound_volume_r), FUNC(exidy440_sound_device::sound_volume_w)); + map(0x8800, 0x8800).mirror(0x03ff).r(m_custom, FUNC(exidy440_sound_device::sound_command_r)).nopw(); + map(0x8c00, 0x93ff).noprw(); + map(0x9400, 0x9403).mirror(0x03fc).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_banks_w)); + map(0x9800, 0x9800).mirror(0x03ff).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_interrupt_clear_w)); + map(0x9c00, 0x9fff).noprw(); + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xdfff).noprw(); + map(0xe000, 0xffff).rom(); +} diff --git a/src/mame/drivers/exp85.cpp b/src/mame/drivers/exp85.cpp index 768fe15be45..b222d664219 100644 --- a/src/mame/drivers/exp85.cpp +++ b/src/mame/drivers/exp85.cpp @@ -40,21 +40,23 @@ /* Memory Maps */ -ADDRESS_MAP_START(exp85_state::exp85_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xf8ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(exp85_state::exp85_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE(I8355_TAG, i8355_device, io_r, io_w) - AM_RANGE(0xf8, 0xfd) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w) +void exp85_state::exp85_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankr("bank1"); + map(0xc000, 0xdfff).rom(); + map(0xf000, 0xf7ff).rom(); + map(0xf800, 0xf8ff).ram(); +} + +void exp85_state::exp85_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf0, 0xf3).rw(I8355_TAG, FUNC(i8355_device::io_r), FUNC(i8355_device::io_w)); + map(0xf8, 0xfd).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); // AM_RANGE(0xfe, 0xff) AM_DEVREADWRITE(I8279_TAG, i8279_r, i8279_w) -ADDRESS_MAP_END +} /* Input Ports */ diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp index 34f884a1478..2a30954dd68 100644 --- a/src/mame/drivers/expro02.cpp +++ b/src/mame/drivers/expro02.cpp @@ -661,167 +661,178 @@ WRITE8_MEMBER( expro02_state::expro02_6295_bankswitch_w ) *************************************/ -ADDRESS_MAP_START(expro02_state::expro02_video_base_map) - AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fg_ind8ram") - AM_RANGE(0x520000, 0x53ffff) AM_RAM AM_SHARE("bg_rgb555ram") - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette? - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // sprites? 0x72f words tested - AM_RANGE(0x780000, 0x78001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xd80000, 0xd80001) AM_DEVWRITE("view2_0",kaneko_view2_tilemap_device,galsnew_vram_1_tilebank_w) /* ??? */ - AM_RANGE(0xe80000, 0xe80001) AM_DEVWRITE("view2_0",kaneko_view2_tilemap_device,galsnew_vram_0_tilebank_w) /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::expro02_video_base_map_noview2) - AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fg_ind8ram") - AM_RANGE(0x520000, 0x53ffff) AM_RAM AM_SHARE("bg_rgb555ram") - AM_RANGE(0x580000, 0x583fff) AM_NOP // games still makes leftover accesses - AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette? - AM_RANGE(0x680000, 0x68001f) AM_NOP // games still makes leftover accesses - AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // sprites? 0x72f words tested - AM_RANGE(0x780000, 0x78001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xd80000, 0xd80001) AM_NOP // games still makes leftover accesses - AM_RANGE(0xe80000, 0xe80001) AM_NOP // games still makes leftover accesses -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::expro02_map) - AM_IMPORT_FROM(expro02_video_base_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // main program - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("user2",0) // other data - AM_RANGE(0x100000, 0x3fffff) AM_ROM AM_REGION("user1",0) // main data - AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) - AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xc80000, 0xc8ffff) AM_RAM - AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) -ADDRESS_MAP_END +void expro02_state::expro02_video_base_map(address_map &map) +{ + map(0x500000, 0x51ffff).ram().share("fg_ind8ram"); + map(0x520000, 0x53ffff).ram().share("bg_rgb555ram"); + map(0x580000, 0x583fff).rw(m_view2_0, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x600fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette? + map(0x680000, 0x68001f).rw(m_view2_0, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x700fff).ram().share("spriteram"); // sprites? 0x72f words tested + map(0x780000, 0x78001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xd80000, 0xd80001).w(m_view2_0, FUNC(kaneko_view2_tilemap_device::galsnew_vram_1_tilebank_w)); /* ??? */ + map(0xe80000, 0xe80001).w(m_view2_0, FUNC(kaneko_view2_tilemap_device::galsnew_vram_0_tilebank_w)); /* ??? */ +} + +void expro02_state::expro02_video_base_map_noview2(address_map &map) +{ + map(0x500000, 0x51ffff).ram().share("fg_ind8ram"); + map(0x520000, 0x53ffff).ram().share("bg_rgb555ram"); + map(0x580000, 0x583fff).noprw(); // games still makes leftover accesses + map(0x600000, 0x600fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette? + map(0x680000, 0x68001f).noprw(); // games still makes leftover accesses + map(0x700000, 0x700fff).ram().share("spriteram"); // sprites? 0x72f words tested + map(0x780000, 0x78001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xd80000, 0xd80001).noprw(); // games still makes leftover accesses + map(0xe80000, 0xe80001).noprw(); // games still makes leftover accesses +} + +void expro02_state::expro02_map(address_map &map) +{ + expro02_video_base_map(map); + map(0x000000, 0x03ffff).rom(); // main program + map(0x080000, 0x0fffff).rom().region("user2", 0); // other data + map(0x100000, 0x3fffff).rom().region("user1", 0); // main data + map(0x400001, 0x400001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); + map(0xa00000, 0xa00001).nopw(); /* ??? */ + map(0xc80000, 0xc8ffff).ram(); + map(0xe00000, 0xe00015).rw("calc1_mcu", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); +} // bigger ROM space, OKI commands moved, no CALC mcu -ADDRESS_MAP_START(expro02_state::fantasia_map) - AM_IMPORT_FROM(expro02_video_base_map) - AM_RANGE(0x000000, 0x4fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x800006, 0x800007) AM_NOP // ? used ? - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) - AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xc80000, 0xc8ffff) AM_RAM - AM_RANGE(0xf00000, 0xf00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(expro02_state::comad_map) - AM_IMPORT_FROM(expro02_video_base_map_noview2) - AM_RANGE(0x000000, 0x4fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") +void expro02_state::fantasia_map(address_map &map) +{ + expro02_video_base_map(map); + map(0x000000, 0x4fffff).rom(); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x800006, 0x800007).noprw(); // ? used ? + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); + map(0xa00000, 0xa00001).nopw(); /* ??? */ + map(0xc80000, 0xc8ffff).ram(); + map(0xf00000, 0xf00000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + + + +void expro02_state::comad_map(address_map &map) +{ + expro02_video_base_map_noview2(map); + map(0x000000, 0x4fffff).rom(); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); // AM_RANGE(0x800006, 0x800007) ?? - AM_RANGE(0x80000a, 0x80000b) AM_READ(comad_timer_r) /* bits 8-a = timer? palette update code waits for them to be 111 */ - AM_RANGE(0x80000c, 0x80000d) AM_READ(comad_timer_r) /* missw96 bits 8-a = timer? palette update code waits for them to be 111 */ - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */ - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM - AM_RANGE(0xc80000, 0xc8ffff) AM_RAM - AM_RANGE(0xf00000, 0xf00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */ - AM_RANGE(0xf80000, 0xf80001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* newfant */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::fantsia2_map) - AM_IMPORT_FROM(expro02_video_base_map_noview2) - AM_RANGE(0x000000, 0x4fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") + map(0x80000a, 0x80000b).r(this, FUNC(expro02_state::comad_timer_r)); /* bits 8-a = timer? palette update code waits for them to be 111 */ + map(0x80000c, 0x80000d).r(this, FUNC(expro02_state::comad_timer_r)); /* missw96 bits 8-a = timer? palette update code waits for them to be 111 */ + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */ + map(0xc00000, 0xc0ffff).ram(); + map(0xc80000, 0xc8ffff).ram(); + map(0xf00000, 0xf00000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */ + map(0xf80000, 0xf80000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* newfant */ +} + +void expro02_state::fantsia2_map(address_map &map) +{ + expro02_video_base_map_noview2(map); + map(0x000000, 0x4fffff).rom(); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); // AM_RANGE(0x800006, 0x800007) ?? - AM_RANGE(0x800008, 0x800009) AM_READ(comad_timer_r) /* bits 8-a = timer? palette update code waits for them to be 111 */ - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* coin counters, + ? */ - AM_RANGE(0xc80000, 0xc80001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) - AM_RANGE(0xf80000, 0xf8ffff) AM_RAM -ADDRESS_MAP_END - - - - -ADDRESS_MAP_START(expro02_state::galhustl_map) - AM_IMPORT_FROM(expro02_video_base_map_noview2) - - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x2fffff) AM_ROM AM_REGION("maincpudata", 0) - - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) - AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP // ? - AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0xe80000, 0xe8ffff) AM_RAM - - AM_RANGE(0x780000, 0x78001f) AM_NOP // prevent sprites being flipped -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::zipzap_map) - AM_IMPORT_FROM(expro02_video_base_map_noview2) - - AM_RANGE(0x000000, 0x4fffff) AM_ROM - AM_RANGE(0x701000, 0x71ffff) AM_RAM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) - AM_RANGE(0xc00000, 0xc00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */ - AM_RANGE(0xc80000, 0xc8ffff) AM_RAM // main ram - - AM_RANGE(0x780000, 0x78001f) AM_NOP // prevent sprites being flipped -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::supmodel_map) - AM_IMPORT_FROM(expro02_video_base_map_noview2) - AM_RANGE(0x000000, 0x4fffff) AM_ROM - AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram") - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x800006, 0x800007) AM_READ(comad_timer_r) - AM_RANGE(0x800008, 0x800009) AM_READ(comad_timer_r) - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP - AM_RANGE(0xc80000, 0xc8ffff) AM_RAM - AM_RANGE(0xd80000, 0xd80001) AM_WRITENOP - AM_RANGE(0xe00012, 0xe00013) AM_WRITENOP - AM_RANGE(0xe80000, 0xe80001) AM_WRITENOP - AM_RANGE(0xf80000, 0xf80001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::smissw_map) - AM_IMPORT_FROM(expro02_video_base_map_noview2) - AM_RANGE(0x000000, 0x4fffff) AM_ROM - AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram") - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x800006, 0x800007) AM_READ(comad_timer_r) - AM_RANGE(0x80000e, 0x80000f) AM_READ(comad_timer_r) - AM_RANGE(0x900000, 0x900001) AM_WRITE8(expro02_6295_bankswitch_w, 0xff00) /* not sure */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM - AM_RANGE(0xd80000, 0xd80001) AM_WRITENOP - AM_RANGE(0xe00012, 0xe00013) AM_WRITENOP - AM_RANGE(0xe80000, 0xe80001) AM_WRITENOP - AM_RANGE(0xf00000, 0xf00001) AM_READ8(comad_okim6295_r, 0xff00) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) /* fantasia, missw96 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(expro02_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END + map(0x800008, 0x800009).r(this, FUNC(expro02_state::comad_timer_r)); /* bits 8-a = timer? palette update code waits for them to be 111 */ + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */ + map(0xa00000, 0xa00001).nopw(); /* coin counters, + ? */ + map(0xc80000, 0xc80000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); + map(0xf80000, 0xf8ffff).ram(); +} + + + + +void expro02_state::galhustl_map(address_map &map) +{ + expro02_video_base_map_noview2(map); + + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x2fffff).rom().region("maincpudata", 0); + + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); + map(0xa00000, 0xa00001).nopw(); // ? + map(0xd00000, 0xd00000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe80000, 0xe8ffff).ram(); + + map(0x780000, 0x78001f).noprw(); // prevent sprites being flipped +} + +void expro02_state::zipzap_map(address_map &map) +{ + expro02_video_base_map_noview2(map); + + map(0x000000, 0x4fffff).rom(); + map(0x701000, 0x71ffff).ram(); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); + map(0xc00000, 0xc00000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */ + map(0xc80000, 0xc8ffff).ram(); // main ram + + map(0x780000, 0x78001f).noprw(); // prevent sprites being flipped +} + +void expro02_state::supmodel_map(address_map &map) +{ + expro02_video_base_map_noview2(map); + map(0x000000, 0x4fffff).rom(); + map(0x500000, 0x51ffff).ram().share("fgvideoram"); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x800006, 0x800007).r(this, FUNC(expro02_state::comad_timer_r)); + map(0x800008, 0x800009).r(this, FUNC(expro02_state::comad_timer_r)); + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */ + map(0xa00000, 0xa00001).nopw(); + map(0xc80000, 0xc8ffff).ram(); + map(0xd80000, 0xd80001).nopw(); + map(0xe00012, 0xe00013).nopw(); + map(0xe80000, 0xe80001).nopw(); + map(0xf80000, 0xf80000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */ +} + +void expro02_state::smissw_map(address_map &map) +{ + expro02_video_base_map_noview2(map); + map(0x000000, 0x4fffff).rom(); + map(0x500000, 0x51ffff).ram().share("fgvideoram"); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x800006, 0x800007).r(this, FUNC(expro02_state::comad_timer_r)); + map(0x80000e, 0x80000f).r(this, FUNC(expro02_state::comad_timer_r)); + map(0x900000, 0x900000).w(this, FUNC(expro02_state::expro02_6295_bankswitch_w)); /* not sure */ + map(0xa00000, 0xa00001).nopw(); + map(0xc00000, 0xc0ffff).ram(); + map(0xd80000, 0xd80001).nopw(); + map(0xe00012, 0xe00013).nopw(); + map(0xe80000, 0xe80001).nopw(); + map(0xf00000, 0xf00000).r(this, FUNC(expro02_state::comad_okim6295_r)).w("oki", FUNC(okim6295_device::write)).umask16(0xff00); /* fantasia, missw96 */ +} + +void expro02_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} /************************************* * diff --git a/src/mame/drivers/exprraid.cpp b/src/mame/drivers/exprraid.cpp index b89138e8d12..77d501c9fdd 100644 --- a/src/mame/drivers/exprraid.cpp +++ b/src/mame/drivers/exprraid.cpp @@ -274,39 +274,42 @@ READ8_MEMBER(exprraid_state::vblank_r) } -ADDRESS_MAP_START(exprraid_state::master_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x0600, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(exprraid_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(exprraid_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW0") /* DSW 0 */ - AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1") /* Controls */ - AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2") /* Coins */ - AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW1") /* DSW 1 */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(exprraid_int_clear_w) - AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x2002, 0x2002) AM_WRITE(exprraid_flipscreen_w) - AM_RANGE(0x2003, 0x2003) AM_WRITENOP // DMA SWAP - Allow writes to video and sprite RAM - AM_RANGE(0x2800, 0x2800) AM_READ(exprraid_prot_data_r) - AM_RANGE(0x2801, 0x2801) AM_READ(exprraid_prot_status_r) - AM_RANGE(0x2800, 0x2803) AM_WRITE(exprraid_bgselect_w) - AM_RANGE(0x2804, 0x2804) AM_WRITE(exprraid_scrolly_w) - AM_RANGE(0x2805, 0x2806) AM_WRITE(exprraid_scrollx_w) - AM_RANGE(0x2807, 0x2807) AM_WRITE(exprraid_prot_data_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(exprraid_state::master_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") -ADDRESS_MAP_END - -ADDRESS_MAP_START(exprraid_state::slave_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym2", ym3526_device, read, write) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void exprraid_state::master_map(address_map &map) +{ + map(0x0000, 0x05ff).ram().share("main_ram"); + map(0x0600, 0x07ff).ram().share("spriteram"); + map(0x0800, 0x0bff).ram().w(this, FUNC(exprraid_state::exprraid_videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(exprraid_state::exprraid_colorram_w)).share("colorram"); + map(0x1800, 0x1800).portr("DSW0"); /* DSW 0 */ + map(0x1801, 0x1801).portr("IN1"); /* Controls */ + map(0x1802, 0x1802).portr("IN2"); /* Coins */ + map(0x1803, 0x1803).portr("DSW1"); /* DSW 1 */ + map(0x2000, 0x2000).w(this, FUNC(exprraid_state::exprraid_int_clear_w)); + map(0x2001, 0x2001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x2002, 0x2002).w(this, FUNC(exprraid_state::exprraid_flipscreen_w)); + map(0x2003, 0x2003).nopw(); // DMA SWAP - Allow writes to video and sprite RAM + map(0x2800, 0x2800).r(this, FUNC(exprraid_state::exprraid_prot_data_r)); + map(0x2801, 0x2801).r(this, FUNC(exprraid_state::exprraid_prot_status_r)); + map(0x2800, 0x2803).w(this, FUNC(exprraid_state::exprraid_bgselect_w)); + map(0x2804, 0x2804).w(this, FUNC(exprraid_state::exprraid_scrolly_w)); + map(0x2805, 0x2806).w(this, FUNC(exprraid_state::exprraid_scrollx_w)); + map(0x2807, 0x2807).w(this, FUNC(exprraid_state::exprraid_prot_data_w)); + map(0x4000, 0xffff).rom(); +} + +void exprraid_state::master_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0"); +} + +void exprraid_state::slave_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x4000, 0x4001).rw("ym2", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(exprraid_state::coin_inserted_deco16) diff --git a/src/mame/drivers/exterm.cpp b/src/mame/drivers/exterm.cpp index 56a368bdab2..a529d509ed1 100644 --- a/src/mame/drivers/exterm.cpp +++ b/src/mame/drivers/exterm.cpp @@ -254,28 +254,30 @@ WRITE8_MEMBER(exterm_state::sound_control_w) * *************************************/ -ADDRESS_MAP_START(exterm_state::master_map) - AM_RANGE(0x00000000, 0x000fffff) AM_MIRROR(0xfc700000) AM_RAM AM_SHARE("master_videoram") - AM_RANGE(0x00800000, 0x00bfffff) AM_MIRROR(0xfc400000) AM_RAM - AM_RANGE(0x01000000, 0x013fffff) AM_MIRROR(0xfc000000) AM_READWRITE(exterm_host_data_r, exterm_host_data_w) - AM_RANGE(0x01400000, 0x0143ffff) AM_MIRROR(0xfc000000) AM_READ(exterm_input_port_0_r) - AM_RANGE(0x01440000, 0x0147ffff) AM_MIRROR(0xfc000000) AM_READ(exterm_input_port_1_r) - AM_RANGE(0x01480000, 0x014bffff) AM_MIRROR(0xfc000000) AM_READ_PORT("DSW") - AM_RANGE(0x01500000, 0x0153ffff) AM_MIRROR(0xfc000000) AM_WRITE(exterm_output_port_0_w) - AM_RANGE(0x01580000, 0x015bffff) AM_MIRROR(0xfc000000) AM_WRITE8(sound_latch_w, 0x00ff) - AM_RANGE(0x015c0000, 0x015fffff) AM_MIRROR(0xfc000000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x01800000, 0x01807fff) AM_MIRROR(0xfc7f8000) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x02800000, 0x02807fff) AM_MIRROR(0xfc7f8000) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x03000000, 0x03ffffff) AM_MIRROR(0xfc000000) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exterm_state::slave_map) - AM_RANGE(0x00000000, 0x000fffff) AM_MIRROR(0xfbf00000) AM_RAM AM_SHARE("slave_videoram") - AM_RANGE(0x04000000, 0x047fffff) AM_MIRROR(0xfb800000) AM_RAM - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("slave", tms34010_device, io_register_r, io_register_w) -ADDRESS_MAP_END +void exterm_state::master_map(address_map &map) +{ + map(0x00000000, 0x000fffff).mirror(0xfc700000).ram().share("master_videoram"); + map(0x00800000, 0x00bfffff).mirror(0xfc400000).ram(); + map(0x01000000, 0x013fffff).mirror(0xfc000000).rw(this, FUNC(exterm_state::exterm_host_data_r), FUNC(exterm_state::exterm_host_data_w)); + map(0x01400000, 0x0143ffff).mirror(0xfc000000).r(this, FUNC(exterm_state::exterm_input_port_0_r)); + map(0x01440000, 0x0147ffff).mirror(0xfc000000).r(this, FUNC(exterm_state::exterm_input_port_1_r)); + map(0x01480000, 0x014bffff).mirror(0xfc000000).portr("DSW"); + map(0x01500000, 0x0153ffff).mirror(0xfc000000).w(this, FUNC(exterm_state::exterm_output_port_0_w)); + map(0x01580000, 0x015bffff).mirror(0xfc000000).w(this, FUNC(exterm_state::sound_latch_w)).umask16(0x00ff); + map(0x015c0000, 0x015fffff).mirror(0xfc000000).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x01800000, 0x01807fff).mirror(0xfc7f8000).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x02800000, 0x02807fff).mirror(0xfc7f8000).ram().share("nvram"); + map(0x03000000, 0x03ffffff).mirror(0xfc000000).rom().region("user1", 0); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); +} + + +void exterm_state::slave_map(address_map &map) +{ + map(0x00000000, 0x000fffff).mirror(0xfbf00000).ram().share("slave_videoram"); + map(0x04000000, 0x047fffff).mirror(0xfb800000).ram(); + map(0xc0000000, 0xc00001ff).rw(m_slave, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); +} @@ -285,25 +287,27 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(exterm_state::sound_master_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_WRITE(ym2151_data_latch_w) - AM_RANGE(0x6000, 0x67ff) AM_WRITE(sound_nmi_rate_w) - AM_RANGE(0x6800, 0x6fff) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) - AM_RANGE(0x7000, 0x77ff) AM_READ(sound_nmi_to_slave_r) +void exterm_state::sound_master_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0x4000, 0x5fff).w(this, FUNC(exterm_state::ym2151_data_latch_w)); + map(0x6000, 0x67ff).w(this, FUNC(exterm_state::sound_nmi_rate_w)); + map(0x6800, 0x6fff).r("soundlatch1", FUNC(generic_latch_8_device::read)); + map(0x7000, 0x77ff).r(this, FUNC(exterm_state::sound_nmi_to_slave_r)); /* AM_RANGE(0x7800, 0x7fff) unknown - to S4-13 */ - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_WRITE(sound_control_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(exterm_state::sound_slave_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x3800) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x3ffe) AM_DEVWRITE("dacvol", dac_byte_interface, write) - AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x3ffe) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END + map(0x8000, 0xffff).rom(); + map(0xa000, 0xbfff).w(this, FUNC(exterm_state::sound_control_w)); +} + + +void exterm_state::sound_slave_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x3800).ram(); + map(0x4000, 0x5fff).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); + map(0x8000, 0x8000).mirror(0x3ffe).w("dacvol", FUNC(dac_byte_interface::write)); + map(0x8001, 0x8001).mirror(0x3ffe).w("dac", FUNC(dac_byte_interface::write)); +} diff --git a/src/mame/drivers/extrema.cpp b/src/mame/drivers/extrema.cpp index 2eb3472ce65..73ba1b3fad4 100644 --- a/src/mame/drivers/extrema.cpp +++ b/src/mame/drivers/extrema.cpp @@ -32,14 +32,16 @@ public: -ADDRESS_MAP_START(extrema_state::extrema_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void extrema_state::extrema_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} -ADDRESS_MAP_START(extrema_state::extrema_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void extrema_state::extrema_portmap(address_map &map) +{ + map.global_mask(0xff); +} static INPUT_PORTS_START( extrema ) diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp index 00118d1717c..08b123be666 100644 --- a/src/mame/drivers/exzisus.cpp +++ b/src/mame/drivers/exzisus.cpp @@ -100,51 +100,55 @@ DRIVER_INIT_MEMBER(exzisus_state,exzisus) **************************************************************************/ -ADDRESS_MAP_START(exzisus_state::cpua_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpuabank") - AM_RANGE(0xc000, 0xc5ff) AM_RAM AM_SHARE("objectram1") - AM_RANGE(0xc600, 0xdfff) AM_RAM AM_SHARE("videoram1") - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("sharedram_ac") - AM_RANGE(0xf400, 0xf400) AM_WRITE(cpua_bankswitch_w) - AM_RANGE(0xf404, 0xf404) AM_WRITE(cpub_reset_w) // ?? - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("sharedram_ab") -ADDRESS_MAP_END - -ADDRESS_MAP_START(exzisus_state::cpub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubbank") - AM_RANGE(0xc000, 0xc5ff) AM_RAM AM_SHARE("objectram0") - AM_RANGE(0xc600, 0xdfff) AM_RAM AM_SHARE("videoram0") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w) - AM_RANGE(0xf001, 0xf001) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w) - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("P1") - AM_RANGE(0xf400, 0xf400) AM_WRITE(cpub_bankswitch_w) - AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P2") - AM_RANGE(0xf402, 0xf402) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf402, 0xf402) AM_WRITE(coincounter_w) - AM_RANGE(0xf404, 0xf404) AM_READ_PORT("DSWA") - AM_RANGE(0xf404, 0xf404) AM_WRITENOP // ?? - AM_RANGE(0xf405, 0xf405) AM_READ_PORT("DSWB") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("sharedram_ab") -ADDRESS_MAP_END - -ADDRESS_MAP_START(exzisus_state::cpuc_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x85ff) AM_RAM AM_SHARE("objectram1") - AM_RANGE(0x8600, 0x9fff) AM_RAM AM_SHARE("videoram1") - AM_RANGE(0xa000, 0xafff) AM_RAM AM_SHARE("sharedram_ac") - AM_RANGE(0xb000, 0xbfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(exzisus_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) -ADDRESS_MAP_END +void exzisus_state::cpua_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("cpuabank"); + map(0xc000, 0xc5ff).ram().share("objectram1"); + map(0xc600, 0xdfff).ram().share("videoram1"); + map(0xe000, 0xefff).ram().share("sharedram_ac"); + map(0xf400, 0xf400).w(this, FUNC(exzisus_state::cpua_bankswitch_w)); + map(0xf404, 0xf404).w(this, FUNC(exzisus_state::cpub_reset_w)); // ?? + map(0xf800, 0xffff).ram().share("sharedram_ab"); +} + +void exzisus_state::cpub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("cpubbank"); + map(0xc000, 0xc5ff).ram().share("objectram0"); + map(0xc600, 0xdfff).ram().share("videoram0"); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xf000).nopr().w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xf001, 0xf001).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xf400, 0xf400).portr("P1"); + map(0xf400, 0xf400).w(this, FUNC(exzisus_state::cpub_bankswitch_w)); + map(0xf401, 0xf401).portr("P2"); + map(0xf402, 0xf402).portr("SYSTEM"); + map(0xf402, 0xf402).w(this, FUNC(exzisus_state::coincounter_w)); + map(0xf404, 0xf404).portr("DSWA"); + map(0xf404, 0xf404).nopw(); // ?? + map(0xf405, 0xf405).portr("DSWB"); + map(0xf800, 0xffff).ram().share("sharedram_ab"); +} + +void exzisus_state::cpuc_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x85ff).ram().share("objectram1"); + map(0x8600, 0x9fff).ram().share("videoram1"); + map(0xa000, 0xafff).ram().share("sharedram_ac"); + map(0xb000, 0xbfff).ram(); +} + +void exzisus_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/ez2d.cpp b/src/mame/drivers/ez2d.cpp index 0cb5fc7a219..bb3464ff7e0 100644 --- a/src/mame/drivers/ez2d.cpp +++ b/src/mame/drivers/ez2d.cpp @@ -69,8 +69,9 @@ uint32_t ez2d_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, return 0; } -ADDRESS_MAP_START(ez2d_state::ez2d_map) -ADDRESS_MAP_END +void ez2d_state::ez2d_map(address_map &map) +{ +} static INPUT_PORTS_START( ez2d ) INPUT_PORTS_END diff --git a/src/mame/drivers/f-32.cpp b/src/mame/drivers/f-32.cpp index e82ab423f88..6e2229a9d9e 100644 --- a/src/mame/drivers/f-32.cpp +++ b/src/mame/drivers/f-32.cpp @@ -82,12 +82,13 @@ uint32_t mosaicf2_state::screen_update_mosaicf2(screen_device &screen, bitmap_in -ADDRESS_MAP_START(mosaicf2_state::common_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM - AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x80000000, 0x80ffffff) AM_ROM AM_REGION("user2",0) - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END +void mosaicf2_state::common_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram(); + map(0x40000000, 0x4003ffff).ram().share("videoram"); + map(0x80000000, 0x80ffffff).rom().region("user2", 0); + map(0xfff00000, 0xffffffff).rom().region("user1", 0); +} READ32_MEMBER(mosaicf2_state::f32_input_port_1_r) { @@ -101,19 +102,20 @@ READ32_MEMBER(mosaicf2_state::f32_input_port_1_r) } -ADDRESS_MAP_START(mosaicf2_state::mosaicf2_io) - AM_RANGE(0x4000, 0x4003) AM_DEVREAD8("oki", okim6295_device, read, 0x000000ff) - AM_RANGE(0x4810, 0x4813) AM_DEVREAD8("ymsnd", ym2151_device, status_r, 0x000000ff) - AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1") - AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r) - AM_RANGE(0x5400, 0x5403) AM_READ_PORT("EEPROMIN") - AM_RANGE(0x6000, 0x6003) AM_DEVWRITE8("oki", okim6295_device, write, 0x000000ff) - AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8("ymsnd", ym2151_device, data_w, 0x000000ff) - AM_RANGE(0x6810, 0x6813) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x000000ff) - AM_RANGE(0x7000, 0x7003) AM_WRITE_PORT("EEPROMCLK") - AM_RANGE(0x7200, 0x7203) AM_WRITE_PORT("EEPROMCS") - AM_RANGE(0x7400, 0x7403) AM_WRITE_PORT("EEPROMOUT") -ADDRESS_MAP_END +void mosaicf2_state::mosaicf2_io(address_map &map) +{ + map(0x4003, 0x4003).r("oki", FUNC(okim6295_device::read)); + map(0x4813, 0x4813).r("ymsnd", FUNC(ym2151_device::status_r)); + map(0x5000, 0x5003).portr("P1"); + map(0x5200, 0x5203).r(this, FUNC(mosaicf2_state::f32_input_port_1_r)); + map(0x5400, 0x5403).portr("EEPROMIN"); + map(0x6003, 0x6003).w("oki", FUNC(okim6295_device::write)); + map(0x6803, 0x6803).w("ymsnd", FUNC(ym2151_device::data_w)); + map(0x6813, 0x6813).w("ymsnd", FUNC(ym2151_device::register_w)); + map(0x7000, 0x7003).portw("EEPROMCLK"); + map(0x7200, 0x7203).portw("EEPROMCS"); + map(0x7400, 0x7403).portw("EEPROMOUT"); +} static INPUT_PORTS_START( mosaicf2 ) @@ -221,22 +223,24 @@ INPUT_PORTS_END -ADDRESS_MAP_START(mosaicf2_state::royalpk2_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM - AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x80000000, 0x807fffff) AM_ROM AM_REGION("user2",0) - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END +void mosaicf2_state::royalpk2_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram(); + map(0x40000000, 0x4003ffff).ram().share("videoram"); + map(0x80000000, 0x807fffff).rom().region("user2", 0); + map(0xfff00000, 0xffffffff).rom().region("user1", 0); +} -ADDRESS_MAP_START(mosaicf2_state::royalpk2_io) - AM_RANGE(0x4900, 0x4903) AM_READ_PORT("SYSTEM_P2") +void mosaicf2_state::royalpk2_io(address_map &map) +{ + map(0x4900, 0x4903).portr("SYSTEM_P2"); - AM_RANGE(0x4a00, 0x4a03) AM_READ_PORT("EEPROMIN") + map(0x4a00, 0x4a03).portr("EEPROMIN"); - AM_RANGE(0x6800, 0x6803) AM_WRITE_PORT("EEPROMCLK") - AM_RANGE(0x6900, 0x6903) AM_WRITE_PORT("EEPROMCS") - AM_RANGE(0x6a00, 0x6a03) AM_WRITE_PORT("EEPROMOUT") -ADDRESS_MAP_END + map(0x6800, 0x6803).portw("EEPROMCLK"); + map(0x6900, 0x6903).portw("EEPROMCS"); + map(0x6a00, 0x6a03).portw("EEPROMOUT"); +} MACHINE_CONFIG_START(mosaicf2_state::royalpk2) diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp index ed900364a8e..0f6658a79cb 100644 --- a/src/mame/drivers/f1gp.cpp +++ b/src/mame/drivers/f1gp.cpp @@ -53,75 +53,80 @@ READ8_MEMBER(f1gp_state::command_pending_r) } -ADDRESS_MAP_START(f1gp_state::f1gp_cpu1_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w) - AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram") - AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */ - AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */ - AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */ - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE("spr1cgram") // SPR-1 CG RAM - AM_RANGE(0xe04000, 0xe07fff) AM_RAM AM_SHARE("spr2cgram") // SPR-2 CG RAM - AM_RANGE(0xf00000, 0xf003ff) AM_RAM AM_SHARE("spr1vram") // SPR-1 VRAM - AM_RANGE(0xf10000, 0xf103ff) AM_RAM AM_SHARE("spr2vram") // SPR-2 VRAM - AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1 - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") // DUAL RAM - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // PALETTE - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") - AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp_gfxctrl_w) +void f1gp_state::f1gp_cpu1_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x2fffff).rom().region("user1", 0); + map(0xa00000, 0xbfffff).rom().region("user2", 0); + map(0xc00000, 0xc3ffff).rw(this, FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w)); + map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram"); + map(0xd02000, 0xd03fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */ + map(0xd04000, 0xd05fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */ + map(0xd06000, 0xd07fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */ + map(0xe00000, 0xe03fff).ram().share("spr1cgram"); // SPR-1 CG RAM + map(0xe04000, 0xe07fff).ram().share("spr2cgram"); // SPR-2 CG RAM + map(0xf00000, 0xf003ff).ram().share("spr1vram"); // SPR-1 VRAM + map(0xf10000, 0xf103ff).ram().share("spr2vram"); // SPR-2 VRAM + map(0xff8000, 0xffbfff).ram(); // WORK RAM-1 + map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM + map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE + map(0xfff000, 0xfff001).portr("INPUTS"); + map(0xfff000, 0xfff001).w(this, FUNC(f1gp_state::f1gp_gfxctrl_w)); // AM_RANGE(0xfff002, 0xfff003) analog wheel? - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1") - AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w) - AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2") - AM_RANGE(0xfff008, 0xfff009) AM_READ8(command_pending_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) - AM_RANGE(0xfff040, 0xfff05f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) - AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(f1gp_state::f1gp2_cpu1_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_SHARE("sprcgram") // SPR-1 CG RAM + SPR-2 CG RAM - AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram") // BACK VRAM - AM_RANGE(0xe00000, 0xe00fff) AM_RAM AM_SHARE("spritelist") // not checked + SPR-1 VRAM + SPR-2 VRAM - AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1 - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") // DUAL RAM - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // PALETTE - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") AM_WRITE(f1gp2_gfxctrl_w) + map(0xfff004, 0xfff005).portr("DSW1"); + map(0xfff002, 0xfff005).w(this, FUNC(f1gp_state::f1gp_fgscroll_w)); + map(0xfff006, 0xfff007).portr("DSW2"); + map(0xfff009, 0xfff009).r(this, FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); + map(0xfff040, 0xfff05f).w(m_k053936, FUNC(k053936_device::ctrl_w)); + map(0xfff050, 0xfff051).portr("DSW3"); +} + +void f1gp_state::f1gp2_cpu1_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x2fffff).rom().region("user1", 0); + map(0xa00000, 0xa07fff).ram().share("sprcgram"); // SPR-1 CG RAM + SPR-2 CG RAM + map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram"); // BACK VRAM + map(0xe00000, 0xe00fff).ram().share("spritelist"); // not checked + SPR-1 VRAM + SPR-2 VRAM + map(0xff8000, 0xffbfff).ram(); // WORK RAM-1 + map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM + map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE + map(0xfff000, 0xfff001).portr("INPUTS").w(this, FUNC(f1gp_state::f1gp2_gfxctrl_w)); // AM_RANGE(0xfff002, 0xfff003) analog wheel? - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1") - AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2") - AM_RANGE(0xfff008, 0xfff009) AM_READ8(command_pending_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW3") - AM_RANGE(0xfff020, 0xfff03f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) - AM_RANGE(0xfff044, 0xfff047) AM_WRITE(f1gp_fgscroll_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(f1gp_state::f1gp_cpu2_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0xff8000, 0xffbfff) AM_RAM - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(f1gp_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(f1gp_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp - AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp2 - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END + map(0xfff004, 0xfff005).portr("DSW1"); + map(0xfff006, 0xfff007).portr("DSW2"); + map(0xfff009, 0xfff009).r(this, FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0xfff00a, 0xfff00b).portr("DSW3"); + map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w)); + map(0xfff044, 0xfff047).w(this, FUNC(f1gp_state::f1gp_fgscroll_w)); +} + +void f1gp_state::f1gp_cpu2_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0xff8000, 0xffbfff).ram(); + map(0xffc000, 0xffcfff).ram().share("sharedram"); + map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); +} + +void f1gp_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void f1gp_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp + map(0x0c, 0x0c).w(this, FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp2 + map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} WRITE16_MEMBER(f1gp_state::f1gpb_misc_w) { @@ -148,44 +153,46 @@ WRITE16_MEMBER(f1gp_state::f1gpb_misc_w) */ } -ADDRESS_MAP_START(f1gp_state::f1gpb_cpu1_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x800000, 0x801fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w) - AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram") - AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */ - AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */ - AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */ - AM_RANGE(0xe00000, 0xe03fff) AM_RAM //unused - AM_RANGE(0xe04000, 0xe07fff) AM_RAM //unused - AM_RANGE(0xf00000, 0xf003ff) AM_RAM //unused - AM_RANGE(0xf10000, 0xf103ff) AM_RAM //unused - AM_RANGE(0xff8000, 0xffbfff) AM_RAM - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1") - AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2") - AM_RANGE(0xfff008, 0xfff009) AM_READNOP //? - AM_RANGE(0xfff006, 0xfff007) AM_WRITENOP - AM_RANGE(0xfff00a, 0xfff00b) AM_RAM AM_SHARE("fgregs") - AM_RANGE(0xfff00e, 0xfff00f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xfff00c, 0xfff00d) AM_WRITE(f1gpb_misc_w) - AM_RANGE(0xfff010, 0xfff011) AM_WRITENOP - AM_RANGE(0xfff020, 0xfff023) AM_WRITENOP // GGA access - AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3") - AM_RANGE(0xfff800, 0xfff809) AM_RAM AM_SHARE("rozregs") -ADDRESS_MAP_END - -ADDRESS_MAP_START(f1gp_state::f1gpb_cpu2_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0xff8000, 0xffbfff) AM_RAM - AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff) -ADDRESS_MAP_END +void f1gp_state::f1gpb_cpu1_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x2fffff).rom().region("user1", 0); + map(0xa00000, 0xbfffff).rom().region("user2", 0); + map(0x800000, 0x801fff).ram().share("spriteram"); + map(0xc00000, 0xc3ffff).rw(this, FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w)); + map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram"); + map(0xd02000, 0xd03fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */ + map(0xd04000, 0xd05fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */ + map(0xd06000, 0xd07fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */ + map(0xe00000, 0xe03fff).ram(); //unused + map(0xe04000, 0xe07fff).ram(); //unused + map(0xf00000, 0xf003ff).ram(); //unused + map(0xf10000, 0xf103ff).ram(); //unused + map(0xff8000, 0xffbfff).ram(); + map(0xffc000, 0xffcfff).ram().share("sharedram"); + map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("INPUTS"); + map(0xfff004, 0xfff005).portr("DSW1"); + map(0xfff006, 0xfff007).portr("DSW2"); + map(0xfff008, 0xfff009).nopr(); //? + map(0xfff006, 0xfff007).nopw(); + map(0xfff00a, 0xfff00b).ram().share("fgregs"); + map(0xfff00f, 0xfff00f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xfff00c, 0xfff00d).w(this, FUNC(f1gp_state::f1gpb_misc_w)); + map(0xfff010, 0xfff011).nopw(); + map(0xfff020, 0xfff023).nopw(); // GGA access + map(0xfff050, 0xfff051).portr("DSW3"); + map(0xfff800, 0xfff809).ram().share("rozregs"); +} + +void f1gp_state::f1gpb_cpu2_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0xff8000, 0xffbfff).ram(); + map(0xffc000, 0xffcfff).ram().share("sharedram"); + map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); +} static INPUT_PORTS_START( f1gp ) PORT_START("INPUTS") diff --git a/src/mame/drivers/famibox.cpp b/src/mame/drivers/famibox.cpp index 22db44c74b7..6df5adee03e 100644 --- a/src/mame/drivers/famibox.cpp +++ b/src/mame/drivers/famibox.cpp @@ -376,17 +376,18 @@ WRITE8_MEMBER(famibox_state::famibox_system_w) *******************************************************/ -ADDRESS_MAP_START(famibox_state::famibox_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(famibox_IN0_r, famibox_IN0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(famibox_IN1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x5000, 0x5fff) AM_READWRITE(famibox_system_r, famibox_system_w) - AM_RANGE(0x6000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubank1") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("cpubank2") -ADDRESS_MAP_END +void famibox_state::famibox_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(famibox_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(famibox_state::famibox_IN0_r), FUNC(famibox_state::famibox_IN0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(famibox_state::famibox_IN1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x5000, 0x5fff).rw(this, FUNC(famibox_state::famibox_system_r), FUNC(famibox_state::famibox_system_w)); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0xbfff).bankr("cpubank1"); + map(0xc000, 0xffff).bankr("cpubank2"); +} /****************************************************** diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp index 11ff1d1abd6..91fb7102fdc 100644 --- a/src/mame/drivers/fantland.cpp +++ b/src/mame/drivers/fantland.cpp @@ -124,43 +124,45 @@ WRITE16_MEMBER(fantland_state::spriteram2_16_w) spriteram_2[2 * offset + 1] = data >> 8; } -ADDRESS_MAP_START(fantland_state::fantland_map) - AM_RANGE( 0x00000, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x7ffff ) AM_ROM +void fantland_state::fantland_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x08000, 0x7ffff).rom(); - AM_RANGE( 0xa2000, 0xa21ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0xa2000, 0xa21ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE( 0xa3000, 0xa3001 ) AM_READ_PORT("a3000") AM_WRITE(fantland_nmi_enable_16_w ) - AM_RANGE( 0xa3002, 0xa3003 ) AM_READ_PORT("a3002") AM_WRITE(fantland_soundlatch_16_w ) + map(0xa3000, 0xa3001).portr("a3000").w(this, FUNC(fantland_state::fantland_nmi_enable_16_w)); + map(0xa3002, 0xa3003).portr("a3002").w(this, FUNC(fantland_state::fantland_soundlatch_16_w)); - AM_RANGE( 0xa4000, 0xa67ff ) AM_READWRITE(spriteram_16_r, spriteram_16_w ) AM_SHARE("spriteram") - AM_RANGE( 0xc0000, 0xcffff ) AM_READWRITE(spriteram2_16_r, spriteram2_16_w ) AM_SHARE("spriteram2") + map(0xa4000, 0xa67ff).rw(this, FUNC(fantland_state::spriteram_16_r), FUNC(fantland_state::spriteram_16_w)).share("spriteram"); + map(0xc0000, 0xcffff).rw(this, FUNC(fantland_state::spriteram2_16_r), FUNC(fantland_state::spriteram2_16_w)).share("spriteram2"); - AM_RANGE( 0xe0000, 0xfffff ) AM_ROM -ADDRESS_MAP_END + map(0xe0000, 0xfffff).rom(); +} /*************************************************************************** Galaxy Gunners ***************************************************************************/ -ADDRESS_MAP_START(fantland_state::galaxygn_map) - AM_RANGE( 0x00000, 0x07fff ) AM_RAM - AM_RANGE( 0x10000, 0x2ffff ) AM_ROM +void fantland_state::galaxygn_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x10000, 0x2ffff).rom(); - AM_RANGE( 0x52000, 0x521ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0x52000, 0x521ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE( 0x53000, 0x53000 ) AM_READ_PORT("P1") AM_WRITE(fantland_nmi_enable_w ) - AM_RANGE( 0x53001, 0x53001 ) AM_READ_PORT("P2") - AM_RANGE( 0x53002, 0x53002 ) AM_READ_PORT("DSW1") AM_WRITE(fantland_soundlatch_w ) - AM_RANGE( 0x53003, 0x53003 ) AM_READ_PORT("DSW2") + map(0x53000, 0x53000).portr("P1").w(this, FUNC(fantland_state::fantland_nmi_enable_w)); + map(0x53001, 0x53001).portr("P2"); + map(0x53002, 0x53002).portr("DSW1").w(this, FUNC(fantland_state::fantland_soundlatch_w)); + map(0x53003, 0x53003).portr("DSW2"); - AM_RANGE( 0x54000, 0x567ff ) AM_RAM AM_SHARE("spriteram") - AM_RANGE( 0x60000, 0x6ffff ) AM_RAM AM_SHARE("spriteram2") + map(0x54000, 0x567ff).ram().share("spriteram"); + map(0x60000, 0x6ffff).ram().share("spriteram2"); - AM_RANGE( 0x70000, 0x7ffff ) AM_ROM - AM_RANGE( 0xf0000, 0xfffff ) AM_ROM -ADDRESS_MAP_END + map(0x70000, 0x7ffff).rom(); + map(0xf0000, 0xfffff).rom(); +} /*************************************************************************** @@ -236,51 +238,53 @@ READ8_MEMBER(fantland_state::borntofi_inputs_r) return m_input_ret[offset]; } -ADDRESS_MAP_START(fantland_state::borntofi_map) - AM_RANGE( 0x00000, 0x07fff ) AM_RAM - AM_RANGE( 0x10000, 0x2ffff ) AM_ROM +void fantland_state::borntofi_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x10000, 0x2ffff).rom(); - AM_RANGE( 0x52000, 0x521ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE( 0x53000, 0x53001 ) AM_READWRITE(borntofi_inputs_r, borntofi_nmi_enable_w ) - AM_RANGE( 0x53002, 0x53002 ) AM_READ_PORT( "DSW" ) AM_WRITE(fantland_soundlatch_w ) - AM_RANGE( 0x53003, 0x53003 ) AM_READ_PORT( "Controls" ) + map(0x52000, 0x521ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x53000, 0x53001).rw(this, FUNC(fantland_state::borntofi_inputs_r), FUNC(fantland_state::borntofi_nmi_enable_w)); + map(0x53002, 0x53002).portr("DSW").w(this, FUNC(fantland_state::fantland_soundlatch_w)); + map(0x53003, 0x53003).portr("Controls"); - AM_RANGE( 0x54000, 0x567ff ) AM_RAM AM_SHARE("spriteram") + map(0x54000, 0x567ff).ram().share("spriteram"); - AM_RANGE( 0x57000, 0x57000 ) AM_READ_PORT( "P1 Lightgun Y" ) - AM_RANGE( 0x57001, 0x57001 ) AM_READ_PORT( "P1 Lightgun X" ) - AM_RANGE( 0x57002, 0x57002 ) AM_READ_PORT( "P2 Lightgun Y" ) - AM_RANGE( 0x57003, 0x57003 ) AM_READ_PORT( "P2 Lightgun X" ) + map(0x57000, 0x57000).portr("P1 Lightgun Y"); + map(0x57001, 0x57001).portr("P1 Lightgun X"); + map(0x57002, 0x57002).portr("P2 Lightgun Y"); + map(0x57003, 0x57003).portr("P2 Lightgun X"); - AM_RANGE( 0x60000, 0x6ffff ) AM_RAM AM_SHARE("spriteram2") + map(0x60000, 0x6ffff).ram().share("spriteram2"); - AM_RANGE( 0x70000, 0x7ffff ) AM_ROM - AM_RANGE( 0xf0000, 0xfffff ) AM_ROM -ADDRESS_MAP_END + map(0x70000, 0x7ffff).rom(); + map(0xf0000, 0xfffff).rom(); +} /*************************************************************************** Wheels Runner ***************************************************************************/ -ADDRESS_MAP_START(fantland_state::wheelrun_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM +void fantland_state::wheelrun_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); - AM_RANGE(0x30000, 0x3ffff) AM_ROM - AM_RANGE(0x70000, 0x7ffff) AM_ROM + map(0x30000, 0x3ffff).rom(); + map(0x70000, 0x7ffff).rom(); - AM_RANGE(0x52000, 0x521ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0x52000, 0x521ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE(0x53000, 0x53000) AM_READ_PORT( "53000" ) AM_WRITE(borntofi_nmi_enable_w ) - AM_RANGE(0x53001, 0x53001) AM_READ_PORT( "53001" ) - AM_RANGE(0x53002, 0x53002) AM_READ_PORT( "53002" ) AM_WRITE(fantland_soundlatch_w ) - AM_RANGE(0x53003, 0x53003) AM_READ_PORT( "53003" ) AM_WRITENOP + map(0x53000, 0x53000).portr("53000").w(this, FUNC(fantland_state::borntofi_nmi_enable_w)); + map(0x53001, 0x53001).portr("53001"); + map(0x53002, 0x53002).portr("53002").w(this, FUNC(fantland_state::fantland_soundlatch_w)); + map(0x53003, 0x53003).portr("53003").nopw(); - AM_RANGE(0x54000, 0x567ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x60000, 0x6ffff) AM_RAM AM_SHARE("spriteram2") + map(0x54000, 0x567ff).ram().share("spriteram"); + map(0x60000, 0x6ffff).ram().share("spriteram2"); - AM_RANGE(0xf0000, 0xfffff) AM_ROM -ADDRESS_MAP_END + map(0xf0000, 0xfffff).rom(); +} @@ -290,22 +294,25 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(fantland_state::fantland_sound_map) - AM_RANGE( 0x00000, 0x01fff ) AM_RAM - AM_RANGE( 0x80000, 0x9ffff ) AM_ROM - AM_RANGE( 0xc0000, 0xfffff ) AM_ROM -ADDRESS_MAP_END +void fantland_state::fantland_sound_map(address_map &map) +{ + map(0x00000, 0x01fff).ram(); + map(0x80000, 0x9ffff).rom(); + map(0xc0000, 0xfffff).rom(); +} -ADDRESS_MAP_START(fantland_state::fantland_sound_iomap) - AM_RANGE( 0x0080, 0x0080 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE( 0x0180, 0x0180 ) AM_DEVWRITE("dac", dac_byte_interface, write ) -ADDRESS_MAP_END +void fantland_state::fantland_sound_iomap(address_map &map) +{ + map(0x0080, 0x0080).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0100, 0x0101).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x0180, 0x0180).w("dac", FUNC(dac_byte_interface::write)); +} -ADDRESS_MAP_START(fantland_state::galaxygn_sound_iomap) - AM_RANGE( 0x0080, 0x0080 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE( 0x0100, 0x0101 ) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) -ADDRESS_MAP_END +void fantland_state::galaxygn_sound_iomap(address_map &map) +{ + map(0x0080, 0x0080).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0100, 0x0101).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); +} /*************************************************************************** @@ -400,29 +407,31 @@ WRITE_LINE_MEMBER(fantland_state::borntofi_adpcm_int_2) { borntofi_adpcm_int(m_m WRITE_LINE_MEMBER(fantland_state::borntofi_adpcm_int_3) { borntofi_adpcm_int(m_msm4, 3); } -ADDRESS_MAP_START(fantland_state::borntofi_sound_map) - AM_RANGE( 0x00000, 0x003ff ) AM_RAM - AM_RANGE( 0x04000, 0x04000 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE( 0x04000, 0x0401f ) AM_WRITE(borntofi_msm5205_w) - AM_RANGE( 0x08000, 0x0ffff ) AM_ROM - AM_RANGE( 0xf8000, 0xfffff ) AM_ROM -ADDRESS_MAP_END +void fantland_state::borntofi_sound_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); + map(0x04000, 0x04000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04000, 0x0401f).w(this, FUNC(fantland_state::borntofi_msm5205_w)); + map(0x08000, 0x0ffff).rom(); + map(0xf8000, 0xfffff).rom(); +} /*************************************************************************** Wheels Runner ***************************************************************************/ -ADDRESS_MAP_START(fantland_state::wheelrun_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write) +void fantland_state::wheelrun_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); - AM_RANGE(0xb000, 0xb000) AM_WRITENOP // on a car crash / hit - AM_RANGE(0xc000, 0xc000) AM_WRITENOP // "" + map(0xb000, 0xb000).nopw(); // on a car crash / hit + map(0xc000, 0xc000).nopw(); // "" - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // during NMI -ADDRESS_MAP_END + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // during NMI +} diff --git a/src/mame/drivers/fanucs15.cpp b/src/mame/drivers/fanucs15.cpp index 61cba533231..a219255f572 100644 --- a/src/mame/drivers/fanucs15.cpp +++ b/src/mame/drivers/fanucs15.cpp @@ -333,28 +333,32 @@ private: virtual void machine_reset() override; }; -ADDRESS_MAP_START(fanucs15_state::maincpu_mem) - AM_RANGE(0x00000000, 0x0017ffff) AM_ROM AM_REGION("base1b", 0) - AM_RANGE(0x000f8000, 0x000fffff) AM_RAM // filled with 0x96 on boot - AM_RANGE(0xffff0000, 0xffffffff) AM_RAM // initial stack -ADDRESS_MAP_END - -ADDRESS_MAP_START(fanucs15_state::pmccpu_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("base1a", 0) - AM_RANGE(0xfde000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fanucs15_state::gfxcpu_mem) - AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_REGION("gfxboard", 0) - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fanucs15_state::convcpu_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("conversational", 0x40000) - AM_RANGE(0x040000, 0x07ffff) AM_ROM AM_REGION("conversational", 0) - AM_RANGE(0x800000, 0x87ffff) AM_RAM - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("conversational", 0) -ADDRESS_MAP_END +void fanucs15_state::maincpu_mem(address_map &map) +{ + map(0x00000000, 0x0017ffff).rom().region("base1b", 0); + map(0x000f8000, 0x000fffff).ram(); // filled with 0x96 on boot + map(0xffff0000, 0xffffffff).ram(); // initial stack +} + +void fanucs15_state::pmccpu_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("base1a", 0); + map(0xfde000, 0xffffff).ram(); +} + +void fanucs15_state::gfxcpu_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom().region("gfxboard", 0); + map(0xfe0000, 0xfeffff).ram(); +} + +void fanucs15_state::convcpu_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("conversational", 0x40000); + map(0x040000, 0x07ffff).rom().region("conversational", 0); + map(0x800000, 0x87ffff).ram(); + map(0xf80000, 0xffffff).rom().region("conversational", 0); +} /* Input ports */ static INPUT_PORTS_START( fanucs15 ) diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp index 98c780fcd36..4af42b30450 100644 --- a/src/mame/drivers/fanucspmg.cpp +++ b/src/mame/drivers/fanucspmg.cpp @@ -716,35 +716,37 @@ READ16_MEMBER(fanucspmg_state::magic_r) return 0x0041; // 31 = memory error } -ADDRESS_MAP_START(fanucspmg_state::maincpu_mem) - AM_RANGE(0x00000, 0x7ffff) AM_RAM // main RAM - - AM_RANGE(0x80000, 0x81fff) AM_RAM // believed to be shared RAM with a CPU inside the Program File - AM_RANGE(0x88000, 0x88001) AM_NOP // Program File "ready" bit - - AM_RANGE(0xf0000, 0xf0003) AM_DEVREADWRITE8(PIC0_TAG, pic8259_device, read, write, 0x00ff) - AM_RANGE(0xf0004, 0xf0007) AM_DEVICE8(FDC_TAG, upd765a_device, map, 0x00ff) - AM_RANGE(0xf0008, 0xf000f) AM_DEVREADWRITE8(PIT0_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0xf0010, 0xf0011) AM_DEVREADWRITE8(USART0_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf0012, 0xf0013) AM_DEVREADWRITE8(USART0_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xf0014, 0xf0015) AM_DEVREADWRITE8(USART1_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf0016, 0xf0017) AM_DEVREADWRITE8(USART1_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xf0018, 0xf0019) AM_DEVREADWRITE8(USART2_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf001a, 0xf001b) AM_DEVREADWRITE8(USART2_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xf001c, 0xf001d) AM_DEVREADWRITE8(USART3_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf001e, 0xf001f) AM_DEVREADWRITE8(USART3_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xf0020, 0xf0029) AM_DEVREADWRITE8(DMAC_TAG, i8257_device, read, write, 0xffff) - AM_RANGE(0xf0042, 0xf0043) AM_READ(magic_r) - AM_RANGE(0xf0046, 0xf0047) AM_WRITE8(dma_page_w, 0x00ff) - AM_RANGE(0xf0048, 0xf004f) AM_DEVREADWRITE8(PIT1_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0xf2000, 0xf2003) AM_DEVREADWRITE8(PIC1_TAG, pic8259_device, read, write, 0x00ff) - - AM_RANGE(0xf8000, 0xf9fff) AM_READWRITE8(shared_r, shared_w, 0xffff) - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(MAINCPU_TAG, 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fanucspmg_state::maincpu_io) -ADDRESS_MAP_END +void fanucspmg_state::maincpu_mem(address_map &map) +{ + map(0x00000, 0x7ffff).ram(); // main RAM + + map(0x80000, 0x81fff).ram(); // believed to be shared RAM with a CPU inside the Program File + map(0x88000, 0x88001).noprw(); // Program File "ready" bit + + map(0xf0000, 0xf0003).rw(m_pic0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0xf0004, 0xf0007).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); + map(0xf0008, 0xf000f).rw(m_pit0, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xf0010, 0xf0010).rw(m_usart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf0012, 0xf0012).rw(m_usart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf0014, 0xf0014).rw(m_usart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf0016, 0xf0016).rw(m_usart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf0018, 0xf0018).rw(m_usart2, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf001a, 0xf001a).rw(m_usart2, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf001c, 0xf001c).rw(m_usart3, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf001e, 0xf001e).rw(m_usart3, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf0020, 0xf0029).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0xf0042, 0xf0043).r(this, FUNC(fanucspmg_state::magic_r)); + map(0xf0046, 0xf0046).w(this, FUNC(fanucspmg_state::dma_page_w)); + map(0xf0048, 0xf004f).rw(m_pit1, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xf2000, 0xf2003).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + + map(0xf8000, 0xf9fff).rw(this, FUNC(fanucspmg_state::shared_r), FUNC(fanucspmg_state::shared_w)); + map(0xfc000, 0xfffff).rom().region(MAINCPU_TAG, 0); +} + +void fanucspmg_state::maincpu_io(address_map &map) +{ +} WRITE_LINE_MEMBER(fanucspmg_state::vsync_w) { @@ -817,24 +819,25 @@ WRITE8_MEMBER(fanucspmg_state::video_ctrl_w) m_video_ctrl = data; } -ADDRESS_MAP_START(fanucspmg_state::subcpu_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION(SUBCPU_TAG, 0) - - AM_RANGE(0x4000, 0x45ff) AM_READWRITE(vram1_r, vram1_w) - AM_RANGE(0x4800, 0x4dff) AM_READWRITE(vram2_r, vram2_w) - - AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE(CRTC_TAG, mc6845_device, status_r, address_w) - AM_RANGE(0x5001, 0x5001) AM_DEVREADWRITE(CRTC_TAG, mc6845_device, register_r, register_w) - AM_RANGE(0x5008, 0x5008) AM_WRITE(keyboard_row_w) - AM_RANGE(0x5009, 0x5009) AM_READ(keyboard_r) - AM_RANGE(0x500a, 0x500b) AM_WRITENOP // keyboard rows 2 and 3 control what's written here. dip switches? - AM_RANGE(0x500c, 0x500c) AM_WRITE(vbl_ctrl_w) - AM_RANGE(0x500d, 0x500d) AM_WRITE(vram_bank_w) - AM_RANGE(0x500e, 0x500e) AM_READ(vblank_ack_r) - AM_RANGE(0x5018, 0x5018) AM_WRITE(video_ctrl_w) - - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE(SHARED_TAG) // shared RAM -ADDRESS_MAP_END +void fanucspmg_state::subcpu_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom().region(SUBCPU_TAG, 0); + + map(0x4000, 0x45ff).rw(this, FUNC(fanucspmg_state::vram1_r), FUNC(fanucspmg_state::vram1_w)); + map(0x4800, 0x4dff).rw(this, FUNC(fanucspmg_state::vram2_r), FUNC(fanucspmg_state::vram2_w)); + + map(0x5000, 0x5000).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x5001, 0x5001).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x5008, 0x5008).w(this, FUNC(fanucspmg_state::keyboard_row_w)); + map(0x5009, 0x5009).r(this, FUNC(fanucspmg_state::keyboard_r)); + map(0x500a, 0x500b).nopw(); // keyboard rows 2 and 3 control what's written here. dip switches? + map(0x500c, 0x500c).w(this, FUNC(fanucspmg_state::vbl_ctrl_w)); + map(0x500d, 0x500d).w(this, FUNC(fanucspmg_state::vram_bank_w)); + map(0x500e, 0x500e).r(this, FUNC(fanucspmg_state::vblank_ack_r)); + map(0x5018, 0x5018).w(this, FUNC(fanucspmg_state::video_ctrl_w)); + + map(0xe000, 0xffff).ram().share(SHARED_TAG); // shared RAM +} /* Input ports */ static INPUT_PORTS_START( fanucspmg ) diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp index 5b4e58e1569..f9b9fe72ab4 100644 --- a/src/mame/drivers/fastfred.cpp +++ b/src/mame/drivers/fastfred.cpp @@ -187,69 +187,73 @@ WRITE8_MEMBER(fastfred_state::sound_nmi_mask_w) m_sound_nmi_mask = data & 1; } -ADDRESS_MAP_START(fastfred_state::fastfred_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_MIRROR(0x400) AM_RAM_WRITE(fastfred_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(fastfred_attributes_w) AM_SHARE("attributesram") - AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd860, 0xdbff) AM_RAM // Unused, but initialized - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("BUTTONS") AM_WRITEONLY AM_SHARE("bgcolor") - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("JOYS") - AM_RANGE(0xf000, 0xf007) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fastfred_state::jumpcoas_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd03f) AM_RAM_WRITE(fastfred_attributes_w) AM_SHARE("attributesram") - AM_RANGE(0xd040, 0xd05f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd060, 0xd3ff) AM_RAM - AM_RANGE(0xd800, 0xdbff) AM_MIRROR(0x400) AM_RAM_WRITE(fastfred_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe000) AM_WRITEONLY AM_SHARE("bgcolor") - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSW1") - AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSW2") - AM_RANGE(0xe802, 0xe802) AM_READ_PORT("BUTTONS") - AM_RANGE(0xe803, 0xe803) AM_READ_PORT("JOYS") - AM_RANGE(0xf000, 0xf007) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0) +void fastfred_state::fastfred_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd3ff).mirror(0x400).ram().w(this, FUNC(fastfred_state::fastfred_videoram_w)).share("videoram"); + map(0xd800, 0xd83f).ram().w(this, FUNC(fastfred_state::fastfred_attributes_w)).share("attributesram"); + map(0xd840, 0xd85f).ram().share("spriteram"); + map(0xd860, 0xdbff).ram(); // Unused, but initialized + map(0xe000, 0xe000).portr("BUTTONS").writeonly().share("bgcolor"); + map(0xe800, 0xe800).portr("JOYS"); + map(0xf000, 0xf007).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xf000, 0xf000).portr("DSW").nopw(); + map(0xf800, 0xf800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write)); +} + + +void fastfred_state::jumpcoas_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd03f).ram().w(this, FUNC(fastfred_state::fastfred_attributes_w)).share("attributesram"); + map(0xd040, 0xd05f).ram().share("spriteram"); + map(0xd060, 0xd3ff).ram(); + map(0xd800, 0xdbff).mirror(0x400).ram().w(this, FUNC(fastfred_state::fastfred_videoram_w)).share("videoram"); + map(0xe000, 0xe000).writeonly().share("bgcolor"); + map(0xe800, 0xe800).portr("DSW1"); + map(0xe801, 0xe801).portr("DSW2"); + map(0xe802, 0xe802).portr("BUTTONS"); + map(0xe803, 0xe803).portr("JOYS"); + map(0xf000, 0xf007).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0)); //AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) // Why doesn't this work??? - AM_RANGE(0xf800, 0xf801) AM_READNOP AM_DEVWRITE("ay8910.1", ay8910_device, address_data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fastfred_state::imago_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x1fff) AM_READ(imago_sprites_offset_r) - AM_RANGE(0x2000, 0x6fff) AM_ROM - AM_RANGE(0xb000, 0xb3ff) AM_RAM // same fg videoram (which one of the 2 is really used?) - AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(imago_sprites_dma_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(imago_fg_videoram_w) AM_SHARE("imago_fg_vram") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(fastfred_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(fastfred_attributes_w) AM_SHARE("attributesram") - AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd860, 0xd8ff) AM_RAM // Unused, but initialized - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("BUTTONS") - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("JOYS") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW") - AM_RANGE(0xf000, 0xf007) AM_MIRROR(0x03f8) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xf400, 0xf400) AM_WRITENOP // writes 0 or 2 - AM_RANGE(0xf401, 0xf401) AM_WRITE(imago_sprites_bank_w) - AM_RANGE(0xf800, 0xf800) AM_READNOP AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fastfred_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_nmi_mask_w) - AM_RANGE(0x4000, 0x4000) AM_WRITEONLY // Reset PSG's - AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay8910.1", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay8910.2", ay8910_device, address_data_w) - AM_RANGE(0x7000, 0x7000) AM_READNOP // only for Imago, read but not used -ADDRESS_MAP_END + map(0xf800, 0xf801).nopr().w("ay8910.1", FUNC(ay8910_device::address_data_w)); +} + + +void fastfred_state::imago_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x1fff).r(this, FUNC(fastfred_state::imago_sprites_offset_r)); + map(0x2000, 0x6fff).rom(); + map(0xb000, 0xb3ff).ram(); // same fg videoram (which one of the 2 is really used?) + map(0xb800, 0xbfff).ram().w(this, FUNC(fastfred_state::imago_sprites_dma_w)); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcbff).ram().w(this, FUNC(fastfred_state::imago_fg_videoram_w)).share("imago_fg_vram"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(fastfred_state::fastfred_videoram_w)).share("videoram"); + map(0xd800, 0xd83f).ram().w(this, FUNC(fastfred_state::fastfred_attributes_w)).share("attributesram"); + map(0xd840, 0xd85f).ram().share("spriteram"); + map(0xd860, 0xd8ff).ram(); // Unused, but initialized + map(0xe000, 0xe000).portr("BUTTONS"); + map(0xe800, 0xe800).portr("JOYS"); + map(0xf000, 0xf000).portr("DSW"); + map(0xf000, 0xf007).mirror(0x03f8).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xf400, 0xf400).nopw(); // writes 0 or 2 + map(0xf401, 0xf401).w(this, FUNC(fastfred_state::imago_sprites_bank_w)); + map(0xf800, 0xf800).nopr().w("soundlatch", FUNC(generic_latch_8_device::write)); +} + +void fastfred_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(fastfred_state::sound_nmi_mask_w)); + map(0x4000, 0x4000).writeonly(); // Reset PSG's + map(0x5000, 0x5001).w("ay8910.1", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).w("ay8910.2", FUNC(ay8910_device::address_data_w)); + map(0x7000, 0x7000).nopr(); // only for Imago, read but not used +} static INPUT_PORTS_START( common ) diff --git a/src/mame/drivers/fastinvaders.cpp b/src/mame/drivers/fastinvaders.cpp index 37bb256e017..f4325aa232e 100644 --- a/src/mame/drivers/fastinvaders.cpp +++ b/src/mame/drivers/fastinvaders.cpp @@ -508,59 +508,63 @@ logerror("dma write\n"); ***************************************************************************/ -ADDRESS_MAP_START(fastinvaders_state::fastinvaders_map) +void fastinvaders_state::fastinvaders_map(address_map &map) +{ //AM_RANGE(0x0000, 0x1fff) AM_ROM AM_MIRROR(0x8000) - AM_RANGE(0x0000, 0x27ff) AM_ROM AM_MIRROR(0x8000) - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_MIRROR(0x8000) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fastinvaders_state::fastinvaders_io_base) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fastinvaders_state::fastinvaders_6845_io) - AM_IMPORT_FROM(fastinvaders_io_base) - - AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("6845", mc6845_device, address_w) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("6845", mc6845_device, register_r, register_w) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch + map(0x0000, 0x27ff).rom().mirror(0x8000); + map(0x2800, 0x2fff).ram().mirror(0x8000).share("videoram"); + map(0x3000, 0x33ff).ram().mirror(0x8000); +} + +void fastinvaders_state::fastinvaders_io_base(address_map &map) +{ +} + +void fastinvaders_state::fastinvaders_6845_io(address_map &map) +{ + fastinvaders_io_base(map); + + map(0x10, 0x1f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0x20, 0x20).w(m_crtc6845, FUNC(mc6845_device::address_w)); + map(0x21, 0x21).rw(m_crtc6845, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x30, 0x33).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x40, 0x4f).w(this, FUNC(fastinvaders_state::io_40_w)); //ds4 //latch //AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch - AM_RANGE(0x60, 0x60) AM_READ(io_60_r) - AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear - AM_RANGE(0x80, 0x80) AM_NOP //ds8 write here a LOT ????? - AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command - AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear - AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear - AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear - AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear - AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear - AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fastinvaders_state::fastinvaders_8275_io) - AM_IMPORT_FROM(fastinvaders_io_base) - - AM_RANGE( 0x20, 0x21 ) AM_DEVREADWRITE("8275", i8275_device, read, write) - -AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x40, 0x4f) AM_WRITE(io_40_w) //ds4 //latch + map(0x60, 0x60).r(this, FUNC(fastinvaders_state::io_60_r)); + map(0x70, 0x70).w(this, FUNC(fastinvaders_state::io_70_w)); //ds7 rest55,rest65,trap, irq0 clear + map(0x80, 0x80).noprw(); //ds8 write here a LOT ????? + map(0x90, 0x90).w(this, FUNC(fastinvaders_state::io_90_w)); //ds9 sound command + map(0xa0, 0xa0).w(this, FUNC(fastinvaders_state::io_a0_w)); //ds10 irq1 clear + map(0xb0, 0xb0).w(this, FUNC(fastinvaders_state::io_b0_w)); //ds11 irq2 clear + map(0xc0, 0xc0).w(this, FUNC(fastinvaders_state::io_c0_w)); //ds12 irq3 clear + map(0xd0, 0xd0).w(this, FUNC(fastinvaders_state::io_d0_w)); //ds13 irq5 clear + map(0xe0, 0xe0).w(this, FUNC(fastinvaders_state::io_e0_w)); //ds14 irq4 clear + map(0xf0, 0xf0).w(this, FUNC(fastinvaders_state::io_f0_w)); //ds15 irq6 clear +} + + +void fastinvaders_state::fastinvaders_8275_io(address_map &map) +{ + fastinvaders_io_base(map); + + map(0x20, 0x21).rw(m_crtc8275, FUNC(i8275_device::read), FUNC(i8275_device::write)); + +map(0x10, 0x1f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0x30, 0x33).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x40, 0x4f).w(this, FUNC(fastinvaders_state::io_40_w)); //ds4 //latch //AM_RANGE(0x50, 0x50) AM_READ(io_50_r) //ds5 //latch - AM_RANGE(0x60, 0x60) AM_READ(io_60_r) - AM_RANGE(0x70, 0x70) AM_WRITE(io_70_w) //ds7 rest55,rest65,trap, irq0 clear - AM_RANGE(0x80, 0x80) AM_NOP //write here a LOT + map(0x60, 0x60).r(this, FUNC(fastinvaders_state::io_60_r)); + map(0x70, 0x70).w(this, FUNC(fastinvaders_state::io_70_w)); //ds7 rest55,rest65,trap, irq0 clear + map(0x80, 0x80).noprw(); //write here a LOT //AM_RANGE(0x80, 0x80) AM_WRITE(io_80_w) //ds8 ???? - AM_RANGE(0x90, 0x90) AM_WRITE(io_90_w) //ds9 sound command - AM_RANGE(0xa0, 0xa0) AM_WRITE(io_a0_w) //ds10 irq1 clear - AM_RANGE(0xb0, 0xb0) AM_WRITE(io_b0_w) //ds11 irq2 clear - AM_RANGE(0xc0, 0xc0) AM_WRITE(io_c0_w) //ds12 irq3 clear - AM_RANGE(0xd0, 0xd0) AM_WRITE(io_d0_w) //ds13 irq5 clear - AM_RANGE(0xe0, 0xe0) AM_WRITE(io_e0_w) //ds14 irq4 clear - AM_RANGE(0xf0, 0xf0) AM_WRITE(io_f0_w) //ds15 irq6 clear -ADDRESS_MAP_END + map(0x90, 0x90).w(this, FUNC(fastinvaders_state::io_90_w)); //ds9 sound command + map(0xa0, 0xa0).w(this, FUNC(fastinvaders_state::io_a0_w)); //ds10 irq1 clear + map(0xb0, 0xb0).w(this, FUNC(fastinvaders_state::io_b0_w)); //ds11 irq2 clear + map(0xc0, 0xc0).w(this, FUNC(fastinvaders_state::io_c0_w)); //ds12 irq3 clear + map(0xd0, 0xd0).w(this, FUNC(fastinvaders_state::io_d0_w)); //ds13 irq5 clear + map(0xe0, 0xe0).w(this, FUNC(fastinvaders_state::io_e0_w)); //ds14 irq4 clear + map(0xf0, 0xf0).w(this, FUNC(fastinvaders_state::io_f0_w)); //ds15 irq6 clear +} diff --git a/src/mame/drivers/fastlane.cpp b/src/mame/drivers/fastlane.cpp index 9c056d5f7ff..c5a4dd93cfc 100644 --- a/src/mame/drivers/fastlane.cpp +++ b/src/mame/drivers/fastlane.cpp @@ -77,27 +77,28 @@ WRITE8_MEMBER(fastlane_state::fastlane_k2_k007232_w) { m_k007232_2->write(space, offset ^ 1, data); } -ADDRESS_MAP_START(fastlane_state::fastlane_map) - AM_RANGE(0x0000, 0x005f) AM_RAM_WRITE(k007121_registers_w) AM_SHARE("k007121_regs") /* 007121 registers */ - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW3") - AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2") - AM_RANGE(0x0802, 0x0802) AM_READ_PORT("P1") - AM_RANGE(0x0803, 0x0803) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0900, 0x0900) AM_READ_PORT("DSW1") - AM_RANGE(0x0901, 0x0901) AM_READ_PORT("DSW2") - AM_RANGE(0x0b00, 0x0b00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(fastlane_bankswitch_w) /* bankswitch control */ - AM_RANGE(0x0d00, 0x0d0d) AM_READWRITE(fastlane_k1_k007232_r, fastlane_k1_k007232_w) /* 007232 registers (chip 1) */ - AM_RANGE(0x0e00, 0x0e0d) AM_READWRITE(fastlane_k2_k007232_r, fastlane_k2_k007232_w) /* 007232 registers (chip 2) */ - AM_RANGE(0x0f00, 0x0f1f) AM_DEVREADWRITE("k051733", k051733_device, read, write) /* 051733 (protection) */ - AM_RANGE(0x1000, 0x17ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0x1800, 0x1fff) AM_RAM /* Work RAM */ - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(fastlane_vram1_w) AM_SHARE("videoram1") /* Video RAM (chip 1) */ - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fastlane_vram2_w) AM_SHARE("videoram2") /* Video RAM (chip 2) */ - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END +void fastlane_state::fastlane_map(address_map &map) +{ + map(0x0000, 0x005f).ram().w(this, FUNC(fastlane_state::k007121_registers_w)).share("k007121_regs"); /* 007121 registers */ + map(0x0800, 0x0800).portr("DSW3"); + map(0x0801, 0x0801).portr("P2"); + map(0x0802, 0x0802).portr("P1"); + map(0x0803, 0x0803).portr("SYSTEM"); + map(0x0900, 0x0900).portr("DSW1"); + map(0x0901, 0x0901).portr("DSW2"); + map(0x0b00, 0x0b00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0c00, 0x0c00).w(this, FUNC(fastlane_state::fastlane_bankswitch_w)); /* bankswitch control */ + map(0x0d00, 0x0d0d).rw(this, FUNC(fastlane_state::fastlane_k1_k007232_r), FUNC(fastlane_state::fastlane_k1_k007232_w)); /* 007232 registers (chip 1) */ + map(0x0e00, 0x0e0d).rw(this, FUNC(fastlane_state::fastlane_k2_k007232_r), FUNC(fastlane_state::fastlane_k2_k007232_w)); /* 007232 registers (chip 2) */ + map(0x0f00, 0x0f1f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* 051733 (protection) */ + map(0x1000, 0x17ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0x1800, 0x1fff).ram(); /* Work RAM */ + map(0x2000, 0x27ff).ram().w(this, FUNC(fastlane_state::fastlane_vram1_w)).share("videoram1"); /* Video RAM (chip 1) */ + map(0x2800, 0x2fff).ram().w(this, FUNC(fastlane_state::fastlane_vram2_w)).share("videoram2"); /* Video RAM (chip 2) */ + map(0x3000, 0x3fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x4000, 0x7fff).bankr("bank1"); /* banked ROM */ + map(0x8000, 0xffff).rom(); /* ROM */ +} /*************************************************************************** diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp index 6c136ec07b8..a23689f12e3 100644 --- a/src/mame/drivers/fb01.cpp +++ b/src/mame/drivers/fb01.cpp @@ -64,30 +64,32 @@ private: }; -ADDRESS_MAP_START(fb01_state::fb01_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("nvram") // 2 * 8KB S-RAM -ADDRESS_MAP_END +void fb01_state::fb01_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).ram().share("nvram"); // 2 * 8KB S-RAM +} -ADDRESS_MAP_START(fb01_state::fb01_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void fb01_state::fb01_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // 00-01 YM2164 - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ym2164", ym2151_device, register_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ym2164", ym2151_device, status_r, data_w) + map(0x00, 0x00).w("ym2164", FUNC(ym2151_device::register_w)); + map(0x01, 0x01).rw("ym2164", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)); // 10-11 USART uPD71051C 4MHz & 4MHz / 8 - AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("upd71051", i8251_device, data_r, data_w) - AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("upd71051", i8251_device, status_r, control_w) + map(0x10, 0x10).rw(m_upd71051, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x11, 0x11).rw(m_upd71051, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 20 PANEL SWITCH - AM_RANGE(0x20, 0x20) AM_READ_PORT("PANEL") + map(0x20, 0x20).portr("PANEL"); // 30-31 HD44780A - AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("hd44780", hd44780_device, control_read, control_write) - AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("hd44780", hd44780_device, data_read, data_write) -ADDRESS_MAP_END + map(0x30, 0x30).rw("hd44780", FUNC(hd44780_device::control_read), FUNC(hd44780_device::control_write)); + map(0x31, 0x31).rw("hd44780", FUNC(hd44780_device::data_read), FUNC(hd44780_device::data_write)); +} static INPUT_PORTS_START( fb01 ) diff --git a/src/mame/drivers/fc100.cpp b/src/mame/drivers/fc100.cpp index 0e339440c19..6ebb90adcf2 100644 --- a/src/mame/drivers/fc100.cpp +++ b/src/mame/drivers/fc100.cpp @@ -118,34 +118,36 @@ private: }; -ADDRESS_MAP_START(fc100_state::fc100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_REGION("roms", 0) +void fc100_state::fc100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5fff).rom().region("roms", 0); //AM_RANGE(0x6000, 0x6fff) // mapped by the cartslot - AM_RANGE( 0x7800, 0x7fff ) AM_READ_BANK("bankr") AM_WRITE_BANK("bankw") // Banked RAM/ROM - AM_RANGE( 0x8000, 0xbfff ) AM_RAM // expansion ram pack - if omitted you get a 'Pages?' prompt at boot - AM_RANGE( 0xc000, 0xffff ) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fc100_state::fc100_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0F) AM_READ(port00_r) + map(0x7800, 0x7fff).bankr("bankr").bankw("bankw"); // Banked RAM/ROM + map(0x8000, 0xbfff).ram(); // expansion ram pack - if omitted you get a 'Pages?' prompt at boot + map(0xc000, 0xffff).ram().share("videoram"); +} + +void fc100_state::fc100_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x0F).r(this, FUNC(fc100_state::port00_r)); // AM_RANGE(0x10, 0x10) AM_WRITE(port10_w) // vdg, unknown effects - AM_RANGE(0x21, 0x21) AM_DEVWRITE("psg", ay8910_device, data_w) - AM_RANGE(0x22, 0x22) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x23, 0x23) AM_DEVWRITE("psg", ay8910_device, address_w) - AM_RANGE(0x31, 0x31) AM_WRITE(port31_w) - AM_RANGE(0x33, 0x33) AM_WRITE(port33_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x42, 0x42) AM_WRITENOP // bit 0 could be printer select - AM_RANGE(0x43, 0x43) AM_WRITE(port43_w) - AM_RANGE(0x44, 0x44) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0x60, 0x61) AM_WRITE(port60_w) - AM_RANGE(0x70, 0x71) AM_WRITE(port70_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0xb8, 0xb8) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) -ADDRESS_MAP_END + map(0x21, 0x21).w("psg", FUNC(ay8910_device::data_w)); + map(0x22, 0x22).r("psg", FUNC(ay8910_device::data_r)); + map(0x23, 0x23).w("psg", FUNC(ay8910_device::address_w)); + map(0x31, 0x31).w(this, FUNC(fc100_state::port31_w)); + map(0x33, 0x33).w(this, FUNC(fc100_state::port33_w)); + map(0x40, 0x40).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x42, 0x42).nopw(); // bit 0 could be printer select + map(0x43, 0x43).w(this, FUNC(fc100_state::port43_w)); + map(0x44, 0x44).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0x60, 0x61).w(this, FUNC(fc100_state::port60_w)); + map(0x70, 0x71).w(this, FUNC(fc100_state::port70_w)); + map(0xb0, 0xb0).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xb8, 0xb8).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} static INPUT_PORTS_START( fc100 ) PORT_START("KEY.0") diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp index e62c2c74026..0bedae62ffb 100644 --- a/src/mame/drivers/fccpu30.cpp +++ b/src/mame/drivers/fccpu30.cpp @@ -328,29 +328,30 @@ private: uint8_t m_board_id; }; -ADDRESS_MAP_START(cpu30_state::cpu30_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x00000000, 0x00000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */ - AM_RANGE (0x00000000, 0x00000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just during reset */ +void cpu30_state::cpu30_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x00000007).ram().w(this, FUNC(cpu30_state::bootvect_w)); /* After first write we act as RAM */ + map(0x00000000, 0x00000007).rom().r(this, FUNC(cpu30_state::bootvect_r)); /* ROM mirror just during reset */ // AM_RANGE (0x00000008, 0x003fffff) AM_RAM /* RAM installed in machine start */ - AM_RANGE (0xff000000, 0xff7fffff) AM_ROM AM_REGION("roms", 0x000000) - AM_RANGE (0xff800c00, 0xff800dff) AM_DEVREADWRITE8("pit1", pit68230_device, read, write, 0xffffffff) - AM_RANGE (0xff800e00, 0xff800fff) AM_DEVREADWRITE8("pit2", pit68230_device, read, write, 0xffffffff) - AM_RANGE (0xff802000, 0xff8021ff) AM_DEVREADWRITE8("duscc", duscc68562_device, read, write, 0xffffffff) /* Port 1&2 - Dual serial port DUSCC */ - AM_RANGE (0xff802200, 0xff8023ff) AM_DEVREADWRITE8("duscc2", duscc68562_device, read, write, 0xffffffff) /* Port 3&4 - Dual serial port DUSCC */ - AM_RANGE (0xff803000, 0xff8031ff) AM_DEVREADWRITE8("rtc", rtc72423_device, read, write, 0xffffffff) + map(0xff000000, 0xff7fffff).rom().region("roms", 0x000000); + map(0xff800c00, 0xff800dff).rw(m_pit1, FUNC(pit68230_device::read), FUNC(pit68230_device::write)); + map(0xff800e00, 0xff800fff).rw(m_pit2, FUNC(pit68230_device::read), FUNC(pit68230_device::write)); + map(0xff802000, 0xff8021ff).rw(m_dusccterm, FUNC(duscc68562_device::read), FUNC(duscc68562_device::write)); /* Port 1&2 - Dual serial port DUSCC */ + map(0xff802200, 0xff8023ff).rw("duscc2", FUNC(duscc68562_device::read), FUNC(duscc68562_device::write)); /* Port 3&4 - Dual serial port DUSCC */ + map(0xff803000, 0xff8031ff).rw(m_rtc, FUNC(rtc72423_device::read), FUNC(rtc72423_device::write)); // AM_RANGE (0xff803400, 0xff8035ff) AM_DEVREADWRITE8("scsi", mb87033_device, read, write, 0xffffffff) /* TODO: implement MB87344 SCSI device */ - AM_RANGE (0xff803400, 0xff8035ff) AM_READWRITE8(scsi_r, scsi_w, 0x000000ff) /* mock driver to log calls to device */ + map(0xff803400, 0xff8035ff).rw(this, FUNC(cpu30_state::scsi_r), FUNC(cpu30_state::scsi_w)).umask32(0x000000ff); /* mock driver to log calls to device */ // AM_RANGE (0xff803800, 0xff80397f) AM_DEVREADWRITE8("fdc", wd37c65c_device, read, write, 0xffffffff) /* TODO: implement WD3/C65C fdc controller */ - AM_RANGE (0xff803800, 0xff80397f) AM_READWRITE8(fdc_r, fdc_w, 0x000000ff) /* mock driver to log calls to device */ - AM_RANGE (0xff803980, 0xff8039ff) AM_READ8(slot1_status_r, 0x000000ff) - AM_RANGE (0xffc00000, 0xffcfffff) AM_RAM AM_SHARE ("nvram") /* On-board SRAM with battery backup (nvram) */ - AM_RANGE (0xffd00000, 0xffdfffff) AM_DEVREADWRITE8("fga002", fga002_device, read, write, 0xffffffff) /* FGA-002 Force Gate Array */ - AM_RANGE (0xffe00000, 0xffefffff) AM_ROM AM_REGION("roms", 0x800000) + map(0xff803800, 0xff80397f).rw(this, FUNC(cpu30_state::fdc_r), FUNC(cpu30_state::fdc_w)).umask32(0x000000ff); /* mock driver to log calls to device */ + map(0xff803980, 0xff8039ff).r(this, FUNC(cpu30_state::slot1_status_r)).umask32(0x000000ff); + map(0xffc00000, 0xffcfffff).ram().share("nvram"); /* On-board SRAM with battery backup (nvram) */ + map(0xffd00000, 0xffdfffff).rw(m_fga002, FUNC(fga002_device::read), FUNC(fga002_device::write)); /* FGA-002 Force Gate Array */ + map(0xffe00000, 0xffefffff).rom().region("roms", 0x800000); //AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */ //AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START (cpu30) diff --git a/src/mame/drivers/fcombat.cpp b/src/mame/drivers/fcombat.cpp index 36bdda26c0e..985edef36a1 100644 --- a/src/mame/drivers/fcombat.cpp +++ b/src/mame/drivers/fcombat.cpp @@ -113,38 +113,40 @@ WRITE8_MEMBER(fcombat_state::ee00_w) { } -ADDRESS_MAP_START(fcombat_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe000) AM_READ(fcombat_port01_r) - AM_RANGE(0xe100, 0xe100) AM_READ_PORT("DSW0") - AM_RANGE(0xe200, 0xe200) AM_READ_PORT("DSW1") - AM_RANGE(0xe300, 0xe300) AM_READ(e300_r) - AM_RANGE(0xe400, 0xe400) AM_READ(fcombat_protection_r) // protection? - AM_RANGE(0xe800, 0xe800) AM_WRITE(fcombat_videoreg_w) // at least bit 0 for flip screen and joystick input multiplexor - AM_RANGE(0xe900, 0xe900) AM_WRITE(e900_w) - AM_RANGE(0xea00, 0xea00) AM_WRITE(ea00_w) - AM_RANGE(0xeb00, 0xeb00) AM_WRITE(eb00_w) - AM_RANGE(0xec00, 0xec00) AM_WRITE(ec00_w) - AM_RANGE(0xed00, 0xed00) AM_WRITE(ed00_w) - AM_RANGE(0xee00, 0xee00) AM_WRITE(ee00_w) // related to protection ? - doesn't seem to have any effect - AM_RANGE(0xef00, 0xef00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fcombat_state::audio_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("ay3", ay8910_device, data_address_w) -ADDRESS_MAP_END +void fcombat_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd7ff).ram().share("videoram"); + map(0xd800, 0xd8ff).ram().share("spriteram"); + map(0xe000, 0xe000).r(this, FUNC(fcombat_state::fcombat_port01_r)); + map(0xe100, 0xe100).portr("DSW0"); + map(0xe200, 0xe200).portr("DSW1"); + map(0xe300, 0xe300).r(this, FUNC(fcombat_state::e300_r)); + map(0xe400, 0xe400).r(this, FUNC(fcombat_state::fcombat_protection_r)); // protection? + map(0xe800, 0xe800).w(this, FUNC(fcombat_state::fcombat_videoreg_w)); // at least bit 0 for flip screen and joystick input multiplexor + map(0xe900, 0xe900).w(this, FUNC(fcombat_state::e900_w)); + map(0xea00, 0xea00).w(this, FUNC(fcombat_state::ea00_w)); + map(0xeb00, 0xeb00).w(this, FUNC(fcombat_state::eb00_w)); + map(0xec00, 0xec00).w(this, FUNC(fcombat_state::ec00_w)); + map(0xed00, 0xed00).w(this, FUNC(fcombat_state::ed00_w)); + map(0xee00, 0xee00).w(this, FUNC(fcombat_state::ee00_w)); // related to protection ? - doesn't seem to have any effect + map(0xef00, 0xef00).w("soundlatch", FUNC(generic_latch_8_device::write)); +} + + +void fcombat_state::audio_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r)); + map(0x8002, 0x8003).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0xa001, 0xa001).r("ay2", FUNC(ay8910_device::data_r)); + map(0xa002, 0xa003).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0xc001, 0xc001).r("ay3", FUNC(ay8910_device::data_r)); + map(0xc002, 0xc003).w("ay3", FUNC(ay8910_device::data_address_w)); +} diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp index 7277bc962f5..04190d90368 100644 --- a/src/mame/drivers/fcrash.cpp +++ b/src/mame/drivers/fcrash.cpp @@ -663,228 +663,243 @@ uint32_t cps_state::screen_update_fcrash(screen_device &screen, bitmap_ind16 &bi } -ADDRESS_MAP_START(cps_state::knightsb_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2") /* Player 3 controls */ - AM_RANGE(0x800004, 0x800005) AM_WRITENOP // writes 0000 here - AM_RANGE(0x800006, 0x800007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800030, 0x800037) AM_WRITENOP //AM_WRITE(cps1_coinctrl_w) only writes bit 15 - AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x800180, 0x800181) AM_WRITENOP //AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ - AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown - AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0x980000, 0x98002f) AM_WRITE(knightsb_layer_w) - AM_RANGE(0x990000, 0x990001) AM_WRITENOP // same as 880000 - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::dinopic_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x800222, 0x800223) AM_WRITE(dinopic_layer2_w) - AM_RANGE(0x880000, 0x880001) AM_WRITENOP // always 0 - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0x980000, 0x98000b) AM_WRITE(dinopic_layer_w) - AM_RANGE(0xf18000, 0xf19fff) AM_RAM - AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */ - AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */ - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::fcrash_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x880006, 0x880007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */ - AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x890000, 0x890001) AM_WRITENOP // palette related? - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::punipic_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x880000, 0x880001) AM_WRITENOP // same as 98000C - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0x980000, 0x98000f) AM_WRITE(punipic_layer_w) - AM_RANGE(0x990000, 0x990001) AM_WRITENOP // unknown - AM_RANGE(0x991000, 0x991017) AM_WRITENOP // unknown - AM_RANGE(0xf18000, 0xf19fff) AM_RAM - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sf2m1_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */ - AM_RANGE(0x800012, 0x800013) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x800180, 0x800181) AM_WRITENOP // only once at boot, for 80010c - AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ - AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown - AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0x980000, 0x9801ff) AM_WRITE(sf2m1_layer_w) - AM_RANGE(0x990000, 0x990001) AM_WRITENOP // same as 880000 - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sf2mdt_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x708100, 0x7081ff) AM_WRITE(sf2mdta_layer_w) - AM_RANGE(0x70c000, 0x70c001) AM_READ_PORT("IN1") - AM_RANGE(0x70c008, 0x70c009) AM_READ_PORT("IN2") - AM_RANGE(0x70c018, 0x70c01f) AM_READ(cps1_hack_dsw_r) - AM_RANGE(0x70c106, 0x70c107) AM_WRITE(cawingbl_soundlatch_w) - AM_RANGE(0x70d000, 0x70d001) AM_WRITENOP // writes FFFF +void cps_state::knightsb_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x800001).portr("IN1"); /* Player input ports */ + map(0x800002, 0x800003).portr("IN2"); /* Player 3 controls */ + map(0x800004, 0x800005).nopw(); // writes 0000 here + map(0x800006, 0x800007).w(this, FUNC(cps_state::fcrash_soundlatch_w)); /* Sound command */ + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800030, 0x800037).nopw(); //AM_WRITE(cps1_coinctrl_w) only writes bit 15 + map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */ + map(0x800180, 0x800181).nopw(); //AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ + map(0x880000, 0x880001).nopw(); // unknown + map(0x900000, 0x93ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0x980000, 0x98002f).w(this, FUNC(cps_state::knightsb_layer_w)); + map(0x990000, 0x990001).nopw(); // same as 880000 + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::dinopic_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x800007).portr("IN1"); /* Player input ports */ + map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */ + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x800222, 0x800223).w(this, FUNC(cps_state::dinopic_layer2_w)); + map(0x880000, 0x880001).nopw(); // always 0 + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0x980000, 0x98000b).w(this, FUNC(cps_state::dinopic_layer_w)); + map(0xf18000, 0xf19fff).ram(); + map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */ + map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ + map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::fcrash_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800030, 0x800031).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */ + map(0x880000, 0x880001).portr("IN1"); /* Player input ports */ + map(0x880006, 0x880007).w(this, FUNC(cps_state::fcrash_soundlatch_w)); /* Sound command */ + map(0x880008, 0x88000f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x890000, 0x890001).nopw(); // palette related? + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::punipic_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x800007).portr("IN1"); /* Player input ports */ + map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */ + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x880000, 0x880001).nopw(); // same as 98000C + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0x980000, 0x98000f).w(this, FUNC(cps_state::punipic_layer_w)); + map(0x990000, 0x990001).nopw(); // unknown + map(0x991000, 0x991017).nopw(); // unknown + map(0xf18000, 0xf19fff).ram(); + map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); + map(0xff0000, 0xffffff).ram().share("mainram"); +} + +void cps_state::sf2m1_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x800007).portr("IN1"); /* Player input ports */ + map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */ + map(0x800012, 0x800013).r(this, FUNC(cps_state::cps1_in2_r)); /* Buttons 4,5,6 for both players */ + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x800180, 0x800181).nopw(); // only once at boot, for 80010c + map(0x800188, 0x80018f).w(this, FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */ + map(0x880000, 0x880001).nopw(); // unknown + map(0x900000, 0x93ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0x980000, 0x9801ff).w(this, FUNC(cps_state::sf2m1_layer_w)); + map(0x990000, 0x990001).nopw(); // same as 880000 + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::sf2mdt_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x708100, 0x7081ff).w(this, FUNC(cps_state::sf2mdta_layer_w)); + map(0x70c000, 0x70c001).portr("IN1"); + map(0x70c008, 0x70c009).portr("IN2"); + map(0x70c018, 0x70c01f).r(this, FUNC(cps_state::cps1_hack_dsw_r)); + map(0x70c106, 0x70c107).w(this, FUNC(cps_state::cawingbl_soundlatch_w)); + map(0x70d000, 0x70d001).nopw(); // writes FFFF //AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sf2b_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x708100, 0x7081ff) AM_WRITE(sf2mdta_layer_w) - AM_RANGE(0x70c000, 0x70c001) AM_READ_PORT("IN1") - AM_RANGE(0x70c008, 0x70c009) AM_READ_PORT("IN2") - AM_RANGE(0x70c018, 0x70c01f) AM_READ(cps1_hack_dsw_r) - AM_RANGE(0x70c106, 0x70c107) AM_WRITE(cawingbl_soundlatch_w) - AM_RANGE(0x70d000, 0x70d001) AM_WRITENOP // writes FFFF + map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::sf2b_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x708100, 0x7081ff).w(this, FUNC(cps_state::sf2mdta_layer_w)); + map(0x70c000, 0x70c001).portr("IN1"); + map(0x70c008, 0x70c009).portr("IN2"); + map(0x70c018, 0x70c01f).r(this, FUNC(cps_state::cps1_hack_dsw_r)); + map(0x70c106, 0x70c107).w(this, FUNC(cps_state::cawingbl_soundlatch_w)); + map(0x70d000, 0x70d001).nopw(); // writes FFFF //AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sgyxz_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x880006, 0x88000d) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x88000e, 0x88000f) AM_WRITE(cps1_soundlatch_w) - AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */ - AM_RANGE(0x890000, 0x890001) AM_WRITE(cps1_soundlatch2_w) - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */ - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::wofabl_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_RAM AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_RAM AM_SHARE("cps_b_regs") /* CPS-B custom */ - AM_RANGE(0x880000, 0x880001) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x880006, 0x880007) AM_WRITE(cps1_soundlatch_w) - AM_RANGE(0x880008, 0x88000f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x880e78, 0x880e79) AM_READ(cps1_in2_r) /* Player 3 controls (later games) */ - AM_RANGE(0x890000, 0x890001) AM_WRITE(cps1_soundlatch2_w) - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */ - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::slampic_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800006, 0x800007) AM_WRITENOP //AM_WRITE(cps1_soundlatch2_w) - AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x880000, 0x880001) AM_WRITENOP //AM_WRITE(cps1_soundlatch_w) /* Sound command */ - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0x980000, 0x98000d) AM_WRITE(slampic_layer_w) - AM_RANGE(0xf00000, 0xf0ffff) AM_READ(qsound_rom_r) /* Slammasters protection */ - AM_RANGE(0xf18000, 0xf19fff) AM_RAM - AM_RANGE(0xf1c000, 0xf1c001) AM_READ_PORT("IN2") /* Player 3 controls (later games) */ - AM_RANGE(0xf1c004, 0xf1c005) AM_WRITE(cpsq_coinctrl2_w) /* Coin control2 (later games) */ - AM_RANGE(0xf1c006, 0xf1c007) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xf1f000, 0xf1ffff) AM_NOP // writes 0 to range, then reads F1F6EC - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xdc00, 0xdc01) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_WRITE(fcrash_snd_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_0_data_w) - AM_RANGE(0xec00, 0xec00) AM_WRITE(fcrash_msm5205_1_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::kodb_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("2151", ym2151_device, read, write) - AM_RANGE(0xe400, 0xe400) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sf2mdt_z80map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write) - AM_RANGE(0xdc00, 0xdc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe000) AM_WRITE(sf2mdt_snd_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::knightsb_z80map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xcffe, 0xcfff) AM_WRITENOP // writes lots of data - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write) - AM_RANGE(0xdc00, 0xdc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe000) AM_WRITE(knightsb_snd_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(cps_state::sgyxz_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("2151", ym2151_device, read, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf004, 0xf004) AM_WRITE(cps1_snd_bankswitch_w) - AM_RANGE(0xf006, 0xf006) AM_WRITE(cps1_oki_pin7_w) /* controls pin 7 of OKI chip */ - AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound command */ - AM_RANGE(0xf00a, 0xf00a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* Sound timer fade */ -ADDRESS_MAP_END + map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::sgyxz_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800030, 0x800031).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */ + map(0x880000, 0x880001).portr("IN1"); /* Player input ports */ + map(0x880006, 0x88000d).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x88000e, 0x88000f).w(this, FUNC(cps_state::cps1_soundlatch_w)); + map(0x880e78, 0x880e79).r(this, FUNC(cps_state::cps1_in2_r)); /* Player 3 controls (later games) */ + map(0x890000, 0x890001).w(this, FUNC(cps_state::cps1_soundlatch2_w)); + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ + map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::wofabl_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x800030, 0x800031).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */ + map(0x880000, 0x880001).portr("IN1"); /* Player input ports */ + map(0x880006, 0x880007).w(this, FUNC(cps_state::cps1_soundlatch_w)); + map(0x880008, 0x88000f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x880e78, 0x880e79).r(this, FUNC(cps_state::cps1_in2_r)); /* Player 3 controls (later games) */ + map(0x890000, 0x890001).w(this, FUNC(cps_state::cps1_soundlatch2_w)); + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ + map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::slampic_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800006, 0x800007).nopw(); //AM_WRITE(cps1_soundlatch2_w) + map(0x800000, 0x800007).portr("IN1"); /* Player input ports */ + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x880000, 0x880001).nopw(); //AM_WRITE(cps1_soundlatch_w) /* Sound command */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0x980000, 0x98000d).w(this, FUNC(cps_state::slampic_layer_w)); + map(0xf00000, 0xf0ffff).r(this, FUNC(cps_state::qsound_rom_r)); /* Slammasters protection */ + map(0xf18000, 0xf19fff).ram(); + map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */ + map(0xf1c004, 0xf1c005).w(this, FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ + map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); + map(0xf1f000, 0xf1ffff).noprw(); // writes 0 to range, then reads F1F6EC + map(0xff0000, 0xffffff).ram(); +} + +void cps_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xd000, 0xd7ff).ram(); + map(0xd800, 0xd801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xdc00, 0xdc01).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xe000, 0xe000).w(this, FUNC(cps_state::fcrash_snd_bankswitch_w)); + map(0xe400, 0xe400).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).w(this, FUNC(cps_state::fcrash_msm5205_0_data_w)); + map(0xec00, 0xec00).w(this, FUNC(cps_state::fcrash_msm5205_1_data_w)); +} + +void cps_state::kodb_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xd000, 0xd7ff).ram(); + map(0xe000, 0xe001).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe400, 0xe400).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void cps_state::sf2mdt_z80map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xd000, 0xd7ff).ram(); + map(0xd800, 0xd801).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xdc00, 0xdc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe000).w(this, FUNC(cps_state::sf2mdt_snd_bankswitch_w)); + map(0xe400, 0xe400).w(this, FUNC(cps_state::fcrash_msm5205_0_data_w)); + map(0xe800, 0xe800).w(this, FUNC(cps_state::fcrash_msm5205_1_data_w)); +} + +void cps_state::knightsb_z80map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xcffe, 0xcfff).nopw(); // writes lots of data + map(0xd000, 0xd7ff).ram(); + map(0xd800, 0xd801).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xdc00, 0xdc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe000).w(this, FUNC(cps_state::knightsb_snd_bankswitch_w)); + map(0xe400, 0xe400).w(this, FUNC(cps_state::fcrash_msm5205_0_data_w)); + map(0xe800, 0xe800).w(this, FUNC(cps_state::fcrash_msm5205_1_data_w)); +} + +void cps_state::sgyxz_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xd000, 0xd7ff).ram(); + map(0xf000, 0xf001).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf004, 0xf004).w(this, FUNC(cps_state::cps1_snd_bankswitch_w)); + map(0xf006, 0xf006).w(this, FUNC(cps_state::cps1_oki_pin7_w)); /* controls pin 7 of OKI chip */ + map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound command */ + map(0xf00a, 0xf00a).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); /* Sound timer fade */ +} #define CPS1_COINAGE_1 \ @@ -3077,19 +3092,20 @@ WRITE16_MEMBER(cps_state::varthb_layer_w) m_cps_a_regs[0x06 / 2] = data; } -ADDRESS_MAP_START(cps_state::varthb_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") - AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) - AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) - AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w) - AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") - AM_RANGE(0x800188, 0x800189) AM_WRITE(varthb_layer_w) - AM_RANGE(0x980000, 0x98000b) AM_WRITE(dinopic_layer_w) - AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END +void cps_state::varthb_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x800000, 0x800001).portr("IN1"); + map(0x800006, 0x800007).w(this, FUNC(cps_state::cps1_soundlatch_w)); + map(0x800018, 0x80001f).r(this, FUNC(cps_state::cps1_dsw_r)); + map(0x800030, 0x800037).w(this, FUNC(cps_state::cps1_coinctrl_w)); + map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); + map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); + map(0x800188, 0x800189).w(this, FUNC(cps_state::varthb_layer_w)); + map(0x980000, 0x98000b).w(this, FUNC(cps_state::dinopic_layer_w)); + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); + map(0xff0000, 0xffffff).ram().share("mainram"); +} MACHINE_CONFIG_START(cps_state::varthb) diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp index f8e1a7837fb..81bc7d6bb7b 100644 --- a/src/mame/drivers/feversoc.cpp +++ b/src/mame/drivers/feversoc.cpp @@ -193,21 +193,22 @@ WRITE16_MEMBER( feversoc_state::output2_w ) } -ADDRESS_MAP_START(feversoc_state::feversoc_map) - AM_RANGE(0x00000000, 0x0003ffff) AM_ROM - AM_RANGE(0x02000000, 0x0202ffff) AM_RAM AM_SHARE("workram1") //work ram - AM_RANGE(0x02030000, 0x0203ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x02034000, 0x0203dfff) AM_RAM AM_SHARE("workram2") //work ram - AM_RANGE(0x0203e000, 0x0203ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x06000000, 0x06000003) AM_WRITE16(output_w, 0xffff0000) - AM_RANGE(0x06000000, 0x06000003) AM_WRITE16(output2_w, 0x0000ffff) - AM_RANGE(0x06000004, 0x06000007) AM_WRITE16(feversoc_irq_ack, 0x0000ffff) - AM_RANGE(0x06000008, 0x0600000b) AM_READ16(in_r, 0xffffffff) - AM_RANGE(0x0600000c, 0x0600000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000) +void feversoc_state::feversoc_map(address_map &map) +{ + map(0x00000000, 0x0003ffff).rom(); + map(0x02000000, 0x0202ffff).ram().share("workram1"); //work ram + map(0x02030000, 0x0203ffff).ram().share("nvram"); + map(0x02034000, 0x0203dfff).ram().share("workram2"); //work ram + map(0x0203e000, 0x0203ffff).ram().share("spriteram"); + map(0x06000000, 0x06000001).w(this, FUNC(feversoc_state::output_w)); + map(0x06000002, 0x06000003).w(this, FUNC(feversoc_state::output2_w)); + map(0x06000006, 0x06000007).w(this, FUNC(feversoc_state::feversoc_irq_ack)); + map(0x06000008, 0x0600000b).r(this, FUNC(feversoc_state::in_r)); + map(0x0600000d, 0x0600000d).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //AM_RANGE(0x06010000, 0x0601007f) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write) AM_RAM - AM_RANGE(0x06010060, 0x06010063) AM_WRITENOP // sprite buffering - AM_RANGE(0x06018000, 0x06019fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") -ADDRESS_MAP_END + map(0x06010060, 0x06010063).nopw(); // sprite buffering + map(0x06018000, 0x06019fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); +} static const gfx_layout spi_spritelayout = { diff --git a/src/mame/drivers/fgoal.cpp b/src/mame/drivers/fgoal.cpp index 51e3a1770b2..2ba6088f291 100644 --- a/src/mame/drivers/fgoal.cpp +++ b/src/mame/drivers/fgoal.cpp @@ -207,39 +207,40 @@ WRITE8_MEMBER(fgoal_state::sound2_w) } -ADDRESS_MAP_START(fgoal_state::cpu_map) - - AM_RANGE(0x0000, 0x00ef) AM_RAM - - AM_RANGE(0x00f0, 0x00f0) AM_READ(row_r) - AM_RANGE(0x00f1, 0x00f1) AM_READ(analog_r) - AM_RANGE(0x00f2, 0x00f2) AM_READ_PORT("IN0") - AM_RANGE(0x00f3, 0x00f3) AM_READ_PORT("IN1") - AM_RANGE(0x00f4, 0x00f4) AM_READ(address_hi_r) - AM_RANGE(0x00f5, 0x00f5) AM_READ(address_lo_r) - AM_RANGE(0x00f6, 0x00f6) AM_READ(shifter_r) - AM_RANGE(0x00f7, 0x00f7) AM_READ(shifter_reverse_r) - AM_RANGE(0x00f8, 0x00fb) AM_READ(nmi_reset_r) - AM_RANGE(0x00fc, 0x00ff) AM_READ(irq_reset_r) - - AM_RANGE(0x00f0, 0x00f0) AM_WRITE(row_w) - AM_RANGE(0x00f1, 0x00f1) AM_WRITE(col_w) - AM_RANGE(0x00f2, 0x00f2) AM_WRITE(row_w) - AM_RANGE(0x00f3, 0x00f3) AM_WRITE(col_w) - AM_RANGE(0x00f4, 0x00f7) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x00f8, 0x00fb) AM_WRITE(sound1_w) - AM_RANGE(0x00fc, 0x00ff) AM_WRITE(sound2_w) - - AM_RANGE(0x0100, 0x03ff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("video_ram") - - AM_RANGE(0x8000, 0x8000) AM_WRITE(ypos_w) - AM_RANGE(0x8001, 0x8001) AM_WRITE(xpos_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE(color_w) - - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void fgoal_state::cpu_map(address_map &map) +{ + + map(0x0000, 0x00ef).ram(); + + map(0x00f0, 0x00f0).r(this, FUNC(fgoal_state::row_r)); + map(0x00f1, 0x00f1).r(this, FUNC(fgoal_state::analog_r)); + map(0x00f2, 0x00f2).portr("IN0"); + map(0x00f3, 0x00f3).portr("IN1"); + map(0x00f4, 0x00f4).r(this, FUNC(fgoal_state::address_hi_r)); + map(0x00f5, 0x00f5).r(this, FUNC(fgoal_state::address_lo_r)); + map(0x00f6, 0x00f6).r(this, FUNC(fgoal_state::shifter_r)); + map(0x00f7, 0x00f7).r(this, FUNC(fgoal_state::shifter_reverse_r)); + map(0x00f8, 0x00fb).r(this, FUNC(fgoal_state::nmi_reset_r)); + map(0x00fc, 0x00ff).r(this, FUNC(fgoal_state::irq_reset_r)); + + map(0x00f0, 0x00f0).w(this, FUNC(fgoal_state::row_w)); + map(0x00f1, 0x00f1).w(this, FUNC(fgoal_state::col_w)); + map(0x00f2, 0x00f2).w(this, FUNC(fgoal_state::row_w)); + map(0x00f3, 0x00f3).w(this, FUNC(fgoal_state::col_w)); + map(0x00f4, 0x00f7).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x00f8, 0x00fb).w(this, FUNC(fgoal_state::sound1_w)); + map(0x00fc, 0x00ff).w(this, FUNC(fgoal_state::sound2_w)); + + map(0x0100, 0x03ff).ram(); + map(0x4000, 0x7fff).ram().share("video_ram"); + + map(0x8000, 0x8000).w(this, FUNC(fgoal_state::ypos_w)); + map(0x8001, 0x8001).w(this, FUNC(fgoal_state::xpos_w)); + map(0x8002, 0x8002).w(this, FUNC(fgoal_state::color_w)); + + map(0xa000, 0xbfff).rom(); + map(0xd000, 0xffff).rom(); +} static INPUT_PORTS_START( fgoal ) diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index 9bf994e1139..d7de37c9427 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -1151,146 +1151,162 @@ DRIVER_INIT_MEMBER(fidel6502_state, chesster) // CSC, SU9, RSC -ADDRESS_MAP_START(fidel6502_state::csc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x4400) AM_RAM - AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x47fc) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x1800, 0x1803) AM_MIRROR(0x47fc) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel6502_state::su9_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1003) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x1800, 0x1803) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x2000, 0x3fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel6502_state::rsc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void fidel6502_state::csc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).mirror(0x4000).ram(); + map(0x0800, 0x0bff).mirror(0x4400).ram(); + map(0x1000, 0x1003).mirror(0x47fc).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1800, 0x1803).mirror(0x47fc).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x3fff).mirror(0x4000).rom(); + map(0xa000, 0xffff).rom(); +} + +void fidel6502_state::su9_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1003).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1800, 0x1803).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x3fff).rom(); + map(0xa000, 0xa7ff).rom(); + map(0xc000, 0xffff).rom(); +} + +void fidel6502_state::rsc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); + map(0x2000, 0x2003).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf000, 0xffff).rom(); +} // EAS, EAG -ADDRESS_MAP_START(fidel6502_state::eas_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r) - AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x7020, 0x7027) AM_WRITE(eas_segment_w) AM_READNOP - AM_RANGE(0x7030, 0x7037) AM_WRITE(eas_led_w) AM_READNOP - AM_RANGE(0x7050, 0x7050) AM_READ(eas_input_r) - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel6502_state::eag_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r) - AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x7020, 0x7027) AM_WRITE(eas_segment_w) AM_READNOP - AM_RANGE(0x7030, 0x7037) AM_WRITE(eas_led_w) AM_READNOP - AM_RANGE(0x7050, 0x7050) AM_READ(eas_input_r) - AM_RANGE(0x8000, 0xffff) AM_ROM //AM_WRITENOP -ADDRESS_MAP_END +void fidel6502_state::eas_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).ram().share("nvram"); + map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r)); + map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7020, 0x7027).w(this, FUNC(fidel6502_state::eas_segment_w)).nopr(); + map(0x7030, 0x7037).w(this, FUNC(fidel6502_state::eas_led_w)).nopr(); + map(0x7050, 0x7050).r(this, FUNC(fidel6502_state::eas_input_r)); + map(0x8000, 0x9fff).rom(); + map(0xc000, 0xffff).rom(); +} + +void fidel6502_state::eag_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r)); + map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7020, 0x7027).w(this, FUNC(fidel6502_state::eas_segment_w)).nopr(); + map(0x7030, 0x7037).w(this, FUNC(fidel6502_state::eas_led_w)).nopr(); + map(0x7050, 0x7050).r(this, FUNC(fidel6502_state::eas_input_r)); + map(0x8000, 0xffff).rom(); //AM_WRITENOP +} // SC9 -ADDRESS_MAP_START(fidel6502_state::sc9_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r) - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(sc9_control_w) - AM_RANGE(0x8000, 0x8007) AM_MIRROR(0x1ff8) AM_WRITE(sc9_led_w) AM_READNOP - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_READ(sc9_input_r) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void fidel6502_state::sc9_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r)); + map(0x6000, 0x6000).mirror(0x1fff).w(this, FUNC(fidel6502_state::sc9_control_w)); + map(0x8000, 0x8007).mirror(0x1ff8).w(this, FUNC(fidel6502_state::sc9_led_w)).nopr(); + map(0xa000, 0xa000).mirror(0x1fff).r(this, FUNC(fidel6502_state::sc9_input_r)); + map(0xc000, 0xffff).rom(); +} -ADDRESS_MAP_START(fidel6502_state::sc9d_map) - AM_IMPORT_FROM( sc9_map ) - AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_READ(sc9d_input_r) -ADDRESS_MAP_END +void fidel6502_state::sc9d_map(address_map &map) +{ + sc9_map(map); + map(0xa000, 0xa007).mirror(0x1ff8).r(this, FUNC(fidel6502_state::sc9d_input_r)); +} // SC12 -ADDRESS_MAP_START(fidel6502_state::sc12_trampoline) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(sc12_trampoline_r, sc12_trampoline_w) -ADDRESS_MAP_END +void fidel6502_state::sc12_trampoline(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(fidel6502_state::sc12_trampoline_r), FUNC(fidel6502_state::sc12_trampoline_w)); +} -ADDRESS_MAP_START(fidel6502_state::sc12_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x2000, 0x5fff) AM_READ(cartridge_r) - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(sc12_control_w) - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_READ(sc12_input_r) - AM_RANGE(0xc000, 0xcfff) AM_MIRROR(0x1000) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void fidel6502_state::sc12_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).ram(); + map(0x2000, 0x5fff).r(this, FUNC(fidel6502_state::cartridge_r)); + map(0x6000, 0x6000).mirror(0x1fff).w(this, FUNC(fidel6502_state::sc12_control_w)); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xa007).mirror(0x1ff8).r(this, FUNC(fidel6502_state::sc12_input_r)); + map(0xc000, 0xcfff).mirror(0x1000).rom(); + map(0xe000, 0xffff).rom(); +} // Excellence -ADDRESS_MAP_START(fidel6502_state::fexcel_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x3800) AM_RAM - AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcel_ttl_r, fexcel_ttl_w) +void fidel6502_state::fexcel_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x3800).ram(); + map(0x4000, 0x4007).mirror(0x3ff8).rw(this, FUNC(fidel6502_state::fexcel_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w)); //AM_RANGE(0x8000, 0x8000) AM_READNOP // checks for opening book module, but hw doesn't have a module slot - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xc000, 0xffff).rom(); +} -ADDRESS_MAP_START(fidel6502_state::fexcelp_map) - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcel_ttl_r, fexcel_ttl_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void fidel6502_state::fexcelp_map(address_map &map) +{ + map(0x0000, 0x1fff).mirror(0x2000).ram(); + map(0x4000, 0x4007).mirror(0x3ff8).rw(this, FUNC(fidel6502_state::fexcel_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w)); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(fidel6502_state::fexcelb_map) - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x4000, 0x4007) AM_MIRROR(0x3ff8) AM_READWRITE(fexcelb_ttl_r, fexcel_ttl_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void fidel6502_state::fexcelb_map(address_map &map) +{ + map(0x0000, 0x1fff).mirror(0x2000).ram(); + map(0x4000, 0x4007).mirror(0x3ff8).rw(this, FUNC(fidel6502_state::fexcelb_ttl_r), FUNC(fidel6502_state::fexcel_ttl_w)); + map(0x8000, 0xffff).rom(); +} // Designer Display, Phantom, Chesster -ADDRESS_MAP_START(fidel6502_state::fdesdis_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, fdesdis_control_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0x6007) AM_MIRROR(0x1ff8) AM_WRITE(fdesdis_lcd_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel6502_state::fphantom_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel6502_state::chesster_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, chesster_control_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVWRITE("dac8", dac_byte_interface, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel6502_state::kishon_map) - AM_IMPORT_FROM( chesster_map ) - AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x1ff8) AM_READWRITE(fdesdis_input_r, kishon_control_w) -ADDRESS_MAP_END +void fidel6502_state::fdesdis_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2007).mirror(0x1ff8).rw(this, FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::fdesdis_control_w)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x6000, 0x6007).mirror(0x1ff8).w(this, FUNC(fidel6502_state::fdesdis_lcd_w)); + map(0x8000, 0xffff).rom(); +} + +void fidel6502_state::fphantom_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + +void fidel6502_state::chesster_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2007).mirror(0x1ff8).rw(this, FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::chesster_control_w)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x6000, 0x6000).mirror(0x1fff).w("dac8", FUNC(dac_byte_interface::write)); + map(0x8000, 0xffff).rom(); +} + +void fidel6502_state::kishon_map(address_map &map) +{ + chesster_map(map); + map(0x2000, 0x2007).mirror(0x1ff8).rw(this, FUNC(fidel6502_state::fdesdis_input_r), FUNC(fidel6502_state::kishon_control_w)); +} diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp index 324523b9f20..5e7ffbb40ac 100644 --- a/src/mame/drivers/fidel68k.cpp +++ b/src/mame/drivers/fidel68k.cpp @@ -392,47 +392,52 @@ WRITE8_MEMBER(fidel68k_state::eag_mux_w) // Excel 68000 -ADDRESS_MAP_START(fidel68k_state::fex68k_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_leds_w, 0x00ff) - AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_7seg_w, 0xff00) - AM_RANGE(0x044000, 0x047fff) AM_RAM - AM_RANGE(0x100000, 0x10000f) AM_MIRROR(0x03fff0) AM_READ8(eag_input1_r, 0x00ff) - AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x03fff0) AM_WRITE8(fex68k_mux_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::fex68km2_map) - AM_IMPORT_FROM( fex68k_map ) - AM_RANGE(0x200000, 0x21ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::fex68km3_map) - AM_IMPORT_FROM( fex68k_map ) - AM_RANGE(0x200000, 0x20ffff) AM_RAM -ADDRESS_MAP_END +void fidel68k_state::fex68k_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x000000, 0x00000f).mirror(0x00fff0).w(this, FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff); + map(0x000000, 0x00000f).mirror(0x00fff0).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00); + map(0x044000, 0x047fff).ram(); + map(0x100000, 0x10000f).mirror(0x03fff0).r(this, FUNC(fidel68k_state::eag_input1_r)).umask16(0x00ff); + map(0x140000, 0x14000f).mirror(0x03fff0).w(this, FUNC(fidel68k_state::fex68k_mux_w)).umask16(0x00ff); +} + +void fidel68k_state::fex68km2_map(address_map &map) +{ + fex68k_map(map); + map(0x200000, 0x21ffff).ram(); +} + +void fidel68k_state::fex68km3_map(address_map &map) +{ + fex68k_map(map); + map(0x200000, 0x20ffff).ram(); +} // Designer Master -ADDRESS_MAP_START(fidel68k_state::fdes2265_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x000000, 0x00000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff) - AM_RANGE(0x044000, 0x047fff) AM_RAM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x140000, 0x14000f) AM_READ8(fdes68k_input_r, 0xff00) - AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::fdes2325_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x10000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff00ff) - AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff00ff) - AM_RANGE(0x180000, 0x18000f) AM_READ8(fdes68k_input_r, 0xff00ff00) - AM_RANGE(0x300000, 0x37ffff) AM_RAM - AM_RANGE(0x500000, 0x507fff) AM_RAM -ADDRESS_MAP_END +void fidel68k_state::fdes2265_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).rom(); + map(0x000000, 0x00000f).w(this, FUNC(fidel68k_state::fdes68k_lcd_w)).umask16(0x00ff); + map(0x044000, 0x047fff).ram(); + map(0x100000, 0x10ffff).ram(); + map(0x140000, 0x14000f).r(this, FUNC(fidel68k_state::fdes68k_input_r)).umask16(0xff00); + map(0x140000, 0x14000f).w(this, FUNC(fidel68k_state::fdes68k_control_w)).umask16(0x00ff); +} + +void fidel68k_state::fdes2325_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x10000f).w(this, FUNC(fidel68k_state::fdes68k_lcd_w)).umask32(0x00ff00ff); + map(0x140000, 0x14000f).w(this, FUNC(fidel68k_state::fdes68k_control_w)).umask32(0x00ff00ff); + map(0x180000, 0x18000f).r(this, FUNC(fidel68k_state::fdes68k_input_r)).umask32(0xff00ff00); + map(0x300000, 0x37ffff).ram(); + map(0x500000, 0x507fff).ram(); +} // EAG @@ -443,44 +448,47 @@ DRIVER_INIT_MEMBER(fidel68k_state, eag) m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x200000 + m_ram->size() - 1, m_ram->pointer()); } -ADDRESS_MAP_START(fidel68k_state::eag_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x104000, 0x107fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00) AM_READNOP - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff) - AM_RANGE(0x400000, 0x407fff) AM_READ8(cartridge_r, 0xff00) - AM_RANGE(0x400000, 0x400001) AM_WRITE8(eag_mux_w, 0x00ff) - AM_RANGE(0x400002, 0x400007) AM_WRITENOP // ? - AM_RANGE(0x604000, 0x607fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x700002, 0x700003) AM_READ8(eag_input2_r, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::eagv7_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x104000, 0x107fff) AM_RAM - AM_RANGE(0x200000, 0x2fffff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00ff00) AM_READNOP - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff00ff) - AM_RANGE(0x400000, 0x407fff) AM_READ8(cartridge_r, 0xff00ff00) - AM_RANGE(0x400000, 0x400003) AM_WRITE8(eag_mux_w, 0x00ff0000) - AM_RANGE(0x400004, 0x400007) AM_WRITENOP // ? - AM_RANGE(0x604000, 0x607fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x700000, 0x700003) AM_READ8(eag_input2_r, 0x000000ff) - AM_RANGE(0x800000, 0x807fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::eagv11_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM - AM_RANGE(0x00200000, 0x003fffff) AM_RAM - AM_RANGE(0x00b00000, 0x00b0000f) AM_MIRROR(0x00000010) AM_WRITE8(eag_7seg_w, 0xff00ff00) AM_READNOP - AM_RANGE(0x00b00000, 0x00b0000f) AM_MIRROR(0x00000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff00ff) - AM_RANGE(0x00c00000, 0x00c07fff) AM_READ8(cartridge_r, 0xff00ff00) - AM_RANGE(0x00c00000, 0x00c00003) AM_WRITE8(eag_mux_w, 0x00ff0000) - AM_RANGE(0x00c00004, 0x00c00007) AM_WRITENOP // ? - AM_RANGE(0x00e04000, 0x00e07fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x00f00000, 0x00f00003) AM_READ8(eag_input2_r, 0x000000ff) - AM_RANGE(0x01000000, 0x0101ffff) AM_RAM -ADDRESS_MAP_END +void fidel68k_state::eag_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x104000, 0x107fff).ram(); + map(0x300000, 0x30000f).mirror(0x000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00).nopr(); + map(0x300000, 0x30000f).mirror(0x000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff); + map(0x400000, 0x407fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask16(0xff00); + map(0x400001, 0x400001).w(this, FUNC(fidel68k_state::eag_mux_w)); + map(0x400002, 0x400007).nopw(); // ? + map(0x604000, 0x607fff).ram().share("nvram"); + map(0x700003, 0x700003).r(this, FUNC(fidel68k_state::eag_input2_r)); +} + +void fidel68k_state::eagv7_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x104000, 0x107fff).ram(); + map(0x200000, 0x2fffff).ram(); + map(0x300000, 0x30000f).mirror(0x000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr(); + map(0x300000, 0x30000f).mirror(0x000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff); + map(0x400000, 0x407fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00); + map(0x400001, 0x400001).w(this, FUNC(fidel68k_state::eag_mux_w)); + map(0x400004, 0x400007).nopw(); // ? + map(0x604000, 0x607fff).ram().share("nvram"); + map(0x700003, 0x700003).r(this, FUNC(fidel68k_state::eag_input2_r)); + map(0x800000, 0x807fff).ram(); +} + +void fidel68k_state::eagv11_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); + map(0x00200000, 0x003fffff).ram(); + map(0x00b00000, 0x00b0000f).mirror(0x00000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr(); + map(0x00b00000, 0x00b0000f).mirror(0x00000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff); + map(0x00c00000, 0x00c07fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00); + map(0x00c00001, 0x00c00001).w(this, FUNC(fidel68k_state::eag_mux_w)); + map(0x00c00004, 0x00c00007).nopw(); // ? + map(0x00e04000, 0x00e07fff).ram().share("nvram"); + map(0x00f00003, 0x00f00003).r(this, FUNC(fidel68k_state::eag_input2_r)); + map(0x01000000, 0x0101ffff).ram(); +} diff --git a/src/mame/drivers/fidelmcs48.cpp b/src/mame/drivers/fidelmcs48.cpp index b3a6fcdbab2..72880a7e87e 100644 --- a/src/mame/drivers/fidelmcs48.cpp +++ b/src/mame/drivers/fidelmcs48.cpp @@ -116,9 +116,10 @@ READ_LINE_MEMBER(fidelmcs48_state::sc6_input7_r) // SC6 -ADDRESS_MAP_START(fidelmcs48_state::sc6_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void fidelmcs48_state::sc6_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index 63bbf17ab6d..f067ae5d43a 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -1126,62 +1126,70 @@ READ8_MEMBER(fidelz80_state::dsc_input_r) // CC10 and VCC/UVC -ADDRESS_MAP_START(fidelz80_state::cc10_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x0f00) AM_RAM - AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0f00) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidelz80_state::vcc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidelz80_state::vcc_io) - ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END +void fidelz80_state::cc10_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fff); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x10ff).mirror(0x0f00).ram(); + map(0x3000, 0x30ff).mirror(0x0f00).ram(); +} + +void fidelz80_state::vcc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x43ff).mirror(0x1c00).ram(); +} + +void fidelz80_state::vcc_io(address_map &map) +{ + map.global_mask(0x03); + map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} // BCC -ADDRESS_MAP_START(fidelz80_state::bcc_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0f00) AM_RAM -ADDRESS_MAP_END +void fidelz80_state::bcc_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fff); + map(0x0000, 0x0fff).rom(); + map(0x3000, 0x30ff).mirror(0x0f00).ram(); +} -ADDRESS_MAP_START(fidelz80_state::bcc_io) - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE(0x00, 0x07) AM_READWRITE(bcc_input_r, bcc_control_w) -ADDRESS_MAP_END +void fidelz80_state::bcc_io(address_map &map) +{ + map.global_mask(0x07); + map(0x00, 0x07).rw(this, FUNC(fidelz80_state::bcc_input_r), FUNC(fidelz80_state::bcc_control_w)); +} // SCC -ADDRESS_MAP_START(fidelz80_state::scc_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x5000, 0x50ff) AM_RAM -ADDRESS_MAP_END +void fidelz80_state::scc_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x5000, 0x50ff).ram(); +} -ADDRESS_MAP_START(fidelz80_state::scc_io) - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE(0x00, 0x07) AM_READWRITE(scc_input_r, scc_control_w) -ADDRESS_MAP_END +void fidelz80_state::scc_io(address_map &map) +{ + map.global_mask(0x07); + map(0x00, 0x07).rw(this, FUNC(fidelz80_state::scc_input_r), FUNC(fidelz80_state::scc_control_w)); +} // VSC -ADDRESS_MAP_START(fidelz80_state::vsc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_MIRROR(0x1000) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM -ADDRESS_MAP_END +void fidelz80_state::vsc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).mirror(0x1000).rom(); + map(0x6000, 0x63ff).mirror(0x1c00).ram(); +} // VSC io: A2 is 8255 _CE, A3 is Z80 PIO _CE - in theory, both chips can be accessed simultaneously READ8_MEMBER(fidelz80_state::vsc_io_trampoline_r) @@ -1203,37 +1211,41 @@ WRITE8_MEMBER(fidelz80_state::vsc_io_trampoline_w) m_z80pio->write(space, offset & 3, data); } -ADDRESS_MAP_START(fidelz80_state::vsc_io) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x00, 0x0f) AM_READWRITE(vsc_io_trampoline_r, vsc_io_trampoline_w) -ADDRESS_MAP_END +void fidelz80_state::vsc_io(address_map &map) +{ + map.global_mask(0x0f); + map(0x00, 0x0f).rw(this, FUNC(fidelz80_state::vsc_io_trampoline_r), FUNC(fidelz80_state::vsc_io_trampoline_w)); +} // VBRC -ADDRESS_MAP_START(fidelz80_state::vbrc_main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(vbrc_speech_w) -ADDRESS_MAP_END +void fidelz80_state::vbrc_main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x63ff).mirror(0x1c00).ram(); + map(0xe000, 0xe000).mirror(0x1fff).w(this, FUNC(fidelz80_state::vbrc_speech_w)); +} -ADDRESS_MAP_START(fidelz80_state::vbrc_main_io) - ADDRESS_MAP_GLOBAL_MASK(0x01) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("mcu", i8041_device, upi41_master_r, upi41_master_w) -ADDRESS_MAP_END +void fidelz80_state::vbrc_main_io(address_map &map) +{ + map.global_mask(0x01); + map(0x00, 0x01).rw(m_mcu, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w)); +} // DSC -ADDRESS_MAP_START(fidelz80_state::dsc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x1fff) AM_WRITE(dsc_control_w) - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_WRITE(dsc_select_w) - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(dsc_input_r) - AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x1c00) AM_RAM -ADDRESS_MAP_END +void fidelz80_state::dsc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x4000).mirror(0x1fff).w(this, FUNC(fidelz80_state::dsc_control_w)); + map(0x6000, 0x6000).mirror(0x1fff).w(this, FUNC(fidelz80_state::dsc_select_w)); + map(0x8000, 0x8000).mirror(0x1fff).r(this, FUNC(fidelz80_state::dsc_input_r)); + map(0xa000, 0xa3ff).mirror(0x1c00).ram(); +} diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp index 4ccbbf3aeb8..eb3db65eeb8 100644 --- a/src/mame/drivers/finalizr.cpp +++ b/src/mame/drivers/finalizr.cpp @@ -104,41 +104,44 @@ WRITE8_MEMBER(finalizr_state::i8039_T0_w) */ } -ADDRESS_MAP_START(finalizr_state::main_map) - AM_RANGE(0x0001, 0x0001) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x0003, 0x0003) AM_WRITE(finalizr_videoctrl_w) - AM_RANGE(0x0004, 0x0004) AM_WRITE(finalizr_flipscreen_w) +void finalizr_state::main_map(address_map &map) +{ + map(0x0001, 0x0001).writeonly().share("scroll"); + map(0x0003, 0x0003).w(this, FUNC(finalizr_state::finalizr_videoctrl_w)); + map(0x0004, 0x0004).w(this, FUNC(finalizr_state::finalizr_flipscreen_w)); // AM_RANGE(0x0020, 0x003f) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW3") - AM_RANGE(0x0808, 0x0808) AM_READ_PORT("DSW2") - AM_RANGE(0x0810, 0x0810) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0811, 0x0811) AM_READ_PORT("P1") - AM_RANGE(0x0812, 0x0812) AM_READ_PORT("P2") - AM_RANGE(0x0813, 0x0813) AM_READ_PORT("DSW1") - AM_RANGE(0x0818, 0x0818) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0819, 0x0819) AM_WRITE(finalizr_coin_w) - AM_RANGE(0x081a, 0x081a) AM_DEVWRITE("snsnd", sn76489a_device, write) /* This address triggers the SN chip to read the data port. */ - AM_RANGE(0x081b, 0x081b) AM_WRITENOP /* Loads the snd command into the snd latch */ - AM_RANGE(0x081c, 0x081c) AM_WRITE(finalizr_i8039_irq_w) /* custom sound chip */ - AM_RANGE(0x081d, 0x081d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* custom sound chip */ - AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("colorram2") - AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x3000, 0x31ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3200, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("spriteram_2") - AM_RANGE(0x3a00, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(finalizr_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(finalizr_state::sound_io_map) - AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0x0800, 0x0800).portr("DSW3"); + map(0x0808, 0x0808).portr("DSW2"); + map(0x0810, 0x0810).portr("SYSTEM"); + map(0x0811, 0x0811).portr("P1"); + map(0x0812, 0x0812).portr("P2"); + map(0x0813, 0x0813).portr("DSW1"); + map(0x0818, 0x0818).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0819, 0x0819).w(this, FUNC(finalizr_state::finalizr_coin_w)); + map(0x081a, 0x081a).w("snsnd", FUNC(sn76489a_device::write)); /* This address triggers the SN chip to read the data port. */ + map(0x081b, 0x081b).nopw(); /* Loads the snd command into the snd latch */ + map(0x081c, 0x081c).w(this, FUNC(finalizr_state::finalizr_i8039_irq_w)); /* custom sound chip */ + map(0x081d, 0x081d).w("soundlatch", FUNC(generic_latch_8_device::write)); /* custom sound chip */ + map(0x2000, 0x23ff).ram().share("colorram"); + map(0x2400, 0x27ff).ram().share("videoram"); + map(0x2800, 0x2bff).ram().share("colorram2"); + map(0x2c00, 0x2fff).ram().share("videoram2"); + map(0x3000, 0x31ff).ram().share("spriteram"); + map(0x3200, 0x37ff).ram(); + map(0x3800, 0x39ff).ram().share("spriteram_2"); + map(0x3a00, 0x3fff).ram(); + map(0x4000, 0xffff).rom(); +} + +void finalizr_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void finalizr_state::sound_io_map(address_map &map) +{ + map(0x00, 0xff).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( finalizr ) diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp index cab1f94f253..f551f34a0fc 100644 --- a/src/mame/drivers/fireball.cpp +++ b/src/mame/drivers/fireball.cpp @@ -293,18 +293,20 @@ WRITE8_MEMBER(fireball_state::p3_w) * Memory Map Information * *************************/ -ADDRESS_MAP_START(fireball_state::fireball_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void fireball_state::fireball_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} -ADDRESS_MAP_START(fireball_state::fireball_io_map) +void fireball_state::fireball_io_map(address_map &map) +{ - AM_RANGE(0x00, 0x01)AM_READWRITE(io_00_r,io_00_w) - AM_RANGE(0x02, 0x03)AM_READWRITE(io_02_r,io_02_w) - AM_RANGE(0x04, 0x05)AM_READWRITE(io_04_r,io_04_w) - AM_RANGE(0x06, 0x07)AM_READWRITE(io_06_r,io_06_w) + map(0x00, 0x01).rw(this, FUNC(fireball_state::io_00_r), FUNC(fireball_state::io_00_w)); + map(0x02, 0x03).rw(this, FUNC(fireball_state::io_02_r), FUNC(fireball_state::io_02_w)); + map(0x04, 0x05).rw(this, FUNC(fireball_state::io_04_r), FUNC(fireball_state::io_04_w)); + map(0x06, 0x07).rw(this, FUNC(fireball_state::io_06_r), FUNC(fireball_state::io_06_w)); -ADDRESS_MAP_END +} /************************* diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp index 95a421d715a..0f54e31fc8e 100644 --- a/src/mame/drivers/firebeat.cpp +++ b/src/mame/drivers/firebeat.cpp @@ -933,54 +933,58 @@ MACHINE_START_MEMBER(firebeat_state,firebeat) m_maincpu->ppcdrc_add_fastram(0x00000000, 0x01ffffff, false, m_work_ram); } -ADDRESS_MAP_START(firebeat_state::firebeat_map) - AM_RANGE(0x00000000, 0x01ffffff) AM_RAM AM_SHARE("work_ram") - AM_RANGE(0x70000000, 0x70000fff) AM_READWRITE8(midi_uart_r, midi_uart_w, 0xff000000) - AM_RANGE(0x70006000, 0x70006003) AM_WRITE(extend_board_irq_w) - AM_RANGE(0x70008000, 0x7000800f) AM_READ(keyboard_wheel_r) - AM_RANGE(0x7000a000, 0x7000a003) AM_READ(extend_board_irq_r) - AM_RANGE(0x74000000, 0x740003ff) AM_READWRITE(ppc_spu_share_r, ppc_spu_share_w) // SPU shared RAM - AM_RANGE(0x7d000200, 0x7d00021f) AM_READ(cabinet_r) - AM_RANGE(0x7d000340, 0x7d000347) AM_READ(sensor_r) - AM_RANGE(0x7d000400, 0x7d000403) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff0000) - AM_RANGE(0x7d000800, 0x7d000803) AM_READ(input_r) - AM_RANGE(0x7d400000, 0x7d5fffff) AM_DEVREADWRITE8("flash_main", fujitsu_29f016a_device, read, write, 0xffffffff) - AM_RANGE(0x7d800000, 0x7d9fffff) AM_DEVREADWRITE8("flash_snd1", fujitsu_29f016a_device, read, write, 0xffffffff) - AM_RANGE(0x7da00000, 0x7dbfffff) AM_DEVREADWRITE8("flash_snd2", fujitsu_29f016a_device, read, write, 0xffffffff) - AM_RANGE(0x7dc00000, 0x7dc0000f) AM_DEVREADWRITE8("duart_com", pc16552_device, read, write, 0xffffffff) - AM_RANGE(0x7e000000, 0x7e00003f) AM_DEVREADWRITE8("rtc", rtc65271_device, rtc_r, rtc_w, 0xffffffff) - AM_RANGE(0x7e000100, 0x7e00013f) AM_DEVREADWRITE8("rtc", rtc65271_device, xram_r, xram_w, 0xffffffff) - AM_RANGE(0x7e800000, 0x7e8000ff) AM_DEVREADWRITE("gcu0", k057714_device, read, write) - AM_RANGE(0x7fe00000, 0x7fe0000f) AM_READWRITE(ata_command_r, ata_command_w) - AM_RANGE(0x7fe80000, 0x7fe8000f) AM_READWRITE(ata_control_r, ata_control_w) - AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(firebeat_state::firebeat2_map) - AM_IMPORT_FROM(firebeat_map) - AM_RANGE(0x7e800100, 0x7e8001ff) AM_DEVREADWRITE("gcu1", k057714_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(firebeat_state::spu_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_READ(spu_unk_r) - AM_RANGE(0x220000, 0x220001) AM_WRITE(spu_220000_w) - AM_RANGE(0x230000, 0x230001) AM_WRITE(spu_irq_ack_w) - AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_sdram_bank_w) - AM_RANGE(0x280000, 0x2807ff) AM_READWRITE(m68k_spu_share_r, m68k_spu_share_w) - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("spu_ata", ata_interface_device, read_cs0, write_cs0) - AM_RANGE(0x340000, 0x34000f) AM_DEVREADWRITE("spu_ata", ata_interface_device, read_cs1, write_cs1) - AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rf5c400", rf5c400_device, rf5c400_r, rf5c400_w) - AM_RANGE(0x800000, 0x83ffff) AM_RAM // SDRAM - AM_RANGE(0xfc0000, 0xffffff) AM_RAM // SDRAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(firebeat_state::ymz280b_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x1fffff) AM_DEVREAD("flash_snd1", fujitsu_29f016a_device, read) - AM_RANGE(0x200000, 0x3fffff) AM_DEVREAD("flash_snd2", fujitsu_29f016a_device, read) -ADDRESS_MAP_END +void firebeat_state::firebeat_map(address_map &map) +{ + map(0x00000000, 0x01ffffff).ram().share("work_ram"); + map(0x70000000, 0x70000fff).rw(this, FUNC(firebeat_state::midi_uart_r), FUNC(firebeat_state::midi_uart_w)).umask32(0xff000000); + map(0x70006000, 0x70006003).w(this, FUNC(firebeat_state::extend_board_irq_w)); + map(0x70008000, 0x7000800f).r(this, FUNC(firebeat_state::keyboard_wheel_r)); + map(0x7000a000, 0x7000a003).r(this, FUNC(firebeat_state::extend_board_irq_r)); + map(0x74000000, 0x740003ff).rw(this, FUNC(firebeat_state::ppc_spu_share_r), FUNC(firebeat_state::ppc_spu_share_w)); // SPU shared RAM + map(0x7d000200, 0x7d00021f).r(this, FUNC(firebeat_state::cabinet_r)); + map(0x7d000340, 0x7d000347).r(this, FUNC(firebeat_state::sensor_r)); + map(0x7d000400, 0x7d000401).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); + map(0x7d000800, 0x7d000803).r(this, FUNC(firebeat_state::input_r)); + map(0x7d400000, 0x7d5fffff).rw("flash_main", FUNC(fujitsu_29f016a_device::read), FUNC(fujitsu_29f016a_device::write)); + map(0x7d800000, 0x7d9fffff).rw("flash_snd1", FUNC(fujitsu_29f016a_device::read), FUNC(fujitsu_29f016a_device::write)); + map(0x7da00000, 0x7dbfffff).rw("flash_snd2", FUNC(fujitsu_29f016a_device::read), FUNC(fujitsu_29f016a_device::write)); + map(0x7dc00000, 0x7dc0000f).rw(m_duart_com, FUNC(pc16552_device::read), FUNC(pc16552_device::write)); + map(0x7e000000, 0x7e00003f).rw("rtc", FUNC(rtc65271_device::rtc_r), FUNC(rtc65271_device::rtc_w)); + map(0x7e000100, 0x7e00013f).rw("rtc", FUNC(rtc65271_device::xram_r), FUNC(rtc65271_device::xram_w)); + map(0x7e800000, 0x7e8000ff).rw("gcu0", FUNC(k057714_device::read), FUNC(k057714_device::write)); + map(0x7fe00000, 0x7fe0000f).rw(this, FUNC(firebeat_state::ata_command_r), FUNC(firebeat_state::ata_command_w)); + map(0x7fe80000, 0x7fe8000f).rw(this, FUNC(firebeat_state::ata_control_r), FUNC(firebeat_state::ata_control_w)); + map(0x7ff80000, 0x7fffffff).rom().region("user1", 0); /* System BIOS */ +} + +void firebeat_state::firebeat2_map(address_map &map) +{ + firebeat_map(map); + map(0x7e800100, 0x7e8001ff).rw("gcu1", FUNC(k057714_device::read), FUNC(k057714_device::write)); +} + +void firebeat_state::spu_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x13ffff).ram(); + map(0x200000, 0x200001).r(this, FUNC(firebeat_state::spu_unk_r)); + map(0x220000, 0x220001).w(this, FUNC(firebeat_state::spu_220000_w)); + map(0x230000, 0x230001).w(this, FUNC(firebeat_state::spu_irq_ack_w)); + map(0x260000, 0x260001).w(this, FUNC(firebeat_state::spu_sdram_bank_w)); + map(0x280000, 0x2807ff).rw(this, FUNC(firebeat_state::m68k_spu_share_r), FUNC(firebeat_state::m68k_spu_share_w)); + map(0x300000, 0x30000f).rw(m_spuata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); + map(0x340000, 0x34000f).rw(m_spuata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); + map(0x400000, 0x400fff).rw("rf5c400", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); + map(0x800000, 0x83ffff).ram(); // SDRAM + map(0xfc0000, 0xffffff).ram(); // SDRAM +} + +void firebeat_state::ymz280b_map(address_map &map) +{ + map.global_mask(0x3fffff); + map(0x000000, 0x1fffff).r("flash_snd1", FUNC(fujitsu_29f016a_device::read)); + map(0x200000, 0x3fffff).r("flash_snd2", FUNC(fujitsu_29f016a_device::read)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp index a5c4a36964c..f6dce8ee2e7 100644 --- a/src/mame/drivers/firefox.cpp +++ b/src/mame/drivers/firefox.cpp @@ -555,36 +555,37 @@ void firefox_state::machine_start() * *************************************/ -ADDRESS_MAP_START(firefox_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(tileram_w) AM_SHARE("tileram") - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2800, 0x2aff) AM_RAM_WRITE(sprite_palette_w) AM_SHARE("sprite_palette") - AM_RANGE(0x2b00, 0x2b00) AM_MIRROR(0x04ff) AM_WRITE(firefox_objram_bank_w) - AM_RANGE(0x2c00, 0x2eff) AM_RAM_WRITE(tile_palette_w) AM_SHARE("tile_palette") - AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x40ff) AM_READWRITE(nvram_r, nvram_w) /* NOVRAM */ - AM_RANGE(0x4100, 0x4100) AM_MIRROR(0x00f8) AM_READ_PORT("rdin0") /* RDIN0 */ - AM_RANGE(0x4101, 0x4101) AM_MIRROR(0x00f8) AM_READ_PORT("rdin1") /* RDIN1 */ - AM_RANGE(0x4102, 0x4102) AM_MIRROR(0x00f8) AM_READ(firefox_disc_status_r) /* RDIN2 */ - AM_RANGE(0x4103, 0x4103) AM_MIRROR(0x00f8) AM_READ_PORT("opt0") /* OPT0 */ - AM_RANGE(0x4104, 0x4104) AM_MIRROR(0x00f8) AM_READ_PORT("opt1") /* OPT1 */ - AM_RANGE(0x4105, 0x4105) AM_MIRROR(0x00f8) AM_READ(firefox_disc_data_r) /* DREAD */ - AM_RANGE(0x4106, 0x4106) AM_MIRROR(0x00f8) AM_READ(sound_to_main_r) /* RDSOUND */ - AM_RANGE(0x4107, 0x4107) AM_MIRROR(0x00f8) AM_READ(adc_r) /* ADC */ - AM_RANGE(0x4200, 0x4200) AM_MIRROR(0x0047) AM_WRITE(main_irq_clear_w) /* RSTIRQ */ - AM_RANGE(0x4208, 0x4208) AM_MIRROR(0x0047) AM_WRITE(main_firq_clear_w) /* RSTFIRQ */ - AM_RANGE(0x4210, 0x4210) AM_MIRROR(0x0047) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* WDCLK */ - AM_RANGE(0x4218, 0x4218) AM_MIRROR(0x0047) AM_WRITE(firefox_disc_read_w) /* DSKREAD */ - AM_RANGE(0x4220, 0x4223) AM_MIRROR(0x0044) AM_WRITE(adc_select_w) /* ADCSTART */ - AM_RANGE(0x4230, 0x4230) AM_MIRROR(0x0047) AM_WRITE(self_reset_w) /* AMUCK */ - AM_RANGE(0x4280, 0x4287) AM_MIRROR(0x0040) AM_DEVWRITE("latch0", ls259_device, write_d7) - AM_RANGE(0x4288, 0x428f) AM_MIRROR(0x0040) AM_DEVWRITE("latch1", ls259_device, write_d7) - AM_RANGE(0x4290, 0x4290) AM_MIRROR(0x0047) AM_WRITE(rom_bank_w) /* WRTREG */ - AM_RANGE(0x4298, 0x4298) AM_MIRROR(0x0047) AM_WRITE(main_to_sound_w) /* WRSOUND */ - AM_RANGE(0x42a0, 0x42a0) AM_MIRROR(0x0047) AM_WRITE(firefox_disc_data_w) /* DSKLATCH */ - AM_RANGE(0x4400, 0xffff) AM_ROM -ADDRESS_MAP_END +void firefox_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1fff).ram().w(this, FUNC(firefox_state::tileram_w)).share("tileram"); + map(0x2000, 0x27ff).ram().share("spriteram"); + map(0x2800, 0x2aff).ram().w(this, FUNC(firefox_state::sprite_palette_w)).share("sprite_palette"); + map(0x2b00, 0x2b00).mirror(0x04ff).w(this, FUNC(firefox_state::firefox_objram_bank_w)); + map(0x2c00, 0x2eff).ram().w(this, FUNC(firefox_state::tile_palette_w)).share("tile_palette"); + map(0x3000, 0x3fff).bankr("bank1"); + map(0x4000, 0x40ff).rw(this, FUNC(firefox_state::nvram_r), FUNC(firefox_state::nvram_w)); /* NOVRAM */ + map(0x4100, 0x4100).mirror(0x00f8).portr("rdin0"); /* RDIN0 */ + map(0x4101, 0x4101).mirror(0x00f8).portr("rdin1"); /* RDIN1 */ + map(0x4102, 0x4102).mirror(0x00f8).r(this, FUNC(firefox_state::firefox_disc_status_r)); /* RDIN2 */ + map(0x4103, 0x4103).mirror(0x00f8).portr("opt0"); /* OPT0 */ + map(0x4104, 0x4104).mirror(0x00f8).portr("opt1"); /* OPT1 */ + map(0x4105, 0x4105).mirror(0x00f8).r(this, FUNC(firefox_state::firefox_disc_data_r)); /* DREAD */ + map(0x4106, 0x4106).mirror(0x00f8).r(this, FUNC(firefox_state::sound_to_main_r)); /* RDSOUND */ + map(0x4107, 0x4107).mirror(0x00f8).r(this, FUNC(firefox_state::adc_r)); /* ADC */ + map(0x4200, 0x4200).mirror(0x0047).w(this, FUNC(firefox_state::main_irq_clear_w)); /* RSTIRQ */ + map(0x4208, 0x4208).mirror(0x0047).w(this, FUNC(firefox_state::main_firq_clear_w)); /* RSTFIRQ */ + map(0x4210, 0x4210).mirror(0x0047).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* WDCLK */ + map(0x4218, 0x4218).mirror(0x0047).w(this, FUNC(firefox_state::firefox_disc_read_w)); /* DSKREAD */ + map(0x4220, 0x4223).mirror(0x0044).w(this, FUNC(firefox_state::adc_select_w)); /* ADCSTART */ + map(0x4230, 0x4230).mirror(0x0047).w(this, FUNC(firefox_state::self_reset_w)); /* AMUCK */ + map(0x4280, 0x4287).mirror(0x0040).w("latch0", FUNC(ls259_device::write_d7)); + map(0x4288, 0x428f).mirror(0x0040).w("latch1", FUNC(ls259_device::write_d7)); + map(0x4290, 0x4290).mirror(0x0047).w(this, FUNC(firefox_state::rom_bank_w)); /* WRTREG */ + map(0x4298, 0x4298).mirror(0x0047).w(this, FUNC(firefox_state::main_to_sound_w)); /* WRSOUND */ + map(0x42a0, 0x42a0).mirror(0x0047).w(this, FUNC(firefox_state::firefox_disc_data_w)); /* DSKLATCH */ + map(0x4400, 0xffff).rom(); +} @@ -594,18 +595,19 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(firefox_state::audio_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x087f) AM_MIRROR(0x0700) AM_RAM /* RIOT ram */ - AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x0760) AM_DEVREADWRITE("riot", riot6532_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_READ(main_to_sound_r) - AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_to_main_w) - AM_RANGE(0x2000, 0x200f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x2800, 0x280f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x3000, 0x300f) AM_DEVREADWRITE("pokey3", pokey_device, read, write) - AM_RANGE(0x3800, 0x380f) AM_DEVREADWRITE("pokey4", pokey_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void firefox_state::audio_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x087f).mirror(0x0700).ram(); /* RIOT ram */ + map(0x0880, 0x089f).mirror(0x0760).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x1000, 0x1000).r(this, FUNC(firefox_state::main_to_sound_r)); + map(0x1800, 0x1800).w(this, FUNC(firefox_state::sound_to_main_w)); + map(0x2000, 0x200f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x2800, 0x280f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x3000, 0x300f).rw("pokey3", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x3800, 0x380f).rw("pokey4", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/firetrap.cpp b/src/mame/drivers/firetrap.cpp index cec342c6ec2..56f73459073 100644 --- a/src/mame/drivers/firetrap.cpp +++ b/src/mame/drivers/firetrap.cpp @@ -347,52 +347,56 @@ WRITE8_MEMBER(firetrap_state::flip_screen_w) flip_screen_set(data); } -ADDRESS_MAP_START(firetrap_state::firetrap_base_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(firetrap_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(firetrap_bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(firetrap_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xe800, 0xe97f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* IRQ acknowledge */ - AM_RANGE(0xf001, 0xf001) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf002, 0xf002) AM_WRITE(firetrap_bankselect_w) - AM_RANGE(0xf003, 0xf003) AM_WRITE(flip_screen_w) - AM_RANGE(0xf004, 0xf004) AM_WRITE(firetrap_nmi_disable_w) - AM_RANGE(0xf005, 0xf005) AM_WRITE(firetrap_8751_w) - AM_RANGE(0xf008, 0xf009) AM_WRITE(firetrap_bg1_scrollx_w) - AM_RANGE(0xf00a, 0xf00b) AM_WRITE(firetrap_bg1_scrolly_w) - AM_RANGE(0xf00c, 0xf00d) AM_WRITE(firetrap_bg2_scrollx_w) - AM_RANGE(0xf00e, 0xf00f) AM_WRITE(firetrap_bg2_scrolly_w) - AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0") - AM_RANGE(0xf011, 0xf011) AM_READ_PORT("IN1") - AM_RANGE(0xf012, 0xf012) AM_READ_PORT("IN2") - AM_RANGE(0xf013, 0xf013) AM_READ_PORT("DSW0") - AM_RANGE(0xf014, 0xf014) AM_READ_PORT("DSW1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(firetrap_state::firetrap_map) - AM_IMPORT_FROM( firetrap_base_map ) - AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(firetrap_state::firetrap_bootleg_map) - AM_IMPORT_FROM( firetrap_base_map ) - AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_bootleg_r) - AM_RANGE(0xf800, 0xf8ff) AM_ROM /* extra ROM in the bootleg with unprotection code */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(firetrap_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_data_w) - AM_RANGE(0x2400, 0x2400) AM_WRITE(sound_flip_flop_w) - AM_RANGE(0x2800, 0x2800) AM_WRITE(sound_bankselect_w) - AM_RANGE(0x3400, 0x3400) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void firetrap_state::firetrap_base_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().w(this, FUNC(firetrap_state::firetrap_bg1videoram_w)).share("bg1videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(firetrap_state::firetrap_bg2videoram_w)).share("bg2videoram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(firetrap_state::firetrap_fgvideoram_w)).share("fgvideoram"); + map(0xe800, 0xe97f).ram().share("spriteram"); + map(0xf000, 0xf000).nopw(); /* IRQ acknowledge */ + map(0xf001, 0xf001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf002, 0xf002).w(this, FUNC(firetrap_state::firetrap_bankselect_w)); + map(0xf003, 0xf003).w(this, FUNC(firetrap_state::flip_screen_w)); + map(0xf004, 0xf004).w(this, FUNC(firetrap_state::firetrap_nmi_disable_w)); + map(0xf005, 0xf005).w(this, FUNC(firetrap_state::firetrap_8751_w)); + map(0xf008, 0xf009).w(this, FUNC(firetrap_state::firetrap_bg1_scrollx_w)); + map(0xf00a, 0xf00b).w(this, FUNC(firetrap_state::firetrap_bg1_scrolly_w)); + map(0xf00c, 0xf00d).w(this, FUNC(firetrap_state::firetrap_bg2_scrollx_w)); + map(0xf00e, 0xf00f).w(this, FUNC(firetrap_state::firetrap_bg2_scrolly_w)); + map(0xf010, 0xf010).portr("IN0"); + map(0xf011, 0xf011).portr("IN1"); + map(0xf012, 0xf012).portr("IN2"); + map(0xf013, 0xf013).portr("DSW0"); + map(0xf014, 0xf014).portr("DSW1"); +} + +void firetrap_state::firetrap_map(address_map &map) +{ + firetrap_base_map(map); + map(0xf016, 0xf016).r(this, FUNC(firetrap_state::firetrap_8751_r)); +} + +void firetrap_state::firetrap_bootleg_map(address_map &map) +{ + firetrap_base_map(map); + map(0xf016, 0xf016).r(this, FUNC(firetrap_state::firetrap_8751_bootleg_r)); + map(0xf800, 0xf8ff).rom(); /* extra ROM in the bootleg with unprotection code */ +} + +void firetrap_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x1001).w("ymsnd", FUNC(ym3526_device::write)); + map(0x2000, 0x2000).w(this, FUNC(firetrap_state::adpcm_data_w)); + map(0x2400, 0x2400).w(this, FUNC(firetrap_state::sound_flip_flop_w)); + map(0x2800, 0x2800).w(this, FUNC(firetrap_state::sound_bankselect_w)); + map(0x3400, 0x3400).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4000, 0x7fff).bankr("bank2"); + map(0x8000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(firetrap_state::coin_inserted) { diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp index 36ff5a5ef3a..ad0c9dd3122 100644 --- a/src/mame/drivers/firetrk.cpp +++ b/src/mame/drivers/firetrk.cpp @@ -295,80 +295,83 @@ WRITE8_MEMBER(firetrk_state::crash_reset_w) } -ADDRESS_MAP_START(firetrk_state::firetrk_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("alpha_num_ram") - AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("playfield_ram") - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x1020, 0x1020) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_x") - AM_RANGE(0x1040, 0x1040) AM_MIRROR(0x001f) AM_WRITE(crash_reset_w) - AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_reset_w) - AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("car_rot") - AM_RANGE(0x10a0, 0x10a0) AM_MIRROR(0x001f) AM_WRITE(steer_reset_w) - AM_RANGE(0x10c0, 0x10c0) AM_MIRROR(0x001f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x10e0, 0x10e0) AM_MIRROR(0x001f) AM_WRITE(blink_on_w) AM_SHARE("blink") - AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x001f) AM_WRITE(firetrk_motor_snd_w) - AM_RANGE(0x1420, 0x1420) AM_MIRROR(0x001f) AM_WRITE(firetrk_crash_snd_w) - AM_RANGE(0x1440, 0x1440) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_snd_w) - AM_RANGE(0x1460, 0x1460) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_x") - AM_RANGE(0x1480, 0x1480) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_y") - AM_RANGE(0x14a0, 0x14a0) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_rot") - AM_RANGE(0x14c0, 0x14c0) AM_MIRROR(0x001f) AM_WRITE(firetrk_output_w) - AM_RANGE(0x14e0, 0x14e0) AM_MIRROR(0x001f) AM_WRITE(firetrk_xtndply_w) - AM_RANGE(0x1800, 0x1807) AM_MIRROR(0x03f8) AM_READ(firetrk_input_r) AM_WRITENOP - AM_RANGE(0x1c00, 0x1c03) AM_MIRROR(0x03fc) AM_READ(firetrk_dip_r) - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(firetrk_state::superbug_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x0100) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x0120, 0x0120) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_x") - AM_RANGE(0x0140, 0x0140) AM_MIRROR(0x001f) AM_WRITE(crash_reset_w) - AM_RANGE(0x0160, 0x0160) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_reset_w) - AM_RANGE(0x0180, 0x0180) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("car_rot") - AM_RANGE(0x01a0, 0x01a0) AM_MIRROR(0x001f) AM_WRITE(steer_reset_w) - AM_RANGE(0x01c0, 0x01c0) AM_MIRROR(0x001f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x01e0, 0x01e0) AM_MIRROR(0x001f) AM_WRITE(blink_on_w) AM_SHARE("blink") - AM_RANGE(0x0200, 0x0207) AM_MIRROR(0x0018) AM_READ(firetrk_input_r) - AM_RANGE(0x0220, 0x0220) AM_MIRROR(0x001f) AM_WRITE(firetrk_xtndply_w) - AM_RANGE(0x0240, 0x0243) AM_MIRROR(0x001c) AM_READ(firetrk_dip_r) - AM_RANGE(0x0260, 0x026f) AM_MIRROR(0x0010) AM_WRITE(superbug_output_w) - AM_RANGE(0x0280, 0x0280) AM_MIRROR(0x001f) AM_WRITE(superbug_motor_snd_w) - AM_RANGE(0x02a0, 0x02a0) AM_MIRROR(0x001f) AM_WRITE(firetrk_crash_snd_w) - AM_RANGE(0x02c0, 0x02c0) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_snd_w) - AM_RANGE(0x0400, 0x041f) AM_RAM AM_SHARE("alpha_num_ram") - AM_RANGE(0x0500, 0x05ff) AM_RAM AM_SHARE("playfield_ram") - AM_RANGE(0x0800, 0x1fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(firetrk_state::montecar_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("alpha_num_ram") - AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("playfield_ram") - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x1020, 0x1020) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("scroll_x") - AM_RANGE(0x1040, 0x1040) AM_MIRROR(0x001f) AM_WRITE(montecar_drone_reset_w) - AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x001f) AM_WRITE(montecar_car_reset_w) - AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("car_rot") - AM_RANGE(0x10a0, 0x10a0) AM_MIRROR(0x001f) AM_WRITE(steer_reset_w) - AM_RANGE(0x10c0, 0x10c0) AM_MIRROR(0x001f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x10e0, 0x10e0) AM_MIRROR(0x001f) AM_WRITE(montecar_skid_reset_w) - AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x001f) AM_WRITE(firetrk_motor_snd_w) - AM_RANGE(0x1420, 0x1420) AM_MIRROR(0x001f) AM_WRITE(firetrk_crash_snd_w) - AM_RANGE(0x1440, 0x1440) AM_MIRROR(0x001f) AM_WRITE(firetrk_skid_snd_w) - AM_RANGE(0x1460, 0x1460) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_x") - AM_RANGE(0x1480, 0x1480) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_y") - AM_RANGE(0x14a0, 0x14a0) AM_MIRROR(0x001f) AM_WRITEONLY AM_SHARE("drone_rot") - AM_RANGE(0x14c0, 0x14c0) AM_MIRROR(0x001f) AM_WRITE(montecar_output_1_w) - AM_RANGE(0x14e0, 0x14e0) AM_MIRROR(0x001f) AM_WRITE(montecar_output_2_w) - AM_RANGE(0x1800, 0x1807) AM_MIRROR(0x03f8) AM_READ(montecar_input_r) AM_WRITENOP - AM_RANGE(0x1c00, 0x1c03) AM_MIRROR(0x03fc) AM_READ(montecar_dip_r) - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void firetrk_state::firetrk_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x00ff).mirror(0x0700).ram().share("alpha_num_ram"); + map(0x0800, 0x08ff).mirror(0x0700).ram().share("playfield_ram"); + map(0x1000, 0x1000).mirror(0x001f).writeonly().share("scroll_y"); + map(0x1020, 0x1020).mirror(0x001f).writeonly().share("scroll_x"); + map(0x1040, 0x1040).mirror(0x001f).w(this, FUNC(firetrk_state::crash_reset_w)); + map(0x1060, 0x1060).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_reset_w)); + map(0x1080, 0x1080).mirror(0x001f).writeonly().share("car_rot"); + map(0x10a0, 0x10a0).mirror(0x001f).w(this, FUNC(firetrk_state::steer_reset_w)); + map(0x10c0, 0x10c0).mirror(0x001f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x10e0, 0x10e0).mirror(0x001f).w(this, FUNC(firetrk_state::blink_on_w)).share("blink"); + map(0x1400, 0x1400).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_motor_snd_w)); + map(0x1420, 0x1420).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_crash_snd_w)); + map(0x1440, 0x1440).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_snd_w)); + map(0x1460, 0x1460).mirror(0x001f).writeonly().share("drone_x"); + map(0x1480, 0x1480).mirror(0x001f).writeonly().share("drone_y"); + map(0x14a0, 0x14a0).mirror(0x001f).writeonly().share("drone_rot"); + map(0x14c0, 0x14c0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_output_w)); + map(0x14e0, 0x14e0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_xtndply_w)); + map(0x1800, 0x1807).mirror(0x03f8).r(this, FUNC(firetrk_state::firetrk_input_r)).nopw(); + map(0x1c00, 0x1c03).mirror(0x03fc).r(this, FUNC(firetrk_state::firetrk_dip_r)); + map(0x2000, 0x3fff).rom(); +} + + +void firetrk_state::superbug_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x0100).mirror(0x001f).writeonly().share("scroll_y"); + map(0x0120, 0x0120).mirror(0x001f).writeonly().share("scroll_x"); + map(0x0140, 0x0140).mirror(0x001f).w(this, FUNC(firetrk_state::crash_reset_w)); + map(0x0160, 0x0160).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_reset_w)); + map(0x0180, 0x0180).mirror(0x001f).writeonly().share("car_rot"); + map(0x01a0, 0x01a0).mirror(0x001f).w(this, FUNC(firetrk_state::steer_reset_w)); + map(0x01c0, 0x01c0).mirror(0x001f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x01e0, 0x01e0).mirror(0x001f).w(this, FUNC(firetrk_state::blink_on_w)).share("blink"); + map(0x0200, 0x0207).mirror(0x0018).r(this, FUNC(firetrk_state::firetrk_input_r)); + map(0x0220, 0x0220).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_xtndply_w)); + map(0x0240, 0x0243).mirror(0x001c).r(this, FUNC(firetrk_state::firetrk_dip_r)); + map(0x0260, 0x026f).mirror(0x0010).w(this, FUNC(firetrk_state::superbug_output_w)); + map(0x0280, 0x0280).mirror(0x001f).w(this, FUNC(firetrk_state::superbug_motor_snd_w)); + map(0x02a0, 0x02a0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_crash_snd_w)); + map(0x02c0, 0x02c0).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_snd_w)); + map(0x0400, 0x041f).ram().share("alpha_num_ram"); + map(0x0500, 0x05ff).ram().share("playfield_ram"); + map(0x0800, 0x1fff).rom(); +} + + +void firetrk_state::montecar_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x00ff).mirror(0x0700).ram().share("alpha_num_ram"); + map(0x0800, 0x08ff).mirror(0x0700).ram().share("playfield_ram"); + map(0x1000, 0x1000).mirror(0x001f).writeonly().share("scroll_y"); + map(0x1020, 0x1020).mirror(0x001f).writeonly().share("scroll_x"); + map(0x1040, 0x1040).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_drone_reset_w)); + map(0x1060, 0x1060).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_car_reset_w)); + map(0x1080, 0x1080).mirror(0x001f).writeonly().share("car_rot"); + map(0x10a0, 0x10a0).mirror(0x001f).w(this, FUNC(firetrk_state::steer_reset_w)); + map(0x10c0, 0x10c0).mirror(0x001f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x10e0, 0x10e0).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_skid_reset_w)); + map(0x1400, 0x1400).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_motor_snd_w)); + map(0x1420, 0x1420).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_crash_snd_w)); + map(0x1440, 0x1440).mirror(0x001f).w(this, FUNC(firetrk_state::firetrk_skid_snd_w)); + map(0x1460, 0x1460).mirror(0x001f).writeonly().share("drone_x"); + map(0x1480, 0x1480).mirror(0x001f).writeonly().share("drone_y"); + map(0x14a0, 0x14a0).mirror(0x001f).writeonly().share("drone_rot"); + map(0x14c0, 0x14c0).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_output_1_w)); + map(0x14e0, 0x14e0).mirror(0x001f).w(this, FUNC(firetrk_state::montecar_output_2_w)); + map(0x1800, 0x1807).mirror(0x03f8).r(this, FUNC(firetrk_state::montecar_input_r)).nopw(); + map(0x1c00, 0x1c03).mirror(0x03fc).r(this, FUNC(firetrk_state::montecar_dip_r)); + map(0x2000, 0x3fff).rom(); +} static INPUT_PORTS_START( firetrk ) diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp index 0d629572446..1020192cb6a 100644 --- a/src/mame/drivers/fitfight.cpp +++ b/src/mame/drivers/fitfight.cpp @@ -130,18 +130,19 @@ WRITE16_MEMBER(fitfight_state::fitfight_700000_w) m_fof_700000_data = data; } -ADDRESS_MAP_START(fitfight_state::fitfight_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM +void fitfight_state::fitfight_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); - AM_RANGE(0x100000, 0x100001) AM_WRITEONLY AM_SHARE("fof_100000") + map(0x100000, 0x100001).writeonly().share("fof_100000"); //written at scanline 5, allways 1. Used by histryma/fitfight @0x0000ec2c/@0x0000f076 - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1_P2") - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("EXTRA") // for 'histryma' only - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM_DSW2") - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3_DSW1") + map(0x200000, 0x200001).portr("P1_P2"); + map(0x300000, 0x300001).portr("EXTRA"); // for 'histryma' only + map(0x400000, 0x400001).portr("SYSTEM_DSW2"); + map(0x500000, 0x500001).portr("DSW3_DSW1"); - AM_RANGE(0x600000, 0x600001) AM_WRITEONLY AM_SHARE("fof_600000") + map(0x600000, 0x600001).writeonly().share("fof_600000"); // Is 0x600000 controlling the slave audio CPU? data is 0x1111000zzzzzzzzz (9 sign. bits) // Used by histryma/fitfight: // @0x000031ae/0x00002b3a: 0xF000, once, during POST @@ -152,76 +153,78 @@ ADDRESS_MAP_START(fitfight_state::fitfight_main_map) // @0x000037a6/0x000030e6: 0x??dd byte from 0xe08c05, 0xF101 then 0xF001/0xF157 then 0xF057 // AM_RANGE(0x700000, 0x700001) AM_READ(xxxx) /* see init */ - AM_RANGE(0x700000, 0x700001) AM_WRITE(fitfight_700000_w) AM_SHARE("fof_700000") + map(0x700000, 0x700001).w(this, FUNC(fitfight_state::fitfight_700000_w)).share("fof_700000"); // kept at 0xe07900/0xe04c56 - AM_RANGE(0x800000, 0x800001) AM_RAM AM_SHARE("fof_800000") + map(0x800000, 0x800001).ram().share("fof_800000"); //written at scanline 1, allways 0. Used by histryma/fitfight @0x00001d76/@0x00000f6a - AM_RANGE(0x900000, 0x900001) AM_RAM AM_SHARE("fof_900000") //mid tilemap scroll + map(0x900000, 0x900001).ram().share("fof_900000"); //mid tilemap scroll // fitfigth: @0x00002b42,@0x00000f76 // histryma: @0x000031b6,@0x00001d82 - AM_RANGE(0xa00000, 0xa00001) AM_RAM AM_SHARE("fof_a00000") //bak tilemap scroll + map(0xa00000, 0xa00001).ram().share("fof_a00000"); //bak tilemap scroll // fitfight: @0x00002b4a,@0x00000f82 // histryma: @0x000031be,@0x00001d8e - AM_RANGE(0xb00000, 0xb03fff) AM_RAM /* unused layer? */ - AM_RANGE(0xb04000, 0xb07fff) AM_RAM_WRITE(fof_bak_tileram_w) AM_SHARE("fof_bak_tileram") - AM_RANGE(0xb08000, 0xb0bfff) AM_RAM_WRITE(fof_mid_tileram_w) AM_SHARE("fof_mid_tileram") - AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM_WRITE(fof_txt_tileram_w) AM_SHARE("fof_txt_tileram") + map(0xb00000, 0xb03fff).ram(); /* unused layer? */ + map(0xb04000, 0xb07fff).ram().w(this, FUNC(fitfight_state::fof_bak_tileram_w)).share("fof_bak_tileram"); + map(0xb08000, 0xb0bfff).ram().w(this, FUNC(fitfight_state::fof_mid_tileram_w)).share("fof_mid_tileram"); + map(0xb0c000, 0xb0ffff).ram().w(this, FUNC(fitfight_state::fof_txt_tileram_w)).share("fof_txt_tileram"); - AM_RANGE(0xb10000, 0xb13fff) AM_RAM //used by histryma @0x0000b25a - AM_RANGE(0xb14000, 0xb17fff) AM_RAM //used by histryma @0x0000b25a,b270 - AM_RANGE(0xb18000, 0xb1bfff) AM_RAM //used by histryma @0x0000b25a,b270,b286 + map(0xb10000, 0xb13fff).ram(); //used by histryma @0x0000b25a + map(0xb14000, 0xb17fff).ram(); //used by histryma @0x0000b25a,b270 + map(0xb18000, 0xb1bfff).ram(); //used by histryma @0x0000b25a,b270,b286 - AM_RANGE(0xc00000, 0xc00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0xc00000, 0xc00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram") + map(0xd00000, 0xd007ff).ram().share("spriteram"); - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // hot mind uses RAM here (mirror?) -ADDRESS_MAP_END + map(0xe00000, 0xe0ffff).ram(); + map(0xff0000, 0xffffff).ram(); // hot mind uses RAM here (mirror?) +} -ADDRESS_MAP_START(fitfight_state::bbprot_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM +void fitfight_state::bbprot_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); - AM_RANGE(0x100000, 0x100001) AM_WRITEONLY AM_SHARE("fof_100000") + map(0x100000, 0x100001).writeonly().share("fof_100000"); - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1_P2") - AM_RANGE(0x380000, 0x380001) AM_READ_PORT("EXTRA") - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM_DSW2") - AM_RANGE(0x480000, 0x480001) AM_READ_PORT("DSW3_DSW1") + map(0x300000, 0x300001).portr("P1_P2"); + map(0x380000, 0x380001).portr("EXTRA"); + map(0x400000, 0x400001).portr("SYSTEM_DSW2"); + map(0x480000, 0x480001).portr("DSW3_DSW1"); - AM_RANGE(0x600000, 0x600001) AM_WRITEONLY AM_SHARE("fof_600000") + map(0x600000, 0x600001).writeonly().share("fof_600000"); - AM_RANGE(0x700000, 0x700001) AM_READWRITE(bbprot_700000_r, fitfight_700000_w) AM_SHARE("fof_700000") + map(0x700000, 0x700001).rw(this, FUNC(fitfight_state::bbprot_700000_r), FUNC(fitfight_state::fitfight_700000_w)).share("fof_700000"); - AM_RANGE(0x800000, 0x800001) AM_WRITEONLY AM_SHARE("fof_800000") - AM_RANGE(0x900000, 0x900001) AM_WRITEONLY AM_SHARE("fof_900000") - AM_RANGE(0xa00000, 0xa00001) AM_WRITEONLY AM_SHARE("fof_a00000") + map(0x800000, 0x800001).writeonly().share("fof_800000"); + map(0x900000, 0x900001).writeonly().share("fof_900000"); + map(0xa00000, 0xa00001).writeonly().share("fof_a00000"); - AM_RANGE(0xb00000, 0xb03fff) AM_WRITENOP /* unused layer? */ - AM_RANGE(0xb04000, 0xb07fff) AM_RAM_WRITE(fof_bak_tileram_w) AM_SHARE("fof_bak_tileram") - AM_RANGE(0xb08000, 0xb0bfff) AM_RAM_WRITE(fof_mid_tileram_w) AM_SHARE("fof_mid_tileram") - AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM_WRITE(fof_txt_tileram_w) AM_SHARE("fof_txt_tileram") + map(0xb00000, 0xb03fff).nopw(); /* unused layer? */ + map(0xb04000, 0xb07fff).ram().w(this, FUNC(fitfight_state::fof_bak_tileram_w)).share("fof_bak_tileram"); + map(0xb08000, 0xb0bfff).ram().w(this, FUNC(fitfight_state::fof_mid_tileram_w)).share("fof_mid_tileram"); + map(0xb0c000, 0xb0ffff).ram().w(this, FUNC(fitfight_state::fof_txt_tileram_w)).share("fof_txt_tileram"); - AM_RANGE(0xc00000, 0xc00fff) AM_READONLY - AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0xc00000, 0xc00fff).readonly(); + map(0xc00000, 0xc03fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram") + map(0xd00000, 0xd007ff).ram().share("spriteram"); - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM -ADDRESS_MAP_END + map(0xe00000, 0xe0ffff).ram(); +} /* 7810 (?) sound cpu */ -ADDRESS_MAP_START(fitfight_state::snd_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") /* ??? External ROM */ - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END +void fitfight_state::snd_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); /* ??? External ROM */ + map(0x8000, 0x87ff).ram(); +} READ8_MEMBER(fitfight_state::snd_porta_r) { diff --git a/src/mame/drivers/fk1.cpp b/src/mame/drivers/fk1.cpp index 6ac18c1141c..8037360855c 100644 --- a/src/mame/drivers/fk1.cpp +++ b/src/mame/drivers/fk1.cpp @@ -309,26 +309,28 @@ WRITE8_MEMBER( fk1_state::fk1_reset_int_w ) logerror("fk1_reset_int_w\n"); } -ADDRESS_MAP_START(fk1_state::fk1_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fk1_state::fk1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE( 0x10, 0x13 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE( 0x20, 0x23 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE( 0x30, 0x30 ) AM_READWRITE(fk1_bank_ram_r,fk1_intr_w) - AM_RANGE( 0x40, 0x40 ) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE( 0x41, 0x41 ) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE( 0x50, 0x50 ) AM_READWRITE(fk1_bank_rom_r,fk1_disk_w) - AM_RANGE( 0x60, 0x63 ) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) - AM_RANGE( 0x70, 0x70 ) AM_READWRITE(fk1_mouse_r,fk1_reset_int_w) -ADDRESS_MAP_END +void fk1_state::fk1_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void fk1_state::fk1_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x13).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x20, 0x23).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x30, 0x30).rw(this, FUNC(fk1_state::fk1_bank_ram_r), FUNC(fk1_state::fk1_intr_w)); + map(0x40, 0x40).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x41, 0x41).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x50, 0x50).rw(this, FUNC(fk1_state::fk1_bank_rom_r), FUNC(fk1_state::fk1_disk_w)); + map(0x60, 0x63).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x70, 0x70).rw(this, FUNC(fk1_state::fk1_mouse_r), FUNC(fk1_state::fk1_reset_int_w)); +} /* Input ports */ static INPUT_PORTS_START( fk1 ) diff --git a/src/mame/drivers/flicker.cpp b/src/mame/drivers/flicker.cpp index 58b1c689bcb..80a303a280a 100644 --- a/src/mame/drivers/flicker.cpp +++ b/src/mame/drivers/flicker.cpp @@ -90,27 +90,32 @@ private: }; -ADDRESS_MAP_START(flicker_state::flicker_rom) - AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(flicker_state::flicker_memory) - AM_RANGE(0x0000, 0x003f) AM_RAM AM_SHARE("memory") -ADDRESS_MAP_END - -ADDRESS_MAP_START(flicker_state::flicker_status) - AM_RANGE(0x0000, 0x000f) AM_RAM AM_SHARE("status") -ADDRESS_MAP_END - -ADDRESS_MAP_START(flicker_state::flicker_rom_ports) - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_WRITE(rom0_out) - AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x0700) AM_WRITE(rom1_out) - AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x0700) AM_READ(rom2_in) -ADDRESS_MAP_END - -ADDRESS_MAP_START(flicker_state::flicker_ram_ports) - AM_RANGE(0x00, 0x00) AM_WRITE(ram0_out) -ADDRESS_MAP_END +void flicker_state::flicker_rom(address_map &map) +{ + map(0x0000, 0x03ff).rom().region("maincpu", 0); +} + +void flicker_state::flicker_memory(address_map &map) +{ + map(0x0000, 0x003f).ram().share("memory"); +} + +void flicker_state::flicker_status(address_map &map) +{ + map(0x0000, 0x000f).ram().share("status"); +} + +void flicker_state::flicker_rom_ports(address_map &map) +{ + map(0x0000, 0x000f).mirror(0x0700).w(this, FUNC(flicker_state::rom0_out)); + map(0x0010, 0x001f).mirror(0x0700).w(this, FUNC(flicker_state::rom1_out)); + map(0x0020, 0x002f).mirror(0x0700).r(this, FUNC(flicker_state::rom2_in)); +} + +void flicker_state::flicker_ram_ports(address_map &map) +{ + map(0x00, 0x00).w(this, FUNC(flicker_state::ram0_out)); +} static INPUT_PORTS_START( flicker ) PORT_START("TEST") diff --git a/src/mame/drivers/flipjack.cpp b/src/mame/drivers/flipjack.cpp index 3198f267fd6..a94d7677560 100644 --- a/src/mame/drivers/flipjack.cpp +++ b/src/mame/drivers/flipjack.cpp @@ -305,41 +305,45 @@ INPUT_CHANGED_MEMBER(flipjack_state::flipjack_coin) } -ADDRESS_MAP_START(flipjack_state::flipjack_main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x7000, 0x7000) AM_WRITE(flipjack_soundlatch_w) - AM_RANGE(0x7010, 0x7010) AM_DEVWRITE("crtc", hd6845_device, address_w) - AM_RANGE(0x7011, 0x7011) AM_DEVWRITE("crtc", hd6845_device, register_w) - AM_RANGE(0x7020, 0x7020) AM_READ_PORT("DSW") - AM_RANGE(0x7800, 0x7800) AM_WRITE(flipjack_layer_w) - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("cram") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("fb_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(flipjack_state::flipjack_main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xff, 0xff) AM_WRITE(flipjack_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(flipjack_state::flipjack_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ay1", ay8910_device, address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(flipjack_state::flipjack_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(flipjack_sound_nmi_ack_w) -ADDRESS_MAP_END +void flipjack_state::flipjack_main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("bank1"); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x67ff).ram(); + map(0x6800, 0x6803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7000, 0x7000).w(this, FUNC(flipjack_state::flipjack_soundlatch_w)); + map(0x7010, 0x7010).w(m_crtc, FUNC(hd6845_device::address_w)); + map(0x7011, 0x7011).w(m_crtc, FUNC(hd6845_device::register_w)); + map(0x7020, 0x7020).portr("DSW"); + map(0x7800, 0x7800).w(this, FUNC(flipjack_state::flipjack_layer_w)); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xbfff).ram().share("cram"); + map(0xc000, 0xdfff).ram().share("vram"); + map(0xe000, 0xffff).ram().share("fb_ram"); +} + +void flipjack_state::flipjack_main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xff, 0xff).w(this, FUNC(flipjack_state::flipjack_bank_w)); +} + +void flipjack_state::flipjack_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x6000, 0x6000).w("ay2", FUNC(ay8910_device::address_w)); + map(0x8000, 0x8000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xa000, 0xa000).w("ay1", FUNC(ay8910_device::address_w)); +} + +void flipjack_state::flipjack_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(flipjack_state::flipjack_sound_nmi_ack_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/flkatck.cpp b/src/mame/drivers/flkatck.cpp index c13fbf7cce7..0cf8fd2f136 100644 --- a/src/mame/drivers/flkatck.cpp +++ b/src/mame/drivers/flkatck.cpp @@ -92,29 +92,31 @@ WRITE8_MEMBER(flkatck_state::multiply_w) } -ADDRESS_MAP_START(flkatck_state::flkatck_map) - AM_RANGE(0x0000, 0x0007) AM_RAM_WRITE(flkatck_k007121_regs_w) /* 007121 registers */ - AM_RANGE(0x0008, 0x03ff) AM_RAM /* RAM */ - AM_RANGE(0x0400, 0x041f) AM_READWRITE(flkatck_ls138_r, flkatck_ls138_w) /* inputs, DIPS, bankswitch, counters, sound command */ - AM_RANGE(0x0800, 0x0bff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") /* palette */ - AM_RANGE(0x1000, 0x1fff) AM_RAM /* RAM */ - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(flkatck_k007121_w) AM_SHARE("k007121_ram") /* Video RAM (007121) */ - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0x6000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(flkatck_state::flkatck_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ - AM_RANGE(0x9000, 0x9000) AM_READ(multiply_r) // 007452: Protection (see wecleman, but unused here?) - AM_RANGE(0x9001, 0x9001) AM_READNOP // 007452: ? - AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w) // 007452: Protection (see wecleman, but unused here?) - AM_RANGE(0x9004, 0x9004) AM_READNOP // 007452: ? - AM_RANGE(0x9006, 0x9006) AM_WRITENOP // 007452: ? - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */ - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ -ADDRESS_MAP_END +void flkatck_state::flkatck_map(address_map &map) +{ + map(0x0000, 0x0007).ram().w(this, FUNC(flkatck_state::flkatck_k007121_regs_w)); /* 007121 registers */ + map(0x0008, 0x03ff).ram(); /* RAM */ + map(0x0400, 0x041f).rw(this, FUNC(flkatck_state::flkatck_ls138_r), FUNC(flkatck_state::flkatck_ls138_w)); /* inputs, DIPS, bankswitch, counters, sound command */ + map(0x0800, 0x0bff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); /* palette */ + map(0x1000, 0x1fff).ram(); /* RAM */ + map(0x2000, 0x3fff).ram().w(this, FUNC(flkatck_state::flkatck_k007121_w)).share("k007121_ram"); /* Video RAM (007121) */ + map(0x4000, 0x5fff).bankr("bank1"); /* banked ROM */ + map(0x6000, 0xffff).rom(); /* ROM */ +} + +void flkatck_state::flkatck_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM */ + map(0x8000, 0x87ff).ram(); /* RAM */ + map(0x9000, 0x9000).r(this, FUNC(flkatck_state::multiply_r)); // 007452: Protection (see wecleman, but unused here?) + map(0x9001, 0x9001).nopr(); // 007452: ? + map(0x9000, 0x9001).w(this, FUNC(flkatck_state::multiply_w)); // 007452: Protection (see wecleman, but unused here?) + map(0x9004, 0x9004).nopr(); // 007452: ? + map(0x9006, 0x9006).nopw(); // 007452: ? + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 registers */ + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */ +} static INPUT_PORTS_START( flkatck ) diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp index fc1a66688c1..01561e7d7f7 100644 --- a/src/mame/drivers/flower.cpp +++ b/src/mame/drivers/flower.cpp @@ -335,36 +335,38 @@ WRITE8_MEMBER(flower_state::fgvram_w) m_fg_tilemap->mark_tile_dirty(offset & 0xff); } -ADDRESS_MAP_START(flower_state::shared_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("workram") - AM_RANGE(0xa000, 0xa000) AM_WRITENOP - AM_RANGE(0xa001, 0xa001) AM_WRITE(flipscreen_w) - AM_RANGE(0xa002, 0xa002) AM_WRITENOP // master irq related (0 at start, 1 at end) - AM_RANGE(0xa003, 0xa003) AM_WRITENOP // slave irq related (0 at start, 1 at end) - AM_RANGE(0xa004, 0xa004) AM_WRITE(coin_counter_w) - AM_RANGE(0xa005, 0xa005) AM_WRITENOP - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("P1") - AM_RANGE(0xa101, 0xa101) AM_READ_PORT("P2") - AM_RANGE(0xa102, 0xa102) AM_READ_PORT("DSW1") - AM_RANGE(0xa103, 0xa103) AM_READ_PORT("DSW2") - AM_RANGE(0xa400, 0xa400) AM_WRITE(sound_command_w) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("txvram") - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(fgvram_w) AM_SHARE("fgvram") - AM_RANGE(0xf200, 0xf200) AM_RAM AM_SHARE("fgscroll") - AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(bgvram_w) AM_SHARE("bgvram") - AM_RANGE(0xfa00, 0xfa00) AM_RAM AM_SHARE("bgscroll") -ADDRESS_MAP_END - -ADDRESS_MAP_START(flower_state::audio_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_WRITENOP // audio irq related (0 at start, 1 at end) - AM_RANGE(0x4001, 0x4001) AM_WRITE(audio_nmi_mask_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x803f) AM_DEVWRITE("flower", flower_sound_device, lower_write) - AM_RANGE(0xa000, 0xa03f) AM_DEVWRITE("flower", flower_sound_device, upper_write) - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END +void flower_state::shared_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xdfff).ram().share("workram"); + map(0xa000, 0xa000).nopw(); + map(0xa001, 0xa001).w(this, FUNC(flower_state::flipscreen_w)); + map(0xa002, 0xa002).nopw(); // master irq related (0 at start, 1 at end) + map(0xa003, 0xa003).nopw(); // slave irq related (0 at start, 1 at end) + map(0xa004, 0xa004).w(this, FUNC(flower_state::coin_counter_w)); + map(0xa005, 0xa005).nopw(); + map(0xa100, 0xa100).portr("P1"); + map(0xa101, 0xa101).portr("P2"); + map(0xa102, 0xa102).portr("DSW1"); + map(0xa103, 0xa103).portr("DSW2"); + map(0xa400, 0xa400).w(this, FUNC(flower_state::sound_command_w)); + map(0xe000, 0xefff).ram().share("txvram"); + map(0xf000, 0xf1ff).ram().w(this, FUNC(flower_state::fgvram_w)).share("fgvram"); + map(0xf200, 0xf200).ram().share("fgscroll"); + map(0xf800, 0xf9ff).ram().w(this, FUNC(flower_state::bgvram_w)).share("bgvram"); + map(0xfa00, 0xfa00).ram().share("bgscroll"); +} + +void flower_state::audio_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4000).nopw(); // audio irq related (0 at start, 1 at end) + map(0x4001, 0x4001).w(this, FUNC(flower_state::audio_nmi_mask_w)); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0x803f).w("flower", FUNC(flower_sound_device::lower_write)); + map(0xa000, 0xa03f).w("flower", FUNC(flower_sound_device::upper_write)); + map(0xc000, 0xc7ff).ram(); +} INPUT_CHANGED_MEMBER(flower_state::coin_inserted) { diff --git a/src/mame/drivers/flstory.cpp b/src/mame/drivers/flstory.cpp index 5c0cee327b5..f2dd330ba6e 100644 --- a/src/mame/drivers/flstory.cpp +++ b/src/mame/drivers/flstory.cpp @@ -32,61 +32,65 @@ WRITE8_MEMBER(flstory_state::snd_reset_w) m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 1 ) ? ASSERT_LINE : CLEAR_LINE); } -ADDRESS_MAP_START(flstory_state::base_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM +void flstory_state::base_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); // rumba lumber reads area 0xc800-0xcfff // onna34ro checks the whole range during POST but having a mirror or not doesn't make any difference for the check to pass - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x800) AM_RAM_WRITE(flstory_videoram_w) AM_SHARE("videoram") + map(0xc000, 0xc7ff).mirror(0x800).ram().w(this, FUNC(flstory_state::flstory_videoram_w)).share("videoram"); - AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog */ - AM_RANGE(0xd002, 0xd002) AM_NOP /* unknown read & coin lock out? */ + map(0xd001, 0xd001).nopw(); /* watchdog */ + map(0xd002, 0xd002).noprw(); /* unknown read & coin lock out? */ - AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0xd400, 0xd400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd403, 0xd403) AM_READNOP AM_WRITE(snd_reset_w) // unknown read (set/clr side effect?) + map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0xd400, 0xd400).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd403, 0xd403).nopr().w(this, FUNC(flstory_state::snd_reset_w)); // unknown read (set/clr side effect?) - AM_RANGE(0xd401, 0xd401) AM_READ(snd_flag_r) - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("P1") - AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2") + map(0xd401, 0xd401).r(this, FUNC(flstory_state::snd_flag_r)); + map(0xd800, 0xd800).portr("DSW0"); + map(0xd801, 0xd801).portr("DSW1"); + map(0xd802, 0xd802).portr("DSW2"); + map(0xd803, 0xd803).portr("SYSTEM"); + map(0xd804, 0xd804).portr("P1"); + map(0xd806, 0xd806).portr("P2"); - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(flstory_scrlram_w) AM_SHARE("scrlram") + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).ram().w(this, FUNC(flstory_state::flstory_scrlram_w)).share("scrlram"); - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(flstory_palette_r, flstory_palette_w) + map(0xdd00, 0xdeff).rw(this, FUNC(flstory_state::flstory_palette_r), FUNC(flstory_state::flstory_palette_w)); // victorious nine read 0xf80a during attract, unknown purpose - AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("workram") /* work RAM */ -ADDRESS_MAP_END + map(0xe000, 0xe7ff).mirror(0x1800).ram().share("workram"); /* work RAM */ +} -ADDRESS_MAP_START(flstory_state::flstory_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) +void flstory_state::flstory_map(address_map &map) +{ + base_map(map); + map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); - AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r) + map(0xd805, 0xd805).r(this, FUNC(flstory_state::flstory_mcu_status_r)); // AM_RANGE(0xda00, 0xda00) AM_WRITEONLY - AM_RANGE(0xdcc0, 0xdcff) AM_RAM /* unknown */ - AM_RANGE(0xdf03, 0xdf03) AM_WRITE(flstory_gfxctrl_w) -ADDRESS_MAP_END + map(0xdcc0, 0xdcff).ram(); /* unknown */ + map(0xdf03, 0xdf03).w(this, FUNC(flstory_state::flstory_gfxctrl_w)); +} -ADDRESS_MAP_START(flstory_state::onna34ro_map) - AM_IMPORT_FROM(base_map) +void flstory_state::onna34ro_map(address_map &map) +{ + base_map(map); // AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) // AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r) // AM_RANGE(0xda00, 0xda00) AM_WRITEONLY - AM_RANGE(0xdcc0, 0xdcff) AM_RAM /* unknown */ - AM_RANGE(0xdf03, 0xdf03) AM_WRITE(flstory_gfxctrl_w) -ADDRESS_MAP_END + map(0xdcc0, 0xdcff).ram(); /* unknown */ + map(0xdf03, 0xdf03).w(this, FUNC(flstory_state::flstory_gfxctrl_w)); +} -ADDRESS_MAP_START(flstory_state::onna34ro_mcu_map) - AM_IMPORT_FROM(onna34ro_map) - AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r) -ADDRESS_MAP_END +void flstory_state::onna34ro_mcu_map(address_map &map) +{ + onna34ro_map(map); + map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0xd805, 0xd805).r(this, FUNC(flstory_state::flstory_mcu_status_r)); +} CUSTOM_INPUT_MEMBER(flstory_state::victnine_mcu_status_bit01_r) { @@ -95,27 +99,29 @@ CUSTOM_INPUT_MEMBER(flstory_state::victnine_mcu_status_bit01_r) return (victnine_mcu_status_r(space, 0) & 3); } -ADDRESS_MAP_START(flstory_state::victnine_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xd000, 0xd000) AM_READWRITE(victnine_mcu_r, victnine_mcu_w) +void flstory_state::victnine_map(address_map &map) +{ + base_map(map); + map(0xd000, 0xd000).rw(this, FUNC(flstory_state::victnine_mcu_r), FUNC(flstory_state::victnine_mcu_w)); - AM_RANGE(0xd805, 0xd805) AM_READ_PORT("EXTRA_P1") /* also mcu */ - AM_RANGE(0xd807, 0xd807) AM_READ_PORT("EXTRA_P2") + map(0xd805, 0xd805).portr("EXTRA_P1"); /* also mcu */ + map(0xd807, 0xd807).portr("EXTRA_P2"); // AM_RANGE(0xda00, 0xda00) AM_WRITEONLY - AM_RANGE(0xdce0, 0xdce0) AM_READWRITE(victnine_gfxctrl_r, victnine_gfxctrl_w) - AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP /* unknown */ -ADDRESS_MAP_END + map(0xdce0, 0xdce0).rw(this, FUNC(flstory_state::victnine_gfxctrl_r), FUNC(flstory_state::victnine_gfxctrl_w)); + map(0xdce1, 0xdce1).nopw(); /* unknown */ +} -ADDRESS_MAP_START(flstory_state::rumba_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) +void flstory_state::rumba_map(address_map &map) +{ + base_map(map); + map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); - AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r) - AM_RANGE(0xd807, 0xd807) AM_READ_PORT("EXTRA_P2") + map(0xd805, 0xd805).r(this, FUNC(flstory_state::flstory_mcu_status_r)); + map(0xd807, 0xd807).portr("EXTRA_P2"); // AM_RANGE(0xda00, 0xda00) AM_WRITEONLY - AM_RANGE(0xdce0, 0xdce0) AM_READWRITE(victnine_gfxctrl_r, victnine_gfxctrl_w) + map(0xdce0, 0xdce0).rw(this, FUNC(flstory_state::victnine_gfxctrl_r), FUNC(flstory_state::victnine_gfxctrl_w)); // AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP /* unknown */ -ADDRESS_MAP_END +} @@ -162,20 +168,21 @@ WRITE8_MEMBER(flstory_state::sound_control_3_w) } -ADDRESS_MAP_START(flstory_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("aysnd", ym2149_device, address_data_w) - AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w) - AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w) - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xda00, 0xda00) AM_READ(snd_flag_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<1>) - AM_RANGE(0xdc00, 0xdc00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<1>) - AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC & unknown read */ - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */ -ADDRESS_MAP_END +void flstory_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).w(m_ay, FUNC(ym2149_device::address_data_w)); + map(0xca00, 0xca0d).w(m_msm, FUNC(msm5232_device::write)); + map(0xcc00, 0xcc00).w(this, FUNC(flstory_state::sound_control_0_w)); + map(0xce00, 0xce00).w(this, FUNC(flstory_state::sound_control_1_w)); + map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd800, 0xd800).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xda00, 0xda00).r(this, FUNC(flstory_state::snd_flag_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<1>)); + map(0xdc00, 0xdc00).w(m_soundnmi, FUNC(input_merger_device::in_clear<1>)); + map(0xde00, 0xde00).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC & unknown read */ + map(0xe000, 0xefff).rom(); /* space for diagnostics ROM */ +} diff --git a/src/mame/drivers/flyball.cpp b/src/mame/drivers/flyball.cpp index f976c1e8b07..4982897f2e9 100644 --- a/src/mame/drivers/flyball.cpp +++ b/src/mame/drivers/flyball.cpp @@ -298,23 +298,24 @@ WRITE_LINE_MEMBER(flyball_state::lamp_w) * *************************************/ -ADDRESS_MAP_START(flyball_state::flyball_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x100) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_NOP - AM_RANGE(0x0801, 0x0801) AM_WRITE(pitcher_pic_w) - AM_RANGE(0x0802, 0x0802) AM_READ(scanline_r) - AM_RANGE(0x0803, 0x0803) AM_READ(potsense_r) - AM_RANGE(0x0804, 0x0804) AM_WRITE(ball_vert_w) - AM_RANGE(0x0805, 0x0805) AM_WRITE(ball_horz_w) - AM_RANGE(0x0806, 0x0806) AM_WRITE(pitcher_vert_w) - AM_RANGE(0x0807, 0x0807) AM_WRITE(pitcher_horz_w) - AM_RANGE(0x0900, 0x0900) AM_WRITE(potmask_w) - AM_RANGE(0x0a00, 0x0a07) AM_WRITE(misc_w) - AM_RANGE(0x0b00, 0x0b00) AM_READ(input_r) - AM_RANGE(0x0d00, 0x0eff) AM_WRITEONLY AM_SHARE("playfield_ram") - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void flyball_state::flyball_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x00ff).mirror(0x100).ram(); + map(0x0800, 0x0800).noprw(); + map(0x0801, 0x0801).w(this, FUNC(flyball_state::pitcher_pic_w)); + map(0x0802, 0x0802).r(this, FUNC(flyball_state::scanline_r)); + map(0x0803, 0x0803).r(this, FUNC(flyball_state::potsense_r)); + map(0x0804, 0x0804).w(this, FUNC(flyball_state::ball_vert_w)); + map(0x0805, 0x0805).w(this, FUNC(flyball_state::ball_horz_w)); + map(0x0806, 0x0806).w(this, FUNC(flyball_state::pitcher_vert_w)); + map(0x0807, 0x0807).w(this, FUNC(flyball_state::pitcher_horz_w)); + map(0x0900, 0x0900).w(this, FUNC(flyball_state::potmask_w)); + map(0x0a00, 0x0a07).w(this, FUNC(flyball_state::misc_w)); + map(0x0b00, 0x0b00).r(this, FUNC(flyball_state::input_r)); + map(0x0d00, 0x0eff).writeonly().share("playfield_ram"); + map(0x1000, 0x1fff).rom().region("maincpu", 0); +} /************************************* diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp index 9a17d4f6bb3..4a63438c638 100644 --- a/src/mame/drivers/fm7.cpp +++ b/src/mame/drivers/fm7.cpp @@ -1427,59 +1427,61 @@ WRITE_LINE_MEMBER(fm7_state::fm77av_fmirq) FFF0 - FFFF: Interrupt vector table */ // The FM-7 has only 64kB RAM, so we'll worry about banking when we do the later models -ADDRESS_MAP_START(fm7_state::fm7_mem) - AM_RANGE(0x0000,0x7fff) AM_RAM - AM_RANGE(0x8000,0xfbff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") // also F-BASIC ROM, when enabled - AM_RANGE(0xfc00,0xfc7f) AM_RAM - AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) +void fm7_state::fm7_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xfbff).bankr("bank1").bankw("bank2"); // also F-BASIC ROM, when enabled + map(0xfc00, 0xfc7f).ram(); + map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w)); // I/O space (FD00-FDFF) - AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w) - AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask - AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags - AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r) - AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w) - AM_RANGE(0xfd06,0xfd0c) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0d,0xfd0d) AM_READWRITE(fm7_psg_select_r,fm7_psg_select_w) - AM_RANGE(0xfd0e,0xfd0e) AM_READWRITE(fm7_psg_data_r, fm7_psg_data_w) - AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w) - AM_RANGE(0xfd10,0xfd17) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w) - AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w) - AM_RANGE(0xfd24,0xfd36) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w) - AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w) - AM_RANGE(0xfd40,0xfdff) AM_READ(fm7_unknown_r) + map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w)); + map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask + map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags + map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r)); + map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w)); + map(0xfd06, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0d, 0xfd0d).rw(this, FUNC(fm7_state::fm7_psg_select_r), FUNC(fm7_state::fm7_psg_select_w)); + map(0xfd0e, 0xfd0e).rw(this, FUNC(fm7_state::fm7_psg_data_r), FUNC(fm7_state::fm7_psg_data_w)); + map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w)); + map(0xfd10, 0xfd17).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w)); + map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w)); + map(0xfd24, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w)); + map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w)); + map(0xfd40, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r)); // Boot ROM - AM_RANGE(0xfe00,0xffdf) AM_ROMBANK("bank17") - AM_RANGE(0xffe0,0xffef) AM_RAM - AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm8_mem) - AM_RANGE(0x0000,0x7fff) AM_RAM - AM_RANGE(0x8000,0xfbff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") // also F-BASIC ROM, when enabled - AM_RANGE(0xfc00,0xfc7f) AM_RAM - AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) + map(0xfe00, 0xffdf).bankr("bank17"); + map(0xffe0, 0xffef).ram(); + map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w)); +} + +void fm7_state::fm8_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xfbff).bankr("bank1").bankw("bank2"); // also F-BASIC ROM, when enabled + map(0xfc00, 0xfc7f).ram(); + map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w)); // I/O space (FD00-FDFF) - AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w) - AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask - AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags - AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r) - AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w) - AM_RANGE(0xfd06,0xfd0c) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w) - AM_RANGE(0xfd10,0xfd17) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w) - AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w) - AM_RANGE(0xfd24,0xfd36) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w) - AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w) - AM_RANGE(0xfd40,0xfdff) AM_READ(fm7_unknown_r) + map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w)); + map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask + map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags + map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r)); + map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w)); + map(0xfd06, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w)); + map(0xfd10, 0xfd17).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w)); + map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w)); + map(0xfd24, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w)); + map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w)); + map(0xfd40, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r)); // Boot ROM - AM_RANGE(0xfe00,0xffdf) AM_ROMBANK("bank17") - AM_RANGE(0xffe0,0xffef) AM_RAM - AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w) -ADDRESS_MAP_END + map(0xfe00, 0xffdf).bankr("bank17"); + map(0xffe0, 0xffef).ram(); + map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w)); +} /* 0000 - 3FFF: Video RAM bank 0 (Blue plane) @@ -1492,248 +1494,259 @@ ADDRESS_MAP_END FFF0 - FFFF: Interrupt vector table */ -ADDRESS_MAP_START(fm7_state::fm7_sub_mem) - AM_RANGE(0x0000,0xbfff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM - AM_RANGE(0xc000,0xcfff) AM_RAM // Console RAM - AM_RANGE(0xd000,0xd37f) AM_RAM // Work RAM - AM_RANGE(0xd380,0xd3ff) AM_RAM AM_SHARE("shared_ram") +void fm7_state::fm7_sub_mem(address_map &map) +{ + map(0x0000, 0xbfff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM + map(0xc000, 0xcfff).ram(); // Console RAM + map(0xd000, 0xd37f).ram(); // Work RAM + map(0xd380, 0xd3ff).ram().share("shared_ram"); // I/O space (D400-D4FF) - AM_RANGE(0xd400,0xd401) AM_READ(fm7_sub_keyboard_r) - AM_RANGE(0xd402,0xd402) AM_READ(fm7_cancel_ack) - AM_RANGE(0xd403,0xd403) AM_READ(fm7_sub_beeper_r) - AM_RANGE(0xd404,0xd404) AM_READ(fm7_attn_irq_r) - AM_RANGE(0xd408,0xd408) AM_READWRITE(fm7_crt_r,fm7_crt_w) - AM_RANGE(0xd409,0xd409) AM_READWRITE(fm7_vram_access_r,fm7_vram_access_w) - AM_RANGE(0xd40a,0xd40a) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w) - AM_RANGE(0xd40e,0xd40f) AM_WRITE(fm7_vram_offset_w) - AM_RANGE(0xd800,0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm11_mem) - AM_RANGE(0x0000,0x0fff) AM_DEVREADWRITE("av_bank1", address_map_bank_device, read8, write8) - AM_RANGE(0x1000,0x1fff) AM_DEVREADWRITE("av_bank2", address_map_bank_device, read8, write8) - AM_RANGE(0x2000,0x2fff) AM_DEVREADWRITE("av_bank3", address_map_bank_device, read8, write8) - AM_RANGE(0x3000,0x3fff) AM_DEVREADWRITE("av_bank4", address_map_bank_device, read8, write8) - AM_RANGE(0x4000,0x4fff) AM_DEVREADWRITE("av_bank5", address_map_bank_device, read8, write8) - AM_RANGE(0x5000,0x5fff) AM_DEVREADWRITE("av_bank6", address_map_bank_device, read8, write8) - AM_RANGE(0x6000,0x6fff) AM_DEVREADWRITE("av_bank7", address_map_bank_device, read8, write8) - AM_RANGE(0x7000,0x7fff) AM_DEVREADWRITE("av_bank8", address_map_bank_device, read8, write8) - AM_RANGE(0x8000,0x8fff) AM_DEVREADWRITE("av_bank9", address_map_bank_device, read8, write8) - AM_RANGE(0x9000,0x9fff) AM_DEVREADWRITE("av_bank10", address_map_bank_device, read8, write8) - AM_RANGE(0xa000,0xafff) AM_DEVREADWRITE("av_bank11", address_map_bank_device, read8, write8) - AM_RANGE(0xb000,0xbfff) AM_DEVREADWRITE("av_bank12", address_map_bank_device, read8, write8) - AM_RANGE(0xc000,0xcfff) AM_DEVREADWRITE("av_bank13", address_map_bank_device, read8, write8) - AM_RANGE(0xd000,0xdfff) AM_DEVREADWRITE("av_bank14", address_map_bank_device, read8, write8) - AM_RANGE(0xe000,0xefff) AM_DEVREADWRITE("av_bank15", address_map_bank_device, read8, write8) - AM_RANGE(0xf000,0xfbff) AM_DEVREADWRITE("av_bank16", address_map_bank_device, read8, write8) - AM_RANGE(0xfc00,0xfc7f) AM_RAM - AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) + map(0xd400, 0xd401).r(this, FUNC(fm7_state::fm7_sub_keyboard_r)); + map(0xd402, 0xd402).r(this, FUNC(fm7_state::fm7_cancel_ack)); + map(0xd403, 0xd403).r(this, FUNC(fm7_state::fm7_sub_beeper_r)); + map(0xd404, 0xd404).r(this, FUNC(fm7_state::fm7_attn_irq_r)); + map(0xd408, 0xd408).rw(this, FUNC(fm7_state::fm7_crt_r), FUNC(fm7_state::fm7_crt_w)); + map(0xd409, 0xd409).rw(this, FUNC(fm7_state::fm7_vram_access_r), FUNC(fm7_state::fm7_vram_access_w)); + map(0xd40a, 0xd40a).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w)); + map(0xd40e, 0xd40f).w(this, FUNC(fm7_state::fm7_vram_offset_w)); + map(0xd800, 0xffff).rom(); +} + +void fm7_state::fm11_mem(address_map &map) +{ + map(0x0000, 0x0fff).rw("av_bank1", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x1000, 0x1fff).rw("av_bank2", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x2000, 0x2fff).rw("av_bank3", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x3000, 0x3fff).rw("av_bank4", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x4000, 0x4fff).rw("av_bank5", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x5000, 0x5fff).rw("av_bank6", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x6000, 0x6fff).rw("av_bank7", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x7000, 0x7fff).rw("av_bank8", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0x8fff).rw("av_bank9", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x9000, 0x9fff).rw("av_bank10", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xa000, 0xafff).rw("av_bank11", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xb000, 0xbfff).rw("av_bank12", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xcfff).rw("av_bank13", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xd000, 0xdfff).rw("av_bank14", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xe000, 0xefff).rw("av_bank15", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xf000, 0xfbff).rw("av_bank16", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xfc00, 0xfc7f).ram(); + map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w)); // I/O space (FD00-FDFF) - AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w) - AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask - AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags - AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r) - AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w) - AM_RANGE(0xfd06,0xfd0a) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0b,0xfd0b) AM_READ(fm77av_boot_mode_r) - AM_RANGE(0xfd0c,0xfd0c) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w) - AM_RANGE(0xfd10,0xfd10) AM_WRITE(fm7_init_en_w) - AM_RANGE(0xfd11,0xfd11) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd12,0xfd12) AM_READWRITE(fm77av_sub_modestatus_r,fm77av_sub_modestatus_w) - AM_RANGE(0xfd13,0xfd13) AM_WRITE(fm77av_sub_bank_w) - AM_RANGE(0xfd14,0xfd14) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd17,0xfd17) AM_READ(fm7_fmirq_r) - AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w) - AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w) - AM_RANGE(0xfd24,0xfd2b) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd30,0xfd34) AM_WRITE(fm77av_analog_palette_w) - AM_RANGE(0xfd35,0xfd36) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w) - AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w) - AM_RANGE(0xfd40,0xfd7f) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd80,0xfd93) AM_READWRITE(fm7_mmr_r,fm7_mmr_w) - AM_RANGE(0xfd94,0xfdff) AM_READ(fm7_unknown_r) - AM_RANGE(0xfe00,0xffdf) AM_RAM_WRITE(fm77av_bootram_w) AM_SHARE("boot_ram") - AM_RANGE(0xffe0,0xffef) AM_RAM - AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w) -ADDRESS_MAP_END + map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w)); + map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask + map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags + map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r)); + map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w)); + map(0xfd06, 0xfd0a).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0b, 0xfd0b).r(this, FUNC(fm7_state::fm77av_boot_mode_r)); + map(0xfd0c, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w)); + map(0xfd10, 0xfd10).w(this, FUNC(fm7_state::fm7_init_en_w)); + map(0xfd11, 0xfd11).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd12, 0xfd12).rw(this, FUNC(fm7_state::fm77av_sub_modestatus_r), FUNC(fm7_state::fm77av_sub_modestatus_w)); + map(0xfd13, 0xfd13).w(this, FUNC(fm7_state::fm77av_sub_bank_w)); + map(0xfd14, 0xfd14).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd17, 0xfd17).r(this, FUNC(fm7_state::fm7_fmirq_r)); + map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w)); + map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w)); + map(0xfd24, 0xfd2b).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd30, 0xfd34).w(this, FUNC(fm7_state::fm77av_analog_palette_w)); + map(0xfd35, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w)); + map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w)); + map(0xfd40, 0xfd7f).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd80, 0xfd93).rw(this, FUNC(fm7_state::fm7_mmr_r), FUNC(fm7_state::fm7_mmr_w)); + map(0xfd94, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfe00, 0xffdf).ram().w(this, FUNC(fm7_state::fm77av_bootram_w)).share("boot_ram"); + map(0xffe0, 0xffef).ram(); + map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w)); +} // Much of this is guesswork at the moment -ADDRESS_MAP_START(fm7_state::fm11_sub_mem) - AM_RANGE(0x0000,0x7fff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM - AM_RANGE(0x8000,0x8fff) AM_RAM // Console RAM(?) - AM_RANGE(0x9000,0x9f7f) AM_RAM // Work RAM(?) - AM_RANGE(0x9f80,0x9fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xafe0,0xafe3) AM_RAM +void fm7_state::fm11_sub_mem(address_map &map) +{ + map(0x0000, 0x7fff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM + map(0x8000, 0x8fff).ram(); // Console RAM(?) + map(0x9000, 0x9f7f).ram(); // Work RAM(?) + map(0x9f80, 0x9fff).ram().share("shared_ram"); + map(0xafe0, 0xafe3).ram(); // AM_RANGE(0xafe4,0xafe4) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w) - AM_RANGE(0xafe6,0xafe6) AM_READWRITE(fm77av_video_flags_r,fm77av_video_flags_w) - AM_RANGE(0xaff0,0xaff0) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w) - AM_RANGE(0xc000,0xffff) AM_ROM // sybsystem ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm11_x86_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0xfefff) AM_RAM - AM_RANGE(0xff000,0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm11_x86_io) - AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w) - AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask - AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags - AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r) - AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w) - AM_RANGE(0xfd06,0xfd0c) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w) - AM_RANGE(0xfd10,0xfd17) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w) - AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w) - AM_RANGE(0xfd24,0xfd36) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w) - AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w) - AM_RANGE(0xfd40,0xfdff) AM_READ(fm7_unknown_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm16_mem) - AM_RANGE(0x00000,0xfbfff) AM_RAM - AM_RANGE(0xfc000,0xfffff) AM_ROM // IPL -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm16_io) - AM_RANGE(0xfd00,0xfd01) AM_READWRITE8(fm7_keyboard_r,fm7_cassette_printer_w,0xffff) - AM_RANGE(0xfd02,0xfd03) AM_READWRITE8(fm7_cassette_printer_r,fm7_irq_mask_w,0x00ff) // IRQ mask - AM_RANGE(0xfd02,0xfd03) AM_READWRITE8(fm7_irq_cause_r,fm7_beeper_w,0xff00) // IRQ flags - AM_RANGE(0xfd04,0xfd05) AM_READ8(fm7_fd04_r,0x00ff) - AM_RANGE(0xfd04,0xfd05) AM_READWRITE8(fm7_subintf_r,fm7_subintf_w,0xff00) + map(0xafe6, 0xafe6).rw(this, FUNC(fm7_state::fm77av_video_flags_r), FUNC(fm7_state::fm77av_video_flags_w)); + map(0xaff0, 0xaff0).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w)); + map(0xc000, 0xffff).rom(); // sybsystem ROM +} + +void fm7_state::fm11_x86_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xfefff).ram(); + map(0xff000, 0xfffff).rom(); +} + +void fm7_state::fm11_x86_io(address_map &map) +{ + map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w)); + map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask + map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags + map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r)); + map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w)); + map(0xfd06, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w)); + map(0xfd10, 0xfd17).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w)); + map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w)); + map(0xfd24, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w)); + map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w)); + map(0xfd40, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r)); +} + +void fm7_state::fm16_mem(address_map &map) +{ + map(0x00000, 0xfbfff).ram(); + map(0xfc000, 0xfffff).rom(); // IPL +} + +void fm7_state::fm16_io(address_map &map) +{ + map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w)); + map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask + map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags + map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r)); + map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w)); // AM_RANGE(0xfd06,0xfd0c) AM_READ8(fm7_unknown_r,0xffff) - AM_RANGE(0xfd0e,0xfd0f) AM_READWRITE8(fm7_rom_en_r,fm7_rom_en_w,0xff00) + map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w)); // AM_RANGE(0xfd10,0xfd17) AM_READ8(fm7_unknown_r,0xffff) - AM_RANGE(0xfd18,0xfd1f) AM_READWRITE8(fm7_fdc_r,fm7_fdc_w,0xffff) - AM_RANGE(0xfd20,0xfd23) AM_READWRITE8(fm7_kanji_r,fm7_kanji_w,0xffff) + map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w)); + map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w)); // AM_RANGE(0xfd24,0xfd36) AM_READ8(fm7_unknown_r,0xffff) - AM_RANGE(0xfd36,0xfd37) AM_WRITE8(fm7_multipage_w,0xff00) - AM_RANGE(0xfd38,0xfd3f) AM_READWRITE8(fm7_palette_r,fm7_palette_w,0xffff) + map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w)); + map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w)); // AM_RANGE(0xfd40,0xfdff) AM_READ8(fm7_unknown_r,0xffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm16_sub_mem) - AM_RANGE(0x0000,0xafff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM - AM_RANGE(0xb000,0xffff) AM_ROM // subsystem ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm77av_mem) - AM_RANGE(0x0000,0x0fff) AM_DEVREADWRITE("av_bank1", address_map_bank_device, read8, write8) - AM_RANGE(0x1000,0x1fff) AM_DEVREADWRITE("av_bank2", address_map_bank_device, read8, write8) - AM_RANGE(0x2000,0x2fff) AM_DEVREADWRITE("av_bank3", address_map_bank_device, read8, write8) - AM_RANGE(0x3000,0x3fff) AM_DEVREADWRITE("av_bank4", address_map_bank_device, read8, write8) - AM_RANGE(0x4000,0x4fff) AM_DEVREADWRITE("av_bank5", address_map_bank_device, read8, write8) - AM_RANGE(0x5000,0x5fff) AM_DEVREADWRITE("av_bank6", address_map_bank_device, read8, write8) - AM_RANGE(0x6000,0x6fff) AM_DEVREADWRITE("av_bank7", address_map_bank_device, read8, write8) - AM_RANGE(0x7000,0x7fff) AM_DEVREADWRITE("av_bank8", address_map_bank_device, read8, write8) - AM_RANGE(0x8000,0x8fff) AM_DEVREADWRITE("av_bank9", address_map_bank_device, read8, write8) - AM_RANGE(0x9000,0x9fff) AM_DEVREADWRITE("av_bank10", address_map_bank_device, read8, write8) - AM_RANGE(0xa000,0xafff) AM_DEVREADWRITE("av_bank11", address_map_bank_device, read8, write8) - AM_RANGE(0xb000,0xbfff) AM_DEVREADWRITE("av_bank12", address_map_bank_device, read8, write8) - AM_RANGE(0xc000,0xcfff) AM_DEVREADWRITE("av_bank13", address_map_bank_device, read8, write8) - AM_RANGE(0xd000,0xdfff) AM_DEVREADWRITE("av_bank14", address_map_bank_device, read8, write8) - AM_RANGE(0xe000,0xefff) AM_DEVREADWRITE("av_bank15", address_map_bank_device, read8, write8) - AM_RANGE(0xf000,0xfbff) AM_DEVREADWRITE("av_bank16", address_map_bank_device, read8, write8) - AM_RANGE(0xfc00,0xfc7f) AM_RAM - AM_RANGE(0xfc80,0xfcff) AM_READWRITE(fm7_main_shared_r,fm7_main_shared_w) +} + +void fm7_state::fm16_sub_mem(address_map &map) +{ + map(0x0000, 0xafff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM + map(0xb000, 0xffff).rom(); // subsystem ROM +} + +void fm7_state::fm77av_mem(address_map &map) +{ + map(0x0000, 0x0fff).rw("av_bank1", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x1000, 0x1fff).rw("av_bank2", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x2000, 0x2fff).rw("av_bank3", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x3000, 0x3fff).rw("av_bank4", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x4000, 0x4fff).rw("av_bank5", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x5000, 0x5fff).rw("av_bank6", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x6000, 0x6fff).rw("av_bank7", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x7000, 0x7fff).rw("av_bank8", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0x8fff).rw("av_bank9", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x9000, 0x9fff).rw("av_bank10", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xa000, 0xafff).rw("av_bank11", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xb000, 0xbfff).rw("av_bank12", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xcfff).rw("av_bank13", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xd000, 0xdfff).rw("av_bank14", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xe000, 0xefff).rw("av_bank15", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xf000, 0xfbff).rw("av_bank16", FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xfc00, 0xfc7f).ram(); + map(0xfc80, 0xfcff).rw(this, FUNC(fm7_state::fm7_main_shared_r), FUNC(fm7_state::fm7_main_shared_w)); // I/O space (FD00-FDFF) - AM_RANGE(0xfd00,0xfd01) AM_READWRITE(fm7_keyboard_r,fm7_cassette_printer_w) - AM_RANGE(0xfd02,0xfd02) AM_READWRITE(fm7_cassette_printer_r,fm7_irq_mask_w) // IRQ mask - AM_RANGE(0xfd03,0xfd03) AM_READWRITE(fm7_irq_cause_r,fm7_beeper_w) // IRQ flags - AM_RANGE(0xfd04,0xfd04) AM_READ(fm7_fd04_r) - AM_RANGE(0xfd05,0xfd05) AM_READWRITE(fm7_subintf_r,fm7_subintf_w) - AM_RANGE(0xfd06,0xfd0a) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0b,0xfd0b) AM_READ(fm77av_boot_mode_r) - AM_RANGE(0xfd0c,0xfd0c) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd0d,0xfd0d) AM_READWRITE(fm7_psg_select_r,fm7_psg_select_w) - AM_RANGE(0xfd0e,0xfd0e) AM_READWRITE(fm7_psg_data_r, fm7_psg_data_w) - AM_RANGE(0xfd0f,0xfd0f) AM_READWRITE(fm7_rom_en_r,fm7_rom_en_w) - AM_RANGE(0xfd10,0xfd10) AM_WRITE(fm7_init_en_w) - AM_RANGE(0xfd11,0xfd11) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd12,0xfd12) AM_READWRITE(fm77av_sub_modestatus_r,fm77av_sub_modestatus_w) - AM_RANGE(0xfd13,0xfd13) AM_WRITE(fm77av_sub_bank_w) - AM_RANGE(0xfd14,0xfd14) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd15,0xfd15) AM_READWRITE(fm7_psg_select_r,fm77av_ym_select_w) - AM_RANGE(0xfd16,0xfd16) AM_READWRITE(fm7_psg_data_r,fm7_psg_data_w) - AM_RANGE(0xfd17,0xfd17) AM_READ(fm7_fmirq_r) - AM_RANGE(0xfd18,0xfd1f) AM_READWRITE(fm7_fdc_r,fm7_fdc_w) - AM_RANGE(0xfd20,0xfd23) AM_READWRITE(fm7_kanji_r,fm7_kanji_w) - AM_RANGE(0xfd24,0xfd2b) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd30,0xfd34) AM_WRITE(fm77av_analog_palette_w) - AM_RANGE(0xfd35,0xfd36) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd37,0xfd37) AM_WRITE(fm7_multipage_w) - AM_RANGE(0xfd38,0xfd3f) AM_READWRITE(fm7_palette_r,fm7_palette_w) - AM_RANGE(0xfd40,0xfd7f) AM_READ(fm7_unknown_r) - AM_RANGE(0xfd80,0xfd93) AM_READWRITE(fm7_mmr_r,fm7_mmr_w) - AM_RANGE(0xfd94,0xfdff) AM_READ(fm7_unknown_r) + map(0xfd00, 0xfd01).rw(this, FUNC(fm7_state::fm7_keyboard_r), FUNC(fm7_state::fm7_cassette_printer_w)); + map(0xfd02, 0xfd02).rw(this, FUNC(fm7_state::fm7_cassette_printer_r), FUNC(fm7_state::fm7_irq_mask_w)); // IRQ mask + map(0xfd03, 0xfd03).rw(this, FUNC(fm7_state::fm7_irq_cause_r), FUNC(fm7_state::fm7_beeper_w)); // IRQ flags + map(0xfd04, 0xfd04).r(this, FUNC(fm7_state::fm7_fd04_r)); + map(0xfd05, 0xfd05).rw(this, FUNC(fm7_state::fm7_subintf_r), FUNC(fm7_state::fm7_subintf_w)); + map(0xfd06, 0xfd0a).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0b, 0xfd0b).r(this, FUNC(fm7_state::fm77av_boot_mode_r)); + map(0xfd0c, 0xfd0c).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd0d, 0xfd0d).rw(this, FUNC(fm7_state::fm7_psg_select_r), FUNC(fm7_state::fm7_psg_select_w)); + map(0xfd0e, 0xfd0e).rw(this, FUNC(fm7_state::fm7_psg_data_r), FUNC(fm7_state::fm7_psg_data_w)); + map(0xfd0f, 0xfd0f).rw(this, FUNC(fm7_state::fm7_rom_en_r), FUNC(fm7_state::fm7_rom_en_w)); + map(0xfd10, 0xfd10).w(this, FUNC(fm7_state::fm7_init_en_w)); + map(0xfd11, 0xfd11).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd12, 0xfd12).rw(this, FUNC(fm7_state::fm77av_sub_modestatus_r), FUNC(fm7_state::fm77av_sub_modestatus_w)); + map(0xfd13, 0xfd13).w(this, FUNC(fm7_state::fm77av_sub_bank_w)); + map(0xfd14, 0xfd14).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd15, 0xfd15).rw(this, FUNC(fm7_state::fm7_psg_select_r), FUNC(fm7_state::fm77av_ym_select_w)); + map(0xfd16, 0xfd16).rw(this, FUNC(fm7_state::fm7_psg_data_r), FUNC(fm7_state::fm7_psg_data_w)); + map(0xfd17, 0xfd17).r(this, FUNC(fm7_state::fm7_fmirq_r)); + map(0xfd18, 0xfd1f).rw(this, FUNC(fm7_state::fm7_fdc_r), FUNC(fm7_state::fm7_fdc_w)); + map(0xfd20, 0xfd23).rw(this, FUNC(fm7_state::fm7_kanji_r), FUNC(fm7_state::fm7_kanji_w)); + map(0xfd24, 0xfd2b).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd30, 0xfd34).w(this, FUNC(fm7_state::fm77av_analog_palette_w)); + map(0xfd35, 0xfd36).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd37, 0xfd37).w(this, FUNC(fm7_state::fm7_multipage_w)); + map(0xfd38, 0xfd3f).rw(this, FUNC(fm7_state::fm7_palette_r), FUNC(fm7_state::fm7_palette_w)); + map(0xfd40, 0xfd7f).r(this, FUNC(fm7_state::fm7_unknown_r)); + map(0xfd80, 0xfd93).rw(this, FUNC(fm7_state::fm7_mmr_r), FUNC(fm7_state::fm7_mmr_w)); + map(0xfd94, 0xfdff).r(this, FUNC(fm7_state::fm7_unknown_r)); // Boot ROM (RAM on FM77AV and later) - AM_RANGE(0xfe00,0xffdf) AM_RAM_WRITE(fm77av_bootram_w) AM_SHARE("boot_ram") - AM_RANGE(0xffe0,0xffef) AM_RAM - AM_RANGE(0xfff0,0xffff) AM_READWRITE(vector_r,vector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm77av_sub_mem) - AM_RANGE(0x0000,0xbfff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM - AM_RANGE(0xc000,0xcfff) AM_RAM AM_REGION("maincpu",0x1c000) // Console RAM - AM_RANGE(0xd000,0xd37f) AM_RAM AM_REGION("maincpu",0x1d000) // Work RAM - AM_RANGE(0xd380,0xd3ff) AM_RAM AM_SHARE("shared_ram") + map(0xfe00, 0xffdf).ram().w(this, FUNC(fm7_state::fm77av_bootram_w)).share("boot_ram"); + map(0xffe0, 0xffef).ram(); + map(0xfff0, 0xffff).rw(this, FUNC(fm7_state::vector_r), FUNC(fm7_state::vector_w)); +} + +void fm7_state::fm77av_sub_mem(address_map &map) +{ + map(0x0000, 0xbfff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM + map(0xc000, 0xcfff).ram().region("maincpu", 0x1c000); // Console RAM + map(0xd000, 0xd37f).ram().region("maincpu", 0x1d000); // Work RAM + map(0xd380, 0xd3ff).ram().share("shared_ram"); // I/O space (D400-D4FF) - AM_RANGE(0xd400,0xd401) AM_READ(fm7_sub_keyboard_r) - AM_RANGE(0xd402,0xd402) AM_READ(fm7_cancel_ack) - AM_RANGE(0xd403,0xd403) AM_READ(fm7_sub_beeper_r) - AM_RANGE(0xd404,0xd404) AM_READ(fm7_attn_irq_r) - AM_RANGE(0xd408,0xd408) AM_READWRITE(fm7_crt_r,fm7_crt_w) - AM_RANGE(0xd409,0xd409) AM_READWRITE(fm7_vram_access_r,fm7_vram_access_w) - AM_RANGE(0xd40a,0xd40a) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w) - AM_RANGE(0xd40e,0xd40f) AM_WRITE(fm7_vram_offset_w) - AM_RANGE(0xd410,0xd42b) AM_READWRITE(fm77av_alu_r, fm77av_alu_w) - AM_RANGE(0xd430,0xd430) AM_READWRITE(fm77av_video_flags_r,fm77av_video_flags_w) - AM_RANGE(0xd431,0xd432) AM_READWRITE(fm77av_key_encoder_r,fm77av_key_encoder_w) - AM_RANGE(0xd500,0xd7ff) AM_RAM AM_REGION("maincpu",0x1d500) // Work RAM - AM_RANGE(0xd800,0xdfff) AM_ROMBANK("bank20") - AM_RANGE(0xe000,0xffff) AM_ROMBANK("bank21") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fm7_state::fm7_banked_mem) + map(0xd400, 0xd401).r(this, FUNC(fm7_state::fm7_sub_keyboard_r)); + map(0xd402, 0xd402).r(this, FUNC(fm7_state::fm7_cancel_ack)); + map(0xd403, 0xd403).r(this, FUNC(fm7_state::fm7_sub_beeper_r)); + map(0xd404, 0xd404).r(this, FUNC(fm7_state::fm7_attn_irq_r)); + map(0xd408, 0xd408).rw(this, FUNC(fm7_state::fm7_crt_r), FUNC(fm7_state::fm7_crt_w)); + map(0xd409, 0xd409).rw(this, FUNC(fm7_state::fm7_vram_access_r), FUNC(fm7_state::fm7_vram_access_w)); + map(0xd40a, 0xd40a).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w)); + map(0xd40e, 0xd40f).w(this, FUNC(fm7_state::fm7_vram_offset_w)); + map(0xd410, 0xd42b).rw(this, FUNC(fm7_state::fm77av_alu_r), FUNC(fm7_state::fm77av_alu_w)); + map(0xd430, 0xd430).rw(this, FUNC(fm7_state::fm77av_video_flags_r), FUNC(fm7_state::fm77av_video_flags_w)); + map(0xd431, 0xd432).rw(this, FUNC(fm7_state::fm77av_key_encoder_r), FUNC(fm7_state::fm77av_key_encoder_w)); + map(0xd500, 0xd7ff).ram().region("maincpu", 0x1d500); // Work RAM + map(0xd800, 0xdfff).bankr("bank20"); + map(0xe000, 0xffff).bankr("bank21"); +} + +void fm7_state::fm7_banked_mem(address_map &map) +{ // Extended RAM - AM_RANGE(0x00000,0x0ffff) AM_RAM AM_REGION("maincpu",0x00000) + map(0x00000, 0x0ffff).ram().region("maincpu", 0x00000); // Sub CPU space - AM_RANGE(0x10000,0x1bfff) AM_READWRITE(fm7_vram_r,fm7_vram_w) // VRAM - AM_RANGE(0x1c000,0x1cfff) AM_RAM AM_REGION("maincpu",0x1c000) // Console RAM - AM_RANGE(0x1d000,0x1d37f) AM_RAM AM_REGION("maincpu",0x1d000) // Work RAM - AM_RANGE(0x1d380,0x1d3ff) AM_RAM AM_SHARE("shared_ram") + map(0x10000, 0x1bfff).rw(this, FUNC(fm7_state::fm7_vram_r), FUNC(fm7_state::fm7_vram_w)); // VRAM + map(0x1c000, 0x1cfff).ram().region("maincpu", 0x1c000); // Console RAM + map(0x1d000, 0x1d37f).ram().region("maincpu", 0x1d000); // Work RAM + map(0x1d380, 0x1d3ff).ram().share("shared_ram"); // I/O space (D400-D4FF) - AM_RANGE(0x1d400,0x1d401) AM_READ(fm7_sub_keyboard_r) - AM_RANGE(0x1d402,0x1d402) AM_READ(fm7_cancel_ack) - AM_RANGE(0x1d403,0x1d403) AM_READ(fm7_sub_beeper_r) - AM_RANGE(0x1d404,0x1d404) AM_READ(fm7_attn_irq_r) - AM_RANGE(0x1d408,0x1d408) AM_READWRITE(fm7_crt_r,fm7_crt_w) - AM_RANGE(0x1d409,0x1d409) AM_READWRITE(fm7_vram_access_r,fm7_vram_access_w) - AM_RANGE(0x1d40a,0x1d40a) AM_READWRITE(fm7_sub_busyflag_r,fm7_sub_busyflag_w) - AM_RANGE(0x1d40e,0x1d40f) AM_WRITE(fm7_vram_offset_w) - AM_RANGE(0x1d410,0x1d42b) AM_READWRITE(fm77av_alu_r, fm77av_alu_w) - AM_RANGE(0x1d430,0x1d430) AM_READWRITE(fm77av_video_flags_r,fm77av_video_flags_w) - AM_RANGE(0x1d431,0x1d432) AM_READWRITE(fm77av_key_encoder_r,fm77av_key_encoder_w) - AM_RANGE(0x1d500,0x1d7ff) AM_RAM AM_REGION("maincpu",0x1d500) // Work RAM - AM_RANGE(0x1d800,0x1dfff) AM_ROMBANK("bank20") - AM_RANGE(0x1e000,0x1ffff) AM_ROMBANK("bank21") + map(0x1d400, 0x1d401).r(this, FUNC(fm7_state::fm7_sub_keyboard_r)); + map(0x1d402, 0x1d402).r(this, FUNC(fm7_state::fm7_cancel_ack)); + map(0x1d403, 0x1d403).r(this, FUNC(fm7_state::fm7_sub_beeper_r)); + map(0x1d404, 0x1d404).r(this, FUNC(fm7_state::fm7_attn_irq_r)); + map(0x1d408, 0x1d408).rw(this, FUNC(fm7_state::fm7_crt_r), FUNC(fm7_state::fm7_crt_w)); + map(0x1d409, 0x1d409).rw(this, FUNC(fm7_state::fm7_vram_access_r), FUNC(fm7_state::fm7_vram_access_w)); + map(0x1d40a, 0x1d40a).rw(this, FUNC(fm7_state::fm7_sub_busyflag_r), FUNC(fm7_state::fm7_sub_busyflag_w)); + map(0x1d40e, 0x1d40f).w(this, FUNC(fm7_state::fm7_vram_offset_w)); + map(0x1d410, 0x1d42b).rw(this, FUNC(fm7_state::fm77av_alu_r), FUNC(fm7_state::fm77av_alu_w)); + map(0x1d430, 0x1d430).rw(this, FUNC(fm7_state::fm77av_video_flags_r), FUNC(fm7_state::fm77av_video_flags_w)); + map(0x1d431, 0x1d432).rw(this, FUNC(fm7_state::fm77av_key_encoder_r), FUNC(fm7_state::fm77av_key_encoder_w)); + map(0x1d500, 0x1d7ff).ram().region("maincpu", 0x1d500); // Work RAM + map(0x1d800, 0x1dfff).bankr("bank20"); + map(0x1e000, 0x1ffff).bankr("bank21"); // more RAM? - AM_RANGE(0x20000,0x2ffff) AM_RAM AM_REGION("maincpu",0x20000) + map(0x20000, 0x2ffff).ram().region("maincpu", 0x20000); // Main CPU space - AM_RANGE(0x30000,0x35fff) AM_RAM AM_REGION("maincpu",0x30000) - AM_RANGE(0x36000,0x37fff) AM_READ_BANK("init_bank_r") AM_WRITE_BANK("init_bank_w") - AM_RANGE(0x38000,0x3fbff) AM_READ_BANK("fbasic_bank_r") AM_WRITE_BANK("fbasic_bank_w") - AM_RANGE(0x3fc00,0x3ffff) AM_RAM AM_REGION("maincpu",0x3fc00) + map(0x30000, 0x35fff).ram().region("maincpu", 0x30000); + map(0x36000, 0x37fff).bankr("init_bank_r").bankw("init_bank_w"); + map(0x38000, 0x3fbff).bankr("fbasic_bank_r").bankw("fbasic_bank_w"); + map(0x3fc00, 0x3ffff).ram().region("maincpu", 0x3fc00); -ADDRESS_MAP_END +} /* Input ports */ INPUT_PORTS_START( fm7_keyboard ) diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp index 774d922a346..c8c606722a5 100644 --- a/src/mame/drivers/fmtowns.cpp +++ b/src/mame/drivers/fmtowns.cpp @@ -2190,34 +2190,35 @@ WRITE_LINE_MEMBER( towns_state::towns_syndet_irq ) } -ADDRESS_MAP_START(towns_state::towns_mem) +void towns_state::towns_mem(address_map &map) +{ // memory map based on FM-Towns/Bochs (Bochs modified to emulate the FM-Towns) // may not be (and probably is not) correct - AM_RANGE(0x00000000, 0x000bffff) AM_RAM - AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffffffff) - AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffffffff) - AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7") - AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM - AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffffffff) - AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM - AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffffffff) AM_SHARE("nvram") // CMOS? RAM - AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11)) - AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12)) - AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12") + map(0x00000000, 0x000bffff).ram(); + map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w)); + map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w)); + map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7"); + map(0x000cc000, 0x000cff7f).ram(); + map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w)); + map(0x000d0000, 0x000d7fff).ram(); + map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram"); // CMOS? RAM + map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11)) + map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12)) + map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12"); // AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM - AM_RANGE(0x80000000, 0x8007ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffffffff) AM_MIRROR(0x80000) // VRAM - AM_RANGE(0x80100000, 0x8017ffff) AM_READWRITE8(towns_gfx_packed_r,towns_gfx_packed_w,0xffffffff) AM_MIRROR(0x80000) // VRAM - AM_RANGE(0x81000000, 0x8101ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffffffff) // Sprite RAM - AM_RANGE(0xc0000000, 0xc0ffffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, static_mem_read, static_mem_write, 0xffffffff) - AM_RANGE(0xc1000000, 0xc1ffffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffffffff) - AM_RANGE(0xc2000000, 0xc207ffff) AM_ROM AM_REGION("user",0x000000) // OS ROM - AM_RANGE(0xc2080000, 0xc20fffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM - AM_RANGE(0xc2100000, 0xc213ffff) AM_ROM AM_REGION("user",0x180000) // FONT ROM - AM_RANGE(0xc2140000, 0xc2141fff) AM_READWRITE8(towns_cmos_r,towns_cmos_w,0xffffffff) // CMOS (mirror?) - AM_RANGE(0xc2180000, 0xc21fffff) AM_ROM AM_REGION("user",0x080000) // F20 ROM - AM_RANGE(0xc2200000, 0xc2200fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffffffff) // WAVE RAM - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM -ADDRESS_MAP_END + map(0x80000000, 0x8007ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x80000); // VRAM + map(0x80100000, 0x8017ffff).rw(this, FUNC(towns_state::towns_gfx_packed_r), FUNC(towns_state::towns_gfx_packed_w)).mirror(0x80000); // VRAM + map(0x81000000, 0x8101ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM + map(0xc0000000, 0xc0ffffff).rw(m_icmemcard, FUNC(fmt_icmem_device::static_mem_read), FUNC(fmt_icmem_device::static_mem_write)); + map(0xc1000000, 0xc1ffffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write)); + map(0xc2000000, 0xc207ffff).rom().region("user", 0x000000); // OS ROM + map(0xc2080000, 0xc20fffff).rom().region("user", 0x100000); // DIC ROM + map(0xc2100000, 0xc213ffff).rom().region("user", 0x180000); // FONT ROM + map(0xc2140000, 0xc2141fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)); // CMOS (mirror?) + map(0xc2180000, 0xc21fffff).rom().region("user", 0x080000); // F20 ROM + map(0xc2200000, 0xc2200fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM + map(0xfffc0000, 0xffffffff).rom().region("user", 0x200000); // SYSTEM ROM +} ADDRESS_MAP_START(towns_state::marty_mem) AM_RANGE(0x00000000, 0x000bffff) AM_RAM @@ -2268,64 +2269,65 @@ ADDRESS_MAP_START(towns_state::ux_mem) AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM ADDRESS_MAP_END -ADDRESS_MAP_START(towns_state::towns_io) +void towns_state::towns_io(address_map &map) +{ // I/O ports derived from FM Towns/Bochs, these are specific to the FM Towns // System ports - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x0003) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff00ff) - AM_RANGE(0x0010,0x0013) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff00ff) - AM_RANGE(0x0020,0x0033) AM_READWRITE8(towns_system_r,towns_system_w, 0xffffffff) - AM_RANGE(0x0040,0x0047) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff00ff) - AM_RANGE(0x0050,0x0057) AM_DEVREADWRITE8("pit2", pit8253_device, read, write, 0x00ff00ff) - AM_RANGE(0x0060,0x0063) AM_READWRITE8(towns_port60_r, towns_port60_w, 0x000000ff) - AM_RANGE(0x0068,0x006b) AM_READWRITE8(towns_intervaltimer2_r, towns_intervaltimer2_w, 0xffffffff) - AM_RANGE(0x006c,0x006f) AM_READWRITE8(towns_sys6c_r,towns_sys6c_w, 0x000000ff) + map.unmap_value_high(); + map(0x0000, 0x0003).rw(m_pic_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask32(0x00ff00ff); + map(0x0010, 0x0013).rw(m_pic_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask32(0x00ff00ff); + map(0x0020, 0x0033).rw(this, FUNC(towns_state::towns_system_r), FUNC(towns_state::towns_system_w)); + map(0x0040, 0x0047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0x00ff00ff); + map(0x0050, 0x0057).rw("pit2", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0x00ff00ff); + map(0x0060, 0x0060).rw(this, FUNC(towns_state::towns_port60_r), FUNC(towns_state::towns_port60_w)); + map(0x0068, 0x006b).rw(this, FUNC(towns_state::towns_intervaltimer2_r), FUNC(towns_state::towns_intervaltimer2_w)); + map(0x006c, 0x006c).rw(this, FUNC(towns_state::towns_sys6c_r), FUNC(towns_state::towns_sys6c_w)); // 0x0070/0x0080 - CMOS RTC - AM_RANGE(0x0070,0x0073) AM_READWRITE8(towns_rtc_r,towns_rtc_w,0x000000ff) - AM_RANGE(0x0080,0x0083) AM_WRITE8(towns_rtc_select_w,0x000000ff) + map(0x0070, 0x0070).rw(this, FUNC(towns_state::towns_rtc_r), FUNC(towns_state::towns_rtc_w)); + map(0x0080, 0x0080).w(this, FUNC(towns_state::towns_rtc_select_w)); // DMA controllers (uPD71071) - AM_RANGE(0x00a0,0x00af) AM_READWRITE8(towns_dma1_r, towns_dma1_w, 0xffffffff) - AM_RANGE(0x00b0,0x00bf) AM_READWRITE8(towns_dma2_r, towns_dma2_w, 0xffffffff) + map(0x00a0, 0x00af).rw(this, FUNC(towns_state::towns_dma1_r), FUNC(towns_state::towns_dma1_w)); + map(0x00b0, 0x00bf).rw(this, FUNC(towns_state::towns_dma2_r), FUNC(towns_state::towns_dma2_w)); // Floppy controller - AM_RANGE(0x0200,0x020f) AM_READWRITE8(towns_floppy_r, towns_floppy_w, 0xffffffff) + map(0x0200, 0x020f).rw(this, FUNC(towns_state::towns_floppy_r), FUNC(towns_state::towns_floppy_w)); // CRTC / Video - AM_RANGE(0x0400,0x0403) AM_READ8(towns_video_unknown_r, 0x000000ff) // R/O (0x400) - AM_RANGE(0x0404,0x0407) AM_READWRITE8(towns_video_404_r, towns_video_404_w, 0x000000ff) // R/W (0x404) - AM_RANGE(0x0440,0x045f) AM_READWRITE8(towns_video_440_r, towns_video_440_w, 0xffffffff) + map(0x0400, 0x0400).r(this, FUNC(towns_state::towns_video_unknown_r)); // R/O (0x400) + map(0x0404, 0x0404).rw(this, FUNC(towns_state::towns_video_404_r), FUNC(towns_state::towns_video_404_w)); // R/W (0x404) + map(0x0440, 0x045f).rw(this, FUNC(towns_state::towns_video_440_r), FUNC(towns_state::towns_video_440_w)); // System port - AM_RANGE(0x0480,0x0483) AM_READWRITE8(towns_sys480_r,towns_sys480_w,0x000000ff) // R/W (0x480) + map(0x0480, 0x0480).rw(this, FUNC(towns_state::towns_sys480_r), FUNC(towns_state::towns_sys480_w)); // R/W (0x480) // IC Memory Card - AM_RANGE(0x0488,0x048b) AM_DEVREAD8("icmemcard",fmt_icmem_device,status_r,0x00ff0000) - AM_RANGE(0x0490,0x0493) AM_DEVREADWRITE8("icmemcard",fmt_icmem_device,bank_r,bank_w,0x0000ffff) + map(0x048a, 0x048a).r(m_icmemcard, FUNC(fmt_icmem_device::status_r)); + map(0x0490, 0x0491).rw(m_icmemcard, FUNC(fmt_icmem_device::bank_r), FUNC(fmt_icmem_device::bank_w)); // CD-ROM - AM_RANGE(0x04c0,0x04cf) AM_READWRITE8(towns_cdrom_r,towns_cdrom_w,0x00ff00ff) + map(0x04c0, 0x04cf).rw(this, FUNC(towns_state::towns_cdrom_r), FUNC(towns_state::towns_cdrom_w)).umask32(0x00ff00ff); // Joystick / Mouse ports - AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff00ff) - AM_RANGE(0x04d4,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff0000) + map(0x04d0, 0x04d3).r(this, FUNC(towns_state::towns_padport_r)).umask32(0x00ff00ff); + map(0x04d6, 0x04d6).w(this, FUNC(towns_state::towns_pad_mask_w)); // Sound (YM3438 [FM], RF5c68 [PCM]) - AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff00ff) - AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffffffff) // R/W -- volume ports - AM_RANGE(0x04e4,0x04e7) AM_READ8(unksnd_r, 0xffffffff) - AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffffffff) - AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffffffff) + map(0x04d8, 0x04df).rw("fm", FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask32(0x00ff00ff); + map(0x04e0, 0x04e3).rw(this, FUNC(towns_state::towns_volume_r), FUNC(towns_state::towns_volume_w)); // R/W -- volume ports + map(0x04e4, 0x04e7).r(this, FUNC(towns_state::unksnd_r)); + map(0x04e8, 0x04ef).rw(this, FUNC(towns_state::towns_sound_ctrl_r), FUNC(towns_state::towns_sound_ctrl_w)); + map(0x04f0, 0x04fb).w("pcm", FUNC(rf5c68_device::rf5c68_w)); // CRTC / Video - AM_RANGE(0x05c8,0x05cb) AM_READWRITE8(towns_video_5c8_r, towns_video_5c8_w, 0xffffffff) + map(0x05c8, 0x05cb).rw(this, FUNC(towns_state::towns_video_5c8_r), FUNC(towns_state::towns_video_5c8_w)); // System ports - AM_RANGE(0x05e8,0x05ef) AM_READWRITE8(towns_sys5e8_r, towns_sys5e8_w, 0x00ff00ff) + map(0x05e8, 0x05ef).rw(this, FUNC(towns_state::towns_sys5e8_r), FUNC(towns_state::towns_sys5e8_w)).umask32(0x00ff00ff); // Keyboard (8042 MCU) - AM_RANGE(0x0600,0x0607) AM_READWRITE8(towns_keyboard_r, towns_keyboard_w,0x00ff00ff) + map(0x0600, 0x0607).rw(this, FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask32(0x00ff00ff); // RS-232C interface - AM_RANGE(0x0a00,0x0a0b) AM_READWRITE8(towns_serial_r, towns_serial_w, 0x00ff00ff) + map(0x0a00, 0x0a0b).rw(this, FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask32(0x00ff00ff); // SCSI controller - AM_RANGE(0x0c30,0x0c37) AM_DEVREADWRITE8("fmscsi",fmscsi_device,fmscsi_r,fmscsi_w,0x00ff00ff) + map(0x0c30, 0x0c37).rw("fmscsi", FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask32(0x00ff00ff); // CMOS - AM_RANGE(0x3000,0x4fff) AM_READWRITE8(towns_cmos_r, towns_cmos_w,0x00ff00ff) + map(0x3000, 0x4fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask32(0x00ff00ff); // Something (MS-DOS wants this 0x41ff to be 1) //AM_RANGE(0x41fc,0x41ff) AM_READ8(towns_41ff_r,0xff000000) // CRTC / Video (again) - AM_RANGE(0xfd90,0xfda3) AM_READWRITE8(towns_video_fd90_r, towns_video_fd90_w, 0xffffffff) - AM_RANGE(0xff80,0xffff) AM_READWRITE8(towns_video_cff80_r,towns_video_cff80_w,0xffffffff) -ADDRESS_MAP_END + map(0xfd90, 0xfda3).rw(this, FUNC(towns_state::towns_video_fd90_r), FUNC(towns_state::towns_video_fd90_w)); + map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w)); +} ADDRESS_MAP_START(towns_state::towns16_io) // for the 386SX based systems // System ports diff --git a/src/mame/drivers/fontwriter.cpp b/src/mame/drivers/fontwriter.cpp index 0461ef49ccf..c9a9f792010 100644 --- a/src/mame/drivers/fontwriter.cpp +++ b/src/mame/drivers/fontwriter.cpp @@ -74,17 +74,19 @@ uint32_t fontwriter_state::screen_update(screen_device &screen, bitmap_rgb32 &bi return 0; } -ADDRESS_MAP_START(fontwriter_state::main_map) - AM_RANGE(0x002000, 0x007fff) AM_RAM - AM_RANGE(0x008000, 0x00ffff) AM_ROM AM_REGION("maincpu", 0x0000) - AM_RANGE(0x020000, 0x04ffff) AM_RAM - AM_RANGE(0x100000, 0x1007ff) AM_RAM - AM_RANGE(0x200000, 0x3fffff) AM_ROM AM_REGION("maincpu", 0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fontwriter_state::io_map) - AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READ(vbl_r) -ADDRESS_MAP_END +void fontwriter_state::main_map(address_map &map) +{ + map(0x002000, 0x007fff).ram(); + map(0x008000, 0x00ffff).rom().region("maincpu", 0x0000); + map(0x020000, 0x04ffff).ram(); + map(0x100000, 0x1007ff).ram(); + map(0x200000, 0x3fffff).rom().region("maincpu", 0x0000); +} + +void fontwriter_state::io_map(address_map &map) +{ + map(M37710_PORT6, M37710_PORT6).r(this, FUNC(fontwriter_state::vbl_r)); +} static INPUT_PORTS_START( fontwriter ) INPUT_PORTS_END diff --git a/src/mame/drivers/foodf.cpp b/src/mame/drivers/foodf.cpp index 3a22246f7b9..1d5753d4915 100644 --- a/src/mame/drivers/foodf.cpp +++ b/src/mame/drivers/foodf.cpp @@ -207,24 +207,26 @@ WRITE16_MEMBER(foodf_state::analog_w) *************************************/ // complete memory map derived from schematics -ADDRESS_MAP_START(foodf_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_MIRROR(0x3e0000) AM_ROM - AM_RANGE(0x014000, 0x014fff) AM_MIRROR(0x3e3000) AM_RAM - AM_RANGE(0x018000, 0x018fff) AM_MIRROR(0x3e3000) AM_RAM - AM_RANGE(0x01c000, 0x01c0ff) AM_MIRROR(0x3e3f00) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x800000, 0x8007ff) AM_MIRROR(0x03f800) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x900000, 0x9001ff) AM_MIRROR(0x03fe00) AM_DEVREADWRITE8("nvram", x2212_device, read, write, 0x00ff) - AM_RANGE(0x940000, 0x940007) AM_MIRROR(0x023ff8) AM_READ(analog_r) - AM_RANGE(0x944000, 0x944007) AM_MIRROR(0x023ff8) AM_WRITE(analog_w) - AM_RANGE(0x948000, 0x948001) AM_MIRROR(0x023ffe) AM_READ_PORT("SYSTEM") AM_WRITE8(digital_w, 0x00ff) - AM_RANGE(0x950000, 0x9501ff) AM_MIRROR(0x023e00) AM_WRITE(foodf_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x954000, 0x954001) AM_MIRROR(0x023ffe) AM_WRITE(nvram_recall_w) - AM_RANGE(0x958000, 0x958001) AM_MIRROR(0x023ffe) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xa40000, 0xa4001f) AM_MIRROR(0x03ffe0) AM_DEVREADWRITE8("pokey2", pokey_device, read, write, 0x00ff) - AM_RANGE(0xa80000, 0xa8001f) AM_MIRROR(0x03ffe0) AM_DEVREADWRITE8("pokey1", pokey_device, read, write, 0x00ff) - AM_RANGE(0xac0000, 0xac001f) AM_MIRROR(0x03ffe0) AM_DEVREADWRITE8("pokey3", pokey_device, read, write, 0x00ff) -ADDRESS_MAP_END +void foodf_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).mirror(0x3e0000).rom(); + map(0x014000, 0x014fff).mirror(0x3e3000).ram(); + map(0x018000, 0x018fff).mirror(0x3e3000).ram(); + map(0x01c000, 0x01c0ff).mirror(0x3e3f00).ram().share("spriteram"); + map(0x800000, 0x8007ff).mirror(0x03f800).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x900000, 0x9001ff).mirror(0x03fe00).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff); + map(0x940000, 0x940007).mirror(0x023ff8).r(this, FUNC(foodf_state::analog_r)); + map(0x944000, 0x944007).mirror(0x023ff8).w(this, FUNC(foodf_state::analog_w)); + map(0x948000, 0x948001).mirror(0x023ffe).portr("SYSTEM"); + map(0x948001, 0x948001).mirror(0x023ffe).w(this, FUNC(foodf_state::digital_w)); + map(0x950000, 0x9501ff).mirror(0x023e00).w(this, FUNC(foodf_state::foodf_paletteram_w)).share("paletteram"); + map(0x954000, 0x954001).mirror(0x023ffe).w(this, FUNC(foodf_state::nvram_recall_w)); + map(0x958000, 0x958001).mirror(0x023ffe).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xa40000, 0xa4001f).mirror(0x03ffe0).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff); + map(0xa80000, 0xa8001f).mirror(0x03ffe0).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff); + map(0xac0000, 0xac001f).mirror(0x03ffe0).rw("pokey3", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff); +} diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp index 01e5332994e..b8bce0296e8 100644 --- a/src/mame/drivers/force68k.cpp +++ b/src/mame/drivers/force68k.cpp @@ -233,23 +233,24 @@ private: required_device<generic_slot_device> m_cart; }; -ADDRESS_MAP_START(force68k_state::force68k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x000000, 0x000007) AM_ROM AM_READ (bootvect_r) /* Vectors mapped from System EPROM */ - AM_RANGE (0x000008, 0x01ffff) AM_RAM /* DRAM CPU-1B */ +void force68k_state::force68k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x000007).rom().r(this, FUNC(force68k_state::bootvect_r)); /* Vectors mapped from System EPROM */ + map(0x000008, 0x01ffff).ram(); /* DRAM CPU-1B */ //AM_RANGE (0x020000, 0x07ffff) AM_RAM /* Additional DRAM CPU-1D */ - AM_RANGE (0x080000, 0x083fff) AM_ROM /* System EPROM Area 16Kb DEBUGGER supplied as default on CPU-1B/D */ - AM_RANGE (0x084000, 0x09ffff) AM_ROM /* System EPROM Area 112Kb additional space for System ROM */ + map(0x080000, 0x083fff).rom(); /* System EPROM Area 16Kb DEBUGGER supplied as default on CPU-1B/D */ + map(0x084000, 0x09ffff).rom(); /* System EPROM Area 112Kb additional space for System ROM */ //AM_RANGE (0x0a0000, 0x0bffff) AM_ROM /* User EPROM/SRAM Area, max 128Kb mapped by a cartslot */ - AM_RANGE (0x0c0040, 0x0c0043) AM_DEVREADWRITE8 ("aciahost", acia6850_device, read, write, 0x00ff) - AM_RANGE (0x0c0080, 0x0c0083) AM_DEVREADWRITE8 ("aciaterm", acia6850_device, read, write, 0xff00) - AM_RANGE (0x0c0100, 0x0c0103) AM_DEVREADWRITE8 ("aciaremt", acia6850_device, read, write, 0x00ff) - AM_RANGE (0x0c0400, 0x0c042f) AM_DEVREADWRITE8 ("rtc", mm58167_device, read, write, 0x00ff) - AM_RANGE (0x0e0000, 0x0e0035) AM_DEVREADWRITE8 ("pit", pit68230_device, read, write, 0x00ff) + map(0x0c0040, 0x0c0043).rw(m_aciahost, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x0c0080, 0x0c0083).rw(m_aciaterm, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00); + map(0x0c0100, 0x0c0103).rw(m_aciaremt, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x0c0400, 0x0c042f).rw(m_rtc, FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff); + map(0x0e0000, 0x0e0035).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write)).umask16(0x00ff); //AM_RANGE(0x0e0200, 0x0e0380) AM_READWRITE(fpu_r, fpu_w) /* optional FPCP 68881 FPU interface */ - AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) */ - AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) */ -ADDRESS_MAP_END + map(0x100000, 0xfeffff).rw(this, FUNC(force68k_state::vme_a24_r), FUNC(force68k_state::vme_a24_w)); /* VMEbus Rev B addresses (24 bits) */ + map(0xff0000, 0xffffff).rw(this, FUNC(force68k_state::vme_a16_r), FUNC(force68k_state::vme_a16_w)); /* VMEbus Rev B addresses (16 bits) */ +} /* Input ports */ static INPUT_PORTS_START (force68k) diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp index ee0dfbc9a69..ef45477609c 100644 --- a/src/mame/drivers/forte2.cpp +++ b/src/mame/drivers/forte2.cpp @@ -72,21 +72,23 @@ private: -ADDRESS_MAP_START(forte2_state::program_mem) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(forte2_state::io_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x98, 0x98) AM_DEVREADWRITE( "tms9928a", tms9928a_device, vram_read, vram_write ) - AM_RANGE(0x99, 0x99) AM_DEVREADWRITE( "tms9928a", tms9928a_device, register_read, register_write ) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r) +void forte2_state::program_mem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xffff).ram(); +} + +void forte2_state::io_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x98, 0x98).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x99, 0x99).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); // AM_RANGE(0xa8, 0xa8) AM_RAM // Ports a8-ab are originally for communicating with the i8255 PPI on MSX. // AM_RANGE(0xa9, 0xab) AM_NOP // Since this arcade board doesn't have one, those ports should be unmapped. -ADDRESS_MAP_END +} static INPUT_PORTS_START( pesadelo ) PORT_START("IN0") diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp index 6275f44bd7e..d2e05d5e9e1 100644 --- a/src/mame/drivers/fortecar.cpp +++ b/src/mame/drivers/fortecar.cpp @@ -535,24 +535,26 @@ Seems to work properly, but must be checked closely... * Memory Map Information * ***********************************/ -ADDRESS_MAP_START(fortecar_state::fortecar_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xd800, 0xffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fortecar_state::fortecar_ports) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("crtc", mc6845_device, address_w) // pc=444 - AM_RANGE(0x21, 0x21) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("fcppi0", i8255_device, read, write)//M5L8255AP +void fortecar_state::fortecar_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).rom(); + map(0xd000, 0xd7ff).ram().share("nvram"); + map(0xd800, 0xffff).ram().share("vram"); +} + +void fortecar_state::fortecar_ports(address_map &map) +{ + map.global_mask(0xff); + map(0x20, 0x20).w("crtc", FUNC(mc6845_device::address_w)); // pc=444 + map(0x21, 0x21).w("crtc", FUNC(mc6845_device::register_w)); + map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x60, 0x63).rw("fcppi0", FUNC(i8255_device::read), FUNC(i8255_device::write));//M5L8255AP // AM_RANGE(0x80, 0x81) //8251A UART - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("rtc", v3021_device, read, write) - AM_RANGE(0xa1, 0xa1) AM_READ_PORT("DSW") -ADDRESS_MAP_END + map(0xa0, 0xa0).rw("rtc", FUNC(v3021_device::read), FUNC(v3021_device::write)); + map(0xa1, 0xa1).portr("DSW"); +} /* CRTC REGISTER: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp index dbce9167c59..245c6aa0e67 100644 --- a/src/mame/drivers/fp1100.cpp +++ b/src/mame/drivers/fp1100.cpp @@ -212,21 +212,23 @@ READ8_MEMBER( fp1100_state::slot_id_r ) return m_slot[m_slot_num & 7].id; } -ADDRESS_MAP_START(fp1100_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x9000, 0xffff) AM_RAM AM_REGION("wram", 0x9000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fp1100_state::io_map) - ADDRESS_MAP_UNMAP_HIGH +void fp1100_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x8fff).bankr("bankr0").bankw("bankw0"); + map(0x9000, 0xffff).ram().region("wram", 0x9000); +} + +void fp1100_state::io_map(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x0000, 0xfeff) slot memory area - AM_RANGE(0xff00, 0xff7f) AM_READWRITE(slot_id_r,slot_bank_w) - AM_RANGE(0xff80, 0xffff) AM_READ(sub_to_main_r) - AM_RANGE(0xff80, 0xff9f) AM_WRITE(irq_mask_w) - AM_RANGE(0xffa0, 0xffbf) AM_WRITE(main_bank_w) - AM_RANGE(0xffc0, 0xffff) AM_WRITE(main_to_sub_w) -ADDRESS_MAP_END + map(0xff00, 0xff7f).rw(this, FUNC(fp1100_state::slot_id_r), FUNC(fp1100_state::slot_bank_w)); + map(0xff80, 0xffff).r(this, FUNC(fp1100_state::sub_to_main_r)); + map(0xff80, 0xff9f).w(this, FUNC(fp1100_state::irq_mask_w)); + map(0xffa0, 0xffbf).w(this, FUNC(fp1100_state::main_bank_w)); + map(0xffc0, 0xffff).w(this, FUNC(fp1100_state::main_to_sub_w)); +} READ8_MEMBER( fp1100_state::main_to_sub_r ) { @@ -275,17 +277,18 @@ WRITE8_MEMBER( fp1100_state::kbd_row_w ) m_beep->set_state(BIT(data, 4)); } -ADDRESS_MAP_START(fp1100_state::sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("sub_ipl",0x0000) - AM_RANGE(0x2000, 0xdfff) AM_RAM AM_SHARE("videoram") //vram B/R/G - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x3fe) AM_DEVREADWRITE("crtc", mc6845_device, status_r,address_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x3fe) AM_DEVREADWRITE("crtc", mc6845_device, register_r,register_w) - AM_RANGE(0xe400, 0xe7ff) AM_READ_PORT("DSW") AM_WRITE(kbd_row_w) - AM_RANGE(0xe800, 0xebff) AM_READWRITE(main_to_sub_r,sub_to_main_w) +void fp1100_state::sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("sub_ipl", 0x0000); + map(0x2000, 0xdfff).ram().share("videoram"); //vram B/R/G + map(0xe000, 0xe000).mirror(0x3fe).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).mirror(0x3fe).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xe400, 0xe7ff).portr("DSW").w(this, FUNC(fp1100_state::kbd_row_w)); + map(0xe800, 0xebff).rw(this, FUNC(fp1100_state::main_to_sub_r), FUNC(fp1100_state::sub_to_main_w)); //AM_RANGE(0xec00, 0xefff) "Acknowledge of INT0" is coded in but isn't currently executed - AM_RANGE(0xf000, 0xf3ff) AM_WRITE(colour_control_w) - AM_RANGE(0xf400, 0xff7f) AM_ROM AM_REGION("sub_ipl",0x2400) -ADDRESS_MAP_END + map(0xf000, 0xf3ff).w(this, FUNC(fp1100_state::colour_control_w)); + map(0xf400, 0xff7f).rom().region("sub_ipl", 0x2400); +} /* d0,1,2 - enable RGB guns (G,R,B) diff --git a/src/mame/drivers/fp200.cpp b/src/mame/drivers/fp200.cpp index 2d5ed4bf170..95bd0f0bce6 100644 --- a/src/mame/drivers/fp200.cpp +++ b/src/mame/drivers/fp200.cpp @@ -412,18 +412,20 @@ WRITE8_MEMBER(fp200_state::fp200_io_w) } } -ADDRESS_MAP_START(fp200_state::fp200_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM +void fp200_state::fp200_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); // 0xa000, 0xffff exp RAM - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fp200_state::fp200_io) - AM_RANGE(0x00, 0xff) AM_READWRITE(fp200_io_r,fp200_io_w) -ADDRESS_MAP_END + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xffff).ram(); +} + +void fp200_state::fp200_io(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(fp200_state::fp200_io_r), FUNC(fp200_state::fp200_io_w)); +} INPUT_CHANGED_MEMBER(fp200_state::keyb_irq) { diff --git a/src/mame/drivers/fp6000.cpp b/src/mame/drivers/fp6000.cpp index 44da3a053ef..35d3ba0912a 100644 --- a/src/mame/drivers/fp6000.cpp +++ b/src/mame/drivers/fp6000.cpp @@ -176,14 +176,15 @@ WRITE8_MEMBER(fp6000_state::fp6000_6845_data_w) m_crtc->register_w(space, offset, data); } -ADDRESS_MAP_START(fp6000_state::fp6000_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0xbffff) AM_RAM - AM_RANGE(0xc0000,0xdffff) AM_RAM AM_SHARE("gvram")//gvram - AM_RANGE(0xe0000,0xe0fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xe7000,0xe7fff) AM_READWRITE8(fp6000_pcg_r,fp6000_pcg_w,0xffff) - AM_RANGE(0xf0000,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END +void fp6000_state::fp6000_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xbffff).ram(); + map(0xc0000, 0xdffff).ram().share("gvram");//gvram + map(0xe0000, 0xe0fff).ram().share("vram"); + map(0xe7000, 0xe7fff).rw(this, FUNC(fp6000_state::fp6000_pcg_r), FUNC(fp6000_state::fp6000_pcg_w)); + map(0xf0000, 0xfffff).rom().region("ipl", 0); +} /* Hack until I understand what UART is this one ... */ READ8_MEMBER(fp6000_state::fp6000_key_r) @@ -226,17 +227,18 @@ READ16_MEMBER(fp6000_state::pit_r) return machine().rand(); } -ADDRESS_MAP_START(fp6000_state::fp6000_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x08, 0x09) AM_READ(ex_board_r) // BIOS of some sort ... - AM_RANGE(0x0a, 0x0b) AM_READ_PORT("DSW") // installed RAM id? - AM_RANGE(0x10, 0x11) AM_READNOP - AM_RANGE(0x20, 0x23) AM_READWRITE8(fp6000_key_r,fp6000_key_w,0x00ff) - AM_RANGE(0x38, 0x39) AM_READ(pit_r) // pit? - AM_RANGE(0x70, 0x71) AM_WRITE8(fp6000_6845_address_w,0x00ff) - AM_RANGE(0x72, 0x73) AM_WRITE8(fp6000_6845_data_w,0x00ff) - AM_RANGE(0x74, 0x75) AM_READ(unk_r) //bit 6 busy flag -ADDRESS_MAP_END +void fp6000_state::fp6000_io(address_map &map) +{ + map.unmap_value_high(); + map(0x08, 0x09).r(this, FUNC(fp6000_state::ex_board_r)); // BIOS of some sort ... + map(0x0a, 0x0b).portr("DSW"); // installed RAM id? + map(0x10, 0x11).nopr(); + map(0x20, 0x23).rw(this, FUNC(fp6000_state::fp6000_key_r), FUNC(fp6000_state::fp6000_key_w)).umask16(0x00ff); + map(0x38, 0x39).r(this, FUNC(fp6000_state::pit_r)); // pit? + map(0x70, 0x70).w(this, FUNC(fp6000_state::fp6000_6845_address_w)); + map(0x72, 0x72).w(this, FUNC(fp6000_state::fp6000_6845_data_w)); + map(0x74, 0x75).r(this, FUNC(fp6000_state::unk_r)); //bit 6 busy flag +} /* Input ports */ static INPUT_PORTS_START( fp6000 ) diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp index 68acb98e2d6..b8aea34a563 100644 --- a/src/mame/drivers/freekick.cpp +++ b/src/mame/drivers/freekick.cpp @@ -193,106 +193,115 @@ WRITE8_MEMBER(freekick_state::freekick_ff_w) * *************************************/ -ADDRESS_MAP_START(freekick_state::omega_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM // ram is 2x sony cxk5813d-55 - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd900, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") - AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITENOP //bankswitch ? - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2") - AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write) - AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::pbillrd_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd900, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") - AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITE(pbillrd_bankswitch_w) - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2") - AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write) - AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::freekick_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram") // tilemap - AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_SHARE("spriteram") // sprites - AM_RANGE(0xec00, 0xec03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1") - AM_RANGE(0xf802, 0xf802) AM_READNOP //MUST return bit 0 = 0, otherwise game resets - AM_RANGE(0xf803, 0xf803) AM_READ(spinner_r) - AM_RANGE(0xf800, 0xf807) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write) - AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::gigas_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd900, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") - AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITENOP //bankswitch ? - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2") - AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76489a_device, write) - AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76489a_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::omega_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(spinner_r, gigas_spinner_select_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::gigas_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(spinner_r, gigas_spinner_select_w) - AM_RANGE(0x01, 0x01) AM_READNOP //unused dip 3 -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::oigas_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(spinner_r, gigas_spinner_select_w) - AM_RANGE(0x01, 0x01) AM_READNOP //unused dip 3 - AM_RANGE(0x02, 0x02) AM_READ(oigas_2_r) - AM_RANGE(0x03, 0x03) AM_READ(oigas_3_r) - AM_RANGE(0x05, 0x05) AM_WRITE(oigas_5_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(freekick_state::freekick_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xff, 0xff) AM_READWRITE(freekick_ff_r, freekick_ff_w) -ADDRESS_MAP_END +void freekick_state::omega_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); // ram is 2x sony cxk5813d-55 + map(0xd000, 0xd7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram"); + map(0xd800, 0xd8ff).ram().share("spriteram"); + map(0xd900, 0xdfff).ram(); + map(0xe000, 0xe000).portr("IN0"); + map(0xe000, 0xe007).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xe800, 0xe800).portr("IN1"); + map(0xf000, 0xf000).portr("DSW1").nopw(); //bankswitch ? + map(0xf800, 0xf800).portr("DSW2"); + map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write)); + map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write)); + map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write)); + map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write)); +} + +void freekick_state::pbillrd_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram"); + map(0xd800, 0xd8ff).ram().share("spriteram"); + map(0xd900, 0xdfff).ram(); + map(0xe000, 0xe000).portr("IN0"); + map(0xe000, 0xe007).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xe800, 0xe800).portr("IN1"); + map(0xf000, 0xf000).portr("DSW1").w(this, FUNC(freekick_state::pbillrd_bankswitch_w)); + map(0xf800, 0xf800).portr("DSW2"); + map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write)); + map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write)); + map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write)); + map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write)); +} + +void freekick_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); +} + +void freekick_state::freekick_map(address_map &map) +{ + map(0x0000, 0xcfff).rom(); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram"); // tilemap + map(0xe800, 0xe8ff).ram().share("spriteram"); // sprites + map(0xec00, 0xec03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf800, 0xf800).portr("IN0"); + map(0xf801, 0xf801).portr("IN1"); + map(0xf802, 0xf802).nopr(); //MUST return bit 0 = 0, otherwise game resets + map(0xf803, 0xf803).r(this, FUNC(freekick_state::spinner_r)); + map(0xf800, 0xf807).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write)); + map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write)); + map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write)); + map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write)); +} + +void freekick_state::gigas_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().w(this, FUNC(freekick_state::freek_videoram_w)).share("videoram"); + map(0xd800, 0xd8ff).ram().share("spriteram"); + map(0xd900, 0xdfff).ram(); + map(0xe000, 0xe000).portr("IN0"); + map(0xe000, 0xe007).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xe800, 0xe800).portr("IN1"); + map(0xf000, 0xf000).portr("DSW1").nopw(); //bankswitch ? + map(0xf800, 0xf800).portr("DSW2"); + map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write)); + map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write)); + map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write)); + map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write)); +} + +void freekick_state::omega_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(freekick_state::spinner_r), FUNC(freekick_state::gigas_spinner_select_w)); + map(0x01, 0x01).portr("DSW3"); +} + +void freekick_state::gigas_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(freekick_state::spinner_r), FUNC(freekick_state::gigas_spinner_select_w)); + map(0x01, 0x01).nopr(); //unused dip 3 +} + +void freekick_state::oigas_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(freekick_state::spinner_r), FUNC(freekick_state::gigas_spinner_select_w)); + map(0x01, 0x01).nopr(); //unused dip 3 + map(0x02, 0x02).r(this, FUNC(freekick_state::oigas_2_r)); + map(0x03, 0x03).r(this, FUNC(freekick_state::oigas_3_r)); + map(0x05, 0x05).w(this, FUNC(freekick_state::oigas_5_w)); +} + +void freekick_state::freekick_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xff, 0xff).rw(this, FUNC(freekick_state::freekick_ff_r), FUNC(freekick_state::freekick_ff_w)); +} /************************************* diff --git a/src/mame/drivers/fresh.cpp b/src/mame/drivers/fresh.cpp index 52626cb339a..7f54deced29 100644 --- a/src/mame/drivers/fresh.cpp +++ b/src/mame/drivers/fresh.cpp @@ -169,54 +169,55 @@ uint32_t fresh_state::screen_update_fresh(screen_device &screen, bitmap_ind16 &b } -ADDRESS_MAP_START(fresh_state::fresh_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void fresh_state::fresh_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM_WRITE(fresh_bg_2_videoram_w) AM_SHARE("bg_videoram_2") - AM_RANGE(0xc10000, 0xc1ffff) AM_RAM_WRITE(fresh_attr_2_videoram_w) AM_SHARE("attr_videoram_2") - AM_RANGE(0xc20000, 0xc2ffff) AM_RAM_WRITE(fresh_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xc30000, 0xc3ffff) AM_RAM_WRITE(fresh_attr_videoram_w) AM_SHARE("attr_videoram") + map(0xc00000, 0xc0ffff).ram().w(this, FUNC(fresh_state::fresh_bg_2_videoram_w)).share("bg_videoram_2"); + map(0xc10000, 0xc1ffff).ram().w(this, FUNC(fresh_state::fresh_attr_2_videoram_w)).share("attr_videoram_2"); + map(0xc20000, 0xc2ffff).ram().w(this, FUNC(fresh_state::fresh_bg_videoram_w)).share("bg_videoram"); + map(0xc30000, 0xc3ffff).ram().w(this, FUNC(fresh_state::fresh_attr_videoram_w)).share("attr_videoram"); // AM_RANGE(0xc70000, 0xc70001) AM_RAM // AM_RANGE(0xc70002, 0xc70003) AM_RAM - AM_RANGE(0xc71000, 0xc71001) AM_WRITE(c71000_write) + map(0xc71000, 0xc71001).w(this, FUNC(fresh_state::c71000_write)); // AM_RANGE(0xc72000, 0xc72001) AM_RAM // AM_RANGE(0xc72002, 0xc72003) AM_RAM // AM_RANGE(0xc73000, 0xc73001) AM_RAM // AM_RANGE(0xc73002, 0xc73003) AM_RAM - AM_RANGE(0xc74000, 0xc74001) AM_WRITE(c74000_write) - AM_RANGE(0xc75000, 0xc75001) AM_WRITE(c75000_write) - AM_RANGE(0xc76000, 0xc76001) AM_WRITE(c76000_write) + map(0xc74000, 0xc74001).w(this, FUNC(fresh_state::c74000_write)); + map(0xc75000, 0xc75001).w(this, FUNC(fresh_state::c75000_write)); + map(0xc76000, 0xc76001).w(this, FUNC(fresh_state::c76000_write)); // AM_RANGE(0xc77000, 0xc77001) AM_RAM // AM_RANGE(0xc77002, 0xc77003) AM_RAM // written together - AM_RANGE(0xc40000, 0xc417ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc50000, 0xc517ff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext") + map(0xc40000, 0xc417ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xc50000, 0xc517ff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext"); - AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE8("ymsnd", ym2413_device, register_port_w, 0x00ff) - AM_RANGE(0xd10000, 0xd10001) AM_DEVWRITE8("ymsnd", ym2413_device, data_port_w, 0x00ff) + map(0xd00001, 0xd00001).w("ymsnd", FUNC(ym2413_device::register_port_w)); + map(0xd10001, 0xd10001).w("ymsnd", FUNC(ym2413_device::data_port_w)); - AM_RANGE(0xd30000, 0xd30001) AM_WRITE(d30000_write) - AM_RANGE(0xd40000, 0xd40001) AM_READ_PORT("IN0") //AM_WRITENOP // checks for 0x10 + map(0xd30000, 0xd30001).w(this, FUNC(fresh_state::d30000_write)); + map(0xd40000, 0xd40001).portr("IN0"); //AM_WRITENOP // checks for 0x10 // AM_RANGE(0xd40002, 0xd40003) AM_WRITENOP - AM_RANGE(0xd70000, 0xd70001) AM_READ_PORT("IN1") // checks for 0x10, dead loop if fail + map(0xd70000, 0xd70001).portr("IN1"); // checks for 0x10, dead loop if fail - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") //AM_WRITENOP - AM_RANGE(0xe20000, 0xe20001) AM_READ_PORT("DSW1") //AM_WRITENOP - AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("DSW2") - AM_RANGE(0xe60000, 0xe60001) AM_READ_PORT("DSW3") - AM_RANGE(0xe80000, 0xe80001) AM_READ_PORT("IN6") - AM_RANGE(0xea0000, 0xea0001) AM_READ_PORT("IN7") - AM_RANGE(0xec0000, 0xec0001) AM_READ_PORT("IN8") - AM_RANGE(0xee0000, 0xee0001) AM_READ_PORT("IN9") + map(0xe00000, 0xe00001).portr("DSW0"); //AM_WRITENOP + map(0xe20000, 0xe20001).portr("DSW1"); //AM_WRITENOP + map(0xe40000, 0xe40001).portr("DSW2"); + map(0xe60000, 0xe60001).portr("DSW3"); + map(0xe80000, 0xe80001).portr("IN6"); + map(0xea0000, 0xea0001).portr("IN7"); + map(0xec0000, 0xec0001).portr("IN8"); + map(0xee0000, 0xee0001).portr("IN9"); - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM + map(0xf00000, 0xf0ffff).ram(); -ADDRESS_MAP_END +} static INPUT_PORTS_START( fresh ) PORT_START("IN0") diff --git a/src/mame/drivers/fromanc2.cpp b/src/mame/drivers/fromanc2.cpp index 846aae43839..dc88813d34f 100644 --- a/src/mame/drivers/fromanc2.cpp +++ b/src/mame/drivers/fromanc2.cpp @@ -159,130 +159,137 @@ WRITE8_MEMBER(fromanc2_state::subcpu_rombank_w) * *************************************/ -ADDRESS_MAP_START(fromanc2_state::fromanc2_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // MAIN ROM +void fromanc2_state::fromanc2_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // MAIN ROM + + map(0x802000, 0x802fff).nopr(); // ??? + map(0x800000, 0x803fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_0_w)); // VRAM 0, 1 (1P) + map(0x880000, 0x883fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_1_w)); // VRAM 2, 3 (1P) + map(0x900000, 0x903fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_2_w)); // VRAM 0, 1 (2P) + map(0x980000, 0x983fff).w(this, FUNC(fromanc2_state::fromanc2_videoram_3_w)); // VRAM 2, 3 (2P) + + map(0xa00000, 0xa00fff).ram().w(m_lpalette, FUNC(palette_device::write16)).share("lpalette"); // PALETTE (1P) + map(0xa80000, 0xa80fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); // PALETTE (2P) + + map(0xd00000, 0xd00023).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_0_w)); // SCROLL REG (1P/2P) + map(0xd00100, 0xd00123).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_2_w)); // SCROLL REG (1P/2P) + map(0xd00200, 0xd00223).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_1_w)); // SCROLL REG (1P/2P) + map(0xd00300, 0xd00323).w(this, FUNC(fromanc2_state::fromanc2_gfxreg_3_w)); // SCROLL REG (1P/2P) + + map(0xd00400, 0xd00413).nopw(); // ??? + map(0xd00500, 0xd00513).nopw(); // ??? + + map(0xd01000, 0xd01001).w(this, FUNC(fromanc2_state::sndcmd_w)); // SOUND REQ (1P/2P) + map(0xd01100, 0xd01101).portr("SYSTEM"); + map(0xd01200, 0xd01201).w(this, FUNC(fromanc2_state::subcpu_w)); // SUB CPU WRITE + map(0xd01300, 0xd01301).r(this, FUNC(fromanc2_state::subcpu_r)); // SUB CPU READ + map(0xd01400, 0xd01401).w(this, FUNC(fromanc2_state::fromanc2_gfxbank_0_w)); // GFXBANK (1P) + map(0xd01500, 0xd01501).w(this, FUNC(fromanc2_state::fromanc2_gfxbank_1_w)); // GFXBANK (2P) + map(0xd01600, 0xd01601).portw("EEPROMOUT"); // EEPROM DATA + map(0xd01800, 0xd01801).r(this, FUNC(fromanc2_state::keymatrix_r)); // INPUT KEY MATRIX + map(0xd01a00, 0xd01a01).w(this, FUNC(fromanc2_state::portselect_w)); // PORT SELECT (1P/2P) + + map(0xd80000, 0xd8ffff).ram(); // WORK RAM +} + +void fromanc2_state::fromancr_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // MAIN ROM + + map(0x800000, 0x803fff).w(this, FUNC(fromanc2_state::fromancr_videoram_0_w)); // VRAM BG (1P/2P) + map(0x880000, 0x883fff).w(this, FUNC(fromanc2_state::fromancr_videoram_1_w)); // VRAM FG (1P/2P) + map(0x900000, 0x903fff).w(this, FUNC(fromanc2_state::fromancr_videoram_2_w)); // VRAM TEXT (1P/2P) + map(0x980000, 0x983fff).nopw(); // VRAM Unused ? + + map(0xa00000, 0xa00fff).ram().w(m_lpalette, FUNC(palette_device::write16)).share("lpalette"); // PALETTE (1P) + map(0xa80000, 0xa80fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); // PALETTE (2P) + + map(0xd00000, 0xd00023).w(this, FUNC(fromanc2_state::fromancr_gfxreg_1_w)); // SCROLL REG (1P/2P) + map(0xd00200, 0xd002ff).nopw(); // ? + map(0xd00400, 0xd00413).nopw(); // ??? + map(0xd00500, 0xd00513).nopw(); // ??? + map(0xd01000, 0xd01001).w(this, FUNC(fromanc2_state::sndcmd_w)); // SOUND REQ (1P/2P) + map(0xd00100, 0xd00123).w(this, FUNC(fromanc2_state::fromancr_gfxreg_0_w)); // SCROLL REG (1P/2P) + map(0xd01100, 0xd01101).portr("SYSTEM"); + map(0xd01200, 0xd01201).w(this, FUNC(fromanc2_state::subcpu_w)); // SUB CPU WRITE + map(0xd01300, 0xd01301).r(this, FUNC(fromanc2_state::subcpu_r)); // SUB CPU READ + map(0xd01400, 0xd01401).nopw(); // COIN COUNTER ? + map(0xd01600, 0xd01601).w(this, FUNC(fromanc2_state::fromancr_gfxbank_eeprom_w)); // EEPROM DATA, GFXBANK (1P/2P) + map(0xd01800, 0xd01801).r(this, FUNC(fromanc2_state::keymatrix_r)); // INPUT KEY MATRIX + map(0xd01a00, 0xd01a01).w(this, FUNC(fromanc2_state::portselect_w)); // PORT SELECT (1P/2P) + + map(0xd80000, 0xd8ffff).ram(); // WORK RAM +} + +void fromanc2_state::fromanc4_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // MAIN ROM + map(0x400000, 0x7fffff).rom(); // DATA ROM + + map(0x800000, 0x81ffff).ram(); // WORK RAM + + map(0xd00000, 0xd00001).w(this, FUNC(fromanc2_state::portselect_w)); // PORT SELECT (1P/2P) + + map(0xd10000, 0xd10001).nopw(); // ? + map(0xd30000, 0xd30001).nopw(); // ? + map(0xd50000, 0xd50001).portw("EEPROMOUT"); // EEPROM DATA + + map(0xd70000, 0xd70001).w(this, FUNC(fromanc2_state::sndcmd_w)); // SOUND REQ (1P/2P) + + map(0xd80000, 0xd8ffff).w(this, FUNC(fromanc2_state::fromanc4_videoram_0_w)); // VRAM FG (1P/2P) + map(0xd90000, 0xd9ffff).w(this, FUNC(fromanc2_state::fromanc4_videoram_1_w)); // VRAM BG (1P/2P) + map(0xda0000, 0xdaffff).w(this, FUNC(fromanc2_state::fromanc4_videoram_2_w)); // VRAM TEXT (1P/2P) + + map(0xdb0000, 0xdb0fff).ram().w(m_lpalette, FUNC(palette_device::write16)).share("lpalette"); // PALETTE (1P) + map(0xdc0000, 0xdc0fff).ram().w(m_rpalette, FUNC(palette_device::write16)).share("rpalette"); // PALETTE (2P) + + map(0xd10000, 0xd10001).r(this, FUNC(fromanc2_state::keymatrix_r)); // INPUT KEY MATRIX + map(0xd20000, 0xd20001).portr("SYSTEM"); + + map(0xe00000, 0xe0001d).w(this, FUNC(fromanc2_state::fromanc4_gfxreg_0_w)); // SCROLL, GFXBANK (1P/2P) + map(0xe10000, 0xe1001d).w(this, FUNC(fromanc2_state::fromanc4_gfxreg_1_w)); // SCROLL, GFXBANK (1P/2P) + map(0xe20000, 0xe2001d).w(this, FUNC(fromanc2_state::fromanc4_gfxreg_2_w)); // SCROLL, GFXBANK (1P/2P) + + map(0xe30000, 0xe30013).nopw(); // ??? + map(0xe40000, 0xe40013).nopw(); // ??? - AM_RANGE(0x802000, 0x802fff) AM_READNOP // ??? - AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromanc2_videoram_0_w) // VRAM 0, 1 (1P) - AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromanc2_videoram_1_w) // VRAM 2, 3 (1P) - AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromanc2_videoram_2_w) // VRAM 0, 1 (2P) - AM_RANGE(0x980000, 0x983fff) AM_WRITE(fromanc2_videoram_3_w) // VRAM 2, 3 (2P) - - AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") // PALETTE (1P) - AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") // PALETTE (2P) - - AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromanc2_gfxreg_0_w) // SCROLL REG (1P/2P) - AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromanc2_gfxreg_2_w) // SCROLL REG (1P/2P) - AM_RANGE(0xd00200, 0xd00223) AM_WRITE(fromanc2_gfxreg_1_w) // SCROLL REG (1P/2P) - AM_RANGE(0xd00300, 0xd00323) AM_WRITE(fromanc2_gfxreg_3_w) // SCROLL REG (1P/2P) - - AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP // ??? - AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP // ??? - - AM_RANGE(0xd01000, 0xd01001) AM_WRITE(sndcmd_w) // SOUND REQ (1P/2P) - AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd01200, 0xd01201) AM_WRITE(subcpu_w) // SUB CPU WRITE - AM_RANGE(0xd01300, 0xd01301) AM_READ(subcpu_r) // SUB CPU READ - AM_RANGE(0xd01400, 0xd01401) AM_WRITE(fromanc2_gfxbank_0_w) // GFXBANK (1P) - AM_RANGE(0xd01500, 0xd01501) AM_WRITE(fromanc2_gfxbank_1_w) // GFXBANK (2P) - AM_RANGE(0xd01600, 0xd01601) AM_WRITE_PORT("EEPROMOUT") // EEPROM DATA - AM_RANGE(0xd01800, 0xd01801) AM_READ(keymatrix_r) // INPUT KEY MATRIX - AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(portselect_w) // PORT SELECT (1P/2P) - - AM_RANGE(0xd80000, 0xd8ffff) AM_RAM // WORK RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromanc2_state::fromancr_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // MAIN ROM - - AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromancr_videoram_0_w) // VRAM BG (1P/2P) - AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromancr_videoram_1_w) // VRAM FG (1P/2P) - AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromancr_videoram_2_w) // VRAM TEXT (1P/2P) - AM_RANGE(0x980000, 0x983fff) AM_WRITENOP // VRAM Unused ? - - AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") // PALETTE (1P) - AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") // PALETTE (2P) - - AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromancr_gfxreg_1_w) // SCROLL REG (1P/2P) - AM_RANGE(0xd00200, 0xd002ff) AM_WRITENOP // ? - AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP // ??? - AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP // ??? - AM_RANGE(0xd01000, 0xd01001) AM_WRITE(sndcmd_w) // SOUND REQ (1P/2P) - AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromancr_gfxreg_0_w) // SCROLL REG (1P/2P) - AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd01200, 0xd01201) AM_WRITE(subcpu_w) // SUB CPU WRITE - AM_RANGE(0xd01300, 0xd01301) AM_READ(subcpu_r) // SUB CPU READ - AM_RANGE(0xd01400, 0xd01401) AM_WRITENOP // COIN COUNTER ? - AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_gfxbank_eeprom_w) // EEPROM DATA, GFXBANK (1P/2P) - AM_RANGE(0xd01800, 0xd01801) AM_READ(keymatrix_r) // INPUT KEY MATRIX - AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(portselect_w) // PORT SELECT (1P/2P) - - AM_RANGE(0xd80000, 0xd8ffff) AM_RAM // WORK RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromanc2_state::fromanc4_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // MAIN ROM - AM_RANGE(0x400000, 0x7fffff) AM_ROM // DATA ROM - - AM_RANGE(0x800000, 0x81ffff) AM_RAM // WORK RAM - - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(portselect_w) // PORT SELECT (1P/2P) - - AM_RANGE(0xd10000, 0xd10001) AM_WRITENOP // ? - AM_RANGE(0xd30000, 0xd30001) AM_WRITENOP // ? - AM_RANGE(0xd50000, 0xd50001) AM_WRITE_PORT("EEPROMOUT") // EEPROM DATA - - AM_RANGE(0xd70000, 0xd70001) AM_WRITE(sndcmd_w) // SOUND REQ (1P/2P) - - AM_RANGE(0xd80000, 0xd8ffff) AM_WRITE(fromanc4_videoram_0_w) // VRAM FG (1P/2P) - AM_RANGE(0xd90000, 0xd9ffff) AM_WRITE(fromanc4_videoram_1_w) // VRAM BG (1P/2P) - AM_RANGE(0xda0000, 0xdaffff) AM_WRITE(fromanc4_videoram_2_w) // VRAM TEXT (1P/2P) - - AM_RANGE(0xdb0000, 0xdb0fff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") // PALETTE (1P) - AM_RANGE(0xdc0000, 0xdc0fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") // PALETTE (2P) - - AM_RANGE(0xd10000, 0xd10001) AM_READ(keymatrix_r) // INPUT KEY MATRIX - AM_RANGE(0xd20000, 0xd20001) AM_READ_PORT("SYSTEM") - - AM_RANGE(0xe00000, 0xe0001d) AM_WRITE(fromanc4_gfxreg_0_w) // SCROLL, GFXBANK (1P/2P) - AM_RANGE(0xe10000, 0xe1001d) AM_WRITE(fromanc4_gfxreg_1_w) // SCROLL, GFXBANK (1P/2P) - AM_RANGE(0xe20000, 0xe2001d) AM_WRITE(fromanc4_gfxreg_2_w) // SCROLL, GFXBANK (1P/2P) - - AM_RANGE(0xe30000, 0xe30013) AM_WRITENOP // ??? - AM_RANGE(0xe40000, 0xe40013) AM_WRITENOP // ??? - - AM_RANGE(0xe50000, 0xe5000f) AM_DEVREADWRITE8("uart", ns16550_device, ins8250_r, ins8250_w, 0x00ff).cswidth(16) // EXT-COMM PORT ? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fromanc2_state::fromanc2_sub_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") // ROM(BANK) - AM_RANGE(0x8000, 0xbfff) AM_RAM // RAM(WORK) - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank2") // RAM(BANK) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromanc2_state::fromanc2_sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(subcpu_rombank_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(maincpu_r_l, maincpu_w_l) // to/from MAIN CPU - AM_RANGE(0x04, 0x04) AM_READWRITE(maincpu_r_h, maincpu_w_h) // to/from MAIN CPU - AM_RANGE(0x06, 0x06) AM_WRITE(subcpu_nmi_clr) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fromanc2_state::fromanc2_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromanc2_state::fromanc2_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP // snd cmd (1P) / ? - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // snd cmd (2P) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_READ(sndcpu_nmi_clr) -ADDRESS_MAP_END + map(0xe50000, 0xe5000f).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask16(0x00ff).cswidth(16); // EXT-COMM PORT ? +} + + +void fromanc2_state::fromanc2_sub_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0x7fff).bankr("bank1"); // ROM(BANK) + map(0x8000, 0xbfff).ram(); // RAM(WORK) + map(0xc000, 0xffff).bankrw("bank2"); // RAM(BANK) +} + +void fromanc2_state::fromanc2_sub_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(fromanc2_state::subcpu_rombank_w)); + map(0x02, 0x02).rw(this, FUNC(fromanc2_state::maincpu_r_l), FUNC(fromanc2_state::maincpu_w_l)); // to/from MAIN CPU + map(0x04, 0x04).rw(this, FUNC(fromanc2_state::maincpu_r_h), FUNC(fromanc2_state::maincpu_w_h)); // to/from MAIN CPU + map(0x06, 0x06).w(this, FUNC(fromanc2_state::subcpu_nmi_clr)); +} + + +void fromanc2_state::fromanc2_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xffff).ram(); +} + +void fromanc2_state::fromanc2_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); // snd cmd (1P) / ? + map(0x04, 0x04).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); // snd cmd (2P) + map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x0c, 0x0c).r(this, FUNC(fromanc2_state::sndcpu_nmi_clr)); +} /************************************* diff --git a/src/mame/drivers/fromance.cpp b/src/mame/drivers/fromance.cpp index 27132a50be6..1e0552d506a 100644 --- a/src/mame/drivers/fromance.cpp +++ b/src/mame/drivers/fromance.cpp @@ -225,28 +225,30 @@ WRITE8_MEMBER(fromance_state::fromance_coinctr_w) * *************************************/ -ADDRESS_MAP_START(fromance_state::nekkyoku_main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("SERVICE") AM_WRITE(fromance_portselect_w) - AM_RANGE(0xf001, 0xf001) AM_READ(fromance_keymatrix_r) AM_WRITENOP - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("COIN") AM_WRITE(fromance_coinctr_w) - AM_RANGE(0xf003, 0xf003) AM_READ(fromance_busycheck_main_r) AM_DEVWRITE("sublatch", generic_latch_8_device, write) - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2") - AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromance_state::fromance_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0x9e89, 0x9e89) AM_READNOP // unknown (idolmj) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("SERVICE") AM_WRITE(fromance_portselect_w) - AM_RANGE(0xe001, 0xe001) AM_READ(fromance_keymatrix_r) - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("COIN") AM_WRITE(fromance_coinctr_w) - AM_RANGE(0xe003, 0xe003) AM_READ(fromance_busycheck_main_r) AM_DEVWRITE("sublatch", generic_latch_8_device, write) - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW2") - AM_RANGE(0xe005, 0xe005) AM_READ_PORT("DSW1") -ADDRESS_MAP_END +void fromance_state::nekkyoku_main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xf000, 0xf000).portr("SERVICE").w(this, FUNC(fromance_state::fromance_portselect_w)); + map(0xf001, 0xf001).r(this, FUNC(fromance_state::fromance_keymatrix_r)).nopw(); + map(0xf002, 0xf002).portr("COIN").w(this, FUNC(fromance_state::fromance_coinctr_w)); + map(0xf003, 0xf003).r(this, FUNC(fromance_state::fromance_busycheck_main_r)).w(m_sublatch, FUNC(generic_latch_8_device::write)); + map(0xf004, 0xf004).portr("DSW2"); + map(0xf005, 0xf005).portr("DSW1"); +} + +void fromance_state::fromance_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xdfff).ram(); + map(0x9e89, 0x9e89).nopr(); // unknown (idolmj) + map(0xe000, 0xe000).portr("SERVICE").w(this, FUNC(fromance_state::fromance_portselect_w)); + map(0xe001, 0xe001).r(this, FUNC(fromance_state::fromance_keymatrix_r)); + map(0xe002, 0xe002).portr("COIN").w(this, FUNC(fromance_state::fromance_coinctr_w)); + map(0xe003, 0xe003).r(this, FUNC(fromance_state::fromance_busycheck_main_r)).w(m_sublatch, FUNC(generic_latch_8_device::write)); + map(0xe004, 0xe004).portr("DSW2"); + map(0xe005, 0xe005).portr("DSW1"); +} @@ -256,21 +258,23 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(fromance_state::nekkyoku_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xefff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_READWRITE(fromance_paletteram_r, fromance_paletteram_w) -ADDRESS_MAP_END +void fromance_state::nekkyoku_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xefff).rw(this, FUNC(fromance_state::fromance_videoram_r), FUNC(fromance_state::fromance_videoram_w)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xffff).rw(this, FUNC(fromance_state::fromance_paletteram_r), FUNC(fromance_state::fromance_paletteram_w)); +} -ADDRESS_MAP_START(fromance_state::fromance_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(fromance_paletteram_r, fromance_paletteram_w) - AM_RANGE(0xd000, 0xffff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w) -ADDRESS_MAP_END +void fromance_state::fromance_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).rw(this, FUNC(fromance_state::fromance_paletteram_r), FUNC(fromance_state::fromance_paletteram_w)); + map(0xd000, 0xffff).rw(this, FUNC(fromance_state::fromance_videoram_r), FUNC(fromance_state::fromance_videoram_w)); +} @@ -280,44 +284,47 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(fromance_state::nekkyoku_sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) - AM_RANGE(0x12, 0x12) AM_READNOP // unknown - AM_RANGE(0xe0, 0xe0) AM_WRITE(fromance_rombank_w) - AM_RANGE(0xe1, 0xe1) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w) - AM_RANGE(0xe2, 0xe5) AM_WRITE(fromance_scroll_w) - AM_RANGE(0xe6, 0xe6) AM_DEVREADWRITE("sublatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0xe7, 0xe7) AM_WRITE(fromance_adpcm_reset_w) - AM_RANGE(0xe8, 0xe8) AM_WRITE(fromance_adpcm_w) - AM_RANGE(0xe9, 0xea) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromance_state::idolmj_sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) - AM_RANGE(0x12, 0x12) AM_READNOP // unknown - AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w) - AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w) - AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w) - AM_RANGE(0x26, 0x26) AM_DEVREADWRITE("sublatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x27, 0x27) AM_WRITE(fromance_adpcm_reset_w) - AM_RANGE(0x28, 0x28) AM_WRITE(fromance_adpcm_w) - AM_RANGE(0x29, 0x2a) AM_DEVWRITE("aysnd", ym2149_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fromance_state::fromance_sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) - AM_RANGE(0x12, 0x12) AM_READNOP // unknown - AM_RANGE(0x20, 0x20) AM_WRITE(fromance_rombank_w) - AM_RANGE(0x21, 0x21) AM_READ(fromance_busycheck_sub_r) AM_WRITE(fromance_gfxreg_w) - AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w) - AM_RANGE(0x26, 0x26) AM_DEVREADWRITE("sublatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x27, 0x27) AM_WRITE(fromance_adpcm_reset_w) - AM_RANGE(0x28, 0x28) AM_WRITE(fromance_adpcm_w) - AM_RANGE(0x2a, 0x2b) AM_DEVWRITE("ymsnd", ym2413_device, write) -ADDRESS_MAP_END +void fromance_state::nekkyoku_sub_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write)); + map(0x12, 0x12).nopr(); // unknown + map(0xe0, 0xe0).w(this, FUNC(fromance_state::fromance_rombank_w)); + map(0xe1, 0xe1).r(this, FUNC(fromance_state::fromance_busycheck_sub_r)).w(this, FUNC(fromance_state::fromance_gfxreg_w)); + map(0xe2, 0xe5).w(this, FUNC(fromance_state::fromance_scroll_w)); + map(0xe6, 0xe6).rw(m_sublatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0xe7, 0xe7).w(this, FUNC(fromance_state::fromance_adpcm_reset_w)); + map(0xe8, 0xe8).w(this, FUNC(fromance_state::fromance_adpcm_w)); + map(0xe9, 0xea).w("aysnd", FUNC(ay8910_device::data_address_w)); +} + +void fromance_state::idolmj_sub_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write)); + map(0x12, 0x12).nopr(); // unknown + map(0x20, 0x20).w(this, FUNC(fromance_state::fromance_rombank_w)); + map(0x21, 0x21).r(this, FUNC(fromance_state::fromance_busycheck_sub_r)).w(this, FUNC(fromance_state::fromance_gfxreg_w)); + map(0x22, 0x25).w(this, FUNC(fromance_state::fromance_scroll_w)); + map(0x26, 0x26).rw(m_sublatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x27, 0x27).w(this, FUNC(fromance_state::fromance_adpcm_reset_w)); + map(0x28, 0x28).w(this, FUNC(fromance_state::fromance_adpcm_w)); + map(0x29, 0x2a).w("aysnd", FUNC(ym2149_device::data_address_w)); +} + +void fromance_state::fromance_sub_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write)); + map(0x12, 0x12).nopr(); // unknown + map(0x20, 0x20).w(this, FUNC(fromance_state::fromance_rombank_w)); + map(0x21, 0x21).r(this, FUNC(fromance_state::fromance_busycheck_sub_r)).w(this, FUNC(fromance_state::fromance_gfxreg_w)); + map(0x22, 0x25).w(this, FUNC(fromance_state::fromance_scroll_w)); + map(0x26, 0x26).rw(m_sublatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x27, 0x27).w(this, FUNC(fromance_state::fromance_adpcm_reset_w)); + map(0x28, 0x28).w(this, FUNC(fromance_state::fromance_adpcm_w)); + map(0x2a, 0x2b).w("ymsnd", FUNC(ym2413_device::write)); +} /************************************* diff --git a/src/mame/drivers/fruitpc.cpp b/src/mame/drivers/fruitpc.cpp index c811e8f4d68..e1e1b22b099 100644 --- a/src/mame/drivers/fruitpc.cpp +++ b/src/mame/drivers/fruitpc.cpp @@ -65,25 +65,27 @@ READ8_MEMBER(fruitpc_state::fruit_inp_r) return 0; } -ADDRESS_MAP_START(fruitpc_state::fruitpc_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) // VGA VRAM - AM_RANGE(0x000c0000, 0x000dffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0x000e0000, 0x000fffff) AM_RAM AM_REGION("bios", 0) - AM_RANGE(0x00100000, 0x008fffff) AM_RAM // 8MB RAM - AM_RANGE(0x02000000, 0x28ffffff) AM_NOP - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(fruitpc_state::fruitpc_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x0310, 0x0313) AM_READ8(fruit_inp_r, 0xffffffff) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) -ADDRESS_MAP_END +void fruitpc_state::fruitpc_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); // VGA VRAM + map(0x000c0000, 0x000dffff).rom().region("bios", 0); + map(0x000e0000, 0x000fffff).ram().region("bios", 0); + map(0x00100000, 0x008fffff).ram(); // 8MB RAM + map(0x02000000, 0x28ffffff).noprw(); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void fruitpc_state::fruitpc_io(address_map &map) +{ + pcat32_io_common(map); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x0310, 0x0313).r(this, FUNC(fruitpc_state::fruit_inp_r)); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); +} static INPUT_PORTS_START( fruitpc ) PORT_START("INP1") diff --git a/src/mame/drivers/ft68m.cpp b/src/mame/drivers/ft68m.cpp index 7d25d68ac40..21ba93db585 100644 --- a/src/mame/drivers/ft68m.cpp +++ b/src/mame/drivers/ft68m.cpp @@ -48,18 +48,19 @@ READ16_MEMBER( ft68m_state::switches_r ) } -ADDRESS_MAP_START(ft68m_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x200000, 0x201fff) AM_ROM AM_REGION("roms", 0x0000) - AM_RANGE(0x400000, 0x401fff) AM_ROM AM_REGION("roms", 0x2000) - AM_RANGE(0x600000, 0x600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("mpsc", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00) - AM_RANGE(0x800000, 0x800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("stc", am9513_device, read16, write16) - AM_RANGE(0xa00000, 0xbfffff) AM_RAM //Page Map - AM_RANGE(0xc00000, 0xdfffff) AM_RAM //Segment Map - AM_RANGE(0xe00000, 0xffffff) AM_READ(switches_r) //Context Register -ADDRESS_MAP_END +void ft68m_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).ram().share("rambase"); + map(0x200000, 0x201fff).rom().region("roms", 0x0000); + map(0x400000, 0x401fff).rom().region("roms", 0x2000); + map(0x600000, 0x600007).mirror(0x1ffff8).rw("mpsc", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0xff00); + map(0x800000, 0x800003).mirror(0x1ffffc).rw("stc", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); + map(0xa00000, 0xbfffff).ram(); //Page Map + map(0xc00000, 0xdfffff).ram(); //Segment Map + map(0xe00000, 0xffffff).r(this, FUNC(ft68m_state::switches_r)); //Context Register +} /* Input ports */ diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp index 0a2906ad092..40a9f166d05 100644 --- a/src/mame/drivers/funkball.cpp +++ b/src/mame/drivers/funkball.cpp @@ -326,52 +326,55 @@ READ8_MEMBER( funkball_state::in_r ) return m_inputs[offset]->read(); } -ADDRESS_MAP_START(funkball_state::funkball_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000affff) AM_RAM - AM_RANGE(0x000b0000, 0x000bffff) AM_DEVICE("flashbank", address_map_bank_device, amap32) - AM_RANGE(0x000c0000, 0x000cffff) AM_RAM - AM_RANGE(0x000d0000, 0x000dffff) AM_RAM - AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_ext1") - AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_ext2") - AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_ext3") - AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ext4") - AM_RANGE(0x000f0000, 0x000f3fff) AM_ROMBANK("bios_bank1") - AM_RANGE(0x000f4000, 0x000f7fff) AM_ROMBANK("bios_bank2") - AM_RANGE(0x000f8000, 0x000fbfff) AM_ROMBANK("bios_bank3") - AM_RANGE(0x000fc000, 0x000fffff) AM_ROMBANK("bios_bank4") - AM_RANGE(0x000e0000, 0x000fffff) AM_WRITE8(bios_ram_w,0xffffffff) - AM_RANGE(0x00100000, 0x07ffffff) AM_RAM +void funkball_state::funkball_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000affff).ram(); + map(0x000b0000, 0x000bffff).m(m_flashbank, FUNC(address_map_bank_device::amap32)); + map(0x000c0000, 0x000cffff).ram(); + map(0x000d0000, 0x000dffff).ram(); + map(0x000e0000, 0x000e3fff).bankr("bios_ext1"); + map(0x000e4000, 0x000e7fff).bankr("bios_ext2"); + map(0x000e8000, 0x000ebfff).bankr("bios_ext3"); + map(0x000ec000, 0x000effff).bankr("bios_ext4"); + map(0x000f0000, 0x000f3fff).bankr("bios_bank1"); + map(0x000f4000, 0x000f7fff).bankr("bios_bank2"); + map(0x000f8000, 0x000fbfff).bankr("bios_bank3"); + map(0x000fc000, 0x000fffff).bankr("bios_bank4"); + map(0x000e0000, 0x000fffff).w(this, FUNC(funkball_state::bios_ram_w)); + map(0x00100000, 0x07ffffff).ram(); // AM_RANGE(0x08000000, 0x0fffffff) AM_NOP - AM_RANGE(0x40008000, 0x400080ff) AM_READWRITE(biu_ctrl_r, biu_ctrl_w) - AM_RANGE(0x40010e00, 0x40010eff) AM_RAM AM_SHARE("unk_ram") - AM_RANGE(0xff000000, 0xfffdffff) AM_DEVREADWRITE("voodoo_0", voodoo_device, voodoo_r, voodoo_w) - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(funkball_state::flashbank_map) - AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE16("u29", intel_28f320j5_device, read, write, 0xffffffff ) // needed to boot - AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE16("u30", intel_28f320j5_device, read, write, 0xffffffff ) // i assume it maps directly after + map(0x40008000, 0x400080ff).rw(this, FUNC(funkball_state::biu_ctrl_r), FUNC(funkball_state::biu_ctrl_w)); + map(0x40010e00, 0x40010eff).ram().share("unk_ram"); + map(0xff000000, 0xfffdffff).rw(m_voodoo, FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w)); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void funkball_state::flashbank_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rw("u29", FUNC(intel_28f320j5_device::read), FUNC(intel_28f320j5_device::write)); // needed to boot + map(0x00400000, 0x007fffff).rw("u30", FUNC(intel_28f320j5_device::read), FUNC(intel_28f320j5_device::write)); // i assume it maps directly after // AM_RANGE(0x02000000, 0x023fffff) AM_DEVREADWRITE16("u3", intel_28f320j5_device, read, write, 0xffffffff ) // sound program, don't think it matters where we map it, might not even be visible in this space /* it checks for 64MBit chips at 0x80000000 the way things are set up, they must return an intel Flash ID of 0x15 */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(funkball_state::funkball_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x0020, 0x0023) AM_READWRITE8(io20_r, io20_w, 0xffff0000) - AM_RANGE(0x00e8, 0x00ef) AM_NOP +void funkball_state::funkball_io(address_map &map) +{ + pcat32_io_common(map); + map(0x0022, 0x0023).rw(this, FUNC(funkball_state::io20_r), FUNC(funkball_state::io20_w)); + map(0x00e8, 0x00ef).noprw(); - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) - AM_RANGE(0x03f8, 0x03ff) AM_READWRITE8(serial_r,serial_w,0xffffffff) + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); + map(0x03f8, 0x03ff).rw(this, FUNC(funkball_state::serial_r), FUNC(funkball_state::serial_w)); - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); - AM_RANGE(0x0360, 0x0363) AM_WRITE(flash_w) + map(0x0360, 0x0363).w(this, FUNC(funkball_state::flash_w)); // AM_RANGE(0x0320, 0x0323) AM_READ(test_r) - AM_RANGE(0x0360, 0x036f) AM_READ8(in_r,0xffffffff) // inputs -ADDRESS_MAP_END + map(0x0360, 0x036f).r(this, FUNC(funkball_state::in_r)); // inputs +} static INPUT_PORTS_START( funkball ) PORT_START("IN.0") diff --git a/src/mame/drivers/funkybee.cpp b/src/mame/drivers/funkybee.cpp index 773272bf7dd..ac8ed42e1a0 100644 --- a/src/mame/drivers/funkybee.cpp +++ b/src/mame/drivers/funkybee.cpp @@ -99,24 +99,26 @@ WRITE_LINE_MEMBER(funkybee_state::coin_counter_2_w) machine().bookkeeping().coin_counter_w(1, state); } -ADDRESS_MAP_START(funkybee_state::funkybee_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(funkybee_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(funkybee_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe000) AM_WRITE(funkybee_scroll_w) - AM_RANGE(0xe800, 0xe807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xf000, 0xf000) AM_READNOP /* IRQ Ack */ - AM_RANGE(0xf800, 0xf800) AM_READ(funkybee_input_port_0_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("IN2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(funkybee_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END +void funkybee_state::funkybee_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xbfff).ram().w(this, FUNC(funkybee_state::funkybee_videoram_w)).share("videoram"); + map(0xc000, 0xdfff).ram().w(this, FUNC(funkybee_state::funkybee_colorram_w)).share("colorram"); + map(0xe000, 0xe000).w(this, FUNC(funkybee_state::funkybee_scroll_w)); + map(0xe800, 0xe807).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xf000, 0xf000).nopr(); /* IRQ Ack */ + map(0xf800, 0xf800).r(this, FUNC(funkybee_state::funkybee_input_port_0_r)).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0xf801, 0xf801).portr("IN1"); + map(0xf802, 0xf802).portr("IN2"); +} + +void funkybee_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r)); +} static INPUT_PORTS_START( funkybee ) diff --git a/src/mame/drivers/funkyjet.cpp b/src/mame/drivers/funkyjet.cpp index 5f2deb1cdf1..e29ccfe8082 100644 --- a/src/mame/drivers/funkyjet.cpp +++ b/src/mame/drivers/funkyjet.cpp @@ -93,7 +93,6 @@ Notes: #include "includes/funkyjet.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "machine/decocrpt.h" #include "machine/gen_latch.h" #include "sound/ym2151.h" @@ -131,35 +130,37 @@ WRITE16_MEMBER( funkyjet_state::funkyjet_protection_region_0_146_w ) } -ADDRESS_MAP_START(funkyjet_state::funkyjet_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x143fff) AM_RAM - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x180000, 0x183fff) AM_READWRITE(funkyjet_protection_region_0_146_r,funkyjet_protection_region_0_146_w) AM_SHARE("prot16ram") /* Protection device */ // unlikely to be cs0 region - AM_RANGE(0x184000, 0x184001) AM_WRITENOP - AM_RANGE(0x188000, 0x188001) AM_WRITENOP - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x340000, 0x340bff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x342000, 0x342bff) AM_RAM AM_SHARE("pf2_rowscroll") -ADDRESS_MAP_END +void funkyjet_state::funkyjet_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x120000, 0x1207ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x143fff).ram(); + map(0x160000, 0x1607ff).ram().share("spriteram"); + map(0x180000, 0x183fff).rw(this, FUNC(funkyjet_state::funkyjet_protection_region_0_146_r), FUNC(funkyjet_state::funkyjet_protection_region_0_146_w)).share("prot16ram"); /* Protection device */ // unlikely to be cs0 region + map(0x184000, 0x184001).nopw(); + map(0x188000, 0x188001).nopw(); + map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x320000, 0x321fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x322000, 0x323fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x340000, 0x340bff).ram().share("pf1_rowscroll"); + map(0x342000, 0x342bff).ram().share("pf2_rowscroll"); +} /******************************************************************************/ /* Physical memory map (21 bits) */ -ADDRESS_MAP_START(funkyjet_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */ - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */ - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco146_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void funkyjet_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).noprw(); /* YM2203 - this board doesn't have one */ + map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).noprw(); /* This board only has 1 oki chip */ + map(0x140000, 0x140000).r(m_deco146, FUNC(deco146_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp index 036281c9e38..5ab5742f15a 100644 --- a/src/mame/drivers/funtech.cpp +++ b/src/mame/drivers/funtech.cpp @@ -242,28 +242,29 @@ INTERRUPT_GEN_MEMBER(fun_tech_corp_state::funtech_vblank_interrupt) -ADDRESS_MAP_START(fun_tech_corp_state::funtech_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM +void fun_tech_corp_state::funtech_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); - AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") + map(0xc000, 0xc1ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xc800, 0xc9ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); - AM_RANGE(0xd000, 0xd7ff) AM_ROM // maybe + map(0xd000, 0xd7ff).rom(); // maybe - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("nvram") + map(0xd800, 0xdfff).ram().share("nvram"); - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(reel1_ram_w) AM_SHARE("reel1ram") - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(reel2_ram_w) AM_SHARE("reel2ram") - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(reel3_ram_w) AM_SHARE("reel3ram") - AM_RANGE(0xf600, 0xf7ff) AM_RAM + map(0xe000, 0xefff).ram().w(this, FUNC(fun_tech_corp_state::fgram_w)).share("fgram"); + map(0xf000, 0xf1ff).ram().w(this, FUNC(fun_tech_corp_state::reel1_ram_w)).share("reel1ram"); + map(0xf200, 0xf3ff).ram().w(this, FUNC(fun_tech_corp_state::reel2_ram_w)).share("reel2ram"); + map(0xf400, 0xf5ff).ram().w(this, FUNC(fun_tech_corp_state::reel3_ram_w)).share("reel3ram"); + map(0xf600, 0xf7ff).ram(); - AM_RANGE(0xf840, 0xf87f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xf880, 0xf8bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xf900, 0xf93f) AM_RAM AM_SHARE("reel3_scroll") + map(0xf840, 0xf87f).ram().share("reel1_scroll"); + map(0xf880, 0xf8bf).ram().share("reel2_scroll"); + map(0xf900, 0xf93f).ram().share("reel3_scroll"); - AM_RANGE(0xf9c0, 0xf9ff) AM_RAM AM_SHARE("reel1_alt_scroll") // or a mirror, gets used in 'full screen' mode. -ADDRESS_MAP_END + map(0xf9c0, 0xf9ff).ram().share("reel1_alt_scroll"); // or a mirror, gets used in 'full screen' mode. +} WRITE8_MEMBER(fun_tech_corp_state::funtech_lamps_w) @@ -318,24 +319,25 @@ WRITE8_MEMBER(fun_tech_corp_state::funtech_vreg_w) -ADDRESS_MAP_START(fun_tech_corp_state::funtech_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void fun_tech_corp_state::funtech_io_map(address_map &map) +{ + map.global_mask(0xff); // lamps? - AM_RANGE(0x00, 0x00) AM_WRITE(funtech_lamps_w) - AM_RANGE(0x01, 0x01) AM_WRITE(funtech_coins_w) + map(0x00, 0x00).w(this, FUNC(fun_tech_corp_state::funtech_lamps_w)); + map(0x01, 0x01).w(this, FUNC(fun_tech_corp_state::funtech_coins_w)); - AM_RANGE(0x03, 0x03) AM_WRITE(funtech_vreg_w) + map(0x03, 0x03).w(this, FUNC(fun_tech_corp_state::funtech_vreg_w)); - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN0") - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN1") - AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW1") - AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW2") + map(0x04, 0x04).portr("IN0"); + map(0x05, 0x05).portr("IN1"); + map(0x06, 0x06).portr("DSW1"); + map(0x07, 0x07).portr("DSW2"); - AM_RANGE(0x10, 0x10) AM_READ_PORT("IN4") + map(0x10, 0x10).portr("IN4"); - AM_RANGE(0x11, 0x11) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END + map(0x11, 0x11).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x12, 0x12).w("aysnd", FUNC(ay8910_device::address_w)); +} static INPUT_PORTS_START( funtech ) PORT_START("IN0") diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp index b41ac5fc564..4b0dce4a367 100644 --- a/src/mame/drivers/funworld.cpp +++ b/src/mame/drivers/funworld.cpp @@ -1066,20 +1066,21 @@ WRITE_LINE_MEMBER(funworld_state::pia1_ca2_w) * Memory map information * *************************/ -ADDRESS_MAP_START(funworld_state::funworld_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4000, 0x4000) AM_READNOP - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void funworld_state::funworld_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x3000, 0x3fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x4000, 0x4000).nopr(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xffff).rom(); +} static uint8_t funquiz_question_bank = 0x80; @@ -1100,55 +1101,58 @@ WRITE8_MEMBER(funworld_state::question_bank_w) funquiz_question_bank = data; } -ADDRESS_MAP_START(funworld_state::funquiz_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - - AM_RANGE(0x1800, 0x1800) AM_WRITE(question_bank_w) - - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4000, 0x7fff) AM_READ(questions_r) - - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(funworld_state::magicrd2_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2c00, 0x2cff) AM_RAM /* range for protection */ - AM_RANGE(0x3600, 0x36ff) AM_RAM /* some games use $3603-05 range for protection */ - AM_RANGE(0x3c00, 0x3cff) AM_RAM /* range for protection */ - AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(funworld_state::cuoreuno_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads */ - AM_RANGE(0x3e00, 0x3fff) AM_RAM /* some games use $3e03-05 range for protection */ - AM_RANGE(0x4000, 0x5fff) AM_ROM /* used by rcdino4 (dino4 hw ) */ - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void funworld_state::funquiz_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + + map(0x1800, 0x1800).w(this, FUNC(funworld_state::question_bank_w)); + + map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x3000, 0x3fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x4000, 0x7fff).r(this, FUNC(funworld_state::questions_r)); + + map(0xc000, 0xffff).rom(); +} + +void funworld_state::magicrd2_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2c00, 0x2cff).ram(); /* range for protection */ + map(0x3600, 0x36ff).ram(); /* some games use $3603-05 range for protection */ + map(0x3c00, 0x3cff).ram(); /* range for protection */ + map(0x4000, 0x4fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x5000, 0x5fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x6000, 0xffff).rom(); +} + +void funworld_state::cuoreuno_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2000, 0x2000).nopr(); /* some unknown reads */ + map(0x3e00, 0x3fff).ram(); /* some games use $3e03-05 range for protection */ + map(0x4000, 0x5fff).rom(); /* used by rcdino4 (dino4 hw ) */ + map(0x6000, 0x6fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} READ8_MEMBER(funworld_state::chinatow_r_32f0) @@ -1162,51 +1166,54 @@ READ8_MEMBER(funworld_state::chinatow_r_32f0) return 0xff; } -ADDRESS_MAP_START(funworld_state::chinatow_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads */ - AM_RANGE(0x32f0, 0x32ff) AM_READ(chinatow_r_32f0) - AM_RANGE(0x4000, 0x5fff) AM_ROM /* used by rcdino4 (dino4 hw ) */ - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(funworld_state::lunapark_map) // mirrored video RAM 4000/5000 to 6000/7000 - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x2000) - AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") AM_MIRROR(0x2000) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(funworld_state::saloon_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") - AM_RANGE(0x0808, 0x0808) AM_READ_PORT("IN3") // maybe - AM_RANGE(0x0802, 0x0802) AM_READ_PORT("IN4") // maybe - AM_RANGE(0x0a01, 0x0a01) AM_READ_PORT("IN1") - AM_RANGE(0x081c, 0x081c) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x081d, 0x081d) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN2") - AM_RANGE(0x1800, 0x1800) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) +void funworld_state::chinatow_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2000, 0x2000).nopr(); /* some unknown reads */ + map(0x32f0, 0x32ff).r(this, FUNC(funworld_state::chinatow_r_32f0)); + map(0x4000, 0x5fff).rom(); /* used by rcdino4 (dino4 hw ) */ + map(0x6000, 0x6fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} + +void funworld_state::lunapark_map(address_map &map) +{ // mirrored video RAM 4000/5000 to 6000/7000 + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x4000, 0x4fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram").mirror(0x2000); + map(0x5000, 0x5fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram").mirror(0x2000); + map(0x8000, 0xffff).bankr("bank1"); +} + +void funworld_state::saloon_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0800).portr("IN0"); + map(0x0808, 0x0808).portr("IN3"); // maybe + map(0x0802, 0x0802).portr("IN4"); // maybe + map(0x0a01, 0x0a01).portr("IN1"); + map(0x081c, 0x081c).w("crtc", FUNC(mc6845_device::address_w)); + map(0x081d, 0x081d).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x1000, 0x1000).portr("IN2"); + map(0x1800, 0x1800).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x1800, 0x1801).w("ay8910", FUNC(ay8910_device::address_data_w)); // AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads... maybe a DSW */ - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x6000, 0x6fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} /* Unknown R/W @@ -1221,47 +1228,50 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(funworld_state::witchryl_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW2") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(funworld_state::intergames_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) // WRONG. just a placeholder... - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) // WRONG. just a placeholder... - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x3001, 0x3001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia0", pia6821_device, read, write) // the bookkeeping mode requests a byte from $3400 to advance pages... - AM_RANGE(0x3800, 0x3803) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // WRONG. just a placeholder... - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(funworld_state::fw_a7_11_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE("ay8910", ay8910_device, address_data_w) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0e01, 0x0e01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(funworld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(funworld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4000, 0x4000) AM_READNOP - AM_RANGE(0x8000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void funworld_state::witchryl_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x4000, 0x4fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x5000, 0x5fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x6000, 0x6000).portr("DSW2"); + map(0x8000, 0xffff).rom(); +} + +void funworld_state::intergames_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); // WRONG. just a placeholder... + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); // WRONG. just a placeholder... + map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x3001, 0x3001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x3400, 0x3403).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // the bookkeeping mode requests a byte from $3400 to advance pages... + map(0x3800, 0x3803).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // WRONG. just a placeholder... + map(0x7000, 0x7fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} + +void funworld_state::fw_a7_11_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0a00, 0x0a03).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c00, 0x0c00).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x0c00, 0x0c01).w("ay8910", FUNC(ay8910_device::address_data_w)); + map(0x0e00, 0x0e00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0e01, 0x0e01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2000, 0x2fff).ram().w(this, FUNC(funworld_state::funworld_videoram_w)).share("videoram"); + map(0x3000, 0x3fff).ram().w(this, FUNC(funworld_state::funworld_colorram_w)).share("colorram"); + map(0x4000, 0x4000).nopr(); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xffff).rom(); +} /************************* diff --git a/src/mame/drivers/funybubl.cpp b/src/mame/drivers/funybubl.cpp index e2f2e99bf98..3b004a800ff 100644 --- a/src/mame/drivers/funybubl.cpp +++ b/src/mame/drivers/funybubl.cpp @@ -81,34 +81,37 @@ WRITE8_MEMBER(funybubl_state::funybubl_oki_bank_sw) } -ADDRESS_MAP_START(funybubl_state::funybubl_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") // banked port 1? - AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(funybubl_paldatawrite) AM_SHARE("paletteram") // palette - AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bank1") // banked port 0? - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(funybubl_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(funybubl_vidram_bank_w) // vidram bank - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(funybubl_cpurombank_w) // rom bank? - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(funybubl_soundcommand_w) - AM_RANGE(0x06, 0x06) AM_READNOP /* Nothing is done with the data read */ - AM_RANGE(0x06, 0x06) AM_WRITENOP /* Written directly after IO port 0 */ - AM_RANGE(0x07, 0x07) AM_WRITENOP /* Reset something on startup - Sound CPU ?? */ -ADDRESS_MAP_END +void funybubl_state::funybubl_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank2"); // banked port 1? + map(0xc400, 0xcfff).ram().w(this, FUNC(funybubl_state::funybubl_paldatawrite)).share("paletteram"); // palette + map(0xd000, 0xdfff).bankrw("bank1"); // banked port 0? + map(0xe000, 0xffff).ram(); +} + +void funybubl_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(this, FUNC(funybubl_state::funybubl_vidram_bank_w)); // vidram bank + map(0x01, 0x01).portr("P1").w(this, FUNC(funybubl_state::funybubl_cpurombank_w)); // rom bank? + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW").w(this, FUNC(funybubl_state::funybubl_soundcommand_w)); + map(0x06, 0x06).nopr(); /* Nothing is done with the data read */ + map(0x06, 0x06).nopw(); /* Written directly after IO port 0 */ + map(0x07, 0x07).nopw(); /* Reset something on startup - Sound CPU ?? */ +} /* Sound CPU */ -ADDRESS_MAP_START(funybubl_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(funybubl_oki_bank_sw) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void funybubl_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(funybubl_state::funybubl_oki_bank_sw)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/fuukifg2.cpp b/src/mame/drivers/fuukifg2.cpp index 29c9d3c4203..e87616cf371 100644 --- a/src/mame/drivers/fuukifg2.cpp +++ b/src/mame/drivers/fuukifg2.cpp @@ -83,23 +83,24 @@ WRITE8_MEMBER( fuuki16_state::sound_command_w ) machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50)); // Fixes glitching in rasters } -ADDRESS_MAP_START(fuuki16_state::fuuki16_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram.0") // Layers - AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram.1") // - AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram.2") // - AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(vram_3_w) AM_SHARE("vram.3") // - AM_RANGE(0x600000, 0x601fff) AM_MIRROR(0x008000) AM_DEVREADWRITE("fuukivid", fuukivid_device, fuuki_sprram_r, fuuki_sprram_w) AM_SHARE("spriteram") // Sprites, mirrored? - AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x810000, 0x810001) AM_READ_PORT("P1_P2") - AM_RANGE(0x880000, 0x880001) AM_READ_PORT("DSW") - AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE8(sound_command_w, 0x00ff) // To Sound CPU - AM_RANGE(0x8c0000, 0x8c001f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0x8d0000, 0x8d0003) AM_RAM AM_SHARE("unknown") // - AM_RANGE(0x8e0000, 0x8e0001) AM_RAM AM_SHARE("priority") // -ADDRESS_MAP_END +void fuuki16_state::fuuki16_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x400000, 0x40ffff).ram(); // RAM + map(0x500000, 0x501fff).ram().w(this, FUNC(fuuki16_state::vram_0_w)).share("vram.0"); // Layers + map(0x502000, 0x503fff).ram().w(this, FUNC(fuuki16_state::vram_1_w)).share("vram.1"); // + map(0x504000, 0x505fff).ram().w(this, FUNC(fuuki16_state::vram_2_w)).share("vram.2"); // + map(0x506000, 0x507fff).ram().w(this, FUNC(fuuki16_state::vram_3_w)).share("vram.3"); // + map(0x600000, 0x601fff).mirror(0x008000).rw(m_fuukivid, FUNC(fuukivid_device::fuuki_sprram_r), FUNC(fuukivid_device::fuuki_sprram_w)).share("spriteram"); // Sprites, mirrored? + map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x800000, 0x800001).portr("SYSTEM"); + map(0x810000, 0x810001).portr("P1_P2"); + map(0x880000, 0x880001).portr("DSW"); + map(0x8a0001, 0x8a0001).w(this, FUNC(fuuki16_state::sound_command_w)); // To Sound CPU + map(0x8c0000, 0x8c001f).ram().w(this, FUNC(fuuki16_state::vregs_w)).share("vregs"); // Video Registers + map(0x8d0000, 0x8d0003).ram().share("unknown"); // + map(0x8e0000, 0x8e0001).ram().share("priority"); // +} /*************************************************************************** @@ -128,23 +129,25 @@ WRITE8_MEMBER(fuuki16_state::oki_banking_w) m_oki->set_rom_bank((data & 6) >> 1); } -ADDRESS_MAP_START(fuuki16_state::fuuki16_sound_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x7fff) AM_RAM // RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // Banked ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fuuki16_state::fuuki16_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sound_rombank_w) // ROM Bank - AM_RANGE(0x11, 0x11) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP // From Main CPU / ? To Main CPU ? - AM_RANGE(0x20, 0x20) AM_WRITE(oki_banking_w) // Oki Banking - AM_RANGE(0x30, 0x30) AM_WRITENOP // ? In the NMI routine - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym2", ym3812_device, read, write) - AM_RANGE(0x60, 0x60) AM_DEVREAD("oki", okim6295_device, read) // M6295 - AM_RANGE(0x61, 0x61) AM_DEVWRITE("oki", okim6295_device, write) // M6295 -ADDRESS_MAP_END +void fuuki16_state::fuuki16_sound_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x7fff).ram(); // RAM + map(0x8000, 0xffff).bankr("bank1"); // Banked ROM +} + +void fuuki16_state::fuuki16_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(fuuki16_state::sound_rombank_w)); // ROM Bank + map(0x11, 0x11).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); // From Main CPU / ? To Main CPU ? + map(0x20, 0x20).w(this, FUNC(fuuki16_state::oki_banking_w)); // Oki Banking + map(0x30, 0x30).nopw(); // ? In the NMI routine + map(0x40, 0x41).w("ym1", FUNC(ym2203_device::write)); + map(0x50, 0x51).rw("ym2", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x60, 0x60).r(m_oki, FUNC(okim6295_device::read)); // M6295 + map(0x61, 0x61).w(m_oki, FUNC(okim6295_device::write)); // M6295 +} /*************************************************************************** diff --git a/src/mame/drivers/fuukifg3.cpp b/src/mame/drivers/fuukifg3.cpp index aae67918876..32a45ac4995 100644 --- a/src/mame/drivers/fuukifg3.cpp +++ b/src/mame/drivers/fuukifg3.cpp @@ -206,30 +206,31 @@ WRITE32_MEMBER(fuuki32_state::vregs_w) } } -ADDRESS_MAP_START(fuuki32_state::fuuki32_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // Work RAM - AM_RANGE(0x410000, 0x41ffff) AM_RAM // Work RAM (used by asurabus) - - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram.0") // Tilemap 1 - AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram.1") // Tilemap 2 - AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram.2") // Tilemap bg - AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(vram_3_w) AM_SHARE("vram.3") // Tilemap bg2 - AM_RANGE(0x508000, 0x517fff) AM_RAM // More tilemap, or linescroll? Seems to be empty all of the time - AM_RANGE(0x600000, 0x601fff) AM_RAM AM_DEVREADWRITE16("fuukivid", fuukivid_device, fuuki_sprram_r, fuuki_sprram_w, 0xffffffff) // Sprites - AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette - - AM_RANGE(0x800000, 0x800003) AM_READ_PORT("800000") AM_WRITENOP // Coin - AM_RANGE(0x810000, 0x810003) AM_READ_PORT("810000") AM_WRITENOP // Player Inputs - AM_RANGE(0x880000, 0x880003) AM_READ_PORT("880000") // Service + DIPS - AM_RANGE(0x890000, 0x890003) AM_READ_PORT("890000") // More DIPS - - AM_RANGE(0x8c0000, 0x8c001f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0x8d0000, 0x8d0003) AM_RAM // Flipscreen Related - AM_RANGE(0x8e0000, 0x8e0003) AM_RAM AM_SHARE("priority") // Controls layer order - AM_RANGE(0x903fe0, 0x903fff) AM_READWRITE(snd_020_r, snd_020_w) // Shared with Z80 - AM_RANGE(0xa00000, 0xa00003) AM_WRITEONLY AM_SHARE("tilebank") // Tilebank -ADDRESS_MAP_END +void fuuki32_state::fuuki32_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x400000, 0x40ffff).ram(); // Work RAM + map(0x410000, 0x41ffff).ram(); // Work RAM (used by asurabus) + + map(0x500000, 0x501fff).ram().w(this, FUNC(fuuki32_state::vram_0_w)).share("vram.0"); // Tilemap 1 + map(0x502000, 0x503fff).ram().w(this, FUNC(fuuki32_state::vram_1_w)).share("vram.1"); // Tilemap 2 + map(0x504000, 0x505fff).ram().w(this, FUNC(fuuki32_state::vram_2_w)).share("vram.2"); // Tilemap bg + map(0x506000, 0x507fff).ram().w(this, FUNC(fuuki32_state::vram_3_w)).share("vram.3"); // Tilemap bg2 + map(0x508000, 0x517fff).ram(); // More tilemap, or linescroll? Seems to be empty all of the time + map(0x600000, 0x601fff).ram().rw(m_fuukivid, FUNC(fuukivid_device::fuuki_sprram_r), FUNC(fuukivid_device::fuuki_sprram_w)); // Sprites + map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette + + map(0x800000, 0x800003).portr("800000").nopw(); // Coin + map(0x810000, 0x810003).portr("810000").nopw(); // Player Inputs + map(0x880000, 0x880003).portr("880000"); // Service + DIPS + map(0x890000, 0x890003).portr("890000"); // More DIPS + + map(0x8c0000, 0x8c001f).ram().w(this, FUNC(fuuki32_state::vregs_w)).share("vregs"); // Video Registers + map(0x8d0000, 0x8d0003).ram(); // Flipscreen Related + map(0x8e0000, 0x8e0003).ram().share("priority"); // Controls layer order + map(0x903fe0, 0x903fff).rw(this, FUNC(fuuki32_state::snd_020_r), FUNC(fuuki32_state::snd_020_w)); // Shared with Z80 + map(0xa00000, 0xa00003).writeonly().share("tilebank"); // Tilebank +} /*************************************************************************** @@ -259,19 +260,21 @@ WRITE8_MEMBER(fuuki32_state::snd_ymf278b_w) machine().device<ymf278b_device>("ymf1")->write(space, offset, data); } -ADDRESS_MAP_START(fuuki32_state::fuuki32_sound_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM - AM_RANGE(0x7ff0, 0x7fff) AM_READWRITE(snd_z80_r, snd_z80_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fuuki32_state::fuuki32_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sound_bw_w) - AM_RANGE(0x30, 0x30) AM_WRITENOP // leftover/unused nmi handler related - AM_RANGE(0x40, 0x45) AM_DEVREAD("ymf1", ymf278b_device, read) AM_WRITE(snd_ymf278b_w) -ADDRESS_MAP_END +void fuuki32_state::fuuki32_sound_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); // ROM + map(0x6000, 0x6fff).ram(); // RAM + map(0x7ff0, 0x7fff).rw(this, FUNC(fuuki32_state::snd_z80_r), FUNC(fuuki32_state::snd_z80_w)); + map(0x8000, 0xffff).bankr("bank1"); // ROM +} + +void fuuki32_state::fuuki32_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(fuuki32_state::sound_bw_w)); + map(0x30, 0x30).nopw(); // leftover/unused nmi handler related + map(0x40, 0x45).r("ymf1", FUNC(ymf278b_device::read)).w(this, FUNC(fuuki32_state::snd_ymf278b_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp index 0611d59d17d..62b68fd7166 100644 --- a/src/mame/drivers/g627.cpp +++ b/src/mame/drivers/g627.cpp @@ -81,19 +81,21 @@ private: }; -ADDRESS_MAP_START(g627_state::mem_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xc000, 0xc0ff) AM_DEVREADWRITE("i8156", i8155_device, memory_r, memory_w) - AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("nvram") // battery backed -ADDRESS_MAP_END - -ADDRESS_MAP_START(g627_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x02) AM_WRITE(disp_w) - AM_RANGE(0x03, 0x07) AM_WRITE(lamp_w) - AM_RANGE(0x10, 0x17) AM_DEVWRITE("astrocade", astrocade_device, astrocade_sound_w) - AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("i8156", i8155_device, io_r, io_w) -ADDRESS_MAP_END +void g627_state::mem_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xc000, 0xc0ff).rw("i8156", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0xe000, 0xe0ff).ram().share("nvram"); // battery backed +} + +void g627_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x02).w(this, FUNC(g627_state::disp_w)); + map(0x03, 0x07).w(this, FUNC(g627_state::lamp_w)); + map(0x10, 0x17).w("astrocade", FUNC(astrocade_device::astrocade_sound_w)); + map(0x20, 0x27).rw("i8156", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} static INPUT_PORTS_START( g627 ) PORT_START("SWITCH.0") diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp index 4b189ed5b16..2f9c3a6509f 100644 --- a/src/mame/drivers/gaelco.cpp +++ b/src/mame/drivers/gaelco.cpp @@ -106,91 +106,106 @@ WRITE16_MEMBER(gaelco_state::thoop_encrypted_w) * *************************************/ -ADDRESS_MAP_START(gaelco_state::bigkarnk_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x102000, 0x103fff) AM_RAM /* Screen RAM */ - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ +void gaelco_state::bigkarnk_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); /* ROM */ + map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::gaelco_vram_w)).share("videoram"); /* Video RAM */ + map(0x102000, 0x103fff).ram(); /* Screen RAM */ + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ // AM_RANGE(0x10800c, 0x10800d) AM_DEVWRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SERVICE") - ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x70000e, 0x70000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) /* Triggers a FIRQ on the sound CPU */ - AM_RANGE(0xff8000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaelco_state::bigkarnk_snd_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */ - AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* OKI6295 */ + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW1"); + map(0x700002, 0x700003).portr("DSW2"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x700008, 0x700009).portr("SERVICE"); + map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x70000f, 0x70000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* Triggers a FIRQ on the sound CPU */ + map(0xff8000, 0xffffff).ram(); /* Work RAM */ +} + +void gaelco_state::bigkarnk_snd_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* RAM */ + map(0x0800, 0x0801).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 */ // AM_RANGE(0x0900, 0x0900) AM_WRITENOP /* enable sound output? */ - AM_RANGE(0x0a00, 0x0a01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) /* YM3812 */ - AM_RANGE(0x0b00, 0x0b00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound latch */ - AM_RANGE(0x0c00, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaelco_state::maniacsq_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x102000, 0x103fff) AM_RAM /* Screen RAM */ - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ + map(0x0a00, 0x0a01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 */ + map(0x0b00, 0x0b00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound latch */ + map(0x0c00, 0xffff).rom(); /* ROM */ +} + +void gaelco_state::maniacsq_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::gaelco_vram_w)).share("videoram"); /* Video RAM */ + map(0x102000, 0x103fff).ram(); /* Screen RAM */ + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ // AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff) - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaelco_state::squash_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_encrypted_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(gaelco_encrypted_w) AM_SHARE("screenram") /* Screen RAM */ - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW2"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x70000d, 0x70000d).w(this, FUNC(gaelco_state::OKIM6295_bankswitch_w)); + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */ + map(0xff0000, 0xffffff).ram(); /* Work RAM */ +} + +void gaelco_state::squash_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::gaelco_vram_encrypted_w)).share("videoram"); /* Video RAM */ + map(0x102000, 0x103fff).ram().w(this, FUNC(gaelco_state::gaelco_encrypted_w)).share("screenram"); /* Screen RAM */ + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ // AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff) - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaelco_state::thoop_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(thoop_vram_encrypted_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(thoop_encrypted_w) AM_SHARE("screenram") /* Screen RAM */ - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW2"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x70000d, 0x70000d).w(this, FUNC(gaelco_state::OKIM6295_bankswitch_w)); + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */ + map(0xff0000, 0xffffff).ram(); /* Work RAM */ +} + +void gaelco_state::thoop_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x100000, 0x101fff).ram().w(this, FUNC(gaelco_state::thoop_vram_encrypted_w)).share("videoram"); /* Video RAM */ + map(0x102000, 0x103fff).ram().w(this, FUNC(gaelco_state::thoop_encrypted_w)).share("screenram"); /* Screen RAM */ + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ // AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w) /* INT 6 ACK/Watchdog timer */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff) - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gaelco_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW2"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x70000d, 0x70000d).w(this, FUNC(gaelco_state::OKIM6295_bankswitch_w)); + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */ + map(0xff0000, 0xffffff).ram(); /* Work RAM */ +} + + +void gaelco_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} /************************************* diff --git a/src/mame/drivers/gaelco2.cpp b/src/mame/drivers/gaelco2.cpp index 9fb81c41b0d..8e2f79a1940 100644 --- a/src/mame/drivers/gaelco2.cpp +++ b/src/mame/drivers/gaelco2.cpp @@ -72,29 +72,31 @@ GFXDECODEINFO(0x0400000, 128) COMMON ============================================================================*/ -ADDRESS_MAP_START(gaelco2_state::mcu_hostmem_map) - AM_RANGE(0x8000, 0xffff) AM_READWRITE(shareram_r, shareram_w) // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM -ADDRESS_MAP_END +void gaelco2_state::mcu_hostmem_map(address_map &map) +{ + map(0x8000, 0xffff).rw(this, FUNC(gaelco2_state::shareram_r), FUNC(gaelco2_state::shareram_w)); // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM +} /*============================================================================ MANIAC SQUARE (FINAL) ============================================================================*/ -ADDRESS_MAP_START(gaelco2_state::maniacsq_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */ - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DSW #2 + Input 2P */ - AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP /* Sound muting? */ - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */ - AM_RANGE(0x500000, 0x500001) AM_WRITE(alighunt_coin_w) /* Coin lockout + counters */ - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM */ -ADDRESS_MAP_END +void gaelco2_state::maniacsq_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); /* ROM */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */ + map(0x210000, 0x211fff).ram().w(this, FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */ + map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */ + map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */ + map(0x30004a, 0x30004b).nopw(); /* Sound muting? */ + map(0x320000, 0x320001).portr("COIN"); /* COINSW + SERVICESW */ + map(0x500000, 0x500001).w(this, FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */ + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM */ +} static INPUT_PORTS_START( maniacsq ) @@ -479,21 +481,22 @@ WRITE16_MEMBER(gaelco2_state::play2000_shareram_68k_w) } -ADDRESS_MAP_START(gaelco2_state::play2000_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0") /* Coins + other buttons? */ +void gaelco2_state::play2000_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); /* ROM */ + map(0x100000, 0x100001).portr("IN0"); /* Coins + other buttons? */ // AM_RANGE(0x110000, 0x110001) ? - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x214000, 0x214fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x215000, 0x217fff) AM_RAM /* Written to, but unused? */ - AM_RANGE(0x218000, 0x218003) AM_RAM /* Written to, but unused? */ - AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x21800a, 0x218fff) AM_RAM /* Written to, but unused? */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */ + map(0x214000, 0x214fff).ram().w(this, FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x215000, 0x217fff).ram(); /* Written to, but unused? */ + map(0x218000, 0x218003).ram(); /* Written to, but unused? */ + map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */ + map(0x21800a, 0x218fff).ram(); /* Written to, but unused? */ // AM_RANGE(0x843100, 0x84315e) ? - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_READWRITE(play2000_shareram_68k_r, play2000_shareram_68k_w) AM_SHARE("shareram") /* Work RAM */ -ADDRESS_MAP_END + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).rw(this, FUNC(gaelco2_state::play2000_shareram_68k_r), FUNC(gaelco2_state::play2000_shareram_68k_w)).share("shareram"); /* Work RAM */ +} static INPUT_PORTS_START( play2000 ) PORT_START("IN0") @@ -638,25 +641,26 @@ READ16_MEMBER(bang_state::p1_gun_y){return (m_light0_y->read() * 240 / 0x100) - READ16_MEMBER(bang_state::p2_gun_x){return (m_light1_x->read() * 320 / 0x100) + 1;} READ16_MEMBER(bang_state::p2_gun_y){return (m_light1_y->read() * 240 / 0x100) - 4;} -ADDRESS_MAP_START(bang_state::bang_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_cg1v_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x218004, 0x218009) AM_READONLY /* Video Registers */ - AM_RANGE(0x218004, 0x218007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x218008, 0x218009) AM_WRITENOP /* CLR INT Video */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1") - AM_RANGE(0x300002, 0x300003) AM_READNOP /* Random number generator? */ - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) /* Coin Counters & serial EEPROM */ - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2") - AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN") - AM_RANGE(0x310000, 0x310001) AM_READ(p1_gun_x) AM_WRITE(bang_clr_gun_int_w) /* Gun 1P X */ /* CLR INT Gun */ - AM_RANGE(0x310002, 0x310003) AM_READ(p2_gun_x) /* Gun 2P X */ - AM_RANGE(0x310004, 0x310005) AM_READ(p1_gun_y) /* Gun 1P Y */ - AM_RANGE(0x310006, 0x310007) AM_READ(p2_gun_y) /* Gun 2P Y */ - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END +void bang_state::bang_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(bang_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_cg1v_device::gaelcosnd_r), FUNC(gaelco_cg1v_device::gaelcosnd_w)); /* Sound Registers */ + map(0x210000, 0x211fff).ram().w(this, FUNC(bang_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x218004, 0x218009).readonly(); /* Video Registers */ + map(0x218004, 0x218007).writeonly().share("vregs"); /* Video Registers */ + map(0x218008, 0x218009).nopw(); /* CLR INT Video */ + map(0x300000, 0x300001).portr("P1"); + map(0x300002, 0x300003).nopr(); /* Random number generator? */ + map(0x300000, 0x30000f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); /* Coin Counters & serial EEPROM */ + map(0x300010, 0x300011).portr("P2"); + map(0x300020, 0x300021).portr("COIN"); + map(0x310000, 0x310001).r(this, FUNC(bang_state::p1_gun_x)).w(this, FUNC(bang_state::bang_clr_gun_int_w)); /* Gun 1P X */ /* CLR INT Gun */ + map(0x310002, 0x310003).r(this, FUNC(bang_state::p2_gun_x)); /* Gun 2P X */ + map(0x310004, 0x310005).r(this, FUNC(bang_state::p1_gun_y)); /* Gun 1P Y */ + map(0x310006, 0x310007).r(this, FUNC(bang_state::p2_gun_y)); /* Gun 2P Y */ + map(0xfe0000, 0xfeffff).ram(); /* Work RAM */ +} static INPUT_PORTS_START( bang ) @@ -841,20 +845,21 @@ ROM_END ============================================================================*/ -ADDRESS_MAP_START(gaelco2_state::alighunt_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */ - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DSW #2 + Input 2P */ - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN") /* COINSW + SERVICESW */ - AM_RANGE(0x500000, 0x500001) AM_WRITE(alighunt_coin_w) /* Coin lockout + counters */ - AM_RANGE(0x500006, 0x500007) AM_WRITENOP /* ??? */ - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */ -ADDRESS_MAP_END +void gaelco2_state::alighunt_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */ + map(0x210000, 0x211fff).ram().w(this, FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */ + map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */ + map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */ + map(0x320000, 0x320001).portr("COIN"); /* COINSW + SERVICESW */ + map(0x500000, 0x500001).w(this, FUNC(gaelco2_state::alighunt_coin_w)); /* Coin lockout + counters */ + map(0x500006, 0x500007).nopw(); /* ??? */ + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */ +} static INPUT_PORTS_START( alighunt ) @@ -1108,20 +1113,21 @@ ROM_END ============================================================================*/ -ADDRESS_MAP_START(gaelco2_state::touchgo_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DSW #1 + Input 1P */ - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DSW #2 + Input 2P */ - AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2") /* COINSW + Input 3P */ - AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3") /* SERVICESW + Input 4P */ - AM_RANGE(0x500000, 0x500001) AM_SELECT(0x0038) AM_WRITE(wrally2_latch_w) /* Coin counters */ - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */ -ADDRESS_MAP_END +void gaelco2_state::touchgo_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */ + map(0x210000, 0x211fff).ram().w(this, FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */ + map(0x300000, 0x300001).portr("IN0"); /* DSW #1 + Input 1P */ + map(0x300002, 0x300003).portr("IN1"); /* DSW #2 + Input 2P */ + map(0x300004, 0x300005).portr("IN2"); /* COINSW + Input 3P */ + map(0x300006, 0x300007).portr("IN3"); /* SERVICESW + Input 4P */ + map(0x500000, 0x500001).select(0x0038).w(this, FUNC(gaelco2_state::wrally2_latch_w)); /* Coin counters */ + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */ +} static INPUT_PORTS_START( touchgo ) @@ -1430,20 +1436,21 @@ ROM_END SNOW BOARD ============================================================================*/ -ADDRESS_MAP_START(gaelco2_state::snowboar_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_cg1v_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x212000, 0x213fff) AM_RAM /* Extra RAM */ - AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1") - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) /* Coin Counters & serial EEPROM */ - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2") - AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN") - AM_RANGE(0x310000, 0x31ffff) AM_READWRITE(snowboar_protection_r,snowboar_protection_w) AM_SHARE("snowboar_prot") /* Protection */ - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END +void gaelco2_state::snowboar_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(gaelco2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_cg1v_device::gaelcosnd_r), FUNC(gaelco_cg1v_device::gaelcosnd_w)); /* Sound Registers */ + map(0x210000, 0x211fff).ram().w(this, FUNC(gaelco2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x212000, 0x213fff).ram(); /* Extra RAM */ + map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */ + map(0x300000, 0x300001).portr("P1"); + map(0x300000, 0x30000f).w(m_mainlatch, FUNC(ls259_device::write_d0)).umask16(0x00ff); /* Coin Counters & serial EEPROM */ + map(0x300010, 0x300011).portr("P2"); + map(0x300020, 0x300021).portr("COIN"); + map(0x310000, 0x31ffff).rw(this, FUNC(gaelco2_state::snowboar_protection_r), FUNC(gaelco2_state::snowboar_protection_w)).share("snowboar_prot"); /* Protection */ + map(0xfe0000, 0xfeffff).ram(); /* Work RAM */ +} static INPUT_PORTS_START( snowboar ) @@ -1658,21 +1665,22 @@ ROM_END WORLD RALLY 2 ============================================================================*/ -ADDRESS_MAP_START(wrally2_state::wrally2_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */ - AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */ - AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_SHARE("paletteram") /* Palette */ - AM_RANGE(0x212000, 0x213fff) AM_RAM /* Extra RAM */ - AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") /* DIPSW #2 + Inputs 1P */ - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") /* DIPSW #1 */ - AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2") /* Inputs 2P + COINSW */ - AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3") /* SERVICESW */ - AM_RANGE(0x400000, 0x400001) AM_SELECT(0x0038) AM_WRITE(wrally2_latch_w) /* Coin counters, etc. */ - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */ -ADDRESS_MAP_END +void wrally2_state::wrally2_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x200000, 0x20ffff).ram().w(this, FUNC(wrally2_state::gaelco2_vram_w)).share("spriteram"); /* Video RAM */ + map(0x202890, 0x2028ff).rw("gaelco", FUNC(gaelco_gae1_device::gaelcosnd_r), FUNC(gaelco_gae1_device::gaelcosnd_w)); /* Sound Registers */ + map(0x210000, 0x211fff).ram().w(this, FUNC(wrally2_state::gaelco2_palette_w)).share("paletteram"); /* Palette */ + map(0x212000, 0x213fff).ram(); /* Extra RAM */ + map(0x218004, 0x218009).ram().share("vregs"); /* Video Registers */ + map(0x300000, 0x300001).portr("IN0"); /* DIPSW #2 + Inputs 1P */ + map(0x300002, 0x300003).portr("IN1"); /* DIPSW #1 */ + map(0x300004, 0x300005).portr("IN2"); /* Inputs 2P + COINSW */ + map(0x300006, 0x300007).portr("IN3"); /* SERVICESW */ + map(0x400000, 0x400001).select(0x0038).w(this, FUNC(wrally2_state::wrally2_latch_w)); /* Coin counters, etc. */ + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */ +} static INPUT_PORTS_START( wrally2 ) diff --git a/src/mame/drivers/gaelco3d.cpp b/src/mame/drivers/gaelco3d.cpp index 52dcefd9df4..20ca37200bf 100644 --- a/src/mame/drivers/gaelco3d.cpp +++ b/src/mame/drivers/gaelco3d.cpp @@ -668,64 +668,81 @@ WRITE_LINE_MEMBER(gaelco3d_state::unknown_13a_w) * *************************************/ -ADDRESS_MAP_START(gaelco3d_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(gaelco3d_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x51000c, 0x51000d) AM_READ_PORT("IN0") - AM_RANGE(0x51001c, 0x51001d) AM_READ_PORT("IN1") - AM_RANGE(0x51002c, 0x51002d) AM_READ_PORT("IN2") - AM_RANGE(0x51003c, 0x51003d) AM_READ_PORT("IN3") - AM_RANGE(0x510040, 0x510041) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x510042, 0x510043) AM_READ(sound_status_r) - AM_RANGE(0x510100, 0x510101) AM_READWRITE(eeprom_data_r, irq_ack_w) - AM_RANGE(0x510102, 0x510103) AM_DEVREAD8("serial", gaelco_serial_device, data_r, 0x00ff) - ;map(0x510102, 0x510103).select(0x000038).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 2, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x510104, 0x510105) AM_DEVWRITE8("serial", gaelco_serial_device, data_w, 0x00ff) - ;map(0x510106, 0x510107).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_SHARE("m68k_ram_base") - AM_RANGE(0xfe7f80, 0xfe7fff) AM_WRITE(tms_comm_w) AM_SHARE("tms_comm_base") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gaelco3d_state::main020_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(gaelco3d_paletteram_020_w) AM_SHARE("paletteram") - AM_RANGE(0x51000c, 0x51000f) AM_READ_PORT("IN0") - AM_RANGE(0x51001c, 0x51001f) AM_READ_PORT("IN1") - AM_RANGE(0x51002c, 0x51002f) AM_READ_PORT("IN2") - AM_RANGE(0x51003c, 0x51003f) AM_READ_PORT("IN3") - AM_RANGE(0x510041, 0x510041) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x510042, 0x510043) AM_READ(sound_status_r) - AM_RANGE(0x510100, 0x510101) AM_READWRITE(eeprom_data_r, irq_ack_w) - AM_RANGE(0x510103, 0x510103) AM_DEVREAD("serial", gaelco_serial_device, data_r) - ;map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 1, data, mem_mask); }); - AM_RANGE(0x510105, 0x510105) AM_DEVWRITE("serial", gaelco_serial_device, data_w) - ;map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 2, data, mem_mask); }); - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_SHARE("m68k_ram_base") - AM_RANGE(0xfe7f80, 0xfe7fff) AM_WRITE(tms_comm_w) AM_SHARE("tms_comm_base") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaelco3d_state::tms_map) - AM_RANGE(0x000000, 0x007fff) AM_READWRITE(tms_m68k_ram_r, tms_m68k_ram_w) - AM_RANGE(0x400000, 0x7fffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0xc00000, 0xc00007) AM_WRITE(gaelco3d_render_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gaelco3d_state::adsp_program_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("adsp_ram_base") /* 1k words internal RAM */ - AM_RANGE(0x37ff, 0x37ff) AM_READNOP /* speedup hammers this for no apparent reason */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaelco3d_state::adsp_data_map) - AM_RANGE(0x0000, 0x0001) AM_WRITE(adsp_rombank_w) - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") - AM_RANGE(0x2000, 0x2000) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_status_w) - AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("adsp_fastram") /* 512 words internal RAM */ - AM_RANGE(0x3fe0, 0x3fff) AM_WRITE(adsp_control_w) AM_SHARE("adsp_regs") -ADDRESS_MAP_END +void gaelco3d_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(gaelco3d_state::gaelco3d_paletteram_w)).share("paletteram"); + map(0x51000c, 0x51000d).portr("IN0"); + map(0x51001c, 0x51001d).portr("IN1"); + map(0x51002c, 0x51002d).portr("IN2"); + map(0x51003c, 0x51003d).portr("IN3"); + map(0x510041, 0x510041).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x510042, 0x510043).r(this, FUNC(gaelco3d_state::sound_status_r)); + map(0x510100, 0x510101).rw(this, FUNC(gaelco3d_state::eeprom_data_r), FUNC(gaelco3d_state::irq_ack_w)); + map(0x510103, 0x510103).r(m_serial, FUNC(gaelco_serial_device::data_r)); + map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_mainlatch->write_d0(space, offset >> 2, data, mem_mask); + }); + map(0x510105, 0x510105).w(m_serial, FUNC(gaelco_serial_device::data_w)); + map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0xfe0000, 0xfeffff).ram().share("m68k_ram_base"); + map(0xfe7f80, 0xfe7fff).w(this, FUNC(gaelco3d_state::tms_comm_w)).share("tms_comm_base"); +} + + +void gaelco3d_state::main020_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(gaelco3d_state::gaelco3d_paletteram_020_w)).share("paletteram"); + map(0x51000c, 0x51000f).portr("IN0"); + map(0x51001c, 0x51001f).portr("IN1"); + map(0x51002c, 0x51002f).portr("IN2"); + map(0x51003c, 0x51003f).portr("IN3"); + map(0x510041, 0x510041).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x510042, 0x510043).r(this, FUNC(gaelco3d_state::sound_status_r)); + map(0x510100, 0x510101).rw(this, FUNC(gaelco3d_state::eeprom_data_r), FUNC(gaelco3d_state::irq_ack_w)); + map(0x510103, 0x510103).r(m_serial, FUNC(gaelco_serial_device::data_r)); + map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_mainlatch->write_d0(space, offset >> 1, data, mem_mask); + }); + map(0x510105, 0x510105).w(m_serial, FUNC(gaelco_serial_device::data_w)); + map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 2, data, mem_mask); + }); + map(0xfe0000, 0xfeffff).ram().share("m68k_ram_base"); + map(0xfe7f80, 0xfe7fff).w(this, FUNC(gaelco3d_state::tms_comm_w)).share("tms_comm_base"); +} + +void gaelco3d_state::tms_map(address_map &map) +{ + map(0x000000, 0x007fff).rw(this, FUNC(gaelco3d_state::tms_m68k_ram_r), FUNC(gaelco3d_state::tms_m68k_ram_w)); + map(0x400000, 0x7fffff).rom().region("user2", 0); + map(0xc00000, 0xc00007).w(this, FUNC(gaelco3d_state::gaelco3d_render_w)); +} + + +void gaelco3d_state::adsp_program_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("adsp_ram_base"); /* 1k words internal RAM */ + map(0x37ff, 0x37ff).nopr(); /* speedup hammers this for no apparent reason */ +} + +void gaelco3d_state::adsp_data_map(address_map &map) +{ + map(0x0000, 0x0001).w(this, FUNC(gaelco3d_state::adsp_rombank_w)); + map(0x0000, 0x1fff).bankr("bank1"); + map(0x2000, 0x2000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).umask16(0x00ff); + map(0x2000, 0x2000).w(this, FUNC(gaelco3d_state::sound_status_w)); + map(0x3800, 0x39ff).ram().share("adsp_fastram"); /* 512 words internal RAM */ + map(0x3fe0, 0x3fff).w(this, FUNC(gaelco3d_state::adsp_control_w)).share("adsp_regs"); +} diff --git a/src/mame/drivers/gaelcopc.cpp b/src/mame/drivers/gaelcopc.cpp index ffcf5ece443..fbb0fafd17b 100644 --- a/src/mame/drivers/gaelcopc.cpp +++ b/src/mame/drivers/gaelcopc.cpp @@ -60,9 +60,10 @@ uint32_t gaelcopc_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } -ADDRESS_MAP_START(gaelcopc_state::gaelcopc_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM -ADDRESS_MAP_END +void gaelcopc_state::gaelcopc_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); +} static INPUT_PORTS_START( gaelcopc ) INPUT_PORTS_END diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp index 1618019d063..558fc1db0a9 100644 --- a/src/mame/drivers/gaiden.cpp +++ b/src/mame/drivers/gaiden.cpp @@ -385,87 +385,94 @@ READ16_MEMBER(gaiden_state::raiga_protection_r) return m_prot; } -ADDRESS_MAP_START(gaiden_state::gaiden_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1") - AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2") - AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3") - AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2") AM_WRITE(gaiden_sproffsety_w) - AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW") - AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w) - AM_RANGE(0x07a108, 0x07a109) AM_WRITE(gaiden_txoffsety_w) - AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w) - AM_RANGE(0x07a204, 0x07a205) AM_WRITE(gaiden_fgscrolly_w) - AM_RANGE(0x07a208, 0x07a209) AM_WRITE(gaiden_fgoffsety_w) - AM_RANGE(0x07a20c, 0x07a20d) AM_WRITE(gaiden_fgscrollx_w) - AM_RANGE(0x07a304, 0x07a305) AM_WRITE(gaiden_bgscrolly_w) - AM_RANGE(0x07a308, 0x07a309) AM_WRITE(gaiden_bgoffsety_w) - AM_RANGE(0x07a30c, 0x07a30d) AM_WRITE(gaiden_bgscrollx_w) - AM_RANGE(0x07a800, 0x07a801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) +void gaiden_state::gaiden_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x060000, 0x063fff).ram(); + map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1"); + map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2"); + map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3"); + map(0x076000, 0x077fff).ram().share("spriteram"); + map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x07a000, 0x07a001).portr("SYSTEM"); + map(0x07a002, 0x07a003).portr("P1_P2").w(this, FUNC(gaiden_state::gaiden_sproffsety_w)); + map(0x07a004, 0x07a005).portr("DSW"); + map(0x07a104, 0x07a105).w(this, FUNC(gaiden_state::gaiden_txscrolly_w)); + map(0x07a108, 0x07a109).w(this, FUNC(gaiden_state::gaiden_txoffsety_w)); + map(0x07a10c, 0x07a10d).w(this, FUNC(gaiden_state::gaiden_txscrollx_w)); + map(0x07a204, 0x07a205).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w)); + map(0x07a208, 0x07a209).w(this, FUNC(gaiden_state::gaiden_fgoffsety_w)); + map(0x07a20c, 0x07a20d).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w)); + map(0x07a304, 0x07a305).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w)); + map(0x07a308, 0x07a309).w(this, FUNC(gaiden_state::gaiden_bgoffsety_w)); + map(0x07a30c, 0x07a30d).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w)); + map(0x07a800, 0x07a801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // Ninja Gaiden writes only to the lower byte; Tecmo Knight and Strato Fighter write to the upper byte instead. // It's not clear which 8 data lines are actually connected, but byte smearing is almost certainly involved. - AM_RANGE(0x07a802, 0x07a803) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16) - AM_RANGE(0x07a806, 0x07a807) AM_WRITE(irq_ack_w) - AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaiden_state::wildfang_map) - AM_IMPORT_FROM(gaiden_map) - AM_RANGE(0x07a006, 0x07a007) AM_READ(wildfang_protection_r) - AM_RANGE(0x07a804, 0x07a805) AM_WRITE(wildfang_protection_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaiden_state::raiga_map) - AM_IMPORT_FROM(gaiden_map) - AM_RANGE(0x07a006, 0x07a007) AM_READ(raiga_protection_r) - AM_RANGE(0x07a804, 0x07a805) AM_WRITE(raiga_protection_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaiden_state::drgnbowl_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1") - AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2") - AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3") - AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2") - AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW") - AM_RANGE(0x07a00e, 0x07a00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x07e000, 0x07e001) AM_WRITE8(drgnbowl_irq_ack_w, 0xff00) - AM_RANGE(0x07f000, 0x07f001) AM_WRITE(gaiden_bgscrolly_w) - AM_RANGE(0x07f002, 0x07f003) AM_WRITE(gaiden_bgscrollx_w) - AM_RANGE(0x07f004, 0x07f005) AM_WRITE(gaiden_fgscrolly_w) - AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaiden_state::sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xefff) AM_ROM /* raiga only */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_device, write) - AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */ - AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaiden_state::drgnbowl_sound_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaiden_state::drgnbowl_sound_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0x07a802, 0x07a803).w("soundlatch", FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16); + map(0x07a806, 0x07a807).w(this, FUNC(gaiden_state::irq_ack_w)); + map(0x07a808, 0x07a809).w(this, FUNC(gaiden_state::gaiden_flip_w)); +} + +void gaiden_state::wildfang_map(address_map &map) +{ + gaiden_map(map); + map(0x07a006, 0x07a007).r(this, FUNC(gaiden_state::wildfang_protection_r)); + map(0x07a804, 0x07a805).w(this, FUNC(gaiden_state::wildfang_protection_w)); +} + +void gaiden_state::raiga_map(address_map &map) +{ + gaiden_map(map); + map(0x07a006, 0x07a007).r(this, FUNC(gaiden_state::raiga_protection_r)); + map(0x07a804, 0x07a805).w(this, FUNC(gaiden_state::raiga_protection_w)); +} + +void gaiden_state::drgnbowl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x060000, 0x063fff).ram(); + map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1"); + map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2"); + map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3"); + map(0x076000, 0x077fff).ram().share("spriteram"); + map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x07a000, 0x07a001).portr("SYSTEM"); + map(0x07a002, 0x07a003).portr("P1_P2"); + map(0x07a004, 0x07a005).portr("DSW"); + map(0x07a00e, 0x07a00e).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x07e000, 0x07e000).w(this, FUNC(gaiden_state::drgnbowl_irq_ack_w)); + map(0x07f000, 0x07f001).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w)); + map(0x07f002, 0x07f003).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w)); + map(0x07f004, 0x07f005).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w)); + map(0x07f006, 0x07f007).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w)); +} + +void gaiden_state::sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xefff).rom(); /* raiga only */ + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf810, 0xf811).w("ym1", FUNC(ym2203_device::write)); + map(0xf820, 0xf821).w("ym2", FUNC(ym2203_device::write)); + map(0xfc00, 0xfc00).noprw(); /* ?? */ + map(0xfc20, 0xfc20).r("soundlatch", FUNC(generic_latch_8_device::read)); +} + +void gaiden_state::drgnbowl_sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void gaiden_state::drgnbowl_sound_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( common ) PORT_START("SYSTEM") @@ -914,17 +921,18 @@ Others 2x 8x2 switches DIP */ -ADDRESS_MAP_START(gaiden_state::mastninj_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("adpcm_bank") - AM_RANGE(0xc400, 0xc401) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xcc00, 0xcc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(adpcm_bankswitch_w) - AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM -ADDRESS_MAP_END +void gaiden_state::mastninj_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("adpcm_bank"); + map(0xc400, 0xc401).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc800, 0xc801).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xcc00, 0xcc00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd000).w("adpcm_select2", FUNC(ls157_device::ba_w)); + map(0xd400, 0xd400).w(this, FUNC(gaiden_state::adpcm_bankswitch_w)); + map(0xd800, 0xd800).w("adpcm_select1", FUNC(ls157_device::ba_w)); + map(0xf000, 0xf7ff).ram(); +} WRITE_LINE_MEMBER(gaiden_state::vck_flipflop_w) { @@ -955,30 +963,31 @@ MACHINE_START_MEMBER(gaiden_state,mastninj) save_item(NAME(m_adpcm_toggle)); } -ADDRESS_MAP_START(gaiden_state::mastninj_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1") - AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2") - AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3") - AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") +void gaiden_state::mastninj_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x060000, 0x063fff).ram(); + map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1"); + map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2"); + map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3"); + map(0x076000, 0x077fff).ram().share("spriteram"); + map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // AM_RANGE(0x078800, 0x079fff) AM_RAM - AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2") - AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW") + map(0x07a000, 0x07a001).portr("SYSTEM"); + map(0x07a002, 0x07a003).portr("P1_P2"); + map(0x07a004, 0x07a005).portr("DSW"); // AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w) // AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w) - AM_RANGE(0x07f000, 0x07f001) AM_WRITE(gaiden_bgscrolly_w) - AM_RANGE(0x07f002, 0x07f003) AM_WRITE(gaiden_bgscrollx_w) - AM_RANGE(0x07f004, 0x07f005) AM_WRITE(gaiden_fgscrolly_w) - AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w) - AM_RANGE(0x07a800, 0x07a801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + map(0x07f000, 0x07f001).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w)); + map(0x07f002, 0x07f003).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w)); + map(0x07f004, 0x07f005).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w)); + map(0x07f006, 0x07f007).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w)); + map(0x07a800, 0x07a801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // AM_RANGE(0x07a806, 0x07a807) AM_WRITENOP // AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w) - AM_RANGE(0x07a00e, 0x07a00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x07e000, 0x07e001) AM_WRITE8(drgnbowl_irq_ack_w, 0xff00) -ADDRESS_MAP_END + map(0x07a00e, 0x07a00e).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x07e000, 0x07e000).w(this, FUNC(gaiden_state::drgnbowl_irq_ack_w)); +} MACHINE_CONFIG_START(gaiden_state::mastninj) diff --git a/src/mame/drivers/gal3.cpp b/src/mame/drivers/gal3.cpp index 365935035d7..0edb037b2e4 100644 --- a/src/mame/drivers/gal3.cpp +++ b/src/mame/drivers/gal3.cpp @@ -337,136 +337,141 @@ WRITE32_MEMBER(gal3_state::rso_w) } -ADDRESS_MAP_START(gal3_state::cpu_mst_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x20000000, 0x20001fff) AM_RAM AM_SHARE("nvmem") //NVRAM +void gal3_state::cpu_mst_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom(); + map(0x20000000, 0x20001fff).ram().share("nvmem"); //NVRAM /// AM_RANGE(0x40000000, 0x4000ffff) AM_WRITE() // - AM_RANGE(0x44000000, 0x44000003) AM_READ_PORT("DSW_CPU_mst" ) - AM_RANGE(0x44800000, 0x44800003) AM_READ(led_mst_r) AM_WRITE(led_mst_w) //LEDs - AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 v-blank ack - AM_RANGE(0x4c000000, 0x4c000003) AM_READNOP //irq3 ack - AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1") //CRAM - AM_RANGE(0x60010000, 0x60017fff) AM_RAM AM_SHARE("share1") //Mirror - AM_RANGE(0x80000000, 0x8007ffff) AM_RAM //512K Local RAM + map(0x44000000, 0x44000003).portr("DSW_CPU_mst"); + map(0x44800000, 0x44800003).r(this, FUNC(gal3_state::led_mst_r)).w(this, FUNC(gal3_state::led_mst_w)); //LEDs + map(0x48000000, 0x48000003).nopr(); //irq1 v-blank ack + map(0x4c000000, 0x4c000003).nopr(); //irq3 ack + map(0x60000000, 0x60007fff).ram().share("share1"); //CRAM + map(0x60010000, 0x60017fff).ram().share("share1"); //Mirror + map(0x80000000, 0x8007ffff).ram(); //512K Local RAM /// AM_RANGE(0xc0000000, 0xc000000b) AM_WRITENOP //upload? - AM_RANGE(0xc000000c, 0xc000000f) AM_READNOP //irq2 ack + map(0xc000000c, 0xc000000f).nopr(); //irq2 ack /// AM_RANGE(0xd8000000, 0xd800000f) AM_RAM // protection or 68681? - AM_RANGE(0xf2800000, 0xf2800fff) AM_READWRITE(rso_r, rso_w) //RSO PCB -ADDRESS_MAP_END + map(0xf2800000, 0xf2800fff).rw(this, FUNC(gal3_state::rso_r), FUNC(gal3_state::rso_w)); //RSO PCB +} -ADDRESS_MAP_START(gal3_state::cpu_slv_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM +void gal3_state::cpu_slv_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); /// AM_RANGE(0x40000000, 0x4000ffff) AM_WRITE() // - AM_RANGE(0x44000000, 0x44000003) AM_READ_PORT("DSW_CPU_slv" ) - AM_RANGE(0x44800000, 0x44800003) AM_READ(led_slv_r) AM_WRITE(led_slv_w) //LEDs - AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 ack + map(0x44000000, 0x44000003).portr("DSW_CPU_slv"); + map(0x44800000, 0x44800003).r(this, FUNC(gal3_state::led_slv_r)).w(this, FUNC(gal3_state::led_slv_w)); //LEDs + map(0x48000000, 0x48000003).nopr(); //irq1 ack /// AM_RANGE(0x50000000, 0x50000003) AM_READ() AM_WRITE() /// AM_RANGE(0x54000000, 0x54000003) AM_READ() AM_WRITE() - AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x60010000, 0x60017fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x80000000, 0x8007ffff) AM_RAM //512K Local RAM + map(0x60000000, 0x60007fff).ram().share("share1"); + map(0x60010000, 0x60017fff).ram().share("share1"); + map(0x80000000, 0x8007ffff).ram(); //512K Local RAM - AM_RANGE(0xf1200000, 0xf120ffff) AM_RAM //DSP RAM + map(0xf1200000, 0xf120ffff).ram(); //DSP RAM /// AM_RANGE(0xf1400000, 0xf1400003) AM_WRITE(pointram_control_w) /// AM_RANGE(0xf1440000, 0xf1440003) AM_READWRITE(pointram_data_r,pointram_data_w) /// AM_RANGE(0x440002, 0x47ffff) AM_WRITENOP /* (frame buffer?) */ /// AM_RANGE(0xf1480000, 0xf14807ff) AM_READWRITE(namcos21_depthcue_r,namcos21_depthcue_w) - AM_RANGE(0xf1700000, 0xf170ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram") - AM_RANGE(0xf1720000, 0xf1720007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff) - AM_RANGE(0xf1740000, 0xf175ffff) AM_READWRITE(paletteram32_r,paletteram32_w) - AM_RANGE(0xf1760000, 0xf1760003) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) - - AM_RANGE(0xf2200000, 0xf220ffff) AM_RAM - AM_RANGE(0xf2700000, 0xf270ffff) AM_RAM //AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram") - AM_RANGE(0xf2720000, 0xf2720007) AM_RAM //AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff) - AM_RANGE(0xf2740000, 0xf275ffff) AM_RAM //AM_READWRITE(paletteram16_r,paletteram16_w) AM_SHARE("paletteram") - AM_RANGE(0xf2760000, 0xf2760003) AM_RAM //AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gal3_state::rs_cpu_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM //64K working RAM + map(0xf1700000, 0xf170ffff).rw(this, FUNC(gal3_state::c355_obj_ram_r), FUNC(gal3_state::c355_obj_ram_w)).share("objram"); + map(0xf1720000, 0xf1720007).rw(this, FUNC(gal3_state::c355_obj_position_r), FUNC(gal3_state::c355_obj_position_w)); + map(0xf1740000, 0xf175ffff).rw(this, FUNC(gal3_state::paletteram32_r), FUNC(gal3_state::paletteram32_w)); + map(0xf1760000, 0xf1760003).rw(this, FUNC(gal3_state::namcos21_video_enable_r), FUNC(gal3_state::namcos21_video_enable_w)); + + map(0xf2200000, 0xf220ffff).ram(); + map(0xf2700000, 0xf270ffff).ram(); //AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram") + map(0xf2720000, 0xf2720007).ram(); //AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff) + map(0xf2740000, 0xf275ffff).ram(); //AM_READWRITE(paletteram16_r,paletteram16_w) AM_SHARE("paletteram") + map(0xf2760000, 0xf2760003).ram(); //AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) +} + +void gal3_state::rs_cpu_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); //64K working RAM /// AM_RANGE(0x180000, 0x183fff) AM_RAM //Nvram - AM_RANGE(0x1c0000, 0x1c0001) AM_RAM //148? - AM_RANGE(0x1c2000, 0x1c2001) AM_RAM //? - AM_RANGE(0x1c4000, 0x1c4001) AM_RAM //? - AM_RANGE(0x1c6000, 0x1c6001) AM_RAM //? - AM_RANGE(0x1c8000, 0x1c8001) AM_RAM //? - AM_RANGE(0x1ca000, 0x1ca001) AM_RAM //? - AM_RANGE(0x1cc000, 0x1cc001) AM_RAM //? - AM_RANGE(0x1ce000, 0x1ce001) AM_RAM //? - AM_RANGE(0x1d2000, 0x1d2001) AM_RAM //? - AM_RANGE(0x1d4000, 0x1d4001) AM_RAM //? - AM_RANGE(0x1d6000, 0x1d6001) AM_RAM //? - AM_RANGE(0x1de000, 0x1de001) AM_RAM //? - AM_RANGE(0x1e4000, 0x1e4001) AM_RAM //? - AM_RANGE(0x1e6000, 0x1e6001) AM_RAM //? - - AM_RANGE(0x200000, 0x200001) AM_RAM //? - - AM_RANGE(0x2c0000, 0x2c0001) AM_RAM //? - AM_RANGE(0x2c0800, 0x2c0801) AM_RAM //? - AM_RANGE(0x2c1000, 0x2c1001) AM_RAM //? - AM_RANGE(0x2c1800, 0x2c1801) AM_RAM //? - AM_RANGE(0x2c2000, 0x2c2001) AM_RAM //? - AM_RANGE(0x2c2800, 0x2c2801) AM_RAM //? - AM_RANGE(0x2c3000, 0x2c3001) AM_RAM //? - AM_RANGE(0x2c3800, 0x2c3801) AM_RAM //? - AM_RANGE(0x2c4000, 0x2c4001) AM_RAM //? - - AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("rso_shared_ram") //shared RAM - - AM_RANGE(0x400000, 0x400017) AM_RAM //MC68681? - AM_RANGE(0x480000, 0x480017) AM_RAM //? - AM_RANGE(0x500000, 0x500017) AM_RAM //? - AM_RANGE(0x580000, 0x580017) AM_RAM //? - AM_RANGE(0x600000, 0x600017) AM_RAM //? - AM_RANGE(0x680000, 0x680017) AM_RAM //? - - AM_RANGE(0x800000, 0x80000f) AM_RAM //? - AM_RANGE(0x840000, 0x843fff) AM_RAM //8 bit, 139 SCI RAM? - AM_RANGE(0x880000, 0x88000f) AM_RAM //? - AM_RANGE(0x8c0000, 0x8c3fff) AM_RAM //8 bit - AM_RANGE(0x900000, 0x90000f) AM_RAM //? - AM_RANGE(0x940000, 0x943fff) AM_RAM //8 bit - AM_RANGE(0x980000, 0x98000f) AM_RAM //? - AM_RANGE(0x9c0000, 0x9c3fff) AM_RAM //8 bit - AM_RANGE(0xa00000, 0xa0000f) AM_RAM //? - AM_RANGE(0xa40000, 0xa43fff) AM_RAM //8 bit - AM_RANGE(0xa80000, 0xa8000f) AM_RAM //? - AM_RANGE(0xac0000, 0xac3fff) AM_RAM //8 bit - AM_RANGE(0xb00000, 0xb0000f) AM_RAM //? - AM_RANGE(0xb40000, 0xb43fff) AM_RAM //8 bit - AM_RANGE(0xb80000, 0xb8000f) AM_RAM //? - AM_RANGE(0xbc0000, 0xbc3fff) AM_RAM //8 bit - AM_RANGE(0xc00000, 0xc0000f) AM_RAM //? - AM_RANGE(0xc40000, 0xc43fff) AM_RAM //8 bit + map(0x1c0000, 0x1c0001).ram(); //148? + map(0x1c2000, 0x1c2001).ram(); //? + map(0x1c4000, 0x1c4001).ram(); //? + map(0x1c6000, 0x1c6001).ram(); //? + map(0x1c8000, 0x1c8001).ram(); //? + map(0x1ca000, 0x1ca001).ram(); //? + map(0x1cc000, 0x1cc001).ram(); //? + map(0x1ce000, 0x1ce001).ram(); //? + map(0x1d2000, 0x1d2001).ram(); //? + map(0x1d4000, 0x1d4001).ram(); //? + map(0x1d6000, 0x1d6001).ram(); //? + map(0x1de000, 0x1de001).ram(); //? + map(0x1e4000, 0x1e4001).ram(); //? + map(0x1e6000, 0x1e6001).ram(); //? + + map(0x200000, 0x200001).ram(); //? + + map(0x2c0000, 0x2c0001).ram(); //? + map(0x2c0800, 0x2c0801).ram(); //? + map(0x2c1000, 0x2c1001).ram(); //? + map(0x2c1800, 0x2c1801).ram(); //? + map(0x2c2000, 0x2c2001).ram(); //? + map(0x2c2800, 0x2c2801).ram(); //? + map(0x2c3000, 0x2c3001).ram(); //? + map(0x2c3800, 0x2c3801).ram(); //? + map(0x2c4000, 0x2c4001).ram(); //? + + map(0x300000, 0x300fff).ram().share("rso_shared_ram"); //shared RAM + + map(0x400000, 0x400017).ram(); //MC68681? + map(0x480000, 0x480017).ram(); //? + map(0x500000, 0x500017).ram(); //? + map(0x580000, 0x580017).ram(); //? + map(0x600000, 0x600017).ram(); //? + map(0x680000, 0x680017).ram(); //? + + map(0x800000, 0x80000f).ram(); //? + map(0x840000, 0x843fff).ram(); //8 bit, 139 SCI RAM? + map(0x880000, 0x88000f).ram(); //? + map(0x8c0000, 0x8c3fff).ram(); //8 bit + map(0x900000, 0x90000f).ram(); //? + map(0x940000, 0x943fff).ram(); //8 bit + map(0x980000, 0x98000f).ram(); //? + map(0x9c0000, 0x9c3fff).ram(); //8 bit + map(0xa00000, 0xa0000f).ram(); //? + map(0xa40000, 0xa43fff).ram(); //8 bit + map(0xa80000, 0xa8000f).ram(); //? + map(0xac0000, 0xac3fff).ram(); //8 bit + map(0xb00000, 0xb0000f).ram(); //? + map(0xb40000, 0xb43fff).ram(); //8 bit + map(0xb80000, 0xb8000f).ram(); //? + map(0xbc0000, 0xbc3fff).ram(); //8 bit + map(0xc00000, 0xc0000f).ram(); //? + map(0xc40000, 0xc43fff).ram(); //8 bit /// AM_RANGE(0xc44000, 0xffffff) AM_RAM ///////////// -ADDRESS_MAP_END +} -ADDRESS_MAP_START(gal3_state::sound_cpu_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM +void gal3_state::sound_cpu_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram(); /// AM_RANGE(0x0c0000, 0x0cffff) AM_RAM //00, 20, 30, 40, 50 /// AM_RANGE(0x100000, 0x10000f) AM_RAM - AM_RANGE(0x110000, 0x113fff) AM_RAM + map(0x110000, 0x113fff).ram(); /// AM_RANGE(0x120000, 0x120003) AM_RAM //2ieme byte /// AM_RANGE(0x200000, 0x20017f) AM_RAM //C140 - AM_RANGE(0x200000, 0x2037ff) AM_DEVREADWRITE8("c140_16a", c140_device, c140_r, c140_w, 0x00ff) //C140/////////// + map(0x200000, 0x2037ff).rw("c140_16a", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)).umask16(0x00ff); //C140/////////// /// AM_RANGE(0x201000, 0x20117f) AM_RAM //C140 /// AM_RANGE(0x202000, 0x20217f) AM_RAM //C140 /// AM_RANGE(0x203000, 0x20317f) AM_RAM //C140 - AM_RANGE(0x204000, 0x2047ff) AM_DEVREADWRITE8("c140_16g", c140_device, c140_r, c140_w, 0x00ff) //C140 + map(0x204000, 0x2047ff).rw("c140_16g", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)).umask16(0x00ff); //C140 /// AM_RANGE(0x090000, 0xffffff) AM_RAM -ADDRESS_MAP_END +} -ADDRESS_MAP_START(gal3_state::psn_b1_cpu_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void gal3_state::psn_b1_cpu_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0xffffff).ram(); +} static INPUT_PORTS_START( gal3 ) PORT_START("DSW_CPU_mst") // diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp index 7560d32cfa8..c2b1140b377 100644 --- a/src/mame/drivers/galaga.cpp +++ b/src/mame/drivers/galaga.cpp @@ -832,103 +832,110 @@ MACHINE_RESET_MEMBER(xevious_state,battles) /* the same memory map is used by all three CPUs; all RAM areas are shared */ -ADDRESS_MAP_START(bosco_state::bosco_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */ - AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r) - AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0) - AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx_0", namco_06xx_device, data_r, data_w) - AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx_0", namco_06xx_device, ctrl_r, ctrl_w) - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(bosco_videoram_w) AM_SHARE("videoram")/* + sprite registers */ - AM_RANGE(0x9000, 0x90ff) AM_DEVREADWRITE("06xx_1", namco_06xx_device, data_r, data_w) - AM_RANGE(0x9100, 0x9100) AM_DEVREADWRITE("06xx_1", namco_06xx_device, ctrl_r, ctrl_w) - AM_RANGE(0x9800, 0x980f) AM_WRITEONLY AM_SHARE("bosco_radarattr") - AM_RANGE(0x9810, 0x9810) AM_WRITE(bosco_scrollx_w) - AM_RANGE(0x9820, 0x9820) AM_WRITE(bosco_scrolly_w) - AM_RANGE(0x9830, 0x9830) AM_WRITEONLY AM_SHARE("starcontrol") - AM_RANGE(0x9840, 0x9840) AM_WRITE(bosco_starclr_w) - AM_RANGE(0x9870, 0x9877) AM_DEVWRITE("videolatch", ls259_device, write_d0) -ADDRESS_MAP_END +void bosco_state::bosco_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */ + map(0x6800, 0x6807).r(this, FUNC(bosco_state::bosco_dsw_r)); + map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0)); + map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x7000, 0x70ff).rw("06xx_0", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w)); + map(0x7100, 0x7100).rw("06xx_0", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w)); + map(0x7800, 0x7fff).ram().share("share1"); + map(0x8000, 0x8fff).ram().w(this, FUNC(bosco_state::bosco_videoram_w)).share("videoram");/* + sprite registers */ + map(0x9000, 0x90ff).rw("06xx_1", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w)); + map(0x9100, 0x9100).rw("06xx_1", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w)); + map(0x9800, 0x980f).writeonly().share("bosco_radarattr"); + map(0x9810, 0x9810).w(this, FUNC(bosco_state::bosco_scrollx_w)); + map(0x9820, 0x9820).w(this, FUNC(bosco_state::bosco_scrolly_w)); + map(0x9830, 0x9830).writeonly().share("starcontrol"); + map(0x9840, 0x9840).w(this, FUNC(bosco_state::bosco_starclr_w)); + map(0x9870, 0x9877).w(m_videolatch, FUNC(ls259_device::write_d0)); +} -ADDRESS_MAP_START(galaga_state::galaga_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */ - AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r) - AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0) - AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w) - AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(galaga_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("galaga_ram1") - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("galaga_ram2") - AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("galaga_ram3") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("videolatch", ls259_device, write_d0) -ADDRESS_MAP_END +void galaga_state::galaga_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */ + map(0x6800, 0x6807).r(this, FUNC(galaga_state::bosco_dsw_r)); + map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0)); + map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x7000, 0x70ff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w)); + map(0x7100, 0x7100).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w)); + map(0x8000, 0x87ff).ram().w(this, FUNC(galaga_state::galaga_videoram_w)).share("videoram"); + map(0x8800, 0x8bff).ram().share("galaga_ram1"); + map(0x9000, 0x93ff).ram().share("galaga_ram2"); + map(0x9800, 0x9bff).ram().share("galaga_ram3"); + map(0xa000, 0xa007).w(m_videolatch, FUNC(ls259_device::write_d0)); +} -ADDRESS_MAP_START(galaga_state::gatsbee_main_map) - AM_IMPORT_FROM(galaga_map) - AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x3ff8) AM_DEVWRITE("extralatch", ls259_device, write_d0) -ADDRESS_MAP_END +void galaga_state::gatsbee_main_map(address_map &map) +{ + galaga_map(map); + map(0x0000, 0x0007).mirror(0x3ff8).w("extralatch", FUNC(ls259_device::write_d0)); +} -ADDRESS_MAP_START(xevious_state::xevious_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */ - AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r) - AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0) - AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w) - AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w) - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1") /* work RAM */ - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("xevious_sr1") /* work RAM + sprite registers */ - AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("xevious_sr2") /* work RAM + sprite registers */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("xevious_sr3") /* work RAM + sprite registers */ - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(xevious_fg_colorram_w) AM_SHARE("fg_colorram") - AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(xevious_bg_colorram_w) AM_SHARE("bg_colorram") - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(xevious_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(xevious_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd000, 0xd07f) AM_WRITE(xevious_vh_latch_w) - AM_RANGE(0xf000, 0xffff) AM_READWRITE(xevious_bb_r, xevious_bs_w) -ADDRESS_MAP_END +void xevious_state::xevious_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */ + map(0x6800, 0x6807).r(this, FUNC(xevious_state::bosco_dsw_r)); + map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0)); + map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x7000, 0x70ff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w)); + map(0x7100, 0x7100).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w)); + map(0x7800, 0x7fff).ram().share("share1"); /* work RAM */ + map(0x8000, 0x87ff).ram().share("xevious_sr1"); /* work RAM + sprite registers */ + map(0x9000, 0x97ff).ram().share("xevious_sr2"); /* work RAM + sprite registers */ + map(0xa000, 0xa7ff).ram().share("xevious_sr3"); /* work RAM + sprite registers */ + map(0xb000, 0xb7ff).ram().w(this, FUNC(xevious_state::xevious_fg_colorram_w)).share("fg_colorram"); + map(0xb800, 0xbfff).ram().w(this, FUNC(xevious_state::xevious_bg_colorram_w)).share("bg_colorram"); + map(0xc000, 0xc7ff).ram().w(this, FUNC(xevious_state::xevious_fg_videoram_w)).share("fg_videoram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(xevious_state::xevious_bg_videoram_w)).share("bg_videoram"); + map(0xd000, 0xd07f).w(this, FUNC(xevious_state::xevious_vh_latch_w)); + map(0xf000, 0xffff).rw(this, FUNC(xevious_state::xevious_bb_r), FUNC(xevious_state::xevious_bs_w)); +} -ADDRESS_MAP_START(digdug_state::digdug_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP /* the only area different for each CPU */ - AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x6820, 0x6827) AM_DEVWRITE("misclatch", ls259_device, write_d0) - AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x7000, 0x70ff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w) - AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w) - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(digdug_videoram_w) AM_SHARE("videoram") /* tilemap RAM (bottom half of RAM 0 */ - AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("share1") /* work RAM (top half for RAM 0 */ - AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("digdug_objram") /* work RAM + sprite registers */ - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("digdug_posram") /* work RAM + sprite registers */ - AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("digdug_flpram") /* work RAM + sprite registers */ - AM_RANGE(0xa000, 0xa007) AM_READNOP AM_DEVWRITE("videolatch", ls259_device, write_d0) /* video latches (spurious reads when setting latch bits) */ - AM_RANGE(0xb800, 0xb83f) AM_DEVREADWRITE("earom", atari_vg_earom_device, read, write) /* non volatile memory data */ - AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) /* non volatile memory control */ -ADDRESS_MAP_END +void digdug_state::digdug_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); /* the only area different for each CPU */ + map(0x6800, 0x681f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x6820, 0x6827).w("misclatch", FUNC(ls259_device::write_d0)); + map(0x6830, 0x6830).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x7000, 0x70ff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w)); + map(0x7100, 0x7100).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w)); + map(0x8000, 0x83ff).ram().w(this, FUNC(digdug_state::digdug_videoram_w)).share("videoram"); /* tilemap RAM (bottom half of RAM 0 */ + map(0x8400, 0x87ff).ram().share("share1"); /* work RAM (top half for RAM 0 */ + map(0x8800, 0x8bff).ram().share("digdug_objram"); /* work RAM + sprite registers */ + map(0x9000, 0x93ff).ram().share("digdug_posram"); /* work RAM + sprite registers */ + map(0x9800, 0x9bff).ram().share("digdug_flpram"); /* work RAM + sprite registers */ + map(0xa000, 0xa007).nopr().w(m_videolatch, FUNC(ls259_device::write_d0)); /* video latches (spurious reads when setting latch bits) */ + map(0xb800, 0xb83f).rw("earom", FUNC(atari_vg_earom_device::read), FUNC(atari_vg_earom_device::write)); /* non volatile memory data */ + map(0xb840, 0xb840).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); /* non volatile memory control */ +} /* bootleg 4th CPU replacing the 5xXX chips */ -ADDRESS_MAP_START(galaga_state::galaga_mem4) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x107f) AM_RAM -ADDRESS_MAP_END +void galaga_state::galaga_mem4(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x107f).ram(); +} -ADDRESS_MAP_START(xevious_state::battles_mem4) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x4000, 0x4003) AM_READ(battles_input_port_r) - AM_RANGE(0x4001, 0x4001) AM_WRITE(battles_CPU4_coin_w) - AM_RANGE(0x5000, 0x5000) AM_WRITE(battles_noise_sound_w) - AM_RANGE(0x6000, 0x6000) AM_READWRITE(battles_customio3_r, battles_customio3_w) - AM_RANGE(0x7000, 0x7000) AM_READWRITE(battles_customio_data3_r, battles_customio_data3_w) - AM_RANGE(0x8000, 0x80ff) AM_RAM -ADDRESS_MAP_END +void xevious_state::battles_mem4(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x4003).r(this, FUNC(xevious_state::battles_input_port_r)); + map(0x4001, 0x4001).w(this, FUNC(xevious_state::battles_CPU4_coin_w)); + map(0x5000, 0x5000).w(this, FUNC(xevious_state::battles_noise_sound_w)); + map(0x6000, 0x6000).rw(this, FUNC(xevious_state::battles_customio3_r), FUNC(xevious_state::battles_customio3_w)); + map(0x7000, 0x7000).rw(this, FUNC(xevious_state::battles_customio_data3_r), FUNC(xevious_state::battles_customio_data3_w)); + map(0x8000, 0x80ff).ram(); +} ADDRESS_MAP_START(galaga_state::dzigzag_mem4) AM_RANGE(0x0000, 0x0fff) AM_ROM diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp index 34412bcab45..1d768ebdb7e 100644 --- a/src/mame/drivers/galastrm.cpp +++ b/src/mame/drivers/galastrm.cpp @@ -134,22 +134,23 @@ WRITE32_MEMBER(galastrm_state::galastrm_adstick_ctrl_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(galastrm_state::galastrm_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") /* main CPUA ram */ - AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff) - AM_RANGE(0x40fff0, 0x40fff3) AM_WRITENOP - AM_RANGE(0x500000, 0x500007) AM_READWRITE(galastrm_adstick_ctrl_r, galastrm_adstick_ctrl_w) - AM_RANGE(0x600000, 0x6007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) /* Sound shared ram */ - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0x900000, 0x900003) AM_WRITE(galastrm_palette_w) /* TC0110PCR */ - AM_RANGE(0xb00000, 0xb00003) AM_WRITE(galastrm_tc0610_0_w) /* TC0610 */ - AM_RANGE(0xc00000, 0xc00003) AM_WRITE(galastrm_tc0610_1_w) - AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* piv tilemaps */ - AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) -ADDRESS_MAP_END +void galastrm_state::galastrm_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */ + map(0x300000, 0x303fff).ram().share("spriteram"); + map(0x400000, 0x400007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); + map(0x40fff0, 0x40fff3).nopw(); + map(0x500000, 0x500007).rw(this, FUNC(galastrm_state::galastrm_adstick_ctrl_r), FUNC(galastrm_state::galastrm_adstick_ctrl_w)); + map(0x600000, 0x6007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); /* Sound shared ram */ + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); /* tilemaps */ + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w)); + map(0x900000, 0x900003).w(this, FUNC(galastrm_state::galastrm_palette_w)); /* TC0110PCR */ + map(0xb00000, 0xb00003).w(this, FUNC(galastrm_state::galastrm_tc0610_0_w)); /* TC0610 */ + map(0xc00000, 0xc00003).w(this, FUNC(galastrm_state::galastrm_tc0610_1_w)); + map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* piv tilemaps */ + map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w)); +} /*********************************************************** INPUT PORTS (dips in eprom) diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp index be98062dd6b..b403ecfeae1 100644 --- a/src/mame/drivers/galaxi.cpp +++ b/src/mame/drivers/galaxi.cpp @@ -302,53 +302,55 @@ CUSTOM_INPUT_MEMBER(galaxi_state::hopper_r) Memory Maps ***************************************************************************/ -ADDRESS_MAP_START(galaxi_state::galaxi_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void galaxi_state::galaxi_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); - AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE(galaxi_bg1_w) AM_SHARE("bg1_ram") - AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE(galaxi_bg2_w) AM_SHARE("bg2_ram") - AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE(galaxi_bg3_w) AM_SHARE("bg3_ram") - AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg4_w) AM_SHARE("bg4_ram") + map(0x100000, 0x1003ff).ram().w(this, FUNC(galaxi_state::galaxi_bg1_w)).share("bg1_ram"); + map(0x100400, 0x1007ff).ram().w(this, FUNC(galaxi_state::galaxi_bg2_w)).share("bg2_ram"); + map(0x100800, 0x100bff).ram().w(this, FUNC(galaxi_state::galaxi_bg3_w)).share("bg3_ram"); + map(0x100c00, 0x100fff).ram().w(this, FUNC(galaxi_state::galaxi_bg4_w)).share("bg4_ram"); - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram") - AM_RANGE(0x102000, 0x107fff) AM_READNOP // unknown + map(0x101000, 0x101fff).ram().w(this, FUNC(galaxi_state::galaxi_fg_w)).share("fg_ram"); + map(0x102000, 0x107fff).nopr(); // unknown - AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x300000, 0x3007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS") - AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w) - AM_RANGE(0x500002, 0x500003) AM_WRITE(galaxi_500002_w) - AM_RANGE(0x500004, 0x500005) AM_WRITE(galaxi_500004_w) + map(0x500000, 0x500001).portr("INPUTS"); + map(0x500000, 0x500001).w(this, FUNC(galaxi_state::galaxi_500000_w)); + map(0x500002, 0x500003).w(this, FUNC(galaxi_state::galaxi_500002_w)); + map(0x500004, 0x500005).w(this, FUNC(galaxi_state::galaxi_500004_w)); - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x700001, 0x700001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("nvram") // 2x DS1230Y (non volatile SRAM) -ADDRESS_MAP_END + map(0x600000, 0x607fff).ram().share("nvram"); // 2x DS1230Y (non volatile SRAM) +} -ADDRESS_MAP_START(galaxi_state::lastfour_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void galaxi_state::lastfour_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // bg3+4 / 1+2 seem to be swapped, order, palettes, scroll register etc. all suggest this - AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE(galaxi_bg3_w) AM_SHARE("bg3_ram") - AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE(galaxi_bg4_w) AM_SHARE("bg4_ram") - AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE(galaxi_bg1_w) AM_SHARE("bg1_ram") - AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg2_w) AM_SHARE("bg2_ram") + map(0x100000, 0x1003ff).ram().w(this, FUNC(galaxi_state::galaxi_bg3_w)).share("bg3_ram"); + map(0x100400, 0x1007ff).ram().w(this, FUNC(galaxi_state::galaxi_bg4_w)).share("bg4_ram"); + map(0x100800, 0x100bff).ram().w(this, FUNC(galaxi_state::galaxi_bg1_w)).share("bg1_ram"); + map(0x100c00, 0x100fff).ram().w(this, FUNC(galaxi_state::galaxi_bg2_w)).share("bg2_ram"); - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_SHARE("fg_ram") - AM_RANGE(0x102000, 0x107fff) AM_READNOP // unknown + map(0x101000, 0x101fff).ram().w(this, FUNC(galaxi_state::galaxi_fg_w)).share("fg_ram"); + map(0x102000, 0x107fff).nopr(); // unknown - AM_RANGE(0x300000, 0x3007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x300000, 0x3007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS") - AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w) - AM_RANGE(0x500002, 0x500003) AM_WRITE(galaxi_500002_w) - AM_RANGE(0x500004, 0x500005) AM_WRITE(galaxi_500004_w) + map(0x500000, 0x500001).portr("INPUTS"); + map(0x500000, 0x500001).w(this, FUNC(galaxi_state::galaxi_500000_w)); + map(0x500002, 0x500003).w(this, FUNC(galaxi_state::galaxi_500002_w)); + map(0x500004, 0x500005).w(this, FUNC(galaxi_state::galaxi_500004_w)); - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x700001, 0x700001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("nvram") // 2x DS1230Y (non volatile SRAM) -ADDRESS_MAP_END + map(0x600000, 0x607fff).ram().share("nvram"); // 2x DS1230Y (non volatile SRAM) +} /*************************************************************************** diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp index 05f09383f48..4cc2db75004 100644 --- a/src/mame/drivers/galaxia.cpp +++ b/src/mame/drivers/galaxia.cpp @@ -131,41 +131,45 @@ READ8_MEMBER(galaxia_state::galaxia_collision_clear) return 0xff; } -ADDRESS_MAP_START(galaxia_state::galaxia_mem_map) - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("bullet_ram") - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_2", s2636_device, read_data, write_data) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(galaxia_video_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x33ff) AM_ROM - AM_RANGE(0x7214, 0x7214) AM_READ_PORT("IN0") -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxia_state::astrowar_mem_map) - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(galaxia_video_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1cff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("bullet_ram") - AM_RANGE(0x2000, 0x33ff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxia_state::galaxia_io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_WRITE(galaxia_scroll_w) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") - AM_RANGE(0x05, 0x05) AM_READNOP - AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW0") - AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW1") - AM_RANGE(0xac, 0xac) AM_READNOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxia_state::galaxia_data_map) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(galaxia_collision_r, galaxia_ctrlport_w) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(galaxia_collision_clear, galaxia_dataport_w) -ADDRESS_MAP_END +void galaxia_state::galaxia_mem_map(address_map &map) +{ + map(0x0000, 0x13ff).rom(); + map(0x1400, 0x14ff).mirror(0x6000).ram().share("bullet_ram"); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1600, 0x16ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1700, 0x17ff).mirror(0x6000).rw(m_s2636_2, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1800, 0x1bff).mirror(0x6000).r(this, FUNC(galaxia_state::cvs_video_or_color_ram_r)).w(this, FUNC(galaxia_state::galaxia_video_w)).share("video_ram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x33ff).rom(); + map(0x7214, 0x7214).portr("IN0"); +} + +void galaxia_state::astrowar_mem_map(address_map &map) +{ + map(0x0000, 0x13ff).rom(); + map(0x1400, 0x14ff).mirror(0x6000).ram(); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1800, 0x1bff).mirror(0x6000).r(this, FUNC(galaxia_state::cvs_video_or_color_ram_r)).w(this, FUNC(galaxia_state::galaxia_video_w)).share("video_ram"); + map(0x1c00, 0x1cff).mirror(0x6000).ram().share("bullet_ram"); + map(0x2000, 0x33ff).rom(); +} + +void galaxia_state::galaxia_io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).w(this, FUNC(galaxia_state::galaxia_scroll_w)).portr("IN0"); + map(0x02, 0x02).portr("IN1"); + map(0x05, 0x05).nopr(); + map(0x06, 0x06).portr("DSW0"); + map(0x07, 0x07).portr("DSW1"); + map(0xac, 0xac).nopr(); +} + +void galaxia_state::galaxia_data_map(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(galaxia_state::galaxia_collision_r), FUNC(galaxia_state::galaxia_ctrlport_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(galaxia_state::galaxia_collision_clear), FUNC(galaxia_state::galaxia_dataport_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index 6ec811f4a76..ec09fa0a810 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -1549,228 +1549,243 @@ LATCH: (write 7000-77ff) /* map derived from schematics */ -ADDRESS_MAP_START(galaxian_state::galaxian_map_discrete) - AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) - AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::galaxian_map_base) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w) - AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x07f8) AM_WRITE(coin_lock_w) - AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) +void galaxian_state::galaxian_map_discrete(address_map &map) +{ + map(0x6004, 0x6007).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800, 0x6807).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::sound_w)); + map(0x7800, 0x7800).mirror(0x07ff).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + +void galaxian_state::galaxian_map_base(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0x0400).ram(); + map(0x5000, 0x53ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5800, 0x58ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6000, 0x6000).mirror(0x07ff).portr("IN0"); + map(0x6000, 0x6001).mirror(0x07f8).w(this, FUNC(galaxian_state::start_lamp_w)); + map(0x6002, 0x6002).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_lock_w)); + map(0x6003, 0x6003).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); //AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") + map(0x6800, 0x6800).mirror(0x07ff).portr("IN1"); //AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) + map(0x7000, 0x7000).mirror(0x07ff).portr("IN2"); + map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); //AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END + map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} -ADDRESS_MAP_START(galaxian_state::galaxian_map) - AM_IMPORT_FROM(galaxian_map_base) - AM_IMPORT_FROM(galaxian_map_discrete) -ADDRESS_MAP_END +void galaxian_state::galaxian_map(address_map &map) +{ + galaxian_map_base(map); + galaxian_map_discrete(map); +} /* map derived from schematics */ -ADDRESS_MAP_START(galaxian_state::mooncrst_map_discrete) - AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) - AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::mooncrst_map_base) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") - AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w) - AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) +void galaxian_state::mooncrst_map_discrete(address_map &map) +{ + map(0xa004, 0xa007).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0xa800, 0xa807).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::sound_w)); + map(0xb800, 0xb800).mirror(0x07ff).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + +void galaxian_state::mooncrst_map_base(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).mirror(0x0400).ram(); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9800, 0x98ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa000).mirror(0x07ff).portr("IN0"); + map(0xa000, 0xa002).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_gfxbank_w)); + map(0xa003, 0xa003).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); // AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") + map(0xa800, 0xa800).mirror(0x07ff).portr("IN1"); // AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0xb006, 0xb006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) + map(0xb000, 0xb000).mirror(0x07ff).portr("IN2"); + map(0xb000, 0xb000).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xb004, 0xb004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0xb006, 0xb006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xb007, 0xb007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); // AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::moonqsr_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::mooncrst_map) - AM_IMPORT_FROM(mooncrst_map_base) - AM_IMPORT_FROM(mooncrst_map_discrete) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxian_state::fantastc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("8910.0", ay8910_device, address_w) - AM_RANGE(0x880b, 0x880b) AM_DEVWRITE("8910.0", ay8910_device, data_w) - AM_RANGE(0x880c, 0x880c) AM_DEVWRITE("8910.1", ay8910_device, address_w) - AM_RANGE(0x880e, 0x880e) AM_DEVWRITE("8910.1", ay8910_device, data_w) - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") - AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xfffe, 0xfffe) AM_NOP // ? -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::timefgtr_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8803, 0x8803) AM_DEVWRITE("8910.0", ay8910_device, address_w) - AM_RANGE(0x880b, 0x880b) AM_DEVWRITE("8910.0", ay8910_device, data_w) - AM_RANGE(0x880c, 0x880c) AM_DEVWRITE("8910.1", ay8910_device, address_w) - AM_RANGE(0x880e, 0x880e) AM_DEVWRITE("8910.1", ay8910_device, data_w) - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") - AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) + map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void galaxian_state::moonqsr_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().share("decrypted_opcodes"); +} + +void galaxian_state::mooncrst_map(address_map &map) +{ + mooncrst_map_base(map); + mooncrst_map_discrete(map); +} + + +void galaxian_state::fantastc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8803, 0x8803).w("8910.0", FUNC(ay8910_device::address_w)); + map(0x880b, 0x880b).w("8910.0", FUNC(ay8910_device::data_w)); + map(0x880c, 0x880c).w("8910.1", FUNC(ay8910_device::address_w)); + map(0x880e, 0x880e).w("8910.1", FUNC(ay8910_device::data_w)); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9800, 0x98ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa000).mirror(0x07ff).portr("IN0"); + map(0xa800, 0xa800).mirror(0x07ff).portr("IN1"); + map(0xb000, 0xb000).mirror(0x07ff).portr("IN2"); + map(0xb000, 0xb000).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xfffe, 0xfffe).noprw(); // ? +} + +void galaxian_state::timefgtr_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8803, 0x8803).w("8910.0", FUNC(ay8910_device::address_w)); + map(0x880b, 0x880b).w("8910.0", FUNC(ay8910_device::data_w)); + map(0x880c, 0x880c).w("8910.1", FUNC(ay8910_device::address_w)); + map(0x880e, 0x880e).w("8910.1", FUNC(ay8910_device::data_w)); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9800, 0x9bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa000).mirror(0x07ff).portr("IN0"); + map(0xa800, 0xa800).mirror(0x07ff).portr("IN1"); + map(0xb000, 0xb000).mirror(0x07ff).portr("IN2"); + map(0xb000, 0xb000).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xb004, 0xb004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); // AM_RANGE(0xb800, 0xb800) AM_WRITENOP // ? // AM_RANGE(0xfff8, 0xffff) AM_WRITENOP // sound related? -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::zigzag_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("bank1") - AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank2") - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x4800, 0x4fff) AM_WRITE(zigzag_ay8910_w) - AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w) - AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x07f8) AM_WRITE(zigzag_bankswap_w) - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END +} + +void galaxian_state::zigzag_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x2fff).bankr("bank1"); + map(0x3000, 0x3fff).bankr("bank2"); + map(0x4000, 0x43ff).mirror(0x0400).ram(); + map(0x4800, 0x4fff).w(this, FUNC(galaxian_state::zigzag_ay8910_w)); + map(0x5000, 0x53ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5800, 0x58ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6000, 0x6000).mirror(0x07ff).portr("IN0"); + map(0x6000, 0x6001).mirror(0x07f8).w(this, FUNC(galaxian_state::start_lamp_w)); + map(0x6003, 0x6003).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x6800, 0x6800).mirror(0x07ff).portr("IN1"); + map(0x7000, 0x7000).mirror(0x07ff).portr("IN2"); + map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x7002, 0x7002).mirror(0x07f8).w(this, FUNC(galaxian_state::zigzag_bankswap_w)); + map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7800, 0x7800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} /* map derived from schematics */ -ADDRESS_MAP_START(galaxian_state::theend_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_enable_w) - AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) //POUT2 - AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8000, 0xffff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w) -ADDRESS_MAP_END +void galaxian_state::theend_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_enable_w)); + map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x6805, 0x6805).mirror(0x07f8); //POUT2 + map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7000, 0x7000).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0xffff).rw(this, FUNC(galaxian_state::theend_ppi8255_r), FUNC(galaxian_state::theend_ppi8255_w)); +} /* map not derived from schematics. Used by explorer and takeoff */ -ADDRESS_MAP_START(galaxian_state::explorer_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x6800, 0x6800) AM_WRITENOP // ???? - AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_enable_w) - AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) //POUT2 - AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) /* watchdog works for writes as well? (or is it just disabled?) */ - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0ffc) AM_READ_PORT("IN0"); - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x0ffc) AM_READ_PORT("IN1"); - AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x0ffc) AM_READ_PORT("IN2"); - AM_RANGE(0x8003, 0x8003) AM_MIRROR(0x0ffc) AM_READ_PORT("IN3"); - AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0fff) AM_WRITE(explorer_sound_control_w); -ADDRESS_MAP_END +void galaxian_state::explorer_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6800, 0x6800).nopw(); // ???? + map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_enable_w)); + map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x6805, 0x6805).mirror(0x07f8); //POUT2 + map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7000, 0x7000).mirror(0x07ff).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); /* watchdog works for writes as well? (or is it just disabled?) */ + map(0x8000, 0x8000).mirror(0x0ffc).portr("IN0"); + map(0x8000, 0x8000).mirror(0x0fff).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x8001, 0x8001).mirror(0x0ffc).portr("IN1"); + map(0x8002, 0x8002).mirror(0x0ffc).portr("IN2"); + map(0x8003, 0x8003).mirror(0x0ffc).portr("IN3"); + map(0x9000, 0x9000).mirror(0x0fff).w(this, FUNC(galaxian_state::explorer_sound_control_w)); +} /* map derived from schematics */ -ADDRESS_MAP_START(galaxian_state::scobra_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x4700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x9800, 0x9803) AM_MIRROR(0x47fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x47fc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xa801, 0xa801) AM_MIRROR(0x47f8) AM_WRITE(irq_enable_w) - AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x47f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0xa803, 0xa803) AM_MIRROR(0x47f8) AM_WRITE(scramble_background_enable_w) - AM_RANGE(0xa804, 0xa804) AM_MIRROR(0x47f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0xa805, 0xa805) AM_MIRROR(0x47f8) /* POUT2 */ - AM_RANGE(0xa806, 0xa806) AM_MIRROR(0x47f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xa807, 0xa807) AM_MIRROR(0x47f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x47ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxian_state::anteateruk_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x0400, 0x0bff) AM_RAM - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x01f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x01f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x01f8) AM_WRITE(scramble_background_enable_w) - AM_RANGE(0x1004, 0x1004) AM_MIRROR(0x01f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x1005, 0x1005) AM_MIRROR(0x01f8) //POUT2 - AM_RANGE(0x1006, 0x1006) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x1007, 0x1007) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x0100) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x4000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xc100, 0xc103) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxian_state::spactrai_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x01ff) AM_ROM - AM_RANGE(0x0200, 0x05ff) AM_RAM // this sits over ROM, does the 0x400 bytes of ROM underneath bank or appear elsewhere? - AM_RANGE(0x0600, 0x11ff) AM_ROM - AM_RANGE(0x1200, 0x15ff) AM_RAM AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") // see above comment - AM_RANGE(0x1600, 0x4fff) AM_ROM +void galaxian_state::scobra_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).mirror(0x4000).ram(); + map(0x8800, 0x8bff).mirror(0x4400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9000, 0x90ff).mirror(0x4700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x9800, 0x9803).mirror(0x47fc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa000, 0xa003).mirror(0x47fc).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa801, 0xa801).mirror(0x47f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xa802, 0xa802).mirror(0x47f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0xa803, 0xa803).mirror(0x47f8).w(this, FUNC(galaxian_state::scramble_background_enable_w)); + map(0xa804, 0xa804).mirror(0x47f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0xa805, 0xa805).mirror(0x47f8); /* POUT2 */ + map(0xa806, 0xa806).mirror(0x47f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xa807, 0xa807).mirror(0x47f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xb000, 0xb000).mirror(0x47ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + + +void galaxian_state::anteateruk_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x0bff).ram(); + map(0x0c00, 0x0fff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x1001, 0x1001).mirror(0x01f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x1002, 0x1002).mirror(0x01f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x1003, 0x1003).mirror(0x01f8).w(this, FUNC(galaxian_state::scramble_background_enable_w)); + map(0x1004, 0x1004).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x1005, 0x1005).mirror(0x01f8); //POUT2 + map(0x1006, 0x1006).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x1007, 0x1007).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x1200, 0x12ff).mirror(0x0100).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x1400, 0x1400).mirror(0x03ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x4000, 0xbfff).rom(); + map(0xc000, 0xc003).mirror(0x3efc).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc100, 0xc103).mirror(0x3efc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + + +void galaxian_state::spactrai_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x01ff).rom(); + map(0x0200, 0x05ff).ram(); // this sits over ROM, does the 0x400 bytes of ROM underneath bank or appear elsewhere? + map(0x0600, 0x11ff).rom(); + map(0x1200, 0x15ff).ram().ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); // see above comment + map(0x1600, 0x4fff).rom(); // cleared on startup // AM_RANGE(0x6000, 0x60ff) AM_RAM @@ -1778,184 +1793,192 @@ ADDRESS_MAP_START(galaxian_state::spactrai_map) // AM_RANGE(0x7000, 0x70ff) AM_RAM // standard galaxian mapping? - AM_RANGE(0x6004, 0x6007) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) - AM_RANGE(0x7800, 0x7800) AM_MIRROR(0x07ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - - - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") - - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") - AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - - AM_RANGE(0xfe00, 0xfeff) AM_RAM AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::anteaterg_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x0400, 0x0bff) AM_RAM - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0300) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x01fc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x2601, 0x2601) AM_MIRROR(0x01f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x2602, 0x2602) AM_MIRROR(0x01f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x2603, 0x2603) AM_MIRROR(0x01f8) AM_WRITE(scramble_background_enable_w) - AM_RANGE(0x2604, 0x2604) AM_MIRROR(0x01f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x2605, 0x2605) AM_MIRROR(0x01f8) //POUT2 - AM_RANGE(0x2606, 0x2606) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x2607, 0x2607) AM_MIRROR(0x01f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x4000, 0x7bff) AM_ROM - AM_RANGE(0x7c00, 0x7fff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") /* mirror! */ - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xf400, 0xf400) AM_MIRROR(0x01ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x01fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::anteatergg_map) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(galaxian_map_discrete) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5800, 0x58ff) AM_RAM AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") + map(0x6004, 0x6007).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800, 0x6807).mirror(0x07f8).w("cust", FUNC(galaxian_sound_device::sound_w)); + map(0x7800, 0x7800).mirror(0x07ff).w("cust", FUNC(galaxian_sound_device::pitch_w)); + + map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + + + map(0x6000, 0x6000).portr("IN0"); + map(0x6800, 0x6800).portr("IN1"); + + map(0x7000, 0x7000).portr("IN2"); + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + + map(0xfe00, 0xfeff).ram().ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + +} + +void galaxian_state::anteaterg_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x0bff).ram(); + map(0x0c00, 0x0fff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x2000, 0x20ff).mirror(0x0300).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x2400, 0x2403).mirror(0x01fc).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x2601, 0x2601).mirror(0x01f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x2602, 0x2602).mirror(0x01f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x2603, 0x2603).mirror(0x01f8).w(this, FUNC(galaxian_state::scramble_background_enable_w)); + map(0x2604, 0x2604).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x2605, 0x2605).mirror(0x01f8); //POUT2 + map(0x2606, 0x2606).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x2607, 0x2607).mirror(0x01f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x4000, 0x7bff).rom(); + map(0x7c00, 0x7fff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); /* mirror! */ + map(0x8000, 0xbfff).rom(); + map(0xf400, 0xf400).mirror(0x01ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xf600, 0xf603).mirror(0x01fc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void galaxian_state::anteatergg_map(address_map &map) +{ + map.unmap_value_high(); + galaxian_map_discrete(map); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).ram(); + map(0x5000, 0x53ff).ram().ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5800, 0x58ff).ram().ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); // AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") + map(0x6000, 0x6000).mirror(0x07ff).portr("IN0"); // AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x07f8) AM_WRITE(start_lamp_w) // AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x07f8) AM_WRITE(coin_lock_w) // AM_RANGE(0x6003, 0x6003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END + map(0x6800, 0x6800).mirror(0x07ff).portr("IN1"); + map(0x7000, 0x7000).mirror(0x07ff).portr("IN2"); + map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} /* map derived from schematics */ -ADDRESS_MAP_START(galaxian_state::frogger_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xb808, 0xb808) AM_MIRROR(0x07e3) AM_WRITE(irq_enable_w) - AM_RANGE(0xb80c, 0xb80c) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0xb810, 0xb810) AM_MIRROR(0x07e3) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xb818, 0xb818) AM_MIRROR(0x07e3) AM_WRITE(coin_count_0_w) /* IOPC7 */ - AM_RANGE(0xb81c, 0xb81c) AM_MIRROR(0x07e3) AM_WRITE(coin_count_1_w) /* POUT1 */ - AM_RANGE(0xc000, 0xffff) AM_READWRITE(frogger_ppi8255_r, frogger_ppi8255_w) -ADDRESS_MAP_END +void galaxian_state::frogger_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xa800, 0xabff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0xb000, 0xb0ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xb808, 0xb808).mirror(0x07e3).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xb80c, 0xb80c).mirror(0x07e3).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xb810, 0xb810).mirror(0x07e3).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xb818, 0xb818).mirror(0x07e3).w(this, FUNC(galaxian_state::coin_count_0_w)); /* IOPC7 */ + map(0xb81c, 0xb81c).mirror(0x07e3).w(this, FUNC(galaxian_state::coin_count_1_w)); /* POUT1 */ + map(0xc000, 0xffff).rw(this, FUNC(galaxian_state::frogger_ppi8255_r), FUNC(galaxian_state::frogger_ppi8255_w)); +} /* map derived from schematics */ -ADDRESS_MAP_START(galaxian_state::turtles_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x4000) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x4400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x4700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_red_w) - AM_RANGE(0xa008, 0xa008) AM_MIRROR(0x47c7) AM_WRITE(irq_enable_w) - AM_RANGE(0xa010, 0xa010) AM_MIRROR(0x47c7) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0xa018, 0xa018) AM_MIRROR(0x47c7) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xa020, 0xa020) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_green_w) - AM_RANGE(0xa028, 0xa028) AM_MIRROR(0x47c7) AM_WRITE(scramble_background_blue_w) - AM_RANGE(0xa030, 0xa030) AM_MIRROR(0x47c7) AM_WRITE(coin_count_0_w) - AM_RANGE(0xa038, 0xa038) AM_MIRROR(0x47c7) AM_WRITE(coin_count_1_w) - AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x47ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xb000, 0xb03f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_0_r, turtles_ppi8255_0_w) - AM_RANGE(0xb800, 0xb83f) AM_MIRROR(0x47c0) AM_READWRITE(turtles_ppi8255_1_r, turtles_ppi8255_1_w) -ADDRESS_MAP_END +void galaxian_state::turtles_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).mirror(0x4000).ram(); + map(0x9000, 0x93ff).mirror(0x4400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9800, 0x98ff).mirror(0x4700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa000).mirror(0x47c7).w(this, FUNC(galaxian_state::scramble_background_red_w)); + map(0xa008, 0xa008).mirror(0x47c7).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xa010, 0xa010).mirror(0x47c7).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xa018, 0xa018).mirror(0x47c7).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xa020, 0xa020).mirror(0x47c7).w(this, FUNC(galaxian_state::scramble_background_green_w)); + map(0xa028, 0xa028).mirror(0x47c7).w(this, FUNC(galaxian_state::scramble_background_blue_w)); + map(0xa030, 0xa030).mirror(0x47c7).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0xa038, 0xa038).mirror(0x47c7).w(this, FUNC(galaxian_state::coin_count_1_w)); + map(0xa800, 0xa800).mirror(0x47ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xb000, 0xb03f).mirror(0x47c0).rw(this, FUNC(galaxian_state::turtles_ppi8255_0_r), FUNC(galaxian_state::turtles_ppi8255_0_w)); + map(0xb800, 0xb83f).mirror(0x47c0).rw(this, FUNC(galaxian_state::turtles_ppi8255_1_r), FUNC(galaxian_state::turtles_ppi8255_1_w)); +} /* map NOT derived from schematics */ -ADDRESS_MAP_START(galaxian_state::amigo2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("IN2") - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("IN3") - AM_RANGE(0x5000, 0x5000) AM_WRITE(konami_sound_control_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x90ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_WRITE(scramble_background_red_w) - AM_RANGE(0xa008, 0xa008) AM_WRITE(irq_enable_w) - AM_RANGE(0xa010, 0xa010) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0xa018, 0xa018) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xa020, 0xa020) AM_WRITE(scramble_background_green_w) - AM_RANGE(0xa028, 0xa028) AM_WRITE(scramble_background_blue_w) - AM_RANGE(0xa030, 0xa030) AM_WRITE(coin_count_0_w) - AM_RANGE(0xa038, 0xa038) AM_WRITE(coin_count_1_w) - AM_RANGE(0xa800, 0xa800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::turpins_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x98ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa030, 0xa030) AM_WRITE(coin_count_0_w) - AM_RANGE(0xa038, 0xa038) AM_WRITE(coin_count_1_w) - AM_RANGE(0xa801, 0xa801) AM_WRITE(irq_enable_w) - AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) -ADDRESS_MAP_END +void galaxian_state::amigo2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4000).portr("IN0").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x4001, 0x4001).portr("IN1"); + map(0x4002, 0x4002).portr("IN2"); + map(0x4003, 0x4003).portr("IN3"); + map(0x5000, 0x5000).w(this, FUNC(galaxian_state::konami_sound_control_w)); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9000, 0x90ff).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa000).w(this, FUNC(galaxian_state::scramble_background_red_w)); + map(0xa008, 0xa008).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xa010, 0xa010).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xa018, 0xa018).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xa020, 0xa020).w(this, FUNC(galaxian_state::scramble_background_green_w)); + map(0xa028, 0xa028).w(this, FUNC(galaxian_state::scramble_background_blue_w)); + map(0xa030, 0xa030).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0xa038, 0xa038).w(this, FUNC(galaxian_state::coin_count_1_w)); + map(0xa800, 0xa800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void galaxian_state::turpins_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9800, 0x98ff).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa030, 0xa030).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0xa038, 0xa038).w(this, FUNC(galaxian_state::coin_count_1_w)); + map(0xa801, 0xa801).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xa806, 0xa806).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xa807, 0xa807).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc000, 0xc003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* this is the same as theend, except for separate RGB background controls and some extra ROM space at $7000 and $C000 */ -ADDRESS_MAP_START(galaxian_state::sfx_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_red_w) - AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_blue_w) - AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_green_w) - AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x7000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w) - AM_RANGE(0xc000, 0xefff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxian_state::monsterz_map) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0x3800, 0x3fff) AM_RAM // extra RAM used by protection - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_red_w) - AM_RANGE(0x6801, 0x6801) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x6802, 0x6802) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x6803, 0x6803) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_blue_w) - AM_RANGE(0x6804, 0x6804) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x6805, 0x6805) AM_MIRROR(0x07f8) AM_WRITE(scramble_background_green_w) - AM_RANGE(0x6806, 0x6806) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x8000, 0xbfff) AM_READWRITE(theend_ppi8255_r, theend_ppi8255_w) - AM_RANGE(0xc000, 0xd7ff) AM_ROM - AM_RANGE(0xd800, 0xd800) AM_READ(monsterz_protection_r) -ADDRESS_MAP_END +void galaxian_state::sfx_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6800, 0x6800).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_red_w)); + map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_blue_w)); + map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x6805, 0x6805).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_green_w)); + map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x7000, 0x7fff).rom(); + map(0x8000, 0xbfff).rw(this, FUNC(galaxian_state::theend_ppi8255_r), FUNC(galaxian_state::theend_ppi8255_w)); + map(0xc000, 0xefff).rom(); +} + + +void galaxian_state::monsterz_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0x3800, 0x3fff).ram(); // extra RAM used by protection + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x6800, 0x6800).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_red_w)); + map(0x6801, 0x6801).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x6802, 0x6802).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x6803, 0x6803).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_blue_w)); + map(0x6804, 0x6804).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x6805, 0x6805).mirror(0x07f8).w(this, FUNC(galaxian_state::scramble_background_green_w)); + map(0x6806, 0x6806).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x6807, 0x6807).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x8000, 0xbfff).rw(this, FUNC(galaxian_state::theend_ppi8255_r), FUNC(galaxian_state::theend_ppi8255_w)); + map(0xc000, 0xd7ff).rom(); + map(0xd800, 0xd800).r(this, FUNC(galaxian_state::monsterz_protection_r)); +} /* changes from galaxian map: @@ -1967,75 +1990,80 @@ ADDRESS_MAP_END $8000-$afff: additional ROM area $b000-$bfff: protection */ -ADDRESS_MAP_START(galaxian_state::jumpbug_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x00ff) AM_DEVWRITE("8910.0", ay8910_device, data_w) - AM_RANGE(0x5900, 0x5900) AM_MIRROR(0x00ff) AM_DEVWRITE("8910.0", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") - AM_RANGE(0x6002, 0x6006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w) - AM_RANGE(0x6800, 0x6800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0x8000, 0xafff) AM_ROM - AM_RANGE(0xb000, 0xbfff) AM_READ(jumpbug_protection_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxian_state::frogf_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x07f1) AM_WRITE(galaxian_flip_screen_x_w) - AM_RANGE(0xa804, 0xa804) AM_MIRROR(0x07f1) AM_WRITE(irq_enable_w) - AM_RANGE(0xa806, 0xa806) AM_MIRROR(0x07f1) AM_WRITE(galaxian_flip_screen_y_w) - AM_RANGE(0xa808, 0xa808) AM_MIRROR(0x07f1) AM_WRITE(coin_count_1_w) - AM_RANGE(0xa80e, 0xa80e) AM_MIRROR(0x07f1) AM_WRITE(coin_count_0_w) - AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xc000, 0xffff) AM_READWRITE(frogf_ppi8255_r, frogf_ppi8255_w) -ADDRESS_MAP_END +void galaxian_state::jumpbug_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x5000, 0x50ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0x5800, 0x5800).mirror(0x00ff).w("8910.0", FUNC(ay8910_device::data_w)); + map(0x5900, 0x5900).mirror(0x00ff).w("8910.0", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6000).mirror(0x07ff).portr("IN0"); + map(0x6002, 0x6006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_gfxbank_w)); + map(0x6800, 0x6800).mirror(0x07ff).portr("IN1"); + map(0x7000, 0x7000).mirror(0x07ff).portr("IN2"); + map(0x7001, 0x7001).mirror(0x07f8).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0x7002, 0x7002).mirror(0x07f8).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0x7004, 0x7004).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0x7006, 0x7006).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0x7007, 0x7007).mirror(0x07f8).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0x8000, 0xafff).rom(); + map(0xb000, 0xbfff).r(this, FUNC(galaxian_state::jumpbug_protection_r)); +} + + +void galaxian_state::frogf_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9000, 0x90ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa802, 0xa802).mirror(0x07f1).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); + map(0xa804, 0xa804).mirror(0x07f1).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xa806, 0xa806).mirror(0x07f1).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); + map(0xa808, 0xa808).mirror(0x07f1).w(this, FUNC(galaxian_state::coin_count_1_w)); + map(0xa80e, 0xa80e).mirror(0x07f1).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0xb800, 0xb800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc000, 0xffff).rw(this, FUNC(galaxian_state::frogf_ppi8255_r), FUNC(galaxian_state::frogf_ppi8255_w)); +} /* mooncrst */ -ADDRESS_MAP_START(galaxian_state::mshuttle_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x98ff) AM_MIRROR(0x0700) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa000, 0xa000) AM_WRITE(irq_enable_w) - AM_RANGE(0xa001, 0xa001) AM_WRITE(galaxian_stars_enable_w) - AM_RANGE(0xa002, 0xa002) AM_WRITE(galaxian_flip_screen_xy_w) - AM_RANGE(0xa004, 0xa004) AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_trigger_w) - AM_RANGE(0xa007, 0xa007) AM_WRITE(mshuttle_ay8910_cs_w) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xa800, 0xa800) AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("IN2") - AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::mshuttle_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::mshuttle_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x08, 0x08) AM_WRITE(mshuttle_ay8910_control_w) - AM_RANGE(0x09, 0x09) AM_WRITE(mshuttle_ay8910_data_w) - AM_RANGE(0x0c, 0x0c) AM_READ(mshuttle_ay8910_data_r) -ADDRESS_MAP_END +void galaxian_state::mshuttle_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0x9800, 0x98ff).mirror(0x0700).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xa000, 0xa000).portr("IN0"); + map(0xa000, 0xa000).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xa001, 0xa001).w(this, FUNC(galaxian_state::galaxian_stars_enable_w)); + map(0xa002, 0xa002).w(this, FUNC(galaxian_state::galaxian_flip_screen_xy_w)); + map(0xa004, 0xa004).w("cclimber_audio", FUNC(cclimber_audio_device::sample_trigger_w)); + map(0xa007, 0xa007).w(this, FUNC(galaxian_state::mshuttle_ay8910_cs_w)); + map(0xa800, 0xa800).portr("IN1"); + map(0xa800, 0xa800).w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w)); + map(0xb000, 0xb000).portr("IN2"); + map(0xb000, 0xb000).w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void galaxian_state::mshuttle_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + +void galaxian_state::mshuttle_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x0f); + map(0x08, 0x08).w(this, FUNC(galaxian_state::mshuttle_ay8910_control_w)); + map(0x09, 0x09).w(this, FUNC(galaxian_state::mshuttle_ay8910_data_w)); + map(0x0c, 0x0c).r(this, FUNC(galaxian_state::mshuttle_ay8910_data_r)); +} WRITE8_MEMBER(galaxian_state::tenspot_unk_6000_w) @@ -2053,17 +2081,18 @@ WRITE8_MEMBER(galaxian_state::tenspot_unk_e000_w) logerror("tenspot_unk_e000_w %02x\n",data); } -ADDRESS_MAP_START(galaxian_state::tenspot_select_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("SELECT2") - AM_RANGE(0x6000, 0x6000) AM_WRITE(tenspot_unk_6000_w) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SELECT") - AM_RANGE(0x8000, 0x8000) AM_WRITE(tenspot_unk_8000_w) - AM_RANGE(0xa000, 0xa03f) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_WRITE(tenspot_unk_e000_w) -ADDRESS_MAP_END +void galaxian_state::tenspot_select_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x4000).portr("SELECT2"); + map(0x6000, 0x6000).w(this, FUNC(galaxian_state::tenspot_unk_6000_w)); + map(0xc000, 0xc000).portr("SELECT"); + map(0x8000, 0x8000).w(this, FUNC(galaxian_state::tenspot_unk_8000_w)); + map(0xa000, 0xa03f).ram(); + map(0xe000, 0xe000).w(this, FUNC(galaxian_state::tenspot_unk_e000_w)); +} READ8_MEMBER(galaxian_state::froggeram_ppi8255_r) @@ -2083,19 +2112,20 @@ WRITE8_MEMBER(galaxian_state::froggeram_ppi8255_w) if (offset & 0x0200) m_ppi8255[1]->write(space, offset & 3, data); } -ADDRESS_MAP_START(galaxian_state::froggeram_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_READWRITE(froggeram_ppi8255_r, froggeram_ppi8255_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xa800, 0xabff) AM_RAM_WRITE(galaxian_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb000, 0xb0ff) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram") - AM_RANGE(0xb801, 0xb801) AM_WRITE(irq_enable_w) - AM_RANGE(0xb802, 0xb802) AM_WRITE(coin_count_0_w) - AM_RANGE(0xb806, 0xb806) AM_WRITE(galaxian_flip_screen_x_w) // always set to 0? - AM_RANGE(0xb807, 0xb807) AM_WRITE(galaxian_flip_screen_y_w) // always set to 0? -ADDRESS_MAP_END +void galaxian_state::froggeram_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x43ff).rw(this, FUNC(galaxian_state::froggeram_ppi8255_r), FUNC(galaxian_state::froggeram_ppi8255_w)); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xa800, 0xabff).ram().w(this, FUNC(galaxian_state::galaxian_videoram_w)).share("videoram"); + map(0xb000, 0xb0ff).ram().w(this, FUNC(galaxian_state::galaxian_objram_w)).share("spriteram"); + map(0xb801, 0xb801).w(this, FUNC(galaxian_state::irq_enable_w)); + map(0xb802, 0xb802).w(this, FUNC(galaxian_state::coin_count_0_w)); + map(0xb806, 0xb806).w(this, FUNC(galaxian_state::galaxian_flip_screen_x_w)); // always set to 0? + map(0xb807, 0xb807).w(this, FUNC(galaxian_state::galaxian_flip_screen_y_w)); // always set to 0? +} /************************************* * @@ -2104,103 +2134,117 @@ ADDRESS_MAP_END *************************************/ /* Konami Frogger with 1 x AY-8910A */ -ADDRESS_MAP_START(galaxian_state::frogger_sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x1000) AM_WRITE(konami_sound_filter_w) -ADDRESS_MAP_END +void galaxian_state::frogger_sound_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).mirror(0x1c00).ram(); + map(0x6000, 0x6fff).mirror(0x1000).w(this, FUNC(galaxian_state::konami_sound_filter_w)); +} -ADDRESS_MAP_START(galaxian_state::frogger_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(frogger_ay8910_r, frogger_ay8910_w) -ADDRESS_MAP_END +void galaxian_state::frogger_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(galaxian_state::frogger_ay8910_r), FUNC(galaxian_state::frogger_ay8910_w)); +} /* Konami generic with 2 x AY-8910A */ -ADDRESS_MAP_START(galaxian_state::konami_sound_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM - AM_RANGE(0x9000, 0x9fff) AM_MIRROR(0x6000) AM_WRITE(konami_sound_filter_w) -ADDRESS_MAP_END +void galaxian_state::konami_sound_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x8000, 0x83ff).mirror(0x6c00).ram(); + map(0x9000, 0x9fff).mirror(0x6000).w(this, FUNC(galaxian_state::konami_sound_filter_w)); +} -ADDRESS_MAP_START(galaxian_state::konami_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(konami_ay8910_r, konami_ay8910_w) -ADDRESS_MAP_END +void galaxian_state::konami_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(galaxian_state::konami_ay8910_r), FUNC(galaxian_state::konami_ay8910_w)); +} /* Checkman with 1 x AY-8910A */ -ADDRESS_MAP_START(galaxian_state::checkman_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM -ADDRESS_MAP_END +void galaxian_state::checkman_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x23ff).ram(); +} -ADDRESS_MAP_START(galaxian_state::checkman_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x03, 0x03) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("8910.0", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("8910.0", ay8910_device, data_r) -ADDRESS_MAP_END +void galaxian_state::checkman_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x03, 0x03).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x05).w("8910.0", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r("8910.0", FUNC(ay8910_device::data_r)); +} /* Checkman alternate with 1 x AY-8910A */ -ADDRESS_MAP_START(galaxian_state::checkmaj_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("8910.0", ay8910_device, address_data_w) - AM_RANGE(0xa002, 0xa002) AM_DEVREAD("8910.0", ay8910_device, data_r) -ADDRESS_MAP_END +void galaxian_state::checkmaj_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0xa000, 0xa001).w("8910.0", FUNC(ay8910_device::address_data_w)); + map(0xa002, 0xa002).r("8910.0", FUNC(ay8910_device::data_r)); +} /* Take Off with 1x AY-8912*/ -ADDRESS_MAP_START(galaxian_state::takeoff_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM -ADDRESS_MAP_END +void galaxian_state::takeoff_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x8000, 0x83ff).mirror(0x6c00).ram(); +} -ADDRESS_MAP_START(galaxian_state::takeoff_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x20) AM_READ(konami_sound_timer_r) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("8912", ay8912_device, address_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8912", ay8912_device, data_r, data_w) -ADDRESS_MAP_END +void galaxian_state::takeoff_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x20, 0x20).r(this, FUNC(galaxian_state::konami_sound_timer_r)); + map(0x40, 0x40).w("8912", FUNC(ay8912_device::address_w)); + map(0x80, 0x80).rw("8912", FUNC(ay8912_device::data_r), FUNC(ay8912_device::data_w)); +} /* King and Balloon with DAC */ -ADDRESS_MAP_START(galaxian_state::kingball_sound_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM -ADDRESS_MAP_END +void galaxian_state::kingball_sound_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fff); + map(0x0000, 0x1fff).rom(); + map(0x0000, 0x03ff).mirror(0x1c00).ram(); +} -ADDRESS_MAP_START(galaxian_state::kingball_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(kingball_dac_w) -ADDRESS_MAP_END +void galaxian_state::kingball_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).mirror(0xff).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(galaxian_state::kingball_dac_w)); +} /* SF-X sample player */ -ADDRESS_MAP_START(galaxian_state::sfx_sample_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x6c00) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::sfx_sample_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(sfx_sample_io_r, sfx_sample_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxian_state::turpins_sound_map) - AM_IMPORT_FROM(konami_sound_map) - AM_RANGE(0x9000, 0x9000) AM_READ(konami_sound_timer_r) // why does it read it here AND from the AY port? -ADDRESS_MAP_END +void galaxian_state::sfx_sample_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x83ff).mirror(0x6c00).ram(); +} + +void galaxian_state::sfx_sample_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(galaxian_state::sfx_sample_io_r), FUNC(galaxian_state::sfx_sample_io_w)); +} + +void galaxian_state::turpins_sound_map(address_map &map) +{ + konami_sound_map(map); + map(0x9000, 0x9000).r(this, FUNC(galaxian_state::konami_sound_timer_r)); // why does it read it here AND from the AY port? +} /************************************* diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp index 00afafb7665..9e6b863c042 100644 --- a/src/mame/drivers/galaxold.cpp +++ b/src/mame/drivers/galaxold.cpp @@ -145,233 +145,241 @@ READ8_MEMBER(galaxold_state::drivfrcg_port0_r) return 0; } -ADDRESS_MAP_START(galaxold_state::galaxold_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5400, 0x57ff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5840, 0x585f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5860, 0x587f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5880, 0x58ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6001) AM_WRITE(galaxold_leds_w) - AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_lockout_w) - AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") - AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0xfffc, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::mooncrst_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa002, 0xa002) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::hustlerb3_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - - AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxold_state::rockclim_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_READWRITE(rockclim_videoram_r, rockclim_videoram_w) AM_SHARE("rockclim_vram")//4800 - 4803 = bg scroll ? - AM_RANGE(0x4800, 0x4803) AM_WRITE(rockclim_scroll_w) - AM_RANGE(0x5000, 0x53ff) AM_RAM //? - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("IN2") - AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("DSW1") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa000, 0xa002) AM_WRITE(galaxold_gfxbank_w)// a002 - sprite bank - AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::ckongg_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc000, 0xc001) AM_WRITE(galaxold_leds_w) - AM_RANGE(0xc002, 0xc002) AM_WRITE(galaxold_coin_lockout_w) - AM_RANGE(0xc003, 0xc003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xc004, 0xc007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("IN1") - AM_RANGE(0xc400, 0xc402) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xc403, 0xc403) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0xc405, 0xc405) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0xc406, 0xc407) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW") - AM_RANGE(0xc801, 0xc801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xc804, 0xc804) AM_WRITENOP // link cut - AM_RANGE(0xc806, 0xc806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xc807, 0xc807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xcc00, 0xcc00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END +void galaxold_state::galaxold_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x5400, 0x57ff).r(this, FUNC(galaxold_state::galaxold_videoram_r)); + map(0x5800, 0x583f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5840, 0x585f).ram().share("spriteram"); + map(0x5860, 0x587f).ram().share("bulletsram"); + map(0x5880, 0x58ff).ram(); + map(0x6000, 0x6000).portr("IN0"); + map(0x6000, 0x6001).w(this, FUNC(galaxold_state::galaxold_leds_w)); + map(0x6002, 0x6002).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w)); + map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800, 0x6800).portr("IN1"); + map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0x7000, 0x7000).portr("IN2"); + map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0xfffc, 0xffff).ram(); +} + + +void galaxold_state::mooncrst_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).r(this, FUNC(galaxold_state::galaxold_videoram_r)); + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa002, 0xa002).w(this, FUNC(galaxold_state::galaxold_gfxbank_w)); + map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0xa800, 0xa800).portr("IN1"); + map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0xb000, 0xb000).portr("DSW0").w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb004, 0xb004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xb800, 0xb800).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + + +void galaxold_state::hustlerb3_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xa000, 0xa000).portr("IN0"); + map(0xa800, 0xa800).portr("IN1"); + map(0xb000, 0xb000).portr("DSW0"); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + + map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0xb800, 0xb800).w("cust", FUNC(galaxian_sound_device::pitch_w)); + +} + +void galaxold_state::rockclim_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).rw(this, FUNC(galaxold_state::rockclim_videoram_r), FUNC(galaxold_state::rockclim_videoram_w)).share("rockclim_vram");//4800 - 4803 = bg scroll ? + map(0x4800, 0x4803).w(this, FUNC(galaxold_state::rockclim_scroll_w)); + map(0x5000, 0x53ff).ram(); //? + map(0x5800, 0x5800).portr("IN2"); + map(0x6000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).portr("DSW1"); + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).r(this, FUNC(galaxold_state::galaxold_videoram_r)); + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa000, 0xa002).w(this, FUNC(galaxold_state::galaxold_gfxbank_w));// a002 - sprite bank + map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0xa800, 0xa800).portr("IN1"); + map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0xb000, 0xb000).portr("DSW0").w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xb800, 0xb800).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + + +void galaxold_state::ckongg_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x9000, 0x93ff).rw(this, FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc000, 0xc001).w(this, FUNC(galaxold_state::galaxold_leds_w)); + map(0xc002, 0xc002).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w)); + map(0xc003, 0xc003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0xc004, 0xc007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0xc400, 0xc400).portr("IN1"); + map(0xc400, 0xc402).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0xc403, 0xc403).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0xc405, 0xc405).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0xc406, 0xc407).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0xc800, 0xc800).portr("DSW"); + map(0xc801, 0xc801).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xc804, 0xc804).nopw(); // link cut + map(0xc806, 0xc806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xc807, 0xc807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xcc00, 0xcc00).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} /* Memory map based on mooncrst_map according to Z80 code - seems to be good but needs further checking */ -ADDRESS_MAP_START(galaxold_state::ckongmc_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa002) AM_WRITE(galaxold_leds_w) /* GUESS */ +void galaxold_state::ckongmc_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x9000, 0x93ff).rw(this, FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa002).w(this, FUNC(galaxold_state::galaxold_leds_w)); /* GUESS */ // AM_RANGE(0xa002, 0xa002) AM_WRITE(galaxold_coin_lockout_w) /* not written */ // AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w) /* not written */ - AM_RANGE(0xa004, 0xa007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) /* GUESS */ - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) /* GUESS */ - AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) /* GUESS */ - AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) /* GUESS */ - AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) /* GUESS */ - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb004, 0xb004) AM_WRITENOP /* AM_WRITE(galaxold_stars_enable_w) */ - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) /* GUESS */ - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) /* GUESS */ - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) /* GUESS */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::scramblb_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6001) AM_WRITENOP /* sound triggers */ - AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") - AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x7002, 0x7002) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x7003, 0x7003) AM_WRITE(scrambold_background_enable_w) - AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r) - AM_RANGE(0x8202, 0x8202) AM_READ(scramblb_protection_2_r) -ADDRESS_MAP_END + map(0xa004, 0xa007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); /* GUESS */ + map(0xa800, 0xa800).portr("IN1"); + map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); /* GUESS */ + map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); /* GUESS */ + map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); /* GUESS */ + map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); /* GUESS */ + map(0xb000, 0xb000).portr("DSW"); + map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb004, 0xb004).nopw(); /* AM_WRITE(galaxold_stars_enable_w) */ + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); /* GUESS */ + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); /* GUESS */ + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); /* GUESS */ +} + + +void galaxold_state::scramblb_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x5000, 0x503f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6000, 0x6000).portr("IN0"); + map(0x6000, 0x6001).nopw(); /* sound triggers */ + map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800, 0x6800).portr("IN1"); + map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0x7000, 0x7000).portr("IN2"); + map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x7002, 0x7002).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x7003, 0x7003).w(this, FUNC(galaxold_state::scrambold_background_enable_w)); + map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0x8102, 0x8102).r(this, FUNC(galaxold_state::scramblb_protection_1_r)); + map(0x8202, 0x8202).r(this, FUNC(galaxold_state::scramblb_protection_2_r)); +} READ8_MEMBER(galaxold_state::scramb2_protection_r){ return 0x25; } READ8_MEMBER(galaxold_state::scramb2_port0_r){ return (ioport("IN0")->read() >> offset) & 0x1; } READ8_MEMBER(galaxold_state::scramb2_port1_r){ return (ioport("IN1")->read() >> offset) & 0x1; } READ8_MEMBER(galaxold_state::scramb2_port2_r){ return (ioport("IN2")->read() >> offset) & 0x1; } -ADDRESS_MAP_START(galaxold_state::scramb2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w) // mirror - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x5800, 0x5fff) AM_READ(scramb2_protection_r) // must return 0x25 - AM_RANGE(0x6000, 0x6007) AM_READ(scramb2_port0_r) // reads from 8 addresses, 1 bit per address - AM_RANGE(0x6800, 0x6807) AM_READ(scramb2_port1_r) // reads from 8 addresses, 1 bit per address - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7007) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7006, 0x7006) AM_WRITENOP - AM_RANGE(0x7007, 0x7007) AM_WRITENOP - AM_RANGE(0x7800, 0x7807) AM_READ(scramb2_port2_r) // reads from 8 addresses, 1 bit per address - AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END +void galaxold_state::scramb2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).w(this, FUNC(galaxold_state::galaxold_videoram_w)); // mirror + map(0x5000, 0x503f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x5800, 0x5fff).r(this, FUNC(galaxold_state::scramb2_protection_r)); // must return 0x25 + map(0x6000, 0x6007).r(this, FUNC(galaxold_state::scramb2_port0_r)); // reads from 8 addresses, 1 bit per address + map(0x6800, 0x6807).r(this, FUNC(galaxold_state::scramb2_port1_r)); // reads from 8 addresses, 1 bit per address + map(0x6801, 0x6801).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x6802, 0x6802).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x6804, 0x6804).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x6806, 0x6806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x6807, 0x6807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7007).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7006, 0x7006).nopw(); + map(0x7007, 0x7007).nopw(); + map(0x7800, 0x7807).r(this, FUNC(galaxold_state::scramb2_port2_r)); // reads from 8 addresses, 1 bit per address + map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} READ8_MEMBER( galaxold_state::scrambler_protection_2_r ) { @@ -380,39 +388,40 @@ READ8_MEMBER( galaxold_state::scrambler_protection_2_r ) } // there are still unmapped reads / writes, it's not really clear what gets hooked up to where on these bootlegs, if they go anywhere at all -ADDRESS_MAP_START(galaxold_state::scrambler_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - - AM_RANGE(0x4800, 0x4bff) AM_RAM // mirror, leftovers? - - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - - AM_RANGE(0x5800, 0x587f) AM_RAM - AM_RANGE(0x5880, 0x58bf) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x58c0, 0x58df) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x58e0, 0x58ff) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6001) AM_WRITENOP /* sound triggers */ - AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") - AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) // should this disable the stars too? - AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") AM_WRITE(galaxold_nmi_enable_w) +void galaxold_state::scrambler_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + + map(0x4800, 0x4bff).ram(); // mirror, leftovers? + + map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + + map(0x5800, 0x587f).ram(); + map(0x5880, 0x58bf).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x58c0, 0x58df).ram().share("spriteram"); + map(0x58e0, 0x58ff).ram().share("bulletsram"); + map(0x6000, 0x6000).portr("IN0"); + map(0x6000, 0x6001).nopw(); /* sound triggers */ + map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800, 0x6800).portr("IN1"); + map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); // should this disable the stars too? + map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0x7000, 0x7000).portr("IN2").w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); // AM_RANGE(0x7001, 0x7001) - AM_RANGE(0x7002, 0x7002) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x7003, 0x7003) AM_WRITE(scrambold_background_enable_w) - AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7800, 0x7800) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) + map(0x7002, 0x7002).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x7003, 0x7003).w(this, FUNC(galaxold_state::scrambold_background_enable_w)); + map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7800, 0x7800).w("cust", FUNC(galaxian_sound_device::pitch_w)); // AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r) - AM_RANGE(0x8202, 0x8202) AM_READ(scrambler_protection_2_r) -ADDRESS_MAP_END + map(0x8202, 0x8202).r(this, FUNC(galaxold_state::scrambler_protection_2_r)); +} WRITE8_MEMBER( galaxold_state::guttang_rombank_w ) { @@ -430,324 +439,341 @@ WRITE8_MEMBER( galaxold_state::guttang_rombank_w ) } -ADDRESS_MAP_START(galaxold_state::guttang_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP // 0x2000-0x27ff is banked (so they have room for the new music player), see init - AM_RANGE(0x4000, 0x47ff) AM_RAM +void galaxold_state::guttang_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); // 0x2000-0x27ff is banked (so they have room for the new music player), see init + map(0x4000, 0x47ff).ram(); - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") + map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); - AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5840, 0x585f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5860, 0x587f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5880, 0x58ff) AM_RAM + map(0x5800, 0x583f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5840, 0x585f).ram().share("spriteram"); + map(0x5860, 0x587f).ram().share("bulletsram"); + map(0x5880, 0x58ff).ram(); - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") AM_WRITE( guttang_rombank_w ) - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") + map(0x6000, 0x6000).portr("IN0").w(this, FUNC(galaxold_state::guttang_rombank_w)); + map(0x6800, 0x6800).portr("IN1"); - AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0x6803, 0x6803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) + map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0x6803, 0x6803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w)); - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") - AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w) + map(0x7000, 0x7000).portr("IN2"); + map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); - AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(galaxold_state::_4in1_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") /* banked game code */ - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5400, 0x57ff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5840, 0x585f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5860, 0x587f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5880, 0x58ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6001) AM_WRITE(galaxold_leds_w) +void galaxold_state::_4in1_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); /* banked game code */ + map(0x4000, 0x47ff).ram(); + map(0x5000, 0x53ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x5400, 0x57ff).r(this, FUNC(galaxold_state::galaxold_videoram_r)); + map(0x5800, 0x583f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5840, 0x585f).ram().share("spriteram"); + map(0x5860, 0x587f).ram().share("bulletsram"); + map(0x5880, 0x58ff).ram(); + map(0x6000, 0x6000).portr("IN0"); + map(0x6000, 0x6001).w(this, FUNC(galaxold_state::galaxold_leds_w)); // AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_lockout_w) - AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") - AM_RANGE(0x6800, 0x6802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) + map(0x6003, 0x6003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x6004, 0x6007).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x6800, 0x6800).portr("IN1"); + map(0x6800, 0x6802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); // AM_RANGE(0x6803, 0x6803) AM_WRITE(galaxian_noise_enable_w) /* not hooked up? */ - AM_RANGE(0x6805, 0x6805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0x6806, 0x6807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0") - AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7800, 0x78ff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7800, 0x78ff) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(_4in1_bank_w) - AM_RANGE(0xc000, 0xdfff) AM_ROM /* fixed menu code */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::bagmanmc_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb002, 0xb002) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::dkongjrm_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x987f) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x98c0, 0x98ff) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0xa000, 0xa0ff) AM_READ_PORT("IN0") - AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w) + map(0x6805, 0x6805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0x6806, 0x6807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0x7000, 0x7000).portr("DSW0"); + map(0x7001, 0x7001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x7004, 0x7004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x7006, 0x7006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x7007, 0x7007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x7800, 0x78ff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7800, 0x78ff).w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0x8000, 0x8000).w(this, FUNC(galaxold_state::_4in1_bank_w)); + map(0xc000, 0xdfff).rom(); /* fixed menu code */ +} + + +void galaxold_state::bagmanmc_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).r(this, FUNC(galaxold_state::galaxold_videoram_r)); + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0xa800, 0xa800).portr("IN1"); + map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0xb000, 0xb000).portr("DSW"); + map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb002, 0xb002).w(this, FUNC(galaxold_state::galaxold_gfxbank_w)); + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + + +void galaxold_state::dkongjrm_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x7fff).rom(); + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9800, 0x983f).w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x987f).writeonly().share("spriteram"); + map(0x98c0, 0x98ff).writeonly().share("spriteram2"); + map(0xa000, 0xa0ff).portr("IN0"); + map(0xa003, 0xa003).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); //AM_RANGE(0xa004, 0xa007) AM_WRITE(galaxian_lfo_freq_w) - AM_RANGE(0xa800, 0xa8ff) AM_READ_PORT("IN1") - AM_RANGE(0xa800, 0xa802) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xa803, 0xa803) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) + map(0xa800, 0xa8ff).portr("IN1"); + map(0xa800, 0xa802).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0xa803, 0xa803).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); //AM_RANGE(0xa805, 0xa805) AM_WRITE(galaxian) - AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0xb000, 0xb0ff) AM_READ_PORT("DSW") - AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) + map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0xb000, 0xb0ff).portr("DSW"); + map(0xb000, 0xb000).w(this, FUNC(galaxold_state::galaxold_gfxbank_w)); + map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); //AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::dkongjrmc_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_RAM_WRITE(galaxold_videoram_w) - AM_RANGE(0x7000, 0x70ff) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x7100, 0x71ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7800, 0x7800) AM_READ_PORT("DSW") - AM_RANGE(0x7801, 0x7801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x7802, 0x7802) AM_WRITE(galaxold_leds_w) - AM_RANGE(0x7804, 0x7804) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0x7806, 0x7806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x7807, 0x7807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7d00, 0x7d02) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0x7d03, 0x7d03) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w) - AM_RANGE(0x7d05, 0x7d05) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0x7d06, 0x7d07) AM_MIRROR(0x0080) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1") - AM_RANGE(0x8103, 0x8103) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x8104, 0x8107) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x8200, 0x8200) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x9000, 0x9fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::tazzmang) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0") /* mirror */ - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x8880, 0x8bff) AM_WRITENOP - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa7ff, 0xa7ff) AM_READ_PORT("IN0") /* mirror */ - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0xa803, 0xa803) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w) - AM_RANGE(0xa806, 0xa807) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::bongo) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x8400, 0x87ff) AM_WRITENOP // not used - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_WRITENOP // not used - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxold_state::bongo_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::ozon1_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4200) AM_RAM - AM_RANGE(0x4300, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w) - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x6801, 0x6801) AM_WRITENOP //continuosly 0 and 1 - AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN0") - AM_RANGE(0x8101, 0x8101) AM_READ_PORT("IN1") - AM_RANGE(0x8102, 0x8102) AM_READ_PORT("IN2") - AM_RANGE(0x8103, 0x8103) AM_WRITENOP //only one 9b at reset -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxold_state::ozon1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::hunchbkg) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x1500, 0x1501) AM_MIRROR(0x6000) AM_WRITE(galaxold_leds_w) /* not connected ... */ - AM_RANGE(0x1502, 0x1502) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_lockout_w) /* not connected ... */ - AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x1504, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1") - AM_RANGE(0x1580, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) - AM_RANGE(0x1600, 0x1600) AM_MIRROR(0x6000) AM_READ_PORT("DSW0") - AM_RANGE(0x1601, 0x1601) AM_MIRROR(0x6000) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x1604, 0x1604) AM_MIRROR(0x6000) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x1606, 0x1606) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x1607, 0x1607) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + + +void galaxold_state::dkongjrmc_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x73ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)); + map(0x7000, 0x70ff).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x7100, 0x71ff).ram().share("spriteram"); + map(0x7400, 0x77ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x7800, 0x7800).portr("DSW"); + map(0x7801, 0x7801).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x7802, 0x7802).w(this, FUNC(galaxold_state::galaxold_leds_w)); + map(0x7804, 0x7804).w(this, FUNC(galaxold_state::galaxold_gfxbank_w)); + map(0x7806, 0x7806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x7807, 0x7807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x7d00, 0x7d02).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0x7d03, 0x7d03).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::noise_enable_w)); + map(0x7d05, 0x7d05).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0x7d06, 0x7d07).mirror(0x0080).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0x8000, 0x8000).portr("IN0"); + map(0x8100, 0x8100).portr("IN1"); + map(0x8103, 0x8103).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x8104, 0x8107).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x8200, 0x8200).w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0x9000, 0x9fff).rom(); +} + + +void galaxold_state::tazzmang(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x7000, 0x7000).portr("DSW0"); /* mirror */ + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x883f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x8840, 0x885f).ram().share("spriteram"); + map(0x8860, 0x887f).ram().share("bulletsram"); + map(0x8880, 0x8bff).nopw(); + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9800, 0x9800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xa000, 0xa000).portr("IN0"); + map(0xa7ff, 0xa7ff).portr("IN0"); /* mirror */ + map(0xa800, 0xa800).portr("IN1").w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0xa803, 0xa803).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0xa805, 0xa805).w("cust", FUNC(galaxian_sound_device::fire_enable_w)); + map(0xa806, 0xa807).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0xb000, 0xb000).portr("DSW0"); + map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb004, 0xb004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); +} + + +void galaxold_state::bongo(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x8400, 0x87ff).nopw(); // not used + map(0x9000, 0x93ff).ram().w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).nopw(); // not used + map(0x9800, 0x983f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0xa000, 0xa000).portr("IN0"); + map(0xa800, 0xa800).portr("IN1"); + map(0xb000, 0xb000).portr("DSW0"); + map(0xb001, 0xb001).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0xb004, 0xb004).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0xb007, 0xb007).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).nopw(); +} + +void galaxold_state::bongo_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r)); +} + + +void galaxold_state::ozon1_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x4200).ram(); + map(0x4300, 0x43ff).ram(); + map(0x4800, 0x4bff).rw(this, FUNC(galaxold_state::galaxold_videoram_r), FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).w(this, FUNC(galaxold_state::galaxold_videoram_w)); + map(0x5000, 0x503f).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x6801, 0x6801).nopw(); //continuosly 0 and 1 + map(0x6802, 0x6802).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x6806, 0x6806).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x6807, 0x6807).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x8100, 0x8100).portr("IN0"); + map(0x8101, 0x8101).portr("IN1"); + map(0x8102, 0x8102).portr("IN2"); + map(0x8103, 0x8103).nopw(); //only one 9b at reset +} + +void galaxold_state::ozon1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w)); +} + + +void galaxold_state::hunchbkg(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1480, 0x14bf).mirror(0x6000).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x14c0, 0x14ff).mirror(0x6000).writeonly().share("spriteram"); + map(0x1500, 0x1500).mirror(0x6000).portr("IN0"); + map(0x1500, 0x1501).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_leds_w)); /* not connected ... */ + map(0x1502, 0x1502).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w)); /* not connected ... */ + map(0x1503, 0x1503).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x1504, 0x1507).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x1580, 0x1580).mirror(0x6000).portr("IN1"); + map(0x1580, 0x1587).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::sound_w)); + map(0x1600, 0x1600).mirror(0x6000).portr("DSW0"); + map(0x1601, 0x1601).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x1604, 0x1604).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x1606, 0x1606).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x1607, 0x1607).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x1680, 0x1680).mirror(0x6000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} /* hunchbkg style */ -ADDRESS_MAP_START(galaxold_state::spcwarp) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x1500, 0x1501) AM_MIRROR(0x6000) AM_WRITE(galaxold_leds_w) - AM_RANGE(0x1502, 0x1502) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_lockout_w) - AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x1504, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1") - AM_RANGE(0x1580, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, sound_w) +void galaxold_state::spcwarp(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1480, 0x14bf).mirror(0x6000).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x14c0, 0x14ff).mirror(0x6000).writeonly().share("spriteram"); + map(0x1500, 0x1500).mirror(0x6000).portr("IN0"); + map(0x1500, 0x1501).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_leds_w)); + map(0x1502, 0x1502).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_lockout_w)); + map(0x1503, 0x1503).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x1504, 0x1507).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x1580, 0x1580).mirror(0x6000).portr("IN1"); + map(0x1580, 0x1587).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::sound_w)); // everything else in the $16xx range is moved to $17xx - AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ_PORT("DSW0") - AM_RANGE(0x1701, 0x1701) AM_MIRROR(0x6000) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x1704, 0x1704) AM_MIRROR(0x6000) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x1706, 0x1706) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x1707, 0x1707) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w) + map(0x1680, 0x1680).mirror(0x6000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0x1700, 0x1700).mirror(0x6000).portr("DSW0"); + map(0x1701, 0x1701).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_nmi_enable_w)); + map(0x1704, 0x1704).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_stars_enable_w)); + map(0x1706, 0x1706).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x1707, 0x1707).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); // the rest - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxold_state::hunchbkg_data) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READNOP // not used -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::drivfrcg) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1") - AM_RANGE(0x1580, 0x1582) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, background_enable_w) - AM_RANGE(0x1583, 0x1583) AM_MIRROR(0x6000) AM_WRITENOP - AM_RANGE(0x1585, 0x1585) AM_MIRROR(0x6000) AM_WRITENOP - AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) - AM_RANGE(0x1600, 0x1600) AM_MIRROR(0x6000) AM_READ_PORT("DSW0") AM_DEVWRITE("cust", galaxian_sound_device, pitch_w) - AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ_PORT("DSW1") AM_WRITENOP - AM_RANGE(0x1701, 0x1701) AM_MIRROR(0x6000) AM_WRITENOP - AM_RANGE(0x1704, 0x1707) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, vol_w) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxold_state::drivfrcg_io) - AM_RANGE(0x00, 0x00) AM_READ(drivfrcg_port0_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxold_state::racknrol) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1400, 0x143f) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x1440, 0x14bf) AM_MIRROR(0x6000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1") - AM_RANGE(0x1600, 0x1600) AM_MIRROR(0x6000) AM_READ_PORT("DSW0") - AM_RANGE(0x1600, 0x1601) AM_MIRROR(0x6000) AM_WRITENOP - AM_RANGE(0x1606, 0x1606) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x1607, 0x1607) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_READNOP + map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} + +void galaxold_state::hunchbkg_data(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).nopr(); // not used +} + + +void galaxold_state::drivfrcg(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1480, 0x14bf).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x14c0, 0x14ff).mirror(0x6000).writeonly().share("spriteram"); + map(0x1500, 0x1500).mirror(0x6000).portr("IN0"); + map(0x1503, 0x1503).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_coin_counter_w)); + map(0x1580, 0x1580).mirror(0x6000).portr("IN1"); + map(0x1580, 0x1582).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::background_enable_w)); + map(0x1583, 0x1583).mirror(0x6000).nopw(); + map(0x1585, 0x1585).mirror(0x6000).nopw(); + map(0x1586, 0x1587).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::lfo_freq_w)); + map(0x1600, 0x1600).mirror(0x6000).portr("DSW0").w("cust", FUNC(galaxian_sound_device::pitch_w)); + map(0x1700, 0x1700).mirror(0x6000).portr("DSW1").nopw(); + map(0x1701, 0x1701).mirror(0x6000).nopw(); + map(0x1704, 0x1707).mirror(0x6000).w("cust", FUNC(galaxian_sound_device::vol_w)); + map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} + +void galaxold_state::drivfrcg_io(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(galaxold_state::drivfrcg_port0_r)); +} + + +void galaxold_state::racknrol(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1400, 0x143f).mirror(0x6000).ram().w(this, FUNC(galaxold_state::galaxold_attributesram_w)).share("attributesram"); + map(0x1440, 0x14bf).mirror(0x6000).ram().share("spriteram"); + map(0x14c0, 0x14ff).mirror(0x6000).ram(); + map(0x1500, 0x1500).mirror(0x6000).portr("IN0"); + map(0x1580, 0x1580).mirror(0x6000).portr("IN1"); + map(0x1600, 0x1600).mirror(0x6000).portr("DSW0"); + map(0x1600, 0x1601).mirror(0x6000).nopw(); + map(0x1606, 0x1606).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_x_w)); + map(0x1607, 0x1607).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_flip_screen_y_w)); + map(0x1680, 0x1680).mirror(0x6000).nopr(); // AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ(trvchlng_question_r) // AM_RANGE(0x1701, 0x1703) AM_MIRROR(0x6000) AM_READ(trvchlng_question_w) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxold_state::racknrol_io) - AM_RANGE(0x1d, 0x1d) AM_DEVWRITE("snsnd", sn76489a_device, write) + map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(galaxold_state::galaxold_videoram_w)).share("videoram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} + +void galaxold_state::racknrol_io(address_map &map) +{ + map(0x1d, 0x1d).w("snsnd", FUNC(sn76489a_device::write)); // AM_RANGE(0x1e, 0x1e) AM_WRITENOP // AM_RANGE(0x1f, 0x1f) AM_WRITENOP - AM_RANGE(0x20, 0x3f) AM_WRITE(racknrol_tiles_bank_w) AM_SHARE("racknrol_tbank") -ADDRESS_MAP_END + map(0x20, 0x3f).w(this, FUNC(galaxold_state::racknrol_tiles_bank_w)).share("racknrol_tbank"); +} READ8_MEMBER(galaxold_state::hexpoola_data_port_r) { @@ -763,14 +789,16 @@ READ8_MEMBER(galaxold_state::hexpoola_data_port_r) return 0; } -ADDRESS_MAP_START(galaxold_state::hexpoola_io) - AM_RANGE(0x00, 0x00) AM_READNOP - AM_RANGE(0x20, 0x3f) AM_WRITE(racknrol_tiles_bank_w) AM_SHARE("racknrol_tbank") -ADDRESS_MAP_END +void galaxold_state::hexpoola_io(address_map &map) +{ + map(0x00, 0x00).nopr(); + map(0x20, 0x3f).w(this, FUNC(galaxold_state::racknrol_tiles_bank_w)).share("racknrol_tbank"); +} -ADDRESS_MAP_START(galaxold_state::hexpoola_data) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(hexpoola_data_port_r) AM_DEVWRITE("snsnd", sn76496_device, write) -ADDRESS_MAP_END +void galaxold_state::hexpoola_data(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(galaxold_state::hexpoola_data_port_r)).w("snsnd", FUNC(sn76496_device::write)); +} READ8_MEMBER(galaxold_state::bullsdrtg_data_port_r) { @@ -793,9 +821,10 @@ READ8_MEMBER(galaxold_state::bullsdrtg_data_port_r) return 0; } -ADDRESS_MAP_START(galaxold_state::bullsdrtg_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(bullsdrtg_data_port_r) AM_DEVWRITE("snsnd", sn76496_device, write) -ADDRESS_MAP_END +void galaxold_state::bullsdrtg_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(galaxold_state::bullsdrtg_data_port_r)).w("snsnd", FUNC(sn76496_device::write)); +} /* Lives Dips are spread across two input ports */ CUSTOM_INPUT_MEMBER(galaxold_state::vpool_lives_r) diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp index 57275eb5c2f..db4b3d58b11 100644 --- a/src/mame/drivers/galaxy.cpp +++ b/src/mame/drivers/galaxy.cpp @@ -38,28 +38,31 @@ Galaksija driver by Krzysztof Strzecha and Miodrag Milanovic #include "speaker.h" -ADDRESS_MAP_START(galaxy_state::galaxyp_io) - ADDRESS_MAP_GLOBAL_MASK(0x01) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay8910", ay8910_device, data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(galaxy_state::galaxy_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x2037) AM_MIRROR(0x07c0) AM_READ(galaxy_keyboard_r ) - AM_RANGE(0x2038, 0x203f) AM_MIRROR(0x07c0) AM_WRITE(galaxy_latch_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galaxy_state::galaxyp_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM // ROM A - AM_RANGE(0x1000, 0x1fff) AM_ROM // ROM B - AM_RANGE(0x2000, 0x2037) AM_MIRROR(0x07c0) AM_READ(galaxy_keyboard_r ) - AM_RANGE(0x2038, 0x203f) AM_MIRROR(0x07c0) AM_WRITE(galaxy_latch_w ) - AM_RANGE(0xe000, 0xefff) AM_ROM // ROM C - AM_RANGE(0xf000, 0xffff) AM_ROM // ROM D -ADDRESS_MAP_END +void galaxy_state::galaxyp_io(address_map &map) +{ + map.global_mask(0x01); + map.unmap_value_high(); + map(0x00, 0x00).w("ay8910", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).w("ay8910", FUNC(ay8910_device::data_w)); +} + + +void galaxy_state::galaxy_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x2037).mirror(0x07c0).r(this, FUNC(galaxy_state::galaxy_keyboard_r)); + map(0x2038, 0x203f).mirror(0x07c0).w(this, FUNC(galaxy_state::galaxy_latch_w)); +} + +void galaxy_state::galaxyp_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); // ROM A + map(0x1000, 0x1fff).rom(); // ROM B + map(0x2000, 0x2037).mirror(0x07c0).r(this, FUNC(galaxy_state::galaxy_keyboard_r)); + map(0x2038, 0x203f).mirror(0x07c0).w(this, FUNC(galaxy_state::galaxy_latch_w)); + map(0xe000, 0xefff).rom(); // ROM C + map(0xf000, 0xffff).rom(); // ROM D +} /* 2008-05 FP: Small note about natural keyboard support. Currently: diff --git a/src/mame/drivers/galeb.cpp b/src/mame/drivers/galeb.cpp index 4439da6cb13..cfd298b49d5 100644 --- a/src/mame/drivers/galeb.cpp +++ b/src/mame/drivers/galeb.cpp @@ -64,20 +64,21 @@ READ8_MEMBER(galeb_state::tape_data_r) } /* Address maps */ -ADDRESS_MAP_START(galeb_state::galeb_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM // RAM - AM_RANGE( 0xbfe0, 0xbfe7 ) AM_READ(keyboard_r ) - AM_RANGE( 0xbfe0, 0xbfe0 ) AM_WRITE(dac_w) - AM_RANGE( 0xbffe, 0xbffe ) AM_READ(tape_status_r) - AM_RANGE( 0xbfff, 0xbfff ) AM_READWRITE(tape_data_r, tape_data_w) - AM_RANGE( 0xb000, 0xb3ff ) AM_RAM AM_SHARE("video_ram") // video ram - AM_RANGE( 0xc000, 0xc7ff ) AM_ROM // BASIC 01 ROM - AM_RANGE( 0xc800, 0xcfff ) AM_ROM // BASIC 02 ROM - AM_RANGE( 0xd000, 0xd7ff ) AM_ROM // BASIC 03 ROM - AM_RANGE( 0xd800, 0xdfff ) AM_ROM // BASIC 04 ROM - AM_RANGE( 0xf000, 0xf7ff ) AM_ROM // Monitor ROM - AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END +void galeb_state::galeb_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); // RAM + map(0xbfe0, 0xbfe7).r(this, FUNC(galeb_state::keyboard_r)); + map(0xbfe0, 0xbfe0).w(this, FUNC(galeb_state::dac_w)); + map(0xbffe, 0xbffe).r(this, FUNC(galeb_state::tape_status_r)); + map(0xbfff, 0xbfff).rw(this, FUNC(galeb_state::tape_data_r), FUNC(galeb_state::tape_data_w)); + map(0xb000, 0xb3ff).ram().share("video_ram"); // video ram + map(0xc000, 0xc7ff).rom(); // BASIC 01 ROM + map(0xc800, 0xcfff).rom(); // BASIC 02 ROM + map(0xd000, 0xd7ff).rom(); // BASIC 03 ROM + map(0xd800, 0xdfff).rom(); // BASIC 04 ROM + map(0xf000, 0xf7ff).rom(); // Monitor ROM + map(0xf800, 0xffff).rom(); // System ROM +} /* Input ports */ static INPUT_PORTS_START( galeb ) diff --git a/src/mame/drivers/galgame.cpp b/src/mame/drivers/galgame.cpp index 699f4e7300a..361fbfbd901 100644 --- a/src/mame/drivers/galgame.cpp +++ b/src/mame/drivers/galgame.cpp @@ -286,15 +286,16 @@ WRITE16_MEMBER(galaxygame_state::clk_w) m_clk = data; } -ADDRESS_MAP_START(galaxygame_state::galaxygame_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0xfec0, 0xfecf) AM_READWRITE(ke_r, ke_w) - AM_RANGE(0xff52, 0xff53) AM_READWRITE(y_r, y_w) // 177522 Y - AM_RANGE(0xff54, 0xff55) AM_READ_PORT("COINAC") // 177524 COINAC - AM_RANGE(0xff5a, 0xff5b) AM_READWRITE(x_r, x_w) // 177532 X - AM_RANGE(0xff5c, 0xff5d) AM_READ_PORT("SR") // 177534 SR - AM_RANGE(0xff66, 0xff67) AM_WRITE(clk_w) // 177546 KW11 line frequency clock -ADDRESS_MAP_END +void galaxygame_state::galaxygame_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0xfec0, 0xfecf).rw(this, FUNC(galaxygame_state::ke_r), FUNC(galaxygame_state::ke_w)); + map(0xff52, 0xff53).rw(this, FUNC(galaxygame_state::y_r), FUNC(galaxygame_state::y_w)); // 177522 Y + map(0xff54, 0xff55).portr("COINAC"); // 177524 COINAC + map(0xff5a, 0xff5b).rw(this, FUNC(galaxygame_state::x_r), FUNC(galaxygame_state::x_w)); // 177532 X + map(0xff5c, 0xff5d).portr("SR"); // 177534 SR + map(0xff66, 0xff67).w(this, FUNC(galaxygame_state::clk_w)); // 177546 KW11 line frequency clock +} IRQ_CALLBACK_MEMBER(galaxygame_state::galaxygame_irq_callback) diff --git a/src/mame/drivers/galgames.cpp b/src/mame/drivers/galgames.cpp index 6445b2bd59f..8e3a1f53725 100644 --- a/src/mame/drivers/galgames.cpp +++ b/src/mame/drivers/galgames.cpp @@ -859,43 +859,46 @@ READ16_MEMBER(galgames_state::fpga_status_r) return 0x3; // Pass the check at PC = 0xfae & a later one } -ADDRESS_MAP_START(galgames_state::galgames_map) - AM_RANGE( 0x000000, 0x3fffff ) AM_DEVREADWRITE("slot", galgames_slot_device, read, write ) - - AM_RANGE( 0x400000, 0x400011 ) AM_DEVWRITE("blitter", cesblit_device, regs_w ) - AM_RANGE( 0x400012, 0x400013 ) AM_DEVWRITE("blitter", cesblit_device, addr_hi_w ) - AM_RANGE( 0x400014, 0x400015 ) AM_DEVWRITE("blitter", cesblit_device, color_w ) - AM_RANGE( 0x400020, 0x400021 ) AM_DEVREAD( "blitter", cesblit_device, status_r ) - - AM_RANGE( 0x600000, 0x600001 ) AM_READ(fpga_status_r ) - AM_RANGE( 0x700000, 0x700001 ) AM_READ(fpga_status_r ) AM_WRITENOP - AM_RANGE( 0x800020, 0x80003f ) AM_NOP // ? - AM_RANGE( 0x900000, 0x900001 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - - AM_RANGE( 0xa00000, 0xa00001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0xb00000, 0xb7ffff ) AM_READWRITE(galgames_okiram_r, galgames_okiram_w ) // (only low bytes tested) 4x N341024SJ-15 - - AM_RANGE( 0xc00000, 0xc00001 ) AM_WRITE(galgames_palette_offset_w ) - AM_RANGE( 0xc00002, 0xc00003 ) AM_WRITE(galgames_palette_data_w ) - - AM_RANGE( 0xd00000, 0xd00001 ) AM_READ_PORT("TRACKBALL_1_X") - AM_RANGE( 0xd00000, 0xd00001 ) AM_WRITENOP // bit 0: FPGA programming serial in (lsb first) - AM_RANGE( 0xd00002, 0xd00003 ) AM_READ_PORT("TRACKBALL_1_Y") - AM_RANGE( 0xd00004, 0xd00005 ) AM_READ_PORT("TRACKBALL_2_X") - AM_RANGE( 0xd00006, 0xd00007 ) AM_READ_PORT("TRACKBALL_2_Y") - AM_RANGE( 0xd00008, 0xd00009 ) AM_READ_PORT("P1") - AM_RANGE( 0xd0000a, 0xd0000b ) AM_READ_PORT("P2") - AM_RANGE( 0xd0000c, 0xd0000d ) AM_READ_PORT("SYSTEM") AM_WRITE(outputs_w ) - - AM_RANGE( 0xd0000e, 0xd0000f ) AM_READNOP AM_DEVWRITE8("slot", galgames_slot_device, cart_sel_w, 0x00ff ) - AM_RANGE( 0xd00010, 0xd00011 ) AM_DEVREADWRITE8("slot", galgames_slot_device, eeprom_r, eeprom_w, 0x00ff ) - AM_RANGE( 0xd00012, 0xd00013 ) AM_DEVREADWRITE8("slot", galgames_slot_device, pic_data_r, pic_data_w, 0x00ff ) - AM_RANGE( 0xd00014, 0xd00015 ) AM_DEVREADWRITE8("slot", galgames_slot_device, pic_status_r, ram_sel_w, 0x00ff ) -ADDRESS_MAP_END +void galgames_state::galgames_map(address_map &map) +{ + map(0x000000, 0x3fffff).rw(m_slot, FUNC(galgames_slot_device::read), FUNC(galgames_slot_device::write)); + + map(0x400000, 0x400011).w(m_blitter, FUNC(cesblit_device::regs_w)); + map(0x400012, 0x400013).w(m_blitter, FUNC(cesblit_device::addr_hi_w)); + map(0x400014, 0x400015).w(m_blitter, FUNC(cesblit_device::color_w)); + map(0x400020, 0x400021).r(m_blitter, FUNC(cesblit_device::status_r)); + + map(0x600000, 0x600001).r(this, FUNC(galgames_state::fpga_status_r)); + map(0x700000, 0x700001).r(this, FUNC(galgames_state::fpga_status_r)).nopw(); + map(0x800020, 0x80003f).noprw(); // ? + map(0x900000, 0x900001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + + map(0xa00001, 0xa00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xb00000, 0xb7ffff).rw(this, FUNC(galgames_state::galgames_okiram_r), FUNC(galgames_state::galgames_okiram_w)); // (only low bytes tested) 4x N341024SJ-15 + + map(0xc00000, 0xc00001).w(this, FUNC(galgames_state::galgames_palette_offset_w)); + map(0xc00002, 0xc00003).w(this, FUNC(galgames_state::galgames_palette_data_w)); + + map(0xd00000, 0xd00001).portr("TRACKBALL_1_X"); + map(0xd00000, 0xd00001).nopw(); // bit 0: FPGA programming serial in (lsb first) + map(0xd00002, 0xd00003).portr("TRACKBALL_1_Y"); + map(0xd00004, 0xd00005).portr("TRACKBALL_2_X"); + map(0xd00006, 0xd00007).portr("TRACKBALL_2_Y"); + map(0xd00008, 0xd00009).portr("P1"); + map(0xd0000a, 0xd0000b).portr("P2"); + map(0xd0000c, 0xd0000d).portr("SYSTEM").w(this, FUNC(galgames_state::outputs_w)); + + map(0xd0000e, 0xd0000f).nopr(); + map(0xd0000f, 0xd0000f).w(m_slot, FUNC(galgames_slot_device::cart_sel_w)); + map(0xd00011, 0xd00011).rw(m_slot, FUNC(galgames_slot_device::eeprom_r), FUNC(galgames_slot_device::eeprom_w)); + map(0xd00013, 0xd00013).rw(m_slot, FUNC(galgames_slot_device::pic_data_r), FUNC(galgames_slot_device::pic_data_w)); + map(0xd00015, 0xd00015).rw(m_slot, FUNC(galgames_slot_device::pic_status_r), FUNC(galgames_slot_device::ram_sel_w)); +} -ADDRESS_MAP_START(galgames_state::blitter_map) - AM_RANGE( 0x000000, 0x1fffff ) AM_DEVREAD(":slot", galgames_slot_device, rom_r) -ADDRESS_MAP_END +void galgames_state::blitter_map(address_map &map) +{ + map(0x000000, 0x1fffff).r(":slot", FUNC(galgames_slot_device::rom_r)); +} /*************************************************************************** diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp index b5781e48fac..27da2d486ce 100644 --- a/src/mame/drivers/galivan.cpp +++ b/src/mame/drivers/galivan.cpp @@ -62,72 +62,78 @@ READ8_MEMBER(galivan_state::IO_port_c0_r) -ADDRESS_MAP_START(galivan_state::galivan_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xd800, 0xdfff) AM_WRITE(galivan_videoram_w) AM_SHARE("videoram") - - AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe100, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galivan_state::ninjemak_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xd800, 0xdfff) AM_WRITE(galivan_videoram_w) AM_SHARE("videoram") - - AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe200, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galivan_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x40, 0x40) AM_WRITE(galivan_gfxbank_w) - AM_RANGE(0x41, 0x42) AM_WRITE(galivan_scrollx_w) - AM_RANGE(0x43, 0x44) AM_WRITE(galivan_scrolly_w) - AM_RANGE(0x45, 0x45) AM_WRITE(galivan_sound_command_w) +void galivan_state::galivan_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + + map(0xc000, 0xdfff).bankr("bank1"); + map(0xd800, 0xdfff).w(this, FUNC(galivan_state::galivan_videoram_w)).share("videoram"); + + map(0xe000, 0xe0ff).ram().share("spriteram"); + map(0xe100, 0xffff).ram(); +} + +void galivan_state::ninjemak_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + + map(0xc000, 0xdfff).bankr("bank1"); + map(0xd800, 0xdfff).w(this, FUNC(galivan_state::galivan_videoram_w)).share("videoram"); + + map(0xe000, 0xe1ff).ram().share("spriteram"); + map(0xe200, 0xffff).ram(); +} + +void galivan_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).portr("P2"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x40, 0x40).w(this, FUNC(galivan_state::galivan_gfxbank_w)); + map(0x41, 0x42).w(this, FUNC(galivan_state::galivan_scrollx_w)); + map(0x43, 0x44).w(this, FUNC(galivan_state::galivan_scrolly_w)); + map(0x45, 0x45).w(this, FUNC(galivan_state::galivan_sound_command_w)); // AM_RANGE(0x46, 0x46) AM_WRITENOP // AM_RANGE(0x47, 0x47) AM_WRITENOP - AM_RANGE(0xc0, 0xc0) AM_READ(IO_port_c0_r) /* dangar needs to return 0x58 */ -ADDRESS_MAP_END + map(0xc0, 0xc0).r(this, FUNC(galivan_state::IO_port_c0_r)); /* dangar needs to return 0x58 */ +} WRITE8_MEMBER(galivan_state::blit_trigger_w) { m_nb1414m4->exec((m_videoram[0] << 8) | (m_videoram[1] & 0xff),m_videoram,m_scrollx,m_scrolly,m_tx_tilemap); } -ADDRESS_MAP_START(galivan_state::ninjemak_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") AM_WRITE(ninjemak_gfxbank_w) - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x82, 0x82) AM_READ_PORT("SYSTEM") - AM_RANGE(0x83, 0x83) AM_READ_PORT("SERVICE") - AM_RANGE(0x84, 0x84) AM_READ_PORT("DSW1") - AM_RANGE(0x85, 0x85) AM_READ_PORT("DSW2") AM_WRITE(galivan_sound_command_w) - AM_RANGE(0x86, 0x86) AM_WRITE(blit_trigger_w) // ?? +void galivan_state::ninjemak_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x80).portr("P1").w(this, FUNC(galivan_state::ninjemak_gfxbank_w)); + map(0x81, 0x81).portr("P2"); + map(0x82, 0x82).portr("SYSTEM"); + map(0x83, 0x83).portr("SERVICE"); + map(0x84, 0x84).portr("DSW1"); + map(0x85, 0x85).portr("DSW2").w(this, FUNC(galivan_state::galivan_sound_command_w)); + map(0x86, 0x86).w(this, FUNC(galivan_state::blit_trigger_w)); // ?? // AM_RANGE(0x87, 0x87) AM_WRITENOP // ?? -ADDRESS_MAP_END - -ADDRESS_MAP_START(galivan_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(galivan_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +} + +void galivan_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); +} + +void galivan_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write)); + map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).r(this, FUNC(galivan_state::soundlatch_clear_r)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*************** diff --git a/src/mame/drivers/galpani2.cpp b/src/mame/drivers/galpani2.cpp index 81e7a951119..f5a2b596810 100644 --- a/src/mame/drivers/galpani2.cpp +++ b/src/mame/drivers/galpani2.cpp @@ -347,54 +347,55 @@ WRITE8_MEMBER(galpani2_state::galpani2_oki2_bank_w) } -ADDRESS_MAP_START(galpani2_state::galpani2_mem1) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("ram") // Work RAM - AM_RANGE(0x110000, 0x11000f) AM_RAM // ? corrupted? stack dumper on POST failure, pc+sr on gp2se - AM_RANGE(0x300000, 0x301fff) AM_RAM // ? - AM_RANGE(0x302000, 0x303fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x304000, 0x30401f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) +void galpani2_state::galpani2_mem1(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("ram"); // Work RAM + map(0x110000, 0x11000f).ram(); // ? corrupted? stack dumper on POST failure, pc+sr on gp2se + map(0x300000, 0x301fff).ram(); // ? + map(0x302000, 0x303fff).ram().share("spriteram"); // Sprites + map(0x304000, 0x30401f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); // AM_RANGE(0x308000, 0x308001) AM_WRITENOP // ? 0 at startup // AM_RANGE(0x30c000, 0x30c001) AM_WRITENOP // ? hblank effect ? - AM_RANGE(0x310000, 0x3101ff) AM_RAM_DEVWRITE("bg8palette", palette_device, write16) AM_SHARE("bg8palette") // ? - AM_RANGE(0x314000, 0x314001) AM_WRITENOP // ? flip backgrounds ? - AM_RANGE(0x318000, 0x318001) AM_READWRITE(galpani2_eeprom_r, galpani2_eeprom_w) // EEPROM - AM_RANGE(0x380000, 0x387fff) AM_RAM // Palette? - AM_RANGE(0x388000, 0x38ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette + map(0x310000, 0x3101ff).ram().w(m_bg8palette, FUNC(palette_device::write16)).share("bg8palette"); // ? + map(0x314000, 0x314001).nopw(); // ? flip backgrounds ? + map(0x318000, 0x318001).rw(this, FUNC(galpani2_state::galpani2_eeprom_r), FUNC(galpani2_state::galpani2_eeprom_w)); // EEPROM + map(0x380000, 0x387fff).ram(); // Palette? + map(0x388000, 0x38ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette // AM_RANGE(0x390000, 0x3901ff) AM_WRITENOP // ? at startup of service mode - AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("bg8.0") // Background 0 - AM_RANGE(0x440000, 0x440001) AM_RAM AM_SHARE("bg8_scrolly.0") // Background 0 Scroll Y - AM_RANGE(0x480000, 0x480001) AM_RAM AM_SHARE("bg8_scrollx.0") // Background 0 Scroll X + map(0x400000, 0x43ffff).ram().share("bg8.0"); // Background 0 + map(0x440000, 0x440001).ram().share("bg8_scrolly.0"); // Background 0 Scroll Y + map(0x480000, 0x480001).ram().share("bg8_scrollx.0"); // Background 0 Scroll X // AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP // ? 0 at startup only - AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("bg8.1") // Background 1 - AM_RANGE(0x540000, 0x540001) AM_RAM AM_SHARE("bg8_scrolly.1") // Background 1 Scroll Y - AM_RANGE(0x580000, 0x580001) AM_RAM AM_SHARE("bg8_scrollx.1") // Background 1 Scroll X + map(0x500000, 0x53ffff).ram().share("bg8.1"); // Background 1 + map(0x540000, 0x540001).ram().share("bg8_scrolly.1"); // Background 1 Scroll Y + map(0x580000, 0x580001).ram().share("bg8_scrollx.1"); // Background 1 Scroll X // AM_RANGE(0x5c0000, 0x5c0001) AM_WRITENOP // ? 0 at startup only - AM_RANGE(0x540572, 0x540573) AM_READNOP // ? galpani2 at F0A4 - AM_RANGE(0x54057a, 0x54057b) AM_READNOP // ? galpani2 at F148 - AM_RANGE(0x54059a, 0x54059b) AM_READNOP // ? galpani2 at F0A4 - AM_RANGE(0x5405a2, 0x5405a3) AM_READNOP // ? galpani2 at F0A4 and F148 - AM_RANGE(0x5405aa, 0x5405ab) AM_READNOP // ? galpani2 at F0A4 and F148 - AM_RANGE(0x5405b2, 0x5405b3) AM_READNOP // ? galpani2 at F0A4 and F148 - AM_RANGE(0x5405ba, 0x5405bb) AM_READNOP // ? galpani2 at F0A4 and F148 - AM_RANGE(0x5405c2, 0x5405c3) AM_READNOP // ? galpani2 at F0A4 and F148 - AM_RANGE(0x5405ca, 0x5405cb) AM_READNOP // ? galpani2 at F148 - - AM_RANGE(0x600000, 0x600001) AM_NOP // Watchdog - AM_RANGE(0x640000, 0x640001) AM_WRITE8(galpani2_mcu_init_w, 0x00ff ) // ? 0 before resetting and at startup, Reset mcu ? - AM_RANGE(0x680000, 0x680001) AM_WRITE8(galpani2_mcu_nmi1_w, 0x00ff) // ? 0 -> 1 -> 0 (lev 5) / 0 -> $10 -> 0 - AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE8(galpani2_coin_lockout_w, 0xff00 ) // Coin + Card Lockout - AM_RANGE(0x780000, 0x780001) AM_READ_PORT("DSW1_P1") - AM_RANGE(0x780002, 0x780003) AM_READ_PORT("DSW2_P2") - AM_RANGE(0x780004, 0x780005) AM_READ_PORT("SPECIAL") - AM_RANGE(0x780006, 0x780007) AM_READ_PORT("SERVICE") - AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff ) // 2 x OKIM6295 - AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff ) // - AM_RANGE(0xc80000, 0xc80001) AM_WRITE8(galpani2_oki1_bank_w, 0x00ff ) // - AM_RANGE(0xcc0000, 0xcc0001) AM_WRITE8(galpani2_oki2_bank_w, 0x00ff ) // -ADDRESS_MAP_END + map(0x540572, 0x540573).nopr(); // ? galpani2 at F0A4 + map(0x54057a, 0x54057b).nopr(); // ? galpani2 at F148 + map(0x54059a, 0x54059b).nopr(); // ? galpani2 at F0A4 + map(0x5405a2, 0x5405a3).nopr(); // ? galpani2 at F0A4 and F148 + map(0x5405aa, 0x5405ab).nopr(); // ? galpani2 at F0A4 and F148 + map(0x5405b2, 0x5405b3).nopr(); // ? galpani2 at F0A4 and F148 + map(0x5405ba, 0x5405bb).nopr(); // ? galpani2 at F0A4 and F148 + map(0x5405c2, 0x5405c3).nopr(); // ? galpani2 at F0A4 and F148 + map(0x5405ca, 0x5405cb).nopr(); // ? galpani2 at F148 + + map(0x600000, 0x600001).noprw(); // Watchdog + map(0x640001, 0x640001).w(this, FUNC(galpani2_state::galpani2_mcu_init_w)); // ? 0 before resetting and at startup, Reset mcu ? + map(0x680001, 0x680001).w(this, FUNC(galpani2_state::galpani2_mcu_nmi1_w)); // ? 0 -> 1 -> 0 (lev 5) / 0 -> $10 -> 0 + map(0x6c0000, 0x6c0000).w(this, FUNC(galpani2_state::galpani2_coin_lockout_w)); // Coin + Card Lockout + map(0x780000, 0x780001).portr("DSW1_P1"); + map(0x780002, 0x780003).portr("DSW2_P2"); + map(0x780004, 0x780005).portr("SPECIAL"); + map(0x780006, 0x780007).portr("SERVICE"); + map(0xc00001, 0xc00001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // 2 x OKIM6295 + map(0xc40001, 0xc40001).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0xc80001, 0xc80001).w(this, FUNC(galpani2_state::galpani2_oki1_bank_w)); // + map(0xcc0001, 0xcc0001).w(this, FUNC(galpani2_state::galpani2_oki2_bank_w)); // +} /*************************************************************************** @@ -415,20 +416,21 @@ WRITE16_MEMBER(galpani2_state::subdatabank_select_w) } -ADDRESS_MAP_START(galpani2_state::galpani2_mem2) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_SHARE("ram2") // Work RAM - AM_RANGE(0x400000, 0x5fffff) AM_RAM AM_SHARE("bg15") // bg15 +void galpani2_state::galpani2_mem2(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x100000, 0x13ffff).ram().share("ram2"); // Work RAM + map(0x400000, 0x5fffff).ram().share("bg15"); // bg15 // AM_RANGE(0x600000, 0x600001) AM_NOP // ? 0 at startup only // AM_RANGE(0x640000, 0x640001) AM_WRITENOP // ? 0 at startup only // AM_RANGE(0x680000, 0x680001) AM_WRITENOP // ? 0 at startup only // AM_RANGE(0x6c0000, 0x6c0001) AM_WRITENOP // ? 0 at startup only - AM_RANGE(0x700000, 0x700001) AM_NOP // Watchdog + map(0x700000, 0x700001).noprw(); // Watchdog // AM_RANGE(0x740000, 0x740001) AM_WRITENOP // ? Reset mcu - AM_RANGE(0x780000, 0x780001) AM_WRITE8(galpani2_mcu_nmi2_w, 0x00ff) // ? 0 -> 1 -> 0 (lev 5) - AM_RANGE(0x7c0000, 0x7c0001) AM_WRITE(subdatabank_select_w) // Rom Bank - AM_RANGE(0x800000, 0xffffff) AM_ROMBANK("subdatabank") -ADDRESS_MAP_END + map(0x780001, 0x780001).w(this, FUNC(galpani2_state::galpani2_mcu_nmi2_w)); // ? 0 -> 1 -> 0 (lev 5) + map(0x7c0000, 0x7c0001).w(this, FUNC(galpani2_state::subdatabank_select_w)); // Rom Bank + map(0x800000, 0xffffff).bankr("subdatabank"); +} /*************************************************************************** diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp index 1d16c977de6..84671f15f90 100644 --- a/src/mame/drivers/galpani3.cpp +++ b/src/mame/drivers/galpani3.cpp @@ -390,42 +390,43 @@ WRITE16_MEMBER(galpani3_state::galpani3_priority_buffer_scrolly_w) } -ADDRESS_MAP_START(galpani3_state::galpani3_map) - AM_RANGE(0x000000, 0x17ffff) AM_ROM +void galpani3_state::galpani3_map(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); - AM_RANGE(0x200000, 0x20ffff) AM_RAM // area [B] - Work RAM - AM_RANGE(0x280000, 0x287fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // area [A] - palette for sprites + map(0x200000, 0x20ffff).ram(); // area [B] - Work RAM + map(0x280000, 0x287fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // area [A] - palette for sprites - AM_RANGE(0x300000, 0x303fff) AM_RAM_WRITE(galpani3_suprnova_sprite32_w) AM_SHARE("spriteram") - AM_RANGE(0x380000, 0x38003f) AM_RAM_WRITE(galpani3_suprnova_sprite32regs_w) AM_SHARE("sprregs") + map(0x300000, 0x303fff).ram().w(this, FUNC(galpani3_state::galpani3_suprnova_sprite32_w)).share("spriteram"); + map(0x380000, 0x38003f).ram().w(this, FUNC(galpani3_state::galpani3_suprnova_sprite32regs_w)).share("sprregs"); - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("mcuram") // area [C] + map(0x400000, 0x40ffff).ram().share("mcuram"); // area [C] - AM_RANGE(0x580000, 0x580001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) - AM_RANGE(0x600000, 0x600001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x680000, 0x680001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x700000, 0x700001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) - AM_RANGE(0x780000, 0x780001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) + map(0x580000, 0x580001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); + map(0x600000, 0x600001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x680000, 0x680001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x700000, 0x700001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); + map(0x780000, 0x780001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); - AM_RANGE(0x800000, 0x9fffff) AM_DEVICE( "grap2_0", kaneko_grap2_device, grap2_map) - AM_RANGE(0xa00000, 0xbfffff) AM_DEVICE( "grap2_1", kaneko_grap2_device, grap2_map) - AM_RANGE(0xc00000, 0xdfffff) AM_DEVICE( "grap2_2", kaneko_grap2_device, grap2_map) + map(0x800000, 0x9fffff).m("grap2_0", FUNC(kaneko_grap2_device::grap2_map)); + map(0xa00000, 0xbfffff).m("grap2_1", FUNC(kaneko_grap2_device::grap2_map)); + map(0xc00000, 0xdfffff).m("grap2_2", FUNC(kaneko_grap2_device::grap2_map)); // ?? priority / alpha buffer? - AM_RANGE(0xe00000, 0xe7ffff) AM_RAM AM_SHARE("priority_buffer") // area [J] - A area ? odd bytes only, initialized 00..ff,00..ff,..., then cleared - AM_RANGE(0xe80000, 0xe80001) AM_WRITE(galpani3_priority_buffer_scrollx_w) // scroll? - AM_RANGE(0xe80002, 0xe80003) AM_WRITE(galpani3_priority_buffer_scrolly_w) // scroll? - - - AM_RANGE(0xf00000, 0xf00001) AM_NOP // ? written once (2nd opcode, $1.b) - AM_RANGE(0xf00010, 0xf00011) AM_READ_PORT("P1") - AM_RANGE(0xf00012, 0xf00013) AM_READ_PORT("P2") - AM_RANGE(0xf00014, 0xf00015) AM_READ_PORT("COIN") - AM_RANGE(0xf00016, 0xf00017) AM_NOP // ? read, but overwritten - AM_RANGE(0xf00020, 0xf00023) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // sound - AM_RANGE(0xf00040, 0xf00041) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xf00050, 0xf00051) AM_NOP // ? written once (3rd opcode, $30.b) -ADDRESS_MAP_END + map(0xe00000, 0xe7ffff).ram().share("priority_buffer"); // area [J] - A area ? odd bytes only, initialized 00..ff,00..ff,..., then cleared + map(0xe80000, 0xe80001).w(this, FUNC(galpani3_state::galpani3_priority_buffer_scrollx_w)); // scroll? + map(0xe80002, 0xe80003).w(this, FUNC(galpani3_state::galpani3_priority_buffer_scrolly_w)); // scroll? + + + map(0xf00000, 0xf00001).noprw(); // ? written once (2nd opcode, $1.b) + map(0xf00010, 0xf00011).portr("P1"); + map(0xf00012, 0xf00013).portr("P2"); + map(0xf00014, 0xf00015).portr("COIN"); + map(0xf00016, 0xf00017).noprw(); // ? read, but overwritten + map(0xf00020, 0xf00023).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // sound + map(0xf00040, 0xf00041).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xf00050, 0xf00051).noprw(); // ? written once (3rd opcode, $30.b) +} MACHINE_CONFIG_START(galpani3_state::galpani3) diff --git a/src/mame/drivers/galpanic.cpp b/src/mame/drivers/galpanic.cpp index 1cea0c488f3..6164810d164 100644 --- a/src/mame/drivers/galpanic.cpp +++ b/src/mame/drivers/galpanic.cpp @@ -133,33 +133,36 @@ WRITE16_MEMBER(galpanic_state::coin_w) -ADDRESS_MAP_START(galpanic_state::galpanic_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram") - AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") /* + work RAM */ - AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* 1024 colors, but only 512 seem to be used */ - AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w) - AM_RANGE(0x702000, 0x704fff) AM_RAM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x900000, 0x900001) AM_WRITE(m6295_bankswitch_w) - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(coin_w) /* coin counters */ - AM_RANGE(0xb00000, 0xb00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(galpanic_state::galpanica_map) - AM_IMPORT_FROM(galpanic_map) - AM_RANGE(0xe00000, 0xe00015) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(galpanic_state::galpanic_oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void galpanic_state::galpanic_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x400001, 0x400001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x500000, 0x51ffff).ram().share("fgvideoram"); + map(0x520000, 0x53ffff).ram().w(this, FUNC(galpanic_state::bgvideoram_w)).share("bgvideoram"); /* + work RAM */ + map(0x600000, 0x6007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* 1024 colors, but only 512 seem to be used */ + map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); + map(0x702000, 0x704fff).ram(); + map(0x800000, 0x800001).portr("DSW1"); + map(0x800002, 0x800003).portr("DSW2"); + map(0x800004, 0x800005).portr("SYSTEM"); + map(0x900000, 0x900001).w(this, FUNC(galpanic_state::m6295_bankswitch_w)); + map(0xa00000, 0xa00001).w(this, FUNC(galpanic_state::coin_w)); /* coin counters */ + map(0xb00000, 0xb00001).nopw(); /* ??? */ + map(0xc00000, 0xc00001).nopw(); /* ??? */ + map(0xd00000, 0xd00001).nopw(); /* ??? */ +} + +void galpanic_state::galpanica_map(address_map &map) +{ + galpanic_map(map); + map(0xe00000, 0xe00015).rw("calc1_mcu", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); +} + +void galpanic_state::galpanic_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( galpanic ) diff --git a/src/mame/drivers/galspnbl.cpp b/src/mame/drivers/galspnbl.cpp index 8979cf6becf..a0f9324eb5b 100644 --- a/src/mame/drivers/galspnbl.cpp +++ b/src/mame/drivers/galspnbl.cpp @@ -57,38 +57,40 @@ WRITE16_MEMBER(galspnbl_state::soundcommand_w) } -ADDRESS_MAP_START(galspnbl_state::main_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x700000, 0x703fff) AM_RAM /* galspnbl work RAM */ - AM_RANGE(0x708000, 0x70ffff) AM_RAM /* galspnbl work RAM, bitmaps are decompressed here */ - AM_RANGE(0x800000, 0x803fff) AM_RAM /* hotpinbl work RAM */ - AM_RANGE(0x808000, 0x80ffff) AM_RAM /* hotpinbl work RAM, bitmaps are decompressed here */ - AM_RANGE(0x880000, 0x880fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8ff400, 0x8fffff) AM_WRITENOP /* ??? */ - AM_RANGE(0x900000, 0x900fff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x901000, 0x903fff) AM_WRITENOP /* ??? */ - AM_RANGE(0x904000, 0x904fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x905000, 0x907fff) AM_WRITENOP /* ??? */ - AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_SHARE("bgvideoram") - AM_RANGE(0xa00000, 0xa00fff) AM_WRITENOP /* more palette ? */ - AM_RANGE(0xa01000, 0xa017ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa01800, 0xa027ff) AM_WRITENOP /* more palette ? */ - AM_RANGE(0xa80000, 0xa80001) AM_READ_PORT("IN0") - AM_RANGE(0xa80010, 0xa80011) AM_READ_PORT("IN1") AM_WRITE(soundcommand_w) - AM_RANGE(0xa80020, 0xa80021) AM_READ_PORT("SYSTEM") AM_WRITENOP /* w - could be watchdog, but causes resets when picture is shown */ - AM_RANGE(0xa80030, 0xa80031) AM_READ_PORT("DSW1") AM_WRITENOP /* w - irq ack? */ - AM_RANGE(0xa80040, 0xa80041) AM_READ_PORT("DSW2") - AM_RANGE(0xa80050, 0xa80051) AM_WRITEONLY AM_SHARE("scroll") /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(galspnbl_state::audio_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xfc00, 0xfc00) AM_NOP /* irq ack ?? */ - AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void galspnbl_state::main_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x700000, 0x703fff).ram(); /* galspnbl work RAM */ + map(0x708000, 0x70ffff).ram(); /* galspnbl work RAM, bitmaps are decompressed here */ + map(0x800000, 0x803fff).ram(); /* hotpinbl work RAM */ + map(0x808000, 0x80ffff).ram(); /* hotpinbl work RAM, bitmaps are decompressed here */ + map(0x880000, 0x880fff).ram().share("spriteram"); + map(0x8ff400, 0x8fffff).nopw(); /* ??? */ + map(0x900000, 0x900fff).ram().share("colorram"); + map(0x901000, 0x903fff).nopw(); /* ??? */ + map(0x904000, 0x904fff).ram().share("videoram"); + map(0x905000, 0x907fff).nopw(); /* ??? */ + map(0x980000, 0x9bffff).ram().share("bgvideoram"); + map(0xa00000, 0xa00fff).nopw(); /* more palette ? */ + map(0xa01000, 0xa017ff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa01800, 0xa027ff).nopw(); /* more palette ? */ + map(0xa80000, 0xa80001).portr("IN0"); + map(0xa80010, 0xa80011).portr("IN1").w(this, FUNC(galspnbl_state::soundcommand_w)); + map(0xa80020, 0xa80021).portr("SYSTEM").nopw(); /* w - could be watchdog, but causes resets when picture is shown */ + map(0xa80030, 0xa80031).portr("DSW1").nopw(); /* w - irq ack? */ + map(0xa80040, 0xa80041).portr("DSW2"); + map(0xa80050, 0xa80051).writeonly().share("scroll"); /* ??? */ +} + +void galspnbl_state::audio_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write)); + map(0xfc00, 0xfc00).noprw(); /* irq ack ?? */ + map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( galspnbl ) diff --git a/src/mame/drivers/gamate.cpp b/src/mame/drivers/gamate.cpp index def01b131a3..0dcca70406b 100644 --- a/src/mame/drivers/gamate.cpp +++ b/src/mame/drivers/gamate.cpp @@ -116,19 +116,20 @@ READ8_MEMBER(gamate_state::read_cart) return m_cartslot->read_cart(space, offset); } -ADDRESS_MAP_START(gamate_state::gamate_mem) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x4000, 0x400f) AM_MIRROR(0x03f0) AM_READWRITE(sound_r,sound_w) - AM_RANGE(0x4400, 0x4400) AM_MIRROR(0x03ff) AM_READ_PORT("JOY") - AM_RANGE(0x4800, 0x4800) AM_MIRROR(0x03ff) AM_READ(gamate_nmi_r) - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0x03f8) AM_DEVICE("video", gamate_video_device, regs_map) - AM_RANGE(0x5800, 0x5800) AM_READ(card_available_set) - AM_RANGE(0x5900, 0x5900) AM_WRITE(card_reset) - AM_RANGE(0x5a00, 0x5a00) AM_READ(card_available_check) - AM_RANGE(0x6000, 0xdfff) AM_READWRITE(read_cart, write_cart) - - AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM AM_SHARE("bios") AM_REGION("maincpu",0) -ADDRESS_MAP_END +void gamate_state::gamate_mem(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram(); + map(0x4000, 0x400f).mirror(0x03f0).rw(this, FUNC(gamate_state::sound_r), FUNC(gamate_state::sound_w)); + map(0x4400, 0x4400).mirror(0x03ff).portr("JOY"); + map(0x4800, 0x4800).mirror(0x03ff).r(this, FUNC(gamate_state::gamate_nmi_r)); + map(0x5000, 0x5007).mirror(0x03f8).m("video", FUNC(gamate_video_device::regs_map)); + map(0x5800, 0x5800).r(this, FUNC(gamate_state::card_available_set)); + map(0x5900, 0x5900).w(this, FUNC(gamate_state::card_reset)); + map(0x5a00, 0x5a00).r(this, FUNC(gamate_state::card_available_check)); + map(0x6000, 0xdfff).rw(this, FUNC(gamate_state::read_cart), FUNC(gamate_state::write_cart)); + + map(0xe000, 0xefff).mirror(0x1000).rom().share("bios").region("maincpu", 0); +} static INPUT_PORTS_START( gamate ) diff --git a/src/mame/drivers/gambl186.cpp b/src/mame/drivers/gambl186.cpp index bcbb19d81cf..1ef84705603 100644 --- a/src/mame/drivers/gambl186.cpp +++ b/src/mame/drivers/gambl186.cpp @@ -360,30 +360,32 @@ WRITE16_MEMBER(gambl186_state::upd_w) // m_upd7759->start_w(1); } -ADDRESS_MAP_START(gambl186_state::gambl186_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x40000, 0x7ffff) AM_ROMBANK("data_bank") - AM_RANGE(0xa0000, 0xbffff) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_r, mem_w, 0xffff) - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("ipl",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gambl186_state::gambl186_io) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03b0_r, port_03b0_w, 0xffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03c0_r, port_03c0_w, 0xffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03d0_r, port_03d0_w, 0xffff) - AM_RANGE(0x0400, 0x0401) AM_WRITE(upd_w) // upd7759 sample index/input - AM_RANGE(0x0500, 0x0501) AM_READ_PORT("IN0") - AM_RANGE(0x0502, 0x0503) AM_READ_PORT("IN1") - AM_RANGE(0x0504, 0x0505) AM_READ_PORT("IN2") // Seems to writes more upd7759 params in MSB... +void gambl186_state::gambl186_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram().share("nvram"); + map(0x40000, 0x7ffff).bankr("data_bank"); + map(0xa0000, 0xbffff).rw("vga", FUNC(cirrus_gd5428_device::mem_r), FUNC(cirrus_gd5428_device::mem_w)); + map(0xc0000, 0xfffff).rom().region("ipl", 0); +} + +void gambl186_state::gambl186_io(address_map &map) +{ + map(0x03b0, 0x03bf).rw("vga", FUNC(cirrus_gd5428_device::port_03b0_r), FUNC(cirrus_gd5428_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(cirrus_gd5428_device::port_03c0_r), FUNC(cirrus_gd5428_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(cirrus_gd5428_device::port_03d0_r), FUNC(cirrus_gd5428_device::port_03d0_w)); + map(0x0400, 0x0401).w(this, FUNC(gambl186_state::upd_w)); // upd7759 sample index/input + map(0x0500, 0x0501).portr("IN0"); + map(0x0502, 0x0503).portr("IN1"); + map(0x0504, 0x0505).portr("IN2"); // Seems to writes more upd7759 params in MSB... //AM_RANGE(0x0500, 0x050f) AM_READ(unk_r) - AM_RANGE(0x0580, 0x0581) AM_READ_PORT("DSW1") - AM_RANGE(0x0582, 0x0583) AM_READ_PORT("JOY") - AM_RANGE(0x0584, 0x0585) AM_READ_PORT("DSW0") AM_WRITENOP // Watchdog: bit 8 + map(0x0580, 0x0581).portr("DSW1"); + map(0x0582, 0x0583).portr("JOY"); + map(0x0584, 0x0585).portr("DSW0").nopw(); // Watchdog: bit 8 // AM_RANGE(0x0600, 0x0603) AM_WRITENOP // lamps - AM_RANGE(0x0680, 0x0683) AM_READWRITE(comms_r, comms_w) - AM_RANGE(0x0700, 0x0701) AM_WRITE(data_bank_w) -ADDRESS_MAP_END + map(0x0680, 0x0683).rw(this, FUNC(gambl186_state::comms_r), FUNC(gambl186_state::comms_w)); + map(0x0700, 0x0701).w(this, FUNC(gambl186_state::data_bank_w)); +} diff --git a/src/mame/drivers/gamecom.cpp b/src/mame/drivers/gamecom.cpp index bfc336a3a64..df803979066 100644 --- a/src/mame/drivers/gamecom.cpp +++ b/src/mame/drivers/gamecom.cpp @@ -34,21 +34,22 @@ Game Status: #include "gamecom.lh" -ADDRESS_MAP_START(gamecom_state::gamecom_mem_map) - AM_RANGE( 0x0000, 0x0013 ) AM_RAM AM_REGION("maincpu", 0x00) - AM_RANGE( 0x0014, 0x0017 ) AM_READWRITE( gamecom_pio_r, gamecom_pio_w ) // buttons - AM_RANGE( 0x0018, 0x001F ) AM_RAM AM_REGION("maincpu", 0x18) - AM_RANGE( 0x0020, 0x007F ) AM_READWRITE( gamecom_internal_r, gamecom_internal_w )/* CPU internal register file */ - AM_RANGE( 0x0080, 0x03FF ) AM_RAM AM_REGION("maincpu", 0x80) /* RAM */ - AM_RANGE( 0x0400, 0x0FFF ) AM_NOP /* Nothing */ - AM_RANGE( 0x1000, 0x1FFF ) AM_ROM /* Internal ROM (initially), or External ROM/Flash. Controlled by MMU0 (never swapped out in game.com) */ - AM_RANGE( 0x2000, 0x3FFF ) AM_ROMBANK("bank1") /* External ROM/Flash. Controlled by MMU1 */ - AM_RANGE( 0x4000, 0x5FFF ) AM_ROMBANK("bank2") /* External ROM/Flash. Controlled by MMU2 */ - AM_RANGE( 0x6000, 0x7FFF ) AM_ROMBANK("bank3") /* External ROM/Flash. Controlled by MMU3 */ - AM_RANGE( 0x8000, 0x9FFF ) AM_ROMBANK("bank4") /* External ROM/Flash. Controlled by MMU4 */ - AM_RANGE( 0xA000, 0xDFFF ) AM_RAM AM_SHARE("videoram") /* VRAM */ - AM_RANGE( 0xE000, 0xFFFF ) AM_RAM AM_SHARE("nvram") /* Extended I/O, Extended RAM */ -ADDRESS_MAP_END +void gamecom_state::gamecom_mem_map(address_map &map) +{ + map(0x0000, 0x0013).ram().region("maincpu", 0x00); + map(0x0014, 0x0017).rw(this, FUNC(gamecom_state::gamecom_pio_r), FUNC(gamecom_state::gamecom_pio_w)); // buttons + map(0x0018, 0x001F).ram().region("maincpu", 0x18); + map(0x0020, 0x007F).rw(this, FUNC(gamecom_state::gamecom_internal_r), FUNC(gamecom_state::gamecom_internal_w));/* CPU internal register file */ + map(0x0080, 0x03FF).ram().region("maincpu", 0x80); /* RAM */ + map(0x0400, 0x0FFF).noprw(); /* Nothing */ + map(0x1000, 0x1FFF).rom(); /* Internal ROM (initially), or External ROM/Flash. Controlled by MMU0 (never swapped out in game.com) */ + map(0x2000, 0x3FFF).bankr("bank1"); /* External ROM/Flash. Controlled by MMU1 */ + map(0x4000, 0x5FFF).bankr("bank2"); /* External ROM/Flash. Controlled by MMU2 */ + map(0x6000, 0x7FFF).bankr("bank3"); /* External ROM/Flash. Controlled by MMU3 */ + map(0x8000, 0x9FFF).bankr("bank4"); /* External ROM/Flash. Controlled by MMU4 */ + map(0xA000, 0xDFFF).ram().share("videoram"); /* VRAM */ + map(0xE000, 0xFFFF).ram().share("nvram"); /* Extended I/O, Extended RAM */ +} static INPUT_PORTS_START( gamecom ) PORT_START("IN0") diff --git a/src/mame/drivers/gamecstl.cpp b/src/mame/drivers/gamecstl.cpp index c81a189e18d..673ee9145d6 100644 --- a/src/mame/drivers/gamecstl.cpp +++ b/src/mame/drivers/gamecstl.cpp @@ -347,29 +347,31 @@ WRITE32_MEMBER(gamecstl_state::bios_ram_w) /*****************************************************************************/ -ADDRESS_MAP_START(gamecstl_state::gamecstl_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000affff) AM_RAM - AM_RANGE(0x000b0000, 0x000b7fff) AM_RAM AM_SHARE("cga_ram") - AM_RANGE(0x000e0000, 0x000effff) AM_RAM - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1") - AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x01ffffff) AM_RAM - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gamecstl_state::gamecstl_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e8, 0x00eb) AM_NOP - AM_RANGE(0x00ec, 0x00ef) AM_NOP - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x0300, 0x03af) AM_NOP - AM_RANGE(0x03b0, 0x03df) AM_NOP - AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) - AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END +void gamecstl_state::gamecstl_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000affff).ram(); + map(0x000b0000, 0x000b7fff).ram().share("cga_ram"); + map(0x000e0000, 0x000effff).ram(); + map(0x000f0000, 0x000fffff).bankr("bank1"); + map(0x000f0000, 0x000fffff).w(this, FUNC(gamecstl_state::bios_ram_w)); + map(0x00100000, 0x01ffffff).ram(); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void gamecstl_state::gamecstl_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e8, 0x00eb).noprw(); + map(0x00ec, 0x00ef).noprw(); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x0300, 0x03af).noprw(); + map(0x03b0, 0x03df).noprw(); + map(0x0278, 0x027b).w(this, FUNC(gamecstl_state::pnp_config_w)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); + map(0x0a78, 0x0a7b).w(this, FUNC(gamecstl_state::pnp_data_w)); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/gamecube.cpp b/src/mame/drivers/gamecube.cpp index 552fa3a2317..a58dc64a414 100644 --- a/src/mame/drivers/gamecube.cpp +++ b/src/mame/drivers/gamecube.cpp @@ -42,11 +42,12 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(gamecube_state::ppc_mem) - AM_RANGE(0x00000000, 0x017fffff) AM_RAM // 24 MB main memory - AM_RANGE(0x08000000, 0x081fffff) AM_RAM // 2 MB embedded framebuffer - AM_RANGE(0xfff00000, 0xffffffff) AM_ROMBANK("boot") -ADDRESS_MAP_END +void gamecube_state::ppc_mem(address_map &map) +{ + map(0x00000000, 0x017fffff).ram(); // 24 MB main memory + map(0x08000000, 0x081fffff).ram(); // 2 MB embedded framebuffer + map(0xfff00000, 0xffffffff).bankr("boot"); +} //************************************************************************** diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp index b205eb639e8..9fe9cebc143 100644 --- a/src/mame/drivers/gameking.cpp +++ b/src/mame/drivers/gameking.cpp @@ -148,20 +148,21 @@ READ8_MEMBER(gameking_state::lcd_r) return data; } -ADDRESS_MAP_START(gameking_state::gameking_mem) - AM_RANGE(0x0000, 0x007f) AM_READWRITE(io_r, io_w) - AM_RANGE(0x0080, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x03ff) AM_RAM // lcd 2nd copy +void gameking_state::gameking_mem(address_map &map) +{ + map(0x0000, 0x007f).rw(this, FUNC(gameking_state::io_r), FUNC(gameking_state::io_w)); + map(0x0080, 0x01ff).ram(); + map(0x0200, 0x03ff).ram(); // lcd 2nd copy - AM_RANGE(0x0600, 0x077f) AM_READWRITE(lcd_r, lcd_w) - AM_RANGE(0x0d00, 0x0fff) AM_RAM // d00, e00, f00 prooved on handheld + map(0x0600, 0x077f).rw(this, FUNC(gameking_state::lcd_r), FUNC(gameking_state::lcd_w)); + map(0x0d00, 0x0fff).ram(); // d00, e00, f00 prooved on handheld // AM_RANGE(0x1000, 0x1fff) AM_RAM // sthero writes to $19xx // AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("bank3000") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank4000") - AM_RANGE(0x8000, 0xffaf) AM_ROMBANK("bank8000") - AM_RANGE(0xffb0, 0xffff) AM_ROMBANK("bankboot") // cpu seems to read from 8000 bank, and for exceptions ignore bank -ADDRESS_MAP_END + map(0x4000, 0x7fff).bankr("bank4000"); + map(0x8000, 0xffaf).bankr("bank8000"); + map(0xffb0, 0xffff).bankr("bankboot"); // cpu seems to read from 8000 bank, and for exceptions ignore bank +} static INPUT_PORTS_START( gameking ) diff --git a/src/mame/drivers/gameplan.cpp b/src/mame/drivers/gameplan.cpp index fde843f09bc..45690003b5f 100644 --- a/src/mame/drivers/gameplan.cpp +++ b/src/mame/drivers/gameplan.cpp @@ -178,13 +178,14 @@ WRITE8_MEMBER(gameplan_state::r6532_soundlatch_w) * *************************************/ -ADDRESS_MAP_START(gameplan_state::gameplan_main_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x2000, 0x200f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* VIA 1 */ - AM_RANGE(0x2800, 0x280f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 2 */ - AM_RANGE(0x3000, 0x300f) AM_MIRROR(0x07f0) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) /* VIA 3 */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void gameplan_state::gameplan_main_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram(); + map(0x2000, 0x200f).mirror(0x07f0).rw(m_via_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 1 */ + map(0x2800, 0x280f).mirror(0x07f0).rw(m_via_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 2 */ + map(0x3000, 0x300f).mirror(0x07f0).rw(m_via_2, FUNC(via6522_device::read), FUNC(via6522_device::write)); /* VIA 3 */ + map(0x8000, 0xffff).rom(); +} @@ -194,25 +195,27 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(gameplan_state::gameplan_audio_map) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM /* 6532 internal RAM */ - AM_RANGE(0x0800, 0x081f) AM_MIRROR(0x17e0) AM_DEVREADWRITE("riot", riot6532_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_ROM -ADDRESS_MAP_END +void gameplan_state::gameplan_audio_map(address_map &map) +{ + map(0x0000, 0x007f).mirror(0x1780).ram(); /* 6532 internal RAM */ + map(0x0800, 0x081f).mirror(0x17e0).rw(m_riot, FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0xa000, 0xa000).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xa001, 0xa001).mirror(0x1ffc).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xa002, 0xa002).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::data_w)); + map(0xe000, 0xe7ff).mirror(0x1800).rom(); +} /* same as Gameplan, but larger ROM */ -ADDRESS_MAP_START(gameplan_state::leprechn_audio_map) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x1780) AM_RAM /* 6532 internal RAM */ - AM_RANGE(0x0800, 0x081f) AM_MIRROR(0x17e0) AM_DEVREADWRITE("riot", riot6532_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ffc) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0xe000, 0xefff) AM_MIRROR(0x1000) AM_ROM -ADDRESS_MAP_END +void gameplan_state::leprechn_audio_map(address_map &map) +{ + map(0x0000, 0x007f).mirror(0x1780).ram(); /* 6532 internal RAM */ + map(0x0800, 0x081f).mirror(0x17e0).rw(m_riot, FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0xa000, 0xa000).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xa001, 0xa001).mirror(0x1ffc).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xa002, 0xa002).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::data_w)); + map(0xe000, 0xefff).mirror(0x1000).rom(); +} diff --git a/src/mame/drivers/gamepock.cpp b/src/mame/drivers/gamepock.cpp index d94cc76167b..adc7e8afd8c 100644 --- a/src/mame/drivers/gamepock.cpp +++ b/src/mame/drivers/gamepock.cpp @@ -14,14 +14,15 @@ #include "speaker.h" -ADDRESS_MAP_START(gamepock_state::gamepock_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x0fff) AM_ROM - AM_RANGE(0x1000,0x3fff) AM_NOP +void gamepock_state::gamepock_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x3fff).noprw(); //AM_RANGE(0x4000,0xbfff) AM_ROM // mapped by the cartslot - AM_RANGE(0xc000,0xc7ff) AM_MIRROR(0x0800) AM_RAM - AM_RANGE(0xff80,0xffff) AM_RAM /* 128 bytes microcontroller RAM */ -ADDRESS_MAP_END + map(0xc000, 0xc7ff).mirror(0x0800).ram(); + map(0xff80, 0xffff).ram(); /* 128 bytes microcontroller RAM */ +} static INPUT_PORTS_START( gamepock ) diff --git a/src/mame/drivers/gammagic.cpp b/src/mame/drivers/gammagic.cpp index 85167b30d57..68e30455f00 100644 --- a/src/mame/drivers/gammagic.cpp +++ b/src/mame/drivers/gammagic.cpp @@ -51,27 +51,29 @@ public: }; // Memory is mostly handled by the chipset -ADDRESS_MAP_START(gammagic_state::gammagic_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("user", 0x20000)/* System BIOS */ - AM_RANGE(0x00100000, 0x07ffffff) AM_RAM - AM_RANGE(0x08000000, 0xfffdffff) AM_NOP - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("user", 0x20000)/* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gammagic_state::gammagic_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e8, 0x00ef) AM_NOP - AM_RANGE(0x00f0, 0x01ef) AM_NOP - AM_RANGE(0x01f8, 0x03af) AM_NOP - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03e0, 0x03ef) AM_NOP - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) - AM_RANGE(0x0400, 0xffff) AM_NOP -ADDRESS_MAP_END +void gammagic_state::gammagic_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000e0000, 0x000fffff).rom().region("user", 0x20000);/* System BIOS */ + map(0x00100000, 0x07ffffff).ram(); + map(0x08000000, 0xfffdffff).noprw(); + map(0xfffe0000, 0xffffffff).rom().region("user", 0x20000);/* System BIOS */ +} + +void gammagic_state::gammagic_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e8, 0x00ef).noprw(); + map(0x00f0, 0x01ef).noprw(); + map(0x01f8, 0x03af).noprw(); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x03e0, 0x03ef).noprw(); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); + map(0x0400, 0xffff).noprw(); +} #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1) diff --git a/src/mame/drivers/gamtor.cpp b/src/mame/drivers/gamtor.cpp index ddcdaef3c0f..c79366e3c7a 100644 --- a/src/mame/drivers/gamtor.cpp +++ b/src/mame/drivers/gamtor.cpp @@ -53,26 +53,27 @@ WRITE32_MEMBER(gaminator_state::gamtor_unk_w) -ADDRESS_MAP_START(gaminator_state::gaminator_map) - AM_RANGE(0x00000000, 0x07ffffff) AM_ROM - AM_RANGE(0x08000000, 0x0bffffff) AM_RAM - AM_RANGE(0x1e040008, 0x1e04000b) AM_WRITE(gamtor_unk_w ) +void gaminator_state::gaminator_map(address_map &map) +{ + map(0x00000000, 0x07ffffff).rom(); + map(0x08000000, 0x0bffffff).ram(); + map(0x1e040008, 0x1e04000b).w(this, FUNC(gaminator_state::gamtor_unk_w)); - AM_RANGE(0x20000000, 0x2003ffff) AM_RAM + map(0x20000000, 0x2003ffff).ram(); /* standard VGA */ //AM_RANGE(0x40000000, 0x40000fff) AM_RAM // regs - AM_RANGE(0x400003b0, 0x400003bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x400003c0, 0x400003cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x400003d0, 0x400003df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) + map(0x400003b0, 0x400003bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x400003c0, 0x400003cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x400003d0, 0x400003df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); - AM_RANGE(0x44000000, 0x4401ffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) // VRAM + map(0x44000000, 0x4401ffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); // VRAM // AM_RANGE(0x44000000, 0x44007fff) AM_RAM AM_SHARE("tmapram1") // puts strings here, looks almost like a tilemap, but where are the tiles? // AM_RANGE(0x440a0000, 0x440a1fff) AM_RAM AM_SHARE("tmapram2") // beetlem (like above, mirror?) - AM_RANGE(0xe0000000, 0xe00001ff) AM_RAM // nvram? - AM_RANGE(0xf0000000, 0xf00003ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR -ADDRESS_MAP_END + map(0xe0000000, 0xe00001ff).ram(); // nvram? + map(0xf0000000, 0xf00003ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR +} static INPUT_PORTS_START( gaminator ) INPUT_PORTS_END diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp index 8f2899596fa..6dbcc5feea2 100644 --- a/src/mame/drivers/gaplus.cpp +++ b/src/mame/drivers/gaplus.cpp @@ -272,35 +272,38 @@ INTERRUPT_GEN_MEMBER(gaplus_state::vblank_sub2_irq) } -ADDRESS_MAP_START(gaplus_state::cpu1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* tilemap RAM (shared with CPU #2) */ - AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #2 (includes sprite RAM) */ - AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with CPU #3 */ - AM_RANGE(0x6800, 0x680f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x6810, 0x681f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x6820, 0x682f) AM_READWRITE(customio_3_r, customio_3_w) AM_SHARE("customio_3") /* custom I/O chip #3 interface */ - AM_RANGE(0x7000, 0x7fff) AM_WRITE(irq_1_ctrl_w) /* main CPU irq control */ - AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8000, 0x8fff) AM_WRITE(sreset_w) /* reset CPU #2 & #3, enable sound */ - AM_RANGE(0x9000, 0x9fff) AM_WRITE(freset_w) /* reset I/O chips */ - AM_RANGE(0xa000, 0xa7ff) AM_WRITE(starfield_control_w) /* starfield control */ - AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaplus_state::cpu2_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* tilemap RAM (shared with CPU #1) */ - AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #1 */ +void gaplus_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(gaplus_state::videoram_w)).share("videoram"); /* tilemap RAM (shared with CPU #2) */ + map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2 (includes sprite RAM) */ + map(0x6000, 0x63ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with CPU #3 */ + map(0x6800, 0x680f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x6810, 0x681f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x6820, 0x682f).rw(this, FUNC(gaplus_state::customio_3_r), FUNC(gaplus_state::customio_3_w)).share("customio_3"); /* custom I/O chip #3 interface */ + map(0x7000, 0x7fff).w(this, FUNC(gaplus_state::irq_1_ctrl_w)); /* main CPU irq control */ + map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0x8fff).w(this, FUNC(gaplus_state::sreset_w)); /* reset CPU #2 & #3, enable sound */ + map(0x9000, 0x9fff).w(this, FUNC(gaplus_state::freset_w)); /* reset I/O chips */ + map(0xa000, 0xa7ff).w(this, FUNC(gaplus_state::starfield_control_w)); /* starfield control */ + map(0xa000, 0xffff).rom(); /* ROM */ +} + +void gaplus_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(gaplus_state::videoram_w)).share("videoram"); /* tilemap RAM (shared with CPU #1) */ + map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #1 */ // AM_RANGE(0x500f, 0x500f) AM_WRITENOP /* ??? written 256 times on startup */ - AM_RANGE(0x6000, 0x6fff) AM_WRITE(irq_2_ctrl_w) /* IRQ 2 control */ - AM_RANGE(0xa000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gaplus_state::cpu3_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU + sound registers */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) /* watchdog? */ - AM_RANGE(0x4000, 0x7fff) AM_WRITE(irq_3_ctrl_w) /* interrupt enable/disable */ - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END + map(0x6000, 0x6fff).w(this, FUNC(gaplus_state::irq_2_ctrl_w)); /* IRQ 2 control */ + map(0xa000, 0xffff).rom(); /* ROM */ +} + +void gaplus_state::cpu3_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU + sound registers */ + map(0x2000, 0x3fff).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); /* watchdog? */ + map(0x4000, 0x7fff).w(this, FUNC(gaplus_state::irq_3_ctrl_w)); /* interrupt enable/disable */ + map(0xe000, 0xffff).rom(); /* ROM */ +} static INPUT_PORTS_START( gaplus ) /* The inputs are not memory mapped, they are handled by three I/O chips. */ diff --git a/src/mame/drivers/gatron.cpp b/src/mame/drivers/gatron.cpp index d3ae5597210..725a66ba642 100644 --- a/src/mame/drivers/gatron.cpp +++ b/src/mame/drivers/gatron.cpp @@ -447,18 +447,20 @@ WRITE8_MEMBER(gatron_state::output_port_1_w) * Memory Map Information * *************************/ -ADDRESS_MAP_START(gatron_state::gat_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(gat_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("snsnd", sn76489_device, write) /* PSG */ - AM_RANGE(0xe000, 0xe000) AM_WRITE(output_port_0_w) /* lamps */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gatron_state::gat_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END +void gatron_state::gat_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x63ff).ram().w(this, FUNC(gatron_state::gat_videoram_w)).share("videoram"); + map(0x8000, 0x87ff).ram().share("nvram"); /* battery backed RAM */ + map(0xa000, 0xa000).w("snsnd", FUNC(sn76489_device::write)); /* PSG */ + map(0xe000, 0xe000).w(this, FUNC(gatron_state::output_port_0_w)); /* lamps */ +} + +void gatron_state::gat_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /************************* diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp index baa131bdb67..970a27bcb42 100644 --- a/src/mame/drivers/gauntlet.cpp +++ b/src/mame/drivers/gauntlet.cpp @@ -272,37 +272,38 @@ WRITE8_MEMBER(gauntlet_state::mixer_w) *************************************/ /* full map verified from schematics */ -ADDRESS_MAP_START(gauntlet_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x037fff) AM_MIRROR(0x280000) AM_ROM - AM_RANGE(0x038000, 0x03ffff) AM_MIRROR(0x280000) AM_ROM /* slapstic maps here */ - AM_RANGE(0x040000, 0x07ffff) AM_MIRROR(0x280000) AM_ROM +void gauntlet_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x037fff).mirror(0x280000).rom(); + map(0x038000, 0x03ffff).mirror(0x280000).rom(); /* slapstic maps here */ + map(0x040000, 0x07ffff).mirror(0x280000).rom(); /* MBUS */ - AM_RANGE(0x800000, 0x801fff) AM_MIRROR(0x2fc000) AM_RAM - AM_RANGE(0x802000, 0x802fff) AM_MIRROR(0x2fc000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x803000, 0x803001) AM_MIRROR(0x2fcef0) AM_READ_PORT("803000") - AM_RANGE(0x803002, 0x803003) AM_MIRROR(0x2fcef0) AM_READ_PORT("803002") - AM_RANGE(0x803004, 0x803005) AM_MIRROR(0x2fcef0) AM_READ_PORT("803004") - AM_RANGE(0x803006, 0x803007) AM_MIRROR(0x2fcef0) AM_READ_PORT("803006") - AM_RANGE(0x803008, 0x803009) AM_MIRROR(0x2fcef0) AM_READ_PORT("803008") - AM_RANGE(0x80300e, 0x80300f) AM_MIRROR(0x2fcef0) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0x00ff) - AM_RANGE(0x803100, 0x803101) AM_MIRROR(0x2fce8e) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x803120, 0x803121) AM_MIRROR(0x2fce8e) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w) - AM_RANGE(0x803140, 0x803141) AM_MIRROR(0x2fce8e) AM_WRITE(video_int_ack_w) - AM_RANGE(0x803150, 0x803151) AM_MIRROR(0x2fce8e) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x803170, 0x803171) AM_MIRROR(0x2fce8e) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0x00ff) + map(0x800000, 0x801fff).mirror(0x2fc000).ram(); + map(0x802000, 0x802fff).mirror(0x2fc000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x803000, 0x803001).mirror(0x2fcef0).portr("803000"); + map(0x803002, 0x803003).mirror(0x2fcef0).portr("803002"); + map(0x803004, 0x803005).mirror(0x2fcef0).portr("803004"); + map(0x803006, 0x803007).mirror(0x2fcef0).portr("803006"); + map(0x803008, 0x803009).mirror(0x2fcef0).portr("803008"); + map(0x80300f, 0x80300f).mirror(0x2fcef0).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)); + map(0x803100, 0x803101).mirror(0x2fce8e).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x803120, 0x803121).mirror(0x2fce8e).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w)); + map(0x803140, 0x803141).mirror(0x2fce8e).w(this, FUNC(gauntlet_state::video_int_ack_w)); + map(0x803150, 0x803151).mirror(0x2fce8e).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x803171, 0x803171).mirror(0x2fce8e).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)); /* VBUS */ - AM_RANGE(0x900000, 0x901fff) AM_MIRROR(0x2c8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x902000, 0x903fff) AM_MIRROR(0x2c8000) AM_RAM AM_SHARE("mob") - AM_RANGE(0x904000, 0x904fff) AM_MIRROR(0x2c8000) AM_RAM - AM_RANGE(0x905000, 0x905f7f) AM_MIRROR(0x2c8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0x905f6e, 0x905f6f) AM_MIRROR(0x2c8000) AM_RAM_WRITE(gauntlet_yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0x905f80, 0x905fff) AM_MIRROR(0x2c8000) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x910000, 0x9107ff) AM_MIRROR(0x2cf800) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x930000, 0x930001) AM_MIRROR(0x2cfffe) AM_WRITE(gauntlet_xscroll_w) AM_SHARE("xscroll") -ADDRESS_MAP_END + map(0x900000, 0x901fff).mirror(0x2c8000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x902000, 0x903fff).mirror(0x2c8000).ram().share("mob"); + map(0x904000, 0x904fff).mirror(0x2c8000).ram(); + map(0x905000, 0x905f7f).mirror(0x2c8000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0x905f6e, 0x905f6f).mirror(0x2c8000).ram().w(this, FUNC(gauntlet_state::gauntlet_yscroll_w)).share("yscroll"); + map(0x905f80, 0x905fff).mirror(0x2c8000).ram().share("mob:slip"); + map(0x910000, 0x9107ff).mirror(0x2cf800).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x930000, 0x930001).mirror(0x2cfffe).w(this, FUNC(gauntlet_state::gauntlet_xscroll_w)).share("xscroll"); +} @@ -313,20 +314,21 @@ ADDRESS_MAP_END *************************************/ /* full map verified from schematics */ -ADDRESS_MAP_START(gauntlet_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x1000, 0x100f) AM_MIRROR(0x27c0) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_response_w) - AM_RANGE(0x1010, 0x101f) AM_MIRROR(0x27c0) AM_DEVREAD("soundcomm", atari_sound_comm_device, sound_command_r) - AM_RANGE(0x1020, 0x102f) AM_MIRROR(0x27c0) AM_READ_PORT("COIN") AM_WRITE(mixer_w) - AM_RANGE(0x1030, 0x1030) AM_MIRROR(0x27cf) AM_READ(switch_6502_r) - AM_RANGE(0x1030, 0x1037) AM_MIRROR(0x27c8) AM_DEVWRITE("soundctl", ls259_device, write_d7) - AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0x1810, 0x1811) AM_MIRROR(0x27ce) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x1820, 0x182f) AM_MIRROR(0x27c0) AM_DEVWRITE("tms", tms5220_device, data_w) - AM_RANGE(0x1830, 0x183f) AM_MIRROR(0x27c0) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_r, sound_irq_ack_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void gauntlet_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).mirror(0x2000).ram(); + map(0x1000, 0x100f).mirror(0x27c0).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w)); + map(0x1010, 0x101f).mirror(0x27c0).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r)); + map(0x1020, 0x102f).mirror(0x27c0).portr("COIN").w(this, FUNC(gauntlet_state::mixer_w)); + map(0x1030, 0x1030).mirror(0x27cf).r(this, FUNC(gauntlet_state::switch_6502_r)); + map(0x1030, 0x1037).mirror(0x27c8).w(m_soundctl, FUNC(ls259_device::write_d7)); + map(0x1800, 0x180f).mirror(0x27c0).rw(m_pokey, FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1810, 0x1811).mirror(0x27ce).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x1820, 0x182f).mirror(0x27c0).w(m_tms5220, FUNC(tms5220_device::data_w)); + map(0x1830, 0x183f).mirror(0x27c0).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); + map(0x4000, 0xffff).rom(); +} diff --git a/src/mame/drivers/gb.cpp b/src/mame/drivers/gb.cpp index 3ea855c177e..be62bc322ec 100644 --- a/src/mame/drivers/gb.cpp +++ b/src/mame/drivers/gb.cpp @@ -403,76 +403,80 @@ WRITE8_MEMBER(megaduck_state::bank2_w) } -ADDRESS_MAP_START(gb_state::gameboy_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(gb_cart_r, gb_bank_w) - AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", dmg_ppu_device, vram_r, vram_w) /* 8k VRAM */ - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(gb_ram_r, gb_ram_w) /* 8k switched RAM bank (cartridge) */ - AM_RANGE(0xc000, 0xdfff) AM_RAM /* 8k low RAM */ - AM_RANGE(0xe000, 0xfdff) AM_READWRITE(gb_echo_r, gb_echo_w) - AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", dmg_ppu_device, oam_r, oam_w) /* OAM RAM */ - AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, gb_io_w) /* I/O */ - AM_RANGE(0xff10, 0xff26) AM_DEVREADWRITE("apu", gameboy_sound_device, sound_r, sound_w) /* sound registers */ - AM_RANGE(0xff27, 0xff2f) AM_NOP /* unused */ - AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* Wave ram */ - AM_RANGE(0xff40, 0xff7f) AM_DEVREAD("ppu", dmg_ppu_device, video_r) AM_WRITE(gb_io2_w) /* Video controller & BIOS flip-flop */ - AM_RANGE(0xff80, 0xfffe) AM_RAM /* High RAM */ - AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* Interrupt enable register */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gb_state::sgb_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(gb_cart_r, gb_bank_w) - AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", sgb_ppu_device, vram_r, vram_w) /* 8k VRAM */ - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(gb_ram_r, gb_ram_w) /* 8k switched RAM bank (cartridge) */ - AM_RANGE(0xc000, 0xdfff) AM_RAM /* 8k low RAM */ - AM_RANGE(0xe000, 0xfdff) AM_READWRITE(gb_echo_r, gb_echo_w) - AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", sgb_ppu_device, oam_r, oam_w) /* OAM RAM */ - AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, sgb_io_w) /* I/O */ - AM_RANGE(0xff10, 0xff26) AM_DEVREADWRITE("apu", gameboy_sound_device, sound_r, sound_w) /* sound registers */ - AM_RANGE(0xff27, 0xff2f) AM_NOP /* unused */ - AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* Wave RAM */ - AM_RANGE(0xff40, 0xff7f) AM_DEVREAD("ppu", sgb_ppu_device, video_r) AM_WRITE(gb_io2_w) /* Video controller & BIOS flip-flop */ - AM_RANGE(0xff80, 0xfffe) AM_RAM /* High RAM */ - AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* Interrupt enable register */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gb_state::gbc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(gbc_cart_r, gb_bank_w) - AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", cgb_ppu_device, vram_r, vram_w) /* 8k banked VRAM */ - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(gb_ram_r, gb_ram_w) /* 8k switched RAM bank (cartridge) */ - AM_RANGE(0xc000, 0xcfff) AM_RAM /* 4k fixed RAM bank */ - AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("cgb_ram") /* 4k switched RAM bank */ - AM_RANGE(0xe000, 0xfdff) AM_READWRITE(gb_echo_r, gb_echo_w) - AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", cgb_ppu_device, oam_r, oam_w) /* OAM RAM */ - AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, gbc_io_w) /* I/O */ - AM_RANGE(0xff10, 0xff26) AM_DEVREADWRITE("apu", gameboy_sound_device, sound_r, sound_w) /* sound controller */ - AM_RANGE(0xff27, 0xff2f) AM_NOP /* unused */ - AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* Wave RAM */ - AM_RANGE(0xff40, 0xff7f) AM_READWRITE(gbc_io2_r, gbc_io2_w) /* Other I/O and video controller */ - AM_RANGE(0xff80, 0xfffe) AM_RAM /* high RAM */ - AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* Interrupt enable register */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(megaduck_state::megaduck_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(cart_r, bank1_w) - AM_RANGE(0x8000, 0x9fff) AM_DEVREADWRITE("ppu", dmg_ppu_device, vram_r, vram_w) /* 8k VRAM */ - AM_RANGE(0xa000, 0xafff) AM_NOP /* unused? */ - AM_RANGE(0xb000, 0xb000) AM_WRITE(bank2_w) - AM_RANGE(0xb001, 0xbfff) AM_NOP /* unused? */ - AM_RANGE(0xc000, 0xfdff) AM_RAM /* 8k/16k? RAM */ - AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("ppu", dmg_ppu_device, oam_r, oam_w) /* OAM RAM */ - AM_RANGE(0xff00, 0xff0f) AM_READWRITE(gb_io_r, gb_io_w) /* I/O */ - AM_RANGE(0xff10, 0xff1f) AM_READWRITE(megaduck_video_r, megaduck_video_w) /* video controller */ - AM_RANGE(0xff20, 0xff2f) AM_READWRITE(megaduck_sound_r1, megaduck_sound_w1) /* sound controller pt1 */ - AM_RANGE(0xff30, 0xff3f) AM_DEVREADWRITE("apu", gameboy_sound_device, wave_r, wave_w) /* wave ram */ - AM_RANGE(0xff40, 0xff46) AM_READWRITE(megaduck_sound_r2, megaduck_sound_w2) /* sound controller pt2 */ - AM_RANGE(0xff47, 0xff7f) AM_NOP /* unused */ - AM_RANGE(0xff80, 0xfffe) AM_RAM /* high RAM */ - AM_RANGE(0xffff, 0xffff) AM_READWRITE(gb_ie_r, gb_ie_w) /* interrupt enable register */ -ADDRESS_MAP_END +void gb_state::gameboy_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rw(this, FUNC(gb_state::gb_cart_r), FUNC(gb_state::gb_bank_w)); + map(0x8000, 0x9fff).rw(m_ppu, FUNC(dmg_ppu_device::vram_r), FUNC(dmg_ppu_device::vram_w)); /* 8k VRAM */ + map(0xa000, 0xbfff).rw(this, FUNC(gb_state::gb_ram_r), FUNC(gb_state::gb_ram_w)); /* 8k switched RAM bank (cartridge) */ + map(0xc000, 0xdfff).ram(); /* 8k low RAM */ + map(0xe000, 0xfdff).rw(this, FUNC(gb_state::gb_echo_r), FUNC(gb_state::gb_echo_w)); + map(0xfe00, 0xfeff).rw(m_ppu, FUNC(dmg_ppu_device::oam_r), FUNC(dmg_ppu_device::oam_w)); /* OAM RAM */ + map(0xff00, 0xff0f).rw(this, FUNC(gb_state::gb_io_r), FUNC(gb_state::gb_io_w)); /* I/O */ + map(0xff10, 0xff26).rw(m_apu, FUNC(gameboy_sound_device::sound_r), FUNC(gameboy_sound_device::sound_w)); /* sound registers */ + map(0xff27, 0xff2f).noprw(); /* unused */ + map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* Wave ram */ + map(0xff40, 0xff7f).r(m_ppu, FUNC(dmg_ppu_device::video_r)).w(this, FUNC(gb_state::gb_io2_w)); /* Video controller & BIOS flip-flop */ + map(0xff80, 0xfffe).ram(); /* High RAM */ + map(0xffff, 0xffff).rw(this, FUNC(gb_state::gb_ie_r), FUNC(gb_state::gb_ie_w)); /* Interrupt enable register */ +} + +void gb_state::sgb_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rw(this, FUNC(gb_state::gb_cart_r), FUNC(gb_state::gb_bank_w)); + map(0x8000, 0x9fff).rw(m_ppu, FUNC(sgb_ppu_device::vram_r), FUNC(sgb_ppu_device::vram_w)); /* 8k VRAM */ + map(0xa000, 0xbfff).rw(this, FUNC(gb_state::gb_ram_r), FUNC(gb_state::gb_ram_w)); /* 8k switched RAM bank (cartridge) */ + map(0xc000, 0xdfff).ram(); /* 8k low RAM */ + map(0xe000, 0xfdff).rw(this, FUNC(gb_state::gb_echo_r), FUNC(gb_state::gb_echo_w)); + map(0xfe00, 0xfeff).rw(m_ppu, FUNC(sgb_ppu_device::oam_r), FUNC(sgb_ppu_device::oam_w)); /* OAM RAM */ + map(0xff00, 0xff0f).rw(this, FUNC(gb_state::gb_io_r), FUNC(gb_state::sgb_io_w)); /* I/O */ + map(0xff10, 0xff26).rw(m_apu, FUNC(gameboy_sound_device::sound_r), FUNC(gameboy_sound_device::sound_w)); /* sound registers */ + map(0xff27, 0xff2f).noprw(); /* unused */ + map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* Wave RAM */ + map(0xff40, 0xff7f).r(m_ppu, FUNC(sgb_ppu_device::video_r)).w(this, FUNC(gb_state::gb_io2_w)); /* Video controller & BIOS flip-flop */ + map(0xff80, 0xfffe).ram(); /* High RAM */ + map(0xffff, 0xffff).rw(this, FUNC(gb_state::gb_ie_r), FUNC(gb_state::gb_ie_w)); /* Interrupt enable register */ +} + +void gb_state::gbc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rw(this, FUNC(gb_state::gbc_cart_r), FUNC(gb_state::gb_bank_w)); + map(0x8000, 0x9fff).rw(m_ppu, FUNC(cgb_ppu_device::vram_r), FUNC(cgb_ppu_device::vram_w)); /* 8k banked VRAM */ + map(0xa000, 0xbfff).rw(this, FUNC(gb_state::gb_ram_r), FUNC(gb_state::gb_ram_w)); /* 8k switched RAM bank (cartridge) */ + map(0xc000, 0xcfff).ram(); /* 4k fixed RAM bank */ + map(0xd000, 0xdfff).bankrw("cgb_ram"); /* 4k switched RAM bank */ + map(0xe000, 0xfdff).rw(this, FUNC(gb_state::gb_echo_r), FUNC(gb_state::gb_echo_w)); + map(0xfe00, 0xfeff).rw(m_ppu, FUNC(cgb_ppu_device::oam_r), FUNC(cgb_ppu_device::oam_w)); /* OAM RAM */ + map(0xff00, 0xff0f).rw(this, FUNC(gb_state::gb_io_r), FUNC(gb_state::gbc_io_w)); /* I/O */ + map(0xff10, 0xff26).rw(m_apu, FUNC(gameboy_sound_device::sound_r), FUNC(gameboy_sound_device::sound_w)); /* sound controller */ + map(0xff27, 0xff2f).noprw(); /* unused */ + map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* Wave RAM */ + map(0xff40, 0xff7f).rw(this, FUNC(gb_state::gbc_io2_r), FUNC(gb_state::gbc_io2_w)); /* Other I/O and video controller */ + map(0xff80, 0xfffe).ram(); /* high RAM */ + map(0xffff, 0xffff).rw(this, FUNC(gb_state::gb_ie_r), FUNC(gb_state::gb_ie_w)); /* Interrupt enable register */ +} + +void megaduck_state::megaduck_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rw(this, FUNC(megaduck_state::cart_r), FUNC(megaduck_state::bank1_w)); + map(0x8000, 0x9fff).rw(m_ppu, FUNC(dmg_ppu_device::vram_r), FUNC(dmg_ppu_device::vram_w)); /* 8k VRAM */ + map(0xa000, 0xafff).noprw(); /* unused? */ + map(0xb000, 0xb000).w(this, FUNC(megaduck_state::bank2_w)); + map(0xb001, 0xbfff).noprw(); /* unused? */ + map(0xc000, 0xfdff).ram(); /* 8k/16k? RAM */ + map(0xfe00, 0xfeff).rw(m_ppu, FUNC(dmg_ppu_device::oam_r), FUNC(dmg_ppu_device::oam_w)); /* OAM RAM */ + map(0xff00, 0xff0f).rw(this, FUNC(megaduck_state::gb_io_r), FUNC(megaduck_state::gb_io_w)); /* I/O */ + map(0xff10, 0xff1f).rw(this, FUNC(megaduck_state::megaduck_video_r), FUNC(megaduck_state::megaduck_video_w)); /* video controller */ + map(0xff20, 0xff2f).rw(this, FUNC(megaduck_state::megaduck_sound_r1), FUNC(megaduck_state::megaduck_sound_w1)); /* sound controller pt1 */ + map(0xff30, 0xff3f).rw(m_apu, FUNC(gameboy_sound_device::wave_r), FUNC(gameboy_sound_device::wave_w)); /* wave ram */ + map(0xff40, 0xff46).rw(this, FUNC(megaduck_state::megaduck_sound_r2), FUNC(megaduck_state::megaduck_sound_w2)); /* sound controller pt2 */ + map(0xff47, 0xff7f).noprw(); /* unused */ + map(0xff80, 0xfffe).ram(); /* high RAM */ + map(0xffff, 0xffff).rw(this, FUNC(megaduck_state::gb_ie_r), FUNC(megaduck_state::gb_ie_w)); /* interrupt enable register */ +} static GFXDECODE_START( gb ) GFXDECODE_END diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index cd4eea53ff6..4f671858b35 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -1237,21 +1237,22 @@ WRITE_LINE_MEMBER(gba_state::dma_vblank_callback) } } -ADDRESS_MAP_START(gba_state::gba_map) - ADDRESS_MAP_UNMAP_HIGH // for "Fruit Mura no Doubutsu Tachi" and "Classic NES Series" - AM_RANGE(0x00000000, 0x00003fff) AM_ROM AM_MIRROR(0x01ffc000) AM_READ(gba_bios_r) - AM_RANGE(0x02000000, 0x0203ffff) AM_RAM AM_MIRROR(0xfc0000) - AM_RANGE(0x03000000, 0x03007fff) AM_RAM AM_MIRROR(0xff8000) - AM_RANGE(0x04000000, 0x0400005f) AM_DEVREADWRITE("lcd", gba_lcd_device, video_r, video_w) - AM_RANGE(0x04000060, 0x040003ff) AM_READWRITE(gba_io_r, gba_io_w) - AM_RANGE(0x04000400, 0x04ffffff) AM_NOP // Not used - AM_RANGE(0x05000000, 0x050003ff) AM_MIRROR(0x00fffc00) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_pram_r, gba_pram_w) // Palette RAM - AM_RANGE(0x06000000, 0x06017fff) AM_MIRROR(0x00fe0000) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM - AM_RANGE(0x06018000, 0x0601ffff) AM_MIRROR(0x00fe0000) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_vram_r, gba_vram_w) // VRAM - AM_RANGE(0x07000000, 0x070003ff) AM_MIRROR(0x00fffc00) AM_DEVREADWRITE("lcd", gba_lcd_device, gba_oam_r, gba_oam_w) // OAM +void gba_state::gba_map(address_map &map) +{ + map.unmap_value_high(); // for "Fruit Mura no Doubutsu Tachi" and "Classic NES Series" + map(0x00000000, 0x00003fff).rom().mirror(0x01ffc000).r(this, FUNC(gba_state::gba_bios_r)); + map(0x02000000, 0x0203ffff).ram().mirror(0xfc0000); + map(0x03000000, 0x03007fff).ram().mirror(0xff8000); + map(0x04000000, 0x0400005f).rw("lcd", FUNC(gba_lcd_device::video_r), FUNC(gba_lcd_device::video_w)); + map(0x04000060, 0x040003ff).rw(this, FUNC(gba_state::gba_io_r), FUNC(gba_state::gba_io_w)); + map(0x04000400, 0x04ffffff).noprw(); // Not used + map(0x05000000, 0x050003ff).mirror(0x00fffc00).rw("lcd", FUNC(gba_lcd_device::gba_pram_r), FUNC(gba_lcd_device::gba_pram_w)); // Palette RAM + map(0x06000000, 0x06017fff).mirror(0x00fe0000).rw("lcd", FUNC(gba_lcd_device::gba_vram_r), FUNC(gba_lcd_device::gba_vram_w)); // VRAM + map(0x06018000, 0x0601ffff).mirror(0x00fe0000).rw("lcd", FUNC(gba_lcd_device::gba_vram_r), FUNC(gba_lcd_device::gba_vram_w)); // VRAM + map(0x07000000, 0x070003ff).mirror(0x00fffc00).rw("lcd", FUNC(gba_lcd_device::gba_oam_r), FUNC(gba_lcd_device::gba_oam_w)); // OAM //AM_RANGE(0x08000000, 0x0cffffff) // cart ROM + mirrors, mapped here at machine_start if a cart is present - AM_RANGE(0x10000000, 0xffffffff) AM_READ(gba_10000000_r) // for "Justice League Chronicles" (game bug) -ADDRESS_MAP_END + map(0x10000000, 0xffffffff).r(this, FUNC(gba_state::gba_10000000_r)); // for "Justice League Chronicles" (game bug) +} static INPUT_PORTS_START( gbadv ) PORT_START("INPUTS") diff --git a/src/mame/drivers/gberet.cpp b/src/mame/drivers/gberet.cpp index e84e83e2635..ec354030674 100644 --- a/src/mame/drivers/gberet.cpp +++ b/src/mame/drivers/gberet.cpp @@ -154,46 +154,48 @@ WRITE8_MEMBER(gberet_state::gberet_sound_w) m_sn->write(space, 0, *m_soundlatch); } -ADDRESS_MAP_START(gberet_state::gberet_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd200, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_SHARE("scrollram") - AM_RANGE(0xe040, 0xe042) AM_WRITENOP // ??? - AM_RANGE(0xe043, 0xe043) AM_WRITE(gberet_sprite_bank_w) - AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(gberet_coin_counter_w) - AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("soundlatch") - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_WRITE(gberet_sound_w) - AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2") - AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1") - AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gberet_state::mrgoemon_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd0ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd200, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(gberet_scroll_w) AM_SHARE("scrollram") - AM_RANGE(0xe040, 0xe042) AM_WRITENOP // ??? - AM_RANGE(0xe043, 0xe043) AM_WRITE(gberet_sprite_bank_w) - AM_RANGE(0xe044, 0xe044) AM_WRITE(gberet_flipscreen_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(mrgoemon_coin_counter_w) - AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("soundlatch") - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW3") AM_WRITE(gberet_sound_w) - AM_RANGE(0xf600, 0xf600) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xf601, 0xf601) AM_READ_PORT("P2") - AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1") - AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf800, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void gberet_state::gberet_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(gberet_state::gberet_colorram_w)).share("colorram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(gberet_state::gberet_videoram_w)).share("videoram"); + map(0xd000, 0xd0ff).ram().share("spriteram2"); + map(0xd100, 0xd1ff).ram().share("spriteram"); + map(0xd200, 0xdfff).ram(); + map(0xe000, 0xe03f).ram().w(this, FUNC(gberet_state::gberet_scroll_w)).share("scrollram"); + map(0xe040, 0xe042).nopw(); // ??? + map(0xe043, 0xe043).w(this, FUNC(gberet_state::gberet_sprite_bank_w)); + map(0xe044, 0xe044).w(this, FUNC(gberet_state::gberet_flipscreen_w)); + map(0xf000, 0xf000).w(this, FUNC(gberet_state::gberet_coin_counter_w)); + map(0xf200, 0xf200).portr("DSW2").writeonly().share("soundlatch"); + map(0xf400, 0xf400).portr("DSW3").w(this, FUNC(gberet_state::gberet_sound_w)); + map(0xf600, 0xf600).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xf601, 0xf601).portr("P2"); + map(0xf602, 0xf602).portr("P1"); + map(0xf603, 0xf603).portr("SYSTEM"); +} + +void gberet_state::mrgoemon_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(gberet_state::gberet_colorram_w)).share("colorram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(gberet_state::gberet_videoram_w)).share("videoram"); + map(0xd000, 0xd0ff).ram().share("spriteram2"); + map(0xd100, 0xd1ff).ram().share("spriteram"); + map(0xd200, 0xdfff).ram(); + map(0xe000, 0xe03f).ram().w(this, FUNC(gberet_state::gberet_scroll_w)).share("scrollram"); + map(0xe040, 0xe042).nopw(); // ??? + map(0xe043, 0xe043).w(this, FUNC(gberet_state::gberet_sprite_bank_w)); + map(0xe044, 0xe044).w(this, FUNC(gberet_state::gberet_flipscreen_w)); + map(0xf000, 0xf000).w(this, FUNC(gberet_state::mrgoemon_coin_counter_w)); + map(0xf200, 0xf200).portr("DSW2").writeonly().share("soundlatch"); + map(0xf400, 0xf400).portr("DSW3").w(this, FUNC(gberet_state::gberet_sound_w)); + map(0xf600, 0xf600).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xf601, 0xf601).portr("P2"); + map(0xf602, 0xf602).portr("P1"); + map(0xf603, 0xf603).portr("SYSTEM"); + map(0xf800, 0xffff).bankr("bank1"); +} WRITE8_MEMBER(gberet_state::gberetb_flipscreen_w) @@ -212,26 +214,27 @@ WRITE8_MEMBER(gberet_state::gberetb_nmi_ack_w) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } -ADDRESS_MAP_START(gberet_state::gberetb_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gberet_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gberet_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe03f) AM_RAM - AM_RANGE(0xe040, 0xe043) AM_WRITENOP // ??? - AM_RANGE(0xe044, 0xe044) AM_WRITE(gberetb_flipscreen_w) // did hw even support flipscreen? - AM_RANGE(0xe800, 0xe8ff) AM_RAM - AM_RANGE(0xe900, 0xe9ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf000) AM_WRITENOP // coin counter not supported - AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW2") - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("snsnd", sn76489a_device, write) - AM_RANGE(0xf600, 0xf600) AM_READ_PORT("P2") - AM_RANGE(0xf601, 0xf601) AM_READ_PORT("DSW1") - AM_RANGE(0xf602, 0xf602) AM_READ_PORT("P1") - AM_RANGE(0xf603, 0xf603) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf800, 0xf800) AM_READWRITE(gberetb_irq_ack_r, gberetb_nmi_ack_w) - AM_RANGE(0xf900, 0xf901) AM_WRITE(gberetb_scroll_w) -ADDRESS_MAP_END +void gberet_state::gberetb_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(gberet_state::gberet_colorram_w)).share("colorram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(gberet_state::gberet_videoram_w)).share("videoram"); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xe03f).ram(); + map(0xe040, 0xe043).nopw(); // ??? + map(0xe044, 0xe044).w(this, FUNC(gberet_state::gberetb_flipscreen_w)); // did hw even support flipscreen? + map(0xe800, 0xe8ff).ram(); + map(0xe900, 0xe9ff).ram().share("spriteram"); + map(0xf000, 0xf000).nopw(); // coin counter not supported + map(0xf200, 0xf200).portr("DSW2"); + map(0xf400, 0xf400).w(m_sn, FUNC(sn76489a_device::write)); + map(0xf600, 0xf600).portr("P2"); + map(0xf601, 0xf601).portr("DSW1"); + map(0xf602, 0xf602).portr("P1"); + map(0xf603, 0xf603).portr("SYSTEM"); + map(0xf800, 0xf800).rw(this, FUNC(gberet_state::gberetb_irq_ack_r), FUNC(gberet_state::gberetb_nmi_ack_w)); + map(0xf900, 0xf901).w(this, FUNC(gberet_state::gberetb_scroll_w)); +} /************************************* diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp index c217e57d068..271ee28f420 100644 --- a/src/mame/drivers/gcpinbal.cpp +++ b/src/mame/drivers/gcpinbal.cpp @@ -174,24 +174,25 @@ WRITE8_MEMBER(gcpinbal_state::es8712_reset_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(gcpinbal_state::gcpinbal_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(gcpinbal_tilemaps_word_r, gcpinbal_tilemaps_word_w) AM_SHARE("tilemapram") - AM_RANGE(0xc80000, 0xc81fff) AM_DEVREADWRITE8("spritegen", excellent_spr_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd80010, 0xd8002f) AM_RAM_WRITE(d80010_w) AM_SHARE("d80010") - AM_RANGE(0xd80040, 0xd8005b) AM_WRITE8(d80040_w, 0x00ff) - AM_RANGE(0xd80060, 0xd80077) AM_RAM_WRITE(d80060_w) AM_SHARE("d80060") - AM_RANGE(0xd80080, 0xd80081) AM_READ_PORT("DSW") - AM_RANGE(0xd80084, 0xd80085) AM_READ_PORT("IN0") - AM_RANGE(0xd80086, 0xd80087) AM_READ_PORT("IN1") - AM_RANGE(0xd80088, 0xd80089) AM_WRITE8(bank_w, 0xff00) - AM_RANGE(0xd8008a, 0xd8008b) AM_WRITE8(eeprom_w, 0xff00) - AM_RANGE(0xd8008e, 0xd8008f) AM_WRITE8(es8712_reset_w, 0xff00) - AM_RANGE(0xd800a0, 0xd800a1) AM_MIRROR(0x2) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0xd800c0, 0xd800cd) AM_DEVWRITE8("essnd", es8712_device, write, 0xff00) - AM_RANGE(0xff0000, 0xffffff) AM_RAM /* RAM */ -ADDRESS_MAP_END +void gcpinbal_state::gcpinbal_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0xc00000, 0xc03fff).rw(this, FUNC(gcpinbal_state::gcpinbal_tilemaps_word_r), FUNC(gcpinbal_state::gcpinbal_tilemaps_word_w)).share("tilemapram"); + map(0xc80000, 0xc81fff).rw(m_sprgen, FUNC(excellent_spr_device::read), FUNC(excellent_spr_device::write)).umask16(0x00ff); + map(0xd00000, 0xd00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd80010, 0xd8002f).ram().w(this, FUNC(gcpinbal_state::d80010_w)).share("d80010"); + map(0xd80040, 0xd8005b).w(this, FUNC(gcpinbal_state::d80040_w)).umask16(0x00ff); + map(0xd80060, 0xd80077).ram().w(this, FUNC(gcpinbal_state::d80060_w)).share("d80060"); + map(0xd80080, 0xd80081).portr("DSW"); + map(0xd80084, 0xd80085).portr("IN0"); + map(0xd80086, 0xd80087).portr("IN1"); + map(0xd80088, 0xd80088).w(this, FUNC(gcpinbal_state::bank_w)); + map(0xd8008a, 0xd8008a).w(this, FUNC(gcpinbal_state::eeprom_w)); + map(0xd8008e, 0xd8008e).w(this, FUNC(gcpinbal_state::es8712_reset_w)); + map(0xd800a0, 0xd800a0).mirror(0x2).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xd800c0, 0xd800cd).w(m_essnd, FUNC(es8712_device::write)).umask16(0xff00); + map(0xff0000, 0xffffff).ram(); /* RAM */ +} diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp index c494ed3260d..46414834cf9 100644 --- a/src/mame/drivers/gei.cpp +++ b/src/mame/drivers/gei.cpp @@ -344,157 +344,166 @@ WRITE8_MEMBER(gei_state::signature_w) } } -ADDRESS_MAP_START(gei_state::getrivia_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x600f, 0x600f) AM_WRITE(banksel_w<8>) - AM_RANGE(0x6017, 0x6017) AM_WRITE(banksel_w<6>) - AM_RANGE(0x601b, 0x601b) AM_WRITE(banksel_w<4>) - AM_RANGE(0x601d, 0x601d) AM_WRITE(banksel_w<2>) - AM_RANGE(0x601e, 0x601e) AM_WRITE(banksel_w<0>) - AM_RANGE(0x608f, 0x608f) AM_WRITE(banksel_w<9>) - AM_RANGE(0x6097, 0x6097) AM_WRITE(banksel_w<7>) - AM_RANGE(0x609b, 0x609b) AM_WRITE(banksel_w<5>) - AM_RANGE(0x609d, 0x609d) AM_WRITE(banksel_w<3>) - AM_RANGE(0x609e, 0x609e) AM_WRITE(banksel_w<1>) - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0x8000, 0x9fff) AM_ROM /* space for diagnostic ROM? */ - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::gselect_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") - AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_w<0>) - AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_w<1>) - AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_w<2>) - AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_w<3>) - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) -ADDRESS_MAP_END +void gei_state::getrivia_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("rombank"); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x600f, 0x600f).w(this, FUNC(gei_state::banksel_w<8>)); + map(0x6017, 0x6017).w(this, FUNC(gei_state::banksel_w<6>)); + map(0x601b, 0x601b).w(this, FUNC(gei_state::banksel_w<4>)); + map(0x601d, 0x601d).w(this, FUNC(gei_state::banksel_w<2>)); + map(0x601e, 0x601e).w(this, FUNC(gei_state::banksel_w<0>)); + map(0x608f, 0x608f).w(this, FUNC(gei_state::banksel_w<9>)); + map(0x6097, 0x6097).w(this, FUNC(gei_state::banksel_w<7>)); + map(0x609b, 0x609b).w(this, FUNC(gei_state::banksel_w<5>)); + map(0x609d, 0x609d).w(this, FUNC(gei_state::banksel_w<3>)); + map(0x609e, 0x609e).w(this, FUNC(gei_state::banksel_w<1>)); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0x8000, 0x9fff).rom(); /* space for diagnostic ROM? */ + map(0xa000, 0xbfff).rom(); + map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w)); +} + +void gei_state::gselect_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("rombank"); + map(0x4000, 0x40ff).ram().share("nvram"); + map(0x4400, 0x4400).w(this, FUNC(gei_state::banksel_w<0>)); + map(0x4401, 0x4401).w(this, FUNC(gei_state::banksel_w<1>)); + map(0x4402, 0x4402).w(this, FUNC(gei_state::banksel_w<2>)); + map(0x4403, 0x4403).w(this, FUNC(gei_state::banksel_w<3>)); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w)); +} // TODO: where are mapped the lower 0x2000 bytes of the banks? -ADDRESS_MAP_START(gei_state::amuse_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x606f, 0x606f) AM_WRITE(banksel_w<8>) - AM_RANGE(0x6077, 0x6077) AM_WRITE(banksel_w<6>) - AM_RANGE(0x607b, 0x607b) AM_WRITE(banksel_w<4>) - AM_RANGE(0x607d, 0x607d) AM_WRITE(banksel_w<2>) - AM_RANGE(0x607e, 0x607e) AM_WRITE(banksel_w<0>) - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::gepoker_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x60ef, 0x60ef) AM_WRITE(banksel_w<4>) - AM_RANGE(0x60f7, 0x60f7) AM_WRITE(banksel_w<3>) - AM_RANGE(0x60fb, 0x60fb) AM_WRITE(banksel_w<2>) - AM_RANGE(0x60fd, 0x60fd) AM_WRITE(banksel_w<1>) - AM_RANGE(0x60fe, 0x60fe) AM_WRITE(banksel_w<0>) - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */ - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::amuse1_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_w<0>) - AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_w<2>) - AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_w<4>) - AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_w<6>) - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x5800, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */ - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::findout_map) - AM_RANGE(0x0000, 0xffff) AM_READ(catchall) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) +void gei_state::amuse_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("rombank"); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x606f, 0x606f).w(this, FUNC(gei_state::banksel_w<8>)); + map(0x6077, 0x6077).w(this, FUNC(gei_state::banksel_w<6>)); + map(0x607b, 0x607b).w(this, FUNC(gei_state::banksel_w<4>)); + map(0x607d, 0x607d).w(this, FUNC(gei_state::banksel_w<2>)); + map(0x607e, 0x607e).w(this, FUNC(gei_state::banksel_w<0>)); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w)); +} + +void gei_state::gepoker_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("rombank"); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x60ef, 0x60ef).w(this, FUNC(gei_state::banksel_w<4>)); + map(0x60f7, 0x60f7).w(this, FUNC(gei_state::banksel_w<3>)); + map(0x60fb, 0x60fb).w(this, FUNC(gei_state::banksel_w<2>)); + map(0x60fd, 0x60fd).w(this, FUNC(gei_state::banksel_w<1>)); + map(0x60fe, 0x60fe).w(this, FUNC(gei_state::banksel_w<0>)); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0x8000, 0xbfff).rom(); /* space for diagnostic ROM? */ + map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w)); + map(0xe000, 0xffff).rom(); +} + +void gei_state::amuse1_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("rombank"); + map(0x4000, 0x43ff).ram().share("nvram"); + map(0x4400, 0x4400).w(this, FUNC(gei_state::banksel_w<0>)); + map(0x4401, 0x4401).w(this, FUNC(gei_state::banksel_w<2>)); + map(0x4402, 0x4402).w(this, FUNC(gei_state::banksel_w<4>)); + map(0x4403, 0x4403).w(this, FUNC(gei_state::banksel_w<6>)); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5800, 0x5fff).rom(); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0x8000, 0xbfff).rom(); /* space for diagnostic ROM? */ + map(0xc000, 0xffff).ram().w(this, FUNC(gei_state::gei_bitmap_w)); + map(0xe000, 0xffff).rom(); +} + +void gei_state::findout_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(gei_state::catchall)); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* banked ROMs are enabled by low 6 bits of the address */ - AM_RANGE(0x601f, 0x601f) AM_WRITE(banksel_w<0>) - AM_RANGE(0x602f, 0x602f) AM_WRITE(banksel_w<5>) - AM_RANGE(0x6037, 0x6037) AM_WRITE(banksel_w<4>) - AM_RANGE(0x603b, 0x603b) AM_WRITE(banksel_w<3>) - AM_RANGE(0x603d, 0x603d) AM_WRITE(banksel_w<2>) - AM_RANGE(0x603e, 0x603e) AM_WRITE(banksel_w<1>) - AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w) - AM_RANGE(0x6400, 0x6400) AM_READ(signature_r) - AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/ - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::quizvid_map) - AM_RANGE(0x0000, 0xffff) AM_READ(catchall) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) + map(0x601f, 0x601f).w(this, FUNC(gei_state::banksel_w<0>)); + map(0x602f, 0x602f).w(this, FUNC(gei_state::banksel_w<5>)); + map(0x6037, 0x6037).w(this, FUNC(gei_state::banksel_w<4>)); + map(0x603b, 0x603b).w(this, FUNC(gei_state::banksel_w<3>)); + map(0x603d, 0x603d).w(this, FUNC(gei_state::banksel_w<2>)); + map(0x603e, 0x603e).w(this, FUNC(gei_state::banksel_w<1>)); + map(0x6200, 0x6200).w(this, FUNC(gei_state::signature_w)); + map(0x6400, 0x6400).r(this, FUNC(gei_state::signature_r)); + map(0x7800, 0x7fff).rom(); /*space for diagnostic ROM?*/ + map(0x8000, 0xffff).bankr("rombank"); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w)); +} + +void gei_state::quizvid_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(gei_state::catchall)); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* banked ROMs are enabled by low 6 bits of the address */ - AM_RANGE(0x602f, 0x602f) AM_READ(banksel_r<5>) - AM_RANGE(0x6037, 0x6037) AM_READ(banksel_r<4>) - AM_RANGE(0x603b, 0x603b) AM_READ(banksel_r<3>) - AM_RANGE(0x603d, 0x603d) AM_READ(banksel_r<2>) - AM_RANGE(0x603e, 0x603e) AM_READ(banksel_r<1>) - AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/ - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::suprpokr_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w) - AM_RANGE(0x6400, 0x6400) AM_READ(signature_r) - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gei_state::sprtauth_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x5600, 0x5600) AM_READ(signature_r) - AM_RANGE(0x5800, 0x5800) AM_WRITE(signature_w) - AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w) - AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank") - AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) -ADDRESS_MAP_END + map(0x602f, 0x602f).r(this, FUNC(gei_state::banksel_r<5>)); + map(0x6037, 0x6037).r(this, FUNC(gei_state::banksel_r<4>)); + map(0x603b, 0x603b).r(this, FUNC(gei_state::banksel_r<3>)); + map(0x603d, 0x603d).r(this, FUNC(gei_state::banksel_r<2>)); + map(0x603e, 0x603e).r(this, FUNC(gei_state::banksel_r<1>)); + map(0x7800, 0x7fff).rom(); /*space for diagnostic ROM?*/ + map(0x8000, 0xffff).bankr("rombank"); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w)); +} + +void gei_state::suprpokr_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6200, 0x6200).w(this, FUNC(gei_state::signature_w)); + map(0x6400, 0x6400).r(this, FUNC(gei_state::signature_r)); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w)); + map(0x8000, 0xffff).rom(); +} + +void gei_state::sprtauth_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("nvram"); + map(0x4800, 0x4803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5600, 0x5600).r(this, FUNC(gei_state::signature_r)); + map(0x5800, 0x5800).w(this, FUNC(gei_state::signature_w)); + map(0x5a00, 0x5cff).w(this, FUNC(gei_state::geimulti_bank_w)); + map(0x6000, 0x7fff).rom(); + map(0x8000, 0x8002).w(this, FUNC(gei_state::gei_drawctrl_w)); + map(0x8000, 0xffff).bankr("rombank"); + map(0xc000, 0xffff).w(this, FUNC(gei_state::gei_bitmap_w)); +} static INPUT_PORTS_START(reelfun_standard) PORT_START("IN0") diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp index 7fa6821bb6f..83bc5e58ec0 100644 --- a/src/mame/drivers/geneve.cpp +++ b/src/mame/drivers/geneve.cpp @@ -294,9 +294,10 @@ public: Memory map */ -ADDRESS_MAP_START(geneve_state::memmap) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE(GENEVE_MAPPER_TAG, bus::ti99::internal::geneve_mapper_device, readm, writem) AM_DEVSETOFFSET(GENEVE_MAPPER_TAG, bus::ti99::internal::geneve_mapper_device, setoffset) -ADDRESS_MAP_END +void geneve_state::memmap(address_map &map) +{ + map(0x0000, 0xffff).rw(GENEVE_MAPPER_TAG, FUNC(bus::ti99::internal::geneve_mapper_device::readm), FUNC(bus::ti99::internal::geneve_mapper_device::writem)).setoffset(GENEVE_MAPPER_TAG, FUNC(bus::ti99::internal::geneve_mapper_device::setoffset)); +} /* CRU map @@ -306,13 +307,14 @@ ADDRESS_MAP_END TODO: Check whether A0-A2 are available for CRU addressing since those bits are usually routed through the mapper first. */ -ADDRESS_MAP_START(geneve_state::crumap) - AM_RANGE(0x0000, 0x0fff) AM_READ( cruread ) - AM_RANGE(0x0000, 0x0003) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read) +void geneve_state::crumap(address_map &map) +{ + map(0x0000, 0x0fff).r(this, FUNC(geneve_state::cruread)); + map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read)); - AM_RANGE(0x0000, 0x7fff) AM_WRITE( cruwrite ) - AM_RANGE(0x0000, 0x001f) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write) -ADDRESS_MAP_END + map(0x0000, 0x7fff).w(this, FUNC(geneve_state::cruwrite)); + map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write)); +} /* TI joysticks. The keyboard is implemented in genboard.c. */ static INPUT_PORTS_START(geneve) diff --git a/src/mame/drivers/geniusiq.cpp b/src/mame/drivers/geniusiq.cpp index 289b9f9f066..441ddd1ba05 100644 --- a/src/mame/drivers/geniusiq.cpp +++ b/src/mame/drivers/geniusiq.cpp @@ -415,30 +415,31 @@ INPUT_CHANGED_MEMBER( geniusiq_state::send_input ) } -ADDRESS_MAP_START(geniusiq_state::geniusiq_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1FFFFF) AM_ROM - AM_RANGE(0x200000, 0x23FFFF) AM_RAM - AM_RANGE(0x300000, 0x30FFFF) AM_RAM AM_SHARE("vram") - AM_RANGE(0x310000, 0x31FFFF) AM_RAM - AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x0e0000) AM_DEVREADWRITE8("flash", intelfsh8_device, read, write, 0x00ff) - AM_RANGE(0x600300, 0x600301) AM_READ(input_r) +void geniusiq_state::geniusiq_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1FFFFF).rom(); + map(0x200000, 0x23FFFF).ram(); + map(0x300000, 0x30FFFF).ram().share("vram"); + map(0x310000, 0x31FFFF).ram(); + map(0x400000, 0x41ffff).mirror(0x0e0000).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff); + map(0x600300, 0x600301).r(this, FUNC(geniusiq_state::input_r)); //AM_RANGE(0x600500, 0x60050f) // read during IRQ 5 //AM_RANGE(0x600600, 0x600605) // sound ?? - AM_RANGE(0x600606, 0x600609) AM_WRITE(gfx_base_w) - AM_RANGE(0x60060a, 0x60060b) AM_WRITE(gfx_idx_w) - AM_RANGE(0x600802, 0x600803) AM_READ(cart_state_r) // cartridge state - AM_RANGE(0x600108, 0x600109) AM_READ(unk0_r) // read before run a BASIC program - AM_RANGE(0x600918, 0x600919) AM_READ(unk0_r) // loop at start if bit 0 is set - AM_RANGE(0x601008, 0x601009) AM_READ(unk_r) // unknown, read at start and expect that bit 2 changes several times before continue - AM_RANGE(0x601010, 0x601011) AM_READ(unk0_r) // loop at start if bit 1 is set - AM_RANGE(0x601018, 0x60101b) AM_WRITE(gfx_dest_w) - AM_RANGE(0x60101c, 0x60101f) AM_WRITE(gfx_color_w) - AM_RANGE(0x601060, 0x601063) AM_WRITE(mouse_pos_w) - AM_RANGE(0x601100, 0x6011ff) AM_RAM AM_SHARE("mouse_gfx") // mouse cursor gfx (24x16) - AM_RANGE(0xa00000, 0xafffff) AM_DEVREAD("cartslot", generic_slot_device, read16_rom) + map(0x600606, 0x600609).w(this, FUNC(geniusiq_state::gfx_base_w)); + map(0x60060a, 0x60060b).w(this, FUNC(geniusiq_state::gfx_idx_w)); + map(0x600802, 0x600803).r(this, FUNC(geniusiq_state::cart_state_r)); // cartridge state + map(0x600108, 0x600109).r(this, FUNC(geniusiq_state::unk0_r)); // read before run a BASIC program + map(0x600918, 0x600919).r(this, FUNC(geniusiq_state::unk0_r)); // loop at start if bit 0 is set + map(0x601008, 0x601009).r(this, FUNC(geniusiq_state::unk_r)); // unknown, read at start and expect that bit 2 changes several times before continue + map(0x601010, 0x601011).r(this, FUNC(geniusiq_state::unk0_r)); // loop at start if bit 1 is set + map(0x601018, 0x60101b).w(this, FUNC(geniusiq_state::gfx_dest_w)); + map(0x60101c, 0x60101f).w(this, FUNC(geniusiq_state::gfx_color_w)); + map(0x601060, 0x601063).w(this, FUNC(geniusiq_state::mouse_pos_w)); + map(0x601100, 0x6011ff).ram().share("mouse_gfx"); // mouse cursor gfx (24x16) + map(0xa00000, 0xafffff).r(m_cart, FUNC(generic_slot_device::read16_rom)); // 0x600000 : some memory mapped hardware -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( geniusiq ) diff --git a/src/mame/drivers/genpc.cpp b/src/mame/drivers/genpc.cpp index 6f6a8ee9e22..9fda89429dc 100644 --- a/src/mame/drivers/genpc.cpp +++ b/src/mame/drivers/genpc.cpp @@ -32,15 +32,17 @@ public: void pc8_map(address_map &map); }; -ADDRESS_MAP_START(genpc_state::pc8_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(genpc_state::pc8_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) -ADDRESS_MAP_END +void genpc_state::pc8_map(address_map &map) +{ + map.unmap_value_high(); + map(0xfe000, 0xfffff).rom().region("bios", 0); +} + +void genpc_state::pc8_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); +} static DEVICE_INPUT_DEFAULTS_START(cga) DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20) diff --git a/src/mame/drivers/ggconnie.cpp b/src/mame/drivers/ggconnie.cpp index e6118492772..87cdff42d8b 100644 --- a/src/mame/drivers/ggconnie.cpp +++ b/src/mame/drivers/ggconnie.cpp @@ -24,7 +24,6 @@ #include "video/huc6270.h" #include "video/huc6260.h" #include "video/huc6202.h" -#include "cpu/h6280/h6280.h" #include "sound/c6280.h" #include "sound/okim6295.h" #include "machine/msm6242.h" @@ -70,32 +69,34 @@ WRITE8_MEMBER(ggconnie_state::oki_bank_w) } -ADDRESS_MAP_START(ggconnie_state::sgx_mem) - AM_RANGE( 0x000000, 0x17ffff) AM_ROM - AM_RANGE( 0x180000, 0x1edfff) AM_NOP - AM_RANGE( 0x1ee800, 0x1effff) AM_NOP - AM_RANGE( 0x1f0000, 0x1f5fff) AM_RAM - AM_RANGE( 0x1f7000, 0x1f7000) AM_READ_PORT("SWA") - AM_RANGE( 0x1f7100, 0x1f7100) AM_READ_PORT("SWB") - AM_RANGE( 0x1f7200, 0x1f7200) AM_READ_PORT("SWC") - AM_RANGE( 0x1f7700, 0x1f7700) AM_READ_PORT("IN1") - AM_RANGE( 0x1f7800, 0x1f7800) AM_WRITE(output_w) - AM_RANGE( 0x1fe000, 0x1fe007) AM_DEVREADWRITE( "huc6270_0", huc6270_device, read, write ) AM_MIRROR(0x03E0) - AM_RANGE( 0x1fe008, 0x1fe00f) AM_DEVREADWRITE( "huc6202", huc6202_device, read, write ) AM_MIRROR(0x03E0) - AM_RANGE( 0x1fe010, 0x1fe017) AM_DEVREADWRITE( "huc6270_1", huc6270_device, read, write ) AM_MIRROR(0x03E0) - AM_RANGE( 0x1fe400, 0x1fe7ff) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1fe800, 0x1febff) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w) - AM_RANGE( 0x1fec00, 0x1fefff) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w) - AM_RANGE( 0x1f7300, 0x1f7300) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x1f7400, 0x1f74ff) AM_WRITE(oki_bank_w) - AM_RANGE( 0x1f7500, 0x1f750f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x1ff000, 0x1ff000) AM_READ_PORT("IN0") AM_WRITE(lamp_w) - AM_RANGE( 0x1ff400, 0x1ff7ff) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ggconnie_state::sgx_io) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6202", huc6202_device, io_read, io_write ) -ADDRESS_MAP_END +void ggconnie_state::sgx_mem(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); + map(0x180000, 0x1edfff).noprw(); + map(0x1ee800, 0x1effff).noprw(); + map(0x1f0000, 0x1f5fff).ram(); + map(0x1f7000, 0x1f7000).portr("SWA"); + map(0x1f7100, 0x1f7100).portr("SWB"); + map(0x1f7200, 0x1f7200).portr("SWC"); + map(0x1f7700, 0x1f7700).portr("IN1"); + map(0x1f7800, 0x1f7800).w(this, FUNC(ggconnie_state::output_w)); + map(0x1fe000, 0x1fe007).rw("huc6270_0", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0); + map(0x1fe008, 0x1fe00f).rw("huc6202", FUNC(huc6202_device::read), FUNC(huc6202_device::write)).mirror(0x03E0); + map(0x1fe010, 0x1fe017).rw("huc6270_1", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0); + map(0x1fe400, 0x1fe7ff).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1fe800, 0x1febff).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w)); + map(0x1fec00, 0x1fefff).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1f7300, 0x1f7300).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1f7400, 0x1f74ff).w(this, FUNC(ggconnie_state::oki_bank_w)); + map(0x1f7500, 0x1f750f).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x1ff000, 0x1ff000).portr("IN0").w(this, FUNC(ggconnie_state::lamp_w)); + map(0x1ff400, 0x1ff7ff).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); +} + +void ggconnie_state::sgx_io(address_map &map) +{ + map(0x00, 0x03).rw("huc6202", FUNC(huc6202_device::io_read), FUNC(huc6202_device::io_write)); +} static INPUT_PORTS_START(ggconnie) diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp index 4ed7bf72820..558d075fd76 100644 --- a/src/mame/drivers/ghosteo.cpp +++ b/src/mame/drivers/ghosteo.cpp @@ -420,21 +420,23 @@ READ32_MEMBER( ghosteo_state::touryuu_port_10000000_r ) } -ADDRESS_MAP_START(ghosteo_state::bballoon_map) - AM_RANGE(0x10000000, 0x10000003) AM_READ_PORT("10000000") - AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000") - AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000") - AM_RANGE(0x10300000, 0x10300003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32) - AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ghosteo_state::touryuu_map) - AM_RANGE(0x10000000, 0x10000003) AM_READ(touryuu_port_10000000_r) - AM_RANGE(0x10100000, 0x10100003) AM_READ_PORT("10100000") - AM_RANGE(0x10200000, 0x10200003) AM_READ_PORT("10200000") - AM_RANGE(0x10300000, 0x10300003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32) - AM_RANGE(0x30000000, 0x31ffffff) AM_RAM AM_SHARE("systememory") AM_MIRROR(0x02000000) -ADDRESS_MAP_END +void ghosteo_state::bballoon_map(address_map &map) +{ + map(0x10000000, 0x10000003).portr("10000000"); + map(0x10100000, 0x10100003).portr("10100000"); + map(0x10200000, 0x10200003).portr("10200000"); + map(0x10300000, 0x10300000).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32); + map(0x30000000, 0x31ffffff).ram().share("systememory").mirror(0x02000000); +} + +void ghosteo_state::touryuu_map(address_map &map) +{ + map(0x10000000, 0x10000003).r(this, FUNC(ghosteo_state::touryuu_port_10000000_r)); + map(0x10100000, 0x10100003).portr("10100000"); + map(0x10200000, 0x10200003).portr("10200000"); + map(0x10300000, 0x10300000).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32); + map(0x30000000, 0x31ffffff).ram().share("systememory").mirror(0x02000000); +} /* diff --git a/src/mame/drivers/giclassic.cpp b/src/mame/drivers/giclassic.cpp index 3e6d7315137..8919f06cbe2 100644 --- a/src/mame/drivers/giclassic.cpp +++ b/src/mame/drivers/giclassic.cpp @@ -143,18 +143,19 @@ READ16_MEMBER(giclassic_state::vrom_r) return m_k056832->piratesh_rom_r(space, offset); } -ADDRESS_MAP_START(giclassic_state::satellite_main) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) - AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r) - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w) - AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails - AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00) - AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset -ADDRESS_MAP_END +void giclassic_state::satellite_main(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x100000, 0x103fff).ram(); + map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x801fff).ram().rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x900000, 0x90003f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w)); + map(0xb00000, 0xb01fff).r(this, FUNC(giclassic_state::vrom_r)); + map(0xc00000, 0xc00001).w(this, FUNC(giclassic_state::control_w)); + map(0xd00000, 0xd0003f).ram(); // these must read/write or 26S (LCD controller) fails + map(0xe00000, 0xe0001f).w(m_k056832, FUNC(k056832_device::b_w)).umask16(0xff00); + map(0xf00000, 0xf00001).noprw().nopw(); // watchdog reset +} static INPUT_PORTS_START( giclassic ) INPUT_PORTS_END @@ -264,22 +265,23 @@ uint32_t giclassicsvr_state::screen_update_giclassicsvr(screen_device &screen, b return 0; } -ADDRESS_MAP_START(giclassicsvr_state::server_main) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x080000, 0x08ffff) AM_RAM - AM_RANGE(0x090000, 0x093fff) AM_RAM - AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x183fff) AM_RAM - AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES - AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES - AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) - AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1 - AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2 - AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset - AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w) - AM_RANGE(0x400000, 0x41ffff) AM_RAM -ADDRESS_MAP_END +void giclassicsvr_state::server_main(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x080000, 0x08ffff).ram(); + map(0x090000, 0x093fff).ram(); + map(0x100000, 0x107fff).ram().ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x183fff).ram(); + map(0x280000, 0x281fff).ram().rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x300000, 0x300007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // SPRITES + map(0x300060, 0x30006f).r(m_k055673, FUNC(k055673_device::k055673_ps_rom_word_r)); // SPRITES + map(0x308000, 0x30803f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w)); + map(0x320000, 0x32001f).rw("k053252a", FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CRTC 1 + map(0x320000, 0x32001f).rw("k053252b", FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0xff00); // CRTC 2 + map(0x380000, 0x380001).nopw(); // watchdog reset + map(0x398000, 0x398001).rw(this, FUNC(giclassicsvr_state::control_r), FUNC(giclassicsvr_state::control_w)); + map(0x400000, 0x41ffff).ram(); +} static INPUT_PORTS_START( giclassvr ) INPUT_PORTS_END diff --git a/src/mame/drivers/gijoe.cpp b/src/mame/drivers/gijoe.cpp index 9e2c3a782b8..76387f11e95 100644 --- a/src/mame/drivers/gijoe.cpp +++ b/src/mame/drivers/gijoe.cpp @@ -197,41 +197,43 @@ WRITE16_MEMBER(gijoe_state::sound_irq_w) m_audiocpu->set_input_line(0, HOLD_LINE); } -ADDRESS_MAP_START(gijoe_state::gijoe_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x110000, 0x110007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x120000, 0x121fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes - AM_RANGE(0x122000, 0x123fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes mirror read - AM_RANGE(0x130000, 0x131fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) // Passthrough to tile roms - AM_RANGE(0x160000, 0x160007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS (board dependent) - AM_RANGE(0x170000, 0x170001) AM_WRITENOP // Watchdog - AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") // Main RAM. Spec. 180000-1803ff, 180400-187fff - AM_RANGE(0x190000, 0x190fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x1b0000, 0x1b003f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(sound_irq_w) - AM_RANGE(0x1e0000, 0x1e0001) AM_READ_PORT("P1_P2") - AM_RANGE(0x1e0002, 0x1e0003) AM_READ_PORT("P3_P4") - AM_RANGE(0x1e4000, 0x1e4001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1e4002, 0x1e4003) AM_READ_PORT("START") - AM_RANGE(0x1e8000, 0x1e8001) AM_READWRITE(control2_r, control2_w) - AM_RANGE(0x1f0000, 0x1f0001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) +void gijoe_state::gijoe_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100fff).ram().share("spriteram"); // Sprites + map(0x110000, 0x110007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x120000, 0x121fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // Graphic planes + map(0x122000, 0x123fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // Graphic planes mirror read + map(0x130000, 0x131fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); // Passthrough to tile roms + map(0x160000, 0x160007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS (board dependent) + map(0x170000, 0x170001).nopw(); // Watchdog + map(0x180000, 0x18ffff).ram().share("workram"); // Main RAM. Spec. 180000-1803ff, 180400-187fff + map(0x190000, 0x190fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x1a0000, 0x1a001f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x1b0000, 0x1b003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x1c0000, 0x1c001f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x1d0000, 0x1d0001).w(this, FUNC(gijoe_state::sound_irq_w)); + map(0x1e0000, 0x1e0001).portr("P1_P2"); + map(0x1e0002, 0x1e0003).portr("P3_P4"); + map(0x1e4000, 0x1e4001).portr("SYSTEM"); + map(0x1e4002, 0x1e4003).portr("START"); + map(0x1e8000, 0x1e8001).rw(this, FUNC(gijoe_state::control2_r), FUNC(gijoe_state::control2_w)); + map(0x1f0000, 0x1f0001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); #if JOE_DEBUG - AM_RANGE(0x110000, 0x110007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r) - AM_RANGE(0x160000, 0x160007) AM_DEVREAD("k056832", k056832_device, b_word_r) - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREAD("k053251", k053251_device, lsb_r) - AM_RANGE(0x1b0000, 0x1b003f) AM_DEVREAD("k056832", k056832_device, word_r) + map(0x110000, 0x110007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r)); + map(0x160000, 0x160007).r(m_k056832, FUNC(k056832_device::b_word_r)); + map(0x1a0000, 0x1a001f).r(m_k053251, FUNC(k053251_device::lsb_r)); + map(0x1b0000, 0x1b003f).r(m_k056832, FUNC(k056832_device::word_r)); #endif -ADDRESS_MAP_END - -ADDRESS_MAP_START(gijoe_state::sound_map) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xfc00, 0xfc03) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM -ADDRESS_MAP_END +} + +void gijoe_state::sound_map(address_map &map) +{ + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xfa2f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xfc00, 0xfc03).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0x0000, 0xefff).rom(); +} static INPUT_PORTS_START( gijoe ) PORT_START("START") diff --git a/src/mame/drivers/gimix.cpp b/src/mame/drivers/gimix.cpp index cf55a712d53..995cebc3a36 100644 --- a/src/mame/drivers/gimix.cpp +++ b/src/mame/drivers/gimix.cpp @@ -174,44 +174,46 @@ private: required_ioport m_dma_dip; }; -ADDRESS_MAP_START(gimix_state::gimix_banked_mem) - AM_RANGE(0x00000, 0x0dfff) AM_RAMBANK("lower_ram") - AM_RANGE(0x0e000, 0x0e001) AM_DEVREADWRITE("acia1", acia6850_device, read, write) - AM_RANGE(0x0e004, 0x0e005) AM_DEVREADWRITE("acia2", acia6850_device, read, write) +void gimix_state::gimix_banked_mem(address_map &map) +{ + map(0x00000, 0x0dfff).bankrw("lower_ram"); + map(0x0e000, 0x0e001).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x0e004, 0x0e005).rw(m_acia2, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); //AM_RANGE(0x0e018, 0x0e01b) AM_READWRITE(fdc_r, fdc_w) // FD1797 FDC (PIO) - AM_RANGE(0x0e100, 0x0e1ff) AM_RAM + map(0x0e100, 0x0e1ff).ram(); //AM_RANGE(0x0e200, 0x0e20f) // 9511A / 9512 Arithmetic Processor - AM_RANGE(0x0e210, 0x0e21f) AM_DEVREADWRITE("timer", ptm6840_device, read, write) - AM_RANGE(0x0e220, 0x0e23f) AM_DEVREADWRITE("rtc", mm58167_device, read, write) - AM_RANGE(0x0e240, 0x0e3af) AM_RAM - AM_RANGE(0x0e3b0, 0x0e3b3) AM_READWRITE(dma_r, dma_w) // DMA controller (custom?) - AM_RANGE(0x0e3b4, 0x0e3b7) AM_READWRITE(fdc_r, fdc_w) // FD1797 FDC - AM_RANGE(0x0e400, 0x0e7ff) AM_RAM // scratchpad RAM - AM_RANGE(0x0e800, 0x0efff) AM_RAM - AM_RANGE(0x0f000, 0x0f7ff) AM_ROMBANK("rombank2") - AM_RANGE(0x0f800, 0x0ffff) AM_ROMBANK("rombank1") + map(0x0e210, 0x0e21f).rw("timer", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x0e220, 0x0e23f).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)); + map(0x0e240, 0x0e3af).ram(); + map(0x0e3b0, 0x0e3b3).rw(this, FUNC(gimix_state::dma_r), FUNC(gimix_state::dma_w)); // DMA controller (custom?) + map(0x0e3b4, 0x0e3b7).rw(this, FUNC(gimix_state::fdc_r), FUNC(gimix_state::fdc_w)); // FD1797 FDC + map(0x0e400, 0x0e7ff).ram(); // scratchpad RAM + map(0x0e800, 0x0efff).ram(); + map(0x0f000, 0x0f7ff).bankr("rombank2"); + map(0x0f800, 0x0ffff).bankr("rombank1"); //AM_RANGE(0x10000, 0x1ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gimix_state::gimix_mem) - AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8) - AM_RANGE(0x1000, 0x1fff) AM_DEVREADWRITE("bank2", address_map_bank_device, read8, write8) - AM_RANGE(0x2000, 0x2fff) AM_DEVREADWRITE("bank3", address_map_bank_device, read8, write8) - AM_RANGE(0x3000, 0x3fff) AM_DEVREADWRITE("bank4", address_map_bank_device, read8, write8) - AM_RANGE(0x4000, 0x4fff) AM_DEVREADWRITE("bank5", address_map_bank_device, read8, write8) - AM_RANGE(0x5000, 0x5fff) AM_DEVREADWRITE("bank6", address_map_bank_device, read8, write8) - AM_RANGE(0x6000, 0x6fff) AM_DEVREADWRITE("bank7", address_map_bank_device, read8, write8) - AM_RANGE(0x7000, 0x7fff) AM_DEVREADWRITE("bank8", address_map_bank_device, read8, write8) - AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("bank9", address_map_bank_device, read8, write8) - AM_RANGE(0x9000, 0x9fff) AM_DEVREADWRITE("bank10", address_map_bank_device, read8, write8) - AM_RANGE(0xa000, 0xafff) AM_DEVREADWRITE("bank11", address_map_bank_device, read8, write8) - AM_RANGE(0xb000, 0xbfff) AM_DEVREADWRITE("bank12", address_map_bank_device, read8, write8) - AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("bank13", address_map_bank_device, read8, write8) - AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("bank14", address_map_bank_device, read8, write8) - AM_RANGE(0xe000, 0xefff) AM_DEVREADWRITE("bank15", address_map_bank_device, read8, write8) - AM_RANGE(0xf000, 0xfeff) AM_DEVREADWRITE("bank16", address_map_bank_device, read8, write8) - AM_RANGE(0xff00, 0xffff) AM_ROMBANK("fixedrombank") AM_WRITE(system_w) -ADDRESS_MAP_END +} + +void gimix_state::gimix_mem(address_map &map) +{ + map(0x0000, 0x0fff).rw(m_bank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x1000, 0x1fff).rw(m_bank2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x2000, 0x2fff).rw(m_bank3, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x3000, 0x3fff).rw(m_bank4, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x4000, 0x4fff).rw(m_bank5, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x5000, 0x5fff).rw(m_bank6, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x6000, 0x6fff).rw(m_bank7, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x7000, 0x7fff).rw(m_bank8, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0x8fff).rw(m_bank9, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x9000, 0x9fff).rw(m_bank10, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xa000, 0xafff).rw(m_bank11, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xb000, 0xbfff).rw(m_bank12, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xcfff).rw(m_bank13, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xd000, 0xdfff).rw(m_bank14, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xe000, 0xefff).rw(m_bank15, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xf000, 0xfeff).rw(m_bank16, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xff00, 0xffff).bankr("fixedrombank").w(this, FUNC(gimix_state::system_w)); +} static INPUT_PORTS_START( gimix ) PORT_START("dma_s2") diff --git a/src/mame/drivers/ginganin.cpp b/src/mame/drivers/ginganin.cpp index 466fc5d64bc..9d21569deb3 100644 --- a/src/mame/drivers/ginganin.cpp +++ b/src/mame/drivers/ginganin.cpp @@ -76,18 +76,19 @@ f5d6 print 7 digit BCD number: d0.l to (a1)+ color $3000 */ -ADDRESS_MAP_START(ginganin_state::ginganin_map) +void ginganin_state::ginganin_map(address_map &map) +{ /* The ROM area: 10000-13fff is written with: 0000 0000 0000 0001, at startup only. Why? */ - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x023fff) AM_RAM - AM_RANGE(0x030000, 0x0307ff) AM_RAM_WRITE(ginganin_txtram16_w) AM_SHARE("txtram") - AM_RANGE(0x040000, 0x0407ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x050000, 0x0507ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x060000, 0x06000f) AM_RAM_WRITE(ginganin_vregs16_w) AM_SHARE("vregs") - AM_RANGE(0x068000, 0x06bfff) AM_RAM_WRITE(ginganin_fgram16_w) AM_SHARE("fgram") - AM_RANGE(0x070000, 0x070001) AM_READ_PORT("P1_P2") - AM_RANGE(0x070002, 0x070003) AM_READ_PORT("DSW") -ADDRESS_MAP_END + map(0x000000, 0x01ffff).rom(); + map(0x020000, 0x023fff).ram(); + map(0x030000, 0x0307ff).ram().w(this, FUNC(ginganin_state::ginganin_txtram16_w)).share("txtram"); + map(0x040000, 0x0407ff).ram().share("spriteram"); + map(0x050000, 0x0507ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x060000, 0x06000f).ram().w(this, FUNC(ginganin_state::ginganin_vregs16_w)).share("vregs"); + map(0x068000, 0x06bfff).ram().w(this, FUNC(ginganin_state::ginganin_fgram16_w)).share("fgram"); + map(0x070000, 0x070001).portr("P1_P2"); + map(0x070002, 0x070003).portr("DSW"); +} /* @@ -96,14 +97,15 @@ ADDRESS_MAP_END ** */ -ADDRESS_MAP_START(ginganin_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0807) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write) - AM_RANGE(0x1800, 0x1800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", y8950_device, write) - AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("psg", ym2149_device, address_data_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ginganin_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0807).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x1800, 0x1800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x2000, 0x2001).w("ymsnd", FUNC(y8950_device::write)); + map(0x2800, 0x2801).w("psg", FUNC(ym2149_device::address_data_w)); + map(0x4000, 0xffff).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/gizmondo.cpp b/src/mame/drivers/gizmondo.cpp index 0f2476a5328..3d087e1f31e 100644 --- a/src/mame/drivers/gizmondo.cpp +++ b/src/mame/drivers/gizmondo.cpp @@ -167,14 +167,15 @@ void gizmondo_state::machine_reset() ADDRESS MAPS *******************************************************************************/ -ADDRESS_MAP_START(gizmondo_state::gizmondo_map) - AM_RANGE(0x00000000, 0x000007ff) AM_ROM - AM_RANGE(0x00000800, 0x00000fff) AM_DEVREADWRITE16("diskonchip", diskonchip_g3_device, sec_1_r, sec_1_w, 0xffffffff) - AM_RANGE(0x00001000, 0x000017ff) AM_DEVREADWRITE16("diskonchip", diskonchip_g3_device, sec_2_r, sec_2_w, 0xffffffff) - AM_RANGE(0x00001800, 0x00001fff) AM_DEVREADWRITE16("diskonchip", diskonchip_g3_device, sec_3_r, sec_3_w, 0xffffffff) - AM_RANGE(0x30000000, 0x33ffffff) AM_RAM - AM_RANGE(0x34000000, 0x3413ffff) AM_DEVREADWRITE("gf4500", gf4500_device, read, write) -ADDRESS_MAP_END +void gizmondo_state::gizmondo_map(address_map &map) +{ + map(0x00000000, 0x000007ff).rom(); + map(0x00000800, 0x00000fff).rw("diskonchip", FUNC(diskonchip_g3_device::sec_1_r), FUNC(diskonchip_g3_device::sec_1_w)); + map(0x00001000, 0x000017ff).rw("diskonchip", FUNC(diskonchip_g3_device::sec_2_r), FUNC(diskonchip_g3_device::sec_2_w)); + map(0x00001800, 0x00001fff).rw("diskonchip", FUNC(diskonchip_g3_device::sec_3_r), FUNC(diskonchip_g3_device::sec_3_w)); + map(0x30000000, 0x33ffffff).ram(); + map(0x34000000, 0x3413ffff).rw(m_gf4500, FUNC(gf4500_device::read), FUNC(gf4500_device::write)); +} /******************************************************************************* MACHINE DRIVERS diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp index f05efc79824..b6b0d791850 100644 --- a/src/mame/drivers/gkigt.cpp +++ b/src/mame/drivers/gkigt.cpp @@ -225,17 +225,18 @@ WRITE8_MEMBER(igt_gameking_state::unk_w) } -ADDRESS_MAP_START(igt_gameking_state::igt_gameking_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x08000000, 0x081fffff) AM_ROM AM_REGION("game", 0) - AM_RANGE(0x08200000, 0x083fffff) AM_ROM AM_REGION("plx", 0) +void igt_gameking_state::igt_gameking_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().region("maincpu", 0); + map(0x08000000, 0x081fffff).rom().region("game", 0); + map(0x08200000, 0x083fffff).rom().region("plx", 0); // it's unclear how much of this is saved and how much total RAM there is. - AM_RANGE(0x10000000, 0x1001ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x10020000, 0x17ffffff) AM_RAM + map(0x10000000, 0x1001ffff).ram().share("nvram"); + map(0x10020000, 0x17ffffff).ram(); - AM_RANGE(0x18000000, 0x181fffff) AM_RAM AM_SHARE("vram") // igtsc writes from 18000000 to 1817ffff, ms3 all the way to 181fffff. + map(0x18000000, 0x181fffff).ram().share("vram"); // igtsc writes from 18000000 to 1817ffff, ms3 all the way to 181fffff. // 28000000: MEZ2 SEL, also connected to ymz chip select? // 28010000: first 28C94 QUART (QRT1 SEL) @@ -245,36 +246,37 @@ ADDRESS_MAP_START(igt_gameking_state::igt_gameking_map) // 28050000: SOUND SEL // 28060000: COLOR SEL // 28070000: OUT SEL -// AM_RANGE(0x28010000, 0x2801007f) AM_DEVREADWRITE8("quart1", sc28c94_device, read, write, 0x00ff00ff) - AM_RANGE(0x28010008, 0x2801000b) AM_READ(uart_status_r) - AM_RANGE(0x2801001c, 0x2801001f) AM_WRITENOP - AM_RANGE(0x28010030, 0x28010033) AM_READ(uart_status_r) // channel D - AM_RANGE(0x28010034, 0x28010037) AM_WRITE(uart_w) // channel D - AM_RANGE(0x28020000, 0x280205ff) AM_RAM // CMOS? -// AM_RANGE(0x28020000, 0x2802007f) AM_READ(igt_gk_28010008_r) AM_WRITENOP - AM_RANGE(0x28030000, 0x28030003) AM_READ_PORT("IN0") -// AM_RANGE(0x28040000, 0x2804007f) AM_DEVREADWRITE8("quart2", sc28c94_device, read, write, 0x00ff00ff) - AM_RANGE(0x28040008, 0x2804000b) AM_WRITE8(unk_w,0x00ff0000) - AM_RANGE(0x28040008, 0x2804000b) AM_READWRITE8(irq_vector_r,irq_enable_w,0x000000ff) - AM_RANGE(0x28040018, 0x2804001b) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x2804001c, 0x2804001f) AM_READ_PORT("IN4") AM_WRITENOP - AM_RANGE(0x28040028, 0x2804002b) AM_READNOP AM_WRITE8(irq_ack_w,0x00ff0000) - // AM_RANGE(0x28040038, 0x2804003b) AM_READ8(timer_r,0x00ff0000) - AM_RANGE(0x28040038, 0x2804003b) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0x2804003c, 0x2804003f) AM_READ_PORT("IN3") AM_WRITENOP - AM_RANGE(0x28040050, 0x28040053) AM_READ8(frame_number_r,0x000000ff) - AM_RANGE(0x28040054, 0x28040057) AM_WRITENOP -// AM_RANGE(0x28040054, 0x28040057) AM_WRITE8(irq_ack_w,0x000000ff) - - AM_RANGE(0x28050000, 0x28050003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff00ff) - AM_RANGE(0x28060000, 0x28060003) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x000000ff ) - AM_RANGE(0x28060000, 0x28060003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff0000 ) - AM_RANGE(0x28060004, 0x28060007) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x000000ff ) - - AM_RANGE(0x3b000000, 0x3b1fffff) AM_ROM AM_REGION("snd", 0) - - AM_RANGE(0xa1000000, 0xa1011fff) AM_RAM // used by gkkey for restart IAC -ADDRESS_MAP_END +// map(0x28010000, 0x2801007f).rw("quart1", FUNC(sc28c94_device::read), FUNC(sc28c94_device::write)).umask32(0x00ff00ff); + map(0x28010008, 0x2801000b).r(this, FUNC(igt_gameking_state::uart_status_r)); + map(0x2801001c, 0x2801001f).nopw(); + map(0x28010030, 0x28010033).r(this, FUNC(igt_gameking_state::uart_status_r)); // channel D + map(0x28010034, 0x28010037).w(this, FUNC(igt_gameking_state::uart_w)); // channel D + map(0x28020000, 0x280205ff).ram(); // CMOS? +// map(0x28020000, 0x2802007f).r(this, FUNC(igt_gameking_state::igt_gk_28010008_r)).nopw(); + map(0x28030000, 0x28030003).portr("IN0"); +// map(0x28040000, 0x2804007f).rw("quart2", FUNC(sc28c94_device::read), FUNC(sc28c94_device::write)).umask32(0x00ff00ff); + map(0x2804000a, 0x2804000a).w(this, FUNC(igt_gameking_state::unk_w)); + map(0x28040008, 0x28040008).rw(this, FUNC(igt_gameking_state::irq_vector_r), FUNC(igt_gameking_state::irq_enable_w)); + map(0x28040018, 0x2804001b).portr("IN1").nopw(); + map(0x2804001c, 0x2804001f).portr("IN4").nopw(); + map(0x28040028, 0x2804002b).nopr(); + map(0x2804002a, 0x2804002a).w(this, FUNC(igt_gameking_state::irq_ack_w)); +// map(0x28040038, 0x2804003b).r(this, FUNC(igt_gameking_state::timer_r)).umask32(0x00ff0000); + map(0x28040038, 0x2804003b).portr("IN2").nopw(); + map(0x2804003c, 0x2804003f).portr("IN3").nopw(); + map(0x28040050, 0x28040050).r(this, FUNC(igt_gameking_state::frame_number_r)); + map(0x28040054, 0x28040057).nopw(); +// map(0x28040054, 0x28040057).w(this, FUNC(igt_gameking_state::irq_ack_w).umask32(0x000000ff); + + map(0x28050000, 0x28050003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x00ff00ff); + map(0x28060000, 0x28060000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x28060002, 0x28060002).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x28060004, 0x28060004).w("ramdac", FUNC(ramdac_device::mask_w)); + + map(0x3b000000, 0x3b1fffff).rom().region("snd", 0); + + map(0xa1000000, 0xa1011fff).ram(); // used by gkkey for restart IAC +} READ16_MEMBER(igt_gameking_state::version_r) { @@ -288,11 +290,12 @@ READ8_MEMBER(igt_gameking_state::timer_r) return m_timer_count++; } -ADDRESS_MAP_START(igt_gameking_state::igt_ms72c_map) - AM_IMPORT_FROM( igt_gameking_map ) - AM_RANGE(0x18200000, 0x18200003) AM_READ16(version_r, 0x0000ffff) - AM_RANGE(0x28040038, 0x2804003b) AM_READ8(timer_r,0x00ff0000) -ADDRESS_MAP_END +void igt_gameking_state::igt_ms72c_map(address_map &map) +{ + igt_gameking_map(map); + map(0x18200000, 0x18200001).r(this, FUNC(igt_gameking_state::version_r)); + map(0x2804003a, 0x2804003a).r(this, FUNC(igt_gameking_state::timer_r)); +} static INPUT_PORTS_START( igt_gameking ) PORT_START("IN0") @@ -568,9 +571,10 @@ static GFXDECODE_START( igt_gameking ) GFXDECODE_ENTRY( "cg", 0, igt_gameking_layout, 0x0, 1 ) GFXDECODE_END -ADDRESS_MAP_START(igt_gameking_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void igt_gameking_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} void igt_gameking_state::machine_start() { diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp index 3fe6e73ab0e..73236b13e32 100644 --- a/src/mame/drivers/gladiatr.cpp +++ b/src/mame/drivers/gladiatr.cpp @@ -191,10 +191,6 @@ TODO: #include "emu.h" #include "includes/gladiatr.h" -#include "cpu/m6809/m6809.h" -#include "cpu/mcs48/mcs48.h" -#include "cpu/z80/z80.h" - #include "machine/74259.h" #include "machine/clock.h" #include "machine/nvram.h" @@ -619,86 +615,94 @@ MACHINE_RESET_MEMBER(ppking_state, ppking) m_mcu[0].state = 0; } -ADDRESS_MAP_START(ppking_state::ppking_cpu1_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ -ADDRESS_MAP_END +void ppking_state::ppking_cpu1_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcbff).ram().share("spriteram"); + map(0xcc00, 0xcfff).w(this, FUNC(ppking_state::ppking_video_registers_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(ppking_state::paletteram_w)).share("paletteram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(ppking_state::videoram_w)).share("videoram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(ppking_state::colorram_w)).share("colorram"); + map(0xe800, 0xefff).ram().w(this, FUNC(ppking_state::textram_w)).share("textram"); + map(0xf000, 0xf7ff).ram().share("nvram"); /* battery backed RAM */ +} -ADDRESS_MAP_START(ppking_state::ppking_cpu3_map) - AM_RANGE(0x1000, 0x1fff) AM_WRITE(ppking_adpcm_w) - AM_RANGE(0x2000, 0x2fff) AM_READ(adpcm_command_r) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END +void ppking_state::ppking_cpu3_map(address_map &map) +{ + map(0x1000, 0x1fff).w(this, FUNC(ppking_state::ppking_adpcm_w)); + map(0x2000, 0x2fff).r(this, FUNC(ppking_state::adpcm_command_r)); + map(0x8000, 0xffff).rom().nopw(); +} -ADDRESS_MAP_START(ppking_state::ppking_cpu1_io) +void ppking_state::ppking_cpu1_io(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) + map(0xc000, 0xc007).w("mainlatch", FUNC(ls259_device::write_d0)); // AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w) - AM_RANGE(0xc09e, 0xc09f) AM_READ(ppking_qx0_r) AM_WRITE(ppking_qx0_w) - AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog - AM_RANGE(0xc0c0, 0xc0c1) AM_READ(ppking_qxcomu_r) AM_WRITE(ppking_qxcomu_w) -ADDRESS_MAP_END + map(0xc09e, 0xc09f).r(this, FUNC(ppking_state::ppking_qx0_r)).w(this, FUNC(ppking_state::ppking_qx0_w)); + map(0xc0bf, 0xc0bf).noprw(); // watchdog + map(0xc0c0, 0xc0c1).r(this, FUNC(ppking_state::ppking_qxcomu_r)).w(this, FUNC(ppking_state::ppking_qxcomu_w)); +} -ADDRESS_MAP_START(ppking_state::ppking_cpu2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x20, 0x21) AM_READ(ppking_qx1_r) AM_WRITE(ppking_qx1_w) - AM_RANGE(0x40, 0x40) AM_WRITE(cpu2_irq_ack_w) - AM_RANGE(0x80, 0x81) AM_READWRITE(ppking_qx3_r,ppking_qx3_w) - AM_RANGE(0xe0, 0xe0) AM_WRITE(adpcm_command_w) -ADDRESS_MAP_END +void ppking_state::ppking_cpu2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x20, 0x21).r(this, FUNC(ppking_state::ppking_qx1_r)).w(this, FUNC(ppking_state::ppking_qx1_w)); + map(0x40, 0x40).w(this, FUNC(ppking_state::cpu2_irq_ack_w)); + map(0x80, 0x81).rw(this, FUNC(ppking_state::ppking_qx3_r), FUNC(ppking_state::ppking_qx3_w)); + map(0xe0, 0xe0).w(this, FUNC(ppking_state::adpcm_command_w)); +} -ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu1_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xcc00, 0xcfff) AM_WRITE(gladiatr_video_registers_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ -ADDRESS_MAP_END +void gladiatr_state::gladiatr_cpu1_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcbff).ram().share("spriteram"); + map(0xcc00, 0xcfff).w(this, FUNC(gladiatr_state::gladiatr_video_registers_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(gladiatr_state::paletteram_w)).share("paletteram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(gladiatr_state::videoram_w)).share("videoram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(gladiatr_state::colorram_w)).share("colorram"); + map(0xe800, 0xefff).ram().w(this, FUNC(gladiatr_state::textram_w)).share("textram"); + map(0xf000, 0xf7ff).ram().share("nvram"); /* battery backed RAM */ +} ADDRESS_MAP_START(gladiatr_state_base::cpu2_map) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x83ff) AM_RAM ADDRESS_MAP_END -ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu3_map) - AM_RANGE(0x1000, 0x1fff) AM_WRITE(gladiator_adpcm_w) - AM_RANGE(0x2000, 0x2fff) AM_READ(adpcm_command_r) - AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank2") AM_WRITENOP -ADDRESS_MAP_END +void gladiatr_state::gladiatr_cpu3_map(address_map &map) +{ + map(0x1000, 0x1fff).w(this, FUNC(gladiatr_state::gladiator_adpcm_w)); + map(0x2000, 0x2fff).r(this, FUNC(gladiatr_state::adpcm_command_r)); + map(0x4000, 0xffff).bankr("bank2").nopw(); +} -ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu1_io) - AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */ - AM_RANGE(0xc09e, 0xc09f) AM_DEVREADWRITE("ucpu", upi41_cpu_device, upi41_master_r, upi41_master_w) - AM_RANGE(0xc0bf, 0xc0bf) AM_NOP // watchdog_reset_w doesn't work -ADDRESS_MAP_END +void gladiatr_state::gladiatr_cpu1_io(address_map &map) +{ + map(0xc000, 0xc007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xc004, 0xc004).w(this, FUNC(gladiatr_state::gladiatr_irq_patch_w)); /* !!! patch to 2nd CPU IRQ !!! */ + map(0xc09e, 0xc09f).rw(m_ucpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); + map(0xc0bf, 0xc0bf).noprw(); // watchdog_reset_w doesn't work +} -ADDRESS_MAP_START(gladiatr_state::gladiatr_cpu2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("csnd", upi41_cpu_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x40, 0x40) AM_NOP // WRITE(sub_irq_ack_w) - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("cctl", upi41_cpu_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ccpu", upi41_cpu_device, upi41_master_r, upi41_master_w) - AM_RANGE(0xa0, 0xa7) AM_DEVWRITE("filtlatch", ls259_device, write_d0) - AM_RANGE(0xe0, 0xe0) AM_WRITE(adpcm_command_w) -ADDRESS_MAP_END +void gladiatr_state::gladiatr_cpu2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x20, 0x21).rw(m_csnd, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); + map(0x40, 0x40).noprw(); // WRITE(sub_irq_ack_w) + map(0x60, 0x61).rw(m_cctl, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); + map(0x80, 0x81).rw(m_ccpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); + map(0xa0, 0xa7).w("filtlatch", FUNC(ls259_device::write_d0)); + map(0xe0, 0xe0).w(this, FUNC(gladiatr_state::adpcm_command_w)); +} static INPUT_PORTS_START( ppking ) diff --git a/src/mame/drivers/glasgow.cpp b/src/mame/drivers/glasgow.cpp index 88f02f0cc5b..26e524a729a 100644 --- a/src/mame/drivers/glasgow.cpp +++ b/src/mame/drivers/glasgow.cpp @@ -490,42 +490,45 @@ void glasgow_state::machine_reset() } -ADDRESS_MAP_START(glasgow_state::glasgow_mem) - ADDRESS_MAP_GLOBAL_MASK(0x1ffff) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x010000, 0x010001) AM_WRITE8( glasgow_lcd_w, 0xff00 ) - AM_RANGE(0x010002, 0x010003) AM_READWRITE( glasgow_keys_r, glasgow_keys_w ) - AM_RANGE(0x010004, 0x010005) AM_WRITE8( glasgow_lcd_flag_w, 0xff00 ) - AM_RANGE(0x010006, 0x010007) AM_READWRITE( glasgow_board_r, glasgow_beeper_w ) - AM_RANGE(0x010008, 0x010009) AM_WRITE( glasgow_board_w ) - AM_RANGE(0x01c000, 0x01ffff) AM_RAM // 16KB -ADDRESS_MAP_END - -ADDRESS_MAP_START(amsterd_state::amsterd_mem) +void glasgow_state::glasgow_mem(address_map &map) +{ + map.global_mask(0x1ffff); + map(0x000000, 0x00ffff).rom(); + map(0x010000, 0x010000).w(this, FUNC(glasgow_state::glasgow_lcd_w)); + map(0x010002, 0x010003).rw(this, FUNC(glasgow_state::glasgow_keys_r), FUNC(glasgow_state::glasgow_keys_w)); + map(0x010004, 0x010004).w(this, FUNC(glasgow_state::glasgow_lcd_flag_w)); + map(0x010006, 0x010007).rw(this, FUNC(glasgow_state::glasgow_board_r), FUNC(glasgow_state::glasgow_beeper_w)); + map(0x010008, 0x010009).w(this, FUNC(glasgow_state::glasgow_board_w)); + map(0x01c000, 0x01ffff).ram(); // 16KB +} + +void amsterd_state::amsterd_mem(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x7FFFF) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x800002, 0x800003) AM_WRITE8( write_lcd, 0xff00 ) - AM_RANGE(0x800008, 0x800009) AM_WRITE8( write_lcd_flag, 0xff00 ) - AM_RANGE(0x800004, 0x800005) AM_WRITE8( write_beeper, 0xff00 ) - AM_RANGE(0x800010, 0x800011) AM_WRITE8( write_board, 0xff00 ) - AM_RANGE(0x800020, 0x800021) AM_READ( read_board ) - AM_RANGE(0x800040, 0x800041) AM_READ8( read_newkeys, 0xff00 ) - AM_RANGE(0x800088, 0x800089) AM_WRITE( write_lcd_invert ) - AM_RANGE(0xffc000, 0xffffff) AM_RAM // 16KB -ADDRESS_MAP_END - -ADDRESS_MAP_START(amsterd_state::dallas32_mem) + map(0x000000, 0x00ffff).rom(); + map(0x800002, 0x800002).w(this, FUNC(amsterd_state::write_lcd)); + map(0x800008, 0x800008).w(this, FUNC(amsterd_state::write_lcd_flag)); + map(0x800004, 0x800004).w(this, FUNC(amsterd_state::write_beeper)); + map(0x800010, 0x800010).w(this, FUNC(amsterd_state::write_board)); + map(0x800020, 0x800021).r(this, FUNC(amsterd_state::read_board)); + map(0x800040, 0x800040).r(this, FUNC(amsterd_state::read_newkeys)); + map(0x800088, 0x800089).w(this, FUNC(amsterd_state::write_lcd_invert)); + map(0xffc000, 0xffffff).ram(); // 16KB +} + +void amsterd_state::dallas32_mem(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x1FFFF) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x010000, 0x01ffff) AM_RAM // 64KB - AM_RANGE(0x800000, 0x800003) AM_WRITE8( write_lcd, 0x0000ff00 ) - AM_RANGE(0x800004, 0x800007) AM_WRITE8( write_beeper, 0xff000000 ) - AM_RANGE(0x800008, 0x80000b) AM_WRITE8( write_lcd_flag, 0xff000000 ) - AM_RANGE(0x800010, 0x800013) AM_WRITE8( write_board, 0xff000000 ) - AM_RANGE(0x800020, 0x800023) AM_READ( read_board32 ) - AM_RANGE(0x800040, 0x800043) AM_READ8( read_newkeys, 0xff000000 ) - AM_RANGE(0x800088, 0x80008b) AM_WRITE( write_keys32 ) -ADDRESS_MAP_END + map(0x000000, 0x00ffff).rom(); + map(0x010000, 0x01ffff).ram(); // 64KB + map(0x800002, 0x800002).w(this, FUNC(amsterd_state::write_lcd)); + map(0x800004, 0x800004).w(this, FUNC(amsterd_state::write_beeper)); + map(0x800008, 0x800008).w(this, FUNC(amsterd_state::write_lcd_flag)); + map(0x800010, 0x800010).w(this, FUNC(amsterd_state::write_board)); + map(0x800020, 0x800023).r(this, FUNC(amsterd_state::read_board32)); + map(0x800040, 0x800040).r(this, FUNC(amsterd_state::read_newkeys)); + map(0x800088, 0x80008b).w(this, FUNC(amsterd_state::write_keys32)); +} static INPUT_PORTS_START( chessboard ) diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp index 9955867a9bc..d48b3532a2b 100644 --- a/src/mame/drivers/glass.cpp +++ b/src/mame/drivers/glass.cpp @@ -104,35 +104,38 @@ WRITE_LINE_MEMBER(glass_state::coin2_counter_w) } -ADDRESS_MAP_START(glass_state::mcu_hostmem_map) - AM_RANGE(0x0000, 0xffff) AM_MASK(0x3fff) AM_READWRITE(shareram_r, shareram_w) // shared RAM with the main CPU -ADDRESS_MAP_END - - -ADDRESS_MAP_START(glass_state::glass_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") // Video RAM - AM_RANGE(0x102000, 0x102fff) AM_RAM // Extra Video RAM - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") // Video Registers - AM_RANGE(0x108008, 0x108009) AM_WRITE(clr_int_w) // CLR INT Video - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") // Sprite RAM - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - AM_RANGE(0x700008, 0x700009) AM_WRITE(blitter_w) // serial blitter - AM_RANGE(0x70000a, 0x70000b) AM_SELECT(0x000070) AM_WRITE(coin_w) // Coin Counters/Lockout - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) // OKI6295 bankswitch - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // OKI6295 status register - AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") // Work RAM (partially shared with DS5002FP) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(glass_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void glass_state::mcu_hostmem_map(address_map &map) +{ + map(0x0000, 0xffff).mask(0x3fff).rw(this, FUNC(glass_state::shareram_r), FUNC(glass_state::shareram_w)); // shared RAM with the main CPU +} + + +void glass_state::glass_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x101fff).ram().w(this, FUNC(glass_state::vram_w)).share("videoram"); // Video RAM + map(0x102000, 0x102fff).ram(); // Extra Video RAM + map(0x108000, 0x108007).writeonly().share("vregs"); // Video Registers + map(0x108008, 0x108009).w(this, FUNC(glass_state::clr_int_w)); // CLR INT Video + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x440000, 0x440fff).ram().share("spriteram"); // Sprite RAM + map(0x700000, 0x700001).portr("DSW2"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x700008, 0x700009).w(this, FUNC(glass_state::blitter_w)); // serial blitter + map(0x70000a, 0x70000b).select(0x000070).w(this, FUNC(glass_state::coin_w)); // Coin Counters/Lockout + map(0x70000c, 0x70000d).w(this, FUNC(glass_state::OKIM6295_bankswitch_w)); // OKI6295 bankswitch + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI6295 status register + map(0xfec000, 0xfeffff).ram().share("shareram"); // Work RAM (partially shared with DS5002FP) +} + + +void glass_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( glass ) diff --git a/src/mame/drivers/globalfr.cpp b/src/mame/drivers/globalfr.cpp index 60ce27ff1cd..543174d0e4b 100644 --- a/src/mame/drivers/globalfr.cpp +++ b/src/mame/drivers/globalfr.cpp @@ -52,12 +52,13 @@ WRITE16_MEMBER(globalfr_state::vfd_w) } } -ADDRESS_MAP_START(globalfr_state::globalfr_map) - AM_RANGE(0x002000, 0x002fff) AM_RAM - AM_RANGE(0x008000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0x8000) - AM_RANGE(0x0a0000, 0x0a01ff) AM_RAM - AM_RANGE(0x7e0040, 0x7e0041) AM_WRITE(vfd_w) -ADDRESS_MAP_END +void globalfr_state::globalfr_map(address_map &map) +{ + map(0x002000, 0x002fff).ram(); + map(0x008000, 0x07ffff).rom().region("maincpu", 0x8000); + map(0x0a0000, 0x0a01ff).ram(); + map(0x7e0040, 0x7e0041).w(this, FUNC(globalfr_state::vfd_w)); +} static INPUT_PORTS_START( globalfr ) INPUT_PORTS_END diff --git a/src/mame/drivers/globalvr.cpp b/src/mame/drivers/globalvr.cpp index 0e14019948d..66c71f313fc 100644 --- a/src/mame/drivers/globalvr.cpp +++ b/src/mame/drivers/globalvr.cpp @@ -77,9 +77,10 @@ protected: -ADDRESS_MAP_START(globalvr_state::globalvr_map) - AM_RANGE(0x00000000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void globalvr_state::globalvr_map(address_map &map) +{ + map(0x00000000, 0xffffff).ram(); +} static INPUT_PORTS_START( globalvr ) diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp index 38a9b806aed..427c801953e 100644 --- a/src/mame/drivers/gluck2.cpp +++ b/src/mame/drivers/gluck2.cpp @@ -308,22 +308,23 @@ WRITE8_MEMBER(gluck2_state::counters_w) * Memory map information * *********************************************/ -ADDRESS_MAP_START(gluck2_state::gluck2_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x084b) AM_NOP /* see below */ - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* 6116 #1 (2K x 8) RAM (only 1st half used) */ - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* 6116 #2 (2K x 8) RAM (only 1st half used) */ - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW1") - AM_RANGE(0x2d00, 0x2d01) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x3400, 0x3400) AM_READ_PORT("IN0") - AM_RANGE(0x3500, 0x3500) AM_READ_PORT("IN1") - AM_RANGE(0x3600, 0x3600) AM_READ_PORT("IN2") - AM_RANGE(0x3700, 0x3700) AM_WRITE(counters_w ) - AM_RANGE(0x3d00, 0x3d01) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void gluck2_state::gluck2_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x084b).noprw(); /* see below */ + map(0x1000, 0x13ff).ram().w(this, FUNC(gluck2_state::videoram_w)).share("videoram"); /* 6116 #1 (2K x 8) RAM (only 1st half used) */ + map(0x1800, 0x1bff).ram().w(this, FUNC(gluck2_state::colorram_w)).share("colorram"); /* 6116 #2 (2K x 8) RAM (only 1st half used) */ + map(0x2000, 0x2000).portr("SW1"); + map(0x2d00, 0x2d01).w("ymsnd", FUNC(ym2413_device::write)); + map(0x3400, 0x3400).portr("IN0"); + map(0x3500, 0x3500).portr("IN1"); + map(0x3600, 0x3600).portr("IN2"); + map(0x3700, 0x3700).w(this, FUNC(gluck2_state::counters_w)); + map(0x3d00, 0x3d01).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x4000, 0xffff).rom(); +} /* 0844-0847 PIA0 leftover??? diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp index 4e4e2ff6897..299e9f975b1 100644 --- a/src/mame/drivers/gmaster.cpp +++ b/src/mame/drivers/gmaster.cpp @@ -237,11 +237,12 @@ WRITE8_MEMBER(gmaster_state::gmaster_portf_w) } -ADDRESS_MAP_START(gmaster_state::gmaster_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_READWRITE(gmaster_io_r, gmaster_io_w) +void gmaster_state::gmaster_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).rw(this, FUNC(gmaster_state::gmaster_io_r), FUNC(gmaster_state::gmaster_io_w)); //AM_RANGE(0x8000, 0xfeff) // mapped by the cartslot -ADDRESS_MAP_END +} static INPUT_PORTS_START( gmaster ) diff --git a/src/mame/drivers/gng.cpp b/src/mame/drivers/gng.cpp index a91bff687c3..55723487f62 100644 --- a/src/mame/drivers/gng.cpp +++ b/src/mame/drivers/gng.cpp @@ -65,63 +65,66 @@ READ8_MEMBER(gng_state::diamond_hack_r) return 0; } -ADDRESS_MAP_START(gng_state::gng_map) - AM_RANGE(0x0000, 0x1dff) AM_RAM - AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(gng_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(gng_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P1") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P2") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW1") - AM_RANGE(0x3004, 0x3004) AM_READ_PORT("DSW2") - AM_RANGE(0x3800, 0x38ff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3900, 0x39ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3b08, 0x3b09) AM_WRITE(gng_bgscrollx_w) - AM_RANGE(0x3b0a, 0x3b0b) AM_WRITE(gng_bgscrolly_w) - AM_RANGE(0x3c00, 0x3c00) AM_NOP /* watchdog? */ - AM_RANGE(0x3d00, 0x3d07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(gng_bankswitch_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gng_state::diamond_map) - AM_RANGE(0x0000, 0x1dff) AM_RAM - AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(gng_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(gng_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x3000, 0x33ff) AM_NOP // faulty POST? - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P1") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P2") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW1") - AM_RANGE(0x3004, 0x3004) AM_READ_PORT("DSW2") - AM_RANGE(0x3800, 0x38ff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3900, 0x39ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3b08, 0x3b09) AM_WRITE(gng_bgscrollx_w) - AM_RANGE(0x3b0a, 0x3b0b) AM_WRITE(gng_bgscrolly_w) - AM_RANGE(0x3c00, 0x3c00) AM_NOP /* watchdog? */ - AM_RANGE(0x3d00, 0x3d00) AM_WRITENOP // ? (writes $01 and $0F) - AM_RANGE(0x3d01, 0x3d01) AM_WRITENOP // ? - AM_RANGE(0x3e00, 0x3e00) AM_WRITE(gng_bankswitch_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0xffff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_READ(diamond_hack_r) - AM_RANGE(0x6048, 0x6048) AM_WRITENOP // ? -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(gng_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_device, write) -ADDRESS_MAP_END +void gng_state::gng_map(address_map &map) +{ + map(0x0000, 0x1dff).ram(); + map(0x1e00, 0x1fff).ram().share("spriteram"); + map(0x2000, 0x27ff).ram().w(this, FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram"); + map(0x3000, 0x3000).portr("SYSTEM"); + map(0x3001, 0x3001).portr("P1"); + map(0x3002, 0x3002).portr("P2"); + map(0x3003, 0x3003).portr("DSW1"); + map(0x3004, 0x3004).portr("DSW2"); + map(0x3800, 0x38ff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3b08, 0x3b09).w(this, FUNC(gng_state::gng_bgscrollx_w)); + map(0x3b0a, 0x3b0b).w(this, FUNC(gng_state::gng_bgscrolly_w)); + map(0x3c00, 0x3c00).noprw(); /* watchdog? */ + map(0x3d00, 0x3d07).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x3e00, 0x3e00).w(this, FUNC(gng_state::gng_bankswitch_w)); + map(0x4000, 0x5fff).bankr("bank1"); + map(0x6000, 0xffff).rom(); +} + +void gng_state::diamond_map(address_map &map) +{ + map(0x0000, 0x1dff).ram(); + map(0x1e00, 0x1fff).ram().share("spriteram"); + map(0x2000, 0x27ff).ram().w(this, FUNC(gng_state::gng_fgvideoram_w)).share("fgvideoram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(gng_state::gng_bgvideoram_w)).share("bgvideoram"); + map(0x3000, 0x33ff).noprw(); // faulty POST? + map(0x3000, 0x3000).portr("SYSTEM"); + map(0x3001, 0x3001).portr("P1"); + map(0x3002, 0x3002).portr("P2"); + map(0x3003, 0x3003).portr("DSW1"); + map(0x3004, 0x3004).portr("DSW2"); + map(0x3800, 0x38ff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x3900, 0x39ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3b08, 0x3b09).w(this, FUNC(gng_state::gng_bgscrollx_w)); + map(0x3b0a, 0x3b0b).w(this, FUNC(gng_state::gng_bgscrolly_w)); + map(0x3c00, 0x3c00).noprw(); /* watchdog? */ + map(0x3d00, 0x3d00).nopw(); // ? (writes $01 and $0F) + map(0x3d01, 0x3d01).nopw(); // ? + map(0x3e00, 0x3e00).w(this, FUNC(gng_state::gng_bankswitch_w)); + map(0x4000, 0x5fff).bankr("bank1"); + map(0x6000, 0xffff).rom(); + map(0x6000, 0x6000).r(this, FUNC(gng_state::diamond_hack_r)); + map(0x6048, 0x6048).nopw(); // ? +} + + + +void gng_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write)); + map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write)); +} static INPUT_PORTS_START( gng ) diff --git a/src/mame/drivers/go2000.cpp b/src/mame/drivers/go2000.cpp index f26ac2a6adb..4b181acd502 100644 --- a/src/mame/drivers/go2000.cpp +++ b/src/mame/drivers/go2000.cpp @@ -85,36 +85,39 @@ WRITE16_MEMBER(go2000_state::sound_cmd_w) m_soundcpu->set_input_line(0, HOLD_LINE); } -ADDRESS_MAP_START(go2000_state::go2000_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x610000, 0x61ffff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x800000, 0x800fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("INPUTS") - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW") - AM_RANGE(0x620002, 0x620003) AM_WRITE(sound_cmd_w) +void go2000_state::go2000_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x203fff).ram(); + map(0x600000, 0x60ffff).ram().share("videoram"); + map(0x610000, 0x61ffff).ram().share("videoram2"); + map(0x800000, 0x800fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa00000, 0xa00001).portr("INPUTS"); + map(0xa00002, 0xa00003).portr("DSW"); + map(0x620002, 0x620003).w(this, FUNC(go2000_state::sound_cmd_w)); // AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // AM_RANGE(0xe00010, 0xe00011) AM_WRITENOP // AM_RANGE(0xe00020, 0xe00021) AM_WRITENOP -ADDRESS_MAP_END +} WRITE8_MEMBER(go2000_state::go2000_pcm_1_bankswitch_w) { membank("bank1")->set_entry(data & 0x07); } -ADDRESS_MAP_START(go2000_state::go2000_sound_map) - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x0400, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(go2000_state::go2000_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_WRITE(go2000_pcm_1_bankswitch_w) -ADDRESS_MAP_END +void go2000_state::go2000_sound_map(address_map &map) +{ + map(0x0000, 0x03ff).rom(); + map(0x0400, 0xffff).bankr("bank1"); +} + +void go2000_state::go2000_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x00, 0x00).w("dac", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w(this, FUNC(go2000_state::go2000_pcm_1_bankswitch_w)); +} static INPUT_PORTS_START( go2000 ) diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp index 31066f425ef..8154a237b8e 100644 --- a/src/mame/drivers/goal92.cpp +++ b/src/mame/drivers/goal92.cpp @@ -51,24 +51,25 @@ READ16_MEMBER(goal92_state::goal92_inputs_r) return 0; } -ADDRESS_MAP_START(goal92_state::goal92_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1007ff) AM_RAM - AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(goal92_background_w) AM_SHARE("bg_data") - AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(goal92_foreground_w) AM_SHARE("fg_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // it has tiles for clouds, but they aren't used - AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(goal92_text_w) AM_SHARE("tx_data") - AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x104000, 0x13ffff) AM_RAM - AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140800, 0x140801) AM_WRITENOP - AM_RANGE(0x140802, 0x140803) AM_WRITENOP - AM_RANGE(0x180000, 0x18000f) AM_READ(goal92_inputs_r) - AM_RANGE(0x180008, 0x180009) AM_WRITE(goal92_sound_command_w) - AM_RANGE(0x18000a, 0x18000b) AM_WRITENOP - AM_RANGE(0x180010, 0x180017) AM_WRITEONLY AM_SHARE("scrollram") - AM_RANGE(0x18001c, 0x18001d) AM_READWRITE(goal92_fg_bank_r, goal92_fg_bank_w) -ADDRESS_MAP_END +void goal92_state::goal92_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1007ff).ram(); + map(0x100800, 0x100fff).ram().w(this, FUNC(goal92_state::goal92_background_w)).share("bg_data"); + map(0x101000, 0x1017ff).ram().w(this, FUNC(goal92_state::goal92_foreground_w)).share("fg_data"); + map(0x101800, 0x101fff).ram(); // it has tiles for clouds, but they aren't used + map(0x102000, 0x102fff).ram().w(this, FUNC(goal92_state::goal92_text_w)).share("tx_data"); + map(0x103000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x104000, 0x13ffff).ram(); + map(0x140000, 0x1407ff).ram().share("spriteram"); + map(0x140800, 0x140801).nopw(); + map(0x140802, 0x140803).nopw(); + map(0x180000, 0x18000f).r(this, FUNC(goal92_state::goal92_inputs_r)); + map(0x180008, 0x180009).w(this, FUNC(goal92_state::goal92_sound_command_w)); + map(0x18000a, 0x18000b).nopw(); + map(0x180010, 0x180017).writeonly().share("scrollram"); + map(0x18001c, 0x18001d).rw(this, FUNC(goal92_state::goal92_fg_bank_r), FUNC(goal92_state::goal92_fg_bank_w)); +} /* Sound CPU */ @@ -84,16 +85,17 @@ WRITE8_MEMBER(goal92_state::adpcm_data_w) m_msm5205next = data; } -ADDRESS_MAP_START(goal92_state::sound_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_control_w) - AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w) - AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void goal92_state::sound_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xe000, 0xe000).w(this, FUNC(goal92_state::adpcm_control_w)); + map(0xe400, 0xe400).w(this, FUNC(goal92_state::adpcm_data_w)); + map(0xe800, 0xe801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xec00, 0xec01).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( goal92 ) PORT_START("DSW1") diff --git a/src/mame/drivers/goindol.cpp b/src/mame/drivers/goindol.cpp index c6f710ddc21..719ccf462e5 100644 --- a/src/mame/drivers/goindol.cpp +++ b/src/mame/drivers/goindol.cpp @@ -81,38 +81,40 @@ WRITE8_MEMBER(goindol_state::prot_fcb0_w) -ADDRESS_MAP_START(goindol_state::goindol_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // watchdog? - AM_RANGE(0xc810, 0xc810) AM_WRITE(goindol_bankswitch_w) - AM_RANGE(0xc820, 0xc820) AM_READ_PORT("DIAL") - AM_RANGE(0xc820, 0xd820) AM_WRITEONLY AM_SHARE("fg_scrolly") - AM_RANGE(0xc830, 0xc830) AM_READ_PORT("P1") - AM_RANGE(0xc830, 0xd830) AM_WRITEONLY AM_SHARE("fg_scrollx") - AM_RANGE(0xc834, 0xc834) AM_READ_PORT("P2") - AM_RANGE(0xd000, 0xd03f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd040, 0xd7ff) AM_RAM - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(goindol_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe000, 0xe03f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xe040, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goindol_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") - AM_RANGE(0xf422, 0xf422) AM_READ(prot_f422_r) - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2") - AM_RANGE(0xfc44, 0xfc44) AM_WRITE(prot_fc44_w) - AM_RANGE(0xfc66, 0xfc66) AM_WRITE(prot_fc66_w) - AM_RANGE(0xfcb0, 0xfcb0) AM_WRITE(prot_fcb0_w) - AM_RANGE(0xfd99, 0xfd99) AM_WRITE(prot_fd99_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(goindol_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void goindol_state::goindol_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram().share("ram"); + map(0xc800, 0xc800).nopr().w("soundlatch", FUNC(generic_latch_8_device::write)); // watchdog? + map(0xc810, 0xc810).w(this, FUNC(goindol_state::goindol_bankswitch_w)); + map(0xc820, 0xc820).portr("DIAL"); + map(0xc820, 0xd820).writeonly().share("fg_scrolly"); + map(0xc830, 0xc830).portr("P1"); + map(0xc830, 0xd830).writeonly().share("fg_scrollx"); + map(0xc834, 0xc834).portr("P2"); + map(0xd000, 0xd03f).ram().share("spriteram"); + map(0xd040, 0xd7ff).ram(); + map(0xd800, 0xdfff).ram().w(this, FUNC(goindol_state::goindol_bg_videoram_w)).share("bg_videoram"); + map(0xe000, 0xe03f).ram().share("spriteram2"); + map(0xe040, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().w(this, FUNC(goindol_state::goindol_fg_videoram_w)).share("fg_videoram"); + map(0xf000, 0xf000).portr("DSW1"); + map(0xf422, 0xf422).r(this, FUNC(goindol_state::prot_f422_r)); + map(0xf800, 0xf800).portr("DSW2"); + map(0xfc44, 0xfc44).w(this, FUNC(goindol_state::prot_fc44_w)); + map(0xfc66, 0xfc66).w(this, FUNC(goindol_state::prot_fc66_w)); + map(0xfcb0, 0xfcb0).w(this, FUNC(goindol_state::prot_fcb0_w)); + map(0xfd99, 0xfd99).w(this, FUNC(goindol_state::prot_fd99_w)); +} + +void goindol_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa001).w("ymsnd", FUNC(ym2203_device::write)); + map(0xc000, 0xc7ff).ram(); + map(0xd800, 0xd800).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( goindol ) diff --git a/src/mame/drivers/gokidetor.cpp b/src/mame/drivers/gokidetor.cpp index f00ffb8482c..b67ee1e5fbb 100644 --- a/src/mame/drivers/gokidetor.cpp +++ b/src/mame/drivers/gokidetor.cpp @@ -86,36 +86,38 @@ WRITE8_MEMBER(gokidetor_state::ym_porta_w) } -ADDRESS_MAP_START(gokidetor_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROM // probably banked - AM_RANGE(0xa000, 0xbfff) AM_RAM +void gokidetor_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).rom(); // probably banked + map(0xa000, 0xbfff).ram(); // c000-c??? = ? // c200-c??? = ? // d000 = ?output // d001 = ?output // d101 = ?output // d1c0 = ?output - AM_RANGE(0xd800, 0xd80f) AM_DEVREADWRITE("te7750", te7750_device, read, write) + map(0xd800, 0xd80f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)); //AM_RANGE(0xda00, 0xda01) AM_DEVWRITE("pwm", m66240_device, write) // de00 ?input // df00 ?input - AM_RANGE(0xe000, 0xe003) AM_READNOP // ?input - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("ciu", pc060ha_device, master_port_w) - AM_RANGE(0xf001, 0xf001) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w) + map(0xe000, 0xe003).nopr(); // ?input + map(0xf000, 0xf000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xf001, 0xf001).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); // f600 ?output // f700 ?output -ADDRESS_MAP_END +} -ADDRESS_MAP_START(gokidetor_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void gokidetor_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xb000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} MACHINE_CONFIG_START(gokidetor_state::gokidetor) diff --git a/src/mame/drivers/goldngam.cpp b/src/mame/drivers/goldngam.cpp index f13a4c05210..9b5a3b9da73 100644 --- a/src/mame/drivers/goldngam.cpp +++ b/src/mame/drivers/goldngam.cpp @@ -307,21 +307,22 @@ READ16_MEMBER(goldngam_state::unk_r) return test1; } -ADDRESS_MAP_START(goldngam_state::swisspkr_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x400002, 0x400003) AM_NOP // hopper status read ? - AM_RANGE(0x40000c, 0x40000d) AM_READ(unk_r) - AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("DSW2") // not sure... - AM_RANGE(0x402000, 0x402001) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x402000, 0x402003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) //wrong - - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x500200, 0x50020f) AM_RAM //? - AM_RANGE(0x503000, 0x503001) AM_RAM //int ack ? - AM_RANGE(0x503002, 0x503003) AM_RAM //int ack ? - AM_RANGE(0x503006, 0x503007) AM_RAM //int ack ? -ADDRESS_MAP_END +void goldngam_state::swisspkr_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x400002, 0x400003).noprw(); // hopper status read ? + map(0x40000c, 0x40000d).r(this, FUNC(goldngam_state::unk_r)); + map(0x40000e, 0x40000f).portr("DSW2"); // not sure... + map(0x402001, 0x402001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x402000, 0x402003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); //wrong + + map(0xc00000, 0xc3ffff).ram().share("videoram"); + map(0x500200, 0x50020f).ram(); //? + map(0x503000, 0x503001).ram(); //int ack ? + map(0x503002, 0x503003).ram(); //int ack ? + map(0x503006, 0x503007).ram(); //int ack ? +} /* unknown R/W: @@ -357,12 +358,13 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(goldngam_state::moviecrd_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x503000, 0x5031ff) AM_RAM //int ack ? -ADDRESS_MAP_END +void goldngam_state::moviecrd_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0xc00000, 0xc3ffff).ram().share("videoram"); + map(0x503000, 0x5031ff).ram(); //int ack ? +} /* diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 82655adcf4d..b84571740d3 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -1832,44 +1832,47 @@ READ8_MEMBER(goldnpkr_state::pia1_b_r) * Memory Map Information * *********************************************/ -ADDRESS_MAP_START(goldnpkr_state::goldnpkr_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x7fff) AM_ROM /* superdbl uses 0x2000..0x3fff address space */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(goldnpkr_state::pottnpkr_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(goldnpkr_state::witchcrd_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") +void goldnpkr_state::goldnpkr_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x7fff).rom(); /* superdbl uses 0x2000..0x3fff address space */ +} + +void goldnpkr_state::pottnpkr_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x3fff).rom(); +} + +void goldnpkr_state::witchcrd_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x2000).portr("SW2"); // AM_RANGE(0x2108, 0x210b) AM_NOP /* unknown 40-pin device */ - AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_ROM -ADDRESS_MAP_END + map(0x2800, 0x2fff).ram(); + map(0x4000, 0x7fff).rom(); +} /* Witch Card (Video klein) @@ -1883,33 +1886,35 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(goldnpkr_state::witchcrd_falcon_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") - AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x4000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(goldnpkr_state::wildcard_map) +void goldnpkr_state::witchcrd_falcon_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x2000).portr("SW2"); + map(0x2100, 0x2100).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2101, 0x2101).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x4000, 0x7fff).rom(); +} + +void goldnpkr_state::wildcard_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") - AM_RANGE(0x2200, 0x27ff) AM_ROM /* for VK set */ - AM_RANGE(0x2800, 0x2fff) AM_RAM /* for VK set */ - AM_RANGE(0x3000, 0xffff) AM_ROM /* for VK set. bootleg starts from 4000 */ -ADDRESS_MAP_END + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x2000).portr("SW2"); + map(0x2200, 0x27ff).rom(); /* for VK set */ + map(0x2800, 0x2fff).ram(); /* for VK set */ + map(0x3000, 0xffff).rom(); /* for VK set. bootleg starts from 4000 */ +} /* Video Klein extended hardware @@ -1918,19 +1923,20 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(goldnpkr_state::wcrdxtnd_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM //AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") - AM_RANGE(0x2200, 0x27ff) AM_ROM /* for VK hardware */ - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram") /* Dallas ds1210 + battery backed RAM */ - AM_RANGE(0x3000, 0xffff) AM_ROM /* for VK hardware. bootleg starts from 4000 */ -ADDRESS_MAP_END +void goldnpkr_state::wcrdxtnd_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); //AM_SHARE("nvram") /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x2000).portr("SW2"); + map(0x2200, 0x27ff).rom(); /* for VK hardware */ + map(0x2800, 0x2fff).ram().share("nvram"); /* Dallas ds1210 + battery backed RAM */ + map(0x3000, 0xffff).rom(); /* for VK hardware. bootleg starts from 4000 */ +} /* @@ -1938,29 +1944,32 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(goldnpkr_state::wildcrdb_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") - AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(goldnpkr_state::wildcrdb_mcu_map) +void goldnpkr_state::wildcrdb_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x2000).portr("SW2"); + map(0x2100, 0x2100).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2101, 0x2101).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2800, 0x2fff).ram(); + map(0x3000, 0x7fff).rom(); +} + +void goldnpkr_state::wildcrdb_mcu_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x2fff) AM_RAM -ADDRESS_MAP_END + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x2fff).ram(); +} -ADDRESS_MAP_START(goldnpkr_state::wildcrdb_mcu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void goldnpkr_state::wildcrdb_mcu_io_map(address_map &map) +{ + map.global_mask(0xff); +} /* wildcrdb: @@ -1971,42 +1980,45 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(goldnpkr_state::genie_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(goldnpkr_state::mondial_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(goldnpkr_state::bchancep_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void goldnpkr_state::genie_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x17ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1fff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x3fff).rom(); +} + + +void goldnpkr_state::mondial_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x4000, 0x7fff).bankr("bank1"); +} + +void goldnpkr_state::bchancep_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0x7fff).rom(); +} /********************************************* @@ -4603,12 +4615,13 @@ WRITE8_MEMBER(blitz_state::mcu_portc_w) } -ADDRESS_MAP_START(blitz_state::megadpkr_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM //AM_SHARE("nvram") /* battery backed RAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) +void blitz_state::megadpkr_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); //AM_SHARE("nvram") /* battery backed RAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* There is another set of PIAs controlled by the code. Maybe they are just mirrors... @@ -4616,18 +4629,19 @@ ADDRESS_MAP_START(blitz_state::megadpkr_map) AM_RANGE(0x10f4, 0x10f7) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x10f8, 0x10fb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) */ - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_SHARE("colorram") - - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bankdev", address_map_bank_device, read8, write8) - AM_RANGE(0x8000, 0xbfff) AM_READNOP AM_WRITE(mcu_command_w) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(blitz_state::megadpkr_banked_map) - AM_RANGE(0x00000, 0x07fff) AM_READ(cpubank_decrypt_r) - AM_RANGE(0x08000, 0x087ff) AM_DEVREADWRITE("timekpr", m48t02_device, read, write) -ADDRESS_MAP_END + map(0x1000, 0x13ff).ram().w(this, FUNC(blitz_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(this, FUNC(blitz_state::goldnpkr_colorram_w)).share("colorram"); + + map(0x4000, 0x7fff).rw(m_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0xbfff).nopr().w(this, FUNC(blitz_state::mcu_command_w)); + map(0xc000, 0xffff).rom(); +} + +void blitz_state::megadpkr_banked_map(address_map &map) +{ + map(0x00000, 0x07fff).r(this, FUNC(blitz_state::cpubank_decrypt_r)); + map(0x08000, 0x087ff).rw("timekpr", FUNC(m48t02_device::read), FUNC(m48t02_device::write)); +} static INPUT_PORTS_START( megadpkr ) diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index d6ef9482f94..a81e62f4409 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -330,73 +330,76 @@ WRITE8_MEMBER(goldstar_state::p2_lamps_w) } -ADDRESS_MAP_START(goldstar_state::goldstar_map) - AM_RANGE(0x0000, 0xb7ff) AM_ROM - AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xc7ff) AM_ROM - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(goldstar_fg_vidram_w ) AM_SHARE("fg_vidram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(goldstar_fg_atrram_w ) AM_SHARE("fg_atrram") - AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE(0xf040, 0xf07f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xf080, 0xf0bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xf0c0, 0xf0ff) AM_RAM AM_SHARE("reel3_scroll") - - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1") /* Test Mode */ - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("DSW1") +void goldstar_state::goldstar_map(address_map &map) +{ + map(0x0000, 0xb7ff).rom(); + map(0xb800, 0xbfff).ram().share("nvram"); + map(0xc000, 0xc7ff).rom(); + map(0xc800, 0xcfff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0xd800, 0xd9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xe000, 0xe1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xe800, 0xe9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xf040, 0xf07f).ram().share("reel1_scroll"); + map(0xf080, 0xf0bf).ram().share("reel2_scroll"); + map(0xf0c0, 0xf0ff).ram().share("reel3_scroll"); + + map(0xf800, 0xf800).portr("IN0"); + map(0xf801, 0xf801).portr("IN1"); /* Test Mode */ + map(0xf802, 0xf802).portr("DSW1"); // AM_RANGE(0xf803, 0xf803) // AM_RANGE(0xf804, 0xf804) - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW4") /* DSW 4 (also appears in 8910 port) */ - AM_RANGE(0xf806, 0xf806) AM_READ_PORT("DSW7") /* (don't know to which one of the */ - AM_RANGE(0xf810, 0xf810) AM_READ_PORT("UNK1") - AM_RANGE(0xf811, 0xf811) AM_READ_PORT("UNK2") - AM_RANGE(0xf820, 0xf820) AM_READ_PORT("DSW2") - AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xf900, 0xf900) AM_WRITE(p1_lamps_w) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(goldstar_fa00_w) - AM_RANGE(0xfb00, 0xfb00) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xfd00, 0xfdff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xfe00, 0xfe00) AM_READWRITE(protection_r,protection_w) -ADDRESS_MAP_END + map(0xf805, 0xf805).portr("DSW4"); /* DSW 4 (also appears in 8910 port) */ + map(0xf806, 0xf806).portr("DSW7"); /* (don't know to which one of the */ + map(0xf810, 0xf810).portr("UNK1"); + map(0xf811, 0xf811).portr("UNK2"); + map(0xf820, 0xf820).portr("DSW2"); + map(0xf830, 0xf830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xf840, 0xf840).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xf900, 0xf900).w(this, FUNC(goldstar_state::p1_lamps_w)); + map(0xfa00, 0xfa00).w(this, FUNC(goldstar_state::goldstar_fa00_w)); + map(0xfb00, 0xfb00).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xfd00, 0xfdff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xfe00, 0xfe00).rw(this, FUNC(goldstar_state::protection_r), FUNC(goldstar_state::protection_w)); +} -ADDRESS_MAP_START(goldstar_state::goldstar_readport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW6") -ADDRESS_MAP_END +void goldstar_state::goldstar_readport(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).portr("DSW6"); +} -ADDRESS_MAP_START(sanghopm_state::star100_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM +void sanghopm_state::star100_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(fg_vidram_w) AM_SHARE("fg_vidram") // videoram 1 - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_atrram_w) AM_SHARE("fg_atrram") // atrram 1 + map(0xc800, 0xcfff).ram().w(this, FUNC(sanghopm_state::fg_vidram_w)).share("fg_vidram"); // videoram 1 + map(0xd000, 0xd7ff).ram().w(this, FUNC(sanghopm_state::fg_atrram_w)).share("fg_atrram"); // atrram 1 - AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xd840, 0xd9ff) AM_RAM - AM_RANGE(0xda00, 0xda3f) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xda40, 0xdbff) AM_RAM - AM_RANGE(0xdc00, 0xdc3f) AM_RAM AM_SHARE("reel3_scroll") - AM_RANGE(0xdc40, 0xdfff) AM_RAM + map(0xd800, 0xd83f).ram().share("reel1_scroll"); + map(0xd840, 0xd9ff).ram(); + map(0xda00, 0xda3f).ram().share("reel2_scroll"); + map(0xda40, 0xdbff).ram(); + map(0xdc00, 0xdc3f).ram().share("reel3_scroll"); + map(0xdc40, 0xdfff).ram(); - AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xe200, 0xe3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") + map(0xe000, 0xe1ff).ram().w(this, FUNC(sanghopm_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xe200, 0xe3ff).ram().w(this, FUNC(sanghopm_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xe400, 0xe5ff).ram().w(this, FUNC(sanghopm_state::goldstar_reel3_ram_w)).share("reel3_ram"); - AM_RANGE(0xe600, 0xe7ff) AM_RAM_WRITE(bg_vidram_w) AM_SHARE("bg_vidram") // videoram 2 + map(0xe600, 0xe7ff).ram().w(this, FUNC(sanghopm_state::bg_vidram_w)).share("bg_vidram"); // videoram 2 - AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram") - AM_RANGE(0xea00, 0xebff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram") - AM_RANGE(0xec00, 0xedff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram") + map(0xe800, 0xe9ff).ram().w(this, FUNC(sanghopm_state::reel1_attrram_w)).share("reel1_attrram"); + map(0xea00, 0xebff).ram().w(this, FUNC(sanghopm_state::reel2_attrram_w)).share("reel2_attrram"); + map(0xec00, 0xedff).ram().w(this, FUNC(sanghopm_state::reel3_attrram_w)).share("reel3_attrram"); - AM_RANGE(0xee00, 0xefff) AM_RAM_WRITE(bg_atrram_w) AM_SHARE("bg_atrram") // atrram 2 + map(0xee00, 0xefff).ram().w(this, FUNC(sanghopm_state::bg_atrram_w)).share("bg_atrram"); // atrram 2 - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf800, 0xffff) AM_RAM + map(0xf000, 0xf7ff).ram().share("nvram"); + map(0xf800, 0xffff).ram(); -ADDRESS_MAP_END +} WRITE8_MEMBER(sanghopm_state::coincount_w) @@ -423,34 +426,35 @@ WRITE8_MEMBER(sanghopm_state::enable_w) m_enable_reg = data; } -ADDRESS_MAP_START(sanghopm_state::star100_readport) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void sanghopm_state::star100_readport(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, address_w) + map(0x08, 0x08).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::address_w)); - AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0") - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") - AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2") - AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3") - AM_RANGE(0x14, 0x14) AM_READ_PORT("DSW1") + map(0x10, 0x10).portr("IN0"); + map(0x11, 0x11).portr("IN1"); + map(0x12, 0x12).portr("IN2"); + map(0x13, 0x13).portr("IN3"); + map(0x14, 0x14).portr("DSW1"); - AM_RANGE(0x1c, 0x1c) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0x1d ,0x1d) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE(0x1e ,0x1e) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x1c, 0x1c).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x1d, 0x1d).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x1e, 0x1e).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW4-0") // the first 4 bits map to DSW4 1 to 4. - AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW4-1") // the first 4 bits map to DSW4 5 to 8. + map(0x20, 0x20).portr("DSW4-0"); // the first 4 bits map to DSW4 1 to 4. + map(0x21, 0x21).portr("DSW4-1"); // the first 4 bits map to DSW4 5 to 8. - AM_RANGE(0x24, 0x24) AM_WRITE(coincount_w) // coin counters. + map(0x24, 0x24).w(this, FUNC(sanghopm_state::coincount_w)); // coin counters. - AM_RANGE(0x25, 0x25) AM_READ_PORT("DSW2") - AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW3") + map(0x25, 0x25).portr("DSW2"); + map(0x26, 0x26).portr("DSW3"); - AM_RANGE(0xe0, 0xe0) AM_WRITENOP // Writing 0's and 1's constantly. Watchdog feeder? - AM_RANGE(0xe1, 0xe1) AM_WRITE(enable_w) // enable/disable reels register. + map(0xe0, 0xe0).nopw(); // Writing 0's and 1's constantly. Watchdog feeder? + map(0xe1, 0xe1).w(this, FUNC(sanghopm_state::enable_w)); // enable/disable reels register. -ADDRESS_MAP_END +} /* 08: W (3F) AY8910 data @@ -601,30 +605,31 @@ WRITE8_MEMBER(goldstar_state::ncb3_port81_w) } -ADDRESS_MAP_START(cb3_state::ncb3_map) - AM_RANGE(0x0000, 0xb7ff) AM_ROM - AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xc7ff) AM_ROM - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") - AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") - AM_RANGE(0xf040, 0xf07f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xf080, 0xf0bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xf100, 0xf17f) AM_RAM AM_SHARE("reel3_scroll") // moved compared to goldstar - - AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xf810, 0xf813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ - AM_RANGE(0xf822, 0xf822) AM_WRITE(goldstar_fa00_w) // hack (connected to ppi output port?, needed for colour banking) - - AM_RANGE(0xf830, 0xf830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xf840, 0xf840) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xf850, 0xf850) AM_WRITE(p1_lamps_w) /* Control Set 1 lamps */ - AM_RANGE(0xf860, 0xf860) AM_WRITE(p2_lamps_w) /* Control Set 2 lamps */ - AM_RANGE(0xf870, 0xf870) AM_DEVWRITE("snsnd", sn76489_device, write) /* guess... device is initialized, but doesn't seems to be used.*/ -ADDRESS_MAP_END +void cb3_state::ncb3_map(address_map &map) +{ + map(0x0000, 0xb7ff).rom(); + map(0xb800, 0xbfff).ram().share("nvram"); + map(0xc000, 0xc7ff).rom(); + map(0xc800, 0xcfff).ram().w(this, FUNC(cb3_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(cb3_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0xd800, 0xd9ff).ram().w(this, FUNC(cb3_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xe000, 0xe1ff).ram().w(this, FUNC(cb3_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xe800, 0xe9ff).ram().w(this, FUNC(cb3_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xf040, 0xf07f).ram().share("reel1_scroll"); + map(0xf080, 0xf0bf).ram().share("reel2_scroll"); + map(0xf100, 0xf17f).ram().share("reel3_scroll"); // moved compared to goldstar + + map(0xf800, 0xf803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xf810, 0xf813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xf820, 0xf823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */ + map(0xf822, 0xf822).w(this, FUNC(cb3_state::goldstar_fa00_w)); // hack (connected to ppi output port?, needed for colour banking) + + map(0xf830, 0xf830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xf840, 0xf840).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xf850, 0xf850).w(this, FUNC(cb3_state::p1_lamps_w)); /* Control Set 1 lamps */ + map(0xf860, 0xf860).w(this, FUNC(cb3_state::p2_lamps_w)); /* Control Set 2 lamps */ + map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/ +} ADDRESS_MAP_START(goldstar_state::ncb3_readwriteport) ADDRESS_MAP_GLOBAL_MASK(0xff) @@ -669,38 +674,40 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(goldstar_state::wcherry_map) - AM_RANGE(0x0000, 0xb7ff) AM_ROM - AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xc7ff) AM_ROM +void goldstar_state::wcherry_map(address_map &map) +{ + map(0x0000, 0xb7ff).rom(); + map(0xb800, 0xbfff).ram().share("nvram"); + map(0xc000, 0xc7ff).rom(); /* Video RAM and reels stuff are there just as placeholder, and obviously in wrong offset */ - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(goldstar_fg_vidram_w ) AM_SHARE("fg_vidram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(goldstar_fg_atrram_w ) AM_SHARE("fg_atrram") - AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE(0xe800, 0xe9ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE(0xf040, 0xf07f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xf080, 0xf0bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xf0c0, 0xf0ff) AM_RAM AM_SHARE("reel3_scroll") + map(0xc800, 0xcfff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0xd800, 0xd9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xe000, 0xe1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xe800, 0xe9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xf040, 0xf07f).ram().share("reel1_scroll"); + map(0xf080, 0xf0bf).ram().share("reel2_scroll"); + map(0xf0c0, 0xf0ff).ram().share("reel3_scroll"); /* Not really PPI's... They are emulated/simulated inside the CPLDs */ - AM_RANGE(0xf600, 0xf603) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xf610, 0xf613) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xf620, 0xf623) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ + map(0xf600, 0xf603).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xf610, 0xf613).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xf620, 0xf623).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */ - AM_RANGE(0xf630, 0xf630) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xf640, 0xf640) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xf650, 0xf650) AM_WRITENOP // AM_WRITE(output_w) // unknown register: 0x3e - AM_RANGE(0xf660, 0xf660) AM_WRITENOP // AM_WRITE(output_w) // unknown register: 0x3e - AM_RANGE(0xf670, 0xf670) AM_DEVWRITE("snsnd", sn76489_device, write) /* guess... device is initialized, but doesn't seems to be used.*/ + map(0xf630, 0xf630).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xf640, 0xf640).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xf650, 0xf650).nopw(); // AM_WRITE(output_w) // unknown register: 0x3e + map(0xf660, 0xf660).nopw(); // AM_WRITE(output_w) // unknown register: 0x3e + map(0xf670, 0xf670).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/ - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(goldstar_state::wcherry_readwriteport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_END +void goldstar_state::wcherry_readwriteport(address_map &map) +{ + map.global_mask(0xff); + } /* wcherry findings... @@ -723,27 +730,28 @@ ADDRESS_MAP_START(goldstar_state::wcherry_readwriteport) */ -ADDRESS_MAP_START(goldstar_state::cm_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM AM_WRITENOP +void goldstar_state::cm_map(address_map &map) +{ + map(0x0000, 0xcfff).rom().nopw(); - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xd800, 0xdfff) AM_RAM + map(0xd000, 0xd7ff).ram().share("nvram"); + map(0xd800, 0xdfff).ram(); - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") + map(0xe000, 0xe7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xe800, 0xefff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram"); - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE(0xf600, 0xf7ff) AM_RAM + map(0xf000, 0xf1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xf200, 0xf3ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xf400, 0xf5ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xf600, 0xf7ff).ram(); - AM_RANGE(0xf800, 0xf87f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xf880, 0xf9ff) AM_RAM - AM_RANGE(0xfa00, 0xfa7f) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xfa80, 0xfbff) AM_RAM - AM_RANGE(0xfc00, 0xfc7f) AM_RAM AM_SHARE("reel3_scroll") - AM_RANGE(0xfc80, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xf800, 0xf87f).ram().share("reel1_scroll"); + map(0xf880, 0xf9ff).ram(); + map(0xfa00, 0xfa7f).ram().share("reel2_scroll"); + map(0xfa80, 0xfbff).ram(); + map(0xfc00, 0xfc7f).ram().share("reel3_scroll"); + map(0xfc80, 0xffff).ram(); +} ADDRESS_MAP_START(goldstar_state::nfm_map) @@ -793,76 +801,81 @@ WRITE8_MEMBER(goldstar_state::cm_coincount_w) popmessage("counters: %02X", data); } -ADDRESS_MAP_START(cmaster_state::cm_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Inputs */ - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */ - AM_RANGE(0x10, 0x10) AM_WRITE(outport0_w) - AM_RANGE(0x11, 0x11) AM_WRITE(cm_coincount_w) - AM_RANGE(0x12, 0x12) AM_WRITE(p1_lamps_w) - AM_RANGE(0x13, 0x13) AM_WRITE(background_col_w) - AM_RANGE(0x14, 0x14) AM_WRITE(girl_scroll_w) -ADDRESS_MAP_END +void cmaster_state::cm_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x04, 0x07).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Inputs */ + map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */ + map(0x10, 0x10).w(this, FUNC(cmaster_state::outport0_w)); + map(0x11, 0x11).w(this, FUNC(cmaster_state::cm_coincount_w)); + map(0x12, 0x12).w(this, FUNC(cmaster_state::p1_lamps_w)); + map(0x13, 0x13).w(this, FUNC(cmaster_state::background_col_w)); + map(0x14, 0x14).w(this, FUNC(cmaster_state::girl_scroll_w)); +} -ADDRESS_MAP_START(goldstar_state::pkrmast_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void goldstar_state::pkrmast_portmap(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, address_w) + map(0x04, 0x04).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x08, 0x08).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::address_w)); - AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0") - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") - AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2") + map(0x10, 0x10).portr("IN0"); + map(0x11, 0x11).portr("IN1"); + map(0x12, 0x12).portr("IN2"); - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW3-0") - AM_RANGE(0x21, 0x21) AM_READ_PORT("DSW3-1") - AM_RANGE(0x22, 0x22) AM_WRITE(p1_lamps_w) + map(0x20, 0x20).portr("DSW3-0"); + map(0x21, 0x21).portr("DSW3-1"); + map(0x22, 0x22).w(this, FUNC(goldstar_state::p1_lamps_w)); - AM_RANGE(0x24, 0x24) AM_WRITE(cm_coincount_w) - AM_RANGE(0x25, 0x25) AM_READ_PORT("DSW1") - AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW2") + map(0x24, 0x24).w(this, FUNC(goldstar_state::cm_coincount_w)); + map(0x25, 0x25).portr("DSW1"); + map(0x26, 0x26).portr("DSW2"); - AM_RANGE(0xf0, 0xf0) AM_WRITENOP /* Writing 0's and 1's constantly. Watchdog feeder? */ -ADDRESS_MAP_END + map(0xf0, 0xf0).nopw(); /* Writing 0's and 1's constantly. Watchdog feeder? */ +} -ADDRESS_MAP_START(goldstar_state::cmast91_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */ - AM_RANGE(0x21, 0x21) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x22, 0x23) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END +void goldstar_state::cmast91_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */ + map(0x21, 0x21).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x22, 0x23).w("aysnd", FUNC(ay8910_device::data_address_w)); +} -ADDRESS_MAP_START(cmaster_state::amcoe1_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */ - AM_RANGE(0x10, 0x10) AM_WRITE(outport0_w) - AM_RANGE(0x11, 0x11) AM_WRITE(cm_coincount_w) - AM_RANGE(0x12, 0x12) AM_WRITE(p1_lamps_w) - AM_RANGE(0x13, 0x13) AM_WRITE(background_col_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void cmaster_state::amcoe1_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x04, 0x07).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */ + map(0x10, 0x10).w(this, FUNC(cmaster_state::outport0_w)); + map(0x11, 0x11).w(this, FUNC(cmaster_state::cm_coincount_w)); + map(0x12, 0x12).w(this, FUNC(cmaster_state::p1_lamps_w)); + map(0x13, 0x13).w(this, FUNC(cmaster_state::background_col_w)); + map(0x20, 0x20).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} -ADDRESS_MAP_START(cmaster_state::amcoe2_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DIP switches */ - AM_RANGE(0x10, 0x10) AM_WRITE(outport0_w) - AM_RANGE(0x11, 0x11) AM_WRITE(cm_coincount_w) - AM_RANGE(0x12, 0x12) AM_WRITE(p1_lamps_w) - AM_RANGE(0x13, 0x13) AM_WRITE(background_col_w) -ADDRESS_MAP_END +void cmaster_state::amcoe2_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x04, 0x07).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0x08, 0x0b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DIP switches */ + map(0x10, 0x10).w(this, FUNC(cmaster_state::outport0_w)); + map(0x11, 0x11).w(this, FUNC(cmaster_state::cm_coincount_w)); + map(0x12, 0x12).w(this, FUNC(cmaster_state::p1_lamps_w)); + map(0x13, 0x13).w(this, FUNC(cmaster_state::background_col_w)); +} ADDRESS_MAP_START(goldstar_state::lucky8_map) @@ -999,51 +1012,53 @@ WRITE8_MEMBER(wingco_state::fl7w4_outc802_w) m_fl7w4_id->write((data >> 6) & 0x01); } -ADDRESS_MAP_START(wingco_state::magodds_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void wingco_state::magodds_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // where does the extra rom data map?? it seems like it should come straight after the existing rom, but it can't if this is a plain z80? - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") - AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xa900, 0xaaff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") // +0x100 compared to lucky8 - AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") - - AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ - AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */ - AM_RANGE(0xb850, 0xb850) AM_WRITE(magodds_outb850_w) /* lamps */ - AM_RANGE(0xb860, 0xb860) AM_WRITE(magodds_outb860_w) /* watchdog */ - AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu",0xc000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(goldstar_state::kkotnoli_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM /* definitely no NVRAM */ - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") - AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") - AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") + map(0x8000, 0x87ff).ram().share("nvram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(wingco_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0x9000, 0x97ff).ram().w(this, FUNC(wingco_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0x9800, 0x99ff).ram().w(this, FUNC(wingco_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xa000, 0xa1ff).ram().w(this, FUNC(wingco_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xa900, 0xaaff).ram().w(this, FUNC(wingco_state::goldstar_reel3_ram_w)).share("reel3_ram"); // +0x100 compared to lucky8 + map(0xb040, 0xb07f).ram().share("reel1_scroll"); + map(0xb080, 0xb0bf).ram().share("reel2_scroll"); + map(0xb100, 0xb17f).ram().share("reel3_scroll"); + + map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */ + map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */ + map(0xb850, 0xb850).w(this, FUNC(wingco_state::magodds_outb850_w)); /* lamps */ + map(0xb860, 0xb860).w(this, FUNC(wingco_state::magodds_outb860_w)); /* watchdog */ + map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */ + map(0xc000, 0xffff).rom().region("maincpu", 0xc000); +} - AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input Port */ - AM_RANGE(0xb830, 0xb830) AM_WRITENOP /* no ay8910 */ - AM_RANGE(0xb840, 0xb840) AM_WRITENOP /* no ay8910 */ - AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w) - AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void goldstar_state::kkotnoli_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); /* definitely no NVRAM */ + map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xb040, 0xb07f).ram().share("reel1_scroll"); + map(0xb080, 0xb0bf).ram().share("reel2_scroll"); + map(0xb100, 0xb17f).ram().share("reel3_scroll"); + + map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Port */ + map(0xb830, 0xb830).nopw(); /* no ay8910 */ + map(0xb840, 0xb840).nopw(); /* no ay8910 */ + map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w)); + map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */ + map(0xf800, 0xffff).ram(); +} //WRITE8_MEMBER(goldstar_state::ladylinr_outport_w) @@ -1062,26 +1077,27 @@ ADDRESS_MAP_END // popmessage("Output: %02X", data); //} -ADDRESS_MAP_START(goldstar_state::ladylinr_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") - AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") - AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") - - AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* DSW bank */ - AM_RANGE(0xb830, 0xb830) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... unused? */ - AM_RANGE(0xb840, 0xb840) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0xb850, 0xb850) AM_WRITENOP /* just turn off the lamps, if exist */ - AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void goldstar_state::ladylinr_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("nvram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram"); + map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xb040, 0xb07f).ram().share("reel1_scroll"); + map(0xb080, 0xb0bf).ram().share("reel2_scroll"); + map(0xb100, 0xb17f).ram().share("reel3_scroll"); + + map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DSW bank */ + map(0xb830, 0xb830).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... unused? */ + map(0xb840, 0xb840).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xb850, 0xb850).nopw(); /* just turn off the lamps, if exist */ + map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */ + map(0xf800, 0xffff).ram(); +} ADDRESS_MAP_START(goldstar_state::wcat3_map) AM_RANGE(0x0000, 0x7fff) AM_ROM @@ -1109,30 +1125,31 @@ ADDRESS_MAP_END /* newer / more capable hw */ -ADDRESS_MAP_START(unkch_state::unkch_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc800, 0xc9ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram") - - AM_RANGE(0xd840, 0xd87f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xd880, 0xd8bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xd900, 0xd93f) AM_RAM AM_SHARE("reel3_scroll") - AM_RANGE(0xdfc0, 0xdfff) AM_RAM - - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") - - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") - AM_RANGE(0xf600, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram") - AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram") - AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram") - AM_RANGE(0xfe00, 0xffff) AM_RAM -ADDRESS_MAP_END +void unkch_state::unkch_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc1ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xc800, 0xc9ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + + map(0xd000, 0xd7ff).ram().share("nvram"); + + map(0xd840, 0xd87f).ram().share("reel1_scroll"); + map(0xd880, 0xd8bf).ram().share("reel2_scroll"); + map(0xd900, 0xd93f).ram().share("reel3_scroll"); + map(0xdfc0, 0xdfff).ram(); + + map(0xe000, 0xe7ff).ram().w(this, FUNC(unkch_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xe800, 0xefff).ram().w(this, FUNC(unkch_state::goldstar_fg_atrram_w)).share("fg_atrram"); + + map(0xf000, 0xf1ff).ram().w(this, FUNC(unkch_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xf200, 0xf3ff).ram().w(this, FUNC(unkch_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xf400, 0xf5ff).ram().w(this, FUNC(unkch_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xf600, 0xf7ff).ram(); + map(0xf800, 0xf9ff).ram().w(this, FUNC(unkch_state::reel1_attrram_w)).share("reel1_attrram"); + map(0xfa00, 0xfbff).ram().w(this, FUNC(unkch_state::reel2_attrram_w)).share("reel2_attrram"); + map(0xfc00, 0xfdff).ram().w(this, FUNC(unkch_state::reel3_attrram_w)).share("reel3_attrram"); + map(0xfe00, 0xffff).ram(); +} WRITE8_MEMBER(unkch_state::coincount_w) @@ -1195,47 +1212,49 @@ WRITE8_MEMBER(unkch_state::unkcm_0x03_w) } -ADDRESS_MAP_START(unkch_state::unkch_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void unkch_state::unkch_portmap(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE(0x01, 0x01) AM_WRITE(coincount_w) - AM_RANGE(0x02, 0x02) AM_WRITE(unkcm_0x02_w) - AM_RANGE(0x03, 0x03) AM_WRITE(unkcm_0x03_w) + map(0x01, 0x01).w(this, FUNC(unkch_state::coincount_w)); + map(0x02, 0x02).w(this, FUNC(unkch_state::unkcm_0x02_w)); + map(0x03, 0x03).w(this, FUNC(unkch_state::unkcm_0x03_w)); - AM_RANGE(0x08, 0x08) AM_READ_PORT("IN0") - AM_RANGE(0x09, 0x09) AM_READ_PORT("IN1") - AM_RANGE(0x0a, 0x0a) AM_READ_PORT("DSW4") - AM_RANGE(0x0b, 0x0b) AM_READ_PORT("DSW3") + map(0x08, 0x08).portr("IN0"); + map(0x09, 0x09).portr("IN1"); + map(0x0a, 0x0a).portr("DSW4"); + map(0x0b, 0x0b).portr("DSW3"); - AM_RANGE(0x10, 0x10) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x11, 0x11) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END + map(0x10, 0x10).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x11, 0x11).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x12, 0x12).w("aysnd", FUNC(ay8910_device::address_w)); +} -ADDRESS_MAP_START(unkch_state::megaline_map) +void unkch_state::megaline_map(address_map &map) +{ /* Reels stuff are there just as placeholder, and obviously in wrong offset */ - AM_RANGE(0x0000, 0x9fff) AM_ROM - - AM_RANGE(0xd000, 0xd7ff) AM_RAM //AM_SHARE("nvram") - - AM_RANGE(0xd840, 0xd87f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xd880, 0xd8bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xd900, 0xd93f) AM_RAM AM_SHARE("reel3_scroll") - AM_RANGE(0xdfc0, 0xdfff) AM_RAM - - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") - - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") - AM_RANGE(0xf600, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram") - AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram") - AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram") - AM_RANGE(0xfe00, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0x0000, 0x9fff).rom(); + + map(0xd000, 0xd7ff).ram(); //AM_SHARE("nvram") + + map(0xd840, 0xd87f).ram().share("reel1_scroll"); + map(0xd880, 0xd8bf).ram().share("reel2_scroll"); + map(0xd900, 0xd93f).ram().share("reel3_scroll"); + map(0xdfc0, 0xdfff).ram(); + + map(0xe000, 0xe7ff).ram().w(this, FUNC(unkch_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xe800, 0xefff).ram().w(this, FUNC(unkch_state::goldstar_fg_atrram_w)).share("fg_atrram"); + + map(0xf000, 0xf1ff).ram().w(this, FUNC(unkch_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xf200, 0xf3ff).ram().w(this, FUNC(unkch_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xf400, 0xf5ff).ram().w(this, FUNC(unkch_state::goldstar_reel3_ram_w)).share("reel3_ram"); + map(0xf600, 0xf7ff).ram(); + map(0xf800, 0xf9ff).ram().w(this, FUNC(unkch_state::reel1_attrram_w)).share("reel1_attrram"); + map(0xfa00, 0xfbff).ram().w(this, FUNC(unkch_state::reel2_attrram_w)).share("reel2_attrram"); + map(0xfc00, 0xfdff).ram().w(this, FUNC(unkch_state::reel3_attrram_w)).share("reel3_attrram"); + map(0xfe00, 0xffff).ram(); +} /* unknown I/O byte R/W @@ -1255,29 +1274,30 @@ ADDRESS_MAP_START(goldstar_state::megaline_portmap) ADDRESS_MAP_END -ADDRESS_MAP_START(unkch_state::bonusch_map) +void unkch_state::bonusch_map(address_map &map) +{ /* Reels stuff and RAM are there just as placeholder, and obviously in wrong offset */ - AM_RANGE(0x0000, 0xbfff) AM_ROM // ok + map(0x0000, 0xbfff).rom(); // ok - AM_RANGE(0xd800, 0xdfff) AM_RAM //AM_SHARE("nvram") + map(0xd800, 0xdfff).ram(); //AM_SHARE("nvram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") + map(0xe000, 0xe7ff).ram().w(this, FUNC(unkch_state::goldstar_fg_vidram_w)).share("fg_vidram"); + map(0xe800, 0xefff).ram().w(this, FUNC(unkch_state::goldstar_fg_atrram_w)).share("fg_atrram"); /* just placeholders */ - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram") + map(0xf000, 0xf1ff).ram().w(this, FUNC(unkch_state::goldstar_reel1_ram_w)).share("reel1_ram"); + map(0xf200, 0xf3ff).ram().w(this, FUNC(unkch_state::goldstar_reel2_ram_w)).share("reel2_ram"); + map(0xf400, 0xf5ff).ram().w(this, FUNC(unkch_state::goldstar_reel3_ram_w)).share("reel3_ram"); - AM_RANGE(0xf640, 0xf67f) AM_RAM AM_SHARE("reel1_scroll") - AM_RANGE(0xf680, 0xf6bf) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE(0xf700, 0xf73f) AM_RAM AM_SHARE("reel3_scroll") + map(0xf640, 0xf67f).ram().share("reel1_scroll"); + map(0xf680, 0xf6bf).ram().share("reel2_scroll"); + map(0xf700, 0xf73f).ram().share("reel3_scroll"); - AM_RANGE(0xf800, 0xf9ff) AM_RAM_WRITE(reel1_attrram_w) AM_SHARE("reel1_attrram") - AM_RANGE(0xfa00, 0xfbff) AM_RAM_WRITE(reel2_attrram_w) AM_SHARE("reel2_attrram") - AM_RANGE(0xfc00, 0xfdff) AM_RAM_WRITE(reel3_attrram_w) AM_SHARE("reel3_attrram") -ADDRESS_MAP_END + map(0xf800, 0xf9ff).ram().w(this, FUNC(unkch_state::reel1_attrram_w)).share("reel1_attrram"); + map(0xfa00, 0xfbff).ram().w(this, FUNC(unkch_state::reel2_attrram_w)).share("reel2_attrram"); + map(0xfc00, 0xfdff).ram().w(this, FUNC(unkch_state::reel3_attrram_w)).share("reel3_attrram"); +} /* Bonus Chance W-8 diff --git a/src/mame/drivers/gomoku.cpp b/src/mame/drivers/gomoku.cpp index c66f59423bd..2fdfd67a7e4 100644 --- a/src/mame/drivers/gomoku.cpp +++ b/src/mame/drivers/gomoku.cpp @@ -45,18 +45,19 @@ READ8_MEMBER(gomoku_state::input_port_r) } -ADDRESS_MAP_START(gomoku_state::gomoku_map) - AM_RANGE(0x0000, 0x47ff) AM_ROM - AM_RANGE(0x4800, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(gomoku_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5400, 0x57ff) AM_RAM_WRITE(gomoku_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x5800, 0x58ff) AM_RAM_WRITE(gomoku_bgram_w) AM_SHARE("bgram") - AM_RANGE(0x6000, 0x601f) AM_DEVWRITE("gomoku", gomoku_sound_device, sound1_w) - AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("gomoku", gomoku_sound_device, sound2_w) - AM_RANGE(0x7000, 0x7007) AM_DEVWRITE("latch", ls259_device, write_d1) - AM_RANGE(0x7800, 0x7807) AM_READ(input_port_r) - AM_RANGE(0x7800, 0x7800) AM_WRITENOP -ADDRESS_MAP_END +void gomoku_state::gomoku_map(address_map &map) +{ + map(0x0000, 0x47ff).rom(); + map(0x4800, 0x4fff).ram(); + map(0x5000, 0x53ff).ram().w(this, FUNC(gomoku_state::gomoku_videoram_w)).share("videoram"); + map(0x5400, 0x57ff).ram().w(this, FUNC(gomoku_state::gomoku_colorram_w)).share("colorram"); + map(0x5800, 0x58ff).ram().w(this, FUNC(gomoku_state::gomoku_bgram_w)).share("bgram"); + map(0x6000, 0x601f).w("gomoku", FUNC(gomoku_sound_device::sound1_w)); + map(0x6800, 0x681f).w("gomoku", FUNC(gomoku_sound_device::sound2_w)); + map(0x7000, 0x7007).w("latch", FUNC(ls259_device::write_d1)); + map(0x7800, 0x7807).r(this, FUNC(gomoku_state::input_port_r)); + map(0x7800, 0x7800).nopw(); +} static INPUT_PORTS_START( gomoku ) diff --git a/src/mame/drivers/good.cpp b/src/mame/drivers/good.cpp index e3f4ae10d5b..cdc2072da6b 100644 --- a/src/mame/drivers/good.cpp +++ b/src/mame/drivers/good.cpp @@ -114,23 +114,24 @@ uint32_t good_state::screen_update_good(screen_device &screen, bitmap_ind16 &bit return 0; } -ADDRESS_MAP_START(good_state::good_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM +void good_state::good_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); //AM_RANGE(0x270000, 0x270007) AM_RAM // scroll? - AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x270001, 0x270001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") - AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") - AM_RANGE(0x280004, 0x280005) AM_READ_PORT("IN2") + map(0x280000, 0x280001).portr("IN0"); + map(0x280002, 0x280003).portr("IN1"); + map(0x280004, 0x280005).portr("IN2"); - AM_RANGE(0x800000, 0x8007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x800000, 0x8007ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x820000, 0x820fff) AM_RAM_WRITE(fg_tilemapram_w) AM_SHARE("fg_tilemapram") - AM_RANGE(0x822000, 0x822fff) AM_RAM_WRITE(bg_tilemapram_w) AM_SHARE("bg_tilemapram") + map(0x820000, 0x820fff).ram().w(this, FUNC(good_state::fg_tilemapram_w)).share("fg_tilemapram"); + map(0x822000, 0x822fff).ram().w(this, FUNC(good_state::bg_tilemapram_w)).share("bg_tilemapram"); - AM_RANGE(0xff0000, 0xffefff) AM_RAM -ADDRESS_MAP_END + map(0xff0000, 0xffefff).ram(); +} static INPUT_PORTS_START( good ) PORT_START("IN0") diff --git a/src/mame/drivers/goodejan.cpp b/src/mame/drivers/goodejan.cpp index e87a9b275a3..203c1cca7c5 100644 --- a/src/mame/drivers/goodejan.cpp +++ b/src/mame/drivers/goodejan.cpp @@ -437,39 +437,49 @@ WRITE16_MEMBER(goodejan_state::mahjong_panel_w) m_mux_data = data; } -ADDRESS_MAP_START(goodejan_state::goodejan_map) - AM_RANGE(0x00000, 0x0afff) AM_RAM - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_SHARE("sc0_vram") - AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_SHARE("sc3_vram") - AM_RANGE(0x0d000, 0x0dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") +void goodejan_state::goodejan_map(address_map &map) +{ + map(0x00000, 0x0afff).ram(); + map(0x0c000, 0x0c7ff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc0vram_w)).share("sc0_vram"); + map(0x0c800, 0x0cfff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc3vram_w)).share("sc3_vram"); + map(0x0d000, 0x0dfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /*Guess: these two aren't used/initialized at all.*/ - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_SHARE("sc1_vram") - AM_RANGE(0x0e800, 0x0efff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_SHARE("sc2_vram") - AM_RANGE(0x0f800, 0x0ffff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END + map(0x0e000, 0x0e7ff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc1vram_w)).share("sc1_vram"); + map(0x0e800, 0x0efff).ram().w(this, FUNC(goodejan_state::seibucrtc_sc2vram_w)).share("sc2_vram"); + map(0x0f800, 0x0ffff).ram().share("sprite_ram"); + map(0xc0000, 0xfffff).rom(); +} /* totmejan CRTC is at 8000-804f,goodejan is at 8000-807f */ -ADDRESS_MAP_START(goodejan_state::common_io_map) - AM_RANGE(0x9000, 0x9001) AM_WRITE(gfxbank_w) - AM_RANGE(0xb000, 0xb003) AM_WRITENOP - AM_RANGE(0xb004, 0xb005) AM_WRITE(mahjong_panel_w) - - AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW1") - AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r) - AM_RANGE(0xc004, 0xc005) AM_READ_PORT("DSW2") // switches - AM_RANGE(0xd000, 0xd00f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(goodejan_state::totmejan_io_map) - AM_IMPORT_FROM(common_io_map) - AM_RANGE(0x8000, 0x804f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(goodejan_state::goodejan_io_map) - AM_IMPORT_FROM(common_io_map) - ;map(0x8000, 0x807f).lrw16("crtc_rw", [this](address_space &space, offs_t offset, u16 mem_mask){ return m_crtc->read(space, offset ^ 0x20, mem_mask); }, [this](address_space &space, offs_t offset, u16 data, u16 mem_mask){ m_crtc->write(space, offset ^ 0x20, data, mem_mask); }); -ADDRESS_MAP_END +void goodejan_state::common_io_map(address_map &map) +{ + map(0x9000, 0x9001).w(this, FUNC(goodejan_state::gfxbank_w)); + map(0xb000, 0xb003).nopw(); + map(0xb004, 0xb005).w(this, FUNC(goodejan_state::mahjong_panel_w)); + + map(0xc000, 0xc001).portr("DSW1"); + map(0xc002, 0xc003).r(this, FUNC(goodejan_state::mahjong_panel_r)); + map(0xc004, 0xc005).portr("DSW2"); // switches + map(0xd000, 0xd00f).rw("seibu_sound", FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); +} + +void goodejan_state::totmejan_io_map(address_map &map) +{ + common_io_map(map); + map(0x8000, 0x804f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); +} + +void goodejan_state::goodejan_io_map(address_map &map) +{ + common_io_map(map); + map(0x8000, 0x807f).lrw16("crtc_rw", + [this](address_space &space, offs_t offset, u16 mem_mask) { + return m_crtc->read(space, offset ^ 0x20, mem_mask); + }, + [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { + m_crtc->write(space, offset ^ 0x20, data, mem_mask); + }); +} static INPUT_PORTS_START( goodejan ) SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */ diff --git a/src/mame/drivers/gotcha.cpp b/src/mame/drivers/gotcha.cpp index 59bea55cd60..3addaacb3ac 100644 --- a/src/mame/drivers/gotcha.cpp +++ b/src/mame/drivers/gotcha.cpp @@ -101,33 +101,35 @@ WRITE16_MEMBER(gotcha_state::gotcha_oki_bank_w) } -ADDRESS_MAP_START(gotcha_state::gotcha_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x100002, 0x100003) AM_WRITE(gotcha_lamps_w) - AM_RANGE(0x100004, 0x100005) AM_WRITE(gotcha_oki_bank_w) - AM_RANGE(0x120000, 0x12ffff) AM_RAM - AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("DSW") - AM_RANGE(0x300000, 0x300001) AM_WRITE(gotcha_gfxbank_select_w) - AM_RANGE(0x300002, 0x300009) AM_WRITE(gotcha_scroll_w) +void gotcha_state::gotcha_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x100002, 0x100003).w(this, FUNC(gotcha_state::gotcha_lamps_w)); + map(0x100004, 0x100005).w(this, FUNC(gotcha_state::gotcha_oki_bank_w)); + map(0x120000, 0x12ffff).ram(); + map(0x140000, 0x1405ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); + map(0x180000, 0x180001).portr("INPUTS"); + map(0x180002, 0x180003).portr("SYSTEM"); + map(0x180004, 0x180005).portr("DSW"); + map(0x300000, 0x300001).w(this, FUNC(gotcha_state::gotcha_gfxbank_select_w)); + map(0x300002, 0x300009).w(this, FUNC(gotcha_state::gotcha_scroll_w)); // { 0x30000c, 0x30000d, - AM_RANGE(0x30000e, 0x30000f) AM_WRITE(gotcha_gfxbank_w) - AM_RANGE(0x320000, 0x320fff) AM_WRITE(gotcha_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x322000, 0x322fff) AM_WRITE(gotcha_bgvideoram_w) AM_SHARE("bgvideoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gotcha_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1) - AM_RANGE(0xc006, 0xc006) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd7ff) AM_RAM -ADDRESS_MAP_END + map(0x30000e, 0x30000f).w(this, FUNC(gotcha_state::gotcha_gfxbank_w)); + map(0x320000, 0x320fff).w(this, FUNC(gotcha_state::gotcha_fgvideoram_w)).share("fgvideoram"); + map(0x322000, 0x322fff).w(this, FUNC(gotcha_state::gotcha_bgvideoram_w)).share("bgvideoram"); +} + + +void gotcha_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc002, 0xc002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).mirror(1); + map(0xc006, 0xc006).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd7ff).ram(); +} diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp index 17da3a6cf63..841198a49ed 100644 --- a/src/mame/drivers/gottlieb.cpp +++ b/src/mame/drivers/gottlieb.cpp @@ -749,48 +749,50 @@ WRITE8_MEMBER(gottlieb_state::gottlieb_sh_w) m_r2_sound->write(space, offset, data); } -ADDRESS_MAP_START(gottlieb_state::reactor_map) - ADDRESS_MAP_GLOBAL_MASK(0xffff) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0f00) AM_WRITEONLY AM_SHARE("spriteram") /* FRSEL */ - AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM_WRITE(gottlieb_videoram_w) AM_SHARE("videoram") /* BRSEL */ - AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_SHARE("charram") /* BOJRSEL1 */ +void gottlieb_state::reactor_map(address_map &map) +{ + map.global_mask(0xffff); + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x20ff).mirror(0x0f00).writeonly().share("spriteram"); /* FRSEL */ + map(0x3000, 0x33ff).mirror(0x0c00).ram().w(this, FUNC(gottlieb_state::gottlieb_videoram_w)).share("videoram"); /* BRSEL */ + map(0x4000, 0x4fff).ram().w(this, FUNC(gottlieb_state::gottlieb_charram_w)).share("charram"); /* BOJRSEL1 */ /* AM_RANGE(0x5000, 0x5fff) AM_WRITE() */ /* BOJRSEL2 */ - AM_RANGE(0x6000, 0x601f) AM_MIRROR(0x0fe0) AM_WRITE(gottlieb_paletteram_w) AM_SHARE("paletteram") /* COLSEL */ - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff8) AM_WRITE(gottlieb_analog_reset_w) /* A1J2 interface */ - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff8) AM_WRITE(gottlieb_sh_w) /* trackball H */ - AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff8) AM_WRITE(reactor_output_w) /* trackball V */ - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff8) AM_READ_PORT("DSW") - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff8) AM_READ_PORT("IN1") /* buttons */ - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff8) AM_READ_PORT("IN2") /* trackball H */ - AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff8) AM_READ_PORT("IN3") /* trackball V */ - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff8) AM_READ_PORT("IN4") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gottlieb_state::gottlieb_map) - ADDRESS_MAP_GLOBAL_MASK(0xffff) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_REGION("maincpu", 0x1000) /* or ROM */ - AM_RANGE(0x2000, 0x2fff) AM_RAM AM_REGION("maincpu", 0x2000) /* or ROM */ - AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x0700) AM_WRITEONLY AM_SHARE("spriteram") /* FRSEL */ - AM_RANGE(0x3800, 0x3bff) AM_MIRROR(0x0400) AM_RAM_WRITE(gottlieb_videoram_w) AM_SHARE("videoram") /* BRSEL */ - AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(gottlieb_charram_w) AM_SHARE("charram") /* BOJRSEL1 */ - AM_RANGE(0x5000, 0x501f) AM_MIRROR(0x07e0) AM_WRITE(gottlieb_paletteram_w) AM_SHARE("paletteram") /* COLSEL */ - AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_WRITE(gottlieb_analog_reset_w) /* A1J2 interface */ - AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_WRITE(gottlieb_sh_w) /* OP20-27 */ - AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_WRITE(general_output_w) /* OP30-37 */ + map(0x6000, 0x601f).mirror(0x0fe0).w(this, FUNC(gottlieb_state::gottlieb_paletteram_w)).share("paletteram"); /* COLSEL */ + map(0x7000, 0x7000).mirror(0x0ff8).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x7001, 0x7001).mirror(0x0ff8).w(this, FUNC(gottlieb_state::gottlieb_analog_reset_w)); /* A1J2 interface */ + map(0x7002, 0x7002).mirror(0x0ff8).w(this, FUNC(gottlieb_state::gottlieb_sh_w)); /* trackball H */ + map(0x7003, 0x7003).mirror(0x0ff8).w(this, FUNC(gottlieb_state::reactor_output_w)); /* trackball V */ + map(0x7000, 0x7000).mirror(0x0ff8).portr("DSW"); + map(0x7001, 0x7001).mirror(0x0ff8).portr("IN1"); /* buttons */ + map(0x7002, 0x7002).mirror(0x0ff8).portr("IN2"); /* trackball H */ + map(0x7003, 0x7003).mirror(0x0ff8).portr("IN3"); /* trackball V */ + map(0x7004, 0x7004).mirror(0x0ff8).portr("IN4"); + map(0x8000, 0xffff).rom(); +} + + +void gottlieb_state::gottlieb_map(address_map &map) +{ + map.global_mask(0xffff); + map(0x0000, 0x0fff).ram().share("nvram"); + map(0x1000, 0x1fff).ram().region("maincpu", 0x1000); /* or ROM */ + map(0x2000, 0x2fff).ram().region("maincpu", 0x2000); /* or ROM */ + map(0x3000, 0x30ff).mirror(0x0700).writeonly().share("spriteram"); /* FRSEL */ + map(0x3800, 0x3bff).mirror(0x0400).ram().w(this, FUNC(gottlieb_state::gottlieb_videoram_w)).share("videoram"); /* BRSEL */ + map(0x4000, 0x4fff).ram().w(this, FUNC(gottlieb_state::gottlieb_charram_w)).share("charram"); /* BOJRSEL1 */ + map(0x5000, 0x501f).mirror(0x07e0).w(this, FUNC(gottlieb_state::gottlieb_paletteram_w)).share("paletteram"); /* COLSEL */ + map(0x5800, 0x5800).mirror(0x07f8).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5801, 0x5801).mirror(0x07f8).w(this, FUNC(gottlieb_state::gottlieb_analog_reset_w)); /* A1J2 interface */ + map(0x5802, 0x5802).mirror(0x07f8).w(this, FUNC(gottlieb_state::gottlieb_sh_w)); /* OP20-27 */ + map(0x5803, 0x5803).mirror(0x07f8).w(this, FUNC(gottlieb_state::general_output_w)); /* OP30-37 */ /* AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_WRITE()*/ /* OP40-47 */ - AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_READ_PORT("DSW") - AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") /* IP10-17 */ - AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_READ_PORT("IN2") /* trackball H */ - AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READ_PORT("IN3") /* trackball V */ - AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_READ_PORT("IN4") /* IP40-47 */ - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x5800, 0x5800).mirror(0x07f8).portr("DSW"); + map(0x5801, 0x5801).mirror(0x07f8).portr("IN1"); /* IP10-17 */ + map(0x5802, 0x5802).mirror(0x07f8).portr("IN2"); /* trackball H */ + map(0x5803, 0x5803).mirror(0x07f8).portr("IN3"); /* trackball V */ + map(0x5804, 0x5804).mirror(0x07f8).portr("IN4"); /* IP40-47 */ + map(0x6000, 0xffff).rom(); +} diff --git a/src/mame/drivers/gotya.cpp b/src/mame/drivers/gotya.cpp index fe3985e7ece..188bd6397ba 100644 --- a/src/mame/drivers/gotya.cpp +++ b/src/mame/drivers/gotya.cpp @@ -45,21 +45,22 @@ TODO: Emulated sound #include "speaker.h" -ADDRESS_MAP_START(gotya_state::gotya_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x5000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("P1") - AM_RANGE(0x6001, 0x6001) AM_READ_PORT("P2") - AM_RANGE(0x6002, 0x6002) AM_READ_PORT("DSW") - AM_RANGE(0x6004, 0x6004) AM_WRITE(gotya_video_control_w) - AM_RANGE(0x6005, 0x6005) AM_WRITE(gotya_soundlatch_w) - AM_RANGE(0x6006, 0x6006) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x6007, 0x6007) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gotya_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gotya_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd000, 0xd3df) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0xd3e0, 0xd3ff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END +void gotya_state::gotya_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x5000, 0x5fff).ram(); + map(0x6000, 0x6000).portr("P1"); + map(0x6001, 0x6001).portr("P2"); + map(0x6002, 0x6002).portr("DSW"); + map(0x6004, 0x6004).w(this, FUNC(gotya_state::gotya_video_control_w)); + map(0x6005, 0x6005).w(this, FUNC(gotya_state::gotya_soundlatch_w)); + map(0x6006, 0x6006).writeonly().share("scroll"); + map(0x6007, 0x6007).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xc000, 0xc7ff).ram().w(this, FUNC(gotya_state::gotya_videoram_w)).share("videoram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(gotya_state::gotya_colorram_w)).share("colorram"); + map(0xd000, 0xd3df).ram().share("videoram2"); + map(0xd3e0, 0xd3ff).ram().share("spriteram"); +} static INPUT_PORTS_START( gotya ) diff --git a/src/mame/drivers/goupil.cpp b/src/mame/drivers/goupil.cpp index 6f463a0f4fb..52da4a89092 100644 --- a/src/mame/drivers/goupil.cpp +++ b/src/mame/drivers/goupil.cpp @@ -88,7 +88,7 @@ public: void goupil_g1(machine_config &config); void goupil_mem(address_map &map); -private: +protected: required_device<acia6850_device> m_acia; optional_device<ef9364_device> m_ef9364; required_device<cpu_device> m_maincpu; @@ -142,62 +142,64 @@ TIMER_DEVICE_CALLBACK_MEMBER( goupil_g1_state::goupil_scanline ) m_ef9364->update_scanline((uint16_t)param); } -ADDRESS_MAP_START(goupil_g1_state::goupil_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x3FFF) AM_RAM - AM_RANGE(0x4000,0x7FFF) AM_RAM - AM_RANGE(0xC000,0xE3FF) AM_ROM AM_REGION("maincpu", 0xC000) // Basic ROM (BASIC 1 up to BASIC 9). +void goupil_g1_state::goupil_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3FFF).ram(); + map(0x4000, 0x7FFF).ram(); + map(0xC000, 0xE3FF).rom().region("maincpu", 0xC000); // Basic ROM (BASIC 1 up to BASIC 9). - AM_RANGE(0xE400,0xE7FF) AM_RAM - AM_RANGE(0xE800,0xE80F) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w) - AM_RANGE(0xE810,0xE81F) AM_DEVREADWRITE("m_via_video", via6522_device, read, write) + map(0xE400, 0xE7FF).ram(); + map(0xE800, 0xE80F).rw(m_acia, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); + map(0xE810, 0xE81F).rw(m_via_video, FUNC(via6522_device::read), FUNC(via6522_device::write)); - AM_RANGE(0xE820,0xE820) AM_DEVREADWRITE("i8279_kb1", i8279_device, data_r, data_w ) - AM_RANGE(0xE821,0xE821) AM_DEVREADWRITE("i8279_kb1", i8279_device, status_r, cmd_w ) + map(0xE820, 0xE820).rw("i8279_kb1", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0xE821, 0xE821).rw("i8279_kb1", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); - AM_RANGE(0xE830,0xE830) AM_DEVREADWRITE("i8279_kb2", i8279_device, data_r, data_w ) - AM_RANGE(0xE831,0xE831) AM_DEVREADWRITE("i8279_kb2", i8279_device, status_r, cmd_w ) + map(0xE830, 0xE830).rw("i8279_kb2", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0xE831, 0xE831).rw("i8279_kb2", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); - AM_RANGE(0xE840,0xE84F) AM_DEVREADWRITE("m_via_keyb", via6522_device, read, write) + map(0xE840, 0xE84F).rw(m_via_keyb, FUNC(via6522_device::read), FUNC(via6522_device::write)); - AM_RANGE(0xE860,0xE86F) AM_DEVREADWRITE("m_via_modem", via6522_device, read, write) + map(0xE860, 0xE86F).rw(m_via_modem, FUNC(via6522_device::read), FUNC(via6522_device::write)); - AM_RANGE(0xE8F0,0xE8FF) AM_DEVREADWRITE("fd1791", fd1791_device, read, write) + map(0xE8F0, 0xE8FF).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write)); - AM_RANGE(0xF000,0xF3FF) AM_ROM AM_REGION("maincpu", 0xF000) - AM_RANGE(0xF400,0xF7FF) AM_ROM AM_REGION("maincpu", 0xF400) // Modem (MOD 3) - AM_RANGE(0xF800,0xFFFF) AM_ROM AM_REGION("maincpu", 0xF800) // Monitor (MON 1 + MON 2) -ADDRESS_MAP_END + map(0xF000, 0xF3FF).rom().region("maincpu", 0xF000); + map(0xF400, 0xF7FF).rom().region("maincpu", 0xF400); // Modem (MOD 3) + map(0xF800, 0xFFFF).rom().region("maincpu", 0xF800); // Monitor (MON 1 + MON 2) +} -ADDRESS_MAP_START(goupil_g2_state::goupil_g2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x3FFF) AM_RAM - AM_RANGE(0x4000,0x7FFF) AM_RAM - AM_RANGE(0x8000,0xE3FF) AM_RAM +void goupil_g2_state::goupil_g2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3FFF).ram(); + map(0x4000, 0x7FFF).ram(); + map(0x8000, 0xE3FF).ram(); - AM_RANGE(0xE400,0xE7FF) AM_RAM + map(0xE400, 0xE7FF).ram(); - AM_RANGE(0xE800,0xE80F) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w) - AM_RANGE(0xE810,0xE81F) AM_DEVREADWRITE("m_via_video", via6522_device, read, write) + map(0xE800, 0xE80F).rw(m_acia, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); + map(0xE810, 0xE81F).rw(m_via_video, FUNC(via6522_device::read), FUNC(via6522_device::write)); - AM_RANGE(0xE820,0xE820) AM_DEVREADWRITE("i8279_kb1", i8279_device, data_r, data_w ) - AM_RANGE(0xE821,0xE821) AM_DEVREADWRITE("i8279_kb1", i8279_device, status_r, cmd_w ) + map(0xE820, 0xE820).rw("i8279_kb1", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0xE821, 0xE821).rw("i8279_kb1", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); - AM_RANGE(0xE830,0xE830) AM_DEVREADWRITE("i8279_kb2", i8279_device, data_r, data_w ) - AM_RANGE(0xE831,0xE831) AM_DEVREADWRITE("i8279_kb2", i8279_device, status_r, cmd_w ) + map(0xE830, 0xE830).rw("i8279_kb2", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0xE831, 0xE831).rw("i8279_kb2", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); - AM_RANGE(0xE840,0xE84F) AM_DEVREADWRITE("m_via_keyb", via6522_device, read, write) + map(0xE840, 0xE84F).rw(m_via_keyb, FUNC(via6522_device::read), FUNC(via6522_device::write)); - AM_RANGE(0xE860,0xE86F) AM_DEVREADWRITE("m_via_modem", via6522_device, read, write) + map(0xE860, 0xE86F).rw(m_via_modem, FUNC(via6522_device::read), FUNC(via6522_device::write)); - AM_RANGE(0xE870,0xE870) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0xE871,0xE871) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map(0xE870, 0xE870).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xE871, 0xE871).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - AM_RANGE(0xE8F0,0xE8FF) AM_DEVREADWRITE("fd1791", fd1791_device, read, write) - AM_RANGE(0xEC00,0xF3FF) AM_READWRITE(visu24x80_ram_r, visu24x80_ram_w) - AM_RANGE(0xF400,0xF7FF) AM_ROM AM_REGION("maincpu", 0xF400) // Monitor (MON 1) - AM_RANGE(0xF800,0xFFFF) AM_ROM AM_REGION("maincpu", 0xF800) // Monitor (MON 2) -ADDRESS_MAP_END + map(0xE8F0, 0xE8FF).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write)); + map(0xEC00, 0xF3FF).rw(this, FUNC(goupil_g2_state::visu24x80_ram_r), FUNC(goupil_g2_state::visu24x80_ram_w)); + map(0xF400, 0xF7FF).rom().region("maincpu", 0xF400); // Monitor (MON 1) + map(0xF800, 0xFFFF).rom().region("maincpu", 0xF800); // Monitor (MON 2) +} WRITE8_MEMBER( goupil_g1_state::scanlines_kbd1_w ) { diff --git a/src/mame/drivers/gp2x.cpp b/src/mame/drivers/gp2x.cpp index d3502c6b0be..2e05e30d2b8 100644 --- a/src/mame/drivers/gp2x.cpp +++ b/src/mame/drivers/gp2x.cpp @@ -343,17 +343,18 @@ READ32_MEMBER( gp2x_state::sdcard_r ) return 0xffff<<16; // at 3e146b0 - indicate timeout & CRC error } -ADDRESS_MAP_START(gp2x_state::gp2x_map) - AM_RANGE(0x00000000, 0x00007fff) AM_ROM - AM_RANGE(0x01000000, 0x04ffffff) AM_RAM AM_SHARE("ram") // 64 MB of RAM - AM_RANGE(0x9c000000, 0x9c00001f) AM_READWRITE(nand_r, nand_w) - AM_RANGE(0xc0000a00, 0xc0000a03) AM_READ(timer_r) - AM_RANGE(0xc0001208, 0xc000120b) AM_READ(tx_status_r) - AM_RANGE(0xc0001210, 0xc0001213) AM_WRITE(tx_xmit_w) - AM_RANGE(0xc0001508, 0xc000150b) AM_READ(sdcard_r) - AM_RANGE(0xc0002800, 0xc00029ff) AM_READWRITE(gp2x_lcdc_r, gp2x_lcdc_w) - AM_RANGE(0xc0003a38, 0xc0003a3b) AM_READWRITE(nand_ctrl_r, nand_ctrl_w) -ADDRESS_MAP_END +void gp2x_state::gp2x_map(address_map &map) +{ + map(0x00000000, 0x00007fff).rom(); + map(0x01000000, 0x04ffffff).ram().share("ram"); // 64 MB of RAM + map(0x9c000000, 0x9c00001f).rw(this, FUNC(gp2x_state::nand_r), FUNC(gp2x_state::nand_w)); + map(0xc0000a00, 0xc0000a03).r(this, FUNC(gp2x_state::timer_r)); + map(0xc0001208, 0xc000120b).r(this, FUNC(gp2x_state::tx_status_r)); + map(0xc0001210, 0xc0001213).w(this, FUNC(gp2x_state::tx_xmit_w)); + map(0xc0001508, 0xc000150b).r(this, FUNC(gp2x_state::sdcard_r)); + map(0xc0002800, 0xc00029ff).rw(this, FUNC(gp2x_state::gp2x_lcdc_r), FUNC(gp2x_state::gp2x_lcdc_w)); + map(0xc0003a38, 0xc0003a3b).rw(this, FUNC(gp2x_state::nand_ctrl_r), FUNC(gp2x_state::nand_ctrl_w)); +} static INPUT_PORTS_START( gp2x ) INPUT_PORTS_END diff --git a/src/mame/drivers/gp32.cpp b/src/mame/drivers/gp32.cpp index 8710b8c373a..b09ab860b91 100644 --- a/src/mame/drivers/gp32.cpp +++ b/src/mame/drivers/gp32.cpp @@ -1624,29 +1624,30 @@ void gp32_state::s3c240x_machine_reset() m_s3c240x_iic.data_index = 0; } -ADDRESS_MAP_START(gp32_state::gp32_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM - AM_RANGE(0x0c000000, 0x0c7fffff) AM_RAM AM_SHARE("s3c240x_ram") - AM_RANGE(0x14000000, 0x1400003b) AM_READWRITE(s3c240x_memcon_r, s3c240x_memcon_w) - AM_RANGE(0x14200000, 0x1420005b) AM_READWRITE(s3c240x_usb_host_r, s3c240x_usb_host_w) - AM_RANGE(0x14400000, 0x14400017) AM_READWRITE(s3c240x_irq_r, s3c240x_irq_w) - AM_RANGE(0x14600000, 0x1460007b) AM_READWRITE(s3c240x_dma_r, s3c240x_dma_w) - AM_RANGE(0x14800000, 0x14800017) AM_READWRITE(s3c240x_clkpow_r, s3c240x_clkpow_w) - AM_RANGE(0x14a00000, 0x14a003ff) AM_READWRITE(s3c240x_lcd_r, s3c240x_lcd_w) - AM_RANGE(0x14a00400, 0x14a007ff) AM_READWRITE(s3c240x_lcd_palette_r, s3c240x_lcd_palette_w) - AM_RANGE(0x15000000, 0x1500002b) AM_READWRITE(s3c240x_uart_0_r, s3c240x_uart_0_w) - AM_RANGE(0x15004000, 0x1500402b) AM_READWRITE(s3c240x_uart_1_r, s3c240x_uart_1_w) - AM_RANGE(0x15100000, 0x15100043) AM_READWRITE(s3c240x_pwm_r, s3c240x_pwm_w) - AM_RANGE(0x15200140, 0x152001fb) AM_READWRITE(s3c240x_usb_device_r, s3c240x_usb_device_w) - AM_RANGE(0x15300000, 0x1530000b) AM_READWRITE(s3c240x_watchdog_r, s3c240x_watchdog_w) - AM_RANGE(0x15400000, 0x1540000f) AM_READWRITE(s3c240x_iic_r, s3c240x_iic_w) - AM_RANGE(0x15508000, 0x15508013) AM_READWRITE(s3c240x_iis_r, s3c240x_iis_w) - AM_RANGE(0x15600000, 0x1560005b) AM_READWRITE(s3c240x_gpio_r, s3c240x_gpio_w) - AM_RANGE(0x15700040, 0x1570008b) AM_READWRITE(s3c240x_rtc_r, s3c240x_rtc_w) - AM_RANGE(0x15800000, 0x15800007) AM_READWRITE(s3c240x_adc_r, s3c240x_adc_w) - AM_RANGE(0x15900000, 0x15900017) AM_READWRITE(s3c240x_spi_r, s3c240x_spi_w) - AM_RANGE(0x15a00000, 0x15a0003f) AM_READWRITE(s3c240x_mmc_r, s3c240x_mmc_w) -ADDRESS_MAP_END +void gp32_state::gp32_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); + map(0x0c000000, 0x0c7fffff).ram().share("s3c240x_ram"); + map(0x14000000, 0x1400003b).rw(this, FUNC(gp32_state::s3c240x_memcon_r), FUNC(gp32_state::s3c240x_memcon_w)); + map(0x14200000, 0x1420005b).rw(this, FUNC(gp32_state::s3c240x_usb_host_r), FUNC(gp32_state::s3c240x_usb_host_w)); + map(0x14400000, 0x14400017).rw(this, FUNC(gp32_state::s3c240x_irq_r), FUNC(gp32_state::s3c240x_irq_w)); + map(0x14600000, 0x1460007b).rw(this, FUNC(gp32_state::s3c240x_dma_r), FUNC(gp32_state::s3c240x_dma_w)); + map(0x14800000, 0x14800017).rw(this, FUNC(gp32_state::s3c240x_clkpow_r), FUNC(gp32_state::s3c240x_clkpow_w)); + map(0x14a00000, 0x14a003ff).rw(this, FUNC(gp32_state::s3c240x_lcd_r), FUNC(gp32_state::s3c240x_lcd_w)); + map(0x14a00400, 0x14a007ff).rw(this, FUNC(gp32_state::s3c240x_lcd_palette_r), FUNC(gp32_state::s3c240x_lcd_palette_w)); + map(0x15000000, 0x1500002b).rw(this, FUNC(gp32_state::s3c240x_uart_0_r), FUNC(gp32_state::s3c240x_uart_0_w)); + map(0x15004000, 0x1500402b).rw(this, FUNC(gp32_state::s3c240x_uart_1_r), FUNC(gp32_state::s3c240x_uart_1_w)); + map(0x15100000, 0x15100043).rw(this, FUNC(gp32_state::s3c240x_pwm_r), FUNC(gp32_state::s3c240x_pwm_w)); + map(0x15200140, 0x152001fb).rw(this, FUNC(gp32_state::s3c240x_usb_device_r), FUNC(gp32_state::s3c240x_usb_device_w)); + map(0x15300000, 0x1530000b).rw(this, FUNC(gp32_state::s3c240x_watchdog_r), FUNC(gp32_state::s3c240x_watchdog_w)); + map(0x15400000, 0x1540000f).rw(this, FUNC(gp32_state::s3c240x_iic_r), FUNC(gp32_state::s3c240x_iic_w)); + map(0x15508000, 0x15508013).rw(this, FUNC(gp32_state::s3c240x_iis_r), FUNC(gp32_state::s3c240x_iis_w)); + map(0x15600000, 0x1560005b).rw(this, FUNC(gp32_state::s3c240x_gpio_r), FUNC(gp32_state::s3c240x_gpio_w)); + map(0x15700040, 0x1570008b).rw(this, FUNC(gp32_state::s3c240x_rtc_r), FUNC(gp32_state::s3c240x_rtc_w)); + map(0x15800000, 0x15800007).rw(this, FUNC(gp32_state::s3c240x_adc_r), FUNC(gp32_state::s3c240x_adc_w)); + map(0x15900000, 0x15900017).rw(this, FUNC(gp32_state::s3c240x_spi_r), FUNC(gp32_state::s3c240x_spi_w)); + map(0x15a00000, 0x15a0003f).rw(this, FUNC(gp32_state::s3c240x_mmc_r), FUNC(gp32_state::s3c240x_mmc_w)); +} static INPUT_PORTS_START( gp32 ) PORT_START("IN0") diff --git a/src/mame/drivers/gp_1.cpp b/src/mame/drivers/gp_1.cpp index f6602dd54c9..cb5851f2cd7 100644 --- a/src/mame/drivers/gp_1.cpp +++ b/src/mame/drivers/gp_1.cpp @@ -81,16 +81,18 @@ private: }; -ADDRESS_MAP_START(gp_1_state::gp_1_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x8c00, 0x8cff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gp_1_state::gp_1_io) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void gp_1_state::gp_1_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("roms", 0); + map(0x8c00, 0x8cff).ram().share("nvram"); +} + +void gp_1_state::gp_1_io(address_map &map) +{ + map.global_mask(0x0f); + map(0x04, 0x07).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} static INPUT_PORTS_START( gp_1 ) PORT_START("DSW0") diff --git a/src/mame/drivers/gp_2.cpp b/src/mame/drivers/gp_2.cpp index ad57905dd6c..cfc7529042c 100644 --- a/src/mame/drivers/gp_2.cpp +++ b/src/mame/drivers/gp_2.cpp @@ -87,16 +87,18 @@ private: }; -ADDRESS_MAP_START(gp_2_state::gp_2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x8c00, 0x8dff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gp_2_state::gp_2_io) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void gp_2_state::gp_2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("roms", 0); + map(0x8c00, 0x8dff).ram().share("nvram"); +} + +void gp_2_state::gp_2_io(address_map &map) +{ + map.global_mask(0x0f); + map(0x04, 0x07).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} static INPUT_PORTS_START( gp_1 ) PORT_START("DSW0") diff --git a/src/mame/drivers/gpworld.cpp b/src/mame/drivers/gpworld.cpp index f2a56e6fe29..88fa31d5ff5 100644 --- a/src/mame/drivers/gpworld.cpp +++ b/src/mame/drivers/gpworld.cpp @@ -321,31 +321,33 @@ WRITE8_MEMBER(gpworld_state::palette_write) } /* PROGRAM MAP */ -ADDRESS_MAP_START(gpworld_state::mainmem) - AM_RANGE(0x0000,0xbfff) AM_ROM - AM_RANGE(0xc000,0xc7ff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0xc800,0xcfff) AM_RAM_WRITE(palette_write) AM_SHARE("palette_ram") /* The memory test reads at 0xc800 */ - AM_RANGE(0xd000,0xd7ff) AM_RAM AM_SHARE("tile_ram") - AM_RANGE(0xd800,0xd800) AM_READWRITE(ldp_read,ldp_write) +void gpworld_state::mainmem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().share("sprite_ram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(gpworld_state::palette_write)).share("palette_ram"); /* The memory test reads at 0xc800 */ + map(0xd000, 0xd7ff).ram().share("tile_ram"); + map(0xd800, 0xd800).rw(this, FUNC(gpworld_state::ldp_read), FUNC(gpworld_state::ldp_write)); /* AM_RANGE(0xd801,0xd801) AM_READ(???) */ - AM_RANGE(0xda00,0xda00) AM_READ_PORT("INWHEEL") //8255 here.... + map(0xda00, 0xda00).portr("INWHEEL"); //8255 here.... /* AM_RANGE(0xda01,0xda01) AM_WRITE(???) */ /* These inputs are interesting - there are writes and reads all over these addr's */ - AM_RANGE(0xda02,0xda02) AM_WRITE(brake_gas_write) /*bit 0 select gas/brake input */ - AM_RANGE(0xda20,0xda20) AM_READ(pedal_in) + map(0xda02, 0xda02).w(this, FUNC(gpworld_state::brake_gas_write)); /*bit 0 select gas/brake input */ + map(0xda20, 0xda20).r(this, FUNC(gpworld_state::pedal_in)); - AM_RANGE(0xe000,0xffff) AM_RAM /* Potentially not all work RAM? */ -ADDRESS_MAP_END + map(0xe000, 0xffff).ram(); /* Potentially not all work RAM? */ +} /* I/O MAP */ -ADDRESS_MAP_START(gpworld_state::mainport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_WRITE(misc_io_write) - AM_RANGE(0x80,0x80) AM_READ_PORT("IN0") - AM_RANGE(0x81,0x81) AM_READ_PORT("IN1") - AM_RANGE(0x82,0x82) AM_READ_PORT("DSW1") - AM_RANGE(0x83,0x83) AM_READ_PORT("DSW2") -ADDRESS_MAP_END +void gpworld_state::mainport(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).w(this, FUNC(gpworld_state::misc_io_write)); + map(0x80, 0x80).portr("IN0"); + map(0x81, 0x81).portr("IN1"); + map(0x82, 0x82).portr("DSW1"); + map(0x83, 0x83).portr("DSW2"); +} /* PORTS */ diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp index 4816f6709fb..40cb27fd3e6 100644 --- a/src/mame/drivers/gradius3.cpp +++ b/src/mame/drivers/gradius3.cpp @@ -149,48 +149,51 @@ WRITE8_MEMBER(gradius3_state::sound_bank_w) -ADDRESS_MAP_START(gradius3_state::gradius3_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM - AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(cpuA_ctrl_w) /* halt cpu B, irq enable, priority, coin counters, other? */ - AM_RANGE(0x0c8000, 0x0c8001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c8002, 0x0c8003) AM_READ_PORT("P1") - AM_RANGE(0x0c8004, 0x0c8005) AM_READ_PORT("P2") - AM_RANGE(0x0c8006, 0x0c8007) AM_READ_PORT("DSW3") - AM_RANGE(0x0d0000, 0x0d0001) AM_READ_PORT("DSW1") - AM_RANGE(0x0d0002, 0x0d0003) AM_READ_PORT("DSW2") - AM_RANGE(0x0d8000, 0x0d8001) AM_WRITE(cpuB_irqtrigger_w) - AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0e8000, 0x0e8001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x0f0000, 0x0f0001) AM_WRITE(sound_irq_w) - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x14c000, 0x153fff) AM_READWRITE(k052109_halfword_r, k052109_halfword_w) - AM_RANGE(0x180000, 0x19ffff) AM_RAM_WRITE(gradius3_gfxram_w) AM_SHARE("k052109") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gradius3_state::gradius3_map2) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x140000, 0x140001) AM_WRITE(cpuB_irqenable_w) - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x24c000, 0x253fff) AM_READWRITE(k052109_halfword_r, k052109_halfword_w) - AM_RANGE(0x280000, 0x29ffff) AM_RAM_WRITE(gradius3_gfxram_w) AM_SHARE("k052109") - AM_RANGE(0x2c0000, 0x2c000f) AM_READWRITE(k051937_halfword_r, k051937_halfword_w) - AM_RANGE(0x2c0800, 0x2c0fff) AM_READWRITE(k051960_halfword_r, k051960_halfword_w) - AM_RANGE(0x400000, 0x5fffff) AM_READ(gradius3_gfxrom_r) /* gfx ROMs are mapped here, and copied to RAM */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(gradius3_state::gradius3_s_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */ - AM_RANGE(0xf010, 0xf010) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void gradius3_state::gradius3_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram(); + map(0x080000, 0x080fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0c0000, 0x0c0001).w(this, FUNC(gradius3_state::cpuA_ctrl_w)); /* halt cpu B, irq enable, priority, coin counters, other? */ + map(0x0c8000, 0x0c8001).portr("SYSTEM"); + map(0x0c8002, 0x0c8003).portr("P1"); + map(0x0c8004, 0x0c8005).portr("P2"); + map(0x0c8006, 0x0c8007).portr("DSW3"); + map(0x0d0000, 0x0d0001).portr("DSW1"); + map(0x0d0002, 0x0d0003).portr("DSW2"); + map(0x0d8000, 0x0d8001).w(this, FUNC(gradius3_state::cpuB_irqtrigger_w)); + map(0x0e0000, 0x0e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0e8000, 0x0e8000).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0f0000, 0x0f0001).w(this, FUNC(gradius3_state::sound_irq_w)); + map(0x100000, 0x103fff).ram().share("share1"); + map(0x14c000, 0x153fff).rw(this, FUNC(gradius3_state::k052109_halfword_r), FUNC(gradius3_state::k052109_halfword_w)); + map(0x180000, 0x19ffff).ram().w(this, FUNC(gradius3_state::gradius3_gfxram_w)).share("k052109"); +} + + +void gradius3_state::gradius3_map2(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x140000, 0x140001).w(this, FUNC(gradius3_state::cpuB_irqenable_w)); + map(0x200000, 0x203fff).ram().share("share1"); + map(0x24c000, 0x253fff).rw(this, FUNC(gradius3_state::k052109_halfword_r), FUNC(gradius3_state::k052109_halfword_w)); + map(0x280000, 0x29ffff).ram().w(this, FUNC(gradius3_state::gradius3_gfxram_w)).share("k052109"); + map(0x2c0000, 0x2c000f).rw(this, FUNC(gradius3_state::k051937_halfword_r), FUNC(gradius3_state::k051937_halfword_w)); + map(0x2c0800, 0x2c0fff).rw(this, FUNC(gradius3_state::k051960_halfword_r), FUNC(gradius3_state::k051960_halfword_w)); + map(0x400000, 0x5fffff).r(this, FUNC(gradius3_state::gradius3_gfxrom_r)); /* gfx ROMs are mapped here, and copied to RAM */ +} + + +void gradius3_state::gradius3_s_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf000).w(this, FUNC(gradius3_state::sound_bank_w)); /* 007232 bankswitch */ + map(0xf010, 0xf010).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf020, 0xf02d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xf030, 0xf031).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf800, 0xffff).ram(); +} diff --git a/src/mame/drivers/grchamp.cpp b/src/mame/drivers/grchamp.cpp index 0ac8ef105f3..f405730cb13 100644 --- a/src/mame/drivers/grchamp.cpp +++ b/src/mame/drivers/grchamp.cpp @@ -544,49 +544,53 @@ GFXDECODE_END *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(grchamp_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("radarram") - AM_RANGE(0x5000, 0x53ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x5800, 0x58ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(grchamp_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x78) AM_READ_PORT("ACCEL") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x78) AM_READ(sub_to_main_comm_r) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x78) AM_READ_PORT("WHEEL") - AM_RANGE(0x04, 0x04) AM_MIRROR(0x78) AM_READ_PORT("DSWA") - AM_RANGE(0x05, 0x05) AM_MIRROR(0x78) AM_READ_PORT("DSWB") - AM_RANGE(0x06, 0x06) AM_MIRROR(0x78) AM_READ_PORT("TILT") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x60) AM_READ(pc3259_0_r) - AM_RANGE(0x09, 0x09) AM_MIRROR(0x60) AM_READ(pc3259_1_r) - AM_RANGE(0x11, 0x11) AM_MIRROR(0x60) AM_READ(pc3259_2_r) - AM_RANGE(0x19, 0x19) AM_MIRROR(0x60) AM_READ(pc3259_3_r) - AM_RANGE(0x00, 0x0f) AM_MIRROR(0x40) AM_WRITE(cpu0_outputs_w) - AM_RANGE(0x10, 0x13) AM_MIRROR(0x40) AM_WRITE(main_to_sub_comm_w) - AM_RANGE(0x20, 0x20) AM_SELECT(0x0c) AM_MIRROR(0x53) AM_WRITE(led_board_w) -ADDRESS_MAP_END +void grchamp_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0x0400).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().share("radarram"); + map(0x5000, 0x53ff).mirror(0x0400).ram().share("videoram"); + map(0x5800, 0x58ff).mirror(0x0700).ram().share("spriteram"); +} + + +void grchamp_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x78).portr("ACCEL"); + map(0x02, 0x02).mirror(0x78).r(this, FUNC(grchamp_state::sub_to_main_comm_r)); + map(0x03, 0x03).mirror(0x78).portr("WHEEL"); + map(0x04, 0x04).mirror(0x78).portr("DSWA"); + map(0x05, 0x05).mirror(0x78).portr("DSWB"); + map(0x06, 0x06).mirror(0x78).portr("TILT"); + map(0x01, 0x01).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_0_r)); + map(0x09, 0x09).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_1_r)); + map(0x11, 0x11).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_2_r)); + map(0x19, 0x19).mirror(0x60).r(this, FUNC(grchamp_state::pc3259_3_r)); + map(0x00, 0x0f).mirror(0x40).w(this, FUNC(grchamp_state::cpu0_outputs_w)); + map(0x10, 0x13).mirror(0x40).w(this, FUNC(grchamp_state::main_to_sub_comm_w)); + map(0x20, 0x20).select(0x0c).mirror(0x53).w(this, FUNC(grchamp_state::led_board_w)); +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(grchamp_state::sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(left_w) AM_SHARE("leftram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(right_w) AM_SHARE("rightram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(center_w) AM_SHARE("centerram") - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x5000, 0x6fff) AM_ROM -ADDRESS_MAP_END +void grchamp_state::sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram().w(this, FUNC(grchamp_state::left_w)).share("leftram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(grchamp_state::right_w)).share("rightram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(grchamp_state::center_w)).share("centerram"); + map(0x4000, 0x43ff).mirror(0x0400).ram(); + map(0x5000, 0x6fff).rom(); +} -ADDRESS_MAP_START(grchamp_state::sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_READ(main_to_sub_comm_r) - AM_RANGE(0x00, 0x0f) AM_MIRROR(0x70) AM_WRITE(cpu1_outputs_w) -ADDRESS_MAP_END +void grchamp_state::sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).r(this, FUNC(grchamp_state::main_to_sub_comm_r)); + map(0x00, 0x0f).mirror(0x70).w(this, FUNC(grchamp_state::cpu1_outputs_w)); +} /* complete memory map derived from schematics; @@ -619,19 +623,20 @@ ADDRESS_MAP_END 0 1 0 1 0 x x x x x x x x x 0 1 W OPEN BUS 0 1 0 1 0 x x x x x x x x x 1 x RW OPEN BUS */ -ADDRESS_MAP_START(grchamp_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM +void grchamp_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); // 2000-3fff are empty rom sockets - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x4801) AM_MIRROR(0x07f8) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x4801, 0x4801) AM_MIRROR(0x07f8) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x4802, 0x4803) AM_MIRROR(0x07f8) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x07fc) AM_READ(soundlatch_r) AM_WRITE(soundlatch_clear7_w) - AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x07fc) AM_READ(soundlatch_flags_r) AM_WRITENOP // writes here on taitosj reset the secondary semaphore, which doesn't exist on grchamp, but the code tries to reset it anyway! -ADDRESS_MAP_END + map(0x4000, 0x43ff).ram(); + map(0x4800, 0x4801).mirror(0x07f8).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x4801, 0x4801).mirror(0x07f8).r("ay1", FUNC(ay8910_device::data_r)); + map(0x4802, 0x4803).mirror(0x07f8).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x4803, 0x4803).mirror(0x07f8).r("ay2", FUNC(ay8910_device::data_r)); + map(0x4804, 0x4805).mirror(0x07fa).w("ay3", FUNC(ay8910_device::address_data_w)); + map(0x4805, 0x4805).mirror(0x07fa).r("ay3", FUNC(ay8910_device::data_r)); + map(0x5000, 0x5000).mirror(0x07fc).r(this, FUNC(grchamp_state::soundlatch_r)).w(this, FUNC(grchamp_state::soundlatch_clear7_w)); + map(0x5001, 0x5001).mirror(0x07fc).r(this, FUNC(grchamp_state::soundlatch_flags_r)).nopw(); // writes here on taitosj reset the secondary semaphore, which doesn't exist on grchamp, but the code tries to reset it anyway! +} diff --git a/src/mame/drivers/grfd2301.cpp b/src/mame/drivers/grfd2301.cpp index fde8a27fb0d..de5c7a8f812 100644 --- a/src/mame/drivers/grfd2301.cpp +++ b/src/mame/drivers/grfd2301.cpp @@ -57,15 +57,17 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(grfd2301_state::mem_map) - AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(grfd2301_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void grfd2301_state::mem_map(address_map &map) +{ + map(0xe000, 0xefff).rom().region("maincpu", 0); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("videoram"); +} + +void grfd2301_state::io_map(address_map &map) +{ + map.global_mask(0xff); +} static INPUT_PORTS_START( grfd2301 ) INPUT_PORTS_END diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp index 04e46f1ba34..26510918db7 100644 --- a/src/mame/drivers/gridcomp.cpp +++ b/src/mame/drivers/gridcomp.cpp @@ -315,36 +315,39 @@ IRQ_CALLBACK_MEMBER(gridcomp_state::irq_callback) } -ADDRESS_MAP_START(gridcomp_state::grid1101_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xdfe80, 0xdfe83) AM_DEVREADWRITE8("i7220", i7220_device, read, write, 0x00ff) - AM_RANGE(0xdfea0, 0xdfeaf) AM_UNMAP // ?? - AM_RANGE(0xdfec0, 0xdfecf) AM_DEVREADWRITE8("modem", i8255_device, read, write, 0x00ff) // incl. DTMF generator - AM_RANGE(0xdff40, 0xdff5f) AM_NOP // ?? machine ID EAROM, RTC - AM_RANGE(0xdff80, 0xdff8f) AM_READWRITE(grid_gpib_r, grid_gpib_w) // TMS9914 - AM_RANGE(0xdffc0, 0xdffcf) AM_READWRITE(grid_keyb_r, grid_keyb_w) // Intel 8741 MCU - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gridcomp_state::grid1121_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x90000, 0x97fff) AM_UNMAP // ?? ROM slot - AM_RANGE(0x9ff00, 0x9ff0f) AM_UNMAP // AM_READ(grid_9ff0_r) // ?? ROM? - AM_RANGE(0xc0000, 0xcffff) AM_UNMAP // ?? ROM slot -- signature expected: 0x4554, 0x5048 - AM_RANGE(0xdfe00, 0xdfe1f) AM_UNMAP // AM_DEVREADWRITE8("uart8274", i8274_new_device, ba_cd_r, ba_cd_w, 0x00ff) - AM_RANGE(0xdfe40, 0xdfe4f) AM_UNMAP // ?? diagnostic 8274 - AM_RANGE(0xdfe80, 0xdfe83) AM_DEVREADWRITE8("i7220", i7220_device, read, write, 0x00ff) - AM_RANGE(0xdfea0, 0xdfeaf) AM_UNMAP // ?? - AM_RANGE(0xdfec0, 0xdfecf) AM_DEVREADWRITE8("modem", i8255_device, read, write, 0x00ff) // incl. DTMF generator - AM_RANGE(0xdff40, 0xdff5f) AM_NOP // ?? machine ID EAROM, RTC - AM_RANGE(0xdff80, 0xdff8f) AM_READWRITE(grid_gpib_r, grid_gpib_w) // TMS9914 - AM_RANGE(0xdffc0, 0xdffcf) AM_READWRITE(grid_keyb_r, grid_keyb_w) // Intel 8741 MCU - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gridcomp_state::grid1101_io) - AM_RANGE(0x0000, 0x000f) AM_DEVICE(I80130_TAG, i80130_device, io_map) -ADDRESS_MAP_END +void gridcomp_state::grid1101_map(address_map &map) +{ + map.unmap_value_high(); + map(0xdfe80, 0xdfe83).rw("i7220", FUNC(i7220_device::read), FUNC(i7220_device::write)).umask16(0x00ff); + map(0xdfea0, 0xdfeaf).unmaprw(); // ?? + map(0xdfec0, 0xdfecf).rw(m_modem, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // incl. DTMF generator + map(0xdff40, 0xdff5f).noprw(); // ?? machine ID EAROM, RTC + map(0xdff80, 0xdff8f).rw(this, FUNC(gridcomp_state::grid_gpib_r), FUNC(gridcomp_state::grid_gpib_w)); // TMS9914 + map(0xdffc0, 0xdffcf).rw(this, FUNC(gridcomp_state::grid_keyb_r), FUNC(gridcomp_state::grid_keyb_w)); // Intel 8741 MCU + map(0xfc000, 0xfffff).rom().region("user1", 0); +} + +void gridcomp_state::grid1121_map(address_map &map) +{ + map.unmap_value_high(); + map(0x90000, 0x97fff).unmaprw(); // ?? ROM slot + map(0x9ff00, 0x9ff0f).unmaprw(); // AM_READ(grid_9ff0_r) // ?? ROM? + map(0xc0000, 0xcffff).unmaprw(); // ?? ROM slot -- signature expected: 0x4554, 0x5048 + map(0xdfe00, 0xdfe1f).unmaprw(); // AM_DEVREADWRITE8("uart8274", i8274_new_device, ba_cd_r, ba_cd_w, 0x00ff) + map(0xdfe40, 0xdfe4f).unmaprw(); // ?? diagnostic 8274 + map(0xdfe80, 0xdfe83).rw("i7220", FUNC(i7220_device::read), FUNC(i7220_device::write)).umask16(0x00ff); + map(0xdfea0, 0xdfeaf).unmaprw(); // ?? + map(0xdfec0, 0xdfecf).rw(m_modem, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // incl. DTMF generator + map(0xdff40, 0xdff5f).noprw(); // ?? machine ID EAROM, RTC + map(0xdff80, 0xdff8f).rw(this, FUNC(gridcomp_state::grid_gpib_r), FUNC(gridcomp_state::grid_gpib_w)); // TMS9914 + map(0xdffc0, 0xdffcf).rw(this, FUNC(gridcomp_state::grid_keyb_r), FUNC(gridcomp_state::grid_keyb_w)); // Intel 8741 MCU + map(0xfc000, 0xfffff).rom().region("user1", 0); +} + +void gridcomp_state::grid1101_io(address_map &map) +{ + map(0x0000, 0x000f).m(m_osp, FUNC(i80130_device::io_map)); +} static INPUT_PORTS_START( gridcomp ) INPUT_PORTS_END diff --git a/src/mame/drivers/gridlee.cpp b/src/mame/drivers/gridlee.cpp index 932b68e14fb..f575e02ab7f 100644 --- a/src/mame/drivers/gridlee.cpp +++ b/src/mame/drivers/gridlee.cpp @@ -299,22 +299,26 @@ WRITE_LINE_MEMBER(gridlee_state::coin_counter_w) *************************************/ /* CPU 1 read addresses */ -ADDRESS_MAP_START(gridlee_state::cpu1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(gridlee_videoram_w) AM_SHARE("videoram") - ;map(0x9000, 0x9000).select(0x0070).lw8("latch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_latch->write_d0(space, offset >> 4, data, mem_mask); }); - AM_RANGE(0x9200, 0x9200) AM_WRITE(gridlee_palette_select_w) - AM_RANGE(0x9380, 0x9380) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9500, 0x9501) AM_READ(analog_port_r) - AM_RANGE(0x9502, 0x9502) AM_READ_PORT("IN0") - AM_RANGE(0x9503, 0x9503) AM_READ_PORT("IN1") - AM_RANGE(0x9600, 0x9600) AM_READ_PORT("DSW") - AM_RANGE(0x9700, 0x9700) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0x9820, 0x9820) AM_READ(random_num_r) - AM_RANGE(0x9828, 0x993f) AM_DEVWRITE("gridlee", gridlee_sound_device, gridlee_sound_w) - AM_RANGE(0x9c00, 0x9cff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END +void gridlee_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("spriteram"); + map(0x0800, 0x7fff).ram().w(this, FUNC(gridlee_state::gridlee_videoram_w)).share("videoram"); + map(0x9000, 0x9000).select(0x0070).lw8("latch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_latch->write_d0(space, offset >> 4, data, mem_mask); + }); + map(0x9200, 0x9200).w(this, FUNC(gridlee_state::gridlee_palette_select_w)); + map(0x9380, 0x9380).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x9500, 0x9501).r(this, FUNC(gridlee_state::analog_port_r)); + map(0x9502, 0x9502).portr("IN0"); + map(0x9503, 0x9503).portr("IN1"); + map(0x9600, 0x9600).portr("DSW"); + map(0x9700, 0x9700).portr("IN2").nopw(); + map(0x9820, 0x9820).r(this, FUNC(gridlee_state::random_num_r)); + map(0x9828, 0x993f).w("gridlee", FUNC(gridlee_sound_device::gridlee_sound_w)); + map(0x9c00, 0x9cff).ram().share("nvram"); + map(0xa000, 0xffff).rom(); +} diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp index 4b478bd6e4c..14f66ff58d9 100644 --- a/src/mame/drivers/groundfx.cpp +++ b/src/mame/drivers/groundfx.cpp @@ -156,24 +156,25 @@ WRITE32_MEMBER(groundfx_state::motor_control_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(groundfx_state::groundfx_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") /* main CPUA ram */ - AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w) /* gun vibration */ - AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff) - AM_RANGE(0x600000, 0x600003) AM_READWRITE(adc_r, adc_w) - AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) // debugging - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */ - AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb003ff) AM_RAM // ?? single bytes, blending ?? - AM_RANGE(0xc00000, 0xc00007) AM_READNOP /* Network? */ - AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w) /* perhaps port based rotate control? */ +void groundfx_state::groundfx_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */ + map(0x300000, 0x303fff).ram().share("spriteram"); /* sprite ram */ + map(0x400000, 0x400003).w(this, FUNC(groundfx_state::motor_control_w)); /* gun vibration */ + map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); + map(0x600000, 0x600003).rw(this, FUNC(groundfx_state::adc_r), FUNC(groundfx_state::adc_w)); + map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); /* tilemaps */ + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w)); // debugging + map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* 6bpp tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w)); + map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xb00000, 0xb003ff).ram(); // ?? single bytes, blending ?? + map(0xc00000, 0xc00007).nopr(); /* Network? */ + map(0xd00000, 0xd00003).w(this, FUNC(groundfx_state::rotate_control_w)); /* perhaps port based rotate control? */ /* f00000 is seat control? */ -ADDRESS_MAP_END +} /*********************************************************** INPUT PORTS (dips in eprom) diff --git a/src/mame/drivers/gstream.cpp b/src/mame/drivers/gstream.cpp index e36590d5b49..637872e7236 100644 --- a/src/mame/drivers/gstream.cpp +++ b/src/mame/drivers/gstream.cpp @@ -288,21 +288,22 @@ WRITE32_MEMBER(gstream_state::gstream_tilemap3_scrolly_w) m_tmap3_scrolly = data; } -ADDRESS_MAP_START(gstream_state::gstream_32bit_map) - AM_RANGE(0x00000000, 0x003FFFFF) AM_RAM AM_SHARE("workram") // work ram +void gstream_state::gstream_32bit_map(address_map &map) +{ + map(0x00000000, 0x003FFFFF).ram().share("workram"); // work ram // AM_RANGE(0x40000000, 0x40FFFFFF) AM_RAM // ?? lots of data gets copied here if present, but game runs without it?? - AM_RANGE(0x80000000, 0x80003FFF) AM_RAM_WRITE(gstream_vram_w) AM_SHARE("vram") // video ram - AM_RANGE(0x4E000000, 0x4E1FFFFF) AM_ROM AM_REGION("user2",0) // main game rom - AM_RANGE(0x4F000000, 0x4F000003) AM_WRITE(gstream_tilemap3_scrollx_w) - AM_RANGE(0x4F200000, 0x4F200003) AM_WRITE(gstream_tilemap3_scrolly_w) - AM_RANGE(0x4F400000, 0x4F406FFF) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x4F800000, 0x4F800003) AM_WRITE(gstream_tilemap1_scrollx_w) - AM_RANGE(0x4FA00000, 0x4FA00003) AM_WRITE(gstream_tilemap1_scrolly_w) - AM_RANGE(0x4FC00000, 0x4FC00003) AM_WRITE(gstream_tilemap2_scrollx_w) - AM_RANGE(0x4FE00000, 0x4FE00003) AM_WRITE(gstream_tilemap2_scrolly_w) - AM_RANGE(0xFFC00000, 0xFFC01FFF) AM_RAM AM_SHARE("nvram") // Backup RAM - AM_RANGE(0xFFF80000, 0xFFFFFFFF) AM_ROM AM_REGION("user1",0) // boot rom -ADDRESS_MAP_END + map(0x80000000, 0x80003FFF).ram().w(this, FUNC(gstream_state::gstream_vram_w)).share("vram"); // video ram + map(0x4E000000, 0x4E1FFFFF).rom().region("user2", 0); // main game rom + map(0x4F000000, 0x4F000003).w(this, FUNC(gstream_state::gstream_tilemap3_scrollx_w)); + map(0x4F200000, 0x4F200003).w(this, FUNC(gstream_state::gstream_tilemap3_scrolly_w)); + map(0x4F400000, 0x4F406FFF).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x4F800000, 0x4F800003).w(this, FUNC(gstream_state::gstream_tilemap1_scrollx_w)); + map(0x4FA00000, 0x4FA00003).w(this, FUNC(gstream_state::gstream_tilemap1_scrolly_w)); + map(0x4FC00000, 0x4FC00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrollx_w)); + map(0x4FE00000, 0x4FE00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrolly_w)); + map(0xFFC00000, 0xFFC01FFF).ram().share("nvram"); // Backup RAM + map(0xFFF80000, 0xFFFFFFFF).rom().region("user1", 0); // boot rom +} WRITE32_MEMBER(gstream_state::gstream_oki_banking_w) { @@ -369,34 +370,36 @@ WRITE32_MEMBER(gstream_state::gstream_oki_4040_w) // data == 0 or data == 0x81 } -ADDRESS_MAP_START(gstream_state::gstream_io) - AM_RANGE(0x4000, 0x4003) AM_READ_PORT("IN0") - AM_RANGE(0x4010, 0x4013) AM_READ_PORT("IN1") - AM_RANGE(0x4020, 0x4023) AM_READ_PORT("IN2") // extra coin switches etc - AM_RANGE(0x4030, 0x4033) AM_WRITE(gstream_oki_banking_w) // oki banking - AM_RANGE(0x4040, 0x4043) AM_WRITE(gstream_oki_4040_w) // some clocking? - AM_RANGE(0x4050, 0x4053) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff) // music and samples - AM_RANGE(0x4060, 0x4063) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff) // music and samples -ADDRESS_MAP_END +void gstream_state::gstream_io(address_map &map) +{ + map(0x4000, 0x4003).portr("IN0"); + map(0x4010, 0x4013).portr("IN1"); + map(0x4020, 0x4023).portr("IN2"); // extra coin switches etc + map(0x4030, 0x4033).w(this, FUNC(gstream_state::gstream_oki_banking_w)); // oki banking + map(0x4040, 0x4043).w(this, FUNC(gstream_state::gstream_oki_4040_w)); // some clocking? + map(0x4053, 0x4053).rw(m_oki_1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples + map(0x4063, 0x4063).rw(m_oki_2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // music and samples +} -ADDRESS_MAP_START(gstream_state::x2222_32bit_map) - AM_RANGE(0x00000000, 0x003FFFFF) AM_RAM AM_SHARE("workram") // work ram - AM_RANGE(0x40000000, 0x403fffff) AM_RAM // ?? data gets copied here if present, but game runs without it?? - AM_RANGE(0x80000000, 0x80003FFF) AM_RAM_WRITE(gstream_vram_w) AM_SHARE("vram") // video ram +void gstream_state::x2222_32bit_map(address_map &map) +{ + map(0x00000000, 0x003FFFFF).ram().share("workram"); // work ram + map(0x40000000, 0x403fffff).ram(); // ?? data gets copied here if present, but game runs without it?? + map(0x80000000, 0x80003FFF).ram().w(this, FUNC(gstream_state::gstream_vram_w)).share("vram"); // video ram - AM_RANGE(0x4Fc00000, 0x4Fc00003) AM_WRITE(gstream_tilemap2_scrolly_w) - AM_RANGE(0x4Fd00000, 0x4Fd00003) AM_WRITE(gstream_tilemap2_scrollx_w) + map(0x4Fc00000, 0x4Fc00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrolly_w)); + map(0x4Fd00000, 0x4Fd00003).w(this, FUNC(gstream_state::gstream_tilemap2_scrollx_w)); - AM_RANGE(0x4Fa00000, 0x4Fa00003) AM_WRITE(gstream_tilemap3_scrolly_w) - AM_RANGE(0x4Fb00000, 0x4Fb00003) AM_WRITE(gstream_tilemap3_scrollx_w) + map(0x4Fa00000, 0x4Fa00003).w(this, FUNC(gstream_state::gstream_tilemap3_scrolly_w)); + map(0x4Fb00000, 0x4Fb00003).w(this, FUNC(gstream_state::gstream_tilemap3_scrollx_w)); - AM_RANGE(0x4Fe00000, 0x4Fe00003) AM_WRITE(gstream_tilemap1_scrolly_w) - AM_RANGE(0x4Ff00000, 0x4Ff00003) AM_WRITE(gstream_tilemap1_scrollx_w) + map(0x4Fe00000, 0x4Fe00003).w(this, FUNC(gstream_state::gstream_tilemap1_scrolly_w)); + map(0x4Ff00000, 0x4Ff00003).w(this, FUNC(gstream_state::gstream_tilemap1_scrollx_w)); - AM_RANGE(0xFFC00000, 0xFFC01FFF) AM_RAM AM_SHARE("nvram") // Backup RAM (maybe) - AM_RANGE(0xFFF00000, 0xFFFFFFFF) AM_ROM AM_REGION("user1",0) // boot rom -ADDRESS_MAP_END + map(0xFFC00000, 0xFFC01FFF).ram().share("nvram"); // Backup RAM (maybe) + map(0xFFF00000, 0xFFFFFFFF).rom().region("user1", 0); // boot rom +} WRITE32_MEMBER(gstream_state::x2222_sound_w) { @@ -405,14 +408,15 @@ WRITE32_MEMBER(gstream_state::x2222_sound_w) printf("x2222_sound_w unk %08x\n", data); } -ADDRESS_MAP_START(gstream_state::x2222_io) - AM_RANGE(0x4000, 0x4003) AM_READ_PORT("P1") - AM_RANGE(0x4004, 0x4007) AM_READ_PORT("P2") - AM_RANGE(0x4008, 0x400b) AM_READ_PORT("SYS") - AM_RANGE(0x4010, 0x4013) AM_READ_PORT("DSW") - AM_RANGE(0x4028, 0x402b) AM_WRITE( x2222_sound_w ) - AM_RANGE(0x4034, 0x4037) AM_READ_PORT("IN4") -ADDRESS_MAP_END +void gstream_state::x2222_io(address_map &map) +{ + map(0x4000, 0x4003).portr("P1"); + map(0x4004, 0x4007).portr("P2"); + map(0x4008, 0x400b).portr("SYS"); + map(0x4010, 0x4013).portr("DSW"); + map(0x4028, 0x402b).w(this, FUNC(gstream_state::x2222_sound_w)); + map(0x4034, 0x4037).portr("IN4"); +} static INPUT_PORTS_START( gstream ) PORT_START("IN0") diff --git a/src/mame/drivers/gstriker.cpp b/src/mame/drivers/gstriker.cpp index 0bab83e941d..97d711397fb 100644 --- a/src/mame/drivers/gstriker.cpp +++ b/src/mame/drivers/gstriker.cpp @@ -246,42 +246,46 @@ GFXDECODE_END -ADDRESS_MAP_START(gstriker_state::twcup94_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, vram_r, vram_w ) - AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("cg10103_m_vram") - AM_RANGE(0x180000, 0x180fff) AM_DEVREADWRITE("texttilemap", vs920a_text_tilemap_device, vram_r, vram_w ) - AM_RANGE(0x181000, 0x181fff) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, line_r, line_w ) - AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") AM_MIRROR(0x00f000) - - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("zoomtilemap", mb60553_zooming_tilemap_device, regs_r, regs_w ) - AM_RANGE(0x200010, 0x200011) AM_WRITENOP - AM_RANGE(0x200020, 0x200021) AM_WRITENOP - AM_RANGE(0x200040, 0x20005f) AM_RAM AM_SHARE("mixerregs") - AM_RANGE(0x200080, 0x20009f) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff) - AM_RANGE(0x2000a0, 0x2000a1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("work_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gstriker_state::gstriker_map) - AM_IMPORT_FROM(twcup94_map) - AM_RANGE(0x200060, 0x200063) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gstriker_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gstriker_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void gstriker_state::twcup94_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x103fff).rw(m_bg, FUNC(mb60553_zooming_tilemap_device::vram_r), FUNC(mb60553_zooming_tilemap_device::vram_w)); + map(0x140000, 0x141fff).ram().share("cg10103_m_vram"); + map(0x180000, 0x180fff).rw(m_tx, FUNC(vs920a_text_tilemap_device::vram_r), FUNC(vs920a_text_tilemap_device::vram_w)); + map(0x181000, 0x181fff).rw(m_bg, FUNC(mb60553_zooming_tilemap_device::line_r), FUNC(mb60553_zooming_tilemap_device::line_w)); + map(0x1c0000, 0x1c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette").mirror(0x00f000); + + map(0x200000, 0x20000f).rw(m_bg, FUNC(mb60553_zooming_tilemap_device::regs_r), FUNC(mb60553_zooming_tilemap_device::regs_w)); + map(0x200010, 0x200011).nopw(); + map(0x200020, 0x200021).nopw(); + map(0x200040, 0x20005f).ram().share("mixerregs"); + map(0x200080, 0x20009f).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff); + map(0x2000a1, 0x2000a1).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + + map(0xffc000, 0xffffff).ram().share("work_ram"); +} + +void gstriker_state::gstriker_map(address_map &map) +{ + twcup94_map(map); + map(0x200060, 0x200063).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); +} + +void gstriker_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("soundbank"); +} + +void gstriker_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x04, 0x04).w(this, FUNC(gstriker_state::sh_bankswitch_w)); + map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp index 00360871397..9607097977a 100644 --- a/src/mame/drivers/gsword.cpp +++ b/src/mame/drivers/gsword.cpp @@ -470,65 +470,72 @@ ADDRESS_MAP_START(gsword_state_base::cpu1_map) ADDRESS_MAP_END -ADDRESS_MAP_START(gsword_state::cpu1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7e, 0x7f) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_0, write_0) -ADDRESS_MAP_END +void gsword_state::cpu1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7e, 0x7f).rw("taito8741", FUNC(taito8741_4pack_device::read_0), FUNC(taito8741_4pack_device::write_0)); +} -ADDRESS_MAP_START(gsword_state::cpu2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("cpu2_ram") - AM_RANGE(0x6000, 0x6000) AM_WRITE(sound_command_w) -ADDRESS_MAP_END +void gsword_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().share("cpu2_ram"); + map(0x6000, 0x6000).w(this, FUNC(gsword_state::sound_command_w)); +} -ADDRESS_MAP_START(gsword_state::cpu2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2) - AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3) - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_1, write_1) - AM_RANGE(0x60, 0x60) AM_READWRITE(fake_0_r, ay8910_control_port_0_w) - AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x80, 0x80) AM_READWRITE(fake_1_r, ay8910_control_port_1_w) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - - AM_RANGE(0xe0, 0xe0) AM_READNOP /* ?? */ - AM_RANGE(0xa0, 0xa0) AM_WRITENOP /* ?? */ - AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* watchdog? */ -ADDRESS_MAP_END +void gsword_state::cpu2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("taito8741", FUNC(taito8741_4pack_device::read_2), FUNC(taito8741_4pack_device::write_2)); + map(0x20, 0x21).rw("taito8741", FUNC(taito8741_4pack_device::read_3), FUNC(taito8741_4pack_device::write_3)); + map(0x40, 0x41).rw("taito8741", FUNC(taito8741_4pack_device::read_1), FUNC(taito8741_4pack_device::write_1)); + map(0x60, 0x60).rw(this, FUNC(gsword_state::fake_0_r), FUNC(gsword_state::ay8910_control_port_0_w)); + map(0x61, 0x61).rw(m_ay0, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x80, 0x80).rw(this, FUNC(gsword_state::fake_1_r), FUNC(gsword_state::ay8910_control_port_1_w)); + map(0x81, 0x81).rw(m_ay1, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + + map(0xe0, 0xe0).nopr(); /* ?? */ + map(0xa0, 0xa0).nopw(); /* ?? */ + map(0xe0, 0xe0).nopw(); /* watchdog? */ +} -ADDRESS_MAP_START(gsword_state::cpu3_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_WRITE(adpcm_data_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void gsword_state::cpu3_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8000).w(this, FUNC(gsword_state::adpcm_data_w)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} -ADDRESS_MAP_START(josvolly_state::josvolly_cpu1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7e, 0x7f) AM_DEVREADWRITE("mcu1", upi41_cpu_device, upi41_master_r, upi41_master_w) -ADDRESS_MAP_END +void josvolly_state::josvolly_cpu1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7e, 0x7f).rw("mcu1", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); +} -ADDRESS_MAP_START(josvolly_state::josvolly_cpu2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("cpu2_ram") +void josvolly_state::josvolly_cpu2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().share("cpu2_ram"); /* NEC D8255A with silkscreen removed and replaced with "AA 007" */ - AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE("aa_007", i8255_device, read, write) + map(0x8000, 0x8003).rw("aa_007", FUNC(i8255_device::read), FUNC(i8255_device::write)); // AM_RANGE(0x6000, 0x6000) AM_WRITE(adpcm_soundcommand_w) - AM_RANGE(0xA000, 0xA001) AM_DEVREADWRITE("mcu2", upi41_cpu_device, upi41_master_r, upi41_master_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(josvolly_state::josvolly_cpu2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(fake_0_r, ay8910_control_port_0_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x40, 0x40) AM_READWRITE(fake_1_r, ay8910_control_port_1_w) - AM_RANGE(0x41, 0x41) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) + map(0xA000, 0xA001).rw("mcu2", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)); +} - AM_RANGE(0x81, 0x81) AM_WRITE(cpu2_nmi_enable_w); - AM_RANGE(0xC1, 0xC1) AM_WRITE(cpu2_irq_clear_w); -ADDRESS_MAP_END +void josvolly_state::josvolly_cpu2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(josvolly_state::fake_0_r), FUNC(josvolly_state::ay8910_control_port_0_w)); + map(0x01, 0x01).rw(m_ay0, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x40, 0x40).rw(this, FUNC(josvolly_state::fake_1_r), FUNC(josvolly_state::ay8910_control_port_1_w)); + map(0x41, 0x41).rw(m_ay1, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + + map(0x81, 0x81).w(this, FUNC(josvolly_state::cpu2_nmi_enable_w)); + map(0xC1, 0xC1).w(this, FUNC(josvolly_state::cpu2_irq_clear_w)); +} static INPUT_PORTS_START( gsword ) diff --git a/src/mame/drivers/gticlub.cpp b/src/mame/drivers/gticlub.cpp index f9006f2a805..502b0c9d7ab 100644 --- a/src/mame/drivers/gticlub.cpp +++ b/src/mame/drivers/gticlub.cpp @@ -511,52 +511,55 @@ MACHINE_START_MEMBER(gticlub_state,gticlub) m_sound_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gticlub_state::sound_irq), this)); } -ADDRESS_MAP_START(gticlub_state::gticlub_map) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(gticlub_k001604_reg_r, gticlub_k001604_reg_w) - AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram") - AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(gticlub_k001604_tile_r, gticlub_k001604_tile_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(gticlub_k001604_char_r, gticlub_k001604_char_w) - AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) - AM_RANGE(0x78040000, 0x7804000f) AM_DEVREADWRITE("k001006_1", k001006_device, read, write) - AM_RANGE(0x78080000, 0x7808000f) AM_DEVREADWRITE("k001006_2", k001006_device, read, write) - AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) - AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff) - AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) - AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ - AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(gticlub_state::hangplt_map) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(gticlub_k001604_reg_r, gticlub_k001604_reg_w) - AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram") - AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(gticlub_k001604_tile_r, gticlub_k001604_tile_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(gticlub_k001604_char_r, gticlub_k001604_char_w) - AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) - AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) - AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff) - AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) - AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ - AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END +void gticlub_state::gticlub_map(address_map &map) +{ + map(0x00000000, 0x000fffff).ram().share("work_ram"); /* Work RAM */ + map(0x74000000, 0x740000ff).rw(this, FUNC(gticlub_state::gticlub_k001604_reg_r), FUNC(gticlub_state::gticlub_k001604_reg_w)); + map(0x74010000, 0x7401ffff).ram().w(this, FUNC(gticlub_state::paletteram32_w)).share("paletteram"); + map(0x74020000, 0x7403ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_tile_r), FUNC(gticlub_state::gticlub_k001604_tile_w)); + map(0x74040000, 0x7407ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_char_r), FUNC(gticlub_state::gticlub_k001604_char_w)); + map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); + map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write)); + map(0x78080000, 0x7808000f).rw(m_k001006_2, FUNC(k001006_device::read), FUNC(k001006_device::write)); + map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc)); + map(0x7e000000, 0x7e003fff).rw(this, FUNC(gticlub_state::sysreg_r), FUNC(gticlub_state::sysreg_w)); + map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); + map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); + map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x7f000000, 0x7f3fffff).rom().region("user2", 0); /* Data ROM */ + map(0x7f800000, 0x7f9fffff).rom().share("share2"); + map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */ +} + +void gticlub_state::hangplt_map(address_map &map) +{ + map(0x00000000, 0x000fffff).ram().share("work_ram"); /* Work RAM */ + map(0x74000000, 0x740000ff).rw(this, FUNC(gticlub_state::gticlub_k001604_reg_r), FUNC(gticlub_state::gticlub_k001604_reg_w)); + map(0x74010000, 0x7401ffff).ram().w(this, FUNC(gticlub_state::paletteram32_w)).share("paletteram"); + map(0x74020000, 0x7403ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_tile_r), FUNC(gticlub_state::gticlub_k001604_tile_w)); + map(0x74040000, 0x7407ffff).rw(this, FUNC(gticlub_state::gticlub_k001604_char_r), FUNC(gticlub_state::gticlub_k001604_char_w)); + map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); + map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc)); + map(0x7e000000, 0x7e003fff).rw(this, FUNC(gticlub_state::sysreg_r), FUNC(gticlub_state::sysreg_w)); + map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); + map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); + map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x7f000000, 0x7f3fffff).rom().region("user2", 0); /* Data ROM */ + map(0x7f800000, 0x7f9fffff).rom().share("share2"); + map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */ +} /**********************************************************************/ -ADDRESS_MAP_START(gticlub_state::sound_memmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff) - AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */ - AM_RANGE(0x500000, 0x500001) AM_WRITE(soundtimer_en_w) AM_READNOP - AM_RANGE(0x600000, 0x600001) AM_WRITE(soundtimer_count_w) AM_READNOP -ADDRESS_MAP_END +void gticlub_state::sound_memmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff); + map(0x400000, 0x400fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */ + map(0x500000, 0x500001).w(this, FUNC(gticlub_state::soundtimer_en_w)).nopr(); + map(0x600000, 0x600001).w(this, FUNC(gticlub_state::soundtimer_count_w)).nopr(); +} /*****************************************************************************/ @@ -580,34 +583,37 @@ WRITE32_MEMBER(gticlub_state::dsp_dataram1_w) m_sharc_dataram_1[offset] = data; } -ADDRESS_MAP_START(gticlub_state::sharc_map) - AM_RANGE(0x400000, 0x41ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) - AM_RANGE(0x600000, 0x6fffff) AM_DEVREADWRITE("k001005", k001005_device, read, write) - AM_RANGE(0x700000, 0x7000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gticlub_state::hangplt_sharc0_map) - AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) - AM_RANGE(0x1400000, 0x14fffff) AM_RAM - AM_RANGE(0x2400000, 0x27fffff) AM_DEVREAD("konppc", konppc_device, nwk_voodoo_0_r) AM_DEVWRITE("voodoo0", voodoo_device, voodoo_w) - AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) - AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("konppc", konppc_device, nwk_fifo_0_w) - AM_RANGE(0x3500000, 0x3507fff) AM_DEVREADWRITE("konppc", konppc_device, K033906_0_r, K033906_0_w) - AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gticlub_state::hangplt_sharc1_map) - AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w) - AM_RANGE(0x1400000, 0x14fffff) AM_RAM - AM_RANGE(0x2400000, 0x27fffff) AM_DEVREAD("konppc", konppc_device, nwk_voodoo_1_r) AM_DEVWRITE("voodoo1", voodoo_device, voodoo_w) - AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w) - AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("konppc", konppc_device, nwk_fifo_1_w) - AM_RANGE(0x3500000, 0x3507fff) AM_DEVREADWRITE("konppc", konppc_device, K033906_1_r, K033906_1_w) - AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6") -ADDRESS_MAP_END +void gticlub_state::sharc_map(address_map &map) +{ + map(0x400000, 0x41ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w)); + map(0x500000, 0x5fffff).rw(this, FUNC(gticlub_state::dsp_dataram0_r), FUNC(gticlub_state::dsp_dataram0_w)); + map(0x600000, 0x6fffff).rw(m_k001005, FUNC(k001005_device::read), FUNC(k001005_device::write)); + map(0x700000, 0x7000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w)); +} + +void gticlub_state::hangplt_sharc0_map(address_map &map) +{ + map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w)); + map(0x0500000, 0x05fffff).rw(this, FUNC(gticlub_state::dsp_dataram0_r), FUNC(gticlub_state::dsp_dataram0_w)); + map(0x1400000, 0x14fffff).ram(); + map(0x2400000, 0x27fffff).r(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r)).w("voodoo0", FUNC(voodoo_device::voodoo_w)); + map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w)); + map(0x3401000, 0x34fffff).w(m_konppc, FUNC(konppc_device::nwk_fifo_0_w)); + map(0x3500000, 0x3507fff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w)); + map(0x3600000, 0x37fffff).bankr("bank5"); +} + +void gticlub_state::hangplt_sharc1_map(address_map &map) +{ + map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w)); + map(0x0500000, 0x05fffff).rw(this, FUNC(gticlub_state::dsp_dataram1_r), FUNC(gticlub_state::dsp_dataram1_w)); + map(0x1400000, 0x14fffff).ram(); + map(0x2400000, 0x27fffff).r(m_konppc, FUNC(konppc_device::nwk_voodoo_1_r)).w("voodoo1", FUNC(voodoo_device::voodoo_w)); + map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w)); + map(0x3401000, 0x34fffff).w(m_konppc, FUNC(konppc_device::nwk_fifo_1_w)); + map(0x3500000, 0x3507fff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w)); + map(0x3600000, 0x37fffff).bankr("bank6"); +} /*****************************************************************************/ diff --git a/src/mame/drivers/gts1.cpp b/src/mame/drivers/gts1.cpp index f2af3533546..0ac9be4d0ee 100644 --- a/src/mame/drivers/gts1.cpp +++ b/src/mame/drivers/gts1.cpp @@ -129,24 +129,27 @@ private: uint16_t m_z30_out; //!< 4-to-16 decoder outputs }; -ADDRESS_MAP_START(gts1_state::gts1_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gts1_state::gts1_data) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gts1_state::gts1_io) - AM_RANGE(0x0000, 0x00ff) AM_READ ( gts1_io_r ) AM_WRITE( gts1_io_w ) // catch undecoded I/O accesss - - AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE ( "u4", ra17xx_device, io_r, io_w ) // (U4) solenoid - AM_RANGE(0x0030, 0x003f) AM_DEVREADWRITE ( "u3", r10696_device, io_r, io_w ) // (U3) solenoid + dips - AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE ( "u5", ra17xx_device, io_r, io_w ) // (U5) switch matrix - AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE ( "u2", r10696_device, io_r, io_w ) // (U2) NVRAM io chip - AM_RANGE(0x00d0, 0x00df) AM_DEVREADWRITE ( "u6", r10788_device, io_r, io_w ) // (U6) display chip -ADDRESS_MAP_END +void gts1_state::gts1_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void gts1_state::gts1_data(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); +} + +void gts1_state::gts1_io(address_map &map) +{ + map(0x0000, 0x00ff).r(this, FUNC(gts1_state::gts1_io_r)).w(this, FUNC(gts1_state::gts1_io_w)); // catch undecoded I/O accesss + + map(0x0020, 0x002f).rw("u4", FUNC(ra17xx_device::io_r), FUNC(ra17xx_device::io_w)); // (U4) solenoid + map(0x0030, 0x003f).rw("u3", FUNC(r10696_device::io_r), FUNC(r10696_device::io_w)); // (U3) solenoid + dips + map(0x0040, 0x004f).rw("u5", FUNC(ra17xx_device::io_r), FUNC(ra17xx_device::io_w)); // (U5) switch matrix + map(0x0060, 0x006f).rw("u2", FUNC(r10696_device::io_r), FUNC(r10696_device::io_w)); // (U2) NVRAM io chip + map(0x00d0, 0x00df).rw("u6", FUNC(r10788_device::io_r), FUNC(r10788_device::io_w)); // (U6) display chip +} static INPUT_PORTS_START( gts1_dips ) PORT_START("DSW0") diff --git a/src/mame/drivers/gts3.cpp b/src/mame/drivers/gts3.cpp index e9f69e03ab1..1e7f25ca73a 100644 --- a/src/mame/drivers/gts3.cpp +++ b/src/mame/drivers/gts3.cpp @@ -71,13 +71,14 @@ private: }; -ADDRESS_MAP_START(gts3_state::gts3_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x200f) AM_DEVREADWRITE("u4", via6522_device, read, write) - AM_RANGE(0x2010, 0x201f) AM_DEVREADWRITE("u5", via6522_device, read, write) - AM_RANGE(0x2020, 0x2023) AM_MIRROR(0x0c) AM_WRITE(segbank_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void gts3_state::gts3_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x200f).rw(m_u4, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x2010, 0x201f).rw(m_u5, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x2020, 0x2023).mirror(0x0c).w(this, FUNC(gts3_state::segbank_w)); + map(0x4000, 0xffff).rom(); +} static INPUT_PORTS_START( gts3 ) PORT_START("TTS") diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp index d882b2f0ef6..ddfb348e1a3 100644 --- a/src/mame/drivers/gts3a.cpp +++ b/src/mame/drivers/gts3a.cpp @@ -72,25 +72,27 @@ private: }; -ADDRESS_MAP_START(gts3a_state::gts3a_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x200f) AM_DEVREADWRITE("u4", via6522_device, read, write) - AM_RANGE(0x2010, 0x201f) AM_DEVREADWRITE("u5", via6522_device, read, write) - AM_RANGE(0x2020, 0x2023) AM_MIRROR(0x0c) AM_WRITE(segbank_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gts3a_state::gts3a_dmd_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2000) AM_DEVREAD("crtc", mc6845_device, status_r) - AM_RANGE(0x2001, 0x2001) AM_DEVREAD("crtc", mc6845_device, register_r) - AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2801, 0x2801) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x3000, 0x3000) AM_READ(dmd_r) - AM_RANGE(0x3800, 0x3800) AM_WRITE(dmd_w) - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("dmdcpu", 0x78000) -ADDRESS_MAP_END +void gts3a_state::gts3a_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x200f).rw(m_u4, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x2010, 0x201f).rw(m_u5, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x2020, 0x2023).mirror(0x0c).w(this, FUNC(gts3a_state::segbank_w)); + map(0x4000, 0xffff).rom(); +} + +void gts3a_state::gts3a_dmd_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2000).r("crtc", FUNC(mc6845_device::status_r)); + map(0x2001, 0x2001).r("crtc", FUNC(mc6845_device::register_r)); + map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2801, 0x2801).w("crtc", FUNC(mc6845_device::register_w)); + map(0x3000, 0x3000).r(this, FUNC(gts3a_state::dmd_r)); + map(0x3800, 0x3800).w(this, FUNC(gts3a_state::dmd_w)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom().region("dmdcpu", 0x78000); +} static INPUT_PORTS_START( gts3a ) PORT_START("TTS") diff --git a/src/mame/drivers/gts80.cpp b/src/mame/drivers/gts80.cpp index 8ba2a76543c..9b7f1a02f9c 100644 --- a/src/mame/drivers/gts80.cpp +++ b/src/mame/drivers/gts80.cpp @@ -64,17 +64,18 @@ private: optional_device<gottlieb_sound_r1_device> m_r1_sound; }; -ADDRESS_MAP_START(gts80_state::gts80_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x017f) AM_RAM - AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write) - AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write) - AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4 - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void gts80_state::gts80_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x017f).ram(); + map(0x0200, 0x027f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0280, 0x02ff).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0300, 0x037f).rw("riot3", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x1000, 0x17ff).rom(); + map(0x1800, 0x18ff).ram().share("nvram"); // 5101L-1 256x4 + map(0x2000, 0x2fff).rom(); + map(0x3000, 0x3fff).rom(); +} static INPUT_PORTS_START( gts80 ) PORT_START("DSW.0") diff --git a/src/mame/drivers/gts80a.cpp b/src/mame/drivers/gts80a.cpp index 5220692f3f7..7e50249895a 100644 --- a/src/mame/drivers/gts80a.cpp +++ b/src/mame/drivers/gts80a.cpp @@ -54,17 +54,18 @@ private: optional_device<gottlieb_sound_r1_device> m_r1_sound; }; -ADDRESS_MAP_START(gts80a_state::gts80a_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x017f) AM_RAM - AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write) - AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write) - AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4 - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void gts80a_state::gts80a_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x017f).ram(); + map(0x0200, 0x027f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0280, 0x02ff).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0300, 0x037f).rw("riot3", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x1000, 0x17ff).rom(); + map(0x1800, 0x18ff).ram().share("nvram"); // 5101L-1 256x4 + map(0x2000, 0x2fff).rom(); + map(0x3000, 0x3fff).rom(); +} static INPUT_PORTS_START( gts80a ) PORT_START("DSW.0") @@ -432,14 +433,16 @@ uint32_t caveman_state::screen_update_caveman(screen_device &screen, bitmap_ind1 } -ADDRESS_MAP_START(caveman_state::video_map) - ADDRESS_MAP_GLOBAL_MASK(0xffff) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x5fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void caveman_state::video_map(address_map &map) +{ + map.global_mask(0xffff); + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x5fff).ram().share("vram"); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(caveman_state::video_io_map) +void caveman_state::video_io_map(address_map &map) +{ // AM_RANGE(0x000, 0x002) AM_READWRITE() // 8259 irq controller // AM_RANGE(0x100, 0x102) AM_READWRITE() // HD46505 // AM_RANGE(0x200, 0x200) AM_READWRITE() // 8212 in, ?? out @@ -448,7 +451,7 @@ ADDRESS_MAP_START(caveman_state::video_io_map) // AM_RANGE(0x400, 0x400) AM_READ() // joystick inputs // AM_RANGE(0x500, 0x506) AM_WRITE() // palette -ADDRESS_MAP_END +} MACHINE_CONFIG_START(caveman_state::caveman) gts80a_ss(config); diff --git a/src/mame/drivers/gts80b.cpp b/src/mame/drivers/gts80b.cpp index 8895a6d28b8..eda547511c8 100644 --- a/src/mame/drivers/gts80b.cpp +++ b/src/mame/drivers/gts80b.cpp @@ -62,17 +62,18 @@ private: optional_device<gottlieb_sound_r1_device> m_r1_sound; }; -ADDRESS_MAP_START(gts80b_state::gts80b_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x017f) AM_RAM - AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write) - AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write) - AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4 - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void gts80b_state::gts80b_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x017f).ram(); + map(0x0200, 0x027f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0280, 0x02ff).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0300, 0x037f).rw("riot3", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x1000, 0x17ff).rom(); + map(0x1800, 0x18ff).ram().share("nvram"); // 5101L-1 256x4 + map(0x2000, 0x2fff).rom(); + map(0x3000, 0x3fff).rom(); +} static INPUT_PORTS_START( gts80b ) PORT_START("DSW.0") diff --git a/src/mame/drivers/guab.cpp b/src/mame/drivers/guab.cpp index 2f8c3c17811..a9581af713f 100644 --- a/src/mame/drivers/guab.cpp +++ b/src/mame/drivers/guab.cpp @@ -116,25 +116,26 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(guab_state::guab_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x04ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x0c0000, 0x0c0007) AM_DEVREADWRITE8("i8255_1", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0c0020, 0x0c0027) AM_DEVREADWRITE8("i8255_2", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0c0040, 0x0c0047) AM_DEVREADWRITE8("i8255_3", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0c0060, 0x0c0067) AM_DEVREADWRITE8("i8255_4", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0c0080, 0x0c0083) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff) - AM_RANGE(0x0c00a0, 0x0c00a3) AM_DEVREADWRITE8("acia6850_2", acia6850_device, read, write, 0x00ff) - AM_RANGE(0x0c00c0, 0x0c00cf) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0x00ff) - AM_RANGE(0x0c00e0, 0x0c00e7) AM_DEVREADWRITE8("fdc", wd1773_device, read, write, 0x00ff) - AM_RANGE(0x080000, 0x080fff) AM_RAM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff) - AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff) - AM_RANGE(0x800000, 0xb0ffff) AM_READWRITE(tms34061_r, tms34061_w) - AM_RANGE(0xb10000, 0xb1ffff) AM_RAM - AM_RANGE(0xb80000, 0xb8ffff) AM_RAM - AM_RANGE(0xb90000, 0xb9ffff) AM_RAM -ADDRESS_MAP_END +void guab_state::guab_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x04ffff).rom().region("maincpu", 0x10000); + map(0x0c0000, 0x0c0007).rw("i8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0c0020, 0x0c0027).rw("i8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0c0040, 0x0c0047).rw("i8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0c0060, 0x0c0067).rw("i8255_4", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0c0080, 0x0c0083).rw("acia6850_1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x0c00a0, 0x0c00a3).rw("acia6850_2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x0c00c0, 0x0c00cf).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0x0c00e0, 0x0c00e7).rw(m_fdc, FUNC(wd1773_device::read), FUNC(wd1773_device::write)).umask16(0x00ff); + map(0x080000, 0x080fff).ram(); + map(0x100001, 0x100001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)); + map(0x100003, 0x100003).w("ef9369", FUNC(ef9369_device::address_w)); + map(0x800000, 0xb0ffff).rw(this, FUNC(guab_state::tms34061_r), FUNC(guab_state::tms34061_w)); + map(0xb10000, 0xb1ffff).ram(); + map(0xb80000, 0xb8ffff).ram(); + map(0xb90000, 0xb9ffff).ram(); +} //************************************************************************** diff --git a/src/mame/drivers/gumbo.cpp b/src/mame/drivers/gumbo.cpp index 83db81692d0..fceebd31a7c 100644 --- a/src/mame/drivers/gumbo.cpp +++ b/src/mame/drivers/gumbo.cpp @@ -52,40 +52,43 @@ PCB Layout #include "speaker.h" -ADDRESS_MAP_START(gumbo_state::gumbo_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram - AM_RANGE(0x1b0000, 0x1b03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2") - AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW") - AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x1e0000, 0x1e0fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_SHARE("bg_videoram") // bg tilemap - AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap -ADDRESS_MAP_END +void gumbo_state::gumbo_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); // main ram + map(0x1b0000, 0x1b03ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x1c0100, 0x1c0101).portr("P1_P2"); + map(0x1c0200, 0x1c0201).portr("DSW"); + map(0x1c0301, 0x1c0301).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1e0000, 0x1e0fff).ram().w(this, FUNC(gumbo_state::gumbo_bg_videoram_w)).share("bg_videoram"); // bg tilemap + map(0x1f0000, 0x1f3fff).ram().w(this, FUNC(gumbo_state::gumbo_fg_videoram_w)).share("fg_videoram"); // fg tilemap +} /* Miss Puzzle has a different memory map */ -ADDRESS_MAP_START(gumbo_state::mspuzzle_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM // main ram - AM_RANGE(0x190000, 0x197fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap - AM_RANGE(0x1a0000, 0x1a03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1b0100, 0x1b0101) AM_READ_PORT("P1_P2") - AM_RANGE(0x1b0200, 0x1b0201) AM_READ_PORT("DSW") - AM_RANGE(0x1b0300, 0x1b0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_SHARE("bg_videoram") // bg tilemap -ADDRESS_MAP_END - -ADDRESS_MAP_START(gumbo_state::dblpoint_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram - AM_RANGE(0x1b0000, 0x1b03ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2") - AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW") - AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_SHARE("fg_videoram") // fg tilemap - AM_RANGE(0x1f0000, 0x1f0fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_SHARE("bg_videoram") // bg tilemap -ADDRESS_MAP_END +void gumbo_state::mspuzzle_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); // main ram + map(0x190000, 0x197fff).ram().w(this, FUNC(gumbo_state::gumbo_fg_videoram_w)).share("fg_videoram"); // fg tilemap + map(0x1a0000, 0x1a03ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x1b0100, 0x1b0101).portr("P1_P2"); + map(0x1b0200, 0x1b0201).portr("DSW"); + map(0x1b0301, 0x1b0301).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1c0000, 0x1c1fff).ram().w(this, FUNC(gumbo_state::gumbo_bg_videoram_w)).share("bg_videoram"); // bg tilemap +} + +void gumbo_state::dblpoint_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x083fff).ram(); // main ram + map(0x1b0000, 0x1b03ff).w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x1c0100, 0x1c0101).portr("P1_P2"); + map(0x1c0200, 0x1c0201).portr("DSW"); + map(0x1c0301, 0x1c0301).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1e0000, 0x1e3fff).ram().w(this, FUNC(gumbo_state::gumbo_fg_videoram_w)).share("fg_videoram"); // fg tilemap + map(0x1f0000, 0x1f0fff).ram().w(this, FUNC(gumbo_state::gumbo_bg_videoram_w)).share("bg_videoram"); // bg tilemap +} static INPUT_PORTS_START( gumbo ) PORT_START("P1_P2") diff --git a/src/mame/drivers/gunbustr.cpp b/src/mame/drivers/gunbustr.cpp index 51b118ea9c9..c321d7a408a 100644 --- a/src/mame/drivers/gunbustr.cpp +++ b/src/mame/drivers/gunbustr.cpp @@ -115,19 +115,20 @@ WRITE32_MEMBER(gunbustr_state::gunbustr_gun_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(gunbustr_state::gunbustr_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") /* main CPUA ram */ - AM_RANGE(0x300000, 0x301fff) AM_RAM AM_SHARE("spriteram") /* Sprite ram */ - AM_RANGE(0x380000, 0x380003) AM_WRITE(motor_control_w) /* motor, lamps etc. */ - AM_RANGE(0x390000, 0x3907ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) /* Sound shared ram */ - AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff) - AM_RANGE(0x500000, 0x500003) AM_READWRITE(gunbustr_gun_r, gunbustr_gun_w) /* gun coord read */ - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0x900000, 0x901fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc03fff) AM_RAM /* network ram ?? */ -ADDRESS_MAP_END +void gunbustr_state::gunbustr_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x21ffff).ram().share("ram"); /* main CPUA ram */ + map(0x300000, 0x301fff).ram().share("spriteram"); /* Sprite ram */ + map(0x380000, 0x380003).w(this, FUNC(gunbustr_state::motor_control_w)); /* motor, lamps etc. */ + map(0x390000, 0x3907ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); /* Sound shared ram */ + map(0x400000, 0x400007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); + map(0x500000, 0x500003).rw(this, FUNC(gunbustr_state::gunbustr_gun_r), FUNC(gunbustr_state::gunbustr_gun_w)); /* gun coord read */ + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w)); + map(0x900000, 0x901fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xc00000, 0xc03fff).ram(); /* network ram ?? */ +} /*********************************************************** INPUT PORTS (dips in eprom) diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp index 62f83f3a063..f5db6a81522 100644 --- a/src/mame/drivers/gundealr.cpp +++ b/src/mame/drivers/gundealr.cpp @@ -84,38 +84,42 @@ WRITE8_MEMBER(gundealr_state::yamyam_bankswitch_w) -ADDRESS_MAP_START(gundealr_state::base_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW0") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("IN0") - AM_RANGE(0xc005, 0xc005) AM_READ_PORT("IN1") - AM_RANGE(0xc006, 0xc006) AM_READ_PORT("IN2") - AM_RANGE(0xc016, 0xc016) AM_WRITE(yamyam_bankswitch_w) - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(gundealr_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gundealr_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(gundealr_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("rambase") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gundealr_state::gundealr_main_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xc014, 0xc014) AM_WRITE(gundealr_flipscreen_w) - AM_RANGE(0xc020, 0xc023) AM_WRITE(gundealr_fg_scroll_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gundealr_state::yamyam_main_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xc010, 0xc013) AM_WRITE(yamyam_fg_scroll_w) - AM_RANGE(0xc014, 0xc014) AM_WRITE(yamyam_flipscreen_w) - AM_RANGE(0xc015, 0xc015) AM_WRITENOP // Bit 7 = MCU reset? -ADDRESS_MAP_END - -ADDRESS_MAP_START(gundealr_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END +void gundealr_state::base_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("DSW0"); + map(0xc001, 0xc001).portr("DSW1"); + map(0xc004, 0xc004).portr("IN0"); + map(0xc005, 0xc005).portr("IN1"); + map(0xc006, 0xc006).portr("IN2"); + map(0xc016, 0xc016).w(this, FUNC(gundealr_state::yamyam_bankswitch_w)); + map(0xc400, 0xc7ff).ram().w(this, FUNC(gundealr_state::gundealr_paletteram_w)).share("paletteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(gundealr_state::gundealr_bg_videoram_w)).share("bg_videoram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(gundealr_state::gundealr_fg_videoram_w)).share("fg_videoram"); + map(0xe000, 0xffff).ram().share("rambase"); +} + +void gundealr_state::gundealr_main_map(address_map &map) +{ + base_map(map); + map(0xc014, 0xc014).w(this, FUNC(gundealr_state::gundealr_flipscreen_w)); + map(0xc020, 0xc023).w(this, FUNC(gundealr_state::gundealr_fg_scroll_w)); +} + +void gundealr_state::yamyam_main_map(address_map &map) +{ + base_map(map); + map(0xc010, 0xc013).w(this, FUNC(gundealr_state::yamyam_fg_scroll_w)); + map(0xc014, 0xc014).w(this, FUNC(gundealr_state::yamyam_flipscreen_w)); + map(0xc015, 0xc015).nopw(); // Bit 7 = MCU reset? +} + +void gundealr_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} diff --git a/src/mame/drivers/gunpey.cpp b/src/mame/drivers/gunpey.cpp index 6e87e1aa09f..3f2e115f5b6 100644 --- a/src/mame/drivers/gunpey.cpp +++ b/src/mame/drivers/gunpey.cpp @@ -1295,31 +1295,33 @@ WRITE16_MEMBER(gunpey_state::vregs_addr_w) /***************************************************************************************/ -ADDRESS_MAP_START(gunpey_state::mem_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("wram") +void gunpey_state::mem_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram().share("wram"); // AM_RANGE(0x50000, 0x500ff) AM_RAM // AM_RANGE(0x50100, 0x502ff) AM_NOP - AM_RANGE(0x80000, 0xfffff) AM_ROM -ADDRESS_MAP_END + map(0x80000, 0xfffff).rom(); +} -ADDRESS_MAP_START(gunpey_state::io_map) - AM_RANGE(0x7f40, 0x7f45) AM_READ8(inputs_r,0xffff) +void gunpey_state::io_map(address_map &map) +{ + map(0x7f40, 0x7f45).r(this, FUNC(gunpey_state::inputs_r)); - AM_RANGE(0x7f48, 0x7f49) AM_WRITE8(output_w,0x00ff) - AM_RANGE(0x7f80, 0x7f81) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff) + map(0x7f48, 0x7f48).w(this, FUNC(gunpey_state::output_w)); + map(0x7f80, 0x7f81).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); - AM_RANGE(0x7f88, 0x7f89) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x7f88, 0x7f88).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8(status_r, status_w, 0xffff ) - AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8(blitter_w, 0xffff ) - AM_RANGE(0x7fe0, 0x7fe5) AM_WRITE8(blitter_upper_w, 0xffff ) - AM_RANGE(0x7ff0, 0x7ff5) AM_WRITE8(blitter_upper2_w, 0xffff ) + map(0x7fc8, 0x7fc9).rw(this, FUNC(gunpey_state::status_r), FUNC(gunpey_state::status_w)); + map(0x7fd0, 0x7fdf).w(this, FUNC(gunpey_state::blitter_w)); + map(0x7fe0, 0x7fe5).w(this, FUNC(gunpey_state::blitter_upper_w)); + map(0x7ff0, 0x7ff5).w(this, FUNC(gunpey_state::blitter_upper2_w)); //AM_RANGE(0x7FF0, 0x7FF1) AM_RAM - AM_RANGE(0x7fec, 0x7fed) AM_WRITE(vregs_addr_w) - AM_RANGE(0x7fee, 0x7fef) AM_WRITE(vram_bank_w) + map(0x7fec, 0x7fed).w(this, FUNC(gunpey_state::vregs_addr_w)); + map(0x7fee, 0x7fef).w(this, FUNC(gunpey_state::vram_bank_w)); -ADDRESS_MAP_END +} /***************************************************************************************/ diff --git a/src/mame/drivers/gunsmoke.cpp b/src/mame/drivers/gunsmoke.cpp index 5978615f642..ea5f693de11 100644 --- a/src/mame/drivers/gunsmoke.cpp +++ b/src/mame/drivers/gunsmoke.cpp @@ -105,34 +105,36 @@ READ8_MEMBER(gunsmoke_state::gunsmoke_protection_r) /* Memory Maps */ -ADDRESS_MAP_START(gunsmoke_state::gunsmoke_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc4c9, 0xc4cb) AM_READ(gunsmoke_protection_r) - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc804, 0xc804) AM_WRITE(gunsmoke_c804_w) // ROM bank switch, screen flip - AM_RANGE(0xc806, 0xc806) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(gunsmoke_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(gunsmoke_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd800, 0xd801) AM_RAM AM_SHARE("scrollx") - AM_RANGE(0xd802, 0xd802) AM_RAM AM_SHARE("scrolly") - AM_RANGE(0xd806, 0xd806) AM_WRITE(gunsmoke_d806_w) // sprites and bg enable - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(gunsmoke_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_device, write) -ADDRESS_MAP_END +void gunsmoke_state::gunsmoke_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc4c9, 0xc4cb).r(this, FUNC(gunsmoke_state::gunsmoke_protection_r)); + map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc804, 0xc804).w(this, FUNC(gunsmoke_state::gunsmoke_c804_w)); // ROM bank switch, screen flip + map(0xc806, 0xc806).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd000, 0xd3ff).ram().w(this, FUNC(gunsmoke_state::gunsmoke_videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(gunsmoke_state::gunsmoke_colorram_w)).share("colorram"); + map(0xd800, 0xd801).ram().share("scrollx"); + map(0xd802, 0xd802).ram().share("scrolly"); + map(0xd806, 0xd806).w(this, FUNC(gunsmoke_state::gunsmoke_d806_w)); // sprites and bg enable + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("spriteram"); +} + +void gunsmoke_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write)); + map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/gyruss.cpp b/src/mame/drivers/gyruss.cpp index e79bc944c18..8f8ab8f3c55 100644 --- a/src/mame/drivers/gyruss.cpp +++ b/src/mame/drivers/gyruss.cpp @@ -186,65 +186,71 @@ WRITE_LINE_MEMBER(gyruss_state::coin_counter_2_w) machine().bookkeeping().coin_counter_w(1, state); } -ADDRESS_MAP_START(gyruss_state::main_cpu1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x8400, 0x87ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW2") AM_WRITENOP /* watchdog reset */ - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("SYSTEM") AM_WRITE(gyruss_sh_irqtrigger_w) - AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("P1") - AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2") - AM_RANGE(0xc0e0, 0xc0e0) AM_READ_PORT("DSW1") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("DSW3") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc180, 0xc187) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gyruss_state::main_cpu2_map) - AM_RANGE(0x0000, 0x0000) AM_READ(gyruss_scanline_r) - AM_RANGE(0x2000, 0x2000) AM_WRITE(slave_irq_mask_w) AM_READNOP - AM_RANGE(0x4000, 0x403f) AM_RAM - AM_RANGE(0x4040, 0x40ff) AM_RAM_WRITE(gyruss_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x4100, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gyruss_state::audio_cpu1_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gyruss_state::audio_cpu1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x05, 0x05) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("ay3", ay8910_device, address_w) - AM_RANGE(0x09, 0x09) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay3", ay8910_device, data_w) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("ay4", ay8910_device, address_w) - AM_RANGE(0x0d, 0x0d) AM_DEVREAD("ay4", ay8910_device, data_r) - AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("ay4", ay8910_device, data_w) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay5", ay8910_device, address_w) - AM_RANGE(0x11, 0x11) AM_DEVREAD("ay5", ay8910_device, data_r) - AM_RANGE(0x12, 0x12) AM_DEVWRITE("ay5", ay8910_device, data_w) - AM_RANGE(0x14, 0x14) AM_WRITE(gyruss_i8039_irq_w) - AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(gyruss_state::audio_cpu2_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(gyruss_state::audio_cpu2_io_map) - AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) -ADDRESS_MAP_END +void gyruss_state::main_cpu1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().share("colorram"); + map(0x8400, 0x87ff).ram().share("videoram"); + map(0x9000, 0x9fff).ram(); + map(0xa000, 0xa7ff).ram().share("share1"); + map(0xc000, 0xc000).portr("DSW2").nopw(); /* watchdog reset */ + map(0xc080, 0xc080).portr("SYSTEM").w(this, FUNC(gyruss_state::gyruss_sh_irqtrigger_w)); + map(0xc0a0, 0xc0a0).portr("P1"); + map(0xc0c0, 0xc0c0).portr("P2"); + map(0xc0e0, 0xc0e0).portr("DSW1"); + map(0xc100, 0xc100).portr("DSW3").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc180, 0xc187).w("mainlatch", FUNC(ls259_device::write_d0)); +} + +void gyruss_state::main_cpu2_map(address_map &map) +{ + map(0x0000, 0x0000).r(this, FUNC(gyruss_state::gyruss_scanline_r)); + map(0x2000, 0x2000).w(this, FUNC(gyruss_state::slave_irq_mask_w)).nopr(); + map(0x4000, 0x403f).ram(); + map(0x4040, 0x40ff).ram().w(this, FUNC(gyruss_state::gyruss_spriteram_w)).share("spriteram"); + map(0x4100, 0x47ff).ram(); + map(0x6000, 0x67ff).ram().share("share1"); + map(0xe000, 0xffff).rom(); +} + +void gyruss_state::audio_cpu1_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x63ff).ram(); + map(0x8000, 0x8000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} + +void gyruss_state::audio_cpu1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("ay1", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).r("ay1", FUNC(ay8910_device::data_r)); + map(0x02, 0x02).w("ay1", FUNC(ay8910_device::data_w)); + map(0x04, 0x04).w("ay2", FUNC(ay8910_device::address_w)); + map(0x05, 0x05).r("ay2", FUNC(ay8910_device::data_r)); + map(0x06, 0x06).w("ay2", FUNC(ay8910_device::data_w)); + map(0x08, 0x08).w("ay3", FUNC(ay8910_device::address_w)); + map(0x09, 0x09).r("ay3", FUNC(ay8910_device::data_r)); + map(0x0a, 0x0a).w("ay3", FUNC(ay8910_device::data_w)); + map(0x0c, 0x0c).w("ay4", FUNC(ay8910_device::address_w)); + map(0x0d, 0x0d).r("ay4", FUNC(ay8910_device::data_r)); + map(0x0e, 0x0e).w("ay4", FUNC(ay8910_device::data_w)); + map(0x10, 0x10).w("ay5", FUNC(ay8910_device::address_w)); + map(0x11, 0x11).r("ay5", FUNC(ay8910_device::data_r)); + map(0x12, 0x12).w("ay5", FUNC(ay8910_device::data_w)); + map(0x14, 0x14).w(this, FUNC(gyruss_state::gyruss_i8039_irq_w)); + map(0x18, 0x18).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} + +void gyruss_state::audio_cpu2_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void gyruss_state::audio_cpu2_io_map(address_map &map) +{ + map(0x00, 0xff).r("soundlatch2", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( gyruss ) diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp index 84127eae727..d4287b6889d 100644 --- a/src/mame/drivers/h19.cpp +++ b/src/mame/drivers/h19.cpp @@ -156,26 +156,28 @@ void h19_state::device_timer(emu_timer &timer, device_timer_id id, int param, vo -ADDRESS_MAP_START(h19_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x2000) AM_ROM - AM_RANGE(0x4000, 0x4100) AM_MIRROR(0x3e00) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(h19_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x1f) AM_READ_PORT("SW401") - AM_RANGE(0x20, 0x20) AM_MIRROR(0x1f) AM_READ_PORT("SW402") - AM_RANGE(0x40, 0x47) AM_MIRROR(0x18) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w ) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x1E) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x61, 0x61) AM_MIRROR(0x1E) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_READ(kbd_key_r) - AM_RANGE(0xA0, 0xA0) AM_MIRROR(0x1f) AM_READ(kbd_flags_r) - AM_RANGE(0xC0, 0xC0) AM_MIRROR(0x1f) AM_WRITE(h19_keyclick_w) - AM_RANGE(0xE0, 0xE0) AM_MIRROR(0x1f) AM_WRITE(h19_bell_w) -ADDRESS_MAP_END +void h19_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).mirror(0x2000).rom(); + map(0x4000, 0x4100).mirror(0x3e00).ram(); + map(0xc000, 0xc7ff).mirror(0x3800).ram().share("videoram"); +} + +void h19_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x1f).portr("SW401"); + map(0x20, 0x20).mirror(0x1f).portr("SW402"); + map(0x40, 0x47).mirror(0x18).rw(m_ace, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x60, 0x60).mirror(0x1E).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x61, 0x61).mirror(0x1E).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x80, 0x80).mirror(0x1f).r(this, FUNC(h19_state::kbd_key_r)); + map(0xA0, 0xA0).mirror(0x1f).r(this, FUNC(h19_state::kbd_flags_r)); + map(0xC0, 0xC0).mirror(0x1f).w(this, FUNC(h19_state::h19_keyclick_w)); + map(0xE0, 0xE0).mirror(0x1f).w(this, FUNC(h19_state::h19_bell_w)); +} /* Input ports */ static INPUT_PORTS_START( h19 ) diff --git a/src/mame/drivers/h8.cpp b/src/mame/drivers/h8.cpp index e89cdeb7988..fcd13e92d1f 100644 --- a/src/mame/drivers/h8.cpp +++ b/src/mame/drivers/h8.cpp @@ -177,25 +177,27 @@ WRITE8_MEMBER( h8_state::portf1_w ) if (m_digit) output().set_digit_value(m_digit, m_segment); } -ADDRESS_MAP_START(h8_state::h8_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM // main rom - AM_RANGE(0x1400, 0x17ff) AM_RAM // fdc ram - AM_RANGE(0x1800, 0x1fff) AM_ROM // fdc rom - AM_RANGE(0x2000, 0x9fff) AM_RAM // main ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(h8_state::h8_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_READWRITE(portf0_r,portf0_w) - AM_RANGE(0xf1, 0xf1) AM_WRITE(portf1_w) - AM_RANGE(0xf8, 0xf8) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0xf9, 0xf9) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) +void h8_state::h8_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); // main rom + map(0x1400, 0x17ff).ram(); // fdc ram + map(0x1800, 0x1fff).rom(); // fdc rom + map(0x2000, 0x9fff).ram(); // main ram +} + +void h8_state::h8_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf0, 0xf0).rw(this, FUNC(h8_state::portf0_r), FUNC(h8_state::portf0_w)); + map(0xf1, 0xf1).w(this, FUNC(h8_state::portf1_w)); + map(0xf8, 0xf8).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf9, 0xf9).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // optional connection to a serial terminal @ 600 baud //AM_RANGE(0xfa, 0xfa) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) //AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( h8 ) diff --git a/src/mame/drivers/h89.cpp b/src/mame/drivers/h89.cpp index 4cf13cc9353..92d1ca415c6 100644 --- a/src/mame/drivers/h89.cpp +++ b/src/mame/drivers/h89.cpp @@ -49,22 +49,24 @@ public: }; -ADDRESS_MAP_START(h89_state::h89_mem) - ADDRESS_MAP_UNMAP_HIGH +void h89_state::h89_mem(address_map &map) +{ + map.unmap_value_high(); // Bank 0 - At startup has the format defined below, but software could swap it for RAM (Later H-89s and // Early ones with the Org-0 modification), // TODO - define the RAM so it can swap in/out under program control. - AM_RANGE(0x0000, 0x0fff) AM_ROM // Page 0-4 - System ROM (at most 4k(MTR-90), early versions(MTR-88, MTR-89) only had 2k) - AM_RANGE(0x1000, 0x13ff) AM_RAM // Page 5 - Floppy Disk RAM (Write-protectable) - AM_RANGE(0x1400, 0x1fff) AM_ROM // Page 6-7 - Floppy Disk ROM + map(0x0000, 0x0fff).rom(); // Page 0-4 - System ROM (at most 4k(MTR-90), early versions(MTR-88, MTR-89) only had 2k) + map(0x1000, 0x13ff).ram(); // Page 5 - Floppy Disk RAM (Write-protectable) + map(0x1400, 0x1fff).rom(); // Page 6-7 - Floppy Disk ROM // Banks 1-7 - AM_RANGE(0x2000, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0x2000, 0xffff).ram(); +} -ADDRESS_MAP_START(h89_state::h89_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void h89_state::h89_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE(0x78, 0x7b) expansion 1 // Options - Cassette I/O (only uses 0x78 - 0x79) Requires MTR-88 ROM // - H37 5-1/4" Soft-sectored Controller MTR-90 ROM // - H47 Dual 8" Drives - Requires MTR-89 or MTR-90 ROM @@ -76,15 +78,15 @@ ADDRESS_MAP_START(h89_state::h89_io) // AM_RANGE(0xd0, 0xd7) 8250 UART DCE // AM_RANGE(0xd8, 0xdf) 8250 UART DTE - MODEM // AM_RANGE(0xe0, 0xe7) 8250 UART DCE - LP - AM_RANGE(0xe8, 0xef) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w) // 8250 UART console - this + map(0xe8, 0xef).rw("ins8250", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); // 8250 UART console - this // connects internally to a Terminal board // that is also used in the H19. Ideally, // the H19 code could be connected and ran // as a separate thread. // AM_RANGE(0xf0, 0xf1) // ports defined on the H8 - on the H89, access to these addresses causes a NMI - AM_RANGE(0xf2, 0xf2) AM_WRITE(port_f2_w) AM_READ_PORT("SW501") + map(0xf2, 0xf2).w(this, FUNC(h89_state::port_f2_w)).portr("SW501"); // AM_RANGE(0xf3, 0xf3) // ports defined on the H8 - on the H89, access to these addresses causes a NMI -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( h89 ) diff --git a/src/mame/drivers/halleys.cpp b/src/mame/drivers/halleys.cpp index d6517e6ac7d..48e0d38ba35 100644 --- a/src/mame/drivers/halleys.cpp +++ b/src/mame/drivers/halleys.cpp @@ -1633,45 +1633,47 @@ READ8_MEMBER(halleys_state::io_mirror_r) //************************************************************************** // Memory Maps -ADDRESS_MAP_START(halleys_state::halleys_map) - AM_RANGE(0x0000, 0x0fff) AM_READWRITE(blitter_r, blitter_w) AM_SHARE("blitter_ram") - AM_RANGE(0x1f00, 0x1fff) AM_WRITE(bgtile_w) // background tiles?(Ben Bero Beh only) - AM_RANGE(0x1000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xfeff) AM_RAM // work ram - - AM_RANGE(0xff00, 0xffbf) AM_RAM AM_SHARE("io_ram") // I/O write fall-through - - AM_RANGE(0xff66, 0xff66) AM_READ(collision_id_r) // HACK: collision detection bypass(Halley's Comet only) - AM_RANGE(0xff71, 0xff71) AM_READ(blitter_status_r) - AM_RANGE(0xff80, 0xff83) AM_READ(io_mirror_r) - AM_RANGE(0xff8a, 0xff8a) AM_WRITE(soundcommand_w) - AM_RANGE(0xff90, 0xff90) AM_READ_PORT("IN0") // coin/start - AM_RANGE(0xff91, 0xff91) AM_READ_PORT("IN1") // player 1 - AM_RANGE(0xff92, 0xff92) AM_READ_PORT("IN2") // player 2 - AM_RANGE(0xff93, 0xff93) AM_READ_PORT("IN3") // unused? - AM_RANGE(0xff94, 0xff94) AM_READ(coin_lockout_r) - AM_RANGE(0xff95, 0xff95) AM_READ_PORT("DSW1") // dipswitch 4 - AM_RANGE(0xff96, 0xff96) AM_READ_PORT("DSW2") // dipswitch 3 - AM_RANGE(0xff97, 0xff97) AM_READ_PORT("DSW3") // dipswitch 2 - AM_RANGE(0xff9c, 0xff9c) AM_WRITE(firq_ack_w) - - AM_RANGE(0xffc0, 0xffdf) AM_READWRITE(paletteram_r, paletteram_w) - AM_RANGE(0xffe0, 0xffff) AM_READ(vector_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(halleys_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4801) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x4801, 0x4801) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x4802, 0x4803) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w) - AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_device, data_r) - AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM -ADDRESS_MAP_END +void halleys_state::halleys_map(address_map &map) +{ + map(0x0000, 0x0fff).rw(this, FUNC(halleys_state::blitter_r), FUNC(halleys_state::blitter_w)).share("blitter_ram"); + map(0x1f00, 0x1fff).w(this, FUNC(halleys_state::bgtile_w)); // background tiles?(Ben Bero Beh only) + map(0x1000, 0xefff).rom(); + map(0xf000, 0xfeff).ram(); // work ram + + map(0xff00, 0xffbf).ram().share("io_ram"); // I/O write fall-through + + map(0xff66, 0xff66).r(this, FUNC(halleys_state::collision_id_r)); // HACK: collision detection bypass(Halley's Comet only) + map(0xff71, 0xff71).r(this, FUNC(halleys_state::blitter_status_r)); + map(0xff80, 0xff83).r(this, FUNC(halleys_state::io_mirror_r)); + map(0xff8a, 0xff8a).w(this, FUNC(halleys_state::soundcommand_w)); + map(0xff90, 0xff90).portr("IN0"); // coin/start + map(0xff91, 0xff91).portr("IN1"); // player 1 + map(0xff92, 0xff92).portr("IN2"); // player 2 + map(0xff93, 0xff93).portr("IN3"); // unused? + map(0xff94, 0xff94).r(this, FUNC(halleys_state::coin_lockout_r)); + map(0xff95, 0xff95).portr("DSW1"); // dipswitch 4 + map(0xff96, 0xff96).portr("DSW2"); // dipswitch 3 + map(0xff97, 0xff97).portr("DSW3"); // dipswitch 2 + map(0xff9c, 0xff9c).w(this, FUNC(halleys_state::firq_ack_w)); + + map(0xffc0, 0xffdf).rw(this, FUNC(halleys_state::paletteram_r), FUNC(halleys_state::paletteram_w)); + map(0xffe0, 0xffff).r(this, FUNC(halleys_state::vector_r)); +} + + +void halleys_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4801).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x4801, 0x4801).r("ay2", FUNC(ay8910_device::data_r)); + map(0x4802, 0x4803).w("ay3", FUNC(ay8910_device::address_data_w)); + map(0x4803, 0x4803).r("ay3", FUNC(ay8910_device::data_r)); + map(0x4804, 0x4805).w("ay4", FUNC(ay8910_device::address_data_w)); + map(0x4805, 0x4805).r("ay4", FUNC(ay8910_device::data_r)); + map(0x5000, 0x5000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xefff).rom(); // space for diagnostic ROM +} //************************************************************************** diff --git a/src/mame/drivers/hanaawas.cpp b/src/mame/drivers/hanaawas.cpp index 7453169a0f6..ef987457a86 100644 --- a/src/mame/drivers/hanaawas.cpp +++ b/src/mame/drivers/hanaawas.cpp @@ -99,25 +99,27 @@ WRITE8_MEMBER(hanaawas_state::key_matrix_status_w) m_coin_settings = data & 0xf; } -ADDRESS_MAP_START(hanaawas_state::hanaawas_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(hanaawas_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(hanaawas_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8bff) AM_RAM - AM_RANGE(0xb000, 0xb000) AM_WRITE(irq_ack_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(hanaawas_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(hanaawas_input_port_0_r, hanaawas_inputs_mux_w) - AM_RANGE(0x01, 0x01) AM_READNOP AM_WRITE(key_matrix_status_w) /* r bit 1: status ready, presumably of the input mux device / w = configure device? */ - AM_RANGE(0x10, 0x10) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xc0, 0xc0) AM_WRITENOP // watchdog -ADDRESS_MAP_END +void hanaawas_state::hanaawas_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(hanaawas_state::hanaawas_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(hanaawas_state::hanaawas_colorram_w)).share("colorram"); + map(0x8800, 0x8bff).ram(); + map(0xb000, 0xb000).w(this, FUNC(hanaawas_state::irq_ack_w)); +} + + +void hanaawas_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(hanaawas_state::hanaawas_input_port_0_r), FUNC(hanaawas_state::hanaawas_inputs_mux_w)); + map(0x01, 0x01).nopr().w(this, FUNC(hanaawas_state::key_matrix_status_w)); /* r bit 1: status ready, presumably of the input mux device / w = configure device? */ + map(0x10, 0x10).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x10, 0x11).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xc0, 0xc0).nopw(); // watchdog +} static INPUT_PORTS_START( hanaawas ) PORT_START("COINS") diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp index 423f425ed2f..312345211b9 100644 --- a/src/mame/drivers/hankin.cpp +++ b/src/mame/drivers/hankin.cpp @@ -101,21 +101,23 @@ private: }; -ADDRESS_MAP_START(hankin_state::hankin_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("ic11", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("ic10", pia6821_device, read, write) - AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram") // 5101L 4-bit static ram - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hankin_state::hankin_sub_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("ic2", pia6821_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_ROM AM_MIRROR(0x800) AM_REGION("audiocpu", 0) -ADDRESS_MAP_END +void hankin_state::hankin_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0088, 0x008b).rw(m_ic11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_ic10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0200, 0x02ff).ram().share("nvram"); // 5101L 4-bit static ram + map(0x1000, 0x1fff).rom().region("maincpu", 0); +} + +void hankin_state::hankin_sub_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0080, 0x0083).rw(m_ic2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x17ff).rom().mirror(0x800).region("audiocpu", 0); +} static INPUT_PORTS_START( hankin ) PORT_START("TEST") diff --git a/src/mame/drivers/hapyfish.cpp b/src/mame/drivers/hapyfish.cpp index 8f86c3a7c5a..4823b5349b0 100644 --- a/src/mame/drivers/hapyfish.cpp +++ b/src/mame/drivers/hapyfish.cpp @@ -37,9 +37,10 @@ public: void hapyfish_map(address_map &map); }; -ADDRESS_MAP_START(hapyfish_state::hapyfish_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM -ADDRESS_MAP_END +void hapyfish_state::hapyfish_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom(); +} static INPUT_PORTS_START( hapyfish ) INPUT_PORTS_END diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp index 7bb67bd0893..f5137f03232 100644 --- a/src/mame/drivers/harddriv.cpp +++ b/src/mame/drivers/harddriv.cpp @@ -539,45 +539,48 @@ public: }; -ADDRESS_MAP_START(harddriv_state::driver_68k_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x600000, 0x603fff) AM_READ(hd68k_port0_r) - AM_RANGE(0x604000, 0x607fff) AM_WRITE(hd68k_nwr_w) - AM_RANGE(0x608000, 0x60bfff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x60c000, 0x60ffff) AM_WRITE(hd68k_irq_ack_w) - AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write) - AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write) - AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write) - AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w) - AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w) - AM_RANGE(0xc04000, 0xc07fff) AM_READWRITE(hd68k_msp_io_r, hd68k_msp_io_w) - AM_RANGE(0xff0000, 0xff001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff00) - AM_RANGE(0xff4000, 0xff4fff) AM_READWRITE(hd68k_zram_r, hd68k_zram_w) - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(harddriv_state::driver_gsp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0000200f) AM_NOP /* hit during self-test */ - AM_RANGE(0x02000000, 0x0207ffff) AM_READWRITE(hdgsp_vram_2bpp_r, hdgsp_vram_1bpp_w) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("gsp", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xf4000000, 0xf40000ff) AM_READWRITE(hdgsp_control_lo_r, hdgsp_control_lo_w) AM_SHARE("gsp_control_lo") - AM_RANGE(0xf4800000, 0xf48000ff) AM_READWRITE(hdgsp_control_hi_r, hdgsp_control_hi_w) AM_SHARE("gsp_control_hi") - AM_RANGE(0xf5000000, 0xf5000fff) AM_READWRITE(hdgsp_paletteram_lo_r, hdgsp_paletteram_lo_w) AM_SHARE("gsp_palram_lo") - AM_RANGE(0xf5800000, 0xf5800fff) AM_READWRITE(hdgsp_paletteram_hi_r, hdgsp_paletteram_hi_w) AM_SHARE("gsp_palram_hi") - AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(harddriv_state::driver_msp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("msp_ram") - AM_RANGE(0x00700000, 0x007fffff) AM_RAM AM_SHARE("msp_ram") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("msp", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xfff00000, 0xffffffff) AM_RAM AM_SHARE("msp_ram") -ADDRESS_MAP_END +void harddriv_state::driver_68k_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).rom(); + map(0x600000, 0x603fff).r(this, FUNC(harddriv_state::hd68k_port0_r)); + map(0x604000, 0x607fff).w(this, FUNC(harddriv_state::hd68k_nwr_w)); + map(0x608000, 0x60bfff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x60c000, 0x60ffff).w(this, FUNC(harddriv_state::hd68k_irq_ack_w)); + map(0xa00000, 0xa7ffff).w(this, FUNC(harddriv_state::hd68k_wr0_write)); + map(0xa80000, 0xafffff).r(this, FUNC(harddriv_state::hd68k_a80000_r)).w(this, FUNC(harddriv_state::hd68k_wr1_write)); + map(0xb00000, 0xb7ffff).rw(this, FUNC(harddriv_state::hd68k_adc8_r), FUNC(harddriv_state::hd68k_wr2_write)); + map(0xb80000, 0xbfffff).rw(this, FUNC(harddriv_state::hd68k_adc12_r), FUNC(harddriv_state::hd68k_adc_control_w)); + map(0xc00000, 0xc03fff).rw(this, FUNC(harddriv_state::hd68k_gsp_io_r), FUNC(harddriv_state::hd68k_gsp_io_w)); + map(0xc04000, 0xc07fff).rw(this, FUNC(harddriv_state::hd68k_msp_io_r), FUNC(harddriv_state::hd68k_msp_io_w)); + map(0xff0000, 0xff001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00); + map(0xff4000, 0xff4fff).rw(this, FUNC(harddriv_state::hd68k_zram_r), FUNC(harddriv_state::hd68k_zram_w)); + map(0xff8000, 0xffffff).ram(); +} + + +void harddriv_state::driver_gsp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0000200f).noprw(); /* hit during self-test */ + map(0x02000000, 0x0207ffff).rw(this, FUNC(harddriv_state::hdgsp_vram_2bpp_r), FUNC(harddriv_state::hdgsp_vram_1bpp_w)); + map(0xc0000000, 0xc00001ff).rw("gsp", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xf4000000, 0xf40000ff).rw(this, FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo"); + map(0xf4800000, 0xf48000ff).rw(this, FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi"); + map(0xf5000000, 0xf5000fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo"); + map(0xf5800000, 0xf5800fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_hi_r), FUNC(harddriv_state::hdgsp_paletteram_hi_w)).share("gsp_palram_hi"); + map(0xff800000, 0xffffffff).ram().share("gsp_vram"); +} + + +void harddriv_state::driver_msp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x000fffff).ram().share("msp_ram"); + map(0x00700000, 0x007fffff).ram().share("msp_ram"); + map(0xc0000000, 0xc00001ff).rw("msp", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xfff00000, 0xffffffff).ram().share("msp_ram"); +} @@ -587,35 +590,37 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(harddriv_state::multisync_68k_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x604000, 0x607fff) AM_READWRITE(hd68k_sound_reset_r, hd68k_nwr_w) - AM_RANGE(0x608000, 0x60bfff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w) - AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write) - AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write) - AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write) - AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w) - AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w) - AM_RANGE(0xc04000, 0xc07fff) AM_READWRITE(hd68k_msp_io_r, hd68k_msp_io_w) - AM_RANGE(0xff0000, 0xff001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff00) - AM_RANGE(0xff4000, 0xff4fff) AM_READWRITE(hd68k_zram_r, hd68k_zram_w) - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(harddriv_state::multisync_gsp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0000200f) AM_NOP /* hit during self-test */ - AM_RANGE(0x02000000, 0x020fffff) AM_READWRITE(hdgsp_vram_2bpp_r, hdgsp_vram_2bpp_w) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREAD("gsp", tms34010_device, io_register_r) AM_WRITE(hdgsp_io_w) - AM_RANGE(0xf4000000, 0xf40000ff) AM_READWRITE(hdgsp_control_lo_r, hdgsp_control_lo_w) AM_SHARE("gsp_control_lo") - AM_RANGE(0xf4800000, 0xf48000ff) AM_READWRITE(hdgsp_control_hi_r, hdgsp_control_hi_w) AM_SHARE("gsp_control_hi") - AM_RANGE(0xf5000000, 0xf5000fff) AM_READWRITE(hdgsp_paletteram_lo_r, hdgsp_paletteram_lo_w) AM_SHARE("gsp_palram_lo") - AM_RANGE(0xf5800000, 0xf5800fff) AM_READWRITE(hdgsp_paletteram_hi_r, hdgsp_paletteram_hi_w) AM_SHARE("gsp_palram_hi") - AM_RANGE(0xff800000, 0xffbfffff) AM_MIRROR(0x0400000) AM_RAM AM_SHARE("gsp_vram") -ADDRESS_MAP_END +void harddriv_state::multisync_68k_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).rom(); + map(0x604000, 0x607fff).rw(this, FUNC(harddriv_state::hd68k_sound_reset_r), FUNC(harddriv_state::hd68k_nwr_w)); + map(0x608000, 0x60bfff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x60c000, 0x60ffff).rw(this, FUNC(harddriv_state::hd68k_port0_r), FUNC(harddriv_state::hd68k_irq_ack_w)); + map(0xa00000, 0xa7ffff).w(this, FUNC(harddriv_state::hd68k_wr0_write)); + map(0xa80000, 0xafffff).r(this, FUNC(harddriv_state::hd68k_a80000_r)).w(this, FUNC(harddriv_state::hd68k_wr1_write)); + map(0xb00000, 0xb7ffff).rw(this, FUNC(harddriv_state::hd68k_adc8_r), FUNC(harddriv_state::hd68k_wr2_write)); + map(0xb80000, 0xbfffff).rw(this, FUNC(harddriv_state::hd68k_adc12_r), FUNC(harddriv_state::hd68k_adc_control_w)); + map(0xc00000, 0xc03fff).rw(this, FUNC(harddriv_state::hd68k_gsp_io_r), FUNC(harddriv_state::hd68k_gsp_io_w)); + map(0xc04000, 0xc07fff).rw(this, FUNC(harddriv_state::hd68k_msp_io_r), FUNC(harddriv_state::hd68k_msp_io_w)); + map(0xff0000, 0xff001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00); + map(0xff4000, 0xff4fff).rw(this, FUNC(harddriv_state::hd68k_zram_r), FUNC(harddriv_state::hd68k_zram_w)); + map(0xff8000, 0xffffff).ram(); +} + + +void harddriv_state::multisync_gsp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0000200f).noprw(); /* hit during self-test */ + map(0x02000000, 0x020fffff).rw(this, FUNC(harddriv_state::hdgsp_vram_2bpp_r), FUNC(harddriv_state::hdgsp_vram_2bpp_w)); + map(0xc0000000, 0xc00001ff).r("gsp", FUNC(tms34010_device::io_register_r)).w(this, FUNC(harddriv_state::hdgsp_io_w)); + map(0xf4000000, 0xf40000ff).rw(this, FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo"); + map(0xf4800000, 0xf48000ff).rw(this, FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi"); + map(0xf5000000, 0xf5000fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo"); + map(0xf5800000, 0xf5800fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_hi_r), FUNC(harddriv_state::hdgsp_paletteram_hi_w)).share("gsp_palram_hi"); + map(0xff800000, 0xffbfffff).mirror(0x0400000).ram().share("gsp_vram"); +} @@ -625,36 +630,38 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(harddriv_state::multisync2_68k_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x604000, 0x607fff) AM_WRITE(hd68k_nwr_w) - AM_RANGE(0x608000, 0x60bfff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x60c000, 0x60ffff) AM_READWRITE(hd68k_port0_r, hd68k_irq_ack_w) - AM_RANGE(0xa00000, 0xa7ffff) AM_WRITE(hd68k_wr0_write) - AM_RANGE(0xa80000, 0xafffff) AM_READ(hd68k_a80000_r) AM_WRITE(hd68k_wr1_write) - AM_RANGE(0xb00000, 0xb7ffff) AM_READWRITE(hd68k_adc8_r, hd68k_wr2_write) - AM_RANGE(0xb80000, 0xbfffff) AM_READWRITE(hd68k_adc12_r, hd68k_adc_control_w) - AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(hd68k_gsp_io_r, hd68k_gsp_io_w) - AM_RANGE(0xc04000, 0xc07fff) AM_READWRITE(hd68k_msp_io_r, hd68k_msp_io_w) - AM_RANGE(0xfc0000, 0xfc001f) AM_DEVREADWRITE8("duartn68681", mc68681_device, read, write, 0xff00) - AM_RANGE(0xfd0000, 0xfd0fff) AM_MIRROR(0x004000) AM_READWRITE(hd68k_zram_r, hd68k_zram_w) - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void harddriv_state::multisync2_68k_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).rom(); + map(0x604000, 0x607fff).w(this, FUNC(harddriv_state::hd68k_nwr_w)); + map(0x608000, 0x60bfff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x60c000, 0x60ffff).rw(this, FUNC(harddriv_state::hd68k_port0_r), FUNC(harddriv_state::hd68k_irq_ack_w)); + map(0xa00000, 0xa7ffff).w(this, FUNC(harddriv_state::hd68k_wr0_write)); + map(0xa80000, 0xafffff).r(this, FUNC(harddriv_state::hd68k_a80000_r)).w(this, FUNC(harddriv_state::hd68k_wr1_write)); + map(0xb00000, 0xb7ffff).rw(this, FUNC(harddriv_state::hd68k_adc8_r), FUNC(harddriv_state::hd68k_wr2_write)); + map(0xb80000, 0xbfffff).rw(this, FUNC(harddriv_state::hd68k_adc12_r), FUNC(harddriv_state::hd68k_adc_control_w)); + map(0xc00000, 0xc03fff).rw(this, FUNC(harddriv_state::hd68k_gsp_io_r), FUNC(harddriv_state::hd68k_gsp_io_w)); + map(0xc04000, 0xc07fff).rw(this, FUNC(harddriv_state::hd68k_msp_io_r), FUNC(harddriv_state::hd68k_msp_io_w)); + map(0xfc0000, 0xfc001f).rw("duartn68681", FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00); + map(0xfd0000, 0xfd0fff).mirror(0x004000).rw(this, FUNC(harddriv_state::hd68k_zram_r), FUNC(harddriv_state::hd68k_zram_w)); + map(0xff0000, 0xffffff).ram(); +} /* GSP is identical to original multisync */ -ADDRESS_MAP_START(harddriv_state::multisync2_gsp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0000200f) AM_NOP /* hit during self-test */ - AM_RANGE(0x02000000, 0x020fffff) AM_READWRITE(hdgsp_vram_2bpp_r, hdgsp_vram_2bpp_w) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREAD("gsp", tms34010_device, io_register_r) AM_WRITE(hdgsp_io_w) - AM_RANGE(0xf4000000, 0xf40000ff) AM_READWRITE(hdgsp_control_lo_r, hdgsp_control_lo_w) AM_SHARE("gsp_control_lo") - AM_RANGE(0xf4800000, 0xf48000ff) AM_READWRITE(hdgsp_control_hi_r, hdgsp_control_hi_w) AM_SHARE("gsp_control_hi") - AM_RANGE(0xf5000000, 0xf5000fff) AM_READWRITE(hdgsp_paletteram_lo_r, hdgsp_paletteram_lo_w) AM_SHARE("gsp_palram_lo") - AM_RANGE(0xf5800000, 0xf5800fff) AM_READWRITE(hdgsp_paletteram_hi_r, hdgsp_paletteram_hi_w) AM_SHARE("gsp_palram_hi") - AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram") -ADDRESS_MAP_END +void harddriv_state::multisync2_gsp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0000200f).noprw(); /* hit during self-test */ + map(0x02000000, 0x020fffff).rw(this, FUNC(harddriv_state::hdgsp_vram_2bpp_r), FUNC(harddriv_state::hdgsp_vram_2bpp_w)); + map(0xc0000000, 0xc00001ff).r("gsp", FUNC(tms34010_device::io_register_r)).w(this, FUNC(harddriv_state::hdgsp_io_w)); + map(0xf4000000, 0xf40000ff).rw(this, FUNC(harddriv_state::hdgsp_control_lo_r), FUNC(harddriv_state::hdgsp_control_lo_w)).share("gsp_control_lo"); + map(0xf4800000, 0xf48000ff).rw(this, FUNC(harddriv_state::hdgsp_control_hi_r), FUNC(harddriv_state::hdgsp_control_hi_w)).share("gsp_control_hi"); + map(0xf5000000, 0xf5000fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_lo_r), FUNC(harddriv_state::hdgsp_paletteram_lo_w)).share("gsp_palram_lo"); + map(0xf5800000, 0xf5800fff).rw(this, FUNC(harddriv_state::hdgsp_paletteram_hi_r), FUNC(harddriv_state::hdgsp_paletteram_hi_w)).share("gsp_palram_hi"); + map(0xff800000, 0xffffffff).ram().share("gsp_vram"); +} @@ -664,18 +671,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(harddriv_state::adsp_program_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("adsp_pgm_memory") - AM_RANGE(0x2000, 0x3fff) AM_READNOP // ROM? -ADDRESS_MAP_END +void harddriv_state::adsp_program_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("adsp_pgm_memory"); + map(0x2000, 0x3fff).nopr(); // ROM? +} -ADDRESS_MAP_START(harddriv_state::adsp_data_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("adsp_data") - AM_RANGE(0x2000, 0x2fff) AM_READWRITE(hdadsp_special_r, hdadsp_special_w) -ADDRESS_MAP_END +void harddriv_state::adsp_data_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("adsp_data"); + map(0x2000, 0x2fff).rw(this, FUNC(harddriv_state::hdadsp_special_r), FUNC(harddriv_state::hdadsp_special_w)); +} @@ -685,45 +694,51 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(harddriv_state::ds3_program_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("adsp_pgm_memory") -ADDRESS_MAP_END +void harddriv_state::ds3_program_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram().share("adsp_pgm_memory"); +} -ADDRESS_MAP_START(harddriv_state::ds3_data_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("adsp_data") - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(hdds3_special_r, hdds3_special_w) - AM_RANGE(0x3800, 0x3bff) AM_RAM /* internal RAM */ - AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(hdds3_control_r, hdds3_control_w) /* adsp control regs */ -ADDRESS_MAP_END +void harddriv_state::ds3_data_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("adsp_data"); + map(0x2000, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_special_r), FUNC(harddriv_state::hdds3_special_w)); + map(0x3800, 0x3bff).ram(); /* internal RAM */ + map(0x3fe0, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_control_r), FUNC(harddriv_state::hdds3_control_w)); /* adsp control regs */ +} -ADDRESS_MAP_START(harddriv_state::ds3sdsp_program_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("ds3sdsp_pgm") -ADDRESS_MAP_END +void harddriv_state::ds3sdsp_program_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram().share("ds3sdsp_pgm"); +} -ADDRESS_MAP_START(harddriv_state::ds3sdsp_data_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(hdds3_sdsp_special_r, hdds3_sdsp_special_w) - AM_RANGE(0x3800, 0x39ff) AM_RAM /* internal RAM */ - AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(hdds3_sdsp_control_r, hdds3_sdsp_control_w) -ADDRESS_MAP_END +void harddriv_state::ds3sdsp_data_map(address_map &map) +{ + map.unmap_value_high(); + map(0x2000, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_sdsp_special_r), FUNC(harddriv_state::hdds3_sdsp_special_w)); + map(0x3800, 0x39ff).ram(); /* internal RAM */ + map(0x3fe0, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_sdsp_control_r), FUNC(harddriv_state::hdds3_sdsp_control_w)); +} -ADDRESS_MAP_START(harddriv_state::ds3xdsp_program_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("ds3xdsp_pgm") -ADDRESS_MAP_END +void harddriv_state::ds3xdsp_program_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram().share("ds3xdsp_pgm"); +} -ADDRESS_MAP_START(harddriv_state::ds3xdsp_data_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM // TODO - AM_RANGE(0x3800, 0x39ff) AM_RAM /* internal RAM */ - AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(hdds3_xdsp_control_r, hdds3_xdsp_control_w) -ADDRESS_MAP_END +void harddriv_state::ds3xdsp_data_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram(); // TODO + map(0x3800, 0x39ff).ram(); /* internal RAM */ + map(0x3fe0, 0x3fff).rw(this, FUNC(harddriv_state::hdds3_xdsp_control_r), FUNC(harddriv_state::hdds3_xdsp_control_w)); +} @@ -733,12 +748,13 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(harddriv_state::dsk_dsp32_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x001fff) AM_RAM - AM_RANGE(0x600000, 0x63ffff) AM_RAM AM_SHARE("dsp32_ram") - AM_RANGE(0xfff800, 0xffffff) AM_RAM -ADDRESS_MAP_END +void harddriv_state::dsk_dsp32_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x001fff).ram(); + map(0x600000, 0x63ffff).ram().share("dsp32_ram"); + map(0xfff800, 0xffffff).ram(); +} @@ -748,13 +764,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(harddriv_state::dsk2_dsp32_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x001fff) AM_RAM - AM_RANGE(0x200000, 0x23ffff) AM_RAM - AM_RANGE(0x400000, 0x5fffff) AM_ROM AM_REGION("user4", 0) - AM_RANGE(0xfff800, 0xffffff) AM_RAM -ADDRESS_MAP_END +void harddriv_state::dsk2_dsp32_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x001fff).ram(); + map(0x200000, 0x23ffff).ram(); + map(0x400000, 0x5fffff).rom().region("user4", 0); + map(0xfff800, 0xffffff).ram(); +} /************************************* diff --git a/src/mame/drivers/harriet.cpp b/src/mame/drivers/harriet.cpp index 6ad1fec992a..d159228845f 100644 --- a/src/mame/drivers/harriet.cpp +++ b/src/mame/drivers/harriet.cpp @@ -109,20 +109,21 @@ READ8_MEMBER(harriet_state::keyboard_status_r) return res; } -ADDRESS_MAP_START(harriet_state::harriet_map) - AM_RANGE(0x000000, 0x007fff) AM_ROM - AM_RANGE(0x040000, 0x040fff) AM_RAM // NVRAM - AM_RANGE(0x7f0000, 0x7fffff) AM_RAM // todo: boundaries, 0x7fe000 - 0x7fffff tested on boot - AM_RANGE(0xf1000e, 0xf1000f) AM_READ8(unk_r,0x00ff) - AM_RANGE(0xf1001c, 0xf1001f) AM_WRITE8(unk_w,0x00ff) - AM_RANGE(0xf20022, 0xf20023) AM_READ8(unk2_r,0x00ff) - AM_RANGE(0xf20024, 0xf20025) AM_READ8(unk2_r,0x00ff) - AM_RANGE(0xf2002c, 0xf2002d) AM_READ8(unk3_r,0x00ff) - AM_RANGE(0xf2002e, 0xf2002f) AM_WRITE8(serial_w,0x00ff) +void harriet_state::harriet_map(address_map &map) +{ + map(0x000000, 0x007fff).rom(); + map(0x040000, 0x040fff).ram(); // NVRAM + map(0x7f0000, 0x7fffff).ram(); // todo: boundaries, 0x7fe000 - 0x7fffff tested on boot + map(0xf1000f, 0xf1000f).r(this, FUNC(harriet_state::unk_r)); + map(0xf1001c, 0xf1001f).w(this, FUNC(harriet_state::unk_w)).umask16(0x00ff); + map(0xf20023, 0xf20023).r(this, FUNC(harriet_state::unk2_r)); + map(0xf20025, 0xf20025).r(this, FUNC(harriet_state::unk2_r)); + map(0xf2002d, 0xf2002d).r(this, FUNC(harriet_state::unk3_r)); + map(0xf2002f, 0xf2002f).w(this, FUNC(harriet_state::serial_w)); // AM_RANGE(0xf4001e, 0xf4001f) AM_READ8(keyboard_status_r,0x00ff) // AM_RANGE(0xf4002e, 0xf4002f) AM_READ8(keyboard_status_r,0x00ff) - AM_RANGE(0xf4003e, 0xf4003f) AM_READ8(keyboard_status_r,0x00ff) -ADDRESS_MAP_END + map(0xf4003f, 0xf4003f).r(this, FUNC(harriet_state::keyboard_status_r)); +} static INPUT_PORTS_START( harriet ) /* dummy active high structure */ diff --git a/src/mame/drivers/hazelgr.cpp b/src/mame/drivers/hazelgr.cpp index b117fb4a3df..623a7dc1b18 100644 --- a/src/mame/drivers/hazelgr.cpp +++ b/src/mame/drivers/hazelgr.cpp @@ -31,22 +31,24 @@ private: -ADDRESS_MAP_START(haze_state::mem_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x9000, 0x9fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(haze_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // irq 17E0 => 0183(ch3) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt) // 91 irq 17F8 => 0A5E - AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt) // not programmed to interrupt - AM_RANGE(0xb0, 0xb3) AM_DEVREADWRITE("pio3", z80pio_device, read_alt, write_alt) // not programmed to interrupt - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("pio4", z80pio_device, read_alt, write_alt) // not programmed to interrupt - AM_RANGE(0xc4, 0xc7) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // irq 17E8 => 023D(ch0),0366(ch1),02BB(ch2),0378(ch3) - AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("ctc3", z80ctc_device, read, write) // irq 17F0 => 030E(ch0),038A(ch1) -ADDRESS_MAP_END +void haze_state::mem_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x9000, 0x9fff).ram(); +} + +void haze_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // irq 17E0 => 0183(ch3) + map(0x90, 0x93).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // 91 irq 17F8 => 0A5E + map(0xa0, 0xa3).rw("pio2", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // not programmed to interrupt + map(0xb0, 0xb3).rw("pio3", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // not programmed to interrupt + map(0xc0, 0xc3).rw("pio4", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // not programmed to interrupt + map(0xc4, 0xc7).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // irq 17E8 => 023D(ch0),0366(ch1),02BB(ch2),0378(ch3) + map(0xc8, 0xcb).rw("ctc3", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // irq 17F0 => 030E(ch0),038A(ch1) +} static INPUT_PORTS_START( haze ) diff --git a/src/mame/drivers/hazeltin.cpp b/src/mame/drivers/hazeltin.cpp index c9234e81d6c..9def1865588 100644 --- a/src/mame/drivers/hazeltin.cpp +++ b/src/mame/drivers/hazeltin.cpp @@ -474,21 +474,23 @@ WRITE8_MEMBER(hazl1500_state::refresh_address_w) m_cpu_db7->write((data >> 7) & 1); } -ADDRESS_MAP_START(hazl1500_state::hazl1500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x3000, 0x377f) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x3780, 0x37ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hazl1500_state::hazl1500_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_READWRITE(status_reg_2_r, status_reg_3_w) - AM_RANGE(0xbf, 0xbf) AM_READWRITE(uart_r, uart_w) - AM_RANGE(0xdf, 0xdf) AM_READ(kbd_encoder_r) - AM_RANGE(0xef, 0xef) AM_READWRITE(system_test_r, refresh_address_w) - AM_RANGE(0xf7, 0xf7) AM_READ(kbd_status_latch_r) -ADDRESS_MAP_END +void hazl1500_state::hazl1500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x3000, 0x377f).rw(this, FUNC(hazl1500_state::ram_r), FUNC(hazl1500_state::ram_w)); + map(0x3780, 0x37ff).ram(); +} + +void hazl1500_state::hazl1500_io(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).rw(this, FUNC(hazl1500_state::status_reg_2_r), FUNC(hazl1500_state::status_reg_3_w)); + map(0xbf, 0xbf).rw(this, FUNC(hazl1500_state::uart_r), FUNC(hazl1500_state::uart_w)); + map(0xdf, 0xdf).r(this, FUNC(hazl1500_state::kbd_encoder_r)); + map(0xef, 0xef).rw(this, FUNC(hazl1500_state::system_test_r), FUNC(hazl1500_state::refresh_address_w)); + map(0xf7, 0xf7).r(this, FUNC(hazl1500_state::kbd_status_latch_r)); +} /* Hazeltine 1500 key matrix (from ref[1]) diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp index 8116878c3ac..ee56ed4aa9a 100644 --- a/src/mame/drivers/hcastle.cpp +++ b/src/mame/drivers/hcastle.cpp @@ -41,31 +41,32 @@ WRITE8_MEMBER(hcastle_state::hcastle_coin_w) -ADDRESS_MAP_START(hcastle_state::hcastle_map) - AM_RANGE(0x0000, 0x0007) AM_WRITE(hcastle_pf1_control_w) - AM_RANGE(0x0020, 0x003f) AM_RAM /* rowscroll? */ - AM_RANGE(0x0200, 0x0207) AM_WRITE(hcastle_pf2_control_w) - AM_RANGE(0x0220, 0x023f) AM_RAM /* rowscroll? */ - AM_RANGE(0x0400, 0x0400) AM_WRITE(hcastle_bankswitch_w) - AM_RANGE(0x0404, 0x0404) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x0408, 0x0408) AM_WRITE(hcastle_soundirq_w) - AM_RANGE(0x040c, 0x040c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0410, 0x0410) AM_READ_PORT("SYSTEM") AM_WRITE(hcastle_coin_w) - AM_RANGE(0x0411, 0x0411) AM_READ_PORT("P1") - AM_RANGE(0x0412, 0x0412) AM_READ_PORT("P2") - AM_RANGE(0x0413, 0x0413) AM_READ_PORT("DSW3") - AM_RANGE(0x0414, 0x0414) AM_READ_PORT("DSW1") - AM_RANGE(0x0415, 0x0415) AM_READ_PORT("DSW2") - AM_RANGE(0x0418, 0x0418) AM_READWRITE(hcastle_gfxbank_r, hcastle_gfxbank_w) - AM_RANGE(0x0600, 0x06ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0x0700, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(hcastle_pf1_video_w) AM_SHARE("pf1_videoram") - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(hcastle_pf2_video_w) AM_SHARE("pf2_videoram") - AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void hcastle_state::hcastle_map(address_map &map) +{ + map(0x0000, 0x0007).w(this, FUNC(hcastle_state::hcastle_pf1_control_w)); + map(0x0020, 0x003f).ram(); /* rowscroll? */ + map(0x0200, 0x0207).w(this, FUNC(hcastle_state::hcastle_pf2_control_w)); + map(0x0220, 0x023f).ram(); /* rowscroll? */ + map(0x0400, 0x0400).w(this, FUNC(hcastle_state::hcastle_bankswitch_w)); + map(0x0404, 0x0404).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0408, 0x0408).w(this, FUNC(hcastle_state::hcastle_soundirq_w)); + map(0x040c, 0x040c).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0410, 0x0410).portr("SYSTEM").w(this, FUNC(hcastle_state::hcastle_coin_w)); + map(0x0411, 0x0411).portr("P1"); + map(0x0412, 0x0412).portr("P2"); + map(0x0413, 0x0413).portr("DSW3"); + map(0x0414, 0x0414).portr("DSW1"); + map(0x0415, 0x0415).portr("DSW2"); + map(0x0418, 0x0418).rw(this, FUNC(hcastle_state::hcastle_gfxbank_r), FUNC(hcastle_state::hcastle_gfxbank_w)); + map(0x0600, 0x06ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0x0700, 0x1fff).ram(); + map(0x2000, 0x2fff).ram().w(this, FUNC(hcastle_state::hcastle_pf1_video_w)).share("pf1_videoram"); + map(0x3000, 0x3fff).ram().share("spriteram"); + map(0x4000, 0x4fff).ram().w(this, FUNC(hcastle_state::hcastle_pf2_video_w)).share("pf2_videoram"); + map(0x5000, 0x5fff).ram().share("spriteram2"); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} /*****************************************************************************/ @@ -76,19 +77,20 @@ WRITE8_MEMBER(hcastle_state::sound_bank_w) m_k007232->set_bank(bank_A, bank_B ); } -ADDRESS_MAP_START(hcastle_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w) - AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w) - AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w) - AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w) - AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w) - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_WRITE(sound_bank_w) /* 7232 bankswitch */ - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void hcastle_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); + map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); + map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w)); + map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); + map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc000).w(this, FUNC(hcastle_state::sound_bank_w)); /* 7232 bankswitch */ + map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp index d55fab7a839..d7848d31fb7 100644 --- a/src/mame/drivers/headonb.cpp +++ b/src/mame/drivers/headonb.cpp @@ -98,16 +98,18 @@ WRITE8_MEMBER(headonb_state::video_ram_w) m_tilemap->mark_tile_dirty(offset); } -ADDRESS_MAP_START(headonb_state::headonb_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_MIRROR(0x4000) - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0xff00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(headonb_state::headonb_io_map) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1") -ADDRESS_MAP_END +void headonb_state::headonb_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().mirror(0x4000); + map(0xe000, 0xe3ff).ram().w(this, FUNC(headonb_state::video_ram_w)).share("video_ram"); + map(0xff00, 0xffff).ram(); +} + +void headonb_state::headonb_io_map(address_map &map) +{ + map(0x01, 0x01).portr("IN0"); + map(0x04, 0x04).portr("IN1"); +} /*************************************************************************** diff --git a/src/mame/drivers/hec2hrp.cpp b/src/mame/drivers/hec2hrp.cpp index b6be3061763..8ba4b81cdc5 100644 --- a/src/mame/drivers/hec2hrp.cpp +++ b/src/mame/drivers/hec2hrp.cpp @@ -90,118 +90,127 @@ /*****************************************************************************/ -ADDRESS_MAP_START(hec2hrp_state::hecdisc2_mem) +void hec2hrp_state::hecdisc2_mem(address_map &map) +{ /*****************************************************************************/ - ADDRESS_MAP_UNMAP_HIGH + map.unmap_value_high(); /* Hardward address mapping*/ - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank3") /*zone with ROM at start up, RAM later*/ + map(0x0000, 0x3fff).bankrw("bank3"); /*zone with ROM at start up, RAM later*/ - AM_RANGE( 0x4000, 0xffff ) AM_RAM + map(0x4000, 0xffff).ram(); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(hec2hrp_state::hecdisc2_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void hec2hrp_state::hecdisc2_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // ROM Page managing - AM_RANGE(0x000,0x00f) AM_READWRITE(hector_disc2_io00_port_r, hector_disc2_io00_port_w ) + map(0x000, 0x00f).rw(this, FUNC(hec2hrp_state::hector_disc2_io00_port_r), FUNC(hec2hrp_state::hector_disc2_io00_port_w)); // RS232 - 8251 managing - AM_RANGE(0x020,0x02f) AM_READWRITE(hector_disc2_io20_port_r, hector_disc2_io20_port_w ) + map(0x020, 0x02f).rw(this, FUNC(hec2hrp_state::hector_disc2_io20_port_r), FUNC(hec2hrp_state::hector_disc2_io20_port_w)); // Hector communication managing - AM_RANGE(0x030,0x03f) AM_READWRITE(hector_disc2_io30_port_r, hector_disc2_io30_port_w ) - AM_RANGE(0x040,0x04f) AM_READWRITE(hector_disc2_io40_port_r, hector_disc2_io40_port_w ) - AM_RANGE(0x050,0x05f) AM_READWRITE(hector_disc2_io50_port_r, hector_disc2_io50_port_w ) + map(0x030, 0x03f).rw(this, FUNC(hec2hrp_state::hector_disc2_io30_port_r), FUNC(hec2hrp_state::hector_disc2_io30_port_w)); + map(0x040, 0x04f).rw(this, FUNC(hec2hrp_state::hector_disc2_io40_port_r), FUNC(hec2hrp_state::hector_disc2_io40_port_w)); + map(0x050, 0x05f).rw(this, FUNC(hec2hrp_state::hector_disc2_io50_port_r), FUNC(hec2hrp_state::hector_disc2_io50_port_w)); // uPD765 link: - AM_RANGE(0x060,0x061) AM_DEVICE("upd765", upd765a_device, map) - AM_RANGE(0x070,0x07f) AM_DEVREADWRITE("upd765", upd765a_device, mdma_r, mdma_w) -ADDRESS_MAP_END + map(0x060, 0x061).m("upd765", FUNC(upd765a_device::map)); + map(0x070, 0x07f).rw("upd765", FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w)); +} /*****************************************************************************/ -ADDRESS_MAP_START(hec2hrp_state::hec2hrp_mem) +void hec2hrp_state::hec2hrp_mem(address_map &map) +{ /*****************************************************************************/ - ADDRESS_MAP_UNMAP_HIGH + map.unmap_value_high(); /* Main ROM page*/ - AM_RANGE(0x0000,0x3fff) AM_ROM + map(0x0000, 0x3fff).rom(); /* Hardware address mapping*/ - AM_RANGE(0x0800,0x0808) AM_WRITE(hector_switch_bank_w)/* Bank management*/ - AM_RANGE(0x1000,0x1000) AM_WRITE(hector_color_a_w) /* Color c0/c1*/ - AM_RANGE(0x1800,0x1800) AM_WRITE(hector_color_b_w) /* Color c2/c3*/ - AM_RANGE(0x2000,0x2003) AM_WRITE(hector_sn_2000_w) /* Sound*/ - AM_RANGE(0x2800,0x2803) AM_WRITE(hector_sn_2800_w) /* Sound*/ - AM_RANGE(0x3000,0x3000) AM_READWRITE(hector_cassette_r, hector_sn_3000_w)/* Write necessary*/ - AM_RANGE(0x3800,0x3807) AM_READWRITE(hector_keyboard_r, hector_keyboard_w) /* Keyboard*/ + map(0x0800, 0x0808).w(this, FUNC(hec2hrp_state::hector_switch_bank_w));/* Bank management*/ + map(0x1000, 0x1000).w(this, FUNC(hec2hrp_state::hector_color_a_w)); /* Color c0/c1*/ + map(0x1800, 0x1800).w(this, FUNC(hec2hrp_state::hector_color_b_w)); /* Color c2/c3*/ + map(0x2000, 0x2003).w(this, FUNC(hec2hrp_state::hector_sn_2000_w)); /* Sound*/ + map(0x2800, 0x2803).w(this, FUNC(hec2hrp_state::hector_sn_2800_w)); /* Sound*/ + map(0x3000, 0x3000).rw(this, FUNC(hec2hrp_state::hector_cassette_r), FUNC(hec2hrp_state::hector_sn_3000_w));/* Write necessary*/ + map(0x3800, 0x3807).rw(this, FUNC(hec2hrp_state::hector_keyboard_r), FUNC(hec2hrp_state::hector_keyboard_w)); /* Keyboard*/ /* Video br mapping*/ - AM_RANGE(0x4000,0x49ff) AM_RAM AM_SHARE("videoram") + map(0x4000, 0x49ff).ram().share("videoram"); /* continous RAM*/ - AM_RANGE(0x4A00,0xbfff) AM_RAM + map(0x4A00, 0xbfff).ram(); /* from 0xC000 to 0xFFFF => Bank Ram for video and data !*/ - AM_RANGE(0xc000,0xffff) AM_RAM AM_SHARE("hector_videoram") -ADDRESS_MAP_END + map(0xc000, 0xffff).ram().share("hector_videoram"); +} /*****************************************************************************/ -ADDRESS_MAP_START(hec2hrp_state::hec2hrx_mem) +void hec2hrp_state::hec2hrx_mem(address_map &map) +{ /*****************************************************************************/ - ADDRESS_MAP_UNMAP_HIGH + map.unmap_value_high(); /* Main ROM page*/ - AM_RANGE(0x0000,0x3fff) AM_ROMBANK("bank2") + map(0x0000, 0x3fff).bankr("bank2"); /* Hardware address mapping*/ - AM_RANGE(0x0800,0x0808) AM_WRITE(hector_switch_bank_w)/* Bank management*/ - AM_RANGE(0x1000,0x1000) AM_WRITE(hector_color_a_w) /* Color c0/c1*/ - AM_RANGE(0x1800,0x1800) AM_WRITE(hector_color_b_w) /* Color c2/c3*/ - AM_RANGE(0x2000,0x2003) AM_WRITE(hector_sn_2000_w) /* Sound*/ - AM_RANGE(0x2800,0x2803) AM_WRITE(hector_sn_2800_w) /* Sound*/ - AM_RANGE(0x3000,0x3000) AM_READWRITE(hector_cassette_r, hector_sn_3000_w)/* Write necessary*/ - AM_RANGE(0x3800,0x3807) AM_READWRITE(hector_keyboard_r, hector_keyboard_w) /* Keyboard*/ + map(0x0800, 0x0808).w(this, FUNC(hec2hrp_state::hector_switch_bank_w));/* Bank management*/ + map(0x1000, 0x1000).w(this, FUNC(hec2hrp_state::hector_color_a_w)); /* Color c0/c1*/ + map(0x1800, 0x1800).w(this, FUNC(hec2hrp_state::hector_color_b_w)); /* Color c2/c3*/ + map(0x2000, 0x2003).w(this, FUNC(hec2hrp_state::hector_sn_2000_w)); /* Sound*/ + map(0x2800, 0x2803).w(this, FUNC(hec2hrp_state::hector_sn_2800_w)); /* Sound*/ + map(0x3000, 0x3000).rw(this, FUNC(hec2hrp_state::hector_cassette_r), FUNC(hec2hrp_state::hector_sn_3000_w));/* Write necessary*/ + map(0x3800, 0x3807).rw(this, FUNC(hec2hrp_state::hector_keyboard_r), FUNC(hec2hrp_state::hector_keyboard_w)); /* Keyboard*/ /* Video br mapping*/ - AM_RANGE(0x4000,0x49ff) AM_RAM AM_SHARE("videoram") + map(0x4000, 0x49ff).ram().share("videoram"); /* continous RAM*/ - AM_RANGE(0x4A00,0xbfff) AM_RAM + map(0x4A00, 0xbfff).ram(); /* from 0xC000 to 0xFFFF => Bank Ram for video and data !*/ - AM_RANGE(0xc000,0xffff) AM_RAMBANK("bank1") AM_SHARE("hector_videoram") -ADDRESS_MAP_END + map(0xc000, 0xffff).bankrw("bank1").share("hector_videoram"); +} -ADDRESS_MAP_START(hec2hrp_state::hec2hrp_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x000,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w ) -ADDRESS_MAP_END +void hec2hrp_state::hec2hrp_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x000, 0x0ff).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w)); +} -ADDRESS_MAP_START(hec2hrp_state::hec2hrx_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0f0,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w ) -ADDRESS_MAP_END +void hec2hrp_state::hec2hrx_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x0f0, 0x0ff).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w)); +} -ADDRESS_MAP_START(hec2hrp_state::hec2mdhrx_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void hec2hrp_state::hec2mdhrx_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // Minidisc commands and changing the rom page !*/ - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("wd179x", fd1793_device, read, write) - AM_RANGE(0x08, 0x08) AM_WRITE(minidisc_control_w) - AM_RANGE(0x0f0,0x0ff) AM_READWRITE(hector_io_8255_r, hector_io_8255_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hec2hrp_state::hec2mx40_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x000,0x0ef) AM_WRITE(hector_mx40_io_port_w ) - AM_RANGE(0x0f0,0x0f3) AM_READWRITE(hector_io_8255_r, hector_io_8255_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hec2hrp_state::hec2mx80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x000,0x0ef) AM_WRITE(hector_mx80_io_port_w ) - AM_RANGE(0x0f0,0x0f3) AM_READWRITE(hector_io_8255_r, hector_io_8255_w ) - - -ADDRESS_MAP_END + map(0x04, 0x07).rw(m_minidisc_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x08, 0x08).w(this, FUNC(hec2hrp_state::minidisc_control_w)); + map(0x0f0, 0x0ff).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w)); +} + +void hec2hrp_state::hec2mx40_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x000, 0x0ef).w(this, FUNC(hec2hrp_state::hector_mx40_io_port_w)); + map(0x0f0, 0x0f3).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w)); +} + +void hec2hrp_state::hec2mx80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x000, 0x0ef).w(this, FUNC(hec2hrp_state::hector_mx80_io_port_w)); + map(0x0f0, 0x0f3).rw(this, FUNC(hec2hrp_state::hector_io_8255_r), FUNC(hec2hrp_state::hector_io_8255_w)); + + +} /* Input ports */ static INPUT_PORTS_START( hec2hrp ) diff --git a/src/mame/drivers/hexion.cpp b/src/mame/drivers/hexion.cpp index dca86457b7e..2ec6f1eecdd 100644 --- a/src/mame/drivers/hexion.cpp +++ b/src/mame/drivers/hexion.cpp @@ -121,58 +121,60 @@ WRITE8_MEMBER(hexion_state::ccu_int_time_w) m_ccu_int_time = data; } -ADDRESS_MAP_START(hexion_state::hexion_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdffe) AM_READWRITE(bankedram_r, bankedram_w) - AM_RANGE(0xdfff, 0xdfff) AM_WRITE(bankctrl_w) - AM_RANGE(0xe000, 0xe000) AM_NOP - AM_RANGE(0xe800, 0xe87f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w) - AM_RANGE(0xe880, 0xe889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w) - AM_RANGE(0xe88a, 0xe88e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w) - AM_RANGE(0xe88f, 0xe88f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w) - AM_RANGE(0xe8e0, 0xe8ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w) - AM_RANGE(0xf000, 0xf00f) AM_DEVREADWRITE("k053252", k053252_device, read, write) - AM_RANGE(0xf200, 0xf200) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1") - AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2") - AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P1") - AM_RANGE(0xf403, 0xf403) AM_READ_PORT("P2") - AM_RANGE(0xf440, 0xf440) AM_READ_PORT("DSW3") - AM_RANGE(0xf441, 0xf441) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf480, 0xf480) AM_WRITE(bankswitch_w) - AM_RANGE(0xf4c0, 0xf4c0) AM_WRITE(coincntr_w) - AM_RANGE(0xf500, 0xf500) AM_WRITE(gfxrom_select_w) - AM_RANGE(0xf540, 0xf540) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hexion_state::hexionb_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdffe) AM_READWRITE(bankedram_r, bankedram_w) - AM_RANGE(0xdfff, 0xdfff) AM_WRITE(bankctrl_w) - AM_RANGE(0xe000, 0xe000) AM_NOP - AM_RANGE(0xe800, 0xe87f) AM_NOP // all the code to use the k051649 is still present - AM_RANGE(0xe880, 0xe889) AM_NOP // but the bootleg has an additional M6295 @ 0xf5c0 instead - AM_RANGE(0xe88a, 0xe88e) AM_NOP - AM_RANGE(0xe88f, 0xe88f) AM_NOP - AM_RANGE(0xe8e0, 0xe8ff) AM_NOP - AM_RANGE(0xf000, 0xf00f) AM_DEVREADWRITE("k053252", k053252_device, read, write) - AM_RANGE(0xf200, 0xf200) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1") - AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2") - AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P1") - AM_RANGE(0xf403, 0xf403) AM_READ_PORT("P2") - AM_RANGE(0xf440, 0xf440) AM_READ_PORT("DSW3") - AM_RANGE(0xf441, 0xf441) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf480, 0xf480) AM_WRITE(bankswitch_w) - AM_RANGE(0xf4c0, 0xf4c0) AM_WRITE(coincntr_w) - AM_RANGE(0xf500, 0xf500) AM_WRITE(gfxrom_select_w) - AM_RANGE(0xf540, 0xf540) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xf5c0, 0xf5c0) AM_DEVWRITE("oki2", okim6295_device, write) -ADDRESS_MAP_END +void hexion_state::hexion_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xdffe).rw(this, FUNC(hexion_state::bankedram_r), FUNC(hexion_state::bankedram_w)); + map(0xdfff, 0xdfff).w(this, FUNC(hexion_state::bankctrl_w)); + map(0xe000, 0xe000).noprw(); + map(0xe800, 0xe87f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); + map(0xe880, 0xe889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); + map(0xe88a, 0xe88e).w("k051649", FUNC(k051649_device::k051649_volume_w)); + map(0xe88f, 0xe88f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); + map(0xe8e0, 0xe8ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xf000, 0xf00f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); + map(0xf200, 0xf200).w("oki", FUNC(okim6295_device::write)); + map(0xf400, 0xf400).portr("DSW1"); + map(0xf401, 0xf401).portr("DSW2"); + map(0xf402, 0xf402).portr("P1"); + map(0xf403, 0xf403).portr("P2"); + map(0xf440, 0xf440).portr("DSW3"); + map(0xf441, 0xf441).portr("SYSTEM"); + map(0xf480, 0xf480).w(this, FUNC(hexion_state::bankswitch_w)); + map(0xf4c0, 0xf4c0).w(this, FUNC(hexion_state::coincntr_w)); + map(0xf500, 0xf500).w(this, FUNC(hexion_state::gfxrom_select_w)); + map(0xf540, 0xf540).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void hexion_state::hexionb_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xdffe).rw(this, FUNC(hexion_state::bankedram_r), FUNC(hexion_state::bankedram_w)); + map(0xdfff, 0xdfff).w(this, FUNC(hexion_state::bankctrl_w)); + map(0xe000, 0xe000).noprw(); + map(0xe800, 0xe87f).noprw(); // all the code to use the k051649 is still present + map(0xe880, 0xe889).noprw(); // but the bootleg has an additional M6295 @ 0xf5c0 instead + map(0xe88a, 0xe88e).noprw(); + map(0xe88f, 0xe88f).noprw(); + map(0xe8e0, 0xe8ff).noprw(); + map(0xf000, 0xf00f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); + map(0xf200, 0xf200).w("oki", FUNC(okim6295_device::write)); + map(0xf400, 0xf400).portr("DSW1"); + map(0xf401, 0xf401).portr("DSW2"); + map(0xf402, 0xf402).portr("P1"); + map(0xf403, 0xf403).portr("P2"); + map(0xf440, 0xf440).portr("DSW3"); + map(0xf441, 0xf441).portr("SYSTEM"); + map(0xf480, 0xf480).w(this, FUNC(hexion_state::bankswitch_w)); + map(0xf4c0, 0xf4c0).w(this, FUNC(hexion_state::coincntr_w)); + map(0xf500, 0xf500).w(this, FUNC(hexion_state::gfxrom_select_w)); + map(0xf540, 0xf540).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xf5c0, 0xf5c0).w("oki2", FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( hexion ) PORT_START("DSW1") diff --git a/src/mame/drivers/hideseek.cpp b/src/mame/drivers/hideseek.cpp index e3b6fec4248..62794511dfd 100644 --- a/src/mame/drivers/hideseek.cpp +++ b/src/mame/drivers/hideseek.cpp @@ -63,16 +63,17 @@ uint32_t hideseek_state::screen_update_hideseek(screen_device &screen, bitmap_in return 0; } -ADDRESS_MAP_START(hideseek_state::mem_map) - AM_RANGE(0x00000000, 0x0003ffff) AM_ROM // On-chip ROM - AM_RANGE(0x00200000, 0x0023ffff) AM_RAM // CS0 - AM_RANGE(0x00400000, 0x005fffff) AM_ROM AM_REGION("prg", 0) // CS1 +void hideseek_state::mem_map(address_map &map) +{ + map(0x00000000, 0x0003ffff).rom(); // On-chip ROM + map(0x00200000, 0x0023ffff).ram(); // CS0 + map(0x00400000, 0x005fffff).rom().region("prg", 0); // CS1 // CS2 - CS3 - AM_RANGE(0x01000000, 0x01ffffff) AM_RAM // DRAM - AM_RANGE(0xffff8000, 0xffff87ff) AM_RAM // HD64F7045F28 i/os - AM_RANGE(0xfffff000, 0xffffffff) AM_RAM // on-chip RAM + map(0x01000000, 0x01ffffff).ram(); // DRAM + map(0xffff8000, 0xffff87ff).ram(); // HD64F7045F28 i/os + map(0xfffff000, 0xffffffff).ram(); // on-chip RAM // AM_RANGE(0x06000000, 0x07ffffff) AM_ROM AM_REGION("blit_data", 0) -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/higemaru.cpp b/src/mame/drivers/higemaru.cpp index c3e24da5083..790ff23fe37 100644 --- a/src/mame/drivers/higemaru.cpp +++ b/src/mame/drivers/higemaru.cpp @@ -33,21 +33,22 @@ TIMER_DEVICE_CALLBACK_MEMBER(higemaru_state::higemaru_scanline) } -ADDRESS_MAP_START(higemaru_state::higemaru_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc800, 0xc800) AM_WRITE(higemaru_c800_w) - AM_RANGE(0xc801, 0xc802) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xc803, 0xc804) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(higemaru_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(higemaru_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd880, 0xd9ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END +void higemaru_state::higemaru_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc000).portr("P1"); + map(0xc001, 0xc001).portr("P2"); + map(0xc002, 0xc002).portr("SYSTEM"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc800, 0xc800).w(this, FUNC(higemaru_state::higemaru_c800_w)); + map(0xc801, 0xc802).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xc803, 0xc804).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xd000, 0xd3ff).ram().w(this, FUNC(higemaru_state::higemaru_videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(higemaru_state::higemaru_colorram_w)).share("colorram"); + map(0xd880, 0xd9ff).ram().share("spriteram"); + map(0xe000, 0xefff).ram(); +} static INPUT_PORTS_START( higemaru ) diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp index 4dae4b7705c..a4214fc030e 100644 --- a/src/mame/drivers/highvdeo.cpp +++ b/src/mame/drivers/highvdeo.cpp @@ -325,25 +325,27 @@ WRITE16_MEMBER(highvdeo_state::write1_w) // popmessage("%04x %04x",t1,t3); } -ADDRESS_MAP_START(highvdeo_state::tv_vcf_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/ - AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x40000, 0x4ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/ - AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1") - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::tv_vcf_io) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w ) - AM_RANGE(0x0008, 0x0009) AM_READ(read0_r ) - AM_RANGE(0x000a, 0x000b) AM_READ(read1_r ) - AM_RANGE(0x000c, 0x000d) AM_READ(read2_r ) - AM_RANGE(0x0010, 0x0011) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x0012, 0x0013) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x0014, 0x0015) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x0030, 0x0031) AM_WRITE(tv_vcf_bankselect_w ) AM_READ(tv_oki6376_r ) -ADDRESS_MAP_END +void highvdeo_state::tv_vcf_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); /*irq vector area*/ + map(0x00400, 0x03fff).ram().share("nvram"); + map(0x40000, 0x4ffff).ram().share("blit_ram"); /*blitter ram*/ + map(0x80000, 0xbffff).bankr("bank1"); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void highvdeo_state::tv_vcf_io(address_map &map) +{ + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); + map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); + map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); + map(0x000c, 0x000d).r(this, FUNC(highvdeo_state::read2_r)); + map(0x0010, 0x0010).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0012, 0x0012).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x0014, 0x0014).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::tv_vcf_bankselect_w)).r(this, FUNC(highvdeo_state::tv_oki6376_r)); +} READ16_MEMBER(highvdeo_state::tv_ncf_read1_r) @@ -374,52 +376,56 @@ WRITE16_MEMBER(highvdeo_state::tv_ncf_oki6376_st_w) } } -ADDRESS_MAP_START(highvdeo_state::tv_ncf_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/ - AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x20000, 0x2ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/ - AM_RANGE(0x40000, 0xbffff) AM_ROM AM_REGION("user1",0x40000) - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::tv_ncf_io) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0008, 0x0009) AM_WRITE(tv_ncf_oki6376_w ) - AM_RANGE(0x000a, 0x000b) AM_WRITE(tv_ncf_oki6376_st_w ) - AM_RANGE(0x000c, 0x000d) AM_READ(read0_r ) - AM_RANGE(0x0010, 0x0011) AM_READ(tv_ncf_read1_r ) - AM_RANGE(0x0012, 0x0013) AM_READ(read2_r ) - AM_RANGE(0x0030, 0x0031) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x0032, 0x0033) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x0034, 0x0035) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(highvdeo_state::nyjoker_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/ - AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/ - AM_RANGE(0x40000, 0xbffff) AM_ROM AM_REGION("user1",0x40000) - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::nyjoker_io) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0002, 0x0003) AM_WRITENOP // alternate coin counter (bits 0 and 2) - AM_RANGE(0x0004, 0x0005) AM_WRITE(nyj_write2_w ) // coin and note counter +void highvdeo_state::tv_ncf_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); /*irq vector area*/ + map(0x00400, 0x03fff).ram().share("nvram"); + map(0x20000, 0x2ffff).ram().share("blit_ram"); /*blitter ram*/ + map(0x40000, 0xbffff).rom().region("user1", 0x40000); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void highvdeo_state::tv_ncf_io(address_map &map) +{ + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0008, 0x0009).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_w)); + map(0x000a, 0x000b).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_st_w)); + map(0x000c, 0x000d).r(this, FUNC(highvdeo_state::read0_r)); + map(0x0010, 0x0011).r(this, FUNC(highvdeo_state::tv_ncf_read1_r)); + map(0x0012, 0x0013).r(this, FUNC(highvdeo_state::read2_r)); + map(0x0030, 0x0030).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0032, 0x0032).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x0034, 0x0034).w("ramdac", FUNC(ramdac_device::pal_w)); +} + + +void highvdeo_state::nyjoker_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); /*irq vector area*/ + map(0x00400, 0x03fff).ram().share("nvram"); + map(0x10000, 0x1ffff).ram().share("blit_ram"); /*blitter ram*/ + map(0x40000, 0xbffff).rom().region("user1", 0x40000); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void highvdeo_state::nyjoker_io(address_map &map) +{ + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0002, 0x0003).nopw(); // alternate coin counter (bits 0 and 2) + map(0x0004, 0x0005).w(this, FUNC(highvdeo_state::nyj_write2_w)); // coin and note counter // AM_RANGE(0x0006, 0x0007) AM_WRITENOP - AM_RANGE(0x0008, 0x0009) AM_WRITE(tv_ncf_oki6376_w ) - AM_RANGE(0x000a, 0x000b) AM_WRITE(tv_ncf_oki6376_st_w ) - AM_RANGE(0x000c, 0x000d) AM_READ_PORT("IN0") - AM_RANGE(0x000e, 0x000f) AM_READ_PORT("DSW") - AM_RANGE(0x0010, 0x0011) AM_READ_PORT("IN2") - AM_RANGE(0x0012, 0x0013) AM_READ_PORT("IN3") - AM_RANGE(0x0014, 0x0015) AM_READ(tv_ncf_read1_r ) - AM_RANGE(0x0020, 0x0021) AM_WRITENOP - AM_RANGE(0x0030, 0x0031) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x0032, 0x0033) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x0034, 0x0035) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) -ADDRESS_MAP_END + map(0x0008, 0x0009).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_w)); + map(0x000a, 0x000b).w(this, FUNC(highvdeo_state::tv_ncf_oki6376_st_w)); + map(0x000c, 0x000d).portr("IN0"); + map(0x000e, 0x000f).portr("DSW"); + map(0x0010, 0x0011).portr("IN2"); + map(0x0012, 0x0013).portr("IN3"); + map(0x0014, 0x0015).r(this, FUNC(highvdeo_state::tv_ncf_read1_r)); + map(0x0020, 0x0021).nopw(); + map(0x0030, 0x0030).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0032, 0x0032).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x0034, 0x0034).w("ramdac", FUNC(ramdac_device::pal_w)); +} WRITE16_MEMBER(highvdeo_state::nyj_write2_w) @@ -447,22 +453,24 @@ WRITE16_MEMBER(highvdeo_state::tv_tcf_bankselect_w) membank("bank1")->set_base(&ROM[bankaddress]); } -ADDRESS_MAP_START(highvdeo_state::tv_tcf_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/ - AM_RANGE(0x00400, 0x03fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x40000, 0x5d4bf) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/ - AM_RANGE(0x7fe00, 0x7ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1") - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::tv_tcf_io) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w ) - AM_RANGE(0x0008, 0x0009) AM_READ(read0_r ) - AM_RANGE(0x000a, 0x000b) AM_READ(read1_r ) - AM_RANGE(0x0030, 0x0031) AM_READ(read2_r ) AM_WRITE(tv_tcf_bankselect_w ) -ADDRESS_MAP_END +void highvdeo_state::tv_tcf_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); /*irq vector area*/ + map(0x00400, 0x03fff).ram().share("nvram"); + map(0x40000, 0x5d4bf).ram().share("blit_ram"); /*blitter ram*/ + map(0x7fe00, 0x7ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x80000, 0xbffff).bankr("bank1"); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void highvdeo_state::tv_tcf_io(address_map &map) +{ + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); + map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); + map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); + map(0x0030, 0x0031).r(this, FUNC(highvdeo_state::read2_r)).w(this, FUNC(highvdeo_state::tv_tcf_bankselect_w)); +} /**************************** * @@ -504,29 +512,31 @@ WRITE16_MEMBER(highvdeo_state::write2_w) } } -ADDRESS_MAP_START(highvdeo_state::newmcard_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/ - AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x40000, 0x7ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/ - AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1") - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::newmcard_io) - AM_RANGE(0x0030, 0x0033) AM_READ(newmcard_status_r ) - AM_RANGE(0x0030, 0x0031) AM_WRITE(tv_tcf_bankselect_w ) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout - AM_RANGE(0x0004, 0x0005) AM_WRITE(newmcard_vblank_w ) - AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w ) - AM_RANGE(0x0008, 0x0009) AM_READ(read0_r ) - AM_RANGE(0x000a, 0x000b) AM_READ(read1_r ) - AM_RANGE(0x000c, 0x000d) AM_READ(newmcard_vblank_r ) - AM_RANGE(0x000e, 0x000f) AM_READ(read2_r ) - AM_RANGE(0x0010, 0x0011) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x0012, 0x0013) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x0014, 0x0015) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) -ADDRESS_MAP_END +void highvdeo_state::newmcard_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); /*irq vector area*/ + map(0x00400, 0x0ffff).ram().share("nvram"); + map(0x40000, 0x7ffff).ram().share("blit_ram"); /*blitter ram*/ + map(0x80000, 0xbffff).bankr("bank1"); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void highvdeo_state::newmcard_io(address_map &map) +{ + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::newmcard_status_r)); + map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::tv_tcf_bankselect_w)); + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout + map(0x0004, 0x0005).w(this, FUNC(highvdeo_state::newmcard_vblank_w)); + map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); + map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); + map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); + map(0x000c, 0x000d).r(this, FUNC(highvdeo_state::newmcard_vblank_r)); + map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r)); + map(0x0010, 0x0010).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0012, 0x0012).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x0014, 0x0014).w("ramdac", FUNC(ramdac_device::pal_w)); +} /**************************** * @@ -624,52 +634,56 @@ READ16_MEMBER(highvdeo_state::magicbom_status_r) } -ADDRESS_MAP_START(highvdeo_state::brasil_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM /*irq vector area*/ - AM_RANGE(0x00400, 0x0ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x40000, 0x7ffff) AM_RAM AM_SHARE("blit_ram") /*blitter ram*/ - AM_RANGE(0x80000, 0xbffff) AM_ROMBANK("bank1") - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("boot_prg",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::brasil_io) - AM_RANGE(0x0030, 0x0033) AM_READ(brasil_status_r ) - AM_RANGE(0x0030, 0x0031) AM_WRITE(brasil_status_w ) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout - AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w ) - AM_RANGE(0x0008, 0x0009) AM_READ(read0_r ) - AM_RANGE(0x000a, 0x000b) AM_READ(read1_r ) - AM_RANGE(0x000e, 0x000f) AM_READ(read2_r ) +void highvdeo_state::brasil_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); /*irq vector area*/ + map(0x00400, 0x0ffff).ram().share("nvram"); + map(0x40000, 0x7ffff).ram().share("blit_ram"); /*blitter ram*/ + map(0x80000, 0xbffff).bankr("bank1"); + map(0xc0000, 0xfffff).rom().region("boot_prg", 0); +} + +void highvdeo_state::brasil_io(address_map &map) +{ + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::brasil_status_r)); + map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::brasil_status_w)); + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout + map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); + map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); + map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); + map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r)); // AM_RANGE(0x000e, 0x000f) AM_WRITE // AM_RANGE(0xffa2, 0xffa3) AM_WRITE -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::grancapi_io) - AM_RANGE(0x0030, 0x0033) AM_READ(grancapi_status_r ) - AM_RANGE(0x000e, 0x000f) AM_WRITE(grancapi_status_w ) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout - AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w ) - AM_RANGE(0x0008, 0x0009) AM_READ(read0_r ) - AM_RANGE(0x000a, 0x000b) AM_READ(read1_r ) - AM_RANGE(0x000e, 0x000f) AM_READ(read2_r ) +} + +void highvdeo_state::grancapi_io(address_map &map) +{ + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::grancapi_status_r)); + map(0x000e, 0x000f).w(this, FUNC(highvdeo_state::grancapi_status_w)); + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout + map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); + map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); + map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); + map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r)); // AM_RANGE(0x000e, 0x000f) AM_WRITE // AM_RANGE(0xffa2, 0xffa3) AM_WRITE -ADDRESS_MAP_END - -ADDRESS_MAP_START(highvdeo_state::magicbom_io) - AM_RANGE(0x0030, 0x0033) AM_READ(magicbom_status_r ) - AM_RANGE(0x000e, 0x000f) AM_WRITE(grancapi_status_w ) - AM_RANGE(0x0000, 0x0001) AM_WRITE(write1_w ) // lamps - AM_RANGE(0x0002, 0x0003) AM_WRITE(write2_w ) // coin counter & coin lockout - AM_RANGE(0x0006, 0x0007) AM_WRITE(tv_oki6376_w ) - AM_RANGE(0x0008, 0x0009) AM_READ(read0_r ) - AM_RANGE(0x000a, 0x000b) AM_READ(read1_r ) - AM_RANGE(0x000e, 0x000f) AM_READ(read2_r ) +} + +void highvdeo_state::magicbom_io(address_map &map) +{ + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::magicbom_status_r)); + map(0x000e, 0x000f).w(this, FUNC(highvdeo_state::grancapi_status_w)); + map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps + map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout + map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); + map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); + map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); + map(0x000e, 0x000f).r(this, FUNC(highvdeo_state::read2_r)); // AM_RANGE(0x000e, 0x000f) AM_WRITE // AM_RANGE(0xffa2, 0xffa3) AM_WRITE -ADDRESS_MAP_END +} static INPUT_PORTS_START( tv_vcf ) @@ -1143,9 +1157,10 @@ INTERRUPT_GEN_MEMBER(highvdeo_state::vblank_irq_80186) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(highvdeo_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void highvdeo_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(highvdeo_state::tv_vcf) diff --git a/src/mame/drivers/hikaru.cpp b/src/mame/drivers/hikaru.cpp index a934abdafc7..e4631a199b6 100644 --- a/src/mame/drivers/hikaru.cpp +++ b/src/mame/drivers/hikaru.cpp @@ -445,43 +445,45 @@ INPUT_PORTS_END */ -ADDRESS_MAP_START(hikaru_state::hikaru_map) +void hikaru_state::hikaru_map(address_map &map) +{ // Area 0 - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_SHARE("share1") // boot ROM - AM_RANGE(0x00400000, 0x00400007) AM_NOP // unknown - AM_RANGE(0x00800000, 0x0083ffff) AM_NOP // MIE + Service/Test switches and more - AM_RANGE(0x00c00000, 0x00c0ffff) AM_RAM // backup RAM - AM_RANGE(0x01000000, 0x01000007) AM_NOP // unknown - AM_RANGE(0x01000100, 0x01000107) AM_NOP // unknown - AM_RANGE(0x02000000, 0x02ffffff) AM_NOP // banked area (ROMBD + AICA + COMM + other devices) - AM_RANGE(0x03000000, 0x03ffffff) AM_NOP // banked area (ROMBD + EEPROM + COMM + other devices) + map(0x00000000, 0x001fffff).rom().share("share1"); // boot ROM + map(0x00400000, 0x00400007).noprw(); // unknown + map(0x00800000, 0x0083ffff).noprw(); // MIE + Service/Test switches and more + map(0x00c00000, 0x00c0ffff).ram(); // backup RAM + map(0x01000000, 0x01000007).noprw(); // unknown + map(0x01000100, 0x01000107).noprw(); // unknown + map(0x02000000, 0x02ffffff).noprw(); // banked area (ROMBD + AICA + COMM + other devices) + map(0x03000000, 0x03ffffff).noprw(); // banked area (ROMBD + EEPROM + COMM + other devices) // Area 1 - AM_RANGE(0x04000000, 0x0400003f) AM_NOP // memory controller (Master) + map(0x04000000, 0x0400003f).noprw(); // memory controller (Master) // Area 3 - AM_RANGE(0x0c000000, 0x0dffffff) AM_RAM // main Work RAM + map(0x0c000000, 0x0dffffff).ram(); // main Work RAM // Area 5 - AM_RANGE(0x14000000, 0x140000ff) AM_NOP // Master/Slave COMM - AM_RANGE(0x14000100, 0x143fffff) AM_RAM // GPU command RAM - AM_RANGE(0x15000000, 0x150000ff) AM_NOP // GPU Regs - AM_RANGE(0x16010000, 0x17ffffff) AM_RAM // Slave Work RAM - AM_RANGE(0x16001000, 0x163fffff) AM_RAM // ? \ these two overlap [selected by 040000xx = 0x04,0x06,0x40] + map(0x14000000, 0x140000ff).noprw(); // Master/Slave COMM + map(0x14000100, 0x143fffff).ram(); // GPU command RAM + map(0x15000000, 0x150000ff).noprw(); // GPU Regs + map(0x16010000, 0x17ffffff).ram(); // Slave Work RAM + map(0x16001000, 0x163fffff).ram(); // ? \ these two overlap [selected by 040000xx = 0x04,0x06,0x40] // Area 6 - AM_RANGE(0x18001000, 0x1800101f) AM_NOP // unknown - AM_RANGE(0x1a000000, 0x1a000107) AM_NOP // GPU Regs - AM_RANGE(0x1a000180, 0x1a0001bf) AM_NOP // GPU Texture Regs A - AM_RANGE(0x1a000200, 0x1a00023f) AM_NOP // GPU Texture Regs B - AM_RANGE(0x1a040000, 0x1a04000f) AM_NOP // GPU Texture FIFO (?) - AM_RANGE(0x1b000000, 0x1b7fffff) AM_NOP // GPU Texture RAM and framebuffer (a 2048x2048x16-bit sheet?) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hikaru_state::hikaru_map_slave) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x001FFFFF) AM_ROM AM_SHARE("share1") - AM_RANGE(0x0C000000, 0x0DFFFFFF) AM_RAM - AM_RANGE(0x10000000, 0x100000FF) AM_RAM - AM_RANGE(0x1A800000, 0x1A8000FF) AM_RAM - AM_RANGE(0x1B000000, 0x1B0001FF) AM_RAM -ADDRESS_MAP_END + map(0x18001000, 0x1800101f).noprw(); // unknown + map(0x1a000000, 0x1a000107).noprw(); // GPU Regs + map(0x1a000180, 0x1a0001bf).noprw(); // GPU Texture Regs A + map(0x1a000200, 0x1a00023f).noprw(); // GPU Texture Regs B + map(0x1a040000, 0x1a04000f).noprw(); // GPU Texture FIFO (?) + map(0x1b000000, 0x1b7fffff).noprw(); // GPU Texture RAM and framebuffer (a 2048x2048x16-bit sheet?) +} + +void hikaru_state::hikaru_map_slave(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x001FFFFF).rom().share("share1"); + map(0x0C000000, 0x0DFFFFFF).ram(); + map(0x10000000, 0x100000FF).ram(); + map(0x1A800000, 0x1A8000FF).ram(); + map(0x1B000000, 0x1B0001FF).ram(); +} MACHINE_CONFIG_START(hikaru_state::hikaru) diff --git a/src/mame/drivers/himesiki.cpp b/src/mame/drivers/himesiki.cpp index f8a9521ab13..53cceda8675 100644 --- a/src/mame/drivers/himesiki.cpp +++ b/src/mame/drivers/himesiki.cpp @@ -123,38 +123,42 @@ WRITE8_MEMBER(himesiki_state::himesiki_sound_w) /****************************************************************************/ -ADDRESS_MAP_START(himesiki_state::himesiki_prm0) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa100, 0xa7ff) AM_RAM AM_SHARE("sprram_p103a") // not on Android - AM_RANGE(0xa800, 0xafff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xb000, 0xbfff) AM_RAM_WRITE(himesiki_bg_ram_w) AM_SHARE("bg_ram") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(himesiki_state::himesiki_iom0) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) // inputs - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) // dips + rombank - AM_RANGE(0x08, 0x08) AM_WRITE(himesiki_scrolly_w) - AM_RANGE(0x09, 0x0a) AM_WRITE(himesiki_scrollx_w) - AM_RANGE(0x0b, 0x0b) AM_WRITE(himesiki_sound_w) -ADDRESS_MAP_END - - - - -ADDRESS_MAP_START(himesiki_state::himesiki_prm1) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(himesiki_state::himesiki_iom1) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void himesiki_state::himesiki_prm0(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa0ff).ram().share("spriteram"); + map(0xa100, 0xa7ff).ram().share("sprram_p103a"); // not on Android + map(0xa800, 0xafff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xb000, 0xbfff).ram().w(this, FUNC(himesiki_state::himesiki_bg_ram_w)).share("bg_ram"); + map(0xc000, 0xffff).bankr("bank1"); +} + +void himesiki_state::himesiki_iom0(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // inputs + map(0x04, 0x07).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // dips + rombank + map(0x08, 0x08).w(this, FUNC(himesiki_state::himesiki_scrolly_w)); + map(0x09, 0x0a).w(this, FUNC(himesiki_state::himesiki_scrollx_w)); + map(0x0b, 0x0b).w(this, FUNC(himesiki_state::himesiki_sound_w)); +} + + + + +void himesiki_state::himesiki_prm1(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf800, 0xffff).ram(); +} + +void himesiki_state::himesiki_iom1(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /****************************************************************************/ diff --git a/src/mame/drivers/hitme.cpp b/src/mame/drivers/hitme.cpp index fc127657b3e..590095d4213 100644 --- a/src/mame/drivers/hitme.cpp +++ b/src/mame/drivers/hitme.cpp @@ -220,32 +220,34 @@ WRITE8_MEMBER(hitme_state::output_port_1_w) upper 8 bits. */ -ADDRESS_MAP_START(hitme_state::hitme_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x09ff) AM_ROM - AM_RANGE(0x0c00, 0x0eff) AM_RAM_WRITE(hitme_vidram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x300) AM_RAM - AM_RANGE(0x1400, 0x14ff) AM_READ(hitme_port_0_r) - AM_RANGE(0x1500, 0x15ff) AM_READ(hitme_port_1_r) - AM_RANGE(0x1600, 0x16ff) AM_READ(hitme_port_2_r) - AM_RANGE(0x1700, 0x17ff) AM_READ(hitme_port_3_r) - AM_RANGE(0x1800, 0x18ff) AM_READ_PORT("IN4") - AM_RANGE(0x1900, 0x19ff) AM_READ_PORT("IN5") - AM_RANGE(0x1d00, 0x1dff) AM_WRITE(output_port_0_w) - AM_RANGE(0x1e00, 0x1fff) AM_WRITE(output_port_1_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(hitme_state::hitme_portmap) - AM_RANGE(0x14, 0x14) AM_READ(hitme_port_0_r) - AM_RANGE(0x15, 0x15) AM_READ(hitme_port_1_r) - AM_RANGE(0x16, 0x16) AM_READ(hitme_port_2_r) - AM_RANGE(0x17, 0x17) AM_READ(hitme_port_3_r) - AM_RANGE(0x18, 0x18) AM_READ_PORT("IN4") - AM_RANGE(0x19, 0x19) AM_READ_PORT("IN5") - AM_RANGE(0x1d, 0x1d) AM_WRITE(output_port_0_w) - AM_RANGE(0x1e, 0x1f) AM_WRITE(output_port_1_w) -ADDRESS_MAP_END +void hitme_state::hitme_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x09ff).rom(); + map(0x0c00, 0x0eff).ram().w(this, FUNC(hitme_state::hitme_vidram_w)).share("videoram"); + map(0x1000, 0x10ff).mirror(0x300).ram(); + map(0x1400, 0x14ff).r(this, FUNC(hitme_state::hitme_port_0_r)); + map(0x1500, 0x15ff).r(this, FUNC(hitme_state::hitme_port_1_r)); + map(0x1600, 0x16ff).r(this, FUNC(hitme_state::hitme_port_2_r)); + map(0x1700, 0x17ff).r(this, FUNC(hitme_state::hitme_port_3_r)); + map(0x1800, 0x18ff).portr("IN4"); + map(0x1900, 0x19ff).portr("IN5"); + map(0x1d00, 0x1dff).w(this, FUNC(hitme_state::output_port_0_w)); + map(0x1e00, 0x1fff).w(this, FUNC(hitme_state::output_port_1_w)); +} + + +void hitme_state::hitme_portmap(address_map &map) +{ + map(0x14, 0x14).r(this, FUNC(hitme_state::hitme_port_0_r)); + map(0x15, 0x15).r(this, FUNC(hitme_state::hitme_port_1_r)); + map(0x16, 0x16).r(this, FUNC(hitme_state::hitme_port_2_r)); + map(0x17, 0x17).r(this, FUNC(hitme_state::hitme_port_3_r)); + map(0x18, 0x18).portr("IN4"); + map(0x19, 0x19).portr("IN5"); + map(0x1d, 0x1d).w(this, FUNC(hitme_state::output_port_0_w)); + map(0x1e, 0x1f).w(this, FUNC(hitme_state::output_port_1_w)); +} diff --git a/src/mame/drivers/hitpoker.cpp b/src/mame/drivers/hitpoker.cpp index 2e10fe90e2d..cff0777a6bd 100644 --- a/src/mame/drivers/hitpoker.cpp +++ b/src/mame/drivers/hitpoker.cpp @@ -257,32 +257,34 @@ READ8_MEMBER(hitpoker_state::test_r) #endif /* overlap empty rom addresses */ -ADDRESS_MAP_START(hitpoker_state::hitpoker_map) - AM_RANGE(0x0000, 0xbdff) AM_ROM - AM_RANGE(0xbf00, 0xffff) AM_ROM - - AM_RANGE(0x0000, 0x00ff) AM_RAM // stack ram - AM_RANGE(0x1000, 0x103f) AM_RAM // internal I/O - AM_RANGE(0x8000, 0xb5ff) AM_READWRITE(hitpoker_vram_r,hitpoker_vram_w) - AM_RANGE(0xb600, 0xbdff) AM_RAM - AM_RANGE(0xbe0a, 0xbe0a) AM_READ_PORT("IN0") - AM_RANGE(0xbe0c, 0xbe0c) AM_READ_PORT("IN2") //irq ack? - AM_RANGE(0xbe0d, 0xbe0d) AM_READ(rtc_r) - AM_RANGE(0xbe0e, 0xbe0e) AM_READ_PORT("IN1") - AM_RANGE(0xbe50, 0xbe51) AM_WRITE(eeprom_offset_w) - AM_RANGE(0xbe53, 0xbe53) AM_READWRITE(eeprom_r, eeprom_w) - AM_RANGE(0xbe80, 0xbe80) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xbe81, 0xbe81) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_data_w) - AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well +void hitpoker_state::hitpoker_map(address_map &map) +{ + map(0x0000, 0xbdff).rom(); + map(0xbf00, 0xffff).rom(); + + map(0x0000, 0x00ff).ram(); // stack ram + map(0x1000, 0x103f).ram(); // internal I/O + map(0x8000, 0xb5ff).rw(this, FUNC(hitpoker_state::hitpoker_vram_r), FUNC(hitpoker_state::hitpoker_vram_w)); + map(0xb600, 0xbdff).ram(); + map(0xbe0a, 0xbe0a).portr("IN0"); + map(0xbe0c, 0xbe0c).portr("IN2"); //irq ack? + map(0xbe0d, 0xbe0d).r(this, FUNC(hitpoker_state::rtc_r)); + map(0xbe0e, 0xbe0e).portr("IN1"); + map(0xbe50, 0xbe51).w(this, FUNC(hitpoker_state::eeprom_offset_w)); + map(0xbe53, 0xbe53).rw(this, FUNC(hitpoker_state::eeprom_r), FUNC(hitpoker_state::eeprom_w)); + map(0xbe80, 0xbe80).w("crtc", FUNC(mc6845_device::address_w)); + map(0xbe81, 0xbe81).w("crtc", FUNC(mc6845_device::register_w)); + map(0xbe90, 0xbe91).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0xbea0, 0xbea0).portr("VBLANK"); //probably other bits as well // AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r) - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(hitpoker_cram_r,hitpoker_cram_w) - AM_RANGE(0xe000, 0xefff) AM_READWRITE(hitpoker_paletteram_r,hitpoker_paletteram_w) -ADDRESS_MAP_END + map(0xc000, 0xdfff).rw(this, FUNC(hitpoker_state::hitpoker_cram_r), FUNC(hitpoker_state::hitpoker_cram_w)); + map(0xe000, 0xefff).rw(this, FUNC(hitpoker_state::hitpoker_paletteram_r), FUNC(hitpoker_state::hitpoker_paletteram_w)); +} -ADDRESS_MAP_START(hitpoker_state::hitpoker_io) - AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE(hitpoker_pic_r,hitpoker_pic_w) AM_SHARE("sys_regs") -ADDRESS_MAP_END +void hitpoker_state::hitpoker_io(address_map &map) +{ + map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).rw(this, FUNC(hitpoker_state::hitpoker_pic_r), FUNC(hitpoker_state::hitpoker_pic_w)).share("sys_regs"); +} static INPUT_PORTS_START( hitpoker ) PORT_START("VBLANK") diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp index 019a8a866a7..20412157a61 100644 --- a/src/mame/drivers/hk68v10.cpp +++ b/src/mame/drivers/hk68v10.cpp @@ -222,21 +222,22 @@ required_device<scc8530_device> m_sccterm; uint16_t m_sysram[4]; }; -ADDRESS_MAP_START(hk68v10_state::hk68v10_mem) -ADDRESS_MAP_UNMAP_HIGH -AM_RANGE (0x000000, 0x000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */ -AM_RANGE (0x000000, 0x000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just durin reset */ -AM_RANGE (0x000008, 0x1fffff) AM_RAM /* 2 Mb RAM */ -AM_RANGE (0xFC0000, 0xFC3fff) AM_ROM /* System EPROM Area 16Kb HBUG */ -AM_RANGE (0xFC4000, 0xFDffff) AM_ROM /* System EPROM Area an additional 112Kb for System ROM */ -AM_RANGE (0xFE9000, 0xFE9007) AM_DEVREADWRITE8("cio", z8536_device, read, write, 0xff00) -AM_RANGE (0xFEA000, 0xFEA001) AM_DEVREADWRITE8("scc", scc8530_device, ca_r, ca_w, 0xff00) /* Dual serial port Z80-SCC */ -AM_RANGE (0xFEA002, 0xFEA003) AM_DEVREADWRITE8("scc", scc8530_device, cb_r, cb_w, 0xff00) /* Dual serial port Z80-SCC */ -AM_RANGE (0xFEA004, 0xFEA005) AM_DEVREADWRITE8("scc", scc8530_device, da_r, da_w, 0xff00) /* Dual serial port Z80-SCC */ -AM_RANGE (0xFEA006, 0xFEA007) AM_DEVREADWRITE8("scc", scc8530_device, db_r, db_w, 0xff00) /* Dual serial port Z80-SCC */ +void hk68v10_state::hk68v10_mem(address_map &map) +{ +map.unmap_value_high(); +map(0x000000, 0x000007).ram().w(this, FUNC(hk68v10_state::bootvect_w)); /* After first write we act as RAM */ +map(0x000000, 0x000007).rom().r(this, FUNC(hk68v10_state::bootvect_r)); /* ROM mirror just durin reset */ +map(0x000008, 0x1fffff).ram(); /* 2 Mb RAM */ +map(0xFC0000, 0xFC3fff).rom(); /* System EPROM Area 16Kb HBUG */ +map(0xFC4000, 0xFDffff).rom(); /* System EPROM Area an additional 112Kb for System ROM */ +map(0xFE9000, 0xFE9007).rw("cio", FUNC(z8536_device::read), FUNC(z8536_device::write)).umask16(0xff00); +map(0xfea000, 0xfea000).rw(m_sccterm, FUNC(scc8530_device::ca_r), FUNC(scc8530_device::ca_w)); /* Dual serial port Z80-SCC */ +map(0xfea002, 0xfea002).rw(m_sccterm, FUNC(scc8530_device::cb_r), FUNC(scc8530_device::cb_w)); /* Dual serial port Z80-SCC */ +map(0xfea004, 0xfea004).rw(m_sccterm, FUNC(scc8530_device::da_r), FUNC(scc8530_device::da_w)); /* Dual serial port Z80-SCC */ +map(0xfea006, 0xfea006).rw(m_sccterm, FUNC(scc8530_device::db_r), FUNC(scc8530_device::db_w)); /* Dual serial port Z80-SCC */ //AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */ //AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START (hk68v10) diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp index 80ed2483ecf..193cdcf2405 100644 --- a/src/mame/drivers/hnayayoi.cpp +++ b/src/mame/drivers/hnayayoi.cpp @@ -106,77 +106,82 @@ WRITE_LINE_MEMBER(hnayayoi_state::nmi_clock_w) } -ADDRESS_MAP_START(hnayayoi_state::hnayayoi_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hnayayoi_state::hnayayoi_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0x02, 0x03) AM_DEVREAD("ymsnd", ym2203_device, read) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW3") - AM_RANGE(0x06, 0x06) AM_WRITE(adpcm_data_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("crtc", hd6845_device, address_w) - AM_RANGE(0x09, 0x09) AM_DEVWRITE("crtc", hd6845_device, register_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(dynax_blitter_rev1_start_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(dynax_blitter_rev1_clear_w) - AM_RANGE(0x20, 0x27) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x40, 0x40) AM_WRITE(keyboard_w) - AM_RANGE(0x41, 0x41) AM_READ(keyboard_0_r) - AM_RANGE(0x42, 0x42) AM_READ(keyboard_1_r) - AM_RANGE(0x43, 0x43) AM_READ_PORT("COIN") - AM_RANGE(0x60, 0x61) AM_WRITE(hnayayoi_palbank_w) - AM_RANGE(0x62, 0x67) AM_WRITE(dynax_blitter_rev1_param_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hnayayoi_state::hnfubuki_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0xfeff) AM_ROM - AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0xff02, 0xff03) AM_DEVREAD("ymsnd", ym2203_device, read) - AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW3") - AM_RANGE(0xff06, 0xff06) AM_WRITE(adpcm_data_w) - AM_RANGE(0xff08, 0xff08) AM_DEVWRITE("crtc", hd6845_device, address_w) - AM_RANGE(0xff09, 0xff09) AM_DEVWRITE("crtc", hd6845_device, register_w) - AM_RANGE(0xff0a, 0xff0a) AM_WRITE(dynax_blitter_rev1_start_w) - AM_RANGE(0xff0c, 0xff0c) AM_WRITE(dynax_blitter_rev1_clear_w) - AM_RANGE(0xff20, 0xff27) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xff40, 0xff40) AM_WRITE(keyboard_w) - AM_RANGE(0xff41, 0xff41) AM_READ(keyboard_0_r) - AM_RANGE(0xff42, 0xff42) AM_READ(keyboard_1_r) - AM_RANGE(0xff43, 0xff43) AM_READ_PORT("COIN") - AM_RANGE(0xff60, 0xff61) AM_WRITE(hnayayoi_palbank_w) - AM_RANGE(0xff62, 0xff67) AM_WRITE(dynax_blitter_rev1_param_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hnayayoi_state::untoucha_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hnayayoi_state::untoucha_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("ymsnd", ym2203_device, control_port_w) - AM_RANGE(0x11, 0x11) AM_DEVREAD("ymsnd", ym2203_device, status_port_r) - AM_RANGE(0x12, 0x12) AM_DEVWRITE("crtc", hd6845_device, address_w) - AM_RANGE(0x13, 0x13) AM_WRITE(adpcm_data_w) - AM_RANGE(0x14, 0x14) AM_READ_PORT("COIN") - AM_RANGE(0x15, 0x15) AM_READ(keyboard_1_r) - AM_RANGE(0x16, 0x16) AM_READ(keyboard_0_r) // bit 7 = blitter busy flag - AM_RANGE(0x17, 0x17) AM_WRITE(keyboard_w) - AM_RANGE(0x18, 0x19) AM_WRITE(hnayayoi_palbank_w) - AM_RANGE(0x1a, 0x1f) AM_WRITE(dynax_blitter_rev1_param_w) - AM_RANGE(0x20, 0x20) AM_WRITE(dynax_blitter_rev1_clear_w) - AM_RANGE(0x28, 0x28) AM_WRITE(dynax_blitter_rev1_start_w) - AM_RANGE(0x30, 0x37) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x50, 0x50) AM_DEVWRITE("ymsnd", ym2203_device, write_port_w) - AM_RANGE(0x51, 0x51) AM_DEVREAD("ymsnd", ym2203_device, read_port_r) - AM_RANGE(0x52, 0x52) AM_DEVWRITE("crtc", hd6845_device, register_w) -ADDRESS_MAP_END +void hnayayoi_state::hnayayoi_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).rom(); +} + +void hnayayoi_state::hnayayoi_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ymsnd", FUNC(ym2203_device::write)); + map(0x02, 0x03).r("ymsnd", FUNC(ym2203_device::read)); + map(0x04, 0x04).portr("DSW3"); + map(0x06, 0x06).w(this, FUNC(hnayayoi_state::adpcm_data_w)); + map(0x08, 0x08).w("crtc", FUNC(hd6845_device::address_w)); + map(0x09, 0x09).w("crtc", FUNC(hd6845_device::register_w)); + map(0x0a, 0x0a).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_start_w)); + map(0x0c, 0x0c).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_clear_w)); + map(0x20, 0x27).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x40, 0x40).w(this, FUNC(hnayayoi_state::keyboard_w)); + map(0x41, 0x41).r(this, FUNC(hnayayoi_state::keyboard_0_r)); + map(0x42, 0x42).r(this, FUNC(hnayayoi_state::keyboard_1_r)); + map(0x43, 0x43).portr("COIN"); + map(0x60, 0x61).w(this, FUNC(hnayayoi_state::hnayayoi_palbank_w)); + map(0x62, 0x67).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_param_w)); +} + +void hnayayoi_state::hnfubuki_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram().share("nvram"); + map(0x8000, 0xfeff).rom(); + map(0xff00, 0xff01).w("ymsnd", FUNC(ym2203_device::write)); + map(0xff02, 0xff03).r("ymsnd", FUNC(ym2203_device::read)); + map(0xff04, 0xff04).portr("DSW3"); + map(0xff06, 0xff06).w(this, FUNC(hnayayoi_state::adpcm_data_w)); + map(0xff08, 0xff08).w("crtc", FUNC(hd6845_device::address_w)); + map(0xff09, 0xff09).w("crtc", FUNC(hd6845_device::register_w)); + map(0xff0a, 0xff0a).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_start_w)); + map(0xff0c, 0xff0c).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_clear_w)); + map(0xff20, 0xff27).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xff40, 0xff40).w(this, FUNC(hnayayoi_state::keyboard_w)); + map(0xff41, 0xff41).r(this, FUNC(hnayayoi_state::keyboard_0_r)); + map(0xff42, 0xff42).r(this, FUNC(hnayayoi_state::keyboard_1_r)); + map(0xff43, 0xff43).portr("COIN"); + map(0xff60, 0xff61).w(this, FUNC(hnayayoi_state::hnayayoi_palbank_w)); + map(0xff62, 0xff67).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_param_w)); +} + +void hnayayoi_state::untoucha_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).rom(); +} + +void hnayayoi_state::untoucha_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w("ymsnd", FUNC(ym2203_device::control_port_w)); + map(0x11, 0x11).r("ymsnd", FUNC(ym2203_device::status_port_r)); + map(0x12, 0x12).w("crtc", FUNC(hd6845_device::address_w)); + map(0x13, 0x13).w(this, FUNC(hnayayoi_state::adpcm_data_w)); + map(0x14, 0x14).portr("COIN"); + map(0x15, 0x15).r(this, FUNC(hnayayoi_state::keyboard_1_r)); + map(0x16, 0x16).r(this, FUNC(hnayayoi_state::keyboard_0_r)); // bit 7 = blitter busy flag + map(0x17, 0x17).w(this, FUNC(hnayayoi_state::keyboard_w)); + map(0x18, 0x19).w(this, FUNC(hnayayoi_state::hnayayoi_palbank_w)); + map(0x1a, 0x1f).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_param_w)); + map(0x20, 0x20).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_clear_w)); + map(0x28, 0x28).w(this, FUNC(hnayayoi_state::dynax_blitter_rev1_start_w)); + map(0x30, 0x37).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x50, 0x50).w("ymsnd", FUNC(ym2203_device::write_port_w)); + map(0x51, 0x51).r("ymsnd", FUNC(ym2203_device::read_port_r)); + map(0x52, 0x52).w("crtc", FUNC(hd6845_device::register_w)); +} static INPUT_PORTS_START( hf_keyboard ) PORT_START("KEY0") diff --git a/src/mame/drivers/hng64.cpp b/src/mame/drivers/hng64.cpp index a8c90b7edb0..5f6c7b4ad7c 100644 --- a/src/mame/drivers/hng64.cpp +++ b/src/mame/drivers/hng64.cpp @@ -947,53 +947,54 @@ WRITE16_MEMBER(hng64_state::main_sound_comms_w) } -ADDRESS_MAP_START(hng64_state::hng_map) +void hng64_state::hng_map(address_map &map) +{ - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x04000000, 0x05ffffff) AM_WRITENOP AM_ROM AM_REGION("gameprg", 0) AM_SHARE("cart") + map(0x00000000, 0x00ffffff).ram().share("mainram"); + map(0x04000000, 0x05ffffff).nopw().rom().region("gameprg", 0).share("cart"); // Ports - AM_RANGE(0x1f700000, 0x1f702fff) AM_READWRITE(hng64_sysregs_r, hng64_sysregs_w) AM_SHARE("sysregs") + map(0x1f700000, 0x1f702fff).rw(this, FUNC(hng64_state::hng64_sysregs_r), FUNC(hng64_state::hng64_sysregs_w)).share("sysregs"); // SRAM. Coin data, Player Statistics, etc. - AM_RANGE(0x1F800000, 0x1F803fff) AM_RAM AM_SHARE("nvram") + map(0x1F800000, 0x1F803fff).ram().share("nvram"); // Dualport RAM - AM_RANGE(0x1F808000, 0x1F8087ff) AM_READWRITE(hng64_dualport_r, hng64_dualport_w) AM_SHARE("dualport") + map(0x1F808000, 0x1F8087ff).rw(this, FUNC(hng64_state::hng64_dualport_r), FUNC(hng64_state::hng64_dualport_w)).share("dualport"); // BIOS - AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase") + map(0x1fc00000, 0x1fc7ffff).nopw().rom().region("user1", 0).share("rombase"); // Video - AM_RANGE(0x20000000, 0x2000bfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000d800, 0x2000e3ff) AM_WRITE(hng64_sprite_clear_even_w) - AM_RANGE(0x2000e400, 0x2000efff) AM_WRITE(hng64_sprite_clear_odd_w) - AM_RANGE(0x20010000, 0x20010013) AM_RAM AM_SHARE("spriteregs") - AM_RANGE(0x20100000, 0x2017ffff) AM_RAM_WRITE(hng64_videoram_w) AM_SHARE("videoram") // Tilemap - AM_RANGE(0x20190000, 0x20190037) AM_RAM_WRITE(hng64_vregs_w) AM_SHARE("videoregs") - AM_RANGE(0x20200000, 0x20203fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control - AM_RANGE(0x20300000, 0x203001ff) AM_WRITE16(dl_w,0xffffffff) // 3d Display List - AM_RANGE(0x20300200, 0x20300203) AM_WRITE(dl_upload_w) // 3d Display List Upload - AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w) - AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r) + map(0x20000000, 0x2000bfff).ram().share("spriteram"); + map(0x2000d800, 0x2000e3ff).w(this, FUNC(hng64_state::hng64_sprite_clear_even_w)); + map(0x2000e400, 0x2000efff).w(this, FUNC(hng64_state::hng64_sprite_clear_odd_w)); + map(0x20010000, 0x20010013).ram().share("spriteregs"); + map(0x20100000, 0x2017ffff).ram().w(this, FUNC(hng64_state::hng64_videoram_w)).share("videoram"); // Tilemap + map(0x20190000, 0x20190037).ram().w(this, FUNC(hng64_state::hng64_vregs_w)).share("videoregs"); + map(0x20200000, 0x20203fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x20208000, 0x2020805f).rw(this, FUNC(hng64_state::tcram_r), FUNC(hng64_state::tcram_w)).share("tcram"); // Transition Control + map(0x20300000, 0x203001ff).w(this, FUNC(hng64_state::dl_w)); // 3d Display List + map(0x20300200, 0x20300203).w(this, FUNC(hng64_state::dl_upload_w)); // 3d Display List Upload + map(0x20300214, 0x20300217).w(this, FUNC(hng64_state::dl_control_w)); + map(0x20300218, 0x2030021b).r(this, FUNC(hng64_state::unk_vreg_r)); // 3d? - AM_RANGE(0x30000000, 0x3000002f) AM_RAM AM_SHARE("3dregs") - AM_RANGE(0x30100000, 0x3015ffff) AM_READWRITE(hng64_3d_1_r, hng64_3d_1_w) AM_SHARE("3d_1") // 3D Display Buffer A - AM_RANGE(0x30200000, 0x3025ffff) AM_READWRITE(hng64_3d_2_r, hng64_3d_2_w) AM_SHARE("3d_2") // 3D Display Buffer B + map(0x30000000, 0x3000002f).ram().share("3dregs"); + map(0x30100000, 0x3015ffff).rw(this, FUNC(hng64_state::hng64_3d_1_r), FUNC(hng64_state::hng64_3d_1_w)).share("3d_1"); // 3D Display Buffer A + map(0x30200000, 0x3025ffff).rw(this, FUNC(hng64_state::hng64_3d_2_r), FUNC(hng64_state::hng64_3d_2_w)).share("3d_2"); // 3D Display Buffer B // Sound - AM_RANGE(0x60000000, 0x601fffff) AM_READWRITE(hng64_soundram2_r, hng64_soundram2_w) // actually seems unmapped, see note in audio/hng64.c - AM_RANGE(0x60200000, 0x603fffff) AM_READWRITE(hng64_soundram_r, hng64_soundram_w) // program + data for V53A gets uploaded here + map(0x60000000, 0x601fffff).rw(this, FUNC(hng64_state::hng64_soundram2_r), FUNC(hng64_state::hng64_soundram2_w)); // actually seems unmapped, see note in audio/hng64.c + map(0x60200000, 0x603fffff).rw(this, FUNC(hng64_state::hng64_soundram_r), FUNC(hng64_state::hng64_soundram_w)); // program + data for V53A gets uploaded here // These are sound ports of some sort - AM_RANGE(0x68000000, 0x6800000f) AM_READWRITE16(main_sound_comms_r,main_sound_comms_w,0xffffffff) - AM_RANGE(0x6f000000, 0x6f000003) AM_WRITE(hng64_soundcpu_enable_w) + map(0x68000000, 0x6800000f).rw(this, FUNC(hng64_state::main_sound_comms_r), FUNC(hng64_state::main_sound_comms_w)); + map(0x6f000000, 0x6f000003).w(this, FUNC(hng64_state::hng64_soundcpu_enable_w)); // Communications - AM_RANGE(0xc0000000, 0xc0000fff) AM_READWRITE(hng64_com_r, hng64_com_w) AM_SHARE("com_ram") - AM_RANGE(0xc0001000, 0xc0001007) AM_READWRITE8(hng64_com_share_mips_r, hng64_com_share_mips_w,0xffffffff) + map(0xc0000000, 0xc0000fff).rw(this, FUNC(hng64_state::hng64_com_r), FUNC(hng64_state::hng64_com_w)).share("com_ram"); + map(0xc0001000, 0xc0001007).rw(this, FUNC(hng64_state::hng64_com_share_mips_r), FUNC(hng64_state::hng64_com_share_mips_w)); /* 6e000000-6fffffff */ /* 80000000-81ffffff */ @@ -1001,7 +1002,7 @@ ADDRESS_MAP_START(hng64_state::hng_map) /* 90000000-97ffffff */ /* 98000000-9bffffff */ /* a0000000-a3ffffff */ -ADDRESS_MAP_END +} static INPUT_PORTS_START( hng64 ) diff --git a/src/mame/drivers/holeland.cpp b/src/mame/drivers/holeland.cpp index 7c983962010..dcf41bd8d27 100644 --- a/src/mame/drivers/holeland.cpp +++ b/src/mame/drivers/holeland.cpp @@ -29,35 +29,38 @@ WRITE_LINE_MEMBER(holeland_state::coin_counter_w) machine().bookkeeping().coin_counter_w(0, state); } -ADDRESS_MAP_START(holeland_state::holeland_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", sp0256_device, ald_w) - AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("latch", ls259_device, write_d0) AM_READNOP - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(holeland_state::crzrally_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf000) AM_WRITE(scroll_w) - AM_RANGE(0xf800, 0xf807) AM_DEVWRITE("latch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(holeland_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) /* ? */ - AM_RANGE(0x04, 0x04) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END +void holeland_state::holeland_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xbfff).rom(); + map(0xa000, 0xa000).w("speech", FUNC(sp0256_device::ald_w)); + map(0xc000, 0xc007).w(m_latch, FUNC(ls259_device::write_d0)).nopr(); + map(0xe000, 0xe3ff).ram().w(this, FUNC(holeland_state::colorram_w)).share("colorram"); + map(0xe400, 0xe7ff).ram().w(this, FUNC(holeland_state::videoram_w)).share("videoram"); + map(0xf000, 0xf3ff).ram().share("spriteram"); +} + +void holeland_state::crzrally_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().share("nvram"); + map(0xe000, 0xe3ff).ram().w(this, FUNC(holeland_state::colorram_w)).share("colorram"); + map(0xe400, 0xe7ff).ram().w(this, FUNC(holeland_state::videoram_w)).share("videoram"); + map(0xe800, 0xebff).ram().share("spriteram"); + map(0xf000, 0xf000).w(this, FUNC(holeland_state::scroll_w)); + map(0xf800, 0xf807).w(m_latch, FUNC(ls259_device::write_d0)); +} + +void holeland_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("watchdog", FUNC(watchdog_timer_device::reset_r)); /* ? */ + map(0x04, 0x04).r("ay1", FUNC(ay8910_device::data_r)); + map(0x04, 0x05).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r("ay2", FUNC(ay8910_device::data_r)); + map(0x06, 0x07).w("ay2", FUNC(ay8910_device::address_data_w)); +} /* Note - manual states cocktail mode should be default */ static INPUT_PORTS_START( holeland ) diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp index cde8c0b02e1..0fc027ae4f0 100644 --- a/src/mame/drivers/homedata.cpp +++ b/src/mame/drivers/homedata.cpp @@ -528,93 +528,100 @@ WRITE8_MEMBER(homedata_state::bankswitch_w) /********************************************************************************/ -ADDRESS_MAP_START(homedata_state::mrokumei_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */ - AM_RANGE(0x7000, 0x77ff) AM_RAM /* hourouki expects this to act as RAM */ - AM_RANGE(0x7800, 0x7800) AM_RAM /* only used to store the result of the ROM check */ - AM_RANGE(0x7801, 0x7802) AM_READ(mrokumei_keyboard_r) // also vblank and active page - AM_RANGE(0x7803, 0x7803) AM_READ_PORT("IN0") // coin, service - AM_RANGE(0x7804, 0x7804) AM_READ_PORT("DSW1") // DSW1 - AM_RANGE(0x7805, 0x7805) AM_READ_PORT("DSW2") // DSW2 - AM_RANGE(0x7ff0, 0x7ffd) AM_WRITEONLY AM_SHARE("vreg") - AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP // ??? read every vblank, value discarded - AM_RANGE(0x8000, 0x8000) AM_WRITE(mrokumei_blitter_start_w) // in some games also ROM bank switch to access service ROM - AM_RANGE(0x8001, 0x8001) AM_WRITE(mrokumei_keyboard_select_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE(mrokumei_sound_cmd_w) - AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("snsnd", sn76489a_device, write) - AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w) - AM_RANGE(0x8007, 0x8007) AM_WRITE(mrokumei_blitter_bank_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(homedata_state::mrokumei_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void homedata_state::mrokumei_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::mrokumei_videoram_w)).share("videoram"); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x6fff).ram(); /* work ram */ + map(0x7000, 0x77ff).ram(); /* hourouki expects this to act as RAM */ + map(0x7800, 0x7800).ram(); /* only used to store the result of the ROM check */ + map(0x7801, 0x7802).r(this, FUNC(homedata_state::mrokumei_keyboard_r)); // also vblank and active page + map(0x7803, 0x7803).portr("IN0"); // coin, service + map(0x7804, 0x7804).portr("DSW1"); // DSW1 + map(0x7805, 0x7805).portr("DSW2"); // DSW2 + map(0x7ff0, 0x7ffd).writeonly().share("vreg"); + map(0x7ffe, 0x7ffe).nopr(); // ??? read every vblank, value discarded + map(0x8000, 0x8000).w(this, FUNC(homedata_state::mrokumei_blitter_start_w)); // in some games also ROM bank switch to access service ROM + map(0x8001, 0x8001).w(this, FUNC(homedata_state::mrokumei_keyboard_select_w)); + map(0x8002, 0x8002).w(this, FUNC(homedata_state::mrokumei_sound_cmd_w)); + map(0x8003, 0x8003).w(m_sn, FUNC(sn76489a_device::write)); + map(0x8006, 0x8006).w(this, FUNC(homedata_state::homedata_blitter_param_w)); + map(0x8007, 0x8007).w(this, FUNC(homedata_state::mrokumei_blitter_bank_w)); + map(0x8000, 0xffff).rom(); +} + +void homedata_state::mrokumei_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // TODO: might be that the entire area is sound_bank_w - AM_RANGE(0xfffc, 0xfffd) AM_WRITENOP /* stack writes happen here, but there's no RAM */ - AM_RANGE(0x8080, 0x8080) AM_WRITE(mrokumei_sound_bank_w) - AM_RANGE(0xffbf, 0xffbf) AM_WRITE(mrokumei_sound_bank_w) // hourouki mirror -ADDRESS_MAP_END - -ADDRESS_MAP_START(homedata_state::mrokumei_sound_io_map) - AM_RANGE(0x0000, 0xffff) AM_READ(mrokumei_sound_io_r) /* read address is 16-bit */ - AM_RANGE(0x0040, 0x0040) AM_MIRROR(0xff00) AM_DEVWRITE("dac", dac_byte_interface, write) /* write address is only 8-bit */ + map(0xfffc, 0xfffd).nopw(); /* stack writes happen here, but there's no RAM */ + map(0x8080, 0x8080).w(this, FUNC(homedata_state::mrokumei_sound_bank_w)); + map(0xffbf, 0xffbf).w(this, FUNC(homedata_state::mrokumei_sound_bank_w)); // hourouki mirror +} + +void homedata_state::mrokumei_sound_io_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(homedata_state::mrokumei_sound_io_r)); /* read address is 16-bit */ + map(0x0040, 0x0040).mirror(0xff00).w("dac", FUNC(dac_byte_interface::write)); /* write address is only 8-bit */ // hourouki mirror... - AM_RANGE(0x007f, 0x007f) AM_MIRROR(0xff00) AM_DEVWRITE("dac", dac_byte_interface, write) /* write address is only 8-bit */ -ADDRESS_MAP_END + map(0x007f, 0x007f).mirror(0xff00).w("dac", FUNC(dac_byte_interface::write)); /* write address is only 8-bit */ +} /********************************************************************************/ -ADDRESS_MAP_START(homedata_state::reikaids_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(reikaids_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAM /* work RAM */ - AM_RANGE(0x7800, 0x7800) AM_RAM /* behaves as normal RAM */ - AM_RANGE(0x7801, 0x7801) AM_READ_PORT("IN0") - AM_RANGE(0x7802, 0x7802) AM_READ_PORT("IN1") - AM_RANGE(0x7803, 0x7803) AM_READ(reikaids_io_r) // coin, blitter, upd7807 - AM_RANGE(0x7ff0, 0x7ffd) AM_WRITEONLY AM_SHARE("vreg") - AM_RANGE(0x7ffe, 0x7ffe) AM_WRITE(reikaids_blitter_bank_w) - AM_RANGE(0x7fff, 0x7fff) AM_WRITE(reikaids_blitter_start_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(bankswitch_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE(reikaids_snd_command_w) - AM_RANGE(0x8005, 0x8005) AM_WRITE(reikaids_gfx_bank_w) - AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(homedata_state::reikaids_upd7807_map) - AM_RANGE(0x0000, 0xfeff) AM_ROMBANK("bank2") /* External ROM (Banked) */ -ADDRESS_MAP_END +void homedata_state::reikaids_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::reikaids_videoram_w)).share("videoram"); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x6fff).ram(); /* work RAM */ + map(0x7800, 0x7800).ram(); /* behaves as normal RAM */ + map(0x7801, 0x7801).portr("IN0"); + map(0x7802, 0x7802).portr("IN1"); + map(0x7803, 0x7803).r(this, FUNC(homedata_state::reikaids_io_r)); // coin, blitter, upd7807 + map(0x7ff0, 0x7ffd).writeonly().share("vreg"); + map(0x7ffe, 0x7ffe).w(this, FUNC(homedata_state::reikaids_blitter_bank_w)); + map(0x7fff, 0x7fff).w(this, FUNC(homedata_state::reikaids_blitter_start_w)); + map(0x8000, 0x8000).w(this, FUNC(homedata_state::bankswitch_w)); + map(0x8002, 0x8002).w(this, FUNC(homedata_state::reikaids_snd_command_w)); + map(0x8005, 0x8005).w(this, FUNC(homedata_state::reikaids_gfx_bank_w)); + map(0x8006, 0x8006).w(this, FUNC(homedata_state::homedata_blitter_param_w)); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).rom(); +} + +void homedata_state::reikaids_upd7807_map(address_map &map) +{ + map(0x0000, 0xfeff).bankr("bank2"); /* External ROM (Banked) */ +} /**************************************************************************/ -ADDRESS_MAP_START(homedata_state::pteacher_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x5eff) AM_RAM - AM_RANGE(0x5f00, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */ - AM_RANGE(0x7800, 0x7800) AM_RAM /* behaves as normal RAM */ - AM_RANGE(0x7801, 0x7801) AM_READ(pteacher_io_r) // vblank, visible page - AM_RANGE(0x7ff2, 0x7ff2) AM_READ(pteacher_snd_r) - AM_RANGE(0x7ff0, 0x7ffd) AM_WRITEONLY AM_SHARE("vreg") - AM_RANGE(0x7fff, 0x7fff) AM_WRITE(pteacher_blitter_start_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(bankswitch_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE(pteacher_snd_command_w) - AM_RANGE(0x8005, 0x8005) AM_WRITE(pteacher_blitter_bank_w) - AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w) - AM_RANGE(0x8007, 0x8007) AM_WRITE(pteacher_gfx_bank_w) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(homedata_state::pteacher_upd7807_map) - AM_RANGE(0x0000, 0x0000) AM_WRITE(pteacher_snd_answer_w) - AM_RANGE(0x0000, 0xfeff) AM_ROMBANK("bank2") /* External ROM (Banked) */ -ADDRESS_MAP_END +void homedata_state::pteacher_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::mrokumei_videoram_w)).share("videoram"); + map(0x4000, 0x5eff).ram(); + map(0x5f00, 0x5fff).ram(); + map(0x6000, 0x6fff).ram(); /* work ram */ + map(0x7800, 0x7800).ram(); /* behaves as normal RAM */ + map(0x7801, 0x7801).r(this, FUNC(homedata_state::pteacher_io_r)); // vblank, visible page + map(0x7ff2, 0x7ff2).r(this, FUNC(homedata_state::pteacher_snd_r)); + map(0x7ff0, 0x7ffd).writeonly().share("vreg"); + map(0x7fff, 0x7fff).w(this, FUNC(homedata_state::pteacher_blitter_start_w)); + map(0x8000, 0x8000).w(this, FUNC(homedata_state::bankswitch_w)); + map(0x8002, 0x8002).w(this, FUNC(homedata_state::pteacher_snd_command_w)); + map(0x8005, 0x8005).w(this, FUNC(homedata_state::pteacher_blitter_bank_w)); + map(0x8006, 0x8006).w(this, FUNC(homedata_state::homedata_blitter_param_w)); + map(0x8007, 0x8007).w(this, FUNC(homedata_state::pteacher_gfx_bank_w)); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).rom(); +} + +void homedata_state::pteacher_upd7807_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(homedata_state::pteacher_snd_answer_w)); + map(0x0000, 0xfeff).bankr("bank2"); /* External ROM (Banked) */ +} /**************************************************************************/ @@ -1384,19 +1391,21 @@ static INPUT_PORTS_START( mirderby ) INPUT_PORTS_END -ADDRESS_MAP_START(homedata_state::cpu0_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void homedata_state::cpu0_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} -ADDRESS_MAP_START(homedata_state::cpu1_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM // videoram - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */ - AM_RANGE(0x7000, 0x77ff) AM_RAM +void homedata_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x3fff).ram(); // videoram + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x6fff).ram(); /* work ram */ + map(0x7000, 0x77ff).ram(); //0x7ff0 onward is the blitter - AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x7ffe, 0x7ffe).nopr(); //watchdog + map(0x8000, 0xffff).rom(); +} READ8_MEMBER(homedata_state::mirderby_prot_r) @@ -1411,15 +1420,16 @@ WRITE8_MEMBER(homedata_state::mirderby_prot_w) } -ADDRESS_MAP_START(homedata_state::cpu2_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */ - AM_RANGE(0x7000, 0x77ff) AM_RAM - AM_RANGE(0x7800, 0x7800) AM_READWRITE(mirderby_prot_r, mirderby_prot_w) // protection check? (or sound comms?) - AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP //watchdog - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void homedata_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(homedata_state::mrokumei_videoram_w)).share("videoram"); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x6fff).ram(); /* work ram */ + map(0x7000, 0x77ff).ram(); + map(0x7800, 0x7800).rw(this, FUNC(homedata_state::mirderby_prot_r), FUNC(homedata_state::mirderby_prot_w)); // protection check? (or sound comms?) + map(0x7ffe, 0x7ffe).nopr(); //watchdog + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp index 1799824d215..8e3f6502265 100644 --- a/src/mame/drivers/homelab.cpp +++ b/src/mame/drivers/homelab.cpp @@ -206,49 +206,54 @@ READ8_MEMBER( homelab_state::exxx_r ) /* Address maps */ -ADDRESS_MAP_START(homelab_state::homelab2_mem) - AM_RANGE( 0x0000, 0x07ff ) AM_ROM // ROM 1 - AM_RANGE( 0x0800, 0x0fff ) AM_ROM // ROM 2 - AM_RANGE( 0x1000, 0x17ff ) AM_ROM // ROM 3 - AM_RANGE( 0x1800, 0x1fff ) AM_ROM // ROM 4 - AM_RANGE( 0x2000, 0x27ff ) AM_ROM // ROM 5 - AM_RANGE( 0x2800, 0x2fff ) AM_ROM // ROM 6 - AM_RANGE( 0x3000, 0x37ff ) AM_ROM // Empty - AM_RANGE( 0x3800, 0x3fff ) AM_READWRITE(key_r,cass_w) - AM_RANGE( 0x4000, 0x7fff ) AM_RAM - AM_RANGE( 0xc000, 0xc3ff ) AM_RAM AM_REGION("maincpu",0xc000) - AM_RANGE( 0xe000, 0xe0ff ) AM_READ(cass2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(homelab_state::homelab3_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0x7fff ) AM_RAM - AM_RANGE( 0xe800, 0xefff ) AM_READ(exxx_r) - AM_RANGE( 0xf800, 0xffff ) AM_RAM AM_REGION("maincpu",0xf800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(homelab_state::homelab3_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x7f, 0x7f ) AM_WRITE(port7f_w) - AM_RANGE( 0xff, 0xff ) AM_WRITE(portff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(homelab_state::brailab4_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0xcfff ) AM_RAM - AM_RANGE( 0xd000, 0xdfff ) AM_ROM - AM_RANGE( 0xe800, 0xefff ) AM_READ(exxx_r) - AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(homelab_state::brailab4_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0xf8, 0xf9 ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write) - AM_RANGE( 0x7f, 0x7f ) AM_WRITE(brailab4_port7f_w) - AM_RANGE( 0xff, 0xff ) AM_WRITE(brailab4_portff_w) -ADDRESS_MAP_END +void homelab_state::homelab2_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); // ROM 1 + map(0x0800, 0x0fff).rom(); // ROM 2 + map(0x1000, 0x17ff).rom(); // ROM 3 + map(0x1800, 0x1fff).rom(); // ROM 4 + map(0x2000, 0x27ff).rom(); // ROM 5 + map(0x2800, 0x2fff).rom(); // ROM 6 + map(0x3000, 0x37ff).rom(); // Empty + map(0x3800, 0x3fff).rw(this, FUNC(homelab_state::key_r), FUNC(homelab_state::cass_w)); + map(0x4000, 0x7fff).ram(); + map(0xc000, 0xc3ff).ram().region("maincpu", 0xc000); + map(0xe000, 0xe0ff).r(this, FUNC(homelab_state::cass2_r)); +} + +void homelab_state::homelab3_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).ram(); + map(0xe800, 0xefff).r(this, FUNC(homelab_state::exxx_r)); + map(0xf800, 0xffff).ram().region("maincpu", 0xf800); +} + +void homelab_state::homelab3_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x7f, 0x7f).w(this, FUNC(homelab_state::port7f_w)); + map(0xff, 0xff).w(this, FUNC(homelab_state::portff_w)); +} + +void homelab_state::brailab4_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0xcfff).ram(); + map(0xd000, 0xdfff).rom(); + map(0xe800, 0xefff).r(this, FUNC(homelab_state::exxx_r)); + map(0xf800, 0xffff).bankrw("bank1"); +} + +void homelab_state::brailab4_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xf8, 0xf9).rw("mea8000", FUNC(mea8000_device::read), FUNC(mea8000_device::write)); + map(0x7f, 0x7f).w(this, FUNC(homelab_state::brailab4_port7f_w)); + map(0xff, 0xff).w(this, FUNC(homelab_state::brailab4_portff_w)); +} diff --git a/src/mame/drivers/homerun.cpp b/src/mame/drivers/homerun.cpp index de637e51421..a82e5db535b 100644 --- a/src/mame/drivers/homerun.cpp +++ b/src/mame/drivers/homerun.cpp @@ -103,25 +103,27 @@ WRITE8_MEMBER(homerun_state::homerun_d7756_sample_w) m_d7756->port_w(space, 0, data); } -ADDRESS_MAP_START(homerun_state::homerun_memmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(homerun_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE(homerun_color_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xdfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(homerun_state::homerun_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITE(homerun_d7756_sample_w) - AM_RANGE(0x20, 0x20) AM_WRITE(homerun_control_w) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x40, 0x40) AM_READ_PORT("IN0") - AM_RANGE(0x50, 0x50) AM_READ_PORT("IN2") - AM_RANGE(0x60, 0x60) AM_READ_PORT("IN1") - AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END +void homerun_state::homerun_memmap(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x9fff).ram().w(this, FUNC(homerun_state::homerun_videoram_w)).share("videoram"); + map(0xa000, 0xa0ff).ram().share("spriteram"); + map(0xb000, 0xb03f).ram().w(this, FUNC(homerun_state::homerun_color_w)).share("colorram"); + map(0xc000, 0xdfff).ram(); +} + +void homerun_state::homerun_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w(this, FUNC(homerun_state::homerun_d7756_sample_w)); + map(0x20, 0x20).w(this, FUNC(homerun_state::homerun_control_w)); + map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x40).portr("IN0"); + map(0x50, 0x50).portr("IN2"); + map(0x60, 0x60).portr("IN1"); + map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} CUSTOM_INPUT_MEMBER(homerun_state::homerun_d7756_busy_r) diff --git a/src/mame/drivers/homez80.cpp b/src/mame/drivers/homez80.cpp index 5b10782efd9..78198a6486c 100644 --- a/src/mame/drivers/homez80.cpp +++ b/src/mame/drivers/homez80.cpp @@ -58,17 +58,19 @@ READ8_MEMBER( homez80_state::homez80_keyboard_r ) return ioport(kbdrow)->read(); } -ADDRESS_MAP_START(homez80_state::homez80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_ROM // Monitor - AM_RANGE( 0x2000, 0x23ff ) AM_RAM AM_SHARE("videoram") // Video RAM - AM_RANGE( 0x7020, 0x702f ) AM_READ(homez80_keyboard_r) - AM_RANGE( 0x8000, 0xffff ) AM_RAM // 32 K RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(homez80_state::homez80_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void homez80_state::homez80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); // Monitor + map(0x2000, 0x23ff).ram().share("videoram"); // Video RAM + map(0x7020, 0x702f).r(this, FUNC(homez80_state::homez80_keyboard_r)); + map(0x8000, 0xffff).ram(); // 32 K RAM +} + +void homez80_state::homez80_io(address_map &map) +{ + map.unmap_value_high(); +} /* Input ports */ INPUT_PORTS_START( homez80 ) diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp index 156fe0e8663..37d70b08223 100644 --- a/src/mame/drivers/horizon.cpp +++ b/src/mame/drivers/horizon.cpp @@ -82,26 +82,28 @@ private: // ADDRESS_MAP( horizon_mem ) //------------------------------------------------- -ADDRESS_MAP_START(horizon_state::horizon_mem) - AM_RANGE(0x0000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xe9ff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xea01, 0xea01) - AM_RANGE(0xea11, 0xea11) - AM_RANGE(0xea21, 0xea21) - AM_RANGE(0xea31, 0xea31) - AM_RANGE(0xeb10, 0xeb17) AM_READ(ff_r) - AM_RANGE(0xeb20, 0xeb20) - AM_RANGE(0xeb35, 0xeb35) - AM_RANGE(0xeb40, 0xeb40) -ADDRESS_MAP_END +void horizon_state::horizon_mem(address_map &map) +{ + map(0x0000, 0xe7ff).ram(); + map(0xe800, 0xe9ff).rom().region("roms", 0); + map(0xea01, 0xea01); + map(0xea11, 0xea11); + map(0xea21, 0xea21); + map(0xea31, 0xea31); + map(0xeb10, 0xeb17).r(this, FUNC(horizon_state::ff_r)); + map(0xeb20, 0xeb20); + map(0xeb35, 0xeb35); + map(0xeb40, 0xeb40); +} //------------------------------------------------- // ADDRESS_MAP( horizon_io ) //------------------------------------------------- -ADDRESS_MAP_START(horizon_state::horizon_io) -ADDRESS_MAP_END +void horizon_state::horizon_io(address_map &map) +{ +} diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp index 07574e0436f..ee20c3712f4 100644 --- a/src/mame/drivers/hornet.cpp +++ b/src/mame/drivers/hornet.cpp @@ -745,41 +745,43 @@ WRITE16_MEMBER(hornet_state::soundtimer_count_w) /*****************************************************************************/ -ADDRESS_MAP_START(hornet_state::hornet_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("workram") /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(hornet_k037122_reg_r, hornet_k037122_reg_w) - AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(hornet_k037122_sram_r, hornet_k037122_sram_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(hornet_k037122_char_r, hornet_k037122_char_w) - AM_RANGE(0x74080000, 0x7408000f) AM_READWRITE(gun_r, gun_w) - AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) - AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ8(sysreg_r, 0xffffffff) - AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE8(sysreg_w, 0xffffffff) - AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */ - AM_RANGE(0x7d030000, 0x7d03000f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x7d040004, 0x7d040007) AM_READWRITE8(comm_eeprom_r, comm_eeprom_w, 0xffffffff) - AM_RANGE(0x7d042000, 0x7d043fff) AM_RAM /* COMM BOARD 0 */ - AM_RANGE(0x7d044000, 0x7d044007) AM_READ(comm0_unk_r) - AM_RANGE(0x7d048000, 0x7d048003) AM_WRITE(comm1_w) - AM_RANGE(0x7d04a000, 0x7d04a003) AM_WRITE(comm_rombank_w) - AM_RANGE(0x7d050000, 0x7d05ffff) AM_ROMBANK("bank1") /* COMM BOARD 1 */ - AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ - AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x7fc00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END +void hornet_state::hornet_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("workram"); /* Work RAM */ + map(0x74000000, 0x740000ff).rw(this, FUNC(hornet_state::hornet_k037122_reg_r), FUNC(hornet_state::hornet_k037122_reg_w)); + map(0x74020000, 0x7403ffff).rw(this, FUNC(hornet_state::hornet_k037122_sram_r), FUNC(hornet_state::hornet_k037122_sram_w)); + map(0x74040000, 0x7407ffff).rw(this, FUNC(hornet_state::hornet_k037122_char_r), FUNC(hornet_state::hornet_k037122_char_w)); + map(0x74080000, 0x7408000f).rw(this, FUNC(hornet_state::gun_r), FUNC(hornet_state::gun_w)); + map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); + map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc)); + map(0x7d000000, 0x7d00ffff).r(this, FUNC(hornet_state::sysreg_r)); + map(0x7d010000, 0x7d01ffff).w(this, FUNC(hornet_state::sysreg_w)); + map(0x7d020000, 0x7d021fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */ + map(0x7d030000, 0x7d03000f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x7d040004, 0x7d040007).rw(this, FUNC(hornet_state::comm_eeprom_r), FUNC(hornet_state::comm_eeprom_w)); + map(0x7d042000, 0x7d043fff).ram(); /* COMM BOARD 0 */ + map(0x7d044000, 0x7d044007).r(this, FUNC(hornet_state::comm0_unk_r)); + map(0x7d048000, 0x7d048003).w(this, FUNC(hornet_state::comm1_w)); + map(0x7d04a000, 0x7d04a003).w(this, FUNC(hornet_state::comm_rombank_w)); + map(0x7d050000, 0x7d05ffff).bankr("bank1"); /* COMM BOARD 1 */ + map(0x7e000000, 0x7e7fffff).rom().region("user2", 0); /* Data ROM */ + map(0x7f000000, 0x7f3fffff).rom().share("share2"); + map(0x7fc00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */ +} /*****************************************************************************/ -ADDRESS_MAP_START(hornet_state::sound_memmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Work RAM */ - AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */ - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff) - AM_RANGE(0x480000, 0x480001) AM_WRITENOP - AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP - AM_RANGE(0x500000, 0x500001) AM_WRITE(soundtimer_en_w) AM_READNOP - AM_RANGE(0x600000, 0x600001) AM_WRITE(soundtimer_count_w) AM_READNOP -ADDRESS_MAP_END +void hornet_state::sound_memmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* Work RAM */ + map(0x200000, 0x200fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */ + map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff); + map(0x480000, 0x480001).nopw(); + map(0x4c0000, 0x4c0001).nopw(); + map(0x500000, 0x500001).w(this, FUNC(hornet_state::soundtimer_en_w)).nopr(); + map(0x600000, 0x600001).w(this, FUNC(hornet_state::soundtimer_count_w)).nopr(); +} /*****************************************************************************/ @@ -811,14 +813,15 @@ WRITE16_MEMBER(hornet_state::gn680_latch_w) // WORD at 30000e: IRQ 4 tests bits 6 and 7, IRQ5 tests bits 4 and 5 // (vsync and hsync status for each of the two screens?) -ADDRESS_MAP_START(hornet_state::gn680_memmap) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM - AM_RANGE(0x300000, 0x300001) AM_WRITE(gn680_sysctrl) - AM_RANGE(0x314000, 0x317fff) AM_RAM - AM_RANGE(0x400000, 0x400003) AM_READWRITE(gn680_latch_r, gn680_latch_w) - AM_RANGE(0x400008, 0x400009) AM_WRITENOP // writes 0001 00fe each time IRQ 6 triggers -ADDRESS_MAP_END +void hornet_state::gn680_memmap(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x200000, 0x203fff).ram(); + map(0x300000, 0x300001).w(this, FUNC(hornet_state::gn680_sysctrl)); + map(0x314000, 0x317fff).ram(); + map(0x400000, 0x400003).rw(this, FUNC(hornet_state::gn680_latch_r), FUNC(hornet_state::gn680_latch_w)); + map(0x400008, 0x400009).nopw(); // writes 0001 00fe each time IRQ 6 triggers +} /*****************************************************************************/ @@ -842,25 +845,27 @@ WRITE32_MEMBER(hornet_state::dsp_dataram1_w) m_sharc_dataram1[offset] = data; } -ADDRESS_MAP_START(hornet_state::sharc0_map) - AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) AM_SHARE("sharc_dataram0") - AM_RANGE(0x1400000, 0x14fffff) AM_RAM - AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo0", voodoo_device, voodoo_r, voodoo_w) - AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) - AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_0_r, K033906_0_w) - AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hornet_state::sharc1_map) - AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w) AM_SHARE("sharc_dataram1") - AM_RANGE(0x1400000, 0x14fffff) AM_RAM - AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo1", voodoo_device, voodoo_r, voodoo_w) - AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w) - AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_1_r, K033906_1_w) - AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6") -ADDRESS_MAP_END +void hornet_state::sharc0_map(address_map &map) +{ + map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w)); + map(0x0500000, 0x05fffff).rw(this, FUNC(hornet_state::dsp_dataram0_r), FUNC(hornet_state::dsp_dataram0_w)).share("sharc_dataram0"); + map(0x1400000, 0x14fffff).ram(); + map(0x2400000, 0x27fffff).rw("voodoo0", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w)); + map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w)); + map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w)); + map(0x3600000, 0x37fffff).bankr("bank5"); +} + +void hornet_state::sharc1_map(address_map &map) +{ + map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w)); + map(0x0500000, 0x05fffff).rw(this, FUNC(hornet_state::dsp_dataram1_r), FUNC(hornet_state::dsp_dataram1_w)).share("sharc_dataram1"); + map(0x1400000, 0x14fffff).ram(); + map(0x2400000, 0x27fffff).rw("voodoo1", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w)); + map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w)); + map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w)); + map(0x3600000, 0x37fffff).bankr("bank6"); +} /*****************************************************************************/ diff --git a/src/mame/drivers/hotblock.cpp b/src/mame/drivers/hotblock.cpp index 0358e90b5b4..60b7ca6bb1d 100644 --- a/src/mame/drivers/hotblock.cpp +++ b/src/mame/drivers/hotblock.cpp @@ -130,18 +130,20 @@ WRITE8_MEMBER(hotblock_state::video_write) } } -ADDRESS_MAP_START(hotblock_state::hotblock_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(video_read, video_write) AM_SHARE("vram") - AM_RANGE(0x20000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hotblock_state::hotblock_io) - AM_RANGE(0x0000, 0x0000) AM_WRITE(port0_w) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(port4_r, port4_w) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ym2149_device, address_data_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREAD("aysnd", ym2149_device, data_r) -ADDRESS_MAP_END +void hotblock_state::hotblock_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); + map(0x10000, 0x1ffff).rw(this, FUNC(hotblock_state::video_read), FUNC(hotblock_state::video_write)).share("vram"); + map(0x20000, 0xfffff).rom(); +} + +void hotblock_state::hotblock_io(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(hotblock_state::port0_w)); + map(0x0004, 0x0004).rw(this, FUNC(hotblock_state::port4_r), FUNC(hotblock_state::port4_w)); + map(0x8000, 0x8001).w("aysnd", FUNC(ym2149_device::address_data_w)); + map(0x8001, 0x8001).r("aysnd", FUNC(ym2149_device::data_r)); +} diff --git a/src/mame/drivers/hotstuff.cpp b/src/mame/drivers/hotstuff.cpp index 5e79a0781c6..985fa0f4612 100644 --- a/src/mame/drivers/hotstuff.cpp +++ b/src/mame/drivers/hotstuff.cpp @@ -75,18 +75,25 @@ uint32_t hotstuff_state::screen_update_hotstuff(screen_device &screen, bitmap_rg return 0; } -ADDRESS_MAP_START(hotstuff_state::hotstuff_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_NOP //ROM AM_REGION("data", 0) - - AM_RANGE(0x400000, 0x40ffff) AM_RAM - - AM_RANGE(0x600000, 0x600003) AM_DEVREADWRITE8("scc1", z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xffff) - AM_RANGE(0x620000, 0x620003) AM_DEVREADWRITE8("scc2", z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xffff) - ;map(0x680000, 0x680001).lrw8("rtc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_rtc->read(space, offset^1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_rtc->write(space, offset^1, data, mem_mask); }); - - AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_SHARE("bitmapram") -ADDRESS_MAP_END +void hotstuff_state::hotstuff_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x0fffff).noprw(); //ROM AM_REGION("data", 0) + + map(0x400000, 0x40ffff).ram(); + + map(0x600000, 0x600003).rw("scc1", FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)); + map(0x620000, 0x620003).rw("scc2", FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)); + map(0x680000, 0x680001).lrw8("rtc_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_rtc->read(space, offset^1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_rtc->write(space, offset^1, data, mem_mask); + }); + + map(0x980000, 0x9bffff).ram().share("bitmapram"); +} static INPUT_PORTS_START( hotstuff ) INPUT_PORTS_END diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp index d154259eca2..229ff4c09d6 100644 --- a/src/mame/drivers/hp16500.cpp +++ b/src/mame/drivers/hp16500.cpp @@ -221,102 +221,108 @@ WRITE_LINE_MEMBER(hp16500_state::irq_2) m_maincpu->set_input_line_and_vector(M68K_IRQ_2, state, M68K_INT_ACK_AUTOVECTOR); } -ADDRESS_MAP_START(hp16500_state::hp1650_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0) +void hp16500_state::hp1650_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom().region("bios", 0); - AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w) + map(0x201000, 0x201001).w(this, FUNC(hp16500_state::maskval_w)); - AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff) - AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff) - AM_RANGE(0x2050fe, 0x2050ff) AM_NOP - AM_RANGE(0x206000, 0x206001) AM_READNOP AM_WRITE8(pal_g_w, 0x00ff) - AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff) + map(0x204001, 0x204001).w(this, FUNC(hp16500_state::pal_ctrl_w)); + map(0x205001, 0x205001).w(this, FUNC(hp16500_state::pal_r_w)); + map(0x2050fe, 0x2050ff).noprw(); + map(0x206000, 0x206001).nopr(); + map(0x206001, 0x206001).w(this, FUNC(hp16500_state::pal_g_w)); + map(0x207001, 0x207001).w(this, FUNC(hp16500_state::pal_b_w)); - AM_RANGE(0x20a000, 0x20a007) AM_DEVREADWRITE8("epci", mc2661_device, read, write, 0x00ff) + map(0x20a000, 0x20a007).rw("epci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0x00ff); - AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff) - AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff) + map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w) + map(0x20e000, 0x20e001).rw(this, FUNC(hp16500_state::vbl_ack16_r), FUNC(hp16500_state::vbl_ack16_w)); - AM_RANGE(0x20f000, 0x20f001) AM_NOP + map(0x20f000, 0x20f001).noprw(); - AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w) - AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff) + map(0x600000, 0x61ffff).w(this, FUNC(hp16500_state::vram_w)); + map(0x600000, 0x67ffff).r(this, FUNC(hp16500_state::vram_r)).umask16(0x00ff); - AM_RANGE(0x900000, 0x9fffff) AM_RAM -ADDRESS_MAP_END + map(0x900000, 0x9fffff).ram(); +} // like 1650 but moves main RAM to match 16500a -ADDRESS_MAP_START(hp16500_state::hp1651_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0) +void hp16500_state::hp1651_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom().region("bios", 0); - AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w) + map(0x201000, 0x201001).w(this, FUNC(hp16500_state::maskval_w)); - AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff) - AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff) - AM_RANGE(0x2050fe, 0x2050ff) AM_NOP - AM_RANGE(0x206000, 0x206001) AM_READNOP AM_WRITE8(pal_g_w, 0x00ff) - AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff) + map(0x204001, 0x204001).w(this, FUNC(hp16500_state::pal_ctrl_w)); + map(0x205001, 0x205001).w(this, FUNC(hp16500_state::pal_r_w)); + map(0x2050fe, 0x2050ff).noprw(); + map(0x206000, 0x206001).nopr(); + map(0x206001, 0x206001).w(this, FUNC(hp16500_state::pal_g_w)); + map(0x207001, 0x207001).w(this, FUNC(hp16500_state::pal_b_w)); - AM_RANGE(0x20a000, 0x20a007) AM_DEVREADWRITE8("epci", mc2661_device, read, write, 0x00ff) + map(0x20a000, 0x20a007).rw("epci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0x00ff); - AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff) - AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff) + map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w) + map(0x20e000, 0x20e001).rw(this, FUNC(hp16500_state::vbl_ack16_r), FUNC(hp16500_state::vbl_ack16_w)); - AM_RANGE(0x20f000, 0x20f001) AM_NOP + map(0x20f000, 0x20f001).noprw(); - AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w) - AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff) + map(0x600000, 0x61ffff).w(this, FUNC(hp16500_state::vram_w)); + map(0x600000, 0x67ffff).r(this, FUNC(hp16500_state::vram_r)).umask16(0x00ff); - AM_RANGE(0x980000, 0xa7ffff) AM_RAM -ADDRESS_MAP_END + map(0x980000, 0xa7ffff).ram(); +} -ADDRESS_MAP_START(hp16500_state::hp16500a_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("bios", 0) +void hp16500_state::hp16500a_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom().region("bios", 0); - AM_RANGE(0x201000, 0x201001) AM_WRITE(maskval_w) + map(0x201000, 0x201001).w(this, FUNC(hp16500_state::maskval_w)); - AM_RANGE(0x204000, 0x204001) AM_WRITE8(pal_ctrl_w, 0x00ff) - AM_RANGE(0x205000, 0x205001) AM_WRITE8(pal_r_w, 0x00ff) - AM_RANGE(0x206000, 0x206001) AM_WRITE8(pal_g_w, 0x00ff) - AM_RANGE(0x207000, 0x207001) AM_WRITE8(pal_b_w, 0x00ff) + map(0x204001, 0x204001).w(this, FUNC(hp16500_state::pal_ctrl_w)); + map(0x205001, 0x205001).w(this, FUNC(hp16500_state::pal_r_w)); + map(0x206001, 0x206001).w(this, FUNC(hp16500_state::pal_g_w)); + map(0x207001, 0x207001).w(this, FUNC(hp16500_state::pal_b_w)); - AM_RANGE(0x20c000, 0x20c001) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff) - AM_RANGE(0x20c002, 0x20c003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff) + map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - AM_RANGE(0x20e000, 0x20e001) AM_READWRITE(vbl_ack16_r, vbl_ack16_w) + map(0x20e000, 0x20e001).rw(this, FUNC(hp16500_state::vbl_ack16_r), FUNC(hp16500_state::vbl_ack16_w)); - AM_RANGE(0x600000, 0x61ffff) AM_WRITE(vram_w) - AM_RANGE(0x600000, 0x67ffff) AM_READ8(vram_r, 0x00ff) + map(0x600000, 0x61ffff).w(this, FUNC(hp16500_state::vram_w)); + map(0x600000, 0x67ffff).r(this, FUNC(hp16500_state::vram_r)).umask16(0x00ff); - AM_RANGE(0x980000, 0xa7ffff) AM_RAM -ADDRESS_MAP_END + map(0x980000, 0xa7ffff).ram(); +} uint32_t hp16500_state::screen_update_hp16500a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { return 0; } -ADDRESS_MAP_START(hp16500_state::hp16500_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0x0020f000, 0x0020f003) AM_WRITE(palette_w) +void hp16500_state::hp16500_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom().region("bios", 0); + map(0x0020f000, 0x0020f003).w(this, FUNC(hp16500_state::palette_w)); - AM_RANGE(0x00202800, 0x00202803) AM_WRITE(vbl_ack_w) - AM_RANGE(0x00203000, 0x00203003) AM_WRITE(vbl_ack_w) - AM_RANGE(0x00209800, 0x00209803) AM_READ(vbl_state_r) + map(0x00202800, 0x00202803).w(this, FUNC(hp16500_state::vbl_ack_w)); + map(0x00203000, 0x00203003).w(this, FUNC(hp16500_state::vbl_ack_w)); + map(0x00209800, 0x00209803).r(this, FUNC(hp16500_state::vbl_state_r)); - AM_RANGE(0x0020b800, 0x0020b8ff) AM_RAM // system ram test is really strange. + map(0x0020b800, 0x0020b8ff).ram(); // system ram test is really strange. - AM_RANGE(0x0020f800, 0x0020f80f) AM_DEVREADWRITE8("mlc", hp_hil_mlc_device, read, write, 0xffffffff); - AM_RANGE(0x00600000, 0x0061ffff) AM_WRITE16(vram_w, 0xffffffff) - AM_RANGE(0x00600000, 0x0067ffff) AM_READ8 (vram_r, 0x00ff00ff) - AM_RANGE(0x00700000, 0x00700003) AM_WRITE8 (mask_w, 0xff000000) - AM_RANGE(0x00740000, 0x00740003) AM_WRITE8 (val_w, 0xff000000) - AM_RANGE(0x00800000, 0x009fffff) AM_RAM -ADDRESS_MAP_END + map(0x0020f800, 0x0020f80f).rw(m_mlc, FUNC(hp_hil_mlc_device::read), FUNC(hp_hil_mlc_device::write)); + map(0x00600000, 0x0061ffff).w(this, FUNC(hp16500_state::vram_w)); + map(0x00600000, 0x0067ffff).r(this, FUNC(hp16500_state::vram_r)).umask32(0x00ff00ff); + map(0x00700000, 0x00700000).w(this, FUNC(hp16500_state::mask_w)); + map(0x00740000, 0x00740000).w(this, FUNC(hp16500_state::val_w)); + map(0x00800000, 0x009fffff).ram(); +} INTERRUPT_GEN_MEMBER(hp16500_state::vblank) { diff --git a/src/mame/drivers/hp2620.cpp b/src/mame/drivers/hp2620.cpp index e5763e38a0a..02fbda31b8a 100644 --- a/src/mame/drivers/hp2620.cpp +++ b/src/mame/drivers/hp2620.cpp @@ -75,21 +75,23 @@ WRITE8_MEMBER(hp2620_state::modem_w) { } -ADDRESS_MAP_START(hp2620_state::mem_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hp2620_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_READWRITE(nvram_r, nvram_w) AM_SHARE("nvram") - AM_RANGE(0x80, 0x80) AM_READ(keystat_r) - AM_RANGE(0x90, 0x90) AM_READ(sysstat_r) - AM_RANGE(0xa0, 0xa3) AM_DEVWRITE("acia", mos6551_device, write) - AM_RANGE(0xa4, 0xa7) AM_DEVREAD("acia", mos6551_device, read) - AM_RANGE(0xa8, 0xa8) AM_WRITE(modem_w) - AM_RANGE(0xb8, 0xb8) AM_WRITE(keydisp_w) -ADDRESS_MAP_END +void hp2620_state::mem_map(address_map &map) +{ + map(0x0000, 0xbfff).rom().region("maincpu", 0); + map(0xc000, 0xffff).ram(); +} + +void hp2620_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).rw(this, FUNC(hp2620_state::nvram_r), FUNC(hp2620_state::nvram_w)).share("nvram"); + map(0x80, 0x80).r(this, FUNC(hp2620_state::keystat_r)); + map(0x90, 0x90).r(this, FUNC(hp2620_state::sysstat_r)); + map(0xa0, 0xa3).w("acia", FUNC(mos6551_device::write)); + map(0xa4, 0xa7).r("acia", FUNC(mos6551_device::read)); + map(0xa8, 0xa8).w(this, FUNC(hp2620_state::modem_w)); + map(0xb8, 0xb8).w(this, FUNC(hp2620_state::keydisp_w)); +} static INPUT_PORTS_START( hp2622 ) INPUT_PORTS_END diff --git a/src/mame/drivers/hp2640.cpp b/src/mame/drivers/hp2640.cpp index cf8145fc38a..2a90ab1d338 100644 --- a/src/mame/drivers/hp2640.cpp +++ b/src/mame/drivers/hp2640.cpp @@ -935,30 +935,32 @@ static INPUT_PORTS_START(hp2645) PORT_CONFSETTING(0x80, DEF_STR(Off)) INPUT_PORTS_END -ADDRESS_MAP_START(hp2645_state::cpu_mem_map) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000 , 0x57ff) AM_ROM - AM_RANGE(0x8100 , 0x8100) AM_DEVREAD("uart", ay51013_device, receive) - AM_RANGE(0x8120 , 0x8120) AM_READ(async_status_r) - AM_RANGE(0x8140 , 0x8140) AM_WRITE(async_control_w) - AM_RANGE(0x8160 , 0x8160) AM_DEVWRITE("uart", ay51013_device, transmit) - AM_RANGE(0x8300 , 0x8300) AM_WRITE(kb_led_w) - AM_RANGE(0x8300 , 0x830d) AM_READ(kb_r) - AM_RANGE(0x830e , 0x830e) AM_READ(switches_ah_r) - AM_RANGE(0x830f , 0x830f) AM_READ(datacomm_sw_r) - AM_RANGE(0x8320 , 0x8320) AM_WRITE(kb_prev_w) - AM_RANGE(0x8380 , 0x8380) AM_READWRITE(switches_jr_r , kb_reset_w) - AM_RANGE(0x83a0 , 0x83a0) AM_READ(switches_sz_r) - AM_RANGE(0x8700 , 0x8700) AM_WRITE(cx_w) - AM_RANGE(0x8720 , 0x8720) AM_WRITE(cy_w) - AM_RANGE(0x9100 , 0x91ff) AM_RAM - AM_RANGE(0xc000 , 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hp2645_state::cpu_io_map) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x00 , 0xff) AM_WRITE(mode_byte_w) -ADDRESS_MAP_END +void hp2645_state::cpu_mem_map(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x57ff).rom(); + map(0x8100, 0x8100).r(m_uart, FUNC(ay51013_device::receive)); + map(0x8120, 0x8120).r(this, FUNC(hp2645_state::async_status_r)); + map(0x8140, 0x8140).w(this, FUNC(hp2645_state::async_control_w)); + map(0x8160, 0x8160).w(m_uart, FUNC(ay51013_device::transmit)); + map(0x8300, 0x8300).w(this, FUNC(hp2645_state::kb_led_w)); + map(0x8300, 0x830d).r(this, FUNC(hp2645_state::kb_r)); + map(0x830e, 0x830e).r(this, FUNC(hp2645_state::switches_ah_r)); + map(0x830f, 0x830f).r(this, FUNC(hp2645_state::datacomm_sw_r)); + map(0x8320, 0x8320).w(this, FUNC(hp2645_state::kb_prev_w)); + map(0x8380, 0x8380).rw(this, FUNC(hp2645_state::switches_jr_r), FUNC(hp2645_state::kb_reset_w)); + map(0x83a0, 0x83a0).r(this, FUNC(hp2645_state::switches_sz_r)); + map(0x8700, 0x8700).w(this, FUNC(hp2645_state::cx_w)); + map(0x8720, 0x8720).w(this, FUNC(hp2645_state::cy_w)); + map(0x9100, 0x91ff).ram(); + map(0xc000, 0xffff).ram(); +} + +void hp2645_state::cpu_io_map(address_map &map) +{ + map.unmap_value_low(); + map(0x00, 0xff).w(this, FUNC(hp2645_state::mode_byte_w)); +} MACHINE_CONFIG_START(hp2645_state::hp2645) MCFG_CPU_ADD("cpu" , I8080A , SYS_CLOCK / 2) diff --git a/src/mame/drivers/hp48.cpp b/src/mame/drivers/hp48.cpp index 6b13264c312..acca9b631c9 100644 --- a/src/mame/drivers/hp48.cpp +++ b/src/mame/drivers/hp48.cpp @@ -1246,11 +1246,12 @@ ROM_END run-time. */ -ADDRESS_MAP_START(hp48_state::hp48) +void hp48_state::hp48(address_map &map) +{ - AM_RANGE( 0x00000, 0xfffff ) AM_NOP /* configured at run-time */ + map(0x00000, 0xfffff).noprw(); /* configured at run-time */ -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/hp49gp.cpp b/src/mame/drivers/hp49gp.cpp index b63d0863d2e..78cde349949 100644 --- a/src/mame/drivers/hp49gp.cpp +++ b/src/mame/drivers/hp49gp.cpp @@ -259,13 +259,14 @@ void hp49gp_state::machine_reset() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(hp49gp_state::hp49gp_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x08000000, 0x0801ffff) AM_RAM - AM_RANGE(0x08020000, 0x0803ffff) AM_RAM - AM_RANGE(0x08040000, 0x0807ffff) AM_RAM - AM_RANGE(0x40000000, 0x40000fff) AM_RAM AM_SHARE("steppingstone") -ADDRESS_MAP_END +void hp49gp_state::hp49gp_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom(); + map(0x08000000, 0x0801ffff).ram(); + map(0x08020000, 0x0803ffff).ram(); + map(0x08040000, 0x0807ffff).ram(); + map(0x40000000, 0x40000fff).ram().share("steppingstone"); +} /*************************************************************************** MACHINE DRIVERS diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp index 023f4d14f47..d15e513da71 100644 --- a/src/mame/drivers/hp64k.cpp +++ b/src/mame/drivers/hp64k.cpp @@ -324,45 +324,47 @@ private: uint8_t m_phi_reg; }; -ADDRESS_MAP_START(hp64k_state::cpu_mem_map) - AM_RANGE(0x0000 , 0x3fff) AM_ROM - AM_RANGE(0x4000 , 0x7fff) AM_READWRITE(hp64k_slot_r , hp64k_slot_w) - AM_RANGE(0x8000 , 0x8001) AM_WRITE(hp64k_crtc_w) - AM_RANGE(0x8002 , 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hp64k_state::cpu_io_map) +void hp64k_state::cpu_mem_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).rw(this, FUNC(hp64k_state::hp64k_slot_r), FUNC(hp64k_state::hp64k_slot_w)); + map(0x8000, 0x8001).w(this, FUNC(hp64k_state::hp64k_crtc_w)); + map(0x8002, 0xffff).ram(); +} + +void hp64k_state::cpu_io_map(address_map &map) +{ // PA = 0, IC = [0..3] // Keyboard input - AM_RANGE(HP_MAKE_IOADDR(0 , 0) , HP_MAKE_IOADDR(0 , 3)) AM_READ(hp64k_kb_r) + map(HP_MAKE_IOADDR( 0, 0), HP_MAKE_IOADDR( 0, 3)).r(this, FUNC(hp64k_state::hp64k_kb_r)); // PA = 2, IC = [0..3] // Line sync interrupt clear/watchdog reset - AM_RANGE(HP_MAKE_IOADDR(2 , 0) , HP_MAKE_IOADDR(2 , 3)) AM_READWRITE(hp64k_deltat_r , hp64k_deltat_w) + map(HP_MAKE_IOADDR( 2, 0), HP_MAKE_IOADDR( 2, 3)).rw(this, FUNC(hp64k_state::hp64k_deltat_r), FUNC(hp64k_state::hp64k_deltat_w)); // PA = 4, IC = [0..3] // Floppy I/F - AM_RANGE(HP_MAKE_IOADDR(4 , 0) , HP_MAKE_IOADDR(4 , 3)) AM_READWRITE(hp64k_flp_r , hp64k_flp_w) + map(HP_MAKE_IOADDR( 4, 0), HP_MAKE_IOADDR( 4, 3)).rw(this, FUNC(hp64k_state::hp64k_flp_r), FUNC(hp64k_state::hp64k_flp_w)); // PA = 5, IC = [0..3] // Write to USART - AM_RANGE(HP_MAKE_IOADDR(5 , 0) , HP_MAKE_IOADDR(5 , 3)) AM_WRITE(hp64k_usart_w) + map(HP_MAKE_IOADDR( 5, 0), HP_MAKE_IOADDR( 5, 3)).w(this, FUNC(hp64k_state::hp64k_usart_w)); // PA = 6, IC = [0..3] // Read from USART - AM_RANGE(HP_MAKE_IOADDR(6 , 0) , HP_MAKE_IOADDR(6 , 3)) AM_READ(hp64k_usart_r) + map(HP_MAKE_IOADDR( 6, 0), HP_MAKE_IOADDR( 6, 3)).r(this, FUNC(hp64k_state::hp64k_usart_r)); // PA = 7, IC = 1 // PHI - AM_RANGE(HP_MAKE_IOADDR(7 , 1) , HP_MAKE_IOADDR(7 , 1)) AM_READWRITE(hp64k_phi_r , hp64k_phi_w) + map(HP_MAKE_IOADDR( 7, 1), HP_MAKE_IOADDR( 7, 1)).rw(this, FUNC(hp64k_state::hp64k_phi_r), FUNC(hp64k_state::hp64k_phi_w)); // PA = 7, IC = 2 // Rear-panel switches and loopback relay control - AM_RANGE(HP_MAKE_IOADDR(7 , 2) , HP_MAKE_IOADDR(7 , 2)) AM_READWRITE(hp64k_rear_sw_r , hp64k_loopback_w) + map(HP_MAKE_IOADDR( 7, 2), HP_MAKE_IOADDR( 7, 2)).rw(this, FUNC(hp64k_state::hp64k_rear_sw_r), FUNC(hp64k_state::hp64k_loopback_w)); // PA = 9, IC = [0..3] // Beeper control & interrupt status read - AM_RANGE(HP_MAKE_IOADDR(9 , 0) , HP_MAKE_IOADDR(9 , 3)) AM_WRITE(hp64k_beep_w) + map(HP_MAKE_IOADDR( 9, 0), HP_MAKE_IOADDR( 9, 3)).w(this, FUNC(hp64k_state::hp64k_beep_w)); // PA = 10, IC = [0..3] // Slot selection - AM_RANGE(HP_MAKE_IOADDR(10 , 0) , HP_MAKE_IOADDR(10 , 3)) AM_WRITE(hp64k_slot_sel_w) + map(HP_MAKE_IOADDR(10, 0), HP_MAKE_IOADDR(10, 3)).w(this, FUNC(hp64k_state::hp64k_slot_sel_w)); // PA = 12, IC = [0..3] // Interrupt mask - AM_RANGE(HP_MAKE_IOADDR(12 , 0) , HP_MAKE_IOADDR(12 , 3)) AM_WRITE(hp64k_irl_mask_w) -ADDRESS_MAP_END + map(HP_MAKE_IOADDR(12, 0), HP_MAKE_IOADDR(12, 3)).w(this, FUNC(hp64k_state::hp64k_irl_mask_w)); +} hp64k_state::hp64k_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig , type , tag), diff --git a/src/mame/drivers/hp700.cpp b/src/mame/drivers/hp700.cpp index 53a6bdb3e17..be368053a34 100644 --- a/src/mame/drivers/hp700.cpp +++ b/src/mame/drivers/hp700.cpp @@ -28,18 +28,26 @@ private: required_device<scn2681_device> m_duart; }; -ADDRESS_MAP_START(hp700_state::mem_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x20000, 0x2ffff) AM_RAM - AM_RANGE(0x30000, 0x31fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x34000, 0x34000) AM_READNOP - ;map(0x38000, 0x38fff).lrw8("duart_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_duart->read(space, offset >> 8, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_duart->write(space, offset >> 8, data, mem_mask); }); - AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x1fff0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hp700_state::io_map) - AM_RANGE(0x00f2, 0x00f2) AM_WRITENOP -ADDRESS_MAP_END +void hp700_state::mem_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom().region("maincpu", 0); + map(0x20000, 0x2ffff).ram(); + map(0x30000, 0x31fff).ram().share("nvram"); + map(0x34000, 0x34000).nopr(); + map(0x38000, 0x38fff).lrw8("duart_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_duart->read(space, offset >> 8, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_duart->write(space, offset >> 8, data, mem_mask); + }); + map(0xffff0, 0xfffff).rom().region("maincpu", 0x1fff0); +} + +void hp700_state::io_map(address_map &map) +{ + map(0x00f2, 0x00f2).nopw(); +} static INPUT_PORTS_START( hp700_92 ) INPUT_PORTS_END diff --git a/src/mame/drivers/hp80.cpp b/src/mame/drivers/hp80.cpp index 671ccb3c1e2..5e8e217bcdd 100644 --- a/src/mame/drivers/hp80.cpp +++ b/src/mame/drivers/hp80.cpp @@ -1299,32 +1299,34 @@ static INPUT_PORTS_START(hp85) INPUT_PORTS_END -ADDRESS_MAP_START(hp85_state::cpu_mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000 , 0x5fff) AM_ROM - AM_RANGE(0x6000 , 0x7fff) AM_DEVICE("rombank" , address_map_bank_device , amap8) - AM_RANGE(0x8000 , 0xbfff) AM_RAM - AM_RANGE(0xff00 , 0xff00) AM_WRITE(ginten_w) - AM_RANGE(0xff01 , 0xff01) AM_WRITE(gintdis_w) - AM_RANGE(0xff02 , 0xff02) AM_READWRITE(keysts_r , keysts_w) - AM_RANGE(0xff03 , 0xff03) AM_READWRITE(keycod_r , keycod_w) - AM_RANGE(0xff04 , 0xff07) AM_READWRITE(crtc_r , crtc_w) - AM_RANGE(0xff08 , 0xff09) AM_DEVREADWRITE("tape" , hp_1ma6_device , reg_r , reg_w) - AM_RANGE(0xff0a , 0xff0a) AM_READWRITE(clksts_r , clksts_w) - AM_RANGE(0xff0b , 0xff0b) AM_READWRITE(clkdat_r , clkdat_w) - AM_RANGE(0xff0c , 0xff0c) AM_WRITE(prtlen_w) - AM_RANGE(0xff0d , 0xff0d) AM_READWRITE(prchar_r , prchar_w) - AM_RANGE(0xff0e , 0xff0e) AM_READWRITE(prtsts_r , prtctl_w) - AM_RANGE(0xff0f , 0xff0f) AM_WRITE(prtdat_w) - AM_RANGE(0xff18 , 0xff18) AM_WRITE(rselec_w) - AM_RANGE(0xff40 , 0xff40) AM_READWRITE(intrsc_r , intrsc_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hp85_state::rombank_mem_map) - ADDRESS_MAP_UNMAP_HIGH +void hp85_state::cpu_mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).m(m_rombank, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xbfff).ram(); + map(0xff00, 0xff00).w(this, FUNC(hp85_state::ginten_w)); + map(0xff01, 0xff01).w(this, FUNC(hp85_state::gintdis_w)); + map(0xff02, 0xff02).rw(this, FUNC(hp85_state::keysts_r), FUNC(hp85_state::keysts_w)); + map(0xff03, 0xff03).rw(this, FUNC(hp85_state::keycod_r), FUNC(hp85_state::keycod_w)); + map(0xff04, 0xff07).rw(this, FUNC(hp85_state::crtc_r), FUNC(hp85_state::crtc_w)); + map(0xff08, 0xff09).rw("tape", FUNC(hp_1ma6_device::reg_r), FUNC(hp_1ma6_device::reg_w)); + map(0xff0a, 0xff0a).rw(this, FUNC(hp85_state::clksts_r), FUNC(hp85_state::clksts_w)); + map(0xff0b, 0xff0b).rw(this, FUNC(hp85_state::clkdat_r), FUNC(hp85_state::clkdat_w)); + map(0xff0c, 0xff0c).w(this, FUNC(hp85_state::prtlen_w)); + map(0xff0d, 0xff0d).rw(this, FUNC(hp85_state::prchar_r), FUNC(hp85_state::prchar_w)); + map(0xff0e, 0xff0e).rw(this, FUNC(hp85_state::prtsts_r), FUNC(hp85_state::prtctl_w)); + map(0xff0f, 0xff0f).w(this, FUNC(hp85_state::prtdat_w)); + map(0xff18, 0xff18).w(this, FUNC(hp85_state::rselec_w)); + map(0xff40, 0xff40).rw(this, FUNC(hp85_state::intrsc_r), FUNC(hp85_state::intrsc_w)); +} + +void hp85_state::rombank_mem_map(address_map &map) +{ + map.unmap_value_high(); // ROM in bank 0 is always present (it's part of system ROMs) - AM_RANGE(0x0000 , 0x1fff) AM_ROM -ADDRESS_MAP_END + map(0x0000, 0x1fff).rom(); +} MACHINE_CONFIG_START(hp85_state::hp85) MCFG_CPU_ADD("cpu" , HP_CAPRICORN , MASTER_CLOCK / 16) diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp index 6dfb0e0d2c6..ab8448fa871 100644 --- a/src/mame/drivers/hp9845.cpp +++ b/src/mame/drivers/hp9845.cpp @@ -3699,35 +3699,37 @@ MACHINE_CONFIG_END - all LPU RAM is dynamically mapped at machine start according to -ramsize option */ -ADDRESS_MAP_START(hp9845_base_state::global_mem_map) - ADDRESS_MAP_GLOBAL_MASK(0x3f7fff) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x014000 , 0x017fff) AM_RAM AM_SHARE("ppu_ram") - AM_RANGE(0x030000 , 0x037fff) AM_ROM AM_REGION("lpu" , 0) - AM_RANGE(0x050000 , 0x057fff) AM_ROM AM_REGION("ppu" , 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hp9845_base_state::ppu_io_map) - ADDRESS_MAP_UNMAP_LOW +void hp9845_base_state::global_mem_map(address_map &map) +{ + map.global_mask(0x3f7fff); + map.unmap_value_low(); + map(0x014000, 0x017fff).ram().share("ppu_ram"); + map(0x030000, 0x037fff).rom().region("lpu", 0); + map(0x050000, 0x057fff).rom().region("ppu", 0); +} + +void hp9845_base_state::ppu_io_map(address_map &map) +{ + map.unmap_value_low(); // PA = 0, IC = 0..1 // Internal printer - AM_RANGE(HP_MAKE_IOADDR(PRINTER_PA , 0) , HP_MAKE_IOADDR(PRINTER_PA , 1)) AM_DEVREADWRITE("printer" , hp9845_printer_device , printer_r , printer_w) + map(HP_MAKE_IOADDR(PRINTER_PA, 0), HP_MAKE_IOADDR(PRINTER_PA, 1)).rw("printer", FUNC(hp9845_printer_device::printer_r), FUNC(hp9845_printer_device::printer_w)); // PA = 0, IC = 2 // Keyboard scancode input - AM_RANGE(HP_MAKE_IOADDR(0 , 2) , HP_MAKE_IOADDR(0 , 2)) AM_READ(kb_scancode_r) + map(HP_MAKE_IOADDR(0, 2), HP_MAKE_IOADDR(0, 2)).r(this, FUNC(hp9845_base_state::kb_scancode_r)); // PA = 0, IC = 3 // Keyboard status input & keyboard interrupt clear - AM_RANGE(HP_MAKE_IOADDR(0 , 3) , HP_MAKE_IOADDR(0 , 3)) AM_READWRITE(kb_status_r , kb_irq_clear_w) + map(HP_MAKE_IOADDR(0, 3), HP_MAKE_IOADDR(0, 3)).rw(this, FUNC(hp9845_base_state::kb_status_r), FUNC(hp9845_base_state::kb_irq_clear_w)); // PA = 13, IC = 0..3 // Graphic video - AM_RANGE(HP_MAKE_IOADDR(GVIDEO_PA , 0) , HP_MAKE_IOADDR(GVIDEO_PA , 3)) AM_READWRITE(graphic_r , graphic_w) + map(HP_MAKE_IOADDR(GVIDEO_PA, 0), HP_MAKE_IOADDR(GVIDEO_PA, 3)).rw(this, FUNC(hp9845_base_state::graphic_r), FUNC(hp9845_base_state::graphic_w)); // PA = 14, IC = 0..3 // Left-hand side tape drive (T14) - AM_RANGE(HP_MAKE_IOADDR(T14_PA , 0) , HP_MAKE_IOADDR(T14_PA , 3)) AM_DEVREADWRITE("t14" , hp_taco_device , reg_r , reg_w) + map(HP_MAKE_IOADDR(T14_PA, 0), HP_MAKE_IOADDR(T14_PA, 3)).rw("t14", FUNC(hp_taco_device::reg_r), FUNC(hp_taco_device::reg_w)); // PA = 15, IC = 0..3 // Right-hand side tape drive (T15) - AM_RANGE(HP_MAKE_IOADDR(T15_PA , 0) , HP_MAKE_IOADDR(T15_PA , 3)) AM_DEVREADWRITE("t15" , hp_taco_device , reg_r , reg_w) -ADDRESS_MAP_END + map(HP_MAKE_IOADDR(T15_PA, 0), HP_MAKE_IOADDR(T15_PA, 3)).rw("t15", FUNC(hp_taco_device::reg_r), FUNC(hp_taco_device::reg_w)); +} MACHINE_CONFIG_START(hp9845_base_state::hp9845_base) MCFG_CPU_ADD("lpu", HP_5061_3001, 5700000) diff --git a/src/mame/drivers/hp9k.cpp b/src/mame/drivers/hp9k.cpp index 287dde41979..87d9560a691 100644 --- a/src/mame/drivers/hp9k.cpp +++ b/src/mame/drivers/hp9k.cpp @@ -306,23 +306,24 @@ WRITE16_MEMBER(hp9k_state::buserror_w) m_maincpu->set_input_line(M68K_LINE_BUSERROR, CLEAR_LINE); } -ADDRESS_MAP_START(hp9k_state::hp9k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x000909) AM_ROM AM_REGION("bootrom",0) - AM_RANGE(0x00090a, 0x00090d) AM_READWRITE(leds_r,leds_w) - AM_RANGE(0x00090e, 0x00ffff) AM_ROM AM_REGION("bootrom",0x90e) - AM_RANGE(0x010000, 0x427fff) AM_READWRITE(buserror_r,buserror_w) - AM_RANGE(0x428000, 0x428fff) AM_READWRITE(keyboard_r,keyboard_w) - AM_RANGE(0x429000, 0x50ffff) AM_READWRITE(buserror_r,buserror_w) - AM_RANGE(0x510000, 0x51ffff) AM_READWRITE(hp9k_videoram_r,hp9k_videoram_w) - AM_RANGE(0x520000, 0x52ffff) AM_READWRITE(buserror_r,buserror_w) - AM_RANGE(0x530000, 0x53ffff) AM_RAM // graphic memory - AM_RANGE(0x540000, 0x5effff) AM_READWRITE(buserror_r,buserror_w) - AM_RANGE(0x5f0000, 0x5f3fff) AM_READWRITE(hp9k_prom_r,hp9k_prom_w) +void hp9k_state::hp9k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x000909).rom().region("bootrom", 0); + map(0x00090a, 0x00090d).rw(this, FUNC(hp9k_state::leds_r), FUNC(hp9k_state::leds_w)); + map(0x00090e, 0x00ffff).rom().region("bootrom", 0x90e); + map(0x010000, 0x427fff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w)); + map(0x428000, 0x428fff).rw(this, FUNC(hp9k_state::keyboard_r), FUNC(hp9k_state::keyboard_w)); + map(0x429000, 0x50ffff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w)); + map(0x510000, 0x51ffff).rw(this, FUNC(hp9k_state::hp9k_videoram_r), FUNC(hp9k_state::hp9k_videoram_w)); + map(0x520000, 0x52ffff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w)); + map(0x530000, 0x53ffff).ram(); // graphic memory + map(0x540000, 0x5effff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w)); + map(0x5f0000, 0x5f3fff).rw(this, FUNC(hp9k_state::hp9k_prom_r), FUNC(hp9k_state::hp9k_prom_w)); //AM_RANGE(0x5f0000, 0x5f3fff) AM_READWRITE(buserror_r,buserror_w) - AM_RANGE(0x5f4000, 0xfbffff) AM_READWRITE(buserror_r,buserror_w) - AM_RANGE(0xFC0000, 0xffffff) AM_RAM // system ram -ADDRESS_MAP_END + map(0x5f4000, 0xfbffff).rw(this, FUNC(hp9k_state::buserror_r), FUNC(hp9k_state::buserror_w)); + map(0xFC0000, 0xffffff).ram(); // system ram +} /* Input ports */ diff --git a/src/mame/drivers/hp9k_3xx.cpp b/src/mame/drivers/hp9k_3xx.cpp index 5a8a4c8c84d..bef7b14f171 100644 --- a/src/mame/drivers/hp9k_3xx.cpp +++ b/src/mame/drivers/hp9k_3xx.cpp @@ -183,93 +183,102 @@ uint32_t hp9k3xx_state::hp_medres_update(screen_device &screen, bitmap_rgb32 &bi } // shared mappings for all 9000/3xx systems -ADDRESS_MAP_START(hp9k3xx_state::hp9k3xx_common) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("maincpu",0) AM_WRITE(led_w) // writes to 1fffc are the LED +void hp9k3xx_state::hp9k3xx_common(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom().region("maincpu", 0).w(this, FUNC(hp9k3xx_state::led_w)); // writes to 1fffc are the LED - AM_RANGE(0x00428000, 0x00428003) AM_DEVREADWRITE8(IOCPU_TAG, upi41_cpu_device, upi41_master_r, upi41_master_w, 0x00ff00ff) + map(0x00428000, 0x00428003).rw(m_iocpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask32(0x00ff00ff); - AM_RANGE(0x00510000, 0x00510003) AM_READWRITE(buserror_r, buserror_w) // no "Alpha display" - AM_RANGE(0x00538000, 0x00538003) AM_READWRITE(buserror_r, buserror_w) // no "Graphics" - AM_RANGE(0x005c0000, 0x005c0003) AM_READWRITE(buserror_r, buserror_w) // no add-on FP coprocessor + map(0x00510000, 0x00510003).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display" + map(0x00538000, 0x00538003).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Graphics" + map(0x005c0000, 0x005c0003).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no add-on FP coprocessor - AM_RANGE(0x00600000, 0x007fffff) AM_READWRITE(buserror_r, buserror_w) // prevent reading invalid DIO slots - AM_RANGE(0x01000000, 0x1fffffff) AM_READWRITE(buserror_r, buserror_w) // prevent reading invalid DIO-II slots + map(0x00600000, 0x007fffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // prevent reading invalid DIO slots + map(0x01000000, 0x1fffffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // prevent reading invalid DIO-II slots - AM_RANGE(0x005f8000, 0x005f800f) AM_DEVREADWRITE8(PTM6840_TAG, ptm6840_device, read, write, 0x00ff00ff) -ADDRESS_MAP_END + map(0x005f8000, 0x005f800f).rw(PTM6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask32(0x00ff00ff); +} // 9000/310 - has onboard video that the graphics card used in other 3xxes conflicts with -ADDRESS_MAP_START(hp9k3xx_state::hp9k310_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_REGION("maincpu",0) AM_WRITENOP // writes to 1fffc are the LED +void hp9k3xx_state::hp9k310_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom().region("maincpu", 0).nopw(); // writes to 1fffc are the LED - AM_RANGE(0x00428000, 0x00428003) AM_DEVREADWRITE8(IOCPU_TAG, upi41_cpu_device, upi41_master_r, upi41_master_w, 0x00ff) + map(0x00428000, 0x00428003).rw(m_iocpu, FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask16(0x00ff); - AM_RANGE(0x510000, 0x510003) AM_READWRITE(buserror16_r, buserror16_w) // no "Alpha display" - AM_RANGE(0x538000, 0x538003) AM_READWRITE(buserror16_r, buserror16_w) // no "Graphics" - AM_RANGE(0x5c0000, 0x5c0003) AM_READWRITE(buserror16_r, buserror16_w) // no add-on FP coprocessor + map(0x510000, 0x510003).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // no "Alpha display" + map(0x538000, 0x538003).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // no "Graphics" + map(0x5c0000, 0x5c0003).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // no add-on FP coprocessor - AM_RANGE(0x5f8000, 0x5f800f) AM_DEVREADWRITE8(PTM6840_TAG, ptm6840_device, read, write, 0x00ff) - AM_RANGE(0x600000, 0x7fffff) AM_READWRITE(buserror16_r, buserror16_w) // prevent reading invalid DIO slots - AM_RANGE(0x800000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x5f8000, 0x5f800f).rw(PTM6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0x600000, 0x7fffff).rw(this, FUNC(hp9k3xx_state::buserror16_r), FUNC(hp9k3xx_state::buserror16_w)); // prevent reading invalid DIO slots + map(0x800000, 0xffffff).ram(); +} // 9000/320 -ADDRESS_MAP_START(hp9k3xx_state::hp9k320_map) - AM_IMPORT_FROM(hp9k3xx_common) +void hp9k3xx_state::hp9k320_map(address_map &map) +{ + hp9k3xx_common(map); - AM_RANGE(0xffe00000, 0xffefffff) AM_READWRITE(buserror_r, buserror_w) - AM_RANGE(0xfff00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END + map(0xffe00000, 0xffefffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); + map(0xfff00000, 0xffffffff).ram(); +} // 9000/330 and 9000/340 -ADDRESS_MAP_START(hp9k3xx_state::hp9k330_map) - AM_IMPORT_FROM(hp9k3xx_common) +void hp9k3xx_state::hp9k330_map(address_map &map) +{ + hp9k3xx_common(map); - AM_RANGE(0xffb00000, 0xffbfffff) AM_READWRITE(buserror_r, buserror_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END + map(0xffb00000, 0xffbfffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); + map(0xffc00000, 0xffffffff).ram(); +} // 9000/332, with built-in medium-res video -ADDRESS_MAP_START(hp9k3xx_state::hp9k332_map) - AM_IMPORT_FROM(hp9k3xx_common) +void hp9k3xx_state::hp9k332_map(address_map &map) +{ + hp9k3xx_common(map); - AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_SHARE("vram") // 98544 mono framebuffer - AM_RANGE(0x00560000, 0x00563fff) AM_ROM AM_REGION("graphics", 0x0000) // 98544 mono ROM + map(0x00200000, 0x002fffff).ram().share("vram"); // 98544 mono framebuffer + map(0x00560000, 0x00563fff).rom().region("graphics", 0x0000); // 98544 mono ROM - AM_RANGE(0xffb00000, 0xffbfffff) AM_READWRITE(buserror_r, buserror_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_RAM -ADDRESS_MAP_END + map(0xffb00000, 0xffbfffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); + map(0xffc00000, 0xffffffff).ram(); +} // 9000/370 - 8 MB RAM standard -ADDRESS_MAP_START(hp9k3xx_state::hp9k370_map) - AM_IMPORT_FROM(hp9k3xx_common) +void hp9k3xx_state::hp9k370_map(address_map &map) +{ + hp9k3xx_common(map); - AM_RANGE(0xff700000, 0xff7fffff) AM_READWRITE(buserror_r, buserror_w) - AM_RANGE(0xff800000, 0xffffffff) AM_RAM -ADDRESS_MAP_END + map(0xff700000, 0xff7fffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); + map(0xff800000, 0xffffffff).ram(); +} // 9000/380 - '040 -ADDRESS_MAP_START(hp9k3xx_state::hp9k380_map) - AM_IMPORT_FROM(hp9k3xx_common) +void hp9k3xx_state::hp9k380_map(address_map &map) +{ + hp9k3xx_common(map); - AM_RANGE(0x0051a000, 0x0051afff) AM_READWRITE(buserror_r, buserror_w) // no "Alpha display" + map(0x0051a000, 0x0051afff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display" - AM_RANGE(0xc0000000, 0xff7fffff) AM_READWRITE(buserror_r, buserror_w) - AM_RANGE(0xff800000, 0xffffffff) AM_RAM -ADDRESS_MAP_END + map(0xc0000000, 0xff7fffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); + map(0xff800000, 0xffffffff).ram(); +} // 9000/382 - onboard VGA compatible video (where?) -ADDRESS_MAP_START(hp9k3xx_state::hp9k382_map) - AM_IMPORT_FROM(hp9k3xx_common) +void hp9k3xx_state::hp9k382_map(address_map &map) +{ + hp9k3xx_common(map); - AM_RANGE(0xffb00000, 0xffbfffff) AM_READWRITE(buserror_r, buserror_w) - AM_RANGE(0xffc00000, 0xffffffff) AM_RAM + map(0xffb00000, 0xffbfffff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); + map(0xffc00000, 0xffffffff).ram(); - AM_RANGE(0x0051a000, 0x0051afff) AM_READWRITE(buserror_r, buserror_w) // no "Alpha display" -ADDRESS_MAP_END + map(0x0051a000, 0x0051afff).rw(this, FUNC(hp9k3xx_state::buserror_r), FUNC(hp9k3xx_state::buserror_w)); // no "Alpha display" +} -ADDRESS_MAP_START(hp9k3xx_state::iocpu_map) -ADDRESS_MAP_END +void hp9k3xx_state::iocpu_map(address_map &map) +{ +} uint32_t hp9k3xx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { diff --git a/src/mame/drivers/hp_ipc.cpp b/src/mame/drivers/hp_ipc.cpp index c43134c2399..69ccb693948 100644 --- a/src/mame/drivers/hp_ipc.cpp +++ b/src/mame/drivers/hp_ipc.cpp @@ -464,38 +464,40 @@ void hp_ipc_state::set_bus_error(uint32_t address, bool write, uint16_t mem_mask m_bus_error_timer->adjust(m_maincpu->cycles_to_attotime(16)); // let rmw cycles complete } -ADDRESS_MAP_START(hp_ipc_state::hp_ipc_mem_outer) - AM_RANGE(0x000000, 0xFFFFFF) AM_READWRITE(mem_r, mem_w) -ADDRESS_MAP_END +void hp_ipc_state::hp_ipc_mem_outer(address_map &map) +{ + map(0x000000, 0xFFFFFF).rw(this, FUNC(hp_ipc_state::mem_r), FUNC(hp_ipc_state::mem_w)); +} -ADDRESS_MAP_START(hp_ipc_state::hp_ipc_mem_inner) +void hp_ipc_state::hp_ipc_mem_inner(address_map &map) +{ // bus error handler - AM_RANGE(0x0000000, 0x1FFFFFF) AM_READWRITE(trap_r, trap_w) + map(0x0000000, 0x1FFFFFF).rw(this, FUNC(hp_ipc_state::trap_r), FUNC(hp_ipc_state::trap_w)); // user mode - AM_RANGE(0x1000000, 0x17FFFFF) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x1800000, 0x187FFFF) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x1E20000, 0x1E2000F) AM_DEVREADWRITE8("gpu", hp1ll3_device, read, write, 0x00ff) - AM_RANGE(0x1E40000, 0x1E4002F) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff) + map(0x1000000, 0x17FFFFF).rw(this, FUNC(hp_ipc_state::ram_r), FUNC(hp_ipc_state::ram_w)); + map(0x1800000, 0x187FFFF).rom().region("maincpu", 0); + map(0x1E20000, 0x1E2000F).rw("gpu", FUNC(hp1ll3_device::read), FUNC(hp1ll3_device::write)).umask16(0x00ff); + map(0x1E40000, 0x1E4002F).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff); // supervisor mode - AM_RANGE(0x0000000, 0x007FFFF) AM_ROM AM_REGION("maincpu", 0) // Internal ROM (operating system PCA) - AM_RANGE(0x0080000, 0x00FFFFF) AM_UNMAP // Internal ROM (option ROM PCA) - AM_RANGE(0x0100000, 0x04FFFFF) AM_UNMAP // External ROM modules - AM_RANGE(0x0600000, 0x060FFFF) AM_READWRITE(mmu_r, mmu_w) - AM_RANGE(0x0610000, 0x0610007) AM_READWRITE8(floppy_id_r, floppy_id_w, 0x00ff) - AM_RANGE(0x0610008, 0x061000F) AM_DEVREADWRITE8("fdc", wd2797_device, read, write, 0x00ff) - AM_RANGE(0x0620000, 0x062000F) AM_DEVREADWRITE8("gpu", hp1ll3_device, read, write, 0x00ff) - AM_RANGE(0x0630000, 0x063FFFF) AM_NOP // AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff) - AM_RANGE(0x0640000, 0x064002F) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff) - AM_RANGE(0x0650000, 0x065FFFF) AM_NOP // HP-IL Printer (optional; ROM sets _desktop to 0 if not mapped) -- sys/lpint.h - AM_RANGE(0x0660000, 0x06600FF) AM_DEVREADWRITE8("mlc", hp_hil_mlc_device, read, write, 0x00ff) // 'caravan', scrn/caravan.h - AM_RANGE(0x0670000, 0x067FFFF) AM_NOP // Speaker (NatSemi COP 452) - AM_RANGE(0x0680000, 0x068FFFF) AM_NOP // 'SIMON (98628) fast HP-IB card' -- sys/simon.h - AM_RANGE(0x0700000, 0x07FFFFF) AM_UNMAP // External I/O - AM_RANGE(0x0800000, 0x0FFFFFF) AM_READWRITE(ram_r, ram_w) - -ADDRESS_MAP_END + map(0x0000000, 0x007FFFF).rom().region("maincpu", 0); // Internal ROM (operating system PCA) + map(0x0080000, 0x00FFFFF).unmaprw(); // Internal ROM (option ROM PCA) + map(0x0100000, 0x04FFFFF).unmaprw(); // External ROM modules + map(0x0600000, 0x060FFFF).rw(this, FUNC(hp_ipc_state::mmu_r), FUNC(hp_ipc_state::mmu_w)); + map(0x0610000, 0x0610007).rw(this, FUNC(hp_ipc_state::floppy_id_r), FUNC(hp_ipc_state::floppy_id_w)).umask16(0x00ff); + map(0x0610008, 0x061000F).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff); + map(0x0620000, 0x062000F).rw("gpu", FUNC(hp1ll3_device::read), FUNC(hp1ll3_device::write)).umask16(0x00ff); + map(0x0630000, 0x063FFFF).noprw(); // AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff) + map(0x0640000, 0x064002F).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0x00ff); + map(0x0650000, 0x065FFFF).noprw(); // HP-IL Printer (optional; ROM sets _desktop to 0 if not mapped) -- sys/lpint.h + map(0x0660000, 0x06600FF).rw("mlc", FUNC(hp_hil_mlc_device::read), FUNC(hp_hil_mlc_device::write)).umask16(0x00ff); // 'caravan', scrn/caravan.h + map(0x0670000, 0x067FFFF).noprw(); // Speaker (NatSemi COP 452) + map(0x0680000, 0x068FFFF).noprw(); // 'SIMON (98628) fast HP-IB card' -- sys/simon.h + map(0x0700000, 0x07FFFFF).unmaprw(); // External I/O + map(0x0800000, 0x0FFFFFF).rw(this, FUNC(hp_ipc_state::ram_r), FUNC(hp_ipc_state::ram_w)); + +} static INPUT_PORTS_START(hp_ipc) INPUT_PORTS_END diff --git a/src/mame/drivers/hprot1.cpp b/src/mame/drivers/hprot1.cpp index 4ee3a9a262e..26db5ffc2df 100644 --- a/src/mame/drivers/hprot1.cpp +++ b/src/mame/drivers/hprot1.cpp @@ -91,9 +91,10 @@ private: #define LOG_IO_PORTS 0 -ADDRESS_MAP_START(hprot1_state::i80c31_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void hprot1_state::i80c31_prg(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} DRIVER_INIT_MEMBER( hprot1_state, hprot1 ) { @@ -126,16 +127,17 @@ DRIVER_INIT_MEMBER( hprot1_state, hprot1 ) //P1.4 => WhatchDog Input (after timeout resets CPU) -ADDRESS_MAP_START(hprot1_state::i80c31_io) - AM_RANGE(0x0000,0x7fff) AM_RAM +void hprot1_state::i80c31_io(address_map &map) +{ + map(0x0000, 0x7fff).ram(); /*TODO: verify the mirror mask value for the HD44780 device */ - AM_RANGE(0xc000,0xc000) AM_MIRROR(0x13cf) AM_DEVWRITE("hd44780", hd44780_device, control_write) - AM_RANGE(0xc010,0xc010) AM_MIRROR(0x13cf) AM_DEVWRITE("hd44780", hd44780_device, data_write) - AM_RANGE(0xc020,0xc020) AM_MIRROR(0x13cf) AM_DEVREAD("hd44780", hd44780_device, control_read) - AM_RANGE(0xc030,0xc030) AM_MIRROR(0x13cf) AM_DEVREAD("hd44780", hd44780_device, data_read) + map(0xc000, 0xc000).mirror(0x13cf).w(m_lcdc, FUNC(hd44780_device::control_write)); + map(0xc010, 0xc010).mirror(0x13cf).w(m_lcdc, FUNC(hd44780_device::data_write)); + map(0xc020, 0xc020).mirror(0x13cf).r(m_lcdc, FUNC(hd44780_device::control_read)); + map(0xc030, 0xc030).mirror(0x13cf).r(m_lcdc, FUNC(hd44780_device::data_read)); /*TODO: attach the watchdog/brownout reset device: AM_RANGE(0xe000,0xe0??) AM_MIRROR(?) AM_DEVREAD("adm965an", adm965an_device, data_read) */ -ADDRESS_MAP_END +} static INPUT_PORTS_START( hprot1 ) /* FIXME: I am still unsure whether all these inputs are Active High or Active Low: */ diff --git a/src/mame/drivers/hpz80unk.cpp b/src/mame/drivers/hpz80unk.cpp index 35c80434551..d2125ebb6e6 100644 --- a/src/mame/drivers/hpz80unk.cpp +++ b/src/mame/drivers/hpz80unk.cpp @@ -100,26 +100,28 @@ READ8_MEMBER( hpz80unk_state::portfc_r ) return 0xfe; // or it halts } -ADDRESS_MAP_START(hpz80unk_state::hpz80unk_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM AM_SHARE("rom") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hpz80unk_state::hpz80unk_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(port00_r) // uart1 status - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("uart1", ay31015_device, receive, transmit) // uart1 data - AM_RANGE(0x02, 0x02) AM_READ(port02_r) - AM_RANGE(0x03, 0x03) AM_READ(port03_r) // uart2 status - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart2", ay31015_device, receive, transmit) // uart2 data - AM_RANGE(0x0d, 0x0d) AM_READ(port0d_r) // uart3 status - AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("uart3", ay31015_device, transmit) // uart3 data - AM_RANGE(0x1d, 0x1e) // top of memory is written here, big-endian - AM_RANGE(0x1f, 0x1f) AM_READ_PORT("DSW") // select which uarts to use - AM_RANGE(0xfc, 0xfc) AM_READ(portfc_r) -ADDRESS_MAP_END +void hpz80unk_state::hpz80unk_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xbfff).ram(); + map(0xc000, 0xffff).rom().share("rom"); +} + +void hpz80unk_state::hpz80unk_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(hpz80unk_state::port00_r)); // uart1 status + map(0x01, 0x01).rw("uart1", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); // uart1 data + map(0x02, 0x02).r(this, FUNC(hpz80unk_state::port02_r)); + map(0x03, 0x03).r(this, FUNC(hpz80unk_state::port03_r)); // uart2 status + map(0x04, 0x04).rw("uart2", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); // uart2 data + map(0x0d, 0x0d).r(this, FUNC(hpz80unk_state::port0d_r)); // uart3 status + map(0x0e, 0x0e).w("uart3", FUNC(ay31015_device::transmit)); // uart3 data + map(0x1d, 0x1e); // top of memory is written here, big-endian + map(0x1f, 0x1f).portr("DSW"); // select which uarts to use + map(0xfc, 0xfc).r(this, FUNC(hpz80unk_state::portfc_r)); +} /* Input ports */ static INPUT_PORTS_START( hpz80unk ) diff --git a/src/mame/drivers/ht68k.cpp b/src/mame/drivers/ht68k.cpp index 46dc104d839..17502b912b6 100644 --- a/src/mame/drivers/ht68k.cpp +++ b/src/mame/drivers/ht68k.cpp @@ -70,15 +70,16 @@ public: }; -ADDRESS_MAP_START(ht68k_state::ht68k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot +void ht68k_state::ht68k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0007ffff).ram().share("p_ram"); // 512 KB RAM / ROM at boot //AM_RANGE(0x00080000, 0x000fffff) // Expansion //AM_RANGE(0x00d80000, 0x00d8ffff) // Printer - AM_RANGE(0x00e00000, 0x00e00007) AM_MIRROR(0xfff8) AM_DEVREADWRITE8("wd1770", wd1770_device, read, write, 0x00ff) // FDC WD1770 - AM_RANGE(0x00e80000, 0x00e800ff) AM_MIRROR(0xff00) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff ) - AM_RANGE(0x00f00000, 0x00f07fff) AM_ROM AM_MIRROR(0xf8000) AM_REGION("user1",0) -ADDRESS_MAP_END + map(0x00e00000, 0x00e00007).mirror(0xfff8).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write)).umask16(0x00ff); // FDC WD1770 + map(0x00e80000, 0x00e800ff).mirror(0xff00).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x00f00000, 0x00f07fff).rom().mirror(0xf8000).region("user1", 0); +} /* Input ports */ static INPUT_PORTS_START( ht68k ) diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp index 5fa485282a2..c899f1b47e3 100644 --- a/src/mame/drivers/huebler.cpp +++ b/src/mame/drivers/huebler.cpp @@ -83,26 +83,28 @@ READ8_MEMBER( amu880_state::keyboard_r ) /* Memory Maps */ -ADDRESS_MAP_START(amu880_state::amu880_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xf000, 0xfbff) AM_ROM - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(amu880_state::amu880_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void amu880_state::amu880_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().share("video_ram"); + map(0xf000, 0xfbff).rom(); + map(0xfc00, 0xffff).ram(); +} + +void amu880_state::amu880_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_WRITE(power_off_w) // AM_RANGE(0x04, 0x04) AM_MIRROR(0x02) AM_WRITE(tone_off_w) // AM_RANGE(0x05, 0x05) AM_MIRROR(0x02) AM_WRITE(tone_on_w) - AM_RANGE(0x08, 0x09) AM_MIRROR(0x02) AM_READ(keyboard_r) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read_alt, write_alt) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read_alt, write_alt) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, ba_cd_r, ba_cd_w) -ADDRESS_MAP_END + map(0x08, 0x09).mirror(0x02).r(this, FUNC(amu880_state::keyboard_r)); + map(0x0c, 0x0f).rw(Z80PIO2_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x10, 0x13).rw(Z80PIO1_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x14, 0x17).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x18, 0x1b).rw(m_z80sio, FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/hunter2.cpp b/src/mame/drivers/hunter2.cpp index dee69f599c7..c82443a40be 100644 --- a/src/mame/drivers/hunter2.cpp +++ b/src/mame/drivers/hunter2.cpp @@ -88,37 +88,40 @@ private: required_device<address_map_bank_device> m_bank3; }; -ADDRESS_MAP_START(hunter2_state::hunter2_banked_mem) - AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("roms", 0x0000) - AM_RANGE(0x30000, 0x3ffff) AM_NOP - AM_RANGE(0x40000, 0xfffff) AM_RAM AM_REGION("rams", 0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(hunter2_state::hunter2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8) - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank2", address_map_bank_device, read8, write8) - AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank3", address_map_bank_device, read8, write8) - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hunter2_state::hunter2_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1f) AM_DEVREADWRITE("iotimer", nsc810_device, read, write) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("lcdc", hd61830_device, data_w) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("lcdc", hd61830_device, status_r, control_w) - AM_RANGE(0x3e, 0x3e) AM_DEVREAD("lcdc", hd61830_device, data_r) - AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", mm58274c_device, read, write) - AM_RANGE(0x60, 0x60) AM_WRITE(display_ctrl_w) - AM_RANGE(0x80, 0x80) AM_WRITE(port80_w) - AM_RANGE(0x81, 0x81) AM_WRITE(serial_tx_w) - AM_RANGE(0x82, 0x82) AM_WRITE(serial_dtr_w) - AM_RANGE(0x84, 0x84) AM_WRITE(serial_rts_w) - AM_RANGE(0x86, 0x86) AM_WRITE(speaker_w) - AM_RANGE(0xbb, 0xbb) AM_WRITE(irqctrl_w) - AM_RANGE(0xe0, 0xe0) AM_WRITE(memmap_w) -ADDRESS_MAP_END +void hunter2_state::hunter2_banked_mem(address_map &map) +{ + map(0x00000, 0x2ffff).rom().region("roms", 0x0000); + map(0x30000, 0x3ffff).noprw(); + map(0x40000, 0xfffff).ram().region("rams", 0x0000); +} + +void hunter2_state::hunter2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rw(m_bank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x4000, 0x7fff).rw(m_bank2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0xbfff).rw(m_bank3, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xffff).ram(); +} + +void hunter2_state::hunter2_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x1f).rw("iotimer", FUNC(nsc810_device::read), FUNC(nsc810_device::write)); + map(0x20, 0x20).w("lcdc", FUNC(hd61830_device::data_w)); + map(0x21, 0x21).rw("lcdc", FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w)); + map(0x3e, 0x3e).r("lcdc", FUNC(hd61830_device::data_r)); + map(0x40, 0x4f).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)); + map(0x60, 0x60).w(this, FUNC(hunter2_state::display_ctrl_w)); + map(0x80, 0x80).w(this, FUNC(hunter2_state::port80_w)); + map(0x81, 0x81).w(this, FUNC(hunter2_state::serial_tx_w)); + map(0x82, 0x82).w(this, FUNC(hunter2_state::serial_dtr_w)); + map(0x84, 0x84).w(this, FUNC(hunter2_state::serial_rts_w)); + map(0x86, 0x86).w(this, FUNC(hunter2_state::speaker_w)); + map(0xbb, 0xbb).w(this, FUNC(hunter2_state::irqctrl_w)); + map(0xe0, 0xe0).w(this, FUNC(hunter2_state::memmap_w)); +} /* Input ports */ diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp index ad594e4d806..8dd8c8286f6 100644 --- a/src/mame/drivers/hvyunit.cpp +++ b/src/mame/drivers/hvyunit.cpp @@ -387,61 +387,67 @@ WRITE8_MEMBER(hvyunit_state::mermaid_p3_w) * *************************************/ -ADDRESS_MAP_START(hvyunit_state::master_memory) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("master_bank") - AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_r, spriteram_w) - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hvyunit_state::master_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(master_bankswitch_w) - AM_RANGE(0x01, 0x01) AM_WRITE(master_bankswitch_w) // correct? - AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_slave_cpu) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(hvyunit_state::slave_memory) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slave_bank") - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(hu_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(hu_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xd000, 0xd1ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hvyunit_state::slave_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(slave_bankswitch_w) - AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_sound_cpu2) - AM_RANGE(0x04, 0x04) AM_DEVREAD("slavelatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mermaidlatch", generic_latch_8_device, write) - AM_RANGE(0x06, 0x06) AM_WRITE(hu_scrolly_w) - AM_RANGE(0x08, 0x08) AM_WRITE(hu_scrollx_w) - AM_RANGE(0x0c, 0x0c) AM_READ(mermaid_status_r) - AM_RANGE(0x0e, 0x0e) AM_WRITE(coin_count_w) +void hvyunit_state::master_memory(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("master_bank"); + map(0xc000, 0xcfff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_r), FUNC(kaneko_pandora_device::spriteram_w)); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xffff).ram().share("share1"); +} + +void hvyunit_state::master_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(hvyunit_state::master_bankswitch_w)); + map(0x01, 0x01).w(this, FUNC(hvyunit_state::master_bankswitch_w)); // correct? + map(0x02, 0x02).w(this, FUNC(hvyunit_state::trigger_nmi_on_slave_cpu)); +} + + +void hvyunit_state::slave_memory(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("slave_bank"); + map(0xc000, 0xc3ff).ram().w(this, FUNC(hvyunit_state::hu_videoram_w)).share("videoram"); + map(0xc400, 0xc7ff).ram().w(this, FUNC(hvyunit_state::hu_colorram_w)).share("colorram"); + map(0xd000, 0xdfff).ram(); + map(0xd000, 0xd1ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xd800, 0xd9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe000, 0xffff).ram().share("share1"); +} + +void hvyunit_state::slave_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(hvyunit_state::slave_bankswitch_w)); + map(0x02, 0x02).w(this, FUNC(hvyunit_state::trigger_nmi_on_sound_cpu2)); + map(0x04, 0x04).r(m_slavelatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x04).w(m_mermaidlatch, FUNC(generic_latch_8_device::write)); + map(0x06, 0x06).w(this, FUNC(hvyunit_state::hu_scrolly_w)); + map(0x08, 0x08).w(this, FUNC(hvyunit_state::hu_scrollx_w)); + map(0x0c, 0x0c).r(this, FUNC(hvyunit_state::mermaid_status_r)); + map(0x0e, 0x0e).w(this, FUNC(hvyunit_state::coin_count_w)); // AM_RANGE(0x22, 0x22) AM_READ(hu_scrolly_hi_reset) //22/a2 taken from ram $f065 // AM_RANGE(0xa2, 0xa2) AM_READ(hu_scrolly_hi_set) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(hvyunit_state::sound_memory) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("sound_bank") - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END +void hvyunit_state::sound_memory(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("sound_bank"); + map(0xc000, 0xc7ff).ram(); +} -ADDRESS_MAP_START(hvyunit_state::sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void hvyunit_state::sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(hvyunit_state::sound_bankswitch_w)); + map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /************************************* diff --git a/src/mame/drivers/hx20.cpp b/src/mame/drivers/hx20.cpp index e1f807263e5..1ce187e5f8a 100644 --- a/src/mame/drivers/hx20.cpp +++ b/src/mame/drivers/hx20.cpp @@ -548,65 +548,70 @@ WRITE8_MEMBER( hx20_state::slave_p4_w ) // ADDRESS_MAP( hx20_mem ) //------------------------------------------------- -ADDRESS_MAP_START(hx20_state::hx20_mem) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_MAIN_TAG, hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0020, 0x0020) AM_WRITE(ksc_w) - AM_RANGE(0x0022, 0x0022) AM_READ(krtn07_r) - AM_RANGE(0x0026, 0x0026) AM_WRITE(lcd_cs_w) - AM_RANGE(0x0028, 0x0028) AM_READ(krtn89_r) - AM_RANGE(0x002a, 0x002a) AM_WRITE(lcd_data_w) - AM_RANGE(0x002c, 0x002c) // mask interruption by using IC 8E in sleep mode - AM_RANGE(0x0040, 0x007f) AM_DEVREADWRITE(MC146818_TAG, mc146818_device, read, write) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x3fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_READ(optrom_r) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(HD6301V1_MAIN_TAG, 0) -ADDRESS_MAP_END +void hx20_state::hx20_mem(address_map &map) +{ + map(0x0000, 0x001f).rw(m_maincpu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0020, 0x0020).w(this, FUNC(hx20_state::ksc_w)); + map(0x0022, 0x0022).r(this, FUNC(hx20_state::krtn07_r)); + map(0x0026, 0x0026).w(this, FUNC(hx20_state::lcd_cs_w)); + map(0x0028, 0x0028).r(this, FUNC(hx20_state::krtn89_r)); + map(0x002a, 0x002a).w(this, FUNC(hx20_state::lcd_data_w)); + map(0x002c, 0x002c); // mask interruption by using IC 8E in sleep mode + map(0x0040, 0x007f).rw(m_rtc, FUNC(mc146818_device::read), FUNC(mc146818_device::write)); + map(0x0080, 0x00ff).ram(); + map(0x0100, 0x3fff).ram(); + map(0x6000, 0x7fff).rom().r(this, FUNC(hx20_state::optrom_r)); + map(0x8000, 0xffff).rom().region(HD6301V1_MAIN_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( hx20_io ) //------------------------------------------------- -ADDRESS_MAP_START(hx20_state::hx20_io) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(main_p1_r, main_p1_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(main_p2_r, main_p2_w) - AM_RANGE(M6801_PORT3, M6801_PORT3) AM_NOP // A0-A7, D0-D7 - AM_RANGE(M6801_PORT4, M6801_PORT4) AM_NOP // A8-A15 -ADDRESS_MAP_END +void hx20_state::hx20_io(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(hx20_state::main_p1_r), FUNC(hx20_state::main_p1_w)); + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(hx20_state::main_p2_r), FUNC(hx20_state::main_p2_w)); + map(M6801_PORT3, M6801_PORT3).noprw(); // A0-A7, D0-D7 + map(M6801_PORT4, M6801_PORT4).noprw(); // A8-A15 +} //------------------------------------------------- // ADDRESS_MAP( hx20_sub_mem ) //------------------------------------------------- -ADDRESS_MAP_START(hx20_state::hx20_sub_mem) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_SLAVE_TAG, hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6301V1_SLAVE_TAG, 0) -ADDRESS_MAP_END +void hx20_state::hx20_sub_mem(address_map &map) +{ + map(0x0000, 0x001f).rw(m_subcpu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0xf000, 0xffff).rom().region(HD6301V1_SLAVE_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( hx20_sub_io ) //------------------------------------------------- -ADDRESS_MAP_START(hx20_state::hx20_sub_io) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(slave_p1_r, slave_p1_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(slave_p2_r, slave_p2_w) - AM_RANGE(M6801_PORT3, M6801_PORT3) AM_READWRITE(slave_p3_r, slave_p3_w) - AM_RANGE(M6801_PORT4, M6801_PORT4) AM_READWRITE(slave_p4_r, slave_p4_w) -ADDRESS_MAP_END +void hx20_state::hx20_sub_io(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(hx20_state::slave_p1_r), FUNC(hx20_state::slave_p1_w)); + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(hx20_state::slave_p2_r), FUNC(hx20_state::slave_p2_w)); + map(M6801_PORT3, M6801_PORT3).rw(this, FUNC(hx20_state::slave_p3_r), FUNC(hx20_state::slave_p3_w)); + map(M6801_PORT4, M6801_PORT4).rw(this, FUNC(hx20_state::slave_p4_r), FUNC(hx20_state::slave_p4_w)); +} //------------------------------------------------- // ADDRESS_MAP( cm6000_mem ) //------------------------------------------------- -ADDRESS_MAP_START(hx20_state::cm6000_mem) - AM_IMPORT_FROM(hx20_mem) - AM_RANGE(0x4000, 0xffff) AM_ROM AM_REGION(HD6301V1_MAIN_TAG, 0) -ADDRESS_MAP_END +void hx20_state::cm6000_mem(address_map &map) +{ + hx20_mem(map); + map(0x4000, 0xffff).rom().region(HD6301V1_MAIN_TAG, 0); +} //************************************************************************** diff --git a/src/mame/drivers/hyhoo.cpp b/src/mame/drivers/hyhoo.cpp index e2350e9a91c..d7092675ebf 100644 --- a/src/mame/drivers/hyhoo.cpp +++ b/src/mame/drivers/hyhoo.cpp @@ -34,29 +34,31 @@ Memo: #include "speaker.h" -ADDRESS_MAP_START(hyhoo_state::hyhoo_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void hyhoo_state::hyhoo_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram().share("nvram"); +} -ADDRESS_MAP_START(hyhoo_state::hyhoo_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void hyhoo_state::hyhoo_io_map(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x90, 0x97) AM_WRITE(hyhoo_blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xcf) AM_WRITEONLY AM_SHARE("clut") - AM_RANGE(0xd0, 0xd0) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) // unknown read - AM_RANGE(0xe0, 0xe0) AM_WRITE(hyhoo_romsel_w) - AM_RANGE(0xe0, 0xe1) AM_DEVREAD("nb1413m3", nb1413m3_device, gfxrom_r) - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).portr("SYSTEM"); + map(0x90, 0x97).w(this, FUNC(hyhoo_state::hyhoo_blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xcf).writeonly().share("clut"); + map(0xd0, 0xd0).nopr().w("dac", FUNC(dac_byte_interface::write)); // unknown read + map(0xe0, 0xe0).w(this, FUNC(hyhoo_state::hyhoo_romsel_w)); + map(0xe0, 0xe1).r(m_nb1413m3, FUNC(nb1413m3_device::gfxrom_r)); + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); // AM_RANGE(0xf0, 0xf0) AM_WRITENOP - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} CUSTOM_INPUT_MEMBER( hyhoo_state::nb1413m3_busyflag_r ) { diff --git a/src/mame/drivers/hyperscan.cpp b/src/mame/drivers/hyperscan.cpp index 430aa77cf70..7a57dbd2ccd 100644 --- a/src/mame/drivers/hyperscan.cpp +++ b/src/mame/drivers/hyperscan.cpp @@ -585,15 +585,16 @@ void hyperscan_state::device_timer(emu_timer &timer, device_timer_id id, int par } } -ADDRESS_MAP_START(hyperscan_state::spg290_mem) - ADDRESS_MAP_GLOBAL_MASK(0x1fffffff) - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_MIRROR(0x07000000) - AM_RANGE(0x08000000, 0x09ffffff) AM_READWRITE(spg290_regs_r, spg290_regs_w) - AM_RANGE(0x0a000000, 0x0a003fff) AM_RAM // internal SRAM - AM_RANGE(0x0b000000, 0x0b007fff) AM_ROM AM_REGION("spg290", 0) // internal ROM - AM_RANGE(0x10000000, 0x100fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x0e000000) - AM_RANGE(0x11000000, 0x110fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x0e000000) -ADDRESS_MAP_END +void hyperscan_state::spg290_mem(address_map &map) +{ + map.global_mask(0x1fffffff); + map(0x00000000, 0x00ffffff).ram().mirror(0x07000000); + map(0x08000000, 0x09ffffff).rw(this, FUNC(hyperscan_state::spg290_regs_r), FUNC(hyperscan_state::spg290_regs_w)); + map(0x0a000000, 0x0a003fff).ram(); // internal SRAM + map(0x0b000000, 0x0b007fff).rom().region("spg290", 0); // internal ROM + map(0x10000000, 0x100fffff).rom().region("bios", 0).mirror(0x0e000000); + map(0x11000000, 0x110fffff).rom().region("bios", 0).mirror(0x0e000000); +} /* Input ports */ static INPUT_PORTS_START( hyperscan ) diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp index d44ecd5840d..2bb82f78911 100644 --- a/src/mame/drivers/hyperspt.cpp +++ b/src/mame/drivers/hyperspt.cpp @@ -52,61 +52,68 @@ WRITE_LINE_MEMBER(hyperspt_state::irq_mask_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(hyperspt_state::common_map) - AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x10c0, 0x10ff) AM_RAM AM_SHARE("scroll") /* Scroll amount */ - AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1480, 0x1487) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x1500, 0x1500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2") - AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1683, 0x1683) AM_READ_PORT("DSW1") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyperspt_state::hyperspt_map) - AM_IMPORT_FROM(common_map) - AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1_P2") - AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P3_P4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyperspt_state::roadf_map) - AM_IMPORT_FROM(common_map) - AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1") - AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyperspt_state::common_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w) /* Loads the snd command into the snd latch */ - AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w) /* This address triggers the SN chip to read the data port. */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyperspt_state::hyperspt_sound_map) - AM_IMPORT_FROM(common_sound_map) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */ - AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, hyperspt_sound_w) /* speech and output control */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyperspt_state::roadf_sound_map) - AM_IMPORT_FROM(common_sound_map) - AM_RANGE(0xa000, 0xa000) AM_NOP // No VLM - AM_RANGE(0xc000, 0xdfff) AM_NOP // No VLM -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyperspt_state::soundb_map) - AM_IMPORT_FROM(common_sound_map) - AM_RANGE(0xa000, 0xa000) AM_NOP // No VLM - AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write) /* speech and output control */ -ADDRESS_MAP_END +void hyperspt_state::common_map(address_map &map) +{ + map(0x1000, 0x10bf).ram().share("spriteram"); + map(0x10c0, 0x10ff).ram().share("scroll"); /* Scroll amount */ + map(0x1400, 0x1400).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1480, 0x1487).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x1500, 0x1500).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1600, 0x1600).portr("DSW2"); + map(0x1680, 0x1680).portr("SYSTEM"); + map(0x1683, 0x1683).portr("DSW1"); + map(0x2000, 0x27ff).ram().w(this, FUNC(hyperspt_state::videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(hyperspt_state::colorram_w)).share("colorram"); + map(0x3000, 0x37ff).ram(); + map(0x3800, 0x3fff).ram().share("nvram"); + map(0x4000, 0xffff).rom(); +} + +void hyperspt_state::hyperspt_map(address_map &map) +{ + common_map(map); + map(0x1681, 0x1681).portr("P1_P2"); + map(0x1682, 0x1682).portr("P3_P4"); +} + +void hyperspt_state::roadf_map(address_map &map) +{ + common_map(map); + map(0x1681, 0x1681).portr("P1"); + map(0x1682, 0x1682).portr("P2"); +} + +void hyperspt_state::common_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8000).r("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sh_timer_r)); + map(0xe000, 0xe000).w("dac", FUNC(dac_byte_interface::write)); + map(0xe001, 0xe001).w(this, FUNC(hyperspt_state::konami_SN76496_latch_w)); /* Loads the snd command into the snd latch */ + map(0xe002, 0xe002).w(this, FUNC(hyperspt_state::konami_SN76496_w)); /* This address triggers the SN chip to read the data port. */ +} + +void hyperspt_state::hyperspt_sound_map(address_map &map) +{ + common_sound_map(map); + map(0xa000, 0xa000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* speech data */ + map(0xc000, 0xdfff).w("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sound_w)); /* speech and output control */ +} + +void hyperspt_state::roadf_sound_map(address_map &map) +{ + common_sound_map(map); + map(0xa000, 0xa000).noprw(); // No VLM + map(0xc000, 0xdfff).noprw(); // No VLM +} + +void hyperspt_state::soundb_map(address_map &map) +{ + common_sound_map(map); + map(0xa000, 0xa000).noprw(); // No VLM + map(0xc000, 0xdfff).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::write)); /* speech and output control */ +} static INPUT_PORTS_START( hyperspt ) PORT_START("SYSTEM") @@ -343,12 +350,13 @@ MACHINE_CONFIG_START(hyperspt_state::hyperspt) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END -ADDRESS_MAP_START(hyperspt_state::hyprolyb_adpcm_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, data_r) - AM_RANGE(0x1001, 0x1001) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, ready_r) - AM_RANGE(0x1002, 0x1002) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_data_w) - AM_RANGE(0x1003, 0x1003) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_vck_r) +void hyperspt_state::hyprolyb_adpcm_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x1000, 0x1000).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::data_r)); + map(0x1001, 0x1001).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::ready_r)); + map(0x1002, 0x1002).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_data_w)); + map(0x1003, 0x1003).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_vck_r)); // on init: // $1003 = $00 // $1002 = $FF @@ -362,8 +370,8 @@ ADDRESS_MAP_START(hyperspt_state::hyprolyb_adpcm_map) // $1002 & $0f (out) = 5205 data // $1001 & $80 (in) = sound latch request // $1000 (in) = sound latch data - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x8000, 0xffff).rom(); +} MACHINE_CONFIG_START(hyperspt_state::hypersptb) diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp index bdb5c5c49a2..2222dfc1d05 100644 --- a/src/mame/drivers/hyprduel.cpp +++ b/src/mame/drivers/hyprduel.cpp @@ -257,60 +257,64 @@ WRITE_LINE_MEMBER(hyprduel_state::vdp_blit_end_w) Memory Maps ***************************************************************************/ -ADDRESS_MAP_START(hyprduel_state::hyprduel_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp", imagetek_i4220_device, v2_map) - AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(irq_cause_r, irq_cause_w) /* IRQ Cause,Acknowledge */ - AM_RANGE(0x4788a4, 0x4788a5) AM_RAM AM_SHARE("irq_enable") /* IRQ Enable */ - AM_RANGE(0x800000, 0x800001) AM_WRITE(subcpu_control_w) - AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1") - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW") - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2") - AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2") - AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyprduel_state::hyprduel_map2) - AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("sharedram1") /* shadow ($c00000 - $c03fff : vector) */ - AM_RANGE(0x004000, 0x007fff) AM_READONLY AM_WRITENOP AM_SHARE("sharedram3") /* shadow ($fe4000 - $fe7fff : read only) */ - AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_NOP - AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE("sharedram1") - AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2") - AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3") -ADDRESS_MAP_END +void hyprduel_state::hyprduel_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x47ffff).m(m_vdp, FUNC(imagetek_i4220_device::v2_map)); + map(0x4788a2, 0x4788a3).rw(this, FUNC(hyprduel_state::irq_cause_r), FUNC(hyprduel_state::irq_cause_w)); /* IRQ Cause,Acknowledge */ + map(0x4788a4, 0x4788a5).ram().share("irq_enable"); /* IRQ Enable */ + map(0x800000, 0x800001).w(this, FUNC(hyprduel_state::subcpu_control_w)); + map(0xc00000, 0xc07fff).ram().share("sharedram1"); + map(0xe00000, 0xe00001).portr("SERVICE").nopw(); + map(0xe00002, 0xe00003).portr("DSW"); + map(0xe00004, 0xe00005).portr("P1_P2"); + map(0xe00006, 0xe00007).portr("SYSTEM"); + map(0xfe0000, 0xfe3fff).ram().share("sharedram2"); + map(0xfe4000, 0xffffff).ram().share("sharedram3"); +} + +void hyprduel_state::hyprduel_map2(address_map &map) +{ + map(0x000000, 0x003fff).ram().share("sharedram1"); /* shadow ($c00000 - $c03fff : vector) */ + map(0x004000, 0x007fff).readonly().nopw().share("sharedram3"); /* shadow ($fe4000 - $fe7fff : read only) */ + map(0x400000, 0x400003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x400005, 0x400005).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x800000, 0x800001).noprw(); + map(0xc00000, 0xc07fff).ram().share("sharedram1"); + map(0xfe0000, 0xfe3fff).ram().share("sharedram2"); + map(0xfe4000, 0xffffff).ram().share("sharedram3"); +} /* Magical Error - video is at 8x now */ -ADDRESS_MAP_START(hyprduel_state::magerror_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x400001) AM_WRITE(subcpu_control_w) - AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4220_device, v2_map) - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(irq_cause_r, irq_cause_w) /* IRQ Cause, Acknowledge */ - AM_RANGE(0x8788a4, 0x8788a5) AM_RAM AM_SHARE("irq_enable") /* IRQ Enable */ - AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("sharedram1") - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW") - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2") - AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2") - AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(hyprduel_state::magerror_map2) - AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("sharedram1") /* shadow ($c00000 - $c03fff : vector) */ - AM_RANGE(0x004000, 0x007fff) AM_READONLY AM_WRITENOP AM_SHARE("sharedram3") /* shadow ($fe4000 - $fe7fff : read only) */ - AM_RANGE(0x400000, 0x400003) AM_NOP - AM_RANGE(0x800000, 0x800003) AM_READNOP AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x800004, 0x800005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("sharedram1") - AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE("sharedram2") - AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE("sharedram3") -ADDRESS_MAP_END +void hyprduel_state::magerror_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x400001).w(this, FUNC(hyprduel_state::subcpu_control_w)); + map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4220_device::v2_map)); + map(0x8788a2, 0x8788a3).rw(this, FUNC(hyprduel_state::irq_cause_r), FUNC(hyprduel_state::irq_cause_w)); /* IRQ Cause, Acknowledge */ + map(0x8788a4, 0x8788a5).ram().share("irq_enable"); /* IRQ Enable */ + map(0xc00000, 0xc1ffff).ram().share("sharedram1"); + map(0xe00000, 0xe00001).portr("SERVICE").nopw(); + map(0xe00002, 0xe00003).portr("DSW"); + map(0xe00004, 0xe00005).portr("P1_P2"); + map(0xe00006, 0xe00007).portr("SYSTEM"); + map(0xfe0000, 0xfe3fff).ram().share("sharedram2"); + map(0xfe4000, 0xffffff).ram().share("sharedram3"); +} + +void hyprduel_state::magerror_map2(address_map &map) +{ + map(0x000000, 0x003fff).ram().share("sharedram1"); /* shadow ($c00000 - $c03fff : vector) */ + map(0x004000, 0x007fff).readonly().nopw().share("sharedram3"); /* shadow ($fe4000 - $fe7fff : read only) */ + map(0x400000, 0x400003).noprw(); + map(0x800000, 0x800003).nopr().w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x800005, 0x800005).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc00000, 0xc1ffff).ram().share("sharedram1"); + map(0xfe0000, 0xfe3fff).ram().share("sharedram2"); + map(0xfe4000, 0xffffff).ram().share("sharedram3"); +} /*************************************************************************** Input Ports diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp index aec1ec0e216..428905e6505 100644 --- a/src/mame/drivers/i7000.cpp +++ b/src/mame/drivers/i7000.cpp @@ -245,31 +245,33 @@ PALETTE_INIT_MEMBER(i7000_state, i7000) /*FIXME: we still need to figure out the proper memory map for the maincpu and where the cartridge slot maps to. */ -ADDRESS_MAP_START(i7000_state::i7000_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("boot", 0) - AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4000, 0xffff) AM_RAM +void i7000_state::i7000_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("boot", 0); + map(0x2000, 0x2fff).ram().share("videoram"); + map(0x4000, 0xffff).ram(); // AM_RANGE(0x4000, 0xbfff) AM_ROM AM_REGION("cardslot", 0) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(i7000_state::i7000_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK (0xff) +void i7000_state::i7000_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE(0x06, 0x06) AM_WRITE(i7000_io_?_w) // AM_RANGE(0x08, 0x09) AM_WRITE(i7000_io_?_w) //printer perhaps? // AM_RANGE(0x0c, 0x0c) AM_WRITE(i7000_io_?_w) //0x0C and 0x10 may be related to mem page swapping. (self-test "4. PAG") // AM_RANGE(0x10, 0x10) AM_WRITE(i7000_io_?_w) // AM_RANGE(0x14, 0x15) AM_WRITE(i7000_io_?_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) + map(0x18, 0x1b).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // AM_RANGE(0x1c, 0x1c) AM_WRITE(i7000_io_printer_data_w) //ASCII data - AM_RANGE(0x1d, 0x1d) AM_READ_PORT("DSW") + map(0x1d, 0x1d).portr("DSW"); // AM_RANGE(0x1e, 0x1e) AM_READWRITE(i7000_io_printer_status_r, i7000_io_?_w) // AM_RANGE(0x1f, 0x1f) AM_WRITE(i7000_io_printer_strobe_w) //self-test routine writes 0x08 and 0x09 (it seems that bit 0 is the strobe and bit 3 is an enable signal) // AM_RANGE(0x20, 0x21) AM_READWRITE(i7000_io_keyboard_r, i7000_io_keyboard_w) - AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("i8279", i8279_device, read, write) + map(0x20, 0x21).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); // AM_RANGE(0x24, 0x24) AM_READ(i7000_io_?_r) // AM_RANGE(0x25, 0x25) AM_WRITE(i7000_io_?_w) @@ -279,7 +281,7 @@ ADDRESS_MAP_START(i7000_state::i7000_io) // AM_RANGE(0x3b, 0x3b) AM_WRITE(i7000_io_?_w) // AM_RANGE(0x66, 0x67) AM_WRITE(i7000_io_?_w) // AM_RANGE(0xbb, 0xbb) AM_WRITE(i7000_io_?_w) //may be related to page-swapping... -ADDRESS_MAP_END +} DEVICE_IMAGE_LOAD_MEMBER( i7000_state, i7000_card ) { diff --git a/src/mame/drivers/ibm3153.cpp b/src/mame/drivers/ibm3153.cpp index 3fd3d37f2d7..19e55749d31 100644 --- a/src/mame/drivers/ibm3153.cpp +++ b/src/mame/drivers/ibm3153.cpp @@ -64,16 +64,18 @@ private: }; -ADDRESS_MAP_START(ibm3153_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x0ffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void ibm3153_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x0ffff).rom().region("user1", 0); +} -ADDRESS_MAP_START(ibm3153_state::io_map) - AM_RANGE(0x0000,0xffff) AM_RAM +void ibm3153_state::io_map(address_map &map) +{ + map(0x0000, 0xffff).ram(); //ADDRESS_MAP_UNMAP_HIGH //ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +} /* Input ports */ diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp index d01df077d85..989e2371c2b 100644 --- a/src/mame/drivers/ibm6580.cpp +++ b/src/mame/drivers/ibm6580.cpp @@ -680,35 +680,37 @@ READ8_MEMBER(ibm6580_state::floppy_r) } -ADDRESS_MAP_START(ibm6580_state::ibm6580_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x90000, 0x90001) AM_WRITE(unk_latch_w) - AM_RANGE(0xef000, 0xeffff) AM_RAM AM_SHARE("videoram") // 66-line vram starts at 0xec000 - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ibm6580_state::ibm6580_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0007) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0008, 0x000f) AM_WRITE (pic_latch_w) - AM_RANGE(0x0010, 0x0017) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("dma8257", i8257_device, read, write, 0x00ff) - AM_RANGE(0x0040, 0x005f) AM_READWRITE8(p40_r, p40_w, 0x00ff) - AM_RANGE(0x0070, 0x007f) AM_UNMAP - AM_RANGE(0x0120, 0x0127) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x0140, 0x0141) AM_DEVREADWRITE8("upd8251a", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x0142, 0x0143) AM_DEVREADWRITE8("upd8251a", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x0160, 0x0161) AM_DEVREADWRITE8("upd8251b", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x0162, 0x0163) AM_DEVREADWRITE8("upd8251b", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x4000, 0x400f) AM_UNMAP - AM_RANGE(0x5000, 0x500f) AM_UNMAP - AM_RANGE(0x6000, 0x601f) AM_UNMAP - AM_RANGE(0x8060, 0x807f) AM_UNMAP - AM_RANGE(0x8150, 0x815f) AM_READWRITE8(floppy_r, floppy_w, 0x00ff) // HLE of floppy board - AM_RANGE(0x81a0, 0x81af) AM_UNMAP - AM_RANGE(0xc000, 0xc00f) AM_UNMAP - AM_RANGE(0xe000, 0xe02f) AM_READWRITE8(video_r, video_w, 0x00ff) -ADDRESS_MAP_END +void ibm6580_state::ibm6580_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x90000, 0x90001).w(this, FUNC(ibm6580_state::unk_latch_w)); + map(0xef000, 0xeffff).ram().share("videoram"); // 66-line vram starts at 0xec000 + map(0xfc000, 0xfffff).rom().region("user1", 0); +} + +void ibm6580_state::ibm6580_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0007).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0008, 0x000f).w(this, FUNC(ibm6580_state::pic_latch_w)); + map(0x0010, 0x0017).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0020, 0x003f).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)).umask16(0x00ff); + map(0x0040, 0x005f).rw(this, FUNC(ibm6580_state::p40_r), FUNC(ibm6580_state::p40_w)).umask16(0x00ff); + map(0x0070, 0x007f).unmaprw(); + map(0x0120, 0x0127).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x0140, 0x0140).rw("upd8251a", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0142, 0x0142).rw("upd8251a", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x0160, 0x0160).rw("upd8251b", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0162, 0x0162).rw("upd8251b", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x4000, 0x400f).unmaprw(); + map(0x5000, 0x500f).unmaprw(); + map(0x6000, 0x601f).unmaprw(); + map(0x8060, 0x807f).unmaprw(); + map(0x8150, 0x815f).rw(this, FUNC(ibm6580_state::floppy_r), FUNC(ibm6580_state::floppy_w)).umask16(0x00ff); // HLE of floppy board + map(0x81a0, 0x81af).unmaprw(); + map(0xc000, 0xc00f).unmaprw(); + map(0xe000, 0xe02f).rw(this, FUNC(ibm6580_state::video_r), FUNC(ibm6580_state::video_w)).umask16(0x00ff); +} /* Input ports */ diff --git a/src/mame/drivers/ibmpc.cpp b/src/mame/drivers/ibmpc.cpp index 18e1f2b83a7..fc913439127 100644 --- a/src/mame/drivers/ibmpc.cpp +++ b/src/mame/drivers/ibmpc.cpp @@ -277,15 +277,17 @@ public: void pc8_map(address_map &map); }; -ADDRESS_MAP_START(ibmpc_state::pc8_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ibmpc_state::pc8_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) -ADDRESS_MAP_END +void ibmpc_state::pc8_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void ibmpc_state::pc8_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); +} static DEVICE_INPUT_DEFAULTS_START(cga) DEVICE_INPUT_DEFAULTS("DSW0",0x30, 0x20) diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp index 2492da2af95..1db58a6c4b8 100644 --- a/src/mame/drivers/ibmpcjr.cpp +++ b/src/mame/drivers/ibmpcjr.cpp @@ -542,44 +542,48 @@ static GFXDECODE_START( pcjr ) GFXDECODE_END -ADDRESS_MAP_START(pcjr_state::ibmpcjr_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8) - AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot2", generic_slot_device, read_rom) - AM_RANGE(0xe0000, 0xeffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pcjr_state::ibmpcjr_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x00a0, 0x00a0) AM_READWRITE(pcjr_nmi_enable_r, pc_nmi_enable_w ) - AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", sn76496_device, write) - AM_RANGE(0x00f2, 0x00f2) AM_WRITE(pcjr_fdc_dor_w) - AM_RANGE(0x00f4, 0x00f5) AM_DEVICE("fdc", upd765a_device, map) - AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w) - AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w) - AM_RANGE(0x0378, 0x037b) AM_DEVREADWRITE("lpt_0", pc_lpt_device, read, write) - AM_RANGE(0x03d0, 0x03df) AM_DEVREAD("pcvideo_pcjr", pcvideo_pcjr_device, read) AM_DEVWRITE("pcvideo_pcjr", pcvideo_pcjr_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcjr_state::ibmpcjx_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80000, 0xb7fff) AM_ROM AM_REGION("kanji",0) - AM_RANGE(0x80000, 0x9ffff) AM_RAM AM_SHARE("vram") // TODO: remove this part of vram hack - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_pcjr:vram", address_map_bank_device, amap8) - AM_RANGE(0xd0000, 0xdffff) AM_DEVREAD("cartslot1", generic_slot_device, read_rom) - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcjr_state::ibmpcjx_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM( ibmpcjr_io ) - AM_RANGE(0x01ff, 0x01ff) AM_READWRITE(pcjx_port_1ff_r, pcjx_port_1ff_w) -ADDRESS_MAP_END +void pcjr_state::ibmpcjr_map(address_map &map) +{ + map.unmap_value_high(); + map(0xb8000, 0xbffff).m("pcvideo_pcjr:vram", FUNC(address_map_bank_device::amap8)); + map(0xd0000, 0xdffff).r(m_cart2, FUNC(generic_slot_device::read_rom)); + map(0xe0000, 0xeffff).r(m_cart1, FUNC(generic_slot_device::read_rom)); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + + +void pcjr_state::ibmpcjr_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x0060, 0x0063).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x00a0, 0x00a0).rw(this, FUNC(pcjr_state::pcjr_nmi_enable_r), FUNC(pcjr_state::pc_nmi_enable_w)); + map(0x00c0, 0x00c0).w("sn76496", FUNC(sn76496_device::write)); + map(0x00f2, 0x00f2).w(this, FUNC(pcjr_state::pcjr_fdc_dor_w)); + map(0x00f4, 0x00f5).m(m_fdc, FUNC(upd765a_device::map)); + map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w)); + map(0x02f8, 0x02ff).rw("ins8250", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x0378, 0x037b).rw("lpt_0", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)); + map(0x03d0, 0x03df).r("pcvideo_pcjr", FUNC(pcvideo_pcjr_device::read)).w("pcvideo_pcjr", FUNC(pcvideo_pcjr_device::write)); +} + +void pcjr_state::ibmpcjx_map(address_map &map) +{ + map.unmap_value_high(); + map(0x80000, 0xb7fff).rom().region("kanji", 0); + map(0x80000, 0x9ffff).ram().share("vram"); // TODO: remove this part of vram hack + map(0xb8000, 0xbffff).m("pcvideo_pcjr:vram", FUNC(address_map_bank_device::amap8)); + map(0xd0000, 0xdffff).r(m_cart1, FUNC(generic_slot_device::read_rom)); + map(0xe0000, 0xfffff).rom().region("bios", 0); +} + +void pcjr_state::ibmpcjx_io(address_map &map) +{ + map.unmap_value_high(); + ibmpcjr_io(map); + map(0x01ff, 0x01ff).rw(this, FUNC(pcjr_state::pcjx_port_1ff_r), FUNC(pcjr_state::pcjx_port_1ff_w)); +} MACHINE_CONFIG_START(pcjr_state::ibmpcjr) /* basic machine hardware */ diff --git a/src/mame/drivers/icatel.cpp b/src/mame/drivers/icatel.cpp index a3693a9ee5b..9986fcd1ceb 100644 --- a/src/mame/drivers/icatel.cpp +++ b/src/mame/drivers/icatel.cpp @@ -75,25 +75,28 @@ private: required_device<hd44780_device> m_lcdc; }; -ADDRESS_MAP_START(icatel_state::i80c31_prg) - AM_RANGE(0x0000, 0x7FFF) AM_MIRROR(0x8000) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(icatel_state::i80c31_io) - AM_RANGE(0x0000,0x3FFF) AM_RAM - AM_RANGE(0x8000,0x8002) AM_RAM /* HACK! */ - AM_RANGE(0x8040,0x8040) AM_MIRROR(0x3F1E) AM_DEVWRITE("hd44780", hd44780_device, control_write) // not sure yet. CI12 (73LS273) - AM_RANGE(0x8041,0x8041) AM_MIRROR(0x3F1E) AM_DEVWRITE("hd44780", hd44780_device, data_write) // not sure yet. CI12 - AM_RANGE(0x8060,0x8060) AM_MIRROR(0x3F1F) AM_READWRITE(ci8_r, ci8_w) - AM_RANGE(0x8080,0x8080) AM_MIRROR(0x3F1F) AM_READWRITE(ci16_r, ci16_w) // card reader (?) - AM_RANGE(0x80C0,0x80C0) AM_MIRROR(0x3F1F) AM_READWRITE(ci15_r, ci15_w) // 74LS244 (tristate buffer) - AM_RANGE(0xC000,0xCFFF) AM_READWRITE(cn8_extension_r, cn8_extension_w) - AM_RANGE(0xE000,0xEFFF) AM_READWRITE(modem_r, modem_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(icatel_state::i80c31_data) +void icatel_state::i80c31_prg(address_map &map) +{ + map(0x0000, 0x7FFF).mirror(0x8000).rom(); +} + +void icatel_state::i80c31_io(address_map &map) +{ + map(0x0000, 0x3FFF).ram(); + map(0x8000, 0x8002).ram(); /* HACK! */ + map(0x8040, 0x8040).mirror(0x3F1E).w(m_lcdc, FUNC(hd44780_device::control_write)); // not sure yet. CI12 (73LS273) + map(0x8041, 0x8041).mirror(0x3F1E).w(m_lcdc, FUNC(hd44780_device::data_write)); // not sure yet. CI12 + map(0x8060, 0x8060).mirror(0x3F1F).rw(this, FUNC(icatel_state::ci8_r), FUNC(icatel_state::ci8_w)); + map(0x8080, 0x8080).mirror(0x3F1F).rw(this, FUNC(icatel_state::ci16_r), FUNC(icatel_state::ci16_w)); // card reader (?) + map(0x80C0, 0x80C0).mirror(0x3F1F).rw(this, FUNC(icatel_state::ci15_r), FUNC(icatel_state::ci15_w)); // 74LS244 (tristate buffer) + map(0xC000, 0xCFFF).rw(this, FUNC(icatel_state::cn8_extension_r), FUNC(icatel_state::cn8_extension_w)); + map(0xE000, 0xEFFF).rw(this, FUNC(icatel_state::modem_r), FUNC(icatel_state::modem_w)); +} + +void icatel_state::i80c31_data(address_map &map) +{ // AM_RANGE(0x0056,0x005A) AM_READ(magic_string) /* This is a hack! */ -ADDRESS_MAP_END +} DRIVER_INIT_MEMBER( icatel_state, icatel ) { diff --git a/src/mame/drivers/ice_bozopail.cpp b/src/mame/drivers/ice_bozopail.cpp index eace78d87cf..d2cdced75fa 100644 --- a/src/mame/drivers/ice_bozopail.cpp +++ b/src/mame/drivers/ice_bozopail.cpp @@ -37,9 +37,10 @@ public: void ice_bozo_map(address_map &map); }; -ADDRESS_MAP_START(ice_bozopail_state::ice_bozo_map) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x1fe000) -ADDRESS_MAP_END +void ice_bozopail_state::ice_bozo_map(address_map &map) +{ + map(0xe000, 0xffff).rom().region("maincpu", 0x1fe000); +} static INPUT_PORTS_START( ice_bozo ) INPUT_PORTS_END diff --git a/src/mame/drivers/ice_tbd.cpp b/src/mame/drivers/ice_tbd.cpp index 57d85284d88..dcc452384d4 100644 --- a/src/mame/drivers/ice_tbd.cpp +++ b/src/mame/drivers/ice_tbd.cpp @@ -40,15 +40,17 @@ private: -ADDRESS_MAP_START(ice_tbd_state::ice_tbd_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ice_tbd_state::ice_tbd_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END +void ice_tbd_state::ice_tbd_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); +} + +void ice_tbd_state::ice_tbd_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} static INPUT_PORTS_START( ice_tbd ) diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp index 45473aef6e2..511ee25e91f 100644 --- a/src/mame/drivers/icecold.cpp +++ b/src/mame/drivers/icecold.cpp @@ -67,15 +67,16 @@ public: void icecold_map(address_map &map); }; -ADDRESS_MAP_START(icecold_state::icecold_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x4010, 0x4013) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x4020, 0x4023) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x4040, 0x4043) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // not used - AM_RANGE(0x4080, 0x4081) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0x4100, 0x4100) AM_WRITE(motors_w) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END +void icecold_state::icecold_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x4010, 0x4013).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4020, 0x4023).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4040, 0x4043).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // not used + map(0x4080, 0x4081).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0x4100, 0x4100).w(this, FUNC(icecold_state::motors_w)); + map(0xa000, 0xffff).rom(); +} static INPUT_PORTS_START( icecold ) PORT_START("DSW3") diff --git a/src/mame/drivers/ichiban.cpp b/src/mame/drivers/ichiban.cpp index 0eb440b1af4..0db563f90c9 100644 --- a/src/mame/drivers/ichiban.cpp +++ b/src/mame/drivers/ichiban.cpp @@ -78,13 +78,15 @@ uint32_t ichibanjyan_state::screen_update( screen_device &screen, bitmap_ind16 & } -ADDRESS_MAP_START(ichibanjyan_state::ichibanjyan_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void ichibanjyan_state::ichibanjyan_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank1"); +} -ADDRESS_MAP_START(ichibanjyan_state::ichibanjyan_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void ichibanjyan_state::ichibanjyan_io(address_map &map) +{ + map.global_mask(0xff); +} static INPUT_PORTS_START( ichibanjyan ) INPUT_PORTS_END diff --git a/src/mame/drivers/idsa.cpp b/src/mame/drivers/idsa.cpp index 24965d3a565..20e5df76c14 100644 --- a/src/mame/drivers/idsa.cpp +++ b/src/mame/drivers/idsa.cpp @@ -77,31 +77,33 @@ private: optional_device_array<i8255_device, 2> m_ppi; }; -ADDRESS_MAP_START(idsa_state::maincpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(idsa_state::maincpu_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_READ_PORT("X0") - AM_RANGE(0x10, 0x1f) AM_READ_PORT("X1") - AM_RANGE(0x20, 0x2f) AM_READ_PORT("X2") - AM_RANGE(0x30, 0x3f) AM_READ_PORT("X3") - AM_RANGE(0x40, 0x4f) AM_READ_PORT("X4") - AM_RANGE(0x50, 0x5f) AM_READ_PORT("X5") - AM_RANGE(0x60, 0x6f) AM_READ_PORT("X6") - AM_RANGE(0x70, 0x7f) AM_READ_PORT("X7") - AM_RANGE(0x80, 0x8f) AM_WRITE(port80_w) - AM_RANGE(0x90, 0x9f) AM_WRITE(port90_w) - AM_RANGE(0xb0, 0xb3) AM_READ(portb0_r) - AM_RANGE(0xbd, 0xbd) AM_READ_PORT("X8") - AM_RANGE(0xd0, 0xdf) AM_DEVWRITE("speech", sp0256_device, ald_w) - AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("aysnd1", ay8910_device, data_r, address_data_w) - AM_RANGE(0xf0, 0xff) AM_DEVREADWRITE("aysnd2", ay8910_device, data_r, address_data_w) -ADDRESS_MAP_END +void idsa_state::maincpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); +} + +void idsa_state::maincpu_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x0f).portr("X0"); + map(0x10, 0x1f).portr("X1"); + map(0x20, 0x2f).portr("X2"); + map(0x30, 0x3f).portr("X3"); + map(0x40, 0x4f).portr("X4"); + map(0x50, 0x5f).portr("X5"); + map(0x60, 0x6f).portr("X6"); + map(0x70, 0x7f).portr("X7"); + map(0x80, 0x8f).w(this, FUNC(idsa_state::port80_w)); + map(0x90, 0x9f).w(this, FUNC(idsa_state::port90_w)); + map(0xb0, 0xb3).r(this, FUNC(idsa_state::portb0_r)); + map(0xbd, 0xbd).portr("X8"); + map(0xd0, 0xdf).w(m_speech, FUNC(sp0256_device::ald_w)); + map(0xe0, 0xef).rw("aysnd1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0xf0, 0xff).rw("aysnd2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( idsa ) diff --git a/src/mame/drivers/if800.cpp b/src/mame/drivers/if800.cpp index f7df89de093..181b39e7a70 100644 --- a/src/mame/drivers/if800.cpp +++ b/src/mame/drivers/if800.cpp @@ -55,17 +55,19 @@ UPD7220_DISPLAY_PIXELS_MEMBER( if800_state::hgdc_display_pixels ) } } -ADDRESS_MAP_START(if800_state::if800_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x0ffff) AM_RAM - AM_RANGE(0xfe000,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(if800_state::if800_io) - ADDRESS_MAP_UNMAP_HIGH +void if800_state::if800_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x0ffff).ram(); + map(0xfe000, 0xfffff).rom().region("ipl", 0); +} + +void if800_state::if800_io(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x0640, 0x065f) dma? - AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("upd7220", upd7220_device, read, write,0x00ff) -ADDRESS_MAP_END + map(0x0660, 0x0663).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask16(0x00ff); +} /* Input ports */ static INPUT_PORTS_START( if800 ) @@ -80,9 +82,10 @@ void if800_state::machine_reset() { } -ADDRESS_MAP_START(if800_state::upd7220_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END +void if800_state::upd7220_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram().share("video_ram"); +} MACHINE_CONFIG_START(if800_state::if800) /* basic machine hardware */ diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp index b99a7495e7c..7cc2e9efb36 100644 --- a/src/mame/drivers/igs009.cpp +++ b/src/mame/drivers/igs009.cpp @@ -475,81 +475,84 @@ READ8_MEMBER(igs009_state::magic_r) } -ADDRESS_MAP_START(igs009_state::jingbell_map) - AM_RANGE( 0x00000, 0x0f3ff ) AM_ROM - AM_RANGE( 0x0f400, 0x0ffff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void igs009_state::jingbell_map(address_map &map) +{ + map(0x00000, 0x0f3ff).rom(); + map(0x0f400, 0x0ffff).ram().share("nvram"); +} -ADDRESS_MAP_START(igs009_state::jingbell_portmap) - AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs +void igs009_state::jingbell_portmap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // Z180 internal regs - AM_RANGE( 0x1000, 0x11ff ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll") + map(0x1000, 0x11ff).ram().w(this, FUNC(igs009_state::bg_scroll_w)).share("bg_scroll"); - AM_RANGE( 0x2000, 0x23ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE( 0x2400, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") + map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); - AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE( 0x3400, 0x37ff ) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE( 0x3800, 0x3bff ) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE( 0x3c00, 0x3fff ) AM_RAM_WRITE(reel4_ram_w ) AM_SHARE("reel4_ram") + map(0x3000, 0x33ff).ram().w(this, FUNC(igs009_state::reel1_ram_w)).share("reel1_ram"); + map(0x3400, 0x37ff).ram().w(this, FUNC(igs009_state::reel2_ram_w)).share("reel2_ram"); + map(0x3800, 0x3bff).ram().w(this, FUNC(igs009_state::reel3_ram_w)).share("reel3_ram"); + map(0x3c00, 0x3fff).ram().w(this, FUNC(igs009_state::reel4_ram_w)).share("reel4_ram"); - AM_RANGE( 0x4000, 0x407f ) AM_RAM AM_SHARE("bg_scroll2") + map(0x4000, 0x407f).ram().share("bg_scroll2"); - AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") + map(0x5000, 0x5fff).ram().w(this, FUNC(igs009_state::fg_tile_w)).share("fg_tile_ram"); - AM_RANGE(0x6480, 0x6483) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* NMI and coins (w), service (r), coins (r) */ - AM_RANGE(0x6490, 0x6493) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* buttons 1 (r), video and leds (w), leds (w) */ + map(0x6480, 0x6483).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* NMI and coins (w), service (r), coins (r) */ + map(0x6490, 0x6493).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* buttons 1 (r), video and leds (w), leds (w) */ - AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) + map(0x64a0, 0x64a0).portr("BUTTONS2"); - AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE("ymsnd", ym2413_device, write) + map(0x64b0, 0x64b1).w("ymsnd", FUNC(ym2413_device::write)); - AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x64c0, 0x64c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(magic_r, magic_w ) // DSW1-5 + map(0x64d0, 0x64d1).rw(this, FUNC(igs009_state::magic_r), FUNC(igs009_state::magic_w)); // DSW1-5 - AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") + map(0x7000, 0x7fff).ram().w(this, FUNC(igs009_state::fg_color_w)).share("fg_color_ram"); - AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("data", 0) -ADDRESS_MAP_END + map(0x8000, 0xffff).rom().region("data", 0); +} -ADDRESS_MAP_START(igs009_state::gp98_portmap) - AM_RANGE( 0x0000, 0x003f ) AM_RAM // Z180 internal regs +void igs009_state::gp98_portmap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // Z180 internal regs - AM_RANGE( 0x1000, 0x11ff ) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll") + map(0x1000, 0x11ff).ram().w(this, FUNC(igs009_state::bg_scroll_w)).share("bg_scroll"); - AM_RANGE( 0x2000, 0x23ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE( 0x2400, 0x27ff ) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") + map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); - AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE( 0x3400, 0x37ff ) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE( 0x3800, 0x3bff ) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE( 0x3c00, 0x3fff ) AM_RAM_WRITE(reel4_ram_w ) AM_SHARE("reel4_ram") + map(0x3000, 0x33ff).ram().w(this, FUNC(igs009_state::reel1_ram_w)).share("reel1_ram"); + map(0x3400, 0x37ff).ram().w(this, FUNC(igs009_state::reel2_ram_w)).share("reel2_ram"); + map(0x3800, 0x3bff).ram().w(this, FUNC(igs009_state::reel3_ram_w)).share("reel3_ram"); + map(0x3c00, 0x3fff).ram().w(this, FUNC(igs009_state::reel4_ram_w)).share("reel4_ram"); - AM_RANGE( 0x4000, 0x407f ) AM_RAM AM_SHARE("bg_scroll2") + map(0x4000, 0x407f).ram().share("bg_scroll2"); - AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") + map(0x5000, 0x5fff).ram().w(this, FUNC(igs009_state::fg_tile_w)).share("fg_tile_ram"); // seems to lack PPI devices... - AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(nmi_and_coins_w ) - AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" ) - AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" ) - AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" ) - AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(video_and_leds_w ) - AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(leds_w ) - AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) + map(0x6480, 0x6480).w(this, FUNC(igs009_state::nmi_and_coins_w)); + map(0x6481, 0x6481).portr("SERVICE"); + map(0x6482, 0x6482).portr("COINS"); + map(0x6490, 0x6490).portr("BUTTONS1"); + map(0x6491, 0x6491).w(this, FUNC(igs009_state::video_and_leds_w)); + map(0x6492, 0x6492).w(this, FUNC(igs009_state::leds_w)); + map(0x64a0, 0x64a0).portr("BUTTONS2"); - AM_RANGE( 0x64b0, 0x64b1 ) AM_DEVWRITE("ymsnd", ym2413_device, write) + map(0x64b0, 0x64b1).w("ymsnd", FUNC(ym2413_device::write)); - AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x64c0, 0x64c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(magic_r, magic_w ) // DSW1-5 + map(0x64d0, 0x64d1).rw(this, FUNC(igs009_state::magic_r), FUNC(igs009_state::magic_w)); // DSW1-5 - AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") + map(0x7000, 0x7fff).ram().w(this, FUNC(igs009_state::fg_color_w)).share("fg_color_ram"); - AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("data", 0) -ADDRESS_MAP_END + map(0x8000, 0xffff).rom().region("data", 0); +} /*************************************************************************** diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp index de1938637a5..9f279d3db57 100644 --- a/src/mame/drivers/igs011.cpp +++ b/src/mame/drivers/igs011.cpp @@ -2563,61 +2563,63 @@ DRIVER_INIT_MEMBER(igs011_state,nkishusp) ***************************************************************************/ -ADDRESS_MAP_START(igs011_state::drgnwrld) +void igs011_state::drgnwrld(address_map &map) +{ // drgnwrld: IGS011 protection dynamically mapped at 1dd7x // AM_RANGE( 0x01dd70, 0x01dd77 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x01dd78, 0x01dd79 ) AM_READ ( igs011_prot1_r ) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM - AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x700000, 0x700003 ) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0x00ff) + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x200000, 0x200fff).ram().share("priority_ram"); + map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x500000, 0x500001).portr("COIN"); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700000, 0x700003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff); - AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(drgnwrld_igs003_w ) - AM_RANGE( 0x800002, 0x800003 ) AM_READ(drgnwrld_igs003_r ) + map(0x800000, 0x800003).w(this, FUNC(igs011_state::drgnwrld_igs003_w)); + map(0x800002, 0x800003).r(this, FUNC(igs011_state::drgnwrld_igs003_r)); - AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w ) - AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w ) + map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w)); + map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w)); - AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w ) + map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r ) - AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w ) - AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(igs011_state::drgnwrld_igs012) - AM_IMPORT_FROM(drgnwrld) + map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r)); +} + +void igs011_state::drgnwrld_igs012(address_map &map) +{ + drgnwrld(map); // IGS012 - AM_RANGE( 0x001600, 0x00160f ) AM_WRITE(igs012_prot_swap_w ) AM_MIRROR(0x01c000) // swap (a5 / 55) - AM_RANGE( 0x001610, 0x00161f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 0) - AM_RANGE( 0x001620, 0x00162f ) AM_WRITE(igs012_prot_dec_inc_w ) AM_MIRROR(0x01c000) // dec (aa), inc (fa) - AM_RANGE( 0x001630, 0x00163f ) AM_WRITE(igs012_prot_inc_w ) AM_MIRROR(0x01c000) // inc (ff) - AM_RANGE( 0x001640, 0x00164f ) AM_WRITE(igs012_prot_copy_w ) AM_MIRROR(0x01c000) // copy (22) - AM_RANGE( 0x001650, 0x00165f ) AM_WRITE(igs012_prot_dec_copy_w ) AM_MIRROR(0x01c000) // dec (5a), copy (33) - AM_RANGE( 0x001660, 0x00166f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 1) - AM_RANGE( 0x001670, 0x00167f ) AM_WRITE(igs012_prot_mode_w ) AM_MIRROR(0x01c000) // mode (cc / dd) - - AM_RANGE( 0x00d400, 0x00d43f ) AM_WRITE(igs011_prot2_dec_w ) // dec (33) - AM_RANGE( 0x00d440, 0x00d47f ) AM_WRITE(drgnwrld_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x00d480, 0x00d4bf ) AM_WRITE(igs011_prot2_reset_w ) // reset (33) - AM_RANGE( 0x00d4c0, 0x00d4ff ) AM_READ(drgnwrldv20j_igs011_prot2_r ) // read - - AM_RANGE( 0x902000, 0x902fff ) AM_WRITE(igs012_prot_reset_w ) // reset? + map(0x001600, 0x00160f).w(this, FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55) + map(0x001610, 0x00161f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 0) + map(0x001620, 0x00162f).w(this, FUNC(igs011_state::igs012_prot_dec_inc_w)).mirror(0x01c000); // dec (aa), inc (fa) + map(0x001630, 0x00163f).w(this, FUNC(igs011_state::igs012_prot_inc_w)).mirror(0x01c000); // inc (ff) + map(0x001640, 0x00164f).w(this, FUNC(igs011_state::igs012_prot_copy_w)).mirror(0x01c000); // copy (22) + map(0x001650, 0x00165f).w(this, FUNC(igs011_state::igs012_prot_dec_copy_w)).mirror(0x01c000); // dec (5a), copy (33) + map(0x001660, 0x00166f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 1) + map(0x001670, 0x00167f).w(this, FUNC(igs011_state::igs012_prot_mode_w)).mirror(0x01c000); // mode (cc / dd) + + map(0x00d400, 0x00d43f).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33) + map(0x00d440, 0x00d47f).w(this, FUNC(igs011_state::drgnwrld_igs011_prot2_swap_w)); // swap (33) + map(0x00d480, 0x00d4bf).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33) + map(0x00d4c0, 0x00d4ff).r(this, FUNC(igs011_state::drgnwrldv20j_igs011_prot2_r)); // read + + map(0x902000, 0x902fff).w(this, FUNC(igs011_state::igs012_prot_reset_w)); // reset? // AM_RANGE( 0x902000, 0x902005 ) AM_WRITE(igs012_prot_fake_r ) -ADDRESS_MAP_END +} @@ -2640,207 +2642,212 @@ WRITE16_MEMBER(igs011_state::lhb_okibank_w) // popmessage("oki %04x",data); } -ADDRESS_MAP_START(igs011_state::lhb) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM +void igs011_state::lhb(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // lhb: IGS011 protection dynamically mapped at 834x // AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x008348, 0x008349 ) AM_READ ( igs011_prot1_r ) - AM_RANGE( 0x010000, 0x010001 ) AM_WRITE(lhb_okibank_w ) + map(0x010000, 0x010001).w(this, FUNC(igs011_state::lhb_okibank_w)); - AM_RANGE( 0x010200, 0x0103ff ) AM_WRITE(igs011_prot2_inc_w ) - AM_RANGE( 0x010400, 0x0105ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) - AM_RANGE( 0x010600, 0x0107ff ) AM_READ(lhb_igs011_prot2_r ) + map(0x010200, 0x0103ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); + map(0x010400, 0x0105ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); + map(0x010600, 0x0107ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // no reset - AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w ) - AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x700002, 0x700005 ) AM_READ(lhb_inputs_r ) - AM_RANGE( 0x700002, 0x700003 ) AM_WRITE(lhb_inputs_w ) - AM_RANGE( 0x820000, 0x820001 ) AM_WRITE(igs011_priority_w ) - AM_RANGE( 0x838000, 0x838001 ) AM_WRITE(lhb_irq_enable_w ) - AM_RANGE( 0x840000, 0x840001 ) AM_WRITE(igs_dips_w ) - - AM_RANGE( 0x850000, 0x850001 ) AM_WRITE(igs011_prot_addr_w ) + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x200000, 0x200fff).ram().share("priority_ram"); + map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w)); + map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700000, 0x700001).portr("COIN"); + map(0x700002, 0x700005).r(this, FUNC(igs011_state::lhb_inputs_r)); + map(0x700002, 0x700003).w(this, FUNC(igs011_state::lhb_inputs_w)); + map(0x820000, 0x820001).w(this, FUNC(igs011_state::igs011_priority_w)); + map(0x838000, 0x838001).w(this, FUNC(igs011_state::lhb_irq_enable_w)); + map(0x840000, 0x840001).w(this, FUNC(igs011_state::igs_dips_w)); + + map(0x850000, 0x850001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0x850000, 0x850005 ) AM_WRITE(igs011_prot_fake_r ) - AM_RANGE( 0x858000, 0x858001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0x858800, 0x858801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0x859000, 0x859001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0x859800, 0x859801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE(igs011_blit_depth_w ) - AM_RANGE( 0x888000, 0x888001 ) AM_READ(igs_5_dips_r ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(igs011_state::xymg) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM + map(0x858000, 0x858001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0x858800, 0x858801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0x859000, 0x859001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0x859800, 0x859801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0x85a000, 0x85a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0x85a800, 0x85a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0x85b000, 0x85b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0x85b800, 0x85b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0x85c000, 0x85c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + map(0x888000, 0x888001).r(this, FUNC(igs011_state::igs_5_dips_r)); +} + +void igs011_state::xymg(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // xymg: IGS011 protection dynamically mapped at 834x // AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x008348, 0x008349 ) AM_READ ( igs011_prot1_r ) - AM_RANGE( 0x010000, 0x010001 ) AM_WRITE(lhb_okibank_w ) + map(0x010000, 0x010001).w(this, FUNC(igs011_state::lhb_okibank_w)); - AM_RANGE( 0x010200, 0x0103ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (33) - AM_RANGE( 0x010400, 0x0105ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x010600, 0x0107ff ) AM_READ(lhb_igs011_prot2_r ) // read + map(0x010200, 0x0103ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (33) + map(0x010400, 0x0105ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33) + map(0x010600, 0x0107ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // read // no reset - AM_RANGE( 0x100000, 0x103fff ) AM_RAM - AM_RANGE( 0x1f0000, 0x1f3fff ) AM_RAM AM_SHARE("nvram") // extra ram - AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w ) - AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x700000, 0x700003 ) AM_WRITE(xymg_igs003_w ) - AM_RANGE( 0x700002, 0x700003 ) AM_READ(xymg_igs003_r ) - AM_RANGE( 0x820000, 0x820001 ) AM_WRITE(igs011_priority_w ) - AM_RANGE( 0x840000, 0x840001 ) AM_WRITE(igs_dips_w ) - - AM_RANGE( 0x850000, 0x850001 ) AM_WRITE(igs011_prot_addr_w ) + map(0x100000, 0x103fff).ram(); + map(0x1f0000, 0x1f3fff).ram().share("nvram"); // extra ram + map(0x200000, 0x200fff).ram().share("priority_ram"); + map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w)); + map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700000, 0x700003).w(this, FUNC(igs011_state::xymg_igs003_w)); + map(0x700002, 0x700003).r(this, FUNC(igs011_state::xymg_igs003_r)); + map(0x820000, 0x820001).w(this, FUNC(igs011_state::igs011_priority_w)); + map(0x840000, 0x840001).w(this, FUNC(igs011_state::igs_dips_w)); + + map(0x850000, 0x850001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0x850000, 0x850005 ) AM_WRITE(igs011_prot_fake_r ) - AM_RANGE( 0x858000, 0x858001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0x858800, 0x858801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0x859000, 0x859001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0x859800, 0x859801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0x85a000, 0x85a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0x85a800, 0x85a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0x85b000, 0x85b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0x85b800, 0x85b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0x85c000, 0x85c001 ) AM_WRITE(igs011_blit_depth_w ) - AM_RANGE( 0x888000, 0x888001 ) AM_READ(igs_3_dips_r ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(igs011_state::wlcc) + map(0x858000, 0x858001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0x858800, 0x858801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0x859000, 0x859001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0x859800, 0x859801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0x85a000, 0x85a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0x85a800, 0x85a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0x85b000, 0x85b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0x85b800, 0x85b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0x85c000, 0x85c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + map(0x888000, 0x888001).r(this, FUNC(igs011_state::igs_3_dips_r)); +} + +void igs011_state::wlcc(address_map &map) +{ // wlcc: IGS011 protection dynamically mapped at 834x // AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x008348, 0x008349 ) AM_READ(igs011_prot1_r ) - AM_RANGE( 0x518000, 0x5181ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (33) - AM_RANGE( 0x518200, 0x5183ff ) AM_WRITE(wlcc_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x518800, 0x5189ff ) AM_READ(igs011_prot2_reset_r ) // reset - AM_RANGE( 0x519000, 0x5195ff ) AM_READ(lhb_igs011_prot2_r ) // read - - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM - AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w ) - AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(wlcc_igs003_w ) - AM_RANGE( 0x800002, 0x800003 ) AM_READ(wlcc_igs003_r ) - AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w ) - AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w ) - - AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w ) + map(0x518000, 0x5181ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (33) + map(0x518200, 0x5183ff).w(this, FUNC(igs011_state::wlcc_igs011_prot2_swap_w)); // swap (33) + map(0x518800, 0x5189ff).r(this, FUNC(igs011_state::igs011_prot2_reset_r)); // reset + map(0x519000, 0x5195ff).r(this, FUNC(igs011_state::lhb_igs011_prot2_r)); // read + + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x200000, 0x200fff).ram().share("priority_ram"); + map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w)); + map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x520000, 0x520001).portr("COIN"); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x800000, 0x800003).w(this, FUNC(igs011_state::wlcc_igs003_w)); + map(0x800002, 0x800003).r(this, FUNC(igs011_state::wlcc_igs003_r)); + map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w)); + map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w)); + + map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r ) - AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w ) - AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_4_dips_r ) -ADDRESS_MAP_END + map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_4_dips_r)); +} -ADDRESS_MAP_START(igs011_state::lhb2) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM +void igs011_state::lhb2(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // lhb2: IGS011 protection dynamically mapped at 1ff8x // AM_RANGE( 0x01ff80, 0x01ff87 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x01ff88, 0x01ff89 ) AM_READ ( igs011_prot1_r ) - AM_RANGE( 0x020000, 0x0201ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (55) - AM_RANGE( 0x020200, 0x0203ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x020400, 0x0205ff ) AM_READ(lhb2_igs011_prot2_r ) // read - AM_RANGE( 0x020600, 0x0207ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (55) - - AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE( 0x208000, 0x208003 ) AM_WRITE(lhb2_igs003_w ) - AM_RANGE( 0x208002, 0x208003 ) AM_READ(lhb2_igs003_r ) - AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w ) - AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w ) - AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w ) - - AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w ) + map(0x020000, 0x0201ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55) + map(0x020200, 0x0203ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33) + map(0x020400, 0x0205ff).r(this, FUNC(igs011_state::lhb2_igs011_prot2_r)); // read + map(0x020600, 0x0207ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (55) + + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x208000, 0x208003).w(this, FUNC(igs011_state::lhb2_igs003_w)); + map(0x208002, 0x208003).r(this, FUNC(igs011_state::lhb2_igs003_r)); + map(0x20c000, 0x20cfff).ram().share("priority_ram"); + map(0x210000, 0x211fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x214000, 0x214001).portr("COIN"); + map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w)); + map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w)); + map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w)); + + map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r ) - AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w ) - AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r ) -ADDRESS_MAP_END + map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r)); +} -ADDRESS_MAP_START(igs011_state::nkishusp) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM +void igs011_state::nkishusp(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // nkishusp: IGS011 protection dynamically mapped at 1ff8x // AM_RANGE( 0x01ff80, 0x01ff87 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x01ff88, 0x01ff89 ) AM_READ ( igs011_prot1_r ) // to be done: - AM_RANGE( 0x023000, 0x0231ff ) AM_WRITE(igs011_prot2_inc_w ) // inc (55) - AM_RANGE( 0x023200, 0x0233ff ) AM_WRITE(lhb_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x023400, 0x0235ff ) AM_READ(lhb2_igs011_prot2_r ) // read - AM_RANGE( 0x023600, 0x0237ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (55) - - AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x200000, 0x200001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x204000, 0x204003 ) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE( 0x208000, 0x208003 ) AM_WRITE(lhb2_igs003_w ) - AM_RANGE( 0x208002, 0x208003 ) AM_READ(lhb2_igs003_r ) - AM_RANGE( 0x20c000, 0x20cfff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x210000, 0x211fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x214000, 0x214001 ) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w ) - AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w ) - AM_RANGE( 0xa38000, 0xa38001 ) AM_WRITE(lhb_irq_enable_w ) - AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w ) - - AM_RANGE( 0xa50000, 0xa50001 ) AM_WRITE(igs011_prot_addr_w ) + map(0x023000, 0x0231ff).w(this, FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55) + map(0x023200, 0x0233ff).w(this, FUNC(igs011_state::lhb_igs011_prot2_swap_w)); // swap (33) + map(0x023400, 0x0235ff).r(this, FUNC(igs011_state::lhb2_igs011_prot2_r)); // read + map(0x023600, 0x0237ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (55) + + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x208000, 0x208003).w(this, FUNC(igs011_state::lhb2_igs003_w)); + map(0x208002, 0x208003).r(this, FUNC(igs011_state::lhb2_igs003_r)); + map(0x20c000, 0x20cfff).ram().share("priority_ram"); + map(0x210000, 0x211fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x214000, 0x214001).portr("COIN"); + map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w)); + map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w)); + map(0xa38000, 0xa38001).w(this, FUNC(igs011_state::lhb_irq_enable_w)); + map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w)); + + map(0xa50000, 0xa50001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0xa50000, 0xa50005 ) AM_READ(igs011_prot_fake_r ) - AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w ) - AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_3_dips_r ) -ADDRESS_MAP_END + map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_3_dips_r)); +} @@ -2905,81 +2912,83 @@ WRITE16_MEMBER(igs011_state::vbowl_link_1_w){ } WRITE16_MEMBER(igs011_state::vbowl_link_2_w){ } WRITE16_MEMBER(igs011_state::vbowl_link_3_w){ } -ADDRESS_MAP_START(igs011_state::vbowl) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM +void igs011_state::vbowl(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // vbowl: IGS011 protection dynamically mapped at 834x // AM_RANGE( 0x008340, 0x008347 ) AM_WRITE(igs011_prot1_w ) // AM_RANGE( 0x008348, 0x008349 ) AM_READ(igs011_prot1_r ) // IGS012 - AM_RANGE( 0x001600, 0x00160f ) AM_WRITE(igs012_prot_swap_w ) AM_MIRROR(0x01c000) // swap (a5 / 55) - AM_RANGE( 0x001610, 0x00161f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 0) - AM_RANGE( 0x001620, 0x00162f ) AM_WRITE(igs012_prot_dec_inc_w ) AM_MIRROR(0x01c000) // dec (aa), inc (fa) - AM_RANGE( 0x001630, 0x00163f ) AM_WRITE(igs012_prot_inc_w ) AM_MIRROR(0x01c000) // inc (ff) - AM_RANGE( 0x001640, 0x00164f ) AM_WRITE(igs012_prot_copy_w ) AM_MIRROR(0x01c000) // copy (22) - AM_RANGE( 0x001650, 0x00165f ) AM_WRITE(igs012_prot_dec_copy_w ) AM_MIRROR(0x01c000) // dec (5a), copy (33) - AM_RANGE( 0x001660, 0x00166f ) AM_READ(igs012_prot_r ) AM_MIRROR(0x01c000) // read (mode 1) - AM_RANGE( 0x001670, 0x00167f ) AM_WRITE(igs012_prot_mode_w ) AM_MIRROR(0x01c000) // mode (cc / dd) - - AM_RANGE( 0x00d400, 0x00d43f ) AM_WRITE(igs011_prot2_dec_w ) // dec (33) - AM_RANGE( 0x00d440, 0x00d47f ) AM_WRITE(drgnwrld_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x00d480, 0x00d4bf ) AM_WRITE(igs011_prot2_reset_w ) // reset (33) - AM_RANGE( 0x00d4c0, 0x00d4ff ) AM_READ(drgnwrldv20j_igs011_prot2_r ) // read - - AM_RANGE( 0x50f000, 0x50f1ff ) AM_WRITE(igs011_prot2_dec_w ) // dec (33) - AM_RANGE( 0x50f200, 0x50f3ff ) AM_WRITE(vbowl_igs011_prot2_swap_w ) // swap (33) - AM_RANGE( 0x50f400, 0x50f5ff ) AM_WRITE(igs011_prot2_reset_w ) // reset (33) - AM_RANGE( 0x50f600, 0x50f7ff ) AM_READ(vbowl_igs011_prot2_r ) // read - - AM_RANGE( 0x902000, 0x902fff ) AM_WRITE(igs012_prot_reset_w ) // reset? + map(0x001600, 0x00160f).w(this, FUNC(igs011_state::igs012_prot_swap_w)).mirror(0x01c000); // swap (a5 / 55) + map(0x001610, 0x00161f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 0) + map(0x001620, 0x00162f).w(this, FUNC(igs011_state::igs012_prot_dec_inc_w)).mirror(0x01c000); // dec (aa), inc (fa) + map(0x001630, 0x00163f).w(this, FUNC(igs011_state::igs012_prot_inc_w)).mirror(0x01c000); // inc (ff) + map(0x001640, 0x00164f).w(this, FUNC(igs011_state::igs012_prot_copy_w)).mirror(0x01c000); // copy (22) + map(0x001650, 0x00165f).w(this, FUNC(igs011_state::igs012_prot_dec_copy_w)).mirror(0x01c000); // dec (5a), copy (33) + map(0x001660, 0x00166f).r(this, FUNC(igs011_state::igs012_prot_r)).mirror(0x01c000); // read (mode 1) + map(0x001670, 0x00167f).w(this, FUNC(igs011_state::igs012_prot_mode_w)).mirror(0x01c000); // mode (cc / dd) + + map(0x00d400, 0x00d43f).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33) + map(0x00d440, 0x00d47f).w(this, FUNC(igs011_state::drgnwrld_igs011_prot2_swap_w)); // swap (33) + map(0x00d480, 0x00d4bf).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33) + map(0x00d4c0, 0x00d4ff).r(this, FUNC(igs011_state::drgnwrldv20j_igs011_prot2_r)); // read + + map(0x50f000, 0x50f1ff).w(this, FUNC(igs011_state::igs011_prot2_dec_w)); // dec (33) + map(0x50f200, 0x50f3ff).w(this, FUNC(igs011_state::vbowl_igs011_prot2_swap_w)); // swap (33) + map(0x50f400, 0x50f5ff).w(this, FUNC(igs011_state::igs011_prot2_reset_w)); // reset (33) + map(0x50f600, 0x50f7ff).r(this, FUNC(igs011_state::vbowl_igs011_prot2_r)); // read + + map(0x902000, 0x902fff).w(this, FUNC(igs011_state::igs012_prot_reset_w)); // reset? // AM_RANGE( 0x902000, 0x902005 ) AM_WRITE(igs012_prot_fake_r ) - AM_RANGE( 0x100000, 0x103fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_SHARE("priority_ram") - AM_RANGE( 0x300000, 0x3fffff ) AM_READWRITE(igs011_layers_r, igs011_layers_w ) - AM_RANGE( 0x400000, 0x401fff ) AM_RAM_WRITE(igs011_palette ) AM_SHARE("paletteram") - AM_RANGE( 0x520000, 0x520001 ) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x600000, 0x600007 ) AM_READWRITE(ics2115_word_r, ics2115_word_w ) - AM_RANGE( 0x700000, 0x700003 ) AM_RAM AM_SHARE("vbowl_trackball") - AM_RANGE( 0x700004, 0x700005 ) AM_WRITE(vbowl_pen_hi_w ) - AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(vbowl_igs003_w ) - AM_RANGE( 0x800002, 0x800003 ) AM_READ(vbowl_igs003_r ) - - AM_RANGE( 0xa00000, 0xa00001 ) AM_WRITE(vbowl_link_0_w ) - AM_RANGE( 0xa08000, 0xa08001 ) AM_WRITE(vbowl_link_1_w ) - AM_RANGE( 0xa10000, 0xa10001 ) AM_WRITE(vbowl_link_2_w ) - AM_RANGE( 0xa18000, 0xa18001 ) AM_WRITE(vbowl_link_3_w ) - - AM_RANGE( 0xa20000, 0xa20001 ) AM_WRITE(igs011_priority_w ) + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x200000, 0x200fff).ram().share("priority_ram"); + map(0x300000, 0x3fffff).rw(this, FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w)); + map(0x400000, 0x401fff).ram().w(this, FUNC(igs011_state::igs011_palette)).share("paletteram"); + map(0x520000, 0x520001).portr("COIN"); + map(0x600000, 0x600007).rw(this, FUNC(igs011_state::ics2115_word_r), FUNC(igs011_state::ics2115_word_w)); + map(0x700000, 0x700003).ram().share("vbowl_trackball"); + map(0x700004, 0x700005).w(this, FUNC(igs011_state::vbowl_pen_hi_w)); + map(0x800000, 0x800003).w(this, FUNC(igs011_state::vbowl_igs003_w)); + map(0x800002, 0x800003).r(this, FUNC(igs011_state::vbowl_igs003_r)); + + map(0xa00000, 0xa00001).w(this, FUNC(igs011_state::vbowl_link_0_w)); + map(0xa08000, 0xa08001).w(this, FUNC(igs011_state::vbowl_link_1_w)); + map(0xa10000, 0xa10001).w(this, FUNC(igs011_state::vbowl_link_2_w)); + map(0xa18000, 0xa18001).w(this, FUNC(igs011_state::vbowl_link_3_w)); + + map(0xa20000, 0xa20001).w(this, FUNC(igs011_state::igs011_priority_w)); // AM_RANGE( 0xa38000, 0xa38001 ) AM_WRITE(lhb_irq_enable_w ) - AM_RANGE( 0xa40000, 0xa40001 ) AM_WRITE(igs_dips_w ) + map(0xa40000, 0xa40001).w(this, FUNC(igs011_state::igs_dips_w)); - AM_RANGE( 0xa48000, 0xa48001 ) AM_WRITE(igs011_prot_addr_w ) + map(0xa48000, 0xa48001).w(this, FUNC(igs011_state::igs011_prot_addr_w)); // AM_RANGE( 0xa48000, 0xa48005 ) AM_WRITE(igs011_prot_fake_r ) - AM_RANGE( 0xa58000, 0xa58001 ) AM_WRITE(igs011_blit_x_w ) - AM_RANGE( 0xa58800, 0xa58801 ) AM_WRITE(igs011_blit_y_w ) - AM_RANGE( 0xa59000, 0xa59001 ) AM_WRITE(igs011_blit_w_w ) - AM_RANGE( 0xa59800, 0xa59801 ) AM_WRITE(igs011_blit_h_w ) - AM_RANGE( 0xa5a000, 0xa5a001 ) AM_WRITE(igs011_blit_gfx_lo_w ) - AM_RANGE( 0xa5a800, 0xa5a801 ) AM_WRITE(igs011_blit_gfx_hi_w ) - AM_RANGE( 0xa5b000, 0xa5b001 ) AM_WRITE(igs011_blit_flags_w ) - AM_RANGE( 0xa5b800, 0xa5b801 ) AM_WRITE(igs011_blit_pen_w ) - AM_RANGE( 0xa5c000, 0xa5c001 ) AM_WRITE(igs011_blit_depth_w ) - - AM_RANGE( 0xa80000, 0xa80001 ) AM_READ(vbowl_unk_r ) // comm - AM_RANGE( 0xa88000, 0xa88001 ) AM_READ(igs_4_dips_r ) - AM_RANGE( 0xa90000, 0xa90001 ) AM_READ(vbowl_unk_r ) // comm - AM_RANGE( 0xa98000, 0xa98001 ) AM_READ(vbowl_unk_r ) // comm -ADDRESS_MAP_END - - -ADDRESS_MAP_START(igs011_state::vbowlhk) - AM_IMPORT_FROM(vbowl) - AM_RANGE( 0x800000, 0x800003 ) AM_WRITE(vbowlhk_igs003_w ) - AM_RANGE( 0x50f600, 0x50f7ff ) AM_READ(vbowlhk_igs011_prot2_r ) // read -ADDRESS_MAP_END + map(0xa58000, 0xa58001).w(this, FUNC(igs011_state::igs011_blit_x_w)); + map(0xa58800, 0xa58801).w(this, FUNC(igs011_state::igs011_blit_y_w)); + map(0xa59000, 0xa59001).w(this, FUNC(igs011_state::igs011_blit_w_w)); + map(0xa59800, 0xa59801).w(this, FUNC(igs011_state::igs011_blit_h_w)); + map(0xa5a000, 0xa5a001).w(this, FUNC(igs011_state::igs011_blit_gfx_lo_w)); + map(0xa5a800, 0xa5a801).w(this, FUNC(igs011_state::igs011_blit_gfx_hi_w)); + map(0xa5b000, 0xa5b001).w(this, FUNC(igs011_state::igs011_blit_flags_w)); + map(0xa5b800, 0xa5b801).w(this, FUNC(igs011_state::igs011_blit_pen_w)); + map(0xa5c000, 0xa5c001).w(this, FUNC(igs011_state::igs011_blit_depth_w)); + + map(0xa80000, 0xa80001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm + map(0xa88000, 0xa88001).r(this, FUNC(igs011_state::igs_4_dips_r)); + map(0xa90000, 0xa90001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm + map(0xa98000, 0xa98001).r(this, FUNC(igs011_state::vbowl_unk_r)); // comm +} + + +void igs011_state::vbowlhk(address_map &map) +{ + vbowl(map); + map(0x800000, 0x800003).w(this, FUNC(igs011_state::vbowlhk_igs003_w)); + map(0x50f600, 0x50f7ff).r(this, FUNC(igs011_state::vbowlhk_igs011_prot2_r)); // read +} diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp index 95d920b8677..adcaa22d373 100644 --- a/src/mame/drivers/igs017.cpp +++ b/src/mame/drivers/igs017.cpp @@ -1142,16 +1142,18 @@ DRIVER_INIT_MEMBER(igs017_state,spkrform) // iqblocka -ADDRESS_MAP_START(igs017_state::iqblocka_map) - AM_RANGE( 0x00000, 0x0dfff ) AM_ROM - AM_RANGE( 0x0e000, 0x0efff ) AM_RAM - AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM - AM_RANGE( 0x10000, 0x3ffff ) AM_ROM -ADDRESS_MAP_END +void igs017_state::iqblocka_map(address_map &map) +{ + map(0x00000, 0x0dfff).rom(); + map(0x0e000, 0x0efff).ram(); + map(0x0f000, 0x0ffff).ram(); + map(0x10000, 0x3ffff).rom(); +} -ADDRESS_MAP_START(igs017_state::decrypted_opcodes_map) - AM_RANGE( 0x00000, 0x3ffff ) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END +void igs017_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom().share("decrypted_opcodes"); +} @@ -1198,20 +1200,21 @@ READ8_MEMBER(igs017_state::input_r) } } -ADDRESS_MAP_START(igs017_state::iqblocka_io) - AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write) +void igs017_state::iqblocka_io(address_map &map) +{ + map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); - AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs + map(0x0000, 0x003f).ram(); // internal regs - AM_RANGE( 0x8000, 0x8000 ) AM_WRITE(input_select_w ) - AM_RANGE( 0x8001, 0x8001 ) AM_READ(input_r ) + map(0x8000, 0x8000).w(this, FUNC(igs017_state::input_select_w)); + map(0x8001, 0x8001).r(this, FUNC(igs017_state::input_r)); - AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE( 0xa000, 0xa000 ) AM_READ_PORT( "BUTTONS" ) + map(0xa000, 0xa000).portr("BUTTONS"); - AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE("ymsnd", ym2413_device, write) -ADDRESS_MAP_END + map(0xb000, 0xb001).w("ymsnd", FUNC(ym2413_device::write)); +} // mgcs @@ -1471,16 +1474,17 @@ READ8_MEMBER(igs017_state::mgcs_keys_r) -ADDRESS_MAP_START(igs017_state::mgcs) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM - AM_RANGE( 0x300000, 0x303fff ) AM_RAM - AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE(mgcs_magic_w ) AM_READ(mgcs_magic_r ) +void igs017_state::mgcs(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x300000, 0x303fff).ram(); + map(0x49c000, 0x49c003).w(this, FUNC(igs017_state::mgcs_magic_w)).r(this, FUNC(igs017_state::mgcs_magic_r)); - AM_RANGE( 0xa00000, 0xa0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff) + map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); - AM_RANGE( 0xa12000, 0xa12001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) + map(0xa12001, 0xa12001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // oki banking through protection (code at $1a350)? -ADDRESS_MAP_END +} // sdmg2 @@ -1553,16 +1557,17 @@ READ16_MEMBER(igs017_state::sdmg2_magic_r) return 0xffff; } -ADDRESS_MAP_START(igs017_state::sdmg2) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM +void igs017_state::sdmg2(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x1f0000, 0x1fffff).ram(); - AM_RANGE(0x200000, 0x20ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff) + map(0x200000, 0x20ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); - AM_RANGE(0x210000, 0x210001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE(0x300000, 0x300003) AM_WRITE(sdmg2_magic_w ) - AM_RANGE(0x300002, 0x300003) AM_READ(sdmg2_magic_r ) -ADDRESS_MAP_END + map(0x210001, 0x210001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x300000, 0x300003).w(this, FUNC(igs017_state::sdmg2_magic_w)); + map(0x300002, 0x300003).r(this, FUNC(igs017_state::sdmg2_magic_r)); +} // mgdh, mgdha @@ -1666,16 +1671,17 @@ READ16_MEMBER(igs017_state::mgdha_magic_r) return 0xffff; } -ADDRESS_MAP_START(igs017_state::mgdha_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x600000, 0x603fff) AM_RAM - AM_RANGE(0x876000, 0x876003) AM_WRITE(mgdha_magic_w ) - AM_RANGE(0x876002, 0x876003) AM_READ(mgdha_magic_r ) +void igs017_state::mgdha_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x600000, 0x603fff).ram(); + map(0x876000, 0x876003).w(this, FUNC(igs017_state::mgdha_magic_w)); + map(0x876002, 0x876003).r(this, FUNC(igs017_state::mgdha_magic_r)); - AM_RANGE(0xa00000, 0xa0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff) + map(0xa00000, 0xa0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); - AM_RANGE(0xa10000, 0xa10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) -ADDRESS_MAP_END + map(0xa10001, 0xa10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} // tjsb @@ -1731,36 +1737,39 @@ READ8_MEMBER(igs017_state::tjsb_input_r) } } -ADDRESS_MAP_START(igs017_state::tjsb_map) - AM_RANGE( 0x00000, 0x0dfff ) AM_ROM - AM_RANGE( 0x0e000, 0x0e000 ) AM_WRITE(input_select_w ) - AM_RANGE( 0x0e001, 0x0e001 ) AM_READWRITE(tjsb_input_r, tjsb_output_w ) - AM_RANGE( 0x0e002, 0x0efff ) AM_RAM - AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM - AM_RANGE( 0x10000, 0x3ffff ) AM_ROM -ADDRESS_MAP_END +void igs017_state::tjsb_map(address_map &map) +{ + map(0x00000, 0x0dfff).rom(); + map(0x0e000, 0x0e000).w(this, FUNC(igs017_state::input_select_w)); + map(0x0e001, 0x0e001).rw(this, FUNC(igs017_state::tjsb_input_r), FUNC(igs017_state::tjsb_output_w)); + map(0x0e002, 0x0efff).ram(); + map(0x0f000, 0x0ffff).ram(); + map(0x10000, 0x3ffff).rom(); +} -ADDRESS_MAP_START(igs017_state::tjsb_io) - AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write) +void igs017_state::tjsb_io(address_map &map) +{ + map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); - AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs + map(0x0000, 0x003f).ram(); // internal regs - AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x9000, 0x9000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE( 0xb000, 0xb001 ) AM_DEVWRITE("ymsnd", ym2413_device, write) -ADDRESS_MAP_END + map(0xb000, 0xb001).w("ymsnd", FUNC(ym2413_device::write)); +} // spkrform -ADDRESS_MAP_START(igs017_state::spkrform_map) - AM_RANGE( 0x00000, 0x0dfff ) AM_ROM - AM_RANGE( 0x0e000, 0x0efff ) AM_RAM - AM_RANGE( 0x0e9bf, 0x0e9bf ) AM_NOP // hack: uncomment to switch to Formosa - AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM - AM_RANGE( 0x10000, 0x3ffff ) AM_ROM -ADDRESS_MAP_END +void igs017_state::spkrform_map(address_map &map) +{ + map(0x00000, 0x0dfff).rom(); + map(0x0e000, 0x0efff).ram(); + map(0x0e9bf, 0x0e9bf).noprw(); // hack: uncomment to switch to Formosa + map(0x0f000, 0x0ffff).ram(); + map(0x10000, 0x3ffff).rom(); +} READ8_MEMBER(igs017_state::spkrform_input_r) { @@ -1780,21 +1789,22 @@ READ8_MEMBER(igs017_state::spkrform_input_r) } } -ADDRESS_MAP_START(igs017_state::spkrform_io) - AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write) +void igs017_state::spkrform_io(address_map &map) +{ + map(0x0000, 0x7fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); - AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs + map(0x0000, 0x003f).ram(); // internal regs - AM_RANGE( 0x8000, 0x8000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x8000, 0x8000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE( 0x9000, 0x9001 ) AM_DEVWRITE("ymsnd", ym2413_device, write) + map(0x9000, 0x9001).w("ymsnd", FUNC(ym2413_device::write)); - AM_RANGE( 0xa000, 0xa000 ) AM_READ_PORT( "A000" ) // Game selection - AM_RANGE( 0xa001, 0xa001 ) AM_READ_PORT( "A001" ) + map(0xa000, 0xa000).portr("A000"); // Game selection + map(0xa001, 0xa001).portr("A001"); - AM_RANGE( 0xb000, 0xb000 ) AM_WRITE(input_select_w ) - AM_RANGE( 0xb001, 0xb001 ) AM_READ(spkrform_input_r ) -ADDRESS_MAP_END + map(0xb000, 0xb000).w(this, FUNC(igs017_state::input_select_w)); + map(0xb001, 0xb001).r(this, FUNC(igs017_state::spkrform_input_r)); +} // lhzb2 @@ -1858,16 +1868,17 @@ READ16_MEMBER(igs017_state::lhzb2_magic_r) return 0xffff; } -ADDRESS_MAP_START(igs017_state::lhzb2) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x500000, 0x503fff) AM_RAM - AM_RANGE(0x910000, 0x910003) AM_WRITE( lhzb2_magic_w ) - AM_RANGE(0x910002, 0x910003) AM_READ( lhzb2_magic_r ) +void igs017_state::lhzb2(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x500000, 0x503fff).ram(); + map(0x910000, 0x910003).w(this, FUNC(igs017_state::lhzb2_magic_w)); + map(0x910002, 0x910003).r(this, FUNC(igs017_state::lhzb2_magic_r)); - AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff) + map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); - AM_RANGE(0xb10000, 0xb10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) -ADDRESS_MAP_END + map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} // lhzb2a @@ -2170,24 +2181,25 @@ WRITE16_MEMBER(igs017_state::lhzb2a_input_select_w) } } -ADDRESS_MAP_START(igs017_state::lhzb2a) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void igs017_state::lhzb2a(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // prot2 - AM_RANGE(0x003200, 0x003201) AM_WRITE( lhzb2a_prot2_reset_w ) - AM_RANGE(0x003202, 0x003203) AM_WRITE( lhzb2a_prot2_dec_w ) - AM_RANGE(0x003206, 0x003207) AM_WRITE( lhzb2a_prot2_inc_w ) - AM_RANGE(0x00320a, 0x00320b) AM_READ( lhzb2a_prot2_r ) + map(0x003200, 0x003201).w(this, FUNC(igs017_state::lhzb2a_prot2_reset_w)); + map(0x003202, 0x003203).w(this, FUNC(igs017_state::lhzb2a_prot2_dec_w)); + map(0x003206, 0x003207).w(this, FUNC(igs017_state::lhzb2a_prot2_inc_w)); + map(0x00320a, 0x00320b).r(this, FUNC(igs017_state::lhzb2a_prot2_r)); - AM_RANGE(0x500000, 0x503fff) AM_RAM + map(0x500000, 0x503fff).ram(); // AM_RANGE(0x910000, 0x910003) accesses appear to be from leftover code where the final checks were disabled - AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff) + map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); - AM_RANGE(0xb10000, 0xb10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE(0xb12000, 0xb12001) AM_WRITE( lhzb2a_input_select_w ) + map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xb12000, 0xb12001).w(this, FUNC(igs017_state::lhzb2a_input_select_w)); // Inputs dynamically mapped at xx8000, protection at xx4000 (xx = f0 initially). xx written to xxc000 -ADDRESS_MAP_END +} // slqz2 @@ -2240,17 +2252,18 @@ READ16_MEMBER(igs017_state::slqz2_magic_r) return 0xffff; } -ADDRESS_MAP_START(igs017_state::slqz2) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x602000, 0x602003) AM_WRITE( slqz2_magic_w ) - AM_RANGE(0x602002, 0x602003) AM_READ( slqz2_magic_r ) +void igs017_state::slqz2(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x602000, 0x602003).w(this, FUNC(igs017_state::slqz2_magic_w)); + map(0x602002, 0x602003).r(this, FUNC(igs017_state::slqz2_magic_r)); - AM_RANGE(0x900000, 0x90ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff) + map(0x900000, 0x90ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff); - AM_RANGE(0x910000, 0x910001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) -ADDRESS_MAP_END + map(0x910001, 0x910001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/igs_fear.cpp b/src/mame/drivers/igs_fear.cpp index 0a3e7eb478a..da71fd9a79a 100644 --- a/src/mame/drivers/igs_fear.cpp +++ b/src/mame/drivers/igs_fear.cpp @@ -45,10 +45,11 @@ uint32_t igs_fear_state::screen_update_igs_fear(screen_device &screen, bitmap_in return 0; } -ADDRESS_MAP_START(igs_fear_state::igs_igs_fear_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */ - AM_RANGE(0x08000000, 0x0807ffff) AM_ROM AM_REGION("user1", 0)/* Game ROM */ -ADDRESS_MAP_END +void igs_fear_state::igs_igs_fear_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom(); /* Internal ROM */ + map(0x08000000, 0x0807ffff).rom().region("user1", 0);/* Game ROM */ +} // debugging only, not tile based static const gfx_layout fearlayout = diff --git a/src/mame/drivers/igs_m027.cpp b/src/mame/drivers/igs_m027.cpp index c0bb07bb617..c87c8b9b245 100644 --- a/src/mame/drivers/igs_m027.cpp +++ b/src/mame/drivers/igs_m027.cpp @@ -143,20 +143,21 @@ uint32_t igs_m027_state::screen_update_igs_majhong(screen_device &screen, bitmap ***************************************************************************/ -ADDRESS_MAP_START(igs_m027_state::igs_majhong_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */ - AM_RANGE(0x08000000, 0x0807ffff) AM_ROM AM_REGION("user1", 0)/* Game ROM */ - AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_SHARE("igs_mainram")// main ram for asic? - AM_RANGE(0x18000000, 0x18007fff) AM_RAM +void igs_m027_state::igs_majhong_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom(); /* Internal ROM */ + map(0x08000000, 0x0807ffff).rom().region("user1", 0);/* Game ROM */ + map(0x10000000, 0x100003ff).ram().share("igs_mainram");// main ram for asic? + map(0x18000000, 0x18007fff).ram(); - AM_RANGE(0x38000000, 0x38007fff) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0xffffffff) // guess based on below + map(0x38000000, 0x38007fff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)); // guess based on below - AM_RANGE(0x38009000, 0x38009003) AM_RAM //?????????????? oki 6295 + map(0x38009000, 0x38009003).ram(); //?????????????? oki 6295 - AM_RANGE(0x70000200, 0x70000203) AM_RAM //?????????????? - AM_RANGE(0x50000000, 0x500003ff) AM_WRITENOP // uploads xor table to external rom here - AM_RANGE(0xf0000000, 0xF000000f) AM_WRITENOP // magic registers -ADDRESS_MAP_END + map(0x70000200, 0x70000203).ram(); //?????????????? + map(0x50000000, 0x500003ff).nopw(); // uploads xor table to external rom here + map(0xf0000000, 0xF000000f).nopw(); // magic registers +} diff --git a/src/mame/drivers/igs_m036.cpp b/src/mame/drivers/igs_m036.cpp index 39d664ff59b..01e386773ef 100644 --- a/src/mame/drivers/igs_m036.cpp +++ b/src/mame/drivers/igs_m036.cpp @@ -95,11 +95,12 @@ uint32_t igs_m036_state::screen_update_igs_m036(screen_device &screen, bitmap_in return 0; } -ADDRESS_MAP_START(igs_m036_state::igs_m036_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */ - AM_RANGE(0x08000000, 0x081fffff) AM_ROM AM_REGION("user1", 0) // not 100% sure it maps here. +void igs_m036_state::igs_m036_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom(); /* Internal ROM */ + map(0x08000000, 0x081fffff).rom().region("user1", 0); // not 100% sure it maps here. -ADDRESS_MAP_END +} static INPUT_PORTS_START( igs_m036 ) INPUT_PORTS_END diff --git a/src/mame/drivers/igspc.cpp b/src/mame/drivers/igspc.cpp index 1ffe00bff59..02ba80bc615 100644 --- a/src/mame/drivers/igspc.cpp +++ b/src/mame/drivers/igspc.cpp @@ -65,12 +65,14 @@ public: DECLARE_DRIVER_INIT(speeddrv); }; -ADDRESS_MAP_START(speeddrv_state::speeddrv_map) - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END +void speeddrv_state::speeddrv_map(address_map &map) +{ + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(speeddrv_state::speeddrv_io) -ADDRESS_MAP_END +void speeddrv_state::speeddrv_io(address_map &map) +{ +} static INPUT_PORTS_START( speeddrv ) diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp index c419fdde62e..331117a6db8 100644 --- a/src/mame/drivers/igspoker.cpp +++ b/src/mame/drivers/igspoker.cpp @@ -383,30 +383,32 @@ READ8_MEMBER(igspoker_state::exp_rom_r) return rom[offset+0x10000]; } -ADDRESS_MAP_START(igspoker_state::igspoker_prg_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_REGION("maincpu", 0xf000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(igspoker_state::igspoker_io_map) - AM_RANGE(0x0000, 0xffff) AM_READ(exp_rom_r ) - AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */ - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w) - AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */ - AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") /* Not connected */ - AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) - AM_RANGE(0x6800, 0x6fff) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram") - AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") - AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") -ADDRESS_MAP_END +void igspoker_state::igspoker_prg_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram().region("maincpu", 0xf000); +} + +void igspoker_state::igspoker_io_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(igspoker_state::exp_rom_r)); + map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */ + map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */ + map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */ + map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */ + map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */ + map(0x5080, 0x5083).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5090, 0x5090).w(this, FUNC(igspoker_state::custom_io_w)); + map(0x5091, 0x5091).r(this, FUNC(igspoker_state::custom_io_r)).w(this, FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */ + map(0x50a0, 0x50a0).portr("BUTTONS2"); /* Not connected */ + map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write)); + map(0x50c0, 0x50c0).r(this, FUNC(igspoker_state::igs_irqack_r)).w(this, FUNC(igspoker_state::igs_irqack_w)); + map(0x6800, 0x6fff).ram().w(this, FUNC(igspoker_state::bg_tile_w)).share("bg_tile_ram"); + map(0x7000, 0x77ff).ram().w(this, FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram"); + map(0x7800, 0x7fff).ram().w(this, FUNC(igspoker_state::fg_color_w)).share("fg_color_ram"); +} /* MB: 05 Jun 99 Input ports and Dip switches are all verified! */ @@ -1140,50 +1142,52 @@ static INPUT_PORTS_START( igs_ncs ) INPUT_PORTS_END -ADDRESS_MAP_START(igspoker_state::number10_io_map) - AM_RANGE(0x0000, 0xffff) AM_READ(exp_rom_r ) - AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */ - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x4006, 0x4006) AM_READ_PORT("DSW6") - AM_RANGE(0x4007, 0x4007) AM_READ_PORT("DSW7") - AM_RANGE(0x50f0, 0x50f0) AM_WRITE(igs_nmi_and_coins_w) - AM_RANGE(0x5080, 0x5080) AM_READ_PORT("SERVICE") /* Services */ - AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w) - AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */ - AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") +void igspoker_state::number10_io_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(igspoker_state::exp_rom_r)); + map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */ + map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */ + map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */ + map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */ + map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */ + map(0x4006, 0x4006).portr("DSW6"); + map(0x4007, 0x4007).portr("DSW7"); + map(0x50f0, 0x50f0).w(this, FUNC(igspoker_state::igs_nmi_and_coins_w)); + map(0x5080, 0x5080).portr("SERVICE"); /* Services */ + map(0x5090, 0x5090).w(this, FUNC(igspoker_state::custom_io_w)); + map(0x5091, 0x5091).r(this, FUNC(igspoker_state::custom_io_r)).w(this, FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */ + map(0x50a0, 0x50a0).portr("BUTTONS2"); /* Sound synthesys has been patched out, replaced by ADPCM samples */ - AM_RANGE(0x50b0, 0x50b0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) - AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") - AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(igspoker_state::cpokerpk_io_map) - AM_RANGE(0x0000, 0xffff) AM_READ(exp_rom_r ) - AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */ - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x50f0, 0x50f0) AM_WRITE(igs_nmi_and_coins_w) - AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE") /* Services */ - AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS") /* Coing & Kbd */ - AM_RANGE(0x5090, 0x5090) AM_WRITE(custom_io_w) - AM_RANGE(0x5091, 0x5091) AM_READ(custom_io_r) AM_WRITE(igs_lamps_w ) /* Keyboard */ - AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") + map(0x50b0, 0x50b0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x50c0, 0x50c0).r(this, FUNC(igspoker_state::igs_irqack_r)).w(this, FUNC(igspoker_state::igs_irqack_w)); + map(0x7000, 0x77ff).ram().w(this, FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram"); + map(0x7800, 0x7fff).ram().w(this, FUNC(igspoker_state::fg_color_w)).share("fg_color_ram"); +} + +void igspoker_state::cpokerpk_io_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(igspoker_state::exp_rom_r)); + map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */ + map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */ + map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */ + map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */ + map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */ + map(0x50f0, 0x50f0).w(this, FUNC(igspoker_state::igs_nmi_and_coins_w)); + map(0x5081, 0x5081).portr("SERVICE"); /* Services */ + map(0x5082, 0x5082).portr("COINS"); /* Coing & Kbd */ + map(0x5090, 0x5090).w(this, FUNC(igspoker_state::custom_io_w)); + map(0x5091, 0x5091).r(this, FUNC(igspoker_state::custom_io_r)).w(this, FUNC(igspoker_state::igs_lamps_w)); /* Keyboard */ + map(0x50a0, 0x50a0).portr("BUTTONS2"); /* Sound synthesys has been patched out, replaced by ADPCM samples */ - AM_RANGE(0x50b0, 0x50b0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) - AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") - AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") -ADDRESS_MAP_END + map(0x50b0, 0x50b0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x50c0, 0x50c0).r(this, FUNC(igspoker_state::igs_irqack_r)).w(this, FUNC(igspoker_state::igs_irqack_w)); + map(0x7000, 0x77ff).ram().w(this, FUNC(igspoker_state::fg_tile_w)).share("fg_tile_ram"); + map(0x7800, 0x7fff).ram().w(this, FUNC(igspoker_state::fg_color_w)).share("fg_color_ram"); +} static INPUT_PORTS_START( number10 ) PORT_START("DSW1") diff --git a/src/mame/drivers/ikki.cpp b/src/mame/drivers/ikki.cpp index 533ff5f891b..d82236395b0 100644 --- a/src/mame/drivers/ikki.cpp +++ b/src/mame/drivers/ikki.cpp @@ -47,29 +47,31 @@ WRITE8_MEMBER(ikki_state::ikki_coin_counters) * *************************************/ -ADDRESS_MAP_START(ikki_state::ikki_cpu1) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe000) AM_READ(ikki_e000_r) - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW2") - AM_RANGE(0xe003, 0xe003) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("P1") - AM_RANGE(0xe005, 0xe005) AM_READ_PORT("P2") - AM_RANGE(0xe008, 0xe008) AM_WRITE(ikki_scrn_ctrl_w) - AM_RANGE(0xe009, 0xe009) AM_WRITE(ikki_coin_counters) - AM_RANGE(0xe00a, 0xe00b) AM_WRITEONLY AM_SHARE("scroll") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ikki_state::ikki_cpu2) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd801, 0xd801) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0xd802, 0xd802) AM_DEVWRITE("sn2", sn76496_device, write) -ADDRESS_MAP_END +void ikki_state::ikki_cpu1(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd7ff).ram().share("videoram"); + map(0xe000, 0xe000).r(this, FUNC(ikki_state::ikki_e000_r)); + map(0xe001, 0xe001).portr("DSW1"); + map(0xe002, 0xe002).portr("DSW2"); + map(0xe003, 0xe003).portr("SYSTEM"); + map(0xe004, 0xe004).portr("P1"); + map(0xe005, 0xe005).portr("P2"); + map(0xe008, 0xe008).w(this, FUNC(ikki_state::ikki_scrn_ctrl_w)); + map(0xe009, 0xe009).w(this, FUNC(ikki_state::ikki_coin_counters)); + map(0xe00a, 0xe00b).writeonly().share("scroll"); +} + +void ikki_state::ikki_cpu2(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xc000, 0xc7ff).ram().share("spriteram"); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::write)); + map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::write)); +} /************************************* diff --git a/src/mame/drivers/imds.cpp b/src/mame/drivers/imds.cpp index 5ea17f04a02..a94357c67d7 100644 --- a/src/mame/drivers/imds.cpp +++ b/src/mame/drivers/imds.cpp @@ -61,16 +61,18 @@ READ8_MEMBER( imds_state::term_r ) return (m_term_data) ? 0x21 : 0x20; } -ADDRESS_MAP_START(imds_state::imds_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(imds_state::imds_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void imds_state::imds_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0xffff).ram(); +} + +void imds_state::imds_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} /* Input ports */ static INPUT_PORTS_START( imds ) diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp index 28a04b9ba0f..703700885ed 100644 --- a/src/mame/drivers/imds2.cpp +++ b/src/mame/drivers/imds2.cpp @@ -110,50 +110,54 @@ // Frequency of beeper #define IOC_BEEP_FREQ 3300 -ADDRESS_MAP_START(imds2_state::ipc_mem_map) - AM_RANGE(0x0000 , 0xffff) AM_READWRITE(ipc_mem_read, ipc_mem_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(imds2_state::ipc_io_map) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0xc0 , 0xc0) AM_READWRITE(imds2_ipc_dbbout_r , imds2_ipc_dbbin_data_w) - AM_RANGE(0xc1 , 0xc1) AM_READWRITE(imds2_ipc_status_r , imds2_ipc_dbbin_cmd_w) - AM_RANGE(0xf0 , 0xf3) AM_DEVREADWRITE("ipctimer" , pit8253_device , read , write) - AM_RANGE(0xf4 , 0xf4) AM_DEVREADWRITE("ipcusart0" , i8251_device , data_r , data_w) - AM_RANGE(0xf5 , 0xf5) AM_DEVREADWRITE("ipcusart0" , i8251_device , status_r , control_w) - AM_RANGE(0xf6 , 0xf6) AM_DEVREADWRITE("ipcusart1" , i8251_device , data_r , data_w) - AM_RANGE(0xf7 , 0xf7) AM_DEVREADWRITE("ipcusart1" , i8251_device , status_r , control_w) - AM_RANGE(0xf8 , 0xf9) AM_DEVREADWRITE("iocpio" , i8041_device , upi41_master_r , upi41_master_w) - AM_RANGE(0xfa , 0xfb) AM_READWRITE(imds2_ipclocpic_r , imds2_ipclocpic_w) - AM_RANGE(0xfc , 0xfd) AM_READWRITE(imds2_ipcsyspic_r , imds2_ipcsyspic_w) - AM_RANGE(0xff , 0xff) AM_WRITE(imds2_ipc_control_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(imds2_state::ioc_mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000 , 0x1fff) AM_ROM - AM_RANGE(0x4000 , 0x5fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(imds2_state::ioc_io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00 , 0x0f) AM_WRITE(imds2_ioc_dbbout_w) - AM_RANGE(0x20 , 0x2f) AM_WRITE(imds2_ioc_f0_w) - AM_RANGE(0x30 , 0x3f) AM_WRITE(imds2_ioc_set_f1_w) - AM_RANGE(0x40 , 0x4f) AM_WRITE(imds2_ioc_reset_f1_w) - AM_RANGE(0x50 , 0x5f) AM_WRITE(imds2_start_timer_w) - AM_RANGE(0x60 , 0x6f) AM_WRITE(imds2_miscout_w) - AM_RANGE(0x80 , 0x8f) AM_READ(imds2_miscin_r) - AM_RANGE(0x90 , 0x9f) AM_READ(imds2_kb_read) - AM_RANGE(0xa0 , 0xaf) AM_READ(imds2_ioc_status_r) - AM_RANGE(0xb0 , 0xbf) AM_READ(imds2_ioc_dbbin_r) - AM_RANGE(0xc0 , 0xcf) AM_DEVICE("iocfdc" , i8271_device, map) - AM_RANGE(0xd0 , 0xdf) AM_DEVREADWRITE("ioccrtc" , i8275_device , read , write) - AM_RANGE(0xe0 , 0xef) AM_DEVREADWRITE("ioctimer" , pit8253_device , read , write); +void imds2_state::ipc_mem_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(imds2_state::ipc_mem_read), FUNC(imds2_state::ipc_mem_write)); +} + +void imds2_state::ipc_io_map(address_map &map) +{ + map.unmap_value_low(); + map(0xc0, 0xc0).rw(this, FUNC(imds2_state::imds2_ipc_dbbout_r), FUNC(imds2_state::imds2_ipc_dbbin_data_w)); + map(0xc1, 0xc1).rw(this, FUNC(imds2_state::imds2_ipc_status_r), FUNC(imds2_state::imds2_ipc_dbbin_cmd_w)); + map(0xf0, 0xf3).rw(m_ipctimer, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xf4, 0xf4).rw(m_ipcusart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf5, 0xf5).rw(m_ipcusart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf6, 0xf6).rw(m_ipcusart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf7, 0xf7).rw(m_ipcusart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf8, 0xf9).rw(m_iocpio, FUNC(i8041_device::upi41_master_r), FUNC(i8041_device::upi41_master_w)); + map(0xfa, 0xfb).rw(this, FUNC(imds2_state::imds2_ipclocpic_r), FUNC(imds2_state::imds2_ipclocpic_w)); + map(0xfc, 0xfd).rw(this, FUNC(imds2_state::imds2_ipcsyspic_r), FUNC(imds2_state::imds2_ipcsyspic_w)); + map(0xff, 0xff).w(this, FUNC(imds2_state::imds2_ipc_control_w)); +} + +void imds2_state::ioc_mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x5fff).ram(); +} + +void imds2_state::ioc_io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x0f).w(this, FUNC(imds2_state::imds2_ioc_dbbout_w)); + map(0x20, 0x2f).w(this, FUNC(imds2_state::imds2_ioc_f0_w)); + map(0x30, 0x3f).w(this, FUNC(imds2_state::imds2_ioc_set_f1_w)); + map(0x40, 0x4f).w(this, FUNC(imds2_state::imds2_ioc_reset_f1_w)); + map(0x50, 0x5f).w(this, FUNC(imds2_state::imds2_start_timer_w)); + map(0x60, 0x6f).w(this, FUNC(imds2_state::imds2_miscout_w)); + map(0x80, 0x8f).r(this, FUNC(imds2_state::imds2_miscin_r)); + map(0x90, 0x9f).r(this, FUNC(imds2_state::imds2_kb_read)); + map(0xa0, 0xaf).r(this, FUNC(imds2_state::imds2_ioc_status_r)); + map(0xb0, 0xbf).r(this, FUNC(imds2_state::imds2_ioc_dbbin_r)); + map(0xc0, 0xcf).m(m_iocfdc, FUNC(i8271_device::map)); + map(0xd0, 0xdf).rw(m_ioccrtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0xe0, 0xef).rw(m_ioctimer, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // DMA controller range doesn't extend to 0xff because register 0xfd needs to be read as 0xff // This register is used by IOC firmware to detect DMA controller model (either 8237 or 8257) - AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write) -ADDRESS_MAP_END + map(0xf0, 0xf8).rw(m_iocdma, FUNC(i8257_device::read), FUNC(i8257_device::write)); +} imds2_state::imds2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig , type , tag), diff --git a/src/mame/drivers/imolagp.cpp b/src/mame/drivers/imolagp.cpp index 8150aab4c38..c9c7479fea2 100644 --- a/src/mame/drivers/imolagp.cpp +++ b/src/mame/drivers/imolagp.cpp @@ -329,39 +329,43 @@ READ8_MEMBER(imolagp_state::imola_draw_mode_r) return 0; } -ADDRESS_MAP_START(imolagp_state::imolagp_master_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x3000, 0x3000) AM_WRITE(vreg_control_w) - AM_RANGE(0x37f0, 0x37f0) AM_DEVWRITE("aysnd", ay8910_device, address_w) +void imolagp_state::imolagp_master_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x2800, 0x2803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x3000, 0x3000).w(this, FUNC(imolagp_state::vreg_control_w)); + map(0x37f0, 0x37f0).w("aysnd", FUNC(ay8910_device::address_w)); // AM_RANGE(0x37f7, 0x37f7) AM_NOP - AM_RANGE(0x3800, 0x3800) AM_READWRITE(vreg_data_r, vreg_data_w) - AM_RANGE(0x3810, 0x3810) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSWA") - AM_RANGE(0x47ff, 0x4800) AM_WRITE(transmit_data_w) - AM_RANGE(0x5000, 0x50ff) AM_WRITE(imola_led_board_w) - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("DSWA") // assume mirror - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSWB") -ADDRESS_MAP_END - -ADDRESS_MAP_START(imolagp_state::imolagp_master_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(trigger_slave_nmi_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(imolagp_state::imolagp_slave_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x9fff, 0xa000) AM_READ(receive_data_r) - AM_RANGE(0xc000, 0xffff) AM_WRITE(screenram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(imolagp_state::imolagp_slave_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0xff) AM_READ(imola_draw_mode_r) -ADDRESS_MAP_END + map(0x3800, 0x3800).rw(this, FUNC(imolagp_state::vreg_data_r), FUNC(imolagp_state::vreg_data_w)); + map(0x3810, 0x3810).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x4000, 0x4000).portr("DSWA"); + map(0x47ff, 0x4800).w(this, FUNC(imolagp_state::transmit_data_w)); + map(0x5000, 0x50ff).w(this, FUNC(imolagp_state::imola_led_board_w)); + map(0x5800, 0x5800).portr("DSWA"); // assume mirror + map(0x6000, 0x6000).portr("DSWB"); +} + +void imolagp_state::imolagp_master_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(imolagp_state::trigger_slave_nmi_r)); +} + + +void imolagp_state::imolagp_slave_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x9fff, 0xa000).r(this, FUNC(imolagp_state::receive_data_r)); + map(0xc000, 0xffff).w(this, FUNC(imolagp_state::screenram_w)); +} + +void imolagp_state::imolagp_slave_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).r(this, FUNC(imolagp_state::imola_draw_mode_r)); +} diff --git a/src/mame/drivers/imsai.cpp b/src/mame/drivers/imsai.cpp index 2450f5930dd..c45c0f41fb4 100644 --- a/src/mame/drivers/imsai.cpp +++ b/src/mame/drivers/imsai.cpp @@ -51,27 +51,29 @@ private: }; -ADDRESS_MAP_START(imsai_state::imsai_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("prom", 0) - AM_RANGE(0xd000, 0xd0ff) AM_RAM - AM_RANGE(0xd100, 0xd103) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xd800, 0xdfff) AM_ROM AM_REGION("prom", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(imsai_state::imsai_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_READ(keyin_r) AM_DEVWRITE("terminal", generic_terminal_device, write) - AM_RANGE(0x03, 0x03) AM_READ(status_r) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x13, 0x13) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x14, 0x14) AM_READ(keyin_r) AM_DEVWRITE("terminal", generic_terminal_device, write) - AM_RANGE(0x15, 0x15) AM_READ(status_r) - AM_RANGE(0xf3, 0xf3) AM_WRITE(control_w) -ADDRESS_MAP_END +void imsai_state::imsai_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom().region("prom", 0); + map(0xd000, 0xd0ff).ram(); + map(0xd100, 0xd103).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xd800, 0xdfff).rom().region("prom", 0); +} + +void imsai_state::imsai_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x02, 0x02).r(this, FUNC(imsai_state::keyin_r)).w(m_terminal, FUNC(generic_terminal_device::write)); + map(0x03, 0x03).r(this, FUNC(imsai_state::status_r)); + map(0x04, 0x04).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x05, 0x05).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x12, 0x12).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x13, 0x13).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x14, 0x14).r(this, FUNC(imsai_state::keyin_r)).w(m_terminal, FUNC(generic_terminal_device::write)); + map(0x15, 0x15).r(this, FUNC(imsai_state::status_r)); + map(0xf3, 0xf3).w(this, FUNC(imsai_state::control_w)); +} /* Input ports */ static INPUT_PORTS_START( imsai ) diff --git a/src/mame/drivers/inder.cpp b/src/mame/drivers/inder.cpp index d5ceae4dc46..a439859a1af 100644 --- a/src/mame/drivers/inder.cpp +++ b/src/mame/drivers/inder.cpp @@ -115,71 +115,77 @@ private: required_ioport_array<11> m_switches; }; -ADDRESS_MAP_START(inder_state::brvteam_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w) - AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114 - AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed - AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w) - AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_brvteam_w) - AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w) - AM_RANGE(0x4b00, 0x4b00) AM_WRITE(sn_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(inder_state::canasta_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w) - AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114 - AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed - AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w) - AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_canasta_w) - AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w) - AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE("ay", ay8910_device, address_w) - AM_RANGE(0x4b01, 0x4b01) AM_DEVREAD("ay", ay8910_device, data_r) - AM_RANGE(0x4b02, 0x4b02) AM_DEVWRITE("ay", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(inder_state::lapbylap_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x20ff) AM_WRITE(disp_w) - AM_RANGE(0x4000, 0x43ff) AM_RAM // pair of 2114 - AM_RANGE(0x4400, 0x44ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed - AM_RANGE(0x4800, 0x480a) AM_READWRITE(sw_r,sw_w) - AM_RANGE(0x4900, 0x4900) AM_WRITE(sol_canasta_w) - AM_RANGE(0x4901, 0x4907) AM_WRITE(lamp_w) - AM_RANGE(0x4b00, 0x4b00) AM_WRITE(sndcmd_lapbylap_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(inder_state::lapbylap_sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM // 6116 - AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x9001, 0x9001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x9002, 0x9002) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xa002, 0xa002) AM_DEVWRITE("ay2", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(inder_state::inder_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram") // 6116, battery-backed - AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write) - AM_RANGE(0x6400, 0x6403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write) - AM_RANGE(0x6800, 0x6803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write) - AM_RANGE(0x6c00, 0x6c03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write) - AM_RANGE(0x6c20, 0x6c3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w) - AM_RANGE(0x6c60, 0x6c7f) AM_MIRROR(0x1300) AM_WRITE(disp_w) - AM_RANGE(0x6ce0, 0x6ce0) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(inder_state::inder_sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_MIRROR(0x1800) AM_RAM // 6116 - AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_w) - AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r) -ADDRESS_MAP_END +void inder_state::brvteam_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).w(this, FUNC(inder_state::disp_w)); + map(0x4000, 0x43ff).ram(); // pair of 2114 + map(0x4400, 0x44ff).ram().share("nvram"); // pair of 5101, battery-backed + map(0x4800, 0x480a).rw(this, FUNC(inder_state::sw_r), FUNC(inder_state::sw_w)); + map(0x4900, 0x4900).w(this, FUNC(inder_state::sol_brvteam_w)); + map(0x4901, 0x4907).w(this, FUNC(inder_state::lamp_w)); + map(0x4b00, 0x4b00).w(this, FUNC(inder_state::sn_w)); +} + +void inder_state::canasta_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).w(this, FUNC(inder_state::disp_w)); + map(0x4000, 0x43ff).ram(); // pair of 2114 + map(0x4400, 0x44ff).ram().share("nvram"); // pair of 5101, battery-backed + map(0x4800, 0x480a).rw(this, FUNC(inder_state::sw_r), FUNC(inder_state::sw_w)); + map(0x4900, 0x4900).w(this, FUNC(inder_state::sol_canasta_w)); + map(0x4901, 0x4907).w(this, FUNC(inder_state::lamp_w)); + map(0x4b00, 0x4b00).w("ay", FUNC(ay8910_device::address_w)); + map(0x4b01, 0x4b01).r("ay", FUNC(ay8910_device::data_r)); + map(0x4b02, 0x4b02).w("ay", FUNC(ay8910_device::data_w)); +} + +void inder_state::lapbylap_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).w(this, FUNC(inder_state::disp_w)); + map(0x4000, 0x43ff).ram(); // pair of 2114 + map(0x4400, 0x44ff).ram().share("nvram"); // pair of 5101, battery-backed + map(0x4800, 0x480a).rw(this, FUNC(inder_state::sw_r), FUNC(inder_state::sw_w)); + map(0x4900, 0x4900).w(this, FUNC(inder_state::sol_canasta_w)); + map(0x4901, 0x4907).w(this, FUNC(inder_state::lamp_w)); + map(0x4b00, 0x4b00).w(this, FUNC(inder_state::sndcmd_lapbylap_w)); +} + +void inder_state::lapbylap_sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x87ff).ram(); // 6116 + map(0x9000, 0x9000).w("ay1", FUNC(ay8910_device::address_w)); + map(0x9001, 0x9001).r("ay1", FUNC(ay8910_device::data_r)); + map(0x9002, 0x9002).w("ay1", FUNC(ay8910_device::data_w)); + map(0xa000, 0xa000).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa001, 0xa001).r("ay2", FUNC(ay8910_device::data_r)); + map(0xa002, 0xa002).w("ay2", FUNC(ay8910_device::data_w)); +} + +void inder_state::inder_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).mirror(0x1800).ram().share("nvram"); // 6116, battery-backed + map(0x6000, 0x6003).mirror(0x13fc).rw("ppi60", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6400, 0x6403).mirror(0x13fc).rw("ppi64", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6800, 0x6803).mirror(0x13fc).rw("ppi68", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6c00, 0x6c03).mirror(0x131c).rw("ppi6c", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6c20, 0x6c3f).mirror(0x1300).w(this, FUNC(inder_state::sndcmd_w)); + map(0x6c60, 0x6c7f).mirror(0x1300).w(this, FUNC(inder_state::disp_w)); + map(0x6ce0, 0x6ce0).nopw(); +} + +void inder_state::inder_sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).mirror(0x1800).ram(); // 6116 + map(0x4000, 0x4003).mirror(0x1ffc).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6000, 0x6000).w(this, FUNC(inder_state::sndbank_w)); + map(0x8000, 0x8000).r(this, FUNC(inder_state::sndcmd_r)); +} static INPUT_PORTS_START( brvteam ) PORT_START("SW.0") diff --git a/src/mame/drivers/inderp.cpp b/src/mame/drivers/inderp.cpp index 9c7dc5b9d8b..31401d617c0 100644 --- a/src/mame/drivers/inderp.cpp +++ b/src/mame/drivers/inderp.cpp @@ -45,16 +45,17 @@ private: u8 m_irqcnt; }; -ADDRESS_MAP_START(inderp_state::maincpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x500) AM_RAM // 2x 5101/2101, battery-backed - AM_RANGE(0x0200, 0x02ff) AM_MIRROR(0x400) // outputs CI-110 (displays) - AM_RANGE(0x0300, 0x030f) AM_MIRROR(0x4c0) AM_READWRITE(inputs_r,inputs_w) // outputs, one per address CI-118; inputs: whole range CI-159 - AM_RANGE(0x0310, 0x0310) AM_MIRROR(0x4cf) // outputs, D0-D2, BOB0-7 (solenoids) CI-121 - AM_RANGE(0x0320, 0x0320) AM_MIRROR(0x4cf) // outputs, D0-D3, (sound) CI-122 - AM_RANGE(0x0330, 0x0337) AM_MIRROR(0x4c8) // outputs, D0-D7, one per address to 16 sets of 4-bit outputs (lamps) - AM_RANGE(0x0800, 0x1fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void inderp_state::maincpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).mirror(0x500).ram(); // 2x 5101/2101, battery-backed + map(0x0200, 0x02ff).mirror(0x400); // outputs CI-110 (displays) + map(0x0300, 0x030f).mirror(0x4c0).rw(this, FUNC(inderp_state::inputs_r), FUNC(inderp_state::inputs_w)); // outputs, one per address CI-118; inputs: whole range CI-159 + map(0x0310, 0x0310).mirror(0x4cf); // outputs, D0-D2, BOB0-7 (solenoids) CI-121 + map(0x0320, 0x0320).mirror(0x4cf); // outputs, D0-D3, (sound) CI-122 + map(0x0330, 0x0337).mirror(0x4c8); // outputs, D0-D7, one per address to 16 sets of 4-bit outputs (lamps) + map(0x0800, 0x1fff).rom().region("roms", 0); +} // dsw: don't know bit order yet static INPUT_PORTS_START( inderp ) diff --git a/src/mame/drivers/indiana.cpp b/src/mame/drivers/indiana.cpp index 1122c3f1f93..8a5a3f63917 100644 --- a/src/mame/drivers/indiana.cpp +++ b/src/mame/drivers/indiana.cpp @@ -43,18 +43,19 @@ public: }; -ADDRESS_MAP_START(indiana_state::indiana_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x7f800000) AM_ROM AM_REGION("user1", 0) // 64Kb of EPROM - AM_RANGE(0x00100000, 0x00107fff) AM_MIRROR(0x7f8f8000) AM_RAM // SRAM 32Kb of SRAM - AM_RANGE(0x00200000, 0x002fffff) AM_DEVREADWRITE8(MFP_TAG, mc68901_device, read, write, 0xffffffff) AM_MIRROR(0x7f800000) // MFP - AM_RANGE(0x00400000, 0x004fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, io16_swap_r, io16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC IO - AM_RANGE(0x00500000, 0x005fffff) AM_DEVREADWRITE16(ISABUS_TAG, isa16_device, mem16_swap_r, mem16_swap_w, 0xffffffff) AM_MIRROR(0x7f800000) // 16 bit PC MEM - AM_RANGE(0x00600000, 0x006fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, io_r, io_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC IO - AM_RANGE(0x00700000, 0x007fffff) AM_DEVREADWRITE8(ISABUS_TAG, isa16_device, mem_r, mem_w, 0xffffffff) AM_MIRROR(0x7f800000) // 8 bit PC MEM - AM_RANGE(0x80000000, 0x803fffff) AM_RAM // 4 MB RAM - AM_RANGE(0xfffe0000, 0xfffe7fff) AM_RAM // SRAM mirror? -ADDRESS_MAP_END +void indiana_state::indiana_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0000ffff).mirror(0x7f800000).rom().region("user1", 0); // 64Kb of EPROM + map(0x00100000, 0x00107fff).mirror(0x7f8f8000).ram(); // SRAM 32Kb of SRAM + map(0x00200000, 0x002fffff).rw(MFP_TAG, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).mirror(0x7f800000); // MFP + map(0x00400000, 0x004fffff).rw(ISABUS_TAG, FUNC(isa16_device::io16_swap_r), FUNC(isa16_device::io16_swap_w)).mirror(0x7f800000); // 16 bit PC IO + map(0x00500000, 0x005fffff).rw(ISABUS_TAG, FUNC(isa16_device::mem16_swap_r), FUNC(isa16_device::mem16_swap_w)).mirror(0x7f800000); // 16 bit PC MEM + map(0x00600000, 0x006fffff).rw(ISABUS_TAG, FUNC(isa16_device::io_r), FUNC(isa16_device::io_w)).mirror(0x7f800000); // 8 bit PC IO + map(0x00700000, 0x007fffff).rw(ISABUS_TAG, FUNC(isa16_device::mem_r), FUNC(isa16_device::mem_w)).mirror(0x7f800000); // 8 bit PC MEM + map(0x80000000, 0x803fffff).ram(); // 4 MB RAM + map(0xfffe0000, 0xfffe7fff).ram(); // SRAM mirror? +} /* Input ports */ diff --git a/src/mame/drivers/indigo.cpp b/src/mame/drivers/indigo.cpp index bb8773854af..3d756db2499 100644 --- a/src/mame/drivers/indigo.cpp +++ b/src/mame/drivers/indigo.cpp @@ -466,28 +466,31 @@ WRITE32_MEMBER(indigo_state::int_w) osd_printf_info("INT: write %x to ofs %x (mask %x) (PC=%x)\n", data, offset, mem_mask, m_maincpu->pc()); } -ADDRESS_MAP_START(indigo_state::indigo_map) - AM_RANGE( 0x00000000, 0x001fffff ) AM_RAM AM_SHARE("share10") - AM_RANGE( 0x08000000, 0x08ffffff ) AM_RAM AM_SHARE("share5") - AM_RANGE( 0x09000000, 0x097fffff ) AM_RAM AM_SHARE("share6") - AM_RANGE( 0x0a000000, 0x0a7fffff ) AM_RAM AM_SHARE("share7") - AM_RANGE( 0x0c000000, 0x0c7fffff ) AM_RAM AM_SHARE("share8") - AM_RANGE( 0x10000000, 0x107fffff ) AM_RAM AM_SHARE("share9") - AM_RANGE( 0x18000000, 0x187fffff ) AM_RAM AM_SHARE("share1") - AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc_r, hpc_w ) - AM_RANGE( 0x1fbd9000, 0x1fbd903f ) AM_READWRITE(int_r, int_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(indigo_state::indigo3k_map) - AM_IMPORT_FROM( indigo_map ) - AM_RANGE( 0x1fc00000, 0x1fc3ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(indigo_state::indigo4k_map) - AM_IMPORT_FROM( indigo_map ) - AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write ) - AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_SHARE("share2") AM_REGION( "user1", 0 ) -ADDRESS_MAP_END +void indigo_state::indigo_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("share10"); + map(0x08000000, 0x08ffffff).ram().share("share5"); + map(0x09000000, 0x097fffff).ram().share("share6"); + map(0x0a000000, 0x0a7fffff).ram().share("share7"); + map(0x0c000000, 0x0c7fffff).ram().share("share8"); + map(0x10000000, 0x107fffff).ram().share("share9"); + map(0x18000000, 0x187fffff).ram().share("share1"); + map(0x1fb80000, 0x1fb8ffff).rw(this, FUNC(indigo_state::hpc_r), FUNC(indigo_state::hpc_w)); + map(0x1fbd9000, 0x1fbd903f).rw(this, FUNC(indigo_state::int_r), FUNC(indigo_state::int_w)); +} + +void indigo_state::indigo3k_map(address_map &map) +{ + indigo_map(map); + map(0x1fc00000, 0x1fc3ffff).rom().share("share2").region("user1", 0); +} + +void indigo_state::indigo4k_map(address_map &map) +{ + indigo_map(map); + map(0x1fa00000, 0x1fa1ffff).rw("sgi_mc", FUNC(sgi_mc_device::read), FUNC(sgi_mc_device::write)); + map(0x1fc00000, 0x1fc7ffff).rom().share("share2").region("user1", 0); +} WRITE_LINE_MEMBER(indigo_state::scsi_irq) { diff --git a/src/mame/drivers/indy_indigo2.cpp b/src/mame/drivers/indy_indigo2.cpp index 27ef3a4111b..3c8219fd08e 100644 --- a/src/mame/drivers/indy_indigo2.cpp +++ b/src/mame/drivers/indy_indigo2.cpp @@ -1166,26 +1166,27 @@ WRITE32_MEMBER(ip22_state::hpc3_unkpbus0_w) //COMBINE_DATA(&m_unkpbus0[offset]); } -ADDRESS_MAP_START(ip22_state::ip225015_map) - AM_RANGE( 0x00000000, 0x0007ffff ) AM_RAMBANK( "bank1" ) /* mirror of first 512k of main RAM */ - AM_RANGE( 0x08000000, 0x0fffffff ) AM_SHARE("mainram") AM_RAM_WRITE(ip22_write_ram) /* 128 MB of main RAM */ - AM_RANGE( 0x1f0f0000, 0x1f0f1fff ) AM_DEVREADWRITE("newport", newport_video_device, rex3_r, rex3_w ) - AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_DEVREADWRITE("sgi_mc", sgi_mc_device, read, write ) - AM_RANGE( 0x1fb90000, 0x1fb9ffff ) AM_READWRITE(hpc3_hd_enet_r, hpc3_hd_enet_w ) - AM_RANGE( 0x1fbb0000, 0x1fbb0003 ) AM_RAM /* unknown, but read a lot and discarded */ - AM_RANGE( 0x1fbc0000, 0x1fbc7fff ) AM_READWRITE(hpc3_hd0_r, hpc3_hd0_w ) - AM_RANGE( 0x1fbc8000, 0x1fbcffff ) AM_READWRITE(hpc3_unkpbus0_r, hpc3_unkpbus0_w ) AM_SHARE("unkpbus0") - AM_RANGE( 0x1fb80000, 0x1fb8ffff ) AM_READWRITE(hpc3_pbusdma_r, hpc3_pbusdma_w ) - AM_RANGE( 0x1fbd8000, 0x1fbd83ff ) AM_READWRITE(hal2_r, hal2_w ) - AM_RANGE( 0x1fbd8400, 0x1fbd87ff ) AM_RAM /* hack */ - AM_RANGE( 0x1fbd9000, 0x1fbd93ff ) AM_READWRITE(hpc3_pbus4_r, hpc3_pbus4_w ) - AM_RANGE( 0x1fbd9800, 0x1fbd9bff ) AM_DEVREADWRITE(IOC2_TAG, ioc2_device, read, write) - AM_RANGE( 0x1fbdc000, 0x1fbdc7ff ) AM_RAM - AM_RANGE( 0x1fbdd000, 0x1fbdd3ff ) AM_RAM - AM_RANGE( 0x1fbe0000, 0x1fbe04ff ) AM_DEVREADWRITE8(RTC_TAG, ds1386_device, data_r, data_w, 0x000000ff) - AM_RANGE( 0x1fc00000, 0x1fc7ffff ) AM_ROM AM_REGION( "user1", 0 ) - AM_RANGE( 0x20000000, 0x27ffffff ) AM_SHARE("mainram") AM_RAM_WRITE(ip22_write_ram) -ADDRESS_MAP_END +void ip22_state::ip225015_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).bankrw("bank1"); /* mirror of first 512k of main RAM */ + map(0x08000000, 0x0fffffff).share("mainram").ram().w(this, FUNC(ip22_state::ip22_write_ram)); /* 128 MB of main RAM */ + map(0x1f0f0000, 0x1f0f1fff).rw(m_newport, FUNC(newport_video_device::rex3_r), FUNC(newport_video_device::rex3_w)); + map(0x1fa00000, 0x1fa1ffff).rw(m_sgi_mc, FUNC(sgi_mc_device::read), FUNC(sgi_mc_device::write)); + map(0x1fb90000, 0x1fb9ffff).rw(this, FUNC(ip22_state::hpc3_hd_enet_r), FUNC(ip22_state::hpc3_hd_enet_w)); + map(0x1fbb0000, 0x1fbb0003).ram(); /* unknown, but read a lot and discarded */ + map(0x1fbc0000, 0x1fbc7fff).rw(this, FUNC(ip22_state::hpc3_hd0_r), FUNC(ip22_state::hpc3_hd0_w)); + map(0x1fbc8000, 0x1fbcffff).rw(this, FUNC(ip22_state::hpc3_unkpbus0_r), FUNC(ip22_state::hpc3_unkpbus0_w)).share("unkpbus0"); + map(0x1fb80000, 0x1fb8ffff).rw(this, FUNC(ip22_state::hpc3_pbusdma_r), FUNC(ip22_state::hpc3_pbusdma_w)); + map(0x1fbd8000, 0x1fbd83ff).rw(this, FUNC(ip22_state::hal2_r), FUNC(ip22_state::hal2_w)); + map(0x1fbd8400, 0x1fbd87ff).ram(); /* hack */ + map(0x1fbd9000, 0x1fbd93ff).rw(this, FUNC(ip22_state::hpc3_pbus4_r), FUNC(ip22_state::hpc3_pbus4_w)); + map(0x1fbd9800, 0x1fbd9bff).rw(m_ioc2, FUNC(ioc2_device::read), FUNC(ioc2_device::write)); + map(0x1fbdc000, 0x1fbdc7ff).ram(); + map(0x1fbdd000, 0x1fbdd3ff).ram(); + map(0x1fbe0000, 0x1fbe04ff).rw(m_rtc, FUNC(ds1386_device::data_r), FUNC(ds1386_device::data_w)).umask32(0x000000ff); + map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0); + map(0x20000000, 0x27ffffff).share("mainram").ram().w(this, FUNC(ip22_state::ip22_write_ram)); +} void ip22_state::machine_reset() diff --git a/src/mame/drivers/instantm.cpp b/src/mame/drivers/instantm.cpp index c5717f69aa2..97d106ec7c1 100644 --- a/src/mame/drivers/instantm.cpp +++ b/src/mame/drivers/instantm.cpp @@ -80,30 +80,33 @@ WRITE_LINE_MEMBER( instantm_state::clock_w ) -ADDRESS_MAP_START(instantm_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8000) //AM_WRITE - AM_RANGE(0xc000, 0xc000) //AM_WRITE - AM_RANGE(0xc400, 0xc400) //AM_WRITE - AM_RANGE(0xc800, 0xc800) //AM_WRITE - AM_RANGE(0xcc00, 0xcc00) //AM_WRITE - AM_RANGE(0xec00, 0xec00) //AM_READ - AM_RANGE(0xf000, 0xf000) //AM_READ - AM_RANGE(0xf400, 0xf400) //AM_READ - AM_RANGE(0xfc00, 0xfc00) //AM_READ -ADDRESS_MAP_END +void instantm_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8000); //AM_WRITE + map(0xc000, 0xc000); //AM_WRITE + map(0xc400, 0xc400); //AM_WRITE + map(0xc800, 0xc800); //AM_WRITE + map(0xcc00, 0xcc00); //AM_WRITE + map(0xec00, 0xec00); //AM_READ + map(0xf000, 0xf000); //AM_READ + map(0xf400, 0xf400); //AM_READ + map(0xfc00, 0xfc00); //AM_READ +} // doesn't use ram -ADDRESS_MAP_START(instantm_state::sub_map) - AM_RANGE(0x0000, 0xffff) AM_ROM - AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(instantm_state::sub_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_READWRITE(port01_r,port01_w) -ADDRESS_MAP_END +void instantm_state::sub_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); + map(0x0000, 0x0000).w("dac", FUNC(dac_byte_interface::write)); +} + +void instantm_state::sub_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).rw(this, FUNC(instantm_state::port01_r), FUNC(instantm_state::port01_w)); +} static INPUT_PORTS_START( instantm ) INPUT_PORTS_END diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp index 4141ec76974..c3e95068312 100644 --- a/src/mame/drivers/instruct.cpp +++ b/src/mame/drivers/instruct.cpp @@ -218,30 +218,33 @@ INTERRUPT_GEN_MEMBER( instruct_state::t2l_int ) } } -ADDRESS_MAP_START(instruct_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0ffe) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0fff, 0x0fff) AM_READWRITE(port_r,port_w) - AM_RANGE(0x1780, 0x17ff) AM_RAM AM_SHARE("smiram") - AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("roms",0) - AM_RANGE(0x2000, 0x7fff) AM_RAM AM_SHARE("extram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(instruct_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x07, 0x07) AM_READWRITE(port_r,port_w) - AM_RANGE(0xf8, 0xf8) AM_WRITE(portf8_w) - AM_RANGE(0xf9, 0xf9) AM_WRITE(portf9_w) - AM_RANGE(0xfa, 0xfa) AM_WRITE(portfa_w) - AM_RANGE(0xfc, 0xfc) AM_READ(portfc_r) - AM_RANGE(0xfd, 0xfd) AM_READ(portfd_r) - AM_RANGE(0xfe, 0xfe) AM_READ(portfe_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(instruct_state::data_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(port_r,port_w) -ADDRESS_MAP_END +void instruct_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0ffe).ram().share("mainram"); + map(0x0fff, 0x0fff).rw(this, FUNC(instruct_state::port_r), FUNC(instruct_state::port_w)); + map(0x1780, 0x17ff).ram().share("smiram"); + map(0x1800, 0x1fff).rom().region("roms", 0); + map(0x2000, 0x7fff).ram().share("extram"); +} + +void instruct_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x07, 0x07).rw(this, FUNC(instruct_state::port_r), FUNC(instruct_state::port_w)); + map(0xf8, 0xf8).w(this, FUNC(instruct_state::portf8_w)); + map(0xf9, 0xf9).w(this, FUNC(instruct_state::portf9_w)); + map(0xfa, 0xfa).w(this, FUNC(instruct_state::portfa_w)); + map(0xfc, 0xfc).r(this, FUNC(instruct_state::portfc_r)); + map(0xfd, 0xfd).r(this, FUNC(instruct_state::portfd_r)); + map(0xfe, 0xfe).r(this, FUNC(instruct_state::portfe_r)); +} + +void instruct_state::data_map(address_map &map) +{ + map.unmap_value_high(); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(instruct_state::port_r), FUNC(instruct_state::port_w)); +} /* Input ports */ static INPUT_PORTS_START( instruct ) diff --git a/src/mame/drivers/inteladv.cpp b/src/mame/drivers/inteladv.cpp index 05b57d758ff..98988c8bfe0 100644 --- a/src/mame/drivers/inteladv.cpp +++ b/src/mame/drivers/inteladv.cpp @@ -60,12 +60,13 @@ uint32_t inteladv_state::screen_update_inteladv(screen_device &screen, bitmap_in return 0; } -ADDRESS_MAP_START(inteladv_state::inteladv_main) - AM_RANGE(0x0000, 0x01ff) AM_RAM // zero page and stack - AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("maincpu", 0x0000) // boot code at 4000 - AM_RANGE(0x8000, 0x8fff) AM_ROM AM_REGION("maincpu", 0x8000) // fixed ROM region? - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x3000) // boot and other vectors at 3FFx -ADDRESS_MAP_END +void inteladv_state::inteladv_main(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // zero page and stack + map(0x4000, 0x5fff).rom().region("maincpu", 0x0000); // boot code at 4000 + map(0x8000, 0x8fff).rom().region("maincpu", 0x8000); // fixed ROM region? + map(0xf000, 0xffff).rom().region("maincpu", 0x3000); // boot and other vectors at 3FFx +} static INPUT_PORTS_START( inteladv ) INPUT_PORTS_END diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp index e98d5e12b20..47d6b441f50 100644 --- a/src/mame/drivers/intellec4.cpp +++ b/src/mame/drivers/intellec4.cpp @@ -726,37 +726,39 @@ void intellec4_state::driver_reset() System address spaces ----------------------------------*/ -ADDRESS_MAP_START(intellec4_state::intellec4_program_banks) - ADDRESS_MAP_UNMAP_LOW +void intellec4_state::intellec4_program_banks(address_map &map) +{ + map.unmap_value_low(); // 0x0000...0x0fff MON - AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("monitor", 0x0000) + map(0x0000, 0x03ff).rom().region("monitor", 0x0000); // 0x1000...0x1fff PROM // 0x1000...0x1fff RAM - AM_RANGE(0x2000, 0x2fff) AM_READONLY AM_SHARE("ram") + map(0x2000, 0x2fff).readonly().share("ram"); // 0x3000...0x3fff unmapped in case someone presses two mode switches at once -ADDRESS_MAP_END +} -ADDRESS_MAP_START(intellec4_state::intellec4_rom_port_banks) - ADDRESS_MAP_UNMAP_HIGH +void intellec4_state::intellec4_rom_port_banks(address_map &map) +{ + map.unmap_value_high(); // 0x0000...0x07ff MON - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x1f00) AM_READWRITE(rom0_in, rom0_out) - AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x1f00) AM_WRITE(rom1_out) - AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x1f00) AM_READWRITE(rom2_in, rom2_out) - AM_RANGE(0x0030, 0x003f) AM_MIRROR(0x1f00) AM_READWRITE(rom3_in, rom3_out) - AM_RANGE(0x00e0, 0x00ef) AM_MIRROR(0x1f00) AM_READWRITE(rome_in, rome_out) - AM_RANGE(0x00f0, 0x00ff) AM_MIRROR(0x1f00) AM_READWRITE(romf_in, romf_out) + map(0x0000, 0x000f).mirror(0x1f00).rw(this, FUNC(intellec4_state::rom0_in), FUNC(intellec4_state::rom0_out)); + map(0x0010, 0x001f).mirror(0x1f00).w(this, FUNC(intellec4_state::rom1_out)); + map(0x0020, 0x002f).mirror(0x1f00).rw(this, FUNC(intellec4_state::rom2_in), FUNC(intellec4_state::rom2_out)); + map(0x0030, 0x003f).mirror(0x1f00).rw(this, FUNC(intellec4_state::rom3_in), FUNC(intellec4_state::rom3_out)); + map(0x00e0, 0x00ef).mirror(0x1f00).rw(this, FUNC(intellec4_state::rome_in), FUNC(intellec4_state::rome_out)); + map(0x00f0, 0x00ff).mirror(0x1f00).rw(this, FUNC(intellec4_state::romf_in), FUNC(intellec4_state::romf_out)); // 0x0800...0x0fff PROM // 0x1000...0x17ff neither // 0x1800...0x1fff unused -ADDRESS_MAP_END +} /*--------------------------------- diff --git a/src/mame/drivers/interact.cpp b/src/mame/drivers/interact.cpp index 02847bd56a3..6d77e61fcca 100644 --- a/src/mame/drivers/interact.cpp +++ b/src/mame/drivers/interact.cpp @@ -82,27 +82,28 @@ public: }; -ADDRESS_MAP_START(interact_state::interact_mem) - ADDRESS_MAP_UNMAP_HIGH +void interact_state::interact_mem(address_map &map) +{ + map.unmap_value_high(); /* Main ROM page*/ - AM_RANGE(0x0000,0x3fff) AM_ROM /*BANK(2)*/ + map(0x0000, 0x3fff).rom(); /*BANK(2)*/ /* AM_RANGE(0x1000,0x3fff) AM_RAM*/ /* Hardware address mapping*/ /* AM_RANGE(0x0800,0x0808) AM_WRITE(hector_switch_bank_w)// Bank management not udsed in BR machine*/ - AM_RANGE(0x1000,0x1000) AM_WRITE(hector_color_a_w) /* Color c0/c1*/ - AM_RANGE(0x1800,0x1800) AM_WRITE(hector_color_b_w) /* Color c2/c3*/ - AM_RANGE(0x2000,0x2003) AM_WRITE(hector_sn_2000_w) /* Sound*/ - AM_RANGE(0x2800,0x2803) AM_WRITE(hector_sn_2800_w) /* Sound*/ - AM_RANGE(0x3000,0x3000) AM_READWRITE(hector_cassette_r, hector_sn_3000_w)/* Write necessary*/ - AM_RANGE(0x3800,0x3807) AM_READWRITE(hector_keyboard_r, hector_keyboard_w) /* Keyboard*/ + map(0x1000, 0x1000).w(this, FUNC(interact_state::hector_color_a_w)); /* Color c0/c1*/ + map(0x1800, 0x1800).w(this, FUNC(interact_state::hector_color_b_w)); /* Color c2/c3*/ + map(0x2000, 0x2003).w(this, FUNC(interact_state::hector_sn_2000_w)); /* Sound*/ + map(0x2800, 0x2803).w(this, FUNC(interact_state::hector_sn_2800_w)); /* Sound*/ + map(0x3000, 0x3000).rw(this, FUNC(interact_state::hector_cassette_r), FUNC(interact_state::hector_sn_3000_w));/* Write necessary*/ + map(0x3800, 0x3807).rw(this, FUNC(interact_state::hector_keyboard_r), FUNC(interact_state::hector_keyboard_w)); /* Keyboard*/ /* Video br mapping*/ - AM_RANGE(0x4000,0x49ff) AM_RAM AM_SHARE("videoram") + map(0x4000, 0x49ff).ram().share("videoram"); /* continous RAM*/ - AM_RANGE(0x4A00,0xffff) AM_RAM + map(0x4A00, 0xffff).ram(); -ADDRESS_MAP_END +} MACHINE_RESET_MEMBER(interact_state,interact) diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 97f6fe3e596..d517cfbf9f9 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -325,110 +325,122 @@ READ8_MEMBER(interpro_state::nodeid_r) return space.unmap(); } -ADDRESS_MAP_START(interpro_state::interpro_common_map) +void interpro_state::interpro_common_map(address_map &map) +{ // FIXME: don't know what this range is for - AM_RANGE(0x08000000, 0x08000fff) AM_NOP - - AM_RANGE(0x4f007e00, 0x4f007eff) AM_DEVICE(INTERPRO_SGA_TAG, interpro_sga_device, map) + map(0x08000000, 0x08000fff).noprw(); - AM_RANGE(0x7f000100, 0x7f00011f) AM_DEVICE8(INTERPRO_FDC_TAG, upd765_family_device, map, 0x000000ff) - AM_RANGE(0x7f000300, 0x7f000303) AM_READ16(sreg_error_r, 0x0000ffff) - AM_RANGE(0x7f000304, 0x7f000307) AM_READWRITE16(sreg_status_r, sreg_led_w, 0x0000ffff) - AM_RANGE(0x7f000308, 0x7f00030b) AM_READWRITE16(sreg_ctrl1_r, sreg_ctrl1_w, 0x0000ffff) - AM_RANGE(0x7f00030c, 0x7f00030f) AM_READWRITE16(sreg_ctrl2_r, sreg_ctrl2_w, 0x0000ffff) + map(0x4f007e00, 0x4f007eff).m(m_sga, FUNC(interpro_sga_device::map)); - AM_RANGE(0x7f00031c, 0x7f00031f) AM_READWRITE16(sreg_ctrl3_r, sreg_ctrl3_w, 0x0000ffff) + map(0x7f000100, 0x7f00011f).m(m_fdc, FUNC(upd765_family_device::map)).umask32(0x000000ff); + map(0x7f000300, 0x7f000301).r(this, FUNC(interpro_state::sreg_error_r)); + map(0x7f000304, 0x7f000305).rw(this, FUNC(interpro_state::sreg_status_r), FUNC(interpro_state::sreg_led_w)); + map(0x7f000308, 0x7f000309).rw(this, FUNC(interpro_state::sreg_ctrl1_r), FUNC(interpro_state::sreg_ctrl1_w)); + map(0x7f00030c, 0x7f00030d).rw(this, FUNC(interpro_state::sreg_ctrl2_r), FUNC(interpro_state::sreg_ctrl2_w)); - AM_RANGE(0x7f000400, 0x7f00040f) AM_DEVREADWRITE8(INTERPRO_SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0x000000ff) - AM_RANGE(0x7f000410, 0x7f00041f) AM_DEVREADWRITE8(INTERPRO_SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0x000000ff) + map(0x7f00031c, 0x7f00031d).rw(this, FUNC(interpro_state::sreg_ctrl3_r), FUNC(interpro_state::sreg_ctrl3_w)); - ;map(0x7f000500, 0x7f000503).lrw8("rtc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_rtc->read(space, offset^1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_rtc->write(space, offset^1, data, mem_mask); }).umask32(0x000000ff); - AM_RANGE(0x7f000600, 0x7f000603) AM_DEVWRITE8(INTERPRO_RTC_TAG, mc146818_device, write, 0x000000ff) + map(0x7f000400, 0x7f00040f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff); + map(0x7f000410, 0x7f00041f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff); + map(0x7f000500, 0x7f000503).lrw8("rtc_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_rtc->read(space, offset^1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_rtc->write(space, offset^1, data, mem_mask); + }).umask32(0x000000ff); + map(0x7f000600, 0x7f000600).w(m_rtc, FUNC(mc146818_device::write)); // the system board id prom - AM_RANGE(0x7f000700, 0x7f00077f) AM_ROM AM_REGION(INTERPRO_IDPROM_TAG, 0) + map(0x7f000700, 0x7f00077f).rom().region(INTERPRO_IDPROM_TAG, 0); - AM_RANGE(0x7f0fff00, 0x7f0fffff) AM_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, map) -ADDRESS_MAP_END + map(0x7f0fff00, 0x7f0fffff).m(m_ioga, FUNC(interpro_ioga_device::map)); +} -ADDRESS_MAP_START(turquoise_state::turquoise_base_map) - AM_IMPORT_FROM(interpro_common_map) +void turquoise_state::turquoise_base_map(address_map &map) +{ + interpro_common_map(map); - AM_RANGE(0x40000000, 0x4000003f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_mcga_device, map) + map(0x40000000, 0x4000003f).m(m_mcga, FUNC(interpro_mcga_device::map)); // scsi registers have unusual address mapping - AM_RANGE(0x7f000200, 0x7f000203) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, tcounter_lo_r, tcount_lo_w, 0x0000ff00) - AM_RANGE(0x7f000204, 0x7f000207) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, tcounter_hi_r, tcount_hi_w, 0x0000ff00) - AM_RANGE(0x7f000208, 0x7f00020b) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, fifo_r, fifo_w, 0x0000ff00) - AM_RANGE(0x7f00020c, 0x7f00020f) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, command_r, command_w, 0x0000ff00) - AM_RANGE(0x7f000210, 0x7f000213) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, status_r, bus_id_w, 0x0000ff00) - AM_RANGE(0x7f000214, 0x7f000217) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, istatus_r, timeout_w, 0x0000ff00) - AM_RANGE(0x7f000218, 0x7f00021b) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, seq_step_r, sync_period_w, 0x0000ff00) - AM_RANGE(0x7f00021c, 0x7f00021f) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, fifo_flags_r, sync_offset_w, 0x0000ff00) - AM_RANGE(0x7f000220, 0x7f000223) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, conf_r, conf_w, 0x0000ff00) - AM_RANGE(0x7f000224, 0x7f000227) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, clock_w, 0x0000ff00) - AM_RANGE(0x7f000228, 0x7f00022b) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, test_w, 0x0000ff00) - AM_RANGE(0x7f00022c, 0x7f00022f) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, conf2_r, conf2_w, 0x0000ff00) - - AM_RANGE(0x7f000300, 0x7f000303) AM_WRITE8(sreg_error_w, 0x000000ff) - - AM_RANGE(0x7f000600, 0x7f00067f) AM_ROM AM_REGION(INTERPRO_NODEID_TAG, 0) -ADDRESS_MAP_END + map(0x7f000201, 0x7f000201).rw(m_scsi, FUNC(ncr53c90a_device::tcounter_lo_r), FUNC(ncr53c90a_device::tcount_lo_w)); + map(0x7f000205, 0x7f000205).rw(m_scsi, FUNC(ncr53c90a_device::tcounter_hi_r), FUNC(ncr53c90a_device::tcount_hi_w)); + map(0x7f000209, 0x7f000209).rw(m_scsi, FUNC(ncr53c90a_device::fifo_r), FUNC(ncr53c90a_device::fifo_w)); + map(0x7f00020d, 0x7f00020d).rw(m_scsi, FUNC(ncr53c90a_device::command_r), FUNC(ncr53c90a_device::command_w)); + map(0x7f000211, 0x7f000211).rw(m_scsi, FUNC(ncr53c90a_device::status_r), FUNC(ncr53c90a_device::bus_id_w)); + map(0x7f000215, 0x7f000215).rw(m_scsi, FUNC(ncr53c90a_device::istatus_r), FUNC(ncr53c90a_device::timeout_w)); + map(0x7f000219, 0x7f000219).rw(m_scsi, FUNC(ncr53c90a_device::seq_step_r), FUNC(ncr53c90a_device::sync_period_w)); + map(0x7f00021d, 0x7f00021d).rw(m_scsi, FUNC(ncr53c90a_device::fifo_flags_r), FUNC(ncr53c90a_device::sync_offset_w)); + map(0x7f000221, 0x7f000221).rw(m_scsi, FUNC(ncr53c90a_device::conf_r), FUNC(ncr53c90a_device::conf_w)); + map(0x7f000225, 0x7f000225).w(m_scsi, FUNC(ncr53c90a_device::clock_w)); + map(0x7f000229, 0x7f000229).w(m_scsi, FUNC(ncr53c90a_device::test_w)); + map(0x7f00022d, 0x7f00022d).rw(m_scsi, FUNC(ncr53c90a_device::conf2_r), FUNC(ncr53c90a_device::conf2_w)); + + map(0x7f000300, 0x7f000300).w(this, FUNC(turquoise_state::sreg_error_w)); + + map(0x7f000600, 0x7f00067f).rom().region(INTERPRO_NODEID_TAG, 0); +} -ADDRESS_MAP_START(turquoise_state::turquoise_main_map) - AM_IMPORT_FROM(turquoise_base_map) +void turquoise_state::turquoise_main_map(address_map &map) +{ + turquoise_base_map(map); - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE(RAM_TAG) - AM_RANGE(0x7f100000, 0x7f13ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0) -ADDRESS_MAP_END + map(0x00000000, 0x00ffffff).ram().share(RAM_TAG); + map(0x7f100000, 0x7f13ffff).rom().region(INTERPRO_EPROM_TAG, 0); +} -ADDRESS_MAP_START(sapphire_state::sapphire_base_map) - AM_IMPORT_FROM(interpro_common_map) +void sapphire_state::sapphire_base_map(address_map &map) +{ + interpro_common_map(map); - AM_RANGE(0x40000000, 0x4000004f) AM_DEVICE(INTERPRO_MCGA_TAG, interpro_fmcc_device, map) - AM_RANGE(0x7f000200, 0x7f0002ff) AM_DEVICE(INTERPRO_ARBGA_TAG, interpro_arbga_device, map) + map(0x40000000, 0x4000004f).m(INTERPRO_MCGA_TAG, FUNC(interpro_fmcc_device::map)); + map(0x7f000200, 0x7f0002ff).m(m_arbga, FUNC(interpro_arbga_device::map)); - AM_RANGE(0x7f000600, 0x7f00060f) AM_READ8(nodeid_r, 0xff) + map(0x7f000600, 0x7f00060f).r(this, FUNC(sapphire_state::nodeid_r)).umask32(0x000000ff); // scsi registers have unusual address mapping - AM_RANGE(0x7f001000, 0x7f001003) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, tcounter_lo_r, tcount_lo_w, 0x0000ff00) - AM_RANGE(0x7f001100, 0x7f001103) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, tcounter_hi_r, tcount_hi_w, 0x0000ff00) - AM_RANGE(0x7f001200, 0x7f001203) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, fifo_r, fifo_w, 0x0000ff00) - AM_RANGE(0x7f001300, 0x7f001303) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, command_r, command_w, 0x0000ff00) - AM_RANGE(0x7f001400, 0x7f001403) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, status_r, bus_id_w, 0x0000ff00) - AM_RANGE(0x7f001500, 0x7f001503) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, istatus_r, timeout_w, 0x0000ff00) - AM_RANGE(0x7f001600, 0x7f001603) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, seq_step_r, sync_period_w, 0x0000ff00) - AM_RANGE(0x7f001700, 0x7f001703) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, fifo_flags_r, sync_offset_w, 0x0000ff00) - AM_RANGE(0x7f001800, 0x7f001803) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, conf_r, conf_w, 0x0000ff00) - AM_RANGE(0x7f001900, 0x7f001903) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, clock_w, 0x0000ff00) - AM_RANGE(0x7f001a00, 0x7f001a03) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, test_w, 0x0000ff00) - AM_RANGE(0x7f001b00, 0x7f001b03) AM_DEVREADWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, conf2_r, conf2_w, 0x0000ff00) - AM_RANGE(0x7f001c00, 0x7f001c03) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, conf3_w, 0x0000ff00) - AM_RANGE(0x7f001f00, 0x7f001f03) AM_DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c94_device, fifo_align_w, 0x0000ff00) -ADDRESS_MAP_END + map(0x7f001001, 0x7f001001).rw(m_scsi, FUNC(ncr53c94_device::tcounter_lo_r), FUNC(ncr53c94_device::tcount_lo_w)); + map(0x7f001101, 0x7f001101).rw(m_scsi, FUNC(ncr53c94_device::tcounter_hi_r), FUNC(ncr53c94_device::tcount_hi_w)); + map(0x7f001201, 0x7f001201).rw(m_scsi, FUNC(ncr53c94_device::fifo_r), FUNC(ncr53c94_device::fifo_w)); + map(0x7f001301, 0x7f001301).rw(m_scsi, FUNC(ncr53c94_device::command_r), FUNC(ncr53c94_device::command_w)); + map(0x7f001401, 0x7f001401).rw(m_scsi, FUNC(ncr53c94_device::status_r), FUNC(ncr53c94_device::bus_id_w)); + map(0x7f001501, 0x7f001501).rw(m_scsi, FUNC(ncr53c94_device::istatus_r), FUNC(ncr53c94_device::timeout_w)); + map(0x7f001601, 0x7f001601).rw(m_scsi, FUNC(ncr53c94_device::seq_step_r), FUNC(ncr53c94_device::sync_period_w)); + map(0x7f001701, 0x7f001701).rw(m_scsi, FUNC(ncr53c94_device::fifo_flags_r), FUNC(ncr53c94_device::sync_offset_w)); + map(0x7f001801, 0x7f001801).rw(m_scsi, FUNC(ncr53c94_device::conf_r), FUNC(ncr53c94_device::conf_w)); + map(0x7f001901, 0x7f001901).w(m_scsi, FUNC(ncr53c94_device::clock_w)); + map(0x7f001a01, 0x7f001a01).w(m_scsi, FUNC(ncr53c94_device::test_w)); + map(0x7f001b01, 0x7f001b01).rw(m_scsi, FUNC(ncr53c94_device::conf2_r), FUNC(ncr53c94_device::conf2_w)); + map(0x7f001c01, 0x7f001c01).w(m_scsi, FUNC(ncr53c94_device::conf3_w)); + map(0x7f001f01, 0x7f001f01).w(m_scsi, FUNC(ncr53c94_device::fifo_align_w)); +} -ADDRESS_MAP_START(sapphire_state::sapphire_main_map) - AM_IMPORT_FROM(sapphire_base_map) +void sapphire_state::sapphire_main_map(address_map &map) +{ + sapphire_base_map(map); - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE(RAM_TAG) - AM_RANGE(0x7f100000, 0x7f11ffff) AM_ROM AM_REGION(INTERPRO_EPROM_TAG, 0) - AM_RANGE(0x7f180000, 0x7f1fffff) AM_DEVREADWRITE8(INTERPRO_FLASH_TAG "_lo", intel_28f010_device, read, write, 0x00ff00ff) AM_MASK(0x3ffff) - AM_RANGE(0x7f180000, 0x7f1fffff) AM_DEVREADWRITE8(INTERPRO_FLASH_TAG "_hi", intel_28f010_device, read, write, 0xff00ff00) AM_MASK(0x3ffff) -ADDRESS_MAP_END + map(0x00000000, 0x00ffffff).ram().share(RAM_TAG); + map(0x7f100000, 0x7f11ffff).rom().region(INTERPRO_EPROM_TAG, 0); + map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_lo", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0x00ff00ff).mask(0x3ffff); + map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_hi", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0xff00ff00).mask(0x3ffff); +} -ADDRESS_MAP_START(turquoise_state::turquoise_io_map) - AM_IMPORT_FROM(turquoise_base_map) +void turquoise_state::turquoise_io_map(address_map &map) +{ + turquoise_base_map(map); - AM_RANGE(0x00000800, 0x000009ff) AM_DEVICE(INTERPRO_MMU_TAG "_d", cammu_c3_device, map) - AM_RANGE(0x00000a00, 0x00000bff) AM_DEVICE(INTERPRO_MMU_TAG "_i", cammu_c3_device, map) - AM_RANGE(0x00000c00, 0x00000dff) AM_DEVICE(INTERPRO_MMU_TAG "_d", cammu_c3_device, map_global) -ADDRESS_MAP_END + map(0x00000800, 0x000009ff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map)); + map(0x00000a00, 0x00000bff).m(INTERPRO_MMU_TAG "_i", FUNC(cammu_c3_device::map)); + map(0x00000c00, 0x00000dff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map_global)); +} -ADDRESS_MAP_START(sapphire_state::sapphire_io_map) - AM_IMPORT_FROM(sapphire_base_map) +void sapphire_state::sapphire_io_map(address_map &map) +{ + sapphire_base_map(map); - AM_RANGE(0x00000000, 0x00001fff) AM_DEVICE(INTERPRO_MMU_TAG, cammu_c4_device, map) -ADDRESS_MAP_END + map(0x00000000, 0x00001fff).m(m_mmu, FUNC(cammu_c4_device::map)); +} ADDRESS_MAP_START(interpro_state::interpro_boot_map) // FIXME: the real system may have some initial boot instructions in this boot @@ -438,13 +450,15 @@ ADDRESS_MAP_START(interpro_state::interpro_boot_map) AM_RANGE(0x00000000, 0x00001fff) AM_RAM ADDRESS_MAP_END -ADDRESS_MAP_START(turquoise_state::interpro_82586_map) - AM_RANGE(0x00000000, 0x00ffffff) AM_DEVREADWRITE(INTERPRO_IOGA_TAG, turquoise_ioga_device, eth_r, eth_w) -ADDRESS_MAP_END +void turquoise_state::interpro_82586_map(address_map &map) +{ + map(0x00000000, 0x00ffffff).rw(INTERPRO_IOGA_TAG, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w)); +} -ADDRESS_MAP_START(sapphire_state::interpro_82596_map) - AM_RANGE(0x00000000, 0xffffffff) AM_DEVREADWRITE(INTERPRO_IOGA_TAG, sapphire_ioga_device, eth_r, eth_w) -ADDRESS_MAP_END +void sapphire_state::interpro_82596_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(INTERPRO_IOGA_TAG, FUNC(sapphire_ioga_device::eth_r), FUNC(sapphire_ioga_device::eth_w)); +} FLOPPY_FORMATS_MEMBER(interpro_state::floppy_formats) FLOPPY_PC_FORMAT diff --git a/src/mame/drivers/intrscti.cpp b/src/mame/drivers/intrscti.cpp index 299c58895e2..114ca28d652 100644 --- a/src/mame/drivers/intrscti.cpp +++ b/src/mame/drivers/intrscti.cpp @@ -85,30 +85,34 @@ uint32_t intrscti_state::screen_update_intrscti(screen_device &screen, bitmap_in } -ADDRESS_MAP_START(intrscti_state::intrscti_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x8000, 0x8fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(intrscti_state::intrscti_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(intrscti_state::intrscti_sub_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM +void intrscti_state::intrscti_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x7000, 0x77ff).ram().share("vram"); + map(0x8000, 0x8fff).rom(); +} + +void intrscti_state::intrscti_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); +} + + +void intrscti_state::intrscti_sub_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x2000, 0x23ff).ram(); // AM_RANGE(0x0000, 0xffff) AM_WRITENOP -ADDRESS_MAP_END +} -ADDRESS_MAP_START(intrscti_state::intrscti_sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void intrscti_state::intrscti_sub_io_map(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0xff) AM_NOP -ADDRESS_MAP_END +} static INPUT_PORTS_START( intrscti ) diff --git a/src/mame/drivers/intv.cpp b/src/mame/drivers/intv.cpp index 5493178b6ce..7e5ae1ea12a 100644 --- a/src/mame/drivers/intv.cpp +++ b/src/mame/drivers/intv.cpp @@ -279,148 +279,154 @@ static INPUT_PORTS_START( intvkbd ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) INPUT_PORTS_END -ADDRESS_MAP_START(intv_state::intv_mem) - AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w) - AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w) - AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff) - AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w) - AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom04) - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000 << 1) // Exec ROM, 10-bits wide - AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom20) - AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) // GROM, 8-bits wide - AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM, 8-bits wide - AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM Alias, 8-bits wide - AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom40) - AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom48) - AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom50) - AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom60) - AM_RANGE(0x7000, 0x7fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom70) - AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom80) - AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom90) - AM_RANGE(0xa000, 0xafff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_roma0) - AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romb0) - AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romc0) - AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romd0) - AM_RANGE(0xe000, 0xefff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rome0) - AM_RANGE(0xf000, 0xffff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romf0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(intv_state::intvoice_mem) - AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w) - AM_RANGE(0x0080, 0x0081) AM_DEVREADWRITE("voice", intv_voice_device, read_speech, write_speech) // Intellivoice - AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w) - AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff) - AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w) - AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("voice", intv_voice_device, read_rom04) - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000 << 1) // Exec ROM, 10-bits wide - AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("voice", intv_voice_device, read_rom20) - AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) // GROM, 8-bits wide - AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM, 8-bits wide - AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM Alias, 8-bits wide - AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("voice", intv_voice_device, read_rom40) - AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("voice", intv_voice_device, read_rom48) - AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("voice", intv_voice_device, read_rom50) - AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("voice", intv_voice_device, read_rom60) - AM_RANGE(0x7000, 0x7fff) AM_DEVREAD("voice", intv_voice_device, read_rom70) - AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("voice", intv_voice_device, read_rom80) - AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("voice", intv_voice_device, read_rom90) - AM_RANGE(0xa000, 0xafff) AM_DEVREAD("voice", intv_voice_device, read_roma0) - AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("voice", intv_voice_device, read_romb0) - AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("voice", intv_voice_device, read_romc0) - AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("voice", intv_voice_device, read_romd0) - AM_RANGE(0xe000, 0xefff) AM_DEVREAD("voice", intv_voice_device, read_rome0) - AM_RANGE(0xf000, 0xffff) AM_DEVREAD("voice", intv_voice_device, read_romf0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(intv_state::intv2_mem) - AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w) - AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w) - AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff) - AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w) - AM_RANGE(0x0400, 0x04ff) AM_ROM AM_REGION("maincpu", 0x400 << 1) // Exec ROM, 10-bits wide - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000 << 1) // Exec ROM, 10-bits wide - AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom20) - AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) // GROM, 8-bits wide - AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM, 8-bits wide - AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) // GRAM Alias, 8-bits wide - AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom40) - AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom48) - AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom50) - AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom60) - AM_RANGE(0x7000, 0x7fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom70) - AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom80) - AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom90) - AM_RANGE(0xa000, 0xafff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_roma0) - AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romb0) - AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romc0) - AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romd0) - AM_RANGE(0xe000, 0xefff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rome0) - AM_RANGE(0xf000, 0xffff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romf0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(intv_state::intvecs_mem) - AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w) - AM_RANGE(0x0080, 0x0081) AM_DEVREADWRITE("speech", sp0256_device, spb640_r, spb640_w) /* Intellivoice */ +void intv_state::intv_mem(address_map &map) +{ + map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w)); + map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w)); + map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff); + map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w)); + map(0x0400, 0x04ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom04)); + map(0x1000, 0x1fff).rom().region("maincpu", 0x1000 << 1); // Exec ROM, 10-bits wide + map(0x2000, 0x2fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom20)); + map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); // GROM, 8-bits wide + map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM, 8-bits wide + map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM Alias, 8-bits wide + map(0x4000, 0x47ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom40)); + map(0x4800, 0x4fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom48)); + map(0x5000, 0x5fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom50)); + map(0x6000, 0x6fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom60)); + map(0x7000, 0x7fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom70)); + map(0x8000, 0x8fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom80)); + map(0x9000, 0x9fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom90)); + map(0xa000, 0xafff).r(m_cart, FUNC(intv_cart_slot_device::read_roma0)); + map(0xb000, 0xbfff).r(m_cart, FUNC(intv_cart_slot_device::read_romb0)); + map(0xc000, 0xcfff).r(m_cart, FUNC(intv_cart_slot_device::read_romc0)); + map(0xd000, 0xdfff).r(m_cart, FUNC(intv_cart_slot_device::read_romd0)); + map(0xe000, 0xefff).r(m_cart, FUNC(intv_cart_slot_device::read_rome0)); + map(0xf000, 0xffff).r(m_cart, FUNC(intv_cart_slot_device::read_romf0)); +} + +void intv_state::intvoice_mem(address_map &map) +{ + map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w)); + map(0x0080, 0x0081).rw("voice", FUNC(intv_voice_device::read_speech), FUNC(intv_voice_device::write_speech)); // Intellivoice + map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w)); + map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff); + map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w)); + map(0x0400, 0x04ff).r("voice", FUNC(intv_voice_device::read_rom04)); + map(0x1000, 0x1fff).rom().region("maincpu", 0x1000 << 1); // Exec ROM, 10-bits wide + map(0x2000, 0x2fff).r("voice", FUNC(intv_voice_device::read_rom20)); + map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); // GROM, 8-bits wide + map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM, 8-bits wide + map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM Alias, 8-bits wide + map(0x4000, 0x47ff).r("voice", FUNC(intv_voice_device::read_rom40)); + map(0x4800, 0x4fff).r("voice", FUNC(intv_voice_device::read_rom48)); + map(0x5000, 0x5fff).r("voice", FUNC(intv_voice_device::read_rom50)); + map(0x6000, 0x6fff).r("voice", FUNC(intv_voice_device::read_rom60)); + map(0x7000, 0x7fff).r("voice", FUNC(intv_voice_device::read_rom70)); + map(0x8000, 0x8fff).r("voice", FUNC(intv_voice_device::read_rom80)); + map(0x9000, 0x9fff).r("voice", FUNC(intv_voice_device::read_rom90)); + map(0xa000, 0xafff).r("voice", FUNC(intv_voice_device::read_roma0)); + map(0xb000, 0xbfff).r("voice", FUNC(intv_voice_device::read_romb0)); + map(0xc000, 0xcfff).r("voice", FUNC(intv_voice_device::read_romc0)); + map(0xd000, 0xdfff).r("voice", FUNC(intv_voice_device::read_romd0)); + map(0xe000, 0xefff).r("voice", FUNC(intv_voice_device::read_rome0)); + map(0xf000, 0xffff).r("voice", FUNC(intv_voice_device::read_romf0)); +} + +void intv_state::intv2_mem(address_map &map) +{ + map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w)); + map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w)); + map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff); + map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w)); + map(0x0400, 0x04ff).rom().region("maincpu", 0x400 << 1); // Exec ROM, 10-bits wide + map(0x1000, 0x1fff).rom().region("maincpu", 0x1000 << 1); // Exec ROM, 10-bits wide + map(0x2000, 0x2fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom20)); + map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); // GROM, 8-bits wide + map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM, 8-bits wide + map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); // GRAM Alias, 8-bits wide + map(0x4000, 0x47ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom40)); + map(0x4800, 0x4fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom48)); + map(0x5000, 0x5fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom50)); + map(0x6000, 0x6fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom60)); + map(0x7000, 0x7fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom70)); + map(0x8000, 0x8fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom80)); + map(0x9000, 0x9fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom90)); + map(0xa000, 0xafff).r(m_cart, FUNC(intv_cart_slot_device::read_roma0)); + map(0xb000, 0xbfff).r(m_cart, FUNC(intv_cart_slot_device::read_romb0)); + map(0xc000, 0xcfff).r(m_cart, FUNC(intv_cart_slot_device::read_romc0)); + map(0xd000, 0xdfff).r(m_cart, FUNC(intv_cart_slot_device::read_romd0)); + map(0xe000, 0xefff).r(m_cart, FUNC(intv_cart_slot_device::read_rome0)); + map(0xf000, 0xffff).r(m_cart, FUNC(intv_cart_slot_device::read_romf0)); +} + +void intv_state::intvecs_mem(address_map &map) +{ + map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w)); + map(0x0080, 0x0081).rw("speech", FUNC(sp0256_device::spb640_r), FUNC(sp0256_device::spb640_w)); /* Intellivoice */ // AM_RANGE(0x00E0, 0x00E3) AM_READWRITE( intv_ecs_uart_r, intv_ecs_uart_w ) - AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_ay, write_ay) /* ecs psg */ - AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w) - AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff) - AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w) - AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("ecs", intv_ecs_device, read_rom04) - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000<<1) /* Exec ROM, 10-bits wide */ - AM_RANGE(0x2000, 0x2fff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_rom20, write_rom20) - AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) /* GROM, 8-bits wide */ - AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM, 8-bits wide */ - AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM Alias, 8-bits wide */ - AM_RANGE(0x4000, 0x47ff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_ram, write_ram) - AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom48) - AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom50) - AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom60) - AM_RANGE(0x7000, 0x7fff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_rom70, write_rom70) - AM_RANGE(0x8000, 0x8fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom80) - AM_RANGE(0x9000, 0x9fff) AM_DEVREAD("ecs", intv_ecs_device, read_rom90) - AM_RANGE(0xa000, 0xafff) AM_DEVREAD("ecs", intv_ecs_device, read_roma0) - AM_RANGE(0xb000, 0xbfff) AM_DEVREAD("ecs", intv_ecs_device, read_romb0) - AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("ecs", intv_ecs_device, read_romc0) - AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("ecs", intv_ecs_device, read_romd0) - AM_RANGE(0xe000, 0xefff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_rome0, write_rome0) - AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("ecs", intv_ecs_device, read_romf0, write_romf0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(intv_state::intvkbd_mem) - AM_RANGE(0x0000, 0x003f) AM_READWRITE(intv_stic_r, intv_stic_w) - AM_RANGE(0x0100, 0x01ef) AM_READWRITE(intv_ram8_r, intv_ram8_w) - AM_RANGE(0x01f0, 0x01ff) AM_DEVREADWRITE8("ay8914", ay8914_device, read, write, 0x00ff) - AM_RANGE(0x0200, 0x035f) AM_READWRITE(intv_ram16_r, intv_ram16_w) - AM_RANGE(0x0400, 0x04ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom04) - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("maincpu", 0x1000<<1) /* Exec ROM, 10-bits wide */ - AM_RANGE(0x2000, 0x2fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom20) - AM_RANGE(0x3000, 0x37ff) AM_DEVREAD("stic", stic_device, grom_read) /* GROM, 8-bits wide */ - AM_RANGE(0x3800, 0x39ff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM, 8-bits wide */ - AM_RANGE(0x3a00, 0x3bff) AM_READWRITE(intv_gram_r, intv_gram_w) /* GRAM Alias, 8-bits wide */ - AM_RANGE(0x4000, 0x47ff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom40) - AM_RANGE(0x4800, 0x4fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom48) - AM_RANGE(0x5000, 0x5fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom50) - AM_RANGE(0x6000, 0x6fff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rom60) - AM_RANGE(0x7000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x7000<<1) /* Keyboard ROM */ - AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(intvkbd_dualport16_w) AM_SHARE("dualport_ram") /* Dual-port RAM */ - AM_RANGE(0xc000, 0xcfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romc0) - AM_RANGE(0xd000, 0xdfff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romd0) - AM_RANGE(0xe000, 0xefff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_rome0) - AM_RANGE(0xf000, 0xffff) AM_DEVREAD("cartslot", intv_cart_slot_device, read_romf0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(intv_state::intvkbd2_mem) - ADDRESS_MAP_UNMAP_HIGH /* Required because of probing */ - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(intvkbd_dualport8_lsb_r, intvkbd_dualport8_lsb_w) /* Dual-port RAM */ - AM_RANGE(0x4000, 0x40bf) AM_READWRITE(intvkbd_io_r, intvkbd_io_w) - AM_RANGE(0x40c0, 0x40cf) AM_DEVREADWRITE("crtc", tms9927_device, read, write) - AM_RANGE(0x4200, 0x7fff) AM_READWRITE(intvkbd_dualport8_msb_r, intvkbd_dualport8_msb_w) /* Dual-port RAM */ - AM_RANGE(0xb7f8, 0xb7ff) AM_READWRITE(intvkbd_periph_r, intvkbd_periph_w) - AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("videoram") /* Text Display */ - AM_RANGE(0xc000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_READ(intvkb_iocart_r) -ADDRESS_MAP_END + map(0x00f0, 0x00ff).rw("ecs", FUNC(intv_ecs_device::read_ay), FUNC(intv_ecs_device::write_ay)); /* ecs psg */ + map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w)); + map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff); + map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w)); + map(0x0400, 0x04ff).r("ecs", FUNC(intv_ecs_device::read_rom04)); + map(0x1000, 0x1fff).rom().region("maincpu", 0x1000<<1); /* Exec ROM, 10-bits wide */ + map(0x2000, 0x2fff).rw("ecs", FUNC(intv_ecs_device::read_rom20), FUNC(intv_ecs_device::write_rom20)); + map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); /* GROM, 8-bits wide */ + map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM, 8-bits wide */ + map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM Alias, 8-bits wide */ + map(0x4000, 0x47ff).rw("ecs", FUNC(intv_ecs_device::read_ram), FUNC(intv_ecs_device::write_ram)); + map(0x4800, 0x4fff).r("ecs", FUNC(intv_ecs_device::read_rom48)); + map(0x5000, 0x5fff).r("ecs", FUNC(intv_ecs_device::read_rom50)); + map(0x6000, 0x6fff).r("ecs", FUNC(intv_ecs_device::read_rom60)); + map(0x7000, 0x7fff).rw("ecs", FUNC(intv_ecs_device::read_rom70), FUNC(intv_ecs_device::write_rom70)); + map(0x8000, 0x8fff).r("ecs", FUNC(intv_ecs_device::read_rom80)); + map(0x9000, 0x9fff).r("ecs", FUNC(intv_ecs_device::read_rom90)); + map(0xa000, 0xafff).r("ecs", FUNC(intv_ecs_device::read_roma0)); + map(0xb000, 0xbfff).r("ecs", FUNC(intv_ecs_device::read_romb0)); + map(0xc000, 0xcfff).r("ecs", FUNC(intv_ecs_device::read_romc0)); + map(0xd000, 0xdfff).r("ecs", FUNC(intv_ecs_device::read_romd0)); + map(0xe000, 0xefff).rw("ecs", FUNC(intv_ecs_device::read_rome0), FUNC(intv_ecs_device::write_rome0)); + map(0xf000, 0xffff).rw("ecs", FUNC(intv_ecs_device::read_romf0), FUNC(intv_ecs_device::write_romf0)); +} + +void intv_state::intvkbd_mem(address_map &map) +{ + map(0x0000, 0x003f).rw(this, FUNC(intv_state::intv_stic_r), FUNC(intv_state::intv_stic_w)); + map(0x0100, 0x01ef).rw(this, FUNC(intv_state::intv_ram8_r), FUNC(intv_state::intv_ram8_w)); + map(0x01f0, 0x01ff).rw(m_sound, FUNC(ay8914_device::read), FUNC(ay8914_device::write)).umask16(0x00ff); + map(0x0200, 0x035f).rw(this, FUNC(intv_state::intv_ram16_r), FUNC(intv_state::intv_ram16_w)); + map(0x0400, 0x04ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom04)); + map(0x1000, 0x1fff).rom().region("maincpu", 0x1000<<1); /* Exec ROM, 10-bits wide */ + map(0x2000, 0x2fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom20)); + map(0x3000, 0x37ff).r(m_stic, FUNC(stic_device::grom_read)); /* GROM, 8-bits wide */ + map(0x3800, 0x39ff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM, 8-bits wide */ + map(0x3a00, 0x3bff).rw(this, FUNC(intv_state::intv_gram_r), FUNC(intv_state::intv_gram_w)); /* GRAM Alias, 8-bits wide */ + map(0x4000, 0x47ff).r(m_cart, FUNC(intv_cart_slot_device::read_rom40)); + map(0x4800, 0x4fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom48)); + map(0x5000, 0x5fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom50)); + map(0x6000, 0x6fff).r(m_cart, FUNC(intv_cart_slot_device::read_rom60)); + map(0x7000, 0x7fff).rom().region("maincpu", 0x7000<<1); /* Keyboard ROM */ + map(0x8000, 0xbfff).ram().w(this, FUNC(intv_state::intvkbd_dualport16_w)).share("dualport_ram"); /* Dual-port RAM */ + map(0xc000, 0xcfff).r(m_cart, FUNC(intv_cart_slot_device::read_romc0)); + map(0xd000, 0xdfff).r(m_cart, FUNC(intv_cart_slot_device::read_romd0)); + map(0xe000, 0xefff).r(m_cart, FUNC(intv_cart_slot_device::read_rome0)); + map(0xf000, 0xffff).r(m_cart, FUNC(intv_cart_slot_device::read_romf0)); +} + +void intv_state::intvkbd2_mem(address_map &map) +{ + map.unmap_value_high(); /* Required because of probing */ + map(0x0000, 0x3fff).rw(this, FUNC(intv_state::intvkbd_dualport8_lsb_r), FUNC(intv_state::intvkbd_dualport8_lsb_w)); /* Dual-port RAM */ + map(0x4000, 0x40bf).rw(this, FUNC(intv_state::intvkbd_io_r), FUNC(intv_state::intvkbd_io_w)); + map(0x40c0, 0x40cf).rw(m_crtc, FUNC(tms9927_device::read), FUNC(tms9927_device::write)); + map(0x4200, 0x7fff).rw(this, FUNC(intv_state::intvkbd_dualport8_msb_r), FUNC(intv_state::intvkbd_dualport8_msb_w)); /* Dual-port RAM */ + map(0xb7f8, 0xb7ff).rw(this, FUNC(intv_state::intvkbd_periph_r), FUNC(intv_state::intvkbd_periph_w)); + map(0xb800, 0xbfff).ram().share("videoram"); /* Text Display */ + map(0xc000, 0xdfff).rom(); + map(0xe000, 0xffff).r(this, FUNC(intv_state::intvkb_iocart_r)); +} void intv_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { diff --git a/src/mame/drivers/inufuku.cpp b/src/mame/drivers/inufuku.cpp index 411ff7abca5..4bf4b679ce3 100644 --- a/src/mame/drivers/inufuku.cpp +++ b/src/mame/drivers/inufuku.cpp @@ -111,36 +111,37 @@ CUSTOM_INPUT_MEMBER(inufuku_state::soundflag_r) ******************************************************************************/ -ADDRESS_MAP_START(inufuku_state::inufuku_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // main rom +void inufuku_state::inufuku_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // main rom // AM_RANGE(0x100000, 0x100007) AM_WRITENOP // ? - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("P2") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("P4") - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("EXTRA") - AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("P3") - - AM_RANGE(0x200000, 0x200001) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // sound command - - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette ram - AM_RANGE(0x380000, 0x3801ff) AM_WRITEONLY AM_SHARE("bg_rasterram") // bg raster ram - AM_RANGE(0x400000, 0x401fff) AM_READWRITE(inufuku_bg_videoram_r, inufuku_bg_videoram_w) AM_SHARE("bg_videoram") // bg ram - AM_RANGE(0x402000, 0x403fff) AM_READWRITE(inufuku_tx_videoram_r, inufuku_tx_videoram_w) AM_SHARE("tx_videoram") // text ram - AM_RANGE(0x404000, 0x40ffff) AM_RAM // ?? mirror (3on3dunk) - AM_RANGE(0x580000, 0x581fff) AM_RAM AM_SHARE("spriteram1") // sprite table + sprite attribute - AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("spriteram2") // cell table - - AM_RANGE(0x780000, 0x780013) AM_WRITE(inufuku_palettereg_w) // bg & text palettebank register - AM_RANGE(0x7a0000, 0x7a0023) AM_WRITE(inufuku_scrollreg_w) // bg & text scroll register + map(0x180000, 0x180001).portr("P1"); + map(0x180002, 0x180003).portr("P2"); + map(0x180004, 0x180005).portr("SYSTEM"); + map(0x180006, 0x180007).portr("P4"); + map(0x180008, 0x180009).portr("EXTRA"); + map(0x18000a, 0x18000b).portr("P3"); + + map(0x200000, 0x200001).portw("EEPROMOUT"); + map(0x280001, 0x280001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // sound command + + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette ram + map(0x380000, 0x3801ff).writeonly().share("bg_rasterram"); // bg raster ram + map(0x400000, 0x401fff).rw(this, FUNC(inufuku_state::inufuku_bg_videoram_r), FUNC(inufuku_state::inufuku_bg_videoram_w)).share("bg_videoram"); // bg ram + map(0x402000, 0x403fff).rw(this, FUNC(inufuku_state::inufuku_tx_videoram_r), FUNC(inufuku_state::inufuku_tx_videoram_w)).share("tx_videoram"); // text ram + map(0x404000, 0x40ffff).ram(); // ?? mirror (3on3dunk) + map(0x580000, 0x581fff).ram().share("spriteram1"); // sprite table + sprite attribute + map(0x600000, 0x61ffff).ram().share("spriteram2"); // cell table + + map(0x780000, 0x780013).w(this, FUNC(inufuku_state::inufuku_palettereg_w)); // bg & text palettebank register + map(0x7a0000, 0x7a0023).w(this, FUNC(inufuku_state::inufuku_scrollreg_w)); // bg & text scroll register // AM_RANGE(0x7e0000, 0x7e0001) AM_WRITENOP // ? - AM_RANGE(0x800000, 0xbfffff) AM_ROM // data rom - AM_RANGE(0xfd0000, 0xfdffff) AM_RAM // work ram -ADDRESS_MAP_END + map(0x800000, 0xbfffff).rom(); // data rom + map(0xfd0000, 0xfdffff).ram(); // work ram +} /****************************************************************************** @@ -149,18 +150,20 @@ ADDRESS_MAP_END ******************************************************************************/ -ADDRESS_MAP_START(inufuku_state::inufuku_sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(inufuku_state::inufuku_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END +void inufuku_state::inufuku_sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void inufuku_state::inufuku_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(inufuku_state::inufuku_soundrombank_w)); + map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} /****************************************************************************** diff --git a/src/mame/drivers/invqix.cpp b/src/mame/drivers/invqix.cpp index e6a01ea37ba..8963056e2d2 100644 --- a/src/mame/drivers/invqix.cpp +++ b/src/mame/drivers/invqix.cpp @@ -277,26 +277,28 @@ WRITE16_MEMBER(invqix_state::vctl_w) m_vctl = data; } -ADDRESS_MAP_START(invqix_state::invqix_prg_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("program", 0) - AM_RANGE(0x200000, 0x21ffff) AM_RAM - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write_tmp_register, 0x00ff) - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("oki", okim9810_device, write, 0xff00) - AM_RANGE(0x400002, 0x400003) AM_DEVREAD8("oki", okim9810_device, read, 0xff00) - AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x620004, 0x620005) AM_WRITE(vctl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(invqix_state::invqix_io_map) - AM_RANGE(h8_device::PORT_1, h8_device::PORT_1) AM_READ_PORT("P1") - AM_RANGE(h8_device::PORT_2, h8_device::PORT_2) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_READWRITE(port3_r, port3_w) - AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READ_PORT("P4") - AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) AM_READWRITE(port5_r, port5_w) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(port6_r, port6_w) - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READ(porta_r) - AM_RANGE(h8_device::PORT_G, h8_device::PORT_G) AM_READ(portg_r) AM_WRITENOP -ADDRESS_MAP_END +void invqix_state::invqix_prg_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom().region("program", 0); + map(0x200000, 0x21ffff).ram(); + map(0x400001, 0x400001).w("oki", FUNC(okim9810_device::write_tmp_register)); + map(0x400000, 0x400000).w("oki", FUNC(okim9810_device::write)); + map(0x400002, 0x400002).r("oki", FUNC(okim9810_device::read)); + map(0x600000, 0x61ffff).ram().share("vram"); + map(0x620004, 0x620005).w(this, FUNC(invqix_state::vctl_w)); +} + +void invqix_state::invqix_io_map(address_map &map) +{ + map(h8_device::PORT_1, h8_device::PORT_1).portr("P1"); + map(h8_device::PORT_2, h8_device::PORT_2).portr("SYSTEM").nopw(); + map(h8_device::PORT_3, h8_device::PORT_3).rw(this, FUNC(invqix_state::port3_r), FUNC(invqix_state::port3_w)); + map(h8_device::PORT_4, h8_device::PORT_4).portr("P4"); + map(h8_device::PORT_5, h8_device::PORT_5).rw(this, FUNC(invqix_state::port5_r), FUNC(invqix_state::port5_w)); + map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(invqix_state::port6_r), FUNC(invqix_state::port6_w)); + map(h8_device::PORT_A, h8_device::PORT_A).r(this, FUNC(invqix_state::porta_r)); + map(h8_device::PORT_G, h8_device::PORT_G).r(this, FUNC(invqix_state::portg_r)).nopw(); +} static INPUT_PORTS_START( invqix ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/ipc.cpp b/src/mame/drivers/ipc.cpp index 3d6345a9e39..5cdbba11c52 100644 --- a/src/mame/drivers/ipc.cpp +++ b/src/mame/drivers/ipc.cpp @@ -63,21 +63,23 @@ private: }; -ADDRESS_MAP_START(ipc_state::ipc_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_RAM - AM_RANGE(0xe800, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ipc_state::ipc_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xf4, 0xf4) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0xf5, 0xf5) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0xf6, 0xf6) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0xf7, 0xf7) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void ipc_state::ipc_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).ram(); + map(0xe800, 0xffff).rom().region("roms", 0); +} + +void ipc_state::ipc_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf0, 0xf3).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xf4, 0xf4).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf5, 0xf5).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf6, 0xf6).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf7, 0xf7).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ static INPUT_PORTS_START( ipc ) diff --git a/src/mame/drivers/ipds.cpp b/src/mame/drivers/ipds.cpp index e04d1504040..8bf683f9f93 100644 --- a/src/mame/drivers/ipds.cpp +++ b/src/mame/drivers/ipds.cpp @@ -63,19 +63,21 @@ WRITE8_MEMBER( ipds_state::ipds_b1_w ) { } -ADDRESS_MAP_START(ipds_state::ipds_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ipds_state::ipds_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xb0, 0xb0) AM_READ(ipds_b0_r) - AM_RANGE(0xb1, 0xb1) AM_READWRITE(ipds_b1_r,ipds_b1_w) - AM_RANGE(0xc0, 0xc0) AM_READ(ipds_c0_r) -ADDRESS_MAP_END +void ipds_state::ipds_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0xffff).ram(); +} + +void ipds_state::ipds_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xb0, 0xb0).r(this, FUNC(ipds_state::ipds_b0_r)); + map(0xb1, 0xb1).rw(this, FUNC(ipds_state::ipds_b1_r), FUNC(ipds_state::ipds_b1_w)); + map(0xc0, 0xc0).r(this, FUNC(ipds_state::ipds_c0_r)); +} /* Input ports */ static INPUT_PORTS_START( ipds ) diff --git a/src/mame/drivers/iq151.cpp b/src/mame/drivers/iq151.cpp index 710d3e9c761..beb89da7705 100644 --- a/src/mame/drivers/iq151.cpp +++ b/src/mame/drivers/iq151.cpp @@ -206,24 +206,26 @@ WRITE8_MEMBER(iq151_state::cartslot_io_w) elem->io_write(offset, data); } -ADDRESS_MAP_START(iq151_state::iq151_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(cartslot_r, cartslot_w) - - AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("boot") - AM_RANGE( 0x0800, 0x7fff ) AM_RAM - AM_RANGE( 0xf000, 0xffff ) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(iq151_state::iq151_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0xff ) AM_READWRITE(cartslot_io_r, cartslot_io_w) - - AM_RANGE( 0x80, 0x80 ) AM_WRITE(boot_bank_w) - AM_RANGE( 0x84, 0x87 ) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0x88, 0x89 ) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) -ADDRESS_MAP_END +void iq151_state::iq151_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(iq151_state::cartslot_r), FUNC(iq151_state::cartslot_w)); + + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0x7fff).ram(); + map(0xf000, 0xffff).rom(); +} + +void iq151_state::iq151_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(iq151_state::cartslot_io_r), FUNC(iq151_state::cartslot_io_w)); + + map(0x80, 0x80).w(this, FUNC(iq151_state::boot_bank_w)); + map(0x84, 0x87).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x88, 0x89).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); +} INPUT_CHANGED_MEMBER(iq151_state::iq151_break) diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp index b08ed9a646c..8cd41c1a8d9 100644 --- a/src/mame/drivers/iqblock.cpp +++ b/src/mame/drivers/iqblock.cpp @@ -111,25 +111,27 @@ WRITE8_MEMBER(iqblock_state::port_C_w) /* bit 7 could be a second coin counter, but coin 2 doesn't seem to work... */ } -ADDRESS_MAP_START(iqblock_state::main_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("rambase") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(iqblock_state::main_portmap) - AM_RANGE(0x2000, 0x23ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2800, 0x2bff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0") - AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1") - AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) // UM3567_data_port_0_w - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(irqack_w) - AM_RANGE(0x6000, 0x603f) AM_WRITE(fgscroll_w) - AM_RANGE(0x6800, 0x69ff) AM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */ - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void iqblock_state::main_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram().share("rambase"); +} + + +void iqblock_state::main_portmap(address_map &map) +{ + map(0x2000, 0x23ff).w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x2800, 0x2bff).w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x5080, 0x5083).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5090, 0x5090).portr("SW0"); + map(0x50a0, 0x50a0).portr("SW1"); + map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write)); // UM3567_data_port_0_w + map(0x50c0, 0x50c0).w(this, FUNC(iqblock_state::irqack_w)); + map(0x6000, 0x603f).w(this, FUNC(iqblock_state::fgscroll_w)); + map(0x6800, 0x69ff).w(this, FUNC(iqblock_state::fgvideoram_w)).share("fgvideoram"); /* initialized up to 6fff... bug or larger tilemap? */ + map(0x7000, 0x7fff).ram().w(this, FUNC(iqblock_state::bgvideoram_w)).share("bgvideoram"); + map(0x8000, 0xffff).rom().region("user1", 0); +} static INPUT_PORTS_START( iqblock ) PORT_START("P1") diff --git a/src/mame/drivers/iqunlim.cpp b/src/mame/drivers/iqunlim.cpp index 46a1e8ccd05..f4769320e5e 100644 --- a/src/mame/drivers/iqunlim.cpp +++ b/src/mame/drivers/iqunlim.cpp @@ -76,10 +76,11 @@ uint32_t iqunlim_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma return 0; } -ADDRESS_MAP_START(iqunlim_state::iqunlim_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1FFFFF) AM_ROM -ADDRESS_MAP_END +void iqunlim_state::iqunlim_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1FFFFF).rom(); +} static INPUT_PORTS_START( iqunlim ) INPUT_PORTS_END diff --git a/src/mame/drivers/iris3130.cpp b/src/mame/drivers/iris3130.cpp index e9b8cacc3e4..b9cafd0f827 100644 --- a/src/mame/drivers/iris3130.cpp +++ b/src/mame/drivers/iris3130.cpp @@ -374,28 +374,29 @@ void sgi_ip2_state::machine_reset() ***************************************************************************/ -ADDRESS_MAP_START(sgi_ip2_state::sgi_ip2_map) - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x02100000, 0x0210ffff) AM_RAM AM_SHARE("bss") // ??? I don't understand the need for this... - AM_RANGE(0x30000000, 0x30017fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x30800000, 0x30800003) AM_READWRITE8(sgi_ip2_m_but_r, sgi_ip2_m_but_w, 0xffffffff) - AM_RANGE(0x31000000, 0x31000003) AM_READWRITE16(sgi_ip2_m_quad_r, sgi_ip2_m_quad_w, 0xffffffff) - AM_RANGE(0x31800000, 0x31800003) AM_READ16(sgi_ip2_swtch_r, 0xffffffff) - AM_RANGE(0x32000000, 0x3200000f) AM_DEVREADWRITE8("duart68681a", mc68681_device, read, write, 0xffffffff) - AM_RANGE(0x32800000, 0x3280000f) AM_DEVREADWRITE8("duart68681b", mc68681_device, read, write, 0xffffffff) - AM_RANGE(0x33000000, 0x330007ff) AM_RAM - AM_RANGE(0x34000000, 0x34000003) AM_READWRITE8(sgi_ip2_clock_ctl_r, sgi_ip2_clock_ctl_w, 0xffffffff) - AM_RANGE(0x35000000, 0x35000003) AM_READWRITE8(sgi_ip2_clock_data_r, sgi_ip2_clock_data_w, 0xffffffff) - AM_RANGE(0x36000000, 0x36000003) AM_READWRITE8(sgi_ip2_os_base_r, sgi_ip2_os_base_w, 0xffffffff) - AM_RANGE(0x38000000, 0x38000003) AM_READWRITE16(sgi_ip2_status_r, sgi_ip2_status_w, 0xffffffff) - AM_RANGE(0x39000000, 0x39000003) AM_READWRITE8(sgi_ip2_parctl_r, sgi_ip2_parctl_w, 0xffffffff) - AM_RANGE(0x3a000000, 0x3a000003) AM_READWRITE8(sgi_ip2_mbp_r, sgi_ip2_mbp_w, 0xffffffff) - AM_RANGE(0x3b000000, 0x3b003fff) AM_READWRITE(sgi_ip2_ptmap_r, sgi_ip2_ptmap_w) AM_SHARE("ptmap") - AM_RANGE(0x3c000000, 0x3c000003) AM_READWRITE16(sgi_ip2_tdbase_r, sgi_ip2_tdbase_w, 0xffffffff) - AM_RANGE(0x3d000000, 0x3d000003) AM_READWRITE16(sgi_ip2_tdlmt_r, sgi_ip2_tdlmt_w, 0xffffffff) - AM_RANGE(0x3e000000, 0x3e000003) AM_READWRITE16(sgi_ip2_stkbase_r, sgi_ip2_stkbase_w, 0xffffffff) - AM_RANGE(0x3f000000, 0x3f000003) AM_READWRITE16(sgi_ip2_stklmt_r, sgi_ip2_stklmt_w, 0xffffffff) -ADDRESS_MAP_END +void sgi_ip2_state::sgi_ip2_map(address_map &map) +{ + map(0x00000000, 0x00ffffff).ram().share("mainram"); + map(0x02100000, 0x0210ffff).ram().share("bss"); // ??? I don't understand the need for this... + map(0x30000000, 0x30017fff).rom().region("maincpu", 0); + map(0x30800000, 0x30800003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_m_but_r), FUNC(sgi_ip2_state::sgi_ip2_m_but_w)); + map(0x31000000, 0x31000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_m_quad_r), FUNC(sgi_ip2_state::sgi_ip2_m_quad_w)); + map(0x31800000, 0x31800003).r(this, FUNC(sgi_ip2_state::sgi_ip2_swtch_r)); + map(0x32000000, 0x3200000f).rw(m_duarta, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); + map(0x32800000, 0x3280000f).rw(m_duartb, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); + map(0x33000000, 0x330007ff).ram(); + map(0x34000000, 0x34000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_clock_ctl_r), FUNC(sgi_ip2_state::sgi_ip2_clock_ctl_w)); + map(0x35000000, 0x35000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_clock_data_r), FUNC(sgi_ip2_state::sgi_ip2_clock_data_w)); + map(0x36000000, 0x36000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_os_base_r), FUNC(sgi_ip2_state::sgi_ip2_os_base_w)); + map(0x38000000, 0x38000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_status_r), FUNC(sgi_ip2_state::sgi_ip2_status_w)); + map(0x39000000, 0x39000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_parctl_r), FUNC(sgi_ip2_state::sgi_ip2_parctl_w)); + map(0x3a000000, 0x3a000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_mbp_r), FUNC(sgi_ip2_state::sgi_ip2_mbp_w)); + map(0x3b000000, 0x3b003fff).rw(this, FUNC(sgi_ip2_state::sgi_ip2_ptmap_r), FUNC(sgi_ip2_state::sgi_ip2_ptmap_w)).share("ptmap"); + map(0x3c000000, 0x3c000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_tdbase_r), FUNC(sgi_ip2_state::sgi_ip2_tdbase_w)); + map(0x3d000000, 0x3d000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_tdlmt_r), FUNC(sgi_ip2_state::sgi_ip2_tdlmt_w)); + map(0x3e000000, 0x3e000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_stkbase_r), FUNC(sgi_ip2_state::sgi_ip2_stkbase_w)); + map(0x3f000000, 0x3f000003).rw(this, FUNC(sgi_ip2_state::sgi_ip2_stklmt_r), FUNC(sgi_ip2_state::sgi_ip2_stklmt_w)); +} /*************************************************************************** MACHINE DRIVERS diff --git a/src/mame/drivers/irisha.cpp b/src/mame/drivers/irisha.cpp index cc5697d51c3..eea8c80f2ca 100644 --- a/src/mame/drivers/irisha.cpp +++ b/src/mame/drivers/irisha.cpp @@ -70,20 +70,22 @@ private: /* Address maps */ -ADDRESS_MAP_START(irisha_state::irisha_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0xdfff) AM_RAM // RAM - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(irisha_state::irisha_io) - AM_RANGE(0x04, 0x05) AM_READ(irisha_keyboard_r) - AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w) - AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x08, 0x0B) AM_DEVREADWRITE("pit8253", pit8253_device, read, write ) - AM_RANGE(0x0C, 0x0F) AM_DEVREADWRITE("pic8259", pic8259_device, read, write ) AM_MASK( 0x01 ) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END +void irisha_state::irisha_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0xdfff).ram(); // RAM + map(0xe000, 0xffff).ram().share("videoram"); +} + +void irisha_state::irisha_io(address_map &map) +{ + map(0x04, 0x05).r(this, FUNC(irisha_state::irisha_keyboard_r)); + map(0x06, 0x06).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x07, 0x07).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x08, 0x0B).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x0C, 0x0F).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).mask(0x01); + map(0x10, 0x13).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input ports */ static INPUT_PORTS_START( irisha ) diff --git a/src/mame/drivers/irobot.cpp b/src/mame/drivers/irobot.cpp index b4410383fa4..78c98bf00ea 100644 --- a/src/mame/drivers/irobot.cpp +++ b/src/mame/drivers/irobot.cpp @@ -149,29 +149,30 @@ WRITE8_MEMBER(irobot_state::quad_pokeyn_w) * *************************************/ -ADDRESS_MAP_START(irobot_state::irobot_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_RAMBANK("bank2") - AM_RANGE(0x1000, 0x103f) AM_READ_PORT("IN0") - AM_RANGE(0x1040, 0x1040) AM_READ_PORT("IN1") - AM_RANGE(0x1080, 0x1080) AM_READ(irobot_status_r) - AM_RANGE(0x10c0, 0x10c0) AM_READ_PORT("DSW1") - AM_RANGE(0x1100, 0x1100) AM_WRITE(irobot_clearirq_w) - AM_RANGE(0x1140, 0x1140) AM_WRITE(irobot_statwr_w) - AM_RANGE(0x1180, 0x1180) AM_WRITE(irobot_out0_w) - AM_RANGE(0x11c0, 0x11c0) AM_WRITE(irobot_rom_banksel_w) - AM_RANGE(0x1200, 0x12ff) AM_RAM_WRITE(irobot_nvram_w) AM_SHARE("nvram") - AM_RANGE(0x1300, 0x13ff) AM_READ(irobot_control_r) - AM_RANGE(0x1400, 0x143f) AM_READWRITE(quad_pokeyn_r, quad_pokeyn_w) - AM_RANGE(0x1800, 0x18ff) AM_WRITE(irobot_paletteram_w) - AM_RANGE(0x1900, 0x19ff) AM_WRITEONLY /* Watchdog reset */ - AM_RANGE(0x1a00, 0x1a00) AM_WRITE(irobot_clearfirq_w) - AM_RANGE(0x1b00, 0x1bff) AM_WRITE(irobot_control_w) - AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(irobot_sharedmem_r, irobot_sharedmem_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END +void irobot_state::irobot_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0fff).bankrw("bank2"); + map(0x1000, 0x103f).portr("IN0"); + map(0x1040, 0x1040).portr("IN1"); + map(0x1080, 0x1080).r(this, FUNC(irobot_state::irobot_status_r)); + map(0x10c0, 0x10c0).portr("DSW1"); + map(0x1100, 0x1100).w(this, FUNC(irobot_state::irobot_clearirq_w)); + map(0x1140, 0x1140).w(this, FUNC(irobot_state::irobot_statwr_w)); + map(0x1180, 0x1180).w(this, FUNC(irobot_state::irobot_out0_w)); + map(0x11c0, 0x11c0).w(this, FUNC(irobot_state::irobot_rom_banksel_w)); + map(0x1200, 0x12ff).ram().w(this, FUNC(irobot_state::irobot_nvram_w)).share("nvram"); + map(0x1300, 0x13ff).r(this, FUNC(irobot_state::irobot_control_r)); + map(0x1400, 0x143f).rw(this, FUNC(irobot_state::quad_pokeyn_r), FUNC(irobot_state::quad_pokeyn_w)); + map(0x1800, 0x18ff).w(this, FUNC(irobot_state::irobot_paletteram_w)); + map(0x1900, 0x19ff).writeonly(); /* Watchdog reset */ + map(0x1a00, 0x1a00).w(this, FUNC(irobot_state::irobot_clearfirq_w)); + map(0x1b00, 0x1bff).w(this, FUNC(irobot_state::irobot_control_w)); + map(0x1c00, 0x1fff).ram().share("videoram"); + map(0x2000, 0x3fff).rw(this, FUNC(irobot_state::irobot_sharedmem_r), FUNC(irobot_state::irobot_sharedmem_w)); + map(0x4000, 0x5fff).bankr("bank1"); + map(0x6000, 0xffff).rom(); +} diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp index a9f159f7e51..03f21a769fd 100644 --- a/src/mame/drivers/ironhors.cpp +++ b/src/mame/drivers/ironhors.cpp @@ -59,85 +59,90 @@ WRITE8_MEMBER(ironhors_state::filter_w) * *************************************/ -ADDRESS_MAP_START(ironhors_state::master_map) - AM_RANGE(0x0000, 0x0002) AM_RAM - AM_RANGE(0x0003, 0x0003) AM_RAM_WRITE(charbank_w) - AM_RANGE(0x0004, 0x0004) AM_RAM AM_SHARE("int_enable") - AM_RANGE(0x0005, 0x001f) AM_RAM - AM_RANGE(0x0020, 0x003f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x0040, 0x005f) AM_RAM - AM_RANGE(0x0060, 0x00df) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x0900, 0x0900) AM_READ_PORT("DSW3") AM_WRITE(sh_irqtrigger_w) - AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW2") AM_WRITE(palettebank_w) - AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) - AM_RANGE(0x0b01, 0x0b01) AM_READ_PORT("P2") - AM_RANGE(0x0b02, 0x0b02) AM_READ_PORT("P1") - AM_RANGE(0x0b03, 0x0b03) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1800, 0x1800) AM_WRITENOP // ??? - AM_RANGE(0x1a00, 0x1a01) AM_WRITENOP // ??? - AM_RANGE(0x1c00, 0x1dff) AM_WRITENOP // ??? - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x3100, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3900, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ironhors_state::slave_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ironhors_state::slave_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ironhors_state::farwest_master_map) - AM_RANGE(0x0000, 0x1bff) AM_ROM - - AM_RANGE(0x0000, 0x0002) AM_RAM +void ironhors_state::master_map(address_map &map) +{ + map(0x0000, 0x0002).ram(); + map(0x0003, 0x0003).ram().w(this, FUNC(ironhors_state::charbank_w)); + map(0x0004, 0x0004).ram().share("int_enable"); + map(0x0005, 0x001f).ram(); + map(0x0020, 0x003f).ram().share("scroll"); + map(0x0040, 0x005f).ram(); + map(0x0060, 0x00df).ram(); + map(0x0800, 0x0800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0900, 0x0900).portr("DSW3").w(this, FUNC(ironhors_state::sh_irqtrigger_w)); + map(0x0a00, 0x0a00).portr("DSW2").w(this, FUNC(ironhors_state::palettebank_w)); + map(0x0b00, 0x0b00).portr("DSW1").w(this, FUNC(ironhors_state::flipscreen_w)); + map(0x0b01, 0x0b01).portr("P2"); + map(0x0b02, 0x0b02).portr("P1"); + map(0x0b03, 0x0b03).portr("SYSTEM"); + map(0x1800, 0x1800).nopw(); // ??? + map(0x1a00, 0x1a01).nopw(); // ??? + map(0x1c00, 0x1dff).nopw(); // ??? + map(0x2000, 0x23ff).ram().w(this, FUNC(ironhors_state::colorram_w)).share("colorram"); + map(0x2400, 0x27ff).ram().w(this, FUNC(ironhors_state::videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram(); + map(0x3000, 0x30ff).ram().share("spriteram2"); + map(0x3100, 0x37ff).ram(); + map(0x3800, 0x38ff).ram().share("spriteram"); + map(0x3900, 0x3fff).ram(); + map(0x4000, 0xffff).rom(); +} + +void ironhors_state::slave_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void ironhors_state::slave_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} + +void ironhors_state::farwest_master_map(address_map &map) +{ + map(0x0000, 0x1bff).rom(); + + map(0x0000, 0x0002).ram(); //20=31db - AM_RANGE(0x0005, 0x001f) AM_RAM - AM_RANGE(0x0040, 0x005f) AM_RAM - AM_RANGE(0x0060, 0x00ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x0900, 0x0900) /*AM_READ_PORT("DSW3") */AM_WRITE(sh_irqtrigger_w) - AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW2") //AM_WRITE(palettebank_w) - AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) - AM_RANGE(0x0b01, 0x0b01) AM_READ_PORT("DSW2") //AM_WRITE(palettebank_w) - AM_RANGE(0x0b02, 0x0b02) AM_READ_PORT("P1") - AM_RANGE(0x0b03, 0x0b03) AM_READ_PORT("SYSTEM") - - - - AM_RANGE(0x1800, 0x1800) AM_WRITE(sh_irqtrigger_w) - AM_RANGE(0x1a00, 0x1a00) AM_RAM AM_SHARE("int_enable") - AM_RANGE(0x1a01, 0x1a01) AM_RAM_WRITE(charbank_w) - AM_RANGE(0x1a02, 0x1a02) AM_WRITE(palettebank_w) -// AM_RANGE(0x1c00, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x1c00, 0x1dff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x3000, 0x38ff) AM_RAM - AM_RANGE(0x31db, 0x31fa) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x1e00, 0x1eff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3900, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ironhors_state::farwest_slave_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) -ADDRESS_MAP_END + map(0x0005, 0x001f).ram(); + map(0x0040, 0x005f).ram(); + map(0x0060, 0x00ff).ram(); + map(0x0800, 0x0800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0900, 0x0900) /*.protr("DSW3") */ .w(this, FUNC(ironhors_state::sh_irqtrigger_w)); + map(0x0a00, 0x0a00).portr("DSW2"); //.w(this, FUNC(ironhors_state::palettebank_w)); + map(0x0b00, 0x0b00).portr("DSW1").w(this, FUNC(ironhors_state::flipscreen_w)); + map(0x0b01, 0x0b01).portr("DSW2"); //.w(this, FUNC(ironhors_state::palettebank_w)); + map(0x0b02, 0x0b02).portr("P1"); + map(0x0b03, 0x0b03).portr("SYSTEM"); + + + + map(0x1800, 0x1800).w(this, FUNC(ironhors_state::sh_irqtrigger_w)); + map(0x1a00, 0x1a00).ram().share("int_enable"); + map(0x1a01, 0x1a01).ram().w(this, FUNC(ironhors_state::charbank_w)); + map(0x1a02, 0x1a02).w(this, FUNC(ironhors_state::palettebank_w)); +// map(0x1c00, 0x1fff).ram(); + map(0x2000, 0x23ff).ram().w(this, FUNC(ironhors_state::colorram_w)).share("colorram"); + map(0x2400, 0x27ff).ram().w(this, FUNC(ironhors_state::videoram_w)).share("videoram"); + map(0x2800, 0x2fff).ram(); + map(0x1c00, 0x1dff).ram().share("spriteram2"); + map(0x3000, 0x38ff).ram(); + map(0x31db, 0x31fa).ram().share("scroll"); + map(0x1e00, 0x1eff).ram().share("spriteram"); + map(0x3900, 0x3fff).ram(); + map(0x4000, 0xffff).rom(); +} + +void ironhors_state::farwest_slave_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8001).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} /************************************* diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp index 5701d05e84e..d1a4faa0f47 100644 --- a/src/mame/drivers/isbc.cpp +++ b/src/mame/drivers/isbc.cpp @@ -121,91 +121,100 @@ void isbc_state::machine_reset() m_megabyte_page = 0; } -ADDRESS_MAP_START(isbc_state::rpc86_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xcffff) AM_RAM - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::rpc86_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff) - AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff) - AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff) - AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff) - AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) - AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x00d8, 0x00d9) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x00da, 0x00db) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x00dc, 0x00dd) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x00de, 0x00df) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc8605_io) - AM_IMPORT_FROM(rpc86_io) - AM_RANGE(0x0000, 0x002f) AM_DEVICE8("isbc_208", isbc_208_device, map, 0xffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc8630_io) - AM_IMPORT_FROM(rpc86_io) - AM_RANGE(0x00c0, 0x00c7) AM_WRITE8(edge_intr_clear_w, 0xff00) - AM_RANGE(0x00c8, 0x00df) AM_WRITE8(status_register_w, 0xff00) - AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc86_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xfbfff) AM_RAM - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) - AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x00d8, 0x00d9) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x00da, 0x00db) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x00dc, 0x00dd) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x00de, 0x00df) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc286_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff) - AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs0_r, mcs0_w, 0xff00) - AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff) - AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE8("sbx1", isbx_slot_device, mcs1_r, mcs1_w, 0xff00) - AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff) - AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs0_r, mcs0_w, 0xff00) - AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff) - AM_RANGE(0x00b0, 0x00bf) AM_DEVREADWRITE8("sbx2", isbx_slot_device, mcs1_r, mcs1_w, 0xff00) - AM_RANGE(0x00c0, 0x00c3) AM_DEVREADWRITE8("pic_0", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c4, 0x00c7) AM_DEVREADWRITE8("pic_1", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00c8, 0x00cf) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) - AM_RANGE(0x00c8, 0x00cf) AM_WRITE8(upperen_w, 0xff00) - AM_RANGE(0x00d0, 0x00d7) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0x00d8, 0x00df) AM_DEVREADWRITE8("uart8274", i8274_new_device, cd_ba_r, cd_ba_w, 0x00ff) - AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("isbc_215g", isbc_215g_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc286_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xdffff) AM_RAM - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc_state::isbc2861_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0xdffff) AM_RAM - AM_RANGE(0xe0000, 0xfffff) AM_READWRITE(bioslo_r, bioslo_w) AM_SHARE("biosram") +void isbc_state::rpc86_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xcffff).ram(); + map(0xf8000, 0xfffff).rom().region("user1", 0); +} + +void isbc_state::rpc86_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0080, 0x008f).rw("sbx1", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff); + map(0x0090, 0x009f).rw("sbx1", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff); + map(0x00a0, 0x00af).rw("sbx2", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff); + map(0x00b0, 0x00bf).rw("sbx2", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff); + map(0x00c0, 0x00c3).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c4, 0x00c7).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c8, 0x00cf).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x00d0, 0x00d7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x00d8, 0x00d8).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x00da, 0x00da).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x00dc, 0x00dc).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x00de, 0x00de).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} + +void isbc_state::isbc8605_io(address_map &map) +{ + rpc86_io(map); + map(0x0000, 0x002f).m("isbc_208", FUNC(isbc_208_device::map)); +} + +void isbc_state::isbc8630_io(address_map &map) +{ + rpc86_io(map); + map(0x00c0, 0x00c7).w(this, FUNC(isbc_state::edge_intr_clear_w)).umask16(0xff00); + map(0x00c8, 0x00df).w(this, FUNC(isbc_state::status_register_w)).umask16(0xff00); + map(0x0100, 0x0100).w("isbc_215g", FUNC(isbc_215g_device::write)); +} + +void isbc_state::isbc86_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xfbfff).ram(); + map(0xfc000, 0xfffff).rom().region("user1", 0); +} + +void isbc_state::isbc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00c0, 0x00c3).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c4, 0x00c7).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c8, 0x00cf).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x00d0, 0x00d7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x00d8, 0x00d8).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x00da, 0x00da).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x00dc, 0x00dc).rw(m_uart8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x00de, 0x00de).rw(m_uart8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} + +void isbc_state::isbc286_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0080, 0x008f).rw("sbx1", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff); + map(0x0080, 0x008f).rw("sbx1", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0xff00); + map(0x0090, 0x009f).rw("sbx1", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff); + map(0x0090, 0x009f).rw("sbx1", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0xff00); + map(0x00a0, 0x00af).rw("sbx2", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff); + map(0x00a0, 0x00af).rw("sbx2", FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0xff00); + map(0x00b0, 0x00bf).rw("sbx2", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff); + map(0x00b0, 0x00bf).rw("sbx2", FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0xff00); + map(0x00c0, 0x00c3).rw(m_pic_0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c4, 0x00c7).rw(m_pic_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00c8, 0x00cf).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x00c8, 0x00cf).w(this, FUNC(isbc_state::upperen_w)).umask16(0xff00); + map(0x00d0, 0x00d7).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0x00d8, 0x00df).rw(m_uart8274, FUNC(i8274_new_device::cd_ba_r), FUNC(i8274_new_device::cd_ba_w)).umask16(0x00ff); + map(0x0100, 0x0100).w("isbc_215g", FUNC(isbc_215g_device::write)); +} + +void isbc_state::isbc286_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xdffff).ram(); + map(0xe0000, 0xfffff).rom().region("user1", 0); + map(0xfe0000, 0xffffff).rom().region("user1", 0); +} + +void isbc_state::isbc2861_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xdffff).ram(); + map(0xe0000, 0xfffff).rw(this, FUNC(isbc_state::bioslo_r), FUNC(isbc_state::bioslo_w)).share("biosram"); // AM_RANGE(0x100000, 0x1fffff) AM_RAM // FIXME: XENIX doesn't like this, IRMX is okay with it - AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END + map(0xff0000, 0xffffff).rom().region("user1", 0); +} /* Input ports */ static INPUT_PORTS_START( isbc ) diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp index 42359545d11..6391f15f898 100644 --- a/src/mame/drivers/isbc8010.cpp +++ b/src/mame/drivers/isbc8010.cpp @@ -77,34 +77,38 @@ private: uint8_t m_usart_clock_state; }; -ADDRESS_MAP_START(isbc8010_state::isbc8010_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x3c00, 0x3fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc8010_state::isbc8010a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3c00, 0x3fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc8010_state::isbc8010b_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3bff) AM_ROM - AM_RANGE(0x3c00, 0x3fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc8010_state::isbc8010_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE(I8255A_1_TAG, i8255_device, read, write) - AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE(I8255A_2_TAG, i8255_device, read, write) - AM_RANGE(0xec, 0xec) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, data_r, data_w) - AM_RANGE(0xed, 0xed) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, status_r, control_w) +void isbc8010_state::isbc8010_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x3c00, 0x3fff).ram(); +} + +void isbc8010_state::isbc8010a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x3c00, 0x3fff).ram(); +} + +void isbc8010_state::isbc8010b_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3bff).rom(); + map(0x3c00, 0x3fff).ram(); +} + +void isbc8010_state::isbc8010_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xe4, 0xe7).rw(m_ppi_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe8, 0xeb).rw(m_ppi_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xec, 0xec).mirror(0x02).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xed, 0xed).mirror(0x02).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); //AM_RANGE(0xf0, 0xf7) MCS0 - iSBX Multimodule //AM_RANGE(0xf8, 0xff) MCS1 - iSBX Multimodule -ADDRESS_MAP_END +} static INPUT_PORTS_START( isbc8010 ) PORT_START(I8251A_BAUD_TAG) diff --git a/src/mame/drivers/isbc8030.cpp b/src/mame/drivers/isbc8030.cpp index 8b67e43ad7d..7e8707aab2e 100644 --- a/src/mame/drivers/isbc8030.cpp +++ b/src/mame/drivers/isbc8030.cpp @@ -69,21 +69,23 @@ private: required_device<rs232_port_device> m_rs232; }; -ADDRESS_MAP_START(isbc8030_state::isbc8030_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(isbc8030_state::isbc8030_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xd8, 0xd9) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write) - AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write) - AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0xec, 0xec) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, data_r, data_w) - AM_RANGE(0xed, 0xed) AM_MIRROR(0x02) AM_DEVREADWRITE(I8251A_TAG, i8251_device, status_r, control_w) -ADDRESS_MAP_END +void isbc8030_state::isbc8030_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0xffff).ram(); +} + +void isbc8030_state::isbc8030_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xd8, 0xd9).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xdc, 0xdf).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xe8, 0xeb).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xec, 0xec).mirror(0x02).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xed, 0xed).mirror(0x02).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} static INPUT_PORTS_START( isbc8030 ) INPUT_PORTS_END diff --git a/src/mame/drivers/iskr103x.cpp b/src/mame/drivers/iskr103x.cpp index 7f42fed0b94..c3e97c944c0 100644 --- a/src/mame/drivers/iskr103x.cpp +++ b/src/mame/drivers/iskr103x.cpp @@ -42,16 +42,18 @@ public: void iskr1031_map(address_map &map); }; -ADDRESS_MAP_START(iskr103x_state::iskr1031_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void iskr103x_state::iskr1031_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(iskr103x_state::iskr1031_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff) -ADDRESS_MAP_END +void iskr103x_state::iskr1031_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); +} static DEVICE_INPUT_DEFAULTS_START(iskr1030m) diff --git a/src/mame/drivers/istellar.cpp b/src/mame/drivers/istellar.cpp index 2afb8cc846a..f985f1e77d3 100644 --- a/src/mame/drivers/istellar.cpp +++ b/src/mame/drivers/istellar.cpp @@ -180,50 +180,56 @@ WRITE8_MEMBER(istellar_state::z80_2_ldp_write) /* PROGRAM MAPS */ -ADDRESS_MAP_START(istellar_state::z80_0_mem) - AM_RANGE(0x0000,0x9fff) AM_ROM - AM_RANGE(0xa000,0xa7ff) AM_RAM - AM_RANGE(0xa800,0xabff) AM_RAM AM_SHARE("tile_ram") - AM_RANGE(0xac00,0xafff) AM_RAM AM_SHARE("tile_ctrl_ram") - AM_RANGE(0xb000,0xb3ff) AM_RAM AM_SHARE("sprite_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(istellar_state::z80_1_mem) - AM_RANGE(0x0000,0x1fff) AM_ROM - AM_RANGE(0x4000,0x47ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(istellar_state::z80_2_mem) - AM_RANGE(0x0000,0x17ff) AM_ROM - AM_RANGE(0x1800,0x1fff) AM_RAM - AM_RANGE(0xc000,0xc000) AM_READ(z80_2_unknown_read) /* Seems to be thrown away every time it's read - maybe interrupt related? */ -ADDRESS_MAP_END +void istellar_state::z80_0_mem(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa7ff).ram(); + map(0xa800, 0xabff).ram().share("tile_ram"); + map(0xac00, 0xafff).ram().share("tile_ctrl_ram"); + map(0xb000, 0xb3ff).ram().share("sprite_ram"); +} + +void istellar_state::z80_1_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram(); +} + +void istellar_state::z80_2_mem(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x1fff).ram(); + map(0xc000, 0xc000).r(this, FUNC(istellar_state::z80_2_unknown_read)); /* Seems to be thrown away every time it's read - maybe interrupt related? */ +} /* IO MAPS */ -ADDRESS_MAP_START(istellar_state::z80_0_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ_PORT("IN0") - AM_RANGE(0x02,0x02) AM_READ_PORT("DSW1") - AM_RANGE(0x03,0x03) AM_READ_PORT("DSW2") +void istellar_state::z80_0_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x02, 0x02).portr("DSW1"); + map(0x03, 0x03).portr("DSW2"); /*AM_RANGE(0x04,0x04) AM_WRITE(volatile_palette_write)*/ - AM_RANGE(0x05,0x05) AM_READWRITE(z80_0_latch1_read,z80_0_latch2_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(istellar_state::z80_1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_NOP /*AM_READWRITE(z80_1_slatch_read,z80_1_slatch_write)*/ - AM_RANGE(0x01,0x01) AM_NOP /*AM_READWRITE(z80_1_nmienable,z80_1_soundwrite_front)*/ - AM_RANGE(0x02,0x02) AM_NOP /*AM_WRITE(z80_1_soundwrite_rear)*/ -ADDRESS_MAP_END - -ADDRESS_MAP_START(istellar_state::z80_2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READWRITE(z80_2_ldp_read,z80_2_ldp_write) - AM_RANGE(0x01,0x01) AM_READWRITE(z80_2_latch2_read,z80_2_latch1_write) - AM_RANGE(0x02,0x02) AM_READ(z80_2_nmienable) + map(0x05, 0x05).rw(this, FUNC(istellar_state::z80_0_latch1_read), FUNC(istellar_state::z80_0_latch2_write)); +} + +void istellar_state::z80_1_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).noprw(); /*AM_READWRITE(z80_1_slatch_read,z80_1_slatch_write)*/ + map(0x01, 0x01).noprw(); /*AM_READWRITE(z80_1_nmienable,z80_1_soundwrite_front)*/ + map(0x02, 0x02).noprw(); /*AM_WRITE(z80_1_soundwrite_rear)*/ +} + +void istellar_state::z80_2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(istellar_state::z80_2_ldp_read), FUNC(istellar_state::z80_2_ldp_write)); + map(0x01, 0x01).rw(this, FUNC(istellar_state::z80_2_latch2_read), FUNC(istellar_state::z80_2_latch1_write)); + map(0x02, 0x02).r(this, FUNC(istellar_state::z80_2_nmienable)); /* AM_RANGE(0x03,0x03) AM_WRITE(z80_2_ldtrans_write)*/ -ADDRESS_MAP_END +} /* PORTS */ diff --git a/src/mame/drivers/istrebiteli.cpp b/src/mame/drivers/istrebiteli.cpp index 607a0fe1ab9..d4b21763468 100644 --- a/src/mame/drivers/istrebiteli.cpp +++ b/src/mame/drivers/istrebiteli.cpp @@ -300,19 +300,21 @@ WRITE8_MEMBER(istrebiteli_state::spr_xy_w) m_spr_xy[offset ^ 7] = data; } -ADDRESS_MAP_START(istrebiteli_state::mem_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(istrebiteli_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xb0, 0xbf) AM_WRITE(tileram_w) - AM_RANGE(0xc0, 0xc3) AM_READWRITE(ppi0_r, ppi0_w) - AM_RANGE(0xc4, 0xc7) AM_READWRITE(ppi1_r, ppi1_w) - AM_RANGE(0xc8, 0xcf) AM_WRITE(spr_xy_w) -ADDRESS_MAP_END +void istrebiteli_state::mem_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram(); +} + +void istrebiteli_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xb0, 0xbf).w(this, FUNC(istrebiteli_state::tileram_w)); + map(0xc0, 0xc3).rw(this, FUNC(istrebiteli_state::ppi0_r), FUNC(istrebiteli_state::ppi0_w)); + map(0xc4, 0xc7).rw(this, FUNC(istrebiteli_state::ppi1_r), FUNC(istrebiteli_state::ppi1_w)); + map(0xc8, 0xcf).w(this, FUNC(istrebiteli_state::spr_xy_w)); +} CUSTOM_INPUT_MEMBER(istrebiteli_state::collision_r) { diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp index 1b41a8b5eec..27e0c9319f2 100644 --- a/src/mame/drivers/itech32.cpp +++ b/src/mame/drivers/itech32.cpp @@ -894,41 +894,43 @@ void itech32_state::nvram_init(nvram_device &nvram, void *base, size_t length) *************************************/ /*------ Time Killers memory layout ------*/ -ADDRESS_MAP_START(itech32_state::timekill_map) - AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x040000, 0x040001) AM_READ_PORT("P1") - AM_RANGE(0x048000, 0x048001) AM_READ_PORT("P2") - AM_RANGE(0x050000, 0x050001) AM_READ_PORT("SYSTEM") AM_WRITE(timekill_intensity_w) - AM_RANGE(0x058000, 0x058001) AM_READ_PORT("DIPS") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x060000, 0x060001) AM_WRITE(timekill_colora_w) - AM_RANGE(0x068000, 0x068001) AM_WRITE(timekill_colorbc_w) - AM_RANGE(0x070000, 0x070001) AM_WRITENOP /* noisy */ - AM_RANGE(0x078000, 0x078001) AM_WRITE(sound_data_w) - AM_RANGE(0x080000, 0x08007f) AM_READWRITE(itech32_video_r, itech32_video_w) AM_SHARE("video") - AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(int1_ack_w) - AM_RANGE(0x0c0000, 0x0c7fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom") -ADDRESS_MAP_END +void itech32_state::timekill_map(address_map &map) +{ + map(0x000000, 0x003fff).ram().share("nvram"); + map(0x040000, 0x040001).portr("P1"); + map(0x048000, 0x048001).portr("P2"); + map(0x050000, 0x050001).portr("SYSTEM").w(this, FUNC(itech32_state::timekill_intensity_w)); + map(0x058000, 0x058001).portr("DIPS").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x060000, 0x060001).w(this, FUNC(itech32_state::timekill_colora_w)); + map(0x068000, 0x068001).w(this, FUNC(itech32_state::timekill_colorbc_w)); + map(0x070000, 0x070001).nopw(); /* noisy */ + map(0x078000, 0x078001).w(this, FUNC(itech32_state::sound_data_w)); + map(0x080000, 0x08007f).rw(this, FUNC(itech32_state::itech32_video_r), FUNC(itech32_state::itech32_video_w)).share("video"); + map(0x0a0000, 0x0a0001).w(this, FUNC(itech32_state::int1_ack_w)); + map(0x0c0000, 0x0c7fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x100000, 0x17ffff).rom().region("user1", 0).share("main_rom"); +} /*------ BloodStorm and later games memory layout ------*/ -ADDRESS_MAP_START(itech32_state::bloodstm_map) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1") AM_WRITE(int1_ack_w) - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P2") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P3") - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("DIPS") - AM_RANGE(0x300000, 0x300001) AM_WRITE(bloodstm_color1_w) - AM_RANGE(0x380000, 0x380001) AM_WRITE(bloodstm_color2_w) - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x480000, 0x480001) AM_WRITE(sound_data_w) - AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(bloodstm_video_r, bloodstm_video_w) AM_SHARE("video") - AM_RANGE(0x580000, 0x59ffff) AM_RAM_WRITE(bloodstm_paletteram_w) AM_SHARE("palette") - AM_RANGE(0x700000, 0x700001) AM_WRITE(bloodstm_plane_w) - AM_RANGE(0x780000, 0x780001) AM_READ_PORT("EXTRA") - AM_RANGE(0x800000, 0x87ffff) AM_MIRROR(0x780000) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom") -ADDRESS_MAP_END +void itech32_state::bloodstm_map(address_map &map) +{ + map(0x000000, 0x00ffff).ram().share("nvram"); + map(0x080000, 0x080001).portr("P1").w(this, FUNC(itech32_state::int1_ack_w)); + map(0x100000, 0x100001).portr("P2"); + map(0x180000, 0x180001).portr("P3"); + map(0x200000, 0x200001).portr("P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x280000, 0x280001).portr("DIPS"); + map(0x300000, 0x300001).w(this, FUNC(itech32_state::bloodstm_color1_w)); + map(0x380000, 0x380001).w(this, FUNC(itech32_state::bloodstm_color2_w)); + map(0x400000, 0x400001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x480000, 0x480001).w(this, FUNC(itech32_state::sound_data_w)); + map(0x500000, 0x5000ff).rw(this, FUNC(itech32_state::bloodstm_video_r), FUNC(itech32_state::bloodstm_video_w)).share("video"); + map(0x580000, 0x59ffff).ram().w(this, FUNC(itech32_state::bloodstm_paletteram_w)).share("palette"); + map(0x700000, 0x700001).w(this, FUNC(itech32_state::bloodstm_plane_w)); + map(0x780000, 0x780001).portr("EXTRA"); + map(0x800000, 0x87ffff).mirror(0x780000).rom().region("user1", 0).share("main_rom"); +} /*------ Driver's Edge memory layouts ------*/ @@ -972,68 +974,72 @@ WRITE32_MEMBER(itech32_state::test2_w) } #endif -ADDRESS_MAP_START(itech32_state::drivedge_map) - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x40000) AM_RAM AM_SHARE("nvram") +void itech32_state::drivedge_map(address_map &map) +{ + map(0x000000, 0x03ffff).mirror(0x40000).ram().share("nvram"); #if LOG_DRIVEDGE_UNINIT_RAM -AM_RANGE(0x000100, 0x0003ff) AM_MIRROR(0x40000) AM_READWRITE(test1_r, test1_w) -AM_RANGE(0x000c00, 0x007fff) AM_MIRROR(0x40000) AM_READWRITE(test2_r, test2_w) +map(0x000100, 0x0003ff).mirror(0x40000).rw(this, FUNC(itech32_state::test1_r), FUNC(itech32_state::test1_w)); +map(0x000c00, 0x007fff).mirror(0x40000).rw(this, FUNC(itech32_state::test2_r), FUNC(itech32_state::test2_w)); #endif - AM_RANGE(0x080000, 0x080003) AM_READ_PORT("80000") - AM_RANGE(0x082000, 0x082003) AM_READ_PORT("82000") - AM_RANGE(0x084000, 0x084003) AM_READWRITE(sound_data32_r, sound_data32_w) + map(0x080000, 0x080003).portr("80000"); + map(0x082000, 0x082003).portr("82000"); + map(0x084000, 0x084003).rw(this, FUNC(itech32_state::sound_data32_r), FUNC(itech32_state::sound_data32_w)); // AM_RANGE(0x086000, 0x08623f) AM_RAM -- networking -- first 0x40 bytes = our data, next 0x40*8 bytes = their data, r/w on IRQ2 - AM_RANGE(0x088000, 0x088003) AM_READ(drivedge_steering_r) - AM_RANGE(0x08a000, 0x08a003) AM_READ(drivedge_gas_r) AM_WRITENOP - AM_RANGE(0x08c000, 0x08c003) AM_READ_PORT("8c000") - AM_RANGE(0x08e000, 0x08e003) AM_READ_PORT("8e000") AM_WRITENOP - AM_RANGE(0x100000, 0x10000f) AM_WRITE(drivedge_zbuf_control_w) AM_SHARE("drivedge_zctl") - AM_RANGE(0x180000, 0x180003) AM_WRITE(drivedge_color0_w) - AM_RANGE(0x1a0000, 0x1bffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x1c0000, 0x1c0003) AM_WRITENOP - AM_RANGE(0x1e0000, 0x1e0113) AM_READWRITE(itech020_video_r, itech020_video_w) AM_SHARE("video") - AM_RANGE(0x1e4000, 0x1e4003) AM_WRITE(tms_reset_assert_w) - AM_RANGE(0x1ec000, 0x1ec003) AM_WRITE(tms_reset_clear_w) - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("200000") - AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(tms1_68k_ram_w) AM_SHARE("tms1_ram") - AM_RANGE(0x300000, 0x300fff) AM_RAM_WRITE(tms2_68k_ram_w) AM_SHARE("tms2_ram") - AM_RANGE(0x380000, 0x380003) AM_WRITENOP // AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x600000, 0x607fff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom") -ADDRESS_MAP_END - -ADDRESS_MAP_START(itech32_state::drivedge_tms1_map) - AM_RANGE(0x000000, 0x001fff) AM_RAM AM_SHARE("tms1_boot") - AM_RANGE(0x008000, 0x0083ff) AM_MIRROR(0x400) AM_RAM_WRITE(tms1_trigger_w) AM_SHARE("tms1_ram") - AM_RANGE(0x080000, 0x0bffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(itech32_state::drivedge_tms2_map) - AM_RANGE(0x000000, 0x0003ff) AM_MIRROR(0x8400) AM_RAM_WRITE(tms2_trigger_w) AM_SHARE("tms2_ram") - AM_RANGE(0x080000, 0x08ffff) AM_RAM -ADDRESS_MAP_END + map(0x088000, 0x088003).r(this, FUNC(itech32_state::drivedge_steering_r)); + map(0x08a000, 0x08a003).r(this, FUNC(itech32_state::drivedge_gas_r)).nopw(); + map(0x08c000, 0x08c003).portr("8c000"); + map(0x08e000, 0x08e003).portr("8e000").nopw(); + map(0x100000, 0x10000f).w(this, FUNC(itech32_state::drivedge_zbuf_control_w)).share("drivedge_zctl"); + map(0x180000, 0x180003).w(this, FUNC(itech32_state::drivedge_color0_w)); + map(0x1a0000, 0x1bffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x1c0000, 0x1c0003).nopw(); + map(0x1e0000, 0x1e0113).rw(this, FUNC(itech32_state::itech020_video_r), FUNC(itech32_state::itech020_video_w)).share("video"); + map(0x1e4000, 0x1e4003).w(this, FUNC(itech32_state::tms_reset_assert_w)); + map(0x1ec000, 0x1ec003).w(this, FUNC(itech32_state::tms_reset_clear_w)); + map(0x200000, 0x200003).portr("200000"); + map(0x280000, 0x280fff).ram().w(this, FUNC(itech32_state::tms1_68k_ram_w)).share("tms1_ram"); + map(0x300000, 0x300fff).ram().w(this, FUNC(itech32_state::tms2_68k_ram_w)).share("tms2_ram"); + map(0x380000, 0x380003).nopw(); // AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + map(0x600000, 0x607fff).rom().region("user1", 0).share("main_rom"); +} + +void itech32_state::drivedge_tms1_map(address_map &map) +{ + map(0x000000, 0x001fff).ram().share("tms1_boot"); + map(0x008000, 0x0083ff).mirror(0x400).ram().w(this, FUNC(itech32_state::tms1_trigger_w)).share("tms1_ram"); + map(0x080000, 0x0bffff).ram(); +} + +void itech32_state::drivedge_tms2_map(address_map &map) +{ + map(0x000000, 0x0003ff).mirror(0x8400).ram().w(this, FUNC(itech32_state::tms2_trigger_w)).share("tms2_ram"); + map(0x080000, 0x08ffff).ram(); +} /*------ 68EC020-based memory layout ------*/ -ADDRESS_MAP_START(itech32_state::itech020_map) - AM_RANGE(0x000000, 0x007fff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x080000, 0x080003) AM_READ_PORT("P1") AM_WRITE(int1_ack32_w) - AM_RANGE(0x100000, 0x100003) AM_READ_PORT("P2") - AM_RANGE(0x180000, 0x180003) AM_READ_PORT("P3") - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("P4") - AM_RANGE(0x280000, 0x280003) AM_READ_PORT("DIPS") - AM_RANGE(0x300000, 0x300003) AM_WRITE(itech020_color1_w) - AM_RANGE(0x380000, 0x380003) AM_WRITE(itech020_color2_w) - AM_RANGE(0x400000, 0x400003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w) - AM_RANGE(0x480000, 0x480003) AM_WRITE(sound_data32_w) - AM_RANGE(0x500000, 0x5000ff) AM_READWRITE(itech020_video_r, itech020_video_w) AM_SHARE("video") - AM_RANGE(0x578000, 0x57ffff) AM_READNOP /* touched by protection */ - AM_RANGE(0x580000, 0x59ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x600000, 0x603fff) AM_RAM AM_SHARE("nvram") -/* ? */ AM_RANGE(0x61ff00, 0x61ffff) AM_WRITENOP /* Unknown Writes */ - AM_RANGE(0x680000, 0x680003) AM_READ(itech020_prot_result_r) AM_WRITENOP -/* ! */ AM_RANGE(0x680800, 0x68083f) AM_READONLY AM_WRITENOP /* Serial DUART Channel A/B & Top LED sign - To Do! */ - AM_RANGE(0x700000, 0x700003) AM_WRITE(itech020_plane_w) - AM_RANGE(0x800000, 0xbfffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("main_rom") -ADDRESS_MAP_END +void itech32_state::itech020_map(address_map &map) +{ + map(0x000000, 0x007fff).ram().share("main_ram"); + map(0x080000, 0x080003).portr("P1").w(this, FUNC(itech32_state::int1_ack32_w)); + map(0x100000, 0x100003).portr("P2"); + map(0x180000, 0x180003).portr("P3"); + map(0x200000, 0x200003).portr("P4"); + map(0x280000, 0x280003).portr("DIPS"); + map(0x300000, 0x300003).w(this, FUNC(itech32_state::itech020_color1_w)); + map(0x380000, 0x380003).w(this, FUNC(itech32_state::itech020_color2_w)); + map(0x400000, 0x400003).w("watchdog", FUNC(watchdog_timer_device::reset32_w)); + map(0x480000, 0x480003).w(this, FUNC(itech32_state::sound_data32_w)); + map(0x500000, 0x5000ff).rw(this, FUNC(itech32_state::itech020_video_r), FUNC(itech32_state::itech020_video_w)).share("video"); + map(0x578000, 0x57ffff).nopr(); /* touched by protection */ + map(0x580000, 0x59ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x600000, 0x603fff).ram().share("nvram"); +/* ? */ map(0x61ff00, 0x61ffff).nopw(); /* Unknown Writes */ + map(0x680000, 0x680003).r(this, FUNC(itech32_state::itech020_prot_result_r)).nopw(); +/* ! */ map(0x680800, 0x68083f).readonly().nopw(); /* Serial DUART Channel A/B & Top LED sign - To Do! */ + map(0x700000, 0x700003).w(this, FUNC(itech32_state::itech020_plane_w)); + map(0x800000, 0xbfffff).rom().region("user1", 0).share("main_rom"); +} @@ -1044,30 +1050,32 @@ ADDRESS_MAP_END *************************************/ /*------ Rev 1 sound board memory layout ------*/ -ADDRESS_MAP_START(itech32_state::sound_map) - AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_return_w) - AM_RANGE(0x0400, 0x0400) AM_READ(sound_data_r) - AM_RANGE(0x0800, 0x083f) AM_MIRROR(0x80) AM_DEVREADWRITE("ensoniq", es5506_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(sound_bank_w) - AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* noisy */ - AM_RANGE(0x1400, 0x140f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) - AM_RANGE(0x2000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void itech32_state::sound_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(itech32_state::sound_return_w)); + map(0x0400, 0x0400).r(this, FUNC(itech32_state::sound_data_r)); + map(0x0800, 0x083f).mirror(0x80).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)); + map(0x0c00, 0x0c00).w(this, FUNC(itech32_state::sound_bank_w)); + map(0x1000, 0x1000).nopw(); /* noisy */ + map(0x1400, 0x140f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x2000, 0x3fff).ram(); + map(0x4000, 0x7fff).bankr("soundbank"); + map(0x8000, 0xffff).rom(); +} /*------ Rev 2 sound board memory layout ------*/ -ADDRESS_MAP_START(itech32_state::sound_020_map) - AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x400) AM_READ(sound_data_r) - AM_RANGE(0x0800, 0x083f) AM_MIRROR(0x80) AM_DEVREADWRITE("ensoniq", es5506_device, read, write) - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(sound_bank_w) - AM_RANGE(0x1400, 0x1400) AM_WRITE(firq_clear_w) - AM_RANGE(0x1800, 0x1800) AM_READ(sound_data_buffer_r) AM_WRITENOP - AM_RANGE(0x2000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void itech32_state::sound_020_map(address_map &map) +{ + map(0x0000, 0x0000).mirror(0x400).r(this, FUNC(itech32_state::sound_data_r)); + map(0x0800, 0x083f).mirror(0x80).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)); + map(0x0c00, 0x0c00).w(this, FUNC(itech32_state::sound_bank_w)); + map(0x1400, 0x1400).w(this, FUNC(itech32_state::firq_clear_w)); + map(0x1800, 0x1800).r(this, FUNC(itech32_state::sound_data_buffer_r)).nopw(); + map(0x2000, 0x3fff).ram(); + map(0x4000, 0x7fff).bankr("soundbank"); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp index b5cb20b991b..65fc7571968 100644 --- a/src/mame/drivers/itech8.cpp +++ b/src/mame/drivers/itech8.cpp @@ -857,67 +857,71 @@ WRITE8_MEMBER(itech8_state::ninclown_palette_w) *************************************/ /*------ common layout with TMS34061 at 0000 ------*/ -ADDRESS_MAP_START(itech8_state::tmslo_map) - AM_RANGE(0x0000, 0x0fff) AM_READWRITE(tms34061_r, tms34061_w) - AM_RANGE(0x1100, 0x1100) AM_WRITENOP - AM_RANGE(0x1120, 0x1120) AM_WRITE(sound_data_w) - AM_RANGE(0x1140, 0x1140) AM_READ_PORT("40") AM_WRITE(grom_bank_w) - AM_RANGE(0x1160, 0x1160) AM_READ_PORT("60") AM_WRITE(page_w) - AM_RANGE(0x1180, 0x1180) AM_READ_PORT("80") AM_DEVWRITE("tms34061", tms34061_device, latch_w) - AM_RANGE(0x11a0, 0x11a0) AM_WRITE(nmi_ack_w) - AM_RANGE(0x11c0, 0x11df) AM_READ(blitter_r) AM_WRITE(blitter_bank_w) - AM_RANGE(0x11e0, 0x11ff) AM_WRITE(palette_w) - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void itech8_state::tmslo_map(address_map &map) +{ + map(0x0000, 0x0fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w)); + map(0x1100, 0x1100).nopw(); + map(0x1120, 0x1120).w(this, FUNC(itech8_state::sound_data_w)); + map(0x1140, 0x1140).portr("40").w(this, FUNC(itech8_state::grom_bank_w)); + map(0x1160, 0x1160).portr("60").w(this, FUNC(itech8_state::page_w)); + map(0x1180, 0x1180).portr("80").w(m_tms34061, FUNC(tms34061_device::latch_w)); + map(0x11a0, 0x11a0).w(this, FUNC(itech8_state::nmi_ack_w)); + map(0x11c0, 0x11df).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w)); + map(0x11e0, 0x11ff).w(this, FUNC(itech8_state::palette_w)); + map(0x2000, 0x3fff).ram().share("nvram"); + map(0x4000, 0xffff).bankr("bank1"); +} /*------ common layout with TMS34061 at 1000 ------*/ -ADDRESS_MAP_START(itech8_state::tmshi_map) - AM_RANGE(0x1000, 0x1fff) AM_READWRITE(tms34061_r, tms34061_w) - AM_RANGE(0x0100, 0x0100) AM_WRITENOP - AM_RANGE(0x0120, 0x0120) AM_WRITE(sound_data_w) - AM_RANGE(0x0140, 0x0140) AM_READ_PORT("40") AM_WRITE(grom_bank_w) - AM_RANGE(0x0160, 0x0160) AM_READ_PORT("60") AM_WRITE(page_w) - AM_RANGE(0x0180, 0x0180) AM_READ_PORT("80") AM_DEVWRITE("tms34061", tms34061_device, latch_w) - AM_RANGE(0x01a0, 0x01a0) AM_WRITE(nmi_ack_w) - AM_RANGE(0x01c0, 0x01df) AM_READ(blitter_r) AM_WRITE(blitter_bank_w) - AM_RANGE(0x01e0, 0x01ff) AM_WRITE(palette_w) - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void itech8_state::tmshi_map(address_map &map) +{ + map(0x1000, 0x1fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w)); + map(0x0100, 0x0100).nopw(); + map(0x0120, 0x0120).w(this, FUNC(itech8_state::sound_data_w)); + map(0x0140, 0x0140).portr("40").w(this, FUNC(itech8_state::grom_bank_w)); + map(0x0160, 0x0160).portr("60").w(this, FUNC(itech8_state::page_w)); + map(0x0180, 0x0180).portr("80").w(m_tms34061, FUNC(tms34061_device::latch_w)); + map(0x01a0, 0x01a0).w(this, FUNC(itech8_state::nmi_ack_w)); + map(0x01c0, 0x01df).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w)); + map(0x01e0, 0x01ff).w(this, FUNC(itech8_state::palette_w)); + map(0x2000, 0x3fff).ram().share("nvram"); + map(0x4000, 0xffff).bankr("bank1"); +} /*------ Golden Tee Golf II 1992 layout ------*/ -ADDRESS_MAP_START(itech8_state::gtg2_map) - AM_RANGE(0x0100, 0x0100) AM_READ_PORT("40") AM_WRITE(nmi_ack_w) - AM_RANGE(0x0120, 0x0120) AM_READ_PORT("60") AM_WRITE(page_w) - AM_RANGE(0x0140, 0x015f) AM_WRITE(palette_w) - AM_RANGE(0x0140, 0x0140) AM_READ_PORT("80") - AM_RANGE(0x0160, 0x0160) AM_WRITE(grom_bank_w) - AM_RANGE(0x0180, 0x019f) AM_READ(blitter_r) AM_WRITE(blitter_bank_w) - AM_RANGE(0x01c0, 0x01c0) AM_WRITE(gtg2_sound_data_w) - AM_RANGE(0x01e0, 0x01e0) AM_DEVWRITE("tms34061", tms34061_device, latch_w) - AM_RANGE(0x1000, 0x1fff) AM_READWRITE(tms34061_r, tms34061_w) - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void itech8_state::gtg2_map(address_map &map) +{ + map(0x0100, 0x0100).portr("40").w(this, FUNC(itech8_state::nmi_ack_w)); + map(0x0120, 0x0120).portr("60").w(this, FUNC(itech8_state::page_w)); + map(0x0140, 0x015f).w(this, FUNC(itech8_state::palette_w)); + map(0x0140, 0x0140).portr("80"); + map(0x0160, 0x0160).w(this, FUNC(itech8_state::grom_bank_w)); + map(0x0180, 0x019f).r(this, FUNC(itech8_state::blitter_r)).w(this, FUNC(itech8_state::blitter_bank_w)); + map(0x01c0, 0x01c0).w(this, FUNC(itech8_state::gtg2_sound_data_w)); + map(0x01e0, 0x01e0).w(m_tms34061, FUNC(tms34061_device::latch_w)); + map(0x1000, 0x1fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w)); + map(0x2000, 0x3fff).ram().share("nvram"); + map(0x4000, 0xffff).bankr("bank1"); +} /*------ Ninja Clowns layout ------*/ -ADDRESS_MAP_START(itech8_state::ninclown_map) - AM_RANGE(0x000000, 0x00007f) AM_RAM AM_REGION("maincpu", 0) - AM_RANGE(0x000080, 0x003fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x004000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x07ffff) AM_READ(rom_constant_r) - AM_RANGE(0x100080, 0x100081) AM_WRITE8(sound_data_w, 0xff00) - AM_RANGE(0x100100, 0x100101) AM_READ_PORT("40") AM_WRITE(grom_bank16_w) - AM_RANGE(0x100180, 0x100181) AM_READ_PORT("60") AM_WRITE(display_page16_w) - AM_RANGE(0x100240, 0x100241) AM_DEVWRITE8("tms34061", tms34061_device, latch_w, 0xff00) - AM_RANGE(0x100280, 0x100281) AM_READ_PORT("80") AM_WRITENOP - AM_RANGE(0x100300, 0x10031f) AM_READWRITE8(blitter_r, blitter_w, 0xffff) - AM_RANGE(0x100380, 0x1003ff) AM_READWRITE8(ninclown_palette_r, ninclown_palette_w, 0xff00) - AM_RANGE(0x110000, 0x110fff) AM_READWRITE8(tms34061_r, tms34061_w, 0xffff) -ADDRESS_MAP_END +void itech8_state::ninclown_map(address_map &map) +{ + map(0x000000, 0x00007f).ram().region("maincpu", 0); + map(0x000080, 0x003fff).ram().share("nvram"); + map(0x004000, 0x03ffff).rom(); + map(0x040000, 0x07ffff).r(this, FUNC(itech8_state::rom_constant_r)); + map(0x100080, 0x100080).w(this, FUNC(itech8_state::sound_data_w)); + map(0x100100, 0x100101).portr("40").w(this, FUNC(itech8_state::grom_bank16_w)); + map(0x100180, 0x100181).portr("60").w(this, FUNC(itech8_state::display_page16_w)); + map(0x100240, 0x100240).w(m_tms34061, FUNC(tms34061_device::latch_w)); + map(0x100280, 0x100281).portr("80").nopw(); + map(0x100300, 0x10031f).rw(this, FUNC(itech8_state::blitter_r), FUNC(itech8_state::blitter_w)); + map(0x100380, 0x1003ff).rw(this, FUNC(itech8_state::ninclown_palette_r), FUNC(itech8_state::ninclown_palette_w)).umask16(0xff00); + map(0x110000, 0x110fff).rw(this, FUNC(itech8_state::tms34061_r), FUNC(itech8_state::tms34061_w)); +} @@ -928,48 +932,52 @@ ADDRESS_MAP_END *************************************/ /*------ YM2203-based sound ------*/ -ADDRESS_MAP_START(itech8_state::sound2203_map) - AM_RANGE(0x0000, 0x0000) AM_WRITENOP - AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r) - AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0002) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void itech8_state::sound2203_map(address_map &map) +{ + map(0x0000, 0x0000).nopw(); + map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r)); + map(0x2000, 0x2001).mirror(0x0002).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x3000, 0x37ff).ram(); + map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).rom(); +} /*------ YM2608B-based sound ------*/ -ADDRESS_MAP_START(itech8_state::sound2608b_map) - AM_RANGE(0x1000, 0x1000) AM_WRITENOP - AM_RANGE(0x2000, 0x2000) AM_READ(sound_data_r) - AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write) - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void itech8_state::sound2608b_map(address_map &map) +{ + map(0x1000, 0x1000).nopw(); + map(0x2000, 0x2000).r(this, FUNC(itech8_state::sound_data_r)); + map(0x4000, 0x4003).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write)); + map(0x6000, 0x67ff).ram(); + map(0x8000, 0xffff).rom(); +} /*------ YM3812-based sound ------*/ -ADDRESS_MAP_START(itech8_state::sound3812_map) - AM_RANGE(0x0000, 0x0000) AM_WRITENOP - AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r) - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void itech8_state::sound3812_map(address_map &map) +{ + map(0x0000, 0x0000).nopw(); + map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r)); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x3000, 0x37ff).ram(); + map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x5000, 0x5003).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xffff).rom(); +} /*------ external YM3812-based sound board ------*/ -ADDRESS_MAP_START(itech8_state::sound3812_external_map) - AM_RANGE(0x0000, 0x0000) AM_WRITENOP - AM_RANGE(0x1000, 0x1000) AM_READ(sound_data_r) - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x5000, 0x500f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void itech8_state::sound3812_external_map(address_map &map) +{ + map(0x0000, 0x0000).nopw(); + map(0x1000, 0x1000).r(this, FUNC(itech8_state::sound_data_r)); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x3000, 0x37ff).ram(); + map(0x4000, 0x4000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x5000, 0x500f).rw("via6522_0", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x8000, 0xffff).rom(); +} @@ -979,15 +987,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(itech8_state::slikz80_mem_map) - AM_RANGE(0x0000, 0x7ff) AM_ROM -ADDRESS_MAP_END +void itech8_state::slikz80_mem_map(address_map &map) +{ + map(0x0000, 0x7ff).rom(); +} -ADDRESS_MAP_START(itech8_state::slikz80_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(slikz80_port_r, slikz80_port_w) -ADDRESS_MAP_END +void itech8_state::slikz80_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(itech8_state::slikz80_port_r), FUNC(itech8_state::slikz80_port_w)); +} diff --git a/src/mame/drivers/itgambl2.cpp b/src/mame/drivers/itgambl2.cpp index 5d099431225..c2895d20603 100644 --- a/src/mame/drivers/itgambl2.cpp +++ b/src/mame/drivers/itgambl2.cpp @@ -155,9 +155,10 @@ uint32_t itgambl2_state::screen_update_itgambl2(screen_device &screen, bitmap_rg * Memory map information * *************************/ -ADDRESS_MAP_START(itgambl2_state::itgambl2_map) - AM_RANGE(0x000000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void itgambl2_state::itgambl2_map(address_map &map) +{ + map(0x000000, 0x3fff).rom(); +} /************************* diff --git a/src/mame/drivers/itgambl3.cpp b/src/mame/drivers/itgambl3.cpp index 19239096550..c219b478a72 100644 --- a/src/mame/drivers/itgambl3.cpp +++ b/src/mame/drivers/itgambl3.cpp @@ -141,10 +141,11 @@ uint32_t itgambl3_state::screen_update_itgambl3(screen_device &screen, bitmap_rg * Memory map information * *************************/ -ADDRESS_MAP_START(itgambl3_state::itgambl3_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0xffffff) AM_ROM -ADDRESS_MAP_END +void itgambl3_state::itgambl3_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0xffffff).rom(); +} /************************* diff --git a/src/mame/drivers/itgamble.cpp b/src/mame/drivers/itgamble.cpp index 37c4de2bb89..70c84ace1b2 100644 --- a/src/mame/drivers/itgamble.cpp +++ b/src/mame/drivers/itgamble.cpp @@ -108,10 +108,11 @@ uint32_t itgamble_state::screen_update(screen_device &screen, bitmap_ind16 &bitm * Memory map information * *************************/ -ADDRESS_MAP_START(itgamble_state::itgamble_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0xffffff) AM_ROM -ADDRESS_MAP_END +void itgamble_state::itgamble_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0xffffff).rom(); +} /************************* diff --git a/src/mame/drivers/itt3030.cpp b/src/mame/drivers/itt3030.cpp index 23f732184d6..c5ab800c0ae 100644 --- a/src/mame/drivers/itt3030.cpp +++ b/src/mame/drivers/itt3030.cpp @@ -292,27 +292,30 @@ private: // The upper 16K is always the top 16K of the first bank, F5 can set this to 32K // Port F6 bits 7-5 select banks 0-7, bit 4 enables bank 8 -ADDRESS_MAP_START(itt3030_state::itt3030_map) - AM_RANGE(0x0000, 0xbfff) AM_DEVICE("lowerbank", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(itt3030_state::lower48_map) - AM_RANGE(0x60000, 0x607ff) AM_ROM AM_REGION("maincpu", 0) // begin "page 8" - AM_RANGE(0x60800, 0x60fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x61000, 0x610ff) AM_RAM AM_MIRROR(0x100) // only 256 bytes, but ROM also clears 11xx? - AM_RANGE(0x63000, 0x63fff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(itt3030_state::itt3030_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("crt5027", crt5027_device, read, write) - AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("kbdmcu", i8741_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x32, 0x32) AM_WRITE(beep_w) - AM_RANGE(0x35, 0x35) AM_READ(vsync_r) - AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w) - AM_RANGE(0xf6, 0xf6) AM_WRITE(bank_w) -ADDRESS_MAP_END +void itt3030_state::itt3030_map(address_map &map) +{ + map(0x0000, 0xbfff).m(m_48kbank, FUNC(address_map_bank_device::amap8)); +} + +void itt3030_state::lower48_map(address_map &map) +{ + map(0x60000, 0x607ff).rom().region("maincpu", 0); // begin "page 8" + map(0x60800, 0x60fff).rom().region("maincpu", 0); + map(0x61000, 0x610ff).ram().mirror(0x100); // only 256 bytes, but ROM also clears 11xx? + map(0x63000, 0x63fff).ram().share("vram"); +} + +void itt3030_state::itt3030_io(address_map &map) +{ + map.global_mask(0xff); + map(0x20, 0x2f).rw(m_crtc, FUNC(crt5027_device::read), FUNC(crt5027_device::write)); + map(0x30, 0x31).rw(m_kbdmcu, FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w)); + map(0x32, 0x32).w(this, FUNC(itt3030_state::beep_w)); + map(0x35, 0x35).r(this, FUNC(itt3030_state::vsync_r)); + map(0x50, 0x53).rw(this, FUNC(itt3030_state::fdc_r), FUNC(itt3030_state::fdc_w)); + map(0x54, 0x54).rw(this, FUNC(itt3030_state::fdc_stat_r), FUNC(itt3030_state::fdc_cmd_w)); + map(0xf6, 0xf6).w(this, FUNC(itt3030_state::bank_w)); +} //************************************************************************** diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp index cea51a0a83b..55cf03acf21 100644 --- a/src/mame/drivers/jack.cpp +++ b/src/mame/drivers/jack.cpp @@ -177,69 +177,76 @@ WRITE8_MEMBER(jack_state::joinem_control_w) * *************************************/ -ADDRESS_MAP_START(jack_state::jack_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0xb000, 0xb07f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb400, 0xb400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xb500, 0xb500) AM_READ_PORT("DSW1") - AM_RANGE(0xb501, 0xb501) AM_READ_PORT("DSW2") - AM_RANGE(0xb502, 0xb502) AM_READ_PORT("IN0") - AM_RANGE(0xb503, 0xb503) AM_READ_PORT("IN1") - AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2") - AM_RANGE(0xb505, 0xb505) AM_READ_PORT("IN3") - AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w) - AM_RANGE(0xb600, 0xb61f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jack_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jack_state::striv_map) - AM_IMPORT_FROM( jack_map ) - AM_RANGE(0xb000, 0xb0ff) AM_WRITENOP - AM_RANGE(0xc000, 0xcfff) AM_READ(striv_question_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(jack_state::joinem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0xb000, 0xb07f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb080, 0xb0ff) AM_RAM_WRITE(joinem_scroll_w) AM_SHARE("scrollram") - AM_RANGE(0xb400, 0xb400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xb500, 0xb500) AM_READ_PORT("DSW1") - AM_RANGE(0xb501, 0xb501) AM_READ_PORT("DSW2") - AM_RANGE(0xb502, 0xb502) AM_READ_PORT("IN0") - AM_RANGE(0xb503, 0xb503) AM_READ_PORT("IN1") - AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2") - AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w) - AM_RANGE(0xb700, 0xb700) AM_WRITE(joinem_control_w) - AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jack_state::unclepoo_map) - AM_IMPORT_FROM( joinem_map ) - AM_RANGE(0x9000, 0x97ff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(jack_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* R/C filter ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(jack_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END +void jack_state::jack_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram(); + map(0xb000, 0xb07f).ram().share("spriteram"); + map(0xb400, 0xb400).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xb500, 0xb500).portr("DSW1"); + map(0xb501, 0xb501).portr("DSW2"); + map(0xb502, 0xb502).portr("IN0"); + map(0xb503, 0xb503).portr("IN1"); + map(0xb504, 0xb504).portr("IN2"); + map(0xb505, 0xb505).portr("IN3"); + map(0xb506, 0xb507).rw(this, FUNC(jack_state::jack_flipscreen_r), FUNC(jack_state::jack_flipscreen_w)); + map(0xb600, 0xb61f).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xb800, 0xbbff).ram().w(this, FUNC(jack_state::jack_videoram_w)).share("videoram"); + map(0xbc00, 0xbfff).ram().w(this, FUNC(jack_state::jack_colorram_w)).share("colorram"); + map(0xc000, 0xffff).rom(); +} + +void jack_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().share("decrypted_opcodes"); +} + +void jack_state::striv_map(address_map &map) +{ + jack_map(map); + map(0xb000, 0xb0ff).nopw(); + map(0xc000, 0xcfff).r(this, FUNC(jack_state::striv_question_r)); +} + + +void jack_state::joinem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0xb000, 0xb07f).ram().share("spriteram"); + map(0xb080, 0xb0ff).ram().w(this, FUNC(jack_state::joinem_scroll_w)).share("scrollram"); + map(0xb400, 0xb400).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xb500, 0xb500).portr("DSW1"); + map(0xb501, 0xb501).portr("DSW2"); + map(0xb502, 0xb502).portr("IN0"); + map(0xb503, 0xb503).portr("IN1"); + map(0xb504, 0xb504).portr("IN2"); + map(0xb506, 0xb507).rw(this, FUNC(jack_state::jack_flipscreen_r), FUNC(jack_state::jack_flipscreen_w)); + map(0xb700, 0xb700).w(this, FUNC(jack_state::joinem_control_w)); + map(0xb800, 0xbbff).ram().w(this, FUNC(jack_state::jack_videoram_w)).share("videoram"); + map(0xbc00, 0xbfff).ram().w(this, FUNC(jack_state::jack_colorram_w)).share("colorram"); +} + +void jack_state::unclepoo_map(address_map &map) +{ + joinem_map(map); + map(0x9000, 0x97ff).ram(); +} + + +void jack_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x6000, 0x6fff).nopw(); /* R/C filter ??? */ +} + +void jack_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w)); +} diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp index 33f9c4110cf..08582e87129 100644 --- a/src/mame/drivers/jackal.cpp +++ b/src/mame/drivers/jackal.cpp @@ -162,32 +162,34 @@ WRITE8_MEMBER(jackal_state::jackal_spriteram_w) * *************************************/ -ADDRESS_MAP_START(jackal_state::master_map) - AM_RANGE(0x0000, 0x0003) AM_RAM AM_SHARE("videoctrl") // scroll + other things - AM_RANGE(0x0004, 0x0004) AM_WRITE(jackal_flipscreen_w) - AM_RANGE(0x0010, 0x0010) AM_READ_PORT("DSW1") - AM_RANGE(0x0011, 0x0011) AM_READ_PORT("IN1") - AM_RANGE(0x0012, 0x0012) AM_READ_PORT("IN2") - AM_RANGE(0x0013, 0x0013) AM_READ_PORT("IN0") - AM_RANGE(0x0014, 0x0015) AM_READ(jackalr_rotary_r) - AM_RANGE(0x0018, 0x0018) AM_READ_PORT("DSW2") - AM_RANGE(0x0019, 0x0019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x001c, 0x001c) AM_WRITE(jackal_rambank_w) - AM_RANGE(0x0020, 0x005f) AM_READWRITE(jackal_zram_r, jackal_zram_w) // MAIN Z RAM,SUB Z RAM - AM_RANGE(0x0060, 0x1fff) AM_RAM AM_SHARE("share1") // M COMMON RAM,S COMMON RAM - AM_RANGE(0x2000, 0x2fff) AM_READWRITE(jackal_voram_r, jackal_voram_w) // MAIN V O RAM,SUB V O RAM - AM_RANGE(0x3000, 0x3fff) AM_READWRITE(jackal_spriteram_r, jackal_spriteram_w) // MAIN V O RAM,SUB V O RAM - AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jackal_state::slave_map) - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x4000, 0x43ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff - AM_RANGE(0x6000, 0x605f) AM_RAM // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff) - AM_RANGE(0x6060, 0x7fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void jackal_state::master_map(address_map &map) +{ + map(0x0000, 0x0003).ram().share("videoctrl"); // scroll + other things + map(0x0004, 0x0004).w(this, FUNC(jackal_state::jackal_flipscreen_w)); + map(0x0010, 0x0010).portr("DSW1"); + map(0x0011, 0x0011).portr("IN1"); + map(0x0012, 0x0012).portr("IN2"); + map(0x0013, 0x0013).portr("IN0"); + map(0x0014, 0x0015).r(this, FUNC(jackal_state::jackalr_rotary_r)); + map(0x0018, 0x0018).portr("DSW2"); + map(0x0019, 0x0019).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x001c, 0x001c).w(this, FUNC(jackal_state::jackal_rambank_w)); + map(0x0020, 0x005f).rw(this, FUNC(jackal_state::jackal_zram_r), FUNC(jackal_state::jackal_zram_w)); // MAIN Z RAM,SUB Z RAM + map(0x0060, 0x1fff).ram().share("share1"); // M COMMON RAM,S COMMON RAM + map(0x2000, 0x2fff).rw(this, FUNC(jackal_state::jackal_voram_r), FUNC(jackal_state::jackal_voram_w)); // MAIN V O RAM,SUB V O RAM + map(0x3000, 0x3fff).rw(this, FUNC(jackal_state::jackal_spriteram_r), FUNC(jackal_state::jackal_spriteram_w)); // MAIN V O RAM,SUB V O RAM + map(0x4000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).rom(); +} + +void jackal_state::slave_map(address_map &map) +{ + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x4000, 0x43ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); // self test only checks 0x4000-0x423f, 007327 should actually go up to 4fff + map(0x6000, 0x605f).ram(); // SOUND RAM (Self test check 0x6000-605f, 0x7c00-0x7fff) + map(0x6060, 0x7fff).ram().share("share1"); + map(0x8000, 0xffff).rom(); +} /************************************* * diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp index 160e1bb3d22..be49a1f1d5f 100644 --- a/src/mame/drivers/jackie.cpp +++ b/src/mame/drivers/jackie.cpp @@ -388,39 +388,41 @@ READ8_MEMBER(jackie_state::expram_r) } -ADDRESS_MAP_START(jackie_state::jackie_prg_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_REGION("maincpu", 0xf000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jackie_state::jackie_io_map) - AM_RANGE(0x0520, 0x0524) AM_WRITE(unk_reg1_lo_w) - AM_RANGE(0x0d20, 0x0d24) AM_WRITE(unk_reg1_hi_w) - AM_RANGE(0x0560, 0x0564) AM_WRITE(unk_reg2_lo_w) - AM_RANGE(0x0d60, 0x0d64) AM_WRITE(unk_reg2_hi_w) - AM_RANGE(0x05a0, 0x05a4) AM_WRITE(unk_reg3_lo_w) - AM_RANGE(0x0da0, 0x0da4) AM_WRITE(unk_reg3_hi_w) - AM_RANGE(0x1000, 0x1107) AM_RAM AM_SHARE("bg_scroll2") - AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") /* DSW2 */ - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0x5090, 0x5093) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") - AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) - AM_RANGE(0x6000, 0x60ff) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll") - AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE(0x6a00, 0x6bff) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE(0x6c00, 0x6dff) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") - AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") - AM_RANGE(0x8000, 0xffff) AM_READ(expram_r) -ADDRESS_MAP_END +void jackie_state::jackie_prg_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram().region("maincpu", 0xf000); +} + +void jackie_state::jackie_io_map(address_map &map) +{ + map(0x0520, 0x0524).w(this, FUNC(jackie_state::unk_reg1_lo_w)); + map(0x0d20, 0x0d24).w(this, FUNC(jackie_state::unk_reg1_hi_w)); + map(0x0560, 0x0564).w(this, FUNC(jackie_state::unk_reg2_lo_w)); + map(0x0d60, 0x0d64).w(this, FUNC(jackie_state::unk_reg2_hi_w)); + map(0x05a0, 0x05a4).w(this, FUNC(jackie_state::unk_reg3_lo_w)); + map(0x0da0, 0x0da4).w(this, FUNC(jackie_state::unk_reg3_hi_w)); + map(0x1000, 0x1107).ram().share("bg_scroll2"); + map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x4000, 0x4000).portr("DSW1"); /* DSW1 */ + map(0x4001, 0x4001).portr("DSW2"); /* DSW2 */ + map(0x4002, 0x4002).portr("DSW3"); /* DSW3 */ + map(0x4003, 0x4003).portr("DSW4"); /* DSW4 */ + map(0x4004, 0x4004).portr("DSW5"); /* DSW5 */ + map(0x5080, 0x5083).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5090, 0x5093).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x50a0, 0x50a0).portr("BUTTONS2"); + map(0x50b0, 0x50b1).w("ymsnd", FUNC(ym2413_device::write)); + map(0x50c0, 0x50c0).r(this, FUNC(jackie_state::igs_irqack_r)).w(this, FUNC(jackie_state::igs_irqack_w)); + map(0x6000, 0x60ff).ram().w(this, FUNC(jackie_state::bg_scroll_w)).share("bg_scroll"); + map(0x6800, 0x69ff).ram().w(this, FUNC(jackie_state::reel1_ram_w)).share("reel1_ram"); + map(0x6a00, 0x6bff).ram().w(this, FUNC(jackie_state::reel2_ram_w)).share("reel2_ram"); + map(0x6c00, 0x6dff).ram().w(this, FUNC(jackie_state::reel3_ram_w)).share("reel3_ram"); + map(0x7000, 0x77ff).ram().w(this, FUNC(jackie_state::fg_tile_w)).share("fg_tile_ram"); + map(0x7800, 0x7fff).ram().w(this, FUNC(jackie_state::fg_color_w)).share("fg_color_ram"); + map(0x8000, 0xffff).r(this, FUNC(jackie_state::expram_r)); +} CUSTOM_INPUT_MEMBER(jackie_state::hopper_r) { diff --git a/src/mame/drivers/jackpool.cpp b/src/mame/drivers/jackpool.cpp index 4bd8a0f024d..0f98e1e3564 100644 --- a/src/mame/drivers/jackpool.cpp +++ b/src/mame/drivers/jackpool.cpp @@ -138,23 +138,24 @@ WRITE_LINE_MEMBER(jackpool_state::map_vreg_w) m_map_vreg = state; } -ADDRESS_MAP_START(jackpool_state::jackpool_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x120000, 0x1200ff) AM_RAM - AM_RANGE(0x340000, 0x347fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x348000, 0x34ffff) AM_RAM //<- vram banks 2 & 3? - - AM_RANGE(0x360000, 0x3603ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x380000, 0x38002f) AM_READ8(jackpool_io_r, 0x00ff) - AM_RANGE(0x380030, 0x38003f) AM_DEVWRITE8("latch1", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x380040, 0x38004f) AM_DEVWRITE8("latch2", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x380050, 0x38005f) AM_DEVWRITE8("latch3", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x380060, 0x380061) AM_WRITENOP // another single-bit output? - - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("uart", ns16550_device, ins8250_r, ins8250_w, 0x00ff) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END +void jackpool_state::jackpool_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x120000, 0x1200ff).ram(); + map(0x340000, 0x347fff).ram().share("vram"); + map(0x348000, 0x34ffff).ram(); //<- vram banks 2 & 3? + + map(0x360000, 0x3603ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x380000, 0x38002f).r(this, FUNC(jackpool_state::jackpool_io_r)).umask16(0x00ff); + map(0x380030, 0x38003f).w("latch1", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x380040, 0x38004f).w("latch2", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x380050, 0x38005f).w("latch3", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x380060, 0x380061).nopw(); // another single-bit output? + + map(0x800000, 0x80000f).rw("uart", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask16(0x00ff); + map(0xa00001, 0xa00001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( jackpool ) diff --git a/src/mame/drivers/jade.cpp b/src/mame/drivers/jade.cpp index db6fe90f663..fa0fe429e61 100644 --- a/src/mame/drivers/jade.cpp +++ b/src/mame/drivers/jade.cpp @@ -41,19 +41,21 @@ private: }; -ADDRESS_MAP_START(jade_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jade_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) -ADDRESS_MAP_END +void jade_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom().region("roms", 0); + map(0x0800, 0xffff).ram(); +} + +void jade_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x28, 0x2b).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x30, 0x33).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x40, 0x43).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /* Input ports */ static INPUT_PORTS_START( jade ) diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp index 1bdbe2256cd..f5c80977254 100644 --- a/src/mame/drivers/jaguar.cpp +++ b/src/mame/drivers/jaguar.cpp @@ -1105,25 +1105,26 @@ WRITE16_MEMBER(jaguar_state::gpu_clut_w16){ if (!(offset&1)) { gpu_clut_w(space, READ16_MEMBER(jaguar_state::gpu_ram_r16){ if (!(offset&1)) { return gpu_ram_r(space, offset>>1, mem_mask<<16) >> 16; } else { return gpu_ram_r(space, offset>>1, mem_mask); } } WRITE16_MEMBER(jaguar_state::gpu_ram_w16){ if (!(offset&1)) { gpu_ram_w(space, offset>>1, data << 16, mem_mask << 16); } else { gpu_ram_w(space, offset>>1, data, mem_mask); } } -ADDRESS_MAP_START(jaguar_state::jaguar_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_READWRITE(shared_ram_r16, shared_ram_w16 ); - AM_RANGE(0x800000, 0xdfffff) AM_READWRITE(cart_base_r16, cart_base_w16 ) - AM_RANGE(0xe00000, 0xe1ffff) AM_READWRITE(rom_base_r16, rom_base_w16 ) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE(tom_regs_r, tom_regs_w) // might be reversed endian of the others.. - AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_READWRITE(gpu_clut_r16, gpu_clut_w16 ) - AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r16, gpuctrl_w16) - AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r16, blitter_w16) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_READWRITE(gpu_ram_r16, gpu_ram_w16 ) - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE(jerry_regs_r, jerry_regs_w) // might be reversed endian of the others.. - AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r16, joystick_w16) - AM_RANGE(0xf14800, 0xf14803) AM_READWRITE(eeprom_clk16,eeprom_w16) // GPI00 - AM_RANGE(0xf15000, 0xf15003) AM_READ(eeprom_cs16) // GPI01 - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r16, dspctrl_w16) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r16, serial_w16) - AM_RANGE(0xf1b000, 0xf1cfff) AM_READWRITE(dsp_ram_r16, dsp_ram_w16) - AM_RANGE(0xf1d000, 0xf1dfff) AM_READWRITE(wave_rom_r16, wave_rom_w16 ) -ADDRESS_MAP_END +void jaguar_state::jaguar_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).mirror(0x200000).rw(this, FUNC(jaguar_state::shared_ram_r16), FUNC(jaguar_state::shared_ram_w16)); + map(0x800000, 0xdfffff).rw(this, FUNC(jaguar_state::cart_base_r16), FUNC(jaguar_state::cart_base_w16)); + map(0xe00000, 0xe1ffff).rw(this, FUNC(jaguar_state::rom_base_r16), FUNC(jaguar_state::rom_base_w16)); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); // might be reversed endian of the others.. + map(0xf00400, 0xf005ff).mirror(0x000200).rw(this, FUNC(jaguar_state::gpu_clut_r16), FUNC(jaguar_state::gpu_clut_w16)); + map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r16), FUNC(jaguar_state::gpuctrl_w16)); + map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r16), FUNC(jaguar_state::blitter_w16)); + map(0xf03000, 0xf03fff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpu_ram_r16), FUNC(jaguar_state::gpu_ram_w16)); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); // might be reversed endian of the others.. + map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r16), FUNC(jaguar_state::joystick_w16)); + map(0xf14800, 0xf14803).rw(this, FUNC(jaguar_state::eeprom_clk16), FUNC(jaguar_state::eeprom_w16)); // GPI00 + map(0xf15000, 0xf15003).r(this, FUNC(jaguar_state::eeprom_cs16)); // GPI01 + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r16), FUNC(jaguar_state::dspctrl_w16)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r16), FUNC(jaguar_state::serial_w16)); + map(0xf1b000, 0xf1cfff).rw(this, FUNC(jaguar_state::dsp_ram_r16), FUNC(jaguar_state::dsp_ram_w16)); + map(0xf1d000, 0xf1dfff).rw(this, FUNC(jaguar_state::wave_rom_r16), FUNC(jaguar_state::wave_rom_w16)); +} /* CD-Rom emulation, chip codename Butch (the HW engineer was definitely obsessed with T&J somehow ...) @@ -1293,26 +1294,27 @@ WRITE32_MEMBER(jaguar_state::butch_regs_w) } } -ADDRESS_MAP_START(jaguar_state::jaguarcd_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_READWRITE(shared_ram_r16, shared_ram_w16 ); - AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("cdbios", 0) - AM_RANGE(0xdfff00, 0xdfff3f) AM_READWRITE(butch_regs_r16,butch_regs_w16 ) - AM_RANGE(0xe00000, 0xe1ffff) AM_READWRITE(rom_base_r16, rom_base_w16 ) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE(tom_regs_r, tom_regs_w) // might be reversed endian of the others.. - AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_READWRITE(gpu_clut_r16, gpu_clut_w16 ) - AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r16, gpuctrl_w16) - AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r16, blitter_w16) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_READWRITE(gpu_ram_r16, gpu_ram_w16 ) - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE(jerry_regs_r, jerry_regs_w) // might be reversed endian of the others.. - AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r16, joystick_w16) - AM_RANGE(0xf14800, 0xf14803) AM_READWRITE(eeprom_clk16,eeprom_w16) // GPI00 - AM_RANGE(0xf15000, 0xf15003) AM_READ(eeprom_cs16) // GPI01 - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r16, dspctrl_w16) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r16, serial_w16) - AM_RANGE(0xf1b000, 0xf1cfff) AM_READWRITE(dsp_ram_r16, dsp_ram_w16) - AM_RANGE(0xf1d000, 0xf1dfff) AM_READWRITE(wave_rom_r16, wave_rom_w16 ) -ADDRESS_MAP_END +void jaguar_state::jaguarcd_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).mirror(0x200000).rw(this, FUNC(jaguar_state::shared_ram_r16), FUNC(jaguar_state::shared_ram_w16)); + map(0x800000, 0x83ffff).rom().region("cdbios", 0); + map(0xdfff00, 0xdfff3f).rw(this, FUNC(jaguar_state::butch_regs_r16), FUNC(jaguar_state::butch_regs_w16)); + map(0xe00000, 0xe1ffff).rw(this, FUNC(jaguar_state::rom_base_r16), FUNC(jaguar_state::rom_base_w16)); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); // might be reversed endian of the others.. + map(0xf00400, 0xf005ff).mirror(0x000200).rw(this, FUNC(jaguar_state::gpu_clut_r16), FUNC(jaguar_state::gpu_clut_w16)); + map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r16), FUNC(jaguar_state::gpuctrl_w16)); + map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r16), FUNC(jaguar_state::blitter_w16)); + map(0xf03000, 0xf03fff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpu_ram_r16), FUNC(jaguar_state::gpu_ram_w16)); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); // might be reversed endian of the others.. + map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r16), FUNC(jaguar_state::joystick_w16)); + map(0xf14800, 0xf14803).rw(this, FUNC(jaguar_state::eeprom_clk16), FUNC(jaguar_state::eeprom_w16)); // GPI00 + map(0xf15000, 0xf15003).r(this, FUNC(jaguar_state::eeprom_cs16)); // GPI01 + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r16), FUNC(jaguar_state::dspctrl_w16)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r16), FUNC(jaguar_state::serial_w16)); + map(0xf1b000, 0xf1cfff).rw(this, FUNC(jaguar_state::dsp_ram_r16), FUNC(jaguar_state::dsp_ram_w16)); + map(0xf1d000, 0xf1dfff).rw(this, FUNC(jaguar_state::wave_rom_r16), FUNC(jaguar_state::wave_rom_w16)); +} /************************************* * @@ -1320,63 +1322,65 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jaguar_state::r3000_map) - AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x04800000, 0x04bfffff) AM_ROMBANK("maingfxbank") - AM_RANGE(0x04c00000, 0x04dfffff) AM_ROMBANK("mainsndbank") - AM_RANGE(0x04e00030, 0x04e0003f) AM_DEVREADWRITE("ide", vt83c461_device, read_config, write_config) - AM_RANGE(0x04e001f0, 0x04e001f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs0, write_cs0) - AM_RANGE(0x04e003f0, 0x04e003f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs1, write_cs1) - AM_RANGE(0x04f00000, 0x04f003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0x04f00400, 0x04f007ff) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0x04f02100, 0x04f021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0x04f02200, 0x04f022ff) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0x04f03000, 0x04f03fff) AM_MIRROR(0x00008000) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0x04f10000, 0x04f103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0x04f16000, 0x04f1600b) AM_READ(cojag_gun_input_r) // GPI02 - AM_RANGE(0x04f17000, 0x04f17003) AM_READ_PORT("SYSTEM") // GPI03 - AM_RANGE(0x04f17800, 0x04f17803) AM_WRITE(latch_w) // GPI04 - AM_RANGE(0x04f17c00, 0x04f17c03) AM_READ_PORT("P1_P2") // GPI05 - AM_RANGE(0x04f1a100, 0x04f1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0x04f1a140, 0x04f1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0x04f1b000, 0x04f1cfff) AM_RAM AM_SHARE("dspram") - - AM_RANGE(0x06000000, 0x06000003) AM_READWRITE(misc_control_r, misc_control_w) - AM_RANGE(0x10000000, 0x1007ffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x12000000, 0x120fffff) AM_RAM AM_SHARE("mainram2") // tested in self-test only? - AM_RANGE(0x14000004, 0x14000007) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w) - AM_RANGE(0x16000000, 0x16000003) AM_WRITE(eeprom_enable_w) - AM_RANGE(0x18000000, 0x18001fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_SHARE("nvram") - AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rom") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(jaguar_state::m68020_map) - AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rom") - AM_RANGE(0xa00000, 0xa1ffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0xa20000, 0xa21fff) AM_READWRITE(eeprom_data_r, eeprom_data_w) AM_SHARE("nvram") - AM_RANGE(0xa30000, 0xa30003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w) - AM_RANGE(0xa40000, 0xa40003) AM_WRITE(eeprom_enable_w) - AM_RANGE(0xb70000, 0xb70003) AM_READWRITE(misc_control_r, misc_control_w) - AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("mainsndbank") - AM_RANGE(0xe00030, 0xe0003f) AM_DEVREADWRITE("ide", vt83c461_device, read_config, write_config) - AM_RANGE(0xe001f0, 0xe001f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs0, write_cs0) - AM_RANGE(0xe003f0, 0xe003f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs1, write_cs1) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0xf00400, 0xf007ff) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0xf02100, 0xf021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0xf02200, 0xf022ff) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0xf16000, 0xf1600b) AM_READ(cojag_gun_input_r) // GPI02 - AM_RANGE(0xf17000, 0xf17003) AM_READ_PORT("SYSTEM") // GPI03 +void jaguar_state::r3000_map(address_map &map) +{ + map(0x04000000, 0x047fffff).ram().share("sharedram"); + map(0x04800000, 0x04bfffff).bankr("maingfxbank"); + map(0x04c00000, 0x04dfffff).bankr("mainsndbank"); + map(0x04e00030, 0x04e0003f).rw(m_ide, FUNC(vt83c461_device::read_config), FUNC(vt83c461_device::write_config)); + map(0x04e001f0, 0x04e001f7).rw(m_ide, FUNC(vt83c461_device::read_cs0), FUNC(vt83c461_device::write_cs0)); + map(0x04e003f0, 0x04e003f7).rw(m_ide, FUNC(vt83c461_device::read_cs1), FUNC(vt83c461_device::write_cs1)); + map(0x04f00000, 0x04f003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0x04f00400, 0x04f007ff).ram().share("gpuclut"); + map(0x04f02100, 0x04f021ff).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0x04f02200, 0x04f022ff).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0x04f03000, 0x04f03fff).mirror(0x00008000).ram().share("gpuram"); + map(0x04f10000, 0x04f103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0x04f16000, 0x04f1600b).r(this, FUNC(jaguar_state::cojag_gun_input_r)); // GPI02 + map(0x04f17000, 0x04f17003).portr("SYSTEM"); // GPI03 + map(0x04f17800, 0x04f17803).w(this, FUNC(jaguar_state::latch_w)); // GPI04 + map(0x04f17c00, 0x04f17c03).portr("P1_P2"); // GPI05 + map(0x04f1a100, 0x04f1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0x04f1a140, 0x04f1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0x04f1b000, 0x04f1cfff).ram().share("dspram"); + + map(0x06000000, 0x06000003).rw(this, FUNC(jaguar_state::misc_control_r), FUNC(jaguar_state::misc_control_w)); + map(0x10000000, 0x1007ffff).ram().share("mainram"); + map(0x12000000, 0x120fffff).ram().share("mainram2"); // tested in self-test only? + map(0x14000004, 0x14000007).w("watchdog", FUNC(watchdog_timer_device::reset32_w)); + map(0x16000000, 0x16000003).w(this, FUNC(jaguar_state::eeprom_enable_w)); + map(0x18000000, 0x18001fff).rw(this, FUNC(jaguar_state::eeprom_data_r), FUNC(jaguar_state::eeprom_data_w)).share("nvram"); + map(0x1fc00000, 0x1fdfffff).rom().region("maincpu", 0).share("rom"); +} + + +void jaguar_state::m68020_map(address_map &map) +{ + map(0x000000, 0x7fffff).ram().share("sharedram"); + map(0x800000, 0x9fffff).rom().region("maincpu", 0).share("rom"); + map(0xa00000, 0xa1ffff).ram().share("mainram"); + map(0xa20000, 0xa21fff).rw(this, FUNC(jaguar_state::eeprom_data_r), FUNC(jaguar_state::eeprom_data_w)).share("nvram"); + map(0xa30000, 0xa30003).w("watchdog", FUNC(watchdog_timer_device::reset32_w)); + map(0xa40000, 0xa40003).w(this, FUNC(jaguar_state::eeprom_enable_w)); + map(0xb70000, 0xb70003).rw(this, FUNC(jaguar_state::misc_control_r), FUNC(jaguar_state::misc_control_w)); + map(0xc00000, 0xdfffff).bankr("mainsndbank"); + map(0xe00030, 0xe0003f).rw(m_ide, FUNC(vt83c461_device::read_config), FUNC(vt83c461_device::write_config)); + map(0xe001f0, 0xe001f7).rw(m_ide, FUNC(vt83c461_device::read_cs0), FUNC(vt83c461_device::write_cs0)); + map(0xe003f0, 0xe003f7).rw(m_ide, FUNC(vt83c461_device::read_cs1), FUNC(vt83c461_device::write_cs1)); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0xf00400, 0xf007ff).ram().share("gpuclut"); + map(0xf02100, 0xf021ff).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0xf02200, 0xf022ff).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0xf16000, 0xf1600b).r(this, FUNC(jaguar_state::cojag_gun_input_r)); // GPI02 + map(0xf17000, 0xf17003).portr("SYSTEM"); // GPI03 // AM_RANGE(0xf17800, 0xf17803) AM_WRITE(latch_w) // GPI04 - AM_RANGE(0xf17c00, 0xf17c03) AM_READ_PORT("P1_P2") // GPI05 - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram") -ADDRESS_MAP_END + map(0xf17c00, 0xf17c03).portr("P1_P2"); // GPI05 + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0xf1b000, 0xf1cfff).ram().share("dspram"); +} @@ -1386,20 +1390,21 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jaguar_state::gpu_map) - AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x800000, 0xbfffff) AM_ROMBANK("gpugfxbank") - AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("dspsndbank") - AM_RANGE(0xe00030, 0xe0003f) AM_DEVREADWRITE("ide", vt83c461_device, read_config, write_config) - AM_RANGE(0xe001f0, 0xe001f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs0, write_cs0) - AM_RANGE(0xe003f0, 0xe003f7) AM_DEVREADWRITE("ide", vt83c461_device, read_cs1, write_cs1) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0xf00400, 0xf007ff) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0xf02100, 0xf021ff) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0xf02200, 0xf022ff) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0xf03000, 0xf03fff) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) -ADDRESS_MAP_END +void jaguar_state::gpu_map(address_map &map) +{ + map(0x000000, 0x7fffff).ram().share("sharedram"); + map(0x800000, 0xbfffff).bankr("gpugfxbank"); + map(0xc00000, 0xdfffff).bankr("dspsndbank"); + map(0xe00030, 0xe0003f).rw(m_ide, FUNC(vt83c461_device::read_config), FUNC(vt83c461_device::write_config)); + map(0xe001f0, 0xe001f7).rw(m_ide, FUNC(vt83c461_device::read_cs0), FUNC(vt83c461_device::write_cs0)); + map(0xe003f0, 0xe003f7).rw(m_ide, FUNC(vt83c461_device::read_cs1), FUNC(vt83c461_device::write_cs1)); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0xf00400, 0xf007ff).ram().share("gpuclut"); + map(0xf02100, 0xf021ff).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0xf02200, 0xf022ff).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0xf03000, 0xf03fff).ram().share("gpuram"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); +} @@ -1409,92 +1414,97 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jaguar_state::dsp_map) - AM_RANGE(0x000000, 0x7fffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x800000, 0xbfffff) AM_ROMBANK("gpugfxbank") - AM_RANGE(0xc00000, 0xdfffff) AM_ROMBANK("dspsndbank") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram") - AM_RANGE(0xf1d000, 0xf1dfff) AM_READ(wave_rom_r) AM_SHARE("waverom") AM_REGION("waverom", 0) -ADDRESS_MAP_END +void jaguar_state::dsp_map(address_map &map) +{ + map(0x000000, 0x7fffff).ram().share("sharedram"); + map(0x800000, 0xbfffff).bankr("gpugfxbank"); + map(0xc00000, 0xdfffff).bankr("dspsndbank"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0xf1b000, 0xf1cfff).ram().share("dspram"); + map(0xf1d000, 0xf1dfff).r(this, FUNC(jaguar_state::wave_rom_r)).share("waverom").region("waverom", 0); +} /* ToDo, these maps SHOULD be merged with the ones above */ -ADDRESS_MAP_START(jaguar_state::jag_gpu_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_MIRROR(0x200000) AM_SHARE("sharedram") AM_REGION("maincpu", 0) - AM_RANGE(0x800000, 0xdfffff) AM_ROM AM_SHARE("cart") AM_REGION("maincpu", 0x800000) - AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w) - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram") - AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_SHARE("waverom") AM_REGION("waverom", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jaguar_state::jag_dsp_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_RAM AM_SHARE("sharedram") AM_REGION("maincpu", 0) - AM_RANGE(0x800000, 0xdfffff) AM_ROM AM_SHARE("cart") AM_REGION("maincpu", 0x800000) - AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w) - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram") - AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_REGION("waverom", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jaguar_state::jagcd_gpu_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_MIRROR(0x200000) AM_SHARE("sharedram") AM_REGION("maincpu", 0) - AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("cdbios", 0) - AM_RANGE(0xdfff00, 0xdfff3f) AM_READWRITE(butch_regs_r,butch_regs_w ) - AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w) - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram") - AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_SHARE("waverom") AM_REGION("waverom", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jaguar_state::jagcd_dsp_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x200000) AM_RAM AM_SHARE("sharedram") AM_REGION("maincpu", 0) - AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("cdbios", 0) - AM_RANGE(0xdfff00, 0xdfff3f) AM_READWRITE(butch_regs_r,butch_regs_w ) - AM_RANGE(0xe00000, 0xe1ffff) AM_ROM AM_SHARE("rom") AM_REGION("maincpu", 0xe00000) - AM_RANGE(0xf00000, 0xf003ff) AM_READWRITE16(tom_regs_r, tom_regs_w, 0xffffffff) - AM_RANGE(0xf00400, 0xf005ff) AM_MIRROR(0x000200) AM_RAM AM_SHARE("gpuclut") - AM_RANGE(0xf02100, 0xf021ff) AM_MIRROR(0x008000) AM_READWRITE(gpuctrl_r, gpuctrl_w) - AM_RANGE(0xf02200, 0xf022ff) AM_MIRROR(0x008000) AM_READWRITE(blitter_r, blitter_w) - AM_RANGE(0xf03000, 0xf03fff) AM_MIRROR(0x008000) AM_RAM AM_SHARE("gpuram") - AM_RANGE(0xf10000, 0xf103ff) AM_READWRITE16(jerry_regs_r, jerry_regs_w, 0xffffffff) - AM_RANGE(0xf14000, 0xf14003) AM_READWRITE(joystick_r, joystick_w) - AM_RANGE(0xf1a100, 0xf1a13f) AM_READWRITE(dspctrl_r, dspctrl_w) - AM_RANGE(0xf1a140, 0xf1a17f) AM_READWRITE(serial_r, serial_w) - AM_RANGE(0xf1b000, 0xf1cfff) AM_RAM AM_SHARE("dspram") - AM_RANGE(0xf1d000, 0xf1dfff) AM_ROM AM_REGION("waverom", 0) -ADDRESS_MAP_END +void jaguar_state::jag_gpu_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).ram().mirror(0x200000).share("sharedram").region("maincpu", 0); + map(0x800000, 0xdfffff).rom().share("cart").region("maincpu", 0x800000); + map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut"); + map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w)); + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0xf1b000, 0xf1cfff).ram().share("dspram"); + map(0xf1d000, 0xf1dfff).rom().share("waverom").region("waverom", 0); +} + +void jaguar_state::jag_dsp_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).mirror(0x200000).ram().share("sharedram").region("maincpu", 0); + map(0x800000, 0xdfffff).rom().share("cart").region("maincpu", 0x800000); + map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut"); + map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w)); + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0xf1b000, 0xf1cfff).ram().share("dspram"); + map(0xf1d000, 0xf1dfff).rom().region("waverom", 0); +} + +void jaguar_state::jagcd_gpu_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).ram().mirror(0x200000).share("sharedram").region("maincpu", 0); + map(0x800000, 0x83ffff).rom().region("cdbios", 0); + map(0xdfff00, 0xdfff3f).rw(this, FUNC(jaguar_state::butch_regs_r), FUNC(jaguar_state::butch_regs_w)); + map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut"); + map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w)); + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0xf1b000, 0xf1cfff).ram().share("dspram"); + map(0xf1d000, 0xf1dfff).rom().share("waverom").region("waverom", 0); +} + +void jaguar_state::jagcd_dsp_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).mirror(0x200000).ram().share("sharedram").region("maincpu", 0); + map(0x800000, 0x83ffff).rom().region("cdbios", 0); + map(0xdfff00, 0xdfff3f).rw(this, FUNC(jaguar_state::butch_regs_r), FUNC(jaguar_state::butch_regs_w)); + map(0xe00000, 0xe1ffff).rom().share("rom").region("maincpu", 0xe00000); + map(0xf00000, 0xf003ff).rw(this, FUNC(jaguar_state::tom_regs_r), FUNC(jaguar_state::tom_regs_w)); + map(0xf00400, 0xf005ff).mirror(0x000200).ram().share("gpuclut"); + map(0xf02100, 0xf021ff).mirror(0x008000).rw(this, FUNC(jaguar_state::gpuctrl_r), FUNC(jaguar_state::gpuctrl_w)); + map(0xf02200, 0xf022ff).mirror(0x008000).rw(this, FUNC(jaguar_state::blitter_r), FUNC(jaguar_state::blitter_w)); + map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram"); + map(0xf10000, 0xf103ff).rw(this, FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); + map(0xf14000, 0xf14003).rw(this, FUNC(jaguar_state::joystick_r), FUNC(jaguar_state::joystick_w)); + map(0xf1a100, 0xf1a13f).rw(this, FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); + map(0xf1a140, 0xf1a17f).rw(this, FUNC(jaguar_state::serial_r), FUNC(jaguar_state::serial_w)); + map(0xf1b000, 0xf1cfff).ram().share("dspram"); + map(0xf1d000, 0xf1dfff).rom().region("waverom", 0); +} /************************************* * diff --git a/src/mame/drivers/jailbrek.cpp b/src/mame/drivers/jailbrek.cpp index b486b5185f2..52154e471ca 100644 --- a/src/mame/drivers/jailbrek.cpp +++ b/src/mame/drivers/jailbrek.cpp @@ -136,35 +136,37 @@ WRITE8_MEMBER(jailbrek_state::speech_w) m_vlm->rst((data >> 2) & 1); } -ADDRESS_MAP_START(jailbrek_state::jailbrek_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x10c0, 0x14ff) AM_RAM /* ??? */ - AM_RANGE(0x1500, 0x1fff) AM_RAM /* work ram */ - AM_RANGE(0x2000, 0x203f) AM_RAM AM_SHARE("scroll_x") - AM_RANGE(0x2040, 0x2040) AM_WRITENOP /* ??? */ - AM_RANGE(0x2041, 0x2041) AM_WRITENOP /* ??? */ - AM_RANGE(0x2042, 0x2042) AM_RAM AM_SHARE("scroll_dir") /* bit 2 = scroll direction */ - AM_RANGE(0x2043, 0x2043) AM_WRITENOP /* ??? */ - AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w) /* irq, nmi enable, screen flip */ - AM_RANGE(0x3000, 0x3000) AM_WRITE(coin_w) - AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2") AM_DEVWRITE("snsnd", sn76489a_device, write) - AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3") AM_WRITENOP /* mirror of the previous? */ - AM_RANGE(0x3300, 0x3300) AM_READ_PORT("SYSTEM") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3301, 0x3301) AM_READ_PORT("P1") - AM_RANGE(0x3302, 0x3302) AM_READ_PORT("P2") - AM_RANGE(0x3303, 0x3303) AM_READ_PORT("DSW1") - AM_RANGE(0x4000, 0x4000) AM_WRITE(speech_w) /* speech pins */ - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */ - AM_RANGE(0x6000, 0x6000) AM_READ(speech_r) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jailbrek_state::vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void jailbrek_state::jailbrek_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(jailbrek_state::colorram_w)).share("colorram"); + map(0x0800, 0x0fff).ram().w(this, FUNC(jailbrek_state::videoram_w)).share("videoram"); + map(0x1000, 0x10bf).ram().share("spriteram"); + map(0x10c0, 0x14ff).ram(); /* ??? */ + map(0x1500, 0x1fff).ram(); /* work ram */ + map(0x2000, 0x203f).ram().share("scroll_x"); + map(0x2040, 0x2040).nopw(); /* ??? */ + map(0x2041, 0x2041).nopw(); /* ??? */ + map(0x2042, 0x2042).ram().share("scroll_dir"); /* bit 2 = scroll direction */ + map(0x2043, 0x2043).nopw(); /* ??? */ + map(0x2044, 0x2044).w(this, FUNC(jailbrek_state::ctrl_w)); /* irq, nmi enable, screen flip */ + map(0x3000, 0x3000).w(this, FUNC(jailbrek_state::coin_w)); + map(0x3100, 0x3100).portr("DSW2").w("snsnd", FUNC(sn76489a_device::write)); + map(0x3200, 0x3200).portr("DSW3").nopw(); /* mirror of the previous? */ + map(0x3300, 0x3300).portr("SYSTEM").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3301, 0x3301).portr("P1"); + map(0x3302, 0x3302).portr("P2"); + map(0x3303, 0x3303).portr("DSW1"); + map(0x4000, 0x4000).w(this, FUNC(jailbrek_state::speech_w)); /* speech pins */ + map(0x5000, 0x5000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* speech data */ + map(0x6000, 0x6000).r(this, FUNC(jailbrek_state::speech_r)); + map(0x8000, 0xffff).rom(); +} + +void jailbrek_state::vlm_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x1fff).rom(); +} diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp index 95be516b5c9..c4273e0bc02 100644 --- a/src/mame/drivers/jalmah.cpp +++ b/src/mame/drivers/jalmah.cpp @@ -1017,58 +1017,60 @@ WRITE16_MEMBER(jalmah_state::jalmah_flip_screen_w) // popmessage("%04x",data); } -ADDRESS_MAP_START(jalmah_state::jalmah) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW") +void jalmah_state::jalmah(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("SYSTEM"); + map(0x080002, 0x080003).portr("DSW"); // 0x080004, 0x080005 MCU read,different for each game - AM_RANGE(0x080010, 0x080011) AM_WRITE(jalmah_flip_screen_w) + map(0x080010, 0x080011).w(this, FUNC(jalmah_state::jalmah_flip_screen_w)); // 0x080012, 0x080013 MCU write related,same for each game // 0x080014, 0x080015 MCU write related,same for each game -/**/AM_RANGE(0x080016, 0x080017) AM_RAM_WRITE(jalmah_tilebank_w) - AM_RANGE(0x080018, 0x080019) AM_WRITE(jalmah_okibank_w) - AM_RANGE(0x08001a, 0x08001b) AM_WRITE(jalmah_okirom_w) -/**/AM_RANGE(0x080020, 0x08003f) AM_RAM_WRITE(jalmah_scroll_w) - AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) +/**/map(0x080016, 0x080017).ram().w(this, FUNC(jalmah_state::jalmah_tilebank_w)); + map(0x080018, 0x080019).w(this, FUNC(jalmah_state::jalmah_okibank_w)); + map(0x08001a, 0x08001b).w(this, FUNC(jalmah_state::jalmah_okirom_w)); +/**/map(0x080020, 0x08003f).ram().w(this, FUNC(jalmah_state::jalmah_scroll_w)); + map(0x080041, 0x080041).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // 0x084000, 0x084001 ? - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram") - AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram") - AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram") - AM_RANGE(0x09c000, 0x09ffff) AM_RAM_WRITE(sc3_vram_w) AM_SHARE("sc3_vram") - AM_RANGE(0x0f0000, 0x0f0fff) AM_RAM AM_SHARE("jshared_ram")/*shared with MCU*/ - AM_RANGE(0x0f1000, 0x0fffff) AM_RAM /*Work Ram*/ - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("jmcu_code")/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/ -ADDRESS_MAP_END - -ADDRESS_MAP_START(jalmah_state::urashima) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW") + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x090000, 0x093fff).ram().w(this, FUNC(jalmah_state::sc0_vram_w)).share("sc0_vram"); + map(0x094000, 0x097fff).ram().w(this, FUNC(jalmah_state::sc1_vram_w)).share("sc1_vram"); + map(0x098000, 0x09bfff).ram().w(this, FUNC(jalmah_state::sc2_vram_w)).share("sc2_vram"); + map(0x09c000, 0x09ffff).ram().w(this, FUNC(jalmah_state::sc3_vram_w)).share("sc3_vram"); + map(0x0f0000, 0x0f0fff).ram().share("jshared_ram");/*shared with MCU*/ + map(0x0f1000, 0x0fffff).ram(); /*Work Ram*/ + map(0x100000, 0x10ffff).ram().share("jmcu_code");/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/ +} + +void jalmah_state::urashima(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("SYSTEM"); + map(0x080002, 0x080003).portr("DSW"); // 0x080004, 0x080005 MCU read,different for each game - AM_RANGE(0x080010, 0x080011) AM_WRITE(jalmah_flip_screen_w) + map(0x080010, 0x080011).w(this, FUNC(jalmah_state::jalmah_flip_screen_w)); // 0x080012, 0x080013 MCU write related,same for each game // 0x080014, 0x080015 MCU write related,same for each game -/**/AM_RANGE(0x080016, 0x080017) AM_RAM_WRITE(urashima_dma_w) - AM_RANGE(0x080018, 0x080019) AM_WRITE(jalmah_okibank_w) - AM_RANGE(0x08001a, 0x08001b) AM_WRITE(jalmah_okirom_w) -/**/AM_RANGE(0x08001c, 0x08001d) AM_RAM_WRITE(urashima_bank_w) - AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) +/**/map(0x080016, 0x080017).ram().w(this, FUNC(jalmah_state::urashima_dma_w)); + map(0x080018, 0x080019).w(this, FUNC(jalmah_state::jalmah_okibank_w)); + map(0x08001a, 0x08001b).w(this, FUNC(jalmah_state::jalmah_okirom_w)); +/**/map(0x08001c, 0x08001d).ram().w(this, FUNC(jalmah_state::urashima_bank_w)); + map(0x080041, 0x080041).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // 0x084000, 0x084001 ? - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(urashima_sc0_vram_w) AM_SHARE("sc0_vram") - AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(urashima_sc0_vram_w) - AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(urashima_sc0_vram_w) + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x090000, 0x093fff).ram().w(this, FUNC(jalmah_state::urashima_sc0_vram_w)).share("sc0_vram"); + map(0x094000, 0x097fff).ram().w(this, FUNC(jalmah_state::urashima_sc0_vram_w)); + map(0x098000, 0x09bfff).ram().w(this, FUNC(jalmah_state::urashima_sc0_vram_w)); // AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(urashima_sc1_vram_w) AM_SHARE("sc1_vram")/*unused*/ // AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(urashima_sc2_vram_w) AM_SHARE("sc2_vram")/*unused*/ /*$9c000-$9cfff Video Registers*/ -/**/AM_RANGE(0x09c000, 0x09dfff) AM_WRITE(urashima_vregs_w) +/**/map(0x09c000, 0x09dfff).w(this, FUNC(jalmah_state::urashima_vregs_w)); /**///AM_RANGE(0x09c480, 0x09c49f) AM_RAM_WRITE(urashima_sc2vregs_w) - AM_RANGE(0x09e000, 0x0a1fff) AM_RAM_WRITE(urashima_sc3_vram_w) AM_SHARE("sc3_vram") - AM_RANGE(0x0f0000, 0x0f0fff) AM_RAM AM_SHARE("jshared_ram")/*shared with MCU*/ - AM_RANGE(0x0f1000, 0x0fffff) AM_RAM /*Work Ram*/ - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("jmcu_code")/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/ -ADDRESS_MAP_END + map(0x09e000, 0x0a1fff).ram().w(this, FUNC(jalmah_state::urashima_sc3_vram_w)).share("sc3_vram"); + map(0x0f0000, 0x0f0fff).ram().share("jshared_ram");/*shared with MCU*/ + map(0x0f1000, 0x0fffff).ram(); /*Work Ram*/ + map(0x100000, 0x10ffff).ram().share("jmcu_code");/*extra RAM for MCU code prg (NOT ON REAL HW!!!)*/ +} static INPUT_PORTS_START( common ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp index 6b674b8a08e..3e859eb9a73 100644 --- a/src/mame/drivers/jangou.cpp +++ b/src/mame/drivers/jangou.cpp @@ -338,34 +338,38 @@ WRITE8_MEMBER(jangou_state::slave_com_w) * *************************************/ -ADDRESS_MAP_START(jangou_state::cpu0_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jangou_state::cpu0_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") AM_WRITE(output_w) //dsw + blitter busy flag - AM_RANGE(0x11,0x11) AM_WRITE(mux_w) - AM_RANGE(0x12,0x17) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs) - AM_RANGE(0x20,0x2f) AM_DEVWRITE("blitter",jangou_blitter_device, vregs_w) - AM_RANGE(0x30,0x30) AM_WRITENOP //? polls 0x03 continuously - AM_RANGE(0x31,0x31) AM_WRITE(sound_latch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(jangou_state::cpu1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(jangou_state::cpu1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ(sound_latch_r) - AM_RANGE(0x01,0x01) AM_WRITE(cvsd_w) - AM_RANGE(0x02,0x02) AM_WRITENOP // Echoes sound command - acknowledge? -ADDRESS_MAP_END +void jangou_state::cpu0_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc7ff).ram(); +} + +void jangou_state::cpu0_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW").w(this, FUNC(jangou_state::output_w)); //dsw + blitter busy flag + map(0x11, 0x11).w(this, FUNC(jangou_state::mux_w)); + map(0x12, 0x17).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs)); + map(0x20, 0x2f).w(m_blitter, FUNC(jangou_blitter_device::vregs_w)); + map(0x30, 0x30).nopw(); //? polls 0x03 continuously + map(0x31, 0x31).w(this, FUNC(jangou_state::sound_latch_w)); +} + + +void jangou_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().nopw(); +} + +void jangou_state::cpu1_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(jangou_state::sound_latch_r)); + map(0x01, 0x01).w(this, FUNC(jangou_state::cvsd_w)); + map(0x02, 0x02).nopw(); // Echoes sound command - acknowledge? +} /************************************* @@ -374,32 +378,36 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jangou_state::jngolady_cpu0_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe000, 0xe000) AM_READWRITE(master_com_r,master_com_w) -ADDRESS_MAP_END +void jangou_state::jngolady_cpu0_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc7ff).ram().share("share1"); + map(0xe000, 0xe000).rw(this, FUNC(jangou_state::master_com_r), FUNC(jangou_state::master_com_w)); +} -ADDRESS_MAP_START(jangou_state::jngolady_cpu1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END +void jangou_state::jngolady_cpu1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().nopw(); +} -ADDRESS_MAP_START(jangou_state::jngolady_cpu1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ(sound_latch_r) - AM_RANGE(0x01,0x01) AM_WRITE(adpcm_w) - AM_RANGE(0x02,0x02) AM_WRITENOP -ADDRESS_MAP_END +void jangou_state::jngolady_cpu1_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(jangou_state::sound_latch_r)); + map(0x01, 0x01).w(this, FUNC(jangou_state::adpcm_w)); + map(0x02, 0x02).nopw(); +} -ADDRESS_MAP_START(jangou_state::nsc_map) - AM_RANGE(0x0000, 0x007f) AM_RAM //internal ram for irq etc. - AM_RANGE(0x8000, 0x8000) AM_WRITENOP //write-only,irq related? - AM_RANGE(0x9000, 0x9000) AM_READWRITE(slave_com_r,slave_com_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void jangou_state::nsc_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); //internal ram for irq etc. + map(0x8000, 0x8000).nopw(); //write-only,irq related? + map(0x9000, 0x9000).rw(this, FUNC(jangou_state::slave_com_r), FUNC(jangou_state::slave_com_w)); + map(0xc000, 0xc7ff).ram().share("share1"); + map(0xf000, 0xffff).rom(); +} /************************************* * @@ -407,24 +415,26 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jangou_state::cntrygrl_cpu0_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM +void jangou_state::cntrygrl_cpu0_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jangou_state::cntrygrl_cpu0_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") //dsw + blitter busy flag - AM_RANGE(0x10,0x10) AM_WRITE(output_w) - AM_RANGE(0x11,0x11) AM_WRITE(mux_w) - AM_RANGE(0x12,0x17) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs) - AM_RANGE(0x20,0x2f) AM_DEVWRITE("blitter",jangou_blitter_device, vregs_w) - AM_RANGE(0x30,0x30) AM_WRITENOP //? polls 0x03 continuously + map(0xe000, 0xefff).ram(); +} + +void jangou_state::cntrygrl_cpu0_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW"); //dsw + blitter busy flag + map(0x10, 0x10).w(this, FUNC(jangou_state::output_w)); + map(0x11, 0x11).w(this, FUNC(jangou_state::mux_w)); + map(0x12, 0x17).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs)); + map(0x20, 0x2f).w(m_blitter, FUNC(jangou_blitter_device::vregs_w)); + map(0x30, 0x30).nopw(); //? polls 0x03 continuously // AM_RANGE(0x31,0x31) AM_WRITE(sound_latch_w) -ADDRESS_MAP_END +} /************************************* * @@ -432,23 +442,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jangou_state::roylcrdn_cpu0_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B-15 ZEROPOWER RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(jangou_state::roylcrdn_cpu0_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02,0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10,0x10) AM_READ_PORT("DSW") /* DSW + blitter busy flag */ - AM_RANGE(0x10,0x10) AM_WRITENOP /* Writes continuosly 0's in attract mode, and 1's in game */ - AM_RANGE(0x11,0x11) AM_WRITE(mux_w) - AM_RANGE(0x12,0x17) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs) - AM_RANGE(0x13,0x13) AM_READNOP /* Often reads bit7 with unknown purposes */ - AM_RANGE(0x20,0x2f) AM_DEVWRITE("blitter",jangou_blitter_device, vregs_w) - AM_RANGE(0x30,0x30) AM_WRITENOP /* Seems to write 0x10 on each sound event */ -ADDRESS_MAP_END +void jangou_state::roylcrdn_cpu0_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x7000, 0x77ff).ram().share("nvram"); /* MK48Z02B-15 ZEROPOWER RAM */ +} + +void jangou_state::roylcrdn_cpu0_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW"); /* DSW + blitter busy flag */ + map(0x10, 0x10).nopw(); /* Writes continuosly 0's in attract mode, and 1's in game */ + map(0x11, 0x11).w(this, FUNC(jangou_state::mux_w)); + map(0x12, 0x17).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs)); + map(0x13, 0x13).nopr(); /* Often reads bit7 with unknown purposes */ + map(0x20, 0x2f).w(m_blitter, FUNC(jangou_blitter_device::vregs_w)); + map(0x30, 0x30).nopw(); /* Seems to write 0x10 on each sound event */ +} /************************************* diff --git a/src/mame/drivers/jankenmn.cpp b/src/mame/drivers/jankenmn.cpp index 7adf616dfac..fe632c51349 100644 --- a/src/mame/drivers/jankenmn.cpp +++ b/src/mame/drivers/jankenmn.cpp @@ -252,19 +252,21 @@ CUSTOM_INPUT_MEMBER(jankenmn_state::hopper_status_r) * Memory Map Definition * *********************************************/ -ADDRESS_MAP_START(jankenmn_state::jankenmn_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(jankenmn_state::jankenmn_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x30, 0x30) AM_WRITENOP // ??? -ADDRESS_MAP_END +void jankenmn_state::jankenmn_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xffff).rom(); +} + +void jankenmn_state::jankenmn_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x13).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x23).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x30, 0x30).nopw(); // ??? +} /* Writes to port 30h.... diff --git a/src/mame/drivers/jantotsu.cpp b/src/mame/drivers/jantotsu.cpp index 8253745bc2d..fe9b61e8938 100644 --- a/src/mame/drivers/jantotsu.cpp +++ b/src/mame/drivers/jantotsu.cpp @@ -334,20 +334,22 @@ WRITE_LINE_MEMBER(jantotsu_state::jan_adpcm_int) * *************************************/ -ADDRESS_MAP_START(jantotsu_state::jantotsu_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_READWRITE(jantotsu_bitmap_r, jantotsu_bitmap_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jantotsu_state::jantotsu_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0x01, 0x01) AM_READ(jantotsu_dsw2_r) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0x02, 0x03) AM_WRITE(jan_adpcm_w) - AM_RANGE(0x04, 0x04) AM_READWRITE(jantotsu_mux_r, jantotsu_mux_w) - AM_RANGE(0x07, 0x07) AM_WRITE(bankaddr_w) -ADDRESS_MAP_END +void jantotsu_state::jantotsu_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xffff).rw(this, FUNC(jantotsu_state::jantotsu_bitmap_r), FUNC(jantotsu_state::jantotsu_bitmap_w)); +} + +void jantotsu_state::jantotsu_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1").w("sn1", FUNC(sn76489a_device::write)); + map(0x01, 0x01).r(this, FUNC(jantotsu_state::jantotsu_dsw2_r)).w("sn2", FUNC(sn76489a_device::write)); + map(0x02, 0x03).w(this, FUNC(jantotsu_state::jan_adpcm_w)); + map(0x04, 0x04).rw(this, FUNC(jantotsu_state::jantotsu_mux_r), FUNC(jantotsu_state::jantotsu_mux_w)); + map(0x07, 0x07).w(this, FUNC(jantotsu_state::bankaddr_w)); +} /************************************* diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp index 33b615abab0..f4be4d16606 100644 --- a/src/mame/drivers/jchan.cpp +++ b/src/mame/drivers/jchan.cpp @@ -449,49 +449,51 @@ WRITE16_MEMBER(jchan_state::sknsspr_sprite32regs_w) } -ADDRESS_MAP_START(jchan_state::jchan_main) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - [A] grid tested, cleared ($9d6-$a54) +void jchan_state::jchan_main(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x20ffff).ram(); // Work RAM - [A] grid tested, cleared ($9d6-$a54) - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("mcuram") // [G] MCU share - AM_RANGE(0x330000, 0x330001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) - AM_RANGE(0x340000, 0x340001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x350000, 0x350001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x360000, 0x360001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) - AM_RANGE(0x370000, 0x370001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) + map(0x300000, 0x30ffff).ram().share("mcuram"); // [G] MCU share + map(0x330000, 0x330001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); + map(0x340000, 0x340001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x350000, 0x350001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x360000, 0x360001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); + map(0x370000, 0x370001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); - AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("mainsub_shared") + map(0x400000, 0x403fff).ram().share("mainsub_shared"); /* 1st sprite layer */ - AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sknsspr_sprite32_w<0>) AM_SHARE("spriteram_1") - AM_RANGE(0x600000, 0x60003f) AM_RAM_WRITE(sknsspr_sprite32regs_w<0>) AM_SHARE("sprregs_1") + map(0x500000, 0x503fff).ram().w(this, FUNC(jchan_state::sknsspr_sprite32_w<0>)).share("spriteram_1"); + map(0x600000, 0x60003f).ram().w(this, FUNC(jchan_state::sknsspr_sprite32regs_w<0>)).share("sprregs_1"); - AM_RANGE(0x700000, 0x70ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette + map(0x700000, 0x70ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette - AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(ctrl_r, ctrl_w) AM_SHARE("ctrl") + map(0xf00000, 0xf00007).rw(this, FUNC(jchan_state::ctrl_r), FUNC(jchan_state::ctrl_w)).share("ctrl"); - AM_RANGE(0xf80000, 0xf80001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) -ADDRESS_MAP_END + map(0xf80000, 0xf80001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); +} -ADDRESS_MAP_START(jchan_state::jchan_sub) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - grid tested, cleared ($612-$6dc) +void jchan_state::jchan_sub(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); // Work RAM - grid tested, cleared ($612-$6dc) - AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("mainsub_shared") + map(0x400000, 0x403fff).ram().share("mainsub_shared"); /* VIEW2 Tilemap - [D] grid tested, cleared ($1d84), also cleared at startup ($810-$826) */ - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) + map(0x500000, 0x503fff).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60001f).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); /* background sprites */ - AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(sknsspr_sprite32_w<1>) AM_SHARE("spriteram_2") - AM_RANGE(0x780000, 0x78003f) AM_RAM_WRITE(sknsspr_sprite32regs_w<1>) AM_SHARE("sprregs_2") + map(0x700000, 0x703fff).ram().w(this, FUNC(jchan_state::sknsspr_sprite32_w<1>)).share("spriteram_2"); + map(0x780000, 0x78003f).ram().w(this, FUNC(jchan_state::sknsspr_sprite32regs_w<1>)).share("sprregs_2"); - AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // sound + map(0x800000, 0x800003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // sound - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) -ADDRESS_MAP_END + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); +} static const gfx_layout tilelayout = diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp index 296cc20a1cd..a0f51c327cd 100644 --- a/src/mame/drivers/jclub2.cpp +++ b/src/mame/drivers/jclub2.cpp @@ -171,7 +171,7 @@ public: void jclub2(machine_config &config); void jclub2_map(address_map &map); -private: +protected: required_device<st0020_device> m_st0020; }; @@ -579,50 +579,51 @@ WRITE32_MEMBER(jclub2o_state::cmd2_word_w) } } -ADDRESS_MAP_START(jclub2o_state::jclub2o_map) - AM_RANGE(0x000000, 0x27ffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery +void jclub2o_state::jclub2o_map(address_map &map) +{ + map(0x000000, 0x27ffff).rom(); + map(0x400000, 0x41ffff).ram().share("nvram"); // battery - AM_RANGE(0x490000, 0x490003) AM_WRITE(eeprom_s29290_w) + map(0x490000, 0x490003).w(this, FUNC(jclub2o_state::eeprom_s29290_w)); - AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(out2_w) + map(0x4a0000, 0x4a0003).w(this, FUNC(jclub2o_state::out2_w)); // AM_RANGE(0x4a0010, 0x4a0013) AM_WRITE // AM_RANGE(0x4a0020, 0x4a0023) AM_WRITE // AM_RANGE(0x4a0030, 0x4a0033) AM_WRITE // ST-0016 - AM_RANGE(0x4b0000, 0x4b0003) AM_READWRITE(cmd1_word_r, cmd1_word_w) - AM_RANGE(0x4b0004, 0x4b0007) AM_READWRITE(cmd2_word_r, cmd2_word_w) - AM_RANGE(0x4b0008, 0x4b000b) AM_READ(cmd_stat_word_r) - - AM_RANGE(0x4d0000, 0x4d0003) AM_READNOP AM_WRITENOP // reads seem unused? this write would go to two 7-segs (but the code is never called) - AM_RANGE(0x4d0004, 0x4d0007) AM_READNOP - AM_RANGE(0x4d0008, 0x4d000b) AM_READNOP - AM_RANGE(0x4d000c, 0x4d000f) AM_READNOP - - AM_RANGE(0x4e0000, 0x4e0003) AM_READ(p2_r) AM_WRITE(input_sel2_w) - - AM_RANGE(0x580000, 0x580003) AM_READ_PORT("EEPROM") - AM_RANGE(0x580004, 0x580007) AM_READ(p1_r) - AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("COIN") - AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel1_out3_w) - AM_RANGE(0x580010, 0x580013) AM_WRITE(out1_w) + map(0x4b0000, 0x4b0003).rw(this, FUNC(jclub2o_state::cmd1_word_r), FUNC(jclub2o_state::cmd1_word_w)); + map(0x4b0004, 0x4b0007).rw(this, FUNC(jclub2o_state::cmd2_word_r), FUNC(jclub2o_state::cmd2_word_w)); + map(0x4b0008, 0x4b000b).r(this, FUNC(jclub2o_state::cmd_stat_word_r)); + + map(0x4d0000, 0x4d0003).nopr().nopw(); // reads seem unused? this write would go to two 7-segs (but the code is never called) + map(0x4d0004, 0x4d0007).nopr(); + map(0x4d0008, 0x4d000b).nopr(); + map(0x4d000c, 0x4d000f).nopr(); + + map(0x4e0000, 0x4e0003).r(this, FUNC(jclub2o_state::p2_r)).w(this, FUNC(jclub2o_state::input_sel2_w)); + + map(0x580000, 0x580003).portr("EEPROM"); + map(0x580004, 0x580007).r(this, FUNC(jclub2o_state::p1_r)); + map(0x580008, 0x58000b).portr("COIN"); + map(0x58000c, 0x58000f).w(this, FUNC(jclub2o_state::input_sel1_out3_w)); + map(0x580010, 0x580013).w(this, FUNC(jclub2o_state::out1_w)); // AM_RANGE(0x580018, 0x58001b) AM_WRITE // AM_RANGE(0x58001c, 0x58001f) AM_WRITE - AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000) + map(0x580200, 0x580201).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); - AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000) - AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) //AM_WRITE + map(0x580401, 0x580401).rw(this, FUNC(jclub2o_state::console_r), FUNC(jclub2o_state::console_w)); + map(0x580421, 0x580421).r(this, FUNC(jclub2o_state::console_status_r)); //AM_WRITE // AM_RANGE(0x580440, 0x580443) AM_WRITE // ST-0020 - AM_RANGE(0x600000, 0x67ffff) AM_DEVREADWRITE16( "st0020", st0020_device, sprram_r, sprram_w, 0xffffffff ); - AM_RANGE(0x680000, 0x69ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x6a0000, 0x6bffff) AM_RAM - AM_RANGE(0x6c0000, 0x6c00ff) AM_DEVREADWRITE16( "st0020", st0020_device, regs_r, regs_w, 0xffffffff ); - AM_RANGE(0x700000, 0x7fffff) AM_DEVREADWRITE16( "st0020", st0020_device, gfxram_r, gfxram_w, 0xffffffff ); -ADDRESS_MAP_END + map(0x600000, 0x67ffff).rw(m_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w)); + map(0x680000, 0x69ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x6a0000, 0x6bffff).ram(); + map(0x6c0000, 0x6c00ff).rw(m_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w)); + map(0x700000, 0x7fffff).rw(m_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w)); +} // ST-0016 map @@ -661,25 +662,27 @@ WRITE8_MEMBER(jclub2o_state::cmd2_w) logerror("%s: cmd2_w %02x\n", machine().describe_context(), m_cmd2); } -ADDRESS_MAP_START(jclub2o_state::st0016_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xe800, 0xe8ff) AM_RAM +void jclub2o_state::st0016_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xe800, 0xe8ff).ram(); //AM_RANGE(0xe900, 0xe9ff) // sound - internal //AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(jclub2o_state::st0016_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void jclub2o_state::st0016_io(address_map &map) +{ + map.global_mask(0xff); //AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) - AM_RANGE(0xc0, 0xc0) AM_READWRITE(cmd1_r, cmd1_w) - AM_RANGE(0xc1, 0xc1) AM_READWRITE(cmd2_r, cmd2_w) - AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat_r) - AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) - AM_RANGE(0xe7, 0xe7) AM_WRITENOP // watchdog? + map(0xc0, 0xc0).rw(this, FUNC(jclub2o_state::cmd1_r), FUNC(jclub2o_state::cmd1_w)); + map(0xc1, 0xc1).rw(this, FUNC(jclub2o_state::cmd2_r), FUNC(jclub2o_state::cmd2_w)); + map(0xc2, 0xc2).r(this, FUNC(jclub2o_state::cmd_stat_r)); + map(0xe1, 0xe1).w(this, FUNC(jclub2o_state::st0016_rom_bank_w)); + map(0xe7, 0xe7).nopw(); // watchdog? //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r) -ADDRESS_MAP_END +} // Newer hardware (ST-0032) only @@ -702,45 +705,46 @@ WRITE32_MEMBER(common_state::eeprom_93c46_w) } } -ADDRESS_MAP_START(jclub2_state::jclub2_map) - AM_RANGE(0x000000, 0x27ffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery +void jclub2_state::jclub2_map(address_map &map) +{ + map(0x000000, 0x27ffff).rom(); + map(0x400000, 0x41ffff).ram().share("nvram"); // battery - AM_RANGE(0x490000, 0x490003) AM_WRITE(eeprom_93c46_w) + map(0x490000, 0x490003).w(this, FUNC(jclub2_state::eeprom_93c46_w)); - AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(out2_w) + map(0x4a0000, 0x4a0003).w(this, FUNC(jclub2_state::out2_w)); - AM_RANGE(0x4d0000, 0x4d0003) AM_READNOP AM_WRITENOP // reads seem unused? this write would go to two 7-segs (but the code is never called) - AM_RANGE(0x4d0004, 0x4d0007) AM_READNOP - AM_RANGE(0x4d0008, 0x4d000b) AM_READNOP - AM_RANGE(0x4d000c, 0x4d000f) AM_READNOP + map(0x4d0000, 0x4d0003).nopr().nopw(); // reads seem unused? this write would go to two 7-segs (but the code is never called) + map(0x4d0004, 0x4d0007).nopr(); + map(0x4d0008, 0x4d000b).nopr(); + map(0x4d000c, 0x4d000f).nopr(); - AM_RANGE(0x4e0000, 0x4e0003) AM_READ(p2_r) AM_WRITE(input_sel2_w) + map(0x4e0000, 0x4e0003).r(this, FUNC(jclub2_state::p2_r)).w(this, FUNC(jclub2_state::input_sel2_w)); - AM_RANGE(0x580000, 0x580003) AM_READ_PORT("EEPROM") - AM_RANGE(0x580004, 0x580007) AM_READ(p1_r) - AM_RANGE(0x580008, 0x58000b) AM_READ_PORT("COIN") - AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel1_out3_w) - AM_RANGE(0x580010, 0x580013) AM_WRITE(out1_w) + map(0x580000, 0x580003).portr("EEPROM"); + map(0x580004, 0x580007).r(this, FUNC(jclub2_state::p1_r)); + map(0x580008, 0x58000b).portr("COIN"); + map(0x58000c, 0x58000f).w(this, FUNC(jclub2_state::input_sel1_out3_w)); + map(0x580010, 0x580013).w(this, FUNC(jclub2_state::out1_w)); // AM_RANGE(0x580018, 0x58001b) AM_WRITE // AM_RANGE(0x58001c, 0x58001f) AM_WRITE - AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000) + map(0x580200, 0x580201).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); - AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000) - AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) //AM_WRITE + map(0x580401, 0x580401).rw(this, FUNC(jclub2_state::console_r), FUNC(jclub2_state::console_w)); + map(0x580421, 0x580421).r(this, FUNC(jclub2_state::console_status_r)); //AM_WRITE // AM_RANGE(0x580440, 0x580443) AM_WRITE // ST-0032 - AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE16( "st0020", st0020_device, sprram_r, sprram_w, 0xffffffff ); - AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram! - AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE16( "st0020", st0020_device, regs_r, regs_w, 0xffffffff ); - AM_RANGE(0x8e0000, 0x8e01ff) AM_RAM // sound? - AM_RANGE(0x8e0200, 0x8e0203) AM_RAM - AM_RANGE(0x8e0210, 0x8e0213) AM_RAM - AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE16( "st0020", st0020_device, gfxram_r, gfxram_w, 0xffffffff ); -ADDRESS_MAP_END + map(0x800000, 0x87ffff).rw(m_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w)); + map(0x880000, 0x89ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x8a0000, 0x8bffff).ram(); // this should still be palette ram! + map(0x8c0000, 0x8c00ff).rw(m_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w)); + map(0x8e0000, 0x8e01ff).ram(); // sound? + map(0x8e0200, 0x8e0203).ram(); + map(0x8e0210, 0x8e0213).ram(); + map(0x900000, 0x9fffff).rw(m_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w)); +} // bootleg darkhors hardware @@ -791,37 +795,38 @@ WRITE32_MEMBER(darkhors_state::out1_w) } } -ADDRESS_MAP_START(darkhors_state::darkhors_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("nvram") // battery +void darkhors_state::darkhors_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x41ffff).ram().share("nvram"); // battery - AM_RANGE(0x490040, 0x490043) AM_WRITE(eeprom_93c46_w) - AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("SERVICE") AM_WRITE(out1_w) + map(0x490040, 0x490043).w(this, FUNC(darkhors_state::eeprom_93c46_w)); + map(0x4e0080, 0x4e0083).portr("SERVICE").w(this, FUNC(darkhors_state::out1_w)); - AM_RANGE(0x580000, 0x580003) AM_READ_PORT("UNKNOWN") - AM_RANGE(0x580004, 0x580007) AM_READ_PORT("COIN") - AM_RANGE(0x580008, 0x58000b) AM_READ(input_r) - AM_RANGE(0x58000c, 0x58000f) AM_WRITE(input_sel_w) + map(0x580000, 0x580003).portr("UNKNOWN"); + map(0x580004, 0x580007).portr("COIN"); + map(0x580008, 0x58000b).r(this, FUNC(darkhors_state::input_r)); + map(0x58000c, 0x58000f).w(this, FUNC(darkhors_state::input_sel_w)); // AM_RANGE(0x580010, 0x580013) AM_WRITE // AM_RANGE(0x580018, 0x58001b) AM_WRITE // AM_RANGE(0x58001c, 0x58001f) AM_WRITE - AM_RANGE(0x580084, 0x580087) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff000000) + map(0x580084, 0x580084).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // AM_RANGE(0x58008c, 0x58008f) AM_WRITE - AM_RANGE(0x580200, 0x580203) AM_DEVREAD16("watchdog", watchdog_timer_device, reset16_r, 0xffff0000) - - AM_RANGE(0x580400, 0x580403) AM_READWRITE8(console_r, console_w, 0x00ff0000) - AM_RANGE(0x580420, 0x580423) AM_READ8(console_status_r, 0x00ff0000) - - AM_RANGE(0x800000, 0x86bfff) AM_RAM - AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE(tmapram_w) AM_SHARE("tmapram") - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(tmapram2_w) AM_SHARE("tmapram2") - AM_RANGE(0x874000, 0x87dfff) AM_RAM - AM_RANGE(0x87e000, 0x87ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x880000, 0x89ffff) AM_RAM AM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x8a0000, 0x8bffff) AM_RAM // this should still be palette ram! - AM_RANGE(0x8c0120, 0x8c012f) AM_WRITEONLY AM_SHARE("tmapscroll") - AM_RANGE(0x8c0130, 0x8c013f) AM_WRITEONLY AM_SHARE("tmapscroll2") -ADDRESS_MAP_END + map(0x580200, 0x580201).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + + map(0x580401, 0x580401).rw(this, FUNC(darkhors_state::console_r), FUNC(darkhors_state::console_w)); + map(0x580421, 0x580421).r(this, FUNC(darkhors_state::console_status_r)); + + map(0x800000, 0x86bfff).ram(); + map(0x86c000, 0x86ffff).ram().w(this, FUNC(darkhors_state::tmapram_w)).share("tmapram"); + map(0x870000, 0x873fff).ram().w(this, FUNC(darkhors_state::tmapram2_w)).share("tmapram2"); + map(0x874000, 0x87dfff).ram(); + map(0x87e000, 0x87ffff).ram().share("spriteram"); + map(0x880000, 0x89ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x8a0000, 0x8bffff).ram(); // this should still be palette ram! + map(0x8c0120, 0x8c012f).writeonly().share("tmapscroll"); + map(0x8c0130, 0x8c013f).writeonly().share("tmapscroll2"); +} /*************************************************************************** diff --git a/src/mame/drivers/jedi.cpp b/src/mame/drivers/jedi.cpp index 5b594abfd7b..b5652d946a3 100644 --- a/src/mame/drivers/jedi.cpp +++ b/src/mame/drivers/jedi.cpp @@ -266,33 +266,34 @@ WRITE8_MEMBER(jedi_state::nvram_enable_w) * *************************************/ -ADDRESS_MAP_START(jedi_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x0300) AM_RAM_WRITE(nvram_data_w) AM_SHARE("nvram") - AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03fe) AM_READ_PORT("0c00") AM_WRITENOP - AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x03fe) AM_READ_PORT("0c01") AM_WRITENOP - AM_RANGE(0x1000, 0x13ff) AM_NOP - AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ(jedi_audio_ack_latch_r) AM_WRITENOP - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x03ff) AM_READ(a2d_data_r) AM_WRITENOP - AM_RANGE(0x1c00, 0x1c01) AM_MIRROR(0x007e) AM_READNOP AM_WRITE(nvram_enable_w) - AM_RANGE(0x1c80, 0x1c82) AM_MIRROR(0x0078) AM_READNOP AM_WRITE(a2d_select_w) - AM_RANGE(0x1c83, 0x1c87) AM_MIRROR(0x0078) AM_NOP - AM_RANGE(0x1d00, 0x1d00) AM_MIRROR(0x007f) AM_NOP /* write: NVRAM store */ - AM_RANGE(0x1d80, 0x1d80) AM_MIRROR(0x007f) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1e00, 0x1e00) AM_MIRROR(0x007f) AM_READNOP AM_WRITE(main_irq_ack_w) - AM_RANGE(0x1e80, 0x1e87) AM_MIRROR(0x0078) AM_READNOP AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x1f00, 0x1f00) AM_MIRROR(0x007f) AM_READNOP AM_WRITE(jedi_audio_latch_w) - AM_RANGE(0x1f80, 0x1f80) AM_MIRROR(0x007f) AM_READNOP AM_WRITE(rom_banksel_w) - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("backgroundram") - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x3000, 0x37bf) AM_RAM AM_SHARE("foregroundram") - AM_RANGE(0x37c0, 0x3bff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3c00, 0x3c01) AM_MIRROR(0x00fe) AM_READNOP AM_WRITE(jedi_vscroll_w) - AM_RANGE(0x3d00, 0x3d01) AM_MIRROR(0x00fe) AM_READNOP AM_WRITE(jedi_hscroll_w) - AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x01ff) AM_WRITEONLY AM_SHARE("smoothing_table") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void jedi_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x08ff).mirror(0x0300).ram().w(this, FUNC(jedi_state::nvram_data_w)).share("nvram"); + map(0x0c00, 0x0c00).mirror(0x03fe).portr("0c00").nopw(); + map(0x0c01, 0x0c01).mirror(0x03fe).portr("0c01").nopw(); + map(0x1000, 0x13ff).noprw(); + map(0x1400, 0x1400).mirror(0x03ff).r(this, FUNC(jedi_state::jedi_audio_ack_latch_r)).nopw(); + map(0x1800, 0x1800).mirror(0x03ff).r(this, FUNC(jedi_state::a2d_data_r)).nopw(); + map(0x1c00, 0x1c01).mirror(0x007e).nopr().w(this, FUNC(jedi_state::nvram_enable_w)); + map(0x1c80, 0x1c82).mirror(0x0078).nopr().w(this, FUNC(jedi_state::a2d_select_w)); + map(0x1c83, 0x1c87).mirror(0x0078).noprw(); + map(0x1d00, 0x1d00).mirror(0x007f).noprw(); /* write: NVRAM store */ + map(0x1d80, 0x1d80).mirror(0x007f).nopr().w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1e00, 0x1e00).mirror(0x007f).nopr().w(this, FUNC(jedi_state::main_irq_ack_w)); + map(0x1e80, 0x1e87).mirror(0x0078).nopr().w("outlatch", FUNC(ls259_device::write_d7)); + map(0x1f00, 0x1f00).mirror(0x007f).nopr().w(this, FUNC(jedi_state::jedi_audio_latch_w)); + map(0x1f80, 0x1f80).mirror(0x007f).nopr().w(this, FUNC(jedi_state::rom_banksel_w)); + map(0x2000, 0x27ff).ram().share("backgroundram"); + map(0x2800, 0x2fff).ram().share("paletteram"); + map(0x3000, 0x37bf).ram().share("foregroundram"); + map(0x37c0, 0x3bff).ram().share("spriteram"); + map(0x3c00, 0x3c01).mirror(0x00fe).nopr().w(this, FUNC(jedi_state::jedi_vscroll_w)); + map(0x3d00, 0x3d01).mirror(0x00fe).nopr().w(this, FUNC(jedi_state::jedi_hscroll_w)); + map(0x3e00, 0x3e00).mirror(0x01ff).writeonly().share("smoothing_table"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/jeutel.cpp b/src/mame/drivers/jeutel.cpp index 5fe75747604..8f8a72e21ae 100644 --- a/src/mame/drivers/jeutel.cpp +++ b/src/mame/drivers/jeutel.cpp @@ -61,37 +61,41 @@ private: }; -ADDRESS_MAP_START(jeutel_state::jeutel_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("shared") - AM_RANGE(0xc400, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jeutel_state::jeutel_cpu2) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x2000) - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x4000, 0x4000) AM_WRITENOP // writes 12 here many times - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("shared") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jeutel_state::jeutel_cpu3) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x3000) - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_WRITE(sndcmd_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jeutel_state::jeutel_cpu3_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END +void jeutel_state::jeutel_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom().region("roms", 0); + map(0xc000, 0xc3ff).ram().share("shared"); + map(0xc400, 0xc7ff).ram(); + map(0xe000, 0xe003).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void jeutel_state::jeutel_cpu2(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("roms", 0x2000); + map(0x2000, 0x2003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x3000, 0x3003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x4000, 0x4000).nopw(); // writes 12 here many times + map(0x8000, 0x83ff).ram(); + map(0xc000, 0xc3ff).ram().share("shared"); +} + +void jeutel_state::jeutel_cpu3(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("roms", 0x3000); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).w(this, FUNC(jeutel_state::sndcmd_w)); +} + +void jeutel_state::jeutel_cpu3_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x04, 0x04).r("aysnd", FUNC(ay8910_device::data_r)); +} static INPUT_PORTS_START( jeutel ) INPUT_PORTS_END diff --git a/src/mame/drivers/joctronic.cpp b/src/mame/drivers/joctronic.cpp index ff4d699d4be..cfc29be5c6a 100644 --- a/src/mame/drivers/joctronic.cpp +++ b/src/mame/drivers/joctronic.cpp @@ -127,22 +127,23 @@ WRITE8_MEMBER(joctronic_state::drivers_b_w) logerror("drivers_b[%d] = $%02X\n", offset, data); } -ADDRESS_MAP_START(joctronic_state::maincpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9000, 0x9007) AM_MIRROR(0x0ff8) AM_READ(csin_r) // CSIN - AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x0ff8) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // PORTDS - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0fc7) AM_WRITE(display_1_w) // CSD1 - AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x0fc7) AM_WRITE(display_2_w) // CSD2 - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0fc7) AM_WRITE(display_3_w) // CSD3 - AM_RANGE(0xc018, 0xc018) AM_MIRROR(0x0fc7) AM_WRITE(display_4_w) // CSD4 - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0fc7) AM_WRITE(display_a_w) // CSDA - AM_RANGE(0xc028, 0xc028) AM_MIRROR(0x0fc7) AM_WRITE(drivers_l_w) // OL - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0fc7) AM_WRITE(drivers_b_w) // OB - AM_RANGE(0xc038, 0xc03f) AM_MIRROR(0x0fc0) AM_WRITE(drivers_w) // OA - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x0fff) AM_WRITE(soundlatch_nmi_w) // PSON -ADDRESS_MAP_END +void joctronic_state::maincpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0x87ff).mirror(0x0800).ram().share("nvram"); + map(0x9000, 0x9007).mirror(0x0ff8).r(this, FUNC(joctronic_state::csin_r)); // CSIN + map(0xa000, 0xa007).mirror(0x0ff8).w("mainlatch", FUNC(ls259_device::write_d0)); // PORTDS + map(0xc000, 0xc000).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_1_w)); // CSD1 + map(0xc008, 0xc008).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_2_w)); // CSD2 + map(0xc010, 0xc010).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_3_w)); // CSD3 + map(0xc018, 0xc018).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_4_w)); // CSD4 + map(0xc020, 0xc020).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_a_w)); // CSDA + map(0xc028, 0xc028).mirror(0x0fc7).w(this, FUNC(joctronic_state::drivers_l_w)); // OL + map(0xc030, 0xc030).mirror(0x0fc7).w(this, FUNC(joctronic_state::drivers_b_w)); // OB + map(0xc038, 0xc03f).mirror(0x0fc0).w(this, FUNC(joctronic_state::drivers_w)); // OA + map(0xe000, 0xe000).mirror(0x0fff).w(this, FUNC(joctronic_state::soundlatch_nmi_w)); // PSON +} READ8_MEMBER(joctronic_state::inputs_r) { @@ -177,21 +178,22 @@ WRITE8_MEMBER(joctronic_state::display_ck_w) logerror("display_ck[%d] = $%02X\n", offset, data); } -ADDRESS_MAP_START(joctronic_state::slalom03_maincpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9000, 0x9007) AM_MIRROR(0x0ff8) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // CSPORT - AM_RANGE(0xa008, 0xa008) AM_MIRROR(0x0fc7) AM_WRITE(display_strobe_w) // STROBE - AM_RANGE(0xa010, 0xa017) AM_MIRROR(0x0fc0) AM_WRITE(drivers_w) - AM_RANGE(0xa018, 0xa018) AM_MIRROR(0x0fc7) AM_WRITE(display_ck_w) // CKD - AM_RANGE(0xa020, 0xa020) AM_MIRROR(0x0fc7) AM_READ(inputs_r) // CSS - AM_RANGE(0xa028, 0xa028) AM_MIRROR(0x0fc7) AM_READNOP // N.C. - AM_RANGE(0xa030, 0xa030) AM_MIRROR(0x0fc7) AM_READNOP // N.C. - AM_RANGE(0xa038, 0xa038) AM_MIRROR(0x0fc7) AM_READ(ports_r) // CSP - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x0fff) AM_READ(csint_r) // CSINT - AM_RANGE(0xf000, 0xf000) AM_MIRROR(0x0fff) AM_WRITE(soundlatch_nmi_pulse_w) // CSSON -ADDRESS_MAP_END +void joctronic_state::slalom03_maincpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).mirror(0x0800).ram().share("nvram"); + map(0x9000, 0x9007).mirror(0x0ff8).w("mainlatch", FUNC(ls259_device::write_d0)); // CSPORT + map(0xa008, 0xa008).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_strobe_w)); // STROBE + map(0xa010, 0xa017).mirror(0x0fc0).w(this, FUNC(joctronic_state::drivers_w)); + map(0xa018, 0xa018).mirror(0x0fc7).w(this, FUNC(joctronic_state::display_ck_w)); // CKD + map(0xa020, 0xa020).mirror(0x0fc7).r(this, FUNC(joctronic_state::inputs_r)); // CSS + map(0xa028, 0xa028).mirror(0x0fc7).nopr(); // N.C. + map(0xa030, 0xa030).mirror(0x0fc7).nopr(); // N.C. + map(0xa038, 0xa038).mirror(0x0fc7).r(this, FUNC(joctronic_state::ports_r)); // CSP + map(0xe000, 0xe000).mirror(0x0fff).r(this, FUNC(joctronic_state::csint_r)); // CSINT + map(0xf000, 0xf000).mirror(0x0fff).w(this, FUNC(joctronic_state::soundlatch_nmi_pulse_w)); // CSSON +} READ8_MEMBER(joctronic_state::bldyrolr_unknown_r) { @@ -204,15 +206,17 @@ WRITE8_MEMBER(joctronic_state::bldyrolr_unknown_w) logerror("bldyrolr_unknown = $%02X\n", data); } -ADDRESS_MAP_START(joctronic_state::bldyrolr_maincpu_map) - AM_IMPORT_FROM(slalom03_maincpu_map) - AM_RANGE(0xc000, 0xc000) AM_READWRITE(bldyrolr_unknown_r, bldyrolr_unknown_w) -ADDRESS_MAP_END +void joctronic_state::bldyrolr_maincpu_map(address_map &map) +{ + slalom03_maincpu_map(map); + map(0xc000, 0xc000).rw(this, FUNC(joctronic_state::bldyrolr_unknown_r), FUNC(joctronic_state::bldyrolr_unknown_w)); +} -ADDRESS_MAP_START(joctronic_state::maincpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void joctronic_state::maincpu_io_map(address_map &map) +{ + map.global_mask(0x03); + map(0x00, 0x03).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} WRITE8_MEMBER(joctronic_state::soundlatch_nmi_w) { @@ -261,36 +265,40 @@ WRITE_LINE_MEMBER(joctronic_state::vck_w) } } -ADDRESS_MAP_START(joctronic_state::joctronic_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM // only lower half of 2016 used? - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(soundlatch_nmi_r) // SCSP - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_WRITE(resint_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(joctronic_state::joctronic_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd1", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("aysnd1", ay8910_device, data_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd2", ay8910_device, address_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd2", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(joctronic_state::slalom03_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM // only lower half of 2016 used? -ADDRESS_MAP_END - -ADDRESS_MAP_START(joctronic_state::slalom03_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd1", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("aysnd1", ay8910_device, data_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd2", ay8910_device, address_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd2", ay8910_device, data_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x01) AM_READ(soundlatch_r) // CSPORT - AM_RANGE(0x06, 0x06) AM_MIRROR(0x01) AM_WRITE(resint_w) // RESINT -ADDRESS_MAP_END +void joctronic_state::joctronic_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0x87ff).mirror(0x1800).ram(); // only lower half of 2016 used? + map(0xc000, 0xc000).mirror(0x1fff).r(this, FUNC(joctronic_state::soundlatch_nmi_r)); // SCSP + map(0xe000, 0xe000).mirror(0x1fff).w(this, FUNC(joctronic_state::resint_w)); +} + +void joctronic_state::joctronic_sound_io_map(address_map &map) +{ + map.global_mask(0x03); + map(0x00, 0x00).w("aysnd1", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).w("aysnd1", FUNC(ay8910_device::data_w)); + map(0x02, 0x02).w("aysnd2", FUNC(ay8910_device::address_w)); + map(0x03, 0x03).w("aysnd2", FUNC(ay8910_device::data_w)); +} + +void joctronic_state::slalom03_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xc000, 0xc7ff).mirror(0x3800).ram(); // only lower half of 2016 used? +} + +void joctronic_state::slalom03_sound_io_map(address_map &map) +{ + map.global_mask(0x07); + map(0x00, 0x00).w("aysnd1", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).w("aysnd1", FUNC(ay8910_device::data_w)); + map(0x02, 0x02).w("aysnd2", FUNC(ay8910_device::address_w)); + map(0x03, 0x03).w("aysnd2", FUNC(ay8910_device::data_w)); + map(0x04, 0x04).mirror(0x01).r(this, FUNC(joctronic_state::soundlatch_r)); // CSPORT + map(0x06, 0x06).mirror(0x01).w(this, FUNC(joctronic_state::resint_w)); // RESINT +} static const z80_daisy_config daisy_chain[] = { diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp index 5abe0c584da..7616b724ad6 100644 --- a/src/mame/drivers/jokrwild.cpp +++ b/src/mame/drivers/jokrwild.cpp @@ -178,21 +178,22 @@ READ8_MEMBER(jokrwild_state::rng_r) * Memory Map Information * *************************/ -ADDRESS_MAP_START(jokrwild_state::jokrwild_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(jokrwild_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0400, 0x07ff) AM_RAM //FIXME: backup RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(jokrwild_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2400, 0x27ff) AM_RAM //stack RAM - AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //optical sensor is here +void jokrwild_state::jokrwild_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().w(this, FUNC(jokrwild_state::jokrwild_videoram_w)).share("videoram"); + map(0x0400, 0x07ff).ram(); //FIXME: backup RAM + map(0x2000, 0x23ff).ram().w(this, FUNC(jokrwild_state::jokrwild_colorram_w)).share("colorram"); + map(0x2400, 0x27ff).ram(); //stack RAM + map(0x4004, 0x4007).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4008, 0x400b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //optical sensor is here // AM_RANGE(0x4010, 0x4010) AM_READNOP /* R ???? */ - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x6100, 0x6100) AM_READ_PORT("SW1") - AM_RANGE(0x6200, 0x6203) AM_READ(rng_r)//another PIA? - AM_RANGE(0x6300, 0x6300) AM_READ_PORT("SW2") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x6000, 0x6000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x6001, 0x6001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x6100, 0x6100).portr("SW1"); + map(0x6200, 0x6203).r(this, FUNC(jokrwild_state::rng_r));//another PIA? + map(0x6300, 0x6300).portr("SW2"); + map(0x8000, 0xffff).rom(); +} /* I/O byte R/W diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp index a73af899233..c7e81507eb4 100644 --- a/src/mame/drivers/jollyjgr.cpp +++ b/src/mame/drivers/jollyjgr.cpp @@ -241,41 +241,43 @@ WRITE8_MEMBER(jollyjgr_state::jollyjgr_coin_lookout_w) * *************************************/ -ADDRESS_MAP_START(jollyjgr_state::jollyjgr_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8ff8, 0x8ff8) AM_READ_PORT("DSW1") - AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS") - AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w) - AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w) - AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(jollyjgr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(jollyjgr_attrram_w) AM_SHARE("colorram") - AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9880, 0x9bff) AM_RAM - AM_RANGE(0xa000, 0xffff) AM_RAM AM_SHARE("bitmap") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jollyjgr_state::fspider_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8ff8, 0x8ff8) AM_READ_PORT("DSW1") - AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS") - AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w) - AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w) - AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(jollyjgr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(jollyjgr_attrram_w) AM_SHARE("colorram") - AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9880, 0x989f) AM_RAM // ? - AM_RANGE(0x98a0, 0x98af) AM_RAM AM_SHARE("bulletram") - AM_RANGE(0x98b0, 0x9bff) AM_RAM // ? - AM_RANGE(0xa000, 0xffff) AM_RAM AM_SHARE("bitmap") -ADDRESS_MAP_END +void jollyjgr_state::jollyjgr_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8ff8, 0x8ff8).portr("DSW1"); + map(0x8ff9, 0x8ff9).portr("INPUTS"); + map(0x8ff8, 0x8ff8).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x8ffa, 0x8ffa).portr("SYSTEM").w("aysnd", FUNC(ay8910_device::data_w)); + map(0x8ffc, 0x8ffc).w(this, FUNC(jollyjgr_state::jollyjgr_misc_w)); + map(0x8ffd, 0x8ffd).w(this, FUNC(jollyjgr_state::jollyjgr_coin_lookout_w)); + map(0x8fff, 0x8fff).portr("DSW2"); + map(0x9000, 0x93ff).ram().w(this, FUNC(jollyjgr_state::jollyjgr_videoram_w)).share("videoram"); + map(0x9800, 0x983f).ram().w(this, FUNC(jollyjgr_state::jollyjgr_attrram_w)).share("colorram"); + map(0x9840, 0x987f).ram().share("spriteram"); + map(0x9880, 0x9bff).ram(); + map(0xa000, 0xffff).ram().share("bitmap"); +} + +void jollyjgr_state::fspider_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8ff8, 0x8ff8).portr("DSW1"); + map(0x8ff9, 0x8ff9).portr("INPUTS"); + map(0x8ff8, 0x8ff8).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x8ffa, 0x8ffa).portr("SYSTEM").w("aysnd", FUNC(ay8910_device::data_w)); + map(0x8ffc, 0x8ffc).w(this, FUNC(jollyjgr_state::jollyjgr_misc_w)); + map(0x8ffd, 0x8ffd).w(this, FUNC(jollyjgr_state::jollyjgr_coin_lookout_w)); + map(0x8fff, 0x8fff).portr("DSW2"); + map(0x9000, 0x93ff).ram().w(this, FUNC(jollyjgr_state::jollyjgr_videoram_w)).share("videoram"); + map(0x9800, 0x983f).ram().w(this, FUNC(jollyjgr_state::jollyjgr_attrram_w)).share("colorram"); + map(0x9840, 0x987f).ram().share("spriteram"); + map(0x9880, 0x989f).ram(); // ? + map(0x98a0, 0x98af).ram().share("bulletram"); + map(0x98b0, 0x9bff).ram(); // ? + map(0xa000, 0xffff).ram().share("bitmap"); +} diff --git a/src/mame/drivers/jongkyo.cpp b/src/mame/drivers/jongkyo.cpp index 80da6b5ef99..394d49e76c9 100644 --- a/src/mame/drivers/jongkyo.cpp +++ b/src/mame/drivers/jongkyo.cpp @@ -242,33 +242,36 @@ WRITE8_MEMBER(jongkyo_state::unknown_w) * *************************************/ -ADDRESS_MAP_START(jongkyo_state::jongkyo_memmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITE(videoram2_w) // wrong, this doesn't seem to be video ram on write.. - AM_RANGE(0x4000, 0x6bff) AM_ROM // fixed rom - AM_RANGE(0x6c00, 0x6fff) AM_ROMBANK("bank1") // banked (8 banks) - AM_RANGE(0x7000, 0x77ff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jongkyo_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x6bff) AM_ROMBANK("bank0d") - AM_RANGE(0x6c00, 0x6fff) AM_ROMBANK("bank1d") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(jongkyo_state::jongkyo_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void jongkyo_state::jongkyo_memmap(address_map &map) +{ + map(0x0000, 0x3fff).rom().w(this, FUNC(jongkyo_state::videoram2_w)); // wrong, this doesn't seem to be video ram on write.. + map(0x4000, 0x6bff).rom(); // fixed rom + map(0x6c00, 0x6fff).bankr("bank1"); // banked (8 banks) + map(0x7000, 0x77ff).ram(); + map(0x8000, 0xffff).ram().share("videoram"); +} + +void jongkyo_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x6bff).bankr("bank0d"); + map(0x6c00, 0x6fff).bankr("bank1d"); +} + + +void jongkyo_state::jongkyo_portmap(address_map &map) +{ + map.global_mask(0xff); // R 01 keyboard - AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); - AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW") AM_WRITE(jongkyo_coin_counter_w) - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") AM_WRITE(mux_w) + map(0x10, 0x10).portr("DSW").w(this, FUNC(jongkyo_state::jongkyo_coin_counter_w)); + map(0x11, 0x11).portr("IN0").w(this, FUNC(jongkyo_state::mux_w)); // W 11 select keyboard row (fe fd fb f7) - AM_RANGE(0x40, 0x40) AM_READNOP // unknown, if (A & 0xf) == 0x0a then a bit 0 write to 0x7520 doesn't occur - AM_RANGE(0x40, 0x45) AM_WRITE(bank_select_w) - AM_RANGE(0x46, 0x4f) AM_WRITE(unknown_w) -ADDRESS_MAP_END + map(0x40, 0x40).nopr(); // unknown, if (A & 0xf) == 0x0a then a bit 0 write to 0x7520 doesn't occur + map(0x40, 0x45).w(this, FUNC(jongkyo_state::bank_select_w)); + map(0x46, 0x4f).w(this, FUNC(jongkyo_state::unknown_w)); +} /************************************* * diff --git a/src/mame/drivers/jonos.cpp b/src/mame/drivers/jonos.cpp index 00c013aab61..04ad56f56c2 100644 --- a/src/mame/drivers/jonos.cpp +++ b/src/mame/drivers/jonos.cpp @@ -52,15 +52,16 @@ private: -ADDRESS_MAP_START(jonos_state::jonos_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x1800, 0x27ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3001) AM_WRITE(cursor_w) // unknown device - AM_RANGE(0x4000, 0x4001) // unknown device - AM_RANGE(0x5000, 0x5003) AM_READ(keyboard_r) // unknown device - AM_RANGE(0x6000, 0x6001) // unknown device -ADDRESS_MAP_END +void jonos_state::jonos_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("roms", 0); + map(0x1800, 0x27ff).ram().share("videoram"); + map(0x3000, 0x3001).w(this, FUNC(jonos_state::cursor_w)); // unknown device + map(0x4000, 0x4001); // unknown device + map(0x5000, 0x5003).r(this, FUNC(jonos_state::keyboard_r)); // unknown device + map(0x6000, 0x6001); // unknown device +} /* Input ports */ static INPUT_PORTS_START( jonos ) diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp index 3c32fa3e752..213935179f1 100644 --- a/src/mame/drivers/joystand.cpp +++ b/src/mame/drivers/joystand.cpp @@ -445,37 +445,38 @@ WRITE16_MEMBER(joystand_state::cart_w) bg15_tiles_dirty = true; } -ADDRESS_MAP_START(joystand_state::joystand_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAM - AM_RANGE(0x200000, 0x200003) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0x200008, 0x200009) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN0") // r/w - AM_RANGE(0x200012, 0x200013) AM_RAM_WRITE(outputs_w) AM_SHARE("outputs") // r/w - AM_RANGE(0x200014, 0x200015) AM_READWRITE(fpga_r, oki_bank_w) // r/w +void joystand_state::joystand_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x13ffff).ram(); + map(0x200000, 0x200003).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x200009, 0x200009).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x200010, 0x200011).portr("IN0"); // r/w + map(0x200012, 0x200013).ram().w(this, FUNC(joystand_state::outputs_w)).share("outputs"); // r/w + map(0x200014, 0x200015).rw(this, FUNC(joystand_state::fpga_r), FUNC(joystand_state::oki_bank_w)); // r/w // AM_RANGE(0x200016, 0x200017) // write $9190 at boot - AM_RANGE(0x400000, 0x47ffff) AM_RAM_WRITE(bg15_0_w) AM_SHARE("bg15_0_ram") // r5g5b5 200x200 pixel-based - AM_RANGE(0x480000, 0x4fffff) AM_RAM // more rgb layers? (writes at offset 0) - AM_RANGE(0x500000, 0x57ffff) AM_RAM // "" - AM_RANGE(0x580000, 0x5fffff) AM_RAM // "" + map(0x400000, 0x47ffff).ram().w(this, FUNC(joystand_state::bg15_0_w)).share("bg15_0_ram"); // r5g5b5 200x200 pixel-based + map(0x480000, 0x4fffff).ram(); // more rgb layers? (writes at offset 0) + map(0x500000, 0x57ffff).ram(); // "" + map(0x580000, 0x5fffff).ram(); // "" - AM_RANGE(0x600000, 0x603fff) AM_RAM_WRITE(bg2_w) AM_SHARE("bg2_ram") - AM_RANGE(0x604000, 0x605fff) AM_RAM_WRITE(bg1_w) AM_SHARE("bg1_ram") - AM_RANGE(0x606000, 0x607fff) AM_RAM_WRITE(bg15_1_w) AM_SHARE("bg15_1_ram") // r5g5b5 200x200 tile-based - AM_RANGE(0x608000, 0x609fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x60c000, 0x60c003) AM_RAM AM_SHARE("scroll") // write - AM_RANGE(0x60c00c, 0x60c00d) AM_RAM AM_SHARE("enable") // write + map(0x600000, 0x603fff).ram().w(this, FUNC(joystand_state::bg2_w)).share("bg2_ram"); + map(0x604000, 0x605fff).ram().w(this, FUNC(joystand_state::bg1_w)).share("bg1_ram"); + map(0x606000, 0x607fff).ram().w(this, FUNC(joystand_state::bg15_1_w)).share("bg15_1_ram"); // r5g5b5 200x200 tile-based + map(0x608000, 0x609fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x60c000, 0x60c003).ram().share("scroll"); // write + map(0x60c00c, 0x60c00d).ram().share("enable"); // write - AM_RANGE(0x800000, 0xdfffff) AM_READWRITE(cart_r, cart_w) // r/w (cart flash) + map(0x800000, 0xdfffff).rw(this, FUNC(joystand_state::cart_r), FUNC(joystand_state::cart_w)); // r/w (cart flash) // AM_RANGE(0xe00080, 0xe00081) // write (bit 0 = cart? bit 1 = ? bit 3 = ?) - AM_RANGE(0xe00000, 0xe00001) AM_READ(e00000_r) // copy slot - AM_RANGE(0xe00020, 0xe00021) AM_READ(e00020_r) // master slot + map(0xe00000, 0xe00001).r(this, FUNC(joystand_state::e00000_r)); // copy slot + map(0xe00020, 0xe00021).r(this, FUNC(joystand_state::e00020_r)); // master slot - AM_RANGE(0xe80040, 0xe8005f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) + map(0xe80040, 0xe8005f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} static INPUT_PORTS_START( joystand ) diff --git a/src/mame/drivers/jp.cpp b/src/mame/drivers/jp.cpp index 10c9262064e..4226ed522c4 100644 --- a/src/mame/drivers/jp.cpp +++ b/src/mame/drivers/jp.cpp @@ -84,24 +84,26 @@ private: }; -ADDRESS_MAP_START(jp_state::jp_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram") // ram-"5128" battery backed - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_device, address_w) - AM_RANGE(0x6001, 0x6001) AM_MIRROR(0x1ffc) AM_DEVREAD("ay", ay8910_device, data_r) - AM_RANGE(0x6002, 0x6002) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay", ay8910_device, data_w) - AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x1ff8) AM_WRITE(out1_w) - AM_RANGE(0xc000, 0xc007) AM_MIRROR(0x1ff8) AM_WRITE(out2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jp_state::jp_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // includes ADPCM data from 0x0400 to 0x3fff - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x5000, 0x5000) AM_WRITE(sample_bank_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("adpcm_select", ls157_device, ba_w) - AM_RANGE(0x7000, 0x7000) AM_WRITE(adpcm_reset_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("adpcm_bank") -ADDRESS_MAP_END +void jp_state::jp_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).mirror(0x1800).ram().share("nvram"); // ram-"5128" battery backed + map(0x6000, 0x6000).mirror(0x1ffc).w("ay", FUNC(ay8910_device::address_w)); + map(0x6001, 0x6001).mirror(0x1ffc).r("ay", FUNC(ay8910_device::data_r)); + map(0x6002, 0x6002).mirror(0x1ffc).w("ay", FUNC(ay8910_device::data_w)); + map(0xa000, 0xa007).mirror(0x1ff8).w(this, FUNC(jp_state::out1_w)); + map(0xc000, 0xc007).mirror(0x1ff8).w(this, FUNC(jp_state::out2_w)); +} + +void jp_state::jp_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // includes ADPCM data from 0x0400 to 0x3fff + map(0x4000, 0x47ff).ram(); + map(0x5000, 0x5000).w(this, FUNC(jp_state::sample_bank_w)); + map(0x6000, 0x6000).w(m_adpcm_select, FUNC(ls157_device::ba_w)); + map(0x7000, 0x7000).w(this, FUNC(jp_state::adpcm_reset_w)); + map(0x8000, 0xffff).bankr("adpcm_bank"); +} static INPUT_PORTS_START( jp ) PORT_START("SW.0") diff --git a/src/mame/drivers/jpmimpct.cpp b/src/mame/drivers/jpmimpct.cpp index 3a134968d51..3e973236ccf 100644 --- a/src/mame/drivers/jpmimpct.cpp +++ b/src/mame/drivers/jpmimpct.cpp @@ -585,54 +585,56 @@ WRITE16_MEMBER(jpmimpct_state::jpmio_w) * Main CPU memory handlers * *************************************/ -ADDRESS_MAP_START(jpmimpct_state::m68k_program_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM - AM_RANGE(0x00100000, 0x001fffff) AM_ROM - AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x00480000, 0x0048001f) AM_READWRITE(duart_1_r, duart_1_w) - AM_RANGE(0x00480020, 0x00480033) AM_READ(inputs1_r) - AM_RANGE(0x00480034, 0x00480035) AM_READ(unk_r) - AM_RANGE(0x00480060, 0x00480067) AM_READWRITE(unk_r, unk_w)//PPI - AM_RANGE(0x00480080, 0x00480081) AM_WRITE(upd7759_w) - AM_RANGE(0x00480082, 0x00480083) AM_WRITE(volume_w) - AM_RANGE(0x00480084, 0x00480085) AM_READ(upd7759_r) - AM_RANGE(0x004800a0, 0x004800af) AM_READWRITE(jpmio_r, jpmio_w) - AM_RANGE(0x004800e0, 0x004800e1) AM_WRITE(unk_w) - AM_RANGE(0x004801dc, 0x004801dd) AM_READ(unk_r) - AM_RANGE(0x004801de, 0x004801df) AM_READ(unk_r) - AM_RANGE(0x004801e0, 0x004801ff) AM_READWRITE(duart_2_r, duart_2_w) - AM_RANGE(0x00800000, 0x00800007) AM_DEVREADWRITE("dsp", tms34010_device, host_r, host_w) - AM_RANGE(0x00c00000, 0x00cfffff) AM_ROM - AM_RANGE(0x00d00000, 0x00dfffff) AM_ROM - AM_RANGE(0x00e00000, 0x00efffff) AM_ROM - AM_RANGE(0x00f00000, 0x00ffffff) AM_ROM -ADDRESS_MAP_END +void jpmimpct_state::m68k_program_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); + map(0x00100000, 0x001fffff).rom(); + map(0x00400000, 0x00403fff).ram().share("nvram"); + map(0x00480000, 0x0048001f).rw(this, FUNC(jpmimpct_state::duart_1_r), FUNC(jpmimpct_state::duart_1_w)); + map(0x00480020, 0x00480033).r(this, FUNC(jpmimpct_state::inputs1_r)); + map(0x00480034, 0x00480035).r(this, FUNC(jpmimpct_state::unk_r)); + map(0x00480060, 0x00480067).rw(this, FUNC(jpmimpct_state::unk_r), FUNC(jpmimpct_state::unk_w));//PPI + map(0x00480080, 0x00480081).w(this, FUNC(jpmimpct_state::upd7759_w)); + map(0x00480082, 0x00480083).w(this, FUNC(jpmimpct_state::volume_w)); + map(0x00480084, 0x00480085).r(this, FUNC(jpmimpct_state::upd7759_r)); + map(0x004800a0, 0x004800af).rw(this, FUNC(jpmimpct_state::jpmio_r), FUNC(jpmimpct_state::jpmio_w)); + map(0x004800e0, 0x004800e1).w(this, FUNC(jpmimpct_state::unk_w)); + map(0x004801dc, 0x004801dd).r(this, FUNC(jpmimpct_state::unk_r)); + map(0x004801de, 0x004801df).r(this, FUNC(jpmimpct_state::unk_r)); + map(0x004801e0, 0x004801ff).rw(this, FUNC(jpmimpct_state::duart_2_r), FUNC(jpmimpct_state::duart_2_w)); + map(0x00800000, 0x00800007).rw(m_dsp, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); + map(0x00c00000, 0x00cfffff).rom(); + map(0x00d00000, 0x00dfffff).rom(); + map(0x00e00000, 0x00efffff).rom(); + map(0x00f00000, 0x00ffffff).rom(); +} /************************************* * * Main CPU memory handlers * *************************************/ -ADDRESS_MAP_START(jpmimpct_state::awp68k_program_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM // most games are 0x00000000 - 0x0003ffff, but some QPS ones go up to fffff, check for any mirroring etc. - AM_RANGE(0x00400000, 0x00403fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x00480000, 0x0048001f) AM_READWRITE(duart_1_r, duart_1_w) - AM_RANGE(0x00480020, 0x00480033) AM_READ(inputs1awp_r) - AM_RANGE(0x00480034, 0x00480035) AM_READ(ump_r) - AM_RANGE(0x00480040, 0x00480041) AM_READ(optos_r) - AM_RANGE(0x00480060, 0x00480067) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write,0x00ff) - AM_RANGE(0x00480080, 0x00480081) AM_WRITE(upd7759_w) - AM_RANGE(0x00480082, 0x00480083) AM_WRITE(volume_w) - AM_RANGE(0x00480084, 0x00480085) AM_READ(upd7759_r) - AM_RANGE(0x00480086, 0x0048009f) AM_READ(prot_1_r) - AM_RANGE(0x004800a0, 0x004800af) AM_READWRITE(jpmio_r, jpmioawp_w) +void jpmimpct_state::awp68k_program_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); // most games are 0x00000000 - 0x0003ffff, but some QPS ones go up to fffff, check for any mirroring etc. + map(0x00400000, 0x00403fff).ram().share("nvram"); + map(0x00480000, 0x0048001f).rw(this, FUNC(jpmimpct_state::duart_1_r), FUNC(jpmimpct_state::duart_1_w)); + map(0x00480020, 0x00480033).r(this, FUNC(jpmimpct_state::inputs1awp_r)); + map(0x00480034, 0x00480035).r(this, FUNC(jpmimpct_state::ump_r)); + map(0x00480040, 0x00480041).r(this, FUNC(jpmimpct_state::optos_r)); + map(0x00480060, 0x00480067).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x00480080, 0x00480081).w(this, FUNC(jpmimpct_state::upd7759_w)); + map(0x00480082, 0x00480083).w(this, FUNC(jpmimpct_state::volume_w)); + map(0x00480084, 0x00480085).r(this, FUNC(jpmimpct_state::upd7759_r)); + map(0x00480086, 0x0048009f).r(this, FUNC(jpmimpct_state::prot_1_r)); + map(0x004800a0, 0x004800af).rw(this, FUNC(jpmimpct_state::jpmio_r), FUNC(jpmimpct_state::jpmioawp_w)); // AM_RANGE(0x004800b0, 0x004800df) AM_READ(prot_1_r) // AM_RANGE(0x004800e0, 0x004800e1) AM_WRITE(unk_w) // AM_RANGE(0x00480086, 0x006576ff) AM_READ(prot_1_r) - AM_RANGE(0x004801dc, 0x004801dd) AM_READ(prot_1_r) - AM_RANGE(0x004801de, 0x006575ff) AM_READ(prot_1_r) - AM_RANGE(0x00657600, 0x00657601) AM_READ(prot_0_r) - AM_RANGE(0x00657602, 0x00ffffff) AM_READ(prot_1_r) + map(0x004801dc, 0x004801dd).r(this, FUNC(jpmimpct_state::prot_1_r)); + map(0x004801de, 0x006575ff).r(this, FUNC(jpmimpct_state::prot_1_r)); + map(0x00657600, 0x00657601).r(this, FUNC(jpmimpct_state::prot_0_r)); + map(0x00657602, 0x00ffffff).r(this, FUNC(jpmimpct_state::prot_1_r)); // AM_RANGE(0x004801dc, 0x004801dd) AM_READ(unk_r) // AM_RANGE(0x004801de, 0x004801df) AM_READ(unk_r) @@ -642,7 +644,7 @@ ADDRESS_MAP_START(jpmimpct_state::awp68k_program_map) // AM_RANGE(0x00d00000, 0x00dfffff) AM_ROM // AM_RANGE(0x00e00000, 0x00efffff) AM_ROM // AM_RANGE(0x00f00000, 0x00ffffff) AM_ROM -ADDRESS_MAP_END +} /************************************* @@ -651,15 +653,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(jpmimpct_state::tms_program_map) - AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0xf8000000) AM_RAM AM_SHARE("vram") - AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0xf8000000) AM_ROM AM_REGION("user1", 0x100000) - AM_RANGE(0x02000000, 0x027fffff) AM_MIRROR(0xf8000000) AM_ROM AM_REGION("user1", 0) +void jpmimpct_state::tms_program_map(address_map &map) +{ + map(0x00000000, 0x003fffff).mirror(0xf8000000).ram().share("vram"); + map(0x00800000, 0x00ffffff).mirror(0xf8000000).rom().region("user1", 0x100000); + map(0x02000000, 0x027fffff).mirror(0xf8000000).rom().region("user1", 0); // AM_RANGE(0x01000000, 0x0100003f) AM_MIRROR(0xf87fffc0) AM_READWRITE(jpmimpct_bt477_r, jpmimpct_bt477_w) - AM_RANGE(0x01000000, 0x017fffff) AM_MIRROR(0xf8000000) AM_MASK(0x1f) AM_READWRITE(jpmimpct_bt477_r, jpmimpct_bt477_w) - AM_RANGE(0x07800000, 0x07bfffff) AM_MIRROR(0xf8400000) AM_RAM - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("dsp", tms34010_device, io_register_r, io_register_w) -ADDRESS_MAP_END + map(0x01000000, 0x017fffff).mirror(0xf8000000).mask(0x1f).rw(this, FUNC(jpmimpct_state::jpmimpct_bt477_r), FUNC(jpmimpct_state::jpmimpct_bt477_w)); + map(0x07800000, 0x07bfffff).mirror(0xf8400000).ram(); + map(0xc0000000, 0xc00001ff).rw(m_dsp, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); +} /************************************* diff --git a/src/mame/drivers/jpmmps.cpp b/src/mame/drivers/jpmmps.cpp index 3417aa3d713..de1acd8d302 100644 --- a/src/mame/drivers/jpmmps.cpp +++ b/src/mame/drivers/jpmmps.cpp @@ -165,20 +165,22 @@ public: DECLARE_WRITE8_MEMBER(jpmmps_ic22_portc_w); }; -ADDRESS_MAP_START(jpmmps_state::jpmmps_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM +void jpmmps_state::jpmmps_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_ic26", i8255_device, read, write) - AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_ic21", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_ic22", i8255_device, read, write) - AM_RANGE(0xc00c, 0xc00f) AM_DEVREADWRITE("ppi8255_ic25", i8255_device, read, write) + map(0xc000, 0xc003).rw("ppi8255_ic26", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc004, 0xc007).rw("ppi8255_ic21", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).rw("ppi8255_ic22", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc00c, 0xc00f).rw("ppi8255_ic25", FUNC(i8255_device::read), FUNC(i8255_device::write)); - AM_RANGE(0xe800, 0xefff) AM_RAM -ADDRESS_MAP_END + map(0xe800, 0xefff).ram(); +} -ADDRESS_MAP_START(jpmmps_state::jpmmps_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("tms9902_ic5", tms9902_device, cruread, cruwrite) +void jpmmps_state::jpmmps_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x001f).rw("tms9902_ic5", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); // AM_RANGE(0x0020, 0x0020) // power fail // AM_RANGE(0x0021, 0x0021) // wd timeout @@ -188,9 +190,9 @@ ADDRESS_MAP_START(jpmmps_state::jpmmps_io_map) // AM_RANGE(0x0026, 0x0026) // uart4 int // AM_RANGE(0x0027, 0x0027) // uart2 int - AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE("tms9902_ic10", tms9902_device, cruread, cruwrite) - AM_RANGE(0x0060, 0x0067) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END + map(0x0040, 0x005f).rw("tms9902_ic10", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); + map(0x0060, 0x0067).w("mainlatch", FUNC(ls259_device::write_d0)); +} static INPUT_PORTS_START( jpmmps ) diff --git a/src/mame/drivers/jpms80.cpp b/src/mame/drivers/jpms80.cpp index 6cd5547645b..860eebad8b9 100644 --- a/src/mame/drivers/jpms80.cpp +++ b/src/mame/drivers/jpms80.cpp @@ -88,29 +88,31 @@ WRITE_LINE_MEMBER(jpms80_state::io_enable_w) { } -ADDRESS_MAP_START(jpms80_state::jpms80_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_RAM -ADDRESS_MAP_END +void jpms80_state::jpms80_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x3fff).ram(); +} -ADDRESS_MAP_START(jpms80_state::jpms80_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x1ff) +void jpms80_state::jpms80_io_map(address_map &map) +{ + map.global_mask(0x1ff); // AM_RANGE(0x0000, 0x001f) // I/O & Optic (in) - AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("outlatch0", ls259_device, write_d0) - AM_RANGE(0x0008, 0x000f) AM_DEVWRITE("outlatch1", ls259_device, write_d0) - AM_RANGE(0x0010, 0x0017) AM_DEVWRITE("outlatch2", ls259_device, write_d0) - AM_RANGE(0x0018, 0x001f) AM_DEVWRITE("outlatch3", ls259_device, write_d0) - AM_RANGE(0x0020, 0x0027) AM_DEVWRITE("outlatch4", ls259_device, write_d0) - AM_RANGE(0x0028, 0x002f) AM_DEVWRITE("outlatch5", ls259_device, write_d0) - AM_RANGE(0x0030, 0x0037) AM_DEVWRITE("outlatch6", ls259_device, write_d0) - AM_RANGE(0x0038, 0x003f) AM_DEVWRITE("outlatch7", ls259_device, write_d0) - AM_RANGE(0x0040, 0x0047) AM_DEVWRITE("outlatch8", ls259_device, write_d0) - AM_RANGE(0x0048, 0x004f) AM_DEVWRITE("outlatch9", ls259_device, write_d0) - AM_RANGE(0x0050, 0x0057) AM_DEVWRITE("outlatch10", ls259_device, write_d0) + map(0x0000, 0x0007).w("outlatch0", FUNC(ls259_device::write_d0)); + map(0x0008, 0x000f).w("outlatch1", FUNC(ls259_device::write_d0)); + map(0x0010, 0x0017).w("outlatch2", FUNC(ls259_device::write_d0)); + map(0x0018, 0x001f).w("outlatch3", FUNC(ls259_device::write_d0)); + map(0x0020, 0x0027).w("outlatch4", FUNC(ls259_device::write_d0)); + map(0x0028, 0x002f).w("outlatch5", FUNC(ls259_device::write_d0)); + map(0x0030, 0x0037).w("outlatch6", FUNC(ls259_device::write_d0)); + map(0x0038, 0x003f).w("outlatch7", FUNC(ls259_device::write_d0)); + map(0x0040, 0x0047).w("outlatch8", FUNC(ls259_device::write_d0)); + map(0x0048, 0x004f).w("outlatch9", FUNC(ls259_device::write_d0)); + map(0x0050, 0x0057).w("outlatch10", FUNC(ls259_device::write_d0)); // AM_RANGE(0x0140, 0x015f) // AY - AM_RANGE(0x01e0, 0x01ff) AM_DEVREADWRITE("tms9902duart", tms9902_device, cruread, cruwrite) + map(0x01e0, 0x01ff).rw("tms9902duart", FUNC(tms9902_device::cruread), FUNC(tms9902_device::cruwrite)); // Lamps, Meters etc. can move around -ADDRESS_MAP_END +} static INPUT_PORTS_START( jpms80 ) diff --git a/src/mame/drivers/jpmsru.cpp b/src/mame/drivers/jpmsru.cpp index 5fe0a58a6c4..f99719b8d35 100644 --- a/src/mame/drivers/jpmsru.cpp +++ b/src/mame/drivers/jpmsru.cpp @@ -48,21 +48,24 @@ public: /* System with RAM at 0x0c00 */ -ADDRESS_MAP_START(jpmsru_state::jpmsru_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0eff) AM_RAM -ADDRESS_MAP_END +void jpmsru_state::jpmsru_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0eff).ram(); +} /* System with RAM at 0x0e00 */ -ADDRESS_MAP_START(jpmsru_state::jpmsru_4_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0eff) AM_RAM - AM_RANGE(0x0f00, 0x0fff) AM_ROM -ADDRESS_MAP_END +void jpmsru_state::jpmsru_4_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0eff).ram(); + map(0x0f00, 0x0fff).rom(); +} -ADDRESS_MAP_START(jpmsru_state::jpmsru_io) -ADDRESS_MAP_END +void jpmsru_state::jpmsru_io(address_map &map) +{ +} static INPUT_PORTS_START( jpmsru ) diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp index 26ab8b59d9f..3bf67b2275e 100644 --- a/src/mame/drivers/jpmsys5.cpp +++ b/src/mame/drivers/jpmsys5.cpp @@ -274,42 +274,46 @@ READ16_MEMBER(jpmsys5_state::jpm_upd7759_r) * *************************************/ -ADDRESS_MAP_START(jpmsys5_state::jpm_sys5_common_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x046000, 0x046001) AM_WRITENOP - AM_RANGE(0x046020, 0x046023) AM_DEVREADWRITE8("acia6850_0", acia6850_device, read, write, 0xff) - AM_RANGE(0x046040, 0x04604f) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0xff) - AM_RANGE(0x046060, 0x046067) AM_DEVREADWRITE8("6821pia", pia6821_device, read, write,0xff) - AM_RANGE(0x046080, 0x046083) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0xff) - AM_RANGE(0x04608c, 0x04608f) AM_DEVREADWRITE8("acia6850_2", acia6850_device, read, write, 0xff) - AM_RANGE(0x0460c0, 0x0460c1) AM_WRITENOP - AM_RANGE(0x048000, 0x04801f) AM_READWRITE(coins_r, coins_w) - AM_RANGE(0x04c000, 0x04c0ff) AM_READ(mux_r) AM_WRITE(mux_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jpmsys5_state::m68000_awp_map) - AM_IMPORT_FROM(jpm_sys5_common_map) - AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jpmsys5_state::m68000_awp_map_saa) - AM_IMPORT_FROM(jpm_sys5_common_map) - AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w) // do the SAA boards have the UPD? -ADDRESS_MAP_END - -ADDRESS_MAP_START(jpmsys5v_state::m68000_map) - AM_IMPORT_FROM(jpm_sys5_common_map) - AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE(rombank_w) // extra on video system (rom board?) (although regular games do write here?) - AM_RANGE(0x020000, 0x03ffff) AM_ROMBANK("bank1") // extra on video system (rom board?) - AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) - AM_RANGE(0x0460e0, 0x0460e5) AM_WRITE(ramdac_w) // extra on video system (rom board?) - AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w) - AM_RANGE(0x800000, 0xcfffff) AM_READWRITE(sys5_tms34061_r, sys5_tms34061_w) // extra on video system (rom board?) -ADDRESS_MAP_END +void jpmsys5_state::jpm_sys5_common_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x043fff).ram().share("nvram"); + map(0x046000, 0x046001).nopw(); + map(0x046020, 0x046023).rw("acia6850_0", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x046040, 0x04604f).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0x046060, 0x046067).rw("6821pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff); + map(0x046080, 0x046083).rw("acia6850_1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x04608c, 0x04608f).rw("acia6850_2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0x0460c0, 0x0460c1).nopw(); + map(0x048000, 0x04801f).rw(this, FUNC(jpmsys5_state::coins_r), FUNC(jpmsys5_state::coins_w)); + map(0x04c000, 0x04c0ff).r(this, FUNC(jpmsys5_state::mux_r)).w(this, FUNC(jpmsys5_state::mux_w)); +} + +void jpmsys5_state::m68000_awp_map(address_map &map) +{ + jpm_sys5_common_map(map); + map(0x0460a0, 0x0460a3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x04c100, 0x04c105).rw(this, FUNC(jpmsys5_state::jpm_upd7759_r), FUNC(jpmsys5_state::jpm_upd7759_w)); +} + +void jpmsys5_state::m68000_awp_map_saa(address_map &map) +{ + jpm_sys5_common_map(map); + map(0x0460a0, 0x0460a3).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0x04c100, 0x04c105).rw(this, FUNC(jpmsys5_state::jpm_upd7759_r), FUNC(jpmsys5_state::jpm_upd7759_w)); // do the SAA boards have the UPD? +} + +void jpmsys5v_state::m68000_map(address_map &map) +{ + jpm_sys5_common_map(map); + map(0x01fffe, 0x01ffff).w(this, FUNC(jpmsys5v_state::rombank_w)); // extra on video system (rom board?) (although regular games do write here?) + map(0x020000, 0x03ffff).bankr("bank1"); // extra on video system (rom board?) + map(0x0460a0, 0x0460a3).w("ym2413", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x0460e0, 0x0460e5).w(this, FUNC(jpmsys5v_state::ramdac_w)); // extra on video system (rom board?) + map(0x04c100, 0x04c105).rw(this, FUNC(jpmsys5v_state::jpm_upd7759_r), FUNC(jpmsys5v_state::jpm_upd7759_w)); + map(0x800000, 0xcfffff).rw(this, FUNC(jpmsys5v_state::sys5_tms34061_r), FUNC(jpmsys5v_state::sys5_tms34061_w)); // extra on video system (rom board?) +} diff --git a/src/mame/drivers/jpmsys7.cpp b/src/mame/drivers/jpmsys7.cpp index 9da4732afbd..0613d14fa74 100644 --- a/src/mame/drivers/jpmsys7.cpp +++ b/src/mame/drivers/jpmsys7.cpp @@ -42,14 +42,15 @@ protected: }; -ADDRESS_MAP_START(jpmsys7_state::jpmsys7_map) - AM_RANGE(0x00000000, 0x002fffff) AM_ROM - AM_RANGE(0x10000000, 0x1000ffff) AM_RAM - AM_RANGE(0x20000018, 0x2000001b) AM_WRITENOP // large data upload like astra/pluto? - AM_RANGE(0x50000000, 0x50001fff) AM_RAM - - AM_RANGE(0xf0000000, 0xf00003ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, dev_r, dev_w) // technically this can be moved with MBAR -ADDRESS_MAP_END +void jpmsys7_state::jpmsys7_map(address_map &map) +{ + map(0x00000000, 0x002fffff).rom(); + map(0x10000000, 0x1000ffff).ram(); + map(0x20000018, 0x2000001b).nopw(); // large data upload like astra/pluto? + map(0x50000000, 0x50001fff).ram(); + + map(0xf0000000, 0xf00003ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::dev_r), FUNC(mcf5206e_peripheral_device::dev_w)); // technically this can be moved with MBAR +} static INPUT_PORTS_START( jpmsys7 ) INPUT_PORTS_END diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp index 5419e92b447..189a4c689a0 100644 --- a/src/mame/drivers/jr100.cpp +++ b/src/mame/drivers/jr100.cpp @@ -130,14 +130,15 @@ WRITE8_MEMBER(jr100_state::jr100_via_w) m_via->write(space,offset,data); } -ADDRESS_MAP_START(jr100_state::jr100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("pcg") - AM_RANGE(0xc100, 0xc3ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xc800, 0xc80f) AM_DEVREAD("via", via6522_device, read) AM_WRITE(jr100_via_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void jr100_state::jr100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram().share("ram"); + map(0xc000, 0xc0ff).ram().share("pcg"); + map(0xc100, 0xc3ff).ram().share("vram"); + map(0xc800, 0xc80f).r(m_via, FUNC(via6522_device::read)).w(this, FUNC(jr100_state::jr100_via_w)); + map(0xe000, 0xffff).rom(); +} /* Input ports */ INPUT_PORTS_START( jr100 ) diff --git a/src/mame/drivers/jr200.cpp b/src/mame/drivers/jr200.cpp index 2ede1966cc5..41fcce12e8e 100644 --- a/src/mame/drivers/jr200.cpp +++ b/src/mame/drivers/jr200.cpp @@ -372,29 +372,30 @@ WRITE8_MEMBER(jr200_state::mn1271_io_w) } } -ADDRESS_MAP_START(jr200_state::jr200_mem) +void jr200_state::jr200_mem(address_map &map) +{ /* 0000-3fff RAM 4000-4fff RAM ( 4k expansion) 4000-7fff RAM (16k expansion) 4000-bfff RAM (32k expansion) */ - AM_RANGE(0x0000, 0x7fff) AM_RAM + map(0x0000, 0x7fff).ram(); - AM_RANGE(0xa000, 0xbfff) AM_ROM + map(0xa000, 0xbfff).rom(); - AM_RANGE(0xc000, 0xc0ff) AM_READWRITE(jr200_pcg_1_r,jr200_pcg_1_w) //PCG area (1) - AM_RANGE(0xc100, 0xc3ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xc400, 0xc4ff) AM_READWRITE(jr200_pcg_2_r,jr200_pcg_2_w) //PCG area (2) - AM_RANGE(0xc500, 0xc7ff) AM_RAM AM_SHARE("cram") + map(0xc000, 0xc0ff).rw(this, FUNC(jr200_state::jr200_pcg_1_r), FUNC(jr200_state::jr200_pcg_1_w)); //PCG area (1) + map(0xc100, 0xc3ff).ram().share("vram"); + map(0xc400, 0xc4ff).rw(this, FUNC(jr200_state::jr200_pcg_2_r), FUNC(jr200_state::jr200_pcg_2_w)); //PCG area (2) + map(0xc500, 0xc7ff).ram().share("cram"); // 0xc800 - 0xcfff I / O area - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(mn1271_io_r,mn1271_io_w) AM_SHARE("mn1271_ram") + map(0xc800, 0xcfff).rw(this, FUNC(jr200_state::mn1271_io_r), FUNC(jr200_state::mn1271_io_w)).share("mn1271_ram"); - AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(jr200_bios_char_r,jr200_bios_char_w) //BIOS PCG RAM area - AM_RANGE(0xd800, 0xdfff) AM_ROM // cart space (header 0x7e) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xd000, 0xd7ff).rw(this, FUNC(jr200_state::jr200_bios_char_r), FUNC(jr200_state::jr200_bios_char_w)); //BIOS PCG RAM area + map(0xd800, 0xdfff).rom(); // cart space (header 0x7e) + map(0xe000, 0xffff).rom(); +} /* Input ports */ static INPUT_PORTS_START( jr200 ) diff --git a/src/mame/drivers/jrpacman.cpp b/src/mame/drivers/jrpacman.cpp index 93b85e7355c..75eb62c2f7d 100644 --- a/src/mame/drivers/jrpacman.cpp +++ b/src/mame/drivers/jrpacman.cpp @@ -142,28 +142,30 @@ WRITE_LINE_MEMBER(jrpacman_state::irq_mask_w) * *************************************/ -ADDRESS_MAP_START(jrpacman_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(jrpacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4fef) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x503f) AM_READ_PORT("P1") - AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("latch1", ls259_device, write_d0) - AM_RANGE(0x5040, 0x507f) AM_READ_PORT("P2") - AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x5077) AM_DEVWRITE("latch2", ls259_device, write_d0) - AM_RANGE(0x5080, 0x50bf) AM_READ_PORT("DSW") - AM_RANGE(0x5080, 0x5080) AM_WRITE(jrpacman_scroll_w) - AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0xdfff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(jrpacman_state::port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0, 0) AM_WRITE(jrpacman_interrupt_vector_w) -ADDRESS_MAP_END +void jrpacman_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().w(this, FUNC(jrpacman_state::jrpacman_videoram_w)).share("videoram"); + map(0x4800, 0x4fef).ram(); + map(0x4ff0, 0x4fff).ram().share("spriteram"); + map(0x5000, 0x503f).portr("P1"); + map(0x5000, 0x5007).w("latch1", FUNC(ls259_device::write_d0)); + map(0x5040, 0x507f).portr("P2"); + map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).writeonly().share("spriteram2"); + map(0x5070, 0x5077).w("latch2", FUNC(ls259_device::write_d0)); + map(0x5080, 0x50bf).portr("DSW"); + map(0x5080, 0x5080).w(this, FUNC(jrpacman_state::jrpacman_scroll_w)); + map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0xdfff).rom(); +} + + +void jrpacman_state::port_map(address_map &map) +{ + map.global_mask(0xff); + map(0, 0).w(this, FUNC(jrpacman_state::jrpacman_interrupt_vector_w)); +} diff --git a/src/mame/drivers/jtc.cpp b/src/mame/drivers/jtc.cpp index ec4ae25d00e..d70e07ac9e4 100644 --- a/src/mame/drivers/jtc.cpp +++ b/src/mame/drivers/jtc.cpp @@ -210,86 +210,90 @@ WRITE8_MEMBER( jtces40_state::banksel_w ) /* Memory Maps */ -ADDRESS_MAP_START(jtc_state::jtc_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1") - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2") - AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3") - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4") - AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5") - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6") - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7") - AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8") - AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9") - AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10") - AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11") - AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12") - AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jtces88_state::jtc_es1988_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0800, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_ROM - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1") - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2") - AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3") - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4") - AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5") - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6") - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7") - AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8") - AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9") - AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10") - AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11") - AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12") - AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jtces23_state::jtc_es23_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0800, 0x17ff) AM_ROM - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0ff0) AM_READ_PORT("Y0") - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1") - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2") - AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3") - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4") - AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5") - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6") - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7") - AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8") - AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9") - AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10") - AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11") - AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12") - AM_RANGE(0x700d, 0x700d) AM_MIRROR(0x0ff0) AM_READ_PORT("Y13") - AM_RANGE(0x700e, 0x700e) AM_MIRROR(0x0ff0) AM_READ_PORT("Y14") - AM_RANGE(0x700f, 0x700f) AM_MIRROR(0x0ff0) AM_READ_PORT("Y15") - AM_RANGE(0xe000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jtces40_state::jtc_es40_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0800, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_READWRITE(videoram_r, videoram_w) - AM_RANGE(0x6000, 0x63ff) AM_WRITE(banksel_w) - AM_RANGE(0x7001, 0x7001) AM_MIRROR(0x0ff0) AM_READ_PORT("Y1") - AM_RANGE(0x7002, 0x7002) AM_MIRROR(0x0ff0) AM_READ_PORT("Y2") - AM_RANGE(0x7003, 0x7003) AM_MIRROR(0x0ff0) AM_READ_PORT("Y3") - AM_RANGE(0x7004, 0x7004) AM_MIRROR(0x0ff0) AM_READ_PORT("Y4") - AM_RANGE(0x7005, 0x7005) AM_MIRROR(0x0ff0) AM_READ_PORT("Y5") - AM_RANGE(0x7006, 0x7006) AM_MIRROR(0x0ff0) AM_READ_PORT("Y6") - AM_RANGE(0x7007, 0x7007) AM_MIRROR(0x0ff0) AM_READ_PORT("Y7") - AM_RANGE(0x7008, 0x7008) AM_MIRROR(0x0ff0) AM_READ_PORT("Y8") - AM_RANGE(0x7009, 0x7009) AM_MIRROR(0x0ff0) AM_READ_PORT("Y9") - AM_RANGE(0x700a, 0x700a) AM_MIRROR(0x0ff0) AM_READ_PORT("Y10") - AM_RANGE(0x700b, 0x700b) AM_MIRROR(0x0ff0) AM_READ_PORT("Y11") - AM_RANGE(0x700c, 0x700c) AM_MIRROR(0x0ff0) AM_READ_PORT("Y12") - AM_RANGE(0x8000, 0xffff) AM_RAM//BANK(1) -ADDRESS_MAP_END +void jtc_state::jtc_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1"); + map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2"); + map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3"); + map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4"); + map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5"); + map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6"); + map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7"); + map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8"); + map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9"); + map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10"); + map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11"); + map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12"); + map(0xe000, 0xfdff).ram(); + map(0xfe00, 0xffff).ram().share("video_ram"); +} + +void jtces88_state::jtc_es1988_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0800, 0x0fff).rom(); + map(0x2000, 0x27ff).rom(); + map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1"); + map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2"); + map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3"); + map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4"); + map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5"); + map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6"); + map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7"); + map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8"); + map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9"); + map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10"); + map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11"); + map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12"); + map(0xe000, 0xfdff).ram(); + map(0xfe00, 0xffff).ram().share("video_ram"); +} + +void jtces23_state::jtc_es23_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0800, 0x17ff).rom(); + map(0x7000, 0x7000).mirror(0x0ff0).portr("Y0"); + map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1"); + map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2"); + map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3"); + map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4"); + map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5"); + map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6"); + map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7"); + map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8"); + map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9"); + map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10"); + map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11"); + map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12"); + map(0x700d, 0x700d).mirror(0x0ff0).portr("Y13"); + map(0x700e, 0x700e).mirror(0x0ff0).portr("Y14"); + map(0x700f, 0x700f).mirror(0x0ff0).portr("Y15"); + map(0xe000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("video_ram"); +} + +void jtces40_state::jtc_es40_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0800, 0x1fff).rom(); + map(0x4000, 0x5fff).rw(this, FUNC(jtces40_state::videoram_r), FUNC(jtces40_state::videoram_w)); + map(0x6000, 0x63ff).w(this, FUNC(jtces40_state::banksel_w)); + map(0x7001, 0x7001).mirror(0x0ff0).portr("Y1"); + map(0x7002, 0x7002).mirror(0x0ff0).portr("Y2"); + map(0x7003, 0x7003).mirror(0x0ff0).portr("Y3"); + map(0x7004, 0x7004).mirror(0x0ff0).portr("Y4"); + map(0x7005, 0x7005).mirror(0x0ff0).portr("Y5"); + map(0x7006, 0x7006).mirror(0x0ff0).portr("Y6"); + map(0x7007, 0x7007).mirror(0x0ff0).portr("Y7"); + map(0x7008, 0x7008).mirror(0x0ff0).portr("Y8"); + map(0x7009, 0x7009).mirror(0x0ff0).portr("Y9"); + map(0x700a, 0x700a).mirror(0x0ff0).portr("Y10"); + map(0x700b, 0x700b).mirror(0x0ff0).portr("Y11"); + map(0x700c, 0x700c).mirror(0x0ff0).portr("Y12"); + map(0x8000, 0xffff).ram();//BANK(1) +} /* Input Ports */ diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp index 7b7bfb9a71c..678810b9050 100644 --- a/src/mame/drivers/jubilee.cpp +++ b/src/mame/drivers/jubilee.cpp @@ -296,30 +296,31 @@ INTERRUPT_GEN_MEMBER(jubilee_state::jubileep_interrupt) * Memory Map Information * *************************/ -ADDRESS_MAP_START(jubilee_state::jubileep_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x2fff) AM_ROM +void jubilee_state::jubileep_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x2fff).rom(); /* Video RAM = 3000-33FF Working RAM = 3400-37FF Color RAM = 3800-3BFF (lower 4-bits) */ - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_WRITE(jubileep_videoram_w) AM_SHARE("videoworkram") /* TC5517AP battery backed RAM */ - AM_RANGE(0x3800, 0x3bff) AM_RAM AM_WRITE(jubileep_colorram_w) AM_SHARE("colorram") /* Whole 2114 RAM */ + map(0x3000, 0x37ff).ram().w(this, FUNC(jubilee_state::jubileep_videoram_w)).share("videoworkram"); /* TC5517AP battery backed RAM */ + map(0x3800, 0x3bff).ram().w(this, FUNC(jubilee_state::jubileep_colorram_w)).share("colorram"); /* Whole 2114 RAM */ /* CRTC *is* mapped here. Read 00-01 and then write on them. Then does the same for 02-03. Initialization seems incomplete since set till register 0x0D. Maybe the last registers are unused. */ - AM_RANGE(0x3e00, 0x3e01) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x3e02, 0x3e03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map(0x3e00, 0x3e01).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x3e02, 0x3e03).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); /* CRTC address: $3E01; register: $3E03 CRTC registers: 2f 20 25 64 26 00 20 23 00 07 00 00 00 screen total: (0x2f+1)*8 (0x26+1)*(0x07+1) ---> 384 x 312 visible area: 0x20 0x20 ---------------------> 256 x 256 */ -ADDRESS_MAP_END +} WRITE8_MEMBER(jubilee_state::unk_w) @@ -568,10 +569,11 @@ READ8_MEMBER(jubilee_state::mux_port_r) } -ADDRESS_MAP_START(jubilee_state::jubileep_cru_map) - AM_RANGE(0x00c8, 0x00c8) AM_READ(mux_port_r) /* multiplexed input port */ - AM_RANGE(0x0000, 0x07ff) AM_WRITE(unk_w) -ADDRESS_MAP_END +void jubilee_state::jubileep_cru_map(address_map &map) +{ + map(0x00c8, 0x00c8).r(this, FUNC(jubilee_state::mux_port_r)); /* multiplexed input port */ + map(0x0000, 0x07ff).w(this, FUNC(jubilee_state::unk_w)); +} /* I/O byte R/W diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp index e4f27c52c56..e09efe19829 100644 --- a/src/mame/drivers/juicebox.cpp +++ b/src/mame/drivers/juicebox.cpp @@ -288,11 +288,12 @@ void juicebox_state::machine_reset() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(juicebox_state::juicebox_map) - AM_RANGE(0x00000000, 0x007fffff) AM_ROM - AM_RANGE(0x04000000, 0x04ffffff) AM_READWRITE(juicebox_nand_r, juicebox_nand_w ) - AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_MIRROR(0x00600000) -ADDRESS_MAP_END +void juicebox_state::juicebox_map(address_map &map) +{ + map(0x00000000, 0x007fffff).rom(); + map(0x04000000, 0x04ffffff).rw(this, FUNC(juicebox_state::juicebox_nand_r), FUNC(juicebox_state::juicebox_nand_w)); + map(0x0c000000, 0x0c1fffff).ram().mirror(0x00600000); +} /*************************************************************************** MACHINE DRIVERS diff --git a/src/mame/drivers/jungleyo.cpp b/src/mame/drivers/jungleyo.cpp index a63491930a3..44d2daba9da 100644 --- a/src/mame/drivers/jungleyo.cpp +++ b/src/mame/drivers/jungleyo.cpp @@ -73,9 +73,10 @@ uint32_t jungleyo_state::screen_update_jungleyo(screen_device &screen, bitmap_in } -ADDRESS_MAP_START(jungleyo_state::jungleyo_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM -ADDRESS_MAP_END +void jungleyo_state::jungleyo_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); +} static INPUT_PORTS_START( jungleyo ) INPUT_PORTS_END diff --git a/src/mame/drivers/junior.cpp b/src/mame/drivers/junior.cpp index dd4c158e88b..708b2af7790 100644 --- a/src/mame/drivers/junior.cpp +++ b/src/mame/drivers/junior.cpp @@ -72,14 +72,15 @@ private: -ADDRESS_MAP_START(junior_state::junior_mem) - ADDRESS_MAP_GLOBAL_MASK(0x1FFF) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM // 1K RAM - AM_RANGE(0x1a00, 0x1a7f) AM_DEVICE("riot", mos6532_new_device, ram_map) - AM_RANGE(0x1a80, 0x1a9f) AM_DEVICE("riot", mos6532_new_device, io_map) - AM_RANGE(0x1c00, 0x1fff) AM_ROM // Monitor -ADDRESS_MAP_END +void junior_state::junior_mem(address_map &map) +{ + map.global_mask(0x1FFF); + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); // 1K RAM + map(0x1a00, 0x1a7f).m(m_riot, FUNC(mos6532_new_device::ram_map)); + map(0x1a80, 0x1a9f).m(m_riot, FUNC(mos6532_new_device::io_map)); + map(0x1c00, 0x1fff).rom(); // Monitor +} INPUT_CHANGED_MEMBER(junior_state::junior_reset) diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp index b6ec69308ae..c0133099e49 100644 --- a/src/mame/drivers/junofrst.cpp +++ b/src/mame/drivers/junofrst.cpp @@ -279,46 +279,50 @@ WRITE8_MEMBER(junofrst_state::i8039_irqen_and_status_w) } -ADDRESS_MAP_START(junofrst_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0x800f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x8010, 0x8010) AM_READ_PORT("DSW2") - AM_RANGE(0x801c, 0x801c) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8020, 0x8020) AM_READ_PORT("SYSTEM") - AM_RANGE(0x8024, 0x8024) AM_READ_PORT("P1") - AM_RANGE(0x8028, 0x8028) AM_READ_PORT("P2") - AM_RANGE(0x802c, 0x802c) AM_READ_PORT("DSW1") - AM_RANGE(0x8030, 0x8037) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x8040, 0x8040) AM_WRITE(sh_irqtrigger_w) - AM_RANGE(0x8050, 0x8050) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x8060, 0x8060) AM_WRITE(bankselect_w) - AM_RANGE(0x8070, 0x8073) AM_WRITE(blitter_w) - AM_RANGE(0x8100, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(junofrst_state::audio_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x4001, 0x4001) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x6000, 0x6000) AM_WRITE(i8039_irq_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(junofrst_state::mcu_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(junofrst_state::mcu_io_map) - AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) -ADDRESS_MAP_END +void junofrst_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).ram().share("videoram"); + map(0x8000, 0x800f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x8010, 0x8010).portr("DSW2"); + map(0x801c, 0x801c).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8020, 0x8020).portr("SYSTEM"); + map(0x8024, 0x8024).portr("P1"); + map(0x8028, 0x8028).portr("P2"); + map(0x802c, 0x802c).portr("DSW1"); + map(0x8030, 0x8037).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x8040, 0x8040).w(this, FUNC(junofrst_state::sh_irqtrigger_w)); + map(0x8050, 0x8050).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x8060, 0x8060).w(this, FUNC(junofrst_state::bankselect_w)); + map(0x8070, 0x8073).w(this, FUNC(junofrst_state::blitter_w)); + map(0x8100, 0x8fff).ram(); + map(0x9000, 0x9fff).bankr("bank1"); + map(0xa000, 0xffff).rom(); +} + + +void junofrst_state::audio_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x4000, 0x4000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x4001, 0x4001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x4002, 0x4002).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x5000, 0x5000).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x6000, 0x6000).w(this, FUNC(junofrst_state::i8039_irq_w)); +} + + +void junofrst_state::mcu_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + + +void junofrst_state::mcu_io_map(address_map &map) +{ + map(0x00, 0xff).r("soundlatch2", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( junofrst ) diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp index cb6b465788d..34f0bcce793 100644 --- a/src/mame/drivers/jupace.cpp +++ b/src/mame/drivers/jupace.cpp @@ -413,33 +413,35 @@ WRITE8_MEMBER(ace_state::pio_bc_w) // ADDRESS_MAP( ace_mem ) //------------------------------------------------- -ADDRESS_MAP_START(ace_state::ace_mem) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x2800, 0x2bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("char_ram") AM_REGION(Z80_TAG, 0xfc00) - AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END +void ace_state::ace_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).mirror(0x0400).ram().share("video_ram"); + map(0x2800, 0x2bff).mirror(0x0400).ram().share("char_ram").region(Z80_TAG, 0xfc00); + map(0x3000, 0x33ff).mirror(0x0c00).ram(); + map(0x4000, 0xffff).ram(); +} //------------------------------------------------- // ADDRESS_MAP( ace_io ) //------------------------------------------------- -ADDRESS_MAP_START(ace_state::ace_io) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x00fe) AM_SELECT(0xff00) AM_READWRITE(io_r, io_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0xff00) AM_READ_PORT("JOY") - AM_RANGE(0x41, 0x41) AM_MIRROR(0xff80) AM_READWRITE(ppi_pa_r, ppi_pa_w) - AM_RANGE(0x43, 0x43) AM_MIRROR(0xff80) AM_READWRITE(ppi_pb_r, ppi_pb_w) - AM_RANGE(0x45, 0x45) AM_MIRROR(0xff80) AM_READWRITE(ppi_pc_r, ppi_pc_w) - AM_RANGE(0x47, 0x47) AM_MIRROR(0xff80) AM_READWRITE(ppi_control_r, ppi_control_w) - AM_RANGE(0x81, 0x81) AM_MIRROR(0xff38) AM_READWRITE(pio_ad_r, pio_ad_w) - AM_RANGE(0x83, 0x83) AM_MIRROR(0xff38) AM_READWRITE(pio_bd_r, pio_bd_w) - AM_RANGE(0x85, 0x85) AM_MIRROR(0xff38) AM_READWRITE(pio_ac_r, pio_ac_w) - AM_RANGE(0x87, 0x87) AM_MIRROR(0xff38) AM_READWRITE(pio_bc_r, pio_bc_w) - AM_RANGE(0xfd, 0xfd) AM_MIRROR(0xff00) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w) - AM_RANGE(0xff, 0xff) AM_MIRROR(0xff00) AM_DEVREADWRITE(AY8910_TAG, ay8910_device, data_r, data_w) -ADDRESS_MAP_END +void ace_state::ace_io(address_map &map) +{ + map(0x00, 0x00).mirror(0x00fe).select(0xff00).rw(this, FUNC(ace_state::io_r), FUNC(ace_state::io_w)); + map(0x01, 0x01).mirror(0xff00).portr("JOY"); + map(0x41, 0x41).mirror(0xff80).rw(this, FUNC(ace_state::ppi_pa_r), FUNC(ace_state::ppi_pa_w)); + map(0x43, 0x43).mirror(0xff80).rw(this, FUNC(ace_state::ppi_pb_r), FUNC(ace_state::ppi_pb_w)); + map(0x45, 0x45).mirror(0xff80).rw(this, FUNC(ace_state::ppi_pc_r), FUNC(ace_state::ppi_pc_w)); + map(0x47, 0x47).mirror(0xff80).rw(this, FUNC(ace_state::ppi_control_r), FUNC(ace_state::ppi_control_w)); + map(0x81, 0x81).mirror(0xff38).rw(this, FUNC(ace_state::pio_ad_r), FUNC(ace_state::pio_ad_w)); + map(0x83, 0x83).mirror(0xff38).rw(this, FUNC(ace_state::pio_bd_r), FUNC(ace_state::pio_bd_w)); + map(0x85, 0x85).mirror(0xff38).rw(this, FUNC(ace_state::pio_ac_r), FUNC(ace_state::pio_ac_w)); + map(0x87, 0x87).mirror(0xff38).rw(this, FUNC(ace_state::pio_bc_r), FUNC(ace_state::pio_bc_w)); + map(0xfd, 0xfd).mirror(0xff00).w(AY8910_TAG, FUNC(ay8910_device::address_w)); + map(0xff, 0xff).mirror(0xff00).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} diff --git a/src/mame/drivers/jupiter.cpp b/src/mame/drivers/jupiter.cpp index 6c4401204ba..da9ce376529 100644 --- a/src/mame/drivers/jupiter.cpp +++ b/src/mame/drivers/jupiter.cpp @@ -104,27 +104,28 @@ private: // ADDRESS_MAP( jupiter_m6800_mem ) //------------------------------------------------- -ADDRESS_MAP_START(jupiter2_state::jupiter2_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0xc000, 0xcfff) AM_RAM // Video RAM - AM_RANGE(0xf000, 0xff00) AM_ROM AM_REGION(MCM6571AP_TAG, 0) +void jupiter2_state::jupiter2_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0xc000, 0xcfff).ram(); // Video RAM + map(0xf000, 0xff00).rom().region(MCM6571AP_TAG, 0); // AM_RANGE(0xff58, 0xff5c) Cartridge Disk Controller PIA // AM_RANGE(0xff60, 0xff76) DMA Controller // AM_RANGE(0xff80, 0xff83) Floppy PIA - AM_RANGE(0xff84, 0xff87) AM_DEVREADWRITE(INS1771N1_TAG, wd_fdc_device_base, read, write) + map(0xff84, 0xff87).rw(INS1771N1_TAG, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)); // AM_RANGE(0xff90, 0xff93) Hytype Parallel Printer PIA // AM_RANGE(0xffa0, 0xffa7) Persci Floppy Disk Controller // AM_RANGE(0xffb0, 0xffb3) Video PIA - AM_RANGE(0xffc0, 0xffc1) AM_DEVREADWRITE("acia0", acia6850_device, read, write) // Serial Port 0 ACIA - AM_RANGE(0xffc4, 0xffc5) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // Serial Port 1 ACIA + map(0xffc0, 0xffc1).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Serial Port 0 ACIA + map(0xffc4, 0xffc5).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Serial Port 1 ACIA // AM_RANGE(0xffc8, 0xffc9) Serial Port 2 ACIA // AM_RANGE(0xffcc, 0xffcd) Serial Port 3 ACIA // AM_RANGE(0xffd0, 0xffd1) Serial Port 4 ACIA / Cassette // AM_RANGE(0xffd4, 0xffd5) Serial Port 5 ACIA / EPROM Programmer (2704/2708) // AM_RANGE(0xffd8, 0xffd9) Serial Port 6 ACIA / Hardware Breakpoint Registers // AM_RANGE(0xffdc, 0xffdd) Serial Port 7 ACIA - AM_RANGE(0xfff8, 0xffff) AM_ROM AM_REGION(MCM6571AP_TAG, 0x0ff8) // vectors -ADDRESS_MAP_END + map(0xfff8, 0xffff).rom().region(MCM6571AP_TAG, 0x0ff8); // vectors +} @@ -132,24 +133,26 @@ ADDRESS_MAP_END // ADDRESS_MAP( jupiter3_mem ) //------------------------------------------------- -ADDRESS_MAP_START(jupiter3_state::jupiter3_mem) - AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION(Z80_TAG, 0) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void jupiter3_state::jupiter3_mem(address_map &map) +{ + map(0x0000, 0xbfff).ram().share("ram"); + map(0xc000, 0xdfff).ram().share("videoram"); + map(0xe000, 0xefff).rom().region(Z80_TAG, 0); + map(0xf000, 0xffff).ram(); +} //------------------------------------------------- // ADDRESS_MAP( jupiter3_io ) //------------------------------------------------- -ADDRESS_MAP_START(jupiter3_state::jupiter3_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xa1, 0xa4) AM_READ(ff_r) - AM_RANGE(0xb0, 0xb0) AM_READ(status_r) - AM_RANGE(0xb2, 0xb2) AM_READ(key_r) -ADDRESS_MAP_END +void jupiter3_state::jupiter3_io(address_map &map) +{ + map.global_mask(0xff); + map(0xa1, 0xa4).r(this, FUNC(jupiter3_state::ff_r)); + map(0xb0, 0xb0).r(this, FUNC(jupiter3_state::status_r)); + map(0xb2, 0xb2).r(this, FUNC(jupiter3_state::key_r)); +} READ8_MEMBER( jupiter3_state::ff_r ) { diff --git a/src/mame/drivers/jvh.cpp b/src/mame/drivers/jvh.cpp index 452e907ce7b..39252100d41 100644 --- a/src/mame/drivers/jvh.cpp +++ b/src/mame/drivers/jvh.cpp @@ -40,12 +40,14 @@ public: -ADDRESS_MAP_START(jvh_state::jvh_map) - AM_RANGE(0x0000, 0x3bff) AM_ROM - AM_RANGE(0x3c00, 0x3cff) AM_RAM -ADDRESS_MAP_END +void jvh_state::jvh_map(address_map &map) +{ + map(0x0000, 0x3bff).rom(); + map(0x3c00, 0x3cff).ram(); +} -ADDRESS_MAP_START(jvh_state::escape_io) +void jvh_state::escape_io(address_map &map) +{ //AM_RANGE(0x01, 0x02) AM_READ(sw1_r) //AM_RANGE(0x03, 0x05) AM_READ(dip_r) //AM_RANGE(0x06, 0x07) AM_READ(sw6_r) @@ -68,9 +70,10 @@ ADDRESS_MAP_START(jvh_state::escape_io) //AM_RANGE(0x68, 0x6f) AM_WRITE(out6b_w) //AM_RANGE(0x70, 0x74) AM_WRITE(out7a_w) //AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(jvh_state::movmastr_io) +void jvh_state::movmastr_io(address_map &map) +{ //AM_RANGE(0x01, 0x02) AM_READ(sw1_r) //AM_RANGE(0x03, 0x05) AM_READ(dip_r) //AM_RANGE(0x08, 0x09) AM_READ(sw6_r) @@ -96,13 +99,14 @@ ADDRESS_MAP_START(jvh_state::movmastr_io) //AM_RANGE(0x68, 0x6f) AM_WRITE(out6b2_w) //AM_RANGE(0x70, 0x74) AM_WRITE(out7a2_w) //AM_RANGE(0x75, 0x7f) AM_WRITE(sol_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(jvh_state::jvh_sub_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE("via", via6522_device, read, write) - AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM -ADDRESS_MAP_END +void jvh_state::jvh_sub_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x0080, 0x008f).rw("via", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xc000, 0xdfff).mirror(0x2000).rom(); +} static INPUT_PORTS_START( jvh ) INPUT_PORTS_END diff --git a/src/mame/drivers/k1003.cpp b/src/mame/drivers/k1003.cpp index 0587c35d22e..fd17a1fe52b 100644 --- a/src/mame/drivers/k1003.cpp +++ b/src/mame/drivers/k1003.cpp @@ -71,14 +71,15 @@ private: }; -ADDRESS_MAP_START(k1003_state::k1003_mem) - AM_RANGE(0x0000,0x07ff) AM_ROM - AM_RANGE(0x0800,0x17ff) AM_RAM - AM_RANGE(0x1800,0x1fff) AM_ROM - AM_RANGE(0x2000,0x27ff) AM_ROM - AM_RANGE(0x2800,0x2fff) AM_RAM - AM_RANGE(0x3000,0x3aff) AM_ROM -ADDRESS_MAP_END +void k1003_state::k1003_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x17ff).ram(); + map(0x1800, 0x1fff).rom(); + map(0x2000, 0x27ff).rom(); + map(0x2800, 0x2fff).ram(); + map(0x3000, 0x3aff).rom(); +} READ8_MEMBER( k1003_state::port2_r ) { @@ -120,15 +121,16 @@ WRITE8_MEMBER( k1003_state::disp_w ) output().set_digit_value(bit_to_dec(data)*2+1, m_disp_2); } -ADDRESS_MAP_START(k1003_state::k1003_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00,0x00) AM_READ(key_r) - AM_RANGE(0x02,0x02) AM_READ(port2_r) +void k1003_state::k1003_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).r(this, FUNC(k1003_state::key_r)); + map(0x02, 0x02).r(this, FUNC(k1003_state::port2_r)); - AM_RANGE(0x08,0x08) AM_WRITE(disp_w) - AM_RANGE(0x09,0x09) AM_WRITE(disp_2_w) - AM_RANGE(0x10,0x10) AM_WRITE(disp_1_w) -ADDRESS_MAP_END + map(0x08, 0x08).w(this, FUNC(k1003_state::disp_w)); + map(0x09, 0x09).w(this, FUNC(k1003_state::disp_2_w)); + map(0x10, 0x10).w(this, FUNC(k1003_state::disp_1_w)); +} /* Input ports */ static INPUT_PORTS_START( k1003 ) diff --git a/src/mame/drivers/k8915.cpp b/src/mame/drivers/k8915.cpp index f4003f8c400..74c622803bb 100644 --- a/src/mame/drivers/k8915.cpp +++ b/src/mame/drivers/k8915.cpp @@ -53,19 +53,21 @@ WRITE8_MEMBER( k8915_state::k8915_a8_w ) membank("boot")->set_entry(1); // rom at 0000 } -ADDRESS_MAP_START(k8915_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(k8915_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0xa8, 0xa8) AM_WRITE(k8915_a8_w) -ADDRESS_MAP_END +void k8915_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("boot"); + map(0x1000, 0x17ff).ram().share("videoram"); + map(0x1800, 0xffff).ram(); +} + +void k8915_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x50, 0x53).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x58, 0x5b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0xa8, 0xa8).w(this, FUNC(k8915_state::k8915_a8_w)); +} /* Input ports */ static INPUT_PORTS_START( k8915 ) diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp index 1868a2f575e..089498871f4 100644 --- a/src/mame/drivers/kaneko16.cpp +++ b/src/mame/drivers/kaneko16.cpp @@ -296,28 +296,29 @@ WRITE16_MEMBER(kaneko16_berlwall_state::berlwall_spriteregs_w) m_kaneko_spr->kaneko16_sprites_regs_w(space, offset, data, mem_mask); } -ADDRESS_MAP_START(kaneko16_berlwall_state::berlwall) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - AM_RANGE(0x30e000, 0x30ffff) AM_READWRITE(berlwall_spriteram_r, berlwall_spriteram_w) AM_SHARE("spriteram") // Sprites (scrambled RAM) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x480000, 0x480001) AM_RAM AM_SHARE("bg15_scroll") // High Color Background - AM_RANGE(0x500000, 0x500001) AM_READWRITE(kaneko16_bg15_bright_r, kaneko16_bg15_bright_w) AM_SHARE("bg15_bright") // "" - AM_RANGE(0x580000, 0x580001) AM_READWRITE(kaneko16_bg15_select_r, kaneko16_bg15_select_w) AM_SHARE("bg15_select") // "" - AM_RANGE(0x600000, 0x60003f) AM_READWRITE(berlwall_spriteregs_r, berlwall_spriteregs_w) // Sprite Regs (scrambled RAM) - AM_RANGE(0x680000, 0x680001) AM_READ_PORT("P1") - AM_RANGE(0x680002, 0x680003) AM_READ_PORT("P2") - AM_RANGE(0x680004, 0x680005) AM_READ_PORT("SYSTEM") +void kaneko16_berlwall_state::berlwall(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // Work RAM + map(0x30e000, 0x30ffff).rw(this, FUNC(kaneko16_berlwall_state::berlwall_spriteram_r), FUNC(kaneko16_berlwall_state::berlwall_spriteram_w)).share("spriteram"); // Sprites (scrambled RAM) + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x480000, 0x480001).ram().share("bg15_scroll"); // High Color Background + map(0x500000, 0x500001).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_bg15_bright_r), FUNC(kaneko16_berlwall_state::kaneko16_bg15_bright_w)).share("bg15_bright"); // "" + map(0x580000, 0x580001).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_bg15_select_r), FUNC(kaneko16_berlwall_state::kaneko16_bg15_select_w)).share("bg15_select"); // "" + map(0x600000, 0x60003f).rw(this, FUNC(kaneko16_berlwall_state::berlwall_spriteregs_r), FUNC(kaneko16_berlwall_state::berlwall_spriteregs_w)); // Sprite Regs (scrambled RAM) + map(0x680000, 0x680001).portr("P1"); + map(0x680002, 0x680003).portr("P2"); + map(0x680004, 0x680005).portr("SYSTEM"); // AM_RANGE(0x680006, 0x680007) AM_READ_PORT("UNK") - AM_RANGE(0x700000, 0x700001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0x780000, 0x780001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(kaneko16_ay_YM2149_r<0>, kaneko16_ay_YM2149_w<0>) // Sound - AM_RANGE(0x800200, 0x80021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>, kaneko16_ay_YM2149_w<1>) - AM_RANGE(0x8003fe, 0x8003ff) AM_NOP // for OKI when accessed as .l - AM_RANGE(0x800400, 0x800401) AM_READWRITE( berlwall_oki_r, berlwall_oki_w ) - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) -ADDRESS_MAP_END + map(0x700000, 0x700001).w(this, FUNC(kaneko16_berlwall_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0x780000, 0x780001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x800000, 0x80001f).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_r<0>), FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_w<0>)); // Sound + map(0x800200, 0x80021f).rw(this, FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_berlwall_state::kaneko16_ay_YM2149_w<1>)); + map(0x8003fe, 0x8003ff).noprw(); // for OKI when accessed as .l + map(0x800400, 0x800401).rw(this, FUNC(kaneko16_berlwall_state::berlwall_oki_r), FUNC(kaneko16_berlwall_state::berlwall_oki_w)); + map(0xc00000, 0xc03fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0xd00000, 0xd0001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); +} /*************************************************************************** @@ -328,54 +329,56 @@ ADDRESS_MAP_END /* The two YM2149 chips are only used when entering high score initials, and */ /* when the game is fully completed. Overkill??? */ -ADDRESS_MAP_START(kaneko16_state::bakubrkr) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x400000, 0x40001f) AM_READ(kaneko16_ay_YM2149_r<0>) // Sound - AM_RANGE(0x400000, 0x40001d) AM_WRITE(kaneko16_ay_YM2149_w<0>) - AM_RANGE(0x40001e, 0x40001f) AM_WRITE8(oki_bank0_w<7>, 0x00ff) // OKI bank Switch - AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>,kaneko16_ay_YM2149_w<1>) // Sound - AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x601fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x700000, 0x700fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xa80000, 0xa80001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("P1") - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("P2") - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("UNK") -ADDRESS_MAP_END +void kaneko16_state::bakubrkr(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x400000, 0x40001f).r(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<0>)); // Sound + map(0x400000, 0x40001d).w(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_w<0>)); + map(0x40001f, 0x40001f).w(this, FUNC(kaneko16_state::oki_bank0_w<7>)); // OKI bank Switch + map(0x400200, 0x40021f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<1>)); // Sound + map(0x400401, 0x400401).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x601fff).ram().share("spriteram"); // Sprites + map(0x700000, 0x700fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xa80000, 0xa80001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0xb00000, 0xb0001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_eeprom_w)); // EEPROM + map(0xe00000, 0xe00001).portr("P1"); + map(0xe00002, 0xe00003).portr("P2"); + map(0xe00004, 0xe00005).portr("SYSTEM"); + map(0xe00006, 0xe00007).portr("UNK"); +} /*************************************************************************** Blaze On ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::blazeon) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM - AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x980000, 0x98001f) AM_RAM // Sprites Regs #2 - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW2_P1") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("DSW1_P2") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("UNK") - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0xe00000, 0xe00001) AM_READNOP // Read = IRQ Ack ? - AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0xe40000, 0xe40001) AM_READNOP // IRQ Ack ? +void kaneko16_state::blazeon(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x300000, 0x30ffff).ram(); // Work RAM + map(0x500000, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x700000, 0x700fff).ram().share("spriteram"); // Sprites + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x980000, 0x98001f).ram(); // Sprites Regs #2 + map(0xc00000, 0xc00001).portr("DSW2_P1"); + map(0xc00002, 0xc00003).portr("DSW1_P2"); + map(0xc00004, 0xc00005).portr("UNK"); + map(0xc00006, 0xc00007).portr("SYSTEM"); + map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0xe00000, 0xe00001).nopr(); // Read = IRQ Ack ? + map(0xe00000, 0xe00000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe40000, 0xe40001).nopr(); // IRQ Ack ? // AM_RANGE(0xe80000, 0xe80001) AM_READNOP // IRQ Ack ? - AM_RANGE(0xec0000, 0xec0001) AM_READNOP // Lev 4 IRQ Ack ? -ADDRESS_MAP_END + map(0xec0000, 0xec0001).nopr(); // Lev 4 IRQ Ack ? +} /*************************************************************************** @@ -393,70 +396,72 @@ WRITE16_MEMBER(kaneko16_gtmr_state::bloodwar_coin_lockout_w) } } -ADDRESS_MAP_START(kaneko16_gtmr_state::bloodwar) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x3>, 0x00ff) -ADDRESS_MAP_END +void kaneko16_gtmr_state::bloodwar(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("EXTRA"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::bloodwar_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x3>)); +} /*************************************************************************** Bonk's Adventure ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_gtmr_state::bonkadv) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x900015) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0xf>, 0x00ff) -ADDRESS_MAP_END +void kaneko16_gtmr_state::bonkadv(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x900000, 0x900015).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("UNK"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::bloodwar_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0xf>)); +} /*************************************************************************** @@ -478,48 +483,49 @@ READ16_MEMBER(kaneko16_gtmr_state::gtmr_wheel_r) } } -ADDRESS_MAP_START(kaneko16_gtmr_state::gtmr_map) - AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM - AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr_wheel_r) // Wheel Value +void kaneko16_gtmr_state::gtmr_map(address_map &map) +{ + map(0x000000, 0x0ffffd).rom(); // ROM + map(0x0ffffe, 0x0fffff).r(this, FUNC(kaneko16_gtmr_state::gtmr_wheel_r)); // Wheel Value - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x310000, 0x327fff) AM_RAM // - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x310000, 0x327fff).ram(); // + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) + map(0x600000, 0x60000f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) // only used for random number - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) + map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); // only used for random number + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("UNK"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); // might do more than that - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) // Samples Bankswitching - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x1>, 0x00ff) -ADDRESS_MAP_END + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); // Samples Bankswitching + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x1>)); +} /*************************************************************************** Great 1000 Miles Rally 2 @@ -547,71 +553,73 @@ READ16_MEMBER(kaneko16_gtmr_state::gtmr2_IN1_r) return (ioport("P2")->read() & (ioport("FAKE")->read() | ~0x7100)); } -ADDRESS_MAP_START(kaneko16_gtmr_state::gtmr2_map) - AM_RANGE(0x000000, 0x0ffffd) AM_ROM // ROM - AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr2_wheel_r) // Wheel Value +void kaneko16_gtmr_state::gtmr2_map(address_map &map) +{ + map(0x000000, 0x0ffffd).rom(); // ROM + map(0x0ffffe, 0x0fffff).r(this, FUNC(kaneko16_gtmr_state::gtmr2_wheel_r)); // Wheel Value - AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU + map(0x100000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); // Shared With MCU - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) - AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) + map(0x2a0000, 0x2a0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com0_w)); // To MCU ? + map(0x2b0000, 0x2b0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com1_w)); + map(0x2c0000, 0x2c0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com2_w)); + map(0x2d0000, 0x2d0001).w("toybox", FUNC(kaneko_toybox_device::mcu_com3_w)); - AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x310000, 0x327fff) AM_RAM // - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites + map(0x300000, 0x30ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x310000, 0x327fff).ram(); // + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites - AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x580000, 0x583fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) + map(0x500000, 0x503fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x580000, 0x583fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x600000, 0x60000f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); - AM_RANGE(0x680000, 0x68001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples - AM_RANGE(0x880000, 0x880001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) + map(0x680000, 0x68001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x700000, 0x70001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0x800001, 0x800001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples + map(0x880001, 0x880001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x900000, 0x900039) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) // only used for random number - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog + map(0x900000, 0x900039).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); // only used for random number + map(0xa00000, 0xa00001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") + map(0xb00000, 0xb00001).portr("P1"); // AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00002, 0xb00003) AM_READ(gtmr2_IN1_r) - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA") - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that + map(0xb00002, 0xb00003).r(this, FUNC(kaneko16_gtmr_state::gtmr2_IN1_r)); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("EXTRA"); + map(0xb80000, 0xb80001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_coin_lockout_w)); // Coin Lockout + map(0xc00000, 0xc00001).w(this, FUNC(kaneko16_gtmr_state::kaneko16_display_enable)); // might do more than that - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) + map(0xd00000, 0xd00001).r("toybox", FUNC(kaneko_toybox_device::mcu_status_r)); - AM_RANGE(0xe00000, 0xe00001) AM_WRITE8(oki_bank0_w<0xf>, 0x00ff) // Samples Bankswitching - AM_RANGE(0xe80000, 0xe80001) AM_WRITE8(oki_bank1_w<0x1>, 0x00ff) -ADDRESS_MAP_END + map(0xe00001, 0xe00001).w(this, FUNC(kaneko16_gtmr_state::oki_bank0_w<0xf>)); // Samples Bankswitching + map(0xe80001, 0xe80001).w(this, FUNC(kaneko16_gtmr_state::oki_bank1_w<0x1>)); +} /*************************************************************************** Magical Crystal ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::mgcrystl) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x30ffff) AM_RAM // Work RAM - AM_RANGE(0x400000, 0x40001f) AM_READWRITE(kaneko16_ay_YM2149_r<0>, kaneko16_ay_YM2149_w<0>) // Sound - AM_RANGE(0x400200, 0x40021f) AM_READWRITE(kaneko16_ay_YM2149_r<1>, kaneko16_ay_YM2149_w<1>) - AM_RANGE(0x400400, 0x400401) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x500000, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x680000, 0x683fff) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVREADWRITE("view2_1", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW_P1") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P2") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(kaneko16_eeprom_w) // EEPROM -ADDRESS_MAP_END +void kaneko16_state::mgcrystl(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x300000, 0x30ffff).ram(); // Work RAM + map(0x400000, 0x40001f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<0>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<0>)); // Sound + map(0x400200, 0x40021f).rw(this, FUNC(kaneko16_state::kaneko16_ay_YM2149_r<1>), FUNC(kaneko16_state::kaneko16_ay_YM2149_w<1>)); + map(0x400401, 0x400401).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x500000, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x680000, 0x683fff).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x700000, 0x701fff).ram().share("spriteram"); // Sprites + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xb00000, 0xb0001f).rw("view2_1", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0xa00000, 0xa00001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog + map(0xc00000, 0xc00001).portr("DSW_P1"); + map(0xc00002, 0xc00003).portr("P2"); + map(0xc00004, 0xc00005).portr("SYSTEM"); + map(0xd00000, 0xd00001).w(this, FUNC(kaneko16_state::kaneko16_eeprom_w)); // EEPROM +} @@ -628,31 +636,32 @@ WRITE16_MEMBER(kaneko16_shogwarr_state::shogwarr_oki_bank_w) } } -ADDRESS_MAP_START(kaneko16_shogwarr_state::shogwarr) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("mainram") // Work RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") - AM_RANGE(0x280000, 0x280001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com0_w) - AM_RANGE(0x290000, 0x290001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com1_w) - AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com2_w) +void kaneko16_shogwarr_state::shogwarr(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x100000, 0x10ffff).ram().share("mainram"); // Work RAM + map(0x200000, 0x20ffff).ram().share("mcuram"); + map(0x280000, 0x280001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com0_w)); + map(0x290000, 0x290001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com1_w)); + map(0x2b0000, 0x2b0001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com2_w)); //AM_RANGE(0x2c0000, 0x2c0001) // run calc 3? or irq ack? - AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE("calc3_prot", kaneko_calc3_device, mcu_com3_w) - AM_RANGE(0x380000, 0x380fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // Samples - AM_RANGE(0x480000, 0x480001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x580000, 0x581fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVREADWRITE("kan_spr", kaneko16_sprite_device, kaneko16_sprites_regs_r, kaneko16_sprites_regs_w) - AM_RANGE(0xa00000, 0xa0007f) AM_DEVREADWRITE("kan_hit", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0xa80000, 0xa80001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0xb80000, 0xb80001) AM_READ_PORT("P1") - AM_RANGE(0xb80002, 0xb80003) AM_READ_PORT("P2") - AM_RANGE(0xb80004, 0xb80005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb80006, 0xb80007) AM_READ_PORT("UNK") - AM_RANGE(0xd00000, 0xd00001) AM_NOP // ? (bit 0) - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(shogwarr_oki_bank_w) // Samples Bankswitching -ADDRESS_MAP_END + map(0x2d0000, 0x2d0001).w(m_calc3_prot, FUNC(kaneko_calc3_device::mcu_com3_w)); + map(0x380000, 0x380fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x400001, 0x400001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Samples + map(0x480001, 0x480001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x580000, 0x581fff).ram().share("spriteram"); // Sprites + map(0x600000, 0x603fff).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x800000, 0x80001f).rw("view2_0", FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x900000, 0x90001f).rw(m_kaneko_spr, FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_r), FUNC(kaneko16_sprite_device::kaneko16_sprites_regs_w)); + map(0xa00000, 0xa0007f).rw("kan_hit", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0xa80000, 0xa80001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0xb80000, 0xb80001).portr("P1"); + map(0xb80002, 0xb80003).portr("P2"); + map(0xb80004, 0xb80005).portr("SYSTEM"); + map(0xb80006, 0xb80007).portr("UNK"); + map(0xd00000, 0xd00001).noprw(); // ? (bit 0) + map(0xe00000, 0xe00001).w(this, FUNC(kaneko16_shogwarr_state::shogwarr_oki_bank_w)); // Samples Bankswitching +} /*************************************************************************** @@ -666,30 +675,33 @@ ADDRESS_MAP_END Blaze On ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::blazeon_soundmem) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM // ROM (supposed to be banked?) - AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM -ADDRESS_MAP_END +void kaneko16_state::blazeon_soundmem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).rom(); // ROM (supposed to be banked?) + map(0xc000, 0xdfff).ram(); // RAM +} -ADDRESS_MAP_START(kaneko16_state::blazeon_soundport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void kaneko16_state::blazeon_soundport(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*************************************************************************** Wing Force ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::wingforc_soundport) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void kaneko16_state::wingforc_soundport(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0x00) // 02 written at boot - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x0a, 0x0a) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_WRITE(oki_bank0_w<0x3>) -ADDRESS_MAP_END + map(0x02, 0x03).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0a, 0x0a).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c, 0x0c).w(this, FUNC(kaneko16_state::oki_bank0_w<0x3>)); +} /*************************************************************************** @@ -1821,10 +1833,11 @@ MACHINE_CONFIG_END Bakuretsu Breaker ***************************************************************************/ -ADDRESS_MAP_START(kaneko16_state::bakubrkr_oki1_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank1") -ADDRESS_MAP_END +void kaneko16_state::bakubrkr_oki1_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank1"); +} MACHINE_CONFIG_START(kaneko16_state::bakubrkr) @@ -2355,10 +2368,11 @@ static const uint16_t brapboys_default_eeprom[64] = { }; // sample banking is different on brap boys for the music, why? GALs / PALs ? -ADDRESS_MAP_START(kaneko16_shogwarr_state::brapboys_oki2_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2") -ADDRESS_MAP_END +void kaneko16_shogwarr_state::brapboys_oki2_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank2"); +} MACHINE_CONFIG_START(kaneko16_shogwarr_state::brapboys) shogwarr(config); diff --git a/src/mame/drivers/kangaroo.cpp b/src/mame/drivers/kangaroo.cpp index 08515c3c18a..09e737c92d0 100644 --- a/src/mame/drivers/kangaroo.cpp +++ b/src/mame/drivers/kangaroo.cpp @@ -251,17 +251,18 @@ WRITE8_MEMBER(kangaroo_state::kangaroo_coin_counter_w) * *************************************/ -ADDRESS_MAP_START(kangaroo_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_WRITE(kangaroo_videoram_w) - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xe3ff) AM_RAM - AM_RANGE(0xe400, 0xe400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW0") - AM_RANGE(0xe800, 0xe80a) AM_MIRROR(0x03f0) AM_WRITE(kangaroo_video_control_w) AM_SHARE("video_control") - AM_RANGE(0xec00, 0xec00) AM_MIRROR(0x00ff) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xed00, 0xed00) AM_MIRROR(0x00ff) AM_READ_PORT("IN1") AM_WRITE(kangaroo_coin_counter_w) - AM_RANGE(0xee00, 0xee00) AM_MIRROR(0x00ff) AM_READ_PORT("IN2") -ADDRESS_MAP_END +void kangaroo_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0xbfff).w(this, FUNC(kangaroo_state::kangaroo_videoram_w)); + map(0xc000, 0xdfff).bankr("bank1"); + map(0xe000, 0xe3ff).ram(); + map(0xe400, 0xe400).mirror(0x03ff).portr("DSW0"); + map(0xe800, 0xe80a).mirror(0x03f0).w(this, FUNC(kangaroo_state::kangaroo_video_control_w)).share("video_control"); + map(0xec00, 0xec00).mirror(0x00ff).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xed00, 0xed00).mirror(0x00ff).portr("IN1").w(this, FUNC(kangaroo_state::kangaroo_coin_counter_w)); + map(0xee00, 0xee00).mirror(0x00ff).portr("IN2"); +} @@ -271,23 +272,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(kangaroo_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END +void kangaroo_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x43ff).mirror(0x0c00).ram(); + map(0x6000, 0x6000).mirror(0x0fff).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x7000, 0x7000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x8000, 0x8000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::address_w)); +} /* yes, this is identical */ -ADDRESS_MAP_START(kangaroo_state::sound_portmap) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END +void kangaroo_state::sound_portmap(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x43ff).mirror(0x0c00).ram(); + map(0x6000, 0x6000).mirror(0x0fff).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x7000, 0x7000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x8000, 0x8000).mirror(0x0fff).w("aysnd", FUNC(ay8910_device::address_w)); +} diff --git a/src/mame/drivers/karnov.cpp b/src/mame/drivers/karnov.cpp index f7417bbb037..825ad79d0b7 100644 --- a/src/mame/drivers/karnov.cpp +++ b/src/mame/drivers/karnov.cpp @@ -428,35 +428,39 @@ READ16_MEMBER(karnov_state::karnov_control_r) * *************************************/ -ADDRESS_MAP_START(karnov_state::karnov_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x063fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_WRITE(karnov_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0a0800, 0x0a0fff) AM_WRITE(karnov_videoram_w) /* Wndrplnt Mirror */ - AM_RANGE(0x0a1000, 0x0a17ff) AM_WRITEONLY AM_SHARE("pf_data") - AM_RANGE(0x0a1800, 0x0a1fff) AM_WRITE(karnov_playfield_swap_w) - AM_RANGE(0x0c0000, 0x0c0007) AM_READ(karnov_control_r) - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(karnov_control_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(karnov_state::base_sound_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(karnov_state::karnov_sound_map) - AM_IMPORT_FROM(base_sound_map) - AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ym2", ym3526_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(karnov_state::karnovjbl_sound_map) - AM_IMPORT_FROM(base_sound_map) - AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ym2", ym3812_device, write) -ADDRESS_MAP_END +void karnov_state::karnov_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x063fff).ram().share("ram"); + map(0x080000, 0x080fff).ram().share("spriteram"); + map(0x0a0000, 0x0a07ff).ram().w(this, FUNC(karnov_state::karnov_videoram_w)).share("videoram"); + map(0x0a0800, 0x0a0fff).w(this, FUNC(karnov_state::karnov_videoram_w)); /* Wndrplnt Mirror */ + map(0x0a1000, 0x0a17ff).writeonly().share("pf_data"); + map(0x0a1800, 0x0a1fff).w(this, FUNC(karnov_state::karnov_playfield_swap_w)); + map(0x0c0000, 0x0c0007).r(this, FUNC(karnov_state::karnov_control_r)); + map(0x0c0000, 0x0c000f).w(this, FUNC(karnov_state::karnov_control_w)); +} + + +void karnov_state::base_sound_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x0800, 0x0800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1000, 0x1001).w("ym1", FUNC(ym2203_device::write)); + map(0x8000, 0xffff).rom(); +} + +void karnov_state::karnov_sound_map(address_map &map) +{ + base_sound_map(map); + map(0x1800, 0x1801).w("ym2", FUNC(ym3526_device::write)); +} + +void karnov_state::karnovjbl_sound_map(address_map &map) +{ + base_sound_map(map); + map(0x1800, 0x1801).w("ym2", FUNC(ym3812_device::write)); +} /************************************* @@ -862,9 +866,10 @@ MACHINE_CONFIG_START(karnov_state::karnovjbl) MACHINE_CONFIG_END -ADDRESS_MAP_START(karnov_state::chelnovjbl_mcu_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void karnov_state::chelnovjbl_mcu_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} MACHINE_CONFIG_START(karnov_state::chelnovjbl) diff --git a/src/mame/drivers/kas89.cpp b/src/mame/drivers/kas89.cpp index d15e1160554..d24a9941cb8 100644 --- a/src/mame/drivers/kas89.cpp +++ b/src/mame/drivers/kas89.cpp @@ -511,31 +511,33 @@ WRITE8_MEMBER(kas89_state::led_mux_select_w) * Memory Map * **************************************/ -ADDRESS_MAP_START(kas89_state::kas89_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x0037, 0x0037) AM_WRITENOP /* WTF? */ - AM_RANGE(0x8000, 0x81ff) AM_RAM /* empty */ - AM_RANGE(0x8200, 0x83ff) AM_RAM /* 8200-83ff (PL1) */ - AM_RANGE(0x8400, 0x85ff) AM_RAM /* 8400-85ff (PL2) */ - AM_RANGE(0x8600, 0x87ff) AM_RAM /* 8600-87ff (PL3) */ - AM_RANGE(0x8800, 0x89ff) AM_RAM /* 8800-89ff (PL4) */ - AM_RANGE(0x8a00, 0x8bff) AM_RAM /* 8a00-8bff (PL5) */ - AM_RANGE(0x8c00, 0x8dff) AM_RAM /* 8c00-8dff (PL6) */ - AM_RANGE(0x8e00, 0x8fff) AM_RAM /* empty */ - AM_RANGE(0x9000, 0x97ff) AM_RAM - AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kas89_state::kas89_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0x80, 0x80) AM_WRITE(mux_w) - AM_RANGE(0x81, 0x81) AM_READ(mux_r) - AM_RANGE(0x82, 0x82) AM_WRITE(control_w) /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/ - AM_RANGE(0x83, 0x83) AM_WRITE(led_mux_data_w) - AM_RANGE(0x84, 0x84) AM_WRITE(led_mux_select_w) - AM_RANGE(0x85, 0x85) AM_WRITE(sound_comm_w) -ADDRESS_MAP_END +void kas89_state::kas89_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x0037, 0x0037).nopw(); /* WTF? */ + map(0x8000, 0x81ff).ram(); /* empty */ + map(0x8200, 0x83ff).ram(); /* 8200-83ff (PL1) */ + map(0x8400, 0x85ff).ram(); /* 8400-85ff (PL2) */ + map(0x8600, 0x87ff).ram(); /* 8600-87ff (PL3) */ + map(0x8800, 0x89ff).ram(); /* 8800-89ff (PL4) */ + map(0x8a00, 0x8bff).ram(); /* 8a00-8bff (PL5) */ + map(0x8c00, 0x8dff).ram(); /* 8c00-8dff (PL6) */ + map(0x8e00, 0x8fff).ram(); /* empty */ + map(0x9000, 0x97ff).ram(); + map(0x9800, 0x9fff).ram().share("nvram"); +} + +void kas89_state::kas89_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x43).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x80, 0x80).w(this, FUNC(kas89_state::mux_w)); + map(0x81, 0x81).r(this, FUNC(kas89_state::mux_r)); + map(0x82, 0x82).w(this, FUNC(kas89_state::control_w)); /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/ + map(0x83, 0x83).w(this, FUNC(kas89_state::led_mux_data_w)); + map(0x84, 0x84).w(this, FUNC(kas89_state::led_mux_select_w)); + map(0x85, 0x85).w(this, FUNC(kas89_state::sound_comm_w)); +} /* 900d --- (RAM) NMI stores the read from / write to port $82 @@ -575,18 +577,20 @@ ADDRESS_MAP_END 4aa1 : ret */ -ADDRESS_MAP_START(kas89_state::audio_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kas89_state::audio_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(int_ack_w) // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02). - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END +void kas89_state::audio_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0xc000, 0xc7ff).ram(); +} + +void kas89_state::audio_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(kas89_state::int_ack_w)); // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02). + map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x04).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x04, 0x05).w("aysnd", FUNC(ay8910_device::data_address_w)); +} /************************************** diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp index 0dc31204ee1..14de77daeb8 100644 --- a/src/mame/drivers/kaypro.cpp +++ b/src/mame/drivers/kaypro.cpp @@ -64,36 +64,39 @@ READ8_MEMBER( kaypro_state::kaypro484_87_r ) { return 0x7f; } /* to bypass un ************************************************************/ -ADDRESS_MAP_START(kaypro_state::kaypro_map) - AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank3") - AM_RANGE(0x4000, 0xffff) AM_RAM AM_REGION("rambank", 0x4000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kaypro_state::kayproii_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVWRITE("brg", com8116_device, stt_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80pio_g", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0c, 0x0f) AM_DEVWRITE("brg", com8116_device, str_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("z80pio_s", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kaypro_state::kaypro484_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVWRITE("brg", com8116_device, str_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio_1", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x08, 0x0b) AM_DEVWRITE("brg", com8116_device, stt_w) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("sio_2", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0x14, 0x17) AM_READWRITE(kaypro484_system_port_r,kaypro484_system_port_w) - AM_RANGE(0x18, 0x1b) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x1c, 0x1c) AM_READWRITE(kaypro484_status_r,kaypro484_index_w) - AM_RANGE(0x1d, 0x1d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(kaypro484_register_w) - AM_RANGE(0x1f, 0x1f) AM_READWRITE(kaypro484_videoram_r,kaypro484_videoram_w) +void kaypro_state::kaypro_map(address_map &map) +{ + map(0x0000, 0x2fff).bankr("bankr0").bankw("bankw0"); + map(0x3000, 0x3fff).bankrw("bank3"); + map(0x4000, 0xffff).ram().region("rambank", 0x4000); +} + +void kaypro_state::kayproii_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).w("brg", FUNC(com8116_device::stt_w)); + map(0x04, 0x07).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x08, 0x0b).rw(m_pio_g, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0c, 0x0f).w("brg", FUNC(com8116_device::str_w)); + map(0x10, 0x13).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x1c, 0x1f).rw(m_pio_s, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} + +void kaypro_state::kaypro484_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).w("brg", FUNC(com8116_device::str_w)); + map(0x04, 0x07).rw("sio_1", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x08, 0x0b).w("brg", FUNC(com8116_device::stt_w)); + map(0x0c, 0x0f).rw("sio_2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x10, 0x13).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x14, 0x17).rw(this, FUNC(kaypro_state::kaypro484_system_port_r), FUNC(kaypro_state::kaypro484_system_port_w)); + map(0x18, 0x1b).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x1c, 0x1c).rw(this, FUNC(kaypro_state::kaypro484_status_r), FUNC(kaypro_state::kaypro484_index_w)); + map(0x1d, 0x1d).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(kaypro_state::kaypro484_register_w)); + map(0x1f, 0x1f).rw(this, FUNC(kaypro_state::kaypro484_videoram_r), FUNC(kaypro_state::kaypro484_videoram_w)); /* The below are not emulated */ /* AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("z80pio", kaypro484_pio_r, kaypro484_pio_w) - for RTC and Modem @@ -106,9 +109,9 @@ ADDRESS_MAP_START(kaypro_state::kaypro484_io) AM_RANGE(0x85, 0x85) Hard Drive Cylinder high register I/O AM_RANGE(0x86, 0x86) Hard Drive Size / Drive / Head register I/O AM_RANGE(0x87, 0x87) Hard Drive READ status register, WRITE command register */ - AM_RANGE(0x20, 0x86) AM_NOP - AM_RANGE(0x87, 0x87) AM_READ(kaypro484_87_r) -ADDRESS_MAP_END + map(0x20, 0x86).noprw(); + map(0x87, 0x87).r(this, FUNC(kaypro_state::kaypro484_87_r)); +} static INPUT_PORTS_START(kaypro) diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp index c1fb367af6f..4928d691ca1 100644 --- a/src/mame/drivers/kc.cpp +++ b/src/mame/drivers/kc.cpp @@ -22,42 +22,46 @@ #include "speaker.h" -ADDRESS_MAP_START(kc85_4_state::kc85_4_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(expansion_io_read, expansion_io_write) - - AM_RANGE(0x0084, 0x0085) AM_MIRROR(0xff00) AM_READWRITE(kc85_4_84_r, kc85_4_84_w) - AM_RANGE(0x0086, 0x0087) AM_MIRROR(0xff00) AM_READWRITE(kc85_4_86_r, kc85_4_86_w) - AM_RANGE(0x0088, 0x008b) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) - AM_RANGE(0x008c, 0x008f) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kc85_4_state::kc85_4_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_READWRITE_BANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_READWRITE_BANK("bank2") - AM_RANGE(0x8000, 0xa7ff) AM_READWRITE_BANK("bank3") - AM_RANGE(0xa800, 0xbfff) AM_READWRITE_BANK("bank6") - AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank4") - AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kc_state::kc85_3_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_READWRITE_BANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_READWRITE_BANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_READWRITE_BANK("bank3") - AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank4") - AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kc_state::kc85_3_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(expansion_io_read, expansion_io_write) - - AM_RANGE(0x0088, 0x008b) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) - AM_RANGE(0x008c, 0x008f) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void kc85_4_state::kc85_4_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(kc85_4_state::expansion_io_read), FUNC(kc85_4_state::expansion_io_write)); + + map(0x0084, 0x0085).mirror(0xff00).rw(this, FUNC(kc85_4_state::kc85_4_84_r), FUNC(kc85_4_state::kc85_4_84_w)); + map(0x0086, 0x0087).mirror(0xff00).rw(this, FUNC(kc85_4_state::kc85_4_86_r), FUNC(kc85_4_state::kc85_4_86_w)); + map(0x0088, 0x008b).mirror(0xff00).rw(m_z80pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x008c, 0x008f).mirror(0xff00).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} + +void kc85_4_state::kc85_4_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xa7ff).bankrw("bank3"); + map(0xa800, 0xbfff).bankrw("bank6"); + map(0xc000, 0xdfff).bankr("bank4"); + map(0xe000, 0xffff).bankr("bank5"); +} + +void kc_state::kc85_3_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xdfff).bankr("bank4"); + map(0xe000, 0xffff).bankr("bank5"); +} + +void kc_state::kc85_3_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(kc_state::expansion_io_read), FUNC(kc_state::expansion_io_write)); + + map(0x0088, 0x008b).mirror(0xff00).rw(m_z80pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x008c, 0x008f).mirror(0xff00).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} static INPUT_PORTS_START( kc85 ) INPUT_PORTS_END diff --git a/src/mame/drivers/kchamp.cpp b/src/mame/drivers/kchamp.cpp index 3e37055672b..bd2d3391395 100644 --- a/src/mame/drivers/kchamp.cpp +++ b/src/mame/drivers/kchamp.cpp @@ -104,42 +104,47 @@ WRITE8_MEMBER(kchamp_state::sound_control_w) m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } -ADDRESS_MAP_START(kchamp_state::kchampvs_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(kchamp_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(kchamp_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd900, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::kchampvs_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x40, 0x40) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("DSW") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::kchampvs_sound_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::kchampvs_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("adpcm_select", ls157_device, ab_w) - AM_RANGE(0x05, 0x05) AM_WRITE(sound_control_w) -ADDRESS_MAP_END +void kchamp_state::kchampvs_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd3ff).ram().w(this, FUNC(kchamp_state::kchamp_videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(kchamp_state::kchamp_colorram_w)).share("colorram"); + map(0xd800, 0xd8ff).ram().share("spriteram"); + map(0xd900, 0xdfff).ram(); + map(0xe000, 0xffff).rom(); +} + +void kchamp_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0xffff).rom().share("decrypted_opcodes"); +} + +void kchamp_state::kchampvs_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x40, 0x40).portr("P2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x80, 0x80).portr("SYSTEM"); + map(0xc0, 0xc0).portr("DSW"); +} + +void kchamp_state::kchampvs_sound_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0xffff).ram(); +} + +void kchamp_state::kchampvs_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x01, 0x01).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x04, 0x04).w(m_adpcm_select, FUNC(ls157_device::ab_w)); + map(0x05, 0x05).w(this, FUNC(kchamp_state::sound_control_w)); +} /******************** @@ -163,38 +168,42 @@ WRITE8_MEMBER(kchamp_state::kc_sound_control_w) m_dac->set_output_gain(0, BIT(data,0) ? 1.0 : 0); } -ADDRESS_MAP_START(kchamp_state::kchamp_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(kchamp_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(kchamp_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xea00, 0xeaff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xeb00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::kchamp_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW") - AM_RANGE(0x80, 0x87) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x90, 0x90) AM_READ_PORT("P1") - AM_RANGE(0x98, 0x98) AM_READ_PORT("P2") - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa8, 0xa8) AM_READ(sound_reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::kchamp_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe2ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kchamp_state::kchamp_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x05, 0x05) AM_WRITE(kc_sound_control_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void kchamp_state::kchamp_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe3ff).ram().w(this, FUNC(kchamp_state::kchamp_videoram_w)).share("videoram"); + map(0xe400, 0xe7ff).ram().w(this, FUNC(kchamp_state::kchamp_colorram_w)).share("colorram"); + map(0xea00, 0xeaff).ram().share("spriteram"); + map(0xeb00, 0xffff).ram(); +} + +void kchamp_state::kchamp_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x80).portr("DSW"); + map(0x80, 0x87).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x90, 0x90).portr("P1"); + map(0x98, 0x98).portr("P2"); + map(0xa0, 0xa0).portr("SYSTEM"); + map(0xa8, 0xa8).r(this, FUNC(kchamp_state::sound_reset_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + +void kchamp_state::kchamp_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe2ff).ram(); +} + +void kchamp_state::kchamp_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x04, 0x04).w(m_dac, FUNC(dac_byte_interface::write)); + map(0x05, 0x05).w(this, FUNC(kchamp_state::kc_sound_control_w)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( kchampvs ) PORT_START("P1") diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp index b9d07a50faa..ed8a6bc0138 100644 --- a/src/mame/drivers/kdt6.cpp +++ b/src/mame/drivers/kdt6.cpp @@ -150,58 +150,60 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(kdt6_state::psi98_mem) - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("page0_r") AM_WRITE_BANK("page0_w") - AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("page1_r") AM_WRITE_BANK("page1_w") - AM_RANGE(0x2000, 0x2fff) AM_READ_BANK("page2_r") AM_WRITE_BANK("page2_w") - AM_RANGE(0x3000, 0x3fff) AM_READ_BANK("page3_r") AM_WRITE_BANK("page3_w") - AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("page4_r") AM_WRITE_BANK("page4_w") - AM_RANGE(0x5000, 0x5fff) AM_READ_BANK("page5_r") AM_WRITE_BANK("page5_w") - AM_RANGE(0x6000, 0x6fff) AM_READ_BANK("page6_r") AM_WRITE_BANK("page6_w") - AM_RANGE(0x7000, 0x7fff) AM_READ_BANK("page7_r") AM_WRITE_BANK("page7_w") - AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("page8_r") AM_WRITE_BANK("page8_w") - AM_RANGE(0x9000, 0x9fff) AM_READ_BANK("page9_r") AM_WRITE_BANK("page9_w") - AM_RANGE(0xa000, 0xafff) AM_READ_BANK("pagea_r") AM_WRITE_BANK("pagea_w") - AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("pageb_r") AM_WRITE_BANK("pageb_w") - AM_RANGE(0xc000, 0xcfff) AM_READ_BANK("pagec_r") AM_WRITE_BANK("pagec_w") - AM_RANGE(0xd000, 0xdfff) AM_READ_BANK("paged_r") AM_WRITE_BANK("paged_w") - AM_RANGE(0xe000, 0xefff) AM_READ_BANK("pagee_r") AM_WRITE_BANK("pagee_w") - AM_RANGE(0xf000, 0xffff) AM_READ_BANK("pagef_r") AM_WRITE_BANK("pagef_w") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kdt6_state::psi98_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio", z80pio_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) - AM_RANGE(0x14, 0x14) AM_DEVREAD("fdc", upd765a_device, msr_r) - AM_RANGE(0x15, 0x15) AM_DEVREADWRITE("fdc", upd765a_device, fifo_r, fifo_w) - AM_RANGE(0x18, 0x18) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x1c, 0x1c) AM_WRITE(status0_w) - AM_RANGE(0x1d, 0x1d) AM_DEVREAD("kbd", psi_keyboard_bus_device, key_data_r) - AM_RANGE(0x1e, 0x1e) AM_DEVREADWRITE("fdc", upd765a_device, mdma_r, mdma_w) - AM_RANGE(0x1f, 0x1f) AM_WRITE(fdc_tc_w) - AM_RANGE(0x20, 0x2f) AM_READWRITE(mapper_r, mapper_w) - AM_RANGE(0x30, 0x30) AM_READWRITE(video_data_r, video_data_w) - AM_RANGE(0x31, 0x31) AM_WRITE(video_data_inc_w) - AM_RANGE(0x36, 0x36) AM_WRITE(video_data_dec_w) - AM_RANGE(0x37, 0x37) AM_WRITE(video_data_inc_w) - AM_RANGE(0x38, 0x38) AM_WRITE(status1_w) - AM_RANGE(0x39, 0x39) AM_READ(status1_r) - AM_RANGE(0x3a, 0x3a) AM_WRITE(status2_w) - AM_RANGE(0x3b, 0x3b) AM_READWRITE(sasi_ctrl_r, sasi_ctrl_w) - AM_RANGE(0x3c, 0x3c) AM_WRITE(dma_map_w) +void kdt6_state::psi98_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankr("page0_r").bankw("page0_w"); + map(0x1000, 0x1fff).bankr("page1_r").bankw("page1_w"); + map(0x2000, 0x2fff).bankr("page2_r").bankw("page2_w"); + map(0x3000, 0x3fff).bankr("page3_r").bankw("page3_w"); + map(0x4000, 0x4fff).bankr("page4_r").bankw("page4_w"); + map(0x5000, 0x5fff).bankr("page5_r").bankw("page5_w"); + map(0x6000, 0x6fff).bankr("page6_r").bankw("page6_w"); + map(0x7000, 0x7fff).bankr("page7_r").bankw("page7_w"); + map(0x8000, 0x8fff).bankr("page8_r").bankw("page8_w"); + map(0x9000, 0x9fff).bankr("page9_r").bankw("page9_w"); + map(0xa000, 0xafff).bankr("pagea_r").bankw("pagea_w"); + map(0xb000, 0xbfff).bankr("pageb_r").bankw("pageb_w"); + map(0xc000, 0xcfff).bankr("pagec_r").bankw("pagec_w"); + map(0xd000, 0xdfff).bankr("paged_r").bankw("paged_w"); + map(0xe000, 0xefff).bankr("pagee_r").bankw("pagee_w"); + map(0xf000, 0xffff).bankr("pagef_r").bankw("pagef_w"); +} + +void kdt6_state::psi98_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x04, 0x07).rw(m_sio, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x08, 0x0b).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x10, 0x13).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x14, 0x14).r(m_fdc, FUNC(upd765a_device::msr_r)); + map(0x15, 0x15).rw(m_fdc, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w)); + map(0x18, 0x18).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x19, 0x19).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x1c, 0x1c).w(this, FUNC(kdt6_state::status0_w)); + map(0x1d, 0x1d).r(m_keyboard, FUNC(psi_keyboard_bus_device::key_data_r)); + map(0x1e, 0x1e).rw(m_fdc, FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w)); + map(0x1f, 0x1f).w(this, FUNC(kdt6_state::fdc_tc_w)); + map(0x20, 0x2f).rw(this, FUNC(kdt6_state::mapper_r), FUNC(kdt6_state::mapper_w)); + map(0x30, 0x30).rw(this, FUNC(kdt6_state::video_data_r), FUNC(kdt6_state::video_data_w)); + map(0x31, 0x31).w(this, FUNC(kdt6_state::video_data_inc_w)); + map(0x36, 0x36).w(this, FUNC(kdt6_state::video_data_dec_w)); + map(0x37, 0x37).w(this, FUNC(kdt6_state::video_data_inc_w)); + map(0x38, 0x38).w(this, FUNC(kdt6_state::status1_w)); + map(0x39, 0x39).r(this, FUNC(kdt6_state::status1_r)); + map(0x3a, 0x3a).w(this, FUNC(kdt6_state::status2_w)); + map(0x3b, 0x3b).rw(this, FUNC(kdt6_state::sasi_ctrl_r), FUNC(kdt6_state::sasi_ctrl_w)); + map(0x3c, 0x3c).w(this, FUNC(kdt6_state::dma_map_w)); #if 0 AM_RANGE(0x3d, 0x3d) WATCHDOG AM_RANGE(0x3e, 0x3e) WATCHDOG TRIGGER AM_RANGE(0x3f, 0x3f) SASI DATA #endif - AM_RANGE(0x40, 0x40) AM_WRITE(video_address_latch_high_w) - AM_RANGE(0x41, 0x41) AM_WRITE(video_address_latch_low_w) -ADDRESS_MAP_END + map(0x40, 0x40).w(this, FUNC(kdt6_state::video_address_latch_high_w)); + map(0x41, 0x41).w(this, FUNC(kdt6_state::video_address_latch_low_w)); +} //************************************************************************** diff --git a/src/mame/drivers/kenseim.cpp b/src/mame/drivers/kenseim.cpp index 0762db86c46..5d5bcd02cfa 100644 --- a/src/mame/drivers/kenseim.cpp +++ b/src/mame/drivers/kenseim.cpp @@ -456,14 +456,16 @@ WRITE8_MEMBER(kenseim_state::cpu_porte_w) -ADDRESS_MAP_START(kenseim_state::kenseim_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kenseim_state::kenseim_io_map) - AM_RANGE(0x20, 0x27) AM_MIRROR(0xff00) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write) -ADDRESS_MAP_END +void kenseim_state::kenseim_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).ram(); +} + +void kenseim_state::kenseim_io_map(address_map &map) +{ + map(0x20, 0x27).mirror(0xff00).rw("mb89363b", FUNC(mb89363b_device::read), FUNC(mb89363b_device::write)); +} diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp index 434e5c201fa..a577345975a 100644 --- a/src/mame/drivers/kickgoal.cpp +++ b/src/mame/drivers/kickgoal.cpp @@ -473,24 +473,25 @@ WRITE16_MEMBER(kickgoal_state::kickgoal_eeprom_w) /* Memory Maps *****************************************************************/ -ADDRESS_MAP_START(kickgoal_state::kickgoal_program_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM +void kickgoal_state::kickgoal_program_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /// AM_RANGE(0x30001e, 0x30001f) AM_WRITE(kickgoal_snd_w) - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1_P2") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("SYSTEM") + map(0x800000, 0x800001).portr("P1_P2"); + map(0x800002, 0x800003).portr("SYSTEM"); /// AM_RANGE(0x800004, 0x800005) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) - AM_RANGE(0x800004, 0x800005) AM_WRITE(actionhw_snd_w) - AM_RANGE(0x900000, 0x900005) AM_WRITE(kickgoal_eeprom_w) - AM_RANGE(0x900006, 0x900007) AM_READ(kickgoal_eeprom_r) - AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(kickgoal_fgram_w) AM_SHARE("fgram") /* FG Layer */ - AM_RANGE(0xa04000, 0xa07fff) AM_RAM_WRITE(kickgoal_bgram_w) AM_SHARE("bgram") /* Higher BG Layer */ - AM_RANGE(0xa08000, 0xa0bfff) AM_RAM_WRITE(kickgoal_bg2ram_w) AM_SHARE("bg2ram") /* Lower BG Layer */ - AM_RANGE(0xa0c000, 0xa0ffff) AM_RAM // more tilemap? - AM_RANGE(0xa10000, 0xa1000f) AM_WRITEONLY AM_SHARE("scrram") /* Scroll Registers */ - AM_RANGE(0xb00000, 0xb007ff) AM_WRITEONLY AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0xc00000, 0xc007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ // actionhw reads this - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x800004, 0x800005).w(this, FUNC(kickgoal_state::actionhw_snd_w)); + map(0x900000, 0x900005).w(this, FUNC(kickgoal_state::kickgoal_eeprom_w)); + map(0x900006, 0x900007).r(this, FUNC(kickgoal_state::kickgoal_eeprom_r)); + map(0xa00000, 0xa03fff).ram().w(this, FUNC(kickgoal_state::kickgoal_fgram_w)).share("fgram"); /* FG Layer */ + map(0xa04000, 0xa07fff).ram().w(this, FUNC(kickgoal_state::kickgoal_bgram_w)).share("bgram"); /* Higher BG Layer */ + map(0xa08000, 0xa0bfff).ram().w(this, FUNC(kickgoal_state::kickgoal_bg2ram_w)).share("bg2ram"); /* Lower BG Layer */ + map(0xa0c000, 0xa0ffff).ram(); // more tilemap? + map(0xa10000, 0xa1000f).writeonly().share("scrram"); /* Scroll Registers */ + map(0xb00000, 0xb007ff).writeonly().share("spriteram"); /* Sprites */ + map(0xc00000, 0xc007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ // actionhw reads this + map(0xff0000, 0xffffff).ram(); +} /* INPUT ports ***************************************************************/ @@ -626,10 +627,11 @@ void kickgoal_state::machine_reset() } -ADDRESS_MAP_START(kickgoal_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void kickgoal_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} MACHINE_CONFIG_START(kickgoal_state::kickgoal) diff --git a/src/mame/drivers/kim1.cpp b/src/mame/drivers/kim1.cpp index 0f1656ea9de..0a28240e011 100644 --- a/src/mame/drivers/kim1.cpp +++ b/src/mame/drivers/kim1.cpp @@ -66,15 +66,16 @@ TODO: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(kim1_state::kim1_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0xe000) AM_RAM - AM_RANGE(0x1700, 0x173f) AM_MIRROR(0xe000) AM_DEVREADWRITE("miot_u3", mos6530_device, read, write ) - AM_RANGE(0x1740, 0x177f) AM_MIRROR(0xe000) AM_DEVREADWRITE("miot_u2", mos6530_device, read, write ) - AM_RANGE(0x1780, 0x17bf) AM_MIRROR(0xe000) AM_RAM - AM_RANGE(0x17c0, 0x17ff) AM_MIRROR(0xe000) AM_RAM - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0xe000) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0xe000) AM_ROM -ADDRESS_MAP_END +void kim1_state::kim1_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0xe000).ram(); + map(0x1700, 0x173f).mirror(0xe000).rw("miot_u3", FUNC(mos6530_device::read), FUNC(mos6530_device::write)); + map(0x1740, 0x177f).mirror(0xe000).rw(m_riot2, FUNC(mos6530_device::read), FUNC(mos6530_device::write)); + map(0x1780, 0x17bf).mirror(0xe000).ram(); + map(0x17c0, 0x17ff).mirror(0xe000).ram(); + map(0x1800, 0x1bff).mirror(0xe000).rom(); + map(0x1c00, 0x1fff).mirror(0xe000).rom(); +} // RS and ST key input INPUT_CHANGED_MEMBER(kim1_state::trigger_reset) diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp index 0afc83e0307..a8354a6394d 100644 --- a/src/mame/drivers/kingdrby.cpp +++ b/src/mame/drivers/kingdrby.cpp @@ -418,82 +418,91 @@ WRITE8_MEMBER(kingdrby_state::led_array_w) * *************************************/ -ADDRESS_MAP_START(kingdrby_state::master_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0xc00) AM_SHARE("share1") - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("vram") - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(sc0_attr_w) AM_SHARE("attr") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::master_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_NOP //interrupt ack -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::slave_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom, tested for the post check - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") //backup ram - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* I/O Ports */ - AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* I/O Ports */ - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x7400, 0x74ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x7801, 0x780f) AM_WRITE(led_array_w) - AM_RANGE(0x7a00, 0x7a00) AM_RAM //buffer for the key matrix - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW") -ADDRESS_MAP_END +void kingdrby_state::master_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x33ff).ram().mirror(0xc00).share("share1"); + map(0x4000, 0x43ff).ram().w(this, FUNC(kingdrby_state::sc0_vram_w)).share("vram"); + map(0x5000, 0x53ff).ram().w(this, FUNC(kingdrby_state::sc0_attr_w)).share("attr"); +} + +void kingdrby_state::master_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).noprw(); //interrupt ack +} + +void kingdrby_state::slave_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x3fff).rom(); //sound rom, tested for the post check + map(0x4000, 0x43ff).ram().share("nvram"); //backup ram + map(0x5000, 0x5003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* I/O Ports */ + map(0x6000, 0x6003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* I/O Ports */ + map(0x7000, 0x73ff).ram().share("share1"); + map(0x7400, 0x74ff).ram().share("spriteram"); + map(0x7600, 0x7600).w("crtc", FUNC(mc6845_device::address_w)); + map(0x7601, 0x7601).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x7801, 0x780f).w(this, FUNC(kingdrby_state::led_array_w)); + map(0x7a00, 0x7a00).ram(); //buffer for the key matrix + map(0x7c00, 0x7c00).portr("DSW"); +} WRITE8_MEMBER(kingdrby_state::kingdrbb_lamps_w) { // (same as the inputs but active high) } -ADDRESS_MAP_START(kingdrby_state::slave_1986_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom tested for the post check - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") //backup ram - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* I/O Ports */ +void kingdrby_state::slave_1986_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x3fff).rom(); //sound rom tested for the post check + map(0x4000, 0x47ff).ram().share("nvram"); //backup ram + map(0x5000, 0x5003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* I/O Ports */ // AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* I/O Ports */ - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x7400, 0x74ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x7800, 0x7800) AM_READ_PORT("KEY0") - AM_RANGE(0x7801, 0x7801) AM_READ_PORT("KEY1") - AM_RANGE(0x7802, 0x7802) AM_READ_PORT("KEY2") - AM_RANGE(0x7803, 0x7803) AM_READ_PORT("KEY3") - AM_RANGE(0x7800, 0x7803) AM_WRITE(kingdrbb_lamps_w) - AM_RANGE(0x7a00, 0x7a00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::slave_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_NOP //interrupt ack -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::cowrace_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingdrby_state::cowrace_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ym2203_device, write) -ADDRESS_MAP_END + map(0x7000, 0x73ff).ram().share("share1"); + map(0x7400, 0x74ff).ram().share("spriteram"); + map(0x7600, 0x7600).w("crtc", FUNC(mc6845_device::address_w)); + map(0x7601, 0x7601).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x7800, 0x7800).portr("KEY0"); + map(0x7801, 0x7801).portr("KEY1"); + map(0x7802, 0x7802).portr("KEY2"); + map(0x7803, 0x7803).portr("KEY3"); + map(0x7800, 0x7803).w(this, FUNC(kingdrby_state::kingdrbb_lamps_w)); + map(0x7a00, 0x7a00).portr("SYSTEM"); + map(0x7c00, 0x7c00).portr("DSW"); +} + +void kingdrby_state::slave_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).noprw(); //interrupt ack +} + +void kingdrby_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x23ff).ram(); +} + +void kingdrby_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::data_address_w)); +} + +void kingdrby_state::cowrace_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); +} + +void kingdrby_state::cowrace_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x41).w("aysnd", FUNC(ym2203_device::write)); +} WRITE8_MEMBER(kingdrby_state::outportb_w) diff --git a/src/mame/drivers/kingobox.cpp b/src/mame/drivers/kingobox.cpp index 4da81267f99..43a3c99c6b7 100644 --- a/src/mame/drivers/kingobox.cpp +++ b/src/mame/drivers/kingobox.cpp @@ -52,101 +52,110 @@ WRITE8_MEMBER(kingofb_state::sound_command_w) } -ADDRESS_MAP_START(kingofb_state::kingobox_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share2") /* shared with sprite cpu */ - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share1") /* shared with video cpu */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM /* ???? */ - AM_RANGE(0xf800, 0xf800) AM_WRITE(kingofb_f800_w) /* NMI enable, palette bank */ - AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* ???? */ - AM_RANGE(0xf802, 0xf802) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0xf803, 0xf803) AM_WRITE(scroll_interrupt_w) - AM_RANGE(0xf804, 0xf804) AM_WRITE(video_interrupt_w) - AM_RANGE(0xf807, 0xf807) AM_WRITE(sound_command_w) /* sound latch */ - AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("DSW1") - AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("DSW2") - AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P1") - AM_RANGE(0xfc03, 0xfc03) AM_READ_PORT("P2") - AM_RANGE(0xfc04, 0xfc04) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfc05, 0xfc05) AM_READ_PORT("EXTRA") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::kingobox_video_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1") /* shared with main */ - AM_RANGE(0xc000, 0xc0ff) AM_RAM_WRITE(kingofb_videoram_w) AM_SHARE("videoram") /* background vram */ - AM_RANGE(0xc400, 0xc4ff) AM_RAM_WRITE(kingofb_colorram_w) AM_SHARE("colorram") /* background colorram */ - AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(kingofb_videoram2_w) AM_SHARE("videoram2") /* foreground vram */ - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(kingofb_colorram2_w) AM_SHARE("colorram2") /* foreground colorram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::kingobox_sprite_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share2") /* shared with main */ - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0xc400, 0xc43f) AM_RAM /* something related to scroll? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::kingobox_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_WRITENOP /* ??? */ - AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::kingobox_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END +void kingofb_state::kingobox_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram(); /* work ram */ + map(0xe000, 0xe7ff).ram().share("share2"); /* shared with sprite cpu */ + map(0xe800, 0xefff).ram().share("share1"); /* shared with video cpu */ + map(0xf000, 0xf7ff).ram(); /* ???? */ + map(0xf800, 0xf800).w(this, FUNC(kingofb_state::kingofb_f800_w)); /* NMI enable, palette bank */ + map(0xf801, 0xf801).nopw(); /* ???? */ + map(0xf802, 0xf802).writeonly().share("scroll_y"); + map(0xf803, 0xf803).w(this, FUNC(kingofb_state::scroll_interrupt_w)); + map(0xf804, 0xf804).w(this, FUNC(kingofb_state::video_interrupt_w)); + map(0xf807, 0xf807).w(this, FUNC(kingofb_state::sound_command_w)); /* sound latch */ + map(0xfc00, 0xfc00).portr("DSW1"); + map(0xfc01, 0xfc01).portr("DSW2"); + map(0xfc02, 0xfc02).portr("P1"); + map(0xfc03, 0xfc03).portr("P2"); + map(0xfc04, 0xfc04).portr("SYSTEM"); + map(0xfc05, 0xfc05).portr("EXTRA"); +} + +void kingofb_state::kingobox_video_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); /* work ram */ + map(0xa000, 0xa7ff).ram().share("share1"); /* shared with main */ + map(0xc000, 0xc0ff).ram().w(this, FUNC(kingofb_state::kingofb_videoram_w)).share("videoram"); /* background vram */ + map(0xc400, 0xc4ff).ram().w(this, FUNC(kingofb_state::kingofb_colorram_w)).share("colorram"); /* background colorram */ + map(0xc800, 0xcbff).ram().w(this, FUNC(kingofb_state::kingofb_videoram2_w)).share("videoram2"); /* foreground vram */ + map(0xcc00, 0xcfff).ram().w(this, FUNC(kingofb_state::kingofb_colorram2_w)).share("colorram2"); /* foreground colorram */ +} + +void kingofb_state::kingobox_sprite_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x87ff).ram(); /* work ram */ + map(0xa000, 0xa7ff).ram().share("share2"); /* shared with main */ + map(0xc000, 0xc3ff).ram().share("spriteram"); /* sprite ram */ + map(0xc400, 0xc43f).ram(); /* something related to scroll? */ +} + +void kingofb_state::kingobox_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0x8000, 0x8000).nopw(); /* ??? */ + map(0xc000, 0xc3ff).ram(); /* work ram */ +} + +void kingofb_state::kingobox_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("dac", FUNC(dac_byte_interface::write)); + map(0x08, 0x08).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x0c, 0x0c).w("aysnd", FUNC(ay8910_device::address_w)); +} /* Ring King */ -ADDRESS_MAP_START(kingofb_state::ringking_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */ - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share2") /* shared with sprite cpu */ - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("share1") /* shared with video cpu */ - AM_RANGE(0xd800, 0xd800) AM_WRITE(kingofb_f800_w) - AM_RANGE(0xd801, 0xd801) AM_WRITE(sprite_interrupt_w) - AM_RANGE(0xd802, 0xd802) AM_WRITE(video_interrupt_w) - AM_RANGE(0xd803, 0xd803) AM_WRITE(sound_command_w) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1") - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1") - AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2") - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe005, 0xe005) AM_READ_PORT("EXTRA") - AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0xf000, 0xf7ff) AM_RAM /* ???? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::ringking_video_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") /* shared with main */ - AM_RANGE(0xa800, 0xa8ff) AM_RAM_WRITE(kingofb_videoram_w) AM_SHARE("videoram") /* background vram */ - AM_RANGE(0xac00, 0xacff) AM_RAM_WRITE(kingofb_colorram_w) AM_SHARE("colorram") /* background colorram */ - AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(kingofb_videoram2_w) AM_SHARE("videoram2") /* foreground vram */ - AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(kingofb_colorram2_w) AM_SHARE("colorram2") /* foreground colorram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::ringking_sprite_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */ - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share2") /* shared with main */ - AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0xa400, 0xa43f) AM_RAM /* something related to scroll? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingofb_state::ringking_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END +void kingofb_state::ringking_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram(); /* work ram */ + map(0xc800, 0xcfff).ram().share("share2"); /* shared with sprite cpu */ + map(0xd000, 0xd7ff).ram().share("share1"); /* shared with video cpu */ + map(0xd800, 0xd800).w(this, FUNC(kingofb_state::kingofb_f800_w)); + map(0xd801, 0xd801).w(this, FUNC(kingofb_state::sprite_interrupt_w)); + map(0xd802, 0xd802).w(this, FUNC(kingofb_state::video_interrupt_w)); + map(0xd803, 0xd803).w(this, FUNC(kingofb_state::sound_command_w)); + map(0xe000, 0xe000).portr("DSW1"); + map(0xe001, 0xe001).portr("DSW2"); + map(0xe002, 0xe002).portr("P1"); + map(0xe003, 0xe003).portr("P2"); + map(0xe004, 0xe004).portr("SYSTEM"); + map(0xe005, 0xe005).portr("EXTRA"); + map(0xe800, 0xe800).writeonly().share("scroll_y"); + map(0xf000, 0xf7ff).ram(); /* ???? */ +} + +void kingofb_state::ringking_video_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); /* work ram */ + map(0xc000, 0xc7ff).ram().share("share1"); /* shared with main */ + map(0xa800, 0xa8ff).ram().w(this, FUNC(kingofb_state::kingofb_videoram_w)).share("videoram"); /* background vram */ + map(0xac00, 0xacff).ram().w(this, FUNC(kingofb_state::kingofb_colorram_w)).share("colorram"); /* background colorram */ + map(0xa000, 0xa3ff).ram().w(this, FUNC(kingofb_state::kingofb_videoram2_w)).share("videoram2"); /* foreground vram */ + map(0xa400, 0xa7ff).ram().w(this, FUNC(kingofb_state::kingofb_colorram2_w)).share("colorram2"); /* foreground colorram */ +} + +void kingofb_state::ringking_sprite_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x87ff).ram(); /* work ram */ + map(0xc800, 0xcfff).ram().share("share2"); /* shared with main */ + map(0xa000, 0xa3ff).ram().share("spriteram"); /* sprite ram */ + map(0xa400, 0xa43f).ram(); /* something related to scroll? */ +} + +void kingofb_state::ringking_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("dac", FUNC(dac_byte_interface::write)); + map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("aysnd", FUNC(ay8910_device::data_address_w)); +} static INPUT_PORTS_START( kingofb ) diff --git a/src/mame/drivers/kingpin.cpp b/src/mame/drivers/kingpin.cpp index 851efc743ed..a51ebfd3dee 100644 --- a/src/mame/drivers/kingpin.cpp +++ b/src/mame/drivers/kingpin.cpp @@ -72,38 +72,42 @@ WRITE8_MEMBER(kingpin_state::sound_nmi_w) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(kingpin_state::kingpin_program_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingpin_state::dealracl_program_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kingpin_state::kingpin_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0x60, 0x60) AM_WRITE(sound_nmi_w) +void kingpin_state::kingpin_program_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xf000, 0xf7ff).ram().share("nvram"); +} + +void kingpin_state::dealracl_program_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0xc000, 0xc7ff).ram().share("nvram"); +} + +void kingpin_state::kingpin_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x20).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x21, 0x21).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0x60, 0x60).w(this, FUNC(kingpin_state::sound_nmi_w)); //AM_RANGE(0x30, 0x30) AM_WRITENOP // lamps? //AM_RANGE(0x40, 0x40) AM_WRITENOP // lamps? //AM_RANGE(0x50, 0x50) AM_WRITENOP // ? //AM_RANGE(0x70, 0x70) AM_WRITENOP // ? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(kingpin_state::kingpin_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) +void kingpin_state::kingpin_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x8001).w("aysnd", FUNC(ay8910_device::address_data_w)); //AM_RANGE(0x8400, 0x8400) AM_READNOP // ? //AM_RANGE(0x8401, 0x8401) AM_WRITENOP // ? - AM_RANGE(0x8800, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0x8800, 0x8fff).ram(); + map(0x9000, 0x9000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/kinst.cpp b/src/mame/drivers/kinst.cpp index 83e885a3205..dfa1834c2c7 100644 --- a/src/mame/drivers/kinst.cpp +++ b/src/mame/drivers/kinst.cpp @@ -448,15 +448,16 @@ WRITE32_MEMBER(kinst_state::control_w) * *************************************/ -ADDRESS_MAP_START(kinst_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x08000000, 0x087fffff) AM_RAM AM_SHARE("rambase2") - AM_RANGE(0x10000080, 0x100000ff) AM_READWRITE(control_r, control_w) AM_SHARE("control") - AM_RANGE(0x10000100, 0x1000013f) AM_READWRITE(ide_r, ide_w) - AM_RANGE(0x10000170, 0x10000173) AM_READWRITE(ide_extra_r, ide_extra_w) - AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("rombase") -ADDRESS_MAP_END +void kinst_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0007ffff).ram().share("rambase"); + map(0x08000000, 0x087fffff).ram().share("rambase2"); + map(0x10000080, 0x100000ff).rw(this, FUNC(kinst_state::control_r), FUNC(kinst_state::control_w)).share("control"); + map(0x10000100, 0x1000013f).rw(this, FUNC(kinst_state::ide_r), FUNC(kinst_state::ide_w)); + map(0x10000170, 0x10000173).rw(this, FUNC(kinst_state::ide_extra_r), FUNC(kinst_state::ide_extra_w)); + map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0).share("rombase"); +} diff --git a/src/mame/drivers/kissproto.cpp b/src/mame/drivers/kissproto.cpp index e6e0029b86e..6a9bf6f39da 100644 --- a/src/mame/drivers/kissproto.cpp +++ b/src/mame/drivers/kissproto.cpp @@ -33,9 +33,10 @@ public: }; -ADDRESS_MAP_START(kissp_state::kissp_map) - AM_RANGE(0x0000, 0x0fff) AM_NOP -ADDRESS_MAP_END +void kissp_state::kissp_map(address_map &map) +{ + map(0x0000, 0x0fff).noprw(); +} static INPUT_PORTS_START( kissp ) INPUT_PORTS_END diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp index 85cbfd53d50..ff805f32276 100644 --- a/src/mame/drivers/klax.cpp +++ b/src/mame/drivers/klax.cpp @@ -79,39 +79,41 @@ void klax_state::machine_reset() * *************************************/ -ADDRESS_MAP_START(klax_state::klax_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE(klax_latch_w) - AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2") - AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w) - AM_RANGE(0x3e0000, 0x3e07ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette") - AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x3f0f80, 0x3f0fff) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext") - AM_RANGE(0x3f2000, 0x3f27ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(klax_state::klax2bl_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE(klax_latch_w) - AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2") +void klax_state::klax_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x260001).portr("P1").w(this, FUNC(klax_state::klax_latch_w)); + map(0x260002, 0x260003).portr("P2"); + map(0x270001, 0x270001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x360000, 0x360001).w(this, FUNC(klax_state::interrupt_ack_w)); + map(0x3e0000, 0x3e07ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette"); + map(0x3f0000, 0x3f0f7f).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x3f0f80, 0x3f0fff).ram().share("mob:slip"); + map(0x3f1000, 0x3f1fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext"); + map(0x3f2000, 0x3f27ff).ram().share("mob"); + map(0x3f2800, 0x3f3fff).ram(); +} + +void klax_state::klax2bl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x260001).portr("P1").w(this, FUNC(klax_state::klax_latch_w)); + map(0x260002, 0x260003).portr("P2"); // AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // no OKI here - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w) - AM_RANGE(0x3e0000, 0x3e07ff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette") - AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x3f0f80, 0x3f0fff) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext") - AM_RANGE(0x3f2000, 0x3f27ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM -ADDRESS_MAP_END + map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x360000, 0x360001).w(this, FUNC(klax_state::interrupt_ack_w)); + map(0x3e0000, 0x3e07ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette"); + map(0x3f0000, 0x3f0f7f).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x3f0f80, 0x3f0fff).ram().share("mob:slip"); + map(0x3f1000, 0x3f1fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext"); + map(0x3f2000, 0x3f27ff).ram().share("mob"); + map(0x3f2800, 0x3f3fff).ram(); +} /************************************* * @@ -228,9 +230,10 @@ MACHINE_CONFIG_START(klax_state::klax) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END -ADDRESS_MAP_START(klax_state::bootleg_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void klax_state::bootleg_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} MACHINE_CONFIG_START(klax_state::klax2bl) klax(config); diff --git a/src/mame/drivers/kncljoe.cpp b/src/mame/drivers/kncljoe.cpp index cbeac9957b3..dccc835ddc2 100644 --- a/src/mame/drivers/kncljoe.cpp +++ b/src/mame/drivers/kncljoe.cpp @@ -45,24 +45,25 @@ WRITE8_MEMBER(kncljoe_state::sound_cmd_w) } -ADDRESS_MAP_START(kncljoe_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(kncljoe_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd001) AM_WRITE(kncljoe_scroll_w) AM_SHARE("scrollregs") - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("P1") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("P2") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB") - AM_RANGE(0xd800, 0xd800) AM_WRITE(sound_cmd_w) - AM_RANGE(0xd801, 0xd801) AM_WRITE(kncljoe_control_w) - AM_RANGE(0xd802, 0xd802) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0xd803, 0xd803) AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0xd807, 0xd807) AM_READNOP /* unknown read */ - AM_RANGE(0xd817, 0xd817) AM_READNOP /* unknown read */ - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void kncljoe_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().w(this, FUNC(kncljoe_state::kncljoe_videoram_w)).share("videoram"); + map(0xd000, 0xd001).w(this, FUNC(kncljoe_state::kncljoe_scroll_w)).share("scrollregs"); + map(0xd800, 0xd800).portr("SYSTEM"); + map(0xd801, 0xd801).portr("P1"); + map(0xd802, 0xd802).portr("P2"); + map(0xd803, 0xd803).portr("DSWA"); + map(0xd804, 0xd804).portr("DSWB"); + map(0xd800, 0xd800).w(this, FUNC(kncljoe_state::sound_cmd_w)); + map(0xd801, 0xd801).w(this, FUNC(kncljoe_state::kncljoe_control_w)); + map(0xd802, 0xd802).w("sn1", FUNC(sn76489_device::write)); + map(0xd803, 0xd803).w("sn2", FUNC(sn76489_device::write)); + map(0xd807, 0xd807).nopr(); /* unknown read */ + map(0xd817, 0xd817).nopr(); /* unknown read */ + map(0xe800, 0xefff).ram().share("spriteram"); + map(0xf000, 0xffff).ram(); +} WRITE8_MEMBER(kncljoe_state::m6803_port1_w) { @@ -103,17 +104,19 @@ WRITE8_MEMBER(kncljoe_state::unused_w) //unused - no MSM on the pcb } -ADDRESS_MAP_START(kncljoe_state::sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0fff) AM_WRITENOP - AM_RANGE(0x1000, 0x1fff) AM_WRITE(sound_irq_ack_w) - AM_RANGE(0x2000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kncljoe_state::sound_portmap) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(m6803_port1_r, m6803_port1_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w) -ADDRESS_MAP_END +void kncljoe_state::sound_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0fff).nopw(); + map(0x1000, 0x1fff).w(this, FUNC(kncljoe_state::sound_irq_ack_w)); + map(0x2000, 0x7fff).rom(); +} + +void kncljoe_state::sound_portmap(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(kncljoe_state::m6803_port1_r), FUNC(kncljoe_state::m6803_port1_w)); + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(kncljoe_state::m6803_port2_r), FUNC(kncljoe_state::m6803_port2_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp index 02d138c8250..b991d853ef3 100644 --- a/src/mame/drivers/koftball.cpp +++ b/src/mame/drivers/koftball.cpp @@ -149,36 +149,38 @@ WRITE16_MEMBER(koftball_state::bmc_2_videoram_w) m_tilemap_2->mark_tile_dirty(offset); } -ADDRESS_MAP_START(koftball_state::koftball_mem) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x220000, 0x22ffff) AM_RAM AM_SHARE("main_ram") - - AM_RANGE(0x260000, 0x260fff) AM_WRITE(bmc_1_videoram_w) AM_SHARE("bmc_1_videoram") - AM_RANGE(0x261000, 0x261fff) AM_WRITE(bmc_2_videoram_w) AM_SHARE("bmc_2_videoram") - AM_RANGE(0x262000, 0x26ffff) AM_RAM - - AM_RANGE(0x280000, 0x28ffff) AM_RAM /* unused ? */ - AM_RANGE(0x2a0000, 0x2a001f) AM_WRITENOP - AM_RANGE(0x2a0000, 0x2a001f) AM_READ(random_number_r) - AM_RANGE(0x2b0000, 0x2b0003) AM_READ(random_number_r) - AM_RANGE(0x2d8000, 0x2d8001) AM_READ(random_number_r) - AM_RANGE(0x2da000, 0x2da003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) - - AM_RANGE(0x2db000, 0x2db001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x2db002, 0x2db003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x2db004, 0x2db005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - - AM_RANGE(0x2dc000, 0x2dc001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0x2f0000, 0x2f0003) AM_READ_PORT("INPUTS") - AM_RANGE(0x300000, 0x300001) AM_WRITENOP - AM_RANGE(0x320000, 0x320001) AM_WRITENOP - AM_RANGE(0x340000, 0x340001) AM_READ(prot_r) - AM_RANGE(0x360000, 0x360001) AM_WRITE(prot_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(koftball_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void koftball_state::koftball_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x220000, 0x22ffff).ram().share("main_ram"); + + map(0x260000, 0x260fff).w(this, FUNC(koftball_state::bmc_1_videoram_w)).share("bmc_1_videoram"); + map(0x261000, 0x261fff).w(this, FUNC(koftball_state::bmc_2_videoram_w)).share("bmc_2_videoram"); + map(0x262000, 0x26ffff).ram(); + + map(0x280000, 0x28ffff).ram(); /* unused ? */ + map(0x2a0000, 0x2a001f).nopw(); + map(0x2a0000, 0x2a001f).r(this, FUNC(koftball_state::random_number_r)); + map(0x2b0000, 0x2b0003).r(this, FUNC(koftball_state::random_number_r)); + map(0x2d8000, 0x2d8001).r(this, FUNC(koftball_state::random_number_r)); + map(0x2da000, 0x2da003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00); + + map(0x2db001, 0x2db001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x2db003, 0x2db003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x2db005, 0x2db005).w("ramdac", FUNC(ramdac_device::mask_w)); + + map(0x2dc000, 0x2dc000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x2f0000, 0x2f0003).portr("INPUTS"); + map(0x300000, 0x300001).nopw(); + map(0x320000, 0x320001).nopw(); + map(0x340000, 0x340001).r(this, FUNC(koftball_state::prot_r)); + map(0x360000, 0x360001).w(this, FUNC(koftball_state::prot_w)); +} + +void koftball_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} static INPUT_PORTS_START( koftball ) PORT_START("INPUTS") diff --git a/src/mame/drivers/koikoi.cpp b/src/mame/drivers/koikoi.cpp index a2aff475d94..24795c48017 100644 --- a/src/mame/drivers/koikoi.cpp +++ b/src/mame/drivers/koikoi.cpp @@ -232,20 +232,22 @@ WRITE8_MEMBER(koikoi_state::io_w) * *************************************/ -ADDRESS_MAP_START(koikoi_state::koikoi_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW") - AM_RANGE(0x9000, 0x9007) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(koikoi_state::koikoi_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_WRITENOP //watchdog - AM_RANGE(0x03, 0x03) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END +void koikoi_state::koikoi_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x7000, 0x77ff).ram().w(this, FUNC(koikoi_state::vram_w)).share("videoram"); + map(0x8000, 0x8000).portr("DSW"); + map(0x9000, 0x9007).rw(this, FUNC(koikoi_state::io_r), FUNC(koikoi_state::io_w)); +} + +void koikoi_state::koikoi_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x02).nopw(); //watchdog + map(0x03, 0x03).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x06, 0x07).w("aysnd", FUNC(ay8910_device::data_address_w)); +} /************************************* * diff --git a/src/mame/drivers/konamigq.cpp b/src/mame/drivers/konamigq.cpp index 038c8c29da7..c786fbd2fb4 100644 --- a/src/mame/drivers/konamigq.cpp +++ b/src/mame/drivers/konamigq.cpp @@ -167,25 +167,26 @@ READ8_MEMBER(konamigq_state::pcmram_r) /* Video */ -ADDRESS_MAP_START(konamigq_state::konamigq_map) - AM_RANGE(0x1f000000, 0x1f00001f) AM_DEVREADWRITE8("am53cf96", am53cf96_device, read, write, 0x00ff00ff) - AM_RANGE(0x1f100000, 0x1f10001f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0x00ff00ff) - AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE16(eeprom_w, 0x0000ffff) - AM_RANGE(0x1f198000, 0x1f198003) AM_WRITENOP /* cabinet lamps? */ - AM_RANGE(0x1f1a0000, 0x1f1a0003) AM_WRITENOP /* indicates gun trigger */ - AM_RANGE(0x1f200000, 0x1f200003) AM_READ_PORT("GUNX1") - AM_RANGE(0x1f208000, 0x1f208003) AM_READ_PORT("GUNY1") - AM_RANGE(0x1f210000, 0x1f210003) AM_READ_PORT("GUNX2") - AM_RANGE(0x1f218000, 0x1f218003) AM_READ_PORT("GUNY2") - AM_RANGE(0x1f220000, 0x1f220003) AM_READ_PORT("GUNX3") - AM_RANGE(0x1f228000, 0x1f228003) AM_READ_PORT("GUNY3") - AM_RANGE(0x1f230000, 0x1f230003) AM_READ_PORT("P1_P2") - AM_RANGE(0x1f230004, 0x1f230007) AM_READ_PORT("P3_SERVICE") - AM_RANGE(0x1f238000, 0x1f238003) AM_READ_PORT("DSW") - AM_RANGE(0x1f300000, 0x1f5fffff) AM_READWRITE8(pcmram_r, pcmram_w, 0x00ff00ff) - AM_RANGE(0x1f680000, 0x1f68001f) AM_DEVREADWRITE8("mb89371", mb89371_device, read, write, 0x00ff00ff) - AM_RANGE(0x1f780000, 0x1f780003) AM_WRITENOP /* watchdog? */ -ADDRESS_MAP_END +void konamigq_state::konamigq_map(address_map &map) +{ + map(0x1f000000, 0x1f00001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff); + map(0x1f100000, 0x1f10001f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)).umask32(0x00ff00ff); + map(0x1f180000, 0x1f180001).w(this, FUNC(konamigq_state::eeprom_w)); + map(0x1f198000, 0x1f198003).nopw(); /* cabinet lamps? */ + map(0x1f1a0000, 0x1f1a0003).nopw(); /* indicates gun trigger */ + map(0x1f200000, 0x1f200003).portr("GUNX1"); + map(0x1f208000, 0x1f208003).portr("GUNY1"); + map(0x1f210000, 0x1f210003).portr("GUNX2"); + map(0x1f218000, 0x1f218003).portr("GUNY2"); + map(0x1f220000, 0x1f220003).portr("GUNX3"); + map(0x1f228000, 0x1f228003).portr("GUNY3"); + map(0x1f230000, 0x1f230003).portr("P1_P2"); + map(0x1f230004, 0x1f230007).portr("P3_SERVICE"); + map(0x1f238000, 0x1f238003).portr("DSW"); + map(0x1f300000, 0x1f5fffff).rw(this, FUNC(konamigq_state::pcmram_r), FUNC(konamigq_state::pcmram_w)).umask32(0x00ff00ff); + map(0x1f680000, 0x1f68001f).rw("mb89371", FUNC(mb89371_device::read), FUNC(mb89371_device::write)).umask32(0x00ff00ff); + map(0x1f780000, 0x1f780003).nopw(); /* watchdog? */ +} /* SOUND CPU */ @@ -230,29 +231,32 @@ WRITE16_MEMBER(konamigq_state::tms57002_control_word_w) } /* 68000 memory handling - near identical to Konami GX */ -ADDRESS_MAP_START(konamigq_state::konamigq_sound_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00) - AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r,tms57002_data_word_w) - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff) - AM_RANGE(0x500000, 0x500001) AM_READWRITE(tms57002_status_word_r,tms57002_control_word_w) - AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET -ADDRESS_MAP_END +void konamigq_state::konamigq_sound_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x2004ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00); + map(0x200000, 0x2004ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); + map(0x300000, 0x300001).rw(this, FUNC(konamigq_state::tms57002_data_word_r), FUNC(konamigq_state::tms57002_data_word_w)); + map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff); + map(0x500000, 0x500001).rw(this, FUNC(konamigq_state::tms57002_status_word_r), FUNC(konamigq_state::tms57002_control_word_w)); + map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET +} /* TMS57002 memory handling */ -ADDRESS_MAP_START(konamigq_state::konamigq_dasp_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM -ADDRESS_MAP_END +void konamigq_state::konamigq_dasp_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); +} /* K058141 memory handling */ -ADDRESS_MAP_START(konamigq_state::konamigq_k054539_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("k054539", 0) - AM_RANGE(0x080000, 0x3fffff) AM_RAM AM_SHARE("pcmram") -ADDRESS_MAP_END +void konamigq_state::konamigq_k054539_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("k054539", 0); + map(0x080000, 0x3fffff).ram().share("pcmram"); +} /* 058141 */ diff --git a/src/mame/drivers/konamigv.cpp b/src/mame/drivers/konamigv.cpp index 42e744a3044..bac700706c3 100644 --- a/src/mame/drivers/konamigv.cpp +++ b/src/mame/drivers/konamigv.cpp @@ -185,52 +185,57 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(konamigv_state::konamigv_map) - AM_RANGE(0x1f000000, 0x1f00001f) AM_DEVREADWRITE8("am53cf96", am53cf96_device, read, write, 0x00ff00ff) - AM_RANGE(0x1f100000, 0x1f100003) AM_READ_PORT("P1") - AM_RANGE(0x1f100004, 0x1f100007) AM_READ_PORT("P2") - AM_RANGE(0x1f100008, 0x1f10000b) AM_READ_PORT("P3_P4") - AM_RANGE(0x1f180000, 0x1f180003) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x1f680000, 0x1f68001f) AM_DEVREADWRITE8("mb89371", mb89371_device, read, write, 0x00ff00ff) - AM_RANGE(0x1f780000, 0x1f780003) AM_WRITENOP /* watchdog? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigv_state::simpbowl_map) - AM_IMPORT_FROM( konamigv_map ) - - AM_RANGE(0x1f680080, 0x1f68008f) AM_READWRITE16(flash_r, flash_w, 0xffffffff) - AM_RANGE(0x1f6800c0, 0x1f6800c7) AM_DEVREAD8("upd", upd4701_device, read_xy, 0xff00ff00) - AM_RANGE(0x1f6800c8, 0x1f6800cb) AM_DEVREAD8("upd", upd4701_device, reset_xy, 0x0000ff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigv_state::btchamp_map) - AM_IMPORT_FROM( konamigv_map ) - - AM_RANGE(0x1f380000, 0x1f3fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) - AM_RANGE(0x1f680080, 0x1f680087) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0xff00ff00) - AM_RANGE(0x1f680080, 0x1f680087) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff00ff) - AM_RANGE(0x1f680088, 0x1f68008b) AM_WRITE16(btc_trackball_w, 0x0000ffff) - AM_RANGE(0x1f6800e0, 0x1f6800e3) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigv_state::kdeadeye_map) - AM_IMPORT_FROM( konamigv_map ) - - AM_RANGE(0x1f380000, 0x1f3fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) - AM_RANGE(0x1f680080, 0x1f680083) AM_READ_PORT("GUNX1") - AM_RANGE(0x1f680090, 0x1f680093) AM_READ_PORT("GUNY1") - AM_RANGE(0x1f6800a0, 0x1f6800a3) AM_READ_PORT("GUNX2") - AM_RANGE(0x1f6800b0, 0x1f6800b3) AM_READ_PORT("GUNY2") - AM_RANGE(0x1f6800c0, 0x1f6800c3) AM_READ_PORT("BUTTONS") - AM_RANGE(0x1f6800e0, 0x1f6800e3) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigv_state::tmosh_map) - AM_IMPORT_FROM( konamigv_map ) - - AM_RANGE(0x1f680080, 0x1f680083) AM_READ16(tokimeki_serial_r, 0x0000ffff) - AM_RANGE(0x1f680090, 0x1f680093) AM_WRITE16(tokimeki_serial_w, 0x0000ffff) -ADDRESS_MAP_END +void konamigv_state::konamigv_map(address_map &map) +{ + map(0x1f000000, 0x1f00001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff); + map(0x1f100000, 0x1f100003).portr("P1"); + map(0x1f100004, 0x1f100007).portr("P2"); + map(0x1f100008, 0x1f10000b).portr("P3_P4"); + map(0x1f180000, 0x1f180003).portw("EEPROMOUT"); + map(0x1f680000, 0x1f68001f).rw("mb89371", FUNC(mb89371_device::read), FUNC(mb89371_device::write)).umask32(0x00ff00ff); + map(0x1f780000, 0x1f780003).nopw(); /* watchdog? */ +} + +void konamigv_state::simpbowl_map(address_map &map) +{ + konamigv_map(map); + + map(0x1f680080, 0x1f68008f).rw(this, FUNC(konamigv_state::flash_r), FUNC(konamigv_state::flash_w)); + map(0x1f6800c0, 0x1f6800c7).r("upd", FUNC(upd4701_device::read_xy)).umask32(0xff00ff00); + map(0x1f6800c9, 0x1f6800c9).r("upd", FUNC(upd4701_device::reset_xy)); +} + +void konamigv_state::btchamp_map(address_map &map) +{ + konamigv_map(map); + + map(0x1f380000, 0x1f3fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0x1f680080, 0x1f680087).r("upd1", FUNC(upd4701_device::read_xy)).umask32(0xff00ff00); + map(0x1f680080, 0x1f680087).r("upd2", FUNC(upd4701_device::read_xy)).umask32(0x00ff00ff); + map(0x1f680088, 0x1f680089).w(this, FUNC(konamigv_state::btc_trackball_w)); + map(0x1f6800e0, 0x1f6800e3).nopw(); +} + +void konamigv_state::kdeadeye_map(address_map &map) +{ + konamigv_map(map); + + map(0x1f380000, 0x1f3fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0x1f680080, 0x1f680083).portr("GUNX1"); + map(0x1f680090, 0x1f680093).portr("GUNY1"); + map(0x1f6800a0, 0x1f6800a3).portr("GUNX2"); + map(0x1f6800b0, 0x1f6800b3).portr("GUNY2"); + map(0x1f6800c0, 0x1f6800c3).portr("BUTTONS"); + map(0x1f6800e0, 0x1f6800e3).nopw(); +} + +void konamigv_state::tmosh_map(address_map &map) +{ + konamigv_map(map); + + map(0x1f680080, 0x1f680081).r(this, FUNC(konamigv_state::tokimeki_serial_r)); + map(0x1f680090, 0x1f680091).w(this, FUNC(konamigv_state::tokimeki_serial_w)); +} /* SCSI */ diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp index a1f1a1614e1..f9c121f1897 100644 --- a/src/mame/drivers/konamigx.cpp +++ b/src/mame/drivers/konamigx.cpp @@ -985,87 +985,92 @@ WRITE32_MEMBER(konamigx_state::type1_cablamps_w) /* 68EC020 memory handlers */ /**********************************************************************************/ -ADDRESS_MAP_START(konamigx_state::gx_base_memmap) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // BIOS ROM - AM_RANGE(0x200000, 0x3fffff) AM_ROM // main program ROM - AM_RANGE(0x400000, 0x7fffff) AM_ROM // data ROM - AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("workram") - AM_RANGE(0xd00000, 0xd01fff) AM_DEVREAD("k056832", k056832_device, k_5bpp_rom_long_r) - AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE16("k055673", k055673_device, k053247_word_r, k053247_word_w, 0xffffffff) - AM_RANGE(0xd21000, 0xd21fff) AM_RAM // second bank of sprite RAM, accessed thru ESC - AM_RANGE(0xd22000, 0xd23fff) AM_RAM // extra bank checked at least by sexyparo, pending further investigation. - AM_RANGE(0xd40000, 0xd4003f) AM_DEVWRITE("k056832", k056832_device, long_w) - AM_RANGE(0xd44000, 0xd4400f) AM_WRITE(konamigx_tilebank_w) - AM_RANGE(0xd48000, 0xd48007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff) - AM_RANGE(0xd4a000, 0xd4a00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff) - AM_RANGE(0xd4a010, 0xd4a01f) AM_DEVWRITE16("k055673", k055673_device, k055673_reg_word_w, 0xffffffff) - AM_RANGE(0xd4c000, 0xd4c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00ff00) - AM_RANGE(0xd4e000, 0xd4e01f) AM_WRITENOP // left-over for "secondary" CCU, apparently (used by type 3/4 for slave screen?) - AM_RANGE(0xd50000, 0xd500ff) AM_DEVWRITE("k055555", k055555_device, K055555_long_w) - AM_RANGE(0xd52000, 0xd5201f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xff00ff00) - AM_RANGE(0xd56000, 0xd56003) AM_WRITE(eeprom_w) - AM_RANGE(0xd58000, 0xd58003) AM_WRITE(control_w) - AM_RANGE(0xd5a000, 0xd5a003) AM_READ_PORT("SYSTEM_DSW") - AM_RANGE(0xd5c000, 0xd5c003) AM_READ_PORT("INPUTS") - AM_RANGE(0xd5e000, 0xd5e003) AM_READ_PORT("SERVICE") - AM_RANGE(0xd80000, 0xd8001f) AM_DEVWRITE("k054338", k054338_device, long_w) - AM_RANGE(0xda0000, 0xda1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) - AM_RANGE(0xda2000, 0xda3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigx_state::gx_type1_map) - AM_IMPORT_FROM(gx_base_memmap) - AM_RANGE(0xd90000, 0xd97fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xdc0000, 0xdc1fff) AM_RAM // LAN RAM? (Racin' Force has, Open Golf doesn't) - AM_RANGE(0xdd0000, 0xdd00ff) AM_READNOP AM_WRITENOP // LAN board - AM_RANGE(0xdda000, 0xddafff) AM_WRITE_PORT("ADC-WRPORT") - AM_RANGE(0xddc000, 0xddcfff) AM_READ_PORT("ADC-RDPORT") - AM_RANGE(0xdde000, 0xdde003) AM_WRITE(type1_cablamps_w) - AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl") - AM_RANGE(0xe20000, 0xe2000f) AM_WRITENOP - AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP - AM_RANGE(0xe80000, 0xe81fff) AM_RAM AM_SHARE("k053936_0_line") // chips 21L+19L / S - AM_RANGE(0xec0000, 0xedffff) AM_RAM_WRITE(konamigx_t1_psacmap_w) AM_SHARE("psacram") // chips 20J+23J+18J / S - AM_RANGE(0xf00000, 0xf3ffff) AM_READ(type1_roz_r1) // ROM readback - AM_RANGE(0xf40000, 0xf7ffff) AM_READ(type1_roz_r2) // ROM readback - AM_RANGE(0xf80000, 0xf80fff) AM_RAM // chip 21Q / S - AM_RANGE(0xfc0000, 0xfc00ff) AM_RAM // chip 22N / S -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigx_state::gx_type2_map) - AM_IMPORT_FROM(gx_base_memmap) - AM_RANGE(0xcc0000, 0xcc0003) AM_WRITE(esc_w) - AM_RANGE(0xd90000, 0xd97fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigx_state::gx_type3_map) - AM_IMPORT_FROM(gx_base_memmap) - AM_RANGE(0xd90000, 0xd97fff) AM_RAM +void konamigx_state::gx_base_memmap(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); // BIOS ROM + map(0x200000, 0x3fffff).rom(); // main program ROM + map(0x400000, 0x7fffff).rom(); // data ROM + map(0xc00000, 0xc1ffff).ram().share("workram"); + map(0xd00000, 0xd01fff).r(m_k056832, FUNC(k056832_device::k_5bpp_rom_long_r)); + map(0xd20000, 0xd20fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w)); + map(0xd21000, 0xd21fff).ram(); // second bank of sprite RAM, accessed thru ESC + map(0xd22000, 0xd23fff).ram(); // extra bank checked at least by sexyparo, pending further investigation. + map(0xd40000, 0xd4003f).w(m_k056832, FUNC(k056832_device::long_w)); + map(0xd44000, 0xd4400f).w(this, FUNC(konamigx_state::konamigx_tilebank_w)); + map(0xd48000, 0xd48007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); + map(0xd4a000, 0xd4a00f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); + map(0xd4a010, 0xd4a01f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0xd4c000, 0xd4c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask32(0xff00ff00); + map(0xd4e000, 0xd4e01f).nopw(); // left-over for "secondary" CCU, apparently (used by type 3/4 for slave screen?) + map(0xd50000, 0xd500ff).w(m_k055555, FUNC(k055555_device::K055555_long_w)); + map(0xd52000, 0xd5201f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)).umask32(0xff00ff00); + map(0xd56000, 0xd56003).w(this, FUNC(konamigx_state::eeprom_w)); + map(0xd58000, 0xd58003).w(this, FUNC(konamigx_state::control_w)); + map(0xd5a000, 0xd5a003).portr("SYSTEM_DSW"); + map(0xd5c000, 0xd5c003).portr("INPUTS"); + map(0xd5e000, 0xd5e003).portr("SERVICE"); + map(0xd80000, 0xd8001f).w(m_k054338, FUNC(k054338_device::long_w)); + map(0xda0000, 0xda1fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); + map(0xda2000, 0xda3fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); +} + +void konamigx_state::gx_type1_map(address_map &map) +{ + gx_base_memmap(map); + map(0xd90000, 0xd97fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xdc0000, 0xdc1fff).ram(); // LAN RAM? (Racin' Force has, Open Golf doesn't) + map(0xdd0000, 0xdd00ff).nopr().nopw(); // LAN board + map(0xdda000, 0xddafff).portw("ADC-WRPORT"); + map(0xddc000, 0xddcfff).portr("ADC-RDPORT"); + map(0xdde000, 0xdde003).w(this, FUNC(konamigx_state::type1_cablamps_w)); + map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl"); + map(0xe20000, 0xe2000f).nopw(); + map(0xe40000, 0xe40003).nopw(); + map(0xe80000, 0xe81fff).ram().share("k053936_0_line"); // chips 21L+19L / S + map(0xec0000, 0xedffff).ram().w(this, FUNC(konamigx_state::konamigx_t1_psacmap_w)).share("psacram"); // chips 20J+23J+18J / S + map(0xf00000, 0xf3ffff).r(this, FUNC(konamigx_state::type1_roz_r1)); // ROM readback + map(0xf40000, 0xf7ffff).r(this, FUNC(konamigx_state::type1_roz_r2)); // ROM readback + map(0xf80000, 0xf80fff).ram(); // chip 21Q / S + map(0xfc0000, 0xfc00ff).ram(); // chip 22N / S +} + +void konamigx_state::gx_type2_map(address_map &map) +{ + gx_base_memmap(map); + map(0xcc0000, 0xcc0003).w(this, FUNC(konamigx_state::esc_w)); + map(0xd90000, 0xd97fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); +} + +void konamigx_state::gx_type3_map(address_map &map) +{ + gx_base_memmap(map); + map(0xd90000, 0xd97fff).ram(); //AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w) - AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl") + map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl"); //AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP - AM_RANGE(0xe40000, 0xe40003) AM_WRITE(konamigx_type3_psac2_bank_w) AM_SHARE("psac2_bank") - AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_SHARE("k053936_0_line") - AM_RANGE(0xe80000, 0xe83fff) AM_RAM AM_SHARE("paletteram") // main monitor palette - AM_RANGE(0xea0000, 0xea3fff) AM_RAM AM_SHARE("subpaletteram") - AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r) + map(0xe40000, 0xe40003).w(this, FUNC(konamigx_state::konamigx_type3_psac2_bank_w)).share("psac2_bank"); + map(0xe60000, 0xe60fff).ram().share("k053936_0_line"); + map(0xe80000, 0xe83fff).ram().share("paletteram"); // main monitor palette + map(0xea0000, 0xea3fff).ram().share("subpaletteram"); + map(0xec0000, 0xec0003).r(this, FUNC(konamigx_state::type3_sync_r)); //AM_RANGE(0xf00000, 0xf07fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigx_state::gx_type4_map) - AM_IMPORT_FROM(gx_base_memmap) - AM_RANGE(0xcc0000, 0xcc0007) AM_WRITE(type4_prot_w) - AM_RANGE(0xd90000, 0xd97fff) AM_RAM - AM_RANGE(0xe00000, 0xe0001f) AM_RAM AM_SHARE("k053936_0_ctrl") - AM_RANGE(0xe20000, 0xe20003) AM_WRITENOP - AM_RANGE(0xe40000, 0xe40003) AM_WRITENOP - AM_RANGE(0xe60000, 0xe60fff) AM_RAM AM_SHARE("k053936_0_line") // 29C & 29G (PSAC2 line control) - AM_RANGE(0xe80000, 0xe87fff) AM_RAM AM_SHARE("paletteram") // 11G/13G/15G (main screen palette RAM) - AM_RANGE(0xea0000, 0xea7fff) AM_RAM AM_SHARE("subpaletteram") // 5G/7G/9G (sub screen palette RAM) - AM_RANGE(0xec0000, 0xec0003) AM_READ(type3_sync_r) // type 4 polls this too - AM_RANGE(0xf00000, 0xf07fff) AM_RAM_WRITE(konamigx_t4_psacmap_w) AM_SHARE("psacram") // PSAC2 tilemap +} + +void konamigx_state::gx_type4_map(address_map &map) +{ + gx_base_memmap(map); + map(0xcc0000, 0xcc0007).w(this, FUNC(konamigx_state::type4_prot_w)); + map(0xd90000, 0xd97fff).ram(); + map(0xe00000, 0xe0001f).ram().share("k053936_0_ctrl"); + map(0xe20000, 0xe20003).nopw(); + map(0xe40000, 0xe40003).nopw(); + map(0xe60000, 0xe60fff).ram().share("k053936_0_line"); // 29C & 29G (PSAC2 line control) + map(0xe80000, 0xe87fff).ram().share("paletteram"); // 11G/13G/15G (main screen palette RAM) + map(0xea0000, 0xea7fff).ram().share("subpaletteram"); // 5G/7G/9G (sub screen palette RAM) + map(0xec0000, 0xec0003).r(this, FUNC(konamigx_state::type3_sync_r)); // type 4 polls this too + map(0xf00000, 0xf07fff).ram().w(this, FUNC(konamigx_state::konamigx_t4_psacmap_w)).share("psacram"); // PSAC2 tilemap // AM_RANGE(0xf00000, 0xf07fff) AM_RAM -ADDRESS_MAP_END +} /**********************************************************************************/ /* Sound handling */ @@ -1104,20 +1109,22 @@ WRITE16_MEMBER(konamigx_state::tms57002_control_word_w) } /* 68000 memory handling */ -ADDRESS_MAP_START(konamigx_state::gxsndmap) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00) - AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r, tms57002_data_word_w) - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff) - AM_RANGE(0x500000, 0x500001) AM_READWRITE(tms57002_status_word_r, tms57002_control_word_w) - AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET -ADDRESS_MAP_END - -ADDRESS_MAP_START(konamigx_state::gxtmsmap) - AM_RANGE(0x00000, 0x3ffff) AM_RAM -ADDRESS_MAP_END +void konamigx_state::gxsndmap(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x2004ff).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00); + map(0x200000, 0x2004ff).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); + map(0x300000, 0x300001).rw(this, FUNC(konamigx_state::tms57002_data_word_r), FUNC(konamigx_state::tms57002_data_word_w)); + map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff); + map(0x500000, 0x500001).rw(this, FUNC(konamigx_state::tms57002_status_word_r), FUNC(konamigx_state::tms57002_control_word_w)); + map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET +} + +void konamigx_state::gxtmsmap(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); +} WRITE_LINE_MEMBER(konamigx_state::k054539_irq_gen) diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp index eececad4fcb..30973076bad 100644 --- a/src/mame/drivers/konamim2.cpp +++ b/src/mame/drivers/konamim2.cpp @@ -1170,71 +1170,77 @@ READ8_MEMBER(konamim2_state::id7_r) return 0x07; } -ADDRESS_MAP_START(konamim2_state::m2_main) - AM_RANGE(0x00000000, 0x0000007f) AM_RAM // ??? - AM_RANGE(0x00010040, 0x00010047) AM_READWRITE(irq_enable_r, irq_enable_w) - AM_RANGE(0x00010050, 0x00010057) AM_READ(irq_active_r) - AM_RANGE(0x00020000, 0x00020007) AM_READWRITE(unk4_r, unk4_w) - AM_RANGE(0x00020400, 0x000207ff) AM_RAM // ??? - AM_RANGE(0x00020800, 0x00020807) AM_RAM // ??? - AM_RANGE(0x00030000, 0x00030007) AM_READ(unk30000_r) - AM_RANGE(0x00030010, 0x00030017) AM_WRITE(video_w) - AM_RANGE(0x00030030, 0x00030037) AM_READ(unk30030_r) - AM_RANGE(0x00030400, 0x00030407) AM_WRITE32(video_irq_ack_w,0x00000000ffffffffU) +void konamim2_state::m2_main(address_map &map) +{ + map(0x00000000, 0x0000007f).ram(); // ??? + map(0x00010040, 0x00010047).rw(this, FUNC(konamim2_state::irq_enable_r), FUNC(konamim2_state::irq_enable_w)); + map(0x00010050, 0x00010057).r(this, FUNC(konamim2_state::irq_active_r)); + map(0x00020000, 0x00020007).rw(this, FUNC(konamim2_state::unk4_r), FUNC(konamim2_state::unk4_w)); + map(0x00020400, 0x000207ff).ram(); // ??? + map(0x00020800, 0x00020807).ram(); // ??? + map(0x00030000, 0x00030007).r(this, FUNC(konamim2_state::unk30000_r)); + map(0x00030010, 0x00030017).w(this, FUNC(konamim2_state::video_w)); + map(0x00030030, 0x00030037).r(this, FUNC(konamim2_state::unk30030_r)); + map(0x00030404, 0x00030407).w(this, FUNC(konamim2_state::video_irq_ack_w)); - AM_RANGE(0x01000000, 0x01000fff) AM_READWRITE(cde_r, cde_w) + map(0x01000000, 0x01000fff).rw(this, FUNC(konamim2_state::cde_r), FUNC(konamim2_state::cde_w)); - AM_RANGE(0x02000000, 0x02000fff) AM_READ(device2_r) + map(0x02000000, 0x02000fff).r(this, FUNC(konamim2_state::device2_r)); - AM_RANGE(0x03000000, 0x03000007) AM_READ8(id3_r, 0x00ff000000000000U) + map(0x03000001, 0x03000001).r(this, FUNC(konamim2_state::id3_r)); - AM_RANGE(0x04000000, 0x04000007) AM_READ8(id4_r, 0x00ff000000000000U) - AM_RANGE(0x04000010, 0x04000017) AM_WRITE8(serial_w,0x00000000000000ffU) - AM_RANGE(0x04000018, 0x0400001f) AM_READ(unk1_r) // serial status - AM_RANGE(0x04000020, 0x04000027) AM_WRITE(reset_w) - AM_RANGE(0x04000418, 0x0400041f) AM_WRITE(unk4000418_w) // serial status ack - AM_RANGE(0x04000208, 0x0400020f) AM_READ(unk3_r) - AM_RANGE(0x04000280, 0x04000287) AM_READ(unk4000280_r) + map(0x04000001, 0x04000001).r(this, FUNC(konamim2_state::id4_r)); + map(0x04000017, 0x04000017).w(this, FUNC(konamim2_state::serial_w)); + map(0x04000018, 0x0400001f).r(this, FUNC(konamim2_state::unk1_r)); // serial status + map(0x04000020, 0x04000027).w(this, FUNC(konamim2_state::reset_w)); + map(0x04000418, 0x0400041f).w(this, FUNC(konamim2_state::unk4000418_w)); // serial status ack + map(0x04000208, 0x0400020f).r(this, FUNC(konamim2_state::unk3_r)); + map(0x04000280, 0x04000287).r(this, FUNC(konamim2_state::unk4000280_r)); - AM_RANGE(0x05000000, 0x05000007) AM_READ8(id5_r, 0x00ff000000000000U) + map(0x05000001, 0x05000001).r(this, FUNC(konamim2_state::id5_r)); - AM_RANGE(0x06000000, 0x06000007) AM_READ8(id6_r, 0x00ff000000000000U) + map(0x06000001, 0x06000001).r(this, FUNC(konamim2_state::id6_r)); - AM_RANGE(0x07000000, 0x07000007) AM_READ8(id7_r, 0x00ff000000000000U) + map(0x07000001, 0x07000001).r(this, FUNC(konamim2_state::id7_r)); - AM_RANGE(0x10000008, 0x10001007) AM_NOP // ??? + map(0x10000008, 0x10001007).noprw(); // ??? - AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x40000000, 0x407fffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("boot", 0) AM_SHARE("share2") -ADDRESS_MAP_END + map(0x20000000, 0x201fffff).rom().share("share2"); + map(0x40000000, 0x407fffff).ram().share("main_ram"); + map(0xfff00000, 0xffffffff).rom().region("boot", 0).share("share2"); +} -ADDRESS_MAP_START(konamim2_state::m2_main_m) - AM_IMPORT_FROM( m2_main ) - AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<true>) -ADDRESS_MAP_END +void konamim2_state::m2_main_m(address_map &map) +{ + m2_main(map); + map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<true>)); +} -ADDRESS_MAP_START(konamim2_state::m2_main_s) - AM_IMPORT_FROM( m2_main ) - AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<false>) -ADDRESS_MAP_END +void konamim2_state::m2_main_s(address_map &map) +{ + m2_main(map); + map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<false>)); +} -ADDRESS_MAP_START(konamim2_state::_3do_m2_main) +void konamim2_state::_3do_m2_main(address_map &map) +{ // ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM( m2_main ) + m2_main(map); // AM_RANGE(0x00000000, 0x000cffff) devices? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(konamim2_state::_3do_m2_main_m) - AM_IMPORT_FROM( _3do_m2_main ) - AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<true>) -ADDRESS_MAP_END +void konamim2_state::_3do_m2_main_m(address_map &map) +{ + _3do_m2_main(map); + map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<true>)); +} -ADDRESS_MAP_START(konamim2_state::_3do_m2_main_s) - AM_IMPORT_FROM( _3do_m2_main ) - AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<false>) -ADDRESS_MAP_END +void konamim2_state::_3do_m2_main_s(address_map &map) +{ + _3do_m2_main(map); + map(0x10000000, 0x10000007).r(this, FUNC(konamim2_state::cpu_r<false>)); +} static INPUT_PORTS_START( m2 ) diff --git a/src/mame/drivers/konendev.cpp b/src/mame/drivers/konendev.cpp index 4b3d0846875..1e82a7cc92a 100644 --- a/src/mame/drivers/konendev.cpp +++ b/src/mame/drivers/konendev.cpp @@ -212,23 +212,24 @@ WRITE32_MEMBER(konendev_state::sound_data_w) { } -ADDRESS_MAP_START(konendev_state::konendev_map) - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM - AM_RANGE(0x78000000, 0x78000003) AM_READ(mcu2_r) - AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE(rtc_r, rtc_w) - AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE(sound_data_r, sound_data_w) - AM_RANGE(0x78100000, 0x78100003) AM_WRITE(eeprom_w) - AM_RANGE(0x78800000, 0x78800003) AM_READ(ifu2_r) - AM_RANGE(0x78800004, 0x78800007) AM_READ(ctrl0_r) - AM_RANGE(0x78a00000, 0x78a0001f) AM_READ(ctrl1_r) - AM_RANGE(0x78e00000, 0x78e00003) AM_READ(ctrl2_r) - AM_RANGE(0x79000000, 0x79000003) AM_DEVWRITE("gcu", k057714_device, fifo_w) - AM_RANGE(0x79800000, 0x798000ff) AM_DEVREADWRITE("gcu", k057714_device, read, write) - AM_RANGE(0x7a000000, 0x7a01ffff) AM_RAM AM_SHARE("nvram0") - AM_RANGE(0x7a100000, 0x7a11ffff) AM_RAM AM_SHARE("nvram1") - AM_RANGE(0x7e000000, 0x7f7fffff) AM_ROM AM_REGION("flash", 0) - AM_RANGE(0x7ff00000, 0x7fffffff) AM_ROM AM_REGION("program", 0) -ADDRESS_MAP_END +void konendev_state::konendev_map(address_map &map) +{ + map(0x00000000, 0x00ffffff).ram(); + map(0x78000000, 0x78000003).r(this, FUNC(konendev_state::mcu2_r)); + map(0x78080000, 0x7808000f).rw(this, FUNC(konendev_state::rtc_r), FUNC(konendev_state::rtc_w)); + map(0x780c0000, 0x780c0003).rw(this, FUNC(konendev_state::sound_data_r), FUNC(konendev_state::sound_data_w)); + map(0x78100000, 0x78100003).w(this, FUNC(konendev_state::eeprom_w)); + map(0x78800000, 0x78800003).r(this, FUNC(konendev_state::ifu2_r)); + map(0x78800004, 0x78800007).r(this, FUNC(konendev_state::ctrl0_r)); + map(0x78a00000, 0x78a0001f).r(this, FUNC(konendev_state::ctrl1_r)); + map(0x78e00000, 0x78e00003).r(this, FUNC(konendev_state::ctrl2_r)); + map(0x79000000, 0x79000003).w(m_gcu, FUNC(k057714_device::fifo_w)); + map(0x79800000, 0x798000ff).rw(m_gcu, FUNC(k057714_device::read), FUNC(k057714_device::write)); + map(0x7a000000, 0x7a01ffff).ram().share("nvram0"); + map(0x7a100000, 0x7a11ffff).ram().share("nvram1"); + map(0x7e000000, 0x7f7fffff).rom().region("flash", 0); + map(0x7ff00000, 0x7fffffff).rom().region("program", 0); +} static INPUT_PORTS_START( konendev ) diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp index 07fe5965c13..7acf6b82dc8 100644 --- a/src/mame/drivers/konin.cpp +++ b/src/mame/drivers/konin.cpp @@ -86,27 +86,40 @@ WRITE_LINE_MEMBER(konin_state::picu_r3_w) m_picu->r_w(3, !state); } -ADDRESS_MAP_START(konin_state::konin_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x5000, 0x7fff) AM_RAM - AM_RANGE(0xf200, 0xf200) AM_WRITENOP // watchdog? - AM_RANGE(0xf400, 0xfbff) AM_RAM - AM_RANGE(0xfc80, 0xfc83) AM_DEVREADWRITE("mainppi", i8255_device, read, write) - AM_RANGE(0xfc84, 0xfc87) AM_DEVREADWRITE("mainpit", pit8253_device, read, write) - AM_RANGE(0xff00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(konin_state::konin_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x24, 0x24) AM_WRITE(picu_b_w) - - ;map(0x80, 0x83).lrw8("ioppi_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_ioppi->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ioppi->write(space, offset^3, data, mem_mask); }); - AM_RANGE(0xf6, 0xf6) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xf7, 0xf7) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - ;map(0xf8, 0xfb).lrw8("iopit_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_iopit->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_iopit->write(space, offset^3, data, mem_mask); }); -ADDRESS_MAP_END +void konin_state::konin_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x4fff).rom(); + map(0x5000, 0x7fff).ram(); + map(0xf200, 0xf200).nopw(); // watchdog? + map(0xf400, 0xfbff).ram(); + map(0xfc80, 0xfc83).rw("mainppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfc84, 0xfc87).rw("mainpit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xff00, 0xffff).ram(); +} + +void konin_state::konin_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x24, 0x24).w(this, FUNC(konin_state::picu_b_w)); + map(0x80, 0x83).lrw8("ioppi_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_ioppi->read(space, offset^3, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_ioppi->write(space, offset^3, data, mem_mask); + }); + map(0xf6, 0xf6).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf7, 0xf7).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf8, 0xfb).lrw8("iopit_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_iopit->read(space, offset^3, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_iopit->write(space, offset^3, data, mem_mask); + }); +} /* Input ports */ static INPUT_PORTS_START( konin ) diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp index 6d7b81b5acb..5ae2d470b44 100644 --- a/src/mame/drivers/konmedal.cpp +++ b/src/mame/drivers/konmedal.cpp @@ -225,69 +225,72 @@ WRITE8_MEMBER(konmedal_state::bankswitch_w) m_control = data & 0xf; } -ADDRESS_MAP_START(konmedal_state::medal_main) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xafff) AM_RAM // work RAM? - AM_RANGE(0xb800, 0xbfff) AM_RAM // stack goes here - AM_RANGE(0xc000, 0xc03f) AM_DEVWRITE("k056832", k056832_device, write) - AM_RANGE(0xc100, 0xc100) AM_WRITE(control2_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(bankswitch_w) - AM_RANGE(0xc500, 0xc500) AM_NOP // read to reset watchdog - AM_RANGE(0xc700, 0xc700) AM_READ_PORT("DSW2") - AM_RANGE(0xc701, 0xc701) AM_READ_PORT("DSW1") - AM_RANGE(0xc702, 0xc702) AM_READ_PORT("IN1") - AM_RANGE(0xc703, 0xc703) AM_READ_PORT("IN2") - AM_RANGE(0xc800, 0xc80f) AM_DEVWRITE("k056832", k056832_device, b_w) - AM_RANGE(0xc80f, 0xc80f) AM_READ(magic_r) - AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(vram_r, vram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(konmedal_state::ddboy_main) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM // work RAM - AM_RANGE(0xc000, 0xc03f) AM_DEVWRITE("k056832", k056832_device, write) - AM_RANGE(0xc100, 0xc100) AM_WRITE(control2_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(bankswitch_w) - AM_RANGE(0xc500, 0xc500) AM_NOP // read to reset watchdog - AM_RANGE(0xc702, 0xc702) AM_READ_PORT("IN1") - AM_RANGE(0xc703, 0xc703) AM_READ_PORT("IN2") - AM_RANGE(0xc800, 0xc80f) AM_DEVWRITE("k056832", k056832_device, b_w) - AM_RANGE(0xc80f, 0xc80f) AM_READ(magic_r) - AM_RANGE(0xcc00, 0xcc00) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_WRITENOP // ??? writes 00 and 3f every frame - AM_RANGE(0xd800, 0xd87f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w) - AM_RANGE(0xd880, 0xd889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w) - AM_RANGE(0xd88a, 0xd88e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w) - AM_RANGE(0xd88f, 0xd88f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w) - AM_RANGE(0xd8e0, 0xd8ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(vram_r, vram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(konmedal_state::shuriboy_main) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("IN2") - AM_RANGE(0x8801, 0x8801) AM_READ_PORT("IN1") - AM_RANGE(0x8802, 0x8802) AM_READ_PORT("DSW1") - AM_RANGE(0x8803, 0x8803) AM_READ_PORT("DSW2") - AM_RANGE(0x8b00, 0x8b00) AM_WRITENOP // watchdog? - AM_RANGE(0x8c00, 0x8c00) AM_WRITE(shuri_bank_w) - AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w) - AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w) - AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w) - AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w) - AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w) - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdbff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0xdd00, 0xdd00) AM_READWRITE(shuri_irq_r, shuri_irq_w) - AM_RANGE(0xdd80, 0xdd80) AM_WRITE(shuri_control_w) - AM_RANGE(0xde00, 0xde00) AM_WRITE(shuri_vrom_addr_w) - AM_RANGE(0xdf00, 0xdf00) AM_WRITE(shuri_vrom_bank_w) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(shuri_video_r, shuri_video_w) -ADDRESS_MAP_END +void konmedal_state::medal_main(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xafff).ram(); // work RAM? + map(0xb800, 0xbfff).ram(); // stack goes here + map(0xc000, 0xc03f).w(m_k056832, FUNC(k056832_device::write)); + map(0xc100, 0xc100).w(this, FUNC(konmedal_state::control2_w)); + map(0xc400, 0xc400).w(this, FUNC(konmedal_state::bankswitch_w)); + map(0xc500, 0xc500).noprw(); // read to reset watchdog + map(0xc700, 0xc700).portr("DSW2"); + map(0xc701, 0xc701).portr("DSW1"); + map(0xc702, 0xc702).portr("IN1"); + map(0xc703, 0xc703).portr("IN2"); + map(0xc800, 0xc80f).w(m_k056832, FUNC(k056832_device::b_w)); + map(0xc80f, 0xc80f).r(this, FUNC(konmedal_state::magic_r)); + map(0xd000, 0xd001).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); + map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::vram_r), FUNC(konmedal_state::vram_w)); +} + +void konmedal_state::ddboy_main(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram(); // work RAM + map(0xc000, 0xc03f).w(m_k056832, FUNC(k056832_device::write)); + map(0xc100, 0xc100).w(this, FUNC(konmedal_state::control2_w)); + map(0xc400, 0xc400).w(this, FUNC(konmedal_state::bankswitch_w)); + map(0xc500, 0xc500).noprw(); // read to reset watchdog + map(0xc702, 0xc702).portr("IN1"); + map(0xc703, 0xc703).portr("IN2"); + map(0xc800, 0xc80f).w(m_k056832, FUNC(k056832_device::b_w)); + map(0xc80f, 0xc80f).r(this, FUNC(konmedal_state::magic_r)); + map(0xcc00, 0xcc00).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xd000, 0xd000).nopw(); // ??? writes 00 and 3f every frame + map(0xd800, 0xd87f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); + map(0xd880, 0xd889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); + map(0xd88a, 0xd88e).w("k051649", FUNC(k051649_device::k051649_volume_w)); + map(0xd88f, 0xd88f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); + map(0xd8e0, 0xd8ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::vram_r), FUNC(konmedal_state::vram_w)); +} + +void konmedal_state::shuriboy_main(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).portr("IN2"); + map(0x8801, 0x8801).portr("IN1"); + map(0x8802, 0x8802).portr("DSW1"); + map(0x8803, 0x8803).portr("DSW2"); + map(0x8b00, 0x8b00).nopw(); // watchdog? + map(0x8c00, 0x8c00).w(this, FUNC(konmedal_state::shuri_bank_w)); + map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); + map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); + map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w)); + map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); + map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xa000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdbff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0xdd00, 0xdd00).rw(this, FUNC(konmedal_state::shuri_irq_r), FUNC(konmedal_state::shuri_irq_w)); + map(0xdd80, 0xdd80).w(this, FUNC(konmedal_state::shuri_control_w)); + map(0xde00, 0xde00).w(this, FUNC(konmedal_state::shuri_vrom_addr_w)); + map(0xdf00, 0xdf00).w(this, FUNC(konmedal_state::shuri_vrom_bank_w)); + map(0xe000, 0xffff).rw(this, FUNC(konmedal_state::shuri_video_r), FUNC(konmedal_state::shuri_video_w)); +} static INPUT_PORTS_START( konmedal ) PORT_START("DSW1") diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp index f2c84b42710..a146d4f84a8 100644 --- a/src/mame/drivers/konmedal68k.cpp +++ b/src/mame/drivers/konmedal68k.cpp @@ -188,24 +188,25 @@ uint32_t konmedal68k_state::screen_update_konmedal68k(screen_device &screen, bit return 0; } -ADDRESS_MAP_START(konmedal68k_state::kzaurus_main) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x400000, 0x403fff) AM_RAM - AM_RANGE(0x800000, 0x800001) AM_WRITE(control_w) - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW") - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1") - AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN0") - AM_RANGE(0x810000, 0x810001) AM_WRITE(control2_w) - AM_RANGE(0x830000, 0x83003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) - AM_RANGE(0x840000, 0x84000f) AM_DEVWRITE("k056832", k056832_device, b_word_w) - AM_RANGE(0x85001c, 0x85001f) AM_WRITENOP - AM_RANGE(0x870000, 0x87005f) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00) - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0xa02000, 0xa03fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0xb00000, 0xb01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc01fff) AM_READ(vrom_r) -ADDRESS_MAP_END +void konmedal68k_state::kzaurus_main(address_map &map) +{ + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x400000, 0x403fff).ram(); + map(0x800000, 0x800001).w(this, FUNC(konmedal68k_state::control_w)); + map(0x800004, 0x800005).portr("DSW"); + map(0x800006, 0x800007).portr("IN1"); + map(0x800008, 0x800009).portr("IN0"); + map(0x810000, 0x810001).w(this, FUNC(konmedal68k_state::control2_w)); + map(0x830000, 0x83003f).rw(m_k056832, FUNC(k056832_device::word_r), FUNC(k056832_device::word_w)); + map(0x840000, 0x84000f).w(m_k056832, FUNC(k056832_device::b_word_w)); + map(0x85001c, 0x85001f).nopw(); + map(0x870000, 0x87005f).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x880000, 0x880003).rw(m_ymz, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00); + map(0xa00000, 0xa01fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0xa02000, 0xa03fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0xb00000, 0xb01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc01fff).r(this, FUNC(konmedal68k_state::vrom_r)); +} static INPUT_PORTS_START( kzaurus ) PORT_START("IN0") diff --git a/src/mame/drivers/kontest.cpp b/src/mame/drivers/kontest.cpp index 39a77f1b3ef..e9077c44549 100644 --- a/src/mame/drivers/kontest.cpp +++ b/src/mame/drivers/kontest.cpp @@ -168,21 +168,23 @@ WRITE8_MEMBER(kontest_state::control_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(kontest_state::kontest_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kontest_state::kontest_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0x08, 0x08) AM_WRITE(control_w) - AM_RANGE(0x0c, 0x0c) AM_READ_PORT("IN0") - AM_RANGE(0x0d, 0x0d) AM_READ_PORT("IN1") - AM_RANGE(0x0e, 0x0e) AM_READ_PORT("IN2") - AM_RANGE(0x0f, 0x0f) AM_READ_PORT("IN3") -ADDRESS_MAP_END +void kontest_state::kontest_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xffff).ram().share("ram"); +} + +void kontest_state::kontest_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("sn1", FUNC(sn76489a_device::write)); + map(0x04, 0x04).w("sn2", FUNC(sn76489a_device::write)); + map(0x08, 0x08).w(this, FUNC(kontest_state::control_w)); + map(0x0c, 0x0c).portr("IN0"); + map(0x0d, 0x0d).portr("IN1"); + map(0x0e, 0x0e).portr("IN2"); + map(0x0f, 0x0f).portr("IN3"); +} /*************************************************************************** diff --git a/src/mame/drivers/kopunch.cpp b/src/mame/drivers/kopunch.cpp index 3383b026f00..06af3492198 100644 --- a/src/mame/drivers/kopunch.cpp +++ b/src/mame/drivers/kopunch.cpp @@ -72,21 +72,23 @@ INPUT_CHANGED_MEMBER(kopunch_state::right_coin_inserted) ********************************************************/ -ADDRESS_MAP_START(kopunch_state::kopunch_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(vram_fg_w) AM_SHARE("vram_fg") - AM_RANGE(0x7000, 0x70ff) AM_RAM_WRITE(vram_bg_w) AM_SHARE("vram_bg") - AM_RANGE(0x7100, 0x73ff) AM_RAM // unused vram - AM_RANGE(0x7400, 0x7bff) AM_RAM // more unused vram? or accidental writes? -ADDRESS_MAP_END - -ADDRESS_MAP_START(kopunch_state::kopunch_io_map) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x34, 0x37) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x3c, 0x3f) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) -ADDRESS_MAP_END +void kopunch_state::kopunch_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x6000, 0x63ff).ram().w(this, FUNC(kopunch_state::vram_fg_w)).share("vram_fg"); + map(0x7000, 0x70ff).ram().w(this, FUNC(kopunch_state::vram_bg_w)).share("vram_bg"); + map(0x7100, 0x73ff).ram(); // unused vram + map(0x7400, 0x7bff).ram(); // more unused vram? or accidental writes? +} + +void kopunch_state::kopunch_io_map(address_map &map) +{ + map(0x30, 0x33).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x34, 0x37).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x38, 0x3b).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x3c, 0x3f).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} diff --git a/src/mame/drivers/kramermc.cpp b/src/mame/drivers/kramermc.cpp index f84822c3b68..254a435d3eb 100644 --- a/src/mame/drivers/kramermc.cpp +++ b/src/mame/drivers/kramermc.cpp @@ -22,22 +22,24 @@ static GFXDECODE_START( kramermc ) GFXDECODE_END /* Address maps */ -ADDRESS_MAP_START(kramermc_state::kramermc_mem) - AM_RANGE( 0x0000, 0x03ff ) AM_ROM // Monitor - AM_RANGE( 0x0400, 0x07ff ) AM_ROM // Debugger - AM_RANGE( 0x0800, 0x0bff ) AM_ROM // Reassembler - AM_RANGE( 0x0c00, 0x0fff ) AM_RAM // System RAM - AM_RANGE( 0x1000, 0x7fff ) AM_RAM // User RAM - AM_RANGE( 0x8000, 0xafff ) AM_ROM // BASIC - AM_RANGE( 0xc000, 0xc3ff ) AM_ROM // Editor - AM_RANGE( 0xc400, 0xdfff ) AM_ROM // Assembler - AM_RANGE( 0xfc00, 0xffff ) AM_RAM // Video RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kramermc_state::kramermc_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xfc, 0x0ff) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) -ADDRESS_MAP_END +void kramermc_state::kramermc_mem(address_map &map) +{ + map(0x0000, 0x03ff).rom(); // Monitor + map(0x0400, 0x07ff).rom(); // Debugger + map(0x0800, 0x0bff).rom(); // Reassembler + map(0x0c00, 0x0fff).ram(); // System RAM + map(0x1000, 0x7fff).ram(); // User RAM + map(0x8000, 0xafff).rom(); // BASIC + map(0xc000, 0xc3ff).rom(); // Editor + map(0xc400, 0xdfff).rom(); // Assembler + map(0xfc00, 0xffff).ram(); // Video RAM +} + +void kramermc_state::kramermc_io(address_map &map) +{ + map.global_mask(0xff); + map(0xfc, 0x0ff).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input ports */ static INPUT_PORTS_START( kramermc ) diff --git a/src/mame/drivers/kron.cpp b/src/mame/drivers/kron.cpp index 34a43bf7d9d..343c7ccf2f1 100644 --- a/src/mame/drivers/kron.cpp +++ b/src/mame/drivers/kron.cpp @@ -158,13 +158,14 @@ private: virtual void machine_start () override; }; -ADDRESS_MAP_START(kron180_state::kron180_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x0000, 0x7fff) AM_ROM AM_REGION("roms", 0x8000) - AM_RANGE (0x8000, 0x85ff) AM_RAM AM_MIRROR(0x6000) - AM_RANGE (0x8600, 0x95ff) AM_RAM AM_SHARE("videoram") AM_MIRROR(0x6000) - AM_RANGE (0x9600, 0x9fff) AM_RAM AM_MIRROR(0x6000) -ADDRESS_MAP_END +void kron180_state::kron180_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom().region("roms", 0x8000); + map(0x8000, 0x85ff).ram().mirror(0x6000); + map(0x8600, 0x95ff).ram().share("videoram").mirror(0x6000); + map(0x9600, 0x9fff).ram().mirror(0x6000); +} /* IO decoding * @@ -196,17 +197,18 @@ ADDRESS_MAP_END * * At the moment we emulate the screen at a high level so I just disregard the special functions on A16 - A18 by mirroring the mapping below */ -ADDRESS_MAP_START(kron180_state::kron180_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x0000, 0x000f ) AM_WRITE(sn74259_w) - AM_RANGE( 0x0010, 0x001f ) AM_READWRITE(ap5_r, ap5_w) - AM_RANGE( 0x0020, 0x002f ) AM_WRITE(wkb_w) - AM_RANGE( 0x0030, 0x003f ) AM_READ(sn74299_r) - AM_RANGE( 0x0040, 0x004f ) AM_WRITE(sn74299_w) - AM_RANGE( 0x0050, 0x005f ) AM_WRITE(txen_w) - AM_RANGE( 0x0060, 0x006f ) AM_WRITE(kbd_reset_w) - AM_RANGE( 0x0070, 0x007f ) AM_WRITE(dreq_w) -ADDRESS_MAP_END +void kron180_state::kron180_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x000f).w(this, FUNC(kron180_state::sn74259_w)); + map(0x0010, 0x001f).rw(this, FUNC(kron180_state::ap5_r), FUNC(kron180_state::ap5_w)); + map(0x0020, 0x002f).w(this, FUNC(kron180_state::wkb_w)); + map(0x0030, 0x003f).r(this, FUNC(kron180_state::sn74299_r)); + map(0x0040, 0x004f).w(this, FUNC(kron180_state::sn74299_w)); + map(0x0050, 0x005f).w(this, FUNC(kron180_state::txen_w)); + map(0x0060, 0x006f).w(this, FUNC(kron180_state::kbd_reset_w)); + map(0x0070, 0x007f).w(this, FUNC(kron180_state::dreq_w)); +} /* Input ports */ static INPUT_PORTS_START (kron180) diff --git a/src/mame/drivers/krz2000.cpp b/src/mame/drivers/krz2000.cpp index f5c5b511c2b..32420dcd43d 100644 --- a/src/mame/drivers/krz2000.cpp +++ b/src/mame/drivers/krz2000.cpp @@ -50,11 +50,12 @@ void k2000_state::machine_reset() { } -ADDRESS_MAP_START(k2000_state::k2000_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x100000, 0x11ffff) AM_RAM - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void k2000_state::k2000_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().region("maincpu", 0); + map(0x100000, 0x11ffff).ram(); + map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} MACHINE_CONFIG_START(k2000_state::k2000) MCFG_CPU_ADD("maincpu", M68301, XTAL(12'000'000)) diff --git a/src/mame/drivers/ksayakyu.cpp b/src/mame/drivers/ksayakyu.cpp index 97805aa157d..226c7850a08 100644 --- a/src/mame/drivers/ksayakyu.cpp +++ b/src/mame/drivers/ksayakyu.cpp @@ -113,34 +113,36 @@ READ8_MEMBER(ksayakyu_state::int_ack_r) return 0xff; // value not used } -ADDRESS_MAP_START(ksayakyu_state::maincpu_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1") - AM_RANGE(0xa801, 0xa801) AM_READ_PORT("P2") - AM_RANGE(0xa802, 0xa802) AM_READ_PORT("DSW") - AM_RANGE(0xa803, 0xa803) AM_READNOP /* watchdog ? */ - AM_RANGE(0xa804, 0xa804) AM_WRITE(ksayakyu_videoctrl_w) - AM_RANGE(0xa805, 0xa805) AM_WRITE(latch_w) - AM_RANGE(0xa806, 0xa806) AM_READ(sound_status_r) - AM_RANGE(0xa807, 0xa807) AM_READ(int_ack_r) - AM_RANGE(0xa808, 0xa808) AM_WRITE(bank_select_w) - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(ksayakyu_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb800, 0xbfff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksayakyu_state::soundcpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0xa006, 0xa007) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0xa008, 0xa008) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xa00c, 0xa00c) AM_WRITE(tomaincpu_w) - AM_RANGE(0xa010, 0xa010) AM_WRITENOP //a timer of some sort? -ADDRESS_MAP_END +void ksayakyu_state::maincpu_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xa7ff).ram(); + map(0xa800, 0xa800).portr("P1"); + map(0xa801, 0xa801).portr("P2"); + map(0xa802, 0xa802).portr("DSW"); + map(0xa803, 0xa803).nopr(); /* watchdog ? */ + map(0xa804, 0xa804).w(this, FUNC(ksayakyu_state::ksayakyu_videoctrl_w)); + map(0xa805, 0xa805).w(this, FUNC(ksayakyu_state::latch_w)); + map(0xa806, 0xa806).r(this, FUNC(ksayakyu_state::sound_status_r)); + map(0xa807, 0xa807).r(this, FUNC(ksayakyu_state::int_ack_r)); + map(0xa808, 0xa808).w(this, FUNC(ksayakyu_state::bank_select_w)); + map(0xb000, 0xb7ff).ram().w(this, FUNC(ksayakyu_state::ksayakyu_videoram_w)).share("videoram"); + map(0xb800, 0xbfff).ram().share("spriteram"); +} + +void ksayakyu_state::soundcpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0xa001, 0xa001).r("ay1", FUNC(ay8910_device::data_r)); + map(0xa002, 0xa003).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0xa006, 0xa007).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0xa008, 0xa008).w("dac", FUNC(dac_byte_interface::write)); + map(0xa00c, 0xa00c).w(this, FUNC(ksayakyu_state::tomaincpu_w)); + map(0xa010, 0xa010).nopw(); //a timer of some sort? +} static INPUT_PORTS_START( ksayakyu ) PORT_START("P1") diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp index 82943174abf..8eb2dd04b42 100644 --- a/src/mame/drivers/ksys573.cpp +++ b/src/mame/drivers/ksys573.cpp @@ -613,54 +613,60 @@ void ATTR_PRINTF( 3,4 ) ksys573_state::verboselog( int n_level, const char *s_f } } -ADDRESS_MAP_START(ksys573_state::konami573_map) - AM_RANGE( 0x1f000000, 0x1f3fffff ) AM_DEVICE16( "flashbank", address_map_bank_device, amap16, 0xffffffff ) - AM_RANGE( 0x1f400000, 0x1f400003 ) AM_READ_PORT( "IN0" ) AM_WRITE_PORT( "OUT0" ) - AM_RANGE( 0x1f400004, 0x1f400007 ) AM_READ_PORT( "IN1" ) - AM_RANGE( 0x1f400008, 0x1f40000b ) AM_READ_PORT( "IN2" ) - AM_RANGE( 0x1f40000c, 0x1f40000f ) AM_READ_PORT( "IN3" ) - AM_RANGE( 0x1f480000, 0x1f48000f ) AM_DEVREADWRITE16( "ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff ) - AM_RANGE( 0x1f500000, 0x1f500003 ) AM_READWRITE16( control_r, control_w, 0x0000ffff ) // Konami can't make a game without a "control" register. - AM_RANGE( 0x1f560000, 0x1f560003 ) AM_WRITE16( atapi_reset_w, 0x0000ffff ) - AM_RANGE( 0x1f5c0000, 0x1f5c0003 ) AM_WRITENOP // watchdog? - AM_RANGE( 0x1f600000, 0x1f600003 ) AM_WRITE_PORT( "LAMPS" ) - AM_RANGE( 0x1f620000, 0x1f623fff ) AM_DEVREADWRITE8( "m48t58", timekeeper_device, read, write, 0x00ff00ff ) - AM_RANGE( 0x1f680000, 0x1f68001f ) AM_DEVREADWRITE8( "mb89371", mb89371_device, read, write, 0x00ff00ff ) - AM_RANGE( 0x1f6a0000, 0x1f6a0003 ) AM_READWRITE16( security_r, security_w, 0x0000ffff ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksys573_state::flashbank_map) - AM_RANGE( 0x0000000, 0x03fffff ) AM_DEVREADWRITE8( "29f016a.31m", intelfsh8_device, read, write, 0x00ff ) - AM_RANGE( 0x0000000, 0x03fffff ) AM_DEVREADWRITE8( "29f016a.27m", intelfsh8_device, read, write, 0xff00 ) - AM_RANGE( 0x0400000, 0x07fffff ) AM_DEVREADWRITE8( "29f016a.31l", intelfsh8_device, read, write, 0x00ff ) - AM_RANGE( 0x0400000, 0x07fffff ) AM_DEVREADWRITE8( "29f016a.27l", intelfsh8_device, read, write, 0xff00 ) - AM_RANGE( 0x0800000, 0x0bfffff ) AM_DEVREADWRITE8( "29f016a.31j", intelfsh8_device, read, write, 0x00ff ) - AM_RANGE( 0x0800000, 0x0bfffff ) AM_DEVREADWRITE8( "29f016a.27j", intelfsh8_device, read, write, 0xff00 ) - AM_RANGE( 0x0c00000, 0x0ffffff ) AM_DEVREADWRITE8( "29f016a.31h", intelfsh8_device, read, write, 0x00ff ) - AM_RANGE( 0x0c00000, 0x0ffffff ) AM_DEVREADWRITE8( "29f016a.27h", intelfsh8_device, read, write, 0xff00 ) - AM_RANGE( 0x4000000, 0x7ffffff ) AM_DEVREADWRITE( "pccard1", pccard_slot_device, read_memory, write_memory ) - AM_RANGE( 0x8000000, 0xbffffff ) AM_DEVREADWRITE( "pccard2", pccard_slot_device, read_memory, write_memory ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksys573_state::konami573d_map) - AM_IMPORT_FROM( konami573_map ) - AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_DEVICE16( "k573dio", k573dio_device, amap, 0xffffffff ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksys573_state::konami573a_map) - AM_IMPORT_FROM( konami573_map ) - AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_READWRITE16( gx700pwbf_io_r, gx700pwbf_io_w, 0xffffffff ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksys573_state::fbaitbc_map) - AM_IMPORT_FROM( konami573_map ) - AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_READWRITE16( ge765pwbba_r, ge765pwbba_w, 0xffffffff ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ksys573_state::gunmania_map) - AM_IMPORT_FROM( konami573_map ) - AM_RANGE( 0x1f640000, 0x1f6400ff ) AM_READWRITE16( gunmania_r, gunmania_w, 0xffffffff ) -ADDRESS_MAP_END +void ksys573_state::konami573_map(address_map &map) +{ + map(0x1f000000, 0x1f3fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16)); + map(0x1f400000, 0x1f400003).portr("IN0").portw("OUT0"); + map(0x1f400004, 0x1f400007).portr("IN1"); + map(0x1f400008, 0x1f40000b).portr("IN2"); + map(0x1f40000c, 0x1f40000f).portr("IN3"); + map(0x1f480000, 0x1f48000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); + map(0x1f500000, 0x1f500001).rw(this, FUNC(ksys573_state::control_r), FUNC(ksys573_state::control_w)); // Konami can't make a game without a "control" register. + map(0x1f560000, 0x1f560001).w(this, FUNC(ksys573_state::atapi_reset_w)); + map(0x1f5c0000, 0x1f5c0003).nopw(); // watchdog? + map(0x1f600000, 0x1f600003).portw("LAMPS"); + map(0x1f620000, 0x1f623fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask32(0x00ff00ff); + map(0x1f680000, 0x1f68001f).rw("mb89371", FUNC(mb89371_device::read), FUNC(mb89371_device::write)).umask32(0x00ff00ff); + map(0x1f6a0000, 0x1f6a0001).rw(this, FUNC(ksys573_state::security_r), FUNC(ksys573_state::security_w)); +} + +void ksys573_state::flashbank_map(address_map &map) +{ + map(0x0000000, 0x03fffff).rw("29f016a.31m", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff); + map(0x0000000, 0x03fffff).rw("29f016a.27m", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00); + map(0x0400000, 0x07fffff).rw("29f016a.31l", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff); + map(0x0400000, 0x07fffff).rw("29f016a.27l", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00); + map(0x0800000, 0x0bfffff).rw("29f016a.31j", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff); + map(0x0800000, 0x0bfffff).rw("29f016a.27j", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00); + map(0x0c00000, 0x0ffffff).rw("29f016a.31h", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0x00ff); + map(0x0c00000, 0x0ffffff).rw("29f016a.27h", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)).umask16(0xff00); + map(0x4000000, 0x7ffffff).rw("pccard1", FUNC(pccard_slot_device::read_memory), FUNC(pccard_slot_device::write_memory)); + map(0x8000000, 0xbffffff).rw("pccard2", FUNC(pccard_slot_device::read_memory), FUNC(pccard_slot_device::write_memory)); +} + +void ksys573_state::konami573d_map(address_map &map) +{ + konami573_map(map); + map(0x1f640000, 0x1f6400ff).m("k573dio", FUNC(k573dio_device::amap)); +} + +void ksys573_state::konami573a_map(address_map &map) +{ + konami573_map(map); + map(0x1f640000, 0x1f6400ff).rw(this, FUNC(ksys573_state::gx700pwbf_io_r), FUNC(ksys573_state::gx700pwbf_io_w)); +} + +void ksys573_state::fbaitbc_map(address_map &map) +{ + konami573_map(map); + map(0x1f640000, 0x1f6400ff).rw(this, FUNC(ksys573_state::ge765pwbba_r), FUNC(ksys573_state::ge765pwbba_w)); +} + +void ksys573_state::gunmania_map(address_map &map) +{ + konami573_map(map); + map(0x1f640000, 0x1f6400ff).rw(this, FUNC(ksys573_state::gunmania_r), FUNC(ksys573_state::gunmania_w)); +} READ16_MEMBER( ksys573_state::control_r ) { diff --git a/src/mame/drivers/kungfur.cpp b/src/mame/drivers/kungfur.cpp index f07e24673ce..a3e515dd69a 100644 --- a/src/mame/drivers/kungfur.cpp +++ b/src/mame/drivers/kungfur.cpp @@ -223,14 +223,15 @@ WRITE_LINE_MEMBER(kungfur_state::kfr_adpcm2_int) } -ADDRESS_MAP_START(kungfur_state::kungfur_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_WRITE(kungfur_adpcm1_w) - AM_RANGE(0x4004, 0x4004) AM_WRITE(kungfur_adpcm2_w) - AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x400c, 0x400f) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void kungfur_state::kungfur_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x4000, 0x4000).w(this, FUNC(kungfur_state::kungfur_adpcm1_w)); + map(0x4004, 0x4004).w(this, FUNC(kungfur_state::kungfur_adpcm2_w)); + map(0x4008, 0x400b).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x400c, 0x400f).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc000, 0xffff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index e5f4aeccdb2..2a54dac4f5f 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -516,44 +516,48 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w) } -ADDRESS_MAP_START(kurukuru_state::kurukuru_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::kurukuru_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READ_PORT("IN0") - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_READ_PORT("IN1") - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE("ym2149", ay8910_device, data_r, address_w) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w) - AM_RANGE(0x10, 0x13) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ_PORT("IN1") - AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ_PORT("IN0") - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, address_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREAD("ym2149", ay8910_device, data_r) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w) -ADDRESS_MAP_END +void kurukuru_state::kurukuru_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).ram().share("nvram"); +} + +void kurukuru_state::kurukuru_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_out_latch_w)); + map(0x10, 0x10).mirror(0x0f).portr("DSW1"); + map(0x20, 0x20).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x80, 0x83).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x90, 0x90).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_bankswitch_w)); + map(0xa0, 0xa0).mirror(0x0f).portr("IN0"); + map(0xb0, 0xb0).mirror(0x0f).portr("IN1"); + map(0xc0, 0xc0).mirror(0x0f).rw("ym2149", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0xd0, 0xd0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::data_w)); +} + +void kurukuru_state::ppj_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).ram().share("nvram"); +} + +void kurukuru_state::ppj_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_bankswitch_w)); + map(0x10, 0x13).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x30, 0x30).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x40, 0x40).mirror(0x0f).portr("DSW1"); + map(0x50, 0x50).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_out_latch_w)); + map(0x60, 0x60).mirror(0x0f).portr("IN1"); + map(0x70, 0x70).mirror(0x0f).portr("IN0"); + map(0xc0, 0xc0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::address_w)); + map(0xc0, 0xc0).mirror(0x0f).r("ym2149", FUNC(ay8910_device::data_r)); + map(0xd0, 0xd0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::data_w)); +} /* 00h W --> bankswitching reg... @@ -606,31 +610,35 @@ READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r) } -ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_io) - ADDRESS_MAP_GLOBAL_MASK(0x7f) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_audio_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_audio_io) - ADDRESS_MAP_GLOBAL_MASK(0x7f) - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) -ADDRESS_MAP_END +void kurukuru_state::kurukuru_audio_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void kurukuru_state::kurukuru_audio_io(address_map &map) +{ + map.global_mask(0x7f); + map(0x40, 0x40).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_data_w)); + map(0x50, 0x50).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_reset_w)); + map(0x60, 0x60).mirror(0x0f).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x70, 0x70).mirror(0x0f).r(this, FUNC(kurukuru_state::kurukuru_adpcm_timer_irqack_r)); +} + +void kurukuru_state::ppj_audio_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void kurukuru_state::ppj_audio_io(address_map &map) +{ + map.global_mask(0x7f); + map(0x20, 0x20).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_data_w)); + map(0x30, 0x30).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_reset_w)); + map(0x40, 0x40).mirror(0x0f).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x50, 0x50).mirror(0x0f).r(this, FUNC(kurukuru_state::kurukuru_adpcm_timer_irqack_r)); +} /* 30h -W --> 0x0b 40h R- --> soundlatch... diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp index 84a36b6e0ac..b678df6a9de 100644 --- a/src/mame/drivers/kyocera.cpp +++ b/src/mame/drivers/kyocera.cpp @@ -563,71 +563,77 @@ WRITE8_MEMBER( kc85_state::lcd_w ) /* Memory Maps */ -ADDRESS_MAP_START(kc85_state::kc85_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank2") -ADDRESS_MAP_END +void kc85_state::kc85_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).bankrw("bank2"); +} -ADDRESS_MAP_START(pc8201_state::pc8201_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank2") -ADDRESS_MAP_END +void pc8201_state::pc8201_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xffff).bankrw("bank2"); +} -ADDRESS_MAP_START(tandy200_state::tandy200_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xffff) AM_RAMBANK("bank2") -ADDRESS_MAP_END +void tandy200_state::tandy200_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankr("bank1"); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xffff).bankrw("bank2"); +} -ADDRESS_MAP_START(kc85_state::kc85_io) - ADDRESS_MAP_UNMAP_HIGH +void kc85_state::kc85_io(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) optional RAM unit // AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) optional I/O controller unit // AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) optional answering telephone unit // AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) optional modem - AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE(IM6402_TAG, im6402_device, read, write) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(uart_status_r, uart_ctrl_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(keyboard_r, ctrl_w) - AM_RANGE(0xf0, 0xf1) AM_MIRROR(0x0e) AM_READWRITE(lcd_r, lcd_w) -ADDRESS_MAP_END + map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xc0, 0xc0).mirror(0x0f).rw(m_uart, FUNC(im6402_device::read), FUNC(im6402_device::write)); + map(0xd0, 0xd0).mirror(0x0f).rw(this, FUNC(kc85_state::uart_status_r), FUNC(kc85_state::uart_ctrl_w)); + map(0xe0, 0xe0).mirror(0x0f).rw(this, FUNC(kc85_state::keyboard_r), FUNC(kc85_state::ctrl_w)); + map(0xf0, 0xf1).mirror(0x0e).rw(this, FUNC(kc85_state::lcd_r), FUNC(kc85_state::lcd_w)); +} ADDRESS_MAP_START(kc85_state::trsm100_io) AM_IMPORT_FROM(kc85_io) AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_WRITE(modem_w) ADDRESS_MAP_END -ADDRESS_MAP_START(pc8201_state::pc8201_io) - ADDRESS_MAP_UNMAP_HIGH +void pc8201_state::pc8201_io(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) optional video interface 8255 - AM_RANGE(0x80, 0x80) AM_MIRROR(0x03) AM_WRITE(romah_w) - AM_RANGE(0x84, 0x84) AM_MIRROR(0x03) AM_WRITE(romal_w) - AM_RANGE(0x88, 0x88) AM_MIRROR(0x03) AM_WRITE(romam_w) - AM_RANGE(0x8c, 0x8c) AM_MIRROR(0x03) AM_READ(romrd_r) - AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(scp_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READWRITE(bank_r, bank_w) - AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE(IM6402_TAG, im6402_device, read, write) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READ(uart_status_r) AM_WRITE(uart_ctrl_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READ(keyboard_r) - AM_RANGE(0xf0, 0xf1) AM_MIRROR(0x0e) AM_READWRITE(lcd_r, lcd_w) -ADDRESS_MAP_END + map(0x80, 0x80).mirror(0x03).w(this, FUNC(pc8201_state::romah_w)); + map(0x84, 0x84).mirror(0x03).w(this, FUNC(pc8201_state::romal_w)); + map(0x88, 0x88).mirror(0x03).w(this, FUNC(pc8201_state::romam_w)); + map(0x8c, 0x8c).mirror(0x03).r(this, FUNC(pc8201_state::romrd_r)); + map(0x90, 0x90).mirror(0x0f).w(this, FUNC(pc8201_state::scp_w)); + map(0xa0, 0xa0).mirror(0x0f).rw(this, FUNC(pc8201_state::bank_r), FUNC(pc8201_state::bank_w)); + map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xc0, 0xc0).mirror(0x0f).rw(m_uart, FUNC(im6402_device::read), FUNC(im6402_device::write)); + map(0xd0, 0xd0).mirror(0x0f).r(this, FUNC(pc8201_state::uart_status_r)).w(this, FUNC(pc8201_state::uart_ctrl_w)); + map(0xe0, 0xe0).mirror(0x0f).r(this, FUNC(pc8201_state::keyboard_r)); + map(0xf0, 0xf1).mirror(0x0e).rw(this, FUNC(pc8201_state::lcd_r), FUNC(pc8201_state::lcd_w)); +} -ADDRESS_MAP_START(tandy200_state::tandy200_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x90, 0x9f) AM_DEVREADWRITE(RP5C01A_TAG, rp5c01_device, read, write) +void tandy200_state::tandy200_io(address_map &map) +{ + map.unmap_value_high(); + map(0x90, 0x9f).rw(m_rtc, FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)); // AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_DEVWRITE(TCM5089_TAG, write) - AM_RANGE(0xb0, 0xb7) AM_MIRROR(0x08) AM_DEVREADWRITE(I8155_TAG, i8155_device, io_r, io_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_READWRITE(bank_r, bank_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x0f) AM_READWRITE(stbk_r, stbk_w) - AM_RANGE(0xf0, 0xf0) AM_MIRROR(0x0e) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, data_r, data_w) - AM_RANGE(0xf1, 0xf1) AM_MIRROR(0x0e) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, status_r, control_w) -ADDRESS_MAP_END + map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xc0, 0xc0).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc1, 0xc1).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xd0, 0xd0).mirror(0x0f).rw(this, FUNC(tandy200_state::bank_r), FUNC(tandy200_state::bank_w)); + map(0xe0, 0xe0).mirror(0x0f).rw(this, FUNC(tandy200_state::stbk_r), FUNC(tandy200_state::stbk_w)); + map(0xf0, 0xf0).mirror(0x0e).rw(m_lcdc, FUNC(hd61830_device::data_r), FUNC(hd61830_device::data_w)); + map(0xf1, 0xf1).mirror(0x0e).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/kyugo.cpp b/src/mame/drivers/kyugo.cpp index 5fba40bc999..4aa4a250545 100644 --- a/src/mame/drivers/kyugo.cpp +++ b/src/mame/drivers/kyugo.cpp @@ -40,23 +40,25 @@ * *************************************/ -ADDRESS_MAP_START(kyugo_state::kyugo_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(bgattribram_w) AM_SHARE("bgattribram") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x9800, 0x9fff) AM_RAM_READ(spriteram_2_r) AM_SHARE("spriteram_2") - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("spriteram_1") - AM_RANGE(0xa800, 0xa800) AM_WRITE(scroll_x_lo_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(gfxctrl_w) - AM_RANGE(0xb800, 0xb800) AM_WRITE(scroll_y_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kyugo_state::gyrodine_main_map) - AM_IMPORT_FROM(kyugo_main_map) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void kyugo_state::kyugo_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(kyugo_state::bgvideoram_w)).share("bgvideoram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(kyugo_state::bgattribram_w)).share("bgattribram"); + map(0x9000, 0x97ff).ram().w(this, FUNC(kyugo_state::fgvideoram_w)).share("fgvideoram"); + map(0x9800, 0x9fff).ram().r(this, FUNC(kyugo_state::spriteram_2_r)).share("spriteram_2"); + map(0xa000, 0xa7ff).ram().share("spriteram_1"); + map(0xa800, 0xa800).w(this, FUNC(kyugo_state::scroll_x_lo_w)); + map(0xb000, 0xb000).w(this, FUNC(kyugo_state::gfxctrl_w)); + map(0xb800, 0xb800).w(this, FUNC(kyugo_state::scroll_y_w)); + map(0xf000, 0xf7ff).ram().share("shared_ram"); +} + +void kyugo_state::gyrodine_main_map(address_map &map) +{ + kyugo_main_map(map); + map(0xe000, 0xe000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} @@ -71,10 +73,11 @@ WRITE_LINE_MEMBER(kyugo_state::nmi_mask_w) m_nmi_mask = state; } -ADDRESS_MAP_START(kyugo_state::kyugo_main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void kyugo_state::kyugo_main_portmap(address_map &map) +{ + map.global_mask(0x07); + map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0)); +} @@ -85,49 +88,54 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(kyugo_state::gyrodine_sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P2") - AM_RANGE(0x8040, 0x8040) AM_READ_PORT("P1") - AM_RANGE(0x8080, 0x8080) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END +void kyugo_state::gyrodine_sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram().share("shared_ram"); + map(0x8000, 0x8000).portr("P2"); + map(0x8040, 0x8040).portr("P1"); + map(0x8080, 0x8080).portr("SYSTEM"); +} -ADDRESS_MAP_START(kyugo_state::repulse_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P2") - AM_RANGE(0xc040, 0xc040) AM_READ_PORT("P1") - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END +void kyugo_state::repulse_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa7ff).ram().share("shared_ram"); + map(0xc000, 0xc000).portr("P2"); + map(0xc040, 0xc040).portr("P1"); + map(0xc080, 0xc080).portr("SYSTEM"); +} -ADDRESS_MAP_START(kyugo_state::srdmissn_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P1") - AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P2") -ADDRESS_MAP_END +void kyugo_state::srdmissn_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("shared_ram"); + map(0xf400, 0xf400).portr("SYSTEM"); + map(0xf401, 0xf401).portr("P1"); + map(0xf402, 0xf402).portr("P2"); +} -ADDRESS_MAP_START(kyugo_state::legend_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P1") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("P2") -ADDRESS_MAP_END +void kyugo_state::legend_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().share("shared_ram"); + map(0xf800, 0xf800).portr("SYSTEM"); + map(0xf801, 0xf801).portr("P1"); + map(0xf802, 0xf802).portr("P2"); +} -ADDRESS_MAP_START(kyugo_state::flashgala_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc040, 0xc040) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("P1") - AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END +void kyugo_state::flashgala_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc040, 0xc040).portr("SYSTEM"); + map(0xc080, 0xc080).portr("P1"); + map(0xc0c0, 0xc0c0).portr("P2"); + map(0xe000, 0xe7ff).ram().share("shared_ram"); +} @@ -142,39 +150,43 @@ WRITE8_MEMBER(kyugo_state::coin_counter_w) machine().bookkeeping().coin_counter_w(offset, data & 1); } -ADDRESS_MAP_START(kyugo_state::gyrodine_sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xc0, 0xc1) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(kyugo_state::repulse_sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xc0, 0xc1) AM_WRITE(coin_counter_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(kyugo_state::flashgala_sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x42, 0x42) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xc0, 0xc1) AM_WRITE(coin_counter_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(kyugo_state::srdmissn_sub_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x82, 0x82) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x84, 0x85) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x90, 0x91) AM_WRITE(coin_counter_w) -ADDRESS_MAP_END +void kyugo_state::gyrodine_sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("ay1", FUNC(ay8910_device::data_r)); + map(0xc0, 0xc1).w("ay2", FUNC(ay8910_device::address_data_w)); +} + + +void kyugo_state::repulse_sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("ay1", FUNC(ay8910_device::data_r)); + map(0x40, 0x41).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xc0, 0xc1).w(this, FUNC(kyugo_state::coin_counter_w)); +} + + +void kyugo_state::flashgala_sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x41).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x42, 0x42).r("ay1", FUNC(ay8910_device::data_r)); + map(0x80, 0x81).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xc0, 0xc1).w(this, FUNC(kyugo_state::coin_counter_w)); +} + + +void kyugo_state::srdmissn_sub_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x81).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x82, 0x82).r("ay1", FUNC(ay8910_device::data_r)); + map(0x84, 0x85).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x90, 0x91).w(this, FUNC(kyugo_state::coin_counter_w)); +} diff --git a/src/mame/drivers/labyrunr.cpp b/src/mame/drivers/labyrunr.cpp index 09aacf3569b..5d2bf18ea63 100644 --- a/src/mame/drivers/labyrunr.cpp +++ b/src/mame/drivers/labyrunr.cpp @@ -46,27 +46,28 @@ WRITE8_MEMBER(labyrunr_state::labyrunr_bankswitch_w) machine().bookkeeping().coin_counter_w(1, data & 0x10); } -ADDRESS_MAP_START(labyrunr_state::labyrunr_map) - AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("k007121", k007121_device, ctrl_w) - AM_RANGE(0x0020, 0x005f) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0x0800, 0x0800) AM_DEVREADWRITE("ym1", ym2203_device, read_port_r, write_port_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("ym1", ym2203_device, status_port_r, control_port_w) - AM_RANGE(0x0900, 0x0900) AM_DEVREADWRITE("ym2", ym2203_device, read_port_r, write_port_w) - AM_RANGE(0x0901, 0x0901) AM_DEVREADWRITE("ym2", ym2203_device, status_port_r, control_port_w) - AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("P2") - AM_RANGE(0x0a01, 0x0a01) AM_READ_PORT("P1") - AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(labyrunr_bankswitch_w) - AM_RANGE(0x0d00, 0x0d1f) AM_DEVREADWRITE("k051733", k051733_device, read, write) - AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1000, 0x10ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(labyrunr_vram1_w) AM_SHARE("videoram1") - AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(labyrunr_vram2_w) AM_SHARE("videoram2") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void labyrunr_state::labyrunr_map(address_map &map) +{ + map(0x0000, 0x0007).w(m_k007121, FUNC(k007121_device::ctrl_w)); + map(0x0020, 0x005f).ram().share("scrollram"); + map(0x0800, 0x0800).rw("ym1", FUNC(ym2203_device::read_port_r), FUNC(ym2203_device::write_port_w)); + map(0x0801, 0x0801).rw("ym1", FUNC(ym2203_device::status_port_r), FUNC(ym2203_device::control_port_w)); + map(0x0900, 0x0900).rw("ym2", FUNC(ym2203_device::read_port_r), FUNC(ym2203_device::write_port_w)); + map(0x0901, 0x0901).rw("ym2", FUNC(ym2203_device::status_port_r), FUNC(ym2203_device::control_port_w)); + map(0x0a00, 0x0a00).portr("P2"); + map(0x0a01, 0x0a01).portr("P1"); + map(0x0b00, 0x0b00).portr("SYSTEM"); + map(0x0c00, 0x0c00).w(this, FUNC(labyrunr_state::labyrunr_bankswitch_w)); + map(0x0d00, 0x0d1f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); + map(0x0e00, 0x0e00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1000, 0x10ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0x1800, 0x1fff).ram(); + map(0x2000, 0x2fff).ram().share("spriteram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(labyrunr_state::labyrunr_vram1_w)).share("videoram1"); + map(0x3800, 0x3fff).ram().w(this, FUNC(labyrunr_state::labyrunr_vram2_w)).share("videoram2"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/ladybug.cpp b/src/mame/drivers/ladybug.cpp index 0315f16c36c..4d849a993b8 100644 --- a/src/mame/drivers/ladybug.cpp +++ b/src/mame/drivers/ladybug.cpp @@ -111,62 +111,67 @@ WRITE8_MEMBER(sraider_state::sraider_misc_w) } -ADDRESS_MAP_START(ladybug_state::ladybug_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("video", ladybug_video_device, spr_w) - AM_RANGE(0x8000, 0x8fff) AM_READNOP - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN0") - AM_RANGE(0x9001, 0x9001) AM_READ_PORT("IN1") - AM_RANGE(0x9002, 0x9002) AM_READ_PORT("DSW0") - AM_RANGE(0x9003, 0x9003) AM_READ_PORT("DSW1") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("videolatch", ls259_device, write_d0) - AM_RANGE(0xb000, 0xbfff) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0xd000, 0xd7ff) AM_DEVREADWRITE("video", ladybug_video_device, bg_r, bg_w) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(dorodon_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sraider_state::sraider_cpu1_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("video", ladybug_video_device, spr_w) - AM_RANGE(0x8005, 0x8005) AM_READ(sraider_8005_r) // protection check? - AM_RANGE(0x8006, 0x8006) AM_WRITEONLY AM_SHARE("sound_low") - AM_RANGE(0x8007, 0x8007) AM_WRITEONLY AM_SHARE("sound_high") - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN0") - AM_RANGE(0x9001, 0x9001) AM_READ_PORT("IN1") - AM_RANGE(0x9002, 0x9002) AM_READ_PORT("DSW0") - AM_RANGE(0x9003, 0x9003) AM_READ_PORT("DSW1") - AM_RANGE(0xd000, 0xd7ff) AM_DEVWRITE("video", ladybug_video_device, bg_w) - AM_RANGE(0xe000, 0xe000) AM_WRITENOP //unknown 0x10 when in attract, 0x20 when coined/playing -ADDRESS_MAP_END - -ADDRESS_MAP_START(sraider_state::sraider_cpu2_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_READONLY AM_SHARE("sound_low") - AM_RANGE(0xa000, 0xa000) AM_READONLY AM_SHARE("sound_high") - AM_RANGE(0xc000, 0xc000) AM_READNOP //some kind of sync - AM_RANGE(0xe000, 0xe0ff) AM_WRITEONLY AM_SHARE("grid_data") - AM_RANGE(0xe800, 0xe800) AM_WRITE(sraider_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sraider_state::sraider_cpu2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("sn3", sn76489_device, write) - AM_RANGE(0x18, 0x18) AM_DEVWRITE("sn4", sn76489_device, write) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("sn5", sn76489_device, write) - AM_RANGE(0x28, 0x3f) AM_WRITE(sraider_misc_w) // lots unknown -ADDRESS_MAP_END +void ladybug_state::ladybug_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x73ff).w(m_video, FUNC(ladybug_video_device::spr_w)); + map(0x8000, 0x8fff).nopr(); + map(0x9000, 0x9000).portr("IN0"); + map(0x9001, 0x9001).portr("IN1"); + map(0x9002, 0x9002).portr("DSW0"); + map(0x9003, 0x9003).portr("DSW1"); + map(0xa000, 0xa007).w("videolatch", FUNC(ls259_device::write_d0)); + map(0xb000, 0xbfff).w("sn1", FUNC(sn76489_device::write)); + map(0xc000, 0xcfff).w("sn2", FUNC(sn76489_device::write)); + map(0xd000, 0xd7ff).rw(m_video, FUNC(ladybug_video_device::bg_r), FUNC(ladybug_video_device::bg_w)); + map(0xe000, 0xe000).portr("IN2"); +} + + +void dorodon_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().share("decrypted_opcodes"); +} + + +void sraider_state::sraider_cpu1_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x73ff).w("video", FUNC(ladybug_video_device::spr_w)); + map(0x8005, 0x8005).r(this, FUNC(sraider_state::sraider_8005_r)); // protection check? + map(0x8006, 0x8006).writeonly().share("sound_low"); + map(0x8007, 0x8007).writeonly().share("sound_high"); + map(0x9000, 0x9000).portr("IN0"); + map(0x9001, 0x9001).portr("IN1"); + map(0x9002, 0x9002).portr("DSW0"); + map(0x9003, 0x9003).portr("DSW1"); + map(0xd000, 0xd7ff).w("video", FUNC(ladybug_video_device::bg_w)); + map(0xe000, 0xe000).nopw(); //unknown 0x10 when in attract, 0x20 when coined/playing +} + +void sraider_state::sraider_cpu2_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x63ff).ram(); + map(0x8000, 0x8000).readonly().share("sound_low"); + map(0xa000, 0xa000).readonly().share("sound_high"); + map(0xc000, 0xc000).nopr(); //some kind of sync + map(0xe000, 0xe0ff).writeonly().share("grid_data"); + map(0xe800, 0xe800).w(this, FUNC(sraider_state::sraider_io_w)); +} + +void sraider_state::sraider_cpu2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("sn1", FUNC(sn76489_device::write)); + map(0x08, 0x08).w("sn2", FUNC(sn76489_device::write)); + map(0x10, 0x10).w("sn3", FUNC(sn76489_device::write)); + map(0x18, 0x18).w("sn4", FUNC(sn76489_device::write)); + map(0x20, 0x20).w("sn5", FUNC(sn76489_device::write)); + map(0x28, 0x3f).w(this, FUNC(sraider_state::sraider_misc_w)); // lots unknown +} INPUT_CHANGED_MEMBER(ladybug_state::coin1_inserted) diff --git a/src/mame/drivers/ladyfrog.cpp b/src/mame/drivers/ladyfrog.cpp index f3bc789b479..e0c7a3b9d82 100644 --- a/src/mame/drivers/ladyfrog.cpp +++ b/src/mame/drivers/ladyfrog.cpp @@ -117,42 +117,44 @@ READ8_MEMBER(ladyfrog_state::snd_flag_r) return m_snd_flag | 0xfd; } -ADDRESS_MAP_START(ladyfrog_state::ladyfrog_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc07f) AM_RAM - AM_RANGE(0xc080, 0xc87f) AM_READWRITE(ladyfrog_videoram_r, ladyfrog_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd000) AM_WRITE(ladyfrog_gfxctrl2_w) - AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w) - AM_RANGE(0xd401, 0xd401) AM_READ(snd_flag_r) - AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w) - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW1") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW2") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("INPUTS") - AM_RANGE(0xd806, 0xd806) AM_READ_PORT("SYSTEM") - AM_RANGE(0xdc00, 0xdc9f) AM_READWRITE(ladyfrog_spriteram_r,ladyfrog_spriteram_w) - AM_RANGE(0xdca0, 0xdcbf) AM_READWRITE(ladyfrog_scrlram_r, ladyfrog_scrlram_w) AM_SHARE("scrlram") - AM_RANGE(0xdcc0, 0xdcff) AM_RAM - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(ladyfrog_palette_r, ladyfrog_palette_w) - AM_RANGE(0xd0d0, 0xd0d0) AM_READNOP /* code jumps to ASCII text "Alfa tecnology" @ $b7 */ - AM_RANGE(0xdf03, 0xdf03) AM_WRITE(ladyfrog_gfxctrl_w) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ladyfrog_state::ladyfrog_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_WRITENOP - AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0xca00, 0xca00) AM_WRITENOP - AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP - AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(to_main_w) - AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w) - AM_RANGE(0xd600, 0xd600) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* signed 8-bit DAC - unknown read */ - AM_RANGE(0xe000, 0xefff) AM_NOP -ADDRESS_MAP_END +void ladyfrog_state::ladyfrog_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc07f).ram(); + map(0xc080, 0xc87f).rw(this, FUNC(ladyfrog_state::ladyfrog_videoram_r), FUNC(ladyfrog_state::ladyfrog_videoram_w)).share("videoram"); + map(0xd000, 0xd000).w(this, FUNC(ladyfrog_state::ladyfrog_gfxctrl2_w)); + map(0xd400, 0xd400).rw(this, FUNC(ladyfrog_state::from_snd_r), FUNC(ladyfrog_state::sound_command_w)); + map(0xd401, 0xd401).r(this, FUNC(ladyfrog_state::snd_flag_r)); + map(0xd403, 0xd403).w(this, FUNC(ladyfrog_state::sound_cpu_reset_w)); + map(0xd800, 0xd800).portr("DSW1"); + map(0xd801, 0xd801).portr("DSW2"); + map(0xd804, 0xd804).portr("INPUTS"); + map(0xd806, 0xd806).portr("SYSTEM"); + map(0xdc00, 0xdc9f).rw(this, FUNC(ladyfrog_state::ladyfrog_spriteram_r), FUNC(ladyfrog_state::ladyfrog_spriteram_w)); + map(0xdca0, 0xdcbf).rw(this, FUNC(ladyfrog_state::ladyfrog_scrlram_r), FUNC(ladyfrog_state::ladyfrog_scrlram_w)).share("scrlram"); + map(0xdcc0, 0xdcff).ram(); + map(0xdd00, 0xdeff).rw(this, FUNC(ladyfrog_state::ladyfrog_palette_r), FUNC(ladyfrog_state::ladyfrog_palette_w)); + map(0xd0d0, 0xd0d0).nopr(); /* code jumps to ASCII text "Alfa tecnology" @ $b7 */ + map(0xdf03, 0xdf03).w(this, FUNC(ladyfrog_state::ladyfrog_gfxctrl_w)); + map(0xe000, 0xffff).ram(); +} + +void ladyfrog_state::ladyfrog_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).nopw(); + map(0xc802, 0xc803).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xc900, 0xc90d).w(m_msm, FUNC(msm5232_device::write)); + map(0xca00, 0xca00).nopw(); + map(0xcb00, 0xcb00).nopw(); + map(0xcc00, 0xcc00).nopw(); + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(ladyfrog_state::to_main_w)); + map(0xd200, 0xd200).nopr().w(this, FUNC(ladyfrog_state::nmi_enable_w)); + map(0xd400, 0xd400).w(this, FUNC(ladyfrog_state::nmi_disable_w)); + map(0xd600, 0xd600).nopr().w("dac", FUNC(dac_byte_interface::write)); /* signed 8-bit DAC - unknown read */ + map(0xe000, 0xefff).noprw(); +} static INPUT_PORTS_START( ladyfrog ) diff --git a/src/mame/drivers/laser3k.cpp b/src/mame/drivers/laser3k.cpp index 566a13453da..e53d4e819b1 100644 --- a/src/mame/drivers/laser3k.cpp +++ b/src/mame/drivers/laser3k.cpp @@ -138,20 +138,22 @@ private: ADDRESS MAP ***************************************************************************/ -ADDRESS_MAP_START(laser3k_state::laser3k_map) - AM_RANGE(0x0000, 0x3fff) AM_DEVICE("bank0", address_map_bank_device, amap8) - AM_RANGE(0x4000, 0x7fff) AM_DEVICE("bank1", address_map_bank_device, amap8) - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("bank2", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xffff) AM_DEVICE("bank3", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(laser3k_state::banks_map) - AM_RANGE(0x00000, 0x2ffff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x38000, 0x3bfff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x3c000, 0x3c0ff) AM_READWRITE(io_r, io_w) - AM_RANGE(0x3c100, 0x3c1ff) AM_READ(io2_r) - AM_RANGE(0x3c200, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x4200) -ADDRESS_MAP_END +void laser3k_state::laser3k_map(address_map &map) +{ + map(0x0000, 0x3fff).m(m_bank0, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0x7fff).m(m_bank1, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xbfff).m(m_bank2, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xffff).m(m_bank3, FUNC(address_map_bank_device::amap8)); +} + +void laser3k_state::banks_map(address_map &map) +{ + map(0x00000, 0x2ffff).rw(this, FUNC(laser3k_state::ram_r), FUNC(laser3k_state::ram_w)); + map(0x38000, 0x3bfff).rom().region("maincpu", 0); + map(0x3c000, 0x3c0ff).rw(this, FUNC(laser3k_state::io_r), FUNC(laser3k_state::io_w)); + map(0x3c100, 0x3c1ff).r(this, FUNC(laser3k_state::io2_r)); + map(0x3c200, 0x3ffff).rom().region("maincpu", 0x4200); +} void laser3k_state::machine_start() { diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp index f245a9a2df1..3e8c5ef0666 100644 --- a/src/mame/drivers/laserbas.cpp +++ b/src/mame/drivers/laserbas.cpp @@ -330,28 +330,30 @@ WRITE_LINE_MEMBER(laserbas_state::pit_out_5_w) write_pit_out(5,state); } -ADDRESS_MAP_START(laserbas_state::laserbas_memory) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xbfff) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0xc000, 0xf7ff) AM_ROM AM_WRITENOP - AM_RANGE(0xf800, 0xfbff) AM_READ(z1_r) AM_WRITENOP /* protection device */ - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(laserbas_state::laserbas_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x10, 0x11) AM_WRITE(videoctrl_w) - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW") - AM_RANGE(0x21, 0x21) AM_READ_PORT("INPUTS") - AM_RANGE(0x22, 0x22) AM_READ(track_hi_r) - AM_RANGE(0x23, 0x23) AM_READ(track_lo_r) - AM_RANGE(0x20, 0x23) AM_WRITE(out_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pit0", pit8253_device, read, write) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("pit1", pit8253_device, read, write) - AM_RANGE(0x80, 0x9f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END +void laserbas_state::laserbas_memory(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0xbfff).rw(this, FUNC(laserbas_state::vram_r), FUNC(laserbas_state::vram_w)); + map(0xc000, 0xf7ff).rom().nopw(); + map(0xf800, 0xfbff).r(this, FUNC(laserbas_state::z1_r)).nopw(); /* protection device */ + map(0xfc00, 0xffff).ram(); +} + +void laserbas_state::laserbas_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x01, 0x01).w("crtc", FUNC(mc6845_device::register_w)); + map(0x10, 0x11).w(this, FUNC(laserbas_state::videoctrl_w)); + map(0x20, 0x20).portr("DSW"); + map(0x21, 0x21).portr("INPUTS"); + map(0x22, 0x22).r(this, FUNC(laserbas_state::track_hi_r)); + map(0x23, 0x23).r(this, FUNC(laserbas_state::track_lo_r)); + map(0x20, 0x23).w(this, FUNC(laserbas_state::out_w)); + map(0x40, 0x43).rw("pit0", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x44, 0x47).rw("pit1", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x80, 0x9f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} static INPUT_PORTS_START( laserbas ) PORT_START("DSW") // $20 diff --git a/src/mame/drivers/laserbat.cpp b/src/mame/drivers/laserbat.cpp index 66d9fba9c0c..46be140d10e 100644 --- a/src/mame/drivers/laserbat.cpp +++ b/src/mame/drivers/laserbat.cpp @@ -165,34 +165,36 @@ READ8_MEMBER(laserbat_state_base::rrowx_r) */ -ADDRESS_MAP_START(laserbat_state_base::laserbat_map) - ADDRESS_MAP_UNMAP_HIGH - - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x2000, 0x33ff) AM_ROM - AM_RANGE(0x3800, 0x3bff) AM_ROM - AM_RANGE(0x4000, 0x53ff) AM_ROM - AM_RANGE(0x6000, 0x73ff) AM_ROM - AM_RANGE(0x7800, 0x7bff) AM_ROM - - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_WRITENOP - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi1", s2636_device, read_data, write_data) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi2", s2636_device, read_data, write_data) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("pvi3", s2636_device, read_data, write_data) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(videoram_w) - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(laserbat_state_base::laserbat_io_map) - AM_RANGE(0x00, 0x00) AM_READ(rhsc_r) AM_WRITE(cnt_eff_w) - AM_RANGE(0x01, 0x01) /* RBALL */ AM_WRITE(cnt_nav_w) - AM_RANGE(0x02, 0x02) AM_READ(rrowx_r) AM_WRITE(csound1_w) - AM_RANGE(0x03, 0x03) AM_WRITE(whsc_w) - AM_RANGE(0x04, 0x04) AM_WRITE(wcoh_w) - AM_RANGE(0x05, 0x05) AM_WRITE(wcov_w) - AM_RANGE(0x06, 0x06) AM_WRITE(ct_io_w) - AM_RANGE(0x07, 0x07) AM_WRITE(csound2_w) -ADDRESS_MAP_END +void laserbat_state_base::laserbat_map(address_map &map) +{ + map.unmap_value_high(); + + map(0x0000, 0x13ff).rom(); + map(0x2000, 0x33ff).rom(); + map(0x3800, 0x3bff).rom(); + map(0x4000, 0x53ff).rom(); + map(0x6000, 0x73ff).rom(); + map(0x7800, 0x7bff).rom(); + + map(0x1400, 0x14ff).mirror(0x6000).nopw(); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_pvi1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1600, 0x16ff).mirror(0x6000).rw(m_pvi2, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1700, 0x17ff).mirror(0x6000).rw(m_pvi3, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(laserbat_state_base::videoram_w)); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); +} + +void laserbat_state_base::laserbat_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(laserbat_state_base::rhsc_r)).w(this, FUNC(laserbat_state_base::cnt_eff_w)); + map(0x01, 0x01) /* RBALL */ .w(this, FUNC(laserbat_state_base::cnt_nav_w)); + map(0x02, 0x02).r(this, FUNC(laserbat_state_base::rrowx_r)).w(this, FUNC(laserbat_state_base::csound1_w)); + map(0x03, 0x03).w(this, FUNC(laserbat_state_base::whsc_w)); + map(0x04, 0x04).w(this, FUNC(laserbat_state_base::wcoh_w)); + map(0x05, 0x05).w(this, FUNC(laserbat_state_base::wcov_w)); + map(0x06, 0x06).w(this, FUNC(laserbat_state_base::ct_io_w)); + map(0x07, 0x07).w(this, FUNC(laserbat_state_base::csound2_w)); +} static INPUT_PORTS_START( laserbat_base ) diff --git a/src/mame/drivers/lasso.cpp b/src/mame/drivers/lasso.cpp index 9bed15a60dc..297d96d493f 100644 --- a/src/mame/drivers/lasso.cpp +++ b/src/mame/drivers/lasso.cpp @@ -74,135 +74,145 @@ WRITE8_MEMBER(lasso_state::sound_select_w) } -ADDRESS_MAP_START(lasso_state::lasso_main_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x0c00, 0x0c7f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color") - AM_RANGE(0x1802, 0x1802) AM_WRITE(lasso_video_control_w) - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804") - AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805") - AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806") AM_WRITENOP /* game uses 'lsr' to read port */ - AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807") - AM_RANGE(0x8000, 0xbfff) AM_MIRROR(0x4000) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::lasso_audio_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x5000, 0x7fff) AM_ROM - AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data") - AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) - AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) - AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x7000) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::lasso_coprocessor_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("bitmap_ram") - AM_RANGE(0x8000, 0x8fff) AM_MIRROR(0x7000) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::chameleo_main_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x107f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1080, 0x10ff) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color") - AM_RANGE(0x1802, 0x1802) AM_WRITE(lasso_video_control_w) - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804") - AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805") - AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806") - AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807") - AM_RANGE(0x4000, 0xbfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::chameleo_audio_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data") - AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) - AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) - AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x7000) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::wwjgtin_main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color") - AM_RANGE(0x1802, 0x1802) AM_WRITE(wwjgtin_video_control_w) - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804") - AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805") - AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806") - AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807") - AM_RANGE(0x1c00, 0x1c02) AM_WRITEONLY AM_SHARE("last_colors") - AM_RANGE(0x1c04, 0x1c07) AM_WRITEONLY AM_SHARE("track_scroll") - AM_RANGE(0x4000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::wwjgtin_audio_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data") - AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w) - AM_RANGE(0xb003, 0xb003) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r) - AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::pinbo_main_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(lasso_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(lasso_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1800, 0x1800) AM_WRITE(sound_command_w) - AM_RANGE(0x1801, 0x1801) AM_WRITEONLY AM_SHARE("back_color") - AM_RANGE(0x1802, 0x1802) AM_WRITE(pinbo_video_control_w) - AM_RANGE(0x1804, 0x1804) AM_READ_PORT("1804") - AM_RANGE(0x1805, 0x1805) AM_READ_PORT("1805") - AM_RANGE(0x1806, 0x1806) AM_READ_PORT("1806") - AM_RANGE(0x1807, 0x1807) AM_READ_PORT("1807") - AM_RANGE(0x2000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0xbfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::pinbo_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lasso_state::pinbo_audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* ??? */ - AM_RANGE(0x14, 0x14) AM_WRITENOP /* ??? */ -ADDRESS_MAP_END +void lasso_state::lasso_main_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram"); + map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram"); + map(0x0c00, 0x0c7f).ram().share("spriteram"); + map(0x1000, 0x17ff).ram().share("share1"); + map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w)); + map(0x1801, 0x1801).writeonly().share("back_color"); + map(0x1802, 0x1802).w(this, FUNC(lasso_state::lasso_video_control_w)); + map(0x1804, 0x1804).portr("1804"); + map(0x1805, 0x1805).portr("1805"); + map(0x1806, 0x1806).portr("1806").nopw(); /* game uses 'lsr' to read port */ + map(0x1807, 0x1807).portr("1807"); + map(0x8000, 0xbfff).mirror(0x4000).rom(); +} + + +void lasso_state::lasso_audio_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x5000, 0x7fff).rom(); + map(0xb000, 0xb000).writeonly().share("chip_data"); + map(0xb001, 0xb001).w(this, FUNC(lasso_state::sound_select_w)); + map(0xb004, 0xb004).r(this, FUNC(lasso_state::sound_status_r)); + map(0xb005, 0xb005).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf000, 0xffff).rom().region("audiocpu", 0x7000); +} + + +void lasso_state::lasso_coprocessor_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("share1"); + map(0x2000, 0x3fff).ram().share("bitmap_ram"); + map(0x8000, 0x8fff).mirror(0x7000).rom(); +} + + +void lasso_state::chameleo_main_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram"); + map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram"); + map(0x0c00, 0x0fff).ram(); + map(0x1000, 0x107f).ram().share("spriteram"); + map(0x1080, 0x10ff).ram(); + map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w)); + map(0x1801, 0x1801).writeonly().share("back_color"); + map(0x1802, 0x1802).w(this, FUNC(lasso_state::lasso_video_control_w)); + map(0x1804, 0x1804).portr("1804"); + map(0x1805, 0x1805).portr("1805"); + map(0x1806, 0x1806).portr("1806"); + map(0x1807, 0x1807).portr("1807"); + map(0x4000, 0xbfff).rom(); + map(0xe000, 0xffff).rom().region("maincpu", 0xa000); +} + + +void lasso_state::chameleo_audio_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x1000, 0x1fff).rom(); + map(0x6000, 0x7fff).rom(); + map(0xb000, 0xb000).writeonly().share("chip_data"); + map(0xb001, 0xb001).w(this, FUNC(lasso_state::sound_select_w)); + map(0xb004, 0xb004).r(this, FUNC(lasso_state::sound_status_r)); + map(0xb005, 0xb005).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf000, 0xffff).rom().region("audiocpu", 0x7000); +} + + +void lasso_state::wwjgtin_main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram"); + map(0x1000, 0x10ff).ram().share("spriteram"); + map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w)); + map(0x1801, 0x1801).writeonly().share("back_color"); + map(0x1802, 0x1802).w(this, FUNC(lasso_state::wwjgtin_video_control_w)); + map(0x1804, 0x1804).portr("1804"); + map(0x1805, 0x1805).portr("1805"); + map(0x1806, 0x1806).portr("1806"); + map(0x1807, 0x1807).portr("1807"); + map(0x1c00, 0x1c02).writeonly().share("last_colors"); + map(0x1c04, 0x1c07).writeonly().share("track_scroll"); + map(0x4000, 0xbfff).rom(); + map(0xc000, 0xffff).rom().region("maincpu", 0x8000); +} + + +void lasso_state::wwjgtin_audio_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x4000, 0x7fff).mirror(0x8000).rom(); + map(0xb000, 0xb000).writeonly().share("chip_data"); + map(0xb001, 0xb001).w(this, FUNC(lasso_state::sound_select_w)); + map(0xb003, 0xb003).w("dac", FUNC(dac_byte_interface::write)); + map(0xb004, 0xb004).r(this, FUNC(lasso_state::sound_status_r)); + map(0xb005, 0xb005).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + + +void lasso_state::pinbo_main_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(lasso_state::lasso_videoram_w)).share("videoram"); + map(0x0800, 0x0bff).ram().w(this, FUNC(lasso_state::lasso_colorram_w)).share("colorram"); + map(0x1000, 0x10ff).ram().share("spriteram"); + map(0x1800, 0x1800).w(this, FUNC(lasso_state::sound_command_w)); + map(0x1801, 0x1801).writeonly().share("back_color"); + map(0x1802, 0x1802).w(this, FUNC(lasso_state::pinbo_video_control_w)); + map(0x1804, 0x1804).portr("1804"); + map(0x1805, 0x1805).portr("1805"); + map(0x1806, 0x1806).portr("1806"); + map(0x1807, 0x1807).portr("1807"); + map(0x2000, 0x3fff).rom(); + map(0x6000, 0xbfff).rom(); + map(0xe000, 0xffff).rom().region("maincpu", 0xa000); +} + + +void lasso_state::pinbo_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xf000, 0xffff).ram(); +} + + +void lasso_state::pinbo_audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("ay1", FUNC(ay8910_device::data_r)); + map(0x04, 0x05).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r("ay2", FUNC(ay8910_device::data_r)); + map(0x08, 0x08).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); /* ??? */ + map(0x14, 0x14).nopw(); /* ??? */ +} diff --git a/src/mame/drivers/lastbank.cpp b/src/mame/drivers/lastbank.cpp index 678687c7192..2aaf4c9ceb5 100644 --- a/src/mame/drivers/lastbank.cpp +++ b/src/mame/drivers/lastbank.cpp @@ -224,56 +224,60 @@ CUSTOM_INPUT_MEMBER(lastbank_state::sound_status_r) return BIT(m_sound_flags, 0) << 1 | BIT(m_sound_flags, 1); } -ADDRESS_MAP_START(lastbank_state::tc0091lvc_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank") - - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram") - - AM_RANGE(0xc000, 0xcfff) AM_READWRITE(ram_r<0>,ram_w<0>) - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(ram_r<1>,ram_w<1>) - AM_RANGE(0xe000, 0xefff) AM_READWRITE(ram_r<2>,ram_w<2>) - AM_RANGE(0xf000, 0xfdff) AM_READWRITE(ram_r<3>,ram_w<3>) - - AM_RANGE(0xfe00, 0xfeff) AM_DEVREADWRITE("tc0091lvc", tc0091lvc_device, vregs_r, vregs_w) - AM_RANGE(0xff00, 0xff02) AM_READWRITE(irq_vector_r, irq_vector_w) - AM_RANGE(0xff03, 0xff03) AM_READWRITE(irq_enable_r, irq_enable_w) - AM_RANGE(0xff04, 0xff07) AM_READWRITE(ram_bank_r, ram_bank_w) - AM_RANGE(0xff08, 0xff08) AM_READWRITE(rom_bank_r, rom_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lastbank_state::lastbank_map) - AM_IMPORT_FROM( tc0091lvc_map ) - AM_RANGE(0xa000, 0xa00d) AM_NOP // MSM62X42B or equivalent probably read from here - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("COINS") - AM_RANGE(0xa800, 0xa802) AM_WRITE(output_w) - AM_RANGE(0xa803, 0xa803) AM_WRITE(mux_w) // mux for $a808 / $a80c - AM_RANGE(0xa804, 0xa804) AM_READ_PORT("SPECIAL") - AM_RANGE(0xa805, 0xa805) AM_DEVWRITE("soundlatch1", generic_latch_8_device, write) - AM_RANGE(0xa806, 0xa806) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xa807, 0xa807) AM_WRITENOP // hopper? - AM_RANGE(0xa808, 0xa808) AM_READ(mux_0_r) - AM_RANGE(0xa80c, 0xa80c) AM_READ(mux_0_r) - AM_RANGE(0xa81c, 0xa81c) AM_READ_PORT("DSW0") - AM_RANGE(0xa81d, 0xa81d) AM_READ_PORT("DSW1") - AM_RANGE(0xa81e, 0xa81e) AM_READ_PORT("DSW2") - AM_RANGE(0xa81f, 0xa81f) AM_READ_PORT("DSW3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(lastbank_state::lastbank_audio_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(lastbank_state::lastbank_audio_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x06) AM_DEVREADWRITE("essnd", es8712_device, read, write) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x80, 0x80) AM_WRITE(sound_flags_w) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) -ADDRESS_MAP_END +void lastbank_state::tc0091lvc_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).bankr("mainbank"); + + map(0x8000, 0x9fff).ram().share("nvram"); + + map(0xc000, 0xcfff).rw(this, FUNC(lastbank_state::ram_r<0>), FUNC(lastbank_state::ram_w<0>)); + map(0xd000, 0xdfff).rw(this, FUNC(lastbank_state::ram_r<1>), FUNC(lastbank_state::ram_w<1>)); + map(0xe000, 0xefff).rw(this, FUNC(lastbank_state::ram_r<2>), FUNC(lastbank_state::ram_w<2>)); + map(0xf000, 0xfdff).rw(this, FUNC(lastbank_state::ram_r<3>), FUNC(lastbank_state::ram_w<3>)); + + map(0xfe00, 0xfeff).rw(m_vdp, FUNC(tc0091lvc_device::vregs_r), FUNC(tc0091lvc_device::vregs_w)); + map(0xff00, 0xff02).rw(this, FUNC(lastbank_state::irq_vector_r), FUNC(lastbank_state::irq_vector_w)); + map(0xff03, 0xff03).rw(this, FUNC(lastbank_state::irq_enable_r), FUNC(lastbank_state::irq_enable_w)); + map(0xff04, 0xff07).rw(this, FUNC(lastbank_state::ram_bank_r), FUNC(lastbank_state::ram_bank_w)); + map(0xff08, 0xff08).rw(this, FUNC(lastbank_state::rom_bank_r), FUNC(lastbank_state::rom_bank_w)); +} + +void lastbank_state::lastbank_map(address_map &map) +{ + tc0091lvc_map(map); + map(0xa000, 0xa00d).noprw(); // MSM62X42B or equivalent probably read from here + map(0xa800, 0xa800).portr("COINS"); + map(0xa800, 0xa802).w(this, FUNC(lastbank_state::output_w)); + map(0xa803, 0xa803).w(this, FUNC(lastbank_state::mux_w)); // mux for $a808 / $a80c + map(0xa804, 0xa804).portr("SPECIAL"); + map(0xa805, 0xa805).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xa806, 0xa806).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0xa807, 0xa807).nopw(); // hopper? + map(0xa808, 0xa808).r(this, FUNC(lastbank_state::mux_0_r)); + map(0xa80c, 0xa80c).r(this, FUNC(lastbank_state::mux_0_r)); + map(0xa81c, 0xa81c).portr("DSW0"); + map(0xa81d, 0xa81d).portr("DSW1"); + map(0xa81e, 0xa81e).portr("DSW2"); + map(0xa81f, 0xa81f).portr("DSW3"); +} + +void lastbank_state::lastbank_audio_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram(); +} + +void lastbank_state::lastbank_audio_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x06).rw(m_essnd, FUNC(es8712_device::read), FUNC(es8712_device::write)); + map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x80, 0x80).w(this, FUNC(lastbank_state::sound_flags_w)); + map(0x80, 0x80).r("soundlatch1", FUNC(generic_latch_8_device::read)); + map(0xc0, 0xc0).r("soundlatch2", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( lastbank ) PORT_START("COINS") diff --git a/src/mame/drivers/lastduel.cpp b/src/mame/drivers/lastduel.cpp index a983b50404a..5ef11c7db36 100644 --- a/src/mame/drivers/lastduel.cpp +++ b/src/mame/drivers/lastduel.cpp @@ -141,62 +141,66 @@ WRITE16_MEMBER(lastduel_state::lastduel_sound_w) /******************************************************************************/ -ADDRESS_MAP_START(lastduel_state::lastduel_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfc0003) AM_WRITENOP /* Written rarely */ - AM_RANGE(0xfc0800, 0xfc0fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("P1_P2") AM_WRITE(lastduel_flip_w) - AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("SYSTEM") AM_WRITE(lastduel_sound_w) - AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("DSW1") - AM_RANGE(0xfc4006, 0xfc4007) AM_READ_PORT("DSW2") - AM_RANGE(0xfc8000, 0xfc800f) AM_WRITE(lastduel_scroll_w) - AM_RANGE(0xfcc000, 0xfcdfff) AM_RAM_WRITE(lastduel_vram_w) AM_SHARE("vram") - AM_RANGE(0xfd0000, 0xfd3fff) AM_RAM_WRITE(lastduel_scroll1_w) AM_SHARE("scroll1") - AM_RANGE(0xfd4000, 0xfd7fff) AM_RAM_WRITE(lastduel_scroll2_w) AM_SHARE("scroll2") - AM_RANGE(0xfd8000, 0xfd87ff) AM_RAM_WRITE(lastduel_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0xfe0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(lastduel_state::madgear_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xfc1800, 0xfc1fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("DSW1") AM_WRITE(lastduel_flip_w) - AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("DSW2") AM_WRITE(lastduel_sound_w) - AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("P1_P2") - AM_RANGE(0xfc4006, 0xfc4007) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfc8000, 0xfc9fff) AM_RAM_WRITE(lastduel_vram_w) AM_SHARE("vram") - AM_RANGE(0xfcc000, 0xfcc7ff) AM_RAM_WRITE(lastduel_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0xfd0000, 0xfd000f) AM_WRITE(lastduel_scroll_w) - AM_RANGE(0xfd4000, 0xfd7fff) AM_RAM_WRITE(madgear_scroll1_w) AM_SHARE("scroll1") - AM_RANGE(0xfd8000, 0xfdffff) AM_RAM_WRITE(madgear_scroll2_w) AM_SHARE("scroll2") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void lastduel_state::lastduel_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0xfc0000, 0xfc0003).nopw(); /* Written rarely */ + map(0xfc0800, 0xfc0fff).ram().share("spriteram"); + map(0xfc4000, 0xfc4001).portr("P1_P2").w(this, FUNC(lastduel_state::lastduel_flip_w)); + map(0xfc4002, 0xfc4003).portr("SYSTEM").w(this, FUNC(lastduel_state::lastduel_sound_w)); + map(0xfc4004, 0xfc4005).portr("DSW1"); + map(0xfc4006, 0xfc4007).portr("DSW2"); + map(0xfc8000, 0xfc800f).w(this, FUNC(lastduel_state::lastduel_scroll_w)); + map(0xfcc000, 0xfcdfff).ram().w(this, FUNC(lastduel_state::lastduel_vram_w)).share("vram"); + map(0xfd0000, 0xfd3fff).ram().w(this, FUNC(lastduel_state::lastduel_scroll1_w)).share("scroll1"); + map(0xfd4000, 0xfd7fff).ram().w(this, FUNC(lastduel_state::lastduel_scroll2_w)).share("scroll2"); + map(0xfd8000, 0xfd87ff).ram().w(this, FUNC(lastduel_state::lastduel_palette_word_w)).share("paletteram"); + map(0xfe0000, 0xffffff).ram(); +} + +void lastduel_state::madgear_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0xfc1800, 0xfc1fff).ram().share("spriteram"); + map(0xfc4000, 0xfc4001).portr("DSW1").w(this, FUNC(lastduel_state::lastduel_flip_w)); + map(0xfc4002, 0xfc4003).portr("DSW2").w(this, FUNC(lastduel_state::lastduel_sound_w)); + map(0xfc4004, 0xfc4005).portr("P1_P2"); + map(0xfc4006, 0xfc4007).portr("SYSTEM"); + map(0xfc8000, 0xfc9fff).ram().w(this, FUNC(lastduel_state::lastduel_vram_w)).share("vram"); + map(0xfcc000, 0xfcc7ff).ram().w(this, FUNC(lastduel_state::lastduel_palette_word_w)).share("paletteram"); + map(0xfd0000, 0xfd000f).w(this, FUNC(lastduel_state::lastduel_scroll_w)); + map(0xfd4000, 0xfd7fff).ram().w(this, FUNC(lastduel_state::madgear_scroll1_w)).share("scroll1"); + map(0xfd8000, 0xfdffff).ram().w(this, FUNC(lastduel_state::madgear_scroll2_w)).share("scroll2"); + map(0xff0000, 0xffffff).ram(); +} /******************************************************************************/ -ADDRESS_MAP_START(lastduel_state::sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void lastduel_state::sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xe801).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf000, 0xf001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} WRITE8_MEMBER(lastduel_state::mg_bankswitch_w) { membank("bank1")->set_entry(data & 0x01); } -ADDRESS_MAP_START(lastduel_state::madgear_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xcfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xf004, 0xf004) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xf006, 0xf006) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf00a, 0xf00a) AM_WRITE(mg_bankswitch_w) -ADDRESS_MAP_END +void lastduel_state::madgear_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xcfff).bankr("bank1"); + map(0xd000, 0xd7ff).ram(); + map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf004, 0xf004).w("oki", FUNC(okim6295_device::write)); + map(0xf006, 0xf006).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf00a, 0xf00a).w(this, FUNC(lastduel_state::mg_bankswitch_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/lastfght.cpp b/src/mame/drivers/lastfght.cpp index 1694ec5e56a..b32fdf2050d 100644 --- a/src/mame/drivers/lastfght.cpp +++ b/src/mame/drivers/lastfght.cpp @@ -407,40 +407,42 @@ WRITE16_MEMBER(lastfght_state::sound_w) Memory Maps ***************************************************************************/ -ADDRESS_MAP_START(lastfght_state::lastfght_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0) - - AM_RANGE( 0x200000, 0x20ffff ) AM_RAM AM_SHARE("nvram") // battery - - AM_RANGE( 0x600000, 0x600001 ) AM_WRITE(hi_w ) - AM_RANGE( 0x600002, 0x600003 ) AM_READWRITE(sound_r, sound_w ) - AM_RANGE( 0x600006, 0x600007 ) AM_WRITE(blit_w ) - AM_RANGE( 0x600008, 0x600009 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff ) - AM_RANGE( 0x600008, 0x600009 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00 ) - AM_RANGE( 0x60000a, 0x60000b ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00 ) - - AM_RANGE( 0x800000, 0x800001 ) AM_WRITE(sx_w ) - AM_RANGE( 0x800002, 0x800003 ) AM_WRITE(sd_w ) - AM_RANGE( 0x800004, 0x800005 ) AM_WRITE(sy_w ) - AM_RANGE( 0x800006, 0x800007 ) AM_WRITE(sr_w ) - AM_RANGE( 0x800008, 0x800009 ) AM_WRITE(x_w ) - AM_RANGE( 0x80000a, 0x80000b ) AM_WRITE(yw_w ) - AM_RANGE( 0x80000c, 0x80000d ) AM_WRITE(h_w ) - - AM_RANGE( 0x800014, 0x800015 ) AM_WRITE(dest_w ) - - AM_RANGE( 0xc00000, 0xc00001 ) AM_READ(c00000_r ) - AM_RANGE( 0xc00002, 0xc00003 ) AM_READ(c00002_r ) - AM_RANGE( 0xc00004, 0xc00005 ) AM_READ(c00004_r ) - AM_RANGE( 0xc00006, 0xc00007 ) AM_READWRITE(c00006_r, c00006_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lastfght_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void lastfght_state::lastfght_map(address_map &map) +{ + map.global_mask(0xffffff); + + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x080000, 0x0fffff).rom().region("maincpu", 0); + + map(0x200000, 0x20ffff).ram().share("nvram"); // battery + + map(0x600000, 0x600001).w(this, FUNC(lastfght_state::hi_w)); + map(0x600002, 0x600003).rw(this, FUNC(lastfght_state::sound_r), FUNC(lastfght_state::sound_w)); + map(0x600006, 0x600007).w(this, FUNC(lastfght_state::blit_w)); + map(0x600009, 0x600009).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x600008, 0x600008).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x60000a, 0x60000a).w("ramdac", FUNC(ramdac_device::mask_w)); + + map(0x800000, 0x800001).w(this, FUNC(lastfght_state::sx_w)); + map(0x800002, 0x800003).w(this, FUNC(lastfght_state::sd_w)); + map(0x800004, 0x800005).w(this, FUNC(lastfght_state::sy_w)); + map(0x800006, 0x800007).w(this, FUNC(lastfght_state::sr_w)); + map(0x800008, 0x800009).w(this, FUNC(lastfght_state::x_w)); + map(0x80000a, 0x80000b).w(this, FUNC(lastfght_state::yw_w)); + map(0x80000c, 0x80000d).w(this, FUNC(lastfght_state::h_w)); + + map(0x800014, 0x800015).w(this, FUNC(lastfght_state::dest_w)); + + map(0xc00000, 0xc00001).r(this, FUNC(lastfght_state::c00000_r)); + map(0xc00002, 0xc00003).r(this, FUNC(lastfght_state::c00002_r)); + map(0xc00004, 0xc00005).r(this, FUNC(lastfght_state::c00004_r)); + map(0xc00006, 0xc00007).rw(this, FUNC(lastfght_state::c00006_r), FUNC(lastfght_state::c00006_w)); +} + +void lastfght_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} /*************************************************************************** Input Ports diff --git a/src/mame/drivers/lazercmd.cpp b/src/mame/drivers/lazercmd.cpp index e2957962b1f..84c884159f5 100644 --- a/src/mame/drivers/lazercmd.cpp +++ b/src/mame/drivers/lazercmd.cpp @@ -410,38 +410,42 @@ READ8_MEMBER(lazercmd_state::lazercmd_hardware_r) * *************************************************************/ -ADDRESS_MAP_START(lazercmd_state::lazercmd_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1c00, 0x1c1f) AM_RAM - AM_RANGE(0x1c20, 0x1eff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1f00, 0x1f03) AM_WRITE(lazercmd_hardware_w) - AM_RANGE(0x1f00, 0x1f07) AM_READ(lazercmd_hardware_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lazercmd_state::medlanes_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1000, 0x17ff) AM_ROM - AM_RANGE(0x1c00, 0x1c1f) AM_RAM - AM_RANGE(0x1c20, 0x1eff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1f00, 0x1f03) AM_WRITE(medlanes_hardware_w) - AM_RANGE(0x1f00, 0x1f07) AM_READ(lazercmd_hardware_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lazercmd_state::bbonk_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1c00, 0x1c1f) AM_RAM - AM_RANGE(0x1c20, 0x1eff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1f00, 0x1f03) AM_WRITE(bbonk_hardware_w) - AM_RANGE(0x1f00, 0x1f07) AM_READ(lazercmd_hardware_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lazercmd_state::lazercmd_portmap) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(lazercmd_ctrl_port_r, lazercmd_ctrl_port_w) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(lazercmd_data_port_r, lazercmd_data_port_w) -ADDRESS_MAP_END +void lazercmd_state::lazercmd_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x1c00, 0x1c1f).ram(); + map(0x1c20, 0x1eff).ram().share("videoram"); + map(0x1f00, 0x1f03).w(this, FUNC(lazercmd_state::lazercmd_hardware_w)); + map(0x1f00, 0x1f07).r(this, FUNC(lazercmd_state::lazercmd_hardware_r)); +} + + +void lazercmd_state::medlanes_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x1000, 0x17ff).rom(); + map(0x1c00, 0x1c1f).ram(); + map(0x1c20, 0x1eff).ram().share("videoram"); + map(0x1f00, 0x1f03).w(this, FUNC(lazercmd_state::medlanes_hardware_w)); + map(0x1f00, 0x1f07).r(this, FUNC(lazercmd_state::lazercmd_hardware_r)); +} + + +void lazercmd_state::bbonk_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x1c00, 0x1c1f).ram(); + map(0x1c20, 0x1eff).ram().share("videoram"); + map(0x1f00, 0x1f03).w(this, FUNC(lazercmd_state::bbonk_hardware_w)); + map(0x1f00, 0x1f07).r(this, FUNC(lazercmd_state::lazercmd_hardware_r)); +} + + +void lazercmd_state::lazercmd_portmap(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(lazercmd_state::lazercmd_ctrl_port_r), FUNC(lazercmd_state::lazercmd_ctrl_port_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(lazercmd_state::lazercmd_data_port_r), FUNC(lazercmd_state::lazercmd_data_port_w)); +} diff --git a/src/mame/drivers/lb186.cpp b/src/mame/drivers/lb186.cpp index 419ac7cccbe..220c8ee3f04 100644 --- a/src/mame/drivers/lb186.cpp +++ b/src/mame/drivers/lb186.cpp @@ -92,19 +92,21 @@ WRITE8_MEMBER(lb186_state::drive_sel_w) floppy->ss_w(BIT(data, 4)); } -ADDRESS_MAP_START(lb186_state::lb186_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lb186_state::lb186_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x1000, 0x101f) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0x00ff) - AM_RANGE(0x1080, 0x108f) AM_DEVREADWRITE8("scsibus:7:ncr5380", ncr5380n_device, read, write, 0x00ff) - AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE8("fdc", wd1772_device, read, write, 0x00ff) - AM_RANGE(0x1180, 0x1181) AM_READWRITE8(scsi_dack_r, scsi_dack_w, 0x00ff) - AM_RANGE(0x1200, 0x1201) AM_WRITE8(drive_sel_w, 0x00ff) -ADDRESS_MAP_END +void lb186_state::lb186_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); // fixed 256k for now + map(0xfc000, 0xfffff).rom().region("bios", 0); +} + +void lb186_state::lb186_io(address_map &map) +{ + map.unmap_value_high(); + map(0x1000, 0x101f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); + map(0x1080, 0x108f).rw(m_scsi, FUNC(ncr5380n_device::read), FUNC(ncr5380n_device::write)).umask16(0x00ff); + map(0x1100, 0x1107).rw(m_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff); + map(0x1180, 0x1180).rw(this, FUNC(lb186_state::scsi_dack_r), FUNC(lb186_state::scsi_dack_w)); + map(0x1200, 0x1200).w(this, FUNC(lb186_state::drive_sel_w)); +} static SLOT_INTERFACE_START( lb186_floppies ) SLOT_INTERFACE("525dd", FLOPPY_525_DD) diff --git a/src/mame/drivers/lbeach.cpp b/src/mame/drivers/lbeach.cpp index 57a749a21a3..2e047fd2a0c 100644 --- a/src/mame/drivers/lbeach.cpp +++ b/src/mame/drivers/lbeach.cpp @@ -216,25 +216,26 @@ READ8_MEMBER(lbeach_state::lbeach_in2_r) return (ioport("IN2")->read() & 0x3f) | d6 | d7; } -ADDRESS_MAP_START(lbeach_state::lbeach_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0x41ff) AM_RAM_WRITE(lbeach_bg_vram_w) AM_SHARE("bg_vram") - AM_RANGE(0x4000, 0x4000) AM_READ(lbeach_in1_r) - AM_RANGE(0x4200, 0x43ff) AM_RAM - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(lbeach_fg_vram_w) AM_SHARE("fg_vram") - AM_RANGE(0x8000, 0x8000) AM_READ(lbeach_in2_r) - AM_RANGE(0x8000, 0x8000) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x8001, 0x8001) AM_WRITEONLY AM_SHARE("sprite_x") - AM_RANGE(0x8002, 0x8002) AM_WRITEONLY AM_SHARE("sprite_code") +void lbeach_state::lbeach_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().share("nvram"); + map(0x4000, 0x41ff).ram().w(this, FUNC(lbeach_state::lbeach_bg_vram_w)).share("bg_vram"); + map(0x4000, 0x4000).r(this, FUNC(lbeach_state::lbeach_in1_r)); + map(0x4200, 0x43ff).ram(); + map(0x4400, 0x47ff).ram().w(this, FUNC(lbeach_state::lbeach_fg_vram_w)).share("fg_vram"); + map(0x8000, 0x8000).r(this, FUNC(lbeach_state::lbeach_in2_r)); + map(0x8000, 0x8000).writeonly().share("scroll_y"); + map(0x8001, 0x8001).writeonly().share("sprite_x"); + map(0x8002, 0x8002).writeonly().share("sprite_code"); // AM_RANGE(0x8003, 0x8003) AM_WRITENOP // ? // AM_RANGE(0x8004, 0x8004) AM_WRITENOP // ? // AM_RANGE(0x8005, 0x8005) AM_WRITENOP // ? - AM_RANGE(0x8007, 0x8007) AM_WRITENOP // probably watchdog - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") + map(0x8007, 0x8007).nopw(); // probably watchdog + map(0xa000, 0xa000).portr("IN0"); // AM_RANGE(0xa003, 0xa003) AM_READNOP // ? tests d7 at game over - AM_RANGE(0xc000, 0xcfff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xc000, 0xcfff).rom(); + map(0xf000, 0xffff).rom(); +} diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp index 83c612162b9..43d213c44b0 100644 --- a/src/mame/drivers/lc80.cpp +++ b/src/mame/drivers/lc80.cpp @@ -48,14 +48,15 @@ /* Memory Maps */ -ADDRESS_MAP_START(lc80_state::lc80_mem) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_ROMBANK("bank1") - AM_RANGE(0x0800, 0x0fff) AM_ROMBANK("bank2") - AM_RANGE(0x1000, 0x17ff) AM_ROMBANK("bank3") - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x2400, 0x2fff) AM_RAMBANK("bank4") -ADDRESS_MAP_END +void lc80_state::lc80_mem(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).bankr("bank1"); + map(0x0800, 0x0fff).bankr("bank2"); + map(0x1000, 0x17ff).bankr("bank3"); + map(0x2000, 0x23ff).ram(); + map(0x2400, 0x2fff).bankrw("bank4"); +} #if 0 ADDRESS_MAP_START(lc80_state::sc80_mem) @@ -64,12 +65,13 @@ ADDRESS_MAP_START(lc80_state::sc80_mem) ADDRESS_MAP_END #endif -ADDRESS_MAP_START(lc80_state::lc80_io) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) -ADDRESS_MAP_END +void lc80_state::lc80_io(address_map &map) +{ + map.global_mask(0x1f); + map(0x14, 0x17).rw(Z80PIO1_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x18, 0x1b).rw(m_pio2, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x0c, 0x0f).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/lcmate2.cpp b/src/mame/drivers/lcmate2.cpp index 53df0486b8c..53ea557d5b9 100644 --- a/src/mame/drivers/lcmate2.cpp +++ b/src/mame/drivers/lcmate2.cpp @@ -95,26 +95,28 @@ WRITE8_MEMBER( lcmate2_state::bankswitch_w ) membank("rombank")->set_entry(data&0x0f); } -ADDRESS_MAP_START(lcmate2_state::lcmate2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0x7fff ) AM_ROMBANK("rombank") - AM_RANGE( 0x8000, 0x9fff ) AM_RAM AM_MIRROR(0x6000) AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(lcmate2_state::lcmate2_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("rtc", rp5c15_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_WRITE(speaker_w) - AM_RANGE(0x1fff, 0x1fff) AM_WRITE(bankswitch_w) - - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("hd44780", hd44780_device, control_write) - AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("hd44780", hd44780_device, data_write) - AM_RANGE(0x3002, 0x3002) AM_DEVREAD("hd44780", hd44780_device, control_read) - AM_RANGE(0x3003, 0x3003) AM_DEVREAD("hd44780", hd44780_device, data_read) - - AM_RANGE(0x5000, 0x50ff) AM_READ(key_r) -ADDRESS_MAP_END +void lcmate2_state::lcmate2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0x9fff).ram().mirror(0x6000).share("nvram"); +} + +void lcmate2_state::lcmate2_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x000f).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)); + map(0x1000, 0x1000).w(this, FUNC(lcmate2_state::speaker_w)); + map(0x1fff, 0x1fff).w(this, FUNC(lcmate2_state::bankswitch_w)); + + map(0x3000, 0x3000).w(m_lcdc, FUNC(hd44780_device::control_write)); + map(0x3001, 0x3001).w(m_lcdc, FUNC(hd44780_device::data_write)); + map(0x3002, 0x3002).r(m_lcdc, FUNC(hd44780_device::control_read)); + map(0x3003, 0x3003).r(m_lcdc, FUNC(hd44780_device::data_read)); + + map(0x5000, 0x50ff).r(this, FUNC(lcmate2_state::key_r)); +} /* Input ports */ static INPUT_PORTS_START( lcmate2 ) diff --git a/src/mame/drivers/leapster.cpp b/src/mame/drivers/leapster.cpp index 3024ab0a205..1f143791dd8 100644 --- a/src/mame/drivers/leapster.cpp +++ b/src/mame/drivers/leapster.cpp @@ -292,17 +292,19 @@ void leapster_state::machine_reset() { } -ADDRESS_MAP_START(leapster_state::leapster_map) - AM_RANGE(0x00000000, 0x007fffff) AM_ROM AM_MIRROR(0x40000000) // pointers in the bios region seem to be to the 40xxxxxx region, either we mirror there or something (real bios?) is acutally missing - AM_RANGE(0x0180D800, 0x0180D803) AM_READ(leapster_random_r) - AM_RANGE(0x03000000, 0x030007ff) AM_RAM // puts stack here, writes a pointer @ 0x03000000 on startup - AM_RANGE(0x3c000000, 0x3c1fffff) AM_RAM // really ram, or has our code execution gone wrong? +void leapster_state::leapster_map(address_map &map) +{ + map(0x00000000, 0x007fffff).rom().mirror(0x40000000); // pointers in the bios region seem to be to the 40xxxxxx region, either we mirror there or something (real bios?) is acutally missing + map(0x0180D800, 0x0180D803).r(this, FUNC(leapster_state::leapster_random_r)); + map(0x03000000, 0x030007ff).ram(); // puts stack here, writes a pointer @ 0x03000000 on startup + map(0x3c000000, 0x3c1fffff).ram(); // really ram, or has our code execution gone wrong? // AM_RANGE(0x80000000, 0x807fffff) AM_ROMBANK("cartrom") // game ROM pointers are all to the 80xxxxxx region, so I assume it maps here - installed if a cart is present -ADDRESS_MAP_END +} -ADDRESS_MAP_START(leapster_state::leapster_aux) - AM_RANGE(0x00000004b, 0x00000004b) AM_WRITE(leapster_aux004b_w) // this address isn't used by ARC internal stuff afaik, so probably leapster specific -ADDRESS_MAP_END +void leapster_state::leapster_aux(address_map &map) +{ + map(0x00000004b, 0x00000004b).w(this, FUNC(leapster_state::leapster_aux004b_w)); // this address isn't used by ARC internal stuff afaik, so probably leapster specific +} MACHINE_CONFIG_START(leapster_state::leapster) /* basic machine hardware */ diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp index 7e371e86539..d4cbda84a9a 100644 --- a/src/mame/drivers/legionna.cpp +++ b/src/mame/drivers/legionna.cpp @@ -104,257 +104,311 @@ READ8_MEMBER(legionna_state::denjinmk_sound_comms_r) return m_seibu_sound->main_r(space, (offset >> 1) & 7); } -ADDRESS_MAP_START(legionna_state::legionna_cop_mem) - AM_RANGE(0x100400, 0x100401) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_param_lo_w) // grainbow - AM_RANGE(0x100402, 0x100403) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_param_hi_w) // grainbow - AM_RANGE(0x10040c, 0x10040d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_size_w) // grainbow - AM_RANGE(0x100410, 0x100411) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_inc_w) // grainbow - AM_RANGE(0x100412, 0x100413) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_src_hi_w) // grainbow - AM_RANGE(0x100414, 0x100415) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sprite_dma_src_lo_w) // grainbow - - AM_RANGE(0x10041c, 0x10041d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_target_w) // angle target (for 0x6200 COP macro) - AM_RANGE(0x10041e, 0x10041f) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_step_w) // angle step (for 0x6200 COP macro) - - AM_RANGE(0x100420, 0x100421) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_low_w) - AM_RANGE(0x100422, 0x100423) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_high_w) - AM_RANGE(0x100424, 0x100425) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_mode_w) - AM_RANGE(0x100428, 0x100429) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v1_w) - AM_RANGE(0x10042a, 0x10042b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v2_w) - AM_RANGE(0x10042c, 0x10042d) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_prng_maxvalue_r, cop_prng_maxvalue_w) - - AM_RANGE(0x100432, 0x100433) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_data_w) - AM_RANGE(0x100434, 0x100435) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_addr_w) - AM_RANGE(0x100436, 0x100437) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_hitbox_baseadr_w) - AM_RANGE(0x100438, 0x100439) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_value_w) - AM_RANGE(0x10043a, 0x10043b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_mask_w) - AM_RANGE(0x10043c, 0x10043d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_trigger_w) - //AM_RANGE(0x10043e, 0x10043f) AM_DEVWRITE("raiden2cop", raiden2cop_device,) /* 0 in all 68k based games, 0xffff in raiden2 / raidendx, 0x2000 in zeroteam / xsedae , it's always set up just before the 0x474 register */ - - AM_RANGE(0x100440, 0x100441) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_unk_param_a_w) - AM_RANGE(0x100442, 0x100443) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_unk_param_b_w) - AM_RANGE(0x100444, 0x100445) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_scale_w) - AM_RANGE(0x100446, 0x100447) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_rom_addr_hi_w) // cupsoc - AM_RANGE(0x100448, 0x100449) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_rom_addr_lo_w) // cupsoc - AM_RANGE(0x10044a, 0x10044b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_precmd_w) // cupsoc - - AM_RANGE(0x100450, 0x100451) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_hi_w) - AM_RANGE(0x100452, 0x100453) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_lo_w) - AM_RANGE(0x100454, 0x100455) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_hi_w) - AM_RANGE(0x100456, 0x100457) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_lo_w) - AM_RANGE(0x100458, 0x100459) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_param_w) - AM_RANGE(0x10045a, 0x10045b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_val_w) //palette DMA brightness val, used by X Se Dae / Zero Team - AM_RANGE(0x10045c, 0x10045d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_mode_w) //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5) - -// AM_RANGE(0x100470, 0x100471) AM_READWRITE(cop_tile_bank_2_r,cop_tile_bank_2_w) -// AM_RANGE(0x100474, 0x100475) AM_DEVWRITE("raiden2cop", raiden2cop_device,) // this gets set to a pointer to spriteram (relative to start of ram) on all games excecpt raiden 2, where it isn't set - AM_RANGE(0x100476, 0x100477) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_adr_rel_w) - AM_RANGE(0x100478, 0x100479) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_src_w) - AM_RANGE(0x10047a, 0x10047b) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_size_w) - AM_RANGE(0x10047c, 0x10047d) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_dst_w) - AM_RANGE(0x10047e, 0x10047f) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_dma_mode_r, cop_dma_mode_w) - - AM_RANGE(0x10048c, 0x10048d) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_sprite_dma_abs_y_w) // 68k - AM_RANGE(0x10048e, 0x10048f) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_sprite_dma_abs_x_w) // 68k - - AM_RANGE(0x1004a0, 0x1004ad) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_high_r, cop_reg_high_w) - AM_RANGE(0x1004c0, 0x1004cd) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_low_r, cop_reg_low_w) - -// AM_RANGE(0x100500, 0x100505) AM_WRITE(cop_cmd_w) // ADD ME - AM_RANGE(0x100500, 0x100505) AM_DEVWRITE("raiden2cop", raiden2cop_device,LEGACY_cop_cmd_w) // REMOVE ME - - AM_RANGE(0x100580, 0x100581) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_r) - AM_RANGE(0x100582, 0x100587) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_val_r) - - - AM_RANGE(0x100588, 0x100589) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_stat_r) - AM_RANGE(0x100590, 0x100599) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_itoa_digits_r) - - AM_RANGE(0x1005a0, 0x1005a7) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_prng_r) - - AM_RANGE(0x1005b0, 0x1005b1) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_status_r) - AM_RANGE(0x1005b2, 0x1005b3) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_dist_r) - AM_RANGE(0x1005b4, 0x1005b5) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_angle_r) - - AM_RANGE(0x1006fc, 0x1006fd) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_trigger_w) - AM_RANGE(0x1006fe, 0x1006ff) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_sort_dma_trig_w) // sort-DMA trigger -ADDRESS_MAP_END - - -ADDRESS_MAP_START(legionna_state::legionna_map) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - AM_RANGE(0x100470, 0x100471) AM_WRITENOP // toggles 0x2000 / 0x0000, tile bank on some games - AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack? - ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1") - AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x104000, 0x104fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* palette xRRRRxGGGGxBBBBx ? */ - AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x106000, 0x107fff) AM_RAM - AM_RANGE(0x108000, 0x11ffff) AM_RAM /* main ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(legionna_state::heatbrl_map) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - AM_RANGE(0x100470, 0x100471) AM_WRITE(heatbrl_setgfxbank) - AM_RANGE(0x100600, 0x100601) AM_WRITENOP // irq ack? - AM_RANGE(0x100640, 0x10068f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1") - AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM") - ;map(0x1007c0, 0x1007df).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x103000, 0x103fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x104000, 0x104fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x108000, 0x11ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(legionna_state::godzilla_map) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - AM_RANGE(0x100470, 0x100471) AM_WRITE(denjinmk_setgfxbank) - AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack? - ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1") - AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100800, 0x100fff) AM_RAM - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102800, 0x1037ff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x103800, 0x103fff) AM_RAM // check? - AM_RANGE(0x104000, 0x104fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x106000, 0x1067ff) AM_RAM - AM_RANGE(0x106800, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x107fff) AM_RAM /*Ani-DSP ram*/ - AM_RANGE(0x108000, 0x11ffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(legionna_state::denjinmk_map) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - AM_RANGE(0x100470, 0x100471) AM_WRITE(denjinmk_setgfxbank) - AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack? - ;map(0x100700, 0x10071f).r(this, FUNC(legionna_state::denjinmk_sound_comms_r)).lw8("seibu_sound_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1") - AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x10075c, 0x10075d) AM_READ_PORT("DSW2") - AM_RANGE(0x100800, 0x100fff) AM_RAM - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x102000, 0x1027ff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102800, 0x103fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x104000, 0x104fff) AM_RAM - AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x106000, 0x107fff) AM_RAM - AM_RANGE(0x108000, 0x11dfff) AM_RAM - AM_RANGE(0x11e000, 0x11efff) AM_RAM - AM_RANGE(0x11f000, 0x11ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(legionna_state::grainbow_map) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - AM_RANGE(0x100480, 0x100487) AM_WRITE(grainbow_layer_config_w) // probably a COP feature - AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack? - ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1") - AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x10075c, 0x10075d) AM_READ_PORT("DSW2") - AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x103000, 0x103fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x104000, 0x104fff) AM_RAM//_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") - AM_RANGE(0x105000, 0x105fff) AM_RAM - AM_RANGE(0x106000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x107fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x108000, 0x11ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(legionna_state::cupsoc_mem) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - AM_RANGE(0x100600, 0x10064f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack? - ;map(0x100700, 0x10071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100740, 0x100741) AM_READ_PORT("DSW1") - AM_RANGE(0x100744, 0x100745) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100748, 0x100749) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10074c, 0x10074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x10075c, 0x10075d) AM_READ_PORT("DSW2") - AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x103000, 0x103fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x104000, 0x104fff) AM_RAM - AM_RANGE(0x105000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/ - AM_RANGE(0x108000, 0x10ffff) AM_RAM - AM_RANGE(0x110000, 0x119fff) AM_RAM - AM_RANGE(0x11a000, 0x11dfff) AM_RAM - AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/ -ADDRESS_MAP_END - -ADDRESS_MAP_START(legionna_state::cupsocs_mem) - AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM - ;map(0x100600, 0x10067f).lrw16("crtc_rw", [this](address_space &space, offs_t offset, u16 mem_mask){ return m_crtc->read(space, offset ^ 0x20, mem_mask); }, [this](address_space &space, offs_t offset, u16 data, u16 mem_mask){ m_crtc->write(space, offset ^ 0x20, data, mem_mask); }); - AM_RANGE(0x100680, 0x100681) AM_WRITENOP // irq ack? - AM_RANGE(0x100700, 0x100701) AM_READ_PORT("DSW1") - AM_RANGE(0x100704, 0x100705) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100708, 0x100709) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10070c, 0x10070d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x10071c, 0x10071d) AM_READ_PORT("DSW2") - ;map(0x100740, 0x10075f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x100800, 0x100fff) AM_RAM // _WRITE(legionna_background_w) AM_SHARE("back_data") - AM_RANGE(0x101000, 0x1017ff) AM_RAM // _WRITE(legionna_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM // _WRITE(legionna_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x102000, 0x102fff) AM_RAM // _WRITE(legionna_text_w) AM_SHARE("textram") - AM_RANGE(0x103000, 0x103fff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x104000, 0x104fff) AM_RAM - AM_RANGE(0x105000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/ - AM_RANGE(0x108000, 0x10ffff) AM_RAM - AM_RANGE(0x110000, 0x119fff) AM_RAM - AM_RANGE(0x11a000, 0x11dfff) AM_RAM - AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/ -ADDRESS_MAP_END +void legionna_state::legionna_cop_mem(address_map &map) +{ + map(0x100400, 0x100401).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_param_lo_w)); // grainbow + map(0x100402, 0x100403).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_param_hi_w)); // grainbow + map(0x10040c, 0x10040d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_size_w)); // grainbow + map(0x100410, 0x100411).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_inc_w)); // grainbow + map(0x100412, 0x100413).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_src_hi_w)); // grainbow + map(0x100414, 0x100415).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_src_lo_w)); // grainbow + + map(0x10041c, 0x10041d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_target_w)); // angle target (for 0x6200 COP macro) + map(0x10041e, 0x10041f).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_step_w)); // angle step (for 0x6200 COP macro) + + map(0x100420, 0x100421).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_low_w)); + map(0x100422, 0x100423).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_high_w)); + map(0x100424, 0x100425).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_mode_w)); + map(0x100428, 0x100429).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v1_w)); + map(0x10042a, 0x10042b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v2_w)); + map(0x10042c, 0x10042d).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_maxvalue_r), FUNC(raiden2cop_device::cop_prng_maxvalue_w)); + + map(0x100432, 0x100433).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_data_w)); + map(0x100434, 0x100435).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_addr_w)); + map(0x100436, 0x100437).w(m_raiden2cop, FUNC(raiden2cop_device::cop_hitbox_baseadr_w)); + map(0x100438, 0x100439).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_value_w)); + map(0x10043a, 0x10043b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_mask_w)); + map(0x10043c, 0x10043d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_trigger_w)); + //map(0x10043e, 0x10043f).rw(m_raiden2cop, ...); /* 0 in all 68k based games, 0xffff in raiden2 / raidendx, 0x2000 in zeroteam / xsedae , it's always set up just before the 0x474 register */ + + map(0x100440, 0x100441).w(m_raiden2cop, FUNC(raiden2cop_device::cop_unk_param_a_w)); + map(0x100442, 0x100443).w(m_raiden2cop, FUNC(raiden2cop_device::cop_unk_param_b_w)); + map(0x100444, 0x100445).w(m_raiden2cop, FUNC(raiden2cop_device::cop_scale_w)); + map(0x100446, 0x100447).w(m_raiden2cop, FUNC(raiden2cop_device::cop_rom_addr_hi_w)); // cupsoc + map(0x100448, 0x100449).w(m_raiden2cop, FUNC(raiden2cop_device::cop_rom_addr_lo_w)); // cupsoc + map(0x10044a, 0x10044b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_precmd_w)); // cupsoc + + map(0x100450, 0x100451).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_hi_w)); + map(0x100452, 0x100453).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_lo_w)); + map(0x100454, 0x100455).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_hi_w)); + map(0x100456, 0x100457).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_lo_w)); + map(0x100458, 0x100459).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_param_w)); + map(0x10045a, 0x10045b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_val_w)); //palette DMA brightness val, used by X Se Dae / Zero Team + map(0x10045c, 0x10045d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_mode_w)); //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5) + +// map(0x100470, 0x100471).rw(this, FUNC(legionna_state::cop_tile_bank_2_r), FUNC(legionna_state::cop_tile_bank_2_w)); +// map(0x100474, 0x100475).w(m_raiden2cop, FUNC(raiden2cop_device::...)); // this gets set to a pointer to spriteram (relative to start of ram) on all games excecpt raiden 2, where it isn't set + map(0x100476, 0x100477).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_adr_rel_w)); + map(0x100478, 0x100479).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_src_w)); + map(0x10047a, 0x10047b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_size_w)); + map(0x10047c, 0x10047d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_dst_w)); + map(0x10047e, 0x10047f).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_mode_r), FUNC(raiden2cop_device::cop_dma_mode_w)); + + map(0x10048c, 0x10048d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_abs_y_w)); // 68k + map(0x10048e, 0x10048f).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sprite_dma_abs_x_w)); // 68k + + map(0x1004a0, 0x1004ad).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_high_r), FUNC(raiden2cop_device::cop_reg_high_w)); + map(0x1004c0, 0x1004cd).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_low_r), FUNC(raiden2cop_device::cop_reg_low_w)); + +// map(0x100500, 0x100505).w(this, FUNC(legionna_state::cop_cmd_w)); // ADD ME + map(0x100500, 0x100505).w(m_raiden2cop, FUNC(raiden2cop_device::LEGACY_cop_cmd_w)); // REMOVE ME + + map(0x100580, 0x100581).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_r)); + map(0x100582, 0x100587).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_val_r)); + + + map(0x100588, 0x100589).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_stat_r)); + map(0x100590, 0x100599).r(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_digits_r)); + + map(0x1005a0, 0x1005a7).r(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_r)); + + map(0x1005b0, 0x1005b1).r(m_raiden2cop, FUNC(raiden2cop_device::cop_status_r)); + map(0x1005b2, 0x1005b3).r(m_raiden2cop, FUNC(raiden2cop_device::cop_dist_r)); + map(0x1005b4, 0x1005b5).r(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_r)); + + map(0x1006fc, 0x1006fd).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_trigger_w)); + map(0x1006fe, 0x1006ff).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_dma_trig_w)); // sort-DMA trigger +} + + +void legionna_state::legionna_map(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100470, 0x100471).nopw(); // toggles 0x2000 / 0x0000, tile bank on some games + map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x100680, 0x100681).nopw(); // irq ack? + map(0x100700, 0x10071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100740, 0x100741).portr("DSW1"); + map(0x100744, 0x100745).portr("PLAYERS12"); + map(0x100748, 0x100749).portr("PLAYERS34"); + map(0x10074c, 0x10074d).portr("SYSTEM"); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x102000, 0x1027ff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102800, 0x103fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x104000, 0x104fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); /* palette xRRRRxGGGGxBBBBx ? */ + map(0x105000, 0x105fff).ram().share("spriteram"); + map(0x106000, 0x107fff).ram(); + map(0x108000, 0x11ffff).ram(); /* main ram */ +} + + +void legionna_state::heatbrl_map(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100470, 0x100471).w(this, FUNC(legionna_state::heatbrl_setgfxbank)); + map(0x100600, 0x100601).nopw(); // irq ack? + map(0x100640, 0x10068f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x100740, 0x100741).portr("DSW1"); + map(0x100744, 0x100745).portr("PLAYERS12"); + map(0x100748, 0x100749).portr("PLAYERS34"); + map(0x10074c, 0x10074d).portr("SYSTEM"); + map(0x1007c0, 0x1007df).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x103000, 0x103fff).ram().share("spriteram"); + map(0x104000, 0x104fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); + map(0x108000, 0x11ffff).ram(); +} + +void legionna_state::godzilla_map(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100470, 0x100471).w(this, FUNC(legionna_state::denjinmk_setgfxbank)); + map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x100680, 0x100681).nopw(); // irq ack? + map(0x100700, 0x10071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100740, 0x100741).portr("DSW1"); + map(0x100744, 0x100745).portr("PLAYERS12"); + map(0x100748, 0x100749).portr("PLAYERS34"); + map(0x10074c, 0x10074d).portr("SYSTEM"); + map(0x100800, 0x100fff).ram(); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x102000, 0x1027ff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102800, 0x103fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x103800, 0x103fff).ram(); // check? + map(0x104000, 0x104fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); + map(0x105000, 0x105fff).ram().share("spriteram"); + map(0x106000, 0x1067ff).ram(); + map(0x106800, 0x106fff).ram(); + map(0x107000, 0x107fff).ram(); /*Ani-DSP ram*/ + map(0x108000, 0x11ffff).ram(); +} + + +void legionna_state::denjinmk_map(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100470, 0x100471).w(this, FUNC(legionna_state::denjinmk_setgfxbank)); + map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x100680, 0x100681).nopw(); // irq ack? + map(0x100700, 0x10071f).r(this, FUNC(legionna_state::denjinmk_sound_comms_r)) + .lw8("seibu_sound_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100740, 0x100741).portr("DSW1"); + map(0x100744, 0x100745).portr("PLAYERS12"); + map(0x100748, 0x100749).portr("PLAYERS34"); + map(0x10074c, 0x10074d).portr("SYSTEM"); + map(0x10075c, 0x10075d).portr("DSW2"); + map(0x100800, 0x100fff).ram(); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x102000, 0x1027ff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102800, 0x103fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x104000, 0x104fff).ram(); + map(0x105000, 0x105fff).ram().share("spriteram"); + map(0x106000, 0x107fff).ram(); + map(0x108000, 0x11dfff).ram(); + map(0x11e000, 0x11efff).ram(); + map(0x11f000, 0x11ffff).ram(); +} + +void legionna_state::grainbow_map(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100480, 0x100487).w(this, FUNC(legionna_state::grainbow_layer_config_w)); // probably a COP feature + map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x100680, 0x100681).nopw(); // irq ack? + map(0x100700, 0x10071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100740, 0x100741).portr("DSW1"); + map(0x100744, 0x100745).portr("PLAYERS12"); + map(0x100748, 0x100749).portr("PLAYERS34"); + map(0x10074c, 0x10074d).portr("SYSTEM"); + map(0x10075c, 0x10075d).portr("DSW2"); + map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x103000, 0x103fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); + map(0x104000, 0x104fff).ram(); // .w(this, FUNC(legionna_state::paletteram_xBBBBBGGGGGRRRRR_word_w)).share("paletteram"); + map(0x105000, 0x105fff).ram(); + map(0x106000, 0x106fff).ram(); + map(0x107000, 0x107fff).ram().share("spriteram"); + map(0x108000, 0x11ffff).ram(); +} + +void legionna_state::cupsoc_mem(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x100680, 0x100681).nopw(); // irq ack? + map(0x100700, 0x10071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100740, 0x100741).portr("DSW1"); + map(0x100744, 0x100745).portr("PLAYERS12"); + map(0x100748, 0x100749).portr("PLAYERS34"); + map(0x10074c, 0x10074d).portr("SYSTEM"); + map(0x10075c, 0x10075d).portr("DSW2"); + map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x103000, 0x103fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); + map(0x104000, 0x104fff).ram(); + map(0x105000, 0x106fff).ram(); + map(0x107000, 0x1077ff).ram().share("spriteram"); + map(0x107800, 0x107fff).ram(); /*Ani Dsp(?) Ram*/ + map(0x108000, 0x10ffff).ram(); + map(0x110000, 0x119fff).ram(); + map(0x11a000, 0x11dfff).ram(); + map(0x11e000, 0x11ffff).ram(); /*Stack Ram*/ +} + +void legionna_state::cupsocs_mem(address_map &map) +{ + legionna_cop_mem(map); + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1003ff).ram(); + map(0x100600, 0x10067f).lrw16("crtc_rw", + [this](address_space &space, offs_t offset, u16 mem_mask) { + return m_crtc->read(space, offset ^ 0x20, mem_mask); + }, + [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { + m_crtc->write(space, offset ^ 0x20, data, mem_mask); + }); + map(0x100680, 0x100681).nopw(); // irq ack? + map(0x100700, 0x100701).portr("DSW1"); + map(0x100704, 0x100705).portr("PLAYERS12"); + map(0x100708, 0x100709).portr("PLAYERS34"); + map(0x10070c, 0x10070d).portr("SYSTEM"); + map(0x10071c, 0x10071d).portr("DSW2"); + map(0x100740, 0x10075f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + map(0x100800, 0x100fff).ram(); // .w(this, FUNC(legionna_state::legionna_background_w)).share("back_data"); + map(0x101000, 0x1017ff).ram(); // .w(this, FUNC(legionna_state::legionna_foreground_w).share("fore_data"); + map(0x101800, 0x101fff).ram(); // .w(this, FUNC(legionna_state::legionna_midground_w).share("mid_data"); + map(0x102000, 0x102fff).ram(); // .w(this, FUNC(legionna_state::legionna_text_w).share("textram"); + map(0x103000, 0x103fff).ram(); // .w("palette", FUNC(palette_device::write)).share("palette"); + map(0x104000, 0x104fff).ram(); + map(0x105000, 0x106fff).ram(); + map(0x107000, 0x1077ff).ram().share("spriteram"); + map(0x107800, 0x107fff).ram(); /*Ani Dsp(?) Ram*/ + map(0x108000, 0x10ffff).ram(); + map(0x110000, 0x119fff).ram(); + map(0x11a000, 0x11dfff).ram(); + map(0x11e000, 0x11ffff).ram(); /*Stack Ram*/ +} /*****************************************************************************/ diff --git a/src/mame/drivers/leland.cpp b/src/mame/drivers/leland.cpp index 66b1bcfd95b..5c961ae880e 100644 --- a/src/mame/drivers/leland.cpp +++ b/src/mame/drivers/leland.cpp @@ -82,49 +82,54 @@ * *************************************/ -ADDRESS_MAP_START(leland_state::master_map_program) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(leland_battery_ram_w) AM_SHARE("battery") - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(leland_gated_paletteram_r, leland_gated_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_master_video_addr_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(leland_state::master_map_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_WRITE(leland_master_alt_bankswitch_w) - AM_RANGE(0xfd, 0xff) AM_READWRITE(leland_master_analog_key_r, leland_master_analog_key_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(leland_state::master_redline_map_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_WRITE(leland_master_alt_bankswitch_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("custom", leland_80186_sound_device, leland_80186_response_r, leland_80186_command_lo_w) - AM_RANGE(0xf4, 0xf4) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_hi_w) - AM_RANGE(0xfd, 0xff) AM_READWRITE(leland_master_analog_key_r, leland_master_analog_key_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(leland_state::master_map_program_2) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(ataxx_battery_ram_w) AM_SHARE("battery") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0xf800, 0xffff) AM_READWRITE(ataxx_paletteram_and_misc_r, ataxx_paletteram_and_misc_w) AM_SHARE("palette") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(leland_state::master_map_io_2) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x04) AM_DEVREAD("custom", leland_80186_sound_device, leland_80186_response_r) - AM_RANGE(0x05, 0x05) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_hi_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_lo_w) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("custom", leland_80186_sound_device, ataxx_80186_control_w) - AM_RANGE(0x20, 0x20) AM_READWRITE(ataxx_eeprom_r, ataxx_eeprom_w) - AM_RANGE(0xd0, 0xef) AM_READWRITE(ataxx_mvram_port_r, ataxx_mvram_port_w) - AM_RANGE(0xf0, 0xff) AM_READWRITE(ataxx_master_input_r, ataxx_master_output_w) -ADDRESS_MAP_END +void leland_state::master_map_program(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x9fff).bankr("bank1"); + map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::leland_battery_ram_w)).share("battery"); + map(0xe000, 0xefff).ram().share("mainram"); + map(0xf000, 0xf3ff).rw(this, FUNC(leland_state::leland_gated_paletteram_r), FUNC(leland_state::leland_gated_paletteram_w)).share("palette"); + map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_master_video_addr_w)); +} + +void leland_state::master_map_io(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).w(this, FUNC(leland_state::leland_master_alt_bankswitch_w)); + map(0xfd, 0xff).rw(this, FUNC(leland_state::leland_master_analog_key_r), FUNC(leland_state::leland_master_analog_key_w)); +} + +void leland_state::master_redline_map_io(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).w(this, FUNC(leland_state::leland_master_alt_bankswitch_w)); + map(0xf2, 0xf2).rw(m_sound, FUNC(leland_80186_sound_device::leland_80186_response_r), FUNC(leland_80186_sound_device::leland_80186_command_lo_w)); + map(0xf4, 0xf4).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_hi_w)); + map(0xfd, 0xff).rw(this, FUNC(leland_state::leland_master_analog_key_r), FUNC(leland_state::leland_master_analog_key_w)); +} + + +void leland_state::master_map_program_2(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x9fff).bankr("bank1"); + map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::ataxx_battery_ram_w)).share("battery"); + map(0xe000, 0xf7ff).ram().share("mainram"); + map(0xf800, 0xffff).rw(this, FUNC(leland_state::ataxx_paletteram_and_misc_r), FUNC(leland_state::ataxx_paletteram_and_misc_w)).share("palette"); +} + + +void leland_state::master_map_io_2(address_map &map) +{ + map.global_mask(0xff); + map(0x04, 0x04).r(m_sound, FUNC(leland_80186_sound_device::leland_80186_response_r)); + map(0x05, 0x05).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_hi_w)); + map(0x06, 0x06).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_lo_w)); + map(0x0c, 0x0c).w(m_sound, FUNC(leland_80186_sound_device::ataxx_80186_control_w)); + map(0x20, 0x20).rw(this, FUNC(leland_state::ataxx_eeprom_r), FUNC(leland_state::ataxx_eeprom_w)); + map(0xd0, 0xef).rw(this, FUNC(leland_state::ataxx_mvram_port_r), FUNC(leland_state::ataxx_mvram_port_w)); + map(0xf0, 0xff).rw(this, FUNC(leland_state::ataxx_master_input_r), FUNC(leland_state::ataxx_master_output_w)); +} @@ -134,48 +139,53 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(leland_state::slave_small_map_program) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0xdfff) AM_ROMBANK("bank3") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_slave_video_addr_w) - AM_RANGE(0xf802, 0xf802) AM_READ(leland_raster_r) - AM_RANGE(0xf803, 0xf803) AM_WRITE(leland_slave_small_banksw_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(leland_state::slave_large_map_program) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank3") - AM_RANGE(0xc000, 0xc000) AM_WRITE(leland_slave_large_banksw_w) - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_slave_video_addr_w) - AM_RANGE(0xf802, 0xf802) AM_READ(leland_raster_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(leland_state::slave_map_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1f) AM_READWRITE(leland_svram_port_r, leland_svram_port_w) - AM_RANGE(0x40, 0x5f) AM_READWRITE(leland_svram_port_r, leland_svram_port_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(leland_state::slave_map_program) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank3") - AM_RANGE(0xa000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xfffc, 0xfffd) AM_WRITE(leland_slave_video_addr_w) - AM_RANGE(0xfffe, 0xfffe) AM_READ(leland_raster_r) - AM_RANGE(0xffff, 0xffff) AM_WRITE(ataxx_slave_banksw_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(leland_state::slave_map_io_2) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x60, 0x7f) AM_READWRITE(ataxx_svram_port_r, ataxx_svram_port_w) -ADDRESS_MAP_END +void leland_state::slave_small_map_program(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0xdfff).bankr("bank3"); + map(0xe000, 0xefff).ram(); + map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w)); + map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r)); + map(0xf803, 0xf803).w(this, FUNC(leland_state::leland_slave_small_banksw_w)); +} + + +void leland_state::slave_large_map_program(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0xbfff).bankr("bank3"); + map(0xc000, 0xc000).w(this, FUNC(leland_state::leland_slave_large_banksw_w)); + map(0xe000, 0xefff).ram(); + map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w)); + map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r)); +} + + +void leland_state::slave_map_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x1f).rw(this, FUNC(leland_state::leland_svram_port_r), FUNC(leland_state::leland_svram_port_w)); + map(0x40, 0x5f).rw(this, FUNC(leland_state::leland_svram_port_r), FUNC(leland_state::leland_svram_port_w)); +} + + +void leland_state::slave_map_program(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x9fff).bankr("bank3"); + map(0xa000, 0xdfff).rom(); + map(0xe000, 0xefff).ram(); + map(0xfffc, 0xfffd).w(this, FUNC(leland_state::leland_slave_video_addr_w)); + map(0xfffe, 0xfffe).r(this, FUNC(leland_state::leland_raster_r)); + map(0xffff, 0xffff).w(this, FUNC(leland_state::ataxx_slave_banksw_w)); +} + + +void leland_state::slave_map_io_2(address_map &map) +{ + map.global_mask(0xff); + map(0x60, 0x7f).rw(this, FUNC(leland_state::ataxx_svram_port_r), FUNC(leland_state::ataxx_svram_port_w)); +} /************************************* * @@ -183,22 +193,26 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(leland_state::leland_80186_map_program) - AM_RANGE(0x00000, 0x03fff) AM_MIRROR(0x1c000) AM_RAM - AM_RANGE(0x20000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void leland_state::leland_80186_map_program(address_map &map) +{ + map(0x00000, 0x03fff).mirror(0x1c000).ram(); + map(0x20000, 0xfffff).rom(); +} -ADDRESS_MAP_START(leland_state::ataxx_80186_map_io) -ADDRESS_MAP_END +void leland_state::ataxx_80186_map_io(address_map &map) +{ +} -ADDRESS_MAP_START(leland_state::redline_80186_map_io) - AM_RANGE(0x0000, 0xffff) AM_DEVWRITE("custom", redline_80186_sound_device, redline_dac_w) -ADDRESS_MAP_END +void leland_state::redline_80186_map_io(address_map &map) +{ + map(0x0000, 0xffff).w("custom", FUNC(redline_80186_sound_device::redline_dac_w)); +} -ADDRESS_MAP_START(leland_state::leland_80186_map_io) - AM_RANGE(0x0000, 0xffff) AM_DEVWRITE("custom", leland_80186_sound_device, dac_w) -ADDRESS_MAP_END +void leland_state::leland_80186_map_io(address_map &map) +{ + map(0x0000, 0xffff).w(m_sound, FUNC(leland_80186_sound_device::dac_w)); +} /************************************************************************ diff --git a/src/mame/drivers/lemmings.cpp b/src/mame/drivers/lemmings.cpp index bb9ca81113c..eea3661a221 100644 --- a/src/mame/drivers/lemmings.cpp +++ b/src/mame/drivers/lemmings.cpp @@ -68,32 +68,34 @@ WRITE16_MEMBER( lemmings_state::lem_protection_region_0_146_w ) /******************************************************************************/ -ADDRESS_MAP_START(lemmings_state::lemmings_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x160000, 0x160fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x170000, 0x17000f) AM_RAM_WRITE(lemmings_control_w) AM_SHARE("control_data") - AM_RANGE(0x190000, 0x19000f) AM_READ(lemmings_trackball_r) - AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(lem_protection_region_0_146_r,lem_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */ - AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* 1 written once a frame */ - AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) /* 1 written once a frame */ - AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(lemmings_vram_w) AM_SHARE("vram_data") - AM_RANGE(0x202000, 0x202fff) AM_RAM - AM_RANGE(0x300000, 0x37ffff) AM_RAM_WRITE(lemmings_pixel_0_w) AM_SHARE("pixel_0_data") - AM_RANGE(0x380000, 0x39ffff) AM_RAM_WRITE(lemmings_pixel_1_w) AM_SHARE("pixel_1_data") -ADDRESS_MAP_END +void lemmings_state::lemmings_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x140000, 0x1407ff).ram().share("spriteram2"); + map(0x160000, 0x160fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x170000, 0x17000f).ram().w(this, FUNC(lemmings_state::lemmings_control_w)).share("control_data"); + map(0x190000, 0x19000f).r(this, FUNC(lemmings_state::lemmings_trackball_r)); + map(0x1a0000, 0x1a3fff).rw(this, FUNC(lemmings_state::lem_protection_region_0_146_r), FUNC(lemmings_state::lem_protection_region_0_146_w)).share("prot16ram"); /* Protection device */ + map(0x1c0000, 0x1c0001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); /* 1 written once a frame */ + map(0x1e0000, 0x1e0001).w(m_spriteram2, FUNC(buffered_spriteram16_device::write)); /* 1 written once a frame */ + map(0x200000, 0x201fff).ram().w(this, FUNC(lemmings_state::lemmings_vram_w)).share("vram_data"); + map(0x202000, 0x202fff).ram(); + map(0x300000, 0x37ffff).ram().w(this, FUNC(lemmings_state::lemmings_pixel_0_w)).share("pixel_0_data"); + map(0x380000, 0x39ffff).ram().w(this, FUNC(lemmings_state::lemmings_pixel_1_w)).share("pixel_1_data"); +} /******************************************************************************/ -ADDRESS_MAP_START(lemmings_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x1800, 0x1800) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) AM_WRITENOP // writes an extra irq ack? - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void lemmings_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1800, 0x1800).r(m_deco146, FUNC(deco_146_base_device::soundlatch_r)).nopw(); // writes an extra irq ack? + map(0x8000, 0xffff).rom(); +} /******************************************************************************/ diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp index d691ffbb061..b1ffd2da2bd 100644 --- a/src/mame/drivers/lethal.cpp +++ b/src/mame/drivers/lethal.cpp @@ -340,52 +340,55 @@ READ8_MEMBER(lethal_state::gunsaux_r) return res; } -ADDRESS_MAP_START(lethal_state::le_main) - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") - AM_RANGE(0x2000, 0x3fff) AM_RAM // work RAM - AM_RANGE(0x4000, 0x7fff) AM_DEVICE("bank4000", address_map_bank_device, amap8) - AM_RANGE(0x4000, 0x43ff) AM_UNMAP // first 0x400 bytes of palette RAM are inaccessible - AM_RANGE(0x4000, 0x403f) AM_DEVWRITE("k056832", k056832_device, write) - AM_RANGE(0x4040, 0x404f) AM_DEVWRITE("k056832", k056832_device, b_w) - AM_RANGE(0x4080, 0x4080) AM_READNOP // watchdog - AM_RANGE(0x4090, 0x4090) AM_READWRITE(sound_irq_r, sound_irq_w) - AM_RANGE(0x40a0, 0x40a0) AM_READNOP - AM_RANGE(0x40c4, 0x40c4) AM_WRITE(control2_w) - AM_RANGE(0x40c8, 0x40d0) AM_WRITE(lethalen_palette_control) // PCU1-PCU3 on the schematics - AM_RANGE(0x40d4, 0x40d7) AM_READ(guns_r) - AM_RANGE(0x40d8, 0x40d8) AM_READ_PORT("DSW") - AM_RANGE(0x40d9, 0x40d9) AM_READ_PORT("INPUTS") - AM_RANGE(0x40db, 0x40db) AM_READ(gunsaux_r) // top X bit of guns - AM_RANGE(0x40dc, 0x40dc) AM_WRITE(le_bankswitch_w) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lethal_state::bank4000_map) +void lethal_state::le_main(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bank1"); + map(0x2000, 0x3fff).ram(); // work RAM + map(0x4000, 0x7fff).m(m_bank4000, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0x43ff).unmaprw(); // first 0x400 bytes of palette RAM are inaccessible + map(0x4000, 0x403f).w(m_k056832, FUNC(k056832_device::write)); + map(0x4040, 0x404f).w(m_k056832, FUNC(k056832_device::b_w)); + map(0x4080, 0x4080).nopr(); // watchdog + map(0x4090, 0x4090).rw(this, FUNC(lethal_state::sound_irq_r), FUNC(lethal_state::sound_irq_w)); + map(0x40a0, 0x40a0).nopr(); + map(0x40c4, 0x40c4).w(this, FUNC(lethal_state::control2_w)); + map(0x40c8, 0x40d0).w(this, FUNC(lethal_state::lethalen_palette_control)); // PCU1-PCU3 on the schematics + map(0x40d4, 0x40d7).r(this, FUNC(lethal_state::guns_r)); + map(0x40d8, 0x40d8).portr("DSW"); + map(0x40d9, 0x40d9).portr("INPUTS"); + map(0x40db, 0x40db).r(this, FUNC(lethal_state::gunsaux_r)); // top X bit of guns + map(0x40dc, 0x40dc).w(this, FUNC(lethal_state::le_bankswitch_w)); + map(0x8000, 0xffff).rom().region("maincpu", 0x38000); +} + +void lethal_state::bank4000_map(address_map &map) +{ // VRD = 0 or 1, CBNK = 0 - AM_RANGE(0x0840, 0x084f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) - AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k054000", k054000_device, read, write) - AM_RANGE(0x08c0, 0x08cf) AM_DEVICE("k054321", k054321_device, main_map) - AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) + map(0x0840, 0x084f).mirror(0x8000).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)); + map(0x0880, 0x089f).mirror(0x8000).rw("k054000", FUNC(k054000_device::read), FUNC(k054000_device::write)); + map(0x08c0, 0x08cf).m(m_k054321, FUNC(k054321_device::main_map)); + map(0x1000, 0x17ff).mirror(0x8000).rw(m_k053244, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w)); // VRD = 0, CBNK = 0 - AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_lo_r, ram_code_lo_w) - AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_hi_r, ram_code_hi_w) - AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_lo_r, ram_attr_lo_w) - AM_RANGE(0x3800, 0x3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_hi_r, ram_attr_hi_w) + map(0x2000, 0x27ff).rw(m_k056832, FUNC(k056832_device::ram_code_lo_r), FUNC(k056832_device::ram_code_lo_w)); + map(0x2800, 0x2fff).rw(m_k056832, FUNC(k056832_device::ram_code_hi_r), FUNC(k056832_device::ram_code_hi_w)); + map(0x3000, 0x37ff).rw(m_k056832, FUNC(k056832_device::ram_attr_lo_r), FUNC(k056832_device::ram_attr_lo_w)); + map(0x3800, 0x3fff).rw(m_k056832, FUNC(k056832_device::ram_attr_hi_r), FUNC(k056832_device::ram_attr_hi_w)); // VRD = 1, CBNK = 0 or 1 - AM_RANGE(0xa000, 0xbfff) AM_MIRROR(0x4000) AM_UNMAP // AM_DEVREAD("k056832", k056832_device, rom_byte_r) + map(0xa000, 0xbfff).mirror(0x4000).unmaprw(); // AM_DEVREAD("k056832", k056832_device, rom_byte_r) // CBNK = 1; partially overlaid when VRD = 1 - AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(lethal_state::le_sound) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xfc00, 0xfc03) AM_DEVICE("k054321", k054321_device, sound_map) -ADDRESS_MAP_END + map(0x4000, 0x7fff).mirror(0x8000).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void lethal_state::le_sound(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xfa2f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xfc00, 0xfc03).m(m_k054321, FUNC(k054321_device::sound_map)); +} static INPUT_PORTS_START( lethalen ) PORT_START("INPUTS") diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp index acbb0897c1c..ca0ee5d7ff1 100644 --- a/src/mame/drivers/lethalj.cpp +++ b/src/mame/drivers/lethalj.cpp @@ -209,22 +209,23 @@ WRITE16_MEMBER(lethalj_state::cclownz_control_w) * *************************************/ -ADDRESS_MAP_START(lethalj_state::lethalj_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM - AM_RANGE(0x04000000, 0x0400000f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x04000010, 0x0400001f) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x04100000, 0x0410000f) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x00ff) +void lethalj_state::lethalj_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram(); + map(0x04000000, 0x0400000f).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x04000010, 0x0400001f).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x04100000, 0x0410000f).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // AM_RANGE(0x04100010, 0x0410001f) AM_READNOP /* read but never examined */ - AM_RANGE(0x04200000, 0x0420001f) AM_WRITENOP /* clocks bits through here */ - AM_RANGE(0x04300000, 0x0430007f) AM_READ(lethalj_gun_r) - AM_RANGE(0x04400000, 0x0440000f) AM_WRITENOP /* clocks bits through here */ - AM_RANGE(0x04500010, 0x0450001f) AM_READ_PORT("IN0") - AM_RANGE(0x04600000, 0x0460000f) AM_READ_PORT("IN1") - AM_RANGE(0x04700000, 0x0470007f) AM_WRITE(lethalj_blitter_w) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code, one of many. */ - AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END + map(0x04200000, 0x0420001f).nopw(); /* clocks bits through here */ + map(0x04300000, 0x0430007f).r(this, FUNC(lethalj_state::lethalj_gun_r)); + map(0x04400000, 0x0440000f).nopw(); /* clocks bits through here */ + map(0x04500010, 0x0450001f).portr("IN0"); + map(0x04600000, 0x0460000f).portr("IN1"); + map(0x04700000, 0x0470007f).w(this, FUNC(lethalj_state::lethalj_blitter_w)); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code, one of many. */ + map(0xff800000, 0xffffffff).rom().region("user1", 0); +} diff --git a/src/mame/drivers/lft.cpp b/src/mame/drivers/lft.cpp index a8592878a18..d76a6f4967e 100644 --- a/src/mame/drivers/lft.cpp +++ b/src/mame/drivers/lft.cpp @@ -37,22 +37,24 @@ private: required_device<generic_terminal_device> m_terminal; }; -ADDRESS_MAP_START(lft_state::lft_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x5ffff) AM_RAM - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lft_state::lft_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void lft_state::lft_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x5ffff).ram(); + map(0xfc000, 0xfffff).rom().region("roms", 0); +} + +void lft_state::lft_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // screen 1 - AM_RANGE(0x00, 0x01) AM_READNOP - AM_RANGE(0x04, 0x05) AM_READWRITE(keyin_r,term_w) + map(0x00, 0x01).nopr(); + map(0x04, 0x05).rw(this, FUNC(lft_state::keyin_r), FUNC(lft_state::term_w)); // screen 2 - AM_RANGE(0x02, 0x03) AM_READNOP - AM_RANGE(0x06, 0x07) AM_WRITENOP -ADDRESS_MAP_END + map(0x02, 0x03).nopr(); + map(0x06, 0x07).nopw(); +} /* Input ports */ diff --git a/src/mame/drivers/lg-dvd.cpp b/src/mame/drivers/lg-dvd.cpp index 12ad3ad8799..2ca76ab2bfc 100644 --- a/src/mame/drivers/lg-dvd.cpp +++ b/src/mame/drivers/lg-dvd.cpp @@ -26,9 +26,10 @@ protected: static INPUT_PORTS_START( lg ) INPUT_PORTS_END -ADDRESS_MAP_START(lg_dvd_state::lg_dvd_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void lg_dvd_state::lg_dvd_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); +} MACHINE_CONFIG_START(lg_dvd_state::lg) MCFG_CPU_ADD( "maincpu", I80C52, XTAL(16'000'000) ) diff --git a/src/mame/drivers/lgp.cpp b/src/mame/drivers/lgp.cpp index 632164a3161..5f5781afb0e 100644 --- a/src/mame/drivers/lgp.cpp +++ b/src/mame/drivers/lgp.cpp @@ -159,40 +159,44 @@ WRITE8_MEMBER(lgp_state::ldp_write) /* PROGRAM MAPS */ -ADDRESS_MAP_START(lgp_state::main_program_map) - AM_RANGE(0x0000,0x7fff) AM_ROM - AM_RANGE(0xe000,0xe3ff) AM_RAM AM_SHARE("tile_ram") - AM_RANGE(0xe400,0xe7ff) AM_RAM AM_SHARE("tile_ctrl_ram") +void lgp_state::main_program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xe3ff).ram().share("tile_ram"); + map(0xe400, 0xe7ff).ram().share("tile_ctrl_ram"); // AM_RANGE(0xef00,0xef00) AM_READ_PORT("IN_TEST") - AM_RANGE(0xef80,0xef80) AM_READWRITE(ldp_read,ldp_write) - AM_RANGE(0xefb8,0xefb8) AM_READNOP // watchdog - AM_RANGE(0xefc0,0xefc0) AM_READ_PORT("DSWA") /* Not tested */ - AM_RANGE(0xefc8,0xefc8) AM_READ_PORT("DSWB") - AM_RANGE(0xefd0,0xefd0) AM_READ_PORT("DSWC") - AM_RANGE(0xefd8,0xefd8) AM_READ_PORT("IN0") - AM_RANGE(0xefe0,0xefe0) AM_READ_PORT("IN1") - AM_RANGE(0xf000,0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(lgp_state::sound_program_map) - AM_RANGE(0x0000,0x3fff) AM_ROM - AM_RANGE(0x8000,0x83ff) AM_RAM - AM_RANGE(0x8400,0x8407) AM_RAM /* Needs handler! Communications? */ - AM_RANGE(0x8800,0x8803) AM_RAM /* Needs handler! Communications? */ -ADDRESS_MAP_END + map(0xef80, 0xef80).rw(this, FUNC(lgp_state::ldp_read), FUNC(lgp_state::ldp_write)); + map(0xefb8, 0xefb8).nopr(); // watchdog + map(0xefc0, 0xefc0).portr("DSWA"); /* Not tested */ + map(0xefc8, 0xefc8).portr("DSWB"); + map(0xefd0, 0xefd0).portr("DSWC"); + map(0xefd8, 0xefd8).portr("IN0"); + map(0xefe0, 0xefe0).portr("IN1"); + map(0xf000, 0xffff).ram(); +} + +void lgp_state::sound_program_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x8400, 0x8407).ram(); /* Needs handler! Communications? */ + map(0x8800, 0x8803).ram(); /* Needs handler! Communications? */ +} /* IO MAPS */ -ADDRESS_MAP_START(lgp_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void lgp_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0xfd,0xfd) AM_READ_PORT("IN_TEST") // AM_RANGE(0xfe,0xfe) AM_READ_PORT("IN_TEST") -ADDRESS_MAP_END +} -ADDRESS_MAP_START(lgp_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void lgp_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); +} /* PORTS */ diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp index 2c144667a94..28221cd9bde 100644 --- a/src/mame/drivers/liberate.cpp +++ b/src/mame/drivers/liberate.cpp @@ -240,77 +240,84 @@ WRITE8_MEMBER(liberate_state::prosport_charram_w) * *************************************/ -ADDRESS_MAP_START(liberate_state::prosport_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x0200, 0x021f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(prosport_bg_vram_w) AM_SHARE("bg_vram") - AM_RANGE(0x0800, 0x1fff) AM_READWRITE(prosport_charram_r,prosport_charram_w) //0x1e00-0x1fff isn't charram! - AM_RANGE(0x2400, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(liberate_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(liberate_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4000, 0xffff) AM_ROM - AM_RANGE(0x8000, 0x800f) AM_WRITE(prosport_io_w) - AM_RANGE(0x8000, 0x800f) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::liberate_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */ - AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r) - AM_RANGE(0x4000, 0x43ff) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x8000, 0x800f) AM_WRITE(deco16_io_w) - AM_RANGE(0x8000, 0x800f) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::decrypted_opcodes_map) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::prosoccr_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */ - AM_RANGE(0x4000, 0x7fff) AM_READ(prosoccr_bank_r) - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x800) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram") - AM_RANGE(0x8000, 0x97ff) AM_READWRITE(prosoccr_charram_r, prosoccr_charram_w) - AM_RANGE(0x9800, 0x9800) AM_WRITE(prosoccr_char_bank_w) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::deco16_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(deco16_bank_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("TILT") -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::prosoccr_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(prosoccr_io_bank_w) +void liberate_state::prosport_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x2000).ram(); + map(0x0200, 0x021f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x0400, 0x07ff).ram().w(this, FUNC(liberate_state::prosport_bg_vram_w)).share("bg_vram"); + map(0x0800, 0x1fff).rw(this, FUNC(liberate_state::prosport_charram_r), FUNC(liberate_state::prosport_charram_w)); //0x1e00-0x1fff isn't charram! + map(0x2400, 0x2fff).ram(); + map(0x3000, 0x33ff).ram().w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram"); + map(0x3400, 0x37ff).ram().w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram"); + map(0x3800, 0x3fff).ram().share("spriteram"); + map(0x4000, 0xffff).rom(); + map(0x8000, 0x800f).w(this, FUNC(liberate_state::prosport_io_w)); + map(0x8000, 0x800f).bankr("bank1"); +} + +void liberate_state::liberate_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x3fff).rom(); /* Mirror of main rom */ + map(0x4000, 0x7fff).r(this, FUNC(liberate_state::deco16_bank_r)); + map(0x4000, 0x43ff).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram"); + map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram"); + map(0x4800, 0x4fff).writeonly().share("spriteram"); + map(0x6200, 0x67ff).writeonly().share("scratchram"); + map(0x8000, 0xffff).rom(); + map(0x8000, 0x800f).w(this, FUNC(liberate_state::deco16_io_w)); + map(0x8000, 0x800f).bankr("bank1"); +} + +void liberate_state::decrypted_opcodes_map(address_map &map) +{ + map(0x8000, 0xffff).rom().share("decrypted_opcodes"); +} + +void liberate_state::prosoccr_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x3fff).rom(); /* Mirror of main rom */ + map(0x4000, 0x7fff).r(this, FUNC(liberate_state::prosoccr_bank_r)); + map(0x4000, 0x43ff).mirror(0x800).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram"); + map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).writeonly().share("spriteram"); + map(0x6200, 0x67ff).writeonly().share("scratchram"); + map(0x8000, 0x97ff).rw(this, FUNC(liberate_state::prosoccr_charram_r), FUNC(liberate_state::prosoccr_charram_w)); + map(0x9800, 0x9800).w(this, FUNC(liberate_state::prosoccr_char_bank_w)); + map(0xa000, 0xffff).rom(); +} + +void liberate_state::deco16_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0").w(this, FUNC(liberate_state::deco16_bank_w)); + map(0x01, 0x01).portr("TILT"); +} + +void liberate_state::prosoccr_io_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0").w(this, FUNC(liberate_state::prosoccr_io_bank_w)); //AM_RANGE(0x01, 0x01) AM_READ_PORT("TILT") -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::liberatb_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x00fe, 0x00fe) AM_READ_PORT("IN0") - AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */ - AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r) - AM_RANGE(0x4000, 0x43ff) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_WRITE(deco16_io_w) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN1") - AM_RANGE(0xf001, 0xf001) AM_READ_PORT("IN2") - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN3") - AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW1") - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2") -ADDRESS_MAP_END +} + +void liberate_state::liberatb_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x00fe, 0x00fe).portr("IN0"); + map(0x1000, 0x3fff).rom(); /* Mirror of main rom */ + map(0x4000, 0x7fff).r(this, FUNC(liberate_state::deco16_bank_r)); + map(0x4000, 0x43ff).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram"); + map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram"); + map(0x4800, 0x4fff).writeonly().share("spriteram"); + map(0x6200, 0x67ff).writeonly().share("scratchram"); + map(0x8000, 0xffff).rom(); + map(0xf000, 0xf00f).w(this, FUNC(liberate_state::deco16_io_w)); + map(0xf000, 0xf000).portr("IN1"); + map(0xf001, 0xf001).portr("IN2"); + map(0xf002, 0xf002).portr("IN3"); + map(0xf003, 0xf003).portr("DSW1"); + map(0xf004, 0xf004).portr("DSW2"); +} /************************************* * @@ -318,27 +325,29 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(liberate_state::prosoccr_sound_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8912_device, data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8912_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc000) AM_WRITENOP //irq ack - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(liberate_state::liberate_sound_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_WRITENOP - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("ay1", ay8912_device, data_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w) - AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("ay2", ay8912_device, data_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void liberate_state::prosoccr_sound_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x2000, 0x2000).w("ay1", FUNC(ay8912_device::data_w)); + map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w)); + map(0x6000, 0x6000).w("ay2", FUNC(ay8912_device::data_w)); + map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc000).nopw(); //irq ack + map(0xe000, 0xffff).rom(); +} + +void liberate_state::liberate_sound_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x1000, 0x1000).nopw(); + map(0x3000, 0x3000).w("ay1", FUNC(ay8912_device::data_w)); + map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w)); + map(0x7000, 0x7000).w("ay2", FUNC(ay8912_device::data_w)); + map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w)); + map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc000, 0xffff).rom(); +} /************************************* * diff --git a/src/mame/drivers/liberatr.cpp b/src/mame/drivers/liberatr.cpp index 690ad7267b6..7d0752658f2 100644 --- a/src/mame/drivers/liberatr.cpp +++ b/src/mame/drivers/liberatr.cpp @@ -283,27 +283,28 @@ WRITE8_MEMBER( liberatr_state::earom_control_w ) * *************************************/ -ADDRESS_MAP_START(liberatr_state::liberatr_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(bitmap_w) AM_SHARE("bitmapram") /* overlapping for my convenience */ - AM_RANGE(0x0000, 0x0000) AM_RAM AM_SHARE("xcoord") - AM_RANGE(0x0001, 0x0001) AM_RAM AM_SHARE("ycoord") - AM_RANGE(0x0002, 0x0002) AM_READWRITE(bitmap_xy_r, bitmap_xy_w) - AM_RANGE(0x4000, 0x403f) AM_READ(earom_r) - AM_RANGE(0x5000, 0x5000) AM_READ(port0_r) - AM_RANGE(0x5001, 0x5001) AM_READ_PORT("IN1") - AM_RANGE(0x6000, 0x600f) AM_WRITEONLY AM_SHARE("base_ram") - AM_RANGE(0x6200, 0x621f) AM_WRITEONLY AM_SHARE("colorram") - AM_RANGE(0x6400, 0x6400) AM_WRITENOP - AM_RANGE(0x6600, 0x6600) AM_WRITE(earom_control_w) - AM_RANGE(0x6800, 0x6800) AM_WRITEONLY AM_SHARE("planet_frame") - AM_RANGE(0x6a00, 0x6a00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6c00, 0x6c07) AM_WRITE(output_latch_w) - AM_RANGE(0x6e00, 0x6e3f) AM_WRITE(earom_w) - AM_RANGE(0x7000, 0x701f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x7800, 0x781f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x8000, 0xefff) AM_ROM - AM_RANGE(0xfffa, 0xffff) AM_ROM -ADDRESS_MAP_END +void liberatr_state::liberatr_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(liberatr_state::bitmap_w)).share("bitmapram"); /* overlapping for my convenience */ + map(0x0000, 0x0000).ram().share("xcoord"); + map(0x0001, 0x0001).ram().share("ycoord"); + map(0x0002, 0x0002).rw(this, FUNC(liberatr_state::bitmap_xy_r), FUNC(liberatr_state::bitmap_xy_w)); + map(0x4000, 0x403f).r(this, FUNC(liberatr_state::earom_r)); + map(0x5000, 0x5000).r(this, FUNC(liberatr_state::port0_r)); + map(0x5001, 0x5001).portr("IN1"); + map(0x6000, 0x600f).writeonly().share("base_ram"); + map(0x6200, 0x621f).writeonly().share("colorram"); + map(0x6400, 0x6400).nopw(); + map(0x6600, 0x6600).w(this, FUNC(liberatr_state::earom_control_w)); + map(0x6800, 0x6800).writeonly().share("planet_frame"); + map(0x6a00, 0x6a00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6c00, 0x6c07).w(this, FUNC(liberatr_state::output_latch_w)); + map(0x6e00, 0x6e3f).w(this, FUNC(liberatr_state::earom_w)); + map(0x7000, 0x701f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x7800, 0x781f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x8000, 0xefff).rom(); + map(0xfffa, 0xffff).rom(); +} @@ -313,28 +314,29 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(liberatr_state::liberat2_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(bitmap_w) AM_SHARE("bitmapram") /* overlapping for my convenience */ - AM_RANGE(0x0000, 0x0000) AM_RAM AM_SHARE("xcoord") - AM_RANGE(0x0001, 0x0001) AM_RAM AM_SHARE("ycoord") - AM_RANGE(0x0002, 0x0002) AM_READWRITE(bitmap_xy_r, bitmap_xy_w) - AM_RANGE(0x4000, 0x4000) AM_READ(port0_r) - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") - AM_RANGE(0x4000, 0x400f) AM_WRITEONLY AM_SHARE("base_ram") - AM_RANGE(0x4200, 0x421f) AM_WRITEONLY AM_SHARE("colorram") - AM_RANGE(0x4400, 0x4400) AM_WRITENOP - AM_RANGE(0x4600, 0x4600) AM_WRITE(earom_control_w) - AM_RANGE(0x4800, 0x483f) AM_READ(earom_r) - AM_RANGE(0x4800, 0x4800) AM_WRITEONLY AM_SHARE("planet_frame") - AM_RANGE(0x4a00, 0x4a00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x4c00, 0x4c07) AM_WRITE(output_latch_w) - AM_RANGE(0x4e00, 0x4e3f) AM_WRITE(earom_w) - AM_RANGE(0x5000, 0x501f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x5800, 0x581f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) +void liberatr_state::liberat2_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().w(this, FUNC(liberatr_state::bitmap_w)).share("bitmapram"); /* overlapping for my convenience */ + map(0x0000, 0x0000).ram().share("xcoord"); + map(0x0001, 0x0001).ram().share("ycoord"); + map(0x0002, 0x0002).rw(this, FUNC(liberatr_state::bitmap_xy_r), FUNC(liberatr_state::bitmap_xy_w)); + map(0x4000, 0x4000).r(this, FUNC(liberatr_state::port0_r)); + map(0x4001, 0x4001).portr("IN1"); + map(0x4000, 0x400f).writeonly().share("base_ram"); + map(0x4200, 0x421f).writeonly().share("colorram"); + map(0x4400, 0x4400).nopw(); + map(0x4600, 0x4600).w(this, FUNC(liberatr_state::earom_control_w)); + map(0x4800, 0x483f).r(this, FUNC(liberatr_state::earom_r)); + map(0x4800, 0x4800).writeonly().share("planet_frame"); + map(0x4a00, 0x4a00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x4c00, 0x4c07).w(this, FUNC(liberatr_state::output_latch_w)); + map(0x4e00, 0x4e3f).w(this, FUNC(liberatr_state::earom_w)); + map(0x5000, 0x501f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x5800, 0x581f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); //AM_RANGE(0x6000, 0x601f) AM_WRITE(pokey1_w) /* bug ??? */ - AM_RANGE(0x6000, 0xbfff) AM_ROM - AM_RANGE(0xfffa, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x6000, 0xbfff).rom(); + map(0xfffa, 0xffff).rom(); +} diff --git a/src/mame/drivers/limenko.cpp b/src/mame/drivers/limenko.cpp index 81780586c7c..f0433fd6f39 100644 --- a/src/mame/drivers/limenko.cpp +++ b/src/mame/drivers/limenko.cpp @@ -198,54 +198,58 @@ WRITE8_MEMBER(limenko_state::qs1000_p3_w) MEMORY MAPS *****************************************************************************************************/ -ADDRESS_MAP_START(limenko_state::limenko_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("maindata",0) - AM_RANGE(0x80000000, 0x80007fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x80008000, 0x8000ffff) AM_RAM_WRITE(md_videoram_w) AM_SHARE("md_videoram") - AM_RANGE(0x80010000, 0x80017fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x80018000, 0x80019fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8001c000, 0x8001dfff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x8001e000, 0x8001ebff) AM_RAM // ? not used - AM_RANGE(0x8001ffec, 0x8001ffff) AM_RAM AM_SHARE("videoreg") - AM_RANGE(0x8003e000, 0x8003e003) AM_WRITE(spriteram_buffer_w) - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(limenko_state::limenko_io_map) - AM_RANGE(0x0000, 0x0003) AM_READ_PORT("IN0") - AM_RANGE(0x0800, 0x0803) AM_READ_PORT("IN1") - AM_RANGE(0x1000, 0x1003) AM_READ_PORT("IN2") - AM_RANGE(0x4000, 0x4003) AM_WRITE(limenko_coincounter_w) - AM_RANGE(0x4800, 0x4803) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x5000, 0x5003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000).cswidth(32) -ADDRESS_MAP_END +void limenko_state::limenko_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("mainram"); + map(0x40000000, 0x403fffff).rom().region("maindata", 0); + map(0x80000000, 0x80007fff).ram().w(this, FUNC(limenko_state::fg_videoram_w)).share("fg_videoram"); + map(0x80008000, 0x8000ffff).ram().w(this, FUNC(limenko_state::md_videoram_w)).share("md_videoram"); + map(0x80010000, 0x80017fff).ram().w(this, FUNC(limenko_state::bg_videoram_w)).share("bg_videoram"); + map(0x80018000, 0x80019fff).ram().share("spriteram"); + map(0x8001c000, 0x8001dfff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x8001e000, 0x8001ebff).ram(); // ? not used + map(0x8001ffec, 0x8001ffff).ram().share("videoreg"); + map(0x8003e000, 0x8003e003).w(this, FUNC(limenko_state::spriteram_buffer_w)); + map(0xffe00000, 0xffffffff).rom().region("maincpu", 0); +} + +void limenko_state::limenko_io_map(address_map &map) +{ + map(0x0000, 0x0003).portr("IN0"); + map(0x0800, 0x0803).portr("IN1"); + map(0x1000, 0x1003).portr("IN2"); + map(0x4000, 0x4003).w(this, FUNC(limenko_state::limenko_coincounter_w)); + map(0x4800, 0x4803).portw("EEPROMOUT"); + map(0x5000, 0x5003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x00ff0000).cswidth(32); +} /* Spotty memory map */ -ADDRESS_MAP_START(limenko_state::spotty_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x40002000, 0x400024d3) AM_RAM //? - AM_RANGE(0x80000000, 0x80007fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x80008000, 0x8000ffff) AM_RAM_WRITE(md_videoram_w) AM_SHARE("md_videoram") - AM_RANGE(0x80010000, 0x80017fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x80018000, 0x80019fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8001c000, 0x8001dfff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x8001e000, 0x8001ebff) AM_RAM // ? not used - AM_RANGE(0x8001ffec, 0x8001ffff) AM_RAM AM_SHARE("videoreg") - AM_RANGE(0x8003e000, 0x8003e003) AM_WRITE(spriteram_buffer_w) - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(limenko_state::spotty_io_map) - AM_RANGE(0x0000, 0x0003) AM_READ_PORT("IN0") - AM_RANGE(0x0800, 0x0803) AM_READ_PORT("IN1") - AM_RANGE(0x0800, 0x0803) AM_WRITENOP // hopper related - AM_RANGE(0x1000, 0x1003) AM_READ_PORT("IN2") - AM_RANGE(0x4800, 0x4803) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x5000, 0x5003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000).cswidth(32) -ADDRESS_MAP_END +void limenko_state::spotty_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("mainram"); + map(0x40002000, 0x400024d3).ram(); //? + map(0x80000000, 0x80007fff).ram().w(this, FUNC(limenko_state::fg_videoram_w)).share("fg_videoram"); + map(0x80008000, 0x8000ffff).ram().w(this, FUNC(limenko_state::md_videoram_w)).share("md_videoram"); + map(0x80010000, 0x80017fff).ram().w(this, FUNC(limenko_state::bg_videoram_w)).share("bg_videoram"); + map(0x80018000, 0x80019fff).ram().share("spriteram"); + map(0x8001c000, 0x8001dfff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x8001e000, 0x8001ebff).ram(); // ? not used + map(0x8001ffec, 0x8001ffff).ram().share("videoreg"); + map(0x8003e000, 0x8003e003).w(this, FUNC(limenko_state::spriteram_buffer_w)); + map(0xfff00000, 0xffffffff).rom().region("maincpu", 0); +} + +void limenko_state::spotty_io_map(address_map &map) +{ + map(0x0000, 0x0003).portr("IN0"); + map(0x0800, 0x0803).portr("IN1"); + map(0x0800, 0x0803).nopw(); // hopper related + map(0x1000, 0x1003).portr("IN2"); + map(0x4800, 0x4803).portw("EEPROMOUT"); + map(0x5000, 0x5003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x00ff0000).cswidth(32); +} WRITE8_MEMBER(limenko_state::spotty_sound_cmd_w) { diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp index bc3d0be1609..f981a1599e5 100644 --- a/src/mame/drivers/lisa.cpp +++ b/src/mame/drivers/lisa.cpp @@ -23,26 +23,29 @@ ADDRESS MAP ***************************************************************************/ -ADDRESS_MAP_START(lisa_state::lisa_map) - AM_RANGE(0x000000, 0xffffff) AM_READWRITE(lisa_r, lisa_w) /* no fixed map, we use an MMU */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(lisa_state::lisa_fdc_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) // only 8k of address space - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("fdc_ram") /* RAM (shared with 68000) */ - AM_RANGE(0x0400, 0x07ff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */ - AM_RANGE(0x0800, 0x0fff) AM_NOP - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(lisa_state::lisa210_fdc_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) // only 8k of address space - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("fdc_ram") /* RAM (shared with 68000) */ - AM_RANGE(0x0400, 0x07ff) AM_NOP /* nothing, or RAM wrap-around ??? */ - AM_RANGE(0x0800, 0x0bff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */ - AM_RANGE(0x0c00, 0x0fff) AM_NOP /* nothing, or IO port wrap-around ??? */ - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */ -ADDRESS_MAP_END +void lisa_state::lisa_map(address_map &map) +{ + map(0x000000, 0xffffff).rw(this, FUNC(lisa_state::lisa_r), FUNC(lisa_state::lisa_w)); /* no fixed map, we use an MMU */ +} + +void lisa_state::lisa_fdc_map(address_map &map) +{ + map.global_mask(0x1fff); // only 8k of address space + map(0x0000, 0x03ff).ram().share("fdc_ram"); /* RAM (shared with 68000) */ + map(0x0400, 0x07ff).rw(this, FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); /* disk controller (IWM and TTL logic) */ + map(0x0800, 0x0fff).noprw(); + map(0x1000, 0x1fff).rom().region("fdccpu", 0x1000).share("fdc_rom"); /* ROM */ +} + +void lisa_state::lisa210_fdc_map(address_map &map) +{ + map.global_mask(0x1fff); // only 8k of address space + map(0x0000, 0x03ff).ram().share("fdc_ram"); /* RAM (shared with 68000) */ + map(0x0400, 0x07ff).noprw(); /* nothing, or RAM wrap-around ??? */ + map(0x0800, 0x0bff).rw(this, FUNC(lisa_state::lisa_fdc_io_r), FUNC(lisa_state::lisa_fdc_io_w)); /* disk controller (IWM and TTL logic) */ + map(0x0c00, 0x0fff).noprw(); /* nothing, or IO port wrap-around ??? */ + map(0x1000, 0x1fff).rom().region("fdccpu", 0x1000).share("fdc_rom"); /* ROM */ +} diff --git a/src/mame/drivers/littlerb.cpp b/src/mame/drivers/littlerb.cpp index 6ac2642334a..6d95c5b52db 100644 --- a/src/mame/drivers/littlerb.cpp +++ b/src/mame/drivers/littlerb.cpp @@ -161,23 +161,24 @@ WRITE16_MEMBER(littlerb_state::littlerb_r_sound_w) //popmessage("%04x %04x",m_sound_index_l,m_sound_index_r); } -ADDRESS_MAP_START(littlerb_state::littlerb_main) - AM_RANGE(0x000008, 0x000017) AM_WRITENOP - AM_RANGE(0x000020, 0x00002f) AM_WRITENOP - AM_RANGE(0x000070, 0x000073) AM_WRITENOP - AM_RANGE(0x060004, 0x060007) AM_WRITENOP - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM // main ram? - - AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w) - - AM_RANGE(0x740000, 0x740001) AM_WRITE(littlerb_l_sound_w) - AM_RANGE(0x760000, 0x760001) AM_WRITE(littlerb_r_sound_w) - AM_RANGE(0x780000, 0x780001) AM_WRITENOP // generic outputs - AM_RANGE(0x7c0000, 0x7c0001) AM_READ_PORT("DSW") - AM_RANGE(0x7e0000, 0x7e0001) AM_READ_PORT("P1") - AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2") -ADDRESS_MAP_END +void littlerb_state::littlerb_main(address_map &map) +{ + map(0x000008, 0x000017).nopw(); + map(0x000020, 0x00002f).nopw(); + map(0x000070, 0x000073).nopw(); + map(0x060004, 0x060007).nopw(); + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x203fff).ram(); // main ram? + + map(0x700000, 0x700007).rw("inder_vid:tms", FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); + + map(0x740000, 0x740001).w(this, FUNC(littlerb_state::littlerb_l_sound_w)); + map(0x760000, 0x760001).w(this, FUNC(littlerb_state::littlerb_r_sound_w)); + map(0x780000, 0x780001).nopw(); // generic outputs + map(0x7c0000, 0x7c0001).portr("DSW"); + map(0x7e0000, 0x7e0001).portr("P1"); + map(0x7e0002, 0x7e0003).portr("P2"); +} /* guess according to DASM code and checking the gameplay speed, could be different */ CUSTOM_INPUT_MEMBER(littlerb_state::littlerb_frame_step_r) diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp index ed93dfd02f8..98e574e3a54 100644 --- a/src/mame/drivers/lkage.cpp +++ b/src/mame/drivers/lkage.cpp @@ -116,39 +116,42 @@ READ8_MEMBER(lkage_state::sound_status_r) return 0xff; } -ADDRESS_MAP_START(lkage_state::lkage_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram */ - AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf000, 0xf003) AM_RAM AM_SHARE("vreg") /* video registers */ - AM_RANGE(0xf060, 0xf060) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf061, 0xf061) AM_WRITENOP AM_READ(sound_status_r) - AM_RANGE(0xf063, 0xf063) AM_WRITENOP /* pulsed; nmi on sound cpu? */ - AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1") - AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2") - AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3") - AM_RANGE(0xf083, 0xf083) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf084, 0xf084) AM_READ_PORT("P1") - AM_RANGE(0xf086, 0xf086) AM_READ_PORT("P2") - AM_RANGE(0xf0a0, 0xf0a3) AM_RAM /* unknown */ - AM_RANGE(0xf0c0, 0xf0c5) AM_RAM AM_SHARE("scroll") - AM_RANGE(0xf0e1, 0xf0e1) AM_WRITENOP /* pulsed */ - AM_RANGE(0xf100, 0xf15f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf160, 0xf1ff) AM_RAM /* unknown - no valid sprite data */ - AM_RANGE(0xf400, 0xffff) AM_RAM_WRITE(lkage_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(lkage_state::lkage_map_mcu) - AM_IMPORT_FROM(lkage_map) - AM_RANGE(0xf062, 0xf062) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0xf087, 0xf087) AM_READ(mcu_status_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lkage_state::lkage_map_boot) - AM_IMPORT_FROM(lkage_map) - AM_RANGE(0xf062, 0xf062) AM_READWRITE(fake_mcu_r, fake_mcu_w) - AM_RANGE(0xf087, 0xf087) AM_READ(fake_status_r) -ADDRESS_MAP_END +void lkage_state::lkage_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram(); /* work ram */ + map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf003).ram().share("vreg"); /* video registers */ + map(0xf060, 0xf060).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf061, 0xf061).nopw().r(this, FUNC(lkage_state::sound_status_r)); + map(0xf063, 0xf063).nopw(); /* pulsed; nmi on sound cpu? */ + map(0xf080, 0xf080).portr("DSW1"); + map(0xf081, 0xf081).portr("DSW2"); + map(0xf082, 0xf082).portr("DSW3"); + map(0xf083, 0xf083).portr("SYSTEM"); + map(0xf084, 0xf084).portr("P1"); + map(0xf086, 0xf086).portr("P2"); + map(0xf0a0, 0xf0a3).ram(); /* unknown */ + map(0xf0c0, 0xf0c5).ram().share("scroll"); + map(0xf0e1, 0xf0e1).nopw(); /* pulsed */ + map(0xf100, 0xf15f).ram().share("spriteram"); + map(0xf160, 0xf1ff).ram(); /* unknown - no valid sprite data */ + map(0xf400, 0xffff).ram().w(this, FUNC(lkage_state::lkage_videoram_w)).share("videoram"); +} + +void lkage_state::lkage_map_mcu(address_map &map) +{ + lkage_map(map); + map(0xf062, 0xf062).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0xf087, 0xf087).r(this, FUNC(lkage_state::mcu_status_r)); +} + +void lkage_state::lkage_map_boot(address_map &map) +{ + lkage_map(map); + map(0xf062, 0xf062).rw(this, FUNC(lkage_state::fake_mcu_r), FUNC(lkage_state::fake_mcu_w)); + map(0xf087, 0xf087).r(this, FUNC(lkage_state::fake_status_r)); +} READ8_MEMBER(lkage_state::port_fetch_r) @@ -156,26 +159,28 @@ READ8_MEMBER(lkage_state::port_fetch_r) return memregion("user1")->base()[offset]; } -ADDRESS_MAP_START(lkage_state::lkage_io_map) - AM_RANGE(0x4000, 0x7fff) AM_READ(port_fetch_r) -ADDRESS_MAP_END +void lkage_state::lkage_io_map(address_map &map) +{ + map(0x4000, 0x7fff).r(this, FUNC(lkage_state::port_fetch_r)); +} /***************************************************************************/ /* sound section is almost identical to Bubble Bobble, YM2203 instead of YM3526 */ -ADDRESS_MAP_START(lkage_state::lkage_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* ??? */ - AM_RANGE(0xb001, 0xb001) AM_READNOP /* ??? */ AM_WRITE(lkage_sh_nmi_enable_w) - AM_RANGE(0xb002, 0xb002) AM_WRITE(lkage_sh_nmi_disable_w) - AM_RANGE(0xb003, 0xb003) AM_WRITENOP - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */ -ADDRESS_MAP_END +void lkage_state::lkage_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); /* ??? */ + map(0xb001, 0xb001).nopr() /* ??? */ .w(this, FUNC(lkage_state::lkage_sh_nmi_enable_w)); + map(0xb002, 0xb002).w(this, FUNC(lkage_state::lkage_sh_nmi_disable_w)); + map(0xb003, 0xb003).nopw(); + map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */ +} /***************************************************************************/ diff --git a/src/mame/drivers/llc.cpp b/src/mame/drivers/llc.cpp index e414555ba38..b1df7121948 100644 --- a/src/mame/drivers/llc.cpp +++ b/src/mame/drivers/llc.cpp @@ -58,37 +58,41 @@ /* Address maps */ -ADDRESS_MAP_START(llc_state::llc1_mem) - AM_RANGE(0x0000, 0x07ff) AM_ROM // Monitor ROM - AM_RANGE(0x0800, 0x13ff) AM_ROM // BASIC ROM - AM_RANGE(0x1400, 0x1bff) AM_RAM // RAM - AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_SHARE("videoram") // Video RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(llc_state::llc1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xEC, 0xEF) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write) - AM_RANGE(0xF4, 0xF7) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write) - AM_RANGE(0xF8, 0xFB) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(llc_state::llc2_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x5fff) AM_RAMBANK("bank2") - AM_RANGE(0x6000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(llc_state::llc2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xE0, 0xE3) AM_WRITE(llc2_rom_disable_w) - AM_RANGE(0xE4, 0xE7) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write) - AM_RANGE(0xE8, 0xEB) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write) - AM_RANGE(0xEC, 0xEC) AM_WRITE(llc2_basic_enable_w) - AM_RANGE(0xF8, 0xFB) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void llc_state::llc1_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); // Monitor ROM + map(0x0800, 0x13ff).rom(); // BASIC ROM + map(0x1400, 0x1bff).ram(); // RAM + map(0x1c00, 0x1fff).ram().share("videoram"); // Video RAM +} + +void llc_state::llc1_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xEC, 0xEF).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xF4, 0xF7).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xF8, 0xFB).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} + +void llc_state::llc2_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x5fff).bankrw("bank2"); + map(0x6000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void llc_state::llc2_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xE0, 0xE3).w(this, FUNC(llc_state::llc2_rom_disable_w)); + map(0xE4, 0xE7).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xE8, 0xEB).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xEC, 0xEC).w(this, FUNC(llc_state::llc2_basic_enable_w)); + map(0xF8, 0xFB).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /* Input ports */ static INPUT_PORTS_START( llc1 ) diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp index a701964d7c0..17af04ba09a 100644 --- a/src/mame/drivers/lockon.cpp +++ b/src/mame/drivers/lockon.cpp @@ -147,64 +147,69 @@ WRITE16_MEMBER(lockon_state::emres_w) * *************************************/ -ADDRESS_MAP_START(lockon_state::main_v30) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0x04000, 0x04003) AM_READWRITE(lockon_crtc_r, lockon_crtc_w) - AM_RANGE(0x06000, 0x06001) AM_READ_PORT("DSW") - AM_RANGE(0x08000, 0x081ff) AM_RAM AM_SHARE("hud_ram") - AM_RANGE(0x09000, 0x09fff) AM_RAM_WRITE(lockon_char_w) AM_SHARE("char_ram") - AM_RANGE(0x0a000, 0x0a001) AM_WRITE(adrst_w) - AM_RANGE(0x0b000, 0x0bfff) AM_WRITE(lockon_rotate_w) - AM_RANGE(0x0c000, 0x0cfff) AM_WRITE(lockon_fb_clut_w) - AM_RANGE(0x0e000, 0x0e001) AM_WRITE(inten_w) - AM_RANGE(0x0f000, 0x0f001) AM_WRITE(emres_w) - AM_RANGE(0x10000, 0x1ffff) AM_READNOP AM_WRITE(tst_w) - AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(main_z80_r, main_z80_w) - AM_RANGE(0x30000, 0x3ffff) AM_READWRITE(main_gnd_r, main_gnd_w) - AM_RANGE(0x40000, 0x4ffff) AM_READWRITE(main_obj_r, main_obj_w) - AM_RANGE(0x50000, 0x5ffff) AM_MIRROR(0x80000) AM_ROM - AM_RANGE(0x60000, 0x6ffff) AM_MIRROR(0x80000) AM_ROM - AM_RANGE(0x70000, 0x7ffff) AM_MIRROR(0x80000) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lockon_state::ground_v30) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("scene_ram") - AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("ground_ram") - AM_RANGE(0x0C000, 0x0C001) AM_WRITE(lockon_scene_h_scr_w) - AM_RANGE(0x0C002, 0x0C003) AM_WRITE(lockon_scene_v_scr_w) - AM_RANGE(0x0C004, 0x0C005) AM_WRITE(lockon_ground_ctrl_w) - AM_RANGE(0x20000, 0x2ffff) AM_MIRROR(0xc0000) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_MIRROR(0xc0000) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lockon_state::object_v30) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0x04000, 0x04001) AM_READWRITE(lockon_obj_4000_r, lockon_obj_4000_w) - AM_RANGE(0x08000, 0x08fff) AM_WRITE(lockon_tza112_w) - AM_RANGE(0x0c000, 0x0c1ff) AM_RAM AM_SHARE("object_ram") - AM_RANGE(0x30000, 0x3ffff) AM_MIRROR(0xc0000) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lockon_state::sound_prg) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7000) AM_WRITE(sound_vol) - AM_RANGE(0x7400, 0x7403) AM_READ(adc_r) AM_WRITENOP - AM_RANGE(0x7800, 0x7fff) AM_MIRROR(0x8000) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(lockon_state::sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x02, 0x02) AM_NOP -ADDRESS_MAP_END +void lockon_state::main_v30(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x03fff).ram(); + map(0x04000, 0x04003).rw(this, FUNC(lockon_state::lockon_crtc_r), FUNC(lockon_state::lockon_crtc_w)); + map(0x06000, 0x06001).portr("DSW"); + map(0x08000, 0x081ff).ram().share("hud_ram"); + map(0x09000, 0x09fff).ram().w(this, FUNC(lockon_state::lockon_char_w)).share("char_ram"); + map(0x0a000, 0x0a001).w(this, FUNC(lockon_state::adrst_w)); + map(0x0b000, 0x0bfff).w(this, FUNC(lockon_state::lockon_rotate_w)); + map(0x0c000, 0x0cfff).w(this, FUNC(lockon_state::lockon_fb_clut_w)); + map(0x0e000, 0x0e001).w(this, FUNC(lockon_state::inten_w)); + map(0x0f000, 0x0f001).w(this, FUNC(lockon_state::emres_w)); + map(0x10000, 0x1ffff).nopr().w(this, FUNC(lockon_state::tst_w)); + map(0x20000, 0x2ffff).rw(this, FUNC(lockon_state::main_z80_r), FUNC(lockon_state::main_z80_w)); + map(0x30000, 0x3ffff).rw(this, FUNC(lockon_state::main_gnd_r), FUNC(lockon_state::main_gnd_w)); + map(0x40000, 0x4ffff).rw(this, FUNC(lockon_state::main_obj_r), FUNC(lockon_state::main_obj_w)); + map(0x50000, 0x5ffff).mirror(0x80000).rom(); + map(0x60000, 0x6ffff).mirror(0x80000).rom(); + map(0x70000, 0x7ffff).mirror(0x80000).rom(); +} + + +void lockon_state::ground_v30(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x03fff).ram(); + map(0x04000, 0x04fff).ram().share("scene_ram"); + map(0x08000, 0x08fff).ram().share("ground_ram"); + map(0x0C000, 0x0C001).w(this, FUNC(lockon_state::lockon_scene_h_scr_w)); + map(0x0C002, 0x0C003).w(this, FUNC(lockon_state::lockon_scene_v_scr_w)); + map(0x0C004, 0x0C005).w(this, FUNC(lockon_state::lockon_ground_ctrl_w)); + map(0x20000, 0x2ffff).mirror(0xc0000).rom(); + map(0x30000, 0x3ffff).mirror(0xc0000).rom(); +} + + +void lockon_state::object_v30(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x03fff).ram(); + map(0x04000, 0x04001).rw(this, FUNC(lockon_state::lockon_obj_4000_r), FUNC(lockon_state::lockon_obj_4000_w)); + map(0x08000, 0x08fff).w(this, FUNC(lockon_state::lockon_tza112_w)); + map(0x0c000, 0x0c1ff).ram().share("object_ram"); + map(0x30000, 0x3ffff).mirror(0xc0000).rom(); +} + + +void lockon_state::sound_prg(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7000).w(this, FUNC(lockon_state::sound_vol)); + map(0x7400, 0x7403).r(this, FUNC(lockon_state::adc_r)).nopw(); + map(0x7800, 0x7fff).mirror(0x8000).ram(); +} + +void lockon_state::sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x02, 0x02).noprw(); +} /************************************* diff --git a/src/mame/drivers/lola8a.cpp b/src/mame/drivers/lola8a.cpp index eeb0f31efb3..19ac316f34b 100644 --- a/src/mame/drivers/lola8a.cpp +++ b/src/mame/drivers/lola8a.cpp @@ -68,28 +68,30 @@ private: required_shared_ptr<uint8_t> m_p_videoram; }; -ADDRESS_MAP_START(lola8a_state::lola8a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x1fff ) AM_RAM // 6264 at G45 - AM_RANGE( 0x2000, 0x3fff ) AM_RAM // 6264 at F45 +void lola8a_state::lola8a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram(); // 6264 at G45 + map(0x2000, 0x3fff).ram(); // 6264 at F45 // empty place for 6264 at E45 // empty place for 6264 at D45 - AM_RANGE( 0x8000, 0x9fff ) AM_ROM // 2764A at B45 - AM_RANGE( 0xa000, 0xbfff ) AM_ROM // 2764A at C45 - AM_RANGE( 0xc000, 0xdfff ) AM_ROM // 2764A at H67 - AM_RANGE( 0xe000, 0xffff ) AM_RAM AM_SHARE("videoram") // 6264 at G67 -ADDRESS_MAP_END - -ADDRESS_MAP_START(lola8a_state::lola8a_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80, 0x80) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w) - AM_RANGE(0x84, 0x84) AM_DEVREADWRITE(AY8910_TAG, ay8910_device, data_r, data_w) - AM_RANGE(0x88, 0x88) AM_READ(keyboard_r) - - AM_RANGE(0x90, 0x90) AM_DEVREADWRITE(HD46505SP_TAG, mc6845_device, status_r, address_w) - AM_RANGE(0x92, 0x92) AM_DEVREADWRITE(HD46505SP_TAG, mc6845_device, register_r, register_w) - -ADDRESS_MAP_END + map(0x8000, 0x9fff).rom(); // 2764A at B45 + map(0xa000, 0xbfff).rom(); // 2764A at C45 + map(0xc000, 0xdfff).rom(); // 2764A at H67 + map(0xe000, 0xffff).ram().share("videoram"); // 6264 at G67 +} + +void lola8a_state::lola8a_io(address_map &map) +{ + map.unmap_value_high(); + map(0x80, 0x80).w(AY8910_TAG, FUNC(ay8910_device::address_w)); + map(0x84, 0x84).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x88, 0x88).r(this, FUNC(lola8a_state::keyboard_r)); + + map(0x90, 0x90).rw(HD46505SP_TAG, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x92, 0x92).rw(HD46505SP_TAG, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + +} /* Input ports */ static INPUT_PORTS_START( lola8a ) diff --git a/src/mame/drivers/looping.cpp b/src/mame/drivers/looping.cpp index ed0db8e51dc..7e329792df6 100644 --- a/src/mame/drivers/looping.cpp +++ b/src/mame/drivers/looping.cpp @@ -549,46 +549,50 @@ READ8_MEMBER(looping_state::protection_r) * *************************************/ -ADDRESS_MAP_START(looping_state::looping_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void looping_state::looping_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(looping_videoram_w) AM_SHARE("videoram") + map(0x9000, 0x93ff).ram().w(this, FUNC(looping_state::looping_videoram_w)).share("videoram"); - AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM_WRITE(looping_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9840, 0x987f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9880, 0x98ff) AM_MIRROR(0x0700) AM_RAM + map(0x9800, 0x983f).mirror(0x0700).ram().w(this, FUNC(looping_state::looping_colorram_w)).share("colorram"); + map(0x9840, 0x987f).mirror(0x0700).ram().share("spriteram"); + map(0x9880, 0x98ff).mirror(0x0700).ram(); - AM_RANGE(0xb000, 0xb007) AM_MIRROR(0x07f8) AM_DEVWRITE("videolatch", ls259_device, write_d0) + map(0xb000, 0xb007).mirror(0x07f8).w("videolatch", FUNC(ls259_device::write_d0)); - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x03fc) AM_READ_PORT("P1") AM_WRITE(out_0_w) /* /OUT0 */ - AM_RANGE(0xf801, 0xf801) AM_MIRROR(0x03fc) AM_READ_PORT("P2") AM_WRITE(looping_soundlatch_w) /* /OUT1 */ - AM_RANGE(0xf802, 0xf802) AM_MIRROR(0x03fc) AM_READ_PORT("DSW") AM_WRITE(out_2_w) /* /OUT2 */ - AM_RANGE(0xf803, 0xf803) AM_MIRROR(0x03fc) AM_READWRITE(adc_r, adc_w) -ADDRESS_MAP_END + map(0xe000, 0xefff).ram(); + map(0xf800, 0xf800).mirror(0x03fc).portr("P1").w(this, FUNC(looping_state::out_0_w)); /* /OUT0 */ + map(0xf801, 0xf801).mirror(0x03fc).portr("P2").w(this, FUNC(looping_state::looping_soundlatch_w)); /* /OUT1 */ + map(0xf802, 0xf802).mirror(0x03fc).portr("DSW").w(this, FUNC(looping_state::out_2_w)); /* /OUT2 */ + map(0xf803, 0xf803).mirror(0x03fc).rw(this, FUNC(looping_state::adc_r), FUNC(looping_state::adc_w)); +} -ADDRESS_MAP_START(looping_state::looping_io_map) - AM_RANGE(0x400, 0x407) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void looping_state::looping_io_map(address_map &map) +{ + map(0x400, 0x407).w("mainlatch", FUNC(ls259_device::write_d0)); +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(looping_state::looping_sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0x3800, 0x3bff) AM_RAM - AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x00f4) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_w) - AM_RANGE(0x3c01, 0x3c01) AM_MIRROR(0x00f6) AM_NOP - AM_RANGE(0x3c02, 0x3c02) AM_MIRROR(0x00f4) AM_READNOP AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x00f4) AM_READNOP AM_DEVWRITE("tms", tms5220_device, data_w) - AM_RANGE(0x3e01, 0x3e01) AM_MIRROR(0x00f6) AM_NOP - AM_RANGE(0x3e02, 0x3e02) AM_MIRROR(0x00f4) AM_DEVREAD("tms", tms5220_device, status_r) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(looping_state::looping_sound_io_map) - AM_RANGE(0x000, 0x007) AM_DEVWRITE("sen0", ls259_device, write_d0) - AM_RANGE(0x008, 0x00f) AM_DEVWRITE("sen1", ls259_device, write_d0) -ADDRESS_MAP_END +void looping_state::looping_sound_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x37ff).rom(); + map(0x3800, 0x3bff).ram(); + map(0x3c00, 0x3c00).mirror(0x00f4).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x3c01, 0x3c01).mirror(0x00f6).noprw(); + map(0x3c02, 0x3c02).mirror(0x00f4).nopr().w("aysnd", FUNC(ay8910_device::data_w)); + map(0x3e00, 0x3e00).mirror(0x00f4).nopr().w("tms", FUNC(tms5220_device::data_w)); + map(0x3e01, 0x3e01).mirror(0x00f6).noprw(); + map(0x3e02, 0x3e02).mirror(0x00f4).r("tms", FUNC(tms5220_device::status_r)).nopw(); +} + +void looping_state::looping_sound_io_map(address_map &map) +{ + map(0x000, 0x007).w("sen0", FUNC(ls259_device::write_d0)); + map(0x008, 0x00f).w("sen1", FUNC(ls259_device::write_d0)); +} /************************************* diff --git a/src/mame/drivers/lordgun.cpp b/src/mame/drivers/lordgun.cpp index 4f180aa628c..c01098389b4 100644 --- a/src/mame/drivers/lordgun.cpp +++ b/src/mame/drivers/lordgun.cpp @@ -278,68 +278,71 @@ WRITE16_MEMBER(lordgun_state::lordgun_soundlatch_w) m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(lordgun_state::lordgun_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("priority_ram") // PRIORITY - AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(lordgun_vram_0_w) AM_SHARE("vram.0") // DISPLAY - AM_RANGE(0x310000, 0x313fff) AM_RAM_WRITE(lordgun_vram_1_w) AM_SHARE("vram.1") // DISPLAY - AM_RANGE(0x314000, 0x314fff) AM_RAM_WRITE(lordgun_vram_2_w) AM_SHARE("vram.2") // DISPLAY - AM_RANGE(0x315000, 0x317fff) AM_RAM // - AM_RANGE(0x318000, 0x319fff) AM_RAM_WRITE(lordgun_vram_3_w) AM_SHARE("vram.3") // DISPLAY - AM_RANGE(0x31c000, 0x31c7ff) AM_RAM AM_SHARE("scrollram") // LINE - AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("spriteram") // ANIMATOR - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(lordgun_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x502000, 0x502001) AM_WRITEONLY AM_SHARE("scroll_x.0") - AM_RANGE(0x502200, 0x502201) AM_WRITEONLY AM_SHARE("scroll_x.1") - AM_RANGE(0x502400, 0x502401) AM_WRITEONLY AM_SHARE("scroll_x.2") - AM_RANGE(0x502600, 0x502601) AM_WRITEONLY AM_SHARE("scroll_x.3") - AM_RANGE(0x502800, 0x502801) AM_WRITEONLY AM_SHARE("scroll_y.0") - AM_RANGE(0x502a00, 0x502a01) AM_WRITEONLY AM_SHARE("scroll_y.1") - AM_RANGE(0x502c00, 0x502c01) AM_WRITEONLY AM_SHARE("scroll_y.2") - AM_RANGE(0x502e00, 0x502e01) AM_WRITEONLY AM_SHARE("scroll_y.3") - AM_RANGE(0x503000, 0x503001) AM_WRITE(lordgun_priority_w) - AM_RANGE(0x503800, 0x503801) AM_READ(lordgun_gun_0_x_r) - AM_RANGE(0x503a00, 0x503a01) AM_READ(lordgun_gun_1_x_r) - AM_RANGE(0x503c00, 0x503c01) AM_READ(lordgun_gun_0_y_r) - AM_RANGE(0x503e00, 0x503e01) AM_READ(lordgun_gun_1_y_r) - AM_RANGE(0x504000, 0x504001) AM_WRITE(lordgun_soundlatch_w) - AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff) - AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff) - AM_RANGE(0x50a900, 0x50a9ff) AM_READWRITE(lordgun_protection_r, lordgun_protection_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lordgun_state::aliencha_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("priority_ram") // PRIORITY - AM_RANGE(0x300000, 0x30ffff) AM_RAM_WRITE(lordgun_vram_0_w) AM_SHARE("vram.0") // BACKGROUND 1 - AM_RANGE(0x310000, 0x313fff) AM_RAM_WRITE(lordgun_vram_1_w) AM_SHARE("vram.1") // BACKGROUND 2 - AM_RANGE(0x314000, 0x314fff) AM_RAM_WRITE(lordgun_vram_2_w) AM_SHARE("vram.2") // BACKGROUND 3 - AM_RANGE(0x315000, 0x317fff) AM_RAM // - AM_RANGE(0x318000, 0x319fff) AM_RAM_WRITE(lordgun_vram_3_w) AM_SHARE("vram.3") // TEXT - AM_RANGE(0x31c000, 0x31c7ff) AM_RAM AM_SHARE("scrollram") // LINE OFFSET - AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("spriteram") // ANIMATE - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(lordgun_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x502000, 0x502001) AM_WRITEONLY AM_SHARE("scroll_x.0") - AM_RANGE(0x502200, 0x502201) AM_WRITEONLY AM_SHARE("scroll_x.1") - AM_RANGE(0x502400, 0x502401) AM_WRITEONLY AM_SHARE("scroll_x.2") - AM_RANGE(0x502600, 0x502601) AM_WRITEONLY AM_SHARE("scroll_x.3") - AM_RANGE(0x502800, 0x502801) AM_WRITEONLY AM_SHARE("scroll_y.0") - AM_RANGE(0x502a00, 0x502a01) AM_WRITEONLY AM_SHARE("scroll_y.1") - AM_RANGE(0x502c00, 0x502c01) AM_WRITEONLY AM_SHARE("scroll_y.2") - AM_RANGE(0x502e00, 0x502e01) AM_WRITEONLY AM_SHARE("scroll_y.3") - AM_RANGE(0x503000, 0x503001) AM_WRITE(lordgun_priority_w) - AM_RANGE(0x504000, 0x504001) AM_WRITE(lordgun_soundlatch_w) - AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff) - AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff) - AM_RANGE(0x50b900, 0x50b9ff) AM_READWRITE(aliencha_protection_r, aliencha_protection_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lordgun_state::ymf278_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM -ADDRESS_MAP_END +void lordgun_state::lordgun_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x210000, 0x21ffff).ram().share("priority_ram"); // PRIORITY + map(0x300000, 0x30ffff).ram().w(this, FUNC(lordgun_state::lordgun_vram_0_w)).share("vram.0"); // DISPLAY + map(0x310000, 0x313fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_1_w)).share("vram.1"); // DISPLAY + map(0x314000, 0x314fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_2_w)).share("vram.2"); // DISPLAY + map(0x315000, 0x317fff).ram(); // + map(0x318000, 0x319fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_3_w)).share("vram.3"); // DISPLAY + map(0x31c000, 0x31c7ff).ram().share("scrollram"); // LINE + map(0x400000, 0x4007ff).ram().share("spriteram"); // ANIMATOR + map(0x500000, 0x500fff).ram().w(this, FUNC(lordgun_state::lordgun_paletteram_w)).share("paletteram"); + map(0x502000, 0x502001).writeonly().share("scroll_x.0"); + map(0x502200, 0x502201).writeonly().share("scroll_x.1"); + map(0x502400, 0x502401).writeonly().share("scroll_x.2"); + map(0x502600, 0x502601).writeonly().share("scroll_x.3"); + map(0x502800, 0x502801).writeonly().share("scroll_y.0"); + map(0x502a00, 0x502a01).writeonly().share("scroll_y.1"); + map(0x502c00, 0x502c01).writeonly().share("scroll_y.2"); + map(0x502e00, 0x502e01).writeonly().share("scroll_y.3"); + map(0x503000, 0x503001).w(this, FUNC(lordgun_state::lordgun_priority_w)); + map(0x503800, 0x503801).r(this, FUNC(lordgun_state::lordgun_gun_0_x_r)); + map(0x503a00, 0x503a01).r(this, FUNC(lordgun_state::lordgun_gun_1_x_r)); + map(0x503c00, 0x503c01).r(this, FUNC(lordgun_state::lordgun_gun_0_y_r)); + map(0x503e00, 0x503e01).r(this, FUNC(lordgun_state::lordgun_gun_1_y_r)); + map(0x504000, 0x504001).w(this, FUNC(lordgun_state::lordgun_soundlatch_w)); + map(0x506000, 0x506007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x508000, 0x508007).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x50a900, 0x50a9ff).rw(this, FUNC(lordgun_state::lordgun_protection_r), FUNC(lordgun_state::lordgun_protection_w)); +} + + +void lordgun_state::aliencha_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x210000, 0x21ffff).ram().share("priority_ram"); // PRIORITY + map(0x300000, 0x30ffff).ram().w(this, FUNC(lordgun_state::lordgun_vram_0_w)).share("vram.0"); // BACKGROUND 1 + map(0x310000, 0x313fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_1_w)).share("vram.1"); // BACKGROUND 2 + map(0x314000, 0x314fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_2_w)).share("vram.2"); // BACKGROUND 3 + map(0x315000, 0x317fff).ram(); // + map(0x318000, 0x319fff).ram().w(this, FUNC(lordgun_state::lordgun_vram_3_w)).share("vram.3"); // TEXT + map(0x31c000, 0x31c7ff).ram().share("scrollram"); // LINE OFFSET + map(0x400000, 0x4007ff).ram().share("spriteram"); // ANIMATE + map(0x500000, 0x500fff).ram().w(this, FUNC(lordgun_state::lordgun_paletteram_w)).share("paletteram"); + map(0x502000, 0x502001).writeonly().share("scroll_x.0"); + map(0x502200, 0x502201).writeonly().share("scroll_x.1"); + map(0x502400, 0x502401).writeonly().share("scroll_x.2"); + map(0x502600, 0x502601).writeonly().share("scroll_x.3"); + map(0x502800, 0x502801).writeonly().share("scroll_y.0"); + map(0x502a00, 0x502a01).writeonly().share("scroll_y.1"); + map(0x502c00, 0x502c01).writeonly().share("scroll_y.2"); + map(0x502e00, 0x502e01).writeonly().share("scroll_y.3"); + map(0x503000, 0x503001).w(this, FUNC(lordgun_state::lordgun_priority_w)); + map(0x504000, 0x504001).w(this, FUNC(lordgun_state::lordgun_soundlatch_w)); + map(0x506000, 0x506007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x508000, 0x508007).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x50b900, 0x50b9ff).rw(this, FUNC(lordgun_state::aliencha_protection_r), FUNC(lordgun_state::aliencha_protection_w)); +} + +void lordgun_state::ymf278_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); +} /*************************************************************************** @@ -347,10 +350,11 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(lordgun_state::lordgun_soundmem_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void lordgun_state::lordgun_soundmem_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram(); +} WRITE8_MEMBER(lordgun_state::lordgun_okibank_w) { @@ -359,25 +363,27 @@ WRITE8_MEMBER(lordgun_state::lordgun_okibank_w) // popmessage("OKI %x", data); } -ADDRESS_MAP_START(lordgun_state::lordgun_soundio_map) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x5000, 0x5000) AM_READNOP - AM_RANGE(0x6000, 0x6000) AM_WRITE(lordgun_okibank_w ) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(lordgun_state::aliencha_soundio_map) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x5000, 0x5000) AM_WRITENOP // writes 03 then 07 at end of NMI - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("ymf", ymf278b_device, read) - AM_RANGE(0x7000, 0x7005) AM_DEVWRITE("ymf", ymf278b_device, write) - AM_RANGE(0x7400, 0x7400) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x7800, 0x7800) AM_DEVREADWRITE("oki2", okim6295_device, read, write) -ADDRESS_MAP_END +void lordgun_state::lordgun_soundio_map(address_map &map) +{ + map(0x1000, 0x1001).w("ymsnd", FUNC(ym3812_device::write)); + map(0x2000, 0x2000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x3000, 0x3000).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x5000, 0x5000).nopr(); + map(0x6000, 0x6000).w(this, FUNC(lordgun_state::lordgun_okibank_w)); +} + + +void lordgun_state::aliencha_soundio_map(address_map &map) +{ + map(0x3000, 0x3000).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x5000, 0x5000).nopw(); // writes 03 then 07 at end of NMI + map(0x7000, 0x7000).r("ymf", FUNC(ymf278b_device::read)); + map(0x7000, 0x7005).w("ymf", FUNC(ymf278b_device::write)); + map(0x7400, 0x7400).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x7800, 0x7800).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/lsasquad.cpp b/src/mame/drivers/lsasquad.cpp index 2749ac6dadb..1c4cfec6a25 100644 --- a/src/mame/drivers/lsasquad.cpp +++ b/src/mame/drivers/lsasquad.cpp @@ -170,63 +170,66 @@ WRITE8_MEMBER(lsasquad_state::lsasquad_bankswitch_w) /* other bits unknown */ } -ADDRESS_MAP_START(lsasquad_state::lsasquad_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM /* SRAM */ - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") /* SCREEN RAM */ - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("scrollram") /* SCROLL RAM */ - AM_RANGE(0xe400, 0xe5ff) AM_RAM AM_SHARE("spriteram") /* OBJECT RAM */ - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA") - AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB") - AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSWC") - AM_RANGE(0xe803, 0xe803) AM_READ(lsasquad_mcu_status_r) /* COIN + 68705 status */ - AM_RANGE(0xe804, 0xe804) AM_READ_PORT("P1") - AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2") - AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START") - AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE") - AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w) - AM_RANGE(0xec00, 0xec00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r) - AM_RANGE(0xee00, 0xee00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lsasquad_state::lsasquad_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w) - AM_RANGE(0xd800, 0xd800) AM_WRITE(lsasquad_sh_nmi_enable_w) - AM_RANGE(0xd800, 0xd800) AM_READ(lsasquad_sound_status_r) - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */ -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(lsasquad_state::storming_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM /* SRAM */ - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") /* SCREEN RAM */ - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("scrollram") /* SCROLL RAM */ - AM_RANGE(0xe400, 0xe5ff) AM_RAM AM_SHARE("spriteram") /* OBJECT RAM */ - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA") - AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB") - AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSWC") - AM_RANGE(0xe803, 0xe803) AM_READ_PORT("COINS") - AM_RANGE(0xe804, 0xe804) AM_READ_PORT("P1") - AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2") - AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START") - AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE") - AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w) - AM_RANGE(0xec00, 0xec00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r) -ADDRESS_MAP_END +void lsasquad_state::lsasquad_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram(); /* SRAM */ + map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */ + map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */ + map(0xe400, 0xe5ff).ram().share("spriteram"); /* OBJECT RAM */ + map(0xe800, 0xe800).portr("DSWA"); + map(0xe801, 0xe801).portr("DSWB"); + map(0xe802, 0xe802).portr("DSWC"); + map(0xe803, 0xe803).r(this, FUNC(lsasquad_state::lsasquad_mcu_status_r)); /* COIN + 68705 status */ + map(0xe804, 0xe804).portr("P1"); + map(0xe805, 0xe805).portr("P2"); + map(0xe806, 0xe806).portr("START"); + map(0xe807, 0xe807).portr("SERVICE"); + map(0xea00, 0xea00).w(this, FUNC(lsasquad_state::lsasquad_bankswitch_w)); + map(0xec00, 0xec00).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xec01, 0xec01).r(this, FUNC(lsasquad_state::lsasquad_sound_status_r)); + map(0xee00, 0xee00).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); +} + +void lsasquad_state::lsasquad_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xd400, 0xd400).w(this, FUNC(lsasquad_state::lsasquad_sh_nmi_disable_w)); + map(0xd800, 0xd800).w(this, FUNC(lsasquad_state::lsasquad_sh_nmi_enable_w)); + map(0xd800, 0xd800).r(this, FUNC(lsasquad_state::lsasquad_sound_status_r)); + map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */ +} + + + +void lsasquad_state::storming_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram(); /* SRAM */ + map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */ + map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */ + map(0xe400, 0xe5ff).ram().share("spriteram"); /* OBJECT RAM */ + map(0xe800, 0xe800).portr("DSWA"); + map(0xe801, 0xe801).portr("DSWB"); + map(0xe802, 0xe802).portr("DSWC"); + map(0xe803, 0xe803).portr("COINS"); + map(0xe804, 0xe804).portr("P1"); + map(0xe805, 0xe805).portr("P2"); + map(0xe806, 0xe806).portr("START"); + map(0xe807, 0xe807).portr("SERVICE"); + map(0xea00, 0xea00).w(this, FUNC(lsasquad_state::lsasquad_bankswitch_w)); + map(0xec00, 0xec00).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xec01, 0xec01).r(this, FUNC(lsasquad_state::lsasquad_sound_status_r)); +} static INPUT_PORTS_START( lsasquad ) @@ -371,36 +374,38 @@ INPUT_PORTS_END /* DAIKAIJU */ -ADDRESS_MAP_START(lsasquad_state::daikaiju_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM /* SRAM */ - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") /* SCREEN RAM */ - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("scrollram") /* SCROLL RAM */ - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") /* OBJECT RAM */ - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA") - AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB") - AM_RANGE(0xe803, 0xe803) AM_READ(daikaiju_mcu_status_r) /* COIN + 68705 status */ - AM_RANGE(0xe804, 0xe804) AM_READ_PORT("P1") - AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2") - AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START") - AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE") - AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xee00, 0xee00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lsasquad_state::daikaiju_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w) - AM_RANGE(0xd800, 0xd800) AM_READWRITE(daikaiju_sound_status_r, lsasquad_sh_nmi_enable_w) - AM_RANGE(0xdc00, 0xdc00) AM_WRITENOP - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */ -ADDRESS_MAP_END +void lsasquad_state::daikaiju_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram(); /* SRAM */ + map(0xc000, 0xdfff).ram().share("videoram"); /* SCREEN RAM */ + map(0xe000, 0xe3ff).ram().share("scrollram"); /* SCROLL RAM */ + map(0xe400, 0xe7ff).ram().share("spriteram"); /* OBJECT RAM */ + map(0xe800, 0xe800).portr("DSWA"); + map(0xe801, 0xe801).portr("DSWB"); + map(0xe803, 0xe803).r(this, FUNC(lsasquad_state::daikaiju_mcu_status_r)); /* COIN + 68705 status */ + map(0xe804, 0xe804).portr("P1"); + map(0xe805, 0xe805).portr("P2"); + map(0xe806, 0xe806).portr("START"); + map(0xe807, 0xe807).portr("SERVICE"); + map(0xea00, 0xea00).w(this, FUNC(lsasquad_state::lsasquad_bankswitch_w)); + map(0xec00, 0xec00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xee00, 0xee00).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); +} + +void lsasquad_state::daikaiju_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc000, 0xc001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd400, 0xd400).w(this, FUNC(lsasquad_state::lsasquad_sh_nmi_disable_w)); + map(0xd800, 0xd800).rw(this, FUNC(lsasquad_state::daikaiju_sound_status_r), FUNC(lsasquad_state::lsasquad_sh_nmi_enable_w)); + map(0xdc00, 0xdc00).nopw(); + map(0xe000, 0xefff).rom(); /* space for diagnostic ROM? */ +} static INPUT_PORTS_START( daikaiju ) PORT_START("DSWA") diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp index b63d841a0fa..4c0bd5506bd 100644 --- a/src/mame/drivers/ltcasino.cpp +++ b/src/mame/drivers/ltcasino.cpp @@ -81,28 +81,29 @@ WRITE8_MEMBER(ltcasino_state::ltcasino_tile_atr_w) } -ADDRESS_MAP_START(ltcasino_state::ltcasino_map) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ltcasino_tile_num_w) AM_SHARE("tile_nuram") - AM_RANGE(0xd800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ltcasino_tile_atr_w) AM_SHARE("tile_atr_ram") - AM_RANGE(0xe800, 0xebff) AM_RAM - - AM_RANGE(0xec00, 0xec00) AM_READ_PORT("IN0") - AM_RANGE(0xec01, 0xec01) AM_READ_PORT("IN1") - AM_RANGE(0xec02, 0xec02) AM_READ_PORT("IN2") - AM_RANGE(0xec03, 0xec03) AM_READ_PORT("IN3") - AM_RANGE(0xec10, 0xec10) AM_READ_PORT("IN4") - AM_RANGE(0xec12, 0xec12) AM_READ_PORT("IN5") - - AM_RANGE(0xec20, 0xec20) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xec21, 0xec21) AM_READ_PORT("BUTTONS") //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service) - AM_RANGE(0xec20, 0xec21) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0xec30, 0xec3f) AM_RAM - AM_RANGE(0xec3e, 0xec3e) AM_READNOP //not used - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ltcasino_state::ltcasino_map(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xcfff).rom(); + map(0xd000, 0xd7ff).ram().w(this, FUNC(ltcasino_state::ltcasino_tile_num_w)).share("tile_nuram"); + map(0xd800, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(ltcasino_state::ltcasino_tile_atr_w)).share("tile_atr_ram"); + map(0xe800, 0xebff).ram(); + + map(0xec00, 0xec00).portr("IN0"); + map(0xec01, 0xec01).portr("IN1"); + map(0xec02, 0xec02).portr("IN2"); + map(0xec03, 0xec03).portr("IN3"); + map(0xec10, 0xec10).portr("IN4"); + map(0xec12, 0xec12).portr("IN5"); + + map(0xec20, 0xec20).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xec21, 0xec21).portr("BUTTONS"); //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service) + map(0xec20, 0xec21).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0xec30, 0xec3f).ram(); + map(0xec3e, 0xec3e).nopr(); //not used + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( ltcasino ) diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp index c4a52e757e5..c586ef2e4dd 100644 --- a/src/mame/drivers/ltd.cpp +++ b/src/mame/drivers/ltd.cpp @@ -92,32 +92,35 @@ private: }; -ADDRESS_MAP_START(ltd_state::ltd3_map) - AM_RANGE(0x0000, 0x007f) AM_RAM AM_SHARE("nvram") // internal to the cpu - AM_RANGE(0x0080, 0x0087) AM_MIRROR(0x78) AM_READ(io_r) - AM_RANGE(0x0800, 0x2fff) AM_WRITE(io_w) - AM_RANGE(0xc000, 0xcfff) AM_ROM AM_MIRROR(0x3000) AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ltd_state::ltd4_map) - AM_RANGE(0x0000, 0x001f) AM_RAM // internal to the cpu - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0800) AM_WRITE(count_reset_w) - AM_RANGE(0x0c00, 0x0c00) AM_DEVWRITE("aysnd_1", ay8910_device, reset_w) - AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("aysnd_0", ay8910_device, address_w) - AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("aysnd_0", ay8910_device, reset_w) - AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("aysnd_1", ay8910_device, address_w) +void ltd_state::ltd3_map(address_map &map) +{ + map(0x0000, 0x007f).ram().share("nvram"); // internal to the cpu + map(0x0080, 0x0087).mirror(0x78).r(this, FUNC(ltd_state::io_r)); + map(0x0800, 0x2fff).w(this, FUNC(ltd_state::io_w)); + map(0xc000, 0xcfff).rom().mirror(0x3000).region("roms", 0); +} + +void ltd_state::ltd4_map(address_map &map) +{ + map(0x0000, 0x001f).ram(); // internal to the cpu + map(0x0080, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); + map(0x0800, 0x0800).w(this, FUNC(ltd_state::count_reset_w)); + map(0x0c00, 0x0c00).w("aysnd_1", FUNC(ay8910_device::reset_w)); + map(0x1000, 0x1000).w("aysnd_0", FUNC(ay8910_device::address_w)); + map(0x1400, 0x1400).w("aysnd_0", FUNC(ay8910_device::reset_w)); + map(0x1800, 0x1800).w("aysnd_1", FUNC(ay8910_device::address_w)); //AM_RANGE(0x2800, 0x2800) AM_WRITE(auxlamps_w) - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("aysnd_0", ay8910_device, data_w) - AM_RANGE(0x3800, 0x3800) AM_DEVWRITE("aysnd_1", ay8910_device, data_w) - AM_RANGE(0xc000, 0xdfff) AM_ROM AM_MIRROR(0x2000) AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ltd_state::ltd4_io) - AM_RANGE(0x0100, 0x0100) AM_READWRITE(port1_r,port1_w) - AM_RANGE(0x0101, 0x0101) AM_READWRITE(port2_r,port2_w) -ADDRESS_MAP_END + map(0x3000, 0x3000).w("aysnd_0", FUNC(ay8910_device::data_w)); + map(0x3800, 0x3800).w("aysnd_1", FUNC(ay8910_device::data_w)); + map(0xc000, 0xdfff).rom().mirror(0x2000).region("roms", 0); +} + +void ltd_state::ltd4_io(address_map &map) +{ + map(0x0100, 0x0100).rw(this, FUNC(ltd_state::port1_r), FUNC(ltd_state::port1_w)); + map(0x0101, 0x0101).rw(this, FUNC(ltd_state::port2_r), FUNC(ltd_state::port2_w)); +} // bits 6,7 not connected to data bus // 1=does something in Atlantis; 2=does something in Black Hole; note that sometimes pressing G or H will reboot the machine. diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp index ef9607377a2..8c45122f184 100644 --- a/src/mame/drivers/luckgrln.cpp +++ b/src/mame/drivers/luckgrln.cpp @@ -399,47 +399,49 @@ uint32_t luckgrln_state::screen_update_luckgrln(screen_device &screen, bitmap_in return 0; } -ADDRESS_MAP_START(luckgrln_state::mainmap) - AM_RANGE(0x00000, 0x03fff) AM_ROM - AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("rom_data",0x10000) - AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("rom_data",0x00000) +void luckgrln_state::mainmap(address_map &map) +{ + map(0x00000, 0x03fff).rom(); + map(0x10000, 0x1ffff).rom().region("rom_data", 0x10000); + map(0x20000, 0x2ffff).rom().region("rom_data", 0x00000); - AM_RANGE(0x0c000, 0x0c1ff) AM_RAM_WRITE(luckgrln_reel1_ram_w) AM_SHARE("reel1_ram") // only written to half way - AM_RANGE(0x0c800, 0x0c9ff) AM_RAM_WRITE(luckgrln_reel1_attr_w) AM_SHARE("reel1_attr") - AM_RANGE(0x0d000, 0x0d03f) AM_RAM AM_SHARE("reel1_scroll") AM_MIRROR(0x000c0) + map(0x0c000, 0x0c1ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel1_ram_w)).share("reel1_ram"); // only written to half way + map(0x0c800, 0x0c9ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel1_attr_w)).share("reel1_attr"); + map(0x0d000, 0x0d03f).ram().share("reel1_scroll").mirror(0x000c0); - AM_RANGE(0x0c200, 0x0c3ff) AM_RAM_WRITE(luckgrln_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE(0x0ca00, 0x0cbff) AM_RAM_WRITE(luckgrln_reel2_attr_w) AM_SHARE("reel2_attr") - AM_RANGE(0x0d200, 0x0d23f) AM_RAM AM_SHARE("reel2_scroll") AM_MIRROR(0x000c0) + map(0x0c200, 0x0c3ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel2_ram_w)).share("reel2_ram"); + map(0x0ca00, 0x0cbff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel2_attr_w)).share("reel2_attr"); + map(0x0d200, 0x0d23f).ram().share("reel2_scroll").mirror(0x000c0); - AM_RANGE(0x0c400, 0x0c5ff) AM_RAM_WRITE(luckgrln_reel3_ram_w ) AM_SHARE("reel3_ram") - AM_RANGE(0x0cc00, 0x0cdff) AM_RAM_WRITE(luckgrln_reel3_attr_w) AM_SHARE("reel3_attr") - AM_RANGE(0x0d400, 0x0d43f) AM_RAM AM_SHARE("reel3_scroll") AM_MIRROR(0x000c0) + map(0x0c400, 0x0c5ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel3_ram_w)).share("reel3_ram"); + map(0x0cc00, 0x0cdff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel3_attr_w)).share("reel3_attr"); + map(0x0d400, 0x0d43f).ram().share("reel3_scroll").mirror(0x000c0); - AM_RANGE(0x0c600, 0x0c7ff) AM_RAM_WRITE(luckgrln_reel4_ram_w ) AM_SHARE("reel4_ram") - AM_RANGE(0x0ce00, 0x0cfff) AM_RAM_WRITE(luckgrln_reel4_attr_w) AM_SHARE("reel4_attr") - AM_RANGE(0x0d600, 0x0d63f) AM_RAM AM_SHARE("reel4_scroll") + map(0x0c600, 0x0c7ff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel4_ram_w)).share("reel4_ram"); + map(0x0ce00, 0x0cfff).ram().w(this, FUNC(luckgrln_state::luckgrln_reel4_attr_w)).share("reel4_attr"); + map(0x0d600, 0x0d63f).ram().share("reel4_scroll"); // AM_RANGE(0x0d200, 0x0d2ff) AM_RAM - AM_RANGE(0x0d800, 0x0dfff) AM_RAM // nvram + map(0x0d800, 0x0dfff).ram(); // nvram - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM AM_SHARE("luck_vram1") - AM_RANGE(0x0e800, 0x0efff) AM_RAM AM_SHARE("luck_vram2") - AM_RANGE(0x0f000, 0x0f7ff) AM_RAM AM_SHARE("luck_vram3") + map(0x0e000, 0x0e7ff).ram().share("luck_vram1"); + map(0x0e800, 0x0efff).ram().share("luck_vram2"); + map(0x0f000, 0x0f7ff).ram().share("luck_vram3"); - AM_RANGE(0x0f800, 0x0ffff) AM_RAM - AM_RANGE(0xf0000, 0xfffff) AM_RAM -ADDRESS_MAP_END + map(0x0f800, 0x0ffff).ram(); + map(0xf0000, 0xfffff).ram(); +} -ADDRESS_MAP_START(luckgrln_state::_7smash_map) - AM_IMPORT_FROM( mainmap ) - AM_RANGE(0x00000, 0x0bfff) AM_ROM - AM_RANGE(0x10000, 0x2ffff) AM_UNMAP - AM_RANGE(0xf0000, 0xfffff) AM_UNMAP -ADDRESS_MAP_END +void luckgrln_state::_7smash_map(address_map &map) +{ + mainmap(map); + map(0x00000, 0x0bfff).rom(); + map(0x10000, 0x2ffff).unmaprw(); + map(0xf0000, 0xfffff).unmaprw(); +} WRITE8_MEMBER(luckgrln_state::output_w) { @@ -553,47 +555,48 @@ WRITE8_MEMBER(luckgrln_state::counters_w) /* are some of these reads / writes mirrored? there seem to be far too many */ -ADDRESS_MAP_START(luckgrln_state::common_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x003f) AM_RAM // Z180 internal regs - AM_RANGE(0x0060, 0x0060) AM_WRITE(output_w) - - AM_RANGE(0x00a0, 0x00a0) AM_WRITE(palette_offset_low_w) - AM_RANGE(0x00a1, 0x00a1) AM_WRITE(palette_offset_high_w) - AM_RANGE(0x00a2, 0x00a2) AM_WRITE(palette_w) - - AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x00b1, 0x00b1) AM_DEVWRITE("crtc", mc6845_device, register_w) - - AM_RANGE(0x00b8, 0x00b8) AM_READ_PORT("IN0") - AM_RANGE(0x00b9, 0x00b9) AM_READ_PORT("IN1") AM_WRITE(counters_w) - AM_RANGE(0x00ba, 0x00ba) AM_READ_PORT("IN2") AM_WRITE(lamps_a_w) - AM_RANGE(0x00bb, 0x00bb) AM_READ_PORT("IN3") AM_WRITE(lamps_b_w) - AM_RANGE(0x00bc, 0x00bc) AM_READ_PORT("DSW1") - - AM_RANGE(0x00c0, 0x00c3) AM_WRITENOP - AM_RANGE(0x00c4, 0x00c7) AM_WRITENOP - AM_RANGE(0x00c8, 0x00cb) AM_WRITENOP - AM_RANGE(0x00cc, 0x00cf) AM_WRITENOP - - AM_RANGE(0x00d0, 0x00d3) AM_WRITENOP - AM_RANGE(0x00d4, 0x00d7) AM_WRITENOP - AM_RANGE(0x00d8, 0x00db) AM_WRITENOP - AM_RANGE(0x00dc, 0x00df) AM_WRITENOP - - AM_RANGE(0x00e4, 0x00e7) AM_WRITENOP - - AM_RANGE(0x00f3, 0x00f3) AM_WRITENOP - AM_RANGE(0x00f7, 0x00f7) AM_WRITENOP - - AM_RANGE(0x00f8, 0x00f8) AM_READ_PORT("DSW2") - AM_RANGE(0x00f9, 0x00f9) AM_READ_PORT("DSW3") - AM_RANGE(0x00fa, 0x00fa) AM_READ_PORT("DSW4") - AM_RANGE(0x00fb, 0x00fb) AM_READ_PORT("DSW5") //AM_WRITENOP - AM_RANGE(0x00fc, 0x00fc) AM_WRITENOP - AM_RANGE(0x00fd, 0x00fd) AM_WRITENOP - AM_RANGE(0x00fe, 0x00fe) AM_WRITENOP - AM_RANGE(0x00ff, 0x00ff) AM_WRITENOP +void luckgrln_state::common_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x003f).ram(); // Z180 internal regs + map(0x0060, 0x0060).w(this, FUNC(luckgrln_state::output_w)); + + map(0x00a0, 0x00a0).w(this, FUNC(luckgrln_state::palette_offset_low_w)); + map(0x00a1, 0x00a1).w(this, FUNC(luckgrln_state::palette_offset_high_w)); + map(0x00a2, 0x00a2).w(this, FUNC(luckgrln_state::palette_w)); + + map(0x00b0, 0x00b0).w("crtc", FUNC(mc6845_device::address_w)); + map(0x00b1, 0x00b1).w("crtc", FUNC(mc6845_device::register_w)); + + map(0x00b8, 0x00b8).portr("IN0"); + map(0x00b9, 0x00b9).portr("IN1").w(this, FUNC(luckgrln_state::counters_w)); + map(0x00ba, 0x00ba).portr("IN2").w(this, FUNC(luckgrln_state::lamps_a_w)); + map(0x00bb, 0x00bb).portr("IN3").w(this, FUNC(luckgrln_state::lamps_b_w)); + map(0x00bc, 0x00bc).portr("DSW1"); + + map(0x00c0, 0x00c3).nopw(); + map(0x00c4, 0x00c7).nopw(); + map(0x00c8, 0x00cb).nopw(); + map(0x00cc, 0x00cf).nopw(); + + map(0x00d0, 0x00d3).nopw(); + map(0x00d4, 0x00d7).nopw(); + map(0x00d8, 0x00db).nopw(); + map(0x00dc, 0x00df).nopw(); + + map(0x00e4, 0x00e7).nopw(); + + map(0x00f3, 0x00f3).nopw(); + map(0x00f7, 0x00f7).nopw(); + + map(0x00f8, 0x00f8).portr("DSW2"); + map(0x00f9, 0x00f9).portr("DSW3"); + map(0x00fa, 0x00fa).portr("DSW4"); + map(0x00fb, 0x00fb).portr("DSW5"); //AM_WRITENOP + map(0x00fc, 0x00fc).nopw(); + map(0x00fd, 0x00fd).nopw(); + map(0x00fe, 0x00fe).nopw(); + map(0x00ff, 0x00ff).nopw(); /* @@ -603,12 +606,13 @@ ADDRESS_MAP_START(luckgrln_state::common_portmap) */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(luckgrln_state::luckgrln_io) - AM_IMPORT_FROM( common_portmap ) - AM_RANGE(0x0090, 0x009f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) -ADDRESS_MAP_END +void luckgrln_state::luckgrln_io(address_map &map) +{ + common_portmap(map); + map(0x0090, 0x009f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); +} /* reads a bit 1 status there after every round played */ READ8_MEMBER(luckgrln_state::test_r) @@ -616,10 +620,11 @@ READ8_MEMBER(luckgrln_state::test_r) return 0xff; } -ADDRESS_MAP_START(luckgrln_state::_7smash_io) - AM_IMPORT_FROM( common_portmap ) - AM_RANGE(0x66, 0x66) AM_READ(test_r) -ADDRESS_MAP_END +void luckgrln_state::_7smash_io(address_map &map) +{ + common_portmap(map); + map(0x66, 0x66).r(this, FUNC(luckgrln_state::test_r)); +} static INPUT_PORTS_START( luckgrln ) PORT_START("IN0") diff --git a/src/mame/drivers/lucky74.cpp b/src/mame/drivers/lucky74.cpp index 020aace5b80..c48e7062f4c 100644 --- a/src/mame/drivers/lucky74.cpp +++ b/src/mame/drivers/lucky74.cpp @@ -926,31 +926,33 @@ INTERRUPT_GEN_MEMBER(lucky74_state::nmi_interrupt) * Memory Map Information * *************************/ -ADDRESS_MAP_START(lucky74_state::lucky74_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("nvram") /* NVRAM */ - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(lucky74_fg_videoram_w) AM_SHARE("fg_videoram") /* VRAM1-1 */ - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(lucky74_fg_colorram_w) AM_SHARE("fg_colorram") /* VRAM1-2 */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lucky74_bg_videoram_w) AM_SHARE("bg_videoram") /* VRAM2-1 */ - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lucky74_bg_colorram_w) AM_SHARE("bg_colorram") /* VRAM2-2 */ - AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports 0 & 1 */ - AM_RANGE(0xf080, 0xf083) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* DSW 1, 2 & 3 */ - AM_RANGE(0xf0c0, 0xf0c3) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* DSW 4 */ - AM_RANGE(0xf100, 0xf100) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */ - AM_RANGE(0xf200, 0xf203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports 2 & 4 */ - AM_RANGE(0xf300, 0xf300) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */ - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* YM2149 control */ - AM_RANGE(0xf500, 0xf500) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */ - AM_RANGE(0xf600, 0xf600) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) /* YM2149 (Input Port 1) */ - AM_RANGE(0xf700, 0xf701) AM_READWRITE(usart_8251_r, usart_8251_w) /* USART 8251 port */ - AM_RANGE(0xf800, 0xf803) AM_READWRITE(copro_sm7831_r, copro_sm7831_w) /* SM7831 Co-Processor */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(lucky74_state::lucky74_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x05) AM_READWRITE(custom_09R81P_port_r, custom_09R81P_port_w) /* custom 09R81P (samples system) */ - AM_RANGE(0xff, 0xff) AM_RAM // presumably HS satellite control port (check patched in Lucky 74) -ADDRESS_MAP_END +void lucky74_state::lucky74_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().share("nvram"); /* NVRAM */ + map(0xd000, 0xd7ff).ram().w(this, FUNC(lucky74_state::lucky74_fg_videoram_w)).share("fg_videoram"); /* VRAM1-1 */ + map(0xd800, 0xdfff).ram().w(this, FUNC(lucky74_state::lucky74_fg_colorram_w)).share("fg_colorram"); /* VRAM1-2 */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(lucky74_state::lucky74_bg_videoram_w)).share("bg_videoram"); /* VRAM2-1 */ + map(0xe800, 0xefff).ram().w(this, FUNC(lucky74_state::lucky74_bg_colorram_w)).share("bg_colorram"); /* VRAM2-2 */ + map(0xf000, 0xf003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports 0 & 1 */ + map(0xf080, 0xf083).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DSW 1, 2 & 3 */ + map(0xf0c0, 0xf0c3).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* DSW 4 */ + map(0xf100, 0xf100).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */ + map(0xf200, 0xf203).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports 2 & 4 */ + map(0xf300, 0xf300).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */ + map(0xf400, 0xf400).w("aysnd", FUNC(ay8910_device::address_w)); /* YM2149 control */ + map(0xf500, 0xf500).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */ + map(0xf600, 0xf600).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); /* YM2149 (Input Port 1) */ + map(0xf700, 0xf701).rw(this, FUNC(lucky74_state::usart_8251_r), FUNC(lucky74_state::usart_8251_w)); /* USART 8251 port */ + map(0xf800, 0xf803).rw(this, FUNC(lucky74_state::copro_sm7831_r), FUNC(lucky74_state::copro_sm7831_w)); /* SM7831 Co-Processor */ +} + +void lucky74_state::lucky74_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x05).rw(this, FUNC(lucky74_state::custom_09R81P_port_r), FUNC(lucky74_state::custom_09R81P_port_w)); /* custom 09R81P (samples system) */ + map(0xff, 0xff).ram(); // presumably HS satellite control port (check patched in Lucky 74) +} /* unknown I/O byte R/W diff --git a/src/mame/drivers/luckybal.cpp b/src/mame/drivers/luckybal.cpp index 1f26a2d0ba0..b06cce32f84 100644 --- a/src/mame/drivers/luckybal.cpp +++ b/src/mame/drivers/luckybal.cpp @@ -322,17 +322,19 @@ public: * Memory Map * **************************************/ -ADDRESS_MAP_START(luckybal_state::main_map) - AM_RANGE(0x0000, 0x57ff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM // 6264 SRAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(luckybal_state::main_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x90, 0x90) AM_WRITE(port90_bitswap_w) - AM_RANGE(0xc0, 0xc3) AM_READWRITE(ppi_bitswap_r, ppi_bitswap_w) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("v9938", v9938_device, read, write) -ADDRESS_MAP_END +void luckybal_state::main_map(address_map &map) +{ + map(0x0000, 0x57ff).rom(); + map(0xe000, 0xffff).ram(); // 6264 SRAM +} + +void luckybal_state::main_io(address_map &map) +{ + map.global_mask(0xff); + map(0x90, 0x90).w(this, FUNC(luckybal_state::port90_bitswap_w)); + map(0xc0, 0xc3).rw(this, FUNC(luckybal_state::ppi_bitswap_r), FUNC(luckybal_state::ppi_bitswap_w)); + map(0xe0, 0xe3).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); +} /* [:maincpu] ':maincpu' (00006): unmapped io memory write to 0010 = 00 & FF [:maincpu] ':maincpu' (00009): unmapped io memory read from 0018 & FF diff --git a/src/mame/drivers/lvcards.cpp b/src/mame/drivers/lvcards.cpp index e29e0b73162..bea92d0daeb 100644 --- a/src/mame/drivers/lvcards.cpp +++ b/src/mame/drivers/lvcards.cpp @@ -148,43 +148,47 @@ READ8_MEMBER(lvcards_state::payout_r) return m_result; } -ADDRESS_MAP_START(lvcards_state::ponttehk_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(lvcards_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(lvcards_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") AM_WRITENOP // lamps - AM_RANGE(0xa002, 0xa002) AM_READ(payout_r) AM_WRITE(control_port_2a_w)//AM_WRITENOP // ??? -ADDRESS_MAP_END - -ADDRESS_MAP_START(lvcards_state::lvcards_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(lvcards_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(lvcards_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0xc000, 0xdfff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(lvcards_state::lvcards_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lvcards_state::lvpoker_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(lvcards_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(lvcards_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") AM_WRITENOP // lamps - AM_RANGE(0xa002, 0xa002) AM_READ(payout_r) AM_WRITE(control_port_2_w) - AM_RANGE(0xc000, 0xdfff) AM_ROM -ADDRESS_MAP_END +void lvcards_state::ponttehk_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram().share("nvram"); + map(0x8000, 0x83ff).ram().w(this, FUNC(lvcards_state::lvcards_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(lvcards_state::lvcards_colorram_w)).share("colorram"); + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa001).portr("IN1").nopw(); // lamps + map(0xa002, 0xa002).r(this, FUNC(lvcards_state::payout_r)).w(this, FUNC(lvcards_state::control_port_2a_w));//AM_WRITENOP // ??? +} + +void lvcards_state::lvcards_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram().share("nvram"); + map(0x9000, 0x93ff).ram().w(this, FUNC(lvcards_state::lvcards_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(lvcards_state::lvcards_colorram_w)).share("colorram"); + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa001).portr("IN1").nopw(); + map(0xa002, 0xa002).portr("IN2").nopw(); + map(0xc000, 0xdfff).rom(); +} + +void lvcards_state::lvcards_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w)); +} + +void lvcards_state::lvpoker_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram().share("nvram"); + map(0x9000, 0x93ff).ram().w(this, FUNC(lvcards_state::lvcards_videoram_w)).share("videoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(lvcards_state::lvcards_colorram_w)).share("colorram"); + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa001).portr("IN1").nopw(); // lamps + map(0xa002, 0xa002).r(this, FUNC(lvcards_state::payout_r)).w(this, FUNC(lvcards_state::control_port_2_w)); + map(0xc000, 0xdfff).rom(); +} static INPUT_PORTS_START( lvcards ) PORT_START("IN0") diff --git a/src/mame/drivers/lviv.cpp b/src/mame/drivers/lviv.cpp index 84db4393cf1..55d09289878 100644 --- a/src/mame/drivers/lviv.cpp +++ b/src/mame/drivers/lviv.cpp @@ -297,18 +297,20 @@ Timings: /* I/O ports */ -ADDRESS_MAP_START(lviv_state::io_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(lviv_io_r,lviv_io_w) -ADDRESS_MAP_END +void lviv_state::io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(lviv_state::lviv_io_r), FUNC(lviv_state::lviv_io_w)); +} /* memory w/r functions */ -ADDRESS_MAP_START(lviv_state::lviv_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END +void lviv_state::lviv_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} /* keyboard input */ diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp index 1460c349a19..582be57bd72 100644 --- a/src/mame/drivers/lwings.cpp +++ b/src/mame/drivers/lwings.cpp @@ -285,109 +285,114 @@ WRITE8_MEMBER(lwings_state::msm5205_w) m_msm->vclk_w(0); } -ADDRESS_MAP_START(lwings_state::avengers_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdf80, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w) - AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w) - AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w) - AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w) - - AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP /* ? */ - AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") AM_WRITE(avengers_protection_w) - AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2") - AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWB") - AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWA") AM_WRITE(avengers_prot_bank_w) - AM_RANGE(0xf80d, 0xf80d) AM_READWRITE(avengers_protection_r,avengers_adpcm_w) - AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lwings_state::lwings_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - - AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") - AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") - AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w) - AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2") - AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA") - AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w) - AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf80d, 0xf80d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lwings_state::trojan_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdf80, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - - AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w) - AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w) - AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w) - AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w) - AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP //watchdog - AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") - AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2") - AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA") - AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf80d, 0xf80d) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lwings_state::lwings_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("2203a", ym2203_device, write) - AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("2203b", ym2203_device, write) - AM_RANGE(0xe006, 0xe006) AM_READ(avengers_soundlatch2_r) //AT: (avengers061gre) - AM_RANGE(0xe006, 0xe006) AM_WRITEONLY AM_SHARE("soundlatch_2") -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(lwings_state::fball_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xddff) AM_RAM - AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - - AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") - AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") - AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w) - AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2") - AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA") - AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w) - AM_RANGE(0xf80c, 0xf80c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf80d, 0xf80d) AM_READ_PORT("P3") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xf80e, 0xf80e) AM_READ_PORT("P4") - - AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w) -ADDRESS_MAP_END +void lwings_state::avengers_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xddff).ram(); + map(0xde00, 0xdf7f).ram().share("spriteram"); + map(0xdf80, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram"); + map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf800, 0xf801).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w)); + map(0xf802, 0xf803).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w)); + map(0xf804, 0xf804).w(this, FUNC(lwings_state::trojan_bg2_scrollx_w)); + map(0xf805, 0xf805).w(this, FUNC(lwings_state::trojan_bg2_image_w)); + + map(0xf808, 0xf808).portr("SERVICE").nopw(); /* ? */ + map(0xf809, 0xf809).portr("P1").w(this, FUNC(lwings_state::avengers_protection_w)); + map(0xf80a, 0xf80a).portr("P2"); + map(0xf80b, 0xf80b).portr("DSWB"); + map(0xf80c, 0xf80c).portr("DSWA").w(this, FUNC(lwings_state::avengers_prot_bank_w)); + map(0xf80d, 0xf80d).rw(this, FUNC(lwings_state::avengers_protection_r), FUNC(lwings_state::avengers_adpcm_w)); + map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w)); +} + +void lwings_state::lwings_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xddff).ram(); + map(0xde00, 0xdfff).ram().share("spriteram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram"); + map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + + map(0xf808, 0xf808).portr("SERVICE"); + map(0xf809, 0xf809).portr("P1"); + map(0xf808, 0xf809).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w)); + map(0xf80a, 0xf80a).portr("P2"); + map(0xf80b, 0xf80b).portr("DSWA"); + map(0xf80a, 0xf80b).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w)); + map(0xf80c, 0xf80c).portr("DSWB").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf80d, 0xf80d).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w)); +} + +void lwings_state::trojan_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xddff).ram(); + map(0xde00, 0xdf7f).ram().share("spriteram"); + map(0xdf80, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram"); + map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + + map(0xf800, 0xf801).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w)); + map(0xf802, 0xf803).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w)); + map(0xf804, 0xf804).w(this, FUNC(lwings_state::trojan_bg2_scrollx_w)); + map(0xf805, 0xf805).w(this, FUNC(lwings_state::trojan_bg2_image_w)); + map(0xf808, 0xf808).portr("SERVICE").nopw(); //watchdog + map(0xf809, 0xf809).portr("P1"); + map(0xf80a, 0xf80a).portr("P2"); + map(0xf80b, 0xf80b).portr("DSWA"); + map(0xf80c, 0xf80c).portr("DSWB").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf80d, 0xf80d).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w)); +} + +void lwings_state::lwings_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe001).w("2203a", FUNC(ym2203_device::write)); + map(0xe002, 0xe003).w("2203b", FUNC(ym2203_device::write)); + map(0xe006, 0xe006).r(this, FUNC(lwings_state::avengers_soundlatch2_r)); //AT: (avengers061gre) + map(0xe006, 0xe006).writeonly().share("soundlatch_2"); +} + + + +void lwings_state::fball_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank2"); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xddff).ram(); + map(0xde00, 0xdfff).ram().share("spriteram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram"); + map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + + map(0xf808, 0xf808).portr("SERVICE"); + map(0xf809, 0xf809).portr("P1"); + map(0xf808, 0xf809).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w)); + map(0xf80a, 0xf80a).portr("P2"); + map(0xf80b, 0xf80b).portr("DSWA"); + map(0xf80a, 0xf80b).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w)); + map(0xf80c, 0xf80c).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf80d, 0xf80d).portr("P3").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xf80e, 0xf80e).portr("P4"); + + map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w)); +} @@ -398,40 +403,45 @@ WRITE8_MEMBER(lwings_state::fball_oki_bank_w) membank("samplebank")->set_entry((data >> 1) & 0x7); } -ADDRESS_MAP_START(lwings_state::fball_oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("samplebank") -ADDRESS_MAP_END +void lwings_state::fball_oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("samplebank"); +} -ADDRESS_MAP_START(lwings_state::fball_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM +void lwings_state::fball_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); - AM_RANGE(0xA000, 0xA000) AM_WRITE(fball_oki_bank_w) + map(0xA000, 0xA000).w(this, FUNC(lwings_state::fball_oki_bank_w)); - AM_RANGE(0xc000, 0xc7ff) AM_RAM + map(0xc000, 0xc7ff).ram(); - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END + map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /* Yes, _no_ ram */ -ADDRESS_MAP_START(lwings_state::trojan_adpcm_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(lwings_state::avengers_adpcm_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(avengers_adpcm_r) - AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(lwings_state::trojan_adpcm_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w) -ADDRESS_MAP_END +void lwings_state::trojan_adpcm_map(address_map &map) +{ + map(0x0000, 0xffff).rom().nopw(); +} + +void lwings_state::avengers_adpcm_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(lwings_state::avengers_adpcm_r)); + map(0x01, 0x01).w(this, FUNC(lwings_state::msm5205_w)); +} + +void lwings_state::trojan_adpcm_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x01, 0x01).w(this, FUNC(lwings_state::msm5205_w)); +} /************************************* * diff --git a/src/mame/drivers/lwriter.cpp b/src/mame/drivers/lwriter.cpp index 4d449a01aa7..9f4bbd06cc8 100644 --- a/src/mame/drivers/lwriter.cpp +++ b/src/mame/drivers/lwriter.cpp @@ -201,30 +201,31 @@ The ADB bit-bang transceiver MCU connects to the VIA CB1 (adbclk) and CB2 (adbda as well as PA0 (ST1), PA2 (ST2) and PA3 (ADB /INT) */ -ADDRESS_MAP_START(lwriter_state::maincpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_READWRITE(bankedarea_r, bankedarea_w) - AM_RANGE(0x200000, 0x2fffff) AM_ROM AM_REGION("rom", 0) // 1MB ROM +void lwriter_state::maincpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).rw(this, FUNC(lwriter_state::bankedarea_r), FUNC(lwriter_state::bankedarea_w)); + map(0x200000, 0x2fffff).rom().region("rom", 0); // 1MB ROM //AM_RANGE(0x300000, 0x3fffff) // open bus? - AM_RANGE(0x400000, 0x5fffff) AM_RAM AM_REGION("dram", 0) AM_MIRROR(0x200000) // 2MB DRAM - AM_RANGE(0x800000, 0x800001) AM_WRITE8(led_out_w, 0xff00) AM_MIRROR(0x1ffffe) // mirror is a guess given that the pals can only decode A18-A23 - AM_RANGE(0x800000, 0x800001) AM_WRITE8(fifo_out_w, 0x00ff) AM_MIRROR(0x1ffffe) // mirror is a guess given that the pals can only decode A18-A23 - AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("scc", scc8530_device, ca_w, 0x00ff) AM_MIRROR(0x1ffff8) - AM_RANGE(0xc00004, 0xc00005) AM_DEVWRITE8("scc", scc8530_device, da_w, 0x00ff) AM_MIRROR(0x1ffff8) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREAD8 ("scc", scc8530_device, ca_r, 0xff00) AM_MIRROR(0x1ffff8) - AM_RANGE(0xa00004, 0xa00005) AM_DEVREAD8 ("scc", scc8530_device, da_r, 0xff00) AM_MIRROR(0x1ffff8) - - AM_RANGE(0xc00002, 0xc00003) AM_DEVWRITE8("scc", scc8530_device, cb_w, 0x00ff) AM_MIRROR(0x1ffff8) - AM_RANGE(0xc00006, 0xc00007) AM_DEVWRITE8("scc", scc8530_device, db_w, 0x00ff) AM_MIRROR(0x1ffff8) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREAD8 ("scc", scc8530_device, cb_r, 0xff00) AM_MIRROR(0x1ffff8) - AM_RANGE(0xa00006, 0xa00007) AM_DEVREAD8 ("scc", scc8530_device, db_r, 0xff00) AM_MIRROR(0x1ffff8) + map(0x400000, 0x5fffff).ram().region("dram", 0).mirror(0x200000); // 2MB DRAM + map(0x800000, 0x800000).w(this, FUNC(lwriter_state::led_out_w)).mirror(0x1ffffe); // mirror is a guess given that the pals can only decode A18-A23 + map(0x800001, 0x800001).w(this, FUNC(lwriter_state::fifo_out_w)).mirror(0x1ffffe); // mirror is a guess given that the pals can only decode A18-A23 + map(0xc00001, 0xc00001).w(m_scc, FUNC(scc8530_device::ca_w)).mirror(0x1ffff8); + map(0xc00005, 0xc00005).w(m_scc, FUNC(scc8530_device::da_w)).mirror(0x1ffff8); + map(0xa00000, 0xa00000).r(m_scc, FUNC(scc8530_device::ca_r)).mirror(0x1ffff8); + map(0xa00004, 0xa00004).r(m_scc, FUNC(scc8530_device::da_r)).mirror(0x1ffff8); + + map(0xc00003, 0xc00003).w(m_scc, FUNC(scc8530_device::cb_w)).mirror(0x1ffff8); + map(0xc00007, 0xc00007).w(m_scc, FUNC(scc8530_device::db_w)).mirror(0x1ffff8); + map(0xa00002, 0xa00002).r(m_scc, FUNC(scc8530_device::cb_r)).mirror(0x1ffff8); + map(0xa00006, 0xa00006).r(m_scc, FUNC(scc8530_device::db_r)).mirror(0x1ffff8); #if TPI - AM_RANGE(0xe00010, 0xe0001f) AM_DEVREADWRITE8 ("tpi", tpi6523_device, read, write, 0x00ff) AM_MIRROR(0x17ffe0) // Used on older boards, needs proper mapping + map(0xe00010, 0xe0001f).rw("tpi", FUNC(tpi6523_device::read), FUNC(tpi6523_device::write)).umask16(0x00ff).mirror(0x17ffe0); // Used on older boards, needs proper mapping #else - AM_RANGE(0xe00000, 0xe0001f) AM_DEVREADWRITE8 ("via", via6522_device, read, write, 0x00ff) AM_MIRROR(0x17ffe0) + map(0xe00000, 0xe0001f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0x00ff).mirror(0x17ffe0); #endif -ADDRESS_MAP_END +} static INPUT_PORTS_START( lwriter ) INPUT_PORTS_END diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp index 3e7d54aa1a6..9261ff1c2f2 100644 --- a/src/mame/drivers/lynx.cpp +++ b/src/mame/drivers/lynx.cpp @@ -18,15 +18,16 @@ #include "lynx.lh" -ADDRESS_MAP_START(lynx_state::lynx_mem) - AM_RANGE(0x0000, 0xfbff) AM_RAM AM_SHARE("mem_0000") - AM_RANGE(0xfc00, 0xfcff) AM_RAM AM_SHARE("mem_fc00") - AM_RANGE(0xfd00, 0xfdff) AM_RAM AM_SHARE("mem_fd00") - AM_RANGE(0xfe00, 0xfff7) AM_READ_BANK("bank3") AM_WRITEONLY AM_SHARE("mem_fe00") - AM_RANGE(0xfff8, 0xfff8) AM_RAM - AM_RANGE(0xfff9, 0xfff9) AM_READWRITE(lynx_memory_config_r, lynx_memory_config_w) - AM_RANGE(0xfffa, 0xffff) AM_READ_BANK("bank4") AM_WRITEONLY AM_SHARE("mem_fffa") -ADDRESS_MAP_END +void lynx_state::lynx_mem(address_map &map) +{ + map(0x0000, 0xfbff).ram().share("mem_0000"); + map(0xfc00, 0xfcff).ram().share("mem_fc00"); + map(0xfd00, 0xfdff).ram().share("mem_fd00"); + map(0xfe00, 0xfff7).bankr("bank3").writeonly().share("mem_fe00"); + map(0xfff8, 0xfff8).ram(); + map(0xfff9, 0xfff9).rw(this, FUNC(lynx_state::lynx_memory_config_r), FUNC(lynx_state::lynx_memory_config_w)); + map(0xfffa, 0xffff).bankr("bank4").writeonly().share("mem_fffa"); +} static INPUT_PORTS_START( lynx ) PORT_START("JOY") diff --git a/src/mame/drivers/m10.cpp b/src/mame/drivers/m10.cpp index 8f6273edc03..d300f94a48d 100644 --- a/src/mame/drivers/m10.cpp +++ b/src/mame/drivers/m10.cpp @@ -525,47 +525,50 @@ INTERRUPT_GEN_MEMBER(m10_state::m15_interrupt) * *************************************/ -ADDRESS_MAP_START(m10_state::m10_main) - AM_RANGE(0x0000, 0x02ff) AM_RAM AM_SHARE("memory") /* scratch ram */ - AM_RANGE(0x1000, 0x2fff) AM_ROM AM_SHARE("rom") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_SHARE("colorram") /* foreground colour */ - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(m10_chargen_w) AM_SHARE("chargen") /* background ????? */ - AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW") - AM_RANGE(0xa300, 0xa300) AM_READ_PORT("INPUTS") - AM_RANGE(0xa400, 0xa400) AM_WRITE(m10_ctrl_w) /* line at bottom of screen?, sound, flip screen */ - AM_RANGE(0xa500, 0xa500) AM_WRITE(m10_a500_w) /* ??? */ - AM_RANGE(0xa700, 0xa700) AM_READ(m10_a700_r) - AM_RANGE(0xfc00, 0xffff) AM_ROM /* for the reset / interrupt vectors */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m10_state::m11_main) - AM_RANGE(0x0000, 0x02ff) AM_RAM AM_SHARE("memory") /* scratch ram */ - AM_RANGE(0x1000, 0x2fff) AM_ROM AM_SHARE("rom") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_SHARE("colorram") /* foreground colour */ - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("chargen") /* background ????? */ - AM_RANGE(0xa100, 0xa100) AM_WRITE(m11_a100_w) /* sound writes ???? */ - AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW") - AM_RANGE(0xa300, 0xa300) AM_READ_PORT("INPUTS") - AM_RANGE(0xa400, 0xa400) AM_WRITE(m11_ctrl_w) /* line at bottom of screen?, sound, flip screen */ - AM_RANGE(0xa700, 0xa700) AM_READ(m11_a700_r) - AM_RANGE(0xfc00, 0xffff) AM_ROM /* for the reset / interrupt vectors */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m10_state::m15_main) - AM_RANGE(0x0000, 0x02ff) AM_RAM AM_SHARE("memory") /* scratch ram */ - AM_RANGE(0x1000, 0x33ff) AM_ROM AM_SHARE("rom") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(m10_colorram_w) AM_SHARE("colorram") /* foreground colour */ - AM_RANGE(0x5000, 0x57ff) AM_RAM_WRITE(m15_chargen_w) AM_SHARE("chargen") /* background ????? */ - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2") - AM_RANGE(0xa100, 0xa100) AM_WRITE(m15_a100_w) /* sound writes ???? */ - AM_RANGE(0xa200, 0xa200) AM_READ_PORT("DSW") - AM_RANGE(0xa300, 0xa300) AM_READ_PORT("P1") - AM_RANGE(0xa400, 0xa400) AM_WRITE(m15_ctrl_w) /* sound, flip screen */ - AM_RANGE(0xfc00, 0xffff) AM_ROM /* for the reset / interrupt vectors */ -ADDRESS_MAP_END +void m10_state::m10_main(address_map &map) +{ + map(0x0000, 0x02ff).ram().share("memory"); /* scratch ram */ + map(0x1000, 0x2fff).rom().share("rom"); + map(0x4000, 0x43ff).ram().share("videoram"); + map(0x4800, 0x4bff).ram().w(this, FUNC(m10_state::m10_colorram_w)).share("colorram"); /* foreground colour */ + map(0x5000, 0x53ff).ram().w(this, FUNC(m10_state::m10_chargen_w)).share("chargen"); /* background ????? */ + map(0xa200, 0xa200).portr("DSW"); + map(0xa300, 0xa300).portr("INPUTS"); + map(0xa400, 0xa400).w(this, FUNC(m10_state::m10_ctrl_w)); /* line at bottom of screen?, sound, flip screen */ + map(0xa500, 0xa500).w(this, FUNC(m10_state::m10_a500_w)); /* ??? */ + map(0xa700, 0xa700).r(this, FUNC(m10_state::m10_a700_r)); + map(0xfc00, 0xffff).rom(); /* for the reset / interrupt vectors */ +} + +void m10_state::m11_main(address_map &map) +{ + map(0x0000, 0x02ff).ram().share("memory"); /* scratch ram */ + map(0x1000, 0x2fff).rom().share("rom"); + map(0x4000, 0x43ff).ram().share("videoram"); + map(0x4800, 0x4bff).ram().w(this, FUNC(m10_state::m10_colorram_w)).share("colorram"); /* foreground colour */ + map(0x5000, 0x53ff).ram().share("chargen"); /* background ????? */ + map(0xa100, 0xa100).w(this, FUNC(m10_state::m11_a100_w)); /* sound writes ???? */ + map(0xa200, 0xa200).portr("DSW"); + map(0xa300, 0xa300).portr("INPUTS"); + map(0xa400, 0xa400).w(this, FUNC(m10_state::m11_ctrl_w)); /* line at bottom of screen?, sound, flip screen */ + map(0xa700, 0xa700).r(this, FUNC(m10_state::m11_a700_r)); + map(0xfc00, 0xffff).rom(); /* for the reset / interrupt vectors */ +} + +void m10_state::m15_main(address_map &map) +{ + map(0x0000, 0x02ff).ram().share("memory"); /* scratch ram */ + map(0x1000, 0x33ff).rom().share("rom"); + map(0x4000, 0x43ff).ram().share("videoram"); + map(0x4800, 0x4bff).ram().w(this, FUNC(m10_state::m10_colorram_w)).share("colorram"); /* foreground colour */ + map(0x5000, 0x57ff).ram().w(this, FUNC(m10_state::m15_chargen_w)).share("chargen"); /* background ????? */ + map(0xa000, 0xa000).portr("P2"); + map(0xa100, 0xa100).w(this, FUNC(m10_state::m15_a100_w)); /* sound writes ???? */ + map(0xa200, 0xa200).portr("DSW"); + map(0xa300, 0xa300).portr("P1"); + map(0xa400, 0xa400).w(this, FUNC(m10_state::m15_ctrl_w)); /* sound, flip screen */ + map(0xfc00, 0xffff).rom(); /* for the reset / interrupt vectors */ +} /************************************* * diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp index 16d3bd51900..b32c46ae64f 100644 --- a/src/mame/drivers/m107.cpp +++ b/src/mame/drivers/m107.cpp @@ -96,37 +96,40 @@ WRITE16_MEMBER(m107_state::sound_reset_w) /*****************************************************************************/ -ADDRESS_MAP_START(m107_state::main_map) - AM_RANGE(0x00000, 0x9ffff) AM_ROM - AM_RANGE(0xa0000, 0xbffff) AM_ROMBANK("bank1") - AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(vram_w) AM_SHARE("vram_data") - AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */ - AM_RANGE(0xf8000, 0xf8fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf9000, 0xf9fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m107_state::main_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2") - AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4") - AM_RANGE(0x08, 0x09) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // answer from sound CPU - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(coincounter_w, 0x00ff) - AM_RANGE(0x04, 0x05) AM_WRITENOP /* ??? 0008 */ - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x9f) AM_WRITE(control_w) - AM_RANGE(0xa0, 0xaf) AM_WRITENOP /* Written with 0's in interrupt */ - AM_RANGE(0xb0, 0xb1) AM_WRITE(spritebuffer_w) - AM_RANGE(0xc0, 0xc3) AM_READNOP /* Only wpksoc: ticket related? */ - AM_RANGE(0xc0, 0xc1) AM_WRITE(sound_reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m107_state::dsoccr94_io_map) - AM_IMPORT_FROM(main_portmap) - AM_RANGE(0x06, 0x07) AM_WRITE8(bankswitch_w, 0x00ff) -ADDRESS_MAP_END +void m107_state::main_map(address_map &map) +{ + map(0x00000, 0x9ffff).rom(); + map(0xa0000, 0xbffff).bankr("bank1"); + map(0xd0000, 0xdffff).ram().w(this, FUNC(m107_state::vram_w)).share("vram_data"); + map(0xe0000, 0xeffff).ram(); /* System ram */ + map(0xf8000, 0xf8fff).ram().share("spriteram"); + map(0xf9000, 0xf9fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffff0, 0xfffff).rom().region("maincpu", 0x7fff0); +} + +void m107_state::main_portmap(address_map &map) +{ + map(0x00, 0x01).portr("P1_P2"); + map(0x02, 0x03).portr("COINS_DSW3"); + map(0x04, 0x05).portr("DSW"); + map(0x06, 0x07).portr("P3_P4"); + map(0x08, 0x08).r("soundlatch2", FUNC(generic_latch_8_device::read)); // answer from sound CPU + map(0x00, 0x00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m107_state::coincounter_w)); + map(0x04, 0x05).nopw(); /* ??? 0008 */ + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x9f).w(this, FUNC(m107_state::control_w)); + map(0xa0, 0xaf).nopw(); /* Written with 0's in interrupt */ + map(0xb0, 0xb1).w(this, FUNC(m107_state::spritebuffer_w)); + map(0xc0, 0xc3).nopr(); /* Only wpksoc: ticket related? */ + map(0xc0, 0xc1).w(this, FUNC(m107_state::sound_reset_w)); +} + +void m107_state::dsoccr94_io_map(address_map &map) +{ + main_portmap(map); + map(0x06, 0x06).w(this, FUNC(m107_state::bankswitch_w)); +} /* same as M107 but with an extra i/o board */ WRITE16_MEMBER(m107_state::wpksoc_output_w) @@ -139,31 +142,34 @@ WRITE16_MEMBER(m107_state::wpksoc_output_w) popmessage("%04x",data); } -ADDRESS_MAP_START(m107_state::wpksoc_map) - AM_IMPORT_FROM(main_map) - AM_RANGE(0xf0000, 0xf0001) AM_READ_PORT("WPK_DSW0") - AM_RANGE(0xf0002, 0xf0003) AM_READ_PORT("WPK_DSW1") - AM_RANGE(0xf0004, 0xf0005) AM_READ_PORT("WPK_DSW2") -ADDRESS_MAP_END +void m107_state::wpksoc_map(address_map &map) +{ + main_map(map); + map(0xf0000, 0xf0001).portr("WPK_DSW0"); + map(0xf0002, 0xf0003).portr("WPK_DSW1"); + map(0xf0004, 0xf0005).portr("WPK_DSW2"); +} -ADDRESS_MAP_START(m107_state::wpksoc_io_map) - AM_IMPORT_FROM(main_portmap) - AM_RANGE(0x22, 0x23) AM_WRITE(wpksoc_output_w) - AM_RANGE(0xc0, 0xc1) AM_READ_PORT("WPK_IN0") - AM_RANGE(0xc2, 0xc3) AM_READ_PORT("WPK_IN1") -ADDRESS_MAP_END +void m107_state::wpksoc_io_map(address_map &map) +{ + main_portmap(map); + map(0x22, 0x23).w(this, FUNC(m107_state::wpksoc_output_w)); + map(0xc0, 0xc1).portr("WPK_IN0"); + map(0xc2, 0xc3).portr("WPK_IN1"); +} /******************************************************************************/ -ADDRESS_MAP_START(m107_state::sound_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0xa0000, 0xa3fff) AM_RAM - AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", iremga20_device, irem_ga20_r, irem_ga20_w, 0x00ff) - AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xa8044, 0xa8045) AM_DEVREADWRITE8("soundlatch", generic_latch_8_device, read, acknowledge_w, 0x00ff) - AM_RANGE(0xa8046, 0xa8047) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0) -ADDRESS_MAP_END +void m107_state::sound_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0xa0000, 0xa3fff).ram(); + map(0xa8000, 0xa803f).rw("irem", FUNC(iremga20_device::irem_ga20_r), FUNC(iremga20_device::irem_ga20_w)).umask16(0x00ff); + map(0xa8040, 0xa8043).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0xa8044, 0xa8044).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0xa8046, 0xa8046).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0xffff0, 0xfffff).rom().region("soundcpu", 0x1fff0); +} /******************************************************************************/ diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp index e034cfe83e5..56cc8c7ab84 100644 --- a/src/mame/drivers/m14.cpp +++ b/src/mame/drivers/m14.cpp @@ -300,21 +300,23 @@ WRITE8_MEMBER(m14_state::sound_w) * *************************************/ -ADDRESS_MAP_START(m14_state::m14_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(m14_vram_w) AM_SHARE("video_ram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m14_cram_w) AM_SHARE("color_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m14_state::m14_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("AN_PADDLE") AM_WRITE(ball_x_w) - AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN0") AM_WRITE(ball_y_w) - AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r) AM_WRITE(paddle_x_w) - AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE(output_w) - AM_RANGE(0xfc, 0xfc) AM_WRITE(sound_w) -ADDRESS_MAP_END +void m14_state::m14_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0xe000, 0xe3ff).ram().w(this, FUNC(m14_state::m14_vram_w)).share("video_ram"); + map(0xe400, 0xe7ff).ram().w(this, FUNC(m14_state::m14_cram_w)).share("color_ram"); +} + +void m14_state::m14_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf8, 0xf8).portr("AN_PADDLE").w(this, FUNC(m14_state::ball_x_w)); + map(0xf9, 0xf9).portr("IN0").w(this, FUNC(m14_state::ball_y_w)); + map(0xfa, 0xfa).r(this, FUNC(m14_state::m14_rng_r)).w(this, FUNC(m14_state::paddle_x_w)); + map(0xfb, 0xfb).portr("DSW").w(this, FUNC(m14_state::output_w)); + map(0xfc, 0xfc).w(this, FUNC(m14_state::sound_w)); +} /************************************* * diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp index 695d29e1493..70b812d7891 100644 --- a/src/mame/drivers/m20.cpp +++ b/src/mame/drivers/m20.cpp @@ -319,17 +319,19 @@ B/W, 128K cards, 3 cards => 512K of memory: */ -ADDRESS_MAP_START(m20_state::m20_program_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000) -ADDRESS_MAP_END +void m20_state::m20_program_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x30000, 0x33fff).ram().share("videoram"); + map(0x40000, 0x41fff).rom().region("maincpu", 0x00000); +} -ADDRESS_MAP_START(m20_state::m20_data_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x30000, 0x33fff ) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0x40000, 0x41fff ) AM_ROM AM_REGION("maincpu", 0x00000) -ADDRESS_MAP_END +void m20_state::m20_data_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x30000, 0x33fff).ram().share("videoram"); + map(0x40000, 0x41fff).rom().region("maincpu", 0x00000); +} void m20_state::install_memory() @@ -699,32 +701,33 @@ void m20_state::install_memory() } } -ADDRESS_MAP_START(m20_state::m20_io) - ADDRESS_MAP_UNMAP_HIGH +void m20_state::m20_io(address_map &map) +{ + map.unmap_value_high(); - AM_RANGE(0x00, 0x07) AM_DEVREADWRITE8("fd1797", fd1797_device, read, write, 0x00ff) + map(0x00, 0x07).rw(m_fd1797, FUNC(fd1797_device::read), FUNC(fd1797_device::write)).umask16(0x00ff); - AM_RANGE(0x20, 0x21) AM_READWRITE(port21_r, port21_w); + map(0x20, 0x21).rw(this, FUNC(m20_state::port21_r), FUNC(m20_state::port21_w)); - AM_RANGE(0x60, 0x61) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0x00ff) - AM_RANGE(0x62, 0x63) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0xff00) // FIXME - AM_RANGE(0x62, 0x63) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0x00ff) - AM_RANGE(0x64, 0x65) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) + map(0x61, 0x61).w("crtc", FUNC(mc6845_device::address_w)); + map(0x62, 0x62).w("crtc", FUNC(mc6845_device::address_w)); // FIXME + map(0x63, 0x63).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x64, 0x64).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - AM_RANGE(0x80, 0x87) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff) + map(0x80, 0x87).rw(m_i8255, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); - AM_RANGE(0xa0, 0xa1) AM_DEVREADWRITE8("i8251_1", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xa2, 0xa3) AM_DEVREADWRITE8("i8251_1", i8251_device, status_r, control_w, 0x00ff) + map(0xa1, 0xa1).rw(m_kbdi8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xa3, 0xa3).rw(m_kbdi8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - AM_RANGE(0xc0, 0xc1) AM_DEVREADWRITE8("i8251_2", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xc2, 0xc3) AM_DEVREADWRITE8("i8251_2", i8251_device, status_r, control_w, 0x00ff) + map(0xc1, 0xc1).rw(m_ttyi8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc3, 0xc3).rw(m_ttyi8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - AM_RANGE(0x120, 0x127) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) + map(0x120, 0x127).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); - AM_RANGE(0x140, 0x143) AM_READWRITE(m20_i8259_r, m20_i8259_w) + map(0x140, 0x143).rw(this, FUNC(m20_state::m20_i8259_r), FUNC(m20_state::m20_i8259_w)); - AM_RANGE(0x3ffa, 0x3ffd) AM_DEVWRITE("apb", m20_8086_device, handshake_w) -ADDRESS_MAP_END + map(0x3ffa, 0x3ffd).w(m_apb, FUNC(m20_8086_device::handshake_w)); +} IRQ_CALLBACK_MEMBER(m20_state::m20_irq_callback) { diff --git a/src/mame/drivers/m24.cpp b/src/mame/drivers/m24.cpp index 4f7ce27b05d..da748f16081 100644 --- a/src/mame/drivers/m24.cpp +++ b/src/mame/drivers/m24.cpp @@ -175,25 +175,28 @@ WRITE_LINE_MEMBER(m24_state::halt_i86_w) m_i86_halt = state ? true : false; } -ADDRESS_MAP_START(m24_state::m24_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m24_state::m24_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", pc_noppi_mb_device, map, 0xffff) - AM_RANGE(0x0060, 0x0065) AM_READWRITE8(keyboard_r, keyboard_w, 0xffff) - AM_RANGE(0x0066, 0x0067) AM_READ_PORT("DSW0") - AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("mm58174an", mm58274c_device, read, write, 0xffff) - AM_RANGE(0x80c0, 0x80c1) AM_DEVREADWRITE8("z8000_apb", m24_z8000_device, handshake_r, handshake_w, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m24_state::kbc_map) - AM_RANGE(0x8000, 0x8fff) AM_READ(kbcdata_r) - AM_RANGE(0xa000, 0xafff) AM_WRITE(kbcdata_w) - AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION("kbc", 0) -ADDRESS_MAP_END +void m24_state::m24_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf8000, 0xfffff).rom().region("bios", 0); +} + +void m24_state::m24_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x0060, 0x0065).rw(this, FUNC(m24_state::keyboard_r), FUNC(m24_state::keyboard_w)); + map(0x0066, 0x0067).portr("DSW0"); + map(0x0070, 0x007f).rw("mm58174an", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)); + map(0x80c1, 0x80c1).rw(m_z8000_apb, FUNC(m24_z8000_device::handshake_r), FUNC(m24_z8000_device::handshake_w)); +} + +void m24_state::kbc_map(address_map &map) +{ + map(0x8000, 0x8fff).r(this, FUNC(m24_state::kbcdata_r)); + map(0xa000, 0xafff).w(this, FUNC(m24_state::kbcdata_w)); + map(0xf800, 0xffff).rom().region("kbc", 0); +} static INPUT_PORTS_START( m24 ) PORT_START("DSW0") diff --git a/src/mame/drivers/m3.cpp b/src/mame/drivers/m3.cpp index d95f02b0350..f28e27891fa 100644 --- a/src/mame/drivers/m3.cpp +++ b/src/mame/drivers/m3.cpp @@ -40,17 +40,19 @@ private: required_device<palette_device> m_palette; }; -ADDRESS_MAP_START(m3_state::mem_map) - AM_RANGE(0x0000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m3_state::io_map) - ADDRESS_MAP_GLOBAL_MASK (0xff) - AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x85, 0x85) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END +void m3_state::mem_map(address_map &map) +{ + map(0x0000, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().share("videoram"); + map(0xf000, 0xffff).rom().region("roms", 0); +} + +void m3_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x84, 0x84).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x85, 0x85).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} static INPUT_PORTS_START( m3 ) INPUT_PORTS_END diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp index b21d99b68e6..b42bec05d3c 100644 --- a/src/mame/drivers/m5.cpp +++ b/src/mame/drivers/m5.cpp @@ -697,69 +697,73 @@ WRITE8_MEMBER( m5_state::mem64KRX_w ) //out 0x7f // ADDRESS_MAP( m5_mem ) //------------------------------------------------- -ADDRESS_MAP_START(m5_state::m5_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bank1r") AM_WRITE_BANK("bank1w") //monitor rom(bios) - AM_RANGE(0x2000, 0x3fff) AM_READ_BANK("bank2r") AM_WRITE_BANK("bank2w") - AM_RANGE(0x4000, 0x5fff) AM_READ_BANK("bank3r") AM_WRITE_BANK("bank3w") - AM_RANGE(0x6000, 0x6fff) AM_READ_BANK("bank4r") AM_WRITE_BANK("bank4w") - AM_RANGE(0x7000, 0x7fff) AM_RAM //4kb internal RAM - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank5r") AM_WRITE_BANK("bank5w") - AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank6r") AM_WRITE_BANK("bank6w") -ADDRESS_MAP_END +void m5_state::m5_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankr("bank1r").bankw("bank1w"); //monitor rom(bios) + map(0x2000, 0x3fff).bankr("bank2r").bankw("bank2w"); + map(0x4000, 0x5fff).bankr("bank3r").bankw("bank3w"); + map(0x6000, 0x6fff).bankr("bank4r").bankw("bank4w"); + map(0x7000, 0x7fff).ram(); //4kb internal RAM + map(0x8000, 0xbfff).bankr("bank5r").bankw("bank5w"); + map(0xc000, 0xffff).bankr("bank6r").bankw("bank6w"); +} //------------------------------------------------- // ADDRESS_MAP( m5_io ) //------------------------------------------------- -ADDRESS_MAP_START(m5_state::m5_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x08) AM_READ_PORT("Y0") AM_WRITE( mem64KBF_w) // 64KBF paging - AM_RANGE(0x31, 0x31) AM_MIRROR(0x08) AM_READ_PORT("Y1") - AM_RANGE(0x32, 0x32) AM_MIRROR(0x08) AM_READ_PORT("Y2") - AM_RANGE(0x33, 0x33) AM_MIRROR(0x08) AM_READ_PORT("Y3") - AM_RANGE(0x34, 0x34) AM_MIRROR(0x08) AM_READ_PORT("Y4") - AM_RANGE(0x35, 0x35) AM_MIRROR(0x08) AM_READ_PORT("Y5") - AM_RANGE(0x36, 0x36) AM_MIRROR(0x08) AM_READ_PORT("Y6") - AM_RANGE(0x37, 0x37) AM_MIRROR(0x08) AM_READ_PORT("JOY") - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READWRITE(sts_r, com_w) +void m5_state::m5_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x10).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x11, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::write)); + map(0x30, 0x30).mirror(0x08).portr("Y0").w(this, FUNC(m5_state::mem64KBF_w)); // 64KBF paging + map(0x31, 0x31).mirror(0x08).portr("Y1"); + map(0x32, 0x32).mirror(0x08).portr("Y2"); + map(0x33, 0x33).mirror(0x08).portr("Y3"); + map(0x34, 0x34).mirror(0x08).portr("Y4"); + map(0x35, 0x35).mirror(0x08).portr("Y5"); + map(0x36, 0x36).mirror(0x08).portr("Y6"); + map(0x37, 0x37).mirror(0x08).portr("JOY"); + map(0x40, 0x40).mirror(0x0f).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x50, 0x50).mirror(0x0f).rw(this, FUNC(m5_state::sts_r), FUNC(m5_state::com_w)); // AM_RANGE(0x60, 0x63) SIO - AM_RANGE(0x6c, 0x6c) AM_READWRITE(mem64KBI_r, mem64KBI_w) //EM-64/64KBI paging - AM_RANGE(0x70, 0x73) /*AM_MIRROR(0x0c) don't know if necessary mirror this*/ AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0x7f, 0x7f) AM_WRITE( mem64KRX_w) //64KRD/64KRX paging -ADDRESS_MAP_END + map(0x6c, 0x6c).rw(this, FUNC(m5_state::mem64KBI_r), FUNC(m5_state::mem64KBI_w)); //EM-64/64KBI paging + map(0x70, 0x73) /*.mirror(0x0c) don't know if necessary mirror this*/ .rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7f, 0x7f).w(this, FUNC(m5_state::mem64KRX_w)); //64KRD/64KRX paging +} //------------------------------------------------- // ADDRESS_MAP( fd5_mem ) //------------------------------------------------- -ADDRESS_MAP_START(m5_state::fd5_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END +void m5_state::fd5_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0xffff).ram(); +} //------------------------------------------------- // ADDRESS_MAP( fd5_io ) //------------------------------------------------- -ADDRESS_MAP_START(m5_state::fd5_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVICE(UPD765_TAG, upd765a_device, map) - AM_RANGE(0x10, 0x10) AM_READWRITE(fd5_data_r, fd5_data_w) - AM_RANGE(0x20, 0x20) AM_WRITE(fd5_com_w) - AM_RANGE(0x30, 0x30) AM_READ(fd5_com_r) - AM_RANGE(0x40, 0x40) AM_WRITE(fd5_ctrl_w) - AM_RANGE(0x50, 0x50) AM_WRITE(fd5_tc_w) -ADDRESS_MAP_END +void m5_state::fd5_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).m(m_fdc, FUNC(upd765a_device::map)); + map(0x10, 0x10).rw(this, FUNC(m5_state::fd5_data_r), FUNC(m5_state::fd5_data_w)); + map(0x20, 0x20).w(this, FUNC(m5_state::fd5_com_w)); + map(0x30, 0x30).r(this, FUNC(m5_state::fd5_com_r)); + map(0x40, 0x40).w(this, FUNC(m5_state::fd5_ctrl_w)); + map(0x50, 0x50).w(this, FUNC(m5_state::fd5_tc_w)); +} @@ -1006,54 +1010,56 @@ static const z80_daisy_config m5_daisy_chain[] = //------------------------------------------------- -ADDRESS_MAP_START(brno_state::m5_mem_brno) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_READWRITE_BANK("bank1") - AM_RANGE(0x1000, 0x1fff) AM_READWRITE_BANK("bank2") - AM_RANGE(0x2000, 0x2fff) AM_READWRITE_BANK("bank3") - AM_RANGE(0x3000, 0x3fff) AM_READWRITE_BANK("bank4") - AM_RANGE(0x4000, 0x4fff) AM_READWRITE_BANK("bank5") - AM_RANGE(0x5000, 0x5fff) AM_READWRITE_BANK("bank6") - AM_RANGE(0x6000, 0x6fff) AM_READWRITE_BANK("bank7") - AM_RANGE(0x7000, 0x7fff) AM_READWRITE_BANK("bank8") - AM_RANGE(0x8000, 0x8fff) AM_READWRITE_BANK("bank9") - AM_RANGE(0x9000, 0x9fff) AM_READWRITE_BANK("bank10") - AM_RANGE(0xa000, 0xafff) AM_READWRITE_BANK("bank11") - AM_RANGE(0xb000, 0xbfff) AM_READWRITE_BANK("bank12") - AM_RANGE(0xc000, 0xcfff) AM_READWRITE_BANK("bank13") - AM_RANGE(0xd000, 0xdfff) AM_READWRITE_BANK("bank14") - AM_RANGE(0xe000, 0xefff) AM_READWRITE_BANK("bank15") - AM_RANGE(0xf000, 0xffff) AM_READWRITE_BANK("bank16") -ADDRESS_MAP_END +void brno_state::m5_mem_brno(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("bank1"); + map(0x1000, 0x1fff).bankrw("bank2"); + map(0x2000, 0x2fff).bankrw("bank3"); + map(0x3000, 0x3fff).bankrw("bank4"); + map(0x4000, 0x4fff).bankrw("bank5"); + map(0x5000, 0x5fff).bankrw("bank6"); + map(0x6000, 0x6fff).bankrw("bank7"); + map(0x7000, 0x7fff).bankrw("bank8"); + map(0x8000, 0x8fff).bankrw("bank9"); + map(0x9000, 0x9fff).bankrw("bank10"); + map(0xa000, 0xafff).bankrw("bank11"); + map(0xb000, 0xbfff).bankrw("bank12"); + map(0xc000, 0xcfff).bankrw("bank13"); + map(0xd000, 0xdfff).bankrw("bank14"); + map(0xe000, 0xefff).bankrw("bank15"); + map(0xf000, 0xffff).bankrw("bank16"); +} //------------------------------------------------- // ADDRESS_MAP( brno_io ) //------------------------------------------------- -ADDRESS_MAP_START(brno_state::brno_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x11, 0x11) AM_MIRROR(0x0e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write) - AM_RANGE(0x30, 0x30) AM_READ_PORT("Y0") - AM_RANGE(0x31, 0x31) AM_READ_PORT("Y1") - AM_RANGE(0x32, 0x32) AM_READ_PORT("Y2") - AM_RANGE(0x33, 0x33) AM_READ_PORT("Y3") - AM_RANGE(0x34, 0x34) AM_READ_PORT("Y4") - AM_RANGE(0x35, 0x35) AM_READ_PORT("Y5") - AM_RANGE(0x36, 0x36) AM_READ_PORT("Y6") - AM_RANGE(0x37, 0x37) AM_READ_PORT("JOY") - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READWRITE(sts_r, com_w) +void brno_state::brno_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x10).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x11, 0x11).mirror(0x0e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0x20, 0x20).mirror(0x0f).w(SN76489AN_TAG, FUNC(sn76489a_device::write)); + map(0x30, 0x30).portr("Y0"); + map(0x31, 0x31).portr("Y1"); + map(0x32, 0x32).portr("Y2"); + map(0x33, 0x33).portr("Y3"); + map(0x34, 0x34).portr("Y4"); + map(0x35, 0x35).portr("Y5"); + map(0x36, 0x36).portr("Y6"); + map(0x37, 0x37).portr("JOY"); + map(0x40, 0x40).mirror(0x0f).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x50, 0x50).mirror(0x0f).rw(this, FUNC(brno_state::sts_r), FUNC(brno_state::com_w)); // AM_RANGE(0x60, 0x63) // SIO - AM_RANGE(0x64, 0x67) AM_READWRITE(mmu_r, mmu_w) // MMU - page select (ramdisk memory paging) - AM_RANGE(0x68, 0x6b) AM_READWRITE(ramsel_r, ramsel_w) // CASEN 0=access to ramdisk enabled, 0xff=ramdisk access disabled(data protection), &80=ROM2+48k RAM, &81=ROM2+4k RAM - AM_RANGE(0x6c, 0x6f) AM_READWRITE(romsel_r, romsel_w) // RAMEN 0=rom enable; 0xff=rom+sord ram disabled (ramdisk visible) + map(0x64, 0x67).rw(this, FUNC(brno_state::mmu_r), FUNC(brno_state::mmu_w)); // MMU - page select (ramdisk memory paging) + map(0x68, 0x6b).rw(this, FUNC(brno_state::ramsel_r), FUNC(brno_state::ramsel_w)); // CASEN 0=access to ramdisk enabled, 0xff=ramdisk access disabled(data protection), &80=ROM2+48k RAM, &81=ROM2+4k RAM + map(0x6c, 0x6f).rw(this, FUNC(brno_state::romsel_r), FUNC(brno_state::romsel_w)); // RAMEN 0=rom enable; 0xff=rom+sord ram disabled (ramdisk visible) // AM_RANGE(0x70, 0x73) AM_MIRROR(0x04) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) // PIO - AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE(WD2797_TAG, wd_fdc_device_base, read, write) // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data - AM_RANGE(0x7c, 0x7c) AM_READWRITE(fd_r, fd_w) // drive select -ADDRESS_MAP_END + map(0x78, 0x7b).rw(m_fdc, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)); // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data + map(0x7c, 0x7c).rw(this, FUNC(brno_state::fd_r), FUNC(brno_state::fd_w)); // drive select +} READ8_MEMBER( brno_state::mmu_r ) diff --git a/src/mame/drivers/m52.cpp b/src/mame/drivers/m52.cpp index 77d7e994e68..9b3d685af48 100644 --- a/src/mame/drivers/m52.cpp +++ b/src/mame/drivers/m52.cpp @@ -60,47 +60,50 @@ * *************************************/ -ADDRESS_MAP_START(m52_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r) - AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w) /* + coin counters */ - AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0") - AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") - AM_RANGE(0xd002, 0xd002) AM_MIRROR(0x07f8) AM_READ_PORT("IN2") - AM_RANGE(0xd003, 0xd003) AM_MIRROR(0x07f8) AM_READ_PORT("DSW1") - AM_RANGE(0xd004, 0xd004) AM_MIRROR(0x07f8) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m52_state::alpha1v_map) - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r) // result is ignored - AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram") // bigger or mirrored? - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w) - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2") - AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1") - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xefff) AM_RAM // bigger or mirrored? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m52_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x1f) AM_WRITE(m52_scroll_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x1f) AM_WRITE(m52_bg1xpos_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x1f) AM_WRITE(m52_bg1ypos_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_WRITE(m52_bg2xpos_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1f) AM_WRITE(m52_bg2ypos_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_WRITE(m52_bgcontrol_w) -ADDRESS_MAP_END +void m52_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(m52_state::m52_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(m52_state::m52_colorram_w)).share("colorram"); + map(0x8800, 0x8800).mirror(0x07ff).r(this, FUNC(m52_state::m52_protection_r)); + map(0xc800, 0xcbff).mirror(0x0400).writeonly().share("spriteram"); + map(0xd000, 0xd000).mirror(0x07fc).w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).mirror(0x07fc).w(this, FUNC(m52_state::m52_flipscreen_w)); /* + coin counters */ + map(0xd000, 0xd000).mirror(0x07f8).portr("IN0"); + map(0xd001, 0xd001).mirror(0x07f8).portr("IN1"); + map(0xd002, 0xd002).mirror(0x07f8).portr("IN2"); + map(0xd003, 0xd003).mirror(0x07f8).portr("DSW1"); + map(0xd004, 0xd004).mirror(0x07f8).portr("DSW2"); + map(0xe000, 0xe7ff).ram(); +} + + +void m52_state::alpha1v_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(m52_state::m52_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(m52_state::m52_colorram_w)).share("colorram"); + map(0x8800, 0x8800).mirror(0x07ff).r(this, FUNC(m52_state::m52_protection_r)); // result is ignored + map(0xc800, 0xc9ff).writeonly().share("spriteram"); // bigger or mirrored? + map(0xd000, 0xd000).portr("IN0").w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).portr("IN1").w(this, FUNC(m52_state::alpha1v_flipscreen_w)); + map(0xd002, 0xd002).portr("IN2"); + map(0xd003, 0xd003).portr("DSW1"); + map(0xd004, 0xd004).portr("DSW2"); + map(0xe000, 0xefff).ram(); // bigger or mirrored? +} + + +void m52_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x1f).w(this, FUNC(m52_state::m52_scroll_w)); + map(0x40, 0x40).mirror(0x1f).w(this, FUNC(m52_state::m52_bg1xpos_w)); + map(0x60, 0x60).mirror(0x1f).w(this, FUNC(m52_state::m52_bg1ypos_w)); + map(0x80, 0x80).mirror(0x1f).w(this, FUNC(m52_state::m52_bg2xpos_w)); + map(0xa0, 0xa0).mirror(0x1f).w(this, FUNC(m52_state::m52_bg2ypos_w)); + map(0xc0, 0xc0).mirror(0x1f).w(this, FUNC(m52_state::m52_bgcontrol_w)); +} diff --git a/src/mame/drivers/m57.cpp b/src/mame/drivers/m57.cpp index 82ca3b04ca0..6f7ba22674b 100644 --- a/src/mame/drivers/m57.cpp +++ b/src/mame/drivers/m57.cpp @@ -69,20 +69,21 @@ * *************************************/ -ADDRESS_MAP_START(m57_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(m57_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0xc820, 0xc8ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(m57_flipscreen_w) /* + coin counters */ - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2") - AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1") - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END +void m57_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(m57_state::m57_videoram_w)).share("videoram"); + map(0x9000, 0x91ff).ram().share("scrollram"); + map(0xc820, 0xc8ff).writeonly().share("spriteram"); + map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).w(this, FUNC(m57_state::m57_flipscreen_w)); /* + coin counters */ + map(0xd000, 0xd000).portr("IN0"); + map(0xd001, 0xd001).portr("IN1"); + map(0xd002, 0xd002).portr("IN2"); + map(0xd003, 0xd003).portr("DSW1"); + map(0xd004, 0xd004).portr("DSW2"); + map(0xe000, 0xe7ff).ram(); +} diff --git a/src/mame/drivers/m58.cpp b/src/mame/drivers/m58.cpp index 9ea823bee8c..bfece67a6aa 100644 --- a/src/mame/drivers/m58.cpp +++ b/src/mame/drivers/m58.cpp @@ -27,24 +27,25 @@ * *************************************/ -ADDRESS_MAP_START(m58_state::yard_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9fff) AM_WRITE(scroll_panel_w) - AM_RANGE(0xc820, 0xc87f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa000, 0xa000) AM_RAM AM_SHARE("scroll_x_low") - AM_RANGE(0xa200, 0xa200) AM_RAM AM_SHARE("scroll_x_high") - AM_RANGE(0xa400, 0xa400) AM_RAM AM_SHARE("scroll_y_low") - AM_RANGE(0xa800, 0xa800) AM_RAM AM_SHARE("score_disable") - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(flipscreen_w) /* + coin counters */ - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2") - AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1") - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END +void m58_state::yard_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(m58_state::videoram_w)).share("videoram"); + map(0x9000, 0x9fff).w(this, FUNC(m58_state::scroll_panel_w)); + map(0xc820, 0xc87f).ram().share("spriteram"); + map(0xa000, 0xa000).ram().share("scroll_x_low"); + map(0xa200, 0xa200).ram().share("scroll_x_high"); + map(0xa400, 0xa400).ram().share("scroll_y_low"); + map(0xa800, 0xa800).ram().share("score_disable"); + map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).w(this, FUNC(m58_state::flipscreen_w)); /* + coin counters */ + map(0xd000, 0xd000).portr("IN0"); + map(0xd001, 0xd001).portr("IN1"); + map(0xd002, 0xd002).portr("IN2"); + map(0xd003, 0xd003).portr("DSW1"); + map(0xd004, 0xd004).portr("DSW2"); + map(0xe000, 0xefff).ram(); +} diff --git a/src/mame/drivers/m62.cpp b/src/mame/drivers/m62.cpp index 00f5c273b62..439e1a26b99 100644 --- a/src/mame/drivers/m62.cpp +++ b/src/mame/drivers/m62.cpp @@ -173,204 +173,223 @@ WRITE8_MEMBER(m62_state::youjyudn_bankswitch_w) } -ADDRESS_MAP_START(m62_state::kungfum_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(m62_hscroll_low_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(m62_hscroll_high_w) - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") +void m62_state::kungfum_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(m62_state::m62_hscroll_low_w)); + map(0xb000, 0xb000).w(this, FUNC(m62_state::m62_hscroll_high_w)); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); /* Kung Fu Master is the only game in this driver to have separated (but */ /* contiguous) videoram and colorram. They are interleaved in all the others. */ - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::kungfum_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::battroad_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::battroad_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x80, 0x80) AM_WRITE(m62_vscroll_low_w) - AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_high_w) - AM_RANGE(0x82, 0x82) AM_WRITE(m62_hscroll_low_w) - AM_RANGE(0x83, 0x83) AM_WRITE(battroad_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x80, 0x80) AM_READ(ldrun2_bankswitch_r) - AM_RANGE(0x80, 0x81) AM_WRITE(ldrun2_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun3_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc800, 0xc800) AM_READ(ldrun3_prot_5_r) - AM_RANGE(0xcc00, 0xcc00) AM_READ(ldrun3_prot_7_r) - AM_RANGE(0xcfff, 0xcfff) AM_READ(ldrun3_prot_7_r) - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xefff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun3_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x80, 0x80) AM_WRITE(m62_vscroll_low_w) - AM_RANGE(0x81, 0x81) AM_WRITE(ldrun3_topbottom_mask_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun4_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xc800) AM_WRITE(ldrun4_bankswitch_w) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::ldrun4_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x82, 0x82) AM_WRITE(m62_hscroll_high_w) - AM_RANGE(0x83, 0x83) AM_WRITE(m62_hscroll_low_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::lotlot_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::kidniki_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::kidniki_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x80, 0x80) AM_WRITE(m62_hscroll_low_w) - AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_high_w) - AM_RANGE(0x82, 0x82) AM_WRITE(kidniki_text_vscroll_low_w) - AM_RANGE(0x83, 0x83) AM_WRITE(kidniki_text_vscroll_high_w) - AM_RANGE(0x84, 0x84) AM_WRITE(kidniki_background_bank_w) - AM_RANGE(0x85, 0x85) AM_WRITE(kidniki_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::spelunkr_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram") - AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_vscroll_high_w) - AM_RANGE(0xd002, 0xd002) AM_WRITE(m62_hscroll_low_w) - AM_RANGE(0xd003, 0xd003) AM_WRITE(m62_hscroll_high_w) - AM_RANGE(0xd004, 0xd004) AM_WRITE(spelunkr_bankswitch_w) - AM_RANGE(0xd005, 0xd005) AM_WRITE(spelunkr_palbank_w) - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::spelunk2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("bank1") - AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank2") - AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram") - AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_hscroll_low_w) - AM_RANGE(0xd002, 0xd002) AM_WRITE(spelunk2_gfxport_w) - AM_RANGE(0xd003, 0xd003) AM_WRITE(spelunk2_bankswitch_w) - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::youjyudn_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_SHARE("m62_textram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::youjyudn_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x80, 0x80) AM_WRITE(m62_hscroll_high_w) - AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_low_w) - AM_RANGE(0x83, 0x83) AM_WRITE(youjyudn_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m62_state::horizon_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xc83f) AM_RAM_WRITE(horizon_scrollram_w) AM_SHARE("scrollram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_SHARE("m62_tileram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::kungfum_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::kungfum_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); +} + +void m62_state::battroad_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::battroad_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x80, 0x80).w(this, FUNC(m62_state::m62_vscroll_low_w)); + map(0x81, 0x81).w(this, FUNC(m62_state::m62_hscroll_high_w)); + map(0x82, 0x82).w(this, FUNC(m62_state::m62_hscroll_low_w)); + map(0x83, 0x83).w(this, FUNC(m62_state::battroad_bankswitch_w)); +} + +void m62_state::ldrun_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::ldrun2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::ldrun2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x80, 0x80).r(this, FUNC(m62_state::ldrun2_bankswitch_r)); + map(0x80, 0x81).w(this, FUNC(m62_state::ldrun2_bankswitch_w)); +} + +void m62_state::ldrun3_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc800, 0xc800).r(this, FUNC(m62_state::ldrun3_prot_5_r)); + map(0xcc00, 0xcc00).r(this, FUNC(m62_state::ldrun3_prot_7_r)); + map(0xcfff, 0xcfff).r(this, FUNC(m62_state::ldrun3_prot_7_r)); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xd000, 0xefff).ram(); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); +} + +void m62_state::ldrun3_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x80, 0x80).w(this, FUNC(m62_state::m62_vscroll_low_w)); + map(0x81, 0x81).w(this, FUNC(m62_state::ldrun3_topbottom_mask_w)); +} + +void m62_state::ldrun4_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xc800, 0xc800).w(this, FUNC(m62_state::ldrun4_bankswitch_w)); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::ldrun4_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x82, 0x82).w(this, FUNC(m62_state::m62_hscroll_high_w)); + map(0x83, 0x83).w(this, FUNC(m62_state::m62_hscroll_low_w)); +} + +void m62_state::lotlot_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xafff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::kidniki_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xafff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::kidniki_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x80, 0x80).w(this, FUNC(m62_state::m62_hscroll_low_w)); + map(0x81, 0x81).w(this, FUNC(m62_state::m62_hscroll_high_w)); + map(0x82, 0x82).w(this, FUNC(m62_state::kidniki_text_vscroll_low_w)); + map(0x83, 0x83).w(this, FUNC(m62_state::kidniki_text_vscroll_high_w)); + map(0x84, 0x84).w(this, FUNC(m62_state::kidniki_background_bank_w)); + map(0x85, 0x85).w(this, FUNC(m62_state::kidniki_bankswitch_w)); +} + +void m62_state::spelunkr_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram"); + map(0xd000, 0xd000).w(this, FUNC(m62_state::m62_vscroll_low_w)); + map(0xd001, 0xd001).w(this, FUNC(m62_state::m62_vscroll_high_w)); + map(0xd002, 0xd002).w(this, FUNC(m62_state::m62_hscroll_low_w)); + map(0xd003, 0xd003).w(this, FUNC(m62_state::m62_hscroll_high_w)); + map(0xd004, 0xd004).w(this, FUNC(m62_state::spelunkr_bankswitch_w)); + map(0xd005, 0xd005).w(this, FUNC(m62_state::spelunkr_palbank_w)); + map(0xe000, 0xefff).ram(); +} + +void m62_state::spelunk2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).bankr("bank1"); + map(0x9000, 0x9fff).bankr("bank2"); + map(0xa000, 0xbfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram"); + map(0xd000, 0xd000).w(this, FUNC(m62_state::m62_vscroll_low_w)); + map(0xd001, 0xd001).w(this, FUNC(m62_state::m62_hscroll_low_w)); + map(0xd002, 0xd002).w(this, FUNC(m62_state::spelunk2_gfxport_w)); + map(0xd003, 0xd003).w(this, FUNC(m62_state::spelunk2_bankswitch_w)); + map(0xe000, 0xefff).ram(); +} + +void m62_state::youjyudn_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc0ff).writeonly().share("spriteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(m62_state::m62_textram_w)).share("m62_textram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} + +void m62_state::youjyudn_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(m_audio, FUNC(irem_audio_device::cmd_w)); + map(0x01, 0x01).portr("P1").w(this, FUNC(m62_state::m62_flipscreen_w)); /* + coin counters */ + map(0x02, 0x02).portr("P2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x80, 0x80).w(this, FUNC(m62_state::m62_hscroll_high_w)); + map(0x81, 0x81).w(this, FUNC(m62_state::m62_hscroll_low_w)); + map(0x83, 0x83).w(this, FUNC(m62_state::youjyudn_bankswitch_w)); +} + +void m62_state::horizon_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc1ff).ram().share("spriteram"); + map(0xc800, 0xc83f).ram().w(this, FUNC(m62_state::horizon_scrollram_w)).share("scrollram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(m62_state::m62_tileram_w)).share("m62_tileram"); + map(0xe000, 0xefff).ram(); +} static INPUT_PORTS_START( common ) diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp index 2d62e2f0e6d..96bf59c153d 100644 --- a/src/mame/drivers/m63.cpp +++ b/src/mame/drivers/m63.cpp @@ -472,52 +472,56 @@ WRITE_LINE_MEMBER(m63_state::nmi_mask_w) } -ADDRESS_MAP_START(m63_state::m63_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe1ff) AM_RAM - AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf000, 0xf007) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITENOP /* continues game when in stop mode (cleared by NMI handler) */ - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("DSW1") - AM_RANGE(0xf803, 0xf803) AM_WRITE(snd_irq_w) - AM_RANGE(0xf806, 0xf806) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m63_state::fghtbskt_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd1ff) AM_RAM - AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf000, 0xf000) AM_READ(snd_status_r) - AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P1") - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2") - AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW") - AM_RANGE(0xf000, 0xf000) AM_WRITE(snd_irq_w) - AM_RANGE(0xf001, 0xf001) AM_WRITENOP - AM_RANGE(0xf002, 0xf002) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf800, 0xf807) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xf807, 0xf807) AM_WRITE(fghtbskt_samples_w) // FIXME -ADDRESS_MAP_END - -ADDRESS_MAP_START(m63_state::i8039_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m63_state::i8039_port_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(snddata_r, snddata_w) -ADDRESS_MAP_END +void m63_state::m63_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xe1ff).ram(); + map(0xe200, 0xe2ff).ram().share("spriteram"); + map(0xe300, 0xe3ff).ram().share("scrollram"); + map(0xe400, 0xe7ff).ram().w(this, FUNC(m63_state::m63_videoram2_w)).share("videoram2"); + map(0xe800, 0xebff).ram().w(this, FUNC(m63_state::m63_videoram_w)).share("videoram"); + map(0xec00, 0xefff).ram().w(this, FUNC(m63_state::m63_colorram_w)).share("colorram"); + map(0xf000, 0xf007).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xf800, 0xf800).portr("P1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf801, 0xf801).portr("P2").nopw(); /* continues game when in stop mode (cleared by NMI handler) */ + map(0xf802, 0xf802).portr("DSW1"); + map(0xf803, 0xf803).w(this, FUNC(m63_state::snd_irq_w)); + map(0xf806, 0xf806).portr("DSW2"); +} + +void m63_state::fghtbskt_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd1ff).ram(); + map(0xd200, 0xd2ff).ram().share("spriteram"); + map(0xd300, 0xd3ff).ram().share("scrollram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(m63_state::m63_videoram2_w)).share("videoram2"); + map(0xd800, 0xdbff).ram().w(this, FUNC(m63_state::m63_videoram_w)).share("videoram"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(m63_state::m63_colorram_w)).share("colorram"); + map(0xf000, 0xf000).r(this, FUNC(m63_state::snd_status_r)); + map(0xf001, 0xf001).portr("P1"); + map(0xf002, 0xf002).portr("P2"); + map(0xf003, 0xf003).portr("DSW"); + map(0xf000, 0xf000).w(this, FUNC(m63_state::snd_irq_w)); + map(0xf001, 0xf001).nopw(); + map(0xf002, 0xf002).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf800, 0xf807).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xf807, 0xf807).w(this, FUNC(m63_state::fghtbskt_samples_w)); // FIXME +} + +void m63_state::i8039_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + + +void m63_state::i8039_port_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(m63_state::snddata_r), FUNC(m63_state::snddata_w)); +} diff --git a/src/mame/drivers/m6805evs.cpp b/src/mame/drivers/m6805evs.cpp index 4af4969fbbc..d298837588b 100644 --- a/src/mame/drivers/m6805evs.cpp +++ b/src/mame/drivers/m6805evs.cpp @@ -81,17 +81,18 @@ private: }; -ADDRESS_MAP_START(m6805evs_state::mem_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - ADDRESS_MAP_UNMAP_HIGH +void m6805evs_state::mem_map(address_map &map) +{ + map.global_mask(0x1fff); + map.unmap_value_high(); // AM_RANGE(0x0000, 0x001f) I/O registers live here - AM_RANGE(0x0020, 0x004f) AM_ROM AM_REGION("eprom", 0x0020) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x0900) AM_ROM AM_REGION("eprom", 0x0100) + map(0x0020, 0x004f).rom().region("eprom", 0x0020); + map(0x0080, 0x00ff).ram(); + map(0x0100, 0x0900).rom().region("eprom", 0x0100); // AM_RANGE(0x1f00, 0x1fef) bootloader ROM lives here - AM_RANGE(0x1ff8, 0x1fff) AM_ROM AM_REGION("eprom", 0x1ff0) -ADDRESS_MAP_END + map(0x1ff8, 0x1fff).rom().region("eprom", 0x1ff0); +} static INPUT_PORTS_START( m6805evs ) INPUT_PORTS_END diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp index 479aecbc428..b5902a8f3d6 100644 --- a/src/mame/drivers/m72.cpp +++ b/src/mame/drivers/m72.cpp @@ -858,263 +858,290 @@ WRITE16_MEMBER(m72_state::soundram_w) m_soundram[offset * 2 + 1] = data >> 8; } -ADDRESS_MAP_START(m72_state::m72_cpu1_common_map) - AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") - AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xe0000, 0xeffff) AM_READWRITE(soundram_r, soundram_w) - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m72_map) - AM_IMPORT_FROM( m72_cpu1_common_map ) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xa0000, 0xa3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::rtype_map) - AM_IMPORT_FROM( m72_cpu1_common_map ) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x40000, 0x43fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::xmultiplm72_map) - AM_IMPORT_FROM( m72_cpu1_common_map ) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x80000, 0x83fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::dbreedm72_map) - AM_IMPORT_FROM( m72_cpu1_common_map ) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x90000, 0x93fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m81_cpu1_common_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */ - AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") - AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::xmultipl_map) - AM_IMPORT_FROM( m81_cpu1_common_map ) - AM_RANGE(0x9c000, 0x9ffff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::dbreed_map) - AM_IMPORT_FROM( m81_cpu1_common_map ) - AM_RANGE(0x88000, 0x8bfff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::hharry_map) - AM_IMPORT_FROM( m81_cpu1_common_map ) - AM_RANGE(0xa0000, 0xa3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m84_cpu1_common_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xb0000, 0xb0001) AM_WRITE(irq_line_w) - AM_RANGE(0xb4000, 0xb4001) AM_WRITENOP /* ??? */ - AM_RANGE(0xbc000, 0xbc001) AM_WRITE(dmaon_w) - AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */ - AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe0000, 0xe3fff) AM_RAM /* work RAM */ - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::rtype2_map) - AM_IMPORT_FROM( m84_cpu1_common_map ) - AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xd8000, 0xd8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::hharryu_map) - AM_IMPORT_FROM( m84_cpu1_common_map ) - AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::kengo_map) - AM_IMPORT_FROM( m84_cpu1_common_map ) - AM_RANGE(0x80000, 0x83fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x84000, 0x87fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m72_state::m82_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xa0000, 0xa03ff) AM_RAM AM_SHARE("majtitle_rowscr") - AM_RANGE(0xa4000, 0xa4bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") - AM_RANGE(0xac000, 0xaffff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0xb0000, 0xbffff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") /* larger than the other games */ - AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc8000, 0xc83ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xd0000, 0xd3fff) AM_RAM /* work RAM */ - AM_RANGE(0xe0000, 0xe0001) AM_WRITE(irq_line_w) - AM_RANGE(0xe4000, 0xe4001) AM_WRITEONLY /* playfield enable? 1 during screen transitions, 0 otherwise */ - AM_RANGE(0xec000, 0xec001) AM_WRITE(dmaon_w) - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - - - - -ADDRESS_MAP_START(m72_state::m72_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(port02_w, 0x00ff) /* coin counters, reset sound cpu, other stuff? */ - AM_RANGE(0x04, 0x05) AM_WRITE(dmaon_w) - AM_RANGE(0x06, 0x07) AM_WRITE(irq_line_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) - AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) - AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) - AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) +void m72_state::m72_cpu1_common_map(address_map &map) +{ + map(0xc0000, 0xc03ff).ram().share("spriteram"); + map(0xc8000, 0xc8bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram"); + map(0xcc000, 0xccbff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2"); + map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1"); + map(0xd8000, 0xdbfff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); + map(0xe0000, 0xeffff).rw(this, FUNC(m72_state::soundram_r), FUNC(m72_state::soundram_w)); + map(0xffff0, 0xfffff).rom(); +} + +void m72_state::m72_map(address_map &map) +{ + m72_cpu1_common_map(map); + map(0x00000, 0x7ffff).rom(); + map(0xa0000, 0xa3fff).ram(); /* work RAM */ +} + +void m72_state::rtype_map(address_map &map) +{ + m72_cpu1_common_map(map); + map(0x00000, 0x3ffff).rom(); + map(0x40000, 0x43fff).ram(); /* work RAM */ +} + +void m72_state::xmultiplm72_map(address_map &map) +{ + m72_cpu1_common_map(map); + map(0x00000, 0x7ffff).rom(); + map(0x80000, 0x83fff).ram(); /* work RAM */ +} + +void m72_state::dbreedm72_map(address_map &map) +{ + m72_cpu1_common_map(map); + map(0x00000, 0x7ffff).rom(); + map(0x90000, 0x93fff).ram(); /* work RAM */ +} + +void m72_state::m81_cpu1_common_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0xb0ffe, 0xb0fff).writeonly(); /* leftover from protection?? */ + map(0xc0000, 0xc03ff).ram().share("spriteram"); + map(0xc8000, 0xc8bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram"); + map(0xcc000, 0xccbff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2"); + map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1"); + map(0xd8000, 0xdbfff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); + map(0xffff0, 0xfffff).rom(); +} + +void m72_state::xmultipl_map(address_map &map) +{ + m81_cpu1_common_map(map); + map(0x9c000, 0x9ffff).ram(); /* work RAM */ +} + +void m72_state::dbreed_map(address_map &map) +{ + m81_cpu1_common_map(map); + map(0x88000, 0x8bfff).ram(); /* work RAM */ +} + +void m72_state::hharry_map(address_map &map) +{ + m81_cpu1_common_map(map); + map(0xa0000, 0xa3fff).ram(); /* work RAM */ +} + +void m72_state::m84_cpu1_common_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0xb0000, 0xb0001).w(this, FUNC(m72_state::irq_line_w)); + map(0xb4000, 0xb4001).nopw(); /* ??? */ + map(0xbc000, 0xbc001).w(this, FUNC(m72_state::dmaon_w)); + map(0xb0ffe, 0xb0fff).writeonly(); /* leftover from protection?? */ + map(0xc0000, 0xc03ff).ram().share("spriteram"); + map(0xe0000, 0xe3fff).ram(); /* work RAM */ + map(0xffff0, 0xfffff).rom(); +} + +void m72_state::rtype2_map(address_map &map) +{ + m84_cpu1_common_map(map); + map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1"); + map(0xd4000, 0xd7fff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); + map(0xc8000, 0xc8bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram"); + map(0xd8000, 0xd8bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2"); +} + +void m72_state::hharryu_map(address_map &map) +{ + m84_cpu1_common_map(map); + map(0xd0000, 0xd3fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1"); + map(0xd4000, 0xd7fff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); + map(0xa0000, 0xa0bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram"); + map(0xa8000, 0xa8bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2"); +} + +void m72_state::kengo_map(address_map &map) +{ + m84_cpu1_common_map(map); + map(0x80000, 0x83fff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1"); + map(0x84000, 0x87fff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); + map(0xa0000, 0xa0bff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram"); + map(0xa8000, 0xa8bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2"); +} + + +void m72_state::m82_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0xa0000, 0xa03ff).ram().share("majtitle_rowscr"); + map(0xa4000, 0xa4bff).rw(this, FUNC(m72_state::palette2_r), FUNC(m72_state::palette2_w)).share("paletteram2"); + map(0xac000, 0xaffff).ram().w(this, FUNC(m72_state::videoram1_w)).share("videoram1"); + map(0xb0000, 0xbffff).ram().w(this, FUNC(m72_state::videoram2_w)).share("videoram2"); /* larger than the other games */ + map(0xc0000, 0xc03ff).ram().share("spriteram"); + map(0xc8000, 0xc83ff).ram().share("spriteram2"); + map(0xcc000, 0xccbff).rw(this, FUNC(m72_state::palette1_r), FUNC(m72_state::palette1_w)).share("paletteram"); + map(0xd0000, 0xd3fff).ram(); /* work RAM */ + map(0xe0000, 0xe0001).w(this, FUNC(m72_state::irq_line_w)); + map(0xe4000, 0xe4001).writeonly(); /* playfield enable? 1 during screen transitions, 0 otherwise */ + map(0xec000, 0xec001).w(this, FUNC(m72_state::dmaon_w)); + map(0xffff0, 0xfffff).rom(); +} + + + + +void m72_state::m72_portmap(address_map &map) +{ + map(0x00, 0x01).portr("IN0"); + map(0x02, 0x03).portr("IN1"); + map(0x04, 0x05).portr("DSW"); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m72_state::port02_w)); /* coin counters, reset sound cpu, other stuff? */ + map(0x04, 0x05).w(this, FUNC(m72_state::dmaon_w)); + map(0x06, 0x07).w(this, FUNC(m72_state::irq_line_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w)); + map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w)); + map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w)); + map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w)); /* { 0xc0, 0xc0 trigger sample, filled by init_ function */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m84_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) - AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) - AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) - AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m84_v33_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff) - AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) - AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) - AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) - AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) +} + +void m72_state::m84_portmap(address_map &map) +{ + map(0x00, 0x01).portr("IN0"); + map(0x02, 0x03).portr("IN1"); + map(0x04, 0x05).portr("DSW"); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w)); + map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w)); + map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w)); + map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w)); +} + +void m72_state::m84_v33_portmap(address_map &map) +{ + map(0x00, 0x01).portr("IN0"); + map(0x02, 0x03).portr("IN1"); + map(0x04, 0x05).portr("DSW"); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w)); + map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w)); + map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w)); + map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w)); + map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w)); // AM_RANGE(0x8c, 0x8f) AM_WRITENOP /* ??? */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m72_state::poundfor_portmap) - AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x08, 0x0f) AM_DEVREAD8("upd4701l", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0x08, 0x0f) AM_DEVREAD8("upd4701h", upd4701_device, read_xy, 0xff00) - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(poundfor_port02_w, 0x00ff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) - AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) - AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) - AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m82_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) - AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) - AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) - AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) +} + + +void m72_state::poundfor_portmap(address_map &map) +{ + map(0x02, 0x03).portr("IN1"); + map(0x04, 0x05).portr("DSW"); + map(0x08, 0x0f).r("upd4701l", FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0x08, 0x0f).r("upd4701h", FUNC(upd4701_device::read_xy)).umask16(0xff00); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m72_state::poundfor_port02_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w)); + map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w)); + map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w)); + map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w)); +} + +void m72_state::m82_portmap(address_map &map) +{ + map(0x00, 0x01).portr("IN0"); + map(0x02, 0x03).portr("IN1"); + map(0x04, 0x05).portr("DSW"); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w)); + map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w)); + map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w)); + map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w)); // these ports control the tilemap sizes, rowscroll etc. that m82 has, exact bit usage not known (maybe one for each layer?) - AM_RANGE(0x8c, 0x8d) AM_WRITE(m82_tm_ctrl_w) - AM_RANGE(0x8e, 0x8f) AM_WRITE(m82_gfx_ctrl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::m81_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE8(rtype2_port02_w, 0x00ff) /* coin counters, reset sound cpu, other stuff? */ - AM_RANGE(0x04, 0x05) AM_WRITE(dmaon_w) - AM_RANGE(0x06, 0x07) AM_WRITE(irq_line_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) - AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) - AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) - AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(m72_state::sound_ram_map) - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("soundram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::sound_rom_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::rtype_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) - AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m72_state::rtype2_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, rtype2_sample_addr_w) - AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) - AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) + map(0x8c, 0x8d).w(this, FUNC(m72_state::m82_tm_ctrl_w)); + map(0x8e, 0x8f).w(this, FUNC(m72_state::m82_gfx_ctrl_w)); +} + +void m72_state::m81_portmap(address_map &map) +{ + map(0x00, 0x01).portr("IN0"); + map(0x02, 0x03).portr("IN1"); + map(0x04, 0x05).portr("DSW"); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).w(this, FUNC(m72_state::rtype2_port02_w)); /* coin counters, reset sound cpu, other stuff? */ + map(0x04, 0x05).w(this, FUNC(m72_state::dmaon_w)); + map(0x06, 0x07).w(this, FUNC(m72_state::irq_line_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x81).w(this, FUNC(m72_state::scrolly1_w)); + map(0x82, 0x83).w(this, FUNC(m72_state::scrollx1_w)); + map(0x84, 0x85).w(this, FUNC(m72_state::scrolly2_w)); + map(0x86, 0x87).w(this, FUNC(m72_state::scrollx2_w)); +} + + + +void m72_state::sound_ram_map(address_map &map) +{ + map(0x0000, 0xffff).ram().share("soundram"); +} + +void m72_state::sound_rom_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram(); +} + +void m72_state::rtype_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x02, 0x02).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); +} + +void m72_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x02, 0x02).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); +} + +void m72_state::rtype2_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::rtype2_sample_addr_w)); + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); + map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); // AM_RANGE(0x87, 0x87) AM_WRITENOP /* ??? */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(m72_state::poundfor_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVWRITE("m72", m72_audio_device, poundfor_sample_addr_w) - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x42, 0x42) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) -ADDRESS_MAP_END +void m72_state::poundfor_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x13).w(m_audio, FUNC(m72_audio_device::poundfor_sample_addr_w)); + map(0x40, 0x41).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x42, 0x42).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); +} -ADDRESS_MAP_START(m72_state::mcu_io_map) +void m72_state::mcu_io_map(address_map &map) +{ /* External access */ - AM_RANGE(0x0000, 0x0000) AM_READWRITE(mcu_sample_r, mcu_low_w) - AM_RANGE(0x0001, 0x0001) AM_WRITE(mcu_high_w) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(mcu_snd_r, mcu_ack_w) + map(0x0000, 0x0000).rw(this, FUNC(m72_state::mcu_sample_r), FUNC(m72_state::mcu_low_w)); + map(0x0001, 0x0001).w(this, FUNC(m72_state::mcu_high_w)); + map(0x0002, 0x0002).rw(this, FUNC(m72_state::mcu_snd_r), FUNC(m72_state::mcu_ack_w)); /* shared at b0000 - b0fff on the main cpu */ - AM_RANGE(0xc000, 0xcfff) AM_READWRITE(mcu_data_r,mcu_data_w ) -ADDRESS_MAP_END + map(0xc000, 0xcfff).rw(this, FUNC(m72_state::mcu_data_r), FUNC(m72_state::mcu_data_w)); +} #define COIN_MODE_1 \ PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coinage ) ) PORT_CONDITION("DSW", 0x0400, NOTEQUALS, 0x0000) PORT_DIPLOCATION("SW1:5,6,7,8") \ diff --git a/src/mame/drivers/m79152pc.cpp b/src/mame/drivers/m79152pc.cpp index 6c67b063458..49d9fefc9af 100644 --- a/src/mame/drivers/m79152pc.cpp +++ b/src/mame/drivers/m79152pc.cpp @@ -45,20 +45,22 @@ private: required_device<z80sio_device> m_uart; }; -ADDRESS_MAP_START(m79152pc_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9fff) AM_RAM AM_SHARE("attributes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(m79152pc_state::io_map) +void m79152pc_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8fff).ram().share("videoram"); + map(0x9000, 0x9fff).ram().share("attributes"); +} + +void m79152pc_state::io_map(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("uart", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END + map.global_mask(0xff); + map(0x40, 0x43).rw(m_uart, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x44, 0x47).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /* Input ports */ static INPUT_PORTS_START( m79152pc ) diff --git a/src/mame/drivers/m79amb.cpp b/src/mame/drivers/m79amb.cpp index 768fbbf6ed0..50ac211b282 100644 --- a/src/mame/drivers/m79amb.cpp +++ b/src/mame/drivers/m79amb.cpp @@ -118,19 +118,20 @@ WRITE8_MEMBER(m79amb_state::m79amb_8002_w) output().set_value("EXP_LAMP", data ? 1 : 0); } -ADDRESS_MAP_START(m79amb_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(ramtek_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x6000, 0x63ff) AM_RAM /* ?? */ - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("8000") AM_WRITE(m79amb_8000_w) - AM_RANGE(0x8001, 0x8001) AM_WRITEONLY AM_SHARE("mask") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("8002") AM_WRITE(m79amb_8002_w) - AM_RANGE(0x8003, 0x8003) AM_WRITE(m79amb_8003_w) - AM_RANGE(0x8004, 0x8004) AM_READ(gray5bit_controller0_r) - AM_RANGE(0x8005, 0x8005) AM_READ(gray5bit_controller1_r) - AM_RANGE(0xc000, 0xc07f) AM_RAM /* ?? */ - AM_RANGE(0xc200, 0xc27f) AM_RAM /* ?? */ -ADDRESS_MAP_END +void m79amb_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x5fff).ram().w(this, FUNC(m79amb_state::ramtek_videoram_w)).share("videoram"); + map(0x6000, 0x63ff).ram(); /* ?? */ + map(0x8000, 0x8000).portr("8000").w(this, FUNC(m79amb_state::m79amb_8000_w)); + map(0x8001, 0x8001).writeonly().share("mask"); + map(0x8002, 0x8002).portr("8002").w(this, FUNC(m79amb_state::m79amb_8002_w)); + map(0x8003, 0x8003).w(this, FUNC(m79amb_state::m79amb_8003_w)); + map(0x8004, 0x8004).r(this, FUNC(m79amb_state::gray5bit_controller0_r)); + map(0x8005, 0x8005).r(this, FUNC(m79amb_state::gray5bit_controller1_r)); + map(0xc000, 0xc07f).ram(); /* ?? */ + map(0xc200, 0xc27f).ram(); /* ?? */ +} diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp index 07aa43d07a0..286bf58795a 100644 --- a/src/mame/drivers/m90.cpp +++ b/src/mame/drivers/m90.cpp @@ -69,85 +69,94 @@ WRITE16_MEMBER(m90_state::unknown_w) /***************************************************************************/ -ADDRESS_MAP_START(m90_state::m90_main_cpu_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x80000, 0x8ffff) AM_ROMBANK("bank1") /* Quiz F1 only */ - AM_RANGE(0xa0000, 0xa3fff) AM_RAM - AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data") - AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::dynablsb_main_cpu_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x6000e, 0x60fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa0000, 0xa3fff) AM_RAM - AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data") - AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::bomblord_main_cpu_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0xa0000, 0xa3fff) AM_RAM - AM_RANGE(0xc000e, 0xc0fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m90_video_w) AM_SHARE("video_data") - AM_RANGE(0xe0000, 0xe03ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::m90_main_cpu_io_map) - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2") - AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w) - AM_RANGE(0x02, 0x03) AM_READ_PORT("SYSTEM") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4") - AM_RANGE(0x80, 0x8f) AM_WRITE(m90_video_control_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::dynablsb_main_cpu_io_map) - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2") - AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w) - AM_RANGE(0x02, 0x03) AM_READ_PORT("SYSTEM") +void m90_state::m90_main_cpu_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0x80000, 0x8ffff).bankr("bank1"); /* Quiz F1 only */ + map(0xa0000, 0xa3fff).ram(); + map(0xd0000, 0xdffff).ram().w(this, FUNC(m90_state::m90_video_w)).share("video_data"); + map(0xe0000, 0xe03ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffff0, 0xfffff).rom(); +} + +void m90_state::dynablsb_main_cpu_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x6000e, 0x60fff).ram().share("spriteram"); + map(0xa0000, 0xa3fff).ram(); + map(0xd0000, 0xdffff).ram().w(this, FUNC(m90_state::m90_video_w)).share("video_data"); + map(0xe0000, 0xe03ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffff0, 0xfffff).rom(); +} + +void m90_state::bomblord_main_cpu_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0xa0000, 0xa3fff).ram(); + map(0xc000e, 0xc0fff).ram().share("spriteram"); + map(0xd0000, 0xdffff).ram().w(this, FUNC(m90_state::m90_video_w)).share("video_data"); + map(0xe0000, 0xe03ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffff0, 0xfffff).rom(); +} + +void m90_state::m90_main_cpu_io_map(address_map &map) +{ + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x00, 0x01).portr("P1_P2"); + map(0x02, 0x03).w(this, FUNC(m90_state::m90_coincounter_w)); + map(0x02, 0x03).portr("SYSTEM"); + map(0x04, 0x05).portr("DSW"); + map(0x06, 0x07).portr("P3_P4"); + map(0x80, 0x8f).w(this, FUNC(m90_state::m90_video_control_w)); +} + +void m90_state::dynablsb_main_cpu_io_map(address_map &map) +{ + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x00, 0x01).portr("P1_P2"); + map(0x02, 0x03).w(this, FUNC(m90_state::m90_coincounter_w)); + map(0x02, 0x03).portr("SYSTEM"); // AM_RANGE(0x04, 0x05) AM_WRITE(unknown_w) /* dynablsb: write continuously 0x6000 */ - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4") - AM_RANGE(0x80, 0x8f) AM_WRITE(m90_video_control_w) + map(0x04, 0x05).portr("DSW"); + map(0x06, 0x07).portr("P3_P4"); + map(0x80, 0x8f).w(this, FUNC(m90_state::m90_video_control_w)); // AM_RANGE(0x90, 0x91) AM_WRITE(unknown_w) -ADDRESS_MAP_END +} /*****************************************************************************/ -ADDRESS_MAP_START(m90_state::m90_sound_cpu_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::m90_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, rtype2_sample_addr_w) - AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) - AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::dynablsb_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x82, 0x82) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m90_state::m99_sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, poundfor_sample_addr_w) - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x42, 0x42) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) -ADDRESS_MAP_END +void m90_state::m90_sound_cpu_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram(); +} + +void m90_state::m90_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::rtype2_sample_addr_w)); + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); + map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); +} + +void m90_state::dynablsb_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x82, 0x82).w("dac", FUNC(dac_byte_interface::write)); +} + +void m90_state::m99_sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(m_audio, FUNC(m72_audio_device::poundfor_sample_addr_w)); + map(0x40, 0x41).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x42, 0x42).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/m92.cpp b/src/mame/drivers/m92.cpp index 09a5b8811a3..62417c7d00c 100644 --- a/src/mame/drivers/m92.cpp +++ b/src/mame/drivers/m92.cpp @@ -306,78 +306,83 @@ WRITE16_MEMBER(m92_state::m92_sound_reset_w) /*****************************************************************************/ /* appears to be an earlier board */ -ADDRESS_MAP_START(m92_state::lethalth_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x80000, 0x8ffff) AM_RAM_WRITE(m92_vram_w) AM_SHARE("vram_data") - AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */ - AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w) - AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_SHARE("spritecontrol") - AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w) - AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m92_state::m92_map) - AM_RANGE(0x00000, 0x9ffff) AM_ROM - AM_RANGE(0xa0000, 0xbffff) AM_ROMBANK("bank1") - AM_RANGE(0xc0000, 0xcffff) AM_ROM AM_REGION("maincpu", 0x00000) /* Mirror used by In The Hunt as protection */ - AM_RANGE(0xd0000, 0xdffff) AM_RAM_WRITE(m92_vram_w) AM_SHARE("vram_data") - AM_RANGE(0xe0000, 0xeffff) AM_RAM /* System ram */ - AM_RANGE(0xf8000, 0xf87ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf8800, 0xf8fff) AM_READWRITE(m92_paletteram_r, m92_paletteram_w) - AM_RANGE(0xf9000, 0xf900f) AM_WRITE(m92_spritecontrol_w) AM_SHARE("spritecontrol") - AM_RANGE(0xf9800, 0xf9801) AM_WRITE(m92_videocontrol_w) - AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("maincpu", 0x7fff0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m92_state::m92_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2") - AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4") - AM_RANGE(0x08, 0x09) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // answer from sound CPU - AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE(m92_coincounter_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x87) AM_WRITE(m92_pf1_control_w) - AM_RANGE(0x88, 0x8f) AM_WRITE(m92_pf2_control_w) - AM_RANGE(0x90, 0x97) AM_WRITE(m92_pf3_control_w) - AM_RANGE(0x98, 0x9f) AM_WRITE(m92_master_control_w) - AM_RANGE(0xc0, 0xc1) AM_WRITE(m92_sound_reset_w) -ADDRESS_MAP_END +void m92_state::lethalth_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0x80000, 0x8ffff).ram().w(this, FUNC(m92_state::m92_vram_w)).share("vram_data"); + map(0xe0000, 0xeffff).ram(); /* System ram */ + map(0xf8000, 0xf87ff).ram().share("spriteram"); + map(0xf8800, 0xf8fff).rw(this, FUNC(m92_state::m92_paletteram_r), FUNC(m92_state::m92_paletteram_w)); + map(0xf9000, 0xf900f).w(this, FUNC(m92_state::m92_spritecontrol_w)).share("spritecontrol"); + map(0xf9800, 0xf9801).w(this, FUNC(m92_state::m92_videocontrol_w)); + map(0xffff0, 0xfffff).rom().region("maincpu", 0x7fff0); +} + +void m92_state::m92_map(address_map &map) +{ + map(0x00000, 0x9ffff).rom(); + map(0xa0000, 0xbffff).bankr("bank1"); + map(0xc0000, 0xcffff).rom().region("maincpu", 0x00000); /* Mirror used by In The Hunt as protection */ + map(0xd0000, 0xdffff).ram().w(this, FUNC(m92_state::m92_vram_w)).share("vram_data"); + map(0xe0000, 0xeffff).ram(); /* System ram */ + map(0xf8000, 0xf87ff).ram().share("spriteram"); + map(0xf8800, 0xf8fff).rw(this, FUNC(m92_state::m92_paletteram_r), FUNC(m92_state::m92_paletteram_w)); + map(0xf9000, 0xf900f).w(this, FUNC(m92_state::m92_spritecontrol_w)).share("spritecontrol"); + map(0xf9800, 0xf9801).w(this, FUNC(m92_state::m92_videocontrol_w)); + map(0xffff0, 0xfffff).rom().region("maincpu", 0x7fff0); +} + +void m92_state::m92_portmap(address_map &map) +{ + map(0x00, 0x01).portr("P1_P2"); + map(0x02, 0x03).portr("COINS_DSW3"); + map(0x04, 0x05).portr("DSW"); + map(0x06, 0x07).portr("P3_P4"); + map(0x08, 0x08).r("soundlatch2", FUNC(generic_latch_8_device::read)); // answer from sound CPU + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x03).w(this, FUNC(m92_state::m92_coincounter_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x87).w(this, FUNC(m92_state::m92_pf1_control_w)); + map(0x88, 0x8f).w(this, FUNC(m92_state::m92_pf2_control_w)); + map(0x90, 0x97).w(this, FUNC(m92_state::m92_pf3_control_w)); + map(0x98, 0x9f).w(this, FUNC(m92_state::m92_master_control_w)); + map(0xc0, 0xc1).w(this, FUNC(m92_state::m92_sound_reset_w)); +} WRITE16_MEMBER(m92_state::oki_bank_w) { m_oki->set_rom_bank((data+1) & 0x3); // +1? } -ADDRESS_MAP_START(m92_state::ppan_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2") - AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3") - AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") - AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4") - AM_RANGE(0x10, 0x11) AM_WRITE(oki_bank_w) - AM_RANGE(0x18, 0x19) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE(m92_coincounter_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x80, 0x87) AM_WRITE(m92_pf1_control_w) - AM_RANGE(0x88, 0x8f) AM_WRITE(m92_pf2_control_w) - AM_RANGE(0x90, 0x97) AM_WRITE(m92_pf3_control_w) - AM_RANGE(0x98, 0x9f) AM_WRITE(m92_master_control_w) -ADDRESS_MAP_END +void m92_state::ppan_portmap(address_map &map) +{ + map(0x00, 0x01).portr("P1_P2"); + map(0x02, 0x03).portr("COINS_DSW3"); + map(0x04, 0x05).portr("DSW"); + map(0x06, 0x07).portr("P3_P4"); + map(0x10, 0x11).w(this, FUNC(m92_state::oki_bank_w)); + map(0x18, 0x18).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x02, 0x03).w(this, FUNC(m92_state::m92_coincounter_w)); + map(0x40, 0x43).rw(m_upd71059c, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x80, 0x87).w(this, FUNC(m92_state::m92_pf1_control_w)); + map(0x88, 0x8f).w(this, FUNC(m92_state::m92_pf2_control_w)); + map(0x90, 0x97).w(this, FUNC(m92_state::m92_pf3_control_w)); + map(0x98, 0x9f).w(this, FUNC(m92_state::m92_master_control_w)); +} /******************************************************************************/ -ADDRESS_MAP_START(m92_state::sound_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0xa0000, 0xa3fff) AM_RAM - AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", iremga20_device, irem_ga20_r, irem_ga20_w, 0x00ff) - AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xa8044, 0xa8045) AM_DEVREADWRITE8("soundlatch", generic_latch_8_device, read, acknowledge_w, 0x00ff) - AM_RANGE(0xa8046, 0xa8047) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0) -ADDRESS_MAP_END +void m92_state::sound_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0xa0000, 0xa3fff).ram(); + map(0xa8000, 0xa803f).rw("irem", FUNC(iremga20_device::irem_ga20_r), FUNC(iremga20_device::irem_ga20_w)).umask16(0x00ff); + map(0xa8040, 0xa8043).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0xa8044, 0xa8044).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0xa8046, 0xa8046).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0xffff0, 0xfffff).rom().region("soundcpu", 0x1fff0); +} /******************************************************************************/ diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp index 843ea4578d8..37d0cc1dde3 100644 --- a/src/mame/drivers/mac.cpp +++ b/src/mame/drivers/mac.cpp @@ -591,265 +591,281 @@ TIMER_DEVICE_CALLBACK_MEMBER(mac_state::mac_scanline) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(mac_state::mac512ke_map) - AM_RANGE(0x800000, 0x9fffff) AM_READ(mac_scc_r) - AM_RANGE(0xa00000, 0xbfffff) AM_WRITE(mac_scc_w) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w) - AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w) - AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macplus_map) - AM_RANGE(0x580000, 0x5fffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w) - AM_RANGE(0x800000, 0x9fffff) AM_READ(mac_scc_r) - AM_RANGE(0xa00000, 0xbfffff) AM_WRITE(mac_scc_w) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w) - AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w) - AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macse_map) - AM_RANGE(0x580000, 0x5fffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w) - AM_RANGE(0x900000, 0x9fffff) AM_READ(mac_scc_r) - AM_RANGE(0xb00000, 0xbfffff) AM_WRITE(mac_scc_w) - AM_RANGE(0xd00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w) - AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w) - AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macprtb_map) - AM_RANGE(0x900000, 0x93ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0c0000) - AM_RANGE(0xf60000, 0xf6ffff) AM_READWRITE(mac_iwm_r, mac_iwm_w) - AM_RANGE(0xf70000, 0xf7ffff) AM_READWRITE(mac_via_r, mac_via_w) - AM_RANGE(0xf90000, 0xf9ffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w) - AM_RANGE(0xfa8000, 0xfaffff) AM_RAM AM_SHARE("vram16") // VRAM - AM_RANGE(0xfb0000, 0xfbffff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffff) - AM_RANGE(0xfc0000, 0xfcffff) AM_READ(mac_config_r) - AM_RANGE(0xfd0000, 0xfdffff) AM_READWRITE(mac_scc_r, mac_scc_2_w) - AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::maclc_map) - ADDRESS_MAP_GLOBAL_MASK(0x80ffffff) // V8 uses bit 31 and 23-0 for address decoding only - - AM_RANGE(0xa00000, 0xafffff) AM_ROM AM_REGION("bootrom", 0) // ROM (in 32-bit mode) - - AM_RANGE(0xf00000, 0xf01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) - AM_RANGE(0xf04000, 0xf05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) - AM_RANGE(0xf06000, 0xf07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) - AM_RANGE(0xf10000, 0xf11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) - AM_RANGE(0xf12000, 0xf13fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) - AM_RANGE(0xf14000, 0xf15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) - AM_RANGE(0xf16000, 0xf17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) - AM_RANGE(0xf24000, 0xf24003) AM_READWRITE(rbv_ramdac_r, ariel_ramdac_w) - AM_RANGE(0xf26000, 0xf27fff) AM_READWRITE8(mac_rbv_r, mac_rbv_w, 0xffffffff) // VIA2 (V8) - AM_RANGE(0xf40000, 0xfbffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::maclc3_map) - AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000) - - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50012000, 0x50013fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50024000, 0x50025fff) AM_WRITE( ariel_ramdac_w ) AM_MIRROR(0x00f00000) - AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE8(mac_rbv_r, mac_rbv_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50028000, 0x50028003) AM_READWRITE8(mac_sonora_vctl_r, mac_sonora_vctl_w, 0xffffffff) AM_MIRROR(0x00f00000) - - AM_RANGE(0x5ffffffc, 0x5fffffff) AM_READ(mac_read_id) - - AM_RANGE(0x60000000, 0x600fffff) AM_RAM AM_MIRROR(0x0ff00000) AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macii_map) - AM_RANGE(0x40000000, 0x4003ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ffc0000) +void mac_state::mac512ke_map(address_map &map) +{ + map(0x800000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r)); + map(0xa00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w)); +} + +void mac_state::macplus_map(address_map &map) +{ + map(0x580000, 0x5fffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w)); + map(0x800000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r)); + map(0xa00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w)); +} + +void mac_state::macse_map(address_map &map) +{ + map(0x580000, 0x5fffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w)); + map(0x900000, 0x9fffff).r(this, FUNC(mac_state::mac_scc_r)); + map(0xb00000, 0xbfffff).w(this, FUNC(mac_state::mac_scc_w)); + map(0xd00000, 0xdfffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0xe80000, 0xefffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w)); +} + +void mac_state::macprtb_map(address_map &map) +{ + map(0x900000, 0x93ffff).rom().region("bootrom", 0).mirror(0x0c0000); + map(0xf60000, 0xf6ffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0xf70000, 0xf7ffff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0xf90000, 0xf9ffff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macplus_scsi_w)); + map(0xfa8000, 0xfaffff).ram().share("vram16"); // VRAM + map(0xfb0000, 0xfbffff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)); + map(0xfc0000, 0xfcffff).r(this, FUNC(mac_state::mac_config_r)); + map(0xfd0000, 0xfdffff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)); + map(0xfffff0, 0xffffff).rw(this, FUNC(mac_state::mac_autovector_r), FUNC(mac_state::mac_autovector_w)); +} + +void mac_state::maclc_map(address_map &map) +{ + map.global_mask(0x80ffffff); // V8 uses bit 31 and 23-0 for address decoding only + + map(0xa00000, 0xafffff).rom().region("bootrom", 0); // ROM (in 32-bit mode) + + map(0xf00000, 0xf01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0xf04000, 0xf05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)); + map(0xf06000, 0xf07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)); + map(0xf10000, 0xf11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)); + map(0xf12000, 0xf13fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)); + map(0xf14000, 0xf15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)); + map(0xf16000, 0xf17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0xf24000, 0xf24003).rw(this, FUNC(mac_state::rbv_ramdac_r), FUNC(mac_state::ariel_ramdac_w)); + map(0xf26000, 0xf27fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)); // VIA2 (V8) + map(0xf40000, 0xfbffff).ram().share("vram"); +} + +void mac_state::maclc3_map(address_map &map) +{ + map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000); + + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000); + map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000); + map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000); + map(0x50012000, 0x50013fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000); + map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000); + map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000); + map(0x50024000, 0x50025fff).w(this, FUNC(mac_state::ariel_ramdac_w)).mirror(0x00f00000); + map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)).mirror(0x00f00000); + map(0x50028000, 0x50028003).rw(this, FUNC(mac_state::mac_sonora_vctl_r), FUNC(mac_state::mac_sonora_vctl_w)).mirror(0x00f00000); + + map(0x5ffffffc, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id)); + + map(0x60000000, 0x600fffff).ram().mirror(0x0ff00000).share("vram"); +} + +void mac_state::macii_map(address_map &map) +{ + map(0x40000000, 0x4003ffff).rom().region("bootrom", 0).mirror(0x0ffc0000); // MMU remaps I/O without the F - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50006000, 0x50006003) AM_WRITE(macii_scsi_drq_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x50006060, 0x50006063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000) - AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::maciici_map) - AM_RANGE(0x40000000, 0x4007ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff80000) - - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50024000, 0x50024007) AM_WRITE( rbv_ramdac_w ) AM_MIRROR(0x00f00000) - AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE8(mac_rbv_r, mac_rbv_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macse30_map) - AM_RANGE(0x40000000, 0x4003ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ffc0000) - - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) // mirror - - AM_RANGE(0xfe000000, 0xfe00ffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xfee00000, 0xfee0ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x000f0000) - AM_RANGE(0xfeffe000, 0xfeffffff) AM_ROM AM_REGION("se30vrom", 0x0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::maciifx_map) - AM_RANGE(0x40000000, 0x4007ffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff80000) - - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE8(scciop_r, scciop_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x5000a000, 0x5000bfff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x5000c060, 0x5000c063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000) - AM_RANGE(0x5000d000, 0x5000d003) AM_WRITE(macii_scsi_drq_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x5000d060, 0x5000d063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x00f00000) - AM_RANGE(0x50010000, 0x50011fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50012000, 0x50013fff) AM_READWRITE8(swimiop_r, swimiop_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50018000, 0x50019fff) AM_READWRITE(biu_r, biu_w) AM_MIRROR(0x00f00000) - AM_RANGE(0x5001a000, 0x5001bfff) AM_READWRITE8(oss_r, oss_w, 0xffffffff) AM_MIRROR(0x00f00000) - AM_RANGE(0x50024000, 0x50027fff) AM_READ(buserror_r) AM_MIRROR(0x00f00000) // must bus error on access here so ROM can determine we're an FMC - AM_RANGE(0x50040000, 0x50041fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00f00000) -ADDRESS_MAP_END + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); + map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000); + map(0x50006000, 0x50006003).w(this, FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000); + map(0x50006060, 0x50006063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000); + map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000); + map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000); + map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000); + map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000); + map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); +} + +void mac_state::maciici_map(address_map &map) +{ + map(0x40000000, 0x4007ffff).rom().region("bootrom", 0).mirror(0x0ff80000); + + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000); + map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000); + map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000); + map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000); + map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000); + map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000); + map(0x50024000, 0x50024007).w(this, FUNC(mac_state::rbv_ramdac_w)).mirror(0x00f00000); + map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_rbv_r), FUNC(mac_state::mac_rbv_w)).mirror(0x00f00000); + map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); +} + +void mac_state::macse30_map(address_map &map) +{ + map(0x40000000, 0x4003ffff).rom().region("bootrom", 0).mirror(0x0ffc0000); + + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); + map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000); + map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000); + map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000); + map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000); + map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000); + map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000); + map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); // mirror + + map(0xfe000000, 0xfe00ffff).ram().share("vram"); + map(0xfee00000, 0xfee0ffff).ram().share("vram").mirror(0x000f0000); + map(0xfeffe000, 0xfeffffff).rom().region("se30vrom", 0x0); +} + +void mac_state::maciifx_map(address_map &map) +{ + map(0x40000000, 0x4007ffff).rom().region("bootrom", 0).mirror(0x0ff80000); + + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::scciop_r), FUNC(mac_state::scciop_w)).mirror(0x00f00000); + map(0x5000a000, 0x5000bfff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000); + map(0x5000c060, 0x5000c063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000); + map(0x5000d000, 0x5000d003).w(this, FUNC(mac_state::macii_scsi_drq_w)).mirror(0x00f00000); + map(0x5000d060, 0x5000d063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x00f00000); + map(0x50010000, 0x50011fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00f00000); + map(0x50012000, 0x50013fff).rw(this, FUNC(mac_state::swimiop_r), FUNC(mac_state::swimiop_w)).mirror(0x00f00000); + map(0x50018000, 0x50019fff).rw(this, FUNC(mac_state::biu_r), FUNC(mac_state::biu_w)).mirror(0x00f00000); + map(0x5001a000, 0x5001bfff).rw(this, FUNC(mac_state::oss_r), FUNC(mac_state::oss_w)).mirror(0x00f00000); + map(0x50024000, 0x50027fff).r(this, FUNC(mac_state::buserror_r)).mirror(0x00f00000); // must bus error on access here so ROM can determine we're an FMC + map(0x50040000, 0x50041fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); +} // ROM detects the "Jaws" ASIC by checking for I/O space mirrored at 0x01000000 boundries -ADDRESS_MAP_START(mac_state::macpb140_map) - AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000) - - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x01f00000) - AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x01f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x01f00000) - AM_RANGE(0x50006000, 0x50007fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) AM_MIRROR(0x01f00000) - AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) AM_MIRROR(0x01f00000) - AM_RANGE(0x50012060, 0x50012063) AM_READ(macii_scsi_drq_r) AM_MIRROR(0x01f00000) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x01f00000) - AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x01f00000) - AM_RANGE(0x50024000, 0x50027fff) AM_READ(buserror_r) AM_MIRROR(0x01f00000) // bus error here to make sure we aren't mistaken for another decoder - - AM_RANGE(0xfee08000, 0xfeffffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macpb160_map) - AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000) - - AM_RANGE(0x50f00000, 0x50f01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) - AM_RANGE(0x50f02000, 0x50f03fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) - AM_RANGE(0x50f04000, 0x50f05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) - AM_RANGE(0x50f06000, 0x50f07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) - AM_RANGE(0x50f10000, 0x50f11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) - AM_RANGE(0x50f12060, 0x50f12063) AM_READ(macii_scsi_drq_r) - AM_RANGE(0x50f14000, 0x50f15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) - AM_RANGE(0x50f16000, 0x50f17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) - AM_RANGE(0x50f20000, 0x50f21fff) AM_READWRITE8(mac_gsc_r, mac_gsc_w, 0xffffffff) - AM_RANGE(0x50f24000, 0x50f27fff) AM_READ(buserror_r) // bus error here to make sure we aren't mistaken for another decoder - - AM_RANGE(0x60000000, 0x6001ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x0ffe0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macpb165c_map) - AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000) - - AM_RANGE(0x50f00000, 0x50f01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) - AM_RANGE(0x50f02000, 0x50f03fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) - AM_RANGE(0x50f04000, 0x50f05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) - AM_RANGE(0x50f06000, 0x50f07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) - AM_RANGE(0x50f10000, 0x50f11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) - AM_RANGE(0x50f12060, 0x50f12063) AM_READ(macii_scsi_drq_r) - AM_RANGE(0x50f14000, 0x50f15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) - AM_RANGE(0x50f16000, 0x50f17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) - AM_RANGE(0x50f20000, 0x50f21fff) AM_READ(buserror_r) // bus error here to detect we're not the grayscale 160/165/180 - AM_RANGE(0x50f24000, 0x50f27fff) AM_READ(buserror_r) // bus error here to make sure we aren't mistaken for another decoder +void mac_state::macpb140_map(address_map &map) +{ + map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000); + + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x01f00000); + map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x01f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x01f00000); + map(0x50006000, 0x50007fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)).mirror(0x01f00000); + map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x01f00000); + map(0x50012060, 0x50012063).r(this, FUNC(mac_state::macii_scsi_drq_r)).mirror(0x01f00000); + map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x01f00000); + map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x01f00000); + map(0x50024000, 0x50027fff).r(this, FUNC(mac_state::buserror_r)).mirror(0x01f00000); // bus error here to make sure we aren't mistaken for another decoder + + map(0xfee08000, 0xfeffffff).ram().share("vram"); +} + +void mac_state::macpb160_map(address_map &map) +{ + map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000); + + map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)); + map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)); + map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)); + map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)); + map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r)); + map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)); + map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0x50f20000, 0x50f21fff).rw(this, FUNC(mac_state::mac_gsc_r), FUNC(mac_state::mac_gsc_w)); + map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder + + map(0x60000000, 0x6001ffff).ram().share("vram").mirror(0x0ffe0000); +} + +void mac_state::macpb165c_map(address_map &map) +{ + map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000); + + map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)); + map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)); + map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)); + map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)); + map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r)); + map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)); + map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0x50f20000, 0x50f21fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to detect we're not the grayscale 160/165/180 + map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder // on-board color video on 165c/180c - AM_RANGE(0xfc000000, 0xfc07ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x00380000) // 512k of VRAM - AM_RANGE(0xfc400000, 0xfcefffff) AM_READWRITE(macwd_r, macwd_w) + map(0xfc000000, 0xfc07ffff).ram().share("vram").mirror(0x00380000); // 512k of VRAM + map(0xfc400000, 0xfcefffff).rw(this, FUNC(mac_state::macwd_r), FUNC(mac_state::macwd_w)); // fc4003c8 = DAC control, fc4003c9 = DAC data // fc4003da bit 3 is VBL - AM_RANGE(0xfcff8000, 0xfcffffff) AM_ROM AM_REGION("vrom", 0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac_state::macpd210_map) - AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000) - - AM_RANGE(0x50f00000, 0x50f01fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) - AM_RANGE(0x50f02000, 0x50f03fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) - AM_RANGE(0x50f04000, 0x50f05fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) - AM_RANGE(0x50f06000, 0x50f07fff) AM_READWRITE(macii_scsi_drq_r, macii_scsi_drq_w) - AM_RANGE(0x50f10000, 0x50f11fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffff) - AM_RANGE(0x50f12060, 0x50f12063) AM_READ(macii_scsi_drq_r) - AM_RANGE(0x50f14000, 0x50f15fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) - AM_RANGE(0x50f16000, 0x50f17fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) - AM_RANGE(0x50f20000, 0x50f21fff) AM_READWRITE8(mac_gsc_r, mac_gsc_w, 0xffffffff) - AM_RANGE(0x50f24000, 0x50f27fff) AM_READ(buserror_r) // bus error here to make sure we aren't mistaken for another decoder - - AM_RANGE(0x5ffffffc, 0x5fffffff) AM_READ(mac_read_id) + map(0xfcff8000, 0xfcffffff).rom().region("vrom", 0x0000); +} - AM_RANGE(0x60000000, 0x6001ffff) AM_RAM AM_SHARE("vram") AM_MIRROR(0x0ffe0000) -ADDRESS_MAP_END +void mac_state::macpd210_map(address_map &map) +{ + map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000); + + map(0x50f00000, 0x50f01fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)); + map(0x50f02000, 0x50f03fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)); + map(0x50f04000, 0x50f05fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)); + map(0x50f06000, 0x50f07fff).rw(this, FUNC(mac_state::macii_scsi_drq_r), FUNC(mac_state::macii_scsi_drq_w)); + map(0x50f10000, 0x50f11fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)); + map(0x50f12060, 0x50f12063).r(this, FUNC(mac_state::macii_scsi_drq_r)); + map(0x50f14000, 0x50f15fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)); + map(0x50f16000, 0x50f17fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)); + map(0x50f20000, 0x50f21fff).rw(this, FUNC(mac_state::mac_gsc_r), FUNC(mac_state::mac_gsc_w)); + map(0x50f24000, 0x50f27fff).r(this, FUNC(mac_state::buserror_r)); // bus error here to make sure we aren't mistaken for another decoder + + map(0x5ffffffc, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id)); + + map(0x60000000, 0x6001ffff).ram().share("vram").mirror(0x0ffe0000); +} -ADDRESS_MAP_START(mac_state::quadra700_map) - AM_RANGE(0x40000000, 0x400fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0ff00000) +void mac_state::quadra700_map(address_map &map) +{ + map(0x40000000, 0x400fffff).rom().region("bootrom", 0).mirror(0x0ff00000); - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffff) AM_MIRROR(0x00fc0000) - AM_RANGE(0x50002000, 0x50003fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffff) AM_MIRROR(0x00fc0000) + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00fc0000); + map(0x50002000, 0x50003fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00fc0000); // 50008000 = Ethernet MAC ID PROM // 5000a000 = Sonic (DP83932) ethernet // 5000f000 = SCSI cf96, 5000f402 = SCSI #2 cf96 - AM_RANGE(0x5000f000, 0x5000f3ff) AM_READWRITE8(mac_5396_r, mac_5396_w, 0xffffffff) AM_MIRROR(0x00fc0000) - AM_RANGE(0x5000c000, 0x5000dfff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffff) AM_MIRROR(0x00fc0000) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("asc", asc_device, read, write, 0xffffffff) AM_MIRROR(0x00fc0000) - AM_RANGE(0x5001e000, 0x5001ffff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffff) AM_MIRROR(0x00fc0000) + map(0x5000f000, 0x5000f3ff).rw(this, FUNC(mac_state::mac_5396_r), FUNC(mac_state::mac_5396_w)).mirror(0x00fc0000); + map(0x5000c000, 0x5000dfff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00fc0000); + map(0x50014000, 0x50015fff).rw(m_asc, FUNC(asc_device::read), FUNC(asc_device::write)).mirror(0x00fc0000); + map(0x5001e000, 0x5001ffff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00fc0000); // f9800000 = VDAC / DAFB - AM_RANGE(0xf9000000, 0xf91fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xf9800000, 0xf98001ff) AM_READWRITE(dafb_r, dafb_w) - AM_RANGE(0xf9800200, 0xf980023f) AM_READWRITE(dafb_dac_r, dafb_dac_w) -ADDRESS_MAP_END + map(0xf9000000, 0xf91fffff).ram().share("vram"); + map(0xf9800000, 0xf98001ff).rw(this, FUNC(mac_state::dafb_r), FUNC(mac_state::dafb_w)); + map(0xf9800200, 0xf980023f).rw(this, FUNC(mac_state::dafb_dac_r), FUNC(mac_state::dafb_dac_w)); +} -ADDRESS_MAP_START(mac_state::pwrmac_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM // 8 MB standard +void mac_state::pwrmac_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram(); // 8 MB standard - AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0fc00000) + map(0x40000000, 0x403fffff).rom().region("bootrom", 0).mirror(0x0fc00000); - AM_RANGE(0x50000000, 0x50001fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) - AM_RANGE(0x50004000, 0x50005fff) AM_READWRITE16(mac_scc_r, mac_scc_2_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) + map(0x50000000, 0x50001fff).rw(this, FUNC(mac_state::mac_via_r), FUNC(mac_state::mac_via_w)).mirror(0x00f00000); + map(0x50004000, 0x50005fff).rw(this, FUNC(mac_state::mac_scc_r), FUNC(mac_state::mac_scc_2_w)).mirror(0x00f00000); // 50008000 = ethernet ID PROM // 5000a000 = MACE ethernet controller - AM_RANGE(0x50010000, 0x50011fff) AM_READWRITE16(macplus_scsi_r, macii_scsi_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) + map(0x50010000, 0x50011fff).rw(this, FUNC(mac_state::macplus_scsi_r), FUNC(mac_state::macii_scsi_w)).mirror(0x00f00000); // 50014000 = sound registers (AWACS) - AM_RANGE(0x50014000, 0x50015fff) AM_DEVREADWRITE8("awacs", awacs_device, read, write, 0xffffffffffffffffU) AM_MIRROR(0x01f00000) - AM_RANGE(0x50016000, 0x50017fff) AM_READWRITE16(mac_iwm_r, mac_iwm_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) - AM_RANGE(0x50024000, 0x50025fff) AM_WRITE32( ariel_ramdac_w, 0xffffffffffffffffU ) AM_MIRROR(0x00f00000) - AM_RANGE(0x50026000, 0x50027fff) AM_READWRITE16(mac_via2_r, mac_via2_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) - AM_RANGE(0x50028000, 0x50028007) AM_READWRITE8(mac_sonora_vctl_r, mac_sonora_vctl_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) + map(0x50014000, 0x50015fff).rw(m_awacs, FUNC(awacs_device::read), FUNC(awacs_device::write)).mirror(0x01f00000); + map(0x50016000, 0x50017fff).rw(this, FUNC(mac_state::mac_iwm_r), FUNC(mac_state::mac_iwm_w)).mirror(0x00f00000); + map(0x50024000, 0x50025fff).w(this, FUNC(mac_state::ariel_ramdac_w)).mirror(0x00f00000); + map(0x50026000, 0x50027fff).rw(this, FUNC(mac_state::mac_via2_r), FUNC(mac_state::mac_via2_w)).mirror(0x00f00000); + map(0x50028000, 0x50028007).rw(this, FUNC(mac_state::mac_sonora_vctl_r), FUNC(mac_state::mac_sonora_vctl_w)).mirror(0x00f00000); // 5002a000 = interrupt controller // 5002c000 = diagnostic registers - AM_RANGE(0x5002c000, 0x5002dfff) AM_READ8(pmac_diag_r, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) - AM_RANGE(0x50031000, 0x50032fff) AM_READWRITE8(amic_dma_r, amic_dma_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) - AM_RANGE(0x50040000, 0x5004000f) AM_READWRITE8(hmc_r, hmc_w, 0xffffffffffffffffU) AM_MIRROR(0x00f00000) - AM_RANGE(0x5ffffff8, 0x5fffffff) AM_READ32(mac_read_id, 0xffffffffffffffffU) + map(0x5002c000, 0x5002dfff).r(this, FUNC(mac_state::pmac_diag_r)).mirror(0x00f00000); + map(0x50031000, 0x50032fff).rw(this, FUNC(mac_state::amic_dma_r), FUNC(mac_state::amic_dma_w)).mirror(0x00f00000); + map(0x50040000, 0x5004000f).rw(this, FUNC(mac_state::hmc_r), FUNC(mac_state::hmc_w)).mirror(0x00f00000); + map(0x5ffffff8, 0x5fffffff).r(this, FUNC(mac_state::mac_read_id)); - AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("bootrom", 0) -ADDRESS_MAP_END + map(0xffc00000, 0xffffffff).rom().region("bootrom", 0); +} /*************************************************************************** DEVICE CONFIG diff --git a/src/mame/drivers/mac128.cpp b/src/mame/drivers/mac128.cpp index 209984b43c9..ac157b18170 100644 --- a/src/mame/drivers/mac128.cpp +++ b/src/mame/drivers/mac128.cpp @@ -1275,27 +1275,29 @@ MAC_DRIVER_INIT(macplus, MODEL_MAC_PLUS) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(mac128_state::mac512ke_map) - AM_RANGE(0x000000, 0x3fffff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x100000) - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ram_600000_r, ram_600000_w) - AM_RANGE(0x800000, 0x9fffff) AM_DEVREAD8(SCC_TAG, z80scc_device, cd_ab_r, 0xff00) - AM_RANGE(0xa00000, 0xbfffff) AM_DEVWRITE8(SCC_TAG, z80scc_device, cd_ab_w, 0x00ff) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w) - AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w) - AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mac128_state::macplus_map) - AM_RANGE(0x000000, 0x3fffff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0x580000, 0x5fffff) AM_READWRITE(macplus_scsi_r, macplus_scsi_w) - AM_RANGE(0x800000, 0x9fffff) AM_DEVREAD8(SCC_TAG, z80scc_device, cd_ab_r, 0xff00) - AM_RANGE(0xa00000, 0xbfffff) AM_DEVWRITE8(SCC_TAG, z80scc_device, cd_ab_w, 0x00ff) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(mac_iwm_r, mac_iwm_w) - AM_RANGE(0xe80000, 0xefffff) AM_READWRITE(mac_via_r, mac_via_w) - AM_RANGE(0xfffff0, 0xffffff) AM_READWRITE(mac_autovector_r, mac_autovector_w) -ADDRESS_MAP_END +void mac128_state::mac512ke_map(address_map &map) +{ + map(0x000000, 0x3fffff).rw(this, FUNC(mac128_state::ram_r), FUNC(mac128_state::ram_w)); + map(0x400000, 0x4fffff).rom().region("bootrom", 0).mirror(0x100000); + map(0x600000, 0x6fffff).rw(this, FUNC(mac128_state::ram_600000_r), FUNC(mac128_state::ram_600000_w)); + map(0x800000, 0x9fffff).r(m_scc, FUNC(z80scc_device::cd_ab_r)).umask16(0xff00); + map(0xa00000, 0xbfffff).w(m_scc, FUNC(z80scc_device::cd_ab_w)).umask16(0x00ff); + map(0xc00000, 0xdfffff).rw(this, FUNC(mac128_state::mac_iwm_r), FUNC(mac128_state::mac_iwm_w)); + map(0xe80000, 0xefffff).rw(this, FUNC(mac128_state::mac_via_r), FUNC(mac128_state::mac_via_w)); + map(0xfffff0, 0xffffff).rw(this, FUNC(mac128_state::mac_autovector_r), FUNC(mac128_state::mac_autovector_w)); +} + +void mac128_state::macplus_map(address_map &map) +{ + map(0x000000, 0x3fffff).rw(this, FUNC(mac128_state::ram_r), FUNC(mac128_state::ram_w)); + map(0x400000, 0x4fffff).rom().region("bootrom", 0); + map(0x580000, 0x5fffff).rw(this, FUNC(mac128_state::macplus_scsi_r), FUNC(mac128_state::macplus_scsi_w)); + map(0x800000, 0x9fffff).r(m_scc, FUNC(z80scc_device::cd_ab_r)).umask16(0xff00); + map(0xa00000, 0xbfffff).w(m_scc, FUNC(z80scc_device::cd_ab_w)).umask16(0x00ff); + map(0xc00000, 0xdfffff).rw(this, FUNC(mac128_state::mac_iwm_r), FUNC(mac128_state::mac_iwm_w)); + map(0xe80000, 0xefffff).rw(this, FUNC(mac128_state::mac_via_r), FUNC(mac128_state::mac_via_w)); + map(0xfffff0, 0xffffff).rw(this, FUNC(mac128_state::mac_autovector_r), FUNC(mac128_state::mac_autovector_w)); +} /*************************************************************************** DEVICE CONFIG diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp index fd91eb7a048..3f4bd7be256 100644 --- a/src/mame/drivers/macp.cpp +++ b/src/mame/drivers/macp.cpp @@ -27,22 +27,25 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(macp_state::macp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(macp_state::macp0_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(macp_state::macp_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void macp_state::macp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); +} + +void macp_state::macp0_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); +} + +void macp_state::macp_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} static INPUT_PORTS_START( macp ) INPUT_PORTS_END diff --git a/src/mame/drivers/macpci.cpp b/src/mame/drivers/macpci.cpp index 8053c5ae22b..1e2f7dd3856 100644 --- a/src/mame/drivers/macpci.cpp +++ b/src/mame/drivers/macpci.cpp @@ -60,24 +60,25 @@ READ64_MEMBER( macpci_state::unk2_r ) return 0; } -ADDRESS_MAP_START(macpci_state::pippin_mem) - AM_RANGE(0x00000000, 0x005fffff) AM_RAM +void macpci_state::pippin_mem(address_map &map) +{ + map(0x00000000, 0x005fffff).ram(); /* writes at 0x0*c01000 the string "Mr. Kesh" and wants it to be read back, true color VRAMs perhaps? */ - AM_RANGE(0x00c00000, 0x00c01007) AM_RAM - AM_RANGE(0x01c00000, 0x01c01007) AM_RAM - AM_RANGE(0x02c00000, 0x02c01007) AM_RAM - AM_RANGE(0x03c00000, 0x03c01007) AM_RAM + map(0x00c00000, 0x00c01007).ram(); + map(0x01c00000, 0x01c01007).ram(); + map(0x02c00000, 0x02c01007).ram(); + map(0x03c00000, 0x03c01007).ram(); - AM_RANGE(0x40000000, 0x403fffff) AM_ROM AM_REGION("bootrom", 0) AM_MIRROR(0x0fc00000) // mirror of ROM for 680x0 emulation + map(0x40000000, 0x403fffff).rom().region("bootrom", 0).mirror(0x0fc00000); // mirror of ROM for 680x0 emulation - AM_RANGE(0xf00dfff8, 0xf00dffff) AM_READ(unk2_r) - AM_RANGE(0xf3008800, 0xf3008807) AM_READ(unk1_r) + map(0xf00dfff8, 0xf00dffff).r(this, FUNC(macpci_state::unk2_r)); + map(0xf3008800, 0xf3008807).r(this, FUNC(macpci_state::unk1_r)); - AM_RANGE(0xf3016000, 0xf3017fff) AM_READWRITE16(mac_via_r, mac_via_w, 0xffffffffffffffffU) + map(0xf3016000, 0xf3017fff).rw(this, FUNC(macpci_state::mac_via_r), FUNC(macpci_state::mac_via_w)); - AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("bootrom",0) -ADDRESS_MAP_END + map(0xffc00000, 0xffffffff).rom().region("bootrom", 0); +} /* Input ports */ static INPUT_PORTS_START( pippin ) diff --git a/src/mame/drivers/macrossp.cpp b/src/mame/drivers/macrossp.cpp index 3a635822a07..a4cb0b55ecf 100644 --- a/src/mame/drivers/macrossp.cpp +++ b/src/mame/drivers/macrossp.cpp @@ -338,47 +338,49 @@ WRITE16_MEMBER(macrossp_state::palette_fade_w) /*** MEMORY MAPS *************************************************************/ -ADDRESS_MAP_START(macrossp_state::macrossp_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x800000, 0x802fff) AM_RAM AM_SHARE("spriteram") +void macrossp_state::macrossp_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x800000, 0x802fff).ram().share("spriteram"); /* SCR A Layer */ - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(macrossp_scra_videoram_w) AM_SHARE("scra_videoram") - AM_RANGE(0x904200, 0x9043ff) AM_RAM AM_SHARE("scra_linezoom") /* W/O? */ - AM_RANGE(0x905000, 0x90500b) AM_RAM AM_SHARE("scra_videoregs") /* W/O? */ + map(0x900000, 0x903fff).ram().w(this, FUNC(macrossp_state::macrossp_scra_videoram_w)).share("scra_videoram"); + map(0x904200, 0x9043ff).ram().share("scra_linezoom"); /* W/O? */ + map(0x905000, 0x90500b).ram().share("scra_videoregs"); /* W/O? */ /* SCR B Layer */ - AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(macrossp_scrb_videoram_w) AM_SHARE("scrb_videoram") - AM_RANGE(0x90c200, 0x90c3ff) AM_RAM AM_SHARE("scrb_linezoom") /* W/O? */ - AM_RANGE(0x90d000, 0x90d00b) AM_RAM AM_SHARE("scrb_videoregs") /* W/O? */ + map(0x908000, 0x90bfff).ram().w(this, FUNC(macrossp_state::macrossp_scrb_videoram_w)).share("scrb_videoram"); + map(0x90c200, 0x90c3ff).ram().share("scrb_linezoom"); /* W/O? */ + map(0x90d000, 0x90d00b).ram().share("scrb_videoregs"); /* W/O? */ /* SCR C Layer */ - AM_RANGE(0x910000, 0x913fff) AM_RAM_WRITE(macrossp_scrc_videoram_w) AM_SHARE("scrc_videoram") - AM_RANGE(0x914200, 0x9143ff) AM_RAM AM_SHARE("scrc_linezoom")/* W/O? */ - AM_RANGE(0x915000, 0x91500b) AM_RAM AM_SHARE("scrc_videoregs") /* W/O? */ + map(0x910000, 0x913fff).ram().w(this, FUNC(macrossp_state::macrossp_scrc_videoram_w)).share("scrc_videoram"); + map(0x914200, 0x9143ff).ram().share("scrc_linezoom");/* W/O? */ + map(0x915000, 0x91500b).ram().share("scrc_videoregs"); /* W/O? */ /* Text Layer */ - AM_RANGE(0x918000, 0x91bfff) AM_RAM_WRITE(macrossp_text_videoram_w) AM_SHARE("text_videoram") - AM_RANGE(0x91c200, 0x91c3ff) AM_RAM AM_SHARE("text_linezoom") /* W/O? */ - AM_RANGE(0x91d000, 0x91d00b) AM_RAM AM_SHARE("text_videoregs") /* W/O? */ - - AM_RANGE(0xa00000, 0xa03fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - - AM_RANGE(0xb00000, 0xb00003) AM_READ_PORT("INPUTS") - AM_RANGE(0xb00004, 0xb00007) AM_READ(macrossp_soundstatus_r) AM_WRITENOP // irq related? - AM_RANGE(0xb00008, 0xb0000b) AM_WRITENOP // irq related? - AM_RANGE(0xb0000c, 0xb0000f) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0xb00010, 0xb00013) AM_WRITE16(palette_fade_w, 0x0000ffff) - AM_RANGE(0xb00020, 0xb00023) AM_WRITENOP - - AM_RANGE(0xc00000, 0xc00003) AM_WRITE(macrossp_soundcmd_w) - - AM_RANGE(0xf00000, 0xf1ffff) AM_RAM AM_SHARE("mainram") /* Main Ram */ -// AM_RANGE(0xfe0000, 0xfe0003) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(macrossp_state::macrossp_sound_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x207fff) AM_RAM - AM_RANGE(0x400000, 0x40007f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0x00ff) - AM_RANGE(0x600000, 0x600001) AM_READ(macrossp_soundcmd_r) -ADDRESS_MAP_END + map(0x918000, 0x91bfff).ram().w(this, FUNC(macrossp_state::macrossp_text_videoram_w)).share("text_videoram"); + map(0x91c200, 0x91c3ff).ram().share("text_linezoom"); /* W/O? */ + map(0x91d000, 0x91d00b).ram().share("text_videoregs"); /* W/O? */ + + map(0xa00000, 0xa03fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + + map(0xb00000, 0xb00003).portr("INPUTS"); + map(0xb00004, 0xb00007).r(this, FUNC(macrossp_state::macrossp_soundstatus_r)).nopw(); // irq related? + map(0xb00008, 0xb0000b).nopw(); // irq related? + map(0xb0000c, 0xb0000f).portr("DSW").nopw(); + map(0xb00012, 0xb00013).w(this, FUNC(macrossp_state::palette_fade_w)); + map(0xb00020, 0xb00023).nopw(); + + map(0xc00000, 0xc00003).w(this, FUNC(macrossp_state::macrossp_soundcmd_w)); + + map(0xf00000, 0xf1ffff).ram().share("mainram"); /* Main Ram */ +// map(0xfe0000, 0xfe0003).noprw(); +} + +void macrossp_state::macrossp_sound_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x207fff).ram(); + map(0x400000, 0x40007f).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)).umask16(0x00ff); + map(0x600000, 0x600001).r(this, FUNC(macrossp_state::macrossp_soundcmd_r)); +} /*** INPUT PORTS *************************************************************/ diff --git a/src/mame/drivers/macs.cpp b/src/mame/drivers/macs.cpp index b9b32cf00c0..7ff6fad678f 100644 --- a/src/mame/drivers/macs.cpp +++ b/src/mame/drivers/macs.cpp @@ -110,19 +110,20 @@ public: -ADDRESS_MAP_START(macs_state::macs_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("rombank1") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank2") +void macs_state::macs_mem(address_map &map) +{ + map(0x0000, 0x7fff).bankr("rombank1"); + map(0x8000, 0xbfff).bankr("rombank2"); //AM_RANGE(0xc000, 0xcfff) AM_READ(st0016_sprite_ram_r) AM_WRITE(st0016_sprite_ram_w) //AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram ? */ - AM_RANGE(0xe800, 0xe87f) AM_RAM AM_SHARE("ram2") + map(0xe000, 0xe7ff).ram(); /* work ram ? */ + map(0xe800, 0xe87f).ram().share("ram2"); //AM_RANGE(0xe900, 0xe9ff) // sound - internal //AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w) //AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAMBANK("rambank1") /* common /backup ram ?*/ - AM_RANGE(0xf800, 0xffff) AM_RAMBANK("rambank2") /* common /backup ram ?*/ -ADDRESS_MAP_END + map(0xf000, 0xf7ff).bankrw("rambank1"); /* common /backup ram ?*/ + map(0xf800, 0xffff).bankrw("rambank2"); /* common /backup ram ?*/ +} WRITE8_MEMBER(macs_state::rambank_w) { @@ -196,19 +197,20 @@ WRITE8_MEMBER(macs_state::macs_output_w) } } -ADDRESS_MAP_START(macs_state::macs_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void macs_state::macs_io(address_map &map) +{ + map.global_mask(0xff); //AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) /* video/crt regs ? */ - AM_RANGE(0xc0, 0xc7) AM_READWRITE(macs_input_r,macs_output_w) - AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* renju = $40, neratte = 0 */ - AM_RANGE(0xe1, 0xe1) AM_WRITE(macs_rom_bank_w) + map(0xc0, 0xc7).rw(this, FUNC(macs_state::macs_input_r), FUNC(macs_state::macs_output_w)); + map(0xe0, 0xe0).nopw(); /* renju = $40, neratte = 0 */ + map(0xe1, 0xe1).w(this, FUNC(macs_state::macs_rom_bank_w)); //AM_RANGE(0xe2, 0xe2) AM_WRITE(st0016_sprite_bank_w) //AM_RANGE(0xe3, 0xe4) AM_WRITE(st0016_character_bank_w) //AM_RANGE(0xe5, 0xe5) AM_WRITE(st0016_palette_bank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(rambank_w) /* banking ? ram bank ? shared rambank ? */ - AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */ + map(0xe6, 0xe6).w(this, FUNC(macs_state::rambank_w)); /* banking ? ram bank ? shared rambank ? */ + map(0xe7, 0xe7).nopw(); /* watchdog */ //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r) -ADDRESS_MAP_END +} //static GFXDECODE_START( macs ) // GFXDECODE_ENTRY( nullptr, 0, charlayout, 0, 16*4 ) diff --git a/src/mame/drivers/madalien.cpp b/src/mame/drivers/madalien.cpp index 9d10066ff00..5973d949a07 100644 --- a/src/mame/drivers/madalien.cpp +++ b/src/mame/drivers/madalien.cpp @@ -67,42 +67,44 @@ WRITE8_MEMBER(madalien_state::madalien_portB_w) } -ADDRESS_MAP_START(madalien_state::main_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - - AM_RANGE(0x6000, 0x63ff) AM_RAM_WRITE(madalien_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x6400, 0x67ff) AM_RAM - AM_RANGE(0x6800, 0x7fff) AM_RAM_WRITE(madalien_charram_w) AM_SHARE("charram") - - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0ff0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x8001, 0x8001) AM_MIRROR(0x0ff0) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x8004, 0x8004) AM_MIRROR(0x0ff0) AM_WRITEONLY AM_SHARE("video_control") - AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x0ff0) AM_WRITE(madalien_output_w) - AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x0ff0) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x8008, 0x8008) AM_MIRROR(0x07f0) AM_RAM_READ(shift_r) AM_SHARE("shift_hi") - AM_RANGE(0x8009, 0x8009) AM_MIRROR(0x07f0) AM_RAM_READ(shift_rev_r) AM_SHARE("shift_lo") - AM_RANGE(0x800b, 0x800b) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("video_flags") - AM_RANGE(0x800c, 0x800c) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("headlight_pos") - AM_RANGE(0x800d, 0x800d) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("edge1_pos") - AM_RANGE(0x800e, 0x800e) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("edge2_pos") - AM_RANGE(0x800f, 0x800f) AM_MIRROR(0x07f0) AM_WRITEONLY AM_SHARE("scroll") - - AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0ff0) AM_READ_PORT("PLAYER1") - AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ff0) AM_READ_PORT("DSW") - AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ff0) AM_READ_PORT("PLAYER2") - - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(madalien_state::audio_map) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x1ffc) AM_RAM /* unknown device in an epoxy block, might be tilt detection */ - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1ffc) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8001) AM_MIRROR(0x1ffc) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x8002, 0x8002) AM_MIRROR(0x1ffc) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void madalien_state::main_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + + map(0x6000, 0x63ff).ram().w(this, FUNC(madalien_state::madalien_videoram_w)).share("videoram"); + map(0x6400, 0x67ff).ram(); + map(0x6800, 0x7fff).ram().w(this, FUNC(madalien_state::madalien_charram_w)).share("charram"); + + map(0x8000, 0x8000).mirror(0x0ff0).w("crtc", FUNC(mc6845_device::address_w)); + map(0x8001, 0x8001).mirror(0x0ff0).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x8004, 0x8004).mirror(0x0ff0).writeonly().share("video_control"); + map(0x8005, 0x8005).mirror(0x0ff0).w(this, FUNC(madalien_state::madalien_output_w)); + map(0x8006, 0x8006).mirror(0x0ff0).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x8008, 0x8008).mirror(0x07f0).ram().r(this, FUNC(madalien_state::shift_r)).share("shift_hi"); + map(0x8009, 0x8009).mirror(0x07f0).ram().r(this, FUNC(madalien_state::shift_rev_r)).share("shift_lo"); + map(0x800b, 0x800b).mirror(0x07f0).writeonly().share("video_flags"); + map(0x800c, 0x800c).mirror(0x07f0).writeonly().share("headlight_pos"); + map(0x800d, 0x800d).mirror(0x07f0).writeonly().share("edge1_pos"); + map(0x800e, 0x800e).mirror(0x07f0).writeonly().share("edge2_pos"); + map(0x800f, 0x800f).mirror(0x07f0).writeonly().share("scroll"); + + map(0x9000, 0x9000).mirror(0x0ff0).portr("PLAYER1"); + map(0x9001, 0x9001).mirror(0x0ff0).portr("DSW"); + map(0x9002, 0x9002).mirror(0x0ff0).portr("PLAYER2"); + + map(0xa000, 0xffff).rom(); +} + + +void madalien_state::audio_map(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x1c00).ram(); + map(0x6000, 0x6003).mirror(0x1ffc).ram(); /* unknown device in an epoxy block, might be tilt detection */ + map(0x8000, 0x8000).mirror(0x1ffc).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8001).mirror(0x1ffc).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x8002, 0x8002).mirror(0x1ffc).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xf800, 0xffff).rom(); +} static INPUT_PORTS_START( madalien ) diff --git a/src/mame/drivers/madmotor.cpp b/src/mame/drivers/madmotor.cpp index 512b7f26380..736974fc9c6 100644 --- a/src/mame/drivers/madmotor.cpp +++ b/src/mame/drivers/madmotor.cpp @@ -46,7 +46,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; - required_device<cpu_device> m_audiocpu; + required_device<h6280_device> m_audiocpu; required_device_array<deco_bac06_device, 3> m_tilegen; required_device<deco_mxc06_device> m_spritegen; @@ -61,45 +61,47 @@ public: /******************************************************************************/ -ADDRESS_MAP_START(madmotor_state::madmotor_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x180000, 0x180007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */ - AM_RANGE(0x180010, 0x180017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x184000, 0x18407f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_colscroll_r, pf_colscroll_w) - AM_RANGE(0x184080, 0x1843ff) AM_RAM - AM_RANGE(0x184400, 0x1847ff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_rowscroll_r, pf_rowscroll_w) - AM_RANGE(0x188000, 0x189fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x18c000, 0x18c001) AM_NOP - AM_RANGE(0x190000, 0x190007) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_0_w) /* text layer */ - AM_RANGE(0x190010, 0x190017) AM_DEVWRITE("tilegen2", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x198000, 0x1987ff) AM_DEVREADWRITE("tilegen2", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x19c000, 0x19c001) AM_READNOP - AM_RANGE(0x1a0000, 0x1a0007) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_0_w) /* text layer */ - AM_RANGE(0x1a0010, 0x1a0017) AM_DEVWRITE("tilegen3", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x1a4000, 0x1a4fff) AM_DEVREADWRITE("tilegen3", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x3e0000, 0x3e3fff) AM_RAM - AM_RANGE(0x3e8000, 0x3e87ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3f0000, 0x3f07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x3f8002, 0x3f8003) AM_READ_PORT("P1_P2") - AM_RANGE(0x3f8004, 0x3f8005) AM_READ_PORT("DSW") - AM_RANGE(0x3f8006, 0x3f8007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3fc004, 0x3fc005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) -ADDRESS_MAP_END +void madmotor_state::madmotor_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x180000, 0x180007).w("tilegen1", FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */ + map(0x180010, 0x180017).w("tilegen1", FUNC(deco_bac06_device::pf_control_1_w)); + map(0x184000, 0x18407f).rw("tilegen1", FUNC(deco_bac06_device::pf_colscroll_r), FUNC(deco_bac06_device::pf_colscroll_w)); + map(0x184080, 0x1843ff).ram(); + map(0x184400, 0x1847ff).rw("tilegen1", FUNC(deco_bac06_device::pf_rowscroll_r), FUNC(deco_bac06_device::pf_rowscroll_w)); + map(0x188000, 0x189fff).rw("tilegen1", FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x18c000, 0x18c001).noprw(); + map(0x190000, 0x190007).w("tilegen2", FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */ + map(0x190010, 0x190017).w("tilegen2", FUNC(deco_bac06_device::pf_control_1_w)); + map(0x198000, 0x1987ff).rw("tilegen2", FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x19c000, 0x19c001).nopr(); + map(0x1a0000, 0x1a0007).w("tilegen3", FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */ + map(0x1a0010, 0x1a0017).w("tilegen3", FUNC(deco_bac06_device::pf_control_1_w)); + map(0x1a4000, 0x1a4fff).rw("tilegen3", FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x3e0000, 0x3e3fff).ram(); + map(0x3e8000, 0x3e87ff).ram().share("spriteram"); + map(0x3f0000, 0x3f07ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x3f8002, 0x3f8003).portr("P1_P2"); + map(0x3f8004, 0x3f8005).portr("DSW"); + map(0x3f8006, 0x3f8007).portr("SYSTEM"); + map(0x3fc005, 0x3fc005).w("soundlatch", FUNC(generic_latch_8_device::write)); +} /******************************************************************************/ /* Physical memory map (21 bits) */ -ADDRESS_MAP_START(madmotor_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void madmotor_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp index 3bbae9bc29c..96570748b49 100644 --- a/src/mame/drivers/magic10.cpp +++ b/src/mame/drivers/magic10.cpp @@ -316,90 +316,95 @@ WRITE16_MEMBER(magic10_state::magic10_out_w) * Memory Maps * ***************************/ -ADDRESS_MAP_START(magic10_state::magic10_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram") - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram") - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram") - AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x3001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS") - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSW") - AM_RANGE(0x400008, 0x400009) AM_WRITE(magic10_out_w) - AM_RANGE(0x40000a, 0x40000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x40000e, 0x40000f) AM_WRITENOP - AM_RANGE(0x400080, 0x400087) AM_RAM AM_SHARE("vregs") - AM_RANGE(0x600000, 0x603fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(magic10_state::magic10a_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram") - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram") - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram") - AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x3001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW") - AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w) - AM_RANGE(0x50000a, 0x50000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x50000e, 0x50000f) AM_WRITENOP - AM_RANGE(0x500080, 0x500087) AM_RAM AM_SHARE("vregs") // video registers? - AM_RANGE(0x600000, 0x603fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(magic10_state::magic102_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram") - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram") - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram") - AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x400000, 0x4001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500001) AM_READ(magic102_r) - AM_RANGE(0x500004, 0x500005) AM_READNOP // gives credits - AM_RANGE(0x500006, 0x500007) AM_READNOP // gives credits - AM_RANGE(0x50001a, 0x50001b) AM_READ_PORT("IN0") - AM_RANGE(0x50001c, 0x50001d) AM_READ_PORT("IN1") +void magic10_state::magic10_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram"); + map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram"); + map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram"); + map(0x200000, 0x2007ff).ram().share("nvram"); + map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400001).portr("INPUTS"); + map(0x400002, 0x400003).portr("DSW"); + map(0x400008, 0x400009).w(this, FUNC(magic10_state::magic10_out_w)); + map(0x40000b, 0x40000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x40000e, 0x40000f).nopw(); + map(0x400080, 0x400087).ram().share("vregs"); + map(0x600000, 0x603fff).ram(); +} + +void magic10_state::magic10a_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram"); + map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram"); + map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram"); + map(0x200000, 0x2007ff).ram().share("nvram"); + map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).portr("INPUTS"); + map(0x500002, 0x500003).portr("DSW"); + map(0x500008, 0x500009).w(this, FUNC(magic10_state::magic10_out_w)); + map(0x50000b, 0x50000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x50000e, 0x50000f).nopw(); + map(0x500080, 0x500087).ram().share("vregs"); // video registers? + map(0x600000, 0x603fff).ram(); +} + +void magic10_state::magic102_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram"); + map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram"); + map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram"); + map(0x200000, 0x2007ff).ram().share("nvram"); + map(0x400000, 0x4001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).r(this, FUNC(magic10_state::magic102_r)); + map(0x500004, 0x500005).nopr(); // gives credits + map(0x500006, 0x500007).nopr(); // gives credits + map(0x50001a, 0x50001b).portr("IN0"); + map(0x50001c, 0x50001d).portr("IN1"); // AM_RANGE(0x500002, 0x50001f) AM_READNOP // AM_RANGE(0x500002, 0x50001f) AM_WRITENOP - AM_RANGE(0x600000, 0x603fff) AM_RAM - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x700080, 0x700087) AM_RAM AM_SHARE("vregs") // video registers? -ADDRESS_MAP_END - -ADDRESS_MAP_START(magic10_state::hotslot_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram") - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram") - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram") - AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x400000, 0x4001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500004, 0x500005) AM_READWRITE(hotslot_copro_r, hotslot_copro_w) // copro comm - AM_RANGE(0x500006, 0x500011) AM_RAM - AM_RANGE(0x500012, 0x500013) AM_READ_PORT("IN0") - AM_RANGE(0x500014, 0x500015) AM_READ_PORT("IN1") - AM_RANGE(0x500016, 0x500017) AM_READ_PORT("IN2") - AM_RANGE(0x500018, 0x500019) AM_READ_PORT("DSW1") - AM_RANGE(0x50001a, 0x50001d) AM_WRITENOP - AM_RANGE(0x600000, 0x603fff) AM_RAM - AM_RANGE(0x70000a, 0x70000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x700080, 0x700087) AM_RAM AM_SHARE("vregs") -ADDRESS_MAP_END - -ADDRESS_MAP_START(magic10_state::sgsafari_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_SHARE("layer1_videoram") - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_SHARE("layer0_videoram") - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_SHARE("layer2_videoram") - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x3001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW1") - AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w) - AM_RANGE(0x50000a, 0x50000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x50000e, 0x50000f) AM_READ_PORT("IN0") - AM_RANGE(0x500080, 0x500087) AM_RAM AM_SHARE("vregs") // video registers? - AM_RANGE(0x600000, 0x603fff) AM_RAM -ADDRESS_MAP_END + map(0x600000, 0x603fff).ram(); + map(0x700001, 0x700001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700080, 0x700087).ram().share("vregs"); // video registers? +} + +void magic10_state::hotslot_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram"); + map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram"); + map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram"); + map(0x200000, 0x2007ff).ram().share("nvram"); + map(0x400000, 0x4001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500004, 0x500005).rw(this, FUNC(magic10_state::hotslot_copro_r), FUNC(magic10_state::hotslot_copro_w)); // copro comm + map(0x500006, 0x500011).ram(); + map(0x500012, 0x500013).portr("IN0"); + map(0x500014, 0x500015).portr("IN1"); + map(0x500016, 0x500017).portr("IN2"); + map(0x500018, 0x500019).portr("DSW1"); + map(0x50001a, 0x50001d).nopw(); + map(0x600000, 0x603fff).ram(); + map(0x70000b, 0x70000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700080, 0x700087).ram().share("vregs"); +} + +void magic10_state::sgsafari_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(magic10_state::layer1_videoram_w)).share("layer1_videoram"); + map(0x101000, 0x101fff).ram().w(this, FUNC(magic10_state::layer0_videoram_w)).share("layer0_videoram"); + map(0x102000, 0x103fff).ram().w(this, FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram"); + map(0x200000, 0x203fff).ram().share("nvram"); + map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500002, 0x500003).portr("DSW1"); + map(0x500008, 0x500009).w(this, FUNC(magic10_state::magic10_out_w)); + map(0x50000b, 0x50000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x50000e, 0x50000f).portr("IN0"); + map(0x500080, 0x500087).ram().share("vregs"); // video registers? + map(0x600000, 0x603fff).ram(); +} /* SGSafari unimplemented writes: diff --git a/src/mame/drivers/magicard.cpp b/src/mame/drivers/magicard.cpp index 3388370c9c7..3829f22ea64 100644 --- a/src/mame/drivers/magicard.cpp +++ b/src/mame/drivers/magicard.cpp @@ -901,50 +901,53 @@ WRITE16_MEMBER(magicard_state::scc68070_mmu_w) * Memory Maps * *************************/ -ADDRESS_MAP_START(magicard_state::scc68070_mem) - AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_SHARE("scc_xirqc_regs") //lir - AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_SHARE("scc_iic_regs") //i2c - AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_SHARE("scc_uart_regs") - AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_SHARE("scc_timer_regs") - AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_SHARE("scc_iirqc_regs") - AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_SHARE("scc_dma1_regs") - AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_SHARE("scc_dma2_regs") - AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_SHARE("scc_mmu_regs") -ADDRESS_MAP_END - -ADDRESS_MAP_START(magicard_state::magicard_mem) +void magicard_state::scc68070_mem(address_map &map) +{ + map(0x80001000, 0x8000100f).rw(this, FUNC(magicard_state::scc68070_ext_irqc_r), FUNC(magicard_state::scc68070_ext_irqc_w)).share("scc_xirqc_regs"); //lir + map(0x80002000, 0x8000200f).rw(this, FUNC(magicard_state::scc68070_iic_r), FUNC(magicard_state::scc68070_iic_w)).share("scc_iic_regs"); //i2c + map(0x80002010, 0x8000201f).rw(this, FUNC(magicard_state::scc68070_uart_r), FUNC(magicard_state::scc68070_uart_w)).share("scc_uart_regs"); + map(0x80002020, 0x8000202f).rw(this, FUNC(magicard_state::scc68070_timer_r), FUNC(magicard_state::scc68070_timer_w)).share("scc_timer_regs"); + map(0x80002040, 0x8000204f).rw(this, FUNC(magicard_state::scc68070_int_irqc_r), FUNC(magicard_state::scc68070_int_irqc_w)).share("scc_iirqc_regs"); + map(0x80004000, 0x8000403f).rw(this, FUNC(magicard_state::scc68070_dma_ch1_r), FUNC(magicard_state::scc68070_dma_ch1_w)).share("scc_dma1_regs"); + map(0x80004040, 0x8000407f).rw(this, FUNC(magicard_state::scc68070_dma_ch2_r), FUNC(magicard_state::scc68070_dma_ch2_w)).share("scc_dma2_regs"); + map(0x80008000, 0x8000807f).rw(this, FUNC(magicard_state::scc68070_mmu_r), FUNC(magicard_state::scc68070_mmu_w)).share("scc_mmu_regs"); +} + +void magicard_state::magicard_mem(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_IMPORT_FROM(scc68070_mem) - AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram") - AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb") + scc68070_mem(map); + map(0x00000000, 0x001ffbff).mirror(0x00200000).ram().share("magicram"); + map(0x00600000, 0x007ffbff).ram().share("magicramb"); /* 001ffc00-001ffdff System I/O */ - AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r) - AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) - AM_RANGE(0x001ffd00, 0x001ffd01) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x001ffd02, 0x001ffd03) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x001ffd04, 0x001ffd05) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r) - AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? - AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? - AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers -ADDRESS_MAP_END - -ADDRESS_MAP_START(magicard_state::hotslots_mem) + map(0x001ffc00, 0x001ffc01).mirror(0x7fe00000).r(this, FUNC(magicard_state::test_r)); + map(0x001ffc40, 0x001ffc41).mirror(0x7fe00000).r(this, FUNC(magicard_state::test_r)); + map(0x001ffd01, 0x001ffd01).mirror(0x7fe00000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x001ffd03, 0x001ffd03).mirror(0x7fe00000).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x001ffd05, 0x001ffd05).mirror(0x7fe00000).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x001ffd40, 0x001ffd43).mirror(0x7fe00000).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0x001ffd80, 0x001ffd81).mirror(0x7fe00000).r(this, FUNC(magicard_state::test_r)); + map(0x001ffd80, 0x001ffd81).mirror(0x7fe00000).nopw(); //? + map(0x001fff80, 0x001fffbf).mirror(0x7fe00000).ram(); //DRAM I/O, not accessed by this game, CD buffer? + map(0x001fffe0, 0x001fffff).mirror(0x7fe00000).rw(this, FUNC(magicard_state::philips_66470_r), FUNC(magicard_state::philips_66470_w)).share("pcab_vregs"); //video registers +} + +void magicard_state::hotslots_mem(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_IMPORT_FROM(scc68070_mem) - AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram") - AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb") - AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? - AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers - AM_RANGE(0x00414000, 0x00414001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x00414002, 0x00414003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x00414004, 0x00414005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x00414006, 0x00414007) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x00415002, 0x00415003) AM_DEVREAD8("ramdac", ramdac_device, pal_r, 0x00ff) - AM_RANGE(0x00416000, 0x00416001) AM_DEVWRITE8("ssg", ymz284_device, data_w, 0x00ff) - AM_RANGE(0x00417000, 0x00417001) AM_DEVWRITE8("ssg", ymz284_device, address_w, 0x00ff) -ADDRESS_MAP_END + scc68070_mem(map); + map(0x00000000, 0x001ffbff).mirror(0x00200000).ram().share("magicram"); + map(0x00600000, 0x007ffbff).ram().share("magicramb"); + map(0x001fff80, 0x001fffbf).mirror(0x7fe00000).ram(); //DRAM I/O, not accessed by this game, CD buffer? + map(0x001fffe0, 0x001fffff).mirror(0x7fe00000).rw(this, FUNC(magicard_state::philips_66470_r), FUNC(magicard_state::philips_66470_w)).share("pcab_vregs"); //video registers + map(0x00414001, 0x00414001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x00414003, 0x00414003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x00414005, 0x00414005).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x00414007, 0x00414007).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x00415003, 0x00415003).r("ramdac", FUNC(ramdac_device::pal_r)); + map(0x00416001, 0x00416001).w("ssg", FUNC(ymz284_device::data_w)); + map(0x00417001, 0x00417001).w("ssg", FUNC(ymz284_device::address_w)); +} /************************* * Input ports * @@ -984,9 +987,10 @@ INTERRUPT_GEN_MEMBER(magicard_state::magicard_irq) device.execute().set_input_line_and_vector(1, HOLD_LINE, 0xf0 / 4); } -ADDRESS_MAP_START(magicard_state::ramdac_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void magicard_state::ramdac_map(address_map &map) +{ + map(0x0000, 0x03ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(magicard_state::magicard) diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp index 7966e4d6b6e..44fa36cf997 100644 --- a/src/mame/drivers/magicfly.cpp +++ b/src/mame/drivers/magicfly.cpp @@ -677,16 +677,17 @@ WRITE8_MEMBER(magicfly_state::mux_port_w) * Memory map information * *********************************************/ -ADDRESS_MAP_START(magicfly_state::magicfly_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B NVRAM */ - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(magicfly_videoram_w) AM_SHARE("videoram") /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */ - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(magicfly_colorram_w) AM_SHARE("colorram") /* HM6116LP #2 (2K x 8) RAM (only 1st half used) */ - AM_RANGE(0x2800, 0x2800) AM_READ(mux_port_r) /* multiplexed input port */ - AM_RANGE(0x3000, 0x3000) AM_WRITE(mux_port_w) /* output port */ - AM_RANGE(0xc000, 0xffff) AM_ROM /* ROM space */ -ADDRESS_MAP_END +void magicfly_state::magicfly_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); /* MK48Z02B NVRAM */ + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x1000, 0x13ff).ram().w(this, FUNC(magicfly_state::magicfly_videoram_w)).share("videoram"); /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */ + map(0x1800, 0x1bff).ram().w(this, FUNC(magicfly_state::magicfly_colorram_w)).share("colorram"); /* HM6116LP #2 (2K x 8) RAM (only 1st half used) */ + map(0x2800, 0x2800).r(this, FUNC(magicfly_state::mux_port_r)); /* multiplexed input port */ + map(0x3000, 0x3000).w(this, FUNC(magicfly_state::mux_port_w)); /* output port */ + map(0xc000, 0xffff).rom(); /* ROM space */ +} /********************************************* diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp index 23cc204eda8..7598d93c137 100644 --- a/src/mame/drivers/magictg.cpp +++ b/src/mame/drivers/magictg.cpp @@ -843,25 +843,26 @@ WRITE16_MEMBER( magictg_state::adsp_control_w ) * *************************************/ -ADDRESS_MAP_START(magictg_state::magictg_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM // 8MB RAM - AM_RANGE(0x00800000, 0x0081003f) AM_RAM // ? - AM_RANGE(0x0a000000, 0x0affffff) AM_DEVREADWRITE("voodoo_0", voodoo_device, voodoo_r, voodoo_w) +void magictg_state::magictg_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram(); // 8MB RAM + map(0x00800000, 0x0081003f).ram(); // ? + map(0x0a000000, 0x0affffff).rw("voodoo_0", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w)); #if defined(USE_TWO_3DFX) - AM_RANGE(0x0b000000, 0x0bffffff) AM_DEVREADWRITE("voodoo_1", voodoo_device, voodoo_r, voodoo_w) - AM_RANGE(0x0c000000, 0x0c000fff) AM_READWRITE(zr36120_r, zr36120_w) + map(0x0b000000, 0x0bffffff).rw("voodoo_1", FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w)); + map(0x0c000000, 0x0c000fff).rw(this, FUNC(magictg_state::zr36120_r), FUNC(magictg_state::zr36120_w)); #else - AM_RANGE(0x0b000000, 0x0b000fff) AM_READWRITE(zr36120_r, zr36120_w) + map(0x0b000000, 0x0b000fff).rw(this, FUNC(magictg_state::zr36120_r), FUNC(magictg_state::zr36120_w)); #endif - AM_RANGE(0x0f000000, 0x0f000fff) AM_READWRITE(f0_r, f0_w) // Split this up? - AM_RANGE(0x14000100, 0x14000103) AM_READWRITE(adsp_idma_data_r, adsp_idma_data_w) - AM_RANGE(0x14000104, 0x14000107) AM_WRITE(adsp_idma_addr_w) - AM_RANGE(0x1b001024, 0x1b001027) AM_READ(adsp_status_r) - AM_RANGE(0x1b001108, 0x1b00110b) AM_READ(unk_r) - AM_RANGE(0x1e000000, 0x1e002fff) AM_RAM // NVRAM? - AM_RANGE(0x1e800000, 0x1e800007) AM_READWRITE(unk2_r, serial_w) - AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("mips", 0) -ADDRESS_MAP_END + map(0x0f000000, 0x0f000fff).rw(this, FUNC(magictg_state::f0_r), FUNC(magictg_state::f0_w)); // Split this up? + map(0x14000100, 0x14000103).rw(this, FUNC(magictg_state::adsp_idma_data_r), FUNC(magictg_state::adsp_idma_data_w)); + map(0x14000104, 0x14000107).w(this, FUNC(magictg_state::adsp_idma_addr_w)); + map(0x1b001024, 0x1b001027).r(this, FUNC(magictg_state::adsp_status_r)); + map(0x1b001108, 0x1b00110b).r(this, FUNC(magictg_state::unk_r)); + map(0x1e000000, 0x1e002fff).ram(); // NVRAM? + map(0x1e800000, 0x1e800007).rw(this, FUNC(magictg_state::unk2_r), FUNC(magictg_state::serial_w)); + map(0x1fc00000, 0x1fffffff).rom().region("mips", 0); +} /************************************* @@ -870,21 +871,24 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(magictg_state::adsp_program_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("adsp_pram") -ADDRESS_MAP_END +void magictg_state::adsp_program_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram().share("adsp_pram"); +} -ADDRESS_MAP_START(magictg_state::adsp_data_map) - ADDRESS_MAP_UNMAP_HIGH +void magictg_state::adsp_data_map(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x0000, 0x03ff) AM_RAMBANK("databank") - AM_RANGE(0x0400, 0x3fdf) AM_RAM - AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w) -ADDRESS_MAP_END + map(0x0400, 0x3fdf).ram(); + map(0x3fe0, 0x3fff).rw(this, FUNC(magictg_state::adsp_control_r), FUNC(magictg_state::adsp_control_w)); +} -ADDRESS_MAP_START(magictg_state::adsp_io_map) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void magictg_state::adsp_io_map(address_map &map) +{ + map.unmap_value_high(); +} /************************************* diff --git a/src/mame/drivers/magmax.cpp b/src/mame/drivers/magmax.cpp index 4ee8495c548..105d167dbb4 100644 --- a/src/mame/drivers/magmax.cpp +++ b/src/mame/drivers/magmax.cpp @@ -190,36 +190,39 @@ WRITE16_MEMBER(magmax_state::magmax_vreg_w) -ADDRESS_MAP_START(magmax_state::magmax_map) - AM_RANGE(0x000000, 0x013fff) AM_ROM - AM_RANGE(0x018000, 0x018fff) AM_RAM - AM_RANGE(0x020000, 0x0207ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x028000, 0x0281ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x030000, 0x030001) AM_READ_PORT("P1") - AM_RANGE(0x030002, 0x030003) AM_READ_PORT("P2") - AM_RANGE(0x030004, 0x030005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x030006, 0x030007) AM_READ_PORT("DSW") - AM_RANGE(0x030010, 0x030011) AM_WRITE(magmax_vreg_w) AM_SHARE("vreg") - AM_RANGE(0x030012, 0x030013) AM_WRITEONLY AM_SHARE("scroll_x") - AM_RANGE(0x030014, 0x030015) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x03001c, 0x03001d) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x03001e, 0x03001f) AM_WRITE(cpu_irq_ack_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(magmax_state::magmax_sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 not connected - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x1fff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, acknowledge_r, acknowledge_w) - AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x1800) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(magmax_state::magmax_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_READ(magmax_sound_r) -ADDRESS_MAP_END +void magmax_state::magmax_map(address_map &map) +{ + map(0x000000, 0x013fff).rom(); + map(0x018000, 0x018fff).ram(); + map(0x020000, 0x0207ff).ram().share("videoram"); + map(0x028000, 0x0281ff).ram().share("spriteram"); + map(0x030000, 0x030001).portr("P1"); + map(0x030002, 0x030003).portr("P2"); + map(0x030004, 0x030005).portr("SYSTEM"); + map(0x030006, 0x030007).portr("DSW"); + map(0x030010, 0x030011).w(this, FUNC(magmax_state::magmax_vreg_w)).share("vreg"); + map(0x030012, 0x030013).writeonly().share("scroll_x"); + map(0x030014, 0x030015).writeonly().share("scroll_y"); + map(0x03001d, 0x03001d).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x03001e, 0x03001f).w(this, FUNC(magmax_state::cpu_irq_ack_w)); +} + +void magmax_state::magmax_sound_map(address_map &map) +{ + map.global_mask(0x7fff); // A15 not connected + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4000).mirror(0x1fff).rw(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_r), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x6000, 0x67ff).mirror(0x1800).ram(); +} + +void magmax_state::magmax_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x04, 0x05).w("ay3", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r(this, FUNC(magmax_state::magmax_sound_r)); +} static INPUT_PORTS_START( magmax ) diff --git a/src/mame/drivers/magnum.cpp b/src/mame/drivers/magnum.cpp index 2267aa27cd5..399ed4e5d6f 100644 --- a/src/mame/drivers/magnum.cpp +++ b/src/mame/drivers/magnum.cpp @@ -132,19 +132,21 @@ WRITE8_MEMBER(magnum_state::beep_w) m_beep->set_state(BIT(data, 0)); } -ADDRESS_MAP_START(magnum_state::magnum_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void magnum_state::magnum_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); // fixed 256k for now + map(0xe0000, 0xfffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(magnum_state::magnum_io) - ADDRESS_MAP_UNMAP_HIGH +void magnum_state::magnum_io(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x000a, 0x000b) cdp1854 1 //AM_RANGE(0x000e, 0x000f) cpd1854 2 - AM_RANGE(0x0018, 0x001f) AM_READWRITE8(lcd_r, lcd_w, 0x00ff) - AM_RANGE(0x0056, 0x0057) AM_WRITE8(beep_w, 0x00ff) - AM_RANGE(0x0080, 0x008f) AM_DEVREADWRITE8("rtc", cdp1879_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0x0018, 0x001f).rw(this, FUNC(magnum_state::lcd_r), FUNC(magnum_state::lcd_w)).umask16(0x00ff); + map(0x0056, 0x0056).w(this, FUNC(magnum_state::beep_w)); + map(0x0080, 0x008f).rw("rtc", FUNC(cdp1879_device::read), FUNC(cdp1879_device::write)).umask16(0x00ff); +} MACHINE_CONFIG_START(magnum_state::magnum) MCFG_CPU_ADD("maincpu", I80186, XTAL(12'000'000) / 2) diff --git a/src/mame/drivers/magtouch.cpp b/src/mame/drivers/magtouch.cpp index ec539aa4f15..56ae4fb6c97 100644 --- a/src/mame/drivers/magtouch.cpp +++ b/src/mame/drivers/magtouch.cpp @@ -135,24 +135,26 @@ WRITE8_MEMBER(magtouch_state::magtouch_io_w) } } -ADDRESS_MAP_START(magtouch_state::magtouch_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) - AM_RANGE(0x000d0000, 0x000d1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x000d8000, 0x000dffff) AM_ROMBANK("rombank") - AM_RANGE(0x000f0000, 0x000fffff) AM_RAM AM_REGION("bios", 0 ) - AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(magtouch_state::magtouch_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x02e0, 0x02e7) AM_READWRITE8(magtouch_io_r, magtouch_io_w, 0xffffffff) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16450_0", ns16450_device, ins8250_r, ins8250_w, 0xffffffff) -ADDRESS_MAP_END +void magtouch_state::magtouch_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w)); + map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0); + map(0x000d0000, 0x000d1fff).ram().share("nvram"); + map(0x000d8000, 0x000dffff).bankr("rombank"); + map(0x000f0000, 0x000fffff).ram().region("bios", 0); + map(0xffff0000, 0xffffffff).rom().region("bios", 0); +} + +void magtouch_state::magtouch_io(address_map &map) +{ + pcat32_io_common(map); + map(0x02e0, 0x02e7).rw(this, FUNC(magtouch_state::magtouch_io_r), FUNC(magtouch_state::magtouch_io_w)); + map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w)); + map(0x03f8, 0x03ff).rw("ns16450_0", FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)); +} static INPUT_PORTS_START( magtouch ) PORT_START("IN0") diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp index 9b79a243a64..471b658b4b7 100644 --- a/src/mame/drivers/mainevt.cpp +++ b/src/mame/drivers/mainevt.cpp @@ -154,75 +154,79 @@ WRITE8_MEMBER(mainevt_state::k052109_051960_w) } -ADDRESS_MAP_START(mainevt_state::mainevt_map) - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - - AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w) - AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* probably */ - AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w) /* probably */ - AM_RANGE(0x1f8c, 0x1f8d) AM_WRITENOP /* ??? */ - AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w) /* coin counters + lamps */ - - AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1") - AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2") - AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1") - AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW3") - AM_RANGE(0x1f99, 0x1f99) AM_READ_PORT("P3") - AM_RANGE(0x1f9a, 0x1f9a) AM_READ_PORT("P4") - AM_RANGE(0x1f9b, 0x1f9b) AM_READ_PORT("DSW2") - - AM_RANGE(0x4000, 0x5dff) AM_RAM - AM_RANGE(0x5e00, 0x5fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mainevt_state::devstors_map) - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - - AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w) - AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* probably */ - AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w) /* probably */ - AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w) /* coin counters + lamps */ - - AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1") - AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2") - AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1") - AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW3") - AM_RANGE(0x1f9b, 0x1f9b) AM_READ_PORT("DSW2") - AM_RANGE(0x1fa0, 0x1fbf) AM_DEVREADWRITE("k051733", k051733_device, read, write) - AM_RANGE(0x1fb2, 0x1fb2) AM_WRITE(dv_nmienable_w) - - AM_RANGE(0x4000, 0x5dff) AM_RAM - AM_RANGE(0x5e00, 0x5fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mainevt_state::mainevt_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_READ(mainevt_sh_busy_r) - AM_RANGE(0xe000, 0xe000) AM_WRITE(mainevt_sh_irqcontrol_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(mainevt_sh_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mainevt_state::devstors_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(dv_sh_bankswitch_w) -ADDRESS_MAP_END +void mainevt_state::mainevt_map(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(mainevt_state::k052109_051960_r), FUNC(mainevt_state::k052109_051960_w)); + + map(0x1f80, 0x1f80).w(this, FUNC(mainevt_state::mainevt_bankswitch_w)); + map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); /* probably */ + map(0x1f88, 0x1f88).w(this, FUNC(mainevt_state::mainevt_sh_irqtrigger_w)); /* probably */ + map(0x1f8c, 0x1f8d).nopw(); /* ??? */ + map(0x1f90, 0x1f90).w(this, FUNC(mainevt_state::mainevt_coin_w)); /* coin counters + lamps */ + + map(0x1f94, 0x1f94).portr("SYSTEM"); + map(0x1f95, 0x1f95).portr("P1"); + map(0x1f96, 0x1f96).portr("P2"); + map(0x1f97, 0x1f97).portr("DSW1"); + map(0x1f98, 0x1f98).portr("DSW3"); + map(0x1f99, 0x1f99).portr("P3"); + map(0x1f9a, 0x1f9a).portr("P4"); + map(0x1f9b, 0x1f9b).portr("DSW2"); + + map(0x4000, 0x5dff).ram(); + map(0x5e00, 0x5fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x6000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom(); +} + + +void mainevt_state::devstors_map(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(mainevt_state::k052109_051960_r), FUNC(mainevt_state::k052109_051960_w)); + + map(0x1f80, 0x1f80).w(this, FUNC(mainevt_state::mainevt_bankswitch_w)); + map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); /* probably */ + map(0x1f88, 0x1f88).w(this, FUNC(mainevt_state::mainevt_sh_irqtrigger_w)); /* probably */ + map(0x1f90, 0x1f90).w(this, FUNC(mainevt_state::mainevt_coin_w)); /* coin counters + lamps */ + + map(0x1f94, 0x1f94).portr("SYSTEM"); + map(0x1f95, 0x1f95).portr("P1"); + map(0x1f96, 0x1f96).portr("P2"); + map(0x1f97, 0x1f97).portr("DSW1"); + map(0x1f98, 0x1f98).portr("DSW3"); + map(0x1f9b, 0x1f9b).portr("DSW2"); + map(0x1fa0, 0x1fbf).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); + map(0x1fb2, 0x1fb2).w(this, FUNC(mainevt_state::dv_nmienable_w)); + + map(0x4000, 0x5dff).ram(); + map(0x5e00, 0x5fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x6000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom(); +} + + +void mainevt_state::mainevt_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x9000, 0x9000).w(m_upd7759, FUNC(upd7759_device::port_w)); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xd000, 0xd000).r(this, FUNC(mainevt_state::mainevt_sh_busy_r)); + map(0xe000, 0xe000).w(this, FUNC(mainevt_state::mainevt_sh_irqcontrol_w)); + map(0xf000, 0xf000).w(this, FUNC(mainevt_state::mainevt_sh_bankswitch_w)); +} + +void mainevt_state::devstors_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe000, 0xe000).w(this, FUNC(mainevt_state::devstor_sh_irqcontrol_w)); + map(0xf000, 0xf000).w(this, FUNC(mainevt_state::dv_sh_bankswitch_w)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/mainsnk.cpp b/src/mame/drivers/mainsnk.cpp index 3151e61003f..bc79760ea0f 100644 --- a/src/mame/drivers/mainsnk.cpp +++ b/src/mame/drivers/mainsnk.cpp @@ -126,36 +126,39 @@ READ8_MEMBER(mainsnk_state::sound_ack_r) -ADDRESS_MAP_START(mainsnk_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW1") - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW2") - AM_RANGE(0xc600, 0xc600) AM_WRITE(c600_w) - AM_RANGE(0xc700, 0xc700) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram") - AM_RANGE(0xdc00, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mainsnk_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, acknowledge_r) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xe002, 0xe003) AM_WRITENOP // ? always FFFF, snkwave leftover? - AM_RANGE(0xe008, 0xe009) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mainsnk_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sound_ack_r) -ADDRESS_MAP_END +void mainsnk_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc300, 0xc300).portr("IN3"); + map(0xc400, 0xc400).portr("DSW1"); + map(0xc500, 0xc500).portr("DSW2"); + map(0xc600, 0xc600).w(this, FUNC(mainsnk_state::c600_w)); + map(0xc700, 0xc700).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd800, 0xdbff).ram().w(this, FUNC(mainsnk_state::bgram_w)).share("bgram"); + map(0xdc00, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().share("spriteram"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(mainsnk_state::fgram_w)).share("fgram"); // + work RAM +} + +void mainsnk_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_r)); + map(0xe000, 0xe001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xe002, 0xe003).nopw(); // ? always FFFF, snkwave leftover? + map(0xe008, 0xe009).w("ay2", FUNC(ay8910_device::address_data_w)); +} + +void mainsnk_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(mainsnk_state::sound_ack_r)); +} diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp index f0271ea12ca..24ec91ec071 100644 --- a/src/mame/drivers/majorpkr.cpp +++ b/src/mame/drivers/majorpkr.cpp @@ -742,23 +742,26 @@ WRITE8_MEMBER(majorpkr_state::pulses_w) * Memory map information * *************************/ -ADDRESS_MAP_START(majorpkr_state::map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_ROMBANK("rom_bank") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf7ff) AM_DEVICE("palette_bank", address_map_bank_device, amap8) - AM_RANGE(0xf800, 0xffff) AM_DEVICE("vram_bank", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(majorpkr_state::palettebanks) - AM_RANGE(0x0000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(majorpkr_state::vrambanks) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(fg_vram_w) AM_SHARE("fg_vram") - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(bg_vram_w) AM_SHARE("bg_vram") - AM_RANGE(0x1000, 0x1fff) AM_RAM // spare vram? cleared during boot along with fg and bg -ADDRESS_MAP_END +void majorpkr_state::map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).bankr("rom_bank"); + map(0xe800, 0xefff).ram().share("nvram"); + map(0xf000, 0xf7ff).m(m_palette_bank, FUNC(address_map_bank_device::amap8)); + map(0xf800, 0xffff).m(m_vram_bank, FUNC(address_map_bank_device::amap8)); +} + +void majorpkr_state::palettebanks(address_map &map) +{ + map(0x0000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void majorpkr_state::vrambanks(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(majorpkr_state::fg_vram_w)).share("fg_vram"); + map(0x0800, 0x0fff).ram().w(this, FUNC(majorpkr_state::bg_vram_w)).share("bg_vram"); + map(0x1000, 0x1fff).ram(); // spare vram? cleared during boot along with fg and bg +} /* 00 W ---> ROM bank. @@ -781,29 +784,30 @@ ADDRESS_MAP_END 60 W ---> PSG SN76489/96 initialization routines. (Maybe a leftover for different hardware). */ -ADDRESS_MAP_START(majorpkr_state::portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(rom_bank_w) - AM_RANGE(0x01, 0x01) AM_WRITE(palette_bank_w) - AM_RANGE(0x02, 0x02) AM_WRITE(vram_bank_w) - - AM_RANGE(0x10, 0x10) AM_READ(mux_port2_r) // muxed set of controls. - AM_RANGE(0x10, 0x10) AM_WRITE(pulses_w) // kind of watchdog on bit4... mech counters on bits 0-1-2-3. - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") - AM_RANGE(0x11, 0x11) AM_WRITE(mux_sel_w) // multiplexer selector. - AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2") - AM_RANGE(0x12, 0x12) AM_WRITE(vidreg_w) // video registers: normal or up down screen. - AM_RANGE(0x13, 0x13) AM_READ(mux_port_r) // all 4 DIP switches banks multiplexed. - AM_RANGE(0x13, 0x13) AM_WRITE(lamps_a_w) // lamps a out. - AM_RANGE(0x14, 0x14) AM_READ_PORT("TEST") // "freeze" switch. - AM_RANGE(0x14, 0x14) AM_WRITE(lamps_b_w) // lamps b out. - - AM_RANGE(0x30, 0x30) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - - AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x60, 0x60) AM_WRITENOP // leftover from a PSG SN76489/96?... -ADDRESS_MAP_END +void majorpkr_state::portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(majorpkr_state::rom_bank_w)); + map(0x01, 0x01).w(this, FUNC(majorpkr_state::palette_bank_w)); + map(0x02, 0x02).w(this, FUNC(majorpkr_state::vram_bank_w)); + + map(0x10, 0x10).r(this, FUNC(majorpkr_state::mux_port2_r)); // muxed set of controls. + map(0x10, 0x10).w(this, FUNC(majorpkr_state::pulses_w)); // kind of watchdog on bit4... mech counters on bits 0-1-2-3. + map(0x11, 0x11).portr("IN1"); + map(0x11, 0x11).w(this, FUNC(majorpkr_state::mux_sel_w)); // multiplexer selector. + map(0x12, 0x12).portr("IN2"); + map(0x12, 0x12).w(this, FUNC(majorpkr_state::vidreg_w)); // video registers: normal or up down screen. + map(0x13, 0x13).r(this, FUNC(majorpkr_state::mux_port_r)); // all 4 DIP switches banks multiplexed. + map(0x13, 0x13).w(this, FUNC(majorpkr_state::lamps_a_w)); // lamps a out. + map(0x14, 0x14).portr("TEST"); // "freeze" switch. + map(0x14, 0x14).w(this, FUNC(majorpkr_state::lamps_b_w)); // lamps b out. + + map(0x30, 0x30).w("crtc", FUNC(mc6845_device::address_w)); + map(0x31, 0x31).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + + map(0x50, 0x50).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x60, 0x60).nopw(); // leftover from a PSG SN76489/96?... +} /************************* diff --git a/src/mame/drivers/malzak.cpp b/src/mame/drivers/malzak.cpp index 3fa70edfb36..505cf3bc2c1 100644 --- a/src/mame/drivers/malzak.cpp +++ b/src/mame/drivers/malzak.cpp @@ -99,45 +99,47 @@ READ8_MEMBER(malzak_state::s2636_portA_r) } } -ADDRESS_MAP_START(malzak_state::malzak_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0fff) AM_ROMBANK("bank1") - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1100, 0x11ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data) - AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r) - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(malzak_state::malzak2_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0fff) AM_ROMBANK("bank1") - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1100, 0x11ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data) - AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r) - AM_RANGE(0x14cc, 0x14cc) AM_MIRROR(0x6000) AM_READ(s2636_portA_r) - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END +void malzak_state::malzak_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0fff).bankr("bank1"); + map(0x1000, 0x10ff).mirror(0x6000).ram(); + map(0x1100, 0x11ff).mirror(0x6000).ram(); + map(0x1200, 0x12ff).mirror(0x6000).ram(); + map(0x1300, 0x13ff).mirror(0x6000).ram(); + map(0x1400, 0x14ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x14cb, 0x14cb).mirror(0x6000).r(this, FUNC(malzak_state::fake_VRLE_r)); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1600, 0x16ff).mirror(0x6000).ram().w(this, FUNC(malzak_state::malzak_playfield_w)); + map(0x1700, 0x17ff).mirror(0x6000).ram(); + map(0x1800, 0x1fff).mirror(0x6000).ram().share("videoram"); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} + + +void malzak_state::malzak2_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0fff).bankr("bank1"); + map(0x1000, 0x10ff).mirror(0x6000).ram(); + map(0x1100, 0x11ff).mirror(0x6000).ram(); + map(0x1200, 0x12ff).mirror(0x6000).ram(); + map(0x1300, 0x13ff).mirror(0x6000).ram(); + map(0x1400, 0x14ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x14cb, 0x14cb).mirror(0x6000).r(this, FUNC(malzak_state::fake_VRLE_r)); + map(0x14cc, 0x14cc).mirror(0x6000).r(this, FUNC(malzak_state::s2636_portA_r)); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1600, 0x16ff).mirror(0x6000).ram().w(this, FUNC(malzak_state::malzak_playfield_w)); + map(0x1700, 0x17ff).mirror(0x6000).ram().share("nvram"); + map(0x1800, 0x1fff).mirror(0x6000).ram().share("videoram"); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} READ8_MEMBER(malzak_state::s2650_data_r) @@ -180,18 +182,20 @@ READ8_MEMBER(malzak_state::collision_r) return 0xd0 + m_collision_counter; } -ADDRESS_MAP_START(malzak_state::malzak_io_map) - AM_RANGE(0x00, 0x00) AM_READ(collision_r) // returns where a collision can occur. - AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) // possibly sound codes for dual SN76477s - AM_RANGE(0x60, 0x60) AM_WRITE(port60_w) // possibly playfield scroll X offset - AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0") //controls - AM_RANGE(0xa0, 0xa0) AM_WRITENOP // echoes I/O port read from port 0x80 - AM_RANGE(0xc0, 0xc0) AM_WRITE(portc0_w) // possibly playfield row selection for writing and/or collisions -ADDRESS_MAP_END - -ADDRESS_MAP_START(malzak_state::malzak_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(s2650_data_r) // read upon death -ADDRESS_MAP_END +void malzak_state::malzak_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(malzak_state::collision_r)); // returns where a collision can occur. + map(0x40, 0x40).w(this, FUNC(malzak_state::port40_w)); // possibly sound codes for dual SN76477s + map(0x60, 0x60).w(this, FUNC(malzak_state::port60_w)); // possibly playfield scroll X offset + map(0x80, 0x80).portr("IN0"); //controls + map(0xa0, 0xa0).nopw(); // echoes I/O port read from port 0x80 + map(0xc0, 0xc0).w(this, FUNC(malzak_state::portc0_w)); // possibly playfield row selection for writing and/or collisions +} + +void malzak_state::malzak_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(malzak_state::s2650_data_r)); // read upon death +} static INPUT_PORTS_START( malzak ) diff --git a/src/mame/drivers/manohman.cpp b/src/mame/drivers/manohman.cpp index bd23d434f16..58fc68cd36a 100644 --- a/src/mame/drivers/manohman.cpp +++ b/src/mame/drivers/manohman.cpp @@ -186,17 +186,18 @@ IRQ_CALLBACK_MEMBER(manohman_state::iack_handler) * Memory Map Definition * *********************************************/ -ADDRESS_MAP_START(manohman_state::mem_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x100000, 0x10003f) AM_DEVREADWRITE8("pit", pit68230_device, read, write, 0x00ff) - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) AM_READNOP - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("nvram") //work RAM - AM_RANGE(0x600002, 0x600003) AM_WRITENOP // output through shift register? - AM_RANGE(0x600004, 0x600005) AM_READNOP - AM_RANGE(0x600006, 0x600007) AM_NOP //(r) is discarded (watchdog?) -ADDRESS_MAP_END +void manohman_state::mem_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x100000, 0x10003f).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write)).umask16(0x00ff); + map(0x200000, 0x20001f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x300000, 0x300003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff).nopr(); + map(0x400000, 0x40001f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x500000, 0x503fff).ram().share("nvram"); //work RAM + map(0x600002, 0x600003).nopw(); // output through shift register? + map(0x600004, 0x600005).nopr(); + map(0x600006, 0x600007).noprw(); //(r) is discarded (watchdog?) +} /* diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp index ca752acf0ac..690b6d3c679 100644 --- a/src/mame/drivers/mappy.cpp +++ b/src/mame/drivers/mappy.cpp @@ -645,67 +645,74 @@ INTERRUPT_GEN_MEMBER(mappy_state::sub2_vblank_irq) m_subcpu2->set_input_line(0, ASSERT_LINE); } -ADDRESS_MAP_START(mappy_state::superpac_cpu1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(superpac_videoram_w) AM_SHARE("videoram") /* video RAM */ - AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* work RAM with embedded sprite RAM */ - AM_RANGE(0x2000, 0x2000) AM_READWRITE(superpac_flipscreen_r, superpac_flipscreen_w) - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the sound CPU */ - AM_RANGE(0x4800, 0x480f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x4810, 0x481f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x5000, 0x500f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */ - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mappy_state::phozon_cpu1_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(superpac_videoram_w) AM_SHARE("videoram") /* video RAM */ - AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #2/sprite RAM*/ - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the sound CPU */ - AM_RANGE(0x4800, 0x480f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x4810, 0x481f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x5000, 0x500f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */ - AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mappy_state::mappy_cpu1_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(mappy_videoram_w) AM_SHARE("videoram") /* video RAM */ - AM_RANGE(0x1000, 0x27ff) AM_RAM AM_SHARE("spriteram") /* work RAM with embedded sprite RAM */ - AM_RANGE(0x3800, 0x3fff) AM_WRITE(mappy_scroll_w) /* scroll */ - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the sound CPU */ - AM_RANGE(0x4800, 0x480f) AM_DEVREADWRITE("namcoio_1", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x4810, 0x481f) AM_DEVREADWRITE("namcoio_2", namcoio_device, read, write) /* custom I/O chips interface */ - AM_RANGE(0x5000, 0x500f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */ - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM code (only a000-ffff in Mappy) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mappy_state::superpac_cpu2_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU (also sound registers) */ - AM_RANGE(0x2000, 0x200f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */ - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mappy_state::phozon_cpu2_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU + sound registers */ - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mappy_state::mappy_cpu2_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with the main CPU (also sound registers) */ - AM_RANGE(0x2000, 0x200f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) /* various control bits */ - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM code */ -ADDRESS_MAP_END +void mappy_state::superpac_cpu1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */ + map(0x0800, 0x1fff).ram().share("spriteram"); /* work RAM with embedded sprite RAM */ + map(0x2000, 0x2000).rw(this, FUNC(mappy_state::superpac_flipscreen_r), FUNC(mappy_state::superpac_flipscreen_w)); + map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */ + map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */ + map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xa000, 0xffff).rom(); +} + +void mappy_state::phozon_cpu1_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */ + map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2/sprite RAM*/ + map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */ + map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */ + map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void mappy_state::mappy_cpu1_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().w(this, FUNC(mappy_state::mappy_videoram_w)).share("videoram"); /* video RAM */ + map(0x1000, 0x27ff).ram().share("spriteram"); /* work RAM with embedded sprite RAM */ + map(0x3800, 0x3fff).w(this, FUNC(mappy_state::mappy_scroll_w)); /* scroll */ + map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the sound CPU */ + map(0x4800, 0x480f).rw("namcoio_1", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x4810, 0x481f).rw("namcoio_2", FUNC(namcoio_device::read), FUNC(namcoio_device::write)); /* custom I/O chips interface */ + map(0x5000, 0x500f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */ + map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0xffff).rom(); /* ROM code (only a000-ffff in Mappy) */ +} + +void mappy_state::superpac_cpu2_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU (also sound registers) */ + map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */ + map(0xe000, 0xffff).rom(); +} + +void mappy_state::phozon_cpu2_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU + sound registers */ + map(0xe000, 0xffff).rom(); /* ROM */ +} + +void mappy_state::mappy_cpu2_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with the main CPU (also sound registers) */ + map(0x2000, 0x200f).w("mainlatch", FUNC(ls259_device::write_a0)); /* various control bits */ + map(0xe000, 0xffff).rom(); /* ROM code */ +} /* extra CPU only present in Phozon */ -ADDRESS_MAP_START(mappy_state::phozon_cpu3_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(superpac_videoram_w) AM_SHARE("videoram") /* video RAM */ - AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("spriteram") /* shared RAM with CPU #2/sprite RAM*/ - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) /* shared RAM with CPU #2 */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM /* RAM */ - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END +void mappy_state::phozon_cpu3_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(mappy_state::superpac_videoram_w)).share("videoram"); /* video RAM */ + map(0x0800, 0x1fff).ram().share("spriteram"); /* shared RAM with CPU #2/sprite RAM*/ + map(0x4000, 0x43ff).rw(m_namco_15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); /* shared RAM with CPU #2 */ + map(0xa000, 0xa7ff).ram(); /* RAM */ + map(0xe000, 0xffff).rom(); /* ROM */ +} diff --git a/src/mame/drivers/marineb.cpp b/src/mame/drivers/marineb.cpp index 4d24b032f99..ded73a301e0 100644 --- a/src/mame/drivers/marineb.cpp +++ b/src/mame/drivers/marineb.cpp @@ -65,33 +65,36 @@ WRITE_LINE_MEMBER(marineb_state::irq_mask_w) m_irq_mask = state; } -ADDRESS_MAP_START(marineb_state::marineb_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(marineb_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8c00, 0x8c3f) AM_RAM AM_SHARE("spriteram") /* Hoccer only */ - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(marineb_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9800, 0x9800) AM_WRITE(marineb_column_scroll_w) - AM_RANGE(0x9a00, 0x9a00) AM_WRITE(marineb_palette_bank_0_w) - AM_RANGE(0x9c00, 0x9c00) AM_WRITE(marineb_palette_bank_1_w) - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM") AM_WRITENOP /* also watchdog */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(marineb_state::marineb_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x09) AM_DEVWRITE("ay1", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(marineb_state::wanted_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8912_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8912_device, address_data_w) -ADDRESS_MAP_END +void marineb_state::marineb_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(marineb_state::marineb_videoram_w)).share("videoram"); + map(0x8c00, 0x8c3f).ram().share("spriteram"); /* Hoccer only */ + map(0x9000, 0x93ff).ram().w(this, FUNC(marineb_state::marineb_colorram_w)).share("colorram"); + map(0x9800, 0x9800).w(this, FUNC(marineb_state::marineb_column_scroll_w)); + map(0x9a00, 0x9a00).w(this, FUNC(marineb_state::marineb_palette_bank_0_w)); + map(0x9c00, 0x9c00).w(this, FUNC(marineb_state::marineb_palette_bank_1_w)); + map(0xa000, 0xa007).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xa000, 0xa000).portr("P2"); + map(0xa800, 0xa800).portr("P1"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb800, 0xb800).portr("SYSTEM").nopw(); /* also watchdog */ +} + + +void marineb_state::marineb_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x09).w("ay1", FUNC(ay8910_device::address_data_w)); +} + +void marineb_state::wanted_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8912_device::address_data_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8912_device::address_data_w)); +} static INPUT_PORTS_START( marineb ) diff --git a/src/mame/drivers/marinedt.cpp b/src/mame/drivers/marinedt.cpp index 87ba954a44f..ae0374ad25b 100644 --- a/src/mame/drivers/marinedt.cpp +++ b/src/mame/drivers/marinedt.cpp @@ -437,28 +437,30 @@ READ8_MEMBER(marinedt_state::pc3259_r) return 0; } -ADDRESS_MAP_START(marinedt_state::marinedt_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 is not decoded */ - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("ipl",0) - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0400) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM_WRITE(vram_w) AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(marinedt_state::marinedt_io) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") - AM_RANGE(0x01, 0x01) AM_READ(trackball_r) - AM_RANGE(0x02, 0x02) AM_SELECT(0xc) AM_READ(pc3259_r) - AM_RANGE(0x02, 0x04) AM_WRITE(obj_0_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("SYSTEM") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x05, 0x05) AM_WRITE(bgm_w) - AM_RANGE(0x06, 0x06) AM_WRITE(sfx_w) - AM_RANGE(0x08, 0x0b) AM_WRITE(obj_1_w) - AM_RANGE(0x0d, 0x0d) AM_WRITE(layer_enable_w) - AM_RANGE(0x0e, 0x0e) AM_WRITENOP // watchdog - AM_RANGE(0x0f, 0x0f) AM_WRITE(output_w) -ADDRESS_MAP_END +void marinedt_state::marinedt_map(address_map &map) +{ + map.global_mask(0x7fff); /* A15 is not decoded */ + map(0x0000, 0x3fff).rom().region("ipl", 0); + map(0x4000, 0x43ff).mirror(0x0400).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().w(this, FUNC(marinedt_state::vram_w)).share("vram"); +} + +void marinedt_state::marinedt_io(address_map &map) +{ + map.global_mask(0x0f); + map(0x00, 0x00).portr("DSW1"); + map(0x01, 0x01).r(this, FUNC(marinedt_state::trackball_r)); + map(0x02, 0x02).select(0xc).r(this, FUNC(marinedt_state::pc3259_r)); + map(0x02, 0x04).w(this, FUNC(marinedt_state::obj_0_w)); + map(0x03, 0x03).portr("SYSTEM"); + map(0x04, 0x04).portr("DSW2"); + map(0x05, 0x05).w(this, FUNC(marinedt_state::bgm_w)); + map(0x06, 0x06).w(this, FUNC(marinedt_state::sfx_w)); + map(0x08, 0x0b).w(this, FUNC(marinedt_state::obj_1_w)); + map(0x0d, 0x0d).w(this, FUNC(marinedt_state::layer_enable_w)); + map(0x0e, 0x0e).nopw(); // watchdog + map(0x0f, 0x0f).w(this, FUNC(marinedt_state::output_w)); +} static INPUT_PORTS_START( marinedt ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/mario.cpp b/src/mame/drivers/mario.cpp index 3712ce1d68d..829ea517a34 100644 --- a/src/mame/drivers/mario.cpp +++ b/src/mame/drivers/mario.cpp @@ -141,40 +141,43 @@ WRITE_LINE_MEMBER(mario_state::coin_counter_2_w) * *************************************/ -ADDRESS_MAP_START(mario_state::mario_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("spriteram") /* physical sprite ram */ - AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(mario_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(mario_sh1_w) /* Mario run sample */ - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(mario_sh2_w) /* Luigi run sample */ - AM_RANGE(0x7d00, 0x7d00) AM_WRITE(mario_scroll_w) - AM_RANGE(0x7e00, 0x7e00) AM_WRITE(mario_sh_tuneselect_w) - AM_RANGE(0x7e80, 0x7e87) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x7f00, 0x7f07) AM_WRITE(mario_sh3_w) /* Sound port */ - AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW") /* DSW */ - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mario_state::masao_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("spriteram") /* physical sprite ram */ - AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(mario_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") - AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") - AM_RANGE(0x7d00, 0x7d00) AM_WRITE(mario_scroll_w) - AM_RANGE(0x7e00, 0x7e00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x7e80, 0x7e87) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x7f00, 0x7f00) AM_WRITE(masao_sh_irqtrigger_w) - AM_RANGE(0x7f80, 0x7f80) AM_READ_PORT("DSW") /* DSW */ - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mario_state::mario_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("z80dma", z80dma_device, read, write) /* dma controller */ -ADDRESS_MAP_END +void mario_state::mario_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x73ff).ram().share("spriteram"); /* physical sprite ram */ + map(0x7400, 0x77ff).ram().w(this, FUNC(mario_state::mario_videoram_w)).share("videoram"); + map(0x7c00, 0x7c00).portr("IN0").w(this, FUNC(mario_state::mario_sh1_w)); /* Mario run sample */ + map(0x7c80, 0x7c80).portr("IN1").w(this, FUNC(mario_state::mario_sh2_w)); /* Luigi run sample */ + map(0x7d00, 0x7d00).w(this, FUNC(mario_state::mario_scroll_w)); + map(0x7e00, 0x7e00).w(this, FUNC(mario_state::mario_sh_tuneselect_w)); + map(0x7e80, 0x7e87).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x7f00, 0x7f07).w(this, FUNC(mario_state::mario_sh3_w)); /* Sound port */ + map(0x7f80, 0x7f80).portr("DSW"); /* DSW */ + map(0xf000, 0xffff).rom(); +} + +void mario_state::masao_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x7000, 0x73ff).ram().share("spriteram"); /* physical sprite ram */ + map(0x7400, 0x77ff).ram().w(this, FUNC(mario_state::mario_videoram_w)).share("videoram"); + map(0x7c00, 0x7c00).portr("IN0"); + map(0x7c80, 0x7c80).portr("IN1"); + map(0x7d00, 0x7d00).w(this, FUNC(mario_state::mario_scroll_w)); + map(0x7e00, 0x7e00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x7e80, 0x7e87).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x7f00, 0x7f00).w(this, FUNC(mario_state::masao_sh_irqtrigger_w)); + map(0x7f80, 0x7f80).portr("DSW"); /* DSW */ + map(0xf000, 0xffff).rom(); +} + +void mario_state::mario_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_z80dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); /* dma controller */ +} /************************************* diff --git a/src/mame/drivers/markham.cpp b/src/mame/drivers/markham.cpp index bbf9b5376c1..761a856c6e2 100644 --- a/src/mame/drivers/markham.cpp +++ b/src/mame/drivers/markham.cpp @@ -26,40 +26,42 @@ READ8_MEMBER(markham_state::markham_e004_r) /****************************************************************************/ -ADDRESS_MAP_START(markham_state::markham_master_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM +void markham_state::markham_master_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(markham_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share1") + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("spriteram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(markham_state::markham_videoram_w)).share("videoram"); + map(0xd800, 0xdfff).ram().share("share1"); - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW2") - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1") - AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2") + map(0xe000, 0xe000).portr("DSW2"); + map(0xe001, 0xe001).portr("DSW1"); + map(0xe002, 0xe002).portr("P1"); + map(0xe003, 0xe003).portr("P2"); - AM_RANGE(0xe004, 0xe004) AM_READ(markham_e004_r) /* from CPU2 busack */ + map(0xe004, 0xe004).r(this, FUNC(markham_state::markham_e004_r)); /* from CPU2 busack */ - AM_RANGE(0xe005, 0xe005) AM_READ_PORT("SYSTEM") + map(0xe005, 0xe005).portr("SYSTEM"); - AM_RANGE(0xe008, 0xe008) AM_WRITENOP /* coin counter? */ - AM_RANGE(0xe009, 0xe009) AM_WRITENOP /* to CPU2 busreq */ + map(0xe008, 0xe008).nopw(); /* coin counter? */ + map(0xe009, 0xe009).nopw(); /* to CPU2 busreq */ - AM_RANGE(0xe00c, 0xe00d) AM_WRITEONLY AM_SHARE("xscroll") - AM_RANGE(0xe00e, 0xe00e) AM_WRITE(markham_flipscreen_w) -ADDRESS_MAP_END + map(0xe00c, 0xe00d).writeonly().share("xscroll"); + map(0xe00e, 0xe00e).w(this, FUNC(markham_state::markham_flipscreen_w)); +} -ADDRESS_MAP_START(markham_state::markham_slave_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1") +void markham_state::markham_slave_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x87ff).ram().share("share1"); - AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("sn2", sn76496_device, write) + map(0xc000, 0xc000).w("sn1", FUNC(sn76496_device::write)); + map(0xc001, 0xc001).w("sn2", FUNC(sn76496_device::write)); - AM_RANGE(0xc002, 0xc002) AM_WRITENOP /* unknown */ - AM_RANGE(0xc003, 0xc003) AM_WRITENOP /* unknown */ -ADDRESS_MAP_END + map(0xc002, 0xc002).nopw(); /* unknown */ + map(0xc003, 0xc003).nopw(); /* unknown */ +} /****************************************************************************/ diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp index 27fb149173e..4275714fb5d 100644 --- a/src/mame/drivers/marywu.cpp +++ b/src/mame/drivers/marywu.cpp @@ -157,19 +157,21 @@ WRITE8_MEMBER( marywu_state::display_7seg_data_w ) output().set_digit_value(2 * m_selected_7seg_module + 1, patterns[(data >> 4) & 0x0F]); } -ADDRESS_MAP_START(marywu_state::program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(marywu_state::io_map) - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_RAM /* HM6116: 2kbytes of Static RAM */ - AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x9001, 0x9001) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x9002, 0x9002) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x9003, 0x9003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0xb000, 0xb001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_NOP /* TODO: Investigate this. There's something going on at this address range. */ -ADDRESS_MAP_END +void marywu_state::program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} + +void marywu_state::io_map(address_map &map) +{ + map(0x8000, 0x87ff).mirror(0x0800).ram(); /* HM6116: 2kbytes of Static RAM */ + map(0x9000, 0x9000).mirror(0x0ffc).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x9001, 0x9001).mirror(0x0ffc).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x9002, 0x9002).mirror(0x0ffc).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x9003, 0x9003).mirror(0x0ffc).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xb000, 0xb001).mirror(0x0ffe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xf000, 0xf000).noprw(); /* TODO: Investigate this. There's something going on at this address range. */ +} MACHINE_CONFIG_START(marywu_state::marywu) /* basic machine hardware */ diff --git a/src/mame/drivers/mastboy.cpp b/src/mame/drivers/mastboy.cpp index aa4abef1f30..c86b47903f3 100644 --- a/src/mame/drivers/mastboy.cpp +++ b/src/mame/drivers/mastboy.cpp @@ -616,30 +616,31 @@ INTERRUPT_GEN_MEMBER(mastboy_state::interrupt) /* Memory Maps */ -ADDRESS_MAP_START(mastboy_state::mastboy_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // Internal ROM - AM_RANGE(0x4000, 0x7fff) AM_ROM // External ROM +void mastboy_state::mastboy_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // Internal ROM + map(0x4000, 0x7fff).rom(); // External ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("workram")// work ram - AM_RANGE(0x9000, 0x9fff) AM_RAM AM_SHARE("tileram")// tilemap ram - AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_SHARE("colram") AM_MIRROR(0x0e00) // colour ram + map(0x8000, 0x8fff).ram().share("workram");// work ram + map(0x9000, 0x9fff).ram().share("tileram");// tilemap ram + map(0xa000, 0xa1ff).ram().share("colram").mirror(0x0e00); // colour ram - AM_RANGE(0xc000, 0xffff) AM_DEVICE("bank_c000", address_map_bank_device, amap8) + map(0xc000, 0xffff).m("bank_c000", FUNC(address_map_bank_device::amap8)); - AM_RANGE(0xff000, 0xff7ff) AM_DEVREADWRITE("earom", eeprom_parallel_28xx_device, read, write) + map(0xff000, 0xff7ff).rw(m_earom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); - AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1") - AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2") - AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1") - AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2") + map(0xff800, 0xff807).portr("P1"); + map(0xff808, 0xff80f).portr("P2"); + map(0xff810, 0xff817).portr("DSW1"); + map(0xff818, 0xff81f).portr("DSW2"); - AM_RANGE(0xff820, 0xff827) AM_WRITE(bank_w) - AM_RANGE(0xff828, 0xff829) AM_DEVWRITE("saa", saa1099_device, write) - AM_RANGE(0xff830, 0xff830) AM_WRITE(msm5205_data_w) - AM_RANGE(0xff838, 0xff83f) AM_DEVWRITE("outlatch", ls259_device, write_d0) + map(0xff820, 0xff827).w(this, FUNC(mastboy_state::bank_w)); + map(0xff828, 0xff829).w("saa", FUNC(saa1099_device::write)); + map(0xff830, 0xff830).w(this, FUNC(mastboy_state::msm5205_data_w)); + map(0xff838, 0xff83f).w(m_outlatch, FUNC(ls259_device::write_d0)); - AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM -ADDRESS_MAP_END + map(0xffc00, 0xfffff).ram(); // Internal RAM +} // TODO : banked map is mirrored? ADDRESS_MAP_START(mastboy_state::bank_c000_map) @@ -661,10 +662,11 @@ READ8_MEMBER(mastboy_state::nmi_read) return 0x00; } -ADDRESS_MAP_START(mastboy_state::mastboy_io_map) - AM_RANGE(0x38, 0x38) AM_READ(port_38_read) - AM_RANGE(0x39, 0x39) AM_READ(nmi_read) -ADDRESS_MAP_END +void mastboy_state::mastboy_io_map(address_map &map) +{ + map(0x38, 0x38).r(this, FUNC(mastboy_state::port_38_read)); + map(0x39, 0x39).r(this, FUNC(mastboy_state::nmi_read)); +} /* Input Ports */ diff --git a/src/mame/drivers/matmania.cpp b/src/mame/drivers/matmania.cpp index 6b6a7258997..321877c034d 100644 --- a/src/mame/drivers/matmania.cpp +++ b/src/mame/drivers/matmania.cpp @@ -75,59 +75,63 @@ WRITE8_MEMBER(matmania_state::maniach_sh_command_w) * *************************************/ -ADDRESS_MAP_START(matmania_state::matmania_map) - AM_RANGE(0x0000, 0x077f) AM_RAM - AM_RANGE(0x0780, 0x07df) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram2") - AM_RANGE(0x2000, 0x21ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2200, 0x23ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x2400, 0x25ff) AM_RAM AM_SHARE("videoram3") - AM_RANGE(0x2600, 0x27ff) AM_RAM AM_SHARE("colorram3") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") AM_WRITEONLY AM_SHARE("pageselect") - AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1") AM_WRITE(matmania_sh_command_w) - AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1") AM_WRITENOP /* ?? */ - AM_RANGE(0x3050, 0x307f) AM_WRITE(matmania_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(matmania_state::maniach_map) - AM_RANGE(0x0000, 0x077f) AM_RAM - AM_RANGE(0x0780, 0x07df) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram2") - AM_RANGE(0x2000, 0x21ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2200, 0x23ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x2400, 0x25ff) AM_RAM AM_SHARE("videoram3") - AM_RANGE(0x2600, 0x27ff) AM_RAM AM_SHARE("colorram3") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") AM_WRITEONLY AM_SHARE("pageselect") - AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1") AM_WRITE(maniach_sh_command_w) - AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1") AM_WRITENOP /* ?? */ - AM_RANGE(0x3040, 0x3040) AM_DEVREADWRITE("mcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0x3041, 0x3041) AM_READ(maniach_mcu_status_r) - AM_RANGE(0x3050, 0x307f) AM_WRITE(matmania_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(matmania_state::matmania_sound_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(matmania_state::maniach_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x2004, 0x2004) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void matmania_state::matmania_map(address_map &map) +{ + map(0x0000, 0x077f).ram(); + map(0x0780, 0x07df).writeonly().share("spriteram"); + map(0x1000, 0x13ff).ram().share("videoram2"); + map(0x1400, 0x17ff).ram().share("colorram2"); + map(0x2000, 0x21ff).ram().share("videoram"); + map(0x2200, 0x23ff).ram().share("colorram"); + map(0x2400, 0x25ff).ram().share("videoram3"); + map(0x2600, 0x27ff).ram().share("colorram3"); + map(0x3000, 0x3000).portr("IN0").writeonly().share("pageselect"); + map(0x3010, 0x3010).portr("IN1").w(this, FUNC(matmania_state::matmania_sh_command_w)); + map(0x3020, 0x3020).portr("DSW2").writeonly().share("scroll"); + map(0x3030, 0x3030).portr("DSW1").nopw(); /* ?? */ + map(0x3050, 0x307f).w(this, FUNC(matmania_state::matmania_paletteram_w)).share("paletteram"); + map(0x4000, 0xffff).rom(); +} + +void matmania_state::maniach_map(address_map &map) +{ + map(0x0000, 0x077f).ram(); + map(0x0780, 0x07df).ram().share("spriteram"); + map(0x1000, 0x13ff).ram().share("videoram2"); + map(0x1400, 0x17ff).ram().share("colorram2"); + map(0x2000, 0x21ff).ram().share("videoram"); + map(0x2200, 0x23ff).ram().share("colorram"); + map(0x2400, 0x25ff).ram().share("videoram3"); + map(0x2600, 0x27ff).ram().share("colorram3"); + map(0x3000, 0x3000).portr("IN0").writeonly().share("pageselect"); + map(0x3010, 0x3010).portr("IN1").w(this, FUNC(matmania_state::maniach_sh_command_w)); + map(0x3020, 0x3020).portr("DSW2").writeonly().share("scroll"); + map(0x3030, 0x3030).portr("DSW1").nopw(); /* ?? */ + map(0x3040, 0x3040).rw(m_mcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0x3041, 0x3041).r(this, FUNC(matmania_state::maniach_mcu_status_r)); + map(0x3050, 0x307f).w(this, FUNC(matmania_state::matmania_paletteram_w)).share("paletteram"); + map(0x4000, 0xffff).rom(); +} + + +void matmania_state::matmania_sound_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x2002, 0x2003).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x2004, 0x2004).w("dac", FUNC(dac_byte_interface::write)); + map(0x2007, 0x2007).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} + +void matmania_state::maniach_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x2000, 0x2001).w("ymsnd", FUNC(ym3526_device::write)); + map(0x2002, 0x2002).w("dac", FUNC(dac_byte_interface::write)); + map(0x2004, 0x2004).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/maxaflex.cpp b/src/mame/drivers/maxaflex.cpp index b2cc24cffed..e1ef07a3969 100644 --- a/src/mame/drivers/maxaflex.cpp +++ b/src/mame/drivers/maxaflex.cpp @@ -199,19 +199,20 @@ INPUT_CHANGED_MEMBER(maxaflex_state::coin_inserted) -ADDRESS_MAP_START(maxaflex_state::a600xl_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM - AM_RANGE(0x5000, 0x57ff) AM_ROM AM_REGION("maincpu", 0xd000) /* self test */ - AM_RANGE(0x8000, 0xbfff) AM_ROM /* game cartridge */ - AM_RANGE(0xc000, 0xcfff) AM_ROM /* OS */ - AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write) - AM_RANGE(0xd100, 0xd1ff) AM_NOP - AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write) - AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write) - AM_RANGE(0xd500, 0xd7ff) AM_NOP - AM_RANGE(0xd800, 0xffff) AM_ROM /* OS */ -ADDRESS_MAP_END +void maxaflex_state::a600xl_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram(); + map(0x5000, 0x57ff).rom().region("maincpu", 0xd000); /* self test */ + map(0x8000, 0xbfff).rom(); /* game cartridge */ + map(0xc000, 0xcfff).rom(); /* OS */ + map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write)); + map(0xd100, 0xd1ff).noprw(); + map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0xd300, 0xd3ff).rw("pia", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write)); + map(0xd500, 0xd7ff).noprw(); + map(0xd800, 0xffff).rom(); /* OS */ +} static INPUT_PORTS_START( a600xl ) diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp index 9ac530a0969..fa9ebe0ef1a 100644 --- a/src/mame/drivers/maygay1b.cpp +++ b/src/mame/drivers/maygay1b.cpp @@ -476,50 +476,51 @@ WRITE8_MEMBER(maygay1b_state::m1_lockout_w) } } -ADDRESS_MAP_START(maygay1b_state::m1_memmap) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") +void maygay1b_state::m1_memmap(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); - AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w) - AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w) - AM_RANGE(0x2020, 0x2020) AM_WRITE(reel56_w) + map(0x2000, 0x2000).w(this, FUNC(maygay1b_state::reel12_w)); + map(0x2010, 0x2010).w(this, FUNC(maygay1b_state::reel34_w)); + map(0x2020, 0x2020).w(this, FUNC(maygay1b_state::reel56_w)); // there is actually an 8279 and an 8051 (which I guess is the MCU?). - AM_RANGE(0x2030, 0x2031) AM_DEVREADWRITE("i8279", i8279_device, read, write) + map(0x2030, 0x2031).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); #ifdef USE_MCU //8051 - AM_RANGE(0x2040, 0x2040) AM_WRITE( main_to_mcu_0_w ) - AM_RANGE(0x2041, 0x2041) AM_WRITE( main_to_mcu_1_w ) + map(0x2040, 0x2040).w(this, FUNC(maygay1b_state::main_to_mcu_0_w)); + map(0x2041, 0x2041).w(this, FUNC(maygay1b_state::main_to_mcu_1_w)); #else //8051 - AM_RANGE(0x2040, 0x2041) AM_DEVREADWRITE("i8279_2", i8279_device, read, write) + map(0x2040, 0x2041).rw("i8279_2", FUNC(i8279_device::read), FUNC(i8279_device::write)); // AM_RANGE(0x2050, 0x2050)// SCAN on M1B #endif - AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE("duart68681", mc68681_device, read, write ) + map(0x2070, 0x207f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); - AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x20B0, 0x20B0) AM_READ(m1_meter_r) + map(0x2090, 0x2091).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x20B0, 0x20B0).r(this, FUNC(maygay1b_state::m1_meter_r)); - AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_device, write) - AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_device, read) + map(0x20A0, 0x20A3).w("pia", FUNC(pia6821_device::write)); + map(0x20A0, 0x20A3).r("pia", FUNC(pia6821_device::read)); - AM_RANGE(0x20C0, 0x20C7) AM_DEVWRITE("mainlatch", hc259_device, write_d0) + map(0x20C0, 0x20C7).w("mainlatch", FUNC(hc259_device::write_d0)); - AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x2404, 0x2405) AM_READ(latch_st_lo) - AM_RANGE(0x2406, 0x2407) AM_READ(latch_st_hi) + map(0x2400, 0x2401).w("ymsnd", FUNC(ym2413_device::write)); + map(0x2404, 0x2405).r(this, FUNC(maygay1b_state::latch_st_lo)); + map(0x2406, 0x2407).r(this, FUNC(maygay1b_state::latch_st_hi)); - AM_RANGE(0x2410, 0x2410) AM_READ(m1_firq_clr_r) + map(0x2410, 0x2410).r(this, FUNC(maygay1b_state::m1_firq_clr_r)); - AM_RANGE(0x2412, 0x2412) AM_READ(m1_firq_trg_r) // firq, sample playback? + map(0x2412, 0x2412).r(this, FUNC(maygay1b_state::m1_firq_trg_r)); // firq, sample playback? - AM_RANGE(0x2420, 0x2421) AM_WRITE(latch_ch2_w ) // oki + map(0x2420, 0x2421).w(this, FUNC(maygay1b_state::latch_ch2_w)); // oki - AM_RANGE(0x2800, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1") /* 64k paged ROM (4 pages) */ + map(0x2800, 0xdfff).rom(); + map(0xe000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */ -ADDRESS_MAP_END +} @@ -561,50 +562,51 @@ WRITE8_MEMBER(maygay1b_state::nec_bank1_w) m_upd7759->start_w(1); } -ADDRESS_MAP_START(maygay1b_state::m1_nec_memmap) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") +void maygay1b_state::m1_nec_memmap(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); - AM_RANGE(0x2000, 0x2000) AM_WRITE(reel12_w) - AM_RANGE(0x2010, 0x2010) AM_WRITE(reel34_w) - AM_RANGE(0x2020, 0x2020) AM_WRITE(reel56_w) + map(0x2000, 0x2000).w(this, FUNC(maygay1b_state::reel12_w)); + map(0x2010, 0x2010).w(this, FUNC(maygay1b_state::reel34_w)); + map(0x2020, 0x2020).w(this, FUNC(maygay1b_state::reel56_w)); // there is actually an 8279 and an 8051 (which I guess is the MCU?). - AM_RANGE(0x2030, 0x2031) AM_DEVREADWRITE("i8279", i8279_device, read, write) + map(0x2030, 0x2031).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); #ifdef USE_MCU //8051 - AM_RANGE(0x2040, 0x2040) AM_WRITE( main_to_mcu_0_w ) - AM_RANGE(0x2041, 0x2041) AM_WRITE( main_to_mcu_1_w ) + map(0x2040, 0x2040).w(this, FUNC(maygay1b_state::main_to_mcu_0_w)); + map(0x2041, 0x2041).w(this, FUNC(maygay1b_state::main_to_mcu_1_w)); #else //8051 - AM_RANGE(0x2040, 0x2041) AM_DEVREADWRITE("i8279_2", i8279_device, read, write) + map(0x2040, 0x2041).rw("i8279_2", FUNC(i8279_device::read), FUNC(i8279_device::write)); // AM_RANGE(0x2050, 0x2050)// SCAN on M1B #endif - AM_RANGE(0x2070, 0x207f) AM_DEVREADWRITE("duart68681", mc68681_device, read, write ) + map(0x2070, 0x207f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); - AM_RANGE(0x2090, 0x2091) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x20B0, 0x20B0) AM_READ(m1_meter_r) + map(0x2090, 0x2091).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x20B0, 0x20B0).r(this, FUNC(maygay1b_state::m1_meter_r)); - AM_RANGE(0x20A0, 0x20A3) AM_DEVWRITE("pia", pia6821_device, write) - AM_RANGE(0x20A0, 0x20A3) AM_DEVREAD("pia", pia6821_device, read) + map(0x20A0, 0x20A3).w("pia", FUNC(pia6821_device::write)); + map(0x20A0, 0x20A3).r("pia", FUNC(pia6821_device::read)); - AM_RANGE(0x20C0, 0x20C7) AM_DEVWRITE("mainlatch", hc259_device, write_d0) + map(0x20C0, 0x20C7).w("mainlatch", FUNC(hc259_device::write_d0)); - AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x2404, 0x2405) AM_WRITE(nec_bank0_w) - AM_RANGE(0x2406, 0x2407) AM_WRITE(nec_bank1_w) + map(0x2400, 0x2401).w("ymsnd", FUNC(ym2413_device::write)); + map(0x2404, 0x2405).w(this, FUNC(maygay1b_state::nec_bank0_w)); + map(0x2406, 0x2407).w(this, FUNC(maygay1b_state::nec_bank1_w)); - AM_RANGE(0x2408, 0x2409) AM_READ(nec_reset_r) + map(0x2408, 0x2409).r(this, FUNC(maygay1b_state::nec_reset_r)); - AM_RANGE(0x240c, 0x240d) AM_READ(m1_firq_clr_r) + map(0x240c, 0x240d).r(this, FUNC(maygay1b_state::m1_firq_clr_r)); - AM_RANGE(0x240e, 0x240f) AM_READ(m1_firq_nec_r) + map(0x240e, 0x240f).r(this, FUNC(maygay1b_state::m1_firq_nec_r)); - AM_RANGE(0x2800, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank1") /* 64k paged ROM (4 pages) */ + map(0x2800, 0xdfff).rom(); + map(0xe000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */ -ADDRESS_MAP_END +} /************************************* diff --git a/src/mame/drivers/maygayep.cpp b/src/mame/drivers/maygayep.cpp index b66254022be..992a026ce77 100644 --- a/src/mame/drivers/maygayep.cpp +++ b/src/mame/drivers/maygayep.cpp @@ -58,11 +58,12 @@ public: }; // bp 29e58 in ep_simp reads the 'INITIALISE . . .' string -ADDRESS_MAP_START(maygayep_state::maygayep_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0xfe0000, 0xffffff ) AM_RAM // merln at least? -ADDRESS_MAP_END +void maygayep_state::maygayep_map(address_map &map) +{ + map.global_mask(0xffffff); + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0xfe0000, 0xffffff).ram(); // merln at least? +} static INPUT_PORTS_START( maygayep ) INPUT_PORTS_END diff --git a/src/mame/drivers/maygaysw.cpp b/src/mame/drivers/maygaysw.cpp index 3ca68e2b38f..bb311f47325 100644 --- a/src/mame/drivers/maygaysw.cpp +++ b/src/mame/drivers/maygaysw.cpp @@ -115,12 +115,13 @@ public: -ADDRESS_MAP_START(maygayew_state::maygayew_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("mainrom",0) - AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("mainrom",0) - AM_RANGE(0x200000, 0x23ffff) AM_ROM AM_REGION("mainrom",0) - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void maygayew_state::maygayew_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("mainrom", 0); + map(0x100000, 0x13ffff).rom().region("mainrom", 0); + map(0x200000, 0x23ffff).rom().region("mainrom", 0); + map(0xff0000, 0xffffff).ram(); +} static INPUT_PORTS_START( maygayew ) diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp index 19e607477de..3971a5bf3a7 100644 --- a/src/mame/drivers/maygayv1.cpp +++ b/src/mame/drivers/maygayv1.cpp @@ -555,20 +555,21 @@ WRITE16_MEMBER(maygayv1_state::vsync_int_ctrl) m_maincpu->set_input_line(3, CLEAR_LINE); } -ADDRESS_MAP_START(maygayv1_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("maincpu", 0x80000) - AM_RANGE(0x820000, 0x820001) AM_DEVREADWRITE8("i8279", i8279_device, data_r, data_w ,0xff) - AM_RANGE(0x820002, 0x820003) AM_DEVREADWRITE8("i8279", i8279_device, status_r, cmd_w,0xff) - AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) - AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd) - AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl) - AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w) - AM_RANGE(0x8a0000, 0x8a001f) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff) - AM_RANGE(0x8c0000, 0x8c000f) AM_DEVREAD8("pia", pia6821_device, read, 0x00ff) - AM_RANGE(0x8c0000, 0x8c000f) AM_DEVWRITE8("pia", pia6821_device, write, 0xff00) -ADDRESS_MAP_END +void maygayv1_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x083fff).ram().share("nvram"); + map(0x100000, 0x17ffff).rom().region("maincpu", 0x80000); + map(0x820001, 0x820001).rw("i8279", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0x820003, 0x820003).rw("i8279", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); + map(0x800000, 0x800003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00); + map(0x860000, 0x86000d).rw(this, FUNC(maygayv1_state::read_odd), FUNC(maygayv1_state::write_odd)); + map(0x86000e, 0x86000f).w(this, FUNC(maygayv1_state::vsync_int_ctrl)); + map(0x880000, 0x89ffff).rw(this, FUNC(maygayv1_state::i82716_r), FUNC(maygayv1_state::i82716_w)); + map(0x8a0000, 0x8a001f).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x8c0000, 0x8c000f).r("pia", FUNC(pia6821_device::read)).umask16(0x00ff); + map(0x8c0000, 0x8c000f).w("pia", FUNC(pia6821_device::write)).umask16(0xff00); +} /************************************* @@ -647,17 +648,20 @@ WRITE8_MEMBER(maygayv1_state::mcu_w) } -ADDRESS_MAP_START(maygayv1_state::sound_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void maygayv1_state::sound_prg(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} -ADDRESS_MAP_START(maygayv1_state::sound_data) - AM_RANGE(0x0000, 0x1ff) AM_RAM // nothing? -ADDRESS_MAP_END +void maygayv1_state::sound_data(address_map &map) +{ + map(0x0000, 0x1ff).ram(); // nothing? +} -ADDRESS_MAP_START(maygayv1_state::sound_io) - AM_RANGE(0x00, 0xff) AM_READWRITE(mcu_r, mcu_w) -ADDRESS_MAP_END +void maygayv1_state::sound_io(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(maygayv1_state::mcu_r), FUNC(maygayv1_state::mcu_w)); +} /************************************* diff --git a/src/mame/drivers/mazerbla.cpp b/src/mame/drivers/mazerbla.cpp index 139e083c44d..d440e38a07c 100644 --- a/src/mame/drivers/mazerbla.cpp +++ b/src/mame/drivers/mazerbla.cpp @@ -453,59 +453,65 @@ WRITE8_MEMBER(mazerbla_state::sound_int_clear_w) * *************************************/ -ADDRESS_MAP_START(mazerbla_state::mazerbla_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::mazerbla_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w) - AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) // AM_READ from protection pal, if populated - AM_RANGE(0x62, 0x62) AM_READ(zpu_inputs_r) +void mazerbla_state::mazerbla_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().share("share1"); + map(0xd800, 0xd800).r(this, FUNC(mazerbla_state::cfb_zpu_int_req_clr)); + map(0xe000, 0xefff).ram().share("nvram"); +} + +void mazerbla_state::mazerbla_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x4c, 0x4f).rw(this, FUNC(mazerbla_state::ls670_1_r), FUNC(mazerbla_state::ls670_0_w)); + map(0x60, 0x60).w(this, FUNC(mazerbla_state::zpu_bcd_decoder_w)); // AM_READ from protection pal, if populated + map(0x62, 0x62).r(this, FUNC(mazerbla_state::zpu_inputs_r)); // 64 is some sort of output latch, unpopulated? // 66 is some sort of output latch, unpopulated? - AM_RANGE(0x68, 0x68) AM_WRITE(zpu_coin_counter_w) - AM_RANGE(0x6a, 0x6a) AM_WRITE(zpu_lamps_w) + map(0x68, 0x68).w(this, FUNC(mazerbla_state::zpu_coin_counter_w)); + map(0x6a, 0x6a).w(this, FUNC(mazerbla_state::zpu_lamps_w)); // 6c RW is a 6850 acia for communication with another cabinet or debug console? unpopulated? - AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM /* main RAM (stack) */ - AM_RANGE(0x8000, 0x83ff) AM_RAM /* waveform ???*/ - AM_RANGE(0xc000, 0xc003) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w) - AM_RANGE(0x40, 0x41) AM_WRITENOP - AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu3_map) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* GFX roms */ - AM_RANGE(0x4000, 0x4003) AM_DEVWRITE("vcu", mb_vcu_device, write_vregs) - AM_RANGE(0x6000, 0x67ff) AM_DEVREADWRITE("vcu", mb_vcu_device, read_ram, write_ram) - AM_RANGE(0xa000, 0xa7ff) AM_DEVREAD("vcu", mb_vcu_device, load_params) - AM_RANGE(0xc000, 0xdfff) AM_DEVREAD("vcu", mb_vcu_device, load_gfx) - AM_RANGE(0xe000, 0xffff) AM_DEVREAD("vcu", mb_vcu_device, load_set_clr) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::mazerbla_cpu3_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("vcu", mb_vcu_device, background_color_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("vcu", mb_vcu_device, status_r) AM_WRITE(cfb_led_w) - AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w) - AM_RANGE(0x05, 0x05) AM_DEVWRITE("vcu", mb_vcu_device, vbank_w) -ADDRESS_MAP_END + map(0x6e, 0x6f).w(this, FUNC(mazerbla_state::zpu_led_w)); +} + +void mazerbla_state::mazerbla_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); /* main RAM (stack) */ + map(0x8000, 0x83ff).ram(); /* waveform ???*/ + map(0xc000, 0xc003).nopw(); +} + +void mazerbla_state::mazerbla_cpu2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(mazerbla_state::vsb_ls273_audio_control_w)); + map(0x40, 0x41).nopw(); + map(0x80, 0x83).rw(this, FUNC(mazerbla_state::ls670_0_r), FUNC(mazerbla_state::ls670_1_w)); +} + +void mazerbla_state::mazerbla_cpu3_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0x3800, 0x3fff).ram().share("share1"); + map(0x4000, 0x5fff).bankr("bank1"); /* GFX roms */ + map(0x4000, 0x4003).w(m_vcu, FUNC(mb_vcu_device::write_vregs)); + map(0x6000, 0x67ff).rw(m_vcu, FUNC(mb_vcu_device::read_ram), FUNC(mb_vcu_device::write_ram)); + map(0xa000, 0xa7ff).r(m_vcu, FUNC(mb_vcu_device::load_params)); + map(0xc000, 0xdfff).r(m_vcu, FUNC(mb_vcu_device::load_gfx)); + map(0xe000, 0xffff).r(m_vcu, FUNC(mb_vcu_device::load_set_clr)); +} + +void mazerbla_state::mazerbla_cpu3_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).w(m_vcu, FUNC(mb_vcu_device::background_color_w)); + map(0x02, 0x02).r(m_vcu, FUNC(mb_vcu_device::status_r)).w(this, FUNC(mazerbla_state::cfb_led_w)); + map(0x03, 0x03).w(this, FUNC(mazerbla_state::cfb_zpu_int_req_set_w)); + map(0x04, 0x04).w(this, FUNC(mazerbla_state::cfb_rom_bank_sel_w)); + map(0x05, 0x05).w(m_vcu, FUNC(mb_vcu_device::vbank_w)); +} /************************************* @@ -514,31 +520,34 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mazerbla_state::greatgun_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x4c, 0x4c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) - AM_RANGE(0x62, 0x62) AM_READ(zpu_inputs_r) - AM_RANGE(0x66, 0x66) AM_WRITENOP - AM_RANGE(0x68, 0x68) AM_WRITENOP - AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::greatgun_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(sound_int_clear_w) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mazerbla_state::greatgun_cpu3_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_IMPORT_FROM( mazerbla_cpu3_io_map ) - AM_RANGE(0x05, 0x05) AM_DEVWRITE("vcu", mb_vcu_device, vbank_clear_w) -ADDRESS_MAP_END +void mazerbla_state::greatgun_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x4c, 0x4c).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x60, 0x60).w(this, FUNC(mazerbla_state::zpu_bcd_decoder_w)); + map(0x62, 0x62).r(this, FUNC(mazerbla_state::zpu_inputs_r)); + map(0x66, 0x66).nopw(); + map(0x68, 0x68).nopw(); + map(0x6e, 0x6f).w(this, FUNC(mazerbla_state::zpu_led_w)); +} + +void mazerbla_state::greatgun_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).r("ay1", FUNC(ay8910_device::data_r)); + map(0x4000, 0x4001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8000, 0x8000).w(this, FUNC(mazerbla_state::sound_int_clear_w)); + map(0xa000, 0xa000).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} + +void mazerbla_state::greatgun_cpu3_io_map(address_map &map) +{ + map.global_mask(0xff); + mazerbla_cpu3_io_map(map); + map(0x05, 0x05).w(m_vcu, FUNC(mb_vcu_device::vbank_clear_w)); +} /************************************* diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp index c063f46b2e7..1bf923a8834 100644 --- a/src/mame/drivers/mbc200.cpp +++ b/src/mame/drivers/mbc200.cpp @@ -104,11 +104,12 @@ private: }; -ADDRESS_MAP_START(mbc200_state::mbc200_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_RAM AM_REGION("maincpu", 0) - AM_RANGE( 0x1000, 0xffff ) AM_RAM -ADDRESS_MAP_END +void mbc200_state::mbc200_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).ram().region("maincpu", 0); + map(0x1000, 0xffff).ram(); +} WRITE8_MEMBER( mbc200_state::p1_portc_w ) { @@ -143,26 +144,28 @@ WRITE8_MEMBER( mbc200_state::pm_portb_w ) m_beep->set_state(BIT(data, 1)); // key-click } -ADDRESS_MAP_START(mbc200_state::mbc200_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void mbc200_state::mbc200_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); //AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) //AM_RANGE(0xe1, 0xe1) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0xe0, 0xe1) AM_READ(keyboard_r) AM_WRITENOP - AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("fdc", mb8876_device, read, write) - AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("ppi_m", i8255_device, read, write) - AM_RANGE(0xec, 0xec) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0xed, 0xed) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) -ADDRESS_MAP_END + map(0xe0, 0xe1).r(this, FUNC(mbc200_state::keyboard_r)).nopw(); + map(0xe4, 0xe7).rw(m_fdc, FUNC(mb8876_device::read), FUNC(mb8876_device::write)); + map(0xe8, 0xeb).rw(m_ppi_m, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xec, 0xec).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xed, 0xed).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} -ADDRESS_MAP_START(mbc200_state::mbc200_sub_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x2fff ) AM_ROM - AM_RANGE( 0x3000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END +void mbc200_state::mbc200_sub_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x7fff).ram(); + map(0x8000, 0xffff).ram().share("vram"); +} READ8_MEMBER(mbc200_state::p2_porta_r) { @@ -173,14 +176,15 @@ READ8_MEMBER(mbc200_state::p2_porta_r) return tmp; } -ADDRESS_MAP_START(mbc200_state::mbc200_sub_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi_1", i8255_device, read, write) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0xb1, 0xb1) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("ppi_2", i8255_device, read, write) -ADDRESS_MAP_END +void mbc200_state::mbc200_sub_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x70, 0x73).rw("ppi_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb0, 0xb0).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xb1, 0xb1).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xd0, 0xd3).rw("ppi_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input ports */ static INPUT_PORTS_START( mbc200 ) diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp index da8898f9339..590021b1d7d 100644 --- a/src/mame/drivers/mbc55x.cpp +++ b/src/mame/drivers/mbc55x.cpp @@ -36,40 +36,42 @@ const unsigned char mbc55x_palette[SCREEN_NO_COLOURS][3] = }; -ADDRESS_MAP_START(mbc55x_state::mbc55x_mem) - AM_RANGE( 0x00000, 0x0FFFF ) AM_RAMBANK(RAM_BANK00_TAG) - AM_RANGE( 0x10000, 0x1FFFF ) AM_RAMBANK(RAM_BANK01_TAG) - AM_RANGE( 0x20000, 0x2FFFF ) AM_RAMBANK(RAM_BANK02_TAG) - AM_RANGE( 0x30000, 0x3FFFF ) AM_RAMBANK(RAM_BANK03_TAG) - AM_RANGE( 0x40000, 0x4FFFF ) AM_RAMBANK(RAM_BANK04_TAG) - AM_RANGE( 0x50000, 0x5FFFF ) AM_RAMBANK(RAM_BANK05_TAG) - AM_RANGE( 0x60000, 0x6FFFF ) AM_RAMBANK(RAM_BANK06_TAG) - AM_RANGE( 0x70000, 0x7FFFF ) AM_RAMBANK(RAM_BANK07_TAG) - AM_RANGE( 0x80000, 0x8FFFF ) AM_RAMBANK(RAM_BANK08_TAG) - AM_RANGE( 0x90000, 0x9FFFF ) AM_RAMBANK(RAM_BANK09_TAG) - AM_RANGE( 0xA0000, 0xAFFFF ) AM_RAMBANK(RAM_BANK0A_TAG) - AM_RANGE( 0xB0000, 0xBFFFF ) AM_RAMBANK(RAM_BANK0B_TAG) - AM_RANGE( 0xC0000, 0xCFFFF ) AM_RAMBANK(RAM_BANK0C_TAG) - AM_RANGE( 0xD0000, 0xDFFFF ) AM_RAMBANK(RAM_BANK0D_TAG) - AM_RANGE( 0xE0000, 0xEFFFF ) AM_RAMBANK(RAM_BANK0E_TAG) - AM_RANGE( 0xF0000, 0xF3FFF ) AM_RAMBANK(RED_PLANE_TAG) - AM_RANGE( 0xF4000, 0xF7FFF ) AM_RAMBANK(BLUE_PLANE_TAG) - AM_RANGE( 0xF8000, 0xFBFFF ) AM_NOP - AM_RANGE( 0xFC000, 0xFDFFF ) AM_ROM AM_WRITENOP AM_REGION(MAINCPU_TAG, 0x0000) AM_MIRROR(0x002000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbc55x_state::mbc55x_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x0000, 0x0003) AM_READWRITE(mbcpic8259_r, mbcpic8259_w) - AM_RANGE( 0x0008, 0x000F) AM_READWRITE(mbc55x_disk_r, mbc55x_disk_w) - AM_RANGE( 0x0010, 0x0010) AM_READWRITE( vram_page_r, vram_page_w) - AM_RANGE( 0x0018, 0x001F) AM_READWRITE( ppi8255_r, ppi8255_w) - AM_RANGE( 0x0020, 0x0027) AM_READWRITE(mbcpit8253_r, mbcpit8253_w) - AM_RANGE( 0x0028, 0x002B) AM_READWRITE( mbc55x_usart_r, mbc55x_usart_w) - AM_RANGE( 0x0030, 0x0031) AM_DEVREADWRITE(VID_MC6845_NAME, mc6845_device, status_r, address_w ) - AM_RANGE( 0x0032, 0x0033) AM_DEVREADWRITE(VID_MC6845_NAME, mc6845_device, register_r, register_w ) - AM_RANGE( 0x0038, 0x003B) AM_READWRITE(mbc55x_kb_usart_r, mbc55x_kb_usart_w) -ADDRESS_MAP_END +void mbc55x_state::mbc55x_mem(address_map &map) +{ + map(0x00000, 0x0FFFF).bankrw(RAM_BANK00_TAG); + map(0x10000, 0x1FFFF).bankrw(RAM_BANK01_TAG); + map(0x20000, 0x2FFFF).bankrw(RAM_BANK02_TAG); + map(0x30000, 0x3FFFF).bankrw(RAM_BANK03_TAG); + map(0x40000, 0x4FFFF).bankrw(RAM_BANK04_TAG); + map(0x50000, 0x5FFFF).bankrw(RAM_BANK05_TAG); + map(0x60000, 0x6FFFF).bankrw(RAM_BANK06_TAG); + map(0x70000, 0x7FFFF).bankrw(RAM_BANK07_TAG); + map(0x80000, 0x8FFFF).bankrw(RAM_BANK08_TAG); + map(0x90000, 0x9FFFF).bankrw(RAM_BANK09_TAG); + map(0xA0000, 0xAFFFF).bankrw(RAM_BANK0A_TAG); + map(0xB0000, 0xBFFFF).bankrw(RAM_BANK0B_TAG); + map(0xC0000, 0xCFFFF).bankrw(RAM_BANK0C_TAG); + map(0xD0000, 0xDFFFF).bankrw(RAM_BANK0D_TAG); + map(0xE0000, 0xEFFFF).bankrw(RAM_BANK0E_TAG); + map(0xF0000, 0xF3FFF).bankrw(RED_PLANE_TAG); + map(0xF4000, 0xF7FFF).bankrw(BLUE_PLANE_TAG); + map(0xF8000, 0xFBFFF).noprw(); + map(0xFC000, 0xFDFFF).rom().nopw().region(MAINCPU_TAG, 0x0000).mirror(0x002000); +} + +void mbc55x_state::mbc55x_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0003).rw(this, FUNC(mbc55x_state::mbcpic8259_r), FUNC(mbc55x_state::mbcpic8259_w)); + map(0x0008, 0x000F).rw(this, FUNC(mbc55x_state::mbc55x_disk_r), FUNC(mbc55x_state::mbc55x_disk_w)); + map(0x0010, 0x0010).rw(this, FUNC(mbc55x_state::vram_page_r), FUNC(mbc55x_state::vram_page_w)); + map(0x0018, 0x001F).rw(this, FUNC(mbc55x_state::ppi8255_r), FUNC(mbc55x_state::ppi8255_w)); + map(0x0020, 0x0027).rw(this, FUNC(mbc55x_state::mbcpit8253_r), FUNC(mbc55x_state::mbcpit8253_w)); + map(0x0028, 0x002B).rw(this, FUNC(mbc55x_state::mbc55x_usart_r), FUNC(mbc55x_state::mbc55x_usart_w)); + map(0x0030, 0x0031).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x0032, 0x0033).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0038, 0x003B).rw(this, FUNC(mbc55x_state::mbc55x_kb_usart_r), FUNC(mbc55x_state::mbc55x_kb_usart_w)); +} static INPUT_PORTS_START( mbc55x ) PORT_START("KEY0") /* Key row 0 scancodes 00..07 */ diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp index da1b332031b..c8bd762ed01 100644 --- a/src/mame/drivers/mbee.cpp +++ b/src/mame/drivers/mbee.cpp @@ -136,197 +136,212 @@ from Brett Selwood and Andrew Davies. ********************************************************************************/ -ADDRESS_MAP_START(mbee_state::mbee_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeeic_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak") - AM_RANGE(0xe000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeepc_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak") - AM_RANGE(0xe000, 0xefff) AM_ROMBANK("telcom") - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeeppc_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("basic") - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak") - AM_RANGE(0xe000, 0xefff) AM_ROMBANK("telcom") - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbee56_mem) - AM_RANGE(0x0000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbee256_mem) - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") - AM_RANGE(0x2000, 0x2fff) AM_READ_BANK("bankr2") AM_WRITE_BANK("bankw2") - AM_RANGE(0x3000, 0x3fff) AM_READ_BANK("bankr3") AM_WRITE_BANK("bankw3") - AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bankr4") AM_WRITE_BANK("bankw4") - AM_RANGE(0x5000, 0x5fff) AM_READ_BANK("bankr5") AM_WRITE_BANK("bankw5") - AM_RANGE(0x6000, 0x6fff) AM_READ_BANK("bankr6") AM_WRITE_BANK("bankw6") - AM_RANGE(0x7000, 0x7fff) AM_READ_BANK("bankr7") AM_WRITE_BANK("bankw7") - AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bankr8") AM_WRITE_BANK("bankw8") - AM_RANGE(0x9000, 0x9fff) AM_READ_BANK("bankr9") AM_WRITE_BANK("bankw9") - AM_RANGE(0xa000, 0xafff) AM_READ_BANK("bankr10") AM_WRITE_BANK("bankw10") - AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bankr11") AM_WRITE_BANK("bankw11") - AM_RANGE(0xc000, 0xcfff) AM_READ_BANK("bankr12") AM_WRITE_BANK("bankw12") - AM_RANGE(0xd000, 0xdfff) AM_READ_BANK("bankr13") AM_WRITE_BANK("bankw13") - AM_RANGE(0xe000, 0xefff) AM_READ_BANK("bankr14") AM_WRITE_BANK("bankw14") - AM_RANGE(0xf000, 0xffff) AM_READ_BANK("bankr15") AM_WRITE_BANK("bankw15") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeett_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("pak") - AM_RANGE(0xe000, 0xefff) AM_ROMBANK("telcom") - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(video_low_r, video_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(video_high_r, video_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbee_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_WRITE(port0b_w) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeeic_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x08, 0x08) AM_MIRROR(0x10) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x09, 0x09) AM_WRITENOP /* Listed as "Colour Wait Off" or "USART 2651" but doesn't appear in the schematics */ - AM_RANGE(0x0a, 0x0a) AM_MIRROR(0x10) AM_WRITE(port0a_w) - AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_WRITE(port0b_w) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeepc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff10) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff10) AM_WRITE(port0b_w) - AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff10) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) - AM_RANGE(0x000a, 0x000a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_low_r, port0a_w) - AM_RANGE(0x010a, 0x010a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_high_r, port0a_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeeppc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff10) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff10) AM_WRITE(port0b_w) - AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff10) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) - AM_RANGE(0x001c, 0x001c) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w) - AM_RANGE(0x000a, 0x000a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_low_r, port0a_w) - AM_RANGE(0x010a, 0x010a) AM_MIRROR(0xfe10) AM_READWRITE(telcom_high_r, port0a_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbeett_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0004, 0x0004) AM_MIRROR(0xff00) AM_WRITE(port04_w) - AM_RANGE(0x0006, 0x0006) AM_MIRROR(0xff00) AM_WRITE(port06_w) - AM_RANGE(0x0007, 0x0007) AM_MIRROR(0xff00) AM_READ(port07_r) - AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff00) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff00) AM_WRITE(port0b_w) - AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) - AM_RANGE(0x0018, 0x001b) AM_MIRROR(0xff00) AM_READ(port18_r) - AM_RANGE(0x001c, 0x001f) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w) - AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xfe00) AM_READ(speed_low_r) - AM_RANGE(0x0109, 0x0109) AM_MIRROR(0xfe00) AM_READ(speed_high_r) - AM_RANGE(0x000a, 0x000a) AM_MIRROR(0xfe00) AM_READWRITE(telcom_low_r, port0a_w) - AM_RANGE(0x010a, 0x010a) AM_MIRROR(0xfe00) AM_READWRITE(telcom_high_r, port0a_w) - AM_RANGE(0x0068, 0x006f) AM_MIRROR(0xff00) AM_DEVREADWRITE("scc", scc8530_t, reg_r, reg_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbee56_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x08, 0x08) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x09, 0x09) AM_WRITENOP - AM_RANGE(0x0b, 0x0b) AM_WRITE(port0b_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x0d, 0x0d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_device, read, write) - AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbee128_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x04, 0x04) AM_WRITE(port04_w) - AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) - AM_RANGE(0x07, 0x07) AM_READ(port07_r) - AM_RANGE(0x08, 0x08) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x09, 0x09) AM_WRITENOP - AM_RANGE(0x0b, 0x0b) AM_WRITE(port0b_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x0d, 0x0d) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) - AM_RANGE(0x1c, 0x1f) AM_READWRITE(port1c_r, port1c_w) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_device, read, write) - AM_RANGE(0x48, 0x4f) AM_READWRITE(fdc_status_r, fdc_motor_w) - AM_RANGE(0x50, 0x57) AM_WRITE(mbee128_50_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mbee_state::mbee256_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0003) AM_MIRROR(0xff00) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0004, 0x0004) AM_MIRROR(0xff00) AM_WRITE(port04_w) - AM_RANGE(0x0006, 0x0006) AM_MIRROR(0xff00) AM_WRITE(port06_w) - AM_RANGE(0x0007, 0x0007) AM_MIRROR(0xff00) AM_READ(port07_r) - AM_RANGE(0x0008, 0x0008) AM_MIRROR(0xff00) AM_READWRITE(port08_r, port08_w) - AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xfd00) AM_READ(speed_low_r) - AM_RANGE(0x0209, 0x0209) AM_MIRROR(0xfd00) AM_READ(speed_high_r) - AM_RANGE(0x0009, 0x0009) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x000b, 0x000b) AM_MIRROR(0xff00) AM_WRITE(port0b_w) - AM_RANGE(0x000c, 0x000c) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(m6545_index_w) - AM_RANGE(0x000d, 0x000d) AM_MIRROR(0xff00) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(m6545_data_w) +void mbee_state::mbee_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xefff).rom(); + map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w)); +} + +void mbee_state::mbeeic_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xdfff).bankr("pak"); + map(0xe000, 0xefff).rom(); + map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w)); +} + +void mbee_state::mbeepc_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xdfff).bankr("pak"); + map(0xe000, 0xefff).bankr("telcom"); + map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w)); +} + +void mbee_state::mbeeppc_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0x9fff).bankr("basic"); + map(0xa000, 0xbfff).rom(); + map(0xc000, 0xdfff).bankr("pak"); + map(0xe000, 0xefff).bankr("telcom"); + map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w)); +} + +void mbee_state::mbee56_mem(address_map &map) +{ + map(0x0000, 0xdfff).ram(); + map(0xe000, 0xefff).rom(); + map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w)); +} + +void mbee_state::mbee256_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0x1fff).bankr("bankr1").bankw("bankw1"); + map(0x2000, 0x2fff).bankr("bankr2").bankw("bankw2"); + map(0x3000, 0x3fff).bankr("bankr3").bankw("bankw3"); + map(0x4000, 0x4fff).bankr("bankr4").bankw("bankw4"); + map(0x5000, 0x5fff).bankr("bankr5").bankw("bankw5"); + map(0x6000, 0x6fff).bankr("bankr6").bankw("bankw6"); + map(0x7000, 0x7fff).bankr("bankr7").bankw("bankw7"); + map(0x8000, 0x8fff).bankr("bankr8").bankw("bankw8"); + map(0x9000, 0x9fff).bankr("bankr9").bankw("bankw9"); + map(0xa000, 0xafff).bankr("bankr10").bankw("bankw10"); + map(0xb000, 0xbfff).bankr("bankr11").bankw("bankw11"); + map(0xc000, 0xcfff).bankr("bankr12").bankw("bankw12"); + map(0xd000, 0xdfff).bankr("bankr13").bankw("bankw13"); + map(0xe000, 0xefff).bankr("bankr14").bankw("bankw14"); + map(0xf000, 0xffff).bankr("bankr15").bankw("bankw15"); +} + +void mbee_state::mbeett_mem(address_map &map) +{ + map(0x0000, 0x7fff).ram(); + map(0x8000, 0x9fff).rom(); + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xdfff).bankr("pak"); + map(0xe000, 0xefff).bankr("telcom"); + map(0xf000, 0xf7ff).rw(this, FUNC(mbee_state::video_low_r), FUNC(mbee_state::video_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(mbee_state::video_high_r), FUNC(mbee_state::video_high_w)); +} + +void mbee_state::mbee_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).mirror(0x10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0b, 0x0b).mirror(0x10).w(this, FUNC(mbee_state::port0b_w)); + map(0x0c, 0x0c).mirror(0x10).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x0d, 0x0d).mirror(0x10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); +} + +void mbee_state::mbeeic_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).mirror(0x10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x08, 0x08).mirror(0x10).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x09, 0x09).nopw(); /* Listed as "Colour Wait Off" or "USART 2651" but doesn't appear in the schematics */ + map(0x0a, 0x0a).mirror(0x10).w(this, FUNC(mbee_state::port0a_w)); + map(0x0b, 0x0b).mirror(0x10).w(this, FUNC(mbee_state::port0b_w)); + map(0x0c, 0x0c).mirror(0x10).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x0d, 0x0d).mirror(0x10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); +} + +void mbee_state::mbeepc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0003).mirror(0xff10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0008, 0x0008).mirror(0xff10).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x0009, 0x0009).mirror(0xff00).nopw(); + map(0x000b, 0x000b).mirror(0xff10).w(this, FUNC(mbee_state::port0b_w)); + map(0x000c, 0x000c).mirror(0xff10).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x000d, 0x000d).mirror(0xff10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); + map(0x000a, 0x000a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_low_r), FUNC(mbee_state::port0a_w)); + map(0x010a, 0x010a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_high_r), FUNC(mbee_state::port0a_w)); +} + +void mbee_state::mbeeppc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0003).mirror(0xff10).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0008, 0x0008).mirror(0xff10).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x0009, 0x0009).mirror(0xff00).nopw(); + map(0x000b, 0x000b).mirror(0xff10).w(this, FUNC(mbee_state::port0b_w)); + map(0x000c, 0x000c).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x000d, 0x000d).mirror(0xff10).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); + map(0x001c, 0x001c).mirror(0xff00).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w)); + map(0x000a, 0x000a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_low_r), FUNC(mbee_state::port0a_w)); + map(0x010a, 0x010a).mirror(0xfe10).rw(this, FUNC(mbee_state::telcom_high_r), FUNC(mbee_state::port0a_w)); +} + +void mbee_state::mbeett_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0003).mirror(0xff00).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0004, 0x0004).mirror(0xff00).w(this, FUNC(mbee_state::port04_w)); + map(0x0006, 0x0006).mirror(0xff00).w(this, FUNC(mbee_state::port06_w)); + map(0x0007, 0x0007).mirror(0xff00).r(this, FUNC(mbee_state::port07_r)); + map(0x0008, 0x0008).mirror(0xff00).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x000b, 0x000b).mirror(0xff00).w(this, FUNC(mbee_state::port0b_w)); + map(0x000c, 0x000c).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x000d, 0x000d).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); + map(0x0018, 0x001b).mirror(0xff00).r(this, FUNC(mbee_state::port18_r)); + map(0x001c, 0x001f).mirror(0xff00).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w)); + map(0x0009, 0x0009).mirror(0xfe00).r(this, FUNC(mbee_state::speed_low_r)); + map(0x0109, 0x0109).mirror(0xfe00).r(this, FUNC(mbee_state::speed_high_r)); + map(0x000a, 0x000a).mirror(0xfe00).rw(this, FUNC(mbee_state::telcom_low_r), FUNC(mbee_state::port0a_w)); + map(0x010a, 0x010a).mirror(0xfe00).rw(this, FUNC(mbee_state::telcom_high_r), FUNC(mbee_state::port0a_w)); + map(0x0068, 0x006f).mirror(0xff00).rw("scc", FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w)); +} + +void mbee_state::mbee56_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x08, 0x08).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x09, 0x09).nopw(); + map(0x0b, 0x0b).w(this, FUNC(mbee_state::port0b_w)); + map(0x0c, 0x0c).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x0d, 0x0d).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); + map(0x44, 0x47).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); + map(0x48, 0x4f).rw(this, FUNC(mbee_state::fdc_status_r), FUNC(mbee_state::fdc_motor_w)); +} + +void mbee_state::mbee128_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x04, 0x04).w(this, FUNC(mbee_state::port04_w)); + map(0x06, 0x06).w(this, FUNC(mbee_state::port06_w)); + map(0x07, 0x07).r(this, FUNC(mbee_state::port07_r)); + map(0x08, 0x08).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x09, 0x09).nopw(); + map(0x0b, 0x0b).w(this, FUNC(mbee_state::port0b_w)); + map(0x0c, 0x0c).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x0d, 0x0d).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); + map(0x1c, 0x1f).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w)); + map(0x44, 0x47).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); + map(0x48, 0x4f).rw(this, FUNC(mbee_state::fdc_status_r), FUNC(mbee_state::fdc_motor_w)); + map(0x50, 0x57).w(this, FUNC(mbee_state::mbee128_50_w)); +} + +void mbee_state::mbee256_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0003).mirror(0xff00).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0004, 0x0004).mirror(0xff00).w(this, FUNC(mbee_state::port04_w)); + map(0x0006, 0x0006).mirror(0xff00).w(this, FUNC(mbee_state::port06_w)); + map(0x0007, 0x0007).mirror(0xff00).r(this, FUNC(mbee_state::port07_r)); + map(0x0008, 0x0008).mirror(0xff00).rw(this, FUNC(mbee_state::port08_r), FUNC(mbee_state::port08_w)); + map(0x0009, 0x0009).mirror(0xfd00).r(this, FUNC(mbee_state::speed_low_r)); + map(0x0209, 0x0209).mirror(0xfd00).r(this, FUNC(mbee_state::speed_high_r)); + map(0x0009, 0x0009).mirror(0xff00).nopw(); + map(0x000b, 0x000b).mirror(0xff00).w(this, FUNC(mbee_state::port0b_w)); + map(0x000c, 0x000c).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(mbee_state::m6545_index_w)); + map(0x000d, 0x000d).mirror(0xff00).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(mbee_state::m6545_data_w)); // AM_RANGE(0x0010, 0x0013) AM_MIRROR(0xff00) Optional SN76489AN audio chip - AM_RANGE(0x0018, 0x001b) AM_MIRROR(0xff00) AM_READ(port18_r) - AM_RANGE(0x001c, 0x001f) AM_MIRROR(0xff00) AM_READWRITE(port1c_r, port1c_w) - AM_RANGE(0x0044, 0x0047) AM_MIRROR(0xff00) AM_DEVREADWRITE("fdc", wd2793_device, read, write) - AM_RANGE(0x0048, 0x004f) AM_MIRROR(0xff00) AM_READWRITE(fdc_status_r, fdc_motor_w) - AM_RANGE(0x0050, 0x0057) AM_MIRROR(0xff00) AM_WRITE(mbee256_50_w) + map(0x0018, 0x001b).mirror(0xff00).r(this, FUNC(mbee_state::port18_r)); + map(0x001c, 0x001f).mirror(0xff00).rw(this, FUNC(mbee_state::port1c_r), FUNC(mbee_state::port1c_w)); + map(0x0044, 0x0047).mirror(0xff00).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); + map(0x0048, 0x004f).mirror(0xff00).rw(this, FUNC(mbee_state::fdc_status_r), FUNC(mbee_state::fdc_motor_w)); + map(0x0050, 0x0057).mirror(0xff00).w(this, FUNC(mbee_state::mbee256_50_w)); // AM_RANGE(0x0058, 0x005f) AM_MIRROR(0xff00) External options: floppy drive, hard drive and keyboard // AM_RANGE(0x0060, 0x0067) AM_MIRROR(0xff00) Reserved for file server selection (unused) // AM_RANGE(0x0068, 0x006f) AM_MIRROR(0xff00) Reserved for 8530 SCC (unused) -ADDRESS_MAP_END +} static INPUT_PORTS_START( oldkb ) PORT_START("X.0") /* IN0 KEY ROW 0 [000] */ diff --git a/src/mame/drivers/mc10.cpp b/src/mame/drivers/mc10.cpp index d0edc145c26..d8dbf426ccd 100644 --- a/src/mame/drivers/mc10.cpp +++ b/src/mame/drivers/mc10.cpp @@ -295,37 +295,41 @@ void mc10_state::driver_start() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(mc10_state::mc10_mem) - AM_RANGE(0x0100, 0x3fff) AM_NOP /* unused */ - AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank1") /* 4k internal ram */ - AM_RANGE(0x5000, 0x8fff) AM_RAMBANK("bank2") /* 16k memory expansion */ - AM_RANGE(0x9000, 0xbffe) AM_NOP /* unused */ - AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(mc10_bfff_r, mc10_bfff_w) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc10_state::mc10_io) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(mc10_port1_r, mc10_port1_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(mc10_port2_r, mc10_port2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc10_state::alice32_mem) - AM_RANGE(0x0100, 0x2fff) AM_NOP /* unused */ - AM_RANGE(0x3000, 0x4fff) AM_RAMBANK("bank1") /* 8k internal ram */ - AM_RANGE(0x5000, 0x8fff) AM_RAMBANK("bank2") /* 16k memory expansion */ - AM_RANGE(0x9000, 0xafff) AM_NOP /* unused */ - AM_RANGE(0xbf20, 0xbf29) AM_DEVREADWRITE("ef9345", ef9345_device, data_r, data_w) - AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(mc10_bfff_r, alice32_bfff_w) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc10_state::alice90_mem) - AM_RANGE(0x0100, 0x2fff) AM_NOP /* unused */ - AM_RANGE(0x3000, 0xafff) AM_RAMBANK("bank1") /* 32k internal ram */ - AM_RANGE(0xbf20, 0xbf29) AM_DEVREADWRITE("ef9345", ef9345_device, data_r, data_w) - AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(alice90_bfff_r, alice32_bfff_w) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) /* ROM */ -ADDRESS_MAP_END +void mc10_state::mc10_mem(address_map &map) +{ + map(0x0100, 0x3fff).noprw(); /* unused */ + map(0x4000, 0x4fff).bankrw("bank1"); /* 4k internal ram */ + map(0x5000, 0x8fff).bankrw("bank2"); /* 16k memory expansion */ + map(0x9000, 0xbffe).noprw(); /* unused */ + map(0xbfff, 0xbfff).rw(this, FUNC(mc10_state::mc10_bfff_r), FUNC(mc10_state::mc10_bfff_w)); + map(0xe000, 0xffff).rom().region("maincpu", 0x0000); /* ROM */ +} + +void mc10_state::mc10_io(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).rw(this, FUNC(mc10_state::mc10_port1_r), FUNC(mc10_state::mc10_port1_w)); + map(M6801_PORT2, M6801_PORT2).rw(this, FUNC(mc10_state::mc10_port2_r), FUNC(mc10_state::mc10_port2_w)); +} + +void mc10_state::alice32_mem(address_map &map) +{ + map(0x0100, 0x2fff).noprw(); /* unused */ + map(0x3000, 0x4fff).bankrw("bank1"); /* 8k internal ram */ + map(0x5000, 0x8fff).bankrw("bank2"); /* 16k memory expansion */ + map(0x9000, 0xafff).noprw(); /* unused */ + map(0xbf20, 0xbf29).rw(m_ef9345, FUNC(ef9345_device::data_r), FUNC(ef9345_device::data_w)); + map(0xbfff, 0xbfff).rw(this, FUNC(mc10_state::mc10_bfff_r), FUNC(mc10_state::alice32_bfff_w)); + map(0xc000, 0xffff).rom().region("maincpu", 0x0000); /* ROM */ +} + +void mc10_state::alice90_mem(address_map &map) +{ + map(0x0100, 0x2fff).noprw(); /* unused */ + map(0x3000, 0xafff).bankrw("bank1"); /* 32k internal ram */ + map(0xbf20, 0xbf29).rw(m_ef9345, FUNC(ef9345_device::data_r), FUNC(ef9345_device::data_w)); + map(0xbfff, 0xbfff).rw(this, FUNC(mc10_state::alice90_bfff_r), FUNC(mc10_state::alice32_bfff_w)); + map(0xc000, 0xffff).rom().region("maincpu", 0x0000); /* ROM */ +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/mc1000.cpp b/src/mame/drivers/mc1000.cpp index 4dc228508de..a87a8d379f6 100644 --- a/src/mame/drivers/mc1000.cpp +++ b/src/mame/drivers/mc1000.cpp @@ -232,38 +232,41 @@ WRITE8_MEMBER( mc1000_state::mc6847_attr_w ) /* Memory Maps */ -ADDRESS_MAP_START(mc1000_state::mc1000_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0x2000, 0x27ff) AM_RAMBANK("bank2") AM_SHARE("mc6845_vram") - AM_RANGE(0x2800, 0x3fff) AM_RAM AM_SHARE("ram2800") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank3") - AM_RANGE(0x8000, 0x97ff) AM_RAMBANK("bank4") AM_SHARE("mc6847_vram") - AM_RANGE(0x9800, 0xbfff) AM_RAMBANK("bank5") - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(Z80_TAG, 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc1000_state::mc1000_banking_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0x2000, 0x27ff) AM_RAMBANK("bank2") AM_SHARE("mc6845_vram") - AM_RANGE(0x2800, 0x3fff) AM_RAM AM_SHARE("ram2800") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank3") - AM_RANGE(0x8000, 0x97ff) AM_RAMBANK("bank4") AM_SHARE("mc6847_vram") - AM_RANGE(0x9800, 0xbfff) AM_RAMBANK("bank5") - AM_RANGE(0xc000, 0xffff) AM_READ(rom_banking_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc1000_state::mc1000_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x04) AM_READWRITE(printer_r, printer_w) - AM_RANGE(0x05, 0x05) AM_DEVWRITE("cent_data_out", output_latch_device, write) +void mc1000_state::mc1000_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x27ff).bankrw("bank2").share("mc6845_vram"); + map(0x2800, 0x3fff).ram().share("ram2800"); + map(0x4000, 0x7fff).bankrw("bank3"); + map(0x8000, 0x97ff).bankrw("bank4").share("mc6847_vram"); + map(0x9800, 0xbfff).bankrw("bank5"); + map(0xc000, 0xffff).rom().region(Z80_TAG, 0); +} + +void mc1000_state::mc1000_banking_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x27ff).bankrw("bank2").share("mc6845_vram"); + map(0x2800, 0x3fff).ram().share("ram2800"); + map(0x4000, 0x7fff).bankrw("bank3"); + map(0x8000, 0x97ff).bankrw("bank4").share("mc6847_vram"); + map(0x9800, 0xbfff).bankrw("bank5"); + map(0xc000, 0xffff).r(this, FUNC(mc1000_state::rom_banking_r)); +} + +void mc1000_state::mc1000_io(address_map &map) +{ + map.global_mask(0xff); + map(0x04, 0x04).rw(this, FUNC(mc1000_state::printer_r), FUNC(mc1000_state::printer_w)); + map(0x05, 0x05).w("cent_data_out", FUNC(output_latch_device::write)); // AM_RANGE(0x10, 0x10) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) // AM_RANGE(0x11, 0x11) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w) - AM_RANGE(0x12, 0x12) AM_WRITE(mc6845_ctrl_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w) - AM_RANGE(0x40, 0x40) AM_DEVREAD(AY8910_TAG, ay8910_device, data_r) - AM_RANGE(0x60, 0x60) AM_DEVWRITE(AY8910_TAG, ay8910_device, data_w) - AM_RANGE(0x80, 0x80) AM_WRITE(mc6847_attr_w) -ADDRESS_MAP_END + map(0x12, 0x12).w(this, FUNC(mc1000_state::mc6845_ctrl_w)); + map(0x20, 0x20).w(AY8910_TAG, FUNC(ay8910_device::address_w)); + map(0x40, 0x40).r(AY8910_TAG, FUNC(ay8910_device::data_r)); + map(0x60, 0x60).w(AY8910_TAG, FUNC(ay8910_device::data_w)); + map(0x80, 0x80).w(this, FUNC(mc1000_state::mc6847_attr_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp index 6940be9ed91..44835cfcd57 100644 --- a/src/mame/drivers/mc1502.cpp +++ b/src/mame/drivers/mc1502.cpp @@ -217,19 +217,21 @@ MACHINE_RESET_MEMBER(mc1502_state, mc1502) * macros */ -ADDRESS_MAP_START(mc1502_state::mc1502_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc1502_state::mc1502_io) - AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x0028, 0x0028) AM_DEVREADWRITE("upd8251", i8251_device, data_r, data_w) - AM_RANGE(0x0029, 0x0029) AM_DEVREADWRITE("upd8251", i8251_device, status_r, control_w) - AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255n1", i8255_device, read, write) - AM_RANGE(0x0068, 0x006B) AM_DEVREADWRITE("ppi8255n2", i8255_device, read, write) // keyboard poll -ADDRESS_MAP_END +void mc1502_state::mc1502_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void mc1502_state::mc1502_io(address_map &map) +{ + map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0028, 0x0028).rw(m_upd8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0029, 0x0029).rw(m_upd8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x0060, 0x0063).rw(m_ppi8255n1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0068, 0x006B).rw(m_ppi8255n2, FUNC(i8255_device::read), FUNC(i8255_device::write)); // keyboard poll +} static INPUT_PORTS_START( mc1502 ) PORT_INCLUDE( mc7007_3_keyboard ) diff --git a/src/mame/drivers/mc8020.cpp b/src/mame/drivers/mc8020.cpp index 089305b2335..bac308f21e6 100644 --- a/src/mame/drivers/mc8020.cpp +++ b/src/mame/drivers/mc8020.cpp @@ -48,20 +48,22 @@ private: required_ioport_array<7> m_keyboard; }; -ADDRESS_MAP_START(mc8020_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("videoram")// 1KB RAM ZRE - AM_RANGE(0x2000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc8020_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END +void mc8020_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0fff).ram().share("videoram");// 1KB RAM ZRE + map(0x2000, 0x5fff).rom(); + map(0x6000, 0xffff).ram(); +} + +void mc8020_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf0, 0xf3).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0xf4, 0xf7).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} /* Input ports */ diff --git a/src/mame/drivers/mc8030.cpp b/src/mame/drivers/mc8030.cpp index c3fdfbe6a42..c1485b82d95 100644 --- a/src/mame/drivers/mc8030.cpp +++ b/src/mame/drivers/mc8030.cpp @@ -59,28 +59,30 @@ private: }; -ADDRESS_MAP_START(mc8030_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH +void mc8030_state::mem_map(address_map &map) +{ + map.unmap_value_high(); // ZRE 4 * 2KB - AM_RANGE(0x0000, 0x1fff) AM_ROM // ZRE ROM's 4 * 2716 - AM_RANGE(0x2000, 0x27ff) AM_ROM // SPE ROM's 2 * 2708 - AM_RANGE(0x2800, 0x3fff) AM_ROM // For extension - AM_RANGE(0x4000, 0xbfff) AM_RAM // SPE RAM - AM_RANGE(0xc000, 0xffff) AM_RAM // ZRE RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mc8030_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x30, 0x3f) AM_MIRROR(0xff00) AM_NOP //"mass storage" - AM_RANGE(0x80, 0x83) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_ctc", z80ctc_device, read, write) // user CTC - AM_RANGE(0x84, 0x87) AM_MIRROR(0xff00) AM_DEVREADWRITE("zve_pio", z80pio_device, read, write) // PIO unknown usage - AM_RANGE(0x88, 0x8f) AM_MIRROR(0xff00) AM_WRITE(zve_write_protect_w) - AM_RANGE(0xc0, 0xcf) AM_SELECT(0xff00) AM_WRITE(vis_w) - AM_RANGE(0xd0, 0xd3) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_sio", z80sio_device, ba_cd_r, ba_cd_w) // keyboard & IFSS? - AM_RANGE(0xd4, 0xd7) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_ctc", z80ctc_device, read, write) // sio bauds, KMBG? and kbd - AM_RANGE(0xd8, 0xdb) AM_MIRROR(0xff00) AM_DEVREADWRITE("asp_pio", z80pio_device, read, write) // external bus - AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(eprom_prog_w) -ADDRESS_MAP_END + map(0x0000, 0x1fff).rom(); // ZRE ROM's 4 * 2716 + map(0x2000, 0x27ff).rom(); // SPE ROM's 2 * 2708 + map(0x2800, 0x3fff).rom(); // For extension + map(0x4000, 0xbfff).ram(); // SPE RAM + map(0xc000, 0xffff).ram(); // ZRE RAM +} + +void mc8030_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x30, 0x3f).mirror(0xff00).noprw(); //"mass storage" + map(0x80, 0x83).mirror(0xff00).rw("zve_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // user CTC + map(0x84, 0x87).mirror(0xff00).rw("zve_pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // PIO unknown usage + map(0x88, 0x8f).mirror(0xff00).w(this, FUNC(mc8030_state::zve_write_protect_w)); + map(0xc0, 0xcf).select(0xff00).w(this, FUNC(mc8030_state::vis_w)); + map(0xd0, 0xd3).mirror(0xff00).rw("asp_sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); // keyboard & IFSS? + map(0xd4, 0xd7).mirror(0xff00).rw("asp_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // sio bauds, KMBG? and kbd + map(0xd8, 0xdb).mirror(0xff00).rw("asp_pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // external bus + map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(mc8030_state::eprom_prog_w)); +} /* Input ports */ static INPUT_PORTS_START( mc8030 ) diff --git a/src/mame/drivers/mcatadv.cpp b/src/mame/drivers/mcatadv.cpp index 6fe64f73259..9283ac03ed5 100644 --- a/src/mame/drivers/mcatadv.cpp +++ b/src/mame/drivers/mcatadv.cpp @@ -177,37 +177,38 @@ WRITE16_MEMBER(mcatadv_state::vram_w) } -ADDRESS_MAP_START(mcatadv_state::mcatadv_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM +void mcatadv_state::mcatadv_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); // AM_RANGE(0x180018, 0x18001f) AM_READNOP // ? - AM_RANGE(0x200000, 0x200005) AM_RAM AM_SHARE("scroll1") - AM_RANGE(0x300000, 0x300005) AM_RAM AM_SHARE("scroll2") + map(0x200000, 0x200005).ram().share("scroll1"); + map(0x300000, 0x300005).ram().share("scroll2"); - AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_1") // Tilemap 0 - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_2") // Tilemap 1 + map(0x400000, 0x401fff).ram().w(this, FUNC(mcatadv_state::vram_w<0>)).share("vram_1"); // Tilemap 0 + map(0x500000, 0x501fff).ram().w(this, FUNC(mcatadv_state::vram_w<1>)).share("vram_2"); // Tilemap 1 - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x602000, 0x602fff) AM_RAM // Bigger than needs to be? + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x602000, 0x602fff).ram(); // Bigger than needs to be? - AM_RANGE(0x700000, 0x707fff) AM_RAM AM_SHARE("spriteram") // Sprites, two halves for double buffering - AM_RANGE(0x708000, 0x70ffff) AM_RAM // Tests more than is needed? + map(0x700000, 0x707fff).ram().share("spriteram"); // Sprites, two halves for double buffering + map(0x708000, 0x70ffff).ram(); // Tests more than is needed? - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("P2") + map(0x800000, 0x800001).portr("P1"); + map(0x800002, 0x800003).portr("P2"); // AM_RANGE(0x900000, 0x900001) AM_WRITE(mcat_coin_w) // Lockout / Counter MCAT Only - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("DSW1") - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW2") + map(0xa00000, 0xa00001).portr("DSW1"); + map(0xa00002, 0xa00003).portr("DSW2"); - AM_RANGE(0xb00000, 0xb0000f) AM_RAM AM_SHARE("vidregs") + map(0xb00000, 0xb0000f).ram().share("vidregs"); - AM_RANGE(0xb00018, 0xb00019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // NOST Only - AM_RANGE(0xb0001e, 0xb0001f) AM_READ(mcat_wd_r) // MCAT Only - AM_RANGE(0xc00000, 0xc00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16) -ADDRESS_MAP_END + map(0xb00018, 0xb00019).w(m_watchdog, FUNC(watchdog_timer_device::reset16_w)); // NOST Only + map(0xb0001e, 0xb0001f).r(this, FUNC(mcatadv_state::mcat_wd_r)); // MCAT Only + map(0xc00001, 0xc00001).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0xc00000, 0xc00001).w("soundlatch", FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16); +} /*** Sound ***/ @@ -217,33 +218,37 @@ WRITE8_MEMBER(mcatadv_state::mcatadv_sound_bw_w) } -ADDRESS_MAP_START(mcatadv_state::mcatadv_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM // ROM - AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("soundbank") // ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_WRITE(mcatadv_sound_bw_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mcatadv_state::mcatadv_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mcatadv_state::nost_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") // ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mcatadv_state::nost_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVWRITE("ymsnd", ym2610_device, write) - AM_RANGE(0x04, 0x07) AM_DEVREAD("ymsnd", ym2610_device, read) - AM_RANGE(0x40, 0x40) AM_WRITE(mcatadv_sound_bw_w) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void mcatadv_state::mcatadv_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // ROM + map(0x4000, 0xbfff).bankr("soundbank"); // ROM + map(0xc000, 0xdfff).ram(); // RAM + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xf000, 0xf000).w(this, FUNC(mcatadv_state::mcatadv_sound_bw_w)); +} + +void mcatadv_state::mcatadv_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} + + +void mcatadv_state::nost_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("soundbank"); // ROM + map(0xc000, 0xdfff).ram(); // RAM +} + +void mcatadv_state::nost_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).w("ymsnd", FUNC(ym2610_device::write)); + map(0x04, 0x07).r("ymsnd", FUNC(ym2610_device::read)); + map(0x40, 0x40).w(this, FUNC(mcatadv_state::mcatadv_sound_bw_w)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} /*** Inputs ***/ diff --git a/src/mame/drivers/mcb216.cpp b/src/mame/drivers/mcb216.cpp index b79bdb37227..2d05c052965 100644 --- a/src/mame/drivers/mcb216.cpp +++ b/src/mame/drivers/mcb216.cpp @@ -70,29 +70,32 @@ READ8_MEMBER(mcb216_state::tms5501_status_r) return bitswap<8>(m_tms5501->sta_r(space, 0), 4, 3, 5, 4, 3, 2, 1, 0); } -ADDRESS_MAP_START(mcb216_state::mcb216_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x2400, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mcb216_state::mcb216_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void mcb216_state::mcb216_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("roms", 0); + map(0x2000, 0x23ff).ram(); + map(0x2400, 0xffff).ram(); +} + +void mcb216_state::mcb216_io(address_map &map) +{ + map.global_mask(0xff); // 74904 PROM provides custom remapping for TMS5501 registers - AM_RANGE(0x00, 0x00) AM_READ(tms5501_status_r) AM_DEVWRITE("tms5501", tms5501_device, rr_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("tms5501", tms5501_device, rb_r, tb_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("tms5501", tms5501_device, cmd_w) - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("tms5501", tms5501_device, rst_r, mr_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("tms5501", tms5501_device, xi_r, xo_w) - AM_RANGE(0x05, 0x09) AM_DEVWRITE("tms5501", tms5501_device, tmr_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mcb216_state::cb308_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END + map(0x00, 0x00).r(this, FUNC(mcb216_state::tms5501_status_r)).w(m_tms5501, FUNC(tms5501_device::rr_w)); + map(0x01, 0x01).rw(m_tms5501, FUNC(tms5501_device::rb_r), FUNC(tms5501_device::tb_w)); + map(0x02, 0x02).w(m_tms5501, FUNC(tms5501_device::cmd_w)); + map(0x03, 0x03).rw(m_tms5501, FUNC(tms5501_device::rst_r), FUNC(tms5501_device::mr_w)); + map(0x04, 0x04).rw(m_tms5501, FUNC(tms5501_device::xi_r), FUNC(tms5501_device::xo_w)); + map(0x05, 0x09).w(m_tms5501, FUNC(tms5501_device::tmr_w)); +} + +void mcb216_state::cb308_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram(); + map(0xe000, 0xefff).rom().region("roms", 0); +} /* Input ports */ diff --git a/src/mame/drivers/mccpm.cpp b/src/mame/drivers/mccpm.cpp index 830b0d147b9..bc63043ae06 100644 --- a/src/mame/drivers/mccpm.cpp +++ b/src/mame/drivers/mccpm.cpp @@ -53,17 +53,19 @@ private: }; -ADDRESS_MAP_START(mccpm_state::mccpm_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mccpm_state::mccpm_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt) // init bytes look like those for a Z80PIO -ADDRESS_MAP_END +void mccpm_state::mccpm_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).ram().share("ram"); +} + +void mccpm_state::mccpm_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf0, 0xf3).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0xf4, 0xf7).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); // init bytes look like those for a Z80PIO +} /* Input ports */ static INPUT_PORTS_START( mccpm ) diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp index e933ac97d50..a5ce52fddfe 100644 --- a/src/mame/drivers/mcr.cpp +++ b/src/mame/drivers/mcr.cpp @@ -691,25 +691,27 @@ WRITE8_MEMBER(mcr_state::demoderb_op4_w) *************************************/ /* address map verified from schematics */ -ADDRESS_MAP_START(mcr_state::cpu_90009_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf1ff) AM_MIRROR(0x0200) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf400, 0xf41f) AM_MIRROR(0x03e0) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf800, 0xf81f) AM_MIRROR(0x03e0) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(mcr_90009_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void mcr_state::cpu_90009_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x77ff).mirror(0x0800).ram().share("nvram"); + map(0xf000, 0xf1ff).mirror(0x0200).ram().share("spriteram"); + map(0xf400, 0xf41f).mirror(0x03e0).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf800, 0xf81f).mirror(0x03e0).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xfc00, 0xffff).ram().w(this, FUNC(mcr_state::mcr_90009_videoram_w)).share("videoram"); +} /* upper I/O map determined by PAL; only SSIO ports are verified from schematics */ -ADDRESS_MAP_START(mcr_state::cpu_90009_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - SSIO_INPUT_PORTS("ssio") - AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void mcr_state::cpu_90009_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + m_ssio->ssio_input_ports(map, "ssio"); + map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe8, 0xe8).nopw(); + map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} @@ -720,23 +722,25 @@ ADDRESS_MAP_END *************************************/ /* address map verified from schematics */ -ADDRESS_MAP_START(mcr_state::cpu_90010_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xe1ff) AM_MIRROR(0x1600) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe800, 0xefff) AM_MIRROR(0x1000) AM_RAM_WRITE(mcr_90010_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void mcr_state::cpu_90010_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).mirror(0x1800).ram().share("nvram"); + map(0xe000, 0xe1ff).mirror(0x1600).ram().share("spriteram"); + map(0xe800, 0xefff).mirror(0x1000).ram().w(this, FUNC(mcr_state::mcr_90010_videoram_w)).share("videoram"); +} /* upper I/O map determined by PAL; only SSIO ports are verified from schematics */ -ADDRESS_MAP_START(mcr_state::cpu_90010_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - SSIO_INPUT_PORTS("ssio") - AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void mcr_state::cpu_90010_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + m_ssio->ssio_input_ports(map, "ssio"); + map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe8, 0xe8).nopw(); + map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} @@ -747,24 +751,26 @@ ADDRESS_MAP_END *************************************/ /* address map verified from schematics */ -ADDRESS_MAP_START(mcr_state::cpu_91490_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe800, 0xe9ff) AM_MIRROR(0x0200) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr_91490_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf800, 0xf87f) AM_MIRROR(0x0780) AM_WRITE(mcr_paletteram9_w) AM_SHARE("paletteram") -ADDRESS_MAP_END +void mcr_state::cpu_91490_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xe800, 0xe9ff).mirror(0x0200).ram().share("spriteram"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(mcr_state::mcr_91490_videoram_w)).share("videoram"); + map(0xf800, 0xf87f).mirror(0x0780).w(this, FUNC(mcr_state::mcr_paletteram9_w)).share("paletteram"); +} /* upper I/O map determined by PAL; only SSIO ports are verified from schematics */ -ADDRESS_MAP_START(mcr_state::cpu_91490_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - SSIO_INPUT_PORTS("ssio") - AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void mcr_state::cpu_91490_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + m_ssio->ssio_input_ports(map, "ssio"); + map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe8, 0xe8).nopw(); + map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} @@ -775,23 +781,25 @@ ADDRESS_MAP_END *************************************/ /* address map verified from schematics */ -ADDRESS_MAP_START(mcr_nflfoot_state::ipu_91695_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void mcr_nflfoot_state::ipu_91695_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0xe000, 0xffff).ram(); +} /* I/O verified from schematics */ -ADDRESS_MAP_START(mcr_nflfoot_state::ipu_91695_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio0", z80pio_device, read, write) - AM_RANGE(0x04, 0x07) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_sio", z80dart_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x08, 0x0b) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_ctc", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_pio1", z80pio_device, read, write) - AM_RANGE(0x10, 0x13) AM_MIRROR(0xe0) AM_WRITE(ipu_laserdisk_w) - AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xe0) AM_READWRITE(ipu_watchdog_r, ipu_watchdog_w) -ADDRESS_MAP_END +void mcr_nflfoot_state::ipu_91695_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0xe0).rw(m_ipu_pio0, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x04, 0x07).mirror(0xe0).rw(m_ipu_sio, FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); + map(0x08, 0x0b).mirror(0xe0).rw(m_ipu_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).mirror(0xe0).rw(m_ipu_pio1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x10, 0x13).mirror(0xe0).w(this, FUNC(mcr_nflfoot_state::ipu_laserdisk_w)); + map(0x1c, 0x1f).mirror(0xe0).rw(this, FUNC(mcr_nflfoot_state::ipu_watchdog_r), FUNC(mcr_nflfoot_state::ipu_watchdog_w)); +} diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp index 7595a0454fd..07e8ea0b1b3 100644 --- a/src/mame/drivers/mcr3.cpp +++ b/src/mame/drivers/mcr3.cpp @@ -481,30 +481,32 @@ READ8_MEMBER(mcr3_state::turbotag_kludge_r) *************************************/ /* address map verified from schematics */ -ADDRESS_MAP_START(mcr3_state::mcrmono_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xea00, 0xebff) AM_RAM - AM_RANGE(0xec00, 0xec7f) AM_MIRROR(0x0380) AM_WRITE(mcr_paletteram9_w) AM_SHARE("paletteram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(mcr3_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf800, 0xffff) AM_ROM /* schematics show a 2716 @ 2B here, but nobody used it */ -ADDRESS_MAP_END +void mcr3_state::mcrmono_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xe800, 0xe9ff).ram().share("spriteram"); + map(0xea00, 0xebff).ram(); + map(0xec00, 0xec7f).mirror(0x0380).w(this, FUNC(mcr3_state::mcr_paletteram9_w)).share("paletteram"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(mcr3_state::mcr3_videoram_w)).share("videoram"); + map(0xf800, 0xffff).rom(); /* schematics show a 2716 @ 2B here, but nobody used it */ +} /* I/O map verified from schematics */ -ADDRESS_MAP_START(mcr3_state::mcrmono_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP3") - AM_RANGE(0x04, 0x04) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP4") - AM_RANGE(0x05, 0x05) AM_MIRROR(0x78) AM_WRITE(mcrmono_control_port_w) - AM_RANGE(0x07, 0x07) AM_MIRROR(0x78) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xf0, 0xf3) AM_MIRROR(0x0c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void mcr3_state::mcrmono_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x78).portr("MONO.IP0"); + map(0x01, 0x01).mirror(0x78).portr("MONO.IP1"); + map(0x02, 0x02).mirror(0x78).portr("MONO.IP2"); + map(0x03, 0x03).mirror(0x78).portr("MONO.IP3"); + map(0x04, 0x04).mirror(0x78).portr("MONO.IP4"); + map(0x05, 0x05).mirror(0x78).w(this, FUNC(mcr3_state::mcrmono_control_port_w)); + map(0x07, 0x07).mirror(0x78).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xf0, 0xf3).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} @@ -515,26 +517,28 @@ ADDRESS_MAP_END *************************************/ /* address map verified from schematics */ -ADDRESS_MAP_START(mcr3_state::spyhunt_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xebff) AM_MIRROR(0x0400) AM_RAM_WRITE(spyhunt_alpharam_w) AM_SHARE("spyhunt_alpha") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfa00, 0xfa7f) AM_MIRROR(0x0180) AM_WRITE(mcr_paletteram9_w) AM_SHARE("paletteram") -ADDRESS_MAP_END +void mcr3_state::spyhunt_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(mcr3_state::spyhunt_videoram_w)).share("videoram"); + map(0xe800, 0xebff).mirror(0x0400).ram().w(this, FUNC(mcr3_state::spyhunt_alpharam_w)).share("spyhunt_alpha"); + map(0xf000, 0xf7ff).ram().share("nvram"); + map(0xf800, 0xf9ff).ram().share("spriteram"); + map(0xfa00, 0xfa7f).mirror(0x0180).w(this, FUNC(mcr3_state::mcr_paletteram9_w)).share("paletteram"); +} /* upper I/O map determined by PAL; only SSIO ports and scroll registers are verified from schematics */ -ADDRESS_MAP_START(mcr3_state::spyhunt_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - SSIO_INPUT_PORTS("ssio") - AM_RANGE(0x84, 0x86) AM_WRITE(spyhunt_scroll_value_w) - AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void mcr3_state::spyhunt_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + m_ssio->ssio_input_ports(map, "ssio"); + map(0x84, 0x86).w(this, FUNC(mcr3_state::spyhunt_scroll_value_w)); + map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe8, 0xe8).nopw(); + map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /************************************* diff --git a/src/mame/drivers/mcr68.cpp b/src/mame/drivers/mcr68.cpp index c0a07a7f7d6..8f7f7af2384 100644 --- a/src/mame/drivers/mcr68.cpp +++ b/src/mame/drivers/mcr68.cpp @@ -273,21 +273,22 @@ READ16_MEMBER(mcr68_state::trisport_port_1_r) * *************************************/ -ADDRESS_MAP_START(mcr68_state::mcr68_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(mcr68_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x071000, 0x071fff) AM_RAM - AM_RANGE(0x080000, 0x080fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x090000, 0x09007f) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a000f) AM_DEVREADWRITE8("ptm", ptm6840_device, read, write, 0xff00) - AM_RANGE(0x0b0000, 0x0bffff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0d0000, 0x0dffff) AM_READ_PORT("IN0") - AM_RANGE(0x0e0000, 0x0effff) AM_READ_PORT("IN1") - AM_RANGE(0x0f0000, 0x0fffff) AM_READ_PORT("DSW") -ADDRESS_MAP_END +void mcr68_state::mcr68_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fffff); + map(0x000000, 0x03ffff).rom(); + map(0x060000, 0x063fff).ram(); + map(0x070000, 0x070fff).ram().w(this, FUNC(mcr68_state::mcr68_videoram_w)).share("videoram"); + map(0x071000, 0x071fff).ram(); + map(0x080000, 0x080fff).ram().share("spriteram"); + map(0x090000, 0x09007f).w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0a0000, 0x0a000f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0xff00); + map(0x0b0000, 0x0bffff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0d0000, 0x0dffff).portr("IN0"); + map(0x0e0000, 0x0effff).portr("IN1"); + map(0x0f0000, 0x0fffff).portr("DSW"); +} @@ -297,22 +298,23 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mcr68_state::pigskin_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_READ(pigskin_port_1_r) - AM_RANGE(0x0a0000, 0x0affff) AM_READ(pigskin_port_2_r) - AM_RANGE(0x0c0000, 0x0c007f) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0e0000, 0x0effff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(mcr68_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x120000, 0x120001) AM_READWRITE(pigskin_protection_r, pigskin_protection_w) - AM_RANGE(0x140000, 0x143fff) AM_RAM - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("ptm", ptm6840_device, read, write, 0xff00) - AM_RANGE(0x1a0000, 0x1affff) AM_WRITE(archrivl_control_w) - AM_RANGE(0x1e0000, 0x1effff) AM_READ_PORT("IN0") -ADDRESS_MAP_END +void mcr68_state::pigskin_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fffff); + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x08ffff).r(this, FUNC(mcr68_state::pigskin_port_1_r)); + map(0x0a0000, 0x0affff).r(this, FUNC(mcr68_state::pigskin_port_2_r)); + map(0x0c0000, 0x0c007f).w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0e0000, 0x0effff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x100000, 0x100fff).ram().w(this, FUNC(mcr68_state::mcr68_videoram_w)).share("videoram"); + map(0x120000, 0x120001).rw(this, FUNC(mcr68_state::pigskin_protection_r), FUNC(mcr68_state::pigskin_protection_w)); + map(0x140000, 0x143fff).ram(); + map(0x160000, 0x1607ff).ram().share("spriteram"); + map(0x180000, 0x18000f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0xff00); + map(0x1a0000, 0x1affff).w(this, FUNC(mcr68_state::archrivl_control_w)); + map(0x1e0000, 0x1effff).portr("IN0"); +} @@ -322,21 +324,22 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mcr68_state::trisport_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_READ(trisport_port_1_r) - AM_RANGE(0x0a0000, 0x0affff) AM_READ_PORT("DSW") - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x120000, 0x12007f) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(mcr68_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("ptm", ptm6840_device, read, write, 0xff00) - AM_RANGE(0x1a0000, 0x1affff) AM_WRITE(archrivl_control_w) - AM_RANGE(0x1c0000, 0x1cffff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x1e0000, 0x1effff) AM_READ_PORT("IN0") -ADDRESS_MAP_END +void mcr68_state::trisport_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fffff); + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x08ffff).r(this, FUNC(mcr68_state::trisport_port_1_r)); + map(0x0a0000, 0x0affff).portr("DSW"); + map(0x100000, 0x103fff).ram().share("nvram"); + map(0x120000, 0x12007f).w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x1407ff).ram().share("spriteram"); + map(0x160000, 0x160fff).ram().w(this, FUNC(mcr68_state::mcr68_videoram_w)).share("videoram"); + map(0x180000, 0x18000f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0xff00); + map(0x1a0000, 0x1affff).w(this, FUNC(mcr68_state::archrivl_control_w)); + map(0x1c0000, 0x1cffff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x1e0000, 0x1effff).portr("IN0"); +} diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp index acf8f0ad914..2c9591502fa 100644 --- a/src/mame/drivers/meadows.cpp +++ b/src/mame/drivers/meadows.cpp @@ -323,48 +323,52 @@ INTERRUPT_GEN_MEMBER(meadows_state::audio_interrupt) * *************************************/ -ADDRESS_MAP_START(meadows_state::meadows_main_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("INPUTS") - AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("STICK") - AM_RANGE(0x0c02, 0x0c02) AM_READ(hsync_chain_r) - AM_RANGE(0x0c03, 0x0c03) AM_READ_PORT("DSW") - AM_RANGE(0x0c00, 0x0c03) AM_WRITE(meadows_audio_w) - AM_RANGE(0x0d00, 0x0d0f) AM_WRITE(meadows_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x0e00, 0x0eff) AM_RAM - AM_RANGE(0x1000, 0x1bff) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(meadows_state::bowl3d_main_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("INPUTS1") - AM_RANGE(0x0c01, 0x0c01) AM_READ_PORT("INPUTS2") - AM_RANGE(0x0c02, 0x0c02) AM_READ(hsync_chain_r) - AM_RANGE(0x0c03, 0x0c03) AM_READ_PORT("DSW") - AM_RANGE(0x0c00, 0x0c03) AM_WRITE(meadows_audio_w) - AM_RANGE(0x0d00, 0x0d0f) AM_WRITE(meadows_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x0e00, 0x0eff) AM_RAM - AM_RANGE(0x1000, 0x1bff) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(meadows_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(meadows_state::minferno_main_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1c00, 0x1eff) AM_RAM_WRITE(meadows_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1f00, 0x1f00) AM_READ_PORT("JOY1") - AM_RANGE(0x1f01, 0x1f01) AM_READ_PORT("JOY2") - AM_RANGE(0x1f02, 0x1f02) AM_READ_PORT("BUTTONS") - AM_RANGE(0x1f03, 0x1f03) AM_READ_PORT("DSW1") - AM_RANGE(0x1f00, 0x1f03) AM_WRITE(meadows_audio_w) - AM_RANGE(0x1f04, 0x1f04) AM_READ(vsync_chain_hi_r) - AM_RANGE(0x1f05, 0x1f05) AM_READ(vsync_chain_lo_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(meadows_state::minferno_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ_PORT("DSW2") -ADDRESS_MAP_END +void meadows_state::meadows_main_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0c00).portr("INPUTS"); + map(0x0c01, 0x0c01).portr("STICK"); + map(0x0c02, 0x0c02).r(this, FUNC(meadows_state::hsync_chain_r)); + map(0x0c03, 0x0c03).portr("DSW"); + map(0x0c00, 0x0c03).w(this, FUNC(meadows_state::meadows_audio_w)); + map(0x0d00, 0x0d0f).w(this, FUNC(meadows_state::meadows_spriteram_w)).share("spriteram"); + map(0x0e00, 0x0eff).ram(); + map(0x1000, 0x1bff).rom(); + map(0x1c00, 0x1fff).ram().w(this, FUNC(meadows_state::meadows_videoram_w)).share("videoram"); +} + +void meadows_state::bowl3d_main_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0c00).portr("INPUTS1"); + map(0x0c01, 0x0c01).portr("INPUTS2"); + map(0x0c02, 0x0c02).r(this, FUNC(meadows_state::hsync_chain_r)); + map(0x0c03, 0x0c03).portr("DSW"); + map(0x0c00, 0x0c03).w(this, FUNC(meadows_state::meadows_audio_w)); + map(0x0d00, 0x0d0f).w(this, FUNC(meadows_state::meadows_spriteram_w)).share("spriteram"); + map(0x0e00, 0x0eff).ram(); + map(0x1000, 0x1bff).rom(); + map(0x1c00, 0x1fff).ram().w(this, FUNC(meadows_state::meadows_videoram_w)).share("videoram"); +} + +void meadows_state::minferno_main_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x1c00, 0x1eff).ram().w(this, FUNC(meadows_state::meadows_videoram_w)).share("videoram"); + map(0x1f00, 0x1f00).portr("JOY1"); + map(0x1f01, 0x1f01).portr("JOY2"); + map(0x1f02, 0x1f02).portr("BUTTONS"); + map(0x1f03, 0x1f03).portr("DSW1"); + map(0x1f00, 0x1f03).w(this, FUNC(meadows_state::meadows_audio_w)); + map(0x1f04, 0x1f04).r(this, FUNC(meadows_state::vsync_chain_hi_r)); + map(0x1f05, 0x1f05).r(this, FUNC(meadows_state::vsync_chain_lo_r)); +} + + +void meadows_state::minferno_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).portr("DSW2"); +} @@ -374,11 +378,12 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(meadows_state::audio_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0c03) AM_READWRITE(audio_hardware_r, audio_hardware_w) - AM_RANGE(0x0e00, 0x0eff) AM_RAM -ADDRESS_MAP_END +void meadows_state::audio_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0c03).rw(this, FUNC(meadows_state::audio_hardware_r), FUNC(meadows_state::audio_hardware_w)); + map(0x0e00, 0x0eff).ram(); +} diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index b37e1a26068..b0201255005 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -749,29 +749,31 @@ WRITE32_MEMBER(mediagx_state::ad1847_w) /*****************************************************************************/ -ADDRESS_MAP_START(mediagx_state::mediagx_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x000a0000, 0x000affff) AM_RAM - AM_RANGE(0x000b0000, 0x000b7fff) AM_RAM AM_SHARE("cga_ram") - AM_RANGE(0x000c0000, 0x000fffff) AM_RAM AM_SHARE("bios_ram") - AM_RANGE(0x00100000, 0x00ffffff) AM_RAM - AM_RANGE(0x40008000, 0x400080ff) AM_READWRITE(biu_ctrl_r, biu_ctrl_w) - AM_RANGE(0x40008300, 0x400083ff) AM_READWRITE(disp_ctrl_r, disp_ctrl_w) - AM_RANGE(0x40008400, 0x400084ff) AM_READWRITE(memory_ctrl_r, memory_ctrl_w) - AM_RANGE(0x40800000, 0x40bfffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mediagx_state::mediagx_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x0020, 0x0023) AM_READWRITE8(io20_r, io20_w, 0xffff0000) - AM_RANGE(0x00e8, 0x00eb) AM_NOP // I/O delay port - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x0378, 0x037b) AM_READWRITE(parallel_port_r, parallel_port_w) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1) - AM_RANGE(0x0400, 0x04ff) AM_READWRITE(ad1847_r, ad1847_w) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END +void mediagx_state::mediagx_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram().share("main_ram"); + map(0x000a0000, 0x000affff).ram(); + map(0x000b0000, 0x000b7fff).ram().share("cga_ram"); + map(0x000c0000, 0x000fffff).ram().share("bios_ram"); + map(0x00100000, 0x00ffffff).ram(); + map(0x40008000, 0x400080ff).rw(this, FUNC(mediagx_state::biu_ctrl_r), FUNC(mediagx_state::biu_ctrl_w)); + map(0x40008300, 0x400083ff).rw(this, FUNC(mediagx_state::disp_ctrl_r), FUNC(mediagx_state::disp_ctrl_w)); + map(0x40008400, 0x400084ff).rw(this, FUNC(mediagx_state::memory_ctrl_r), FUNC(mediagx_state::memory_ctrl_w)); + map(0x40800000, 0x40bfffff).ram().share("vram"); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void mediagx_state::mediagx_io(address_map &map) +{ + pcat32_io_common(map); + map(0x0022, 0x0023).rw(this, FUNC(mediagx_state::io20_r), FUNC(mediagx_state::io20_w)); + map(0x00e8, 0x00eb).noprw(); // I/O delay port + map(0x01f0, 0x01f7).rw(m_ide, FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x0378, 0x037b).rw(this, FUNC(mediagx_state::parallel_port_r), FUNC(mediagx_state::parallel_port_w)); + map(0x03f0, 0x03f7).rw(m_ide, FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + map(0x0400, 0x04ff).rw(this, FUNC(mediagx_state::ad1847_r), FUNC(mediagx_state::ad1847_w)); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} /*****************************************************************************/ @@ -873,9 +875,10 @@ void mediagx_state::machine_reset() dmadac_enable(&m_dmadac[0], 2, 1); } -ADDRESS_MAP_START(mediagx_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void mediagx_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(mediagx_state::mediagx) diff --git a/src/mame/drivers/megadriv_acbl.cpp b/src/mame/drivers/megadriv_acbl.cpp index e50d2842408..36ce9778e82 100644 --- a/src/mame/drivers/megadriv_acbl.cpp +++ b/src/mame/drivers/megadriv_acbl.cpp @@ -264,24 +264,25 @@ connector, but of course, I can be wrong. /************************************ Megadrive Bootlegs *************************************/ // smaller ROM region because some bootlegs check for RAM there (used by topshoot and hshavoc) -ADDRESS_MAP_START(md_boot_state::md_bootleg_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* Cartridge Program Rom */ - AM_RANGE(0x200000, 0x2023ff) AM_RAM // tested +void md_boot_state::md_bootleg_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* Cartridge Program Rom */ + map(0x200000, 0x2023ff).ram(); // tested - AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram) - AM_RANGE(0xa02000, 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram) - AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff) - AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write) + map(0xa00000, 0xa01fff).rw(this, FUNC(md_boot_state::megadriv_68k_read_z80_ram), FUNC(md_boot_state::megadriv_68k_write_z80_ram)); + map(0xa02000, 0xa03fff).w(this, FUNC(md_boot_state::megadriv_68k_write_z80_ram)); + map(0xa04000, 0xa04003).rw(this, FUNC(md_boot_state::megadriv_68k_YM2612_read), FUNC(md_boot_state::megadriv_68k_YM2612_write)); + map(0xa06000, 0xa06001).w(this, FUNC(md_boot_state::megadriv_68k_z80_bank_write)); - AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(megadriv_68k_io_read, megadriv_68k_io_write) - AM_RANGE(0xa11100, 0xa11101) AM_READWRITE(megadriv_68k_check_z80_bus, megadriv_68k_req_z80_bus) - AM_RANGE(0xa11200, 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset) + map(0xa10000, 0xa1001f).rw(this, FUNC(md_boot_state::megadriv_68k_io_read), FUNC(md_boot_state::megadriv_68k_io_write)); + map(0xa11100, 0xa11101).rw(this, FUNC(md_boot_state::megadriv_68k_check_z80_bus), FUNC(md_boot_state::megadriv_68k_req_z80_bus)); + map(0xa11200, 0xa11201).w(this, FUNC(md_boot_state::megadriv_68k_req_z80_reset)); - AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) - AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) + map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); + map(0xd00000, 0xd0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram") -ADDRESS_MAP_END + map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000).share("megadrive_ram"); +} MACHINE_CONFIG_START(md_boot_state::md_bootleg) md_ntsc(config); diff --git a/src/mame/drivers/megadriv_rad.cpp b/src/mame/drivers/megadriv_rad.cpp index f6200dd212e..489015890a0 100644 --- a/src/mame/drivers/megadriv_rad.cpp +++ b/src/mame/drivers/megadriv_rad.cpp @@ -24,19 +24,20 @@ #include "includes/megadriv_rad.h" // todo, use actual MD map, easier once maps are part of base class. -ADDRESS_MAP_START(megadriv_radica_state::megadriv_radica_map) - AM_RANGE(0x000000, 0x3fffff) AM_READ(read) /* Cartridge Program Rom */ - AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram) - AM_RANGE(0xa02000, 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram) - AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff) - AM_RANGE(0xa06000, 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write) - AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(megadriv_68k_io_read, megadriv_68k_io_write) - AM_RANGE(0xa11100, 0xa11101) AM_READWRITE(megadriv_68k_check_z80_bus, megadriv_68k_req_z80_bus) - AM_RANGE(0xa11200, 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset) - AM_RANGE(0xa13000, 0xa130ff) AM_READ(read_a13) - AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram") -ADDRESS_MAP_END +void megadriv_radica_state::megadriv_radica_map(address_map &map) +{ + map(0x000000, 0x3fffff).r(this, FUNC(megadriv_radica_state::read)); /* Cartridge Program Rom */ + map(0xa00000, 0xa01fff).rw(this, FUNC(megadriv_radica_state::megadriv_68k_read_z80_ram), FUNC(megadriv_radica_state::megadriv_68k_write_z80_ram)); + map(0xa02000, 0xa03fff).w(this, FUNC(megadriv_radica_state::megadriv_68k_write_z80_ram)); + map(0xa04000, 0xa04003).rw(this, FUNC(megadriv_radica_state::megadriv_68k_YM2612_read), FUNC(megadriv_radica_state::megadriv_68k_YM2612_write)); + map(0xa06000, 0xa06001).w(this, FUNC(megadriv_radica_state::megadriv_68k_z80_bank_write)); + map(0xa10000, 0xa1001f).rw(this, FUNC(megadriv_radica_state::megadriv_68k_io_read), FUNC(megadriv_radica_state::megadriv_68k_io_write)); + map(0xa11100, 0xa11101).rw(this, FUNC(megadriv_radica_state::megadriv_68k_check_z80_bus), FUNC(megadriv_radica_state::megadriv_68k_req_z80_bus)); + map(0xa11200, 0xa11201).w(this, FUNC(megadriv_radica_state::megadriv_68k_req_z80_reset)); + map(0xa13000, 0xa130ff).r(this, FUNC(megadriv_radica_state::read_a13)); + map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); + map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000).share("megadrive_ram"); +} READ16_MEMBER(megadriv_radica_state::read) { diff --git a/src/mame/drivers/megaphx.cpp b/src/mame/drivers/megaphx.cpp index f1a14bbf21d..b18b442dacc 100644 --- a/src/mame/drivers/megaphx.cpp +++ b/src/mame/drivers/megaphx.cpp @@ -151,15 +151,16 @@ void hamboy_state::machine_reset() m_indervid->set_bpp(4); } -ADDRESS_MAP_START(megaphx_state::megaphx_68k_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("boot", 0x00000) // or the rom doesn't map here? it contains the service mode grid amongst other things.. - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram") // maps over part of the rom?? - AM_RANGE(0x040000, 0x040007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w) - AM_RANGE(0x050000, 0x050001) AM_DEVWRITE("inder_sb", inder_sb_device, megaphx_0x050000_w) - AM_RANGE(0x050002, 0x050003) AM_DEVREAD("inder_sb", inder_sb_device, megaphx_0x050002_r) - AM_RANGE(0x060000, 0x060007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0x00000) -ADDRESS_MAP_END +void megaphx_state::megaphx_68k_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("boot", 0x00000); // or the rom doesn't map here? it contains the service mode grid amongst other things.. + map(0x000000, 0x00ffff).ram().share("mainram"); // maps over part of the rom?? + map(0x040000, 0x040007).rw("inder_vid:tms", FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); + map(0x050000, 0x050001).w(m_indersb, FUNC(inder_sb_device::megaphx_0x050000_w)); + map(0x050002, 0x050003).r(m_indersb, FUNC(inder_sb_device::megaphx_0x050002_r)); + map(0x060000, 0x060007).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x800000, 0x8fffff).rom().region("data", 0x00000); +} diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp index a631a62f707..f946d08a648 100644 --- a/src/mame/drivers/megaplay.cpp +++ b/src/mame/drivers/megaplay.cpp @@ -587,17 +587,18 @@ WRITE8_MEMBER(mplay_state::game_w) logerror("BIOS bank addr = %X\n", m_bios_bank_addr); } -ADDRESS_MAP_START(mplay_state::megaplay_bios_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_WRITE(game_w) - AM_RANGE(0x6200, 0x6207) AM_DEVREADWRITE("io1", cxd1095_device, read, write) - AM_RANGE(0x6400, 0x6407) AM_DEVREADWRITE("io2", cxd1095_device, read, write) - AM_RANGE(0x6600, 0x6600) AM_READWRITE(bios_6600_r, bios_6600_w) - AM_RANGE(0x6800, 0x77ff) AM_RAM AM_SHARE("ic3_ram") - AM_RANGE(0x8000, 0xffff) AM_READWRITE(bank_r, bank_w) -ADDRESS_MAP_END +void mplay_state::megaplay_bios_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).ram(); + map(0x5000, 0x5fff).ram(); + map(0x6000, 0x6000).w(this, FUNC(mplay_state::game_w)); + map(0x6200, 0x6207).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); + map(0x6400, 0x6407).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); + map(0x6600, 0x6600).rw(this, FUNC(mplay_state::bios_6600_r), FUNC(mplay_state::bios_6600_w)); + map(0x6800, 0x77ff).ram().share("ic3_ram"); + map(0x8000, 0xffff).rw(this, FUNC(mplay_state::bank_r), FUNC(mplay_state::bank_w)); +} @@ -610,14 +611,15 @@ READ8_MEMBER(mplay_state::vdp1_count_r) return m_vdp1->vcount_read(prg, offset); } -ADDRESS_MAP_START(mplay_state::megaplay_bios_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("sn2", sn76496_device, write) +void mplay_state::megaplay_bios_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).w("sn2", FUNC(sn76496_device::write)); - AM_RANGE(0x40, 0x41) AM_MIRROR(0x3e) AM_READ(vdp1_count_r) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write) -ADDRESS_MAP_END + map(0x40, 0x41).mirror(0x3e).r(this, FUNC(mplay_state::vdp1_count_r)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); +} uint32_t mplay_state::screen_update_megplay(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) 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)); +} /************************************* diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp index 4b6f21278ac..011eb5f7a9a 100644 --- a/src/mame/drivers/megatech.cpp +++ b/src/mame/drivers/megatech.cpp @@ -522,17 +522,18 @@ WRITE8_MEMBER(mtech_state::banked_ram_w ) -ADDRESS_MAP_START(mtech_state::megatech_bios_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM // from bios rom (0x0000-0x2fff populated in ROM) - AM_RANGE(0x3000, 0x3fff) AM_READWRITE(banked_ram_r, banked_ram_w) // copies instruction data here at startup, must be banked - AM_RANGE(0x4000, 0x5fff) AM_RAM // plain ram? - AM_RANGE(0x6000, 0x6000) AM_WRITE(mt_z80_bank_w ) - AM_RANGE(0x6400, 0x6407) AM_DEVREADWRITE("io1", cxd1095_device, read, write) - AM_RANGE(0x6800, 0x6807) AM_DEVREADWRITE("io2", cxd1095_device, read, write) - AM_RANGE(0x7000, 0x77ff) AM_ROM // from bios rom (0x7000-0x77ff populated in ROM) +void mtech_state::megatech_bios_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); // from bios rom (0x0000-0x2fff populated in ROM) + map(0x3000, 0x3fff).rw(this, FUNC(mtech_state::banked_ram_r), FUNC(mtech_state::banked_ram_w)); // copies instruction data here at startup, must be banked + map(0x4000, 0x5fff).ram(); // plain ram? + map(0x6000, 0x6000).w(this, FUNC(mtech_state::mt_z80_bank_w)); + map(0x6400, 0x6407).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); + map(0x6800, 0x6807).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); + map(0x7000, 0x77ff).rom(); // from bios rom (0x7000-0x77ff populated in ROM) //AM_RANGE(0x7800, 0x7fff) AM_RAM // ? - AM_RANGE(0x8000, 0x9fff) AM_READWRITE(read_68k_banked_data, write_68k_banked_data) // window into 68k address space, reads instr rom and writes to reset banks on z80 carts? -ADDRESS_MAP_END + map(0x8000, 0x9fff).rw(this, FUNC(mtech_state::read_68k_banked_data), FUNC(mtech_state::write_68k_banked_data)); // window into 68k address space, reads instr rom and writes to reset banks on z80 carts? +} WRITE8_MEMBER(mtech_state::bios_port_ctrl_w ) @@ -576,17 +577,18 @@ READ8_MEMBER(mtech_state::vdp1_count_r) return m_vdp1->vcount_read(prg, offset); } -ADDRESS_MAP_START(mtech_state::megatech_bios_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x3f, 0x3f) AM_WRITE(bios_port_ctrl_w) - AM_RANGE(0x7f, 0x7f) AM_WRITE(bios_port_7f_w) +void mtech_state::megatech_bios_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x3f, 0x3f).w(this, FUNC(mtech_state::bios_port_ctrl_w)); + map(0x7f, 0x7f).w(this, FUNC(mtech_state::bios_port_7f_w)); - AM_RANGE(0x40, 0x41) AM_MIRROR(0x3e) AM_READ(vdp1_count_r) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write) + map(0x40, 0x41).mirror(0x3e).r(this, FUNC(mtech_state::vdp1_count_r)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp1, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); - AM_RANGE(0xdc, 0xdd) AM_READ(bios_joypad_r) // player inputs -ADDRESS_MAP_END + map(0xdc, 0xdd).r(this, FUNC(mtech_state::bios_joypad_r)); // player inputs +} diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp index 66fca566e9b..de2a064c7a0 100644 --- a/src/mame/drivers/megazone.cpp +++ b/src/mame/drivers/megazone.cpp @@ -143,49 +143,54 @@ WRITE_LINE_MEMBER(megazone_state::irq_mask_w) } -ADDRESS_MAP_START(megazone_state::megazone_map) - AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_SHARE("scrolly") - AM_RANGE(0x1800, 0x1800) AM_WRITEONLY AM_SHARE("scrollx") - AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("colorram2") - AM_RANGE(0x3000, 0x33ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x4000, 0xffff) AM_ROM /* 4000->5FFF is a debug rom */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(megazone_state::megazone_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2000) AM_WRITE(megazone_i8039_irq_w) /* START line. Interrupts 8039 */ - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* CODE line. Command Interrupts 8039 */ - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") /* IO Coin */ - AM_RANGE(0x6001, 0x6001) AM_READ_PORT("IN1") /* P1 IO */ - AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN2") /* P2 IO */ - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW2") - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW1") - AM_RANGE(0xa000, 0xa000) AM_WRITENOP /* INTMAIN - Interrupts main CPU (unused) */ - AM_RANGE(0xc000, 0xc000) AM_WRITENOP /* INT (Actually is NMI) enable/disable (unused)*/ - AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(megazone_state::megazone_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x00, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("aysnd", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(megazone_state::megazone_i8039_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(megazone_state::megazone_i8039_io_map) - AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void megazone_state::megazone_map(address_map &map) +{ + map(0x0000, 0x0007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x0800, 0x0800).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1000, 0x1000).writeonly().share("scrolly"); + map(0x1800, 0x1800).writeonly().share("scrollx"); + map(0x2000, 0x23ff).ram().share("videoram"); + map(0x2400, 0x27ff).ram().share("videoram2"); + map(0x2800, 0x2bff).ram().share("colorram"); + map(0x2c00, 0x2fff).ram().share("colorram2"); + map(0x3000, 0x33ff).ram().share("spriteram"); + map(0x3800, 0x3fff).ram().share("share1"); + map(0x4000, 0xffff).rom(); /* 4000->5FFF is a debug rom */ +} + +void megazone_state::megazone_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x2000).w(this, FUNC(megazone_state::megazone_i8039_irq_w)); /* START line. Interrupts 8039 */ + map(0x4000, 0x4000).w("soundlatch", FUNC(generic_latch_8_device::write)); /* CODE line. Command Interrupts 8039 */ + map(0x6000, 0x6000).portr("IN0"); /* IO Coin */ + map(0x6001, 0x6001).portr("IN1"); /* P1 IO */ + map(0x6002, 0x6002).portr("IN2"); /* P2 IO */ + map(0x8000, 0x8000).portr("DSW2"); + map(0x8001, 0x8001).portr("DSW1"); + map(0xa000, 0xa000).nopw(); /* INTMAIN - Interrupts main CPU (unused) */ + map(0xc000, 0xc000).nopw(); /* INT (Actually is NMI) enable/disable (unused)*/ + map(0xc001, 0xc001).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe000, 0xe7ff).ram().share("share1"); +} + +void megazone_state::megazone_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x00, 0x02).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x02).w("aysnd", FUNC(ay8910_device::data_w)); +} + +void megazone_state::megazone_i8039_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void megazone_state::megazone_i8039_io_map(address_map &map) +{ + map(0x00, 0xff).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( megazone ) /* 0x6000 -> 0xe320 (CPU1) = 0x3b20 (CPU0) */ diff --git a/src/mame/drivers/meijinsn.cpp b/src/mame/drivers/meijinsn.cpp index 7bc51aec904..46de0abd8ab 100644 --- a/src/mame/drivers/meijinsn.cpp +++ b/src/mame/drivers/meijinsn.cpp @@ -189,29 +189,32 @@ READ16_MEMBER(meijinsn_state::alpha_mcu_r) -ADDRESS_MAP_START(meijinsn_state::meijinsn_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080e00, 0x080fff) AM_READ(alpha_mcu_r) AM_WRITENOP - AM_RANGE(0x100000, 0x107fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x180000, 0x180dff) AM_RAM - AM_RANGE(0x180e00, 0x180fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x181000, 0x181fff) AM_RAM - AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P2") - AM_RANGE(0x1a0000, 0x1a0001) AM_READ_PORT("P1") AM_WRITE(sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(meijinsn_state::meijinsn_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(meijinsn_state::meijinsn_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x06, 0x06) AM_WRITENOP -ADDRESS_MAP_END +void meijinsn_state::meijinsn_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080e00, 0x080fff).r(this, FUNC(meijinsn_state::alpha_mcu_r)).nopw(); + map(0x100000, 0x107fff).ram().share("videoram"); + map(0x180000, 0x180dff).ram(); + map(0x180e00, 0x180fff).ram().share("shared_ram"); + map(0x181000, 0x181fff).ram(); + map(0x1c0000, 0x1c0001).portr("P2"); + map(0x1a0000, 0x1a0001).portr("P1").w(this, FUNC(meijinsn_state::sound_w)); +} + +void meijinsn_state::meijinsn_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); +} + +void meijinsn_state::meijinsn_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x01, 0x01).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x02).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0x06, 0x06).nopw(); +} static INPUT_PORTS_START( meijinsn ) PORT_START("P1") diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp index e98533f2520..da6dd0d47c0 100644 --- a/src/mame/drivers/mekd2.cpp +++ b/src/mame/drivers/mekd2.cpp @@ -139,14 +139,15 @@ private: ************************************************************/ -ADDRESS_MAP_START(mekd2_state::mekd2_mem) - AM_RANGE(0x0000, 0x00ff) AM_RAM // user ram - AM_RANGE(0x8004, 0x8007) AM_DEVREADWRITE("pia_u", pia6821_device, read, write) - AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0x8020, 0x8023) AM_DEVREADWRITE("pia_s", pia6821_device, read, write) - AM_RANGE(0xa000, 0xa07f) AM_RAM // system ram - AM_RANGE(0xe000, 0xe3ff) AM_ROM AM_MIRROR(0x1c00) /* JBUG ROM */ -ADDRESS_MAP_END +void mekd2_state::mekd2_mem(address_map &map) +{ + map(0x0000, 0x00ff).ram(); // user ram + map(0x8004, 0x8007).rw(m_pia_u, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8008, 0x8009).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x8020, 0x8023).rw(m_pia_s, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xa000, 0xa07f).ram(); // system ram + map(0xe000, 0xe3ff).rom().mirror(0x1c00); /* JBUG ROM */ +} /*********************************************************** diff --git a/src/mame/drivers/mephisto.cpp b/src/mame/drivers/mephisto.cpp index 1184f1f1206..d853893d7f3 100644 --- a/src/mame/drivers/mephisto.cpp +++ b/src/mame/drivers/mephisto.cpp @@ -222,42 +222,45 @@ WRITE8_MEMBER( mephisto_state::write_led_mm2 ) m_led7= BIT(data, 7) ? 0xff :0x00; //MM2 } -ADDRESS_MAP_START(mephisto_state::rebel5_mem) - AM_RANGE( 0x0000, 0x1fff) AM_RAM // AM_BASE(m_p_ram) - AM_RANGE( 0x2000, 0x2007) AM_WRITE(write_led) // Status LEDs+ buzzer - AM_RANGE( 0x3000, 0x4000) AM_DEVREAD("board", mephisto_board_device, input_r) - AM_RANGE( 0x3000, 0x3007) AM_READ(read_keys) // Rebel 5.0 - AM_RANGE( 0x5000, 0x5000) AM_WRITE(write_lcd) - AM_RANGE( 0x6000, 0x6000) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x7000, 0x7000) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mephisto_state::mephisto_mem) - AM_RANGE( 0x0000, 0x1fff) AM_RAM //AM_BASE(m_p_ram) - AM_RANGE( 0x2000, 0x2000) AM_WRITE(write_lcd) - AM_RANGE( 0x2400, 0x2407) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x2800, 0x2800) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x2c00, 0x2c07) AM_READ(read_keys) - AM_RANGE( 0x3000, 0x3000) AM_DEVREAD("board", mephisto_board_device, input_r) - AM_RANGE( 0x3400, 0x3407) AM_WRITE(write_led) // Status LEDs+ buzzer - AM_RANGE( 0x3800, 0x3800) AM_WRITE(mephisto_NMI) // NMI enable - AM_RANGE( 0x4000, 0x7fff) AM_ROM // Opening Library - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mephisto_state::mm2_mem) - AM_RANGE( 0x0000, 0x0fff) AM_RAM //AM_BASE(m_p_ram) - AM_RANGE( 0x1000, 0x1007) AM_WRITE(write_led_mm2) //Status LEDs - AM_RANGE( 0x1800, 0x1807) AM_READ(read_keys) - AM_RANGE( 0x2000, 0x2000) AM_DEVREAD("board", mephisto_board_device, input_r) - AM_RANGE( 0x2800, 0x2800) AM_WRITE(write_lcd) - AM_RANGE( 0x3000, 0x3000) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x3800, 0x3800) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x4000, 0x7fff) AM_ROM // Opening Library ? - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void mephisto_state::rebel5_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); // AM_BASE(m_p_ram) + map(0x2000, 0x2007).w(this, FUNC(mephisto_state::write_led)); // Status LEDs+ buzzer + map(0x3000, 0x4000).r("board", FUNC(mephisto_board_device::input_r)); + map(0x3000, 0x3007).r(this, FUNC(mephisto_state::read_keys)); // Rebel 5.0 + map(0x5000, 0x5000).w(this, FUNC(mephisto_state::write_lcd)); + map(0x6000, 0x6000).w("board", FUNC(mephisto_board_device::led_w)); + map(0x7000, 0x7000).w("board", FUNC(mephisto_board_device::mux_w)); + map(0x8000, 0xffff).rom(); +} + + +void mephisto_state::mephisto_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); //AM_BASE(m_p_ram) + map(0x2000, 0x2000).w(this, FUNC(mephisto_state::write_lcd)); + map(0x2400, 0x2407).w("board", FUNC(mephisto_board_device::led_w)); + map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); + map(0x2c00, 0x2c07).r(this, FUNC(mephisto_state::read_keys)); + map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); + map(0x3400, 0x3407).w(this, FUNC(mephisto_state::write_led)); // Status LEDs+ buzzer + map(0x3800, 0x3800).w(this, FUNC(mephisto_state::mephisto_NMI)); // NMI enable + map(0x4000, 0x7fff).rom(); // Opening Library + map(0x8000, 0xffff).rom(); +} + +void mephisto_state::mm2_mem(address_map &map) +{ + map(0x0000, 0x0fff).ram(); //AM_BASE(m_p_ram) + map(0x1000, 0x1007).w(this, FUNC(mephisto_state::write_led_mm2)); //Status LEDs + map(0x1800, 0x1807).r(this, FUNC(mephisto_state::read_keys)); + map(0x2000, 0x2000).r("board", FUNC(mephisto_board_device::input_r)); + map(0x2800, 0x2800).w(this, FUNC(mephisto_state::write_lcd)); + map(0x3000, 0x3000).w("board", FUNC(mephisto_board_device::led_w)); + map(0x3800, 0x3800).w("board", FUNC(mephisto_board_device::mux_w)); + map(0x4000, 0x7fff).rom(); // Opening Library ? + map(0x8000, 0xffff).rom(); +} INPUT_PORTS_EXTERN( chessboard ); diff --git a/src/mame/drivers/mephisto_montec.cpp b/src/mame/drivers/mephisto_montec.cpp index d131deea478..71aeefdbf0a 100644 --- a/src/mame/drivers/mephisto_montec.cpp +++ b/src/mame/drivers/mephisto_montec.cpp @@ -245,40 +245,43 @@ READ8_MEMBER(mephisto_montec_state::megaiv_input_r) } -ADDRESS_MAP_START(mephisto_montec_state::montec_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2400, 0x2400 ) AM_READ(montec_input_r) - AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x2c00, 0x2c00 ) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(montec_led_w) - AM_RANGE( 0x3000, 0x3001 ) AM_WRITE(montec_mux_w) - AM_RANGE( 0x3002, 0x3002 ) AM_WRITE(montec_beeper_w) - AM_RANGE( 0x3004, 0x3004 ) AM_WRITE(montec_lcd_data_w) - AM_RANGE( 0x3005, 0x3005 ) AM_WRITE(montec_ldc_cs1_w) - AM_RANGE( 0x3006, 0x3006 ) AM_WRITE(montec_lcd_clk_w) - AM_RANGE( 0x3007, 0x3007 ) AM_WRITE(montec_ldc_cs0_w) - AM_RANGE( 0x2000, 0x2000 ) AM_READWRITE(montec_nmi_ack_r, montec_nmi_ack_w) - AM_RANGE( 0x8000, 0xffff ) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mephisto_montec_state::megaiv_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2400, 0x2400 ) AM_WRITE(megaiv_led_w) - AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x2c00, 0x2c03 ) AM_WRITE(montec_mux_w) AM_READNOP - AM_RANGE( 0x2c04, 0x2c04 ) AM_WRITE(montec_lcd_data_w) - AM_RANGE( 0x2c05, 0x2c05 ) AM_WRITE(montec_ldc_cs1_w) - AM_RANGE( 0x2c06, 0x2c06 ) AM_WRITE(montec_lcd_clk_w) - AM_RANGE( 0x2c07, 0x2c07 ) AM_WRITE(montec_ldc_cs0_w) - AM_RANGE( 0x3000, 0x3007 ) AM_READ(megaiv_input_r) - AM_RANGE( 0x8000, 0xffff ) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mephisto_montec_state::smondial2_mem) - AM_IMPORT_FROM(megaiv_mem) - AM_RANGE( 0x4000, 0x7fff ) AM_DEVREAD("cartslot", generic_slot_device, read_rom) -ADDRESS_MAP_END +void mephisto_montec_state::montec_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2400, 0x2400).r(this, FUNC(mephisto_montec_state::montec_input_r)); + map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w)); + map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w)); + map(0x3400, 0x3400).w(this, FUNC(mephisto_montec_state::montec_led_w)); + map(0x3000, 0x3001).w(this, FUNC(mephisto_montec_state::montec_mux_w)); + map(0x3002, 0x3002).w(this, FUNC(mephisto_montec_state::montec_beeper_w)); + map(0x3004, 0x3004).w(this, FUNC(mephisto_montec_state::montec_lcd_data_w)); + map(0x3005, 0x3005).w(this, FUNC(mephisto_montec_state::montec_ldc_cs1_w)); + map(0x3006, 0x3006).w(this, FUNC(mephisto_montec_state::montec_lcd_clk_w)); + map(0x3007, 0x3007).w(this, FUNC(mephisto_montec_state::montec_ldc_cs0_w)); + map(0x2000, 0x2000).rw(this, FUNC(mephisto_montec_state::montec_nmi_ack_r), FUNC(mephisto_montec_state::montec_nmi_ack_w)); + map(0x8000, 0xffff).rom(); +} + +void mephisto_montec_state::megaiv_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2400, 0x2400).w(this, FUNC(mephisto_montec_state::megaiv_led_w)); + map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w)); + map(0x2c00, 0x2c03).w(this, FUNC(mephisto_montec_state::montec_mux_w)).nopr(); + map(0x2c04, 0x2c04).w(this, FUNC(mephisto_montec_state::montec_lcd_data_w)); + map(0x2c05, 0x2c05).w(this, FUNC(mephisto_montec_state::montec_ldc_cs1_w)); + map(0x2c06, 0x2c06).w(this, FUNC(mephisto_montec_state::montec_lcd_clk_w)); + map(0x2c07, 0x2c07).w(this, FUNC(mephisto_montec_state::montec_ldc_cs0_w)); + map(0x3000, 0x3007).r(this, FUNC(mephisto_montec_state::megaiv_input_r)); + map(0x8000, 0xffff).rom(); +} + + +void mephisto_montec_state::smondial2_mem(address_map &map) +{ + megaiv_mem(map); + map(0x4000, 0x7fff).r("cartslot", FUNC(generic_slot_device::read_rom)); +} WRITE8_MEMBER(mephisto_montec_state::smondial_board_mux_w) @@ -308,18 +311,19 @@ WRITE8_MEMBER(mephisto_montec_state::smondial_led_data_w) m_beeper->set_state(BIT(m_leds_mux, 7)); } -ADDRESS_MAP_START(mephisto_montec_state::smondial_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x4000, 0x4007 ) AM_READ(megaiv_input_r) - AM_RANGE( 0x6400, 0x6407 ) AM_WRITE(smondial_led_data_w) - AM_RANGE( 0x6800, 0x6807 ) AM_WRITE(smondial_board_mux_w) - AM_RANGE( 0x6c00, 0x6c03 ) AM_WRITE(montec_mux_w) - AM_RANGE( 0x6c04, 0x6c04 ) AM_WRITE(montec_lcd_data_w) - AM_RANGE( 0x6c05, 0x6c05 ) AM_WRITE(montec_ldc_cs1_w) - AM_RANGE( 0x6c06, 0x6c06 ) AM_WRITE(montec_lcd_clk_w) - AM_RANGE( 0x6c07, 0x6c07 ) AM_WRITE(montec_ldc_cs0_w) - AM_RANGE( 0x8000, 0xffff ) AM_ROM -ADDRESS_MAP_END +void mephisto_montec_state::smondial_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x4000, 0x4007).r(this, FUNC(mephisto_montec_state::megaiv_input_r)); + map(0x6400, 0x6407).w(this, FUNC(mephisto_montec_state::smondial_led_data_w)); + map(0x6800, 0x6807).w(this, FUNC(mephisto_montec_state::smondial_board_mux_w)); + map(0x6c00, 0x6c03).w(this, FUNC(mephisto_montec_state::montec_mux_w)); + map(0x6c04, 0x6c04).w(this, FUNC(mephisto_montec_state::montec_lcd_data_w)); + map(0x6c05, 0x6c05).w(this, FUNC(mephisto_montec_state::montec_ldc_cs1_w)); + map(0x6c06, 0x6c06).w(this, FUNC(mephisto_montec_state::montec_lcd_clk_w)); + map(0x6c07, 0x6c07).w(this, FUNC(mephisto_montec_state::montec_ldc_cs0_w)); + map(0x8000, 0xffff).rom(); +} WRITE8_MEMBER(mephisto_montec_state::mondial2_input_mux_w) { @@ -339,13 +343,14 @@ WRITE8_MEMBER(mephisto_montec_state::mondial2_input_mux_w) } -ADDRESS_MAP_START(mephisto_montec_state::mondial2_mem) - AM_RANGE( 0x0000, 0x07ff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2000, 0x2000 ) AM_WRITE(mondial2_input_mux_w) - AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x3000, 0x3007 ) AM_READ(megaiv_input_r) - AM_RANGE( 0x8000, 0xffff ) AM_ROM -ADDRESS_MAP_END +void mephisto_montec_state::mondial2_mem(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2000, 0x2000).w(this, FUNC(mephisto_montec_state::mondial2_input_mux_w)); + map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w)); + map(0x3000, 0x3007).r(this, FUNC(mephisto_montec_state::megaiv_input_r)); + map(0x8000, 0xffff).rom(); +} TIMER_DEVICE_CALLBACK_MEMBER(mephisto_montec_state::refresh_leds) { diff --git a/src/mame/drivers/mephistp.cpp b/src/mame/drivers/mephistp.cpp index 50f1e94da6a..ff37e069be2 100644 --- a/src/mame/drivers/mephistp.cpp +++ b/src/mame/drivers/mephistp.cpp @@ -103,29 +103,32 @@ WRITE8_MEMBER(mephisto_pinball_state::sound_rombank_w) m_soundbank->set_entry(data & 0xf); } -ADDRESS_MAP_START(mephisto_pinball_state::mephisto_map) - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_MIRROR(0x08000) AM_REGION("maincpu", 0) - AM_RANGE(0x10000, 0x107ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x12000, 0x1201f) AM_NOP //AM_DEVREADWRITE("muart", i8256_device, read, write) - AM_RANGE(0x13000, 0x130ff) AM_DEVREADWRITE("ic20", i8155_device, memory_r, memory_w) - AM_RANGE(0x13800, 0x13807) AM_DEVREADWRITE("ic20", i8155_device, io_r, io_w) - AM_RANGE(0x14000, 0x140ff) AM_DEVREADWRITE("ic9", i8155_device, memory_r, memory_w) - AM_RANGE(0x14800, 0x14807) AM_DEVREADWRITE("ic9", i8155_device, io_r, io_w) - AM_RANGE(0x16000, 0x16000) AM_WRITE(shift_load_w) - AM_RANGE(0x17000, 0x17001) AM_WRITENOP //??? - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void mephisto_pinball_state::mephisto_map(address_map &map) +{ + map(0x00000, 0x07fff).rom().mirror(0x08000).region("maincpu", 0); + map(0x10000, 0x107ff).ram().share("nvram"); + map(0x12000, 0x1201f).noprw(); //AM_DEVREADWRITE("muart", i8256_device, read, write) + map(0x13000, 0x130ff).rw("ic20", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x13800, 0x13807).rw("ic20", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x14000, 0x140ff).rw("ic9", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x14800, 0x14807).rw("ic9", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x16000, 0x16000).w(this, FUNC(mephisto_pinball_state::shift_load_w)); + map(0x17000, 0x17001).nopw(); //??? + map(0xf8000, 0xfffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(mephisto_pinball_state::mephisto_8051_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END +void mephisto_pinball_state::mephisto_8051_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).bankr("soundbank"); +} -ADDRESS_MAP_START(mephisto_pinball_state::mephisto_8051_io) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_WRITE(sound_rombank_w) - AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("dac", dac08_device, write) -ADDRESS_MAP_END +void mephisto_pinball_state::mephisto_8051_io(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0800).w(this, FUNC(mephisto_pinball_state::sound_rombank_w)); + map(0x1000, 0x1000).w("dac", FUNC(dac08_device::write)); +} #ifdef UNUSED_DEFINITION ADDRESS_MAP_START(mephisto_pinball_state::sport2k_8051_io) diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp index 2d8e43fbc77..de4a414b593 100644 --- a/src/mame/drivers/merit.cpp +++ b/src/mame/drivers/merit.cpp @@ -403,182 +403,196 @@ CUSTOM_INPUT_MEMBER(merit_state::rndbit_r) return machine().rand(); } -ADDRESS_MAP_START(merit_state::pitboss_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::casino5_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank2") - AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x7000, 0x7000) AM_WRITE(casino5_bank_w) - AM_RANGE(0x7001, 0x7fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::bigappg_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::misdraw_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("cpunvram") // overlays other NVRAM? or is it banked? - AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) // swapped compared to other set? - AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::dodge_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END +void merit_state::pitboss_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc000, 0xc003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::casino5_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).bankr("bank1"); + map(0x4000, 0x5fff).bankr("bank2"); + map(0x6000, 0x6fff).ram().share("nvram"); + map(0x7000, 0x7000).w(this, FUNC(merit_state::casino5_bank_w)); + map(0x7001, 0x7fff).ram(); + map(0xa000, 0xa003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc000, 0xc003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::bigappg_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).ram().share("nvram"); + map(0xc004, 0xc007).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::misdraw_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).ram().share("nvram"); + map(0xb000, 0xb7ff).ram().share("cpunvram"); // overlays other NVRAM? or is it banked? + map(0xc004, 0xc007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // swapped compared to other set? + map(0xc008, 0xc00b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::dodge_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).ram().share("nvram"); + map(0xc004, 0xc007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} /* Address decoding is done by prom u13 on crt200a hardware. It decodes * the following addr lines: 2,3,9,13,14,15 ==> E20C * ==> mirror 1DF3 & ~effective_addr_lines * */ -ADDRESS_MAP_START(merit_state::trvwhiz_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4c00, 0x4cff) AM_READWRITE(questions_r, high_offset_w) - AM_RANGE(0x5400, 0x54ff) AM_WRITE(low_offset_w) - AM_RANGE(0x5800, 0x58ff) AM_WRITE(med_offset_w) - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::trvwhiz_io_map) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("aysnd", ay8912_device, address_w) - AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("aysnd", ay8912_device, data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(merit_state::phrcraze_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xc00c, 0xc00f) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::phrcraze_io_map) - AM_RANGE(0xc004, 0xc004) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, address_w) - AM_RANGE(0xc104, 0xc104) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(merit_state::tictac_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::tictac_io_map) - AM_RANGE(0xc00c, 0xc00c) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, address_w) - AM_RANGE(0xc10c, 0xc10c) AM_MIRROR(0x1cf3) AM_DEVWRITE("aysnd", ay8912_device, data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(merit_state::trvwhziv_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::dtrvwz5_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xb000, 0xb0ff) AM_ROM /* protection? code jumps here */ - AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(merit_state::couple_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("backup_ram") - AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END +void merit_state::trvwhiz_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4c00, 0x4cff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w)); + map(0x5400, 0x54ff).w(this, FUNC(merit_state::low_offset_w)); + map(0x5800, 0x58ff).w(this, FUNC(merit_state::med_offset_w)); + map(0x6000, 0x67ff).ram(); + map(0xa000, 0xa003).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc000, 0xc003).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::trvwhiz_io_map(address_map &map) +{ + map(0x8000, 0x8000).w("aysnd", FUNC(ay8912_device::address_w)); + map(0x8100, 0x8100).w("aysnd", FUNC(ay8912_device::data_w)); +} + + +void merit_state::phrcraze_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).ram(); + map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc00c, 0xc00f).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w)); + map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w)); + map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w)); + map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::phrcraze_io_map(address_map &map) +{ + map(0xc004, 0xc004).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::address_w)); + map(0xc104, 0xc104).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::data_w)); +} + + +void merit_state::tictac_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xc004, 0xc007).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w)); + map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w)); + map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w)); + map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::tictac_io_map(address_map &map) +{ + map(0xc00c, 0xc00c).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::address_w)); + map(0xc10c, 0xc10c).mirror(0x1cf3).w("aysnd", FUNC(ay8912_device::data_w)); +} + + +void merit_state::trvwhziv_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).ram(); + map(0xc004, 0xc007).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w)); + map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w)); + map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w)); + map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::dtrvwz5_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram().share("nvram"); + map(0xb000, 0xb0ff).rom(); /* protection? code jumps here */ + map(0xc004, 0xc007).mirror(0x1df0).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).mirror(0x1df0).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xce00, 0xceff).rw(this, FUNC(merit_state::questions_r), FUNC(merit_state::high_offset_w)); + map(0xd600, 0xd6ff).w(this, FUNC(merit_state::low_offset_w)); + map(0xda00, 0xdaff).w(this, FUNC(merit_state::med_offset_w)); + map(0xe000, 0xe000).mirror(0x05f0).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).mirror(0x05f0).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} + +void merit_state::couple_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).ram().share("backup_ram"); + map(0xc004, 0xc007).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc008, 0xc00b).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(merit_state::palette_r), FUNC(merit_state::palette_w)); +} static INPUT_PORTS_START( meritpoker ) diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp index f8e90fdcf12..bee7abfe68b 100644 --- a/src/mame/drivers/meritm.cpp +++ b/src/mame/drivers/meritm.cpp @@ -537,64 +537,70 @@ READ8_MEMBER(meritm_state::meritm_ds1644_r) * *************************************/ -ADDRESS_MAP_START(meritm_state::meritm_crt250_map) - AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(meritm_state::meritm_crt250_questions_map) - AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0x0000, 0x0000) AM_WRITE(meritm_crt250_questions_lo_w) - AM_RANGE(0x0001, 0x0001) AM_WRITE(meritm_crt250_questions_hi_w) - AM_RANGE(0x0002, 0x0002) AM_WRITE(meritm_crt250_questions_bank_w) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(meritm_state::meritm_crt250_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8930_device, data_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8930_device, address_data_w) - AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(meritm_state::meritm_crt250_crt258_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write) - AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w) - AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8930_device, data_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8930_device, address_data_w) - AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(meritm_state::meritm_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("bank2") - AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank3") AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(meritm_state::meritm_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(meritm_psd_a15_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write) - AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w) - AM_RANGE(0x80, 0x80) AM_DEVREAD("aysnd", ay8930_device, data_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("aysnd", ay8930_device, address_data_w) - AM_RANGE(0xff, 0xff) AM_WRITE(meritm_bank_w) -ADDRESS_MAP_END +void meritm_state::meritm_crt250_map(address_map &map) +{ + map(0x0000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).ram().share("nvram"); +} + +void meritm_state::meritm_crt250_questions_map(address_map &map) +{ + map(0x0000, 0xdfff).bankr("bank1"); + map(0x0000, 0x0000).w(this, FUNC(meritm_state::meritm_crt250_questions_lo_w)); + map(0x0001, 0x0001).w(this, FUNC(meritm_state::meritm_crt250_questions_hi_w)); + map(0x0002, 0x0002).w(this, FUNC(meritm_state::meritm_crt250_questions_bank_w)); + map(0xe000, 0xffff).ram().share("nvram"); +} + +void meritm_state::meritm_crt250_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r)); + map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w)); + map(0xff, 0xff).w(this, FUNC(meritm_state::meritm_crt250_bank_w)); +} + +void meritm_state::meritm_crt250_crt258_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x60, 0x67).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r)); + map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w)); + map(0xff, 0xff).w(this, FUNC(meritm_state::meritm_crt250_bank_w)); +} + +void meritm_state::meritm_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank1"); + map(0x8000, 0xdfff).bankr("bank2"); + map(0xe000, 0xffff).bankrw("bank3").share("nvram"); +} + +void meritm_state::meritm_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(meritm_state::meritm_psd_a15_w)); + map(0x01, 0x01).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x10, 0x13).rw(m_v9938_0, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x20, 0x23).rw(m_v9938_1, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x43).rw(m_z80pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x50, 0x53).rw(m_z80pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x60, 0x67).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x80, 0x80).r("aysnd", FUNC(ay8930_device::data_r)); + map(0x80, 0x81).w("aysnd", FUNC(ay8930_device::address_data_w)); + map(0xff, 0xff).w(this, FUNC(meritm_state::meritm_bank_w)); +} /************************************* * diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp index c1afb47bd57..79129d4df72 100644 --- a/src/mame/drivers/mermaid.cpp +++ b/src/mame/drivers/mermaid.cpp @@ -157,25 +157,26 @@ WRITE_LINE_MEMBER(mermaid_state::nmi_mask_w) /* Memory Map */ -ADDRESS_MAP_START(mermaid_state::mermaid_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(mermaid_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(mermaid_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd81f) AM_RAM_WRITE(mermaid_bg_scroll_w) AM_SHARE("bg_scrollram") - AM_RANGE(0xd840, 0xd85f) AM_RAM_WRITE(mermaid_fg_scroll_w) AM_SHARE("fg_scrollram") - AM_RANGE(0xd880, 0xd8bf) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(mermaid_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW") - AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("latch1", ls259_device, write_d0) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("P1") - AM_RANGE(0xe800, 0xe807) AM_DEVWRITE("latch2", ls259_device, write_d0) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P2") - AM_RANGE(0xf800, 0xf800) AM_READ(mermaid_collision_r) - AM_RANGE(0xf802, 0xf802) AM_WRITENOP // ??? - AM_RANGE(0xf806, 0xf806) AM_WRITE(mermaid_ay8910_write_port_w) - AM_RANGE(0xf807, 0xf807) AM_WRITE(mermaid_ay8910_control_port_w) -ADDRESS_MAP_END +void mermaid_state::mermaid_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcbff).ram().w(this, FUNC(mermaid_state::mermaid_videoram2_w)).share("videoram2"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(mermaid_state::mermaid_videoram_w)).share("videoram"); + map(0xd800, 0xd81f).ram().w(this, FUNC(mermaid_state::mermaid_bg_scroll_w)).share("bg_scrollram"); + map(0xd840, 0xd85f).ram().w(this, FUNC(mermaid_state::mermaid_fg_scroll_w)).share("fg_scrollram"); + map(0xd880, 0xd8bf).ram().share("spriteram"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(mermaid_state::mermaid_colorram_w)).share("colorram"); + map(0xe000, 0xe000).portr("DSW"); + map(0xe000, 0xe007).w("latch1", FUNC(ls259_device::write_d0)); + map(0xe800, 0xe800).portr("P1"); + map(0xe800, 0xe807).w("latch2", FUNC(ls259_device::write_d0)); + map(0xf000, 0xf000).portr("P2"); + map(0xf800, 0xf800).r(this, FUNC(mermaid_state::mermaid_collision_r)); + map(0xf802, 0xf802).nopw(); // ??? + map(0xf806, 0xf806).w(this, FUNC(mermaid_state::mermaid_ay8910_write_port_w)); + map(0xf807, 0xf807).w(this, FUNC(mermaid_state::mermaid_ay8910_control_port_w)); +} WRITE_LINE_MEMBER(mermaid_state::rougien_sample_rom_lo_w) { diff --git a/src/mame/drivers/mes.cpp b/src/mame/drivers/mes.cpp index 5f4838de696..9fdea2ffe32 100644 --- a/src/mame/drivers/mes.cpp +++ b/src/mame/drivers/mes.cpp @@ -57,21 +57,23 @@ READ8_MEMBER( mes_state::port08_r ) return m_port08 | (m_term_data ? 0x80 : 0); } -ADDRESS_MAP_START(mes_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x1000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mes_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(port00_r) - AM_RANGE(0x08, 0x08) AM_READ(port08_r) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pio", z80pio_device, read, write) -ADDRESS_MAP_END +void mes_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom().region("roms", 0); + map(0x1000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("videoram"); +} + +void mes_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(mes_state::port00_r)); + map(0x08, 0x08).r(this, FUNC(mes_state::port08_r)); + map(0x0c, 0x0f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x13).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input ports */ static INPUT_PORTS_START( mes ) diff --git a/src/mame/drivers/metalmx.cpp b/src/mame/drivers/metalmx.cpp index 4bc40346486..afedb709ddd 100644 --- a/src/mame/drivers/metalmx.cpp +++ b/src/mame/drivers/metalmx.cpp @@ -505,30 +505,31 @@ WRITE32_MEMBER(metalmx_state::timer_w) * *************************************/ -ADDRESS_MAP_START(metalmx_state::main_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x3fffff) AM_ROM - AM_RANGE(0x400000, 0x4000ff) AM_READWRITE(host_gsp_r, host_gsp_w) - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(host_dram_r, host_dram_w) - AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(host_vram_r, host_vram_w) - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(dsp32c_2_r, dsp32c_2_w) - AM_RANGE(0x800020, 0x85ffff) AM_NOP /* Unknown */ - AM_RANGE(0x880000, 0x88001f) AM_READWRITE(dsp32c_1_r, dsp32c_1_w) - AM_RANGE(0x980000, 0x9800ff) AM_WRITE(reset_w) - AM_RANGE(0xb40000, 0xb40003) AM_READWRITE(sound_data_r, sound_data_w) - AM_RANGE(0xf00000, 0xf00003) AM_RAM /* Network message port */ - AM_RANGE(0xf02000, 0xf02003) AM_READWRITE(watchdog_r, shifter_w) - AM_RANGE(0xf03000, 0xf03003) AM_READ_PORT("P1") AM_WRITE(motor_w) - AM_RANGE(0xf04000, 0xf04003) AM_READ_PORT("P2") - AM_RANGE(0xf05000, 0xf05fff) AM_WRITENOP /* Lamps */ // f06000 = ADC // f01xxx = ADC - AM_RANGE(0xf19000, 0xf19003) AM_WRITENOP /* Network */ - AM_RANGE(0xf1a000, 0xf1a003) AM_WRITENOP - AM_RANGE(0xf1b000, 0xf1b003) AM_WRITENOP - AM_RANGE(0xf1e000, 0xf1e003) AM_RAM /* Network status flags : 1000 = LIRQ 4000 = SFLAG 8000 = 68FLAG */ - AM_RANGE(0xf20000, 0xf2ffff) AM_WRITE(timer_w) - AM_RANGE(0xfc0000, 0xfc1fff) AM_RAM /* Zero power RAM */ - AM_RANGE(0xfd0000, 0xffffff) AM_RAM /* Scratch RAM */ -ADDRESS_MAP_END +void metalmx_state::main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x3fffff).rom(); + map(0x400000, 0x4000ff).rw(this, FUNC(metalmx_state::host_gsp_r), FUNC(metalmx_state::host_gsp_w)); + map(0x600000, 0x6fffff).rw(this, FUNC(metalmx_state::host_dram_r), FUNC(metalmx_state::host_dram_w)); + map(0x700000, 0x7fffff).rw(this, FUNC(metalmx_state::host_vram_r), FUNC(metalmx_state::host_vram_w)); + map(0x800000, 0x80001f).rw(this, FUNC(metalmx_state::dsp32c_2_r), FUNC(metalmx_state::dsp32c_2_w)); + map(0x800020, 0x85ffff).noprw(); /* Unknown */ + map(0x880000, 0x88001f).rw(this, FUNC(metalmx_state::dsp32c_1_r), FUNC(metalmx_state::dsp32c_1_w)); + map(0x980000, 0x9800ff).w(this, FUNC(metalmx_state::reset_w)); + map(0xb40000, 0xb40003).rw(this, FUNC(metalmx_state::sound_data_r), FUNC(metalmx_state::sound_data_w)); + map(0xf00000, 0xf00003).ram(); /* Network message port */ + map(0xf02000, 0xf02003).rw(this, FUNC(metalmx_state::watchdog_r), FUNC(metalmx_state::shifter_w)); + map(0xf03000, 0xf03003).portr("P1").w(this, FUNC(metalmx_state::motor_w)); + map(0xf04000, 0xf04003).portr("P2"); + map(0xf05000, 0xf05fff).nopw(); /* Lamps */ // f06000 = ADC // f01xxx = ADC + map(0xf19000, 0xf19003).nopw(); /* Network */ + map(0xf1a000, 0xf1a003).nopw(); + map(0xf1b000, 0xf1b003).nopw(); + map(0xf1e000, 0xf1e003).ram(); /* Network status flags : 1000 = LIRQ 4000 = SFLAG 8000 = 68FLAG */ + map(0xf20000, 0xf2ffff).w(this, FUNC(metalmx_state::timer_w)); + map(0xfc0000, 0xfc1fff).ram(); /* Zero power RAM */ + map(0xfd0000, 0xffffff).ram(); /* Scratch RAM */ +} /************************************* @@ -537,15 +538,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(metalmx_state::adsp_program_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("adsp_intprog") -ADDRESS_MAP_END +void metalmx_state::adsp_program_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("adsp_intprog"); +} -ADDRESS_MAP_START(metalmx_state::adsp_data_map) - AM_RANGE(0x3800, 0x39ff) AM_RAM - AM_RANGE(0x2000, 0x2007) AM_RAM - AM_RANGE(0x3fe0, 0x3fff) AM_RAM // TODO: CPU control registers -ADDRESS_MAP_END +void metalmx_state::adsp_data_map(address_map &map) +{ + map(0x3800, 0x39ff).ram(); + map(0x2000, 0x2007).ram(); + map(0x3fe0, 0x3fff).ram(); // TODO: CPU control registers +} /************************************* @@ -554,13 +557,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(metalmx_state::gsp_map) - AM_RANGE(0x88800000, 0x8880000f) AM_RAM /* ? */ - AM_RANGE(0x88c00000, 0x88c0000f) AM_RAM /* ? */ - AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("gsp", tms34020_device, io_register_r, io_register_w) - AM_RANGE(0xff000000, 0xff7fffff) AM_RAM AM_SHARE("gsp_dram") - AM_RANGE(0xff800000, 0xffffffff) AM_RAM AM_SHARE("gsp_vram") -ADDRESS_MAP_END +void metalmx_state::gsp_map(address_map &map) +{ + map(0x88800000, 0x8880000f).ram(); /* ? */ + map(0x88c00000, 0x88c0000f).ram(); /* ? */ + map(0xc0000000, 0xc00003ff).rw(m_gsp, FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w)); + map(0xff000000, 0xff7fffff).ram().share("gsp_dram"); + map(0xff800000, 0xffffffff).ram().share("gsp_vram"); +} /************************************* @@ -569,16 +573,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(metalmx_state::dsp32c_1_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_RAM - AM_RANGE(0x600000, 0x67ffff) AM_RAM - AM_RANGE(0x700000, 0x700003) AM_WRITENOP /* LEDs? */ - AM_RANGE(0xa00000, 0xa00003) AM_READ(unk_r) - AM_RANGE(0xb00000, 0xb00003) AM_READ(unk_r) - AM_RANGE(0xc00000, 0xc00003) AM_RAM /* FIFO? */ - AM_RANGE(0xf00000, 0xffffff) AM_RAM /* 3D registers */ -ADDRESS_MAP_END +void metalmx_state::dsp32c_1_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).ram(); + map(0x600000, 0x67ffff).ram(); + map(0x700000, 0x700003).nopw(); /* LEDs? */ + map(0xa00000, 0xa00003).r(this, FUNC(metalmx_state::unk_r)); + map(0xb00000, 0xb00003).r(this, FUNC(metalmx_state::unk_r)); + map(0xc00000, 0xc00003).ram(); /* FIFO? */ + map(0xf00000, 0xffffff).ram(); /* 3D registers */ +} /************************************* * @@ -586,16 +591,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(metalmx_state::dsp32c_2_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_RAM - AM_RANGE(0x600000, 0x67ffff) AM_RAM - AM_RANGE(0x700000, 0x700003) AM_WRITENOP /* LEDs? */ - AM_RANGE(0xa00000, 0xa00003) AM_READ(unk_r) - AM_RANGE(0xb00000, 0xb00003) AM_READ(unk_r) - AM_RANGE(0xc00000, 0xc00003) AM_RAM /* FIFO? */ - AM_RANGE(0xf00000, 0xffffff) AM_RAM /* 3D registers */ -ADDRESS_MAP_END +void metalmx_state::dsp32c_2_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).ram(); + map(0x600000, 0x67ffff).ram(); + map(0x700000, 0x700003).nopw(); /* LEDs? */ + map(0xa00000, 0xa00003).r(this, FUNC(metalmx_state::unk_r)); + map(0xb00000, 0xb00003).r(this, FUNC(metalmx_state::unk_r)); + map(0xc00000, 0xc00003).ram(); /* FIFO? */ + map(0xf00000, 0xffffff).ram(); /* 3D registers */ +} /************************************* diff --git a/src/mame/drivers/metlclsh.cpp b/src/mame/drivers/metlclsh.cpp index 864dce8c82e..3280eb882f2 100644 --- a/src/mame/drivers/metlclsh.cpp +++ b/src/mame/drivers/metlclsh.cpp @@ -59,25 +59,26 @@ WRITE8_MEMBER(metlclsh_state::metlclsh_ack_nmi) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } -ADDRESS_MAP_START(metlclsh_state::metlclsh_master_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW") - AM_RANGE(0xc080, 0xc080) AM_WRITENOP // ? 0 - AM_RANGE(0xc0c2, 0xc0c2) AM_WRITE(metlclsh_cause_irq) // cause irq on cpu #2 - AM_RANGE(0xc0c3, 0xc0c3) AM_WRITE(metlclsh_ack_nmi) // nmi ack -/**/AM_RANGE(0xc800, 0xc82f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -/**/AM_RANGE(0xcc00, 0xcc2f) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) -/**/AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(metlclsh_fgram_w) AM_SHARE("fgram") - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym2", ym3526_device, write) - AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfff0, 0xffff) AM_ROM // Reset/IRQ vectors -ADDRESS_MAP_END +void metlclsh_state::metlclsh_master_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram().share("share1"); + map(0xa000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc001, 0xc001).portr("IN1"); + map(0xc002, 0xc002).portr("IN2"); + map(0xc003, 0xc003).portr("DSW"); + map(0xc080, 0xc080).nopw(); // ? 0 + map(0xc0c2, 0xc0c2).w(this, FUNC(metlclsh_state::metlclsh_cause_irq)); // cause irq on cpu #2 + map(0xc0c3, 0xc0c3).w(this, FUNC(metlclsh_state::metlclsh_ack_nmi)); // nmi ack +/**/map(0xc800, 0xc82f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +/**/map(0xcc00, 0xcc2f).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xd000, 0xd001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +/**/map(0xd800, 0xdfff).ram().w(this, FUNC(metlclsh_state::metlclsh_fgram_w)).share("fgram"); + map(0xe000, 0xe001).w("ym2", FUNC(ym3526_device::write)); + map(0xe800, 0xe9ff).ram().share("spriteram"); + map(0xfff0, 0xffff).rom(); // Reset/IRQ vectors +} /*************************************************************************** @@ -106,24 +107,25 @@ WRITE8_MEMBER(metlclsh_state::metlclsh_flipscreen_w) flip_screen_set(data & 1); } -ADDRESS_MAP_START(metlclsh_state::metlclsh_slave_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") AM_WRITE(metlclsh_gfxbank_w) // bg tiles bank - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW") - AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(metlclsh_cause_nmi2) // cause nmi on cpu #1 - AM_RANGE(0xc0c1, 0xc0c1) AM_WRITE(metlclsh_ack_irq2) // irq ack - AM_RANGE(0xd000, 0xd7ff) AM_ROMBANK("bank1") AM_WRITE(metlclsh_bgram_w) AM_SHARE("bgram") // this is banked - AM_RANGE(0xe301, 0xe301) AM_WRITE(metlclsh_flipscreen_w) // 0/1 - AM_RANGE(0xe401, 0xe401) AM_WRITE(metlclsh_rambank_w) - AM_RANGE(0xe402, 0xe403) AM_WRITEONLY AM_SHARE("scrollx") +void metlclsh_state::metlclsh_slave_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram().share("share1"); + map(0xc000, 0xc000).portr("IN0").w(this, FUNC(metlclsh_state::metlclsh_gfxbank_w)); // bg tiles bank + map(0xc001, 0xc001).portr("IN1"); + map(0xc002, 0xc002).portr("IN2"); + map(0xc003, 0xc003).portr("DSW"); + map(0xc0c0, 0xc0c0).w(this, FUNC(metlclsh_state::metlclsh_cause_nmi2)); // cause nmi on cpu #1 + map(0xc0c1, 0xc0c1).w(this, FUNC(metlclsh_state::metlclsh_ack_irq2)); // irq ack + map(0xd000, 0xd7ff).bankr("bank1").w(this, FUNC(metlclsh_state::metlclsh_bgram_w)).share("bgram"); // this is banked + map(0xe301, 0xe301).w(this, FUNC(metlclsh_state::metlclsh_flipscreen_w)); // 0/1 + map(0xe401, 0xe401).w(this, FUNC(metlclsh_state::metlclsh_rambank_w)); + map(0xe402, 0xe403).writeonly().share("scrollx"); // AM_RANGE(0xe404, 0xe404) AM_WRITENOP // ? 0 // AM_RANGE(0xe410, 0xe410) AM_WRITENOP // ? 0 on startup only - AM_RANGE(0xe417, 0xe417) AM_WRITE(metlclsh_ack_nmi2) // nmi ack - AM_RANGE(0xfff0, 0xffff) AM_ROM // Reset/IRQ vectors -ADDRESS_MAP_END + map(0xe417, 0xe417).w(this, FUNC(metlclsh_state::metlclsh_ack_nmi2)); // nmi ack + map(0xfff0, 0xffff).rom(); // Reset/IRQ vectors +} /*************************************************************************** diff --git a/src/mame/drivers/metlfrzr.cpp b/src/mame/drivers/metlfrzr.cpp index 425c9ec4a4a..106e45e8dc6 100644 --- a/src/mame/drivers/metlfrzr.cpp +++ b/src/mame/drivers/metlfrzr.cpp @@ -178,39 +178,41 @@ WRITE8_MEMBER(metlfrzr_state::output_w) // popmessage("%02x %02x",m_fg_tilebank,data & 3); } -ADDRESS_MAP_START(metlfrzr_state::metlfrzr_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xd000, 0xd1ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0xd200, 0xd3ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect_ext) AM_SHARE("palette_ext") - - AM_RANGE(0xd400, 0xd47f) AM_DEVREADWRITE("t5182", t5182_device, sharedram_r, sharedram_w) - - AM_RANGE(0xd600, 0xd600) AM_READ_PORT("P1") - AM_RANGE(0xd601, 0xd601) AM_READ_PORT("P2") - AM_RANGE(0xd602, 0xd602) AM_READ_PORT("START") - AM_RANGE(0xd603, 0xd603) AM_READ_PORT("DSW1") - AM_RANGE(0xd604, 0xd604) AM_READ_PORT("DSW2") - AM_RANGE(0xd600, 0xd61f) AM_WRITEONLY AM_SHARE("vregs") - - AM_RANGE(0xd700, 0xd700) AM_WRITE(output_w) - AM_RANGE(0xd710, 0xd710) AM_DEVWRITE("t5182", t5182_device, sound_irq_w) - AM_RANGE(0xd711, 0xd711) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r) +void metlfrzr_state::metlfrzr_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().share("vram"); + map(0xd000, 0xd1ff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0xd200, 0xd3ff).ram().w(m_palette, FUNC(palette_device::write_indirect_ext)).share("palette_ext"); + + map(0xd400, 0xd47f).rw("t5182", FUNC(t5182_device::sharedram_r), FUNC(t5182_device::sharedram_w)); + + map(0xd600, 0xd600).portr("P1"); + map(0xd601, 0xd601).portr("P2"); + map(0xd602, 0xd602).portr("START"); + map(0xd603, 0xd603).portr("DSW1"); + map(0xd604, 0xd604).portr("DSW2"); + map(0xd600, 0xd61f).writeonly().share("vregs"); + + map(0xd700, 0xd700).w(this, FUNC(metlfrzr_state::output_w)); + map(0xd710, 0xd710).w("t5182", FUNC(t5182_device::sound_irq_w)); + map(0xd711, 0xd711).r("t5182", FUNC(t5182_device::sharedram_semaphore_snd_r)); // following two do swapped access compared to darkmist - AM_RANGE(0xd712, 0xd712) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w) - AM_RANGE(0xd713, 0xd713) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w) - - AM_RANGE(0xd800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("wram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(metlfrzr_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("wram") // executes code at 0xf5d5 -ADDRESS_MAP_END + map(0xd712, 0xd712).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_release_w)); + map(0xd713, 0xd713).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_acquire_w)); + + map(0xd800, 0xdfff).ram(); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("wram"); +} + +void metlfrzr_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xf000, 0xffff).ram().share("wram"); // executes code at 0xf5d5 +} static INPUT_PORTS_START( metlfrzr ) diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp index 725a07c7c3c..98784524ef4 100644 --- a/src/mame/drivers/metro.cpp +++ b/src/mame/drivers/metro.cpp @@ -483,18 +483,20 @@ WRITE_LINE_MEMBER(metro_state::vdp_blit_end_w) */ -ADDRESS_MAP_START(metro_state::metro_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM /* External ROM */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") /* External ROM (Banked) */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* External RAM */ -ADDRESS_MAP_END +void metro_state::metro_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); /* External ROM */ + map(0x4000, 0x7fff).bankr("audiobank"); /* External ROM (Banked) */ + map(0x8000, 0x87ff).ram(); /* External RAM */ +} /*****************/ -ADDRESS_MAP_START(metro_state::ymf278_map) - AM_RANGE(0x000000, 0x27ffff) AM_ROM -ADDRESS_MAP_END +void metro_state::ymf278_map(address_map &map) +{ + map(0x000000, 0x27ffff).rom(); +} /*************************************************************************** @@ -533,20 +535,21 @@ READ16_MEMBER(metro_state::balcube_dsw_r) } -ADDRESS_MAP_START(metro_state::balcube_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound - AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // Sound - AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r) // DSW x 3 - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // - AM_RANGE(0x500006, 0x500007) AM_READNOP // - AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0x600000, 0x67ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::balcube_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x300001, 0x300001).r("ymf", FUNC(ymf278b_device::read)); // Sound + map(0x300000, 0x30000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // Sound + map(0x400000, 0x41ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3 + map(0x500000, 0x500001).portr("IN0"); // Inputs + map(0x500002, 0x500003).portr("IN1"); // + map(0x500006, 0x500007).nopr(); // + map(0x500002, 0x500009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0x600000, 0x67ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x6788a2, 0x6788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x6788a4, 0x6788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** @@ -554,139 +557,146 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(metro_state::daitoa_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map ) - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1") // - AM_RANGE(0x200006, 0x200007) AM_READNOP // - AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3 - AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound - AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // Sound - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::daitoa_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x200000, 0x200001).portr("IN0"); // Inputs + map(0x200002, 0x200003).portr("IN1"); // + map(0x200006, 0x200007).nopr(); // + map(0x200002, 0x200009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3 + map(0x400001, 0x400001).r("ymf", FUNC(ymf278b_device::read)); // Sound + map(0x400000, 0x40000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // Sound + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Bang Bang Ball ***************************************************************************/ -ADDRESS_MAP_START(metro_state::bangball_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound - AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r) // DSW x 3 - AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // - AM_RANGE(0xd00006, 0xd00007) AM_READNOP // - AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0xe00000, 0xe7ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::bangball_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xb00001, 0xb00001).r("ymf", FUNC(ymf278b_device::read)); // Sound + map(0xb00000, 0xb0000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // Sound + map(0xc00000, 0xc1ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3 + map(0xd00000, 0xd00001).portr("IN0"); // Inputs + map(0xd00002, 0xd00003).portr("IN1"); // + map(0xd00006, 0xd00007).nopr(); // + map(0xd00002, 0xd00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0xe00000, 0xe7ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0xe788a2, 0xe788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0xe788a4, 0xe788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Battle Bubble ***************************************************************************/ -ADDRESS_MAP_START(metro_state::batlbubl_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0") // - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0") // - AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2") // - AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // read but ignored? - AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound - AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::batlbubl_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x200000, 0x200001).portr("IN1"); // Inputs + map(0x200002, 0x200003).portr("DSW0"); // + map(0x200004, 0x200005).portr("IN0"); // + map(0x200006, 0x200007).portr("IN2"); // + map(0x200002, 0x200009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // read but ignored? + map(0x400001, 0x400001).r("ymf", FUNC(ymf278b_device::read)); // Sound + map(0x400000, 0x40000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Mouse Shooter GoGo ***************************************************************************/ -ADDRESS_MAP_START(metro_state::msgogo_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("COINS") // Inputs - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("JOYS") // - AM_RANGE(0x200006, 0x200007) AM_READNOP // - AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // 3 x DSW - AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_device, read, 0x00ff) // Sound - AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_device, write, 0x00ff) // - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::msgogo_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x200000, 0x200001).portr("COINS"); // Inputs + map(0x200002, 0x200003).portr("JOYS"); // + map(0x200006, 0x200007).nopr(); // + map(0x200002, 0x200009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // 3 x DSW + map(0x400001, 0x400001).r("ymf", FUNC(ymf278b_device::read)); // Sound + map(0x400000, 0x40000b).w("ymf", FUNC(ymf278b_device::write)).umask16(0x00ff); // + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Daitoride ***************************************************************************/ -ADDRESS_MAP_START(metro_state::daitorid_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") // - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") // - AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout -ADDRESS_MAP_END +void metro_state::daitorid_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x47ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x4788a2, 0x4788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x4788a4, 0x4788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x4788a8, 0x4788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0x800000, 0x80ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0xc00000, 0xc00001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU + map(0xc00002, 0xc00003).portr("IN1"); // + map(0xc00004, 0xc00005).portr("DSW0"); // + map(0xc00006, 0xc00007).portr("IN2"); // + map(0xc00002, 0xc00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout +} /*************************************************************************** Dharma Doujou ***************************************************************************/ -ADDRESS_MAP_START(metro_state::dharma_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") // - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") // - AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout -ADDRESS_MAP_END +void metro_state::dharma_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0x800000, 0x87ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0xc00000, 0xc00001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU + map(0xc00002, 0xc00003).portr("IN1"); // + map(0xc00004, 0xc00005).portr("DSW0"); // + map(0xc00006, 0xc00007).portr("IN2"); // + map(0xc00002, 0xc00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout +} /*************************************************************************** Karate Tournament ***************************************************************************/ -ADDRESS_MAP_START(metro_state::karatour_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From Sound CPU - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // - AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // - AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // - AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // - AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4100_device, map) - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::karatour_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x400000, 0x400001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From Sound CPU + map(0x400002, 0x400003).portr("IN0"); // Inputs + map(0x400002, 0x400003).w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout + map(0x400004, 0x400005).portr("IN1"); // + map(0x400006, 0x400007).portr("DSW0"); // + map(0x40000a, 0x40000b).portr("DSW1"); // + map(0x40000c, 0x40000d).portr("IN2"); // + map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4100_device::map)); + map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** @@ -695,59 +705,62 @@ ADDRESS_MAP_END /* same limited tilemap access as karatour */ -ADDRESS_MAP_START(metro_state::kokushi_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x700000, 0x70ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") // - AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout -ADDRESS_MAP_END +void metro_state::kokushi_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x700000, 0x70ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0x800000, 0x87ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0xc00000, 0xc00001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU + map(0xc00002, 0xc00003).portr("IN1"); // Inputs + map(0xc00004, 0xc00005).portr("DSW0"); // + map(0xc00002, 0xc00009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout +} /*************************************************************************** Last Fortress ***************************************************************************/ -ADDRESS_MAP_START(metro_state::lastfort_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4100_device, map) - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1") // - AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2") // - AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW0") // - AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("DSW1") // - AM_RANGE(0xc0000e, 0xc0000f) AM_READ_PORT("IN3") // -ADDRESS_MAP_END +void metro_state::lastfort_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4100_device::map)); + map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0xc00000, 0xc00001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU + map(0xc00002, 0xc00003).w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout + map(0xc00004, 0xc00005).portr("IN0"); // Inputs + map(0xc00006, 0xc00007).portr("IN1"); // + map(0xc00008, 0xc00009).portr("IN2"); // + map(0xc0000a, 0xc0000b).portr("DSW0"); // + map(0xc0000c, 0xc0000d).portr("DSW1"); // + map(0xc0000e, 0xc0000f).portr("IN3"); // +} /* the German version is halfway between lastfort and ladykill (karatour) memory maps */ /* todo: clean up input reads etc. */ -ADDRESS_MAP_START(metro_state::lastforg_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // - AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // - AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // - AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // - AM_RANGE(0x880000, 0x8fffff) AM_DEVICE("vdp", imagetek_i4100_device, map) - AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::lastforg_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x400001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU + map(0x400002, 0x400003).portr("IN0"); // Inputs + map(0x400002, 0x400003).w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout + map(0x400004, 0x400005).portr("IN1"); // + map(0x400006, 0x400007).portr("DSW0"); // + map(0x40000a, 0x40000b).portr("DSW1"); // + map(0x40000c, 0x40000d).portr("IN2"); // + map(0x880000, 0x8fffff).m(m_vdp, FUNC(imagetek_i4100_device::map)); + map(0x8f88a2, 0x8f88a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x8f88a4, 0x8f88a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x8f88a8, 0x8f88a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0xc00000, 0xc0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** @@ -802,50 +815,52 @@ WRITE8_MEMBER(metro_state::gakusai_eeprom_w) m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE ); } -ADDRESS_MAP_START(metro_state::gakusai_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x27ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map ) - AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x278836, 0x278837) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs - AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // - AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 - AM_RANGE(0x500000, 0x500001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Sound - AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc00001) AM_READWRITE8(gakusai_eeprom_r, gakusai_eeprom_w, 0x00ff) // EEPROM - AM_RANGE(0xd00000, 0xd00001) AM_WRITE8(gakusai_oki_bank_hi_w, 0x00ff) - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::gakusai_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x27ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map)); + map(0x278810, 0x27881f).writeonly().share("irq_levels"); // IRQ Levels + map(0x278820, 0x27882f).writeonly().share("irq_vectors"); // IRQ Vectors + map(0x278830, 0x278831).writeonly().share("irq_enable"); // IRQ Enable + map(0x278832, 0x278833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x278836, 0x278837).nopr().w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x278880, 0x278881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs + map(0x278882, 0x278883).portr("IN0"); // + map(0x278888, 0x278889).writeonly().share("input_sel"); // Inputs + map(0x400000, 0x400001).nopw(); // ? 5 + map(0x500001, 0x500001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Sound + map(0x600000, 0x600003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x700001, 0x700001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xc00001, 0xc00001).rw(this, FUNC(metro_state::gakusai_eeprom_r), FUNC(metro_state::gakusai_eeprom_w)); // EEPROM + map(0xd00001, 0xd00001).w(this, FUNC(metro_state::gakusai_oki_bank_hi_w)); + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Mahjong Gakuensai 2 ***************************************************************************/ -ADDRESS_MAP_START(metro_state::gakusai2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x600000, 0x67ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map) - AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x678836, 0x678837) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r) // Inputs - AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0") // - AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x800000, 0x800001) AM_WRITENOP // ? 5 - AM_RANGE(0x900000, 0x900001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Sound bank - AM_RANGE(0xa00000, 0xa00001) AM_WRITE8(gakusai_oki_bank_hi_w, 0x00ff) // - AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0xe00000, 0xe00001) AM_READWRITE8(gakusai_eeprom_r, gakusai_eeprom_w, 0x00ff) // EEPROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::gakusai2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x600000, 0x67ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map)); + map(0x678810, 0x67881f).writeonly().share("irq_levels"); // IRQ Levels + map(0x678820, 0x67882f).writeonly().share("irq_vectors"); // IRQ Vectors + map(0x678830, 0x678831).writeonly().share("irq_enable"); // IRQ Enable + map(0x678832, 0x678833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x678836, 0x678837).nopr().w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x678880, 0x678881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs + map(0x678882, 0x678883).portr("IN0"); // + map(0x678888, 0x678889).writeonly().share("input_sel"); // Inputs + map(0x800000, 0x800001).nopw(); // ? 5 + map(0x900001, 0x900001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Sound bank + map(0xa00001, 0xa00001).w(this, FUNC(metro_state::gakusai_oki_bank_hi_w)); // + map(0xb00001, 0xb00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xc00000, 0xc00003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0xe00001, 0xe00001).rw(this, FUNC(metro_state::gakusai_eeprom_r), FUNC(metro_state::gakusai_eeprom_w)); // EEPROM + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** @@ -877,153 +892,160 @@ WRITE8_MEMBER(metro_state::dokyusp_eeprom_reset_w) m_eeprom->cs_write(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); } -ADDRESS_MAP_START(metro_state::dokyusp_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x27ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map) - AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x278836, 0x278837) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs - AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // - AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 - AM_RANGE(0x500000, 0x500001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Sound - AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc00001) AM_WRITE8(dokyusp_eeprom_reset_w, 0x00ff) // EEPROM - AM_RANGE(0xd00000, 0xd00001) AM_READWRITE8(dokyusp_eeprom_r, dokyusp_eeprom_bit_w, 0x00ff) // EEPROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::dokyusp_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x200000, 0x27ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map)); + map(0x278810, 0x27881f).writeonly().share("irq_levels"); // IRQ Levels + map(0x278820, 0x27882f).writeonly().share("irq_vectors"); // IRQ Vectors + map(0x278830, 0x278831).writeonly().share("irq_enable"); // IRQ Enable + map(0x278832, 0x278833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x278836, 0x278837).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x278880, 0x278881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs + map(0x278882, 0x278883).portr("IN0"); // + map(0x278888, 0x278889).writeonly().share("input_sel"); // + map(0x400000, 0x400001).nopw(); // ? 5 + map(0x500001, 0x500001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Sound + map(0x600000, 0x600003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x700001, 0x700001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xc00001, 0xc00001).w(this, FUNC(metro_state::dokyusp_eeprom_reset_w)); // EEPROM + map(0xd00001, 0xd00001).rw(this, FUNC(metro_state::dokyusp_eeprom_r), FUNC(metro_state::dokyusp_eeprom_bit_w)); // EEPROM + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Mahjong Doukyuusei ***************************************************************************/ -ADDRESS_MAP_START(metro_state::dokyusei_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map) - AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable +void metro_state::dokyusei_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x47ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map)); + map(0x478810, 0x47881f).writeonly().share("irq_levels"); // IRQ Levels + map(0x478820, 0x47882f).writeonly().share("irq_vectors"); // IRQ Vectors + map(0x478830, 0x478831).writeonly().share("irq_enable"); // IRQ Enable // AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r) // IRQ Cause - AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w) // IRQ Acknowledge - AM_RANGE(0x478836, 0x478837) AM_WRITENOP // ? watchdog ? - AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r) // Inputs - AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0") // - AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // 2 x DSW - AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1") // - AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x800000, 0x800001) AM_WRITE8(gakusai_oki_bank_hi_w, 0x00ff) // Samples Bank? - AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4 - AM_RANGE(0xa00000, 0xa00001) AM_WRITE8(gakusai_oki_bank_lo_w, 0x00ff) // Samples Bank - AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) // - AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END + map(0x478832, 0x478833).w(this, FUNC(metro_state::metro_irq_cause_w)); // IRQ Acknowledge + map(0x478836, 0x478837).nopw(); // ? watchdog ? + map(0x478880, 0x478881).r(this, FUNC(metro_state::gakusai_input_r)); // Inputs + map(0x478882, 0x478883).portr("IN0"); // + map(0x478884, 0x478885).portr("DSW0"); // 2 x DSW + map(0x478886, 0x478887).portr("DSW1"); // + map(0x478888, 0x478889).writeonly().share("input_sel"); // Inputs + map(0x800001, 0x800001).w(this, FUNC(metro_state::gakusai_oki_bank_hi_w)); // Samples Bank? + map(0x900000, 0x900001).nopw(); // ? 4 + map(0xa00001, 0xa00001).w(this, FUNC(metro_state::gakusai_oki_bank_lo_w)); // Samples Bank + map(0xc00000, 0xc00003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); // + map(0xd00001, 0xd00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Pang Pom's ***************************************************************************/ -ADDRESS_MAP_START(metro_state::pangpoms_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp", imagetek_i4100_device, map) - AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0x800002, 0x800003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1") // - AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2") // - AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0") // - AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1") // - AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3") // - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::pangpoms_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x47ffff).m(m_vdp, FUNC(imagetek_i4100_device::map)); + map(0x4788a2, 0x4788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x4788a4, 0x4788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x4788a8, 0x4788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0x800000, 0x800001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU + map(0x800002, 0x800003).nopr().w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout + map(0x800004, 0x800005).portr("IN0"); // Inputs + map(0x800006, 0x800007).portr("IN1"); // + map(0x800008, 0x800009).portr("IN2"); // + map(0x80000a, 0x80000b).portr("DSW0"); // + map(0x80000c, 0x80000d).portr("DSW1"); // + map(0x80000e, 0x80000f).portr("IN3"); // + map(0xc00000, 0xc0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Poitto! ***************************************************************************/ -ADDRESS_MAP_START(metro_state::poitto_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") // - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") // - AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc7ffff) AM_DEVICE("vdp", imagetek_i4100_device, map) - AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU -ADDRESS_MAP_END +void metro_state::poitto_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0x800000, 0x800001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU + map(0x800002, 0x800003).portr("IN1"); // + map(0x800004, 0x800005).portr("DSW0"); // + map(0x800006, 0x800007).portr("IN2"); // + map(0x800002, 0x800009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0xc00000, 0xc7ffff).m(m_vdp, FUNC(imagetek_i4100_device::map)); + map(0xc788a2, 0xc788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0xc788a4, 0xc788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0xc788a8, 0xc788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU +} /*************************************************************************** Sky Alert ***************************************************************************/ -ADDRESS_MAP_START(metro_state::skyalert_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0x400002, 0x400003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1") // - AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2") // - AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0") // - AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1") // - AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3") // - AM_RANGE(0x800000, 0x87ffff) AM_DEVICE("vdp", imagetek_i4100_device, map) - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::skyalert_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x400000, 0x400001).rw(this, FUNC(metro_state::metro_soundstatus_r), FUNC(metro_state::metro_soundstatus_w)); // From / To Sound CPU + map(0x400002, 0x400003).nopr().w(this, FUNC(metro_state::metro_coin_lockout_1word_w)); // Coin Lockout + map(0x400004, 0x400005).portr("IN0"); // Inputs + map(0x400006, 0x400007).portr("IN1"); // + map(0x400008, 0x400009).portr("IN2"); // + map(0x40000a, 0x40000b).portr("DSW0"); // + map(0x40000c, 0x40000d).portr("DSW1"); // + map(0x40000e, 0x40000f).portr("IN3"); // + map(0x800000, 0x87ffff).m(m_vdp, FUNC(imagetek_i4100_device::map)); + map(0x8788a2, 0x8788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x8788a4, 0x8788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x8788a8, 0x8788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU + map(0xc00000, 0xc0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** Pururun ***************************************************************************/ -ADDRESS_MAP_START(metro_state::pururun_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") // - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0") // - AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2") // - AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0xc00000, 0xc7ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU -ADDRESS_MAP_END +void metro_state::pururun_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x400000, 0x400001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // To Sound CPU + map(0x400002, 0x400003).portr("IN1"); // + map(0x400004, 0x400005).portr("DSW0"); // + map(0x400006, 0x400007).portr("IN2"); // + map(0x400002, 0x400009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0x800000, 0x80ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0xc00000, 0xc7ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0xc788a2, 0xc788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0xc788a4, 0xc788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0xc788a8, 0xc788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU +} /*************************************************************************** Toride II Adauchi Gaiden ***************************************************************************/ -ADDRESS_MAP_START(metro_state::toride2g_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // Watchdog (R)? / To Sound CPU (W) - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") // - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") // - AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - AM_RANGE(0xc00000, 0xc7ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map ) - AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU -ADDRESS_MAP_END +void metro_state::toride2g_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x400000, 0x40ffff).ram().mirror(0x0f0000); // RAM (mirrored) + map(0x800000, 0x800001).portr("IN0").w(this, FUNC(metro_state::metro_soundstatus_w)); // Watchdog (R)? / To Sound CPU (W) + map(0x800002, 0x800003).portr("IN1"); // + map(0x800004, 0x800005).portr("DSW0"); // + map(0x800006, 0x800007).portr("IN2"); // + map(0x800002, 0x800009).w(this, FUNC(metro_state::metro_coin_lockout_4words_w)); // Coin Lockout + map(0xc00000, 0xc7ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0xc788a2, 0xc788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0xc788a4, 0xc788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0xc788a8, 0xc788a9).w(this, FUNC(metro_state::metro_soundlatch_w)); // To Sound CPU +} /*************************************************************************** @@ -1035,37 +1057,40 @@ WRITE8_MEMBER(metro_state::blzntrnd_sh_bankswitch_w) m_audiobank->set_entry(data & 0x07); } -ADDRESS_MAP_START(metro_state::blzntrnd_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(metro_state::blzntrnd_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(blzntrnd_sh_bankswitch_w) - AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(metro_state::blzntrnd_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x27ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - - AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_k053936_w) AM_SHARE("k053936_ram") // 053936 - AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE("k053936", k053936_device, linectrl_w) // 053936 line control - AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) // 053936 control - - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP // Inputs - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") // - AM_RANGE(0xe00002, 0xe00003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00).cswidth(16) // To Sound CPU - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0") // - AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1") // - AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") // - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::blzntrnd_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("audiobank"); + map(0xe000, 0xffff).ram(); +} + +void metro_state::blzntrnd_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(metro_state::blzntrnd_sh_bankswitch_w)); + map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read)).nopw(); + map(0x80, 0x83).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} + +void metro_state::blzntrnd_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x27ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x2788a2, 0x2788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x2788a4, 0x2788a5).writeonly().share("irq_enable"); // IRQ Enable + + map(0x400000, 0x43ffff).ram().w(this, FUNC(metro_state::metro_k053936_w)).share("k053936_ram"); // 053936 + map(0x500000, 0x500fff).w(m_k053936, FUNC(k053936_device::linectrl_w)); // 053936 line control + map(0x600000, 0x60001f).w(m_k053936, FUNC(k053936_device::ctrl_w)); // 053936 control + + map(0xe00000, 0xe00001).portr("DSW0").nopw(); // Inputs + map(0xe00002, 0xe00003).portr("DSW1"); // + map(0xe00002, 0xe00003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0xff00).cswidth(16); // To Sound CPU + map(0xe00004, 0xe00005).portr("IN0"); // + map(0xe00006, 0xe00007).portr("IN1"); // + map(0xe00008, 0xe00009).portr("IN2"); // + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** @@ -1077,29 +1102,31 @@ WRITE8_MEMBER(metro_state::mouja_sound_rombank_w) m_okibank->set_entry((data >> 3) & 0x07); } -ADDRESS_MAP_START(metro_state::mouja_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x47ffff) AM_DEVICE("vdp3", imagetek_i4300_device, v3_map) - AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w) // IRQ set timer count - AM_RANGE(0x478836, 0x478837) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1") // - AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // - AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2") // - AM_RANGE(0x800000, 0x800001) AM_WRITE8(mouja_sound_rombank_w, 0x00ff) - AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xffff) - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END - -ADDRESS_MAP_START(metro_state::mouja_okimap) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void metro_state::mouja_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x400000, 0x47ffff).m(m_vdp3, FUNC(imagetek_i4300_device::v3_map)); + map(0x478810, 0x47881f).writeonly().share("irq_levels"); // IRQ Levels + map(0x478820, 0x47882f).writeonly().share("irq_vectors"); // IRQ Vectors + map(0x478830, 0x478831).writeonly().share("irq_enable"); // IRQ Enable + map(0x478832, 0x478833).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x478834, 0x478835).w(this, FUNC(metro_state::mouja_irq_timer_ctrl_w)); // IRQ set timer count + map(0x478836, 0x478837).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x478880, 0x478881).portr("IN0"); // Inputs + map(0x478882, 0x478883).portr("IN1"); // + map(0x478884, 0x478885).portr("DSW0"); // + map(0x478886, 0x478887).portr("IN2"); // + map(0x800001, 0x800001).w(this, FUNC(metro_state::mouja_sound_rombank_w)); + map(0xc00000, 0xc00003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); + map(0xd00000, 0xd00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} + +void metro_state::mouja_okimap(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} /*************************************************************************** @@ -1193,27 +1220,28 @@ WRITE16_MEMBER(metro_state::puzzlet_irq_enable_w) // H8/3007 CPU -ADDRESS_MAP_START(metro_state::puzzlet_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x430000, 0x433fff) AM_RAM - AM_RANGE(0x470000, 0x47dfff) AM_RAM +void metro_state::puzzlet_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x430000, 0x433fff).ram(); + map(0x470000, 0x47dfff).ram(); - AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0x580000, 0x580003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) + map(0x500000, 0x500000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x580000, 0x580003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00); // TODO: !!! i4300 !!! - AM_RANGE(0x700000, 0x77ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w) // IRQ Cause - AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_SHARE("irq_enable") // IRQ Enable + map(0x700000, 0x77ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x7788a2, 0x7788a3).w(this, FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause + map(0x7788a4, 0x7788a5).w(this, FUNC(metro_state::puzzlet_irq_enable_w)).share("irq_enable"); // IRQ Enable - AM_RANGE(0x7f2000, 0x7f3fff) AM_RAM + map(0x7f2000, 0x7f3fff).ram(); - AM_RANGE(0x7f8880, 0x7f8881) AM_READ_PORT("IN1") - AM_RANGE(0x7f8884, 0x7f8885) AM_READ_PORT("DSW0") - AM_RANGE(0x7f8886, 0x7f8887) AM_READ_PORT("DSW0") + map(0x7f8880, 0x7f8881).portr("IN1"); + map(0x7f8884, 0x7f8885).portr("DSW0"); + map(0x7f8886, 0x7f8887).portr("DSW0"); - AM_RANGE(0x7f88a2, 0x7f88a3) AM_READ(metro_irq_cause_r) // IRQ Cause -ADDRESS_MAP_END + map(0x7f88a2, 0x7f88a3).r(this, FUNC(metro_state::metro_irq_cause_r)); // IRQ Cause +} WRITE16_MEMBER(metro_state::puzzlet_portb_w) @@ -1221,10 +1249,11 @@ WRITE16_MEMBER(metro_state::puzzlet_portb_w) // popmessage("PORTB %02x", data); } -ADDRESS_MAP_START(metro_state::puzzlet_io_map) - AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("IN2") - AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READ_PORT("DSW0") AM_WRITE(puzzlet_portb_w) -ADDRESS_MAP_END +void metro_state::puzzlet_io_map(address_map &map) +{ + map(h8_device::PORT_7, h8_device::PORT_7).portr("IN2"); + map(h8_device::PORT_B, h8_device::PORT_B).portr("DSW0").w(this, FUNC(metro_state::puzzlet_portb_w)); +} /*************************************************************************** @@ -1266,20 +1295,22 @@ WRITE_LINE_MEMBER(metro_state::vmetal_es8712_irq) m_maincpu->set_input_line(3, state); } -ADDRESS_MAP_START(metro_state::vmetal_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_DEVICE("vdp2", imagetek_i4220_device, v2_map) - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1_P2") AM_WRITE8(vmetal_control_w, 0x00ff) - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3 - AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE(0x400002, 0x400003) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff) - AM_RANGE(0x500000, 0x500001) AM_WRITE8(es8712_reset_w, 0xff00) - AM_RANGE(0x500000, 0x50000d) AM_DEVWRITE8("essnd", es8712_device, write, 0x00ff) - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) -ADDRESS_MAP_END +void metro_state::vmetal_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x17ffff).m(m_vdp2, FUNC(imagetek_i4220_device::v2_map)); + map(0x1788a2, 0x1788a3).rw(this, FUNC(metro_state::metro_irq_cause_r), FUNC(metro_state::metro_irq_cause_w)); // IRQ Cause / IRQ Acknowledge + map(0x1788a4, 0x1788a5).writeonly().share("irq_enable"); // IRQ Enable + map(0x200000, 0x200001).portr("P1_P2"); + map(0x200001, 0x200001).w(this, FUNC(metro_state::vmetal_control_w)); + map(0x200002, 0x200003).portr("SYSTEM"); + map(0x300000, 0x31ffff).r(this, FUNC(metro_state::balcube_dsw_r)); // DSW x 3 + map(0x400001, 0x400001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x400003, 0x400003).w(m_oki, FUNC(okim6295_device::write)); + map(0x500000, 0x500000).w(this, FUNC(metro_state::es8712_reset_w)); + map(0x500000, 0x50000d).w(m_essnd, FUNC(es8712_device::write)).umask16(0x00ff); + map(0xf00000, 0xf0ffff).ram().mirror(0x0f0000); // RAM (mirrored) +} /*************************************************************************** diff --git a/src/mame/drivers/mexico86.cpp b/src/mame/drivers/mexico86.cpp index cf6099ee5bb..74250a8a540 100644 --- a/src/mame/drivers/mexico86.cpp +++ b/src/mame/drivers/mexico86.cpp @@ -80,25 +80,27 @@ READ8_MEMBER(mexico86_state::kiki_ym2203_r) * *************************************/ -ADDRESS_MAP_START(mexico86_state::mexico86_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* banked roms */ - AM_RANGE(0xc000, 0xe7ff) AM_RAM AM_SHARE("mainram") /* shared with sound cpu */ - AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_SHARE("protection_ram") /* shared with mcu */ - AM_RANGE(0xe900, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_WRITE(mexico86_bankswitch_w) /* program and gfx ROM banks */ - AM_RANGE(0xf008, 0xf008) AM_WRITE(mexico86_f008_w) /* cpu reset lines + other unknown stuff */ - AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN3") - AM_RANGE(0xf018, 0xf018) AM_WRITENOP /* watchdog? */ - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("subram") /* communication ram - to connect 4 players's subboard */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mexico86_state::mexico86_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xa7ff) AM_RAM AM_SHARE("mainram") /* shared with main */ - AM_RANGE(0xa800, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc001) AM_READ(kiki_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write) -ADDRESS_MAP_END +void mexico86_state::mexico86_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); /* banked roms */ + map(0xc000, 0xe7ff).ram().share("mainram"); /* shared with sound cpu */ + map(0xe800, 0xe8ff).ram().share("protection_ram"); /* shared with mcu */ + map(0xe900, 0xefff).ram(); + map(0xf000, 0xf000).w(this, FUNC(mexico86_state::mexico86_bankswitch_w)); /* program and gfx ROM banks */ + map(0xf008, 0xf008).w(this, FUNC(mexico86_state::mexico86_f008_w)); /* cpu reset lines + other unknown stuff */ + map(0xf010, 0xf010).portr("IN3"); + map(0xf018, 0xf018).nopw(); /* watchdog? */ + map(0xf800, 0xffff).ram().share("subram"); /* communication ram - to connect 4 players's subboard */ +} + +void mexico86_state::mexico86_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xa7ff).ram().share("mainram"); /* shared with main */ + map(0xa800, 0xbfff).ram(); + map(0xc000, 0xc001).r(this, FUNC(mexico86_state::kiki_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write)); +} WRITE8_MEMBER(mexico86_state::mexico86_sub_output_w) { @@ -108,16 +110,17 @@ WRITE8_MEMBER(mexico86_state::mexico86_sub_output_w) /*---- --x- <unknown, always high, irq ack?>*/ } -ADDRESS_MAP_START(mexico86_state::mexico86_sub_cpu_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM /* sub cpu ram */ - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("subram") /* shared with main */ - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN4") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN5") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN6") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("IN7") - AM_RANGE(0xc004, 0xc004) AM_WRITE(mexico86_sub_output_w) -ADDRESS_MAP_END +void mexico86_state::mexico86_sub_cpu_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); /* sub cpu ram */ + map(0x8000, 0x87ff).ram().share("subram"); /* shared with main */ + map(0xc000, 0xc000).portr("IN4"); + map(0xc001, 0xc001).portr("IN5"); + map(0xc002, 0xc002).portr("IN6"); + map(0xc003, 0xc003).portr("IN7"); + map(0xc004, 0xc004).w(this, FUNC(mexico86_state::mexico86_sub_output_w)); +} /************************************* * diff --git a/src/mame/drivers/meyc8080.cpp b/src/mame/drivers/meyc8080.cpp index 69d7e4b962e..f4137636dc9 100644 --- a/src/mame/drivers/meyc8080.cpp +++ b/src/mame/drivers/meyc8080.cpp @@ -311,22 +311,23 @@ WRITE8_MEMBER(meyc8080_state::meyc8080_dac_4_w) * *************************************/ -ADDRESS_MAP_START(meyc8080_state::meyc8080_map) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("vram0") - AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("vram1") - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("vram2") +void meyc8080_state::meyc8080_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0x3800, 0x3800).portr("IN0"); + map(0x4000, 0x5fff).ram().share("vram0"); + map(0x6000, 0x7fff).ram().share("vram1"); + map(0x8000, 0x9fff).ram().share("vram2"); // AM_RANGE(0xa000, 0xa0ff) AM_RAM // unknown... filled with 00's at boot time or when entering the service mode. - AM_RANGE(0xcd00, 0xcdff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("BSW") AM_WRITE(meyc8080_dac_1_w) - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("IN1") AM_WRITE(lights_1_w) - AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2") AM_WRITE(lights_2_w) - AM_RANGE(0xf008, 0xf008) AM_WRITE(counters_w) - AM_RANGE(0xf00f, 0xf00f) AM_WRITE(meyc8080_dac_2_w) - AM_RANGE(0xf0f0, 0xf0f0) AM_WRITE(meyc8080_dac_3_w) - AM_RANGE(0xf0ff, 0xf0ff) AM_WRITE(meyc8080_dac_4_w) -ADDRESS_MAP_END + map(0xcd00, 0xcdff).ram().share("nvram"); + map(0xf000, 0xf000).portr("BSW").w(this, FUNC(meyc8080_state::meyc8080_dac_1_w)); + map(0xf004, 0xf004).portr("IN1").w(this, FUNC(meyc8080_state::lights_1_w)); + map(0xf006, 0xf006).portr("IN2").w(this, FUNC(meyc8080_state::lights_2_w)); + map(0xf008, 0xf008).w(this, FUNC(meyc8080_state::counters_w)); + map(0xf00f, 0xf00f).w(this, FUNC(meyc8080_state::meyc8080_dac_2_w)); + map(0xf0f0, 0xf0f0).w(this, FUNC(meyc8080_state::meyc8080_dac_3_w)); + map(0xf0ff, 0xf0ff).w(this, FUNC(meyc8080_state::meyc8080_dac_4_w)); +} diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp index f9552ee9e2f..7c5c0900fea 100644 --- a/src/mame/drivers/meyc8088.cpp +++ b/src/mame/drivers/meyc8088.cpp @@ -214,20 +214,21 @@ WRITE8_MEMBER(meyc8088_state::video5_flip_w) } -ADDRESS_MAP_START(meyc8088_state::meyc8088_map) - AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x70000, 0x77fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xb0000, 0xb00ff) AM_DEVREADWRITE("i8155_2", i8155_device, memory_r, memory_w) - AM_RANGE(0xb0800, 0xb0807) AM_DEVREADWRITE("i8155_2", i8155_device, io_r, io_w) - AM_RANGE(0xb1000, 0xb10ff) AM_DEVREADWRITE("i8155_1", i8155_device, memory_r, memory_w) - AM_RANGE(0xb1800, 0xb1807) AM_DEVREADWRITE("i8155_1", i8155_device, io_r, io_w) - AM_RANGE(0xb2000, 0xb2000) AM_WRITE(drive_w) - AM_RANGE(0xb3000, 0xb3000) AM_NOP // i8251A data (debug related, unpopulated on sold boards) - AM_RANGE(0xb3800, 0xb3800) AM_NOP // " - AM_RANGE(0xb4000, 0xb4000) AM_READWRITE(screen_flip_r, screen_flip_w) - AM_RANGE(0xb5000, 0xb5000) AM_READWRITE(video5_flip_r, video5_flip_w) - AM_RANGE(0xf8000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void meyc8088_state::meyc8088_map(address_map &map) +{ + map(0x00000, 0x007ff).ram().share("nvram"); + map(0x70000, 0x77fff).ram().share("vram"); + map(0xb0000, 0xb00ff).rw("i8155_2", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0xb0800, 0xb0807).rw("i8155_2", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xb1000, 0xb10ff).rw("i8155_1", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0xb1800, 0xb1807).rw("i8155_1", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xb2000, 0xb2000).w(this, FUNC(meyc8088_state::drive_w)); + map(0xb3000, 0xb3000).noprw(); // i8251A data (debug related, unpopulated on sold boards) + map(0xb3800, 0xb3800).noprw(); // " + map(0xb4000, 0xb4000).rw(this, FUNC(meyc8088_state::screen_flip_r), FUNC(meyc8088_state::screen_flip_w)); + map(0xb5000, 0xb5000).rw(this, FUNC(meyc8088_state::video5_flip_r), FUNC(meyc8088_state::video5_flip_w)); + map(0xf8000, 0xfffff).rom(); +} READ8_MEMBER(meyc8088_state::meyc8088_input_r) diff --git a/src/mame/drivers/mfabfz.cpp b/src/mame/drivers/mfabfz.cpp index 55622cc9664..5b9349674f9 100644 --- a/src/mame/drivers/mfabfz.cpp +++ b/src/mame/drivers/mfabfz.cpp @@ -66,27 +66,30 @@ private: }; -ADDRESS_MAP_START(mfabfz_state::mfabfz_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mfabfz_state::mfabfz_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0xfe, 0xfe) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0xff, 0xff) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mfabfz_state::mfabfz85_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xfe, 0xfe) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0xff, 0xff) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void mfabfz_state::mfabfz_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom().region("roms", 0); + map(0x8000, 0xffff).ram(); +} + +void mfabfz_state::mfabfz_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xbe, 0xbe).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xbf, 0xbf).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xfe, 0xfe).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xff, 0xff).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} + +void mfabfz_state::mfabfz85_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xfe, 0xfe).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xff, 0xff).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ static INPUT_PORTS_START( mfabfz ) diff --git a/src/mame/drivers/mgames.cpp b/src/mame/drivers/mgames.cpp index 1909f8fb10f..3410c103214 100644 --- a/src/mame/drivers/mgames.cpp +++ b/src/mame/drivers/mgames.cpp @@ -524,24 +524,25 @@ WRITE8_MEMBER(mgames_state::outport7_w) */ -ADDRESS_MAP_START(mgames_state::main_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM +void mgames_state::main_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); // AM_RANGE(0x0158, 0x0158) AM_WRITE (muxed_w) - AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("nvram") /* NVRAM = 2x SCM5101E */ - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("video") /* 4x MM2114N-3 */ - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("SW1") - AM_RANGE(0x8001, 0x8001) AM_READ(mixport_r) /* DIP switch bank 2 + a sort of watchdog */ - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1") - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2") - AM_RANGE(0x8000, 0x8000) AM_WRITE(outport0_w) - AM_RANGE(0x8001, 0x8001) AM_WRITE(outport1_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE(outport2_w) - AM_RANGE(0x8003, 0x8003) AM_WRITE(outport3_w) - AM_RANGE(0x8004, 0x8004) AM_WRITE(outport4_w) - AM_RANGE(0x8005, 0x8005) AM_WRITE(outport5_w) - AM_RANGE(0x8006, 0x8006) AM_WRITE(outport6_w) - AM_RANGE(0x8007, 0x8007) AM_WRITE(outport7_w) -ADDRESS_MAP_END + map(0x3800, 0x38ff).ram().share("nvram"); /* NVRAM = 2x SCM5101E */ + map(0x4000, 0x47ff).ram().share("video"); /* 4x MM2114N-3 */ + map(0x8000, 0x8000).portr("SW1"); + map(0x8001, 0x8001).r(this, FUNC(mgames_state::mixport_r)); /* DIP switch bank 2 + a sort of watchdog */ + map(0x8002, 0x8002).portr("IN1"); + map(0x8003, 0x8003).portr("IN2"); + map(0x8000, 0x8000).w(this, FUNC(mgames_state::outport0_w)); + map(0x8001, 0x8001).w(this, FUNC(mgames_state::outport1_w)); + map(0x8002, 0x8002).w(this, FUNC(mgames_state::outport2_w)); + map(0x8003, 0x8003).w(this, FUNC(mgames_state::outport3_w)); + map(0x8004, 0x8004).w(this, FUNC(mgames_state::outport4_w)); + map(0x8005, 0x8005).w(this, FUNC(mgames_state::outport5_w)); + map(0x8006, 0x8006).w(this, FUNC(mgames_state::outport6_w)); + map(0x8007, 0x8007).w(this, FUNC(mgames_state::outport7_w)); +} static INPUT_PORTS_START( mgames ) diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp index 36654e402dc..bb2fa0391ec 100644 --- a/src/mame/drivers/mgavegas.cpp +++ b/src/mame/drivers/mgavegas.cpp @@ -422,16 +422,17 @@ READ8_MEMBER(mgavegas_state::ay8910_b_r) * Memory Map Information * *************************/ -ADDRESS_MAP_START(mgavegas_state::mgavegas_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xa003) AM_READWRITE(r_a0,w_a0) // AY-3-8910 - AM_RANGE(0xc000, 0xc001) AM_WRITE(cso1_w) // /CSout1 - AM_RANGE(0xc400, 0xc401) AM_WRITE(cso2_w) // /CSout2 - AM_RANGE(0xc800, 0xc801) AM_READWRITE(csoki_r,csoki_w) // /CSoki +void mgavegas_state::mgavegas_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram().share("nvram"); + map(0xa000, 0xa003).rw(this, FUNC(mgavegas_state::r_a0), FUNC(mgavegas_state::w_a0)); // AY-3-8910 + map(0xc000, 0xc001).w(this, FUNC(mgavegas_state::cso1_w)); // /CSout1 + map(0xc400, 0xc401).w(this, FUNC(mgavegas_state::cso2_w)); // /CSout2 + map(0xc800, 0xc801).rw(this, FUNC(mgavegas_state::csoki_r), FUNC(mgavegas_state::csoki_w)); // /CSoki //AM_RANGE(0xcc00, 0xcc01) AM_READWRITE(cso3_r,cso3_w) // /CSout3 unused //AM_RANGE(0xe000, 0xe003) AM_READWRITE(r_e0,w_e0) // /CSaux unused -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/mgolf.cpp b/src/mame/drivers/mgolf.cpp index f6a475553cd..16a1e2a9277 100644 --- a/src/mame/drivers/mgolf.cpp +++ b/src/mame/drivers/mgolf.cpp @@ -230,34 +230,35 @@ WRITE8_MEMBER(mgolf_state::wram_w) -ADDRESS_MAP_START(mgolf_state::cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - - AM_RANGE(0x0040, 0x0040) AM_READ_PORT("40") - AM_RANGE(0x0041, 0x0041) AM_READ(dial_r) - AM_RANGE(0x0060, 0x0060) AM_READ_PORT("60") - AM_RANGE(0x0061, 0x0061) AM_READ(misc_r) - AM_RANGE(0x0080, 0x00ff) AM_READ(wram_r) - AM_RANGE(0x0180, 0x01ff) AM_READ(wram_r) - AM_RANGE(0x0800, 0x0bff) AM_READONLY - - AM_RANGE(0x0000, 0x0009) AM_WRITENOP - AM_RANGE(0x0024, 0x0024) AM_WRITENOP - AM_RANGE(0x0028, 0x0028) AM_WRITENOP - AM_RANGE(0x0042, 0x0042) AM_WRITENOP - AM_RANGE(0x0044, 0x0044) AM_WRITENOP /* watchdog? */ - AM_RANGE(0x0046, 0x0046) AM_WRITENOP - AM_RANGE(0x0060, 0x0060) AM_WRITENOP - AM_RANGE(0x0061, 0x0061) AM_WRITENOP - AM_RANGE(0x006a, 0x006a) AM_WRITENOP - AM_RANGE(0x006c, 0x006c) AM_WRITENOP - AM_RANGE(0x006d, 0x006d) AM_WRITENOP - AM_RANGE(0x0080, 0x00ff) AM_WRITE(wram_w) - AM_RANGE(0x0180, 0x01ff) AM_WRITE(wram_w) - AM_RANGE(0x0800, 0x0bff) AM_WRITE(vram_w) AM_SHARE("video_ram") - - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void mgolf_state::cpu_map(address_map &map) +{ + map.global_mask(0x3fff); + + map(0x0040, 0x0040).portr("40"); + map(0x0041, 0x0041).r(this, FUNC(mgolf_state::dial_r)); + map(0x0060, 0x0060).portr("60"); + map(0x0061, 0x0061).r(this, FUNC(mgolf_state::misc_r)); + map(0x0080, 0x00ff).r(this, FUNC(mgolf_state::wram_r)); + map(0x0180, 0x01ff).r(this, FUNC(mgolf_state::wram_r)); + map(0x0800, 0x0bff).readonly(); + + map(0x0000, 0x0009).nopw(); + map(0x0024, 0x0024).nopw(); + map(0x0028, 0x0028).nopw(); + map(0x0042, 0x0042).nopw(); + map(0x0044, 0x0044).nopw(); /* watchdog? */ + map(0x0046, 0x0046).nopw(); + map(0x0060, 0x0060).nopw(); + map(0x0061, 0x0061).nopw(); + map(0x006a, 0x006a).nopw(); + map(0x006c, 0x006c).nopw(); + map(0x006d, 0x006d).nopw(); + map(0x0080, 0x00ff).w(this, FUNC(mgolf_state::wram_w)); + map(0x0180, 0x01ff).w(this, FUNC(mgolf_state::wram_w)); + map(0x0800, 0x0bff).w(this, FUNC(mgolf_state::vram_w)).share("video_ram"); + + map(0x2000, 0x3fff).rom(); +} static INPUT_PORTS_START( mgolf ) diff --git a/src/mame/drivers/mhavoc.cpp b/src/mame/drivers/mhavoc.cpp index 25cd53766e4..1d7c6160a90 100644 --- a/src/mame/drivers/mhavoc.cpp +++ b/src/mame/drivers/mhavoc.cpp @@ -277,28 +277,29 @@ WRITE8_MEMBER(mhavoc_state::dual_pokey_w) * *************************************/ -ADDRESS_MAP_START(mhavoc_state::alpha_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x07ff) AM_RAMBANK("bank1") AM_SHARE("zram0") - AM_RANGE(0x0800, 0x09ff) AM_RAM - AM_RANGE(0x0a00, 0x0fff) AM_RAMBANK("bank1") AM_SHARE("zram1") - AM_RANGE(0x1000, 0x1000) AM_READ(mhavoc_gamma_r) /* Gamma Read Port */ - AM_RANGE(0x1200, 0x1200) AM_READ_PORT("IN0") AM_WRITENOP /* Alpha Input Port 0 */ - AM_RANGE(0x1400, 0x141f) AM_RAM AM_SHARE("colorram") /* ColorRAM */ - AM_RANGE(0x1600, 0x1600) AM_WRITE(mhavoc_out_0_w) /* Control Signals */ - AM_RANGE(0x1640, 0x1640) AM_DEVWRITE("avg", avg_mhavoc_device, go_w) /* Vector Generator GO */ - AM_RANGE(0x1680, 0x1680) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* Watchdog Clear */ - AM_RANGE(0x16c0, 0x16c0) AM_DEVWRITE("avg", avg_mhavoc_device, reset_w) /* Vector Generator Reset */ - AM_RANGE(0x1700, 0x1700) AM_WRITE(mhavoc_alpha_irq_ack_w) /* IRQ ack */ - AM_RANGE(0x1740, 0x1740) AM_WRITE(mhavoc_rom_banksel_w) /* Program ROM Page Select */ - AM_RANGE(0x1780, 0x1780) AM_WRITE(mhavoc_ram_banksel_w) /* Program RAM Page Select */ - AM_RANGE(0x17c0, 0x17c0) AM_WRITE(mhavoc_gamma_w) /* Gamma Communication Write Port */ - AM_RANGE(0x1800, 0x1fff) AM_RAM /* Shared Beta Ram */ - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") /* Paged Program ROM (32K) */ - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("vectorram") AM_REGION("alpha", 0x4000) /* Vector Generator RAM */ - AM_RANGE(0x5000, 0x7fff) AM_ROM /* Vector ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* Program ROM (32K) */ -ADDRESS_MAP_END +void mhavoc_state::alpha_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x07ff).bankrw("bank1").share("zram0"); + map(0x0800, 0x09ff).ram(); + map(0x0a00, 0x0fff).bankrw("bank1").share("zram1"); + map(0x1000, 0x1000).r(this, FUNC(mhavoc_state::mhavoc_gamma_r)); /* Gamma Read Port */ + map(0x1200, 0x1200).portr("IN0").nopw(); /* Alpha Input Port 0 */ + map(0x1400, 0x141f).ram().share("colorram"); /* ColorRAM */ + map(0x1600, 0x1600).w(this, FUNC(mhavoc_state::mhavoc_out_0_w)); /* Control Signals */ + map(0x1640, 0x1640).w("avg", FUNC(avg_mhavoc_device::go_w)); /* Vector Generator GO */ + map(0x1680, 0x1680).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog Clear */ + map(0x16c0, 0x16c0).w("avg", FUNC(avg_mhavoc_device::reset_w)); /* Vector Generator Reset */ + map(0x1700, 0x1700).w(this, FUNC(mhavoc_state::mhavoc_alpha_irq_ack_w)); /* IRQ ack */ + map(0x1740, 0x1740).w(this, FUNC(mhavoc_state::mhavoc_rom_banksel_w)); /* Program ROM Page Select */ + map(0x1780, 0x1780).w(this, FUNC(mhavoc_state::mhavoc_ram_banksel_w)); /* Program RAM Page Select */ + map(0x17c0, 0x17c0).w(this, FUNC(mhavoc_state::mhavoc_gamma_w)); /* Gamma Communication Write Port */ + map(0x1800, 0x1fff).ram(); /* Shared Beta Ram */ + map(0x2000, 0x3fff).bankr("bank2"); /* Paged Program ROM (32K) */ + map(0x4000, 0x4fff).ram().share("vectorram").region("alpha", 0x4000); /* Vector Generator RAM */ + map(0x5000, 0x7fff).rom(); /* Vector ROM */ + map(0x8000, 0xffff).rom(); /* Program ROM (32K) */ +} @@ -329,20 +330,21 @@ a15 a14 a13 a12 a11 a10 a09 a08 a07 a06 a05 a04 a03 a02 a01 a00 1 x * * * * * * * * * * * * * * R ROM 27128 @9S */ -ADDRESS_MAP_START(mhavoc_state::gamma_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) /* Program RAM (2K) */ - AM_RANGE(0x2000, 0x203f) AM_READWRITE(quad_pokeyn_r, quad_pokeyn_w) AM_MIRROR(0x07C0) /* Quad Pokey read/write */ - AM_RANGE(0x2800, 0x2800) AM_READ_PORT("IN1") AM_MIRROR(0x07ff) /* Gamma Input Port */ - AM_RANGE(0x3000, 0x3000) AM_READ(mhavoc_alpha_r) AM_MIRROR(0x07ff) /* Alpha Comm. Read Port */ - AM_RANGE(0x3800, 0x3803) AM_READ_PORT("DIAL") AM_MIRROR(0x07fc) /* Roller Controller Input */ - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW2") AM_WRITE(mhavoc_gamma_irq_ack_w) AM_MIRROR(0x07ff) /* DSW at 8S, IRQ Acknowledge */ - AM_RANGE(0x4800, 0x4800) AM_WRITE(mhavoc_out_1_w) AM_MIRROR(0x07ff) /* Coin Counters */ - AM_RANGE(0x5000, 0x5000) AM_WRITE(mhavoc_alpha_w) AM_MIRROR(0x07ff) /* Alpha Comm. Write Port */ +void mhavoc_state::gamma_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().mirror(0x1800); /* Program RAM (2K) */ + map(0x2000, 0x203f).rw(this, FUNC(mhavoc_state::quad_pokeyn_r), FUNC(mhavoc_state::quad_pokeyn_w)).mirror(0x07C0); /* Quad Pokey read/write */ + map(0x2800, 0x2800).portr("IN1").mirror(0x07ff); /* Gamma Input Port */ + map(0x3000, 0x3000).r(this, FUNC(mhavoc_state::mhavoc_alpha_r)).mirror(0x07ff); /* Alpha Comm. Read Port */ + map(0x3800, 0x3803).portr("DIAL").mirror(0x07fc); /* Roller Controller Input */ + map(0x4000, 0x4000).portr("DSW2").w(this, FUNC(mhavoc_state::mhavoc_gamma_irq_ack_w)).mirror(0x07ff); /* DSW at 8S, IRQ Acknowledge */ + map(0x4800, 0x4800).w(this, FUNC(mhavoc_state::mhavoc_out_1_w)).mirror(0x07ff); /* Coin Counters */ + map(0x5000, 0x5000).w(this, FUNC(mhavoc_state::mhavoc_alpha_w)).mirror(0x07ff); /* Alpha Comm. Write Port */ //AM_RANGE(0x5800, 0x5800) AM_WRITE(mhavocrv_speech_data_w) AM_MIRROR(0x06ff) /* TMS5220 data write */ //AM_RANGE(0x5900, 0x5900) AM_WRITE(mhavocrv_speech_strobe_w) AM_MIRROR(0x06ff) /* TMS5220 /WS strobe write */ - AM_RANGE(0x6000, 0x61ff) AM_RAM AM_SHARE("nvram") AM_MIRROR(0x1e00) /* EEROM */ - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_MIRROR(0x4000) /* Program ROM (16K) */ -ADDRESS_MAP_END + map(0x6000, 0x61ff).ram().share("nvram").mirror(0x1e00); /* EEROM */ + map(0x8000, 0xbfff).rom().mirror(0x4000); /* Program ROM (16K) */ +} @@ -353,29 +355,30 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mhavoc_state::alphaone_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x07ff) AM_RAMBANK("bank1") AM_SHARE("zram0") - AM_RANGE(0x0800, 0x09ff) AM_RAM - AM_RANGE(0x0a00, 0x0fff) AM_RAMBANK("bank1") AM_SHARE("zram1") - AM_RANGE(0x1020, 0x103f) AM_READWRITE(dual_pokey_r, dual_pokey_w) - AM_RANGE(0x1040, 0x1040) AM_READ_PORT("IN0") AM_WRITENOP /* Alpha Input Port 0 */ - AM_RANGE(0x1060, 0x1060) AM_READ_PORT("IN1") /* Gamma Input Port */ - AM_RANGE(0x1080, 0x1080) AM_READ_PORT("DIAL") /* Roller Controller Input*/ - AM_RANGE(0x10a0, 0x10a0) AM_WRITE(alphaone_out_0_w) /* Control Signals */ - AM_RANGE(0x10a4, 0x10a4) AM_DEVWRITE("avg", avg_mhavoc_device, go_w) /* Vector Generator GO */ - AM_RANGE(0x10a8, 0x10a8) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* Watchdog Clear */ - AM_RANGE(0x10ac, 0x10ac) AM_DEVWRITE("avg", avg_mhavoc_device, reset_w) /* Vector Generator Reset */ - AM_RANGE(0x10b0, 0x10b0) AM_WRITE(mhavoc_alpha_irq_ack_w) /* IRQ ack */ - AM_RANGE(0x10b4, 0x10b4) AM_WRITE(mhavoc_rom_banksel_w) - AM_RANGE(0x10b8, 0x10b8) AM_WRITE(mhavoc_ram_banksel_w) - AM_RANGE(0x10e0, 0x10ff) AM_WRITEONLY AM_SHARE("colorram") /* ColorRAM */ - AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") /* EEROM */ - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") /* Paged Program ROM (32K) */ - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("vectorram") AM_REGION("alpha", 0x4000) /* Vector Generator RAM */ - AM_RANGE(0x5000, 0x7fff) AM_ROM /* Vector ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* Program ROM (32K) */ -ADDRESS_MAP_END +void mhavoc_state::alphaone_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x07ff).bankrw("bank1").share("zram0"); + map(0x0800, 0x09ff).ram(); + map(0x0a00, 0x0fff).bankrw("bank1").share("zram1"); + map(0x1020, 0x103f).rw(this, FUNC(mhavoc_state::dual_pokey_r), FUNC(mhavoc_state::dual_pokey_w)); + map(0x1040, 0x1040).portr("IN0").nopw(); /* Alpha Input Port 0 */ + map(0x1060, 0x1060).portr("IN1"); /* Gamma Input Port */ + map(0x1080, 0x1080).portr("DIAL"); /* Roller Controller Input*/ + map(0x10a0, 0x10a0).w(this, FUNC(mhavoc_state::alphaone_out_0_w)); /* Control Signals */ + map(0x10a4, 0x10a4).w("avg", FUNC(avg_mhavoc_device::go_w)); /* Vector Generator GO */ + map(0x10a8, 0x10a8).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog Clear */ + map(0x10ac, 0x10ac).w("avg", FUNC(avg_mhavoc_device::reset_w)); /* Vector Generator Reset */ + map(0x10b0, 0x10b0).w(this, FUNC(mhavoc_state::mhavoc_alpha_irq_ack_w)); /* IRQ ack */ + map(0x10b4, 0x10b4).w(this, FUNC(mhavoc_state::mhavoc_rom_banksel_w)); + map(0x10b8, 0x10b8).w(this, FUNC(mhavoc_state::mhavoc_ram_banksel_w)); + map(0x10e0, 0x10ff).writeonly().share("colorram"); /* ColorRAM */ + map(0x1800, 0x18ff).ram().share("nvram"); /* EEROM */ + map(0x2000, 0x3fff).bankr("bank2"); /* Paged Program ROM (32K) */ + map(0x4000, 0x4fff).ram().share("vectorram").region("alpha", 0x4000); /* Vector Generator RAM */ + map(0x5000, 0x7fff).rom(); /* Vector ROM */ + map(0x8000, 0xffff).rom(); /* Program ROM (32K) */ +} diff --git a/src/mame/drivers/mice.cpp b/src/mame/drivers/mice.cpp index d4cb1ba9ceb..53ccec98d62 100644 --- a/src/mame/drivers/mice.cpp +++ b/src/mame/drivers/mice.cpp @@ -56,44 +56,48 @@ private: }; -ADDRESS_MAP_START(mice_state::mice_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("mcp", 0) - AM_RANGE(0x4400, 0x47ff) AM_RAM //(U13) - AM_RANGE(0x6000, 0x60ff) AM_DEVREADWRITE("rpt", i8155_device, memory_r, memory_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mice_state::mice_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("rpt", i8155_device, io_r, io_w) - AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mice_state::mice2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("cep", 0) - AM_RANGE(0x9000, 0x90ff) AM_DEVREADWRITE("rpt", i8155_device, memory_r, memory_w) - AM_RANGE(0xb000, 0xb7ff) AM_RAM - AM_RANGE(0xe800, 0xe8ff) AM_DEVREADWRITE("rtt8155", i8155_device, memory_r, memory_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mice_state::mice2_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x90, 0x97) AM_DEVREADWRITE("rpt", i8155_device, io_r, io_w) - AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("rttppi1", i8255_device, read, write) - AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("rttppi2", i8255_device, read, write) - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("rttppi3", i8255_device, read, write) - AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("rttppi4", i8255_device, read, write) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("rttppi5", i8255_device, read, write) - AM_RANGE(0xe8, 0xed) AM_DEVREADWRITE("rtt8155", i8155_device, io_r, io_w) -ADDRESS_MAP_END +void mice_state::mice_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom().region("mcp", 0); + map(0x4400, 0x47ff).ram(); //(U13) + map(0x6000, 0x60ff).rw("rpt", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); +} + +void mice_state::mice_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x50, 0x50).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x51, 0x51).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x60, 0x67).rw("rpt", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x70, 0x73).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void mice_state::mice2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom().region("cep", 0); + map(0x9000, 0x90ff).rw("rpt", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0xb000, 0xb7ff).ram(); + map(0xe800, 0xe8ff).rw("rtt8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); +} + +void mice_state::mice2_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x90, 0x97).rw("rpt", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xa0, 0xa3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc0, 0xc3).rw("rttppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc8, 0xcb).rw("rttppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xd0, 0xd3).rw("rttppi3", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xd8, 0xdb).rw("rttppi4", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe0, 0xe3).rw("rttppi5", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe8, 0xed).rw("rtt8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} /* Input ports */ static INPUT_PORTS_START( mice ) diff --git a/src/mame/drivers/micral.cpp b/src/mame/drivers/micral.cpp index ef68cce2227..d0641c1540b 100644 --- a/src/mame/drivers/micral.cpp +++ b/src/mame/drivers/micral.cpp @@ -147,43 +147,46 @@ WRITE8_MEMBER( micral_state::video_w ) } -ADDRESS_MAP_START(micral_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xfeff) AM_ROM - AM_RANGE(0xff00, 0xffef) AM_RAM - AM_RANGE(0xfff6, 0xfff7) // AM_WRITENOP // unknown ports - AM_RANGE(0xfff8, 0xfff9) AM_READWRITE(video_r, video_w) - AM_RANGE(0xfffa, 0xfffa) AM_READ(keyin_r) - AM_RANGE(0xfffb, 0xfffb) AM_READ(unk_r) - AM_RANGE(0xfffc, 0xfffc) AM_READ(status_r) - AM_RANGE(0xfffd, 0xffff) // more unknown ports -ADDRESS_MAP_END - -ADDRESS_MAP_START(micral_state::mem_kbd) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_RAM // byte returned to main cpu after receiving irq - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("X0") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("X1") - AM_RANGE(0x8004, 0x8004) AM_READ_PORT("X2") - AM_RANGE(0x8008, 0x8008) AM_READ_PORT("X3") - AM_RANGE(0x8010, 0x8010) AM_READ_PORT("X4") - AM_RANGE(0x8020, 0x8020) AM_READ_PORT("X5") - AM_RANGE(0x8040, 0x8040) AM_READ_PORT("X6") - AM_RANGE(0x8080, 0x8080) AM_READ_PORT("X7") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("X8") - AM_RANGE(0x8200, 0x8200) AM_READ_PORT("X9") - AM_RANGE(0x8400, 0x8400) AM_READ_PORT("X10") - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("X11") - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("X12") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("X13") -ADDRESS_MAP_END - -ADDRESS_MAP_START(micral_state::io_kbd) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("X14") -ADDRESS_MAP_END +void micral_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xf7ff).ram(); + map(0xf800, 0xfeff).rom(); + map(0xff00, 0xffef).ram(); + map(0xfff6, 0xfff7); // AM_WRITENOP // unknown ports + map(0xfff8, 0xfff9).rw(this, FUNC(micral_state::video_r), FUNC(micral_state::video_w)); + map(0xfffa, 0xfffa).r(this, FUNC(micral_state::keyin_r)); + map(0xfffb, 0xfffb).r(this, FUNC(micral_state::unk_r)); + map(0xfffc, 0xfffc).r(this, FUNC(micral_state::status_r)); + map(0xfffd, 0xffff); // more unknown ports +} + +void micral_state::mem_kbd(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x8000, 0x8000).ram(); // byte returned to main cpu after receiving irq + map(0x8001, 0x8001).portr("X0"); + map(0x8002, 0x8002).portr("X1"); + map(0x8004, 0x8004).portr("X2"); + map(0x8008, 0x8008).portr("X3"); + map(0x8010, 0x8010).portr("X4"); + map(0x8020, 0x8020).portr("X5"); + map(0x8040, 0x8040).portr("X6"); + map(0x8080, 0x8080).portr("X7"); + map(0x8100, 0x8100).portr("X8"); + map(0x8200, 0x8200).portr("X9"); + map(0x8400, 0x8400).portr("X10"); + map(0x8800, 0x8800).portr("X11"); + map(0x9000, 0x9000).portr("X12"); + map(0xa000, 0xa000).portr("X13"); +} + +void micral_state::io_kbd(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("X14"); +} /* Input ports */ static INPUT_PORTS_START( micral ) diff --git a/src/mame/drivers/micro20.cpp b/src/mame/drivers/micro20.cpp index 823857d315f..cbe6ea18c5e 100644 --- a/src/mame/drivers/micro20.cpp +++ b/src/mame/drivers/micro20.cpp @@ -140,18 +140,19 @@ READ32_MEMBER(micro20_state::buserror_r) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(micro20_state::micro20_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x00200000, 0x002fffff) AM_READ(buserror_r) - AM_RANGE(0x00800000, 0x0083ffff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, status_r, cmd_w, 0xff000000) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, track_r, track_w, 0x00ff0000) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, sector_r, sector_w, 0x0000ff00) - AM_RANGE(0xffff8000, 0xffff8003) AM_DEVREADWRITE8(FDC_TAG, wd1772_device, data_r, data_w, 0x000000ff) - AM_RANGE(0xffff8080, 0xffff808f) AM_DEVREADWRITE8(DUART_A_TAG, mc68681_device, read, write, 0xffffffff) - AM_RANGE(0xffff80a0, 0xffff80af) AM_DEVREADWRITE8(DUART_B_TAG, mc68681_device, read, write, 0xffffffff) - AM_RANGE(0xffff80c0, 0xffff80df) AM_DEVREADWRITE8(PIT_TAG, pit68230_device, read, write, 0xffffffff) -ADDRESS_MAP_END +void micro20_state::micro20_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("mainram"); + map(0x00200000, 0x002fffff).r(this, FUNC(micro20_state::buserror_r)); + map(0x00800000, 0x0083ffff).rom().region("bootrom", 0); + map(0xffff8000, 0xffff8000).rw(FDC_TAG, FUNC(wd1772_device::status_r), FUNC(wd1772_device::cmd_w)); + map(0xffff8001, 0xffff8001).rw(FDC_TAG, FUNC(wd1772_device::track_r), FUNC(wd1772_device::track_w)); + map(0xffff8002, 0xffff8002).rw(FDC_TAG, FUNC(wd1772_device::sector_r), FUNC(wd1772_device::sector_w)); + map(0xffff8003, 0xffff8003).rw(FDC_TAG, FUNC(wd1772_device::data_r), FUNC(wd1772_device::data_w)); + map(0xffff8080, 0xffff808f).rw(DUART_A_TAG, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); + map(0xffff80a0, 0xffff80af).rw(DUART_B_TAG, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); + map(0xffff80c0, 0xffff80df).rw(m_pit, FUNC(pit68230_device::read), FUNC(pit68230_device::write)); +} MACHINE_CONFIG_START(micro20_state::micro20) /* basic machine hardware */ diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp index 84f3353c286..c76c1e6dd89 100644 --- a/src/mame/drivers/micro3d.cpp +++ b/src/mame/drivers/micro3d.cpp @@ -204,22 +204,23 @@ INPUT_PORTS_END * *************************************/ -ADDRESS_MAP_START(micro3d_state::hostmem) - AM_RANGE(0x000000, 0x143fff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x900000, 0x900001) AM_WRITE(host_drmath_int_w) - AM_RANGE(0x920000, 0x920001) AM_READ_PORT("INPUTS_C_D") - AM_RANGE(0x940000, 0x940001) AM_READ_PORT("INPUTS_A_B") - AM_RANGE(0x960000, 0x960001) AM_WRITE(micro3d_reset_w) - AM_RANGE(0x980000, 0x980001) AM_DEVREADWRITE8("adc", adc0844_device, read, write, 0x00ff) - AM_RANGE(0x9a0000, 0x9a0007) AM_DEVREADWRITE("vgb", tms34010_device, host_r, host_w) - AM_RANGE(0x9c0000, 0x9c0001) AM_NOP /* Lamps */ - AM_RANGE(0x9e0000, 0x9e002f) AM_DEVREADWRITE8("mfp", mc68901_device, read, write, 0xff00) - AM_RANGE(0xa00000, 0xa0003f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0xff00) - AM_RANGE(0xa20000, 0xa20001) AM_READ(micro3d_encoder_h_r) - AM_RANGE(0xa40002, 0xa40003) AM_READ(micro3d_encoder_l_r) -ADDRESS_MAP_END +void micro3d_state::hostmem(address_map &map) +{ + map(0x000000, 0x143fff).rom(); + map(0x200000, 0x20ffff).ram().share("nvram"); + map(0x800000, 0x83ffff).ram().share("shared_ram"); + map(0x900000, 0x900001).w(this, FUNC(micro3d_state::host_drmath_int_w)); + map(0x920000, 0x920001).portr("INPUTS_C_D"); + map(0x940000, 0x940001).portr("INPUTS_A_B"); + map(0x960000, 0x960001).w(this, FUNC(micro3d_state::micro3d_reset_w)); + map(0x980001, 0x980001).rw("adc", FUNC(adc0844_device::read), FUNC(adc0844_device::write)); + map(0x9a0000, 0x9a0007).rw(m_vgb, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)); + map(0x9c0000, 0x9c0001).noprw(); /* Lamps */ + map(0x9e0000, 0x9e002f).rw("mfp", FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0xff00); + map(0xa00000, 0xa0003f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00); + map(0xa20000, 0xa20001).r(this, FUNC(micro3d_state::micro3d_encoder_h_r)); + map(0xa40002, 0xa40003).r(this, FUNC(micro3d_state::micro3d_encoder_l_r)); +} /************************************* @@ -228,20 +229,21 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(micro3d_state::vgbmem) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("sprite_vram") - AM_RANGE(0x00800000, 0x00bfffff) AM_RAM - AM_RANGE(0x00c00000, 0x00c0000f) AM_READ_PORT("VGB_SW") - AM_RANGE(0x00e00000, 0x00e0000f) AM_WRITE(micro3d_xfer3dk_w) - AM_RANGE(0x02000000, 0x0200ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // clut - AM_RANGE(0x02600000, 0x0260000f) AM_WRITE(micro3d_creg_w) - AM_RANGE(0x02c00000, 0x02c0003f) AM_READ8(vgb_uart_r, 0x00ff) - AM_RANGE(0x02e00000, 0x02e0003f) AM_WRITE8(vgb_uart_w, 0x00ff) - AM_RANGE(0x03800000, 0x03dfffff) AM_ROM AM_REGION("tms_gfx", 0) - AM_RANGE(0x03e00000, 0x03ffffff) AM_ROM AM_REGION("tms34010", 0) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("vgb", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("tms34010", 0) -ADDRESS_MAP_END +void micro3d_state::vgbmem(address_map &map) +{ + map(0x00000000, 0x007fffff).ram().share("sprite_vram"); + map(0x00800000, 0x00bfffff).ram(); + map(0x00c00000, 0x00c0000f).portr("VGB_SW"); + map(0x00e00000, 0x00e0000f).w(this, FUNC(micro3d_state::micro3d_xfer3dk_w)); + map(0x02000000, 0x0200ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // clut + map(0x02600000, 0x0260000f).w(this, FUNC(micro3d_state::micro3d_creg_w)); + map(0x02c00000, 0x02c0003f).r(this, FUNC(micro3d_state::vgb_uart_r)).umask16(0x00ff); + map(0x02e00000, 0x02e0003f).w(this, FUNC(micro3d_state::vgb_uart_w)).umask16(0x00ff); + map(0x03800000, 0x03dfffff).rom().region("tms_gfx", 0); + map(0x03e00000, 0x03ffffff).rom().region("tms34010", 0); + map(0xc0000000, 0xc00001ff).rw(m_vgb, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xffe00000, 0xffffffff).rom().region("tms34010", 0); +} /************************************* @@ -250,24 +252,26 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(micro3d_state::drmath_prg) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(micro3d_state::drmath_data) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("drmath", 0) - AM_RANGE(0x00800000, 0x0083ffff) AM_READWRITE(micro3d_shared_r, micro3d_shared_w) - AM_RANGE(0x00400000, 0x004fffff) AM_RAM - AM_RANGE(0x00500000, 0x005fffff) AM_RAM - AM_RANGE(0x00a00000, 0x00a00003) AM_WRITE(drmath_int_w) - AM_RANGE(0x01000000, 0x01000003) AM_WRITE(micro3d_mac1_w) - AM_RANGE(0x01000004, 0x01000007) AM_READWRITE(micro3d_mac2_r, micro3d_mac2_w) - AM_RANGE(0x01200000, 0x01203fff) AM_RAM AM_SHARE("mac_sram") - AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(micro3d_pipe_r, micro3d_fifo_w) - AM_RANGE(0x01600000, 0x01600003) AM_WRITE(drmath_intr2_ack) - AM_RANGE(0x01800000, 0x01800003) AM_WRITE(micro3d_alt_fifo_w) - AM_RANGE(0x03fffff0, 0x03fffff7) AM_DEVREADWRITE8("scc", z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0x000000ff) -ADDRESS_MAP_END +void micro3d_state::drmath_prg(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); +} + +void micro3d_state::drmath_data(address_map &map) +{ + map(0x00000000, 0x000fffff).rom().region("drmath", 0); + map(0x00800000, 0x0083ffff).rw(this, FUNC(micro3d_state::micro3d_shared_r), FUNC(micro3d_state::micro3d_shared_w)); + map(0x00400000, 0x004fffff).ram(); + map(0x00500000, 0x005fffff).ram(); + map(0x00a00000, 0x00a00003).w(this, FUNC(micro3d_state::drmath_int_w)); + map(0x01000000, 0x01000003).w(this, FUNC(micro3d_state::micro3d_mac1_w)); + map(0x01000004, 0x01000007).rw(this, FUNC(micro3d_state::micro3d_mac2_r), FUNC(micro3d_state::micro3d_mac2_w)); + map(0x01200000, 0x01203fff).ram().share("mac_sram"); + map(0x01400000, 0x01400003).rw(this, FUNC(micro3d_state::micro3d_pipe_r), FUNC(micro3d_state::micro3d_fifo_w)); + map(0x01600000, 0x01600003).w(this, FUNC(micro3d_state::drmath_intr2_ack)); + map(0x01800000, 0x01800003).w(this, FUNC(micro3d_state::micro3d_alt_fifo_w)); + map(0x03fffff0, 0x03fffff7).rw("scc", FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff); +} /************************************* * @@ -275,17 +279,19 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(micro3d_state::soundmem_prg) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(micro3d_state::soundmem_io) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0xfd00, 0xfd01) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0xfe00, 0xfe00) AM_WRITE(micro3d_upd7759_w) - AM_RANGE(0xff00, 0xff00) AM_WRITE(micro3d_snd_dac_a) - AM_RANGE(0xff01, 0xff01) AM_WRITE(micro3d_snd_dac_b) -ADDRESS_MAP_END +void micro3d_state::soundmem_prg(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} + +void micro3d_state::soundmem_io(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0xfd00, 0xfd01).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfe00, 0xfe00).w(this, FUNC(micro3d_state::micro3d_upd7759_w)); + map(0xff00, 0xff00).w(this, FUNC(micro3d_state::micro3d_snd_dac_a)); + map(0xff01, 0xff01).w(this, FUNC(micro3d_state::micro3d_snd_dac_b)); +} /************************************* diff --git a/src/mame/drivers/microdec.cpp b/src/mame/drivers/microdec.cpp index ee5ebf4c6e1..46c9e4ec955 100644 --- a/src/mame/drivers/microdec.cpp +++ b/src/mame/drivers/microdec.cpp @@ -122,24 +122,26 @@ WRITE8_MEMBER( microdec_state::portf8_w ) m_floppy->mon_w(0); } -ADDRESS_MAP_START(microdec_state::microdec_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE( 0x1000, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(microdec_state::microdec_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf5, 0xf5) AM_READ(portf5_r) - AM_RANGE(0xf6, 0xf6) AM_READWRITE(portf6_r,portf6_w) - AM_RANGE(0xf7, 0xf7) AM_READWRITE(portf7_r,portf7_w) - AM_RANGE(0xf8, 0xf8) AM_WRITE(portf8_w) - AM_RANGE(0xfa, 0xfb) AM_DEVICE("fdc", upd765a_device, map) - AM_RANGE(0xfc, 0xfc) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0xfd, 0xfd) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0xfe, 0xfe) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0xff, 0xff) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) +void microdec_state::microdec_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0xffff).ram(); +} + +void microdec_state::microdec_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf5, 0xf5).r(this, FUNC(microdec_state::portf5_r)); + map(0xf6, 0xf6).rw(this, FUNC(microdec_state::portf6_r), FUNC(microdec_state::portf6_w)); + map(0xf7, 0xf7).rw(this, FUNC(microdec_state::portf7_r), FUNC(microdec_state::portf7_w)); + map(0xf8, 0xf8).w(this, FUNC(microdec_state::portf8_w)); + map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map)); + map(0xfc, 0xfc).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xfd, 0xfd).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xfe, 0xfe).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xff, 0xff).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // AM_RANGE(0xf0, 0xf3) 8253 PIT (md3 only) used as a baud rate generator for serial ports // AM_RANGE(0xf4, 0xf4) Centronics data // AM_RANGE(0xf5, 0xf5) motor check (md1/2) @@ -150,7 +152,7 @@ ADDRESS_MAP_START(microdec_state::microdec_io) // AM_RANGE(0xfa, 0xfb) uPD765C fdc FA=status; FB=data // AM_RANGE(0xfc, 0xfd) Serial Port 1 (terminal) FC=data FD=status // AM_RANGE(0xfe, 0xff) Serial Port 2 (printer) FE=data FF=status -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( microdec ) diff --git a/src/mame/drivers/microkit.cpp b/src/mame/drivers/microkit.cpp index fe216a8d688..c5b7b6c27f9 100644 --- a/src/mame/drivers/microkit.cpp +++ b/src/mame/drivers/microkit.cpp @@ -65,15 +65,17 @@ private: required_device<generic_terminal_device> m_terminal; }; -ADDRESS_MAP_START(microkit_state::microkit_mem) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ram_r,ram_w) - AM_RANGE(0x8000, 0x81ff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8200, 0x83ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(microkit_state::microkit_io) - AM_RANGE(0x07, 0x07) AM_WRITENOP // writes a lots of zeros here -ADDRESS_MAP_END +void microkit_state::microkit_mem(address_map &map) +{ + map(0x0000, 0x0000).rw(this, FUNC(microkit_state::ram_r), FUNC(microkit_state::ram_w)); + map(0x8000, 0x81ff).rom().region("maincpu", 0); + map(0x8200, 0x83ff).ram(); +} + +void microkit_state::microkit_io(address_map &map) +{ + map(0x07, 0x07).nopw(); // writes a lots of zeros here +} static INPUT_PORTS_START( microkit ) INPUT_PORTS_END diff --git a/src/mame/drivers/micronic.cpp b/src/mame/drivers/micronic.cpp index fd740d694ae..29c66ab1e3a 100644 --- a/src/mame/drivers/micronic.cpp +++ b/src/mame/drivers/micronic.cpp @@ -218,37 +218,39 @@ WRITE8_MEMBER( micronic_state::rtc_data_w ) Machine ***************************************************************************/ -ADDRESS_MAP_START(micronic_state::micronic_mem) - AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram_base") -ADDRESS_MAP_END +void micronic_state::micronic_mem(address_map &map) +{ + map(0x0000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xffff).ram().share("ram_base"); +} -ADDRESS_MAP_START(micronic_state::micronic_io) - ADDRESS_MAP_GLOBAL_MASK (0xff) +void micronic_state::micronic_io(address_map &map) +{ + map.global_mask(0xff); /* keypad */ - AM_RANGE(0x00, 0x00) AM_READ(keypad_r) - AM_RANGE(0x02, 0x02) AM_WRITE(kp_matrix_w) + map(0x00, 0x00).r(this, FUNC(micronic_state::keypad_r)); + map(0x02, 0x02).w(this, FUNC(micronic_state::kp_matrix_w)); /* hd61830 */ - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, data_r, data_w) - AM_RANGE(0x23, 0x23) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, status_r, control_w) + map(0x03, 0x03).rw(m_lcdc, FUNC(hd61830_device::data_r), FUNC(hd61830_device::data_w)); + map(0x23, 0x23).rw(m_lcdc, FUNC(hd61830_device::status_r), FUNC(hd61830_device::control_w)); /* rtc-146818 */ - AM_RANGE(0x08, 0x08) AM_WRITE(rtc_address_w) - AM_RANGE(0x28, 0x28) AM_READWRITE(rtc_data_r, rtc_data_w) + map(0x08, 0x08).w(this, FUNC(micronic_state::rtc_address_w)); + map(0x28, 0x28).rw(this, FUNC(micronic_state::rtc_data_r), FUNC(micronic_state::rtc_data_w)); /* sound */ - AM_RANGE(0x2b, 0x2b) AM_WRITE(beep_w) + map(0x2b, 0x2b).w(this, FUNC(micronic_state::beep_w)); /* basic machine */ - AM_RANGE(0x05, 0x05) AM_READ(irq_flag_r) - AM_RANGE(0x2c, 0x2c) AM_WRITE(port_2c_w) - AM_RANGE(0x47, 0x47) AM_WRITE(bank_select_w) - AM_RANGE(0x46, 0x46) AM_WRITE(lcd_contrast_w) - AM_RANGE(0x48, 0x48) AM_WRITE(status_flag_w) - AM_RANGE(0x49, 0x49) AM_READ(status_flag_r) -ADDRESS_MAP_END + map(0x05, 0x05).r(this, FUNC(micronic_state::irq_flag_r)); + map(0x2c, 0x2c).w(this, FUNC(micronic_state::port_2c_w)); + map(0x47, 0x47).w(this, FUNC(micronic_state::bank_select_w)); + map(0x46, 0x46).w(this, FUNC(micronic_state::lcd_contrast_w)); + map(0x48, 0x48).w(this, FUNC(micronic_state::status_flag_w)); + map(0x49, 0x49).r(this, FUNC(micronic_state::status_flag_r)); +} /* Input ports */ static INPUT_PORTS_START( micronic ) diff --git a/src/mame/drivers/micropin.cpp b/src/mame/drivers/micropin.cpp index c4891b73a1d..673a5981a82 100644 --- a/src/mame/drivers/micropin.cpp +++ b/src/mame/drivers/micropin.cpp @@ -75,39 +75,42 @@ private: }; -ADDRESS_MAP_START(micropin_state::micropin_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("nvram") // 4x 6561 RAM - AM_RANGE(0x4000, 0x4005) AM_WRITE(sw_w) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("X1") - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("X2") - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("X3") - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("X4") - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("X5") - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("pia50", pia6821_device, read, write) - AM_RANGE(0x5100, 0x5103) AM_READWRITE(pia51_r,pia51_w) - AM_RANGE(0x5200, 0x5200) AM_WRITE(sol_w); - AM_RANGE(0x5202, 0x5202) AM_WRITE(lamp_w); - AM_RANGE(0x5203, 0x5203) AM_WRITENOP - AM_RANGE(0x6400, 0x7fff) AM_ROM AM_REGION("v1cpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(micropin_state::pentacup2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(micropin_state::pentacup2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0e) AM_WRITE(sw_w) - AM_RANGE(0x0f, 0x0f) AM_WRITE(lamp_w) - AM_RANGE(0x00, 0x00) AM_READ_PORT("X0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("X1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("X2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("X3") - AM_RANGE(0x04, 0x04) AM_READ_PORT("X4") - AM_RANGE(0x05, 0x05) AM_READ_PORT("X5") -ADDRESS_MAP_END +void micropin_state::micropin_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram().share("nvram"); // 4x 6561 RAM + map(0x4000, 0x4005).w(this, FUNC(micropin_state::sw_w)); + map(0x4000, 0x4000).portr("X1"); + map(0x4001, 0x4001).portr("X2"); + map(0x4002, 0x4002).portr("X3"); + map(0x4003, 0x4003).portr("X4"); + map(0x4004, 0x4004).portr("X5"); + map(0x5000, 0x5003).rw("pia50", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5100, 0x5103).rw(this, FUNC(micropin_state::pia51_r), FUNC(micropin_state::pia51_w)); + map(0x5200, 0x5200).w(this, FUNC(micropin_state::sol_w)); + map(0x5202, 0x5202).w(this, FUNC(micropin_state::lamp_w)); + map(0x5203, 0x5203).nopw(); + map(0x6400, 0x7fff).rom().region("v1cpu", 0); +} + +void micropin_state::pentacup2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); +} + +void micropin_state::pentacup2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0e).w(this, FUNC(micropin_state::sw_w)); + map(0x0f, 0x0f).w(this, FUNC(micropin_state::lamp_w)); + map(0x00, 0x00).portr("X0"); + map(0x01, 0x01).portr("X1"); + map(0x02, 0x02).portr("X2"); + map(0x03, 0x03).portr("X3"); + map(0x04, 0x04).portr("X4"); + map(0x05, 0x05).portr("X5"); +} static INPUT_PORTS_START( micropin ) PORT_START("X0") diff --git a/src/mame/drivers/microtan.cpp b/src/mame/drivers/microtan.cpp index 321d9088eea..448a9a9a95a 100644 --- a/src/mame/drivers/microtan.cpp +++ b/src/mame/drivers/microtan.cpp @@ -55,20 +55,21 @@ #include "speaker.h" -ADDRESS_MAP_START(microtan_state::microtan_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x03ff) AM_RAM_WRITE(microtan_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xbc00, 0xbc00) AM_DEVWRITE("ay8910.1", ay8910_device, address_w) - AM_RANGE(0xbc01, 0xbc01) AM_DEVREADWRITE("ay8910.1", ay8910_device, data_r, data_w) - AM_RANGE(0xbc02, 0xbc02) AM_DEVWRITE("ay8910.2", ay8910_device, address_w) - AM_RANGE(0xbc03, 0xbc03) AM_DEVREADWRITE("ay8910.2", ay8910_device, data_r, data_w) - AM_RANGE(0xbfc0, 0xbfcf) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) - AM_RANGE(0xbfd0, 0xbfd3) AM_DEVREADWRITE("acia", mos6551_device, read, write) - AM_RANGE(0xbfe0, 0xbfef) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) - AM_RANGE(0xbff0, 0xbfff) AM_READWRITE(microtan_bffx_r, microtan_bffx_w) - AM_RANGE(0xc000, 0xe7ff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void microtan_state::microtan_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x03ff).ram().w(this, FUNC(microtan_state::microtan_videoram_w)).share("videoram"); + map(0xbc00, 0xbc00).w("ay8910.1", FUNC(ay8910_device::address_w)); + map(0xbc01, 0xbc01).rw("ay8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xbc02, 0xbc02).w("ay8910.2", FUNC(ay8910_device::address_w)); + map(0xbc03, 0xbc03).rw("ay8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xbfc0, 0xbfcf).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xbfd0, 0xbfd3).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xbfe0, 0xbfef).rw(m_via6522_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xbff0, 0xbfff).rw(this, FUNC(microtan_state::microtan_bffx_r), FUNC(microtan_state::microtan_bffx_w)); + map(0xc000, 0xe7ff).rom(); + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( microtan ) PORT_START("DSW") diff --git a/src/mame/drivers/microterm.cpp b/src/mame/drivers/microterm.cpp index 497be7384d0..b04c6abc8ae 100644 --- a/src/mame/drivers/microterm.cpp +++ b/src/mame/drivers/microterm.cpp @@ -50,39 +50,44 @@ READ8_MEMBER(microterm_state::c000_r) return machine().rand() & 0x80; } -ADDRESS_MAP_START(microterm_state::mt420_mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x9000, 0x9000) AM_WRITENOP - AM_RANGE(0xc000, 0xc000) AM_READ(c000_r) AM_WRITENOP - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xeff8, 0xefff) AM_DEVREADWRITE("avdc", scn2674_device, read, write) - AM_RANGE(0xf000, 0xf7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(microterm_state::mt420_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("aci", mc2661_device, read, write) -ADDRESS_MAP_END +void microterm_state::mt420_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x9000, 0x9000).nopw(); + map(0xc000, 0xc000).r(this, FUNC(microterm_state::c000_r)).nopw(); + map(0xe000, 0xefff).ram(); + map(0xeff8, 0xefff).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write)); + map(0xf000, 0xf7ff).ram(); +} + +void microterm_state::mt420_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xe0, 0xef).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0xf0, 0xf3).rw("aci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); +} SCN2674_DRAW_CHARACTER_MEMBER(microterm_state::draw_character) { } -ADDRESS_MAP_START(microterm_state::mt420_vram_map) - AM_RANGE(0x0000, 0x3fff) AM_NOP -ADDRESS_MAP_END +void microterm_state::mt420_vram_map(address_map &map) +{ + map(0x0000, 0x3fff).noprw(); +} -ADDRESS_MAP_START(microterm_state::mt5510_mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP - AM_RANGE(0x8000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END +void microterm_state::mt5510_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0).nopw(); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xffff).ram(); +} -ADDRESS_MAP_START(microterm_state::mt5510_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("duart", scn2681_device, read, write) -ADDRESS_MAP_END +void microterm_state::mt5510_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x60, 0x6f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); +} static INPUT_PORTS_START( microterm ) INPUT_PORTS_END diff --git a/src/mame/drivers/midas.cpp b/src/mame/drivers/midas.cpp index 83ab2da8454..5a78b96ae29 100644 --- a/src/mame/drivers/midas.cpp +++ b/src/mame/drivers/midas.cpp @@ -196,38 +196,39 @@ WRITE16_MEMBER(midas_state::livequiz_coin_w) #endif } -ADDRESS_MAP_START(midas_state::livequiz_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM +void midas_state::livequiz_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW_PLAYER1") - AM_RANGE(0x920000, 0x920001) AM_READ_PORT("SERVICE") - AM_RANGE(0x940000, 0x940001) AM_READ_PORT("PLAYER2") - AM_RANGE(0x980000, 0x980001) AM_READ_PORT("START") + map(0x900000, 0x900001).portr("DSW_PLAYER1"); + map(0x920000, 0x920001).portr("SERVICE"); + map(0x940000, 0x940001).portr("PLAYER2"); + map(0x980000, 0x980001).portr("START"); - AM_RANGE(0x980000, 0x980001) AM_WRITE(livequiz_coin_w ) + map(0x980000, 0x980001).w(this, FUNC(midas_state::livequiz_coin_w)); - AM_RANGE(0x9a0000, 0x9a0001) AM_WRITE(midas_eeprom_w ) + map(0x9a0000, 0x9a0001).w(this, FUNC(midas_state::midas_eeprom_w)); - AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w ) - AM_RANGE(0x9c000c, 0x9c000d) AM_WRITENOP // IRQ Ack, temporary + map(0x9c0000, 0x9c0005).w(this, FUNC(midas_state::midas_gfxregs_w)); + map(0x9c000c, 0x9c000d).nopw(); // IRQ Ack, temporary - AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa40000, 0xa7ffff) AM_RAM + map(0xa00000, 0xa3ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa40000, 0xa7ffff).ram(); - AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff ) - AM_RANGE(0xb20000, 0xb20001) AM_READ(ret_ffff ) - AM_RANGE(0xb40000, 0xb40001) AM_READ(ret_ffff ) - AM_RANGE(0xb60000, 0xb60001) AM_READ(ret_ffff ) + map(0xb00000, 0xb00001).r(this, FUNC(midas_state::ret_ffff)); + map(0xb20000, 0xb20001).r(this, FUNC(midas_state::ret_ffff)); + map(0xb40000, 0xb40001).r(this, FUNC(midas_state::ret_ffff)); + map(0xb60000, 0xb60001).r(this, FUNC(midas_state::ret_ffff)); - AM_RANGE(0xb80008, 0xb8000b) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff ) + map(0xb80008, 0xb8000b).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); - AM_RANGE(0xba0000, 0xba0001) AM_READ_PORT("START3") - AM_RANGE(0xbc0000, 0xbc0001) AM_READ_PORT("PLAYER3") + map(0xba0000, 0xba0001).portr("START3"); + map(0xbc0000, 0xbc0001).portr("PLAYER3"); - AM_RANGE(0xd00000, 0xd1ffff) AM_RAM_WRITE(midas_zoomtable_w) AM_SHARE("zoomtable") // zoom table? + map(0xd00000, 0xd1ffff).ram().w(this, FUNC(midas_state::midas_zoomtable_w)).share("zoomtable"); // zoom table? - AM_RANGE(0xe00000, 0xe3ffff) AM_RAM -ADDRESS_MAP_END + map(0xe00000, 0xe3ffff).ram(); +} /*************************************************************************************** Hammer @@ -267,42 +268,43 @@ WRITE16_MEMBER(midas_state::hammer_motor_w) #endif } -ADDRESS_MAP_START(midas_state::hammer_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM +void midas_state::hammer_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW") - AM_RANGE(0x920000, 0x920001) AM_READ_PORT("SERVICE") - AM_RANGE(0x940000, 0x940001) AM_READ_PORT("IN0") - AM_RANGE(0x980000, 0x980001) AM_READ_PORT("TILT") + map(0x900000, 0x900001).portr("DSW"); + map(0x920000, 0x920001).portr("SERVICE"); + map(0x940000, 0x940001).portr("IN0"); + map(0x980000, 0x980001).portr("TILT"); - AM_RANGE(0x980000, 0x980001) AM_WRITE(hammer_coin_w ) + map(0x980000, 0x980001).w(this, FUNC(midas_state::hammer_coin_w)); - AM_RANGE(0x9a0000, 0x9a0001) AM_WRITE(midas_eeprom_w ) + map(0x9a0000, 0x9a0001).w(this, FUNC(midas_state::midas_eeprom_w)); - AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w ) - AM_RANGE(0x9c000c, 0x9c000d) AM_WRITENOP // IRQ Ack, temporary + map(0x9c0000, 0x9c0005).w(this, FUNC(midas_state::midas_gfxregs_w)); + map(0x9c000c, 0x9c000d).nopw(); // IRQ Ack, temporary - AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa40000, 0xa7ffff) AM_RAM + map(0xa00000, 0xa3ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa40000, 0xa7ffff).ram(); - AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff ) - AM_RANGE(0xb20000, 0xb20001) AM_READ(ret_ffff ) - AM_RANGE(0xb40000, 0xb40001) AM_READ(ret_ffff ) - AM_RANGE(0xb60000, 0xb60001) AM_READ(ret_ffff ) + map(0xb00000, 0xb00001).r(this, FUNC(midas_state::ret_ffff)); + map(0xb20000, 0xb20001).r(this, FUNC(midas_state::ret_ffff)); + map(0xb40000, 0xb40001).r(this, FUNC(midas_state::ret_ffff)); + map(0xb60000, 0xb60001).r(this, FUNC(midas_state::ret_ffff)); - AM_RANGE(0xb80008, 0xb8000b) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff ) + map(0xb80008, 0xb8000b).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); - AM_RANGE(0xba0000, 0xba0001) AM_READ_PORT("IN1") - AM_RANGE(0xbc0000, 0xbc0001) AM_READ_PORT("HAMMER") + map(0xba0000, 0xba0001).portr("IN1"); + map(0xbc0000, 0xbc0001).portr("HAMMER"); - AM_RANGE(0xbc0002, 0xbc0003) AM_WRITE(hammer_motor_w ) + map(0xbc0002, 0xbc0003).w(this, FUNC(midas_state::hammer_motor_w)); - AM_RANGE(0xbc0004, 0xbc0005) AM_READ(hammer_sensor_r ) + map(0xbc0004, 0xbc0005).r(this, FUNC(midas_state::hammer_sensor_r)); - AM_RANGE(0xd00000, 0xd1ffff) AM_RAM_WRITE(midas_zoomtable_w) AM_SHARE("zoomtable") // zoom table? + map(0xd00000, 0xd1ffff).ram().w(this, FUNC(midas_state::midas_zoomtable_w)).share("zoomtable"); // zoom table? - AM_RANGE(0xe00000, 0xe3ffff) AM_RAM -ADDRESS_MAP_END + map(0xe00000, 0xe3ffff).ram(); +} static const gfx_layout layout16x16x8 = diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp index fbf5c9a7a75..6b37760bc8b 100644 --- a/src/mame/drivers/midqslvr.cpp +++ b/src/mame/drivers/midqslvr.cpp @@ -362,32 +362,34 @@ WRITE32_MEMBER(midqslvr_state::bios_ram_w) } } -ADDRESS_MAP_START(midqslvr_state::midqslvr_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c3fff) AM_ROMBANK("video_bank1") AM_WRITE(isa_ram1_w) - AM_RANGE(0x000c4000, 0x000c7fff) AM_ROMBANK("video_bank2") AM_WRITE(isa_ram2_w) - AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_ext1") AM_WRITE(bios_ext1_ram_w) - AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_ext2") AM_WRITE(bios_ext2_ram_w) - AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_ext3") AM_WRITE(bios_ext3_ram_w) - AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ext4") AM_WRITE(bios_ext4_ram_w) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x01ffffff) AM_RAM - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(midqslvr_state::midqslvr_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e8, 0x00ef) AM_NOP - - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) - - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END +void midqslvr_state::midqslvr_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000c0000, 0x000c3fff).bankr("video_bank1").w(this, FUNC(midqslvr_state::isa_ram1_w)); + map(0x000c4000, 0x000c7fff).bankr("video_bank2").w(this, FUNC(midqslvr_state::isa_ram2_w)); + map(0x000e0000, 0x000e3fff).bankr("bios_ext1").w(this, FUNC(midqslvr_state::bios_ext1_ram_w)); + map(0x000e4000, 0x000e7fff).bankr("bios_ext2").w(this, FUNC(midqslvr_state::bios_ext2_ram_w)); + map(0x000e8000, 0x000ebfff).bankr("bios_ext3").w(this, FUNC(midqslvr_state::bios_ext3_ram_w)); + map(0x000ec000, 0x000effff).bankr("bios_ext4").w(this, FUNC(midqslvr_state::bios_ext4_ram_w)); + map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(midqslvr_state::bios_ram_w)); + map(0x00100000, 0x01ffffff).ram(); + map(0xfff80000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void midqslvr_state::midqslvr_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e8, 0x00ef).noprw(); + + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); + + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} void midqslvr_state::machine_start() { diff --git a/src/mame/drivers/midtunit.cpp b/src/mame/drivers/midtunit.cpp index b3b134419ed..349a6d7859c 100644 --- a/src/mame/drivers/midtunit.cpp +++ b/src/mame/drivers/midtunit.cpp @@ -44,29 +44,30 @@ * *************************************/ -ADDRESS_MAP_START(midtunit_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_r, midtunit_vram_w) - AM_RANGE(0x01000000, 0x013fffff) AM_RAM - AM_RANGE(0x01400000, 0x0141ffff) AM_READWRITE(midtunit_cmos_r, midtunit_cmos_w) AM_SHARE("nvram") - AM_RANGE(0x01480000, 0x014fffff) AM_WRITE(midtunit_cmos_enable_w) - AM_RANGE(0x01600000, 0x0160000f) AM_READ_PORT("IN0") - AM_RANGE(0x01600010, 0x0160001f) AM_READ_PORT("IN1") - AM_RANGE(0x01600020, 0x0160002f) AM_READ_PORT("IN2") - AM_RANGE(0x01600030, 0x0160003f) AM_READ_PORT("DSW") - AM_RANGE(0x01800000, 0x0187ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x01a80000, 0x01a800ff) AM_READWRITE(midtunit_dma_r, midtunit_dma_w) - AM_RANGE(0x01b00000, 0x01b0001f) AM_WRITE(midtunit_control_w) +void midtunit_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x003fffff).rw(this, FUNC(midtunit_state::midtunit_vram_r), FUNC(midtunit_state::midtunit_vram_w)); + map(0x01000000, 0x013fffff).ram(); + map(0x01400000, 0x0141ffff).rw(this, FUNC(midtunit_state::midtunit_cmos_r), FUNC(midtunit_state::midtunit_cmos_w)).share("nvram"); + map(0x01480000, 0x014fffff).w(this, FUNC(midtunit_state::midtunit_cmos_enable_w)); + map(0x01600000, 0x0160000f).portr("IN0"); + map(0x01600010, 0x0160001f).portr("IN1"); + map(0x01600020, 0x0160002f).portr("IN2"); + map(0x01600030, 0x0160003f).portr("DSW"); + map(0x01800000, 0x0187ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x01a80000, 0x01a800ff).rw(this, FUNC(midtunit_state::midtunit_dma_r), FUNC(midtunit_state::midtunit_dma_w)); + map(0x01b00000, 0x01b0001f).w(this, FUNC(midtunit_state::midtunit_control_w)); /* AM_RANGE(0x01c00060, 0x01c0007f) AM_WRITE(midtunit_cmos_enable_w) */ - AM_RANGE(0x01d00000, 0x01d0001f) AM_READ(midtunit_sound_state_r) - AM_RANGE(0x01d01020, 0x01d0103f) AM_READWRITE(midtunit_sound_r, midtunit_sound_w) - AM_RANGE(0x01d81060, 0x01d8107f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x01f00000, 0x01f0001f) AM_WRITE(midtunit_control_w) - AM_RANGE(0x02000000, 0x07ffffff) AM_READ(midtunit_gfxrom_r) AM_SHARE("gfxrom") - AM_RANGE(0x1f800000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) /* mirror used by MK */ - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0x01d00000, 0x01d0001f).r(this, FUNC(midtunit_state::midtunit_sound_state_r)); + map(0x01d01020, 0x01d0103f).rw(this, FUNC(midtunit_state::midtunit_sound_r), FUNC(midtunit_state::midtunit_sound_w)); + map(0x01d81060, 0x01d8107f).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x01f00000, 0x01f0001f).w(this, FUNC(midtunit_state::midtunit_control_w)); + map(0x02000000, 0x07ffffff).r(this, FUNC(midtunit_state::midtunit_gfxrom_r)).share("gfxrom"); + map(0x1f800000, 0x1fffffff).rom().region("maincpu", 0); /* mirror used by MK */ + map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xff800000, 0xffffffff).rom().region("maincpu", 0); +} diff --git a/src/mame/drivers/midvunit.cpp b/src/mame/drivers/midvunit.cpp index 70d37d9aedd..b9c256c77c2 100644 --- a/src/mame/drivers/midvunit.cpp +++ b/src/mame/drivers/midvunit.cpp @@ -577,59 +577,61 @@ WRITE8_MEMBER(midvunit_state::midvplus_xf1_w) * *************************************/ -ADDRESS_MAP_START(midvunit_state::midvunit_map) - AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("ram_base") - AM_RANGE(0x400000, 0x41ffff) AM_RAM - AM_RANGE(0x600000, 0x600000) AM_WRITE(midvunit_dma_queue_w) - AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("32031_control") - AM_RANGE(0x809800, 0x809fff) AM_RAM - AM_RANGE(0x900000, 0x97ffff) AM_READWRITE(midvunit_videoram_r, midvunit_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x980000, 0x980000) AM_READ(midvunit_dma_queue_entries_r) - AM_RANGE(0x980020, 0x980020) AM_READ(midvunit_scanline_r) - AM_RANGE(0x980020, 0x98002b) AM_WRITE(midvunit_video_control_w) - AM_RANGE(0x980040, 0x980040) AM_READWRITE(midvunit_page_control_r, midvunit_page_control_w) - AM_RANGE(0x980080, 0x980080) AM_NOP - AM_RANGE(0x980082, 0x980083) AM_READ(midvunit_dma_trigger_r) - AM_RANGE(0x990000, 0x990000) AM_READNOP // link PAL (low 4 bits must == 4) - AM_RANGE(0x991030, 0x991030) AM_READ_PORT("991030") +void midvunit_state::midvunit_map(address_map &map) +{ + map(0x000000, 0x01ffff).ram().share("ram_base"); + map(0x400000, 0x41ffff).ram(); + map(0x600000, 0x600000).w(this, FUNC(midvunit_state::midvunit_dma_queue_w)); + map(0x808000, 0x80807f).rw(this, FUNC(midvunit_state::tms32031_control_r), FUNC(midvunit_state::tms32031_control_w)).share("32031_control"); + map(0x809800, 0x809fff).ram(); + map(0x900000, 0x97ffff).rw(this, FUNC(midvunit_state::midvunit_videoram_r), FUNC(midvunit_state::midvunit_videoram_w)).share("videoram"); + map(0x980000, 0x980000).r(this, FUNC(midvunit_state::midvunit_dma_queue_entries_r)); + map(0x980020, 0x980020).r(this, FUNC(midvunit_state::midvunit_scanline_r)); + map(0x980020, 0x98002b).w(this, FUNC(midvunit_state::midvunit_video_control_w)); + map(0x980040, 0x980040).rw(this, FUNC(midvunit_state::midvunit_page_control_r), FUNC(midvunit_state::midvunit_page_control_w)); + map(0x980080, 0x980080).noprw(); + map(0x980082, 0x980083).r(this, FUNC(midvunit_state::midvunit_dma_trigger_r)); + map(0x990000, 0x990000).nopr(); // link PAL (low 4 bits must == 4) + map(0x991030, 0x991030).portr("991030"); // AM_RANGE(0x991050, 0x991050) AM_READONLY // seems to be another port - AM_RANGE(0x991060, 0x991060) AM_READ(port0_r) - AM_RANGE(0x992000, 0x992000) AM_READ_PORT("992000") - AM_RANGE(0x993000, 0x993000) AM_READWRITE(adc_r, adc_w) - AM_RANGE(0x994000, 0x994000) AM_WRITE(midvunit_control_w) - AM_RANGE(0x995000, 0x995000) AM_READWRITE(midvunit_wheel_board_r, midvunit_wheel_board_w) - AM_RANGE(0x995020, 0x995020) AM_WRITE(midvunit_cmos_protect_w) - AM_RANGE(0x997000, 0x997000) AM_NOP // communications - AM_RANGE(0x9a0000, 0x9a0000) AM_WRITE(midvunit_sound_w) - AM_RANGE(0x9c0000, 0x9c1fff) AM_READWRITE(midvunit_cmos_r, midvunit_cmos_w) AM_SHARE("nvram") - AM_RANGE(0x9e0000, 0x9e7fff) AM_RAM_WRITE(midvunit_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(midvunit_textureram_r, midvunit_textureram_w) AM_SHARE("textureram") - AM_RANGE(0xc00000, 0xffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(midvunit_state::midvplus_map) - AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("ram_base") - AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_SHARE("fastram_base") - AM_RANGE(0x600000, 0x600000) AM_WRITE(midvunit_dma_queue_w) - AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("32031_control") - AM_RANGE(0x809800, 0x809fff) AM_RAM - AM_RANGE(0x900000, 0x97ffff) AM_READWRITE(midvunit_videoram_r, midvunit_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x980000, 0x980000) AM_READ(midvunit_dma_queue_entries_r) - AM_RANGE(0x980020, 0x980020) AM_READ(midvunit_scanline_r) - AM_RANGE(0x980020, 0x98002b) AM_WRITE(midvunit_video_control_w) - AM_RANGE(0x980040, 0x980040) AM_READWRITE(midvunit_page_control_r, midvunit_page_control_w) - AM_RANGE(0x980080, 0x980080) AM_NOP - AM_RANGE(0x980082, 0x980083) AM_READ(midvunit_dma_trigger_r) - AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) - AM_RANGE(0x994000, 0x994000) AM_WRITE(midvunit_control_w) - AM_RANGE(0x995020, 0x995020) AM_WRITE(midvunit_cmos_protect_w) - AM_RANGE(0x9a0000, 0x9a0007) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff) - AM_RANGE(0x9c0000, 0x9c7fff) AM_RAM_WRITE(midvunit_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x9d0000, 0x9d000f) AM_READWRITE(midvplus_misc_r, midvplus_misc_w) AM_SHARE("midvplus_misc") - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(midvunit_textureram_r, midvunit_textureram_w) AM_SHARE("textureram") - AM_RANGE(0xc00000, 0xcfffff) AM_RAM -ADDRESS_MAP_END + map(0x991060, 0x991060).r(this, FUNC(midvunit_state::port0_r)); + map(0x992000, 0x992000).portr("992000"); + map(0x993000, 0x993000).rw(this, FUNC(midvunit_state::adc_r), FUNC(midvunit_state::adc_w)); + map(0x994000, 0x994000).w(this, FUNC(midvunit_state::midvunit_control_w)); + map(0x995000, 0x995000).rw(this, FUNC(midvunit_state::midvunit_wheel_board_r), FUNC(midvunit_state::midvunit_wheel_board_w)); + map(0x995020, 0x995020).w(this, FUNC(midvunit_state::midvunit_cmos_protect_w)); + map(0x997000, 0x997000).noprw(); // communications + map(0x9a0000, 0x9a0000).w(this, FUNC(midvunit_state::midvunit_sound_w)); + map(0x9c0000, 0x9c1fff).rw(this, FUNC(midvunit_state::midvunit_cmos_r), FUNC(midvunit_state::midvunit_cmos_w)).share("nvram"); + map(0x9e0000, 0x9e7fff).ram().w(this, FUNC(midvunit_state::midvunit_paletteram_w)).share("paletteram"); + map(0xa00000, 0xbfffff).rw(this, FUNC(midvunit_state::midvunit_textureram_r), FUNC(midvunit_state::midvunit_textureram_w)).share("textureram"); + map(0xc00000, 0xffffff).rom().region("user1", 0); +} + + +void midvunit_state::midvplus_map(address_map &map) +{ + map(0x000000, 0x01ffff).ram().share("ram_base"); + map(0x400000, 0x41ffff).ram().share("fastram_base"); + map(0x600000, 0x600000).w(this, FUNC(midvunit_state::midvunit_dma_queue_w)); + map(0x808000, 0x80807f).rw(this, FUNC(midvunit_state::tms32031_control_r), FUNC(midvunit_state::tms32031_control_w)).share("32031_control"); + map(0x809800, 0x809fff).ram(); + map(0x900000, 0x97ffff).rw(this, FUNC(midvunit_state::midvunit_videoram_r), FUNC(midvunit_state::midvunit_videoram_w)).share("videoram"); + map(0x980000, 0x980000).r(this, FUNC(midvunit_state::midvunit_dma_queue_entries_r)); + map(0x980020, 0x980020).r(this, FUNC(midvunit_state::midvunit_scanline_r)); + map(0x980020, 0x98002b).w(this, FUNC(midvunit_state::midvunit_video_control_w)); + map(0x980040, 0x980040).rw(this, FUNC(midvunit_state::midvunit_page_control_r), FUNC(midvunit_state::midvunit_page_control_w)); + map(0x980080, 0x980080).noprw(); + map(0x980082, 0x980083).r(this, FUNC(midvunit_state::midvunit_dma_trigger_r)); + map(0x990000, 0x99000f).rw(m_midway_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write)); + map(0x994000, 0x994000).w(this, FUNC(midvunit_state::midvunit_control_w)); + map(0x995020, 0x995020).w(this, FUNC(midvunit_state::midvunit_cmos_protect_w)); + map(0x9a0000, 0x9a0007).rw("ata", FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)).umask32(0x0000ffff); + map(0x9c0000, 0x9c7fff).ram().w(this, FUNC(midvunit_state::midvunit_paletteram_w)).share("paletteram"); + map(0x9d0000, 0x9d000f).rw(this, FUNC(midvunit_state::midvplus_misc_r), FUNC(midvunit_state::midvplus_misc_w)).share("midvplus_misc"); + map(0xa00000, 0xbfffff).rw(this, FUNC(midvunit_state::midvunit_textureram_r), FUNC(midvunit_state::midvunit_textureram_w)).share("textureram"); + map(0xc00000, 0xcfffff).ram(); +} diff --git a/src/mame/drivers/midwunit.cpp b/src/mame/drivers/midwunit.cpp index aa8bf529f55..f4f9bcb4c18 100644 --- a/src/mame/drivers/midwunit.cpp +++ b/src/mame/drivers/midwunit.cpp @@ -110,21 +110,22 @@ Notes: * *************************************/ -ADDRESS_MAP_START(midwunit_state::main_map) - AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_r, midtunit_vram_w) - AM_RANGE(0x01000000, 0x013fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x01400000, 0x0145ffff) AM_READWRITE(midwunit_cmos_r, midwunit_cmos_w) AM_SHARE("nvram") - AM_RANGE(0x01480000, 0x014fffff) AM_WRITE(midwunit_cmos_enable_w) - AM_RANGE(0x01600000, 0x0160001f) AM_READWRITE(midwunit_security_r, midwunit_security_w) - AM_RANGE(0x01680000, 0x0168001f) AM_READWRITE(midwunit_sound_r, midwunit_sound_w) - AM_RANGE(0x01800000, 0x0187ffff) AM_READWRITE(midwunit_io_r, midwunit_io_w) - AM_RANGE(0x01880000, 0x018fffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x01a00000, 0x01a000ff) AM_MIRROR(0x00080000) AM_READWRITE(midtunit_dma_r, midtunit_dma_w) - AM_RANGE(0x01b00000, 0x01b0001f) AM_READWRITE(midwunit_control_r, midwunit_control_w) - AM_RANGE(0x02000000, 0x06ffffff) AM_READ(midwunit_gfxrom_r) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void midwunit_state::main_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rw(this, FUNC(midwunit_state::midtunit_vram_r), FUNC(midwunit_state::midtunit_vram_w)); + map(0x01000000, 0x013fffff).ram().share("mainram"); + map(0x01400000, 0x0145ffff).rw(this, FUNC(midwunit_state::midwunit_cmos_r), FUNC(midwunit_state::midwunit_cmos_w)).share("nvram"); + map(0x01480000, 0x014fffff).w(this, FUNC(midwunit_state::midwunit_cmos_enable_w)); + map(0x01600000, 0x0160001f).rw(this, FUNC(midwunit_state::midwunit_security_r), FUNC(midwunit_state::midwunit_security_w)); + map(0x01680000, 0x0168001f).rw(this, FUNC(midwunit_state::midwunit_sound_r), FUNC(midwunit_state::midwunit_sound_w)); + map(0x01800000, 0x0187ffff).rw(this, FUNC(midwunit_state::midwunit_io_r), FUNC(midwunit_state::midwunit_io_w)); + map(0x01880000, 0x018fffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x01a00000, 0x01a000ff).mirror(0x00080000).rw(this, FUNC(midwunit_state::midtunit_dma_r), FUNC(midwunit_state::midtunit_dma_w)); + map(0x01b00000, 0x01b0001f).rw(this, FUNC(midwunit_state::midwunit_control_r), FUNC(midwunit_state::midwunit_control_w)); + map(0x02000000, 0x06ffffff).r(this, FUNC(midwunit_state::midwunit_gfxrom_r)); + map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xff800000, 0xffffffff).rom().region("maincpu", 0); +} /************************************* diff --git a/src/mame/drivers/midxunit.cpp b/src/mame/drivers/midxunit.cpp index 3dbb6aaa62d..47c5bd02526 100644 --- a/src/mame/drivers/midxunit.cpp +++ b/src/mame/drivers/midxunit.cpp @@ -104,28 +104,29 @@ There's a separate sound board also, but it wasn't available so is not documente * *************************************/ -ADDRESS_MAP_START(midxunit_state::main_map) - AM_RANGE(0x00000000, 0x003fffff) AM_READWRITE(midtunit_vram_data_r, midtunit_vram_data_w) - AM_RANGE(0x00800000, 0x00bfffff) AM_READWRITE(midtunit_vram_color_r, midtunit_vram_color_w) - AM_RANGE(0x20000000, 0x20ffffff) AM_RAM - AM_RANGE(0x40800000, 0x4fffffff) AM_WRITE(midxunit_unknown_w) - AM_RANGE(0x60400000, 0x6040001f) AM_READWRITE(midxunit_status_r, midxunit_security_clock_w) - AM_RANGE(0x60c00000, 0x60c0001f) AM_READ_PORT("IN0") - AM_RANGE(0x60c00020, 0x60c0003f) AM_READ_PORT("IN1") - AM_RANGE(0x60c00040, 0x60c0005f) AM_READ_PORT("IN2") - AM_RANGE(0x60c00060, 0x60c0007f) AM_READ_PORT("DSW") - AM_RANGE(0x60c00080, 0x60c000df) AM_WRITE(midxunit_io_w) - AM_RANGE(0x60c000e0, 0x60c000ff) AM_READWRITE(midxunit_security_r, midxunit_security_w) - AM_RANGE(0x80800000, 0x8080000f) AM_DEVREAD8("adc", adc0848_device, read, 0x00ff) AM_DEVWRITE8("adc", adc0848_device, write, 0x00ff) - AM_RANGE(0x80800010, 0x8080001f) AM_NOP - AM_RANGE(0x80c00000, 0x80c000ff) AM_READWRITE(midxunit_uart_r, midxunit_uart_w) - AM_RANGE(0xa0440000, 0xa047ffff) AM_READWRITE(midxunit_cmos_r, midxunit_cmos_w) AM_SHARE("nvram") - AM_RANGE(0xa0800000, 0xa08fffff) AM_READWRITE(midxunit_paletteram_r, midxunit_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xc0000000, 0xc00003ff) AM_DEVREADWRITE("maincpu", tms34020_device, io_register_r, io_register_w) - AM_RANGE(0xc0800000, 0xc08000ff) AM_MIRROR(0x00400000) AM_READWRITE(midtunit_dma_r, midtunit_dma_w) - AM_RANGE(0xf8000000, 0xfeffffff) AM_READ(midwunit_gfxrom_r) - AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void midxunit_state::main_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rw(this, FUNC(midxunit_state::midtunit_vram_data_r), FUNC(midxunit_state::midtunit_vram_data_w)); + map(0x00800000, 0x00bfffff).rw(this, FUNC(midxunit_state::midtunit_vram_color_r), FUNC(midxunit_state::midtunit_vram_color_w)); + map(0x20000000, 0x20ffffff).ram(); + map(0x40800000, 0x4fffffff).w(this, FUNC(midxunit_state::midxunit_unknown_w)); + map(0x60400000, 0x6040001f).rw(this, FUNC(midxunit_state::midxunit_status_r), FUNC(midxunit_state::midxunit_security_clock_w)); + map(0x60c00000, 0x60c0001f).portr("IN0"); + map(0x60c00020, 0x60c0003f).portr("IN1"); + map(0x60c00040, 0x60c0005f).portr("IN2"); + map(0x60c00060, 0x60c0007f).portr("DSW"); + map(0x60c00080, 0x60c000df).w(this, FUNC(midxunit_state::midxunit_io_w)); + map(0x60c000e0, 0x60c000ff).rw(this, FUNC(midxunit_state::midxunit_security_r), FUNC(midxunit_state::midxunit_security_w)); + map(0x80800000, 0x8080000f).r("adc", FUNC(adc0848_device::read)).umask16(0x00ff).w("adc", FUNC(adc0848_device::write)).umask16(0x00ff); + map(0x80800010, 0x8080001f).noprw(); + map(0x80c00000, 0x80c000ff).rw(this, FUNC(midxunit_state::midxunit_uart_r), FUNC(midxunit_state::midxunit_uart_w)); + map(0xa0440000, 0xa047ffff).rw(this, FUNC(midxunit_state::midxunit_cmos_r), FUNC(midxunit_state::midxunit_cmos_w)).share("nvram"); + map(0xa0800000, 0xa08fffff).rw(this, FUNC(midxunit_state::midxunit_paletteram_r), FUNC(midxunit_state::midxunit_paletteram_w)).share("palette"); + map(0xc0000000, 0xc00003ff).rw("maincpu", FUNC(tms34020_device::io_register_r), FUNC(tms34020_device::io_register_w)); + map(0xc0800000, 0xc08000ff).mirror(0x00400000).rw(this, FUNC(midxunit_state::midtunit_dma_r), FUNC(midxunit_state::midtunit_dma_w)); + map(0xf8000000, 0xfeffffff).r(this, FUNC(midxunit_state::midwunit_gfxrom_r)); + map(0xff000000, 0xffffffff).rom().region("maincpu", 0); +} diff --git a/src/mame/drivers/midyunit.cpp b/src/mame/drivers/midyunit.cpp index d56d706d519..5191bd3baee 100644 --- a/src/mame/drivers/midyunit.cpp +++ b/src/mame/drivers/midyunit.cpp @@ -178,29 +178,31 @@ CUSTOM_INPUT_MEMBER(midyunit_state::adpcm_irq_state_r) * *************************************/ -ADDRESS_MAP_START(midyunit_state::main_map) - AM_RANGE(0x00000000, 0x001fffff) AM_READWRITE(midyunit_vram_r, midyunit_vram_w) - AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x01400000, 0x0140ffff) AM_READWRITE(midyunit_cmos_r, midyunit_cmos_w) - AM_RANGE(0x01800000, 0x0181ffff) AM_RAM_WRITE(midyunit_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x01a00000, 0x01a0009f) AM_MIRROR(0x00080000) AM_READWRITE(midyunit_dma_r, midyunit_dma_w) - AM_RANGE(0x01c00000, 0x01c0005f) AM_READ(midyunit_input_r) - AM_RANGE(0x01c00060, 0x01c0007f) AM_READWRITE(midyunit_protection_r, midyunit_cmos_enable_w) - AM_RANGE(0x01e00000, 0x01e0001f) AM_WRITE(midyunit_sound_w) - AM_RANGE(0x01f00000, 0x01f0001f) AM_WRITE(midyunit_control_w) - AM_RANGE(0x02000000, 0x05ffffff) AM_READ(midyunit_gfxrom_r) AM_SHARE("gfx_rom") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(midyunit_state::yawdim_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x97ff) AM_WRITE(yawdim_oki_bank_w) - AM_RANGE(0x9800, 0x9fff) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa7ff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void midyunit_state::main_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rw(this, FUNC(midyunit_state::midyunit_vram_r), FUNC(midyunit_state::midyunit_vram_w)); + map(0x01000000, 0x010fffff).ram().share("mainram"); + map(0x01400000, 0x0140ffff).rw(this, FUNC(midyunit_state::midyunit_cmos_r), FUNC(midyunit_state::midyunit_cmos_w)); + map(0x01800000, 0x0181ffff).ram().w(this, FUNC(midyunit_state::midyunit_paletteram_w)).share("paletteram"); + map(0x01a00000, 0x01a0009f).mirror(0x00080000).rw(this, FUNC(midyunit_state::midyunit_dma_r), FUNC(midyunit_state::midyunit_dma_w)); + map(0x01c00000, 0x01c0005f).r(this, FUNC(midyunit_state::midyunit_input_r)); + map(0x01c00060, 0x01c0007f).rw(this, FUNC(midyunit_state::midyunit_protection_r), FUNC(midyunit_state::midyunit_cmos_enable_w)); + map(0x01e00000, 0x01e0001f).w(this, FUNC(midyunit_state::midyunit_sound_w)); + map(0x01f00000, 0x01f0001f).w(this, FUNC(midyunit_state::midyunit_control_w)); + map(0x02000000, 0x05ffffff).r(this, FUNC(midyunit_state::midyunit_gfxrom_r)).share("gfx_rom"); + map(0xc0000000, 0xc00001ff).rw("maincpu", FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xff800000, 0xffffffff).rom().region("user1", 0); +} + + +void midyunit_state::yawdim_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x97ff).w(this, FUNC(midyunit_state::yawdim_oki_bank_w)); + map(0x9800, 0x9fff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa7ff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp index ec51b480ca0..c94133d89ba 100644 --- a/src/mame/drivers/midzeus.cpp +++ b/src/mame/drivers/midzeus.cpp @@ -732,39 +732,41 @@ READ32_MEMBER(midzeus_state::invasn_gun_r) * *************************************/ -ADDRESS_MAP_START(midzeus_state::zeus_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_RAM AM_SHARE("ram_base") - AM_RANGE(0x400000, 0x41ffff) AM_RAM - AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("tms32031_ctl") - AM_RANGE(0x880000, 0x8803ff) AM_READWRITE(zeus_r, zeus_w) AM_SHARE("zeusbase") - AM_RANGE(0x8d0000, 0x8d0009) AM_READWRITE(disk_asic_jr_r, disk_asic_jr_w) - AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) - AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog? - AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(cmos_r, cmos_w) AM_SHARE("nvram") - AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w) - AM_RANGE(0xa00000, 0xffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(midzeus2_state::zeus2_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_RAM AM_SHARE("ram_base") - AM_RANGE(0x400000, 0x43ffff) AM_RAM - AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) AM_SHARE("tms32031_ctl") - AM_RANGE(0x880000, 0x88007f) AM_DEVREADWRITE("zeus2", zeus2_device, zeus2_r, zeus2_w) - AM_RANGE(0x8a0000, 0x8a00cf) AM_READWRITE(firewire_r, firewire_w) AM_SHARE("firewire") - AM_RANGE(0x8d0000, 0x8d0009) AM_READWRITE(disk_asic_jr_r, disk_asic_jr_w) - AM_RANGE(0x900000, 0x91ffff) AM_READWRITE(zpram_r, zpram_w) AM_SHARE("nvram") AM_MIRROR(0x020000) - AM_RANGE(0x990000, 0x99000f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) - AM_RANGE(0x9c0000, 0x9c000f) AM_READWRITE(analog_r, analog_w) - AM_RANGE(0x9d0000, 0x9d000f) AM_READWRITE(disk_asic_r, disk_asic_w) - AM_RANGE(0x9e0000, 0x9e0000) AM_WRITENOP // watchdog? - AM_RANGE(0x9f0000, 0x9f7fff) AM_READWRITE(zeus2_timekeeper_r, zeus2_timekeeper_w) - AM_RANGE(0x9f8000, 0x9f8000) AM_WRITE(cmos_protect_w) - AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0xc00000, 0xffffff) AM_ROMBANK("bank1") AM_REGION("user2", 0) -ADDRESS_MAP_END +void midzeus_state::zeus_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).ram().share("ram_base"); + map(0x400000, 0x41ffff).ram(); + map(0x808000, 0x80807f).rw(this, FUNC(midzeus_state::tms32031_control_r), FUNC(midzeus_state::tms32031_control_w)).share("tms32031_ctl"); + map(0x880000, 0x8803ff).rw(this, FUNC(midzeus_state::zeus_r), FUNC(midzeus_state::zeus_w)).share("zeusbase"); + map(0x8d0000, 0x8d0009).rw(this, FUNC(midzeus_state::disk_asic_jr_r), FUNC(midzeus_state::disk_asic_jr_w)); + map(0x990000, 0x99000f).rw("ioasic", FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write)); + map(0x9e0000, 0x9e0000).nopw(); // watchdog? + map(0x9f0000, 0x9f7fff).rw(this, FUNC(midzeus_state::cmos_r), FUNC(midzeus_state::cmos_w)).share("nvram"); + map(0x9f8000, 0x9f8000).w(this, FUNC(midzeus_state::cmos_protect_w)); + map(0xa00000, 0xffffff).rom().region("user1", 0); +} + + +void midzeus2_state::zeus2_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).ram().share("ram_base"); + map(0x400000, 0x43ffff).ram(); + map(0x808000, 0x80807f).rw(this, FUNC(midzeus2_state::tms32031_control_r), FUNC(midzeus2_state::tms32031_control_w)).share("tms32031_ctl"); + map(0x880000, 0x88007f).rw(m_zeus, FUNC(zeus2_device::zeus2_r), FUNC(zeus2_device::zeus2_w)); + map(0x8a0000, 0x8a00cf).rw(this, FUNC(midzeus2_state::firewire_r), FUNC(midzeus2_state::firewire_w)).share("firewire"); + map(0x8d0000, 0x8d0009).rw(this, FUNC(midzeus2_state::disk_asic_jr_r), FUNC(midzeus2_state::disk_asic_jr_w)); + map(0x900000, 0x91ffff).rw(this, FUNC(midzeus2_state::zpram_r), FUNC(midzeus2_state::zpram_w)).share("nvram").mirror(0x020000); + map(0x990000, 0x99000f).rw("ioasic", FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write)); + map(0x9c0000, 0x9c000f).rw(this, FUNC(midzeus2_state::analog_r), FUNC(midzeus2_state::analog_w)); + map(0x9d0000, 0x9d000f).rw(this, FUNC(midzeus2_state::disk_asic_r), FUNC(midzeus2_state::disk_asic_w)); + map(0x9e0000, 0x9e0000).nopw(); // watchdog? + map(0x9f0000, 0x9f7fff).rw(this, FUNC(midzeus2_state::zeus2_timekeeper_r), FUNC(midzeus2_state::zeus2_timekeeper_w)); + map(0x9f8000, 0x9f8000).w(this, FUNC(midzeus2_state::cmos_protect_w)); + map(0xa00000, 0xbfffff).rom().region("user1", 0); + map(0xc00000, 0xffffff).bankr("bank1").region("user2", 0); +} /* diff --git a/src/mame/drivers/mightyframe.cpp b/src/mame/drivers/mightyframe.cpp index 2e5c5dc1adf..ba6b41fd050 100644 --- a/src/mame/drivers/mightyframe.cpp +++ b/src/mame/drivers/mightyframe.cpp @@ -30,9 +30,10 @@ private: // required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(mightyframe_state::mem_map) - AM_RANGE(0x000000, 0x007fff) AM_ROM -ADDRESS_MAP_END +void mightyframe_state::mem_map(address_map &map) +{ + map(0x000000, 0x007fff).rom(); +} static INPUT_PORTS_START( mightyframe ) INPUT_PORTS_END diff --git a/src/mame/drivers/mikie.cpp b/src/mame/drivers/mikie.cpp index 5f78edb9f27..76688c674d6 100644 --- a/src/mame/drivers/mikie.cpp +++ b/src/mame/drivers/mikie.cpp @@ -105,38 +105,40 @@ WRITE_LINE_MEMBER(mikie_state::irq_mask_w) * *************************************/ -ADDRESS_MAP_START(mikie_state::mikie_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x2000, 0x2007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2200, 0x2200) AM_WRITE(mikie_palettebank_w) - AM_RANGE(0x2300, 0x2300) AM_WRITENOP // ??? - AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x2401, 0x2401) AM_READ_PORT("P1") - AM_RANGE(0x2402, 0x2402) AM_READ_PORT("P2") - AM_RANGE(0x2403, 0x2403) AM_READ_PORT("DSW3") - AM_RANGE(0x2500, 0x2500) AM_READ_PORT("DSW1") - AM_RANGE(0x2501, 0x2501) AM_READ_PORT("DSW2") - AM_RANGE(0x2800, 0x288f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2890, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(mikie_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(mikie_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x5fff) AM_ROM // Machine checks for extra rom - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mikie_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_WRITENOP // sound command latch - AM_RANGE(0x8001, 0x8001) AM_WRITENOP // ??? - AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76489a_device, write) // trigger read of latch - AM_RANGE(0x8003, 0x8003) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8004, 0x8004) AM_DEVWRITE("sn2", sn76489a_device, write) // trigger read of latch - AM_RANGE(0x8005, 0x8005) AM_READ(mikie_sh_timer_r) - AM_RANGE(0x8079, 0x8079) AM_WRITENOP // ??? - AM_RANGE(0xa003, 0xa003) AM_WRITENOP // ??? -ADDRESS_MAP_END +void mikie_state::mikie_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x2000, 0x2007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x2100, 0x2100).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2200, 0x2200).w(this, FUNC(mikie_state::mikie_palettebank_w)); + map(0x2300, 0x2300).nopw(); // ??? + map(0x2400, 0x2400).portr("SYSTEM").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x2401, 0x2401).portr("P1"); + map(0x2402, 0x2402).portr("P2"); + map(0x2403, 0x2403).portr("DSW3"); + map(0x2500, 0x2500).portr("DSW1"); + map(0x2501, 0x2501).portr("DSW2"); + map(0x2800, 0x288f).ram().share("spriteram"); + map(0x2890, 0x37ff).ram(); + map(0x3800, 0x3bff).ram().w(this, FUNC(mikie_state::mikie_colorram_w)).share("colorram"); + map(0x3c00, 0x3fff).ram().w(this, FUNC(mikie_state::mikie_videoram_w)).share("videoram"); + map(0x4000, 0x5fff).rom(); // Machine checks for extra rom + map(0x6000, 0xffff).rom(); +} + +void mikie_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).nopw(); // sound command latch + map(0x8001, 0x8001).nopw(); // ??? + map(0x8002, 0x8002).w("sn1", FUNC(sn76489a_device::write)); // trigger read of latch + map(0x8003, 0x8003).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8004, 0x8004).w("sn2", FUNC(sn76489a_device::write)); // trigger read of latch + map(0x8005, 0x8005).r(this, FUNC(mikie_state::mikie_sh_timer_r)); + map(0x8079, 0x8079).nopw(); // ??? + map(0xa003, 0xa003).nopw(); // ??? +} /************************************* * diff --git a/src/mame/drivers/mikro80.cpp b/src/mame/drivers/mikro80.cpp index 4e31463ed5b..45c24638eb3 100644 --- a/src/mame/drivers/mikro80.cpp +++ b/src/mame/drivers/mikro80.cpp @@ -20,34 +20,38 @@ #include "speaker.h" /* Address maps */ -ADDRESS_MAP_START(mikro80_state::mikro80_mem) - AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x0800, 0xdfff ) AM_RAM // RAM - AM_RANGE( 0xe000, 0xe7ff ) AM_RAM AM_SHARE("cursor_ram")// Video RAM - AM_RANGE( 0xe800, 0xefff ) AM_RAM AM_SHARE("video_ram") // Video RAM - AM_RANGE( 0xf000, 0xf7ff ) AM_RAM // RAM - AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mikro80_state::mikro80_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x01, 0x01) AM_READWRITE(mikro80_tape_r, mikro80_tape_w ) - AM_RANGE( 0x04, 0x07) AM_READWRITE(mikro80_keyboard_r, mikro80_keyboard_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mikro80_state::kristall_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mikro80_state::radio99_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x01, 0x01) AM_READWRITE(mikro80_tape_r, mikro80_tape_w ) - AM_RANGE( 0x04, 0x04) AM_WRITE(radio99_sound_w) - AM_RANGE( 0x05, 0x05) AM_READWRITE(mikro80_8255_portc_r, mikro80_8255_portc_w ) - AM_RANGE( 0x06, 0x06) AM_READ(mikro80_8255_portb_r) - AM_RANGE( 0x07, 0x07) AM_WRITE(mikro80_8255_porta_w) -ADDRESS_MAP_END +void mikro80_state::mikro80_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankrw("bank1"); // First bank + map(0x0800, 0xdfff).ram(); // RAM + map(0xe000, 0xe7ff).ram().share("cursor_ram");// Video RAM + map(0xe800, 0xefff).ram().share("video_ram"); // Video RAM + map(0xf000, 0xf7ff).ram(); // RAM + map(0xf800, 0xffff).rom(); // System ROM +} + +void mikro80_state::mikro80_io(address_map &map) +{ + map.unmap_value_high(); + map(0x01, 0x01).rw(this, FUNC(mikro80_state::mikro80_tape_r), FUNC(mikro80_state::mikro80_tape_w)); + map(0x04, 0x07).rw(this, FUNC(mikro80_state::mikro80_keyboard_r), FUNC(mikro80_state::mikro80_keyboard_w)); +} + +void mikro80_state::kristall_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void mikro80_state::radio99_io(address_map &map) +{ + map.unmap_value_high(); + map(0x01, 0x01).rw(this, FUNC(mikro80_state::mikro80_tape_r), FUNC(mikro80_state::mikro80_tape_w)); + map(0x04, 0x04).w(this, FUNC(mikro80_state::radio99_sound_w)); + map(0x05, 0x05).rw(this, FUNC(mikro80_state::mikro80_8255_portc_r), FUNC(mikro80_state::mikro80_8255_portc_w)); + map(0x06, 0x06).r(this, FUNC(mikro80_state::mikro80_8255_portb_r)); + map(0x07, 0x07).w(this, FUNC(mikro80_state::mikro80_8255_porta_w)); +} /* Input ports */ static INPUT_PORTS_START( mikro80 ) diff --git a/src/mame/drivers/mikromik.cpp b/src/mame/drivers/mikromik.cpp index 99a059f2d1b..37a2b0a57c3 100644 --- a/src/mame/drivers/mikromik.cpp +++ b/src/mame/drivers/mikromik.cpp @@ -264,9 +264,10 @@ WRITE8_MEMBER( mm1_state::ls259_w ) // ADDRESS_MAP( mm1_map ) //------------------------------------------------- -ADDRESS_MAP_START(mm1_state::mm1_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void mm1_state::mm1_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(mm1_state::read), FUNC(mm1_state::write)); +} diff --git a/src/mame/drivers/mikrosha.cpp b/src/mame/drivers/mikrosha.cpp index c4e029f4552..033c45e69ee 100644 --- a/src/mame/drivers/mikrosha.cpp +++ b/src/mame/drivers/mikrosha.cpp @@ -49,22 +49,24 @@ MACHINE_RESET_MEMBER(mikrosha_state,mikrosha) } /* Address maps */ -ADDRESS_MAP_START(mikrosha_state::mikrosha_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0xc000, 0xc003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x07fc) - AM_RANGE( 0xc800, 0xc803 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x07fc) - AM_RANGE( 0xd000, 0xd001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x07fe) // video - AM_RANGE( 0xd800, 0xd803 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) AM_MIRROR(0x07fc) // Timer - AM_RANGE( 0xe000, 0xf7ff ) AM_READ(radio_cpu_state_r) // Not connected - AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mikrosha_state::mikrosha_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0xff ) AM_READWRITE(radio_io_r,radio_io_w) -ADDRESS_MAP_END +void mikrosha_state::mikrosha_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0x7fff).ram(); // RAM + map(0xc000, 0xc003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x07fc); + map(0xc800, 0xc803).rw(m_ppi8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x07fc); + map(0xd000, 0xd001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x07fe); // video + map(0xd800, 0xd803).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).mirror(0x07fc); // Timer + map(0xe000, 0xf7ff).r(this, FUNC(mikrosha_state::radio_cpu_state_r)); // Not connected + map(0xf800, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf800, 0xffff).rom(); // System ROM +} + +void mikrosha_state::mikrosha_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0xff).rw(this, FUNC(mikrosha_state::radio_io_r), FUNC(mikrosha_state::radio_io_w)); +} /* Input ports */ static INPUT_PORTS_START( mikrosha ) diff --git a/src/mame/drivers/mil4000.cpp b/src/mame/drivers/mil4000.cpp index c2c8fe97767..1474af7f647 100644 --- a/src/mame/drivers/mil4000.cpp +++ b/src/mame/drivers/mil4000.cpp @@ -425,48 +425,50 @@ WRITE16_MEMBER(mil4000_state::unk_w) } -ADDRESS_MAP_START(mil4000_state::mil4000_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram") // CY62256L-70, U77 - AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram") // CY62256L-70, U77 - AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram") // CY62256L-70, U78 - AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE(sc3_vram_w) AM_SHARE("sc3_vram") // CY62256L-70, U78 - AM_RANGE(0x708000, 0x708001) AM_READ_PORT("IN0") - AM_RANGE(0x708002, 0x708003) AM_READ_PORT("IN1") - AM_RANGE(0x708004, 0x708005) AM_READ(hvretrace_r) - AM_RANGE(0x708006, 0x708007) AM_READ_PORT("IN2") - AM_RANGE(0x708008, 0x708009) AM_WRITE(output_w) - AM_RANGE(0x708010, 0x708011) AM_NOP //touch screen - AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - - AM_RANGE(0x780000, 0x780fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") // 2x CY62256L-70 (U7 & U8). - -ADDRESS_MAP_END - -ADDRESS_MAP_START(mil4000_state::chewheel_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sc0_vram_w) AM_SHARE("sc0_vram") // V62C518256L-35P (U7). - AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE(sc1_vram_w) AM_SHARE("sc1_vram") // V62C518256L-35P (U7). - AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE(sc2_vram_w) AM_SHARE("sc2_vram") // V62C518256L-35P (U8). - AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE(sc3_vram_w) AM_SHARE("sc3_vram") // V62C518256L-35P (U8). - - AM_RANGE(0x51000c, 0x51000f) AM_READ(unk_r) // no idea what's mapped here. - AM_RANGE(0x510000, 0x51000f) AM_WRITE(unk_w) // no idea what's mapped here. - - AM_RANGE(0x708000, 0x708001) AM_READ_PORT("IN0") - AM_RANGE(0x708002, 0x708003) AM_READ_PORT("IN1") - AM_RANGE(0x708004, 0x708005) AM_READ(hvretrace_r) - AM_RANGE(0x708006, 0x708007) AM_READ_PORT("IN2") - AM_RANGE(0x708008, 0x708009) AM_WRITE(output_w) - AM_RANGE(0x708010, 0x708011) AM_READWRITE(chewheel_mcu_r, chewheel_mcu_w) - AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - - AM_RANGE(0x780000, 0x780fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xff3fff) AM_RAM AM_SHARE("nvram") // V62C51864L-70P (U77). - AM_RANGE(0xffc000, 0xffffff) AM_RAM // V62C51864L-70P (U78). - -ADDRESS_MAP_END +void mil4000_state::mil4000_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x500000, 0x503fff).ram().w(this, FUNC(mil4000_state::sc0_vram_w)).share("sc0_vram"); // CY62256L-70, U77 + map(0x504000, 0x507fff).ram().w(this, FUNC(mil4000_state::sc1_vram_w)).share("sc1_vram"); // CY62256L-70, U77 + map(0x508000, 0x50bfff).ram().w(this, FUNC(mil4000_state::sc2_vram_w)).share("sc2_vram"); // CY62256L-70, U78 + map(0x50c000, 0x50ffff).ram().w(this, FUNC(mil4000_state::sc3_vram_w)).share("sc3_vram"); // CY62256L-70, U78 + map(0x708000, 0x708001).portr("IN0"); + map(0x708002, 0x708003).portr("IN1"); + map(0x708004, 0x708005).r(this, FUNC(mil4000_state::hvretrace_r)); + map(0x708006, 0x708007).portr("IN2"); + map(0x708008, 0x708009).w(this, FUNC(mil4000_state::output_w)); + map(0x708010, 0x708011).noprw(); //touch screen + map(0x70801f, 0x70801f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + + map(0x780000, 0x780fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xffffff).ram().share("nvram"); // 2x CY62256L-70 (U7 & U8). + +} + +void mil4000_state::chewheel_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x500000, 0x503fff).ram().w(this, FUNC(mil4000_state::sc0_vram_w)).share("sc0_vram"); // V62C518256L-35P (U7). + map(0x504000, 0x507fff).ram().w(this, FUNC(mil4000_state::sc1_vram_w)).share("sc1_vram"); // V62C518256L-35P (U7). + map(0x508000, 0x50bfff).ram().w(this, FUNC(mil4000_state::sc2_vram_w)).share("sc2_vram"); // V62C518256L-35P (U8). + map(0x50c000, 0x50ffff).ram().w(this, FUNC(mil4000_state::sc3_vram_w)).share("sc3_vram"); // V62C518256L-35P (U8). + + map(0x51000c, 0x51000f).r(this, FUNC(mil4000_state::unk_r)); // no idea what's mapped here. + map(0x510000, 0x51000f).w(this, FUNC(mil4000_state::unk_w)); // no idea what's mapped here. + + map(0x708000, 0x708001).portr("IN0"); + map(0x708002, 0x708003).portr("IN1"); + map(0x708004, 0x708005).r(this, FUNC(mil4000_state::hvretrace_r)); + map(0x708006, 0x708007).portr("IN2"); + map(0x708008, 0x708009).w(this, FUNC(mil4000_state::output_w)); + map(0x708010, 0x708011).rw(this, FUNC(mil4000_state::chewheel_mcu_r), FUNC(mil4000_state::chewheel_mcu_w)); + map(0x70801f, 0x70801f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + + map(0x780000, 0x780fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xff3fff).ram().share("nvram"); // V62C51864L-70P (U77). + map(0xffc000, 0xffffff).ram(); // V62C51864L-70P (U78). + +} static INPUT_PORTS_START( mil4000 ) PORT_START("IN0") diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp index 1f9b0a1d4b3..6a61b74ce9d 100644 --- a/src/mame/drivers/milton6805.cpp +++ b/src/mame/drivers/milton6805.cpp @@ -107,9 +107,10 @@ private: void prg_map(address_map &map); }; -ADDRESS_MAP_START(milton_state::prg_map) - AM_RANGE(0x800, 0xfff) AM_ROM AM_REGION("maincpu", 0) // Internal ROM -ADDRESS_MAP_END +void milton_state::prg_map(address_map &map) +{ + map(0x800, 0xfff).rom().region("maincpu", 0); // Internal ROM +} static INPUT_PORTS_START( milton ) INPUT_PORTS_END diff --git a/src/mame/drivers/milwaukee.cpp b/src/mame/drivers/milwaukee.cpp index e703e31f450..637dd79d4f5 100644 --- a/src/mame/drivers/milwaukee.cpp +++ b/src/mame/drivers/milwaukee.cpp @@ -36,17 +36,18 @@ private: //required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(milwaukee_state::mem_map) - AM_RANGE(0x0000, 0xf7ff) AM_RAM +void milwaukee_state::mem_map(address_map &map) +{ + map(0x0000, 0xf7ff).ram(); //AM_RANGE(0xf800, 0xf87f) expansion i/o - AM_RANGE(0xf880, 0xf881) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // terminal - AM_RANGE(0xf882, 0xf883) AM_DEVREADWRITE("acia2", acia6850_device, read, write) // remote - AM_RANGE(0xf884, 0xf887) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // centronics - AM_RANGE(0xf888, 0xf88b) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xf88c, 0xf88f) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // disk controller - AM_RANGE(0xf890, 0xf891) AM_DEVREADWRITE("ssda", mc6852_device, read, write) - AM_RANGE(0xf898, 0xffff) AM_ROM AM_REGION("roms", 0x0098) -ADDRESS_MAP_END + map(0xf880, 0xf881).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // terminal + map(0xf882, 0xf883).rw("acia2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // remote + map(0xf884, 0xf887).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // centronics + map(0xf888, 0xf88b).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xf88c, 0xf88f).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // disk controller + map(0xf890, 0xf891).rw("ssda", FUNC(mc6852_device::read), FUNC(mc6852_device::write)); + map(0xf898, 0xffff).rom().region("roms", 0x0098); +} static INPUT_PORTS_START( milwaukee ) INPUT_PORTS_END diff --git a/src/mame/drivers/mini2440.cpp b/src/mame/drivers/mini2440.cpp index 2cd32dbb6d5..977f2eef4f4 100644 --- a/src/mame/drivers/mini2440.cpp +++ b/src/mame/drivers/mini2440.cpp @@ -207,10 +207,11 @@ void mini2440_state::machine_reset() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(mini2440_state::mini2440_map) +void mini2440_state::mini2440_map(address_map &map) +{ // AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x30000000, 0x37ffffff) AM_RAM -ADDRESS_MAP_END + map(0x30000000, 0x37ffffff).ram(); +} /*************************************************************************** MACHINE DRIVERS diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp index a6486d0d874..1b845e4f3c7 100644 --- a/src/mame/drivers/miniboy7.cpp +++ b/src/mame/drivers/miniboy7.cpp @@ -345,19 +345,20 @@ WRITE_LINE_MEMBER(miniboy7_state::pia_ca2_w) * Memory Map Information * ***********************************/ -ADDRESS_MAP_START(miniboy7_state::miniboy7_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM? */ - AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("videoram_a") - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("colorram_a") - AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("videoram_b") - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("colorram_b") - AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2801, 0x2801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x3000, 0x3001) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) // FIXME - AM_RANGE(0x3080, 0x3083) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x3800, 0x3800) AM_READNOP // R (right after each read, another value is loaded to the ACCU, so it lacks of sense) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void miniboy7_state::miniboy7_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed RAM? */ + map(0x0800, 0x0fff).ram().share("videoram_a"); + map(0x1000, 0x17ff).ram().share("colorram_a"); + map(0x1800, 0x1fff).ram().share("videoram_b"); + map(0x2000, 0x27ff).ram().share("colorram_b"); + map(0x2800, 0x2800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x3000, 0x3001).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // FIXME + map(0x3080, 0x3083).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x3800, 0x3800).nopr(); // R (right after each read, another value is loaded to the ACCU, so it lacks of sense) + map(0x4000, 0xffff).rom(); +} /* diff --git a/src/mame/drivers/miniframe.cpp b/src/mame/drivers/miniframe.cpp index aa62c8cc28f..a9119e46b15 100644 --- a/src/mame/drivers/miniframe.cpp +++ b/src/mame/drivers/miniframe.cpp @@ -188,20 +188,22 @@ uint32_t miniframe_state::screen_update(screen_device &screen, bitmap_ind16 &bit ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(miniframe_state::miniframe_mem) - AM_RANGE(0x000000, 0x3fffff) AM_DEVICE("ramrombank", address_map_bank_device, amap16) - AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("mapram") - AM_RANGE(0x450000, 0x450001) AM_WRITE(general_ctrl_w) - AM_RANGE(0x800000, 0x81ffff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) - AM_RANGE(0xc40000, 0xc40007) AM_DEVREADWRITE8("baudgen", pit8253_device, read, write, 0x00ff) - AM_RANGE(0xc90000, 0xc90003) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(miniframe_state::ramrombank_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0x400000, 0x7fffff) AM_READWRITE(ram_mmu_r, ram_mmu_w) -ADDRESS_MAP_END +void miniframe_state::miniframe_mem(address_map &map) +{ + map(0x000000, 0x3fffff).m(m_ramrombank, FUNC(address_map_bank_device::amap16)); + map(0x400000, 0x4007ff).ram().share("mapram"); + map(0x450000, 0x450001).w(this, FUNC(miniframe_state::general_ctrl_w)); + map(0x800000, 0x81ffff).rom().region("bootrom", 0); + map(0xc00000, 0xc00007).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xc40000, 0xc40007).rw("baudgen", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xc90000, 0xc90003).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); +} + +void miniframe_state::ramrombank_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom().region("bootrom", 0); + map(0x400000, 0x7fffff).rw(this, FUNC(miniframe_state::ram_mmu_r), FUNC(miniframe_state::ram_mmu_w)); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/minitel_2_rpic.cpp b/src/mame/drivers/minitel_2_rpic.cpp index 953f3476935..b58eb5a4d8b 100644 --- a/src/mame/drivers/minitel_2_rpic.cpp +++ b/src/mame/drivers/minitel_2_rpic.cpp @@ -277,9 +277,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(minitel_state::minitel_scanline) m_ts9347->update_scanline((uint16_t)param); } -ADDRESS_MAP_START(minitel_state::mem_prg) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void minitel_state::mem_prg(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} ADDRESS_MAP_START(minitel_state::mem_io) AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dev_keyb_ser_r, dev_crtl_reg_w) diff --git a/src/mame/drivers/minivadr.cpp b/src/mame/drivers/minivadr.cpp index 70bbec71ba8..18ceb27eb6c 100644 --- a/src/mame/drivers/minivadr.cpp +++ b/src/mame/drivers/minivadr.cpp @@ -87,11 +87,12 @@ uint32_t minivadr_state::screen_update_minivadr(screen_device &screen, bitmap_rg } -ADDRESS_MAP_START(minivadr_state::minivadr_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe008, 0xe008) AM_READ_PORT("INPUTS") AM_WRITENOP // W - ??? -ADDRESS_MAP_END +void minivadr_state::minivadr_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xa000, 0xbfff).ram().share("videoram"); + map(0xe008, 0xe008).portr("INPUTS").nopw(); // W - ??? +} static INPUT_PORTS_START( minivadr ) diff --git a/src/mame/drivers/mirage.cpp b/src/mame/drivers/mirage.cpp index 16eb3a27668..6a0c07e48fd 100644 --- a/src/mame/drivers/mirage.cpp +++ b/src/mame/drivers/mirage.cpp @@ -158,29 +158,30 @@ WRITE16_MEMBER(miragemj_state::okim0_rombank_w) m_oki_bgm->set_rom_bank(data & 0x7); } -ADDRESS_MAP_START(miragemj_state::mirage_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void miragemj_state::mirage_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); /* tilemaps */ - AM_RANGE(0x100000, 0x101fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) // 0x100000 - 0x101fff tested - AM_RANGE(0x102000, 0x103fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) // 0x102000 - 0x102fff tested + map(0x100000, 0x101fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); // 0x100000 - 0x101fff tested + map(0x102000, 0x103fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); // 0x102000 - 0x102fff tested /* linescroll */ - AM_RANGE(0x110000, 0x110bff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x112000, 0x112bff) AM_RAM AM_SHARE("pf2_rowscroll") - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x130000, 0x1307ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x14000f) AM_DEVREADWRITE8("oki_sfx", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x150000, 0x15000f) AM_DEVREADWRITE8("oki_bgm", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x160000, 0x160001) AM_WRITENOP - AM_RANGE(0x168000, 0x16800f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x16a000, 0x16a001) AM_WRITENOP - AM_RANGE(0x16c000, 0x16c001) AM_WRITE(okim1_rombank_w) - AM_RANGE(0x16c002, 0x16c003) AM_WRITE(okim0_rombank_w) - AM_RANGE(0x16c004, 0x16c005) AM_WRITE(mjmux_w) - AM_RANGE(0x16c006, 0x16c007) AM_READ(mjmux_r) - AM_RANGE(0x16e000, 0x16e001) AM_WRITENOP - AM_RANGE(0x16e002, 0x16e003) AM_READ_PORT("SYSTEM_IN") - AM_RANGE(0x170000, 0x173fff) AM_RAM -ADDRESS_MAP_END + map(0x110000, 0x110bff).ram().share("pf1_rowscroll"); + map(0x112000, 0x112bff).ram().share("pf2_rowscroll"); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x130000, 0x1307ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x14000f).rw(m_oki_sfx, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x150000, 0x15000f).rw(m_oki_bgm, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x160000, 0x160001).nopw(); + map(0x168000, 0x16800f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x16a000, 0x16a001).nopw(); + map(0x16c000, 0x16c001).w(this, FUNC(miragemj_state::okim1_rombank_w)); + map(0x16c002, 0x16c003).w(this, FUNC(miragemj_state::okim0_rombank_w)); + map(0x16c004, 0x16c005).w(this, FUNC(miragemj_state::mjmux_w)); + map(0x16c006, 0x16c007).r(this, FUNC(miragemj_state::mjmux_r)); + map(0x16e000, 0x16e001).nopw(); + map(0x16e002, 0x16e003).portr("SYSTEM_IN"); + map(0x170000, 0x173fff).ram(); +} static INPUT_PORTS_START( mirage ) diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp index 81d9140c60d..9bf20baf2e3 100644 --- a/src/mame/drivers/mirax.cpp +++ b/src/mame/drivers/mirax.cpp @@ -317,37 +317,39 @@ WRITE_LINE_MEMBER(mirax_state::flip_screen_y_w) m_flipscreen_y = state; } -ADDRESS_MAP_START(mirax_state::mirax_main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc800, 0xd7ff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xea00, 0xea3f) AM_RAM AM_SHARE("colorram") //per-column color + bank bits for the videoram - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1") - AM_RANGE(0xf100, 0xf100) AM_READ_PORT("P2") - AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW1") - AM_RANGE(0xf300, 0xf300) AM_READNOP //watchdog? value is always read then discarded - AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW2") - AM_RANGE(0xf500, 0xf507) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_cmd_w) +void mirax_state::mirax_main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc800, 0xd7ff).ram(); + map(0xe000, 0xe3ff).ram().share("videoram"); + map(0xe800, 0xe9ff).ram().share("spriteram"); + map(0xea00, 0xea3f).ram().share("colorram"); //per-column color + bank bits for the videoram + map(0xf000, 0xf000).portr("P1"); + map(0xf100, 0xf100).portr("P2"); + map(0xf200, 0xf200).portr("DSW1"); + map(0xf300, 0xf300).nopr(); //watchdog? value is always read then discarded + map(0xf400, 0xf400).portr("DSW2"); + map(0xf500, 0xf507).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xf800, 0xf800).w(this, FUNC(mirax_state::sound_cmd_w)); // AM_RANGE(0xf900, 0xf900) //sound cmd mirror? ack? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(mirax_state::mirax_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) +void mirax_state::mirax_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); - AM_RANGE(0xe000, 0xe000) AM_WRITENOP - AM_RANGE(0xe001, 0xe001) AM_WRITENOP - AM_RANGE(0xe003, 0xe003) AM_WRITE(ay1_sel) //1st ay ? + map(0xe000, 0xe000).nopw(); + map(0xe001, 0xe001).nopw(); + map(0xe003, 0xe003).w(this, FUNC(mirax_state::ay1_sel)); //1st ay ? - AM_RANGE(0xe400, 0xe400) AM_WRITENOP - AM_RANGE(0xe401, 0xe401) AM_WRITENOP - AM_RANGE(0xe403, 0xe403) AM_WRITE(ay2_sel) //2nd ay ? + map(0xe400, 0xe400).nopw(); + map(0xe401, 0xe401).nopw(); + map(0xe403, 0xe403).w(this, FUNC(mirax_state::ay2_sel)); //2nd ay ? - AM_RANGE(0xf900, 0xf9ff) AM_WRITE(audio_w) -ADDRESS_MAP_END + map(0xf900, 0xf9ff).w(this, FUNC(mirax_state::audio_w)); +} /* verified from Z80 code */ diff --git a/src/mame/drivers/missb2.cpp b/src/mame/drivers/missb2.cpp index e48415eb0f1..d40c46c9547 100644 --- a/src/mame/drivers/missb2.cpp +++ b/src/mame/drivers/missb2.cpp @@ -179,56 +179,59 @@ READ8_MEMBER(missb2_state::missb2_oki_r) /* Memory Maps */ -ADDRESS_MAP_START(missb2_state::maincpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdcff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xdd00, 0xdfff) AM_RAM AM_SHARE("objectram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf800, 0xf9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0x007c) AM_DEVREAD("sound_to_main", generic_latch_8_device, read) AM_DEVWRITE("main_to_sound", generic_latch_8_device, write) - AM_RANGE(0xfa01, 0xfa01) AM_MIRROR(0x007c) AM_READ(common_sound_semaphores_r) - AM_RANGE(0xfa03, 0xfa03) AM_MIRROR(0x007c) AM_WRITE(bublbobl_soundcpu_reset_w) - AM_RANGE(0xfa80, 0xfa80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xfb40, 0xfb40) AM_WRITE(bublbobl_bankswitch_w) - AM_RANGE(0xfc00, 0xfcff) AM_RAM - AM_RANGE(0xfd00, 0xfdff) AM_RAM // ??? - AM_RANGE(0xfe00, 0xfe03) AM_RAM // ??? - AM_RANGE(0xfe80, 0xfe83) AM_RAM // ??? - AM_RANGE(0xff00, 0xff00) AM_READ_PORT("DSW1") - AM_RANGE(0xff01, 0xff01) AM_READ_PORT("DSW2") - AM_RANGE(0xff02, 0xff02) AM_READ_PORT("P1") - AM_RANGE(0xff03, 0xff03) AM_READ_PORT("P2") - AM_RANGE(0xff94, 0xff94) AM_WRITENOP // ??? - AM_RANGE(0xff98, 0xff98) AM_WRITENOP // ??? -ADDRESS_MAP_END - -ADDRESS_MAP_START(missb2_state::subcpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank2") // ROM data for the background palette ram - AM_RANGE(0xa000, 0xafff) AM_ROMBANK("bank3") // ROM data for the background palette ram - AM_RANGE(0xb000, 0xb1ff) AM_ROM // banked ??? - AM_RANGE(0xc000, 0xc1ff) AM_RAM_DEVWRITE("bgpalette", palette_device, write8) AM_SHARE("bgpalette") - AM_RANGE(0xc800, 0xcfff) AM_RAM // main ??? - AM_RANGE(0xd000, 0xd000) AM_WRITE(missb2_bg_bank_w) - AM_RANGE(0xd002, 0xd002) AM_WRITENOP - AM_RANGE(0xd003, 0xd003) AM_RAM AM_SHARE("bgvram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END +void missb2_state::maincpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdcff).ram().share("videoram"); + map(0xdd00, 0xdfff).ram().share("objectram"); + map(0xe000, 0xf7ff).ram().share("share1"); + map(0xf800, 0xf9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xfa00, 0xfa00).mirror(0x007c).r(m_sound_to_main, FUNC(generic_latch_8_device::read)).w(m_main_to_sound, FUNC(generic_latch_8_device::write)); + map(0xfa01, 0xfa01).mirror(0x007c).r(this, FUNC(missb2_state::common_sound_semaphores_r)); + map(0xfa03, 0xfa03).mirror(0x007c).w(this, FUNC(missb2_state::bublbobl_soundcpu_reset_w)); + map(0xfa80, 0xfa80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xfb40, 0xfb40).w(this, FUNC(missb2_state::bublbobl_bankswitch_w)); + map(0xfc00, 0xfcff).ram(); + map(0xfd00, 0xfdff).ram(); // ??? + map(0xfe00, 0xfe03).ram(); // ??? + map(0xfe80, 0xfe83).ram(); // ??? + map(0xff00, 0xff00).portr("DSW1"); + map(0xff01, 0xff01).portr("DSW2"); + map(0xff02, 0xff02).portr("P1"); + map(0xff03, 0xff03).portr("P2"); + map(0xff94, 0xff94).nopw(); // ??? + map(0xff98, 0xff98).nopw(); // ??? +} + +void missb2_state::subcpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x9000, 0x9fff).bankr("bank2"); // ROM data for the background palette ram + map(0xa000, 0xafff).bankr("bank3"); // ROM data for the background palette ram + map(0xb000, 0xb1ff).rom(); // banked ??? + map(0xc000, 0xc1ff).ram().w(m_bgpalette, FUNC(palette_device::write8)).share("bgpalette"); + map(0xc800, 0xcfff).ram(); // main ??? + map(0xd000, 0xd000).w(this, FUNC(missb2_state::missb2_bg_bank_w)); + map(0xd002, 0xd002).nopw(); + map(0xd003, 0xd003).ram().share("bgvram"); + map(0xe000, 0xf7ff).ram().share("share1"); +} // Looks like the original bublbobl code modified to support the OKI M6295. // due to some really wacky bugs in the way the oki6295 was hacked in place, writes will happen to // many addresses other than 9000: 9000-9001, 0000-0001, 3827-3828, 44a8-44a9 -ADDRESS_MAP_START(missb2_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_READWRITE(missb2_oki_r, missb2_oki_w) //AM_MIRROR(0x0fff) ??? - AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x0ffc) AM_DEVREAD("main_to_sound", generic_latch_8_device, read) AM_DEVWRITE("sound_to_main", generic_latch_8_device, write) - AM_RANGE(0xb001, 0xb001) AM_MIRROR(0x0ffc) AM_READ(common_sound_semaphores_r) AM_DEVWRITE("soundnmi", input_merger_device, in_set<0>) - AM_RANGE(0xb002, 0xb002) AM_MIRROR(0x0ffc) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>) - AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM? -ADDRESS_MAP_END +void missb2_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9000).rw(this, FUNC(missb2_state::missb2_oki_r), FUNC(missb2_state::missb2_oki_w)); //AM_MIRROR(0x0fff) ??? + map(0xa000, 0xa001).mirror(0x0ffe).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); + map(0xb000, 0xb000).mirror(0x0ffc).r(m_main_to_sound, FUNC(generic_latch_8_device::read)).w(m_sound_to_main, FUNC(generic_latch_8_device::write)); + map(0xb001, 0xb001).mirror(0x0ffc).r(this, FUNC(missb2_state::common_sound_semaphores_r)).w(m_soundnmi, FUNC(input_merger_device::in_set<0>)); + map(0xb002, 0xb002).mirror(0x0ffc).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>)); + map(0xe000, 0xefff).rom(); // space for diagnostic ROM? +} /* Input Ports */ diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp index bf3b3bb23d6..d5eb1ed1aba 100644 --- a/src/mame/drivers/missile.cpp +++ b/src/mame/drivers/missile.cpp @@ -946,14 +946,16 @@ READ8_MEMBER(missile_state::bootleg_r) *************************************/ /* complete memory map derived from schematics (implemented above) */ -ADDRESS_MAP_START(missile_state::main_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(missile_r, missile_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void missile_state::main_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(missile_state::missile_r), FUNC(missile_state::missile_w)).share("videoram"); +} /* adjusted from the above to get the bootlegs to boot */ -ADDRESS_MAP_START(missile_state::bootleg_main_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(bootleg_r, bootleg_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void missile_state::bootleg_main_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(missile_state::bootleg_r), FUNC(missile_state::bootleg_w)).share("videoram"); +} /************************************* * diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp index 18c14d502fa..390b0f5413b 100644 --- a/src/mame/drivers/mitchell.cpp +++ b/src/mame/drivers/mitchell.cpp @@ -315,70 +315,76 @@ WRITE8_MEMBER(mitchell_state::input_w) * *************************************/ -ADDRESS_MAP_START(mitchell_state::mgakuen_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) /* palette RAM */ - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */ - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(mgakuen_videoram_r, mgakuen_videoram_w) AM_SHARE("videoram") /* char RAM */ - AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */ - AM_RANGE(0xf000, 0xffff) AM_READWRITE(mgakuen_objram_r, mgakuen_objram_w) /* OBJ RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mitchell_state::mitchell_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r,pang_paletteram_w) /* Banked palette RAM */ - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r,pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */ - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r,pang_videoram_w) AM_SHARE("videoram")/* Banked char / OBJ RAM */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mitchell_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mitchell_state::mitchell_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */ - AM_RANGE(0x00, 0x02) AM_READ(input_r) /* The Mahjong games and Block Block need special input treatment */ - AM_RANGE(0x01, 0x01) AM_WRITE(input_w) - AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */ - AM_RANGE(0x03, 0x03) AM_DEVWRITE("ymsnd", ym2413_device, data_port_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("ymsnd", ym2413_device, register_port_w) - AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0x06, 0x06) AM_NOP /* watchdog? IRQ ack? video buffering? */ - AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */ - AM_RANGE(0x08, 0x08) AM_WRITE(eeprom_cs_w) - AM_RANGE(0x10, 0x10) AM_WRITE(eeprom_clock_w) - AM_RANGE(0x18, 0x18) AM_WRITE(eeprom_serial_w) -ADDRESS_MAP_END +void mitchell_state::mgakuen_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)); /* palette RAM */ + map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */ + map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::mgakuen_videoram_r), FUNC(mitchell_state::mgakuen_videoram_w)).share("videoram"); /* char RAM */ + map(0xe000, 0xefff).ram(); /* Work RAM */ + map(0xf000, 0xffff).rw(this, FUNC(mitchell_state::mgakuen_objram_r), FUNC(mitchell_state::mgakuen_objram_w)); /* OBJ RAM */ +} + +void mitchell_state::mitchell_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).rw(this, FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */ + map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */ + map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram");/* Banked char / OBJ RAM */ + map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */ +} + +void mitchell_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); + map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */ +} + +void mitchell_state::mitchell_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(mitchell_state::pang_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ + map(0x00, 0x02).r(this, FUNC(mitchell_state::input_r)); /* The Mahjong games and Block Block need special input treatment */ + map(0x01, 0x01).w(this, FUNC(mitchell_state::input_w)); + map(0x02, 0x02).w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ + map(0x03, 0x03).w("ymsnd", FUNC(ym2413_device::data_port_w)); + map(0x04, 0x04).w("ymsnd", FUNC(ym2413_device::register_port_w)); + map(0x05, 0x05).r(this, FUNC(mitchell_state::pang_port5_r)).w(m_oki, FUNC(okim6295_device::write)); + map(0x06, 0x06).noprw(); /* watchdog? IRQ ack? video buffering? */ + map(0x07, 0x07).w(this, FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */ + map(0x08, 0x08).w(this, FUNC(mitchell_state::eeprom_cs_w)); + map(0x10, 0x10).w(this, FUNC(mitchell_state::eeprom_clock_w)); + map(0x18, 0x18).w(this, FUNC(mitchell_state::eeprom_serial_w)); +} /* spangbl */ -ADDRESS_MAP_START(mitchell_state::spangbl_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r, pang_paletteram_w) /* Banked palette RAM */ - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram")/* Attribute RAM */ - AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r, pang_videoram_w) AM_SHARE("videoram") /* Banked char / OBJ RAM */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mitchell_state::spangbl_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x02) AM_READ(input_r) - AM_RANGE(0x00, 0x00) AM_WRITE(pangbl_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */ - AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */ - AM_RANGE(0x03, 0x03) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x05, 0x05) AM_READ_PORT("SYS0") - AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */ - AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */ - AM_RANGE(0x08, 0x08) AM_WRITE(eeprom_cs_w) - AM_RANGE(0x10, 0x10) AM_WRITE(eeprom_clock_w) - AM_RANGE(0x18, 0x18) AM_WRITE(eeprom_serial_w) -ADDRESS_MAP_END +void mitchell_state::spangbl_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1").nopw(); + map(0xc000, 0xc7ff).rw(this, FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */ + map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram");/* Attribute RAM */ + map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram"); /* Banked char / OBJ RAM */ + map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */ +} + +void mitchell_state::spangbl_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x02).r(this, FUNC(mitchell_state::input_r)); + map(0x00, 0x00).w(this, FUNC(mitchell_state::pangbl_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ + map(0x02, 0x02).w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ + map(0x03, 0x03).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x05, 0x05).portr("SYS0"); + map(0x06, 0x06).nopw(); /* watchdog? irq ack? */ + map(0x07, 0x07).w(this, FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */ + map(0x08, 0x08).w(this, FUNC(mitchell_state::eeprom_cs_w)); + map(0x10, 0x10).w(this, FUNC(mitchell_state::eeprom_clock_w)); + map(0x18, 0x18).w(this, FUNC(mitchell_state::eeprom_serial_w)); +} WRITE8_MEMBER(mitchell_state::sound_bankswitch_w) { @@ -387,25 +393,27 @@ WRITE8_MEMBER(mitchell_state::sound_bankswitch_w) m_soundbank->set_entry(data & 7); } -ADDRESS_MAP_START(mitchell_state::spangbl_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w) - AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0xf000, 0xf4ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mitchell_state::pangba_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w) - AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xf000, 0xf4ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void mitchell_state::spangbl_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xe000, 0xe000).w(this, FUNC(mitchell_state::sound_bankswitch_w)); + map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w)); + map(0xec00, 0xec01).w("ymsnd", FUNC(ym2413_device::write)); + map(0xf000, 0xf4ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void mitchell_state::pangba_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xe000, 0xe000).w(this, FUNC(mitchell_state::sound_bankswitch_w)); + map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w)); + map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write)); + map(0xf000, 0xf4ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /**** Monsters World ****/ @@ -414,13 +422,14 @@ WRITE8_MEMBER(mitchell_state::oki_banking_w) m_oki->set_rom_bank(data & 3); } -ADDRESS_MAP_START(mitchell_state::mstworld_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_banking_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void mitchell_state::mstworld_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(mitchell_state::oki_banking_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} WRITE8_MEMBER(mitchell_state::mstworld_sound_w) { @@ -428,18 +437,19 @@ WRITE8_MEMBER(mitchell_state::mstworld_sound_w) m_audiocpu->set_input_line(0, HOLD_LINE); } -ADDRESS_MAP_START(mitchell_state::mstworld_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(mstworld_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */ - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(pang_bankswitch_w) /* Code bank register */ - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(mstworld_sound_w) /* write to sound cpu */ - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") /* dips? */ - AM_RANGE(0x05, 0x05) AM_READ_PORT("SYS0") /* special? */ - AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2") /* dips? */ - AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */ - AM_RANGE(0x07, 0x07) AM_WRITE(mstworld_video_bank_w) /* Video RAM bank register */ -ADDRESS_MAP_END +void mitchell_state::mstworld_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w(this, FUNC(mitchell_state::mstworld_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */ + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2").w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */ + map(0x03, 0x03).portr("DSW0").w(this, FUNC(mitchell_state::mstworld_sound_w)); /* write to sound cpu */ + map(0x04, 0x04).portr("DSW1"); /* dips? */ + map(0x05, 0x05).portr("SYS0"); /* special? */ + map(0x06, 0x06).portr("DSW2"); /* dips? */ + map(0x06, 0x06).nopw(); /* watchdog? irq ack? */ + map(0x07, 0x07).w(this, FUNC(mitchell_state::mstworld_video_bank_w)); /* Video RAM bank register */ +} /************************************* diff --git a/src/mame/drivers/mits680b.cpp b/src/mame/drivers/mits680b.cpp index e70d2bea596..403d8161ed4 100644 --- a/src/mame/drivers/mits680b.cpp +++ b/src/mame/drivers/mits680b.cpp @@ -49,13 +49,14 @@ READ8_MEMBER( mits680b_state::status_check_r ) } -ADDRESS_MAP_START(mits680b_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM // 1024 bytes RAM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xf002, 0xf002) AM_READ(status_check_r) - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void mits680b_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); // 1024 bytes RAM + map(0xf000, 0xf001).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xf002, 0xf002).r(this, FUNC(mits680b_state::status_check_r)); + map(0xff00, 0xffff).rom().region("roms", 0); +} /* Input ports */ static INPUT_PORTS_START( mits680b ) diff --git a/src/mame/drivers/mjkjidai.cpp b/src/mame/drivers/mjkjidai.cpp index 075622f2806..489cc7b688a 100644 --- a/src/mame/drivers/mjkjidai.cpp +++ b/src/mame/drivers/mjkjidai.cpp @@ -80,22 +80,24 @@ WRITE8_MEMBER(mjkjidai_state::keyboard_select_hi_w) } -ADDRESS_MAP_START(mjkjidai_state::mjkjidai_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("nvram") // cleared and initialized on startup if bit 6 of port 00 is 0 - AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mjkjidai_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mjkjidai_state::mjkjidai_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x30, 0x30) AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x40, 0x40) AM_WRITE(adpcm_w) -ADDRESS_MAP_END +void mjkjidai_state::mjkjidai_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xdfff).ram().share("nvram"); // cleared and initialized on startup if bit 6 of port 00 is 0 + map(0xe000, 0xf7ff).ram().w(this, FUNC(mjkjidai_state::mjkjidai_videoram_w)).share("videoram"); +} + +void mjkjidai_state::mjkjidai_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x13).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x20, 0x20).w("sn1", FUNC(sn76489_device::write)); + map(0x30, 0x30).w("sn2", FUNC(sn76489_device::write)); + map(0x40, 0x40).w(this, FUNC(mjkjidai_state::adpcm_w)); +} static INPUT_PORTS_START( mjkjidai ) diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp index 4122704a7b0..e1fe3623d60 100644 --- a/src/mame/drivers/mjsenpu.cpp +++ b/src/mame/drivers/mjsenpu.cpp @@ -214,35 +214,37 @@ READ32_MEMBER(mjsenpu_state::muxed_inputs_r) return 0x00000000;// 0xffffffff; } -ADDRESS_MAP_START(mjsenpu_state::mjsenpu_32bit_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("user2",0) // main game rom +void mjsenpu_state::mjsenpu_32bit_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("mainram"); + map(0x40000000, 0x401fffff).rom().region("user2", 0); // main game rom - AM_RANGE(0x80000000, 0x8001ffff) AM_READWRITE(vram_r,vram_w) + map(0x80000000, 0x8001ffff).rw(this, FUNC(mjsenpu_state::vram_r), FUNC(mjsenpu_state::vram_w)); - AM_RANGE(0xffc00000, 0xffc000ff) AM_READWRITE8(palette_low_r, palette_low_w, 0xffffffff) - AM_RANGE(0xffd00000, 0xffd000ff) AM_READWRITE8(palette_high_r, palette_high_w, 0xffffffff) + map(0xffc00000, 0xffc000ff).rw(this, FUNC(mjsenpu_state::palette_low_r), FUNC(mjsenpu_state::palette_low_w)); + map(0xffd00000, 0xffd000ff).rw(this, FUNC(mjsenpu_state::palette_high_r), FUNC(mjsenpu_state::palette_high_w)); - AM_RANGE(0xffe00000, 0xffe007ff) AM_RAM AM_SHARE("nvram") + map(0xffe00000, 0xffe007ff).ram().share("nvram"); - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1",0) // boot rom -ADDRESS_MAP_END + map(0xfff80000, 0xffffffff).rom().region("user1", 0); // boot rom +} -ADDRESS_MAP_START(mjsenpu_state::mjsenpu_io) - AM_RANGE(0x4000, 0x4003) AM_READ(muxed_inputs_r) - AM_RANGE(0x4010, 0x4013) AM_READ_PORT("IN1") +void mjsenpu_state::mjsenpu_io(address_map &map) +{ + map(0x4000, 0x4003).r(this, FUNC(mjsenpu_state::muxed_inputs_r)); + map(0x4010, 0x4013).portr("IN1"); - AM_RANGE(0x4020, 0x4023) AM_WRITE8( control_w, 0x000000ff) + map(0x4023, 0x4023).w(this, FUNC(mjsenpu_state::control_w)); - AM_RANGE(0x4030, 0x4033) AM_READ_PORT("DSW1") - AM_RANGE(0x4040, 0x4043) AM_READ_PORT("DSW2") - AM_RANGE(0x4050, 0x4053) AM_READ_PORT("DSW3") + map(0x4030, 0x4033).portr("DSW1"); + map(0x4040, 0x4043).portr("DSW2"); + map(0x4050, 0x4053).portr("DSW3"); - AM_RANGE(0x4060, 0x4063) AM_WRITE8( mux_w, 0x000000ff) + map(0x4063, 0x4063).w(this, FUNC(mjsenpu_state::mux_w)); - AM_RANGE(0x4070, 0x4073) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x000000ff) -ADDRESS_MAP_END + map(0x4073, 0x4073).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( mjsenpu ) diff --git a/src/mame/drivers/mjsister.cpp b/src/mame/drivers/mjsister.cpp index b43906bd9e2..0faf7dfc82c 100644 --- a/src/mame/drivers/mjsister.cpp +++ b/src/mame/drivers/mjsister.cpp @@ -316,27 +316,29 @@ READ8_MEMBER(mjsister_state::keys_r) * *************************************/ -ADDRESS_MAP_START(mjsister_state::mjsister_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(videoram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mjsister_state::mjsister_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITENOP /* HD46505? */ - AM_RANGE(0x10, 0x10) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x11, 0x11) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x12, 0x12) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x20, 0x20) AM_READ(keys_r) - AM_RANGE(0x21, 0x21) AM_READ_PORT("IN0") - AM_RANGE(0x30, 0x30) AM_DEVWRITE("mainlatch1", ls259_device, write_nibble_d0) - AM_RANGE(0x31, 0x31) AM_DEVWRITE("mainlatch2", ls259_device, write_nibble_d0) - AM_RANGE(0x32, 0x32) AM_WRITE(input_sel1_w) - AM_RANGE(0x33, 0x33) AM_WRITE(input_sel2_w) - AM_RANGE(0x34, 0x34) AM_WRITE(dac_adr_s_w) - AM_RANGE(0x35, 0x35) AM_WRITE(dac_adr_e_w) -ADDRESS_MAP_END +void mjsister_state::mjsister_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1").w(this, FUNC(mjsister_state::videoram_w)); +} + +void mjsister_state::mjsister_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).nopw(); /* HD46505? */ + map(0x10, 0x10).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x11, 0x11).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x12, 0x12).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x20, 0x20).r(this, FUNC(mjsister_state::keys_r)); + map(0x21, 0x21).portr("IN0"); + map(0x30, 0x30).w("mainlatch1", FUNC(ls259_device::write_nibble_d0)); + map(0x31, 0x31).w("mainlatch2", FUNC(ls259_device::write_nibble_d0)); + map(0x32, 0x32).w(this, FUNC(mjsister_state::input_sel1_w)); + map(0x33, 0x33).w(this, FUNC(mjsister_state::input_sel2_w)); + map(0x34, 0x34).w(this, FUNC(mjsister_state::dac_adr_s_w)); + map(0x35, 0x35).w(this, FUNC(mjsister_state::dac_adr_e_w)); +} /************************************* diff --git a/src/mame/drivers/mk1.cpp b/src/mame/drivers/mk1.cpp index b5847b4dc99..f891946207d 100644 --- a/src/mame/drivers/mk1.cpp +++ b/src/mame/drivers/mk1.cpp @@ -108,16 +108,18 @@ WRITE8_MEMBER( mk1_state::mk1_f8_w ) if ( ! ( m_f8[1] & 8 ) ) m_led[3] = bitswap<8>( m_f8[0],2,1,3,4,5,6,7,0 ); } -ADDRESS_MAP_START(mk1_state::mk1_mem) - AM_RANGE( 0x0000, 0x07ff ) AM_ROM - AM_RANGE( 0x1800, 0x18ff ) AM_RAM -ADDRESS_MAP_END +void mk1_state::mk1_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x1800, 0x18ff).ram(); +} -ADDRESS_MAP_START(mk1_state::mk1_io) - AM_RANGE( 0x0, 0x1 ) AM_READWRITE( mk1_f8_r, mk1_f8_w ) - AM_RANGE( 0xc, 0xf ) AM_DEVREADWRITE("f3853", f3853_device, read, write ) -ADDRESS_MAP_END +void mk1_state::mk1_io(address_map &map) +{ + map(0x0, 0x1).rw(this, FUNC(mk1_state::mk1_f8_r), FUNC(mk1_state::mk1_f8_w)); + map(0xc, 0xf).rw("f3853", FUNC(f3853_device::read), FUNC(f3853_device::write)); +} static INPUT_PORTS_START( mk1 ) diff --git a/src/mame/drivers/mk14.cpp b/src/mame/drivers/mk14.cpp index 0c37886d600..76c7cecb31d 100644 --- a/src/mame/drivers/mk14.cpp +++ b/src/mame/drivers/mk14.cpp @@ -107,16 +107,17 @@ WRITE8_MEMBER( mk14_state::display_w ) } } -ADDRESS_MAP_START(mk14_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x0fff) - AM_RANGE(0x000, 0x1ff) AM_MIRROR(0x600) AM_ROM // ROM - AM_RANGE(0x800, 0x87f) AM_MIRROR(0x600) AM_DEVREADWRITE("ic8", ins8154_device, ins8154_r, ins8154_w) // I/O - AM_RANGE(0x880, 0x8ff) AM_MIRROR(0x600) AM_RAM // 128 I/O chip RAM - AM_RANGE(0x900, 0x9ff) AM_MIRROR(0x400) AM_READWRITE(keyboard_r, display_w) - AM_RANGE(0xb00, 0xbff) AM_RAM // VDU RAM - AM_RANGE(0xf00, 0xfff) AM_RAM // Standard RAM -ADDRESS_MAP_END +void mk14_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x0fff); + map(0x000, 0x1ff).mirror(0x600).rom(); // ROM + map(0x800, 0x87f).mirror(0x600).rw("ic8", FUNC(ins8154_device::ins8154_r), FUNC(ins8154_device::ins8154_w)); // I/O + map(0x880, 0x8ff).mirror(0x600).ram(); // 128 I/O chip RAM + map(0x900, 0x9ff).mirror(0x400).rw(this, FUNC(mk14_state::keyboard_r), FUNC(mk14_state::display_w)); + map(0xb00, 0xbff).ram(); // VDU RAM + map(0xf00, 0xfff).ram(); // Standard RAM +} /* Input ports */ diff --git a/src/mame/drivers/mk2.cpp b/src/mame/drivers/mk2.cpp index 8127c6b1cb3..615196571dc 100644 --- a/src/mame/drivers/mk2.cpp +++ b/src/mame/drivers/mk2.cpp @@ -86,13 +86,14 @@ public: // only lower 12 address bits on bus! -ADDRESS_MAP_START(mk2_state::mk2_mem) - AM_RANGE( 0x0000, 0x01ff) AM_RAM // 2 2111, should be mirrored - AM_RANGE( 0x0b00, 0x0b0f) AM_DEVREADWRITE("miot", mos6530_device, read, write) - AM_RANGE( 0x0b80, 0x0bbf) AM_RAM // rriot ram - AM_RANGE( 0x0c00, 0x0fff) AM_ROM // rriot rom - AM_RANGE( 0x1000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void mk2_state::mk2_mem(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // 2 2111, should be mirrored + map(0x0b00, 0x0b0f).rw(m_miot, FUNC(mos6530_device::read), FUNC(mos6530_device::write)); + map(0x0b80, 0x0bbf).ram(); // rriot ram + map(0x0c00, 0x0fff).rom(); // rriot rom + map(0x1000, 0x1fff).rom(); +} static INPUT_PORTS_START( mk2 ) PORT_START("EXTRA") diff --git a/src/mame/drivers/mk85.cpp b/src/mame/drivers/mk85.cpp index 88179ad6e90..f7116ac6fa8 100644 --- a/src/mame/drivers/mk85.cpp +++ b/src/mame/drivers/mk85.cpp @@ -42,11 +42,12 @@ public: }; -ADDRESS_MAP_START(mk85_state::mk85_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_MIRROR(0x4000) - AM_RANGE( 0x8000, 0xffff ) AM_RAM -ADDRESS_MAP_END +void mk85_state::mk85_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom().mirror(0x4000); + map(0x8000, 0xffff).ram(); +} /* Input ports */ static INPUT_PORTS_START( mk85 ) diff --git a/src/mame/drivers/mk90.cpp b/src/mame/drivers/mk90.cpp index b1c7da08647..eaf92500a3b 100644 --- a/src/mame/drivers/mk90.cpp +++ b/src/mame/drivers/mk90.cpp @@ -37,11 +37,12 @@ public: }; -ADDRESS_MAP_START(mk90_state::mk90_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAM // RAM - AM_RANGE(0x4000, 0x7fff) AM_ROM // Extension ROM - AM_RANGE(0x8000, 0xffff) AM_ROM // Main ROM +void mk90_state::mk90_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).ram(); // RAM + map(0x4000, 0x7fff).rom(); // Extension ROM + map(0x8000, 0xffff).rom(); // Main ROM // AM_RANGE(0xe800, 0xe801) LCD address // AM_RANGE(0xe802, 0xe803) LCD data // AM_RANGE(0xe810, 0xe810) serial bus controller data @@ -49,7 +50,7 @@ ADDRESS_MAP_START(mk90_state::mk90_mem) // AM_RANGE(0xe814, 0xe814) serial bus controller control/status // AM_RANGE(0xe816, 0xe816) serial bus controller command // AM_RANGE(0xea00, 0xea7e) RTC -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( mk90 ) diff --git a/src/mame/drivers/mkit09.cpp b/src/mame/drivers/mkit09.cpp index ebbb1f9c6d3..aff136cee4b 100644 --- a/src/mame/drivers/mkit09.cpp +++ b/src/mame/drivers/mkit09.cpp @@ -70,20 +70,22 @@ private: }; -ADDRESS_MAP_START(mkit09_state::mkit09_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x07ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xa004,0xa007) AM_MIRROR(0x1ff8) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xe000,0xe7ff) AM_MIRROR(0x1800) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mkit09_state::mkit09a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x07ff) AM_RAM - AM_RANGE(0xe600,0xe603) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt) - AM_RANGE(0xee00,0xefff) AM_RAM - AM_RANGE(0xf000,0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void mkit09_state::mkit09_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0xa004, 0xa007).mirror(0x1ff8).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe000, 0xe7ff).mirror(0x1800).rom().region("roms", 0); +} + +void mkit09_state::mkit09a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).ram(); + map(0xe600, 0xe603).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xee00, 0xefff).ram(); + map(0xf000, 0xffff).rom().region("roms", 0); +} /* Input ports */ static INPUT_PORTS_START( mkit09 ) diff --git a/src/mame/drivers/mlanding.cpp b/src/mame/drivers/mlanding.cpp index d729529f6fc..88680b1ab1e 100644 --- a/src/mame/drivers/mlanding.cpp +++ b/src/mame/drivers/mlanding.cpp @@ -716,31 +716,33 @@ READ8_MEMBER(mlanding_state::motor_r) * *************************************/ -ADDRESS_MAP_START(mlanding_state::main_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM - AM_RANGE(0x100000, 0x17ffff) AM_RAM AM_SHARE("g_ram") - AM_RANGE(0x180000, 0x1bffff) AM_RAM AM_SHARE("cha_ram") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAMBANK("dma_ram") - AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("sub_com_ram") - AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(dma_start_w) - AM_RANGE(0x1d0002, 0x1d0003) AM_WRITE(dma_stop_w) - AM_RANGE(0x200000, 0x20ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x240004, 0x240005) AM_READNOP // Watchdog - AM_RANGE(0x240006, 0x240007) AM_READ(input_r) - AM_RANGE(0x280000, 0x280fff) AM_READWRITE(power_ram_r, power_ram_w) - AM_RANGE(0x290000, 0x290001) AM_READ_PORT("IN1") - AM_RANGE(0x290002, 0x290003) AM_READ_PORT("IN0") - AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(output_w) - AM_RANGE(0x2b0000, 0x2b0001) AM_READ(analog1_msb_r) - AM_RANGE(0x2b0002, 0x2b0003) AM_READ(analog1_lsb_r) - AM_RANGE(0x2b0004, 0x2b0005) AM_READ(analog2_msb_r) - AM_RANGE(0x2b0006, 0x2b0007) AM_READ(analog2_lsb_r) - AM_RANGE(0x2c0000, 0x2c0001) AM_READ(analog3_msb_r) - AM_RANGE(0x2c0002, 0x2c0003) AM_READ(analog3_lsb_r) - AM_RANGE(0x2d0000, 0x2d0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x2d0002, 0x2d0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) -ADDRESS_MAP_END +void mlanding_state::main_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x080000, 0x08ffff).ram(); + map(0x100000, 0x17ffff).ram().share("g_ram"); + map(0x180000, 0x1bffff).ram().share("cha_ram"); + map(0x1c0000, 0x1c3fff).bankrw("dma_ram"); + map(0x1c4000, 0x1cffff).ram().share("sub_com_ram"); + map(0x1d0000, 0x1d0001).w(this, FUNC(mlanding_state::dma_start_w)); + map(0x1d0002, 0x1d0003).w(this, FUNC(mlanding_state::dma_stop_w)); + map(0x200000, 0x20ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x240004, 0x240005).nopr(); // Watchdog + map(0x240006, 0x240007).r(this, FUNC(mlanding_state::input_r)); + map(0x280000, 0x280fff).rw(this, FUNC(mlanding_state::power_ram_r), FUNC(mlanding_state::power_ram_w)); + map(0x290000, 0x290001).portr("IN1"); + map(0x290002, 0x290003).portr("IN0"); + map(0x2a0000, 0x2a0001).w(this, FUNC(mlanding_state::output_w)); + map(0x2b0000, 0x2b0001).r(this, FUNC(mlanding_state::analog1_msb_r)); + map(0x2b0002, 0x2b0003).r(this, FUNC(mlanding_state::analog1_lsb_r)); + map(0x2b0004, 0x2b0005).r(this, FUNC(mlanding_state::analog2_msb_r)); + map(0x2b0006, 0x2b0007).r(this, FUNC(mlanding_state::analog2_lsb_r)); + map(0x2c0000, 0x2c0001).r(this, FUNC(mlanding_state::analog3_msb_r)); + map(0x2c0002, 0x2c0003).r(this, FUNC(mlanding_state::analog3_lsb_r)); + map(0x2d0000, 0x2d0001).nopr(); + map(0x2d0001, 0x2d0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x2d0003, 0x2d0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); +} @@ -750,16 +752,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mlanding_state::sub_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM - AM_RANGE(0x050000, 0x0503ff) AM_RAM AM_SHARE("dsp_prog") - AM_RANGE(0x060000, 0x060001) AM_WRITE(dsp_control_w) - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAMBANK("dma_ram") - AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("sub_com_ram") - AM_RANGE(0x200000, 0x2007ff) AM_RAM - AM_RANGE(0x200800, 0x203fff) AM_RAM AM_SHARE("dot_ram") -ADDRESS_MAP_END +void mlanding_state::sub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x043fff).ram(); + map(0x050000, 0x0503ff).ram().share("dsp_prog"); + map(0x060000, 0x060001).w(this, FUNC(mlanding_state::dsp_control_w)); + map(0x1c0000, 0x1c3fff).bankrw("dma_ram"); + map(0x1c4000, 0x1cffff).ram().share("sub_com_ram"); + map(0x200000, 0x2007ff).ram(); + map(0x200800, 0x203fff).ram().share("dot_ram"); +} @@ -769,13 +772,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mlanding_state::dsp_map_prog) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("dsp_prog") -ADDRESS_MAP_END +void mlanding_state::dsp_map_prog(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("dsp_prog"); +} -ADDRESS_MAP_START(mlanding_state::dsp_map_data) - AM_RANGE(0x0400, 0x1fff) AM_RAM AM_SHARE("dot_ram") -ADDRESS_MAP_END +void mlanding_state::dsp_map_data(address_map &map) +{ + map(0x0400, 0x1fff).ram().share("dot_ram"); +} /************************************* * @@ -783,28 +788,30 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mlanding_state::audio_map_prog) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(msm5205_2_start_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(msm5205_2_stop_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(msm5205_1_start_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(msm5205_1_stop_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(msm5205_1_addr_lo_w) - AM_RANGE(0xf200, 0xf200) AM_WRITE(msm5205_1_addr_hi_w) - AM_RANGE(0xf400, 0xf400) AM_WRITENOP - AM_RANGE(0xf600, 0xf600) AM_WRITENOP // MSM5205 2 volume? - AM_RANGE(0xf800, 0xf800) AM_WRITENOP - AM_RANGE(0xfa00, 0xfa00) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(mlanding_state::audio_map_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void mlanding_state::audio_map_prog(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xb000).w(this, FUNC(mlanding_state::msm5205_2_start_w)); + map(0xc000, 0xc000).w(this, FUNC(mlanding_state::msm5205_2_stop_w)); + map(0xd000, 0xd000).w(this, FUNC(mlanding_state::msm5205_1_start_w)); + map(0xe000, 0xe000).w(this, FUNC(mlanding_state::msm5205_1_stop_w)); + map(0xf000, 0xf000).w(this, FUNC(mlanding_state::msm5205_1_addr_lo_w)); + map(0xf200, 0xf200).w(this, FUNC(mlanding_state::msm5205_1_addr_hi_w)); + map(0xf400, 0xf400).nopw(); + map(0xf600, 0xf600).nopw(); // MSM5205 2 volume? + map(0xf800, 0xf800).nopw(); + map(0xfa00, 0xfa00).nopw(); +} + +void mlanding_state::audio_map_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} @@ -814,13 +821,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(mlanding_state::mecha_map_prog) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("power_ram") - AM_RANGE(0x9000, 0x9003) AM_WRITENOP - AM_RANGE(0x9800, 0x9805) AM_READ(motor_r) -ADDRESS_MAP_END +void mlanding_state::mecha_map_prog(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8fff).ram().share("power_ram"); + map(0x9000, 0x9003).nopw(); + map(0x9800, 0x9805).r(this, FUNC(mlanding_state::motor_r)); +} diff --git a/src/mame/drivers/mmagic.cpp b/src/mame/drivers/mmagic.cpp index 293065e7598..1d111de6ba1 100644 --- a/src/mame/drivers/mmagic.cpp +++ b/src/mame/drivers/mmagic.cpp @@ -117,24 +117,26 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(mmagic_state::mmagic_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x2000, 0x21ff) AM_RAM - AM_RANGE(0x3000, 0x31ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x8002, 0x8002) AM_WRITE(ball_x_w) - AM_RANGE(0x8003, 0x8003) AM_WRITE(ball_y_w) - AM_RANGE(0x8004, 0x8004) AM_READ(vblank_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mmagic_state::mmagic_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_WRITE(color_w) - AM_RANGE(0x81, 0x81) AM_WRITE(audio_w) - AM_RANGE(0x85, 0x85) AM_READ_PORT("paddle") - AM_RANGE(0x86, 0x86) AM_READ_PORT("buttons") - AM_RANGE(0x87, 0x87) AM_READ_PORT("dipswitch") -ADDRESS_MAP_END +void mmagic_state::mmagic_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x17ff).rom(); + map(0x2000, 0x21ff).ram(); + map(0x3000, 0x31ff).ram().share("vram"); + map(0x8002, 0x8002).w(this, FUNC(mmagic_state::ball_x_w)); + map(0x8003, 0x8003).w(this, FUNC(mmagic_state::ball_y_w)); + map(0x8004, 0x8004).r(this, FUNC(mmagic_state::vblank_r)); +} + +void mmagic_state::mmagic_io(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x80).w(this, FUNC(mmagic_state::color_w)); + map(0x81, 0x81).w(this, FUNC(mmagic_state::audio_w)); + map(0x85, 0x85).portr("paddle"); + map(0x86, 0x86).portr("buttons"); + map(0x87, 0x87).portr("dipswitch"); +} //************************************************************************** diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp index 0a9605b0c68..9a3d2cb31cc 100644 --- a/src/mame/drivers/mmd1.cpp +++ b/src/mame/drivers/mmd1.cpp @@ -249,40 +249,44 @@ READ8_MEMBER( mmd1_state::mmd1_keyboard_r ) return m_return_code; } -ADDRESS_MAP_START(mmd1_state::mmd1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x00ff ) AM_ROM // Main ROM - AM_RANGE( 0x0100, 0x01ff ) AM_ROM // Expansion slot - AM_RANGE( 0x0200, 0x02ff ) AM_RAM - AM_RANGE( 0x0300, 0x03ff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mmd1_state::mmd1_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE(mmd1_keyboard_r, mmd1_port0_w) - AM_RANGE( 0x01, 0x01 ) AM_WRITE(mmd1_port1_w) - AM_RANGE( 0x02, 0x02 ) AM_WRITE(mmd1_port2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mmd1_state::mmd2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") - AM_RANGE(0x0400, 0x0fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank4") - AM_RANGE(0xd800, 0xe3ff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank6") - AM_RANGE(0xe400, 0xe7ff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank8") - AM_RANGE(0xfc00, 0xfcff) AM_RAM // Scratchpad -ADDRESS_MAP_END - -ADDRESS_MAP_START(mmd1_state::mmd2_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0x00 ) AM_WRITE(mmd1_port0_w) - AM_RANGE( 0x01, 0x01 ) AM_READWRITE(mmd2_01_r,mmd1_port1_w) - AM_RANGE( 0x02, 0x02 ) AM_WRITE(mmd1_port2_w) - AM_RANGE( 0x03, 0x03 ) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w) - AM_RANGE( 0x04, 0x04 ) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w) - AM_RANGE( 0x05, 0x07 ) AM_READ(mmd2_bank_r) -ADDRESS_MAP_END +void mmd1_state::mmd1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).rom(); // Main ROM + map(0x0100, 0x01ff).rom(); // Expansion slot + map(0x0200, 0x02ff).ram(); + map(0x0300, 0x03ff).ram(); +} + +void mmd1_state::mmd1_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x07); + map(0x00, 0x00).rw(this, FUNC(mmd1_state::mmd1_keyboard_r), FUNC(mmd1_state::mmd1_port0_w)); + map(0x01, 0x01).w(this, FUNC(mmd1_state::mmd1_port1_w)); + map(0x02, 0x02).w(this, FUNC(mmd1_state::mmd1_port2_w)); +} + +void mmd1_state::mmd2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).bankr("bank1").bankw("bank2"); + map(0x0400, 0x0fff).bankr("bank3").bankw("bank4"); + map(0xd800, 0xe3ff).bankr("bank5").bankw("bank6"); + map(0xe400, 0xe7ff).bankr("bank7").bankw("bank8"); + map(0xfc00, 0xfcff).ram(); // Scratchpad +} + +void mmd1_state::mmd2_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).w(this, FUNC(mmd1_state::mmd1_port0_w)); + map(0x01, 0x01).rw(this, FUNC(mmd1_state::mmd2_01_r), FUNC(mmd1_state::mmd1_port1_w)); + map(0x02, 0x02).w(this, FUNC(mmd1_state::mmd1_port2_w)); + map(0x03, 0x03).rw("i8279", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); + map(0x04, 0x04).rw("i8279", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0x05, 0x07).r(this, FUNC(mmd1_state::mmd2_bank_r)); +} /* Input ports */ diff --git a/src/mame/drivers/mmm.cpp b/src/mame/drivers/mmm.cpp index 8028066b8df..11fb2325545 100644 --- a/src/mame/drivers/mmm.cpp +++ b/src/mame/drivers/mmm.cpp @@ -57,20 +57,28 @@ WRITE8_MEMBER(mmm_state::ay_porta_w) logerror("Writing %02X to AY-3-8910 port A\n", data); } -ADDRESS_MAP_START(mmm_state::mem_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x40ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mmm_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(strobe_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x05, 0x05) AM_DEVREAD("aysnd", ay8910_device, data_r) - ;map(0x06, 0x06).select(0x30).lrw8("ctc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_ctc->read(space, offset >> 4, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_ctc->write(space, offset >> 4, data, mem_mask); }); - AM_RANGE(0x07, 0x07) AM_READ(inputs_r) -ADDRESS_MAP_END +void mmm_state::mem_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x40ff).ram(); +} + +void mmm_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(mmm_state::strobe_w)); + map(0x03, 0x03).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x04, 0x04).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x05, 0x05).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x06, 0x06).select(0x30).lrw8("ctc_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_ctc->read(space, offset >> 4, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_ctc->write(space, offset >> 4, data, mem_mask); + }); + map(0x07, 0x07).r(this, FUNC(mmm_state::inputs_r)); +} static INPUT_PORTS_START( mmm ) diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp index 697a2e8d654..9cc92bacd76 100644 --- a/src/mame/drivers/mmodular.cpp +++ b/src/mame/drivers/mmodular.cpp @@ -84,79 +84,84 @@ private: }; -ADDRESS_MAP_START(mmodular_state::alm16_mem) - AM_RANGE( 0x000000, 0x01ffff ) AM_ROM - - AM_RANGE( 0xc00000, 0xc00001 ) AM_DEVREAD8("board", mephisto_board_device, input_r, 0xff00) - AM_RANGE( 0xc80000, 0xc80001 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff00) - AM_RANGE( 0xd00000, 0xd00001 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff00) - AM_RANGE( 0xf00000, 0xf00003 ) AM_READ_PORT("KEY1") - AM_RANGE( 0xf00004, 0xf00007 ) AM_READ_PORT("KEY2") - AM_RANGE( 0xf00008, 0xf0000b ) AM_READ_PORT("KEY3") - AM_RANGE( 0xd80000, 0xd80001 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff00) - AM_RANGE( 0xd80008, 0xd80009 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff00) - - AM_RANGE( 0x400000, 0x47ffff ) AM_RAM - AM_RANGE( 0x800000, 0x803fff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void mmodular_state::alm16_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + + map(0xc00000, 0xc00000).r("board", FUNC(mephisto_board_device::input_r)); + map(0xc80000, 0xc80000).w("board", FUNC(mephisto_board_device::mux_w)); + map(0xd00000, 0xd00000).w("board", FUNC(mephisto_board_device::led_w)); + map(0xf00000, 0xf00003).portr("KEY1"); + map(0xf00004, 0xf00007).portr("KEY2"); + map(0xf00008, 0xf0000b).portr("KEY3"); + map(0xd80000, 0xd80000).w("display", FUNC(mephisto_display_modul_device::latch_w)); + map(0xd80008, 0xd80008).w("display", FUNC(mephisto_display_modul_device::io_w)); + + map(0x400000, 0x47ffff).ram(); + map(0x800000, 0x803fff).ram().share("nvram"); +} -ADDRESS_MAP_START(mmodular_state::van16_mem) - AM_IMPORT_FROM(alm16_mem) +void mmodular_state::van16_mem(address_map &map) +{ + alm16_mem(map); - AM_RANGE( 0x000000, 0x03ffff ) AM_ROM + map(0x000000, 0x03ffff).rom(); // AM_RANGE( 0xe80004, 0xe80005 ) AM_WRITE(write_unknown2 ) // Bavaria sensors // AM_RANGE( 0xe80002, 0xe80003 ) AM_READ(read_unknown1 ) // Bavaria sensors // AM_RANGE( 0xe80006, 0xe80007 ) AM_READ(read_unknown3 ) // Bavaria sensors -ADDRESS_MAP_END - -ADDRESS_MAP_START(mmodular_state::alm32_mem) - AM_RANGE( 0x00000000, 0x0001ffff ) AM_ROM - - AM_RANGE( 0x800000fc, 0x800000ff ) AM_DEVREAD8("board", mephisto_board_device, input_r, 0xff000000) - AM_RANGE( 0x88000000, 0x88000007 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff000000) - AM_RANGE( 0x90000000, 0x90000007 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff000000) - AM_RANGE( 0x800000ec, 0x800000ef ) AM_READ_PORT("KEY1") - AM_RANGE( 0x800000f4, 0x800000f7 ) AM_READ_PORT("KEY2") - AM_RANGE( 0x800000f8, 0x800000fb ) AM_READ_PORT("KEY3") - AM_RANGE( 0xa0000000, 0xa0000003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff000000) - AM_RANGE( 0xa0000010, 0xa0000013 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff000000) +} - AM_RANGE( 0x40000000, 0x400fffff ) AM_RAM - AM_RANGE( 0xa8000000, 0xa8007fff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void mmodular_state::alm32_mem(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); + + map(0x800000fc, 0x800000fc).r("board", FUNC(mephisto_board_device::input_r)); + map(0x88000000, 0x88000007).w("board", FUNC(mephisto_board_device::mux_w)).umask32(0xff000000); + map(0x90000000, 0x90000007).w("board", FUNC(mephisto_board_device::led_w)).umask32(0xff000000); + map(0x800000ec, 0x800000ef).portr("KEY1"); + map(0x800000f4, 0x800000f7).portr("KEY2"); + map(0x800000f8, 0x800000fb).portr("KEY3"); + map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display_modul_device::latch_w)); + map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display_modul_device::io_w)); + + map(0x40000000, 0x400fffff).ram(); + map(0xa8000000, 0xa8007fff).ram().share("nvram"); +} -ADDRESS_MAP_START(mmodular_state::van32_mem) - AM_IMPORT_FROM(alm32_mem) +void mmodular_state::van32_mem(address_map &map) +{ + alm32_mem(map); - AM_RANGE( 0x00000000, 0x0003ffff ) AM_ROM + map(0x00000000, 0x0003ffff).rom(); // AM_RANGE( 0x98000008, 0x9800000b ) AM_WRITE(write_unknown2 ) // Bavaria sensors // AM_RANGE( 0x98000004, 0x98000007 ) AM_READ(read_unknown1 ) // Bavaria sensors // AM_RANGE( 0x9800000c, 0x9800000f ) AM_READ(read_unknown3 ) // Bavaria sensors -ADDRESS_MAP_END +} -ADDRESS_MAP_START(mmodular_state::gen32_mem) - AM_RANGE( 0x00000000, 0x0003ffff ) AM_ROM +void mmodular_state::gen32_mem(address_map &map) +{ + map(0x00000000, 0x0003ffff).rom(); - AM_RANGE( 0xc8000004, 0xc8000007 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff000000) - AM_RANGE( 0xd0000004, 0xd0000007 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff000000) - AM_RANGE( 0xc0000000, 0xc0000003 ) AM_DEVREAD8("board", mephisto_board_device, input_r, 0xff000000) - AM_RANGE( 0xf0000004, 0xf0000007 ) AM_READ_PORT("KEY1") - AM_RANGE( 0xf0000008, 0xf000000b ) AM_READ_PORT("KEY2") - AM_RANGE( 0xf0000010, 0xf0000013 ) AM_READ_PORT("KEY3") - AM_RANGE( 0xe0000000, 0xe0000003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff000000) - AM_RANGE( 0xe0000010, 0xe0000013 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff000000) + map(0xc8000004, 0xc8000004).w("board", FUNC(mephisto_board_device::mux_w)); + map(0xd0000004, 0xd0000004).w("board", FUNC(mephisto_board_device::led_w)); + map(0xc0000000, 0xc0000000).r("board", FUNC(mephisto_board_device::input_r)); + map(0xf0000004, 0xf0000007).portr("KEY1"); + map(0xf0000008, 0xf000000b).portr("KEY2"); + map(0xf0000010, 0xf0000013).portr("KEY3"); + map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display_modul_device::latch_w)); + map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display_modul_device::io_w)); // AM_RANGE( 0xd8000008, 0xd800000b ) AM_WRITE(write_unknown2 ) // Bavaria sensors // AM_RANGE( 0xd8000004, 0xd8000007 ) AM_READ(read_unknown1 ) // Bavaria sensors // AM_RANGE( 0xd800000c, 0xd800000f ) AM_READ(read_unknown3 ) // Bavaria sensors - AM_RANGE( 0x40000000, 0x4007ffff ) AM_RAM - AM_RANGE( 0x80000000, 0x8003ffff ) AM_RAM - AM_RANGE( 0xe8000000, 0xe8007fff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END + map(0x40000000, 0x4007ffff).ram(); + map(0x80000000, 0x8003ffff).ram(); + map(0xe8000000, 0xe8007fff).ram().share("nvram"); +} READ8_MEMBER(berlinp_state::berlinp_input_r) @@ -167,18 +172,19 @@ READ8_MEMBER(berlinp_state::berlinp_input_r) return m_board->input_r(space, offset) ^ 0xff; } -ADDRESS_MAP_START(berlinp_state::berlinp_mem) - AM_RANGE( 0x000000, 0x03ffff ) AM_ROM +void berlinp_state::berlinp_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); - AM_RANGE( 0x800000, 0x800003 ) AM_READ8(berlinp_input_r, 0xff000000) - AM_RANGE( 0x900000, 0x900003 ) AM_DEVWRITE8("board", mephisto_board_device, mux_w, 0xff000000) - AM_RANGE( 0xa00000, 0xa00003 ) AM_DEVWRITE8("board", mephisto_board_device, led_w, 0xff000000) - AM_RANGE( 0xb00000, 0xb00003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, io_w, 0xff000000) - AM_RANGE( 0xc00000, 0xc00003 ) AM_DEVWRITE8("display", mephisto_display_modul_device, latch_w, 0xff000000) + map(0x800000, 0x800000).r(this, FUNC(berlinp_state::berlinp_input_r)); + map(0x900000, 0x900000).w(m_board, FUNC(mephisto_board_device::mux_w)); + map(0xa00000, 0xa00000).w(m_board, FUNC(mephisto_board_device::led_w)); + map(0xb00000, 0xb00000).w("display", FUNC(mephisto_display_modul_device::io_w)); + map(0xc00000, 0xc00000).w("display", FUNC(mephisto_display_modul_device::latch_w)); - AM_RANGE( 0x400000, 0x4fffff ) AM_RAM - AM_RANGE( 0xd00000, 0xd07fff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END + map(0x400000, 0x4fffff).ram(); + map(0xd00000, 0xd07fff).ram().share("nvram"); +} static INPUT_PORTS_START( alm16 ) diff --git a/src/mame/drivers/mod8.cpp b/src/mame/drivers/mod8.cpp index e71c55be4a8..f67c6649b71 100644 --- a/src/mame/drivers/mod8.cpp +++ b/src/mame/drivers/mod8.cpp @@ -110,19 +110,21 @@ READ8_MEMBER( mod8_state::tty_r ) return d; } -ADDRESS_MAP_START(mod8_state::mod8_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000,0x6ff) AM_ROM - AM_RANGE(0x700,0xfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mod8_state::mod8_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ(tty_r) - AM_RANGE(0x0a,0x0a) AM_WRITE(out_w) - AM_RANGE(0x0b,0x0b) AM_WRITE(tty_w) -ADDRESS_MAP_END +void mod8_state::mod8_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000, 0x6ff).rom(); + map(0x700, 0xfff).ram(); +} + +void mod8_state::mod8_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(mod8_state::tty_r)); + map(0x0a, 0x0a).w(this, FUNC(mod8_state::out_w)); + map(0x0b, 0x0b).w(this, FUNC(mod8_state::tty_w)); +} /* Input ports */ static INPUT_PORTS_START( mod8 ) diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp index 1acebb1f3ea..9475b333c77 100644 --- a/src/mame/drivers/model1.cpp +++ b/src/mame/drivers/model1.cpp @@ -863,109 +863,113 @@ WRITE16_MEMBER(model1_state::mr2_w) logerror("MW 10[r10], %f (%x)\n", *(float *)(m_mr2+0x1f10/2), m_maincpu->pc()); } -ADDRESS_MAP_START(model1_state::model1_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("bank1") - AM_RANGE(0x200000, 0x2fffff) AM_ROM +void model1_state::model1_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1fffff).bankr("bank1"); + map(0x200000, 0x2fffff).rom(); - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(mr2_w) AM_SHARE("mr2") - AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(mr_w) AM_SHARE("mr") + map(0x400000, 0x40ffff).ram().w(this, FUNC(model1_state::mr2_w)).share("mr2"); + map(0x500000, 0x53ffff).ram().w(this, FUNC(model1_state::mr_w)).share("mr"); - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(md0_w) AM_SHARE("display_list0") - AM_RANGE(0x610000, 0x61ffff) AM_RAM_WRITE(md1_w) AM_SHARE("display_list1") - AM_RANGE(0x680000, 0x680003) AM_READWRITE(model1_listctl_r, model1_listctl_w) + map(0x600000, 0x60ffff).ram().w(this, FUNC(model1_state::md0_w)).share("display_list0"); + map(0x610000, 0x61ffff).ram().w(this, FUNC(model1_state::md1_w)).share("display_list1"); + map(0x680000, 0x680003).rw(this, FUNC(model1_state::model1_listctl_r), FUNC(model1_state::model1_listctl_w)); - AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) - AM_RANGE(0x720000, 0x720001) AM_WRITENOP // Unknown, always 0 - AM_RANGE(0x740000, 0x740001) AM_WRITENOP // Horizontal synchronization register - AM_RANGE(0x760000, 0x760001) AM_WRITENOP // Vertical synchronization register - AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch - AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) + map(0x700000, 0x70ffff).rw(m_tiles, FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)); + map(0x720000, 0x720001).nopw(); // Unknown, always 0 + map(0x740000, 0x740001).nopw(); // Horizontal synchronization register + map(0x760000, 0x760001).nopw(); // Vertical synchronization register + map(0x770000, 0x770001).nopw(); // Video synchronization switch + map(0x780000, 0x7fffff).rw(m_tiles, FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)); - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette") - AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat") + map(0x900000, 0x903fff).ram().w(this, FUNC(model1_state::p_w)).share("palette"); + map(0x910000, 0x91bfff).ram().share("color_xlat"); - AM_RANGE(0xb00000, 0xb00fff) AM_DEVREADWRITE8("m1comm", m1comm_device, share_r, share_w, 0xffff) - AM_RANGE(0xb01000, 0xb01001) AM_DEVREADWRITE8("m1comm", m1comm_device, cn_r, cn_w, 0x00ff) - AM_RANGE(0xb01002, 0xb01003) AM_DEVREADWRITE8("m1comm", m1comm_device, fg_r, fg_w, 0x00ff) + map(0xb00000, 0xb00fff).rw(m_m1comm, FUNC(m1comm_device::share_r), FUNC(m1comm_device::share_w)); + map(0xb01000, 0xb01000).rw(m_m1comm, FUNC(m1comm_device::cn_r), FUNC(m1comm_device::cn_w)); + map(0xb01002, 0xb01002).rw(m_m1comm, FUNC(m1comm_device::fg_r), FUNC(m1comm_device::fg_w)); - AM_RANGE(0xc00000, 0xc0003f) AM_READWRITE(io_r, io_w) + map(0xc00000, 0xc0003f).rw(this, FUNC(model1_state::io_r), FUNC(model1_state::io_w)); - AM_RANGE(0xc00040, 0xc00043) AM_READWRITE(network_ctl_r, network_ctl_w) + map(0xc00040, 0xc00043).rw(this, FUNC(model1_state::network_ctl_r), FUNC(model1_state::network_ctl_w)); - AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram") + map(0xc00200, 0xc002ff).ram().share("nvram"); - AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("m1uart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xc40002, 0xc40003) AM_DEVREADWRITE8("m1uart", i8251_device, status_r, control_w, 0x00ff) + map(0xc40000, 0xc40000).rw(m_m1uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc40002, 0xc40002).rw(m_m1uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(model1_tgp_copro_adr_r, model1_tgp_copro_adr_w) - AM_RANGE(0xd20000, 0xd20003) AM_WRITE(model1_tgp_copro_ram_w ) - AM_RANGE(0xd80000, 0xd80003) AM_WRITE(model1_tgp_copro_w) AM_MIRROR(0x10) - AM_RANGE(0xdc0000, 0xdc0003) AM_READ(fifoin_status_r) + map(0xd00000, 0xd00001).rw(this, FUNC(model1_state::model1_tgp_copro_adr_r), FUNC(model1_state::model1_tgp_copro_adr_w)); + map(0xd20000, 0xd20003).w(this, FUNC(model1_state::model1_tgp_copro_ram_w)); + map(0xd80000, 0xd80003).w(this, FUNC(model1_state::model1_tgp_copro_w)).mirror(0x10); + map(0xdc0000, 0xdc0003).r(this, FUNC(model1_state::fifoin_status_r)); - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // Watchdog? IRQ ack? Always 0x20, usually on irq - AM_RANGE(0xe00004, 0xe00005) AM_WRITE(bank_w) - AM_RANGE(0xe0000c, 0xe0000f) AM_WRITENOP + map(0xe00000, 0xe00001).nopw(); // Watchdog? IRQ ack? Always 0x20, usually on irq + map(0xe00004, 0xe00005).w(this, FUNC(model1_state::bank_w)); + map(0xe0000c, 0xe0000f).nopw(); - AM_RANGE(0xf80000, 0xffffff) AM_ROM -ADDRESS_MAP_END + map(0xf80000, 0xffffff).rom(); +} -ADDRESS_MAP_START(model1_state::model1_io) - AM_RANGE(0xd20000, 0xd20003) AM_READ(model1_tgp_copro_ram_r) - AM_RANGE(0xd80000, 0xd80003) AM_READ(model1_tgp_copro_r) -ADDRESS_MAP_END +void model1_state::model1_io(address_map &map) +{ + map(0xd20000, 0xd20003).r(this, FUNC(model1_state::model1_tgp_copro_ram_r)); + map(0xd80000, 0xd80003).r(this, FUNC(model1_state::model1_tgp_copro_r)); +} -ADDRESS_MAP_START(model1_state::model1_vr_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("bank1") - AM_RANGE(0x200000, 0x2fffff) AM_ROM +void model1_state::model1_vr_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1fffff).bankr("bank1"); + map(0x200000, 0x2fffff).rom(); - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(mr2_w) AM_SHARE("mr2") - AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(mr_w) AM_SHARE("mr") + map(0x400000, 0x40ffff).ram().w(this, FUNC(model1_state::mr2_w)).share("mr2"); + map(0x500000, 0x53ffff).ram().w(this, FUNC(model1_state::mr_w)).share("mr"); - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(md0_w) AM_SHARE("display_list0") - AM_RANGE(0x610000, 0x61ffff) AM_RAM_WRITE(md1_w) AM_SHARE("display_list1") - AM_RANGE(0x680000, 0x680003) AM_READWRITE(model1_listctl_r, model1_listctl_w) + map(0x600000, 0x60ffff).ram().w(this, FUNC(model1_state::md0_w)).share("display_list0"); + map(0x610000, 0x61ffff).ram().w(this, FUNC(model1_state::md1_w)).share("display_list1"); + map(0x680000, 0x680003).rw(this, FUNC(model1_state::model1_listctl_r), FUNC(model1_state::model1_listctl_w)); - AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) - AM_RANGE(0x720000, 0x720001) AM_WRITENOP // Unknown, always 0 - AM_RANGE(0x740000, 0x740001) AM_WRITENOP // Horizontal synchronization register - AM_RANGE(0x760000, 0x760001) AM_WRITENOP // Vertical synchronization register - AM_RANGE(0x770000, 0x770001) AM_WRITENOP // Video synchronization switch - AM_RANGE(0x780000, 0x7fffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) + map(0x700000, 0x70ffff).rw(m_tiles, FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)); + map(0x720000, 0x720001).nopw(); // Unknown, always 0 + map(0x740000, 0x740001).nopw(); // Horizontal synchronization register + map(0x760000, 0x760001).nopw(); // Vertical synchronization register + map(0x770000, 0x770001).nopw(); // Video synchronization switch + map(0x780000, 0x7fffff).rw(m_tiles, FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)); - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(p_w) AM_SHARE("palette") - AM_RANGE(0x910000, 0x91bfff) AM_RAM AM_SHARE("color_xlat") + map(0x900000, 0x903fff).ram().w(this, FUNC(model1_state::p_w)).share("palette"); + map(0x910000, 0x91bfff).ram().share("color_xlat"); - AM_RANGE(0xb00000, 0xb00fff) AM_DEVREADWRITE8("m1comm", m1comm_device, share_r, share_w, 0xffff) - AM_RANGE(0xb01000, 0xb01001) AM_DEVREADWRITE8("m1comm", m1comm_device, cn_r, cn_w, 0x00ff) - AM_RANGE(0xb01002, 0xb01003) AM_DEVREADWRITE8("m1comm", m1comm_device, fg_r, fg_w, 0x00ff) + map(0xb00000, 0xb00fff).rw(m_m1comm, FUNC(m1comm_device::share_r), FUNC(m1comm_device::share_w)); + map(0xb01000, 0xb01000).rw(m_m1comm, FUNC(m1comm_device::cn_r), FUNC(m1comm_device::cn_w)); + map(0xb01002, 0xb01002).rw(m_m1comm, FUNC(m1comm_device::fg_r), FUNC(m1comm_device::fg_w)); - AM_RANGE(0xc00000, 0xc0003f) AM_READWRITE(io_r, io_w) + map(0xc00000, 0xc0003f).rw(this, FUNC(model1_state::io_r), FUNC(model1_state::io_w)); - AM_RANGE(0xc00040, 0xc00043) AM_READWRITE(network_ctl_r, network_ctl_w) + map(0xc00040, 0xc00043).rw(this, FUNC(model1_state::network_ctl_r), FUNC(model1_state::network_ctl_w)); - AM_RANGE(0xc00200, 0xc002ff) AM_RAM AM_SHARE("nvram") + map(0xc00200, 0xc002ff).ram().share("nvram"); - AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("m1uart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xc40002, 0xc40003) AM_DEVREADWRITE8("m1uart", i8251_device, status_r, control_w, 0x00ff) + map(0xc40000, 0xc40000).rw(m_m1uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc40002, 0xc40002).rw(m_m1uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(model1_tgp_vr_adr_r, model1_tgp_vr_adr_w) - AM_RANGE(0xd20000, 0xd20003) AM_WRITE(model1_vr_tgp_ram_w ) - AM_RANGE(0xd80000, 0xd80003) AM_WRITE(model1_vr_tgp_w) AM_MIRROR(0x10) - AM_RANGE(0xdc0000, 0xdc0003) AM_READ(fifoin_status_r) + map(0xd00000, 0xd00001).rw(this, FUNC(model1_state::model1_tgp_vr_adr_r), FUNC(model1_state::model1_tgp_vr_adr_w)); + map(0xd20000, 0xd20003).w(this, FUNC(model1_state::model1_vr_tgp_ram_w)); + map(0xd80000, 0xd80003).w(this, FUNC(model1_state::model1_vr_tgp_w)).mirror(0x10); + map(0xdc0000, 0xdc0003).r(this, FUNC(model1_state::fifoin_status_r)); - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // Watchdog? IRQ ack? Always 0x20, usually on irq - AM_RANGE(0xe00004, 0xe00005) AM_WRITE(bank_w) - AM_RANGE(0xe0000c, 0xe0000f) AM_WRITENOP + map(0xe00000, 0xe00001).nopw(); // Watchdog? IRQ ack? Always 0x20, usually on irq + map(0xe00004, 0xe00005).w(this, FUNC(model1_state::bank_w)); + map(0xe0000c, 0xe0000f).nopw(); - AM_RANGE(0xfc0000, 0xffffff) AM_ROM -ADDRESS_MAP_END + map(0xfc0000, 0xffffff).rom(); +} -ADDRESS_MAP_START(model1_state::model1_vr_io) - AM_RANGE(0xd20000, 0xd20003) AM_READ(model1_vr_tgp_ram_r) - AM_RANGE(0xd80000, 0xd80003) AM_READ(model1_vr_tgp_r) -ADDRESS_MAP_END +void model1_state::model1_vr_io(address_map &map) +{ + map(0xd20000, 0xd20003).r(this, FUNC(model1_state::model1_vr_tgp_ram_r)); + map(0xd80000, 0xd80003).r(this, FUNC(model1_state::model1_vr_tgp_r)); +} static INPUT_PORTS_START( vf ) PORT_START("IN.0") @@ -1666,11 +1670,12 @@ MACHINE_CONFIG_START(model1_state::swa) MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE(DSBZ80_TAG, dsbz80_device, write_txd)) MACHINE_CONFIG_END -ADDRESS_MAP_START(model1_state::polhemus_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("polhemus", 0) -ADDRESS_MAP_END +void model1_state::polhemus_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x00000, 0x03fff).ram(); + map(0xf8000, 0xfffff).rom().region("polhemus", 0); +} MACHINE_CONFIG_START(model1_state::netmerc) model1(config); diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 00076754fa1..07e132832aa 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -1378,69 +1378,71 @@ WRITE16_MEMBER(model2_state::fbvram_bankA_w) { COMBINE_DATA(&m_fbvramA[offset]); WRITE16_MEMBER(model2_state::fbvram_bankB_w) { COMBINE_DATA(&m_fbvramB[offset]); } /* common map for all Model 2 versions */ -ADDRESS_MAP_START(model2_state::model2_base_mem) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_WRITENOP +void model2_state::model2_base_mem(address_map &map) +{ + map(0x00000000, 0x001fffff).rom().nopw(); - AM_RANGE(0x00500000, 0x005fffff) AM_RAM AM_SHARE("workram") + map(0x00500000, 0x005fffff).ram().share("workram"); - AM_RANGE(0x00800000, 0x00803fff) AM_READWRITE(geo_r, geo_w) + map(0x00800000, 0x00803fff).rw(this, FUNC(model2_state::geo_r), FUNC(model2_state::geo_w)); //AM_RANGE(0x00800010, 0x00800013) AM_WRITENOP //AM_RANGE(0x008000b0, 0x008000b3) AM_WRITENOP //AM_RANGE(0x00804004, 0x0080400f) AM_WRITENOP // quiet psikyo games //AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_w) - AM_RANGE(0x00900000, 0x0091ffff) AM_MIRROR(0x60000) AM_RAM AM_SHARE("bufferram") + map(0x00900000, 0x0091ffff).mirror(0x60000).ram().share("bufferram"); - AM_RANGE(0x00980004, 0x00980007) AM_READ(fifoctl_r) - AM_RANGE(0x0098000c, 0x0098000f) AM_READWRITE(videoctl_r,videoctl_w) - AM_RANGE(0x00980030, 0x0098003f) AM_READ8(tgpid_r,0xffffffff) + map(0x00980004, 0x00980007).r(this, FUNC(model2_state::fifoctl_r)); + map(0x0098000c, 0x0098000f).rw(this, FUNC(model2_state::videoctl_r), FUNC(model2_state::videoctl_w)); + map(0x00980030, 0x0098003f).r(this, FUNC(model2_state::tgpid_r)); - AM_RANGE(0x00e00000, 0x00e00037) AM_RAM // CPU control (wait-states) - AM_RANGE(0x00e80000, 0x00e80003) AM_READWRITE(irq_request_r, irq_ack_w) - AM_RANGE(0x00e80004, 0x00e80007) AM_READWRITE(irq_enable_r, irq_enable_w) + map(0x00e00000, 0x00e00037).ram(); // CPU control (wait-states) + map(0x00e80000, 0x00e80003).rw(this, FUNC(model2_state::irq_request_r), FUNC(model2_state::irq_ack_w)); + map(0x00e80004, 0x00e80007).rw(this, FUNC(model2_state::irq_enable_r), FUNC(model2_state::irq_enable_w)); - AM_RANGE(0x00f00000, 0x00f0000f) AM_READWRITE(timers_r, timers_w) + map(0x00f00000, 0x00f0000f).rw(this, FUNC(model2_state::timers_r), FUNC(model2_state::timers_w)); - AM_RANGE(0x01000000, 0x0100ffff) AM_DEVREADWRITE16("tile", segas24_tile_device, tile_r, tile_w,0xffffffff) AM_MIRROR(0x110000) - AM_RANGE(0x01020000, 0x01020003) AM_WRITENOP AM_MIRROR(0x100000) // ABSEL, always 0 - AM_RANGE(0x01040000, 0x01040003) AM_DEVWRITE16("tile", segas24_tile_device, xhout_w, 0x0000ffff) AM_MIRROR(0x100000) // Horizontal synchronization register - AM_RANGE(0x01060000, 0x01060003) AM_DEVWRITE16("tile", segas24_tile_device, xvout_w, 0x0000ffff) AM_MIRROR(0x100000) // Vertical synchronization register - AM_RANGE(0x01070000, 0x01070003) AM_WRITENOP AM_MIRROR(0x100000) // Video synchronization switch - AM_RANGE(0x01080000, 0x010fffff) AM_DEVREADWRITE16("tile", segas24_tile_device, char_r, char_w,0xffffffff) AM_MIRROR(0x100000) + map(0x01000000, 0x0100ffff).rw("tile", FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)).mirror(0x110000); + map(0x01020000, 0x01020003).nopw().mirror(0x100000); // ABSEL, always 0 + map(0x01040000, 0x01040001).w("tile", FUNC(segas24_tile_device::xhout_w)).mirror(0x100000); // Horizontal synchronization register + map(0x01060000, 0x01060001).w("tile", FUNC(segas24_tile_device::xvout_w)).mirror(0x100000); // Vertical synchronization register + map(0x01070000, 0x01070003).nopw().mirror(0x100000); // Video synchronization switch + map(0x01080000, 0x010fffff).rw("tile", FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)).mirror(0x100000); - AM_RANGE(0x01800000, 0x01803fff) AM_READWRITE16(palette_r, palette_w,0xffffffff) - AM_RANGE(0x01810000, 0x0181bfff) AM_READWRITE16(colorxlat_r,colorxlat_w,0xffffffff) - AM_RANGE(0x0181c000, 0x0181c003) AM_WRITE(model2_3d_zclip_w) - AM_RANGE(0x01a10000, 0x01a13fff) AM_DEVREADWRITE8("m2comm", m2comm_device, share_r, share_w, 0xffffffff) - AM_RANGE(0x01a14000, 0x01a14003) AM_DEVREADWRITE8("m2comm", m2comm_device, cn_r, cn_w, 0x000000ff) - AM_RANGE(0x01a14000, 0x01a14003) AM_DEVREADWRITE8("m2comm", m2comm_device, fg_r, fg_w, 0x00ff0000) - AM_RANGE(0x01d00000, 0x01d03fff) AM_RAM AM_SHARE("backup1") // Backup sram - AM_RANGE(0x02000000, 0x03ffffff) AM_ROM AM_REGION("main_data", 0) + map(0x01800000, 0x01803fff).rw(this, FUNC(model2_state::palette_r), FUNC(model2_state::palette_w)); + map(0x01810000, 0x0181bfff).rw(this, FUNC(model2_state::colorxlat_r), FUNC(model2_state::colorxlat_w)); + map(0x0181c000, 0x0181c003).w(this, FUNC(model2_state::model2_3d_zclip_w)); + map(0x01a10000, 0x01a13fff).rw(m_m2comm, FUNC(m2comm_device::share_r), FUNC(m2comm_device::share_w)); + map(0x01a14000, 0x01a14000).rw(m_m2comm, FUNC(m2comm_device::cn_r), FUNC(m2comm_device::cn_w)); + map(0x01a14002, 0x01a14002).rw(m_m2comm, FUNC(m2comm_device::fg_r), FUNC(m2comm_device::fg_w)); + map(0x01d00000, 0x01d03fff).ram().share("backup1"); // Backup sram + map(0x02000000, 0x03ffffff).rom().region("main_data", 0); // "extra" data - AM_RANGE(0x06000000, 0x06ffffff) AM_ROM AM_REGION("main_data", 0x1000000) + map(0x06000000, 0x06ffffff).rom().region("main_data", 0x1000000); - AM_RANGE(0x10000000, 0x101fffff) AM_READWRITE(render_mode_r,render_mode_w) + map(0x10000000, 0x101fffff).rw(this, FUNC(model2_state::render_mode_r), FUNC(model2_state::render_mode_w)); // AM_RANGE(0x10200000, 0x103fffff) renderer status register - AM_RANGE(0x10400000, 0x105fffff) AM_READ(polygon_count_r) + map(0x10400000, 0x105fffff).r(this, FUNC(model2_state::polygon_count_r)); // AM_RANGE(0x10600000, 0x107fffff) polygon data ping // AM_RANGE(0x10800000, 0x109fffff) polygon data pong // AM_RANGE(0x10a00000, 0x10bfffff) fill memory ping // AM_RANGE(0x10c00000, 0x10dfffff) fill memory pong // format is xGGGGGRRRRRBBBBB (512x400) - AM_RANGE(0x11600000, 0x1167ffff) AM_READWRITE16(fbvram_bankA_r,fbvram_bankA_w,0xffffffff) // framebuffer A (last bronx title screen) - AM_RANGE(0x11680000, 0x116fffff) AM_READWRITE16(fbvram_bankB_r,fbvram_bankB_w,0xffffffff) AM_SHARE("fbvram2") // framebuffer B + map(0x11600000, 0x1167ffff).rw(this, FUNC(model2_state::fbvram_bankA_r), FUNC(model2_state::fbvram_bankA_w)); // framebuffer A (last bronx title screen) + map(0x11680000, 0x116fffff).rw(this, FUNC(model2_state::fbvram_bankB_r), FUNC(model2_state::fbvram_bankB_w)).share("fbvram2"); // framebuffer B - AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM -ADDRESS_MAP_END + map(0x12800000, 0x1281ffff).rw(this, FUNC(model2_state::lumaram_r), FUNC(model2_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM +} /* common map for 5881 protection */ -ADDRESS_MAP_START(model2_state::model2_5881_mem) - AM_RANGE(0x01d80000,0x01d8ffff) AM_RAM - AM_RANGE(0x01d90000,0x01d9ffff) AM_DEVICE16("315_5881", sega_315_5881_crypt_device, iomap_le, 0xffffffff) -ADDRESS_MAP_END +void model2_state::model2_5881_mem(address_map &map) +{ + map(0x01d80000, 0x01d8ffff).ram(); + map(0x01d90000, 0x01d9ffff).m(m_cryptdevice, FUNC(sega_315_5881_crypt_device::iomap_le)); +} READ8_MEMBER(model2_state::virtuacop_lightgun_r) { @@ -1495,31 +1497,32 @@ READ8_MEMBER(model2o_state::model2o_in_r) } /* original Model 2 overrides */ -ADDRESS_MAP_START(model2o_state::model2o_mem) - AM_IMPORT_FROM(model2_base_mem) - - AM_RANGE(0x00200000, 0x0021ffff) AM_RAM - AM_RANGE(0x00220000, 0x0023ffff) AM_ROM AM_REGION("maincpu", 0x20000) - - AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w) - AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w) - AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w) - - AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) - AM_RANGE(0x00980004, 0x00980007) AM_READ(fifoctrl_r) - AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) - - AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0 - AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 - - AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2o_in_r, 0x00ff00ff) - AM_RANGE(0x01c00040, 0x01c00043) AM_READ(daytona_unk_r) - AM_RANGE(0x01c00100, 0x01c0010f) AM_READ8(virtuacop_lightgun_r, 0x00ff00ff) - AM_RANGE(0x01c00110, 0x01c00113) AM_READ8(virtuacop_lightgun_offscreen_r, 0x00ff00ff) - AM_RANGE(0x01c00200, 0x01c002ff) AM_RAM AM_SHARE("backup2") - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) -ADDRESS_MAP_END +void model2o_state::model2o_mem(address_map &map) +{ + model2_base_mem(map); + + map(0x00200000, 0x0021ffff).ram(); + map(0x00220000, 0x0023ffff).rom().region("maincpu", 0x20000); + + map(0x00804000, 0x00807fff).rw(this, FUNC(model2o_state::geo_prg_r), FUNC(model2o_state::geo_prg_w)); + map(0x00880000, 0x00883fff).w(this, FUNC(model2o_state::copro_function_port_w)); + map(0x00884000, 0x00887fff).rw(this, FUNC(model2o_state::copro_fifo_r), FUNC(model2o_state::copro_fifo_w)); + + map(0x00980000, 0x00980003).rw(this, FUNC(model2o_state::copro_ctl1_r), FUNC(model2o_state::copro_ctl1_w)); + map(0x00980004, 0x00980007).r(this, FUNC(model2o_state::fifoctrl_r)); + map(0x00980008, 0x0098000b).w(this, FUNC(model2o_state::geo_ctl1_w)); + map(0x009c0000, 0x009cffff).rw(this, FUNC(model2o_state::model2_serial_r), FUNC(model2o_state::model2_serial_w)); + + map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2o_state::model2o_tex_w0)).mirror(0x200000).share("textureram0"); // texture RAM 0 + map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2o_state::model2o_tex_w1)).mirror(0x200000).share("textureram1"); // texture RAM 1 + + map(0x01c00000, 0x01c0001f).r(this, FUNC(model2o_state::model2o_in_r)).umask32(0x00ff00ff); + map(0x01c00040, 0x01c00043).r(this, FUNC(model2o_state::daytona_unk_r)); + map(0x01c00100, 0x01c0010f).r(this, FUNC(model2o_state::virtuacop_lightgun_r)).umask32(0x00ff00ff); + map(0x01c00110, 0x01c00113).r(this, FUNC(model2o_state::virtuacop_lightgun_offscreen_r)).umask32(0x00ff00ff); + map(0x01c00200, 0x01c002ff).ram().share("backup2"); + map(0x01c80000, 0x01c80003).rw(this, FUNC(model2o_state::model2_serial_r), FUNC(model2o_state::model2_serial_w)); +} /* Daytona "To The MAXX" PIC protection simulation */ READ32_MEMBER(model2o_maxx_state::maxx_r) @@ -1563,10 +1566,11 @@ READ32_MEMBER(model2o_maxx_state::maxx_r) return ROM[offset + (0x040000/4)]; } -ADDRESS_MAP_START(model2o_maxx_state::model2o_maxx_mem) - AM_IMPORT_FROM(model2o_mem) - AM_RANGE(0x00240000,0x0024ffff) AM_READ(maxx_r) -ADDRESS_MAP_END +void model2o_maxx_state::model2o_maxx_mem(address_map &map) +{ + model2o_mem(map); + map(0x00240000, 0x0024ffff).r(this, FUNC(model2o_maxx_state::maxx_r)); +} READ8_MEMBER(model2o_gtx_state::gtx_r) { @@ -1597,112 +1601,118 @@ READ32_MEMBER(model2_state::copro_status_r) } /* 2A-CRX overrides */ -ADDRESS_MAP_START(model2a_state::model2a_crx_mem) - AM_IMPORT_FROM(model2_base_mem) - - AM_RANGE(0x00200000, 0x0023ffff) AM_RAM - - AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w) - AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w) - AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w) - - AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) - AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w) - AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) - - AM_RANGE(0x12000000, 0x121fffff) AM_RAM_WRITE(model2o_tex_w0) AM_MIRROR(0x200000) AM_SHARE("textureram0") // texture RAM 0 - AM_RANGE(0x12400000, 0x125fffff) AM_RAM_WRITE(model2o_tex_w1) AM_MIRROR(0x200000) AM_SHARE("textureram1") // texture RAM 1 - - AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) - AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) - AM_RANGE(0x01c00008, 0x01c0000f) AM_WRITENOP - AM_RANGE(0x01c00010, 0x01c00013) AM_WRITENOP - AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) - AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w) - AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) -ADDRESS_MAP_END +void model2a_state::model2a_crx_mem(address_map &map) +{ + model2_base_mem(map); + + map(0x00200000, 0x0023ffff).ram(); + + map(0x00804000, 0x00807fff).rw(this, FUNC(model2a_state::geo_prg_r), FUNC(model2a_state::geo_prg_w)); + map(0x00880000, 0x00883fff).w(this, FUNC(model2a_state::copro_function_port_w)); + map(0x00884000, 0x00887fff).rw(this, FUNC(model2a_state::copro_fifo_r), FUNC(model2a_state::copro_fifo_w)); + + map(0x00980000, 0x00980003).rw(this, FUNC(model2a_state::copro_ctl1_r), FUNC(model2a_state::copro_ctl1_w)); + map(0x00980008, 0x0098000b).w(this, FUNC(model2a_state::geo_ctl1_w)); + map(0x00980014, 0x00980017).r(this, FUNC(model2a_state::copro_status_r)); + map(0x009c0000, 0x009cffff).rw(this, FUNC(model2a_state::model2_serial_r), FUNC(model2a_state::model2_serial_w)); + + map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2a_state::model2o_tex_w0)).mirror(0x200000).share("textureram0"); // texture RAM 0 + map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2a_state::model2o_tex_w1)).mirror(0x200000).share("textureram1"); // texture RAM 1 + + map(0x01c00000, 0x01c0001f).r(this, FUNC(model2a_state::model2_crx_in_r)).umask32(0x00ff00ff); + map(0x01c00000, 0x01c00003).w(this, FUNC(model2a_state::ctrl0_w)); + map(0x01c00008, 0x01c0000f).nopw(); + map(0x01c00010, 0x01c00013).nopw(); + map(0x01c00014, 0x01c00017).w(this, FUNC(model2a_state::hotd_lightgun_w)); + map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2a_state::analog_2b_w)); + map(0x01c00040, 0x01c00043).nopw(); + map(0x01c80000, 0x01c80003).rw(this, FUNC(model2a_state::model2_serial_r), FUNC(model2a_state::model2_serial_w)); +} -ADDRESS_MAP_START(model2a_state::model2a_5881_mem) - AM_IMPORT_FROM(model2a_crx_mem) - AM_IMPORT_FROM(model2_5881_mem) -ADDRESS_MAP_END +void model2a_state::model2a_5881_mem(address_map &map) +{ + model2a_crx_mem(map); + model2_5881_mem(map); +} /* 2B-CRX overrides */ -ADDRESS_MAP_START(model2b_state::model2b_crx_mem) - AM_IMPORT_FROM(model2_base_mem) +void model2b_state::model2b_crx_mem(address_map &map) +{ + model2_base_mem(map); - AM_RANGE(0x00200000, 0x0023ffff) AM_RAM + map(0x00200000, 0x0023ffff).ram(); - AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w) + map(0x00804000, 0x00807fff).rw(this, FUNC(model2b_state::geo_prg_r), FUNC(model2b_state::geo_prg_w)); //AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_sharc_fifo_r, geo_sharc_fifo_w) //AM_RANGE(0x00840000, 0x00840fff) AM_WRITE(geo_sharc_iop_w) - AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w) - AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w) - AM_RANGE(0x008c0000, 0x008c0fff) AM_WRITE(copro_sharc_iop_w) + map(0x00880000, 0x00883fff).w(this, FUNC(model2b_state::copro_function_port_w)); + map(0x00884000, 0x00887fff).rw(this, FUNC(model2b_state::copro_fifo_r), FUNC(model2b_state::copro_fifo_w)); + map(0x008c0000, 0x008c0fff).w(this, FUNC(model2b_state::copro_sharc_iop_w)); - AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) - AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w) - AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r) + map(0x00980000, 0x00980003).rw(this, FUNC(model2b_state::copro_ctl1_r), FUNC(model2b_state::copro_ctl1_w)); + map(0x00980008, 0x0098000b).w(this, FUNC(model2b_state::geo_ctl1_w)); + map(0x00980014, 0x00980017).r(this, FUNC(model2b_state::copro_status_r)); //AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_sharc_ctl1_w ) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) - - AM_RANGE(0x11000000, 0x110fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) - AM_RANGE(0x11100000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) - AM_RANGE(0x11200000, 0x112fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) - AM_RANGE(0x11300000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) - AM_RANGE(0x11400000, 0x1140ffff) AM_READWRITE16(lumaram_r,lumaram_w,0xffffffff) // polygon "luma" RAM (2b/2c) - AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM - - AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) - AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) - AM_RANGE(0x01c00008, 0x01c0000b) AM_WRITENOP - AM_RANGE(0x01c00010, 0x01c00013) AM_WRITENOP // gunblade - AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) - AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w) - AM_RANGE(0x01c00040, 0x01c00043) AM_WRITENOP - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w) -ADDRESS_MAP_END + map(0x009c0000, 0x009cffff).rw(this, FUNC(model2b_state::model2_serial_r), FUNC(model2b_state::model2_serial_w)); + + map(0x11000000, 0x110fffff).ram().share("textureram0"); // texture RAM 0 (2b/2c) + map(0x11100000, 0x111fffff).ram().share("textureram0"); // texture RAM 0 (2b/2c) + map(0x11200000, 0x112fffff).ram().share("textureram1"); // texture RAM 1 (2b/2c) + map(0x11300000, 0x113fffff).ram().share("textureram1"); // texture RAM 1 (2b/2c) + map(0x11400000, 0x1140ffff).rw(this, FUNC(model2b_state::lumaram_r), FUNC(model2b_state::lumaram_w)); // polygon "luma" RAM (2b/2c) + map(0x12800000, 0x1281ffff).rw(this, FUNC(model2b_state::lumaram_r), FUNC(model2b_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM + + map(0x01c00000, 0x01c0001f).r(this, FUNC(model2b_state::model2_crx_in_r)).umask32(0x00ff00ff); + map(0x01c00000, 0x01c00003).w(this, FUNC(model2b_state::ctrl0_w)); + map(0x01c00008, 0x01c0000b).nopw(); + map(0x01c00010, 0x01c00013).nopw(); // gunblade + map(0x01c00014, 0x01c00017).w(this, FUNC(model2b_state::hotd_lightgun_w)); + map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2b_state::analog_2b_w)); + map(0x01c00040, 0x01c00043).nopw(); + map(0x01c80000, 0x01c80003).rw(this, FUNC(model2b_state::model2_serial_r), FUNC(model2b_state::model2_serial_w)); +} -ADDRESS_MAP_START(model2b_state::model2b_5881_mem) - AM_IMPORT_FROM(model2b_crx_mem) - AM_IMPORT_FROM(model2_5881_mem) -ADDRESS_MAP_END +void model2b_state::model2b_5881_mem(address_map &map) +{ + model2b_crx_mem(map); + model2_5881_mem(map); +} /* 2C-CRX overrides */ -ADDRESS_MAP_START(model2c_state::model2c_crx_mem) - AM_IMPORT_FROM(model2_base_mem) - - AM_RANGE(0x00200000, 0x0023ffff) AM_RAM - - AM_RANGE(0x00804000, 0x00807fff) AM_READWRITE(geo_prg_r, geo_prg_w) - AM_RANGE(0x00880000, 0x00883fff) AM_WRITE(copro_function_port_w) - AM_RANGE(0x00884000, 0x00887fff) AM_READWRITE(copro_fifo_r, copro_fifo_w) - - AM_RANGE(0x00980000, 0x00980003) AM_READWRITE(copro_ctl1_r,copro_ctl1_w) - AM_RANGE(0x00980008, 0x0098000b) AM_WRITE(geo_ctl1_w ) - AM_RANGE(0x00980014, 0x00980017) AM_READ(copro_status_r) - AM_RANGE(0x009c0000, 0x009cffff) AM_READWRITE(model2_serial_r, model2_serial_w) - - AM_RANGE(0x11000000, 0x111fffff) AM_RAM AM_SHARE("textureram0") // texture RAM 0 (2b/2c) - AM_RANGE(0x11200000, 0x113fffff) AM_RAM AM_SHARE("textureram1") // texture RAM 1 (2b/2c) - AM_RANGE(0x11400000, 0x1140ffff) AM_READWRITE16(lumaram_r,lumaram_w,0xffffffff) // polygon "luma" RAM (2b/2c) - AM_RANGE(0x12800000, 0x1281ffff) AM_READWRITE16(lumaram_r,lumaram_w,0x0000ffff) // polygon "luma" RAM - - AM_RANGE(0x01c00000, 0x01c0001f) AM_READ8(model2_crx_in_r, 0x00ff00ff) - AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE(ctrl0_w) - AM_RANGE(0x01c00014, 0x01c00017) AM_WRITE(hotd_lightgun_w) - AM_RANGE(0x01c0001c, 0x01c0001f) AM_WRITE(analog_2b_w) - AM_RANGE(0x01c80000, 0x01c80003) AM_READWRITE(model2_serial_r, model2_serial_w ) -ADDRESS_MAP_END +void model2c_state::model2c_crx_mem(address_map &map) +{ + model2_base_mem(map); -ADDRESS_MAP_START(model2c_state::model2c_5881_mem) - AM_IMPORT_FROM(model2c_crx_mem) - AM_IMPORT_FROM(model2_5881_mem) -ADDRESS_MAP_END + map(0x00200000, 0x0023ffff).ram(); + + map(0x00804000, 0x00807fff).rw(this, FUNC(model2c_state::geo_prg_r), FUNC(model2c_state::geo_prg_w)); + map(0x00880000, 0x00883fff).w(this, FUNC(model2c_state::copro_function_port_w)); + map(0x00884000, 0x00887fff).rw(this, FUNC(model2c_state::copro_fifo_r), FUNC(model2c_state::copro_fifo_w)); + + map(0x00980000, 0x00980003).rw(this, FUNC(model2c_state::copro_ctl1_r), FUNC(model2c_state::copro_ctl1_w)); + map(0x00980008, 0x0098000b).w(this, FUNC(model2c_state::geo_ctl1_w)); + map(0x00980014, 0x00980017).r(this, FUNC(model2c_state::copro_status_r)); + map(0x009c0000, 0x009cffff).rw(this, FUNC(model2c_state::model2_serial_r), FUNC(model2c_state::model2_serial_w)); + + map(0x11000000, 0x111fffff).ram().share("textureram0"); // texture RAM 0 (2b/2c) + map(0x11200000, 0x113fffff).ram().share("textureram1"); // texture RAM 1 (2b/2c) + map(0x11400000, 0x1140ffff).rw(this, FUNC(model2c_state::lumaram_r), FUNC(model2c_state::lumaram_w)); // polygon "luma" RAM (2b/2c) + map(0x12800000, 0x1281ffff).rw(this, FUNC(model2c_state::lumaram_r), FUNC(model2c_state::lumaram_w)).umask32(0x0000ffff); // polygon "luma" RAM + + map(0x01c00000, 0x01c0001f).r(this, FUNC(model2c_state::model2_crx_in_r)).umask32(0x00ff00ff); + map(0x01c00000, 0x01c00003).w(this, FUNC(model2c_state::ctrl0_w)); + map(0x01c00014, 0x01c00017).w(this, FUNC(model2c_state::hotd_lightgun_w)); + map(0x01c0001c, 0x01c0001f).w(this, FUNC(model2c_state::analog_2b_w)); + map(0x01c80000, 0x01c80003).rw(this, FUNC(model2c_state::model2_serial_r), FUNC(model2c_state::model2_serial_w)); +} + +void model2c_state::model2c_5881_mem(address_map &map) +{ + model2c_crx_mem(map); + model2_5881_mem(map); +} @@ -2542,18 +2552,20 @@ WRITE8_MEMBER(model2_state::driveio_port_w) // popmessage("%02x",data); } -ADDRESS_MAP_START(model2_state::drive_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void model2_state::drive_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xffff).ram(); +} -ADDRESS_MAP_START(model2_state::drive_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP //watchdog - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("driveio1", sega_315_5296_device, read, write) - AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("driveio2", sega_315_5296_device, read, write) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("driveadc", msm6253_device, d0_r, address_w) -ADDRESS_MAP_END +void model2_state::drive_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); //watchdog + map(0x20, 0x2f).rw("driveio1", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)); + map(0x40, 0x4f).rw("driveio2", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)); + map(0x80, 0x83).rw("driveadc", FUNC(msm6253_device::d0_r), FUNC(msm6253_device::address_w)); +} MACHINE_CONFIG_START(model2_state::sj25_0207_01) MCFG_CPU_ADD("drivecpu", Z80, XTAL(8'000'000)/2) // confirmed @@ -2711,15 +2723,17 @@ MACHINE_CONFIG_START(model2b_state::indy500) MACHINE_CONFIG_END -ADDRESS_MAP_START(model2b_state::rchase2_iocpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM -ADDRESS_MAP_END +void model2b_state::rchase2_iocpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); +} -ADDRESS_MAP_START(model2b_state::rchase2_ioport_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("ioexp", cxd1095_device, read, write) -ADDRESS_MAP_END +void model2b_state::rchase2_ioport_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x07).rw("ioexp", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); +} MACHINE_CONFIG_START(model2b_state::rchase2) model2b(config); diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp index 00c6528b663..f2996c3bf75 100644 --- a/src/mame/drivers/model3.cpp +++ b/src/mame/drivers/model3.cpp @@ -1760,38 +1760,41 @@ WRITE64_MEMBER(model3_state::daytona2_rombank_w) } } -ADDRESS_MAP_START(model3_state::model3_10_mem) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("work_ram") /* work RAM */ - - AM_RANGE(0x84000000, 0x8400003f) AM_READ(real3d_status_r ) - AM_RANGE(0x88000000, 0x88000007) AM_WRITE(real3d_cmd_w ) - AM_RANGE(0x8e000000, 0x8e0fffff) AM_WRITE(real3d_display_list_w ) - AM_RANGE(0x98000000, 0x980fffff) AM_WRITE(real3d_polygon_ram_w ) - - AM_RANGE(0xf0040000, 0xf004003f) AM_MIRROR(0x0e000000) AM_READWRITE(model3_ctrl_r, model3_ctrl_w ) - AM_RANGE(0xf0080000, 0xf008ffff) AM_MIRROR(0x0e000000) AM_READWRITE8(model3_sound_r, model3_sound_w, 0xffffffffffffffffU ) - AM_RANGE(0xf00c0000, 0xf00dffff) AM_MIRROR(0x0e000000) AM_RAM AM_SHARE("backup") /* backup SRAM */ - AM_RANGE(0xf0100000, 0xf010003f) AM_MIRROR(0x0e000000) AM_READWRITE(model3_sys_r, model3_sys_w ) - AM_RANGE(0xf0140000, 0xf014003f) AM_MIRROR(0x0e000000) AM_READWRITE(model3_rtc_r, model3_rtc_w ) - - AM_RANGE(0xf1000000, 0xf10f7fff) AM_READWRITE(model3_char_r, model3_char_w ) /* character RAM */ - AM_RANGE(0xf10f8000, 0xf10fffff) AM_READWRITE(model3_tile_r, model3_tile_w ) /* tilemaps */ - AM_RANGE(0xf1100000, 0xf111ffff) AM_READWRITE(model3_palette_r, model3_palette_w ) AM_SHARE("paletteram64") /* palette */ - AM_RANGE(0xf1180000, 0xf11800ff) AM_READWRITE(model3_vid_reg_r, model3_vid_reg_w ) - - AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(model3_state::model3_mem) - AM_IMPORT_FROM( model3_10_mem ) - AM_RANGE(0xc0000000, 0xc003ffff) AM_DEVICE32("comm_board", m3comm_device, m3_map, 0xffffffffffffffffU ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(model3_state::model3_5881_mem) - AM_IMPORT_FROM( model3_mem ) - AM_RANGE(0xf0180000, 0xf019ffff) AM_MIRROR(0x0e000000) AM_RAM - AM_RANGE(0xf01a0000, 0xf01a003f) AM_MIRROR(0x0e000000) AM_DEVICE16("315_5881", sega_315_5881_crypt_device, iomap_64be, 0xffffffffffffffffU ) -ADDRESS_MAP_END +void model3_state::model3_10_mem(address_map &map) +{ + map(0x00000000, 0x007fffff).ram().share("work_ram"); /* work RAM */ + + map(0x84000000, 0x8400003f).r(this, FUNC(model3_state::real3d_status_r)); + map(0x88000000, 0x88000007).w(this, FUNC(model3_state::real3d_cmd_w)); + map(0x8e000000, 0x8e0fffff).w(this, FUNC(model3_state::real3d_display_list_w)); + map(0x98000000, 0x980fffff).w(this, FUNC(model3_state::real3d_polygon_ram_w)); + + map(0xf0040000, 0xf004003f).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_ctrl_r), FUNC(model3_state::model3_ctrl_w)); + map(0xf0080000, 0xf008ffff).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_sound_r), FUNC(model3_state::model3_sound_w)); + map(0xf00c0000, 0xf00dffff).mirror(0x0e000000).ram().share("backup"); /* backup SRAM */ + map(0xf0100000, 0xf010003f).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_sys_r), FUNC(model3_state::model3_sys_w)); + map(0xf0140000, 0xf014003f).mirror(0x0e000000).rw(this, FUNC(model3_state::model3_rtc_r), FUNC(model3_state::model3_rtc_w)); + + map(0xf1000000, 0xf10f7fff).rw(this, FUNC(model3_state::model3_char_r), FUNC(model3_state::model3_char_w)); /* character RAM */ + map(0xf10f8000, 0xf10fffff).rw(this, FUNC(model3_state::model3_tile_r), FUNC(model3_state::model3_tile_w)); /* tilemaps */ + map(0xf1100000, 0xf111ffff).rw(this, FUNC(model3_state::model3_palette_r), FUNC(model3_state::model3_palette_w)).share("paletteram64"); /* palette */ + map(0xf1180000, 0xf11800ff).rw(this, FUNC(model3_state::model3_vid_reg_r), FUNC(model3_state::model3_vid_reg_w)); + + map(0xff800000, 0xffffffff).rom().region("user1", 0); +} + +void model3_state::model3_mem(address_map &map) +{ + model3_10_mem(map); + map(0xc0000000, 0xc003ffff).m("comm_board", FUNC(m3comm_device::m3_map)); +} + +void model3_state::model3_5881_mem(address_map &map) +{ + model3_mem(map); + map(0xf0180000, 0xf019ffff).mirror(0x0e000000).ram(); + map(0xf01a0000, 0xf01a003f).mirror(0x0e000000).m(m_cryptdevice, FUNC(sega_315_5881_crypt_device::iomap_64be)); +} static INPUT_PORTS_START( common ) PORT_START("IN0") @@ -5694,17 +5697,18 @@ WRITE16_MEMBER(model3_state::model3snd_ctrl) } } -ADDRESS_MAP_START(model3_state::model3_snd) - AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_REGION("scsp1", 0) AM_SHARE("soundram") - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp1", scsp_device, read, write) - AM_RANGE(0x200000, 0x27ffff) AM_RAM AM_REGION("scsp2", 0) - AM_RANGE(0x300000, 0x300fff) AM_DEVREADWRITE("scsp2", scsp_device, read, write) - AM_RANGE(0x400000, 0x400001) AM_WRITE(model3snd_ctrl) - AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("audiocpu", 0x80000) - AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("samples", 0) - AM_RANGE(0xa00000, 0xdfffff) AM_ROMBANK("bank4") - AM_RANGE(0xe00000, 0xffffff) AM_ROMBANK("bank5") -ADDRESS_MAP_END +void model3_state::model3_snd(address_map &map) +{ + map(0x000000, 0x07ffff).ram().region("scsp1", 0).share("soundram"); + map(0x100000, 0x100fff).rw(m_scsp1, FUNC(scsp_device::read), FUNC(scsp_device::write)); + map(0x200000, 0x27ffff).ram().region("scsp2", 0); + map(0x300000, 0x300fff).rw("scsp2", FUNC(scsp_device::read), FUNC(scsp_device::write)); + map(0x400000, 0x400001).w(this, FUNC(model3_state::model3snd_ctrl)); + map(0x600000, 0x67ffff).rom().region("audiocpu", 0x80000); + map(0x800000, 0x9fffff).rom().region("samples", 0); + map(0xa00000, 0xdfffff).bankr("bank4"); + map(0xe00000, 0xffffff).bankr("bank5"); +} WRITE8_MEMBER(model3_state::scsp_irq) diff --git a/src/mame/drivers/modellot.cpp b/src/mame/drivers/modellot.cpp index 00bbc33a988..6df4f38be8a 100644 --- a/src/mame/drivers/modellot.cpp +++ b/src/mame/drivers/modellot.cpp @@ -70,19 +70,21 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(modellot_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xbfff) AM_RAM // 48k ram - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(modellot_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x77, 0x77) AM_READ(port77_r) - AM_RANGE(0xff, 0xff) AM_READ(portff_r) -ADDRESS_MAP_END +void modellot_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xbfff).ram(); // 48k ram + map(0xc000, 0xc3ff).ram().share("videoram"); + map(0xe000, 0xffff).rom(); +} + +void modellot_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x77, 0x77).r(this, FUNC(modellot_state::port77_r)); + map(0xff, 0xff).r(this, FUNC(modellot_state::portff_r)); +} /* Input ports */ diff --git a/src/mame/drivers/mogura.cpp b/src/mame/drivers/mogura.cpp index e552919d3ab..6ec4ebad7cc 100644 --- a/src/mame/drivers/mogura.cpp +++ b/src/mame/drivers/mogura.cpp @@ -137,24 +137,26 @@ WRITE8_MEMBER(mogura_state::mogura_gfxram_w) } -ADDRESS_MAP_START(mogura_state::mogura_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM // main ram - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(mogura_gfxram_w) AM_SHARE("gfxram") // ram based characters - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(mogura_tileram_w) AM_SHARE("tileram") // tilemap -ADDRESS_MAP_END - -ADDRESS_MAP_START(mogura_state::mogura_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP // ?? - AM_RANGE(0x08, 0x08) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c, 0x0c) AM_READ_PORT("P1") - AM_RANGE(0x0d, 0x0d) AM_READ_PORT("P2") - AM_RANGE(0x0e, 0x0e) AM_READ_PORT("P3") - AM_RANGE(0x0f, 0x0f) AM_READ_PORT("P4") - AM_RANGE(0x10, 0x10) AM_READ_PORT("SERVICE") - AM_RANGE(0x14, 0x14) AM_WRITE(mogura_dac_w) /* 4 bit DAC x 2. MSB = left, LSB = right */ -ADDRESS_MAP_END +void mogura_state::mogura_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xdfff).ram(); // main ram + map(0xe000, 0xefff).ram().w(this, FUNC(mogura_state::mogura_gfxram_w)).share("gfxram"); // ram based characters + map(0xf000, 0xffff).ram().w(this, FUNC(mogura_state::mogura_tileram_w)).share("tileram"); // tilemap +} + +void mogura_state::mogura_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); // ?? + map(0x08, 0x08).portr("SYSTEM"); + map(0x0c, 0x0c).portr("P1"); + map(0x0d, 0x0d).portr("P2"); + map(0x0e, 0x0e).portr("P3"); + map(0x0f, 0x0f).portr("P4"); + map(0x10, 0x10).portr("SERVICE"); + map(0x14, 0x14).w(this, FUNC(mogura_state::mogura_dac_w)); /* 4 bit DAC x 2. MSB = left, LSB = right */ +} static INPUT_PORTS_START( mogura ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/mole.cpp b/src/mame/drivers/mole.cpp index f71e2073da6..46dc4281e2c 100644 --- a/src/mame/drivers/mole.cpp +++ b/src/mame/drivers/mole.cpp @@ -201,23 +201,24 @@ READ8_MEMBER(mole_state::mole_protection_r) * *************************************/ -ADDRESS_MAP_START(mole_state::mole_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x08ff) AM_READ(mole_protection_r) - AM_RANGE(0x0800, 0x0800) AM_WRITENOP // ??? - AM_RANGE(0x0820, 0x0820) AM_WRITENOP // ??? - AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_WRITE(mole_tileram_w) AM_READNOP - AM_RANGE(0x8400, 0x8400) AM_WRITE(mole_tilebank_w) - AM_RANGE(0x8c00, 0x8c01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x8c40, 0x8c40) AM_WRITENOP // ??? - AM_RANGE(0x8c80, 0x8c80) AM_WRITENOP // ??? - AM_RANGE(0x8c81, 0x8c81) AM_WRITENOP // ??? - AM_RANGE(0x8d00, 0x8d00) AM_READ_PORT("DSW") AM_WRITE(mole_irqack_w) - AM_RANGE(0x8d40, 0x8d40) AM_READ_PORT("IN0") - AM_RANGE(0x8d80, 0x8d80) AM_READ_PORT("IN1") - AM_RANGE(0x8dc0, 0x8dc0) AM_READ_PORT("IN2") AM_WRITE(mole_flipscreen_w) -ADDRESS_MAP_END +void mole_state::mole_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0800, 0x08ff).r(this, FUNC(mole_state::mole_protection_r)); + map(0x0800, 0x0800).nopw(); // ??? + map(0x0820, 0x0820).nopw(); // ??? + map(0x5000, 0x7fff).mirror(0x8000).rom(); + map(0x8000, 0x83ff).w(this, FUNC(mole_state::mole_tileram_w)).nopr(); + map(0x8400, 0x8400).w(this, FUNC(mole_state::mole_tilebank_w)); + map(0x8c00, 0x8c01).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x8c40, 0x8c40).nopw(); // ??? + map(0x8c80, 0x8c80).nopw(); // ??? + map(0x8c81, 0x8c81).nopw(); // ??? + map(0x8d00, 0x8d00).portr("DSW").w(this, FUNC(mole_state::mole_irqack_w)); + map(0x8d40, 0x8d40).portr("IN0"); + map(0x8d80, 0x8d80).portr("IN1"); + map(0x8dc0, 0x8dc0).portr("IN2").w(this, FUNC(mole_state::mole_flipscreen_w)); +} /************************************* diff --git a/src/mame/drivers/molecular.cpp b/src/mame/drivers/molecular.cpp index 950c5d3178d..929f7082bbb 100644 --- a/src/mame/drivers/molecular.cpp +++ b/src/mame/drivers/molecular.cpp @@ -175,25 +175,29 @@ WRITE8_MEMBER( molecula_state::sio_w) printf("%c\n",data); } -ADDRESS_MAP_START(molecula_state::molecula_file_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(file_r,file_w) -ADDRESS_MAP_END +void molecula_state::molecula_file_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(molecula_state::file_r), FUNC(molecula_state::file_w)); +} -ADDRESS_MAP_START(molecula_state::molecula_file_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void molecula_state::molecula_file_io(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x40, 0x43) AM_READWRITE(sio_r,sio_w) - AM_RANGE(0x72, 0x73) AM_WRITE(file_output_w) // unknown -ADDRESS_MAP_END - -ADDRESS_MAP_START(molecula_state::molecula_app_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(app_r,app_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(molecula_state::molecula_app_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_WRITE(app_output_w) - AM_RANGE(0x60, 0x63) AM_READWRITE(sio_r,sio_w) -ADDRESS_MAP_END + map(0x72, 0x73).w(this, FUNC(molecula_state::file_output_w)); // unknown +} + +void molecula_state::molecula_app_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(molecula_state::app_r), FUNC(molecula_state::app_w)); +} + +void molecula_state::molecula_app_io(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w(this, FUNC(molecula_state::app_output_w)); + map(0x60, 0x63).rw(this, FUNC(molecula_state::sio_r), FUNC(molecula_state::sio_w)); +} static INPUT_PORTS_START( molecula ) /* dummy active high structure */ diff --git a/src/mame/drivers/momoko.cpp b/src/mame/drivers/momoko.cpp index 58189b59db3..dd8b384e52e 100644 --- a/src/mame/drivers/momoko.cpp +++ b/src/mame/drivers/momoko.cpp @@ -63,38 +63,40 @@ WRITE8_MEMBER(momoko_state::momoko_bg_read_bank_w) /****************************************************************************/ -ADDRESS_MAP_START(momoko_state::momoko_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd064, 0xd0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd400, 0xd400) AM_READ_PORT("IN0") AM_WRITENOP /* interrupt ack? */ - AM_RANGE(0xd402, 0xd402) AM_READ_PORT("IN1") AM_WRITE(momoko_flipscreen_w) - AM_RANGE(0xd404, 0xd404) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1") - AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xdc00, 0xdc00) AM_WRITE(momoko_fg_scrolly_w) - AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w) - AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w) - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe800) AM_WRITE(momoko_text_scrolly_w) - AM_RANGE(0xe801, 0xe801) AM_WRITE(momoko_text_mode_w) - AM_RANGE(0xf000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0xf000, 0xf001) AM_WRITE(momoko_bg_scrolly_w) AM_SHARE("bg_scrolly") - AM_RANGE(0xf002, 0xf003) AM_WRITE(momoko_bg_scrollx_w) AM_SHARE("bg_scrollx") - AM_RANGE(0xf004, 0xf004) AM_WRITE(momoko_bg_read_bank_w) - AM_RANGE(0xf006, 0xf006) AM_WRITE(momoko_bg_select_w) - AM_RANGE(0xf007, 0xf007) AM_WRITE(momoko_bg_priority_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(momoko_state::momoko_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown */ - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* unknown */ - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void momoko_state::momoko_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd064, 0xd0ff).ram().share("spriteram"); + map(0xd400, 0xd400).portr("IN0").nopw(); /* interrupt ack? */ + map(0xd402, 0xd402).portr("IN1").w(this, FUNC(momoko_state::momoko_flipscreen_w)); + map(0xd404, 0xd404).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd406, 0xd406).portr("DSW0").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xd407, 0xd407).portr("DSW1"); + map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xdc00, 0xdc00).w(this, FUNC(momoko_state::momoko_fg_scrolly_w)); + map(0xdc01, 0xdc01).w(this, FUNC(momoko_state::momoko_fg_scrollx_w)); + map(0xdc02, 0xdc02).w(this, FUNC(momoko_state::momoko_fg_select_w)); + map(0xe000, 0xe3ff).ram().share("videoram"); + map(0xe800, 0xe800).w(this, FUNC(momoko_state::momoko_text_scrolly_w)); + map(0xe801, 0xe801).w(this, FUNC(momoko_state::momoko_text_mode_w)); + map(0xf000, 0xffff).bankr("bank1"); + map(0xf000, 0xf001).w(this, FUNC(momoko_state::momoko_bg_scrolly_w)).share("bg_scrolly"); + map(0xf002, 0xf003).w(this, FUNC(momoko_state::momoko_bg_scrollx_w)).share("bg_scrollx"); + map(0xf004, 0xf004).w(this, FUNC(momoko_state::momoko_bg_read_bank_w)); + map(0xf006, 0xf006).w(this, FUNC(momoko_state::momoko_bg_select_w)); + map(0xf007, 0xf007).w(this, FUNC(momoko_state::momoko_bg_priority_w)); +} + +void momoko_state::momoko_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).nopw(); /* unknown */ + map(0xa000, 0xa001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb000, 0xb000).nopw(); /* unknown */ + map(0xc000, 0xc001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} /****************************************************************************/ diff --git a/src/mame/drivers/monty.cpp b/src/mame/drivers/monty.cpp index 3568b82d9e2..85a5d6bb650 100644 --- a/src/mame/drivers/monty.cpp +++ b/src/mame/drivers/monty.cpp @@ -84,36 +84,39 @@ private: }; -ADDRESS_MAP_START(monty_state::monty_mem) - AM_RANGE(0x0000, 0xbfff) AM_ROM +void monty_state::monty_mem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); //AM_RANGE(0x4000, 0x4000) // The main rom checks to see if another program is here on startup - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(monty_state::mmonty_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM +void monty_state::mmonty_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); //AM_RANGE(0xc000, 0xc000) // The main rom checks to see if another program is here on startup - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM -ADDRESS_MAP_END + map(0x8000, 0xffff).rom(); + map(0x7800, 0x7fff).ram(); +} -ADDRESS_MAP_START(monty_state::monty_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(ioCommandWrite0_w) - AM_RANGE(0x01, 0x01) AM_WRITE(sound_w) - AM_RANGE(0x02, 0x02) AM_WRITE(ioCommandWrite1_w) - AM_RANGE(0x80, 0xff) AM_WRITE(ioDisplayWrite_w) +void monty_state::monty_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(monty_state::ioCommandWrite0_w)); + map(0x01, 0x01).w(this, FUNC(monty_state::sound_w)); + map(0x02, 0x02).w(this, FUNC(monty_state::ioCommandWrite1_w)); + map(0x80, 0xff).w(this, FUNC(monty_state::ioDisplayWrite_w)); // 7 reads from a bit shifted IO port - AM_RANGE(0x01, 0x01) AM_READ_PORT("X1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("X2") - AM_RANGE(0x04, 0x04) AM_READ_PORT("X3") - AM_RANGE(0x08, 0x08) AM_READ_PORT("X4") - AM_RANGE(0x10, 0x10) AM_READ_PORT("X5") - AM_RANGE(0x20, 0x20) AM_READ_PORT("X6") - AM_RANGE(0x40, 0x40) AM_READ_PORT("X7") -ADDRESS_MAP_END + map(0x01, 0x01).portr("X1"); + map(0x02, 0x02).portr("X2"); + map(0x04, 0x04).portr("X3"); + map(0x08, 0x08).portr("X4"); + map(0x10, 0x10).portr("X5"); + map(0x20, 0x20).portr("X6"); + map(0x40, 0x40).portr("X7"); +} // Input ports diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp index 6b3f12fba30..9efed3da1c4 100644 --- a/src/mame/drivers/monzagp.cpp +++ b/src/mame/drivers/monzagp.cpp @@ -262,9 +262,10 @@ uint32_t monzagp_state::screen_update_monzagp(screen_device &screen, bitmap_ind1 return 0; } -ADDRESS_MAP_START(monzagp_state::monzagp_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void monzagp_state::monzagp_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} READ8_MEMBER(monzagp_state::port_r) @@ -405,9 +406,10 @@ WRITE8_MEMBER(monzagp_state::port2_w) } -ADDRESS_MAP_START(monzagp_state::monzagp_io) - AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w) -ADDRESS_MAP_END +void monzagp_state::monzagp_io(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(monzagp_state::port_r), FUNC(monzagp_state::port_w)); +} static INPUT_PORTS_START( monzagp ) PORT_START("WHEEL") diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp index 198c89de596..d8b371da588 100644 --- a/src/mame/drivers/moo.cpp +++ b/src/mame/drivers/moo.cpp @@ -299,111 +299,115 @@ WRITE16_MEMBER(moo_state::moobl_oki_bank_w) m_oki->set_rom_bank(data & 0x0f); } -ADDRESS_MAP_START(moo_state::moo_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - - AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) /* K054338 alpha blending engine */ - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w) - AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* CCU regs (ignored) */ - AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */ - AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3") - AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4") - AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0") - AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("IN1") - AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w) - AM_RANGE(0x100000, 0x17ffff) AM_ROM - AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") /* Work RAM */ - AM_RANGE(0x190000, 0x19ffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */ - AM_RANGE(0x1a2000, 0x1a3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */ - AM_RANGE(0x1b0000, 0x1b1fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */ - AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") +void moo_state::moo_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + + map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */ + map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x0ce000, 0x0ce01f).w(this, FUNC(moo_state::moo_prot_w)); + map(0x0d0000, 0x0d001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* CCU regs (ignored) */ + map(0x0d4000, 0x0d4001).w(this, FUNC(moo_state::sound_irq_w)); + map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */ + map(0x0da000, 0x0da001).portr("P1_P3"); + map(0x0da002, 0x0da003).portr("P2_P4"); + map(0x0dc000, 0x0dc001).portr("IN0"); + map(0x0dc002, 0x0dc003).portr("IN1"); + map(0x0de000, 0x0de001).rw(this, FUNC(moo_state::control2_r), FUNC(moo_state::control2_w)); + map(0x100000, 0x17ffff).rom(); + map(0x180000, 0x18ffff).ram().share("workram"); /* Work RAM */ + map(0x190000, 0x19ffff).ram().share("spriteram"); /* Sprite RAM */ + map(0x1a0000, 0x1a1fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */ + map(0x1a2000, 0x1a3fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */ + map(0x1b0000, 0x1b1fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */ + map(0x1c0000, 0x1c1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); #if MOO_DEBUG - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r) + map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r)); + map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r)); + map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r)); + map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r)); + map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r)); #endif -ADDRESS_MAP_END - -ADDRESS_MAP_START(moo_state::moobl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x0c2f00, 0x0c2f01) AM_READNOP /* heck if I know, but it's polled constantly */ - AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) /* K054338 alpha blending engine */ - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x0d0000, 0x0d001f) AM_WRITEONLY /* CCU regs (ignored) */ - AM_RANGE(0x0d6ffc, 0x0d6ffd) AM_WRITE(moobl_oki_bank_w) - AM_RANGE(0x0d6ffe, 0x0d6fff) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */ - AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3") - AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4") - AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0") - AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("IN1") - AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w) - AM_RANGE(0x100000, 0x17ffff) AM_ROM - AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("workram") /* Work RAM */ - AM_RANGE(0x190000, 0x19ffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */ - AM_RANGE(0x1a2000, 0x1a3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */ - AM_RANGE(0x1b0000, 0x1b1fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */ - AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(moo_state::bucky_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM - AM_RANGE(0x090000, 0x09ffff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x0a0000, 0x0affff) AM_RAM /* extra sprite RAM? */ - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) /* K054338 alpha blending engine */ - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w) - AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* CCU regs (ignored) */ - AM_RANGE(0x0d2000, 0x0d20ff) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w) - AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) /* VSCCS regs */ - AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3") - AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4") - AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0") - AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("IN1") - AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w) - AM_RANGE(0x180000, 0x181fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes */ - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* Graphic planes mirror */ - AM_RANGE(0x184000, 0x187fff) AM_RAM /* extra tile RAM? */ - AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) /* Passthrough to tile roms */ - AM_RANGE(0x1b0000, 0x1b3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x200000, 0x23ffff) AM_ROM /* data */ +} + +void moo_state::moobl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x0c2f00, 0x0c2f01).nopr(); /* heck if I know, but it's polled constantly */ + map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */ + map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x0d0000, 0x0d001f).writeonly(); /* CCU regs (ignored) */ + map(0x0d6ffc, 0x0d6ffd).w(this, FUNC(moo_state::moobl_oki_bank_w)); + map(0x0d6fff, 0x0d6fff).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */ + map(0x0da000, 0x0da001).portr("P1_P3"); + map(0x0da002, 0x0da003).portr("P2_P4"); + map(0x0dc000, 0x0dc001).portr("IN0"); + map(0x0dc002, 0x0dc003).portr("IN1"); + map(0x0de000, 0x0de001).rw(this, FUNC(moo_state::control2_r), FUNC(moo_state::control2_w)); + map(0x100000, 0x17ffff).rom(); + map(0x180000, 0x18ffff).ram().share("workram"); /* Work RAM */ + map(0x190000, 0x19ffff).ram().share("spriteram"); /* Sprite RAM */ + map(0x1a0000, 0x1a1fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */ + map(0x1a2000, 0x1a3fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */ + map(0x1b0000, 0x1b1fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */ + map(0x1c0000, 0x1c1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void moo_state::bucky_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram(); + map(0x090000, 0x09ffff).ram().share("spriteram"); /* Sprite RAM */ + map(0x0a0000, 0x0affff).ram(); /* extra sprite RAM? */ + map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); /* K054338 alpha blending engine */ + map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x0ce000, 0x0ce01f).w(this, FUNC(moo_state::moo_prot_w)); + map(0x0d0000, 0x0d001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* CCU regs (ignored) */ + map(0x0d2000, 0x0d20ff).rw("k054000", FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w)); + map(0x0d4000, 0x0d4001).w(this, FUNC(moo_state::sound_irq_w)); + map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); /* VSCCS regs */ + map(0x0da000, 0x0da001).portr("P1_P3"); + map(0x0da002, 0x0da003).portr("P2_P4"); + map(0x0dc000, 0x0dc001).portr("IN0"); + map(0x0dc002, 0x0dc003).portr("IN1"); + map(0x0de000, 0x0de001).rw(this, FUNC(moo_state::control2_r), FUNC(moo_state::control2_w)); + map(0x180000, 0x181fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes */ + map(0x182000, 0x183fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* Graphic planes mirror */ + map(0x184000, 0x187fff).ram(); /* extra tile RAM? */ + map(0x190000, 0x191fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); /* Passthrough to tile roms */ + map(0x1b0000, 0x1b3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x200000, 0x23ffff).rom(); /* data */ #if MOO_DEBUG - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r) + map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r)); + map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r)); + map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r)); + map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r)); + map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r)); #endif -ADDRESS_MAP_END - -ADDRESS_MAP_START(moo_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +} + +void moo_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xec00, 0xec01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(moo_state::sound_bankswitch_w)); +} static INPUT_PORTS_START( moo ) PORT_START("IN0") diff --git a/src/mame/drivers/mosaic.cpp b/src/mame/drivers/mosaic.cpp index 478b070609f..48e5ab509b5 100644 --- a/src/mame/drivers/mosaic.cpp +++ b/src/mame/drivers/mosaic.cpp @@ -117,41 +117,45 @@ READ8_MEMBER(mosaic_state::gfire2_protection_r) -ADDRESS_MAP_START(mosaic_state::mosaic_map) - AM_RANGE(0x00000, 0x0ffff) AM_ROM - AM_RANGE(0x20000, 0x21fff) AM_RAM - AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mosaic_state::gfire2_map) - AM_RANGE(0x00000, 0x0ffff) AM_ROM - AM_RANGE(0x10000, 0x17fff) AM_RAM - AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x24000, 0x241ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mosaic_state::mosaic_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */ - AM_RANGE(0x30, 0x30) AM_READNOP /* Z180 internal registers */ - AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x72, 0x72) AM_READWRITE(protection_r, protection_w) - AM_RANGE(0x74, 0x74) AM_READ_PORT("P1") - AM_RANGE(0x76, 0x76) AM_READ_PORT("P2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mosaic_state::gfire2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_WRITENOP /* Z180 internal registers */ - AM_RANGE(0x30, 0x30) AM_READNOP /* Z180 internal registers */ - AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x72, 0x72) AM_READWRITE(gfire2_protection_r, gfire2_protection_w) - AM_RANGE(0x74, 0x74) AM_READ_PORT("P1") - AM_RANGE(0x76, 0x76) AM_READ_PORT("P2") -ADDRESS_MAP_END +void mosaic_state::mosaic_map(address_map &map) +{ + map(0x00000, 0x0ffff).rom(); + map(0x20000, 0x21fff).ram(); + map(0x22000, 0x22fff).ram().w(this, FUNC(mosaic_state::bgvideoram_w)).share("bgvideoram"); + map(0x23000, 0x23fff).ram().w(this, FUNC(mosaic_state::fgvideoram_w)).share("fgvideoram"); + map(0x24000, 0x241ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void mosaic_state::gfire2_map(address_map &map) +{ + map(0x00000, 0x0ffff).rom(); + map(0x10000, 0x17fff).ram(); + map(0x22000, 0x22fff).ram().w(this, FUNC(mosaic_state::bgvideoram_w)).share("bgvideoram"); + map(0x23000, 0x23fff).ram().w(this, FUNC(mosaic_state::fgvideoram_w)).share("fgvideoram"); + map(0x24000, 0x241ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void mosaic_state::mosaic_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).nopw(); /* Z180 internal registers */ + map(0x30, 0x30).nopr(); /* Z180 internal registers */ + map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x72, 0x72).rw(this, FUNC(mosaic_state::protection_r), FUNC(mosaic_state::protection_w)); + map(0x74, 0x74).portr("P1"); + map(0x76, 0x76).portr("P2"); +} + +void mosaic_state::gfire2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).nopw(); /* Z180 internal registers */ + map(0x30, 0x30).nopr(); /* Z180 internal registers */ + map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x72, 0x72).rw(this, FUNC(mosaic_state::gfire2_protection_r), FUNC(mosaic_state::gfire2_protection_w)); + map(0x74, 0x74).portr("P1"); + map(0x76, 0x76).portr("P2"); +} static INPUT_PORTS_START( mosaic ) diff --git a/src/mame/drivers/mouser.cpp b/src/mame/drivers/mouser.cpp index a153c2136fb..5a5082a549f 100644 --- a/src/mame/drivers/mouser.cpp +++ b/src/mame/drivers/mouser.cpp @@ -64,36 +64,40 @@ INTERRUPT_GEN_MEMBER(mouser_state::mouser_sound_nmi_assert) device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -ADDRESS_MAP_START(mouser_state::mouser_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM - AM_RANGE(0x8800, 0x88ff) AM_WRITENOP /* unknown */ - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2") AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mouser_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mouser_state::mouser_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_READ(mouser_sound_byte_r) - AM_RANGE(0x4000, 0x4000) AM_WRITE(mouser_sound_nmi_clear_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mouser_state::mouser_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_address_w) -ADDRESS_MAP_END +void mouser_state::mouser_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6bff).ram(); + map(0x8800, 0x88ff).nopw(); /* unknown */ + map(0x9000, 0x93ff).ram().share("videoram"); + map(0x9800, 0x9bff).ram().share("spriteram"); + map(0x9c00, 0x9fff).ram().share("colorram"); + map(0xa000, 0xa000).portr("P1"); + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xa800, 0xa800).portr("SYSTEM"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb800, 0xb800).portr("P2").w(this, FUNC(mouser_state::mouser_sound_interrupt_w)); /* byte to sound cpu */ +} + +void mouser_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().share("decrypted_opcodes"); +} + +void mouser_state::mouser_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).r(this, FUNC(mouser_state::mouser_sound_byte_r)); + map(0x4000, 0x4000).w(this, FUNC(mouser_state::mouser_sound_nmi_clear_w)); +} + +void mouser_state::mouser_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x80, 0x81).w("ay2", FUNC(ay8910_device::data_address_w)); +} static INPUT_PORTS_START( mouser ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp index 4beba6016d1..ac2d46bd258 100644 --- a/src/mame/drivers/mpf1.cpp +++ b/src/mame/drivers/mpf1.cpp @@ -58,54 +58,61 @@ /* Address Maps */ -ADDRESS_MAP_START(mpf1_state::mpf1_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1800, 0x1fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpf1_state::mpf1_step) - AM_RANGE(0x0000, 0xffff) AM_READ(step_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpf1_state::mpf1b_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x5000, 0x6fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpf1_state::mpf1p_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpf1_state::mpf1_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0x40, 0x43) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpf1_state::mpf1b_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0x40, 0x43) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) - AM_RANGE(0xfe, 0xfe) AM_MIRROR(0x01) AM_DEVREADWRITE(TMS5220_TAG, tms5220_device, status_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpf1_state::mpf1p_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0x40, 0x43) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) -ADDRESS_MAP_END +void mpf1_state::mpf1_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1800, 0x1fff).ram(); +} + +void mpf1_state::mpf1_step(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(mpf1_state::step_r)); +} + +void mpf1_state::mpf1b_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1800, 0x1fff).ram(); + map(0x2000, 0x2fff).rom(); + map(0x5000, 0x6fff).rom(); +} + +void mpf1_state::mpf1p_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x6000, 0x6fff).rom(); + map(0xf000, 0xffff).ram(); +} + +void mpf1_state::mpf1_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x3c).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x43).mirror(0x3c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x83).mirror(0x3c).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} + +void mpf1_state::mpf1b_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x3c).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x43).mirror(0x3c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x83).mirror(0x3c).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xfe, 0xfe).mirror(0x01).rw(TMS5220_TAG, FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w)); +} + +void mpf1_state::mpf1p_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x3c).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x43).mirror(0x3c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x83).mirror(0x3c).rw(Z80PIO_TAG, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/mps1230.cpp b/src/mame/drivers/mps1230.cpp index fdea1f07d12..5fa038e0150 100644 --- a/src/mame/drivers/mps1230.cpp +++ b/src/mame/drivers/mps1230.cpp @@ -123,11 +123,12 @@ void mps1230_state::machine_reset() ADDRESS MAP ***************************************************************************/ -ADDRESS_MAP_START(mps1230_state::mps1230_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xc000, 0xdfff) AM_RAM // as per the service manual - AM_RANGE(0xff80, 0xffff) AM_RAM // internal in cpu -ADDRESS_MAP_END +void mps1230_state::mps1230_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0xc000, 0xdfff).ram(); // as per the service manual + map(0xff80, 0xffff).ram(); // internal in cpu +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp index 82c775f7e76..061a9e0462f 100644 --- a/src/mame/drivers/mpu12wbk.cpp +++ b/src/mame/drivers/mpu12wbk.cpp @@ -311,22 +311,23 @@ PALETTE_INIT_MEMBER(mpu12wbk_state, mpu12wbk) * Memory Map Information * *************************/ -ADDRESS_MAP_START(mpu12wbk_state::mpu12wbk_map) - AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("crtc", mc6845_device, address_w) // OK - AM_RANGE(0x1401, 0x1401) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) // OK - AM_RANGE(0x1e00, 0x1e01) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) // hmmmmm.... - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(mpu12wbk_videoram_w) AM_SHARE("videoram") // FIXME - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(mpu12wbk_colorram_w) AM_SHARE("colorram") // FIXME - AM_RANGE(0x2800, 0x3fff) AM_RAM // RAM (from 2000-3fff) - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("SW1") // dummy, placeholder - AM_RANGE(0x6001, 0x6001) AM_READ_PORT("SW2") // dummy, placeholder - AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN0") // dummy, placeholder - AM_RANGE(0x6003, 0x6003) AM_READ_PORT("IN1") // dummy, placeholder - AM_RANGE(0x6004, 0x6004) AM_READ_PORT("IN2") // dummy, placeholder - AM_RANGE(0x6005, 0x6005) AM_READ_PORT("IN3") // dummy, placeholder - - AM_RANGE(0x8000, 0xffff) AM_ROM // OK -ADDRESS_MAP_END +void mpu12wbk_state::mpu12wbk_map(address_map &map) +{ + map(0x1400, 0x1400).w("crtc", FUNC(mc6845_device::address_w)); // OK + map(0x1401, 0x1401).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // OK + map(0x1e00, 0x1e01).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); // hmmmmm.... + map(0x2000, 0x23ff).ram().w(this, FUNC(mpu12wbk_state::mpu12wbk_videoram_w)).share("videoram"); // FIXME + map(0x2400, 0x27ff).ram().w(this, FUNC(mpu12wbk_state::mpu12wbk_colorram_w)).share("colorram"); // FIXME + map(0x2800, 0x3fff).ram(); // RAM (from 2000-3fff) + map(0x6000, 0x6000).portr("SW1"); // dummy, placeholder + map(0x6001, 0x6001).portr("SW2"); // dummy, placeholder + map(0x6002, 0x6002).portr("IN0"); // dummy, placeholder + map(0x6003, 0x6003).portr("IN1"); // dummy, placeholder + map(0x6004, 0x6004).portr("IN2"); // dummy, placeholder + map(0x6005, 0x6005).portr("IN3"); // dummy, placeholder + + map(0x8000, 0xffff).rom(); // OK +} /* diff --git a/src/mame/drivers/mpu2.cpp b/src/mame/drivers/mpu2.cpp index 4ca37ff12ba..b5042c0ec39 100644 --- a/src/mame/drivers/mpu2.cpp +++ b/src/mame/drivers/mpu2.cpp @@ -59,15 +59,16 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(mpu2_state::mpu2_basemap) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) // A14/A15 Not Connected - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("romp1", 0) - AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("maskrom", 0) - AM_RANGE(0x1800, 0x1fff) AM_ROM AM_REGION("romp2", 0) AM_MIRROR(0x2000) - AM_RANGE(0x2000, 0x2003) AM_RAM // maybe a 6821? - AM_RANGE(0x2004, 0x2007) AM_RAM // maybe a 6821? -ADDRESS_MAP_END +void mpu2_state::mpu2_basemap(address_map &map) +{ + map.global_mask(0x3fff); // A14/A15 Not Connected + map(0x0000, 0x007f).ram(); + map(0x0800, 0x0fff).rom().region("romp1", 0); + map(0x1000, 0x17ff).rom().region("maskrom", 0); + map(0x1800, 0x1fff).rom().region("romp2", 0).mirror(0x2000); + map(0x2000, 0x2003).ram(); // maybe a 6821? + map(0x2004, 0x2007).ram(); // maybe a 6821? +} static INPUT_PORTS_START( mpu2 ) INPUT_PORTS_END diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp index a88f99a2e7e..a3c3124060b 100644 --- a/src/mame/drivers/mpu3.cpp +++ b/src/mame/drivers/mpu3.cpp @@ -824,15 +824,16 @@ READ8_MEMBER(mpu3_state::mpu3ptm_r) return ptm2->read(offset >>2); } -ADDRESS_MAP_START(mpu3_state::mpu3_basemap) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1000, 0xffff) AM_ROM - AM_RANGE(0x8800, 0x881f) AM_READWRITE(mpu3ptm_r, mpu3ptm_w)/* PTM6840 IC2 */ - AM_RANGE(0x9000, 0x9003) AM_DEVREADWRITE("pia_ic3", pia6821_device, read, write) /* PIA6821 IC3 */ - AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("pia_ic4", pia6821_device, read, write) /* PIA6821 IC4 */ - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("pia_ic5", pia6821_device, read, write) /* PIA6821 IC5 */ - AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("pia_ic6", pia6821_device, read, write) /* PIA6821 IC6 */ -ADDRESS_MAP_END +void mpu3_state::mpu3_basemap(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x1000, 0xffff).rom(); + map(0x8800, 0x881f).rw(this, FUNC(mpu3_state::mpu3ptm_r), FUNC(mpu3_state::mpu3ptm_w));/* PTM6840 IC2 */ + map(0x9000, 0x9003).rw("pia_ic3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */ + map(0x9800, 0x9803).rw("pia_ic4", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */ + map(0xa000, 0xa003).rw("pia_ic5", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */ + map(0xa800, 0xa803).rw("pia_ic6", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */ +} #define MCFG_MPU3_REEL_ADD(_tag)\ MCFG_STEPPER_ADD(_tag)\ diff --git a/src/mame/drivers/mpu4dealem.cpp b/src/mame/drivers/mpu4dealem.cpp index 6efef6ed4d5..f0f939e7e47 100644 --- a/src/mame/drivers/mpu4dealem.cpp +++ b/src/mame/drivers/mpu4dealem.cpp @@ -153,26 +153,27 @@ WRITE_LINE_MEMBER(mpu4dealem_state::dealem_vsync_changed) * *************************************/ -ADDRESS_MAP_START(mpu4dealem_state::dealem_memmap) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") +void mpu4dealem_state::dealem_memmap(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); /* AM_RANGE(0x08e0, 0x08e7) AM_READWRITE(68681_duart_r,68681_duart_w) */ //Runs hoppers - AM_RANGE(0x0900, 0x0907) AM_DEVREADWRITE("ptm_ic2", ptm6840_device, read, write)/* PTM6840 IC2 */ + map(0x0900, 0x0907).rw(m_6840ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));/* PTM6840 IC2 */ - AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE("pia_ic3", pia6821_device, read, write) /* PIA6821 IC3 */ - AM_RANGE(0x0b00, 0x0b03) AM_DEVREADWRITE("pia_ic4", pia6821_device, read, write) /* PIA6821 IC4 */ - AM_RANGE(0x0c00, 0x0c03) AM_DEVREADWRITE("pia_ic5", pia6821_device, read, write) /* PIA6821 IC5 */ - AM_RANGE(0x0d00, 0x0d03) AM_DEVREADWRITE("pia_ic6", pia6821_device, read, write) /* PIA6821 IC6 */ - AM_RANGE(0x0e00, 0x0e03) AM_DEVREADWRITE("pia_ic7", pia6821_device, read, write) /* PIA6821 IC7 */ - AM_RANGE(0x0f00, 0x0f03) AM_DEVREADWRITE("pia_ic8", pia6821_device, read, write) /* PIA6821 IC8 */ + map(0x0a00, 0x0a03).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */ + map(0x0b00, 0x0b03).rw(m_pia4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */ + map(0x0c00, 0x0c03).rw(m_pia5, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */ + map(0x0d00, 0x0d03).rw(m_pia6, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */ + map(0x0e00, 0x0e03).rw(m_pia7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC7 */ + map(0x0f00, 0x0f03).rw(m_pia8, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC8 */ - AM_RANGE(0x1000, 0x2fff) AM_RAM AM_SHARE("dealem_videoram") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITENOP/* 64k paged ROM (4 pages) */ -ADDRESS_MAP_END + map(0x1000, 0x2fff).ram().share("dealem_videoram"); + map(0x8000, 0xffff).rom().nopw();/* 64k paged ROM (4 pages) */ +} MACHINE_RESET_MEMBER(mpu4dealem_state,dealem_vid) { diff --git a/src/mame/drivers/mpu4plasma.cpp b/src/mame/drivers/mpu4plasma.cpp index 7f447b27e44..746e6744d81 100644 --- a/src/mame/drivers/mpu4plasma.cpp +++ b/src/mame/drivers/mpu4plasma.cpp @@ -40,15 +40,16 @@ public: INPUT_PORTS_EXTERN( mpu4 ); -ADDRESS_MAP_START(mpu4plasma_state::mpu4plasma_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void mpu4plasma_state::mpu4plasma_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // why does it test this much ram, just sloppy code expecting mirroring? - AM_RANGE(0x400000, 0x4fffff) AM_RAM AM_SHARE("plasmaram") + map(0x400000, 0x4fffff).ram().share("plasmaram"); // comms? - AM_RANGE(0xffff00, 0xffff01) AM_READ( mpu4plasma_unk_r ) - AM_RANGE(0xffff04, 0xffff05) AM_WRITE( mpu4plasma_unk_w ) -ADDRESS_MAP_END + map(0xffff00, 0xffff01).r(this, FUNC(mpu4plasma_state::mpu4plasma_unk_r)); + map(0xffff04, 0xffff05).w(this, FUNC(mpu4plasma_state::mpu4plasma_unk_w)); +} uint32_t mpu4plasma_state::screen_update_mpu4plasma(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp index 5228b63492d..c3863ce4d25 100644 --- a/src/mame/drivers/mpu4vid.cpp +++ b/src/mame/drivers/mpu4vid.cpp @@ -403,9 +403,10 @@ READ8_MEMBER(mpu4vid_state::vram_r) return m_vid_mainram[offset]; } -ADDRESS_MAP_START(mpu4vid_state::mpu4_vram) - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(vram_r, vram_w) -ADDRESS_MAP_END +void mpu4vid_state::mpu4_vram(address_map &map) +{ + map(0x0000, 0x7fff).rw(this, FUNC(mpu4vid_state::vram_r), FUNC(mpu4vid_state::vram_w)); +} SCN2674_DRAW_CHARACTER_MEMBER(mpu4vid_state::display_pixels) { @@ -1180,74 +1181,78 @@ MACHINE_RESET_MEMBER(mpu4vid_state,mpu4_vid) m_chr_value = 0; } -ADDRESS_MAP_START(mpu4vid_state::mpu4_68k_map) - AM_RANGE(0x000000, 0x7fffff) AM_ROM - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") +void mpu4vid_state::mpu4_68k_map(address_map &map) +{ + map(0x000000, 0x7fffff).rom(); + map(0x800000, 0x80ffff).ram().share("vid_mainram"); // AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ - AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff) - AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff) + map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)); + map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)); /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) - AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") - AM_RANGE(0xff8000, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff) - AM_RANGE(0xff9000, 0xff900f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff) - AM_RANGE(0xffd000, 0xffd00f) AM_READWRITE8(vidcharacteriser_r, vidcharacteriser_w,0x00ff) -ADDRESS_MAP_END + map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff); + map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram"); + map(0xff8000, 0xff8003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0xff9000, 0xff900f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0xffd000, 0xffd00f).rw(this, FUNC(mpu4vid_state::vidcharacteriser_r), FUNC(mpu4vid_state::vidcharacteriser_w)).umask16(0x00ff); +} -ADDRESS_MAP_START(mpu4vid_state::mpu4oki_68k_map) - AM_RANGE(0x000000, 0x5fffff) AM_ROM //AM_WRITENOP - AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */ +void mpu4vid_state::mpu4oki_68k_map(address_map &map) +{ + map(0x000000, 0x5fffff).rom(); //AM_WRITENOP + map(0x600000, 0x63ffff).ram(); /* The Mating Game has an extra 256kB RAM on the program card */ // AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */ - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") - AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff) - AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff) - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) - AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") - AM_RANGE(0xff8000, 0xff8003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff) - AM_RANGE(0xff9000, 0xff900f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff) - AM_RANGE(0xffa040, 0xffa04f) AM_DEVREAD8("ptm_ic3ss", ptm6840_device, read,0x00ff) // 6840PTM on sampled sound board - AM_RANGE(0xffa040, 0xffa04f) AM_WRITE8(ic3ss_w,0x00ff) // 6840PTM on sampled sound board - AM_RANGE(0xffa060, 0xffa067) AM_DEVREADWRITE8("pia_ic4ss", pia6821_device, read, write,0x00ff) // PIA6821 on sampled sound board - AM_RANGE(0xffd000, 0xffd00f) AM_READWRITE8(vidcharacteriser_r, vidcharacteriser_w, 0x00ff) + map(0x800000, 0x80ffff).ram().share("vid_mainram"); + map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)); + map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)); + map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff); + map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram"); + map(0xff8000, 0xff8003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0xff9000, 0xff900f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0xffa040, 0xffa04f).r("ptm_ic3ss", FUNC(ptm6840_device::read)).umask16(0x00ff); // 6840PTM on sampled sound board + map(0xffa040, 0xffa04f).w(this, FUNC(mpu4vid_state::ic3ss_w)).umask16(0x00ff); // 6840PTM on sampled sound board + map(0xffa060, 0xffa067).rw("pia_ic4ss", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff); // PIA6821 on sampled sound board + map(0xffd000, 0xffd00f).rw(this, FUNC(mpu4vid_state::vidcharacteriser_r), FUNC(mpu4vid_state::vidcharacteriser_w)).umask16(0x00ff); // AM_RANGE(0xfff000, 0xffffff) AM_NOP /* Possible bug, reads and writes here */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(mpu4vid_state::bwbvid_68k_map) - AM_RANGE(0x000000, 0x7fffff) AM_ROM - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") - AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ - AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff) - AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff) +void mpu4vid_state::bwbvid_68k_map(address_map &map) +{ + map(0x000000, 0x7fffff).rom(); + map(0x800000, 0x80ffff).ram().share("vid_mainram"); + map(0x810000, 0x81ffff).ram(); /* ? */ + map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)); + map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)); // AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) - AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") - AM_RANGE(0xe00000, 0xe00003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff) - AM_RANGE(0xe01000, 0xe0100f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff) + map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff); + map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram"); + map(0xe00000, 0xe00003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0xe01000, 0xe0100f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); //AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(bwb_characteriser16_r, bwb_characteriser16_w)//AM_READWRITE(adpcm_r, adpcm_w) CHR ? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(mpu4vid_state::bwbvid5_68k_map) - AM_RANGE(0x000000, 0x7fffff) AM_ROM - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") - AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ - AM_RANGE(0x900000, 0x900003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("ef9369", ef9369_device, data_r, data_w, 0x00ff) - AM_RANGE(0xa00002, 0xa00003) AM_DEVWRITE8("ef9369", ef9369_device, address_w, 0x00ff) +void mpu4vid_state::bwbvid5_68k_map(address_map &map) +{ + map(0x000000, 0x7fffff).rom(); + map(0x800000, 0x80ffff).ram().share("vid_mainram"); + map(0x810000, 0x81ffff).ram(); /* ? */ + map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)); + map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)); //AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, read, write,0x00ff) - AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w) AM_SHARE("vid_vidram") - AM_RANGE(0xe00000, 0xe00003) AM_DEVREADWRITE8("acia6850_1", acia6850_device, read, write, 0x00ff) - AM_RANGE(0xe01000, 0xe0100f) AM_DEVREADWRITE8("6840ptm_68k", ptm6840_device, read, write, 0x00ff) - AM_RANGE(0xe02000, 0xe02007) AM_DEVREADWRITE8("pia_ic4ss", pia6821_device, read, write, 0xff00) //Seems odd... - AM_RANGE(0xe03000, 0xe0300f) AM_DEVREAD8("ptm_ic3ss", ptm6840_device, read,0xff00) // 6840PTM on sampled sound board - AM_RANGE(0xe03000, 0xe0300f) AM_WRITE8(ic3ss_w,0xff00) // 6840PTM on sampled sound board - AM_RANGE(0xe04000, 0xe0400f) AM_READWRITE8(bwb_characteriser_r, bwb_characteriser_w, 0x00ff)//AM_READWRITE(adpcm_r, adpcm_w) CHR ? -ADDRESS_MAP_END + map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff); + map(0xc00000, 0xc1ffff).rw(this, FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram"); + map(0xe00000, 0xe00003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0xe01000, 0xe0100f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); + map(0xe02000, 0xe02007).rw("pia_ic4ss", FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0xff00); //Seems odd... + map(0xe03000, 0xe0300f).r("ptm_ic3ss", FUNC(ptm6840_device::read)).umask16(0xff00); // 6840PTM on sampled sound board + map(0xe03000, 0xe0300f).w(this, FUNC(mpu4vid_state::ic3ss_w)).umask16(0xff00); // 6840PTM on sampled sound board + map(0xe04000, 0xe0400f).rw(this, FUNC(mpu4vid_state::bwb_characteriser_r), FUNC(mpu4vid_state::bwb_characteriser_w)).umask16(0x00ff);//AM_READWRITE(adpcm_r, adpcm_w) CHR ? +} /* TODO: Fix up MPU4 map*/ ADDRESS_MAP_START(mpu4_state::mpu4_6809_map) diff --git a/src/mame/drivers/mpu5.cpp b/src/mame/drivers/mpu5.cpp index 6d92559866a..aa218e3125b 100644 --- a/src/mame/drivers/mpu5.cpp +++ b/src/mame/drivers/mpu5.cpp @@ -530,9 +530,10 @@ WRITE32_MEMBER(mpu5_state::mpu5_mem_w) } -ADDRESS_MAP_START(mpu5_state::mpu5_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(mpu5_mem_r, mpu5_mem_w) -ADDRESS_MAP_END +void mpu5_state::mpu5_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(mpu5_state::mpu5_mem_r), FUNC(mpu5_state::mpu5_mem_w)); +} INPUT_PORTS_START( mpu5 ) INPUT_PORTS_END diff --git a/src/mame/drivers/mpz80.cpp b/src/mame/drivers/mpz80.cpp index 338eec746c0..84d192bb28d 100644 --- a/src/mame/drivers/mpz80.cpp +++ b/src/mame/drivers/mpz80.cpp @@ -532,8 +532,9 @@ WRITE8_MEMBER( mpz80_state::disp_col_w ) // ADDRESS_MAP( mpz80_mem ) //------------------------------------------------- -ADDRESS_MAP_START(mpz80_state::mpz80_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mmu_r, mmu_w) +void mpz80_state::mpz80_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(mpz80_state::mmu_r), FUNC(mpz80_state::mmu_w)); /* Task 0 Segment 0 map: @@ -546,15 +547,16 @@ ADDRESS_MAP_START(mpz80_state::mpz80_mem) AM_RANGE(0x0800, 0x0bff) AM_ROM AM_REGION(Z80_TAG, 0) AM_RANGE(0x0c00, 0x0c00) AM_DEVREADWRITE(AM9512_TAG, am9512_device, read, write) */ -ADDRESS_MAP_END +} //------------------------------------------------- // ADDRESS_MAP( mpz80_io ) //------------------------------------------------- -ADDRESS_MAP_START(mpz80_state::mpz80_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mmu_io_r, mmu_io_w) -ADDRESS_MAP_END +void mpz80_state::mpz80_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(mpz80_state::mmu_io_r), FUNC(mpz80_state::mmu_io_w)); +} diff --git a/src/mame/drivers/mquake.cpp b/src/mame/drivers/mquake.cpp index 6fa024175fc..c02b5147190 100644 --- a/src/mame/drivers/mquake.cpp +++ b/src/mame/drivers/mquake.cpp @@ -84,9 +84,10 @@ READ8_MEMBER( mquake_state::es5503_sample_r ) return m_es5503_rom[offset + (m_es5503->get_channel_strobe() * 0x10000)]; } -ADDRESS_MAP_START(mquake_state::mquake_es5503_map) - AM_RANGE(0x000000, 0x1ffff) AM_READ(es5503_sample_r) -ADDRESS_MAP_END +void mquake_state::mquake_es5503_map(address_map &map) +{ + map(0x000000, 0x1ffff).r(this, FUNC(mquake_state::es5503_sample_r)); +} WRITE16_MEMBER( mquake_state::output_w ) { @@ -122,36 +123,39 @@ WRITE16_MEMBER( mquake_state::coin_chip_w ) * *************************************/ -ADDRESS_MAP_START(mquake_state::overlay_512kb_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mquake_state::a500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mquake_state::main_map) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x204000, 0x2041ff) AM_DEVREADWRITE8("es5503", es5503_device, read, write, 0x00ff) - AM_RANGE(0x282000, 0x282001) AM_READ_PORT("SW.LO") - AM_RANGE(0x282002, 0x282003) AM_READ_PORT("SW.HI") - AM_RANGE(0x284000, 0x28400f) AM_WRITE(output_w) - AM_RANGE(0x286000, 0x28600f) AM_READWRITE(coin_chip_r, coin_chip_w) - AM_RANGE(0x300000, 0x3bffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0xf00000, 0xfbffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */ -ADDRESS_MAP_END +void mquake_state::overlay_512kb_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram"); + map(0x200000, 0x27ffff).rom().region("kickstart", 0); +} + +void mquake_state::a500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(mquake_state::cia_r), FUNC(mquake_state::cia_w)); + map(0xc00000, 0xd7ffff).rw(this, FUNC(mquake_state::custom_chip_r), FUNC(mquake_state::custom_chip_w)); + map(0xd80000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(mquake_state::custom_chip_r), FUNC(mquake_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(mquake_state::custom_chip_r), FUNC(mquake_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(mquake_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} + +void mquake_state::main_map(address_map &map) +{ + a500_mem(map); + map(0x200000, 0x203fff).ram().share("nvram"); + map(0x204000, 0x2041ff).rw(m_es5503, FUNC(es5503_device::read), FUNC(es5503_device::write)).umask16(0x00ff); + map(0x282000, 0x282001).portr("SW.LO"); + map(0x282002, 0x282003).portr("SW.HI"); + map(0x284000, 0x28400f).w(this, FUNC(mquake_state::output_w)); + map(0x286000, 0x28600f).rw(this, FUNC(mquake_state::coin_chip_r), FUNC(mquake_state::coin_chip_w)); + map(0x300000, 0x3bffff).rom().region("user2", 0); + map(0xf00000, 0xfbffff).rom().region("user2", 0); /* Custom ROM */ +} diff --git a/src/mame/drivers/mrdo.cpp b/src/mame/drivers/mrdo.cpp index b0e6126eb4f..e27d3fcf50d 100644 --- a/src/mame/drivers/mrdo.cpp +++ b/src/mame/drivers/mrdo.cpp @@ -46,23 +46,24 @@ READ8_MEMBER(mrdo_state::mrdo_SECRE_r) -ADDRESS_MAP_START(mrdo_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(mrdo_bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(mrdo_fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x9000, 0x90ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x9800, 0x9800) AM_WRITE(mrdo_flipscreen_w) /* screen flip + playfield priority */ - AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("u8106_1", u8106_device, write) - AM_RANGE(0x9802, 0x9802) AM_DEVWRITE("u8106_2", u8106_device, write) - AM_RANGE(0x9803, 0x9803) AM_READ(mrdo_SECRE_r) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("DSW1") - AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf7ff) AM_WRITE(mrdo_scrollx_w) - AM_RANGE(0xf800, 0xffff) AM_WRITE(mrdo_scrolly_w) -ADDRESS_MAP_END +void mrdo_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(mrdo_state::mrdo_bgvideoram_w)).share("bgvideoram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(mrdo_state::mrdo_fgvideoram_w)).share("fgvideoram"); + map(0x9000, 0x90ff).writeonly().share("spriteram"); + map(0x9800, 0x9800).w(this, FUNC(mrdo_state::mrdo_flipscreen_w)); /* screen flip + playfield priority */ + map(0x9801, 0x9801).w("u8106_1", FUNC(u8106_device::write)); + map(0x9802, 0x9802).w("u8106_2", FUNC(u8106_device::write)); + map(0x9803, 0x9803).r(this, FUNC(mrdo_state::mrdo_SECRE_r)); + map(0xa000, 0xa000).portr("P1"); + map(0xa001, 0xa001).portr("P2"); + map(0xa002, 0xa002).portr("DSW1"); + map(0xa003, 0xa003).portr("DSW2"); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xf7ff).w(this, FUNC(mrdo_state::mrdo_scrollx_w)); + map(0xf800, 0xffff).w(this, FUNC(mrdo_state::mrdo_scrolly_w)); +} static INPUT_PORTS_START( mrdo ) diff --git a/src/mame/drivers/mrflea.cpp b/src/mame/drivers/mrflea.cpp index 3db1ab4b01a..ce0bcb7a30a 100644 --- a/src/mame/drivers/mrflea.cpp +++ b/src/mame/drivers/mrflea.cpp @@ -97,43 +97,47 @@ WRITE8_MEMBER(mrflea_state::mrflea_data1_w) * *************************************/ -ADDRESS_MAP_START(mrflea_state::mrflea_master_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(mrflea_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xe83f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xec00, 0xecff) AM_RAM_WRITE(mrflea_spriteram_w) AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrflea_state::mrflea_master_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog? */ - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("mainppi", i8255_device, read, write) - AM_RANGE(0x60, 0x60) AM_WRITE(mrflea_gfx_bank_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mrflea_state::mrflea_slave_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x80ff) AM_RAM - AM_RANGE(0x9000, 0x905a) AM_RAM /* ? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrflea_state::mrflea_slave_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */ - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("pic", pic8259_device, read, write) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("subppi", i8255_device, read, write) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x41, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x42, 0x42) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0x43, 0x43) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x44, 0x44) AM_DEVREADWRITE("ay3", ay8910_device, data_r, data_w) - AM_RANGE(0x45, 0x45) AM_DEVWRITE("ay3", ay8910_device, address_w) - AM_RANGE(0x46, 0x46) AM_DEVREADWRITE("ay4", ay8910_device, data_r, data_w) - AM_RANGE(0x47, 0x47) AM_DEVWRITE("ay4", ay8910_device, address_w) -ADDRESS_MAP_END +void mrflea_state::mrflea_master_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe7ff).ram().w(this, FUNC(mrflea_state::mrflea_videoram_w)).share("videoram"); + map(0xe800, 0xe83f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xec00, 0xecff).ram().w(this, FUNC(mrflea_state::mrflea_spriteram_w)).share("spriteram"); +} + +void mrflea_state::mrflea_master_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); /* watchdog? */ + map(0x40, 0x43).rw("mainppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x60, 0x60).w(this, FUNC(mrflea_state::mrflea_gfx_bank_w)); +} + + +void mrflea_state::mrflea_slave_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x3fff).rom(); + map(0x8000, 0x80ff).ram(); + map(0x9000, 0x905a).ram(); /* ? */ +} + +void mrflea_state::mrflea_slave_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); /* watchdog */ + map(0x10, 0x11).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x20, 0x23).rw("subppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x40).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x41, 0x41).w("ay1", FUNC(ay8910_device::address_w)); + map(0x42, 0x42).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x43, 0x43).w("ay2", FUNC(ay8910_device::address_w)); + map(0x44, 0x44).rw("ay3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x45, 0x45).w("ay3", FUNC(ay8910_device::address_w)); + map(0x46, 0x46).rw("ay4", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x47, 0x47).w("ay4", FUNC(ay8910_device::address_w)); +} /************************************* * diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp index f542791498f..36afdd317a9 100644 --- a/src/mame/drivers/mrgame.cpp +++ b/src/mame/drivers/mrgame.cpp @@ -116,55 +116,61 @@ private: }; -ADDRESS_MAP_START(mrgame_state::main_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x020000, 0x02ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x030000, 0x030001) AM_READ8(rsw_r, 0xff) //RSW ACK - AM_RANGE(0x030002, 0x030003) AM_WRITE8(sound_w, 0xff) //W SOUND - AM_RANGE(0x030004, 0x030005) AM_WRITE8(video_w, 0xff00) //W VID - AM_RANGE(0x030006, 0x030007) AM_WRITE8(triple_w, 0xff) //W CS - AM_RANGE(0x030008, 0x030009) AM_WRITENOP //W DATA - lamp/sol data - AM_RANGE(0x03000a, 0x03000b) AM_WRITE8(row_w, 0xff) //W ROW - AM_RANGE(0x03000c, 0x03000d) AM_READ8(col_r, 0xff) //R COL - AM_RANGE(0x03000e, 0x03000f) AM_WRITENOP //EXT ADD - lamp/sol data -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrgame_state::video_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("video", 0) - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("objectram") - AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(video_ctrl_w) - AM_RANGE(0x7000, 0x77ff) AM_READNOP //AFR - looks like a watchdog - AM_RANGE(0x8100, 0x8103) AM_MIRROR(0x7efc) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrgame_state::audio1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audio1", 0) - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrgame_state::audio1_io) - ADDRESS_MAP_GLOBAL_MASK(3) - AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("dacvol", dac_byte_interface, write) //DA1 - AM_RANGE(0x0001, 0x0001) AM_READ(sound_r) //IN1 - AM_RANGE(0x0002, 0x0002) AM_WRITE(ack1_w) //AKL1 - AM_RANGE(0x0003, 0x0003) AM_WRITENOP //SGS pass data to M114 -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrgame_state::audio2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audio2", 0) - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrgame_state::audio2_io) - ADDRESS_MAP_GLOBAL_MASK(7) - AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("ldac", dac_byte_interface, write) //DA2 - AM_RANGE(0x0001, 0x0001) AM_READ(sound_r) //IN2 - AM_RANGE(0x0002, 0x0002) AM_WRITE(ack2_w) //AKL2 - AM_RANGE(0x0003, 0x0003) AM_DEVREADWRITE("tms", tms5220_device, status_r, data_w) //Speech - AM_RANGE(0x0004, 0x0004) AM_DEVWRITE("rdac", dac_byte_interface, write) //DA3 -ADDRESS_MAP_END +void mrgame_state::main_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom().region("roms", 0); + map(0x020000, 0x02ffff).ram().share("nvram"); + map(0x030001, 0x030001).r(this, FUNC(mrgame_state::rsw_r)); //RSW ACK + map(0x030003, 0x030003).w(this, FUNC(mrgame_state::sound_w)); //W SOUND + map(0x030004, 0x030004).w(this, FUNC(mrgame_state::video_w)); //W VID + map(0x030007, 0x030007).w(this, FUNC(mrgame_state::triple_w)); //W CS + map(0x030008, 0x030009).nopw(); //W DATA - lamp/sol data + map(0x03000b, 0x03000b).w(this, FUNC(mrgame_state::row_w)); //W ROW + map(0x03000d, 0x03000d).r(this, FUNC(mrgame_state::col_r)); //R COL + map(0x03000e, 0x03000f).nopw(); //EXT ADD - lamp/sol data +} + +void mrgame_state::video_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("video", 0); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).mirror(0x0400).ram().share("videoram"); + map(0x5000, 0x50ff).mirror(0x0700).ram().share("objectram"); + map(0x6800, 0x6807).mirror(0x07f8).w(this, FUNC(mrgame_state::video_ctrl_w)); + map(0x7000, 0x77ff).nopr(); //AFR - looks like a watchdog + map(0x8100, 0x8103).mirror(0x7efc).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void mrgame_state::audio1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("audio1", 0); + map(0xfc00, 0xffff).ram(); +} + +void mrgame_state::audio1_io(address_map &map) +{ + map.global_mask(3); + map(0x0000, 0x0000).w("dacvol", FUNC(dac_byte_interface::write)); //DA1 + map(0x0001, 0x0001).r(this, FUNC(mrgame_state::sound_r)); //IN1 + map(0x0002, 0x0002).w(this, FUNC(mrgame_state::ack1_w)); //AKL1 + map(0x0003, 0x0003).nopw(); //SGS pass data to M114 +} + +void mrgame_state::audio2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("audio2", 0); + map(0xfc00, 0xffff).ram(); +} + +void mrgame_state::audio2_io(address_map &map) +{ + map.global_mask(7); + map(0x0000, 0x0000).w("ldac", FUNC(dac_byte_interface::write)); //DA2 + map(0x0001, 0x0001).r(this, FUNC(mrgame_state::sound_r)); //IN2 + map(0x0002, 0x0002).w(this, FUNC(mrgame_state::ack2_w)); //AKL2 + map(0x0003, 0x0003).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w)); //Speech + map(0x0004, 0x0004).w("rdac", FUNC(dac_byte_interface::write)); //DA3 +} static INPUT_PORTS_START( mrgame ) PORT_START("DSW0") diff --git a/src/mame/drivers/mrjong.cpp b/src/mame/drivers/mrjong.cpp index 35aa3d84bcc..44a48ab3a96 100644 --- a/src/mame/drivers/mrjong.cpp +++ b/src/mame/drivers/mrjong.cpp @@ -72,21 +72,23 @@ READ8_MEMBER(mrjong_state::io_0x03_r) * *************************************/ -ADDRESS_MAP_START(mrjong_state::mrjong_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(mrjong_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(mrjong_colorram_w) AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mrjong_state::mrjong_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P2") AM_WRITE(mrjong_flipscreen_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW") AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x03, 0x03) AM_READ(io_0x03_r) // Unknown -ADDRESS_MAP_END +void mrjong_state::mrjong_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa7ff).ram(); + map(0xe000, 0xe3ff).ram().w(this, FUNC(mrjong_state::mrjong_videoram_w)).share("videoram"); + map(0xe400, 0xe7ff).ram().w(this, FUNC(mrjong_state::mrjong_colorram_w)).share("colorram"); +} + +void mrjong_state::mrjong_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P2").w(this, FUNC(mrjong_state::mrjong_flipscreen_w)); + map(0x01, 0x01).portr("P1").w("sn1", FUNC(sn76489_device::write)); + map(0x02, 0x02).portr("DSW").w("sn2", FUNC(sn76489_device::write)); + map(0x03, 0x03).r(this, FUNC(mrjong_state::io_0x03_r)); // Unknown +} /************************************* * diff --git a/src/mame/drivers/ms0515.cpp b/src/mame/drivers/ms0515.cpp index 1f319dd539b..1af747dd64d 100644 --- a/src/mame/drivers/ms0515.cpp +++ b/src/mame/drivers/ms0515.cpp @@ -128,48 +128,49 @@ private: floppy_image_device *m_floppy; }; -ADDRESS_MAP_START(ms0515_state::ms0515_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0000000, 0017777) AM_RAMBANK("bank0") // RAM - AM_RANGE(0020000, 0037777) AM_RAMBANK("bank1") // RAM - AM_RANGE(0040000, 0057777) AM_RAMBANK("bank2") // RAM - AM_RANGE(0060000, 0077777) AM_RAMBANK("bank3") // RAM - AM_RANGE(0100000, 0117777) AM_RAMBANK("bank4") // RAM - AM_RANGE(0120000, 0137777) AM_RAMBANK("bank5") // RAM - AM_RANGE(0140000, 0157777) AM_RAMBANK("bank6") // RAM - - AM_RANGE(0160000, 0177377) AM_ROM AM_WRITENOP - - AM_RANGE(0177400, 0177437) AM_WRITE(ms0515_bank_w) // Register for RAM expansion - - AM_RANGE(0177440, 0177441) AM_DEVREAD8("i8251kbd", i8251_device, data_r, 0x00ff) - AM_RANGE(0177442, 0177443) AM_DEVREADWRITE8("i8251kbd", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0177460, 0177461) AM_DEVWRITE8("i8251kbd", i8251_device, data_w, 0x00ff) - AM_RANGE(0177462, 0177463) AM_DEVWRITE8("i8251kbd", i8251_device, control_w, 0x00ff) - - AM_RANGE(0177500, 0177507) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) - AM_RANGE(0177520, 0177527) AM_DEVWRITE8("pit8253", pit8253_device, write, 0x00ff) - - AM_RANGE(0177540, 0177547) AM_NOP -// AM_RANGE(0177540, 0177541) -// AM_RANGE(0177542, 0177543) -// AM_RANGE(0177544, 0177545) // i8255 for MS-7007 Keyboard -// AM_RANGE(0177546, 0177547) - - AM_RANGE(0177600, 0177607) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff) - - AM_RANGE(0177640, 0177641) AM_DEVREADWRITE8("vg93", kr1818vg93_device, status_r, cmd_w, 0x00ff) - AM_RANGE(0177642, 0177643) AM_DEVREADWRITE8("vg93", kr1818vg93_device, track_r, track_w, 0x00ff) - AM_RANGE(0177644, 0177645) AM_DEVREADWRITE8("vg93", kr1818vg93_device, sector_r, sector_w, 0x00ff) - AM_RANGE(0177646, 0177647) AM_DEVREADWRITE8("vg93", kr1818vg93_device, data_r, data_w, 0x00ff) - - AM_RANGE(0177700, 0177701) AM_DEVREAD8("i8251line", i8251_device, data_r, 0x00ff) - AM_RANGE(0177702, 0177703) AM_DEVREADWRITE8("i8251line", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0177720, 0177721) AM_DEVWRITE8("i8251line", i8251_device, data_w, 0x00ff) - AM_RANGE(0177722, 0177723) AM_DEVWRITE8("i8251line", i8251_device, control_w, 0x00ff) - - AM_RANGE(0177770, 0177771) AM_READWRITE(ms0515_halt_r, ms0515_halt_w) // read/write -- halt and system timer -ADDRESS_MAP_END +void ms0515_state::ms0515_mem(address_map &map) +{ + map.unmap_value_high(); + map(0000000, 0017777).bankrw("bank0"); // RAM + map(0020000, 0037777).bankrw("bank1"); // RAM + map(0040000, 0057777).bankrw("bank2"); // RAM + map(0060000, 0077777).bankrw("bank3"); // RAM + map(0100000, 0117777).bankrw("bank4"); // RAM + map(0120000, 0137777).bankrw("bank5"); // RAM + map(0140000, 0157777).bankrw("bank6"); // RAM + + map(0160000, 0177377).rom().nopw(); + + map(0177400, 0177437).w(this, FUNC(ms0515_state::ms0515_bank_w)); // Register for RAM expansion + + map(0176720, 0176720).r(m_i8251kbd, FUNC(i8251_device::data_r)); + map(0176722, 0176722).rw(m_i8251kbd, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0177460, 0177460).w(m_i8251kbd, FUNC(i8251_device::data_w)); + map(0177462, 0177462).w(m_i8251kbd, FUNC(i8251_device::control_w)); + + map(0177500, 0177507).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0177520, 0177527).w(m_pit8253, FUNC(pit8253_device::write)).umask16(0x00ff); + + map(0177540, 0177547).noprw(); +// map(0177540, 0177541) +// map(0177542, 0177543) +// map(0177544, 0177545) // i8255 for MS-7007 Keyboard +// map(0177546, 0177547) + + map(0177600, 0177607).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + + map(0177640, 0177640).rw(m_fdc, FUNC(kr1818vg93_device::status_r), FUNC(kr1818vg93_device::cmd_w)); + map(0177642, 0177642).rw(m_fdc, FUNC(kr1818vg93_device::track_r), FUNC(kr1818vg93_device::track_w)); + map(0177644, 0177644).rw(m_fdc, FUNC(kr1818vg93_device::sector_r), FUNC(kr1818vg93_device::sector_w)); + map(0177646, 0177646).rw(m_fdc, FUNC(kr1818vg93_device::data_r), FUNC(kr1818vg93_device::data_w)); + + map(0177700, 0177700).r(m_i8251line, FUNC(i8251_device::data_r)); + map(0177702, 0177702).rw(m_i8251line, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0177704, 0177704).w(m_i8251line, FUNC(i8251_device::data_w)); + map(0177706, 0177706).w(m_i8251line, FUNC(i8251_device::control_w)); + + map(0177770, 0177771).rw(this, FUNC(ms0515_state::ms0515_halt_r), FUNC(ms0515_state::ms0515_halt_w)); // read/write -- halt and system timer +} /* * (page 15-16) diff --git a/src/mame/drivers/ms32.cpp b/src/mame/drivers/ms32.cpp index 511eefae406..9536808b3d9 100644 --- a/src/mame/drivers/ms32.cpp +++ b/src/mame/drivers/ms32.cpp @@ -644,45 +644,46 @@ WRITE32_MEMBER(ms32_state::coin_counter_w) machine().bookkeeping().coin_counter_w(1, data & 0x20); } -ADDRESS_MAP_START(ms32_state::ms32_map) +void ms32_state::ms32_map(address_map &map) +{ /* RAM areas verified by testing on real hw - usually accessed at the 0xfc000000 + mirror */ - AM_RANGE(0xc0000000, 0xc0007fff) AM_READWRITE8(ms32_nvram_r8, ms32_nvram_w8, 0x000000ff) AM_MIRROR(0x3c1f8000) // nvram is 8-bit wide, 0x2000 in size */ + map(0xc0000000, 0xc0007fff).rw(this, FUNC(ms32_state::ms32_nvram_r8), FUNC(ms32_state::ms32_nvram_w8)).umask32(0x000000ff).mirror(0x3c1f8000); // nvram is 8-bit wide, 0x2000 in size */ /* AM_RANGE(0xc0008000, 0xc01fffff) // mirrors of nvramram, handled above */ - AM_RANGE(0xc1180000, 0xc1187fff) AM_READWRITE8(ms32_priram_r8, ms32_priram_w8, 0x000000ff) AM_MIRROR(0x3c038000) AM_SHARE("priram") /* priram is 8-bit wide, 0x2000 in size */ + map(0xc1180000, 0xc1187fff).rw(this, FUNC(ms32_state::ms32_priram_r8), FUNC(ms32_state::ms32_priram_w8)).umask32(0x000000ff).mirror(0x3c038000).share("priram"); /* priram is 8-bit wide, 0x2000 in size */ /* AM_RANGE(0xc1188000, 0xc11bffff) // mirrors of priram, handled above */ - AM_RANGE(0xc1400000, 0xc143ffff) AM_READWRITE16(ms32_palram_r16, ms32_palram_w16, 0x0000ffff) AM_MIRROR(0x3c1c0000) AM_SHARE("palram") /* palram is 16-bit wide, 0x20000 in size */ + map(0xc1400000, 0xc143ffff).rw(this, FUNC(ms32_state::ms32_palram_r16), FUNC(ms32_state::ms32_palram_w16)).umask32(0x0000ffff).mirror(0x3c1c0000).share("palram"); /* palram is 16-bit wide, 0x20000 in size */ /* AM_RANGE(0xc1440000, 0xc145ffff) // mirrors of palram, handled above */ - AM_RANGE(0xc2000000, 0xc201ffff) AM_READWRITE16(ms32_rozram_r16, ms32_rozram_w16, 0x0000ffff) AM_MIRROR(0x3c1e0000) AM_SHARE("rozram") /* rozram is 16-bit wide, 0x10000 in size */ + map(0xc2000000, 0xc201ffff).rw(this, FUNC(ms32_state::ms32_rozram_r16), FUNC(ms32_state::ms32_rozram_w16)).umask32(0x0000ffff).mirror(0x3c1e0000).share("rozram"); /* rozram is 16-bit wide, 0x10000 in size */ /* AM_RANGE(0xc2020000, 0xc21fffff) // mirrors of rozram, handled above */ - AM_RANGE(0xc2200000, 0xc2201fff) AM_READWRITE16(ms32_lineram_r16,ms32_lineram_w16,0x0000ffff) AM_MIRROR(0x3c1fe000) AM_SHARE("lineram") /* lineram is 16-bit wide, 0x1000 in size */ + map(0xc2200000, 0xc2201fff).rw(this, FUNC(ms32_state::ms32_lineram_r16), FUNC(ms32_state::ms32_lineram_w16)).umask32(0x0000ffff).mirror(0x3c1fe000).share("lineram"); /* lineram is 16-bit wide, 0x1000 in size */ /* AM_RANGE(0xc2202000, 0xc23fffff) // mirrors of lineram, handled above */ - AM_RANGE(0xc2800000, 0xc283ffff) AM_READWRITE16(ms32_sprram_r16, ms32_sprram_w16, 0x0000ffff) AM_MIRROR(0x3c1c0000) AM_SHARE("sprram") /* spriteram is 16-bit wide, 0x20000 in size */ + map(0xc2800000, 0xc283ffff).rw(this, FUNC(ms32_state::ms32_sprram_r16), FUNC(ms32_state::ms32_sprram_w16)).umask32(0x0000ffff).mirror(0x3c1c0000).share("sprram"); /* spriteram is 16-bit wide, 0x20000 in size */ /* AM_RANGE(0xc2840000, 0xc29fffff) // mirrors of sprram, handled above */ - AM_RANGE(0xc2c00000, 0xc2c07fff) AM_READWRITE16(ms32_txram_r16, ms32_txram_w16, 0x0000ffff) AM_MIRROR(0x3c1f0000) AM_SHARE("txram") /* txram is 16-bit wide, 0x4000 in size */ - AM_RANGE(0xc2c08000, 0xc2c0ffff) AM_READWRITE16(ms32_bgram_r16, ms32_bgram_w16, 0x0000ffff) AM_MIRROR(0x3c1f0000) AM_SHARE("bgram") /* bgram is 16-bit wide, 0x4000 in size */ + map(0xc2c00000, 0xc2c07fff).rw(this, FUNC(ms32_state::ms32_txram_r16), FUNC(ms32_state::ms32_txram_w16)).umask32(0x0000ffff).mirror(0x3c1f0000).share("txram"); /* txram is 16-bit wide, 0x4000 in size */ + map(0xc2c08000, 0xc2c0ffff).rw(this, FUNC(ms32_state::ms32_bgram_r16), FUNC(ms32_state::ms32_bgram_w16)).umask32(0x0000ffff).mirror(0x3c1f0000).share("bgram"); /* bgram is 16-bit wide, 0x4000 in size */ /* AM_RANGE(0xc2c10000, 0xc2dfffff) // mirrors of txram / bg, handled above */ - AM_RANGE(0xc2e00000, 0xc2e1ffff) AM_RAM AM_SHARE("mainram") AM_MIRROR(0x3c0e0000) /* mainram is 32-bit wide, 0x20000 in size */ - AM_RANGE(0xc3e00000, 0xc3ffffff) AM_ROM AM_REGION("maincpu", 0) AM_MIRROR(0x3c000000) // ROM is 32-bit wide, 0x200000 in size */ + map(0xc2e00000, 0xc2e1ffff).ram().share("mainram").mirror(0x3c0e0000); /* mainram is 32-bit wide, 0x20000 in size */ + map(0xc3e00000, 0xc3ffffff).rom().region("maincpu", 0).mirror(0x3c000000); // ROM is 32-bit wide, 0x200000 in size */ /* todo: clean up the mapping of these */ - AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP /* sound? */ - AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) /* sound? */ - AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("INPUTS") - AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW") - AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP // irq ack? - AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w) - AM_RANGE(0xfce00050, 0xfce0005f) AM_WRITENOP // watchdog? I haven't investigated + map(0xfc800000, 0xfc800003).nopr(); /* sound? */ + map(0xfc800000, 0xfc800003).w(this, FUNC(ms32_state::ms32_sound_w)); /* sound? */ + map(0xfcc00004, 0xfcc00007).portr("INPUTS"); + map(0xfcc00010, 0xfcc00013).portr("DSW"); + map(0xfce00034, 0xfce00037).nopw(); // irq ack? + map(0xfce00038, 0xfce0003b).w(this, FUNC(ms32_state::reset_sub_w)); + map(0xfce00050, 0xfce0005f).nopw(); // watchdog? I haven't investigated // AM_RANGE(0xfce00000, 0xfce0007f) AM_WRITEONLY AM_SHARE("ms32_fce00000") /* registers not ram? */ - AM_RANGE(0xfce00000, 0xfce00003) AM_WRITE(ms32_gfxctrl_w) /* flip screen + other unknown bits */ - AM_RANGE(0xfce00280, 0xfce0028f) AM_WRITE(ms32_brightness_w) // global brightness control -/**/AM_RANGE(0xfce00600, 0xfce0065f) AM_RAM AM_SHARE("roz_ctrl") /* roz control registers */ -/**/AM_RANGE(0xfce00a00, 0xfce00a17) AM_RAM AM_SHARE("tx_scroll") /* tx layer scroll */ -/**/AM_RANGE(0xfce00a20, 0xfce00a37) AM_RAM AM_SHARE("bg_scroll") /* bg layer scroll */ - AM_RANGE(0xfce00a7c, 0xfce00a7f) AM_WRITE(pip_w) // ??? layer related? seems to be always 0 - AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(coin_counter_w) // coin counters + something else - AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r) - AM_RANGE(0xfd1c0000, 0xfd1c0003) AM_WRITEONLY AM_SHARE("mahjong_select") -ADDRESS_MAP_END + map(0xfce00000, 0xfce00003).w(this, FUNC(ms32_state::ms32_gfxctrl_w)); /* flip screen + other unknown bits */ + map(0xfce00280, 0xfce0028f).w(this, FUNC(ms32_state::ms32_brightness_w)); // global brightness control +/**/map(0xfce00600, 0xfce0065f).ram().share("roz_ctrl"); /* roz control registers */ +/**/map(0xfce00a00, 0xfce00a17).ram().share("tx_scroll"); /* tx layer scroll */ +/**/map(0xfce00a20, 0xfce00a37).ram().share("bg_scroll"); /* bg layer scroll */ + map(0xfce00a7c, 0xfce00a7f).w(this, FUNC(ms32_state::pip_w)); // ??? layer related? seems to be always 0 + map(0xfce00e00, 0xfce00e03).w(this, FUNC(ms32_state::coin_counter_w)); // coin counters + something else + map(0xfd000000, 0xfd000003).r(this, FUNC(ms32_state::ms32_sound_r)); + map(0xfd1c0000, 0xfd1c0003).writeonly().share("mahjong_select"); +} /* F1 Super Battle has an extra linemap for the road, and am unknown maths chip (mcu?) handling perspective calculations for the road / corners etc. */ @@ -709,30 +710,31 @@ WRITE32_MEMBER(ms32_state::ms32_irq5_guess_w) irq_raise(5); } -ADDRESS_MAP_START(ms32_state::f1superb_map) - AM_IMPORT_FROM(ms32_map) +void ms32_state::f1superb_map(address_map &map) +{ + ms32_map(map); - AM_RANGE(0xfd0d0000, 0xfd0d0003) AM_READ_PORT("DSW2") // MB-93159 - AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) AM_WRITENOP // writes 7-led seg at very least + map(0xfd0d0000, 0xfd0d0003).portr("DSW2"); // MB-93159 + map(0xfd0e0000, 0xfd0e0003).r(this, FUNC(ms32_state::ms32_read_inputs3)).nopw(); // writes 7-led seg at very least - AM_RANGE(0xfce00004, 0xfce00023) AM_RAM // regs? - AM_RANGE(0xfce00200, 0xfce0021f) AM_RAM // regs? - AM_RANGE(0xfce00800, 0xfce0085f) AM_RAM // regs? + map(0xfce00004, 0xfce00023).ram(); // regs? + map(0xfce00200, 0xfce0021f).ram(); // regs? + map(0xfce00800, 0xfce0085f).ram(); // regs? /* these two are almost certainly wrong, they just let you see what happens if you generate the FPU ints without breaking other games */ - AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(ms32_irq5_guess_w) - AM_RANGE(0xfd0f0000, 0xfd0f0003) AM_WRITE(ms32_irq2_guess_w) + map(0xfce00e00, 0xfce00e03).w(this, FUNC(ms32_state::ms32_irq5_guess_w)); + map(0xfd0f0000, 0xfd0f0003).w(this, FUNC(ms32_state::ms32_irq2_guess_w)); - AM_RANGE(0xfd100000, 0xfd103fff) AM_RAM // used when you start enabling fpu ints - AM_RANGE(0xfd104000, 0xfd105fff) AM_RAM // uploads data here + map(0xfd100000, 0xfd103fff).ram(); // used when you start enabling fpu ints + map(0xfd104000, 0xfd105fff).ram(); // uploads data here - AM_RANGE(0xfd140000, 0xfd143fff) AM_RAM // used when you start enabling fpu ints - AM_RANGE(0xfd144000, 0xfd145fff) AM_RAM // same data here + map(0xfd140000, 0xfd143fff).ram(); // used when you start enabling fpu ints + map(0xfd144000, 0xfd145fff).ram(); // same data here - AM_RANGE(0xfdc00000, 0xfdc1ffff) AM_READWRITE16(ms32_extra_r16, ms32_extra_w16, 0x0000ffff) AM_SHARE("f1sb_extraram") // definitely line ram - AM_RANGE(0xfde00000, 0xfde1ffff) AM_RAM // scroll info for lineram? -ADDRESS_MAP_END + map(0xfdc00000, 0xfdc1ffff).rw(this, FUNC(ms32_state::ms32_extra_r16), FUNC(ms32_state::ms32_extra_w16)).umask32(0x0000ffff).share("f1sb_extraram"); // definitely line ram + map(0xfde00000, 0xfde1ffff).ram(); // scroll info for lineram? +} /* F1 Super Battle speculation from nuapete @@ -1670,19 +1672,20 @@ WRITE8_MEMBER(ms32_state::to_main_w) irq_raise(1); } -ADDRESS_MAP_START(ms32_state::ms32_sound_map) - AM_RANGE(0x0000, 0x3eff) AM_ROM - AM_RANGE(0x3f00, 0x3f0f) AM_DEVREADWRITE("ymf", ymf271_device, read, write) - AM_RANGE(0x3f10, 0x3f10) AM_READWRITE(latch_r,to_main_w) - AM_RANGE(0x3f20, 0x3f20) AM_READNOP /* 2nd latch ? */ - AM_RANGE(0x3f20, 0x3f20) AM_WRITENOP /* to_main2_w ? */ - AM_RANGE(0x3f40, 0x3f40) AM_WRITENOP /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */ - AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP // watchdog? banking? very noisy - AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w) - AM_RANGE(0x4000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank1") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("z80bank2") -ADDRESS_MAP_END +void ms32_state::ms32_sound_map(address_map &map) +{ + map(0x0000, 0x3eff).rom(); + map(0x3f00, 0x3f0f).rw("ymf", FUNC(ymf271_device::read), FUNC(ymf271_device::write)); + map(0x3f10, 0x3f10).rw(this, FUNC(ms32_state::latch_r), FUNC(ms32_state::to_main_w)); + map(0x3f20, 0x3f20).nopr(); /* 2nd latch ? */ + map(0x3f20, 0x3f20).nopw(); /* to_main2_w ? */ + map(0x3f40, 0x3f40).nopw(); /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */ + map(0x3f70, 0x3f70).nopw(); // watchdog? banking? very noisy + map(0x3f80, 0x3f80).w(this, FUNC(ms32_state::ms32_snd_bank_w)); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0xbfff).bankr("z80bank1"); + map(0xc000, 0xffff).bankr("z80bank2"); +} /********** MACHINE INIT **********/ diff --git a/src/mame/drivers/ms6102.cpp b/src/mame/drivers/ms6102.cpp index b0decb61fb5..233ea0c31b0 100644 --- a/src/mame/drivers/ms6102.cpp +++ b/src/mame/drivers/ms6102.cpp @@ -121,26 +121,28 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(ms6102_state::ms6102_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x0000, 0x2fff) AM_ROM - AM_RANGE (0x3800, 0x3bff) AM_RAM AM_SHARE("nvram") - AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ms6102_state::ms6102_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x00, 0x00) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) - AM_RANGE (0x01, 0x01) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) - AM_RANGE (0x10, 0x18) AM_DEVREADWRITE("dma8257", i8257_device, read, write) - AM_RANGE (0x20, 0x23) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) +void ms6102_state::ms6102_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x2fff).rom(); + map(0x3800, 0x3bff).ram().share("nvram"); + map(0xc000, 0xffff).ram().share("videoram"); +} + +void ms6102_state::ms6102_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x00).rw(m_i8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw(m_i8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x10, 0x18).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0x20, 0x23).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); //AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE("589wa1", ay31015_device, receive, transmit) - AM_RANGE (0x30, 0x3f) AM_READ(kbd_get) - AM_RANGE (0x40, 0x41) AM_READWRITE(crtc_r, crtc_w) - AM_RANGE (0x50, 0x5f) AM_NOP // video disable? - AM_RANGE (0x60, 0x6f) AM_WRITE(pic_w) - AM_RANGE (0x70, 0x7f) AM_READ(misc_r) -ADDRESS_MAP_END + map(0x30, 0x3f).r(this, FUNC(ms6102_state::kbd_get)); + map(0x40, 0x41).rw(this, FUNC(ms6102_state::crtc_r), FUNC(ms6102_state::crtc_w)); + map(0x50, 0x5f).noprw(); // video disable? + map(0x60, 0x6f).w(this, FUNC(ms6102_state::pic_w)); + map(0x70, 0x7f).r(this, FUNC(ms6102_state::misc_r)); +} static const gfx_layout ms6102_charlayout = { diff --git a/src/mame/drivers/ms9540.cpp b/src/mame/drivers/ms9540.cpp index ff67aa63f08..65041dd56b5 100644 --- a/src/mame/drivers/ms9540.cpp +++ b/src/mame/drivers/ms9540.cpp @@ -51,13 +51,14 @@ private: }; -ADDRESS_MAP_START(ms9540_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x010000, 0x013fff) AM_ROM AM_REGION("9540", 0) - AM_RANGE(0x018000, 0x018fff) AM_RAM -ADDRESS_MAP_END +void ms9540_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xffffff); + map(0x000000, 0x00ffff).ram().share("rambase"); + map(0x010000, 0x013fff).rom().region("9540", 0); + map(0x018000, 0x018fff).ram(); +} /* Input ports */ diff --git a/src/mame/drivers/msbc1.cpp b/src/mame/drivers/msbc1.cpp index 6aad51082d7..4377e9c13d8 100644 --- a/src/mame/drivers/msbc1.cpp +++ b/src/mame/drivers/msbc1.cpp @@ -72,11 +72,12 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(msbc1_state::msbc1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_RAM - AM_RANGE(0xf80000, 0xf87fff) AM_ROM AM_REGION(MC68000R12_TAG, 0) -ADDRESS_MAP_END +void msbc1_state::msbc1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).ram(); + map(0xf80000, 0xf87fff).rom().region(MC68000R12_TAG, 0); +} /* Input ports */ static INPUT_PORTS_START( msbc1 ) diff --git a/src/mame/drivers/msisaac.cpp b/src/mame/drivers/msisaac.cpp index d82da48efc8..2529f7a44c5 100644 --- a/src/mame/drivers/msisaac.cpp +++ b/src/mame/drivers/msisaac.cpp @@ -174,44 +174,45 @@ WRITE8_MEMBER(msisaac_state::msisaac_mcu_w) #endif } -ADDRESS_MAP_START(msisaac_state::msisaac_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf000, 0xf000) AM_WRITE(msisaac_bg2_textbank_w) - AM_RANGE(0xf001, 0xf001) AM_WRITENOP //??? - AM_RANGE(0xf002, 0xf002) AM_WRITENOP //??? - - AM_RANGE(0xf060, 0xf060) AM_WRITE(sound_command_w) //sound command - AM_RANGE(0xf061, 0xf061) AM_WRITENOP /*sound_reset*/ //???? - - AM_RANGE(0xf0a3, 0xf0a3) AM_WRITE(ms_unknown_w) //???? written in interrupt routine - - AM_RANGE(0xf0c0, 0xf0c0) AM_WRITE(msisaac_fg_scrollx_w) - AM_RANGE(0xf0c1, 0xf0c1) AM_WRITE(msisaac_fg_scrolly_w) - AM_RANGE(0xf0c2, 0xf0c2) AM_WRITE(msisaac_bg2_scrollx_w) - AM_RANGE(0xf0c3, 0xf0c3) AM_WRITE(msisaac_bg2_scrolly_w) - AM_RANGE(0xf0c4, 0xf0c4) AM_WRITE(msisaac_bg_scrollx_w) - AM_RANGE(0xf0c5, 0xf0c5) AM_WRITE(msisaac_bg_scrolly_w) - - AM_RANGE(0xf0e0, 0xf0e0) AM_READWRITE(msisaac_mcu_r, msisaac_mcu_w) - AM_RANGE(0xf0e1, 0xf0e1) AM_READ(msisaac_mcu_status_r) - - AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1") - AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2") - AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3") - AM_RANGE(0xf083, 0xf083) AM_READ_PORT("IN0") - AM_RANGE(0xf084, 0xf084) AM_READ_PORT("IN1") +void msisaac_state::msisaac_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf000).w(this, FUNC(msisaac_state::msisaac_bg2_textbank_w)); + map(0xf001, 0xf001).nopw(); //??? + map(0xf002, 0xf002).nopw(); //??? + + map(0xf060, 0xf060).w(this, FUNC(msisaac_state::sound_command_w)); //sound command + map(0xf061, 0xf061).nopw(); /*sound_reset*/ //???? + + map(0xf0a3, 0xf0a3).w(this, FUNC(msisaac_state::ms_unknown_w)); //???? written in interrupt routine + + map(0xf0c0, 0xf0c0).w(this, FUNC(msisaac_state::msisaac_fg_scrollx_w)); + map(0xf0c1, 0xf0c1).w(this, FUNC(msisaac_state::msisaac_fg_scrolly_w)); + map(0xf0c2, 0xf0c2).w(this, FUNC(msisaac_state::msisaac_bg2_scrollx_w)); + map(0xf0c3, 0xf0c3).w(this, FUNC(msisaac_state::msisaac_bg2_scrolly_w)); + map(0xf0c4, 0xf0c4).w(this, FUNC(msisaac_state::msisaac_bg_scrollx_w)); + map(0xf0c5, 0xf0c5).w(this, FUNC(msisaac_state::msisaac_bg_scrolly_w)); + + map(0xf0e0, 0xf0e0).rw(this, FUNC(msisaac_state::msisaac_mcu_r), FUNC(msisaac_state::msisaac_mcu_w)); + map(0xf0e1, 0xf0e1).r(this, FUNC(msisaac_state::msisaac_mcu_status_r)); + + map(0xf080, 0xf080).portr("DSW1"); + map(0xf081, 0xf081).portr("DSW2"); + map(0xf082, 0xf082).portr("DSW3"); + map(0xf083, 0xf083).portr("IN0"); + map(0xf084, 0xf084).portr("IN1"); // AM_RANGE(0xf086, 0xf086) AM_READ_PORT("IN2") - AM_RANGE(0xf100, 0xf17f) AM_RAM AM_SHARE("spriteram") //sprites - AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(msisaac_fg_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(msisaac_bg2_videoram_w) AM_SHARE("videoram3") - AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(msisaac_bg_videoram_w) AM_SHARE("videoram2") + map(0xf100, 0xf17f).ram().share("spriteram"); //sprites + map(0xf400, 0xf7ff).ram().w(this, FUNC(msisaac_state::msisaac_fg_videoram_w)).share("videoram"); + map(0xf800, 0xfbff).ram().w(this, FUNC(msisaac_state::msisaac_bg2_videoram_w)).share("videoram3"); + map(0xfc00, 0xffff).ram().w(this, FUNC(msisaac_state::msisaac_bg_videoram_w)).share("videoram2"); // AM_RANGE(0xf801, 0xf801) AM_WRITE(msisaac_bgcolor_w) // AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w) // AM_RANGE(0xfc03, 0xfc04) AM_WRITE(msisaac_coin_counter_w) -ADDRESS_MAP_END +} WRITE8_MEMBER(msisaac_state::sound_control_0_w) { @@ -240,20 +241,21 @@ WRITE8_MEMBER(msisaac_state::sound_control_1_w) //popmessage("SND1 0=%2x 1=%2x", m_snd_ctrl0, m_snd_ctrl1); } -ADDRESS_MAP_START(msisaac_state::msisaac_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8010, 0x801d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0x8020, 0x8020) AM_WRITE(sound_control_0_w) - AM_RANGE(0x8030, 0x8030) AM_WRITE(sound_control_1_w) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc001, 0xc001) AM_WRITE(nmi_enable_w) - AM_RANGE(0xc002, 0xc002) AM_WRITE(nmi_disable_w) - AM_RANGE(0xc003, 0xc003) AM_WRITENOP /*???*/ /* this is NOT mixer_enable */ - AM_RANGE(0xe000, 0xffff) AM_READNOP /*space for diagnostic ROM (not dumped, not reachable) */ -ADDRESS_MAP_END +void msisaac_state::msisaac_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8010, 0x801d).w(m_msm, FUNC(msm5232_device::write)); + map(0x8020, 0x8020).w(this, FUNC(msisaac_state::sound_control_0_w)); + map(0x8030, 0x8030).w(this, FUNC(msisaac_state::sound_control_1_w)); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc001, 0xc001).w(this, FUNC(msisaac_state::nmi_enable_w)); + map(0xc002, 0xc002).w(this, FUNC(msisaac_state::nmi_disable_w)); + map(0xc003, 0xc003).nopw(); /*???*/ /* this is NOT mixer_enable */ + map(0xe000, 0xffff).nopr(); /*space for diagnostic ROM (not dumped, not reachable) */ +} static INPUT_PORTS_START( msisaac ) PORT_START("DSW1") diff --git a/src/mame/drivers/mstation.cpp b/src/mame/drivers/mstation.cpp index f2a1cce7b98..bab0cac33ce 100644 --- a/src/mame/drivers/mstation.cpp +++ b/src/mame/drivers/mstation.cpp @@ -256,33 +256,36 @@ READ8_MEMBER( mstation_state::kb_r ) } -ADDRESS_MAP_START(mstation_state::mstation_banked_map) - AM_RANGE(0x0000000, 0x00fffff) AM_MIRROR(0x0300000) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write) - AM_RANGE(0x0400000, 0x041ffff) AM_MIRROR(0x03e0000) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0c00000, 0x0c7ffff) AM_MIRROR(0x0380000) AM_DEVREADWRITE("flash1", intelfsh8_device, read, write) - AM_RANGE(0x0800000, 0x0803fff) AM_MIRROR(0x03fc000) AM_READWRITE(lcd_left_r, lcd_left_w) - AM_RANGE(0x1000000, 0x1003fff) AM_MIRROR(0x03fc000) AM_READWRITE(lcd_right_r, lcd_right_w) - AM_RANGE(0x1400000, 0x1403fff) AM_MIRROR(0x03fc000) AM_READWRITE(modem_r, modem_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mstation_state::mstation_mem) - AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("flash0", intelfsh8_device, read, write) - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("bank0", address_map_bank_device, read8, write8) - AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8) - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("sysram") // system ram always first RAM bank -ADDRESS_MAP_END - -ADDRESS_MAP_START(mstation_state::mstation_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_READWRITE(kb_r, kb_w) - AM_RANGE( 0x02, 0x02 ) AM_WRITE(port2_w) - AM_RANGE( 0x03, 0x03 ) AM_READWRITE(irq_r, irq_w) - AM_RANGE( 0x05, 0x06 ) AM_READWRITE(bank1_r, bank1_w) - AM_RANGE( 0x07, 0x08 ) AM_READWRITE(bank2_r, bank2_w) - AM_RANGE( 0x09, 0x09 ) AM_READ(battery_status_r) - AM_RANGE( 0x10, 0x1f ) AM_DEVREADWRITE("rtc", rp5c01_device, read, write) +void mstation_state::mstation_banked_map(address_map &map) +{ + map(0x0000000, 0x00fffff).mirror(0x0300000).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0400000, 0x041ffff).mirror(0x03e0000).ram().share("nvram"); + map(0x0c00000, 0x0c7ffff).mirror(0x0380000).rw("flash1", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0800000, 0x0803fff).mirror(0x03fc000).rw(this, FUNC(mstation_state::lcd_left_r), FUNC(mstation_state::lcd_left_w)); + map(0x1000000, 0x1003fff).mirror(0x03fc000).rw(this, FUNC(mstation_state::lcd_right_r), FUNC(mstation_state::lcd_right_w)); + map(0x1400000, 0x1403fff).mirror(0x03fc000).rw(this, FUNC(mstation_state::modem_r), FUNC(mstation_state::modem_w)); +} + +void mstation_state::mstation_mem(address_map &map) +{ + map(0x0000, 0x3fff).rw("flash0", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x4000, 0x7fff).rw(m_bankdev1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x8000, 0xbfff).rw(m_bankdev2, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xffff).bankrw("sysram"); // system ram always first RAM bank +} + +void mstation_state::mstation_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).rw(this, FUNC(mstation_state::kb_r), FUNC(mstation_state::kb_w)); + map(0x02, 0x02).w(this, FUNC(mstation_state::port2_w)); + map(0x03, 0x03).rw(this, FUNC(mstation_state::irq_r), FUNC(mstation_state::irq_w)); + map(0x05, 0x06).rw(this, FUNC(mstation_state::bank1_r), FUNC(mstation_state::bank1_w)); + map(0x07, 0x08).rw(this, FUNC(mstation_state::bank2_r), FUNC(mstation_state::bank2_w)); + map(0x09, 0x09).r(this, FUNC(mstation_state::battery_status_r)); + map(0x10, 0x1f).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)); //AM_RANGE( 0x2c, 0x2c ) printer -ADDRESS_MAP_END +} /* Input ports */ diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp index d80065b6c66..714d81a04be 100644 --- a/src/mame/drivers/msx.cpp +++ b/src/mame/drivers/msx.cpp @@ -539,10 +539,11 @@ PCB Layouts missing #include "speaker.h" -ADDRESS_MAP_START(msx_state::msx_memory_map) - AM_RANGE(0x0000, 0xfffe) AM_READWRITE(msx_mem_read, msx_mem_write) - AM_RANGE(0xffff, 0xffff) AM_READWRITE(msx_sec_slot_r, msx_sec_slot_w) -ADDRESS_MAP_END +void msx_state::msx_memory_map(address_map &map) +{ + map(0x0000, 0xfffe).rw(this, FUNC(msx_state::msx_mem_read), FUNC(msx_state::msx_mem_write)); + map(0xffff, 0xffff).rw(this, FUNC(msx_state::msx_sec_slot_r), FUNC(msx_state::msx_sec_slot_w)); +} WRITE8_MEMBER(msx_state::msx_ay8910_w) @@ -554,56 +555,59 @@ WRITE8_MEMBER(msx_state::msx_ay8910_w) } -ADDRESS_MAP_START(msx_state::msx_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void msx_state::msx_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system - AM_RANGE( 0x90, 0x90) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE( 0x90, 0x90) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write) - AM_RANGE( 0x91, 0x91) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE( 0xa0, 0xa7) AM_DEVREAD("ay8910", ay8910_device, data_r) AM_WRITE(msx_ay8910_w) - AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0x98, 0x98) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE( 0x99, 0x99) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE( 0xd8, 0xd9) AM_READWRITE(msx_kanji_r, msx_kanji_w) + map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write)); + map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write)); + map(0xa0, 0xa7).r(m_ay8910, FUNC(ay8910_device::data_r)).w(this, FUNC(msx_state::msx_ay8910_w)); + map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x98, 0x98).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x99, 0x99).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0xd8, 0xd9).rw(this, FUNC(msx_state::msx_kanji_r), FUNC(msx_state::msx_kanji_w)); // 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system -ADDRESS_MAP_END +} -ADDRESS_MAP_START(msx_state::msx2_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x40, 0x4f) AM_READWRITE(msx_switched_r, msx_switched_w) +void msx_state::msx2_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x40, 0x4f).rw(this, FUNC(msx_state::msx_switched_r), FUNC(msx_state::msx_switched_w)); // 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system - AM_RANGE( 0x90, 0x90) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE( 0x90, 0x90) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write) - AM_RANGE( 0x91, 0x91) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE( 0xa0, 0xa7) AM_DEVREAD("ay8910", ay8910_device, data_r) AM_WRITE(msx_ay8910_w) - AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE( 0xb4, 0xb4) AM_WRITE(msx_rtc_latch_w) - AM_RANGE( 0xb5, 0xb5) AM_READWRITE(msx_rtc_reg_r, msx_rtc_reg_w) - AM_RANGE( 0xd8, 0xd9) AM_READWRITE(msx_kanji_r, msx_kanji_w) + map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write)); + map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write)); + map(0xa0, 0xa7).r(m_ay8910, FUNC(ay8910_device::data_r)).w(this, FUNC(msx_state::msx_ay8910_w)); + map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0xb4, 0xb4).w(this, FUNC(msx_state::msx_rtc_latch_w)); + map(0xb5, 0xb5).rw(this, FUNC(msx_state::msx_rtc_reg_r), FUNC(msx_state::msx_rtc_reg_w)); + map(0xd8, 0xd9).rw(this, FUNC(msx_state::msx_kanji_r), FUNC(msx_state::msx_kanji_w)); // 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system -ADDRESS_MAP_END +} -ADDRESS_MAP_START(msx_state::msx2p_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x40, 0x4f) AM_READWRITE(msx_switched_r, msx_switched_w) +void msx_state::msx2p_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x40, 0x4f).rw(this, FUNC(msx_state::msx_switched_r), FUNC(msx_state::msx_switched_w)); // 0x7c - 0x7d : MSX-MUSIC/FM-PAC write port. Handlers will be installed if MSX-MUSIC is present in a system - AM_RANGE( 0x90, 0x90) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE( 0x90, 0x90) AM_DEVWRITE("cent_ctrl_out", output_latch_device, write) - AM_RANGE( 0x91, 0x91) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE( 0xa0, 0xa7) AM_DEVREAD("ay8910", ay8910_device, data_r) AM_WRITE(msx_ay8910_w) - AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9958", v9958_device, read, write) - AM_RANGE( 0xb4, 0xb4) AM_WRITE(msx_rtc_latch_w) - AM_RANGE( 0xb5, 0xb5) AM_READWRITE(msx_rtc_reg_r, msx_rtc_reg_w) - AM_RANGE( 0xd8, 0xd9) AM_READWRITE(msx_kanji_r, msx_kanji_w) + map(0x90, 0x90).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0x90, 0x90).w("cent_ctrl_out", FUNC(output_latch_device::write)); + map(0x91, 0x91).w("cent_data_out", FUNC(output_latch_device::write)); + map(0xa0, 0xa7).r(m_ay8910, FUNC(ay8910_device::data_r)).w(this, FUNC(msx_state::msx_ay8910_w)); + map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x98, 0x9b).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write)); + map(0xb4, 0xb4).w(this, FUNC(msx_state::msx_rtc_latch_w)); + map(0xb5, 0xb5).rw(this, FUNC(msx_state::msx_rtc_reg_r), FUNC(msx_state::msx_rtc_reg_w)); + map(0xd8, 0xd9).rw(this, FUNC(msx_state::msx_kanji_r), FUNC(msx_state::msx_kanji_w)); // 0xfc - 0xff : Memory mapper I/O ports. I/O handlers will be installed if a memory mapper is present in a system -ADDRESS_MAP_END +} static INPUT_PORTS_START( msx_dips ) diff --git a/src/mame/drivers/mt735.cpp b/src/mame/drivers/mt735.cpp index 40c972026f2..cb095958c25 100644 --- a/src/mame/drivers/mt735.cpp +++ b/src/mame/drivers/mt735.cpp @@ -50,13 +50,14 @@ READ8_MEMBER(mt735_state::p5_r) return 0x00; } -ADDRESS_MAP_START(mt735_state::mt735_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x278000, 0x287fff) AM_RAM - AM_RANGE(0x400000, 0x4fffff) AM_RAM - AM_RANGE(0xff8004, 0xff8005) AM_READ8(p4_r, 0xff00) - AM_RANGE(0xff8004, 0xff8005) AM_READ8(p5_r, 0x00ff) -ADDRESS_MAP_END +void mt735_state::mt735_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("maincpu", 0); + map(0x278000, 0x287fff).ram(); + map(0x400000, 0x4fffff).ram(); + map(0xff8004, 0xff8004).r(this, FUNC(mt735_state::p4_r)); + map(0xff8005, 0xff8005).r(this, FUNC(mt735_state::p5_r)); +} static INPUT_PORTS_START( mt735 ) INPUT_PORTS_END diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp index ae158d3e808..a2f180e0ff9 100644 --- a/src/mame/drivers/mtouchxl.cpp +++ b/src/mame/drivers/mtouchxl.cpp @@ -104,44 +104,47 @@ WRITE8_MEMBER(mtxl_state::key_w) m_multikey->write_dq((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); } -ADDRESS_MAP_START(mtxl_state::at32_map) - ADDRESS_MAP_UNMAP_HIGH +void mtxl_state::at32_map(address_map &map) +{ + map.unmap_value_high(); #ifndef REAL_PCI_CHIPSET - AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") - AM_RANGE(0x000c8000, 0x000cffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x000d0000, 0x000dffff) AM_DEVICE("dbank", address_map_bank_device, amap32) - AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) + map(0x00000000, 0x0009ffff).bankrw("bank10"); + map(0x000c8000, 0x000cffff).ram().share("nvram"); + map(0x000d0000, 0x000dffff).m(m_iocard, FUNC(address_map_bank_device::amap32)); + map(0x000e0000, 0x000fffff).rom().region("bios", 0); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); #endif -ADDRESS_MAP_END +} -ADDRESS_MAP_START(mtxl_state::at32_io) - ADDRESS_MAP_UNMAP_HIGH +void mtxl_state::at32_io(address_map &map) +{ + map.unmap_value_high(); #ifndef REAL_PCI_CHIPSET - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("mb:dma8237_1", am9517a_device, read, write, 0xffffffff) - AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("mb:pic8259_master", pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("mb:pit8254", pit8254_device, read, write, 0xffffffff) - AM_RANGE(0x0060, 0x0067) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffffffff) - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("mb", at_mb_device, portb_r, portb_w, 0x0000ff00) - AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("mb:rtc", mc146818_device, read, write, 0xffffffff) - AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("mb", at_mb_device, page8_r, page8_w, 0xffffffff) - AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("mb:pic8259_slave", pic8259_device, read, write, 0xffffffff) - AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("mb:dma8237_2", am9517a_device, read, write, 0x00ff00ff) - AM_RANGE(0x0224, 0x0227) AM_DEVREADWRITE8("cs4231", ad1848_device, read, write, 0xffffffff) + map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x0020, 0x003f).rw("mb:pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0040, 0x005f).rw("mb:pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write)); + map(0x0060, 0x0067).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w)); + map(0x0061, 0x0061).rw("mb", FUNC(at_mb_device::portb_r), FUNC(at_mb_device::portb_w)); + map(0x0070, 0x007f).rw("mb:rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)); + map(0x0080, 0x009f).rw("mb", FUNC(at_mb_device::page8_r), FUNC(at_mb_device::page8_w)); + map(0x00a0, 0x00bf).rw("mb:pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x00c0, 0x00df).rw("mb:dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0x00ff00ff); + map(0x0224, 0x0227).rw("cs4231", FUNC(ad1848_device::read), FUNC(ad1848_device::write)); #endif - AM_RANGE(0x0228, 0x022b) AM_READ_PORT("Unknown") - AM_RANGE(0x022c, 0x022f) AM_WRITE8(bank_w, 0xff000000) - AM_RANGE(0x022c, 0x022f) AM_READWRITE8(key_r, key_w, 0x0000ff00) - AM_RANGE(0x022c, 0x022f) AM_READ8(coin_r, 0x000000ff) + map(0x0228, 0x022b).portr("Unknown"); + map(0x022f, 0x022f).w(this, FUNC(mtxl_state::bank_w)); + map(0x022d, 0x022d).rw(this, FUNC(mtxl_state::key_r), FUNC(mtxl_state::key_w)); + map(0x022c, 0x022c).r(this, FUNC(mtxl_state::coin_r)); #ifndef REAL_PCI_CHIPSET - AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16550", ns16550_device, ins8250_r, ins8250_w, 0xffffffff) + map(0x03f8, 0x03ff).rw("ns16550", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); #endif -ADDRESS_MAP_END +} -ADDRESS_MAP_START(mtxl_state::dbank_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("ioboard", 0) - AM_RANGE(0x100000, 0x17ffff) AM_DEVREADWRITE8("flash", intelfsh8_device, read, write, 0xffffffff) -ADDRESS_MAP_END +void mtxl_state::dbank_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().region("ioboard", 0); + map(0x100000, 0x17ffff).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); +} static INPUT_PORTS_START(mtouchxl) PORT_START("Coin") diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp index ee0235a7feb..720d01cbd70 100644 --- a/src/mame/drivers/mtx.cpp +++ b/src/mame/drivers/mtx.cpp @@ -46,28 +46,30 @@ ADDRESS_MAP( mtx_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(mtx_state::mtx_mem) -ADDRESS_MAP_END +void mtx_state::mtx_mem(address_map &map) +{ +} /*------------------------------------------------- ADDRESS_MAP( mtx_io ) -------------------------------------------------*/ -ADDRESS_MAP_START(mtx_state::mtx_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(mtx_strobe_r, mtx_bankswitch_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("tms9929a", tms9929a_device, vram_read, vram_write) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("tms9929a", tms9929a_device, register_read, register_write) - AM_RANGE(0x03, 0x03) AM_READWRITE(mtx_sound_strobe_r, mtx_cst_w) - AM_RANGE(0x04, 0x04) AM_READ(mtx_prt_r) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x05, 0x05) AM_READWRITE(mtx_key_lo_r, mtx_sense_w) - AM_RANGE(0x06, 0x06) AM_READWRITE(mtx_key_hi_r, mtx_sound_latch_w) +void mtx_state::mtx_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(mtx_state::mtx_strobe_r), FUNC(mtx_state::mtx_bankswitch_w)); + map(0x01, 0x01).rw("tms9929a", FUNC(tms9929a_device::vram_read), FUNC(tms9929a_device::vram_write)); + map(0x02, 0x02).rw("tms9929a", FUNC(tms9929a_device::register_read), FUNC(tms9929a_device::register_write)); + map(0x03, 0x03).rw(this, FUNC(mtx_state::mtx_sound_strobe_r), FUNC(mtx_state::mtx_cst_w)); + map(0x04, 0x04).r(this, FUNC(mtx_state::mtx_prt_r)).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x05, 0x05).rw(this, FUNC(mtx_state::mtx_key_lo_r), FUNC(mtx_state::mtx_sense_w)); + map(0x06, 0x06).rw(this, FUNC(mtx_state::mtx_key_hi_r), FUNC(mtx_state::mtx_sound_latch_w)); // AM_RANGE(0x07, 0x07) PIO - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x1f, 0x1f) AM_WRITE(mtx_cst_motor_w) - AM_RANGE(0x30, 0x31) AM_WRITE(hrx_address_w) - AM_RANGE(0x32, 0x32) AM_READWRITE(hrx_data_r, hrx_data_w) - AM_RANGE(0x33, 0x33) AM_READWRITE(hrx_attr_r, hrx_attr_w) + map(0x08, 0x0b).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x1f, 0x1f).w(this, FUNC(mtx_state::mtx_cst_motor_w)); + map(0x30, 0x31).w(this, FUNC(mtx_state::hrx_address_w)); + map(0x32, 0x32).rw(this, FUNC(mtx_state::hrx_data_r), FUNC(mtx_state::hrx_data_w)); + map(0x33, 0x33).rw(this, FUNC(mtx_state::hrx_attr_r), FUNC(mtx_state::hrx_attr_w)); // AM_RANGE(0x38, 0x38) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) // AM_RANGE(0x39, 0x39) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_r, register_w) /* AM_RANGE(0x40, 0x43) AM_DEVREADWRITE_LEGACY(FD1791_TAG, wd17xx_r, wd17xx_w) @@ -75,16 +77,17 @@ ADDRESS_MAP_START(mtx_state::mtx_io) AM_RANGE(0x45, 0x45) AM_WRITE(fdx_drv_sel_w) AM_RANGE(0x46, 0x46) AM_WRITE(fdx_dma_lo_w) AM_RANGE(0x47, 0x47) AM_WRITE(fdx_dma_hi_w)*/ -ADDRESS_MAP_END +} /*------------------------------------------------- ADDRESS_MAP( rs128_io ) -------------------------------------------------*/ -ADDRESS_MAP_START(mtx_state::rs128_io) - AM_IMPORT_FROM(mtx_io) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, cd_ba_r, cd_ba_w) -ADDRESS_MAP_END +void mtx_state::rs128_io(address_map &map) +{ + mtx_io(map); + map(0x0c, 0x0f).rw(m_z80dart, FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/mugsmash.cpp b/src/mame/drivers/mugsmash.cpp index c595c113474..b8e2f32decd 100644 --- a/src/mame/drivers/mugsmash.cpp +++ b/src/mame/drivers/mugsmash.cpp @@ -175,33 +175,35 @@ READ16_MEMBER(mugsmash_state::mugsmash_input_ports_r) } #endif -ADDRESS_MAP_START(mugsmash_state::mugsmash_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(mugsmash_videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(mugsmash_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(mugsmash_reg_w) AM_SHARE("regs1") /* video registers*/ - AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x140007) AM_WRITE(mugsmash_reg2_w) AM_SHARE("regs2") /* sound + ? */ - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* main ram? */ - AM_RANGE(0x1c4000, 0x1cffff) AM_RAM - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ +void mugsmash_state::mugsmash_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(mugsmash_state::mugsmash_videoram1_w)).share("videoram1"); + map(0x082000, 0x082fff).ram().w(this, FUNC(mugsmash_state::mugsmash_videoram2_w)).share("videoram2"); + map(0x0c0000, 0x0c0007).w(this, FUNC(mugsmash_state::mugsmash_reg_w)).share("regs1"); /* video registers*/ + map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x140007).w(this, FUNC(mugsmash_state::mugsmash_reg2_w)).share("regs2"); /* sound + ? */ + map(0x1c0000, 0x1c3fff).ram(); /* main ram? */ + map(0x1c4000, 0x1cffff).ram(); + map(0x200000, 0x203fff).ram().share("spriteram"); /* sprite ram */ #if USE_FAKE_INPUT_PORTS - AM_RANGE(0x180000, 0x180007) AM_READ(mugsmash_input_ports_r) + map(0x180000, 0x180007).r(this, FUNC(mugsmash_state::mugsmash_input_ports_r)); #else - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2") - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3") + map(0x180000, 0x180001).portr("IN0"); + map(0x180002, 0x180003).portr("IN1"); + map(0x180004, 0x180005).portr("IN2"); + map(0x180006, 0x180007).portr("IN3"); #endif -ADDRESS_MAP_END - -ADDRESS_MAP_START(mugsmash_state::mugsmash_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +} + +void mugsmash_state::mugsmash_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} #define MUGSMASH_PLAYER_INPUT( player, start ) \ diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp index bc66ba38a61..46b3c7b0212 100644 --- a/src/mame/drivers/multfish.cpp +++ b/src/mame/drivers/multfish.cpp @@ -679,12 +679,13 @@ DRIVER_INIT_MEMBER(igrosoft_gamble_state,crzmon2ent) // needs gfx (and palette) descrambles } -ADDRESS_MAP_START(igrosoft_gamble_state::igrosoft_gamble_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITE(igrosoft_gamble_vid_w) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(igrosoft_gamble_timekeeper_r, igrosoft_gamble_timekeeper_w) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(bankedram_r, bankedram_w) -ADDRESS_MAP_END +void igrosoft_gamble_state::igrosoft_gamble_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_vid_w)); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).rw(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_timekeeper_r), FUNC(igrosoft_gamble_state::igrosoft_gamble_timekeeper_w)); + map(0xe000, 0xffff).rw(this, FUNC(igrosoft_gamble_state::bankedram_r), FUNC(igrosoft_gamble_state::bankedram_w)); +} // According to control panel the user buttons are arranged as // Maxbet | Help | Payout | @@ -912,75 +913,77 @@ WRITE8_MEMBER(igrosoft_gamble_state::igrosoft_gamble_dispenable_w) m_disp_enable = data; } -ADDRESS_MAP_START(igrosoft_gamble_state::igrosoft_gamble_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0") - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") - AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2") - AM_RANGE(0x13, 0x13) AM_READ_PORT("IN3") - AM_RANGE(0x14, 0x14) AM_READ_PORT("IN4") - AM_RANGE(0x15, 0x15) AM_READ_PORT("IN5") - AM_RANGE(0x16, 0x16) AM_READ_PORT("IN6") - AM_RANGE(0x17, 0x17) AM_READ_PORT("IN7") +void igrosoft_gamble_state::igrosoft_gamble_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).portr("IN0"); + map(0x11, 0x11).portr("IN1"); + map(0x12, 0x12).portr("IN2"); + map(0x13, 0x13).portr("IN3"); + map(0x14, 0x14).portr("IN4"); + map(0x15, 0x15).portr("IN5"); + map(0x16, 0x16).portr("IN6"); + map(0x17, 0x17).portr("IN7"); /* Write ports not hooked up yet */ - AM_RANGE(0x30, 0x30) AM_WRITE(igrosoft_gamble_lamps1_w) - AM_RANGE(0x31, 0x31) AM_WRITE(igrosoft_gamble_counters_w) + map(0x30, 0x30).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_lamps1_w)); + map(0x31, 0x31).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_counters_w)); // AM_RANGE(0x32, 0x32) AM_WRITE(igrosoft_gamble_port32_w) - AM_RANGE(0x33, 0x33) AM_WRITE(igrosoft_gamble_hopper_w) - AM_RANGE(0x34, 0x34) AM_WRITE(igrosoft_gamble_lamps2_w) - AM_RANGE(0x35, 0x35) AM_WRITE(igrosoft_gamble_lamps3_w) + map(0x33, 0x33).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_hopper_w)); + map(0x34, 0x34).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_lamps2_w)); + map(0x35, 0x35).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_lamps3_w)); // AM_RANGE(0x36, 0x36) AM_WRITE(igrosoft_gamble_port36_w) - AM_RANGE(0x37, 0x37) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x38, 0x38) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x39, 0x39) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x3a, 0x3a) AM_DEVREAD("aysnd", ay8910_device, data_r) - - AM_RANGE(0x60, 0x60) AM_WRITE(igrosoft_gamble_dispenable_w) // display enable mirror for lottery sets - - AM_RANGE(0x90, 0x90) AM_READ(ray_r) - - AM_RANGE(0xa0, 0xa0) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey 2 banking - AM_RANGE(0xa5, 0xa5) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey 2 Ent banking - AM_RANGE(0xb0, 0xb0) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail 2 lottery banking - AM_RANGE(0xb1, 0xb1) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey Ent banking - AM_RANGE(0xb2, 0xb2) AM_WRITE(igrosoft_gamble_bank_w) // Lacky Haunter Ent banking - AM_RANGE(0xb3, 0xb3) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail Ent banking - AM_RANGE(0xb4, 0xb4) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail 2 Ent banking - AM_RANGE(0xb5, 0xb5) AM_WRITE(igrosoft_gamble_bank_w) // Garage Ent banking - AM_RANGE(0xb6, 0xb6) AM_WRITE(igrosoft_gamble_bank_w) // Resident Ent banking - AM_RANGE(0xb7, 0xb7) AM_WRITE(igrosoft_gamble_bank_w) // Rock Climber Ent banking - AM_RANGE(0xb9, 0xb9) AM_WRITE(igrosoft_gamble_bank_w) // Sweet Life 2 Ent banking - AM_RANGE(0xbb, 0xbb) AM_WRITE(igrosoft_gamble_bank_w) // Island 2 Ent banking - AM_RANGE(0xbd, 0xbd) AM_WRITE(igrosoft_gamble_bank_w) // Pirate 2 Ent banking - AM_RANGE(0xbe, 0xbe) AM_WRITE(igrosoft_gamble_bank_w) // Keks Ent banking - AM_RANGE(0xbf, 0xbf) AM_WRITE(igrosoft_gamble_bank_w) // Gnome Ent banking - AM_RANGE(0xc7, 0xc7) AM_WRITE(igrosoft_gamble_bank_w) // Resident lottery banking - AM_RANGE(0xca, 0xca) AM_WRITE(igrosoft_gamble_bank_w) // Gnome lottery banking - AM_RANGE(0xcb, 0xcb) AM_WRITE(igrosoft_gamble_bank_w) // Keks lottery banking - AM_RANGE(0xcc, 0xcc) AM_WRITE(igrosoft_gamble_bank_w) // Sweet Life 2 lottery banking - AM_RANGE(0xcd, 0xcd) AM_WRITE(igrosoft_gamble_bank_w) // Island 2 lottery banking - AM_RANGE(0xce, 0xce) AM_WRITE(igrosoft_gamble_bank_w) // Pirate 2 lottery banking - AM_RANGE(0xd0, 0xd0) AM_WRITE(igrosoft_gamble_bank_w) // rollfr_4 banking - AM_RANGE(0xe1, 0xe1) AM_WRITE(igrosoft_gamble_bank_w) // Island 2 banking - AM_RANGE(0xe5, 0xe5) AM_WRITE(igrosoft_gamble_bank_w) // Gnome banking - AM_RANGE(0xe8, 0xe8) AM_WRITE(igrosoft_gamble_bank_w) // Sweet Life 2 banking - AM_RANGE(0xea, 0xea) AM_WRITE(igrosoft_gamble_bank_w) // Fruit Cocktail 2 banking - AM_RANGE(0xec, 0xec) AM_WRITE(igrosoft_gamble_bank_w) // Crazy Monkey lottery banking - - AM_RANGE(0xf0, 0xf0) AM_WRITE(igrosoft_gamble_bank_w) // Gold Fish banking - AM_RANGE(0xf1, 0xf1) AM_WRITE(igrosoft_gamble_rambank_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE(igrosoft_gamble_f3_w) // from 00->01 at startup, irq enable maybe? - AM_RANGE(0xf4, 0xf4) AM_WRITE(igrosoft_gamble_dispenable_w) // display enable + map(0x37, 0x37).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x38, 0x38).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x39, 0x39).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x3a, 0x3a).r("aysnd", FUNC(ay8910_device::data_r)); + + map(0x60, 0x60).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_dispenable_w)); // display enable mirror for lottery sets + + map(0x90, 0x90).r(this, FUNC(igrosoft_gamble_state::ray_r)); + + map(0xa0, 0xa0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey 2 banking + map(0xa5, 0xa5).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey 2 Ent banking + map(0xb0, 0xb0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail 2 lottery banking + map(0xb1, 0xb1).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey Ent banking + map(0xb2, 0xb2).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Lacky Haunter Ent banking + map(0xb3, 0xb3).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail Ent banking + map(0xb4, 0xb4).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail 2 Ent banking + map(0xb5, 0xb5).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Garage Ent banking + map(0xb6, 0xb6).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Resident Ent banking + map(0xb7, 0xb7).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Rock Climber Ent banking + map(0xb9, 0xb9).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 Ent banking + map(0xbb, 0xbb).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 Ent banking + map(0xbd, 0xbd).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate 2 Ent banking + map(0xbe, 0xbe).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Keks Ent banking + map(0xbf, 0xbf).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome Ent banking + map(0xc7, 0xc7).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Resident lottery banking + map(0xca, 0xca).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome lottery banking + map(0xcb, 0xcb).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Keks lottery banking + map(0xcc, 0xcc).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 lottery banking + map(0xcd, 0xcd).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 lottery banking + map(0xce, 0xce).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Pirate 2 lottery banking + map(0xd0, 0xd0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // rollfr_4 banking + map(0xe1, 0xe1).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Island 2 banking + map(0xe5, 0xe5).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gnome banking + map(0xe8, 0xe8).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Sweet Life 2 banking + map(0xea, 0xea).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Fruit Cocktail 2 banking + map(0xec, 0xec).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Crazy Monkey lottery banking + + map(0xf0, 0xf0).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); // Gold Fish banking + map(0xf1, 0xf1).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_rambank_w)); + map(0xf3, 0xf3).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_f3_w)); // from 00->01 at startup, irq enable maybe? + map(0xf4, 0xf4).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_dispenable_w)); // display enable /* mirrors of the rom banking */ - AM_RANGE(0xf8, 0xfd) AM_WRITE(igrosoft_gamble_bank_w) -ADDRESS_MAP_END + map(0xf8, 0xfd).w(this, FUNC(igrosoft_gamble_state::igrosoft_gamble_bank_w)); +} -ADDRESS_MAP_START(igrosoft_gamble_state::rollfr_portmap) - AM_IMPORT_FROM(igrosoft_gamble_portmap) - AM_RANGE(0x33, 0x33) AM_WRITE(rollfr_hopper_w) -ADDRESS_MAP_END +void igrosoft_gamble_state::rollfr_portmap(address_map &map) +{ + igrosoft_gamble_portmap(map); + map(0x33, 0x33).w(this, FUNC(igrosoft_gamble_state::rollfr_hopper_w)); +} static const gfx_layout tiles16x16_layout = { diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp index f3d796ca709..389e049e76a 100644 --- a/src/mame/drivers/multi16.cpp +++ b/src/mame/drivers/multi16.cpp @@ -92,13 +92,14 @@ uint32_t multi16_state::screen_update_multi16(screen_device &screen, bitmap_ind1 return 0; } -ADDRESS_MAP_START(multi16_state::multi16_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x7ffff) AM_RAM - AM_RANGE(0xd8000,0xdffff) AM_RAM AM_SHARE("p_vram") - AM_RANGE(0xe0000,0xeffff) AM_RAM - AM_RANGE(0xf0000,0xf3fff) AM_MIRROR(0xc000) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END +void multi16_state::multi16_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x7ffff).ram(); + map(0xd8000, 0xdffff).ram().share("p_vram"); + map(0xe0000, 0xeffff).ram(); + map(0xf0000, 0xf3fff).mirror(0xc000).rom().region("ipl", 0); +} WRITE8_MEMBER( multi16_state::multi16_6845_address_w ) { @@ -112,12 +113,13 @@ WRITE8_MEMBER( multi16_state::multi16_6845_data_w ) m_crtc->register_w(space, offset, data); } -ADDRESS_MAP_START(multi16_state::multi16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0xffff) // i8259 - AM_RANGE(0x40, 0x41) AM_WRITE8(multi16_6845_address_w, 0x00ff) - AM_RANGE(0x40, 0x41) AM_WRITE8(multi16_6845_data_w, 0xff00) -ADDRESS_MAP_END +void multi16_state::multi16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x02, 0x03).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); // i8259 + map(0x40, 0x40).w(this, FUNC(multi16_state::multi16_6845_address_w)); + map(0x41, 0x41).w(this, FUNC(multi16_state::multi16_6845_data_w)); +} /* Input ports */ static INPUT_PORTS_START( multi16 ) diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp index fb38fb40031..d32b7ba3634 100644 --- a/src/mame/drivers/multi8.cpp +++ b/src/mame/drivers/multi8.cpp @@ -288,33 +288,35 @@ WRITE8_MEMBER( multi8_state::kanji_w ) m_knj_addr = (offset == 0) ? (m_knj_addr & 0xff00) | (data & 0xff) : (m_knj_addr & 0x00ff) | (data << 8); } -ADDRESS_MAP_START(multi8_state::multi8_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(multi8_state::multi8_io) +void multi8_state::multi8_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).rw(this, FUNC(multi8_state::vram_r), FUNC(multi8_state::vram_w)); + map(0xc000, 0xffff).ram(); +} + +void multi8_state::multi8_io(address_map &map) +{ // ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(key_input_r) //keyboard - AM_RANGE(0x01, 0x01) AM_READ(key_status_r) //keyboard - AM_RANGE(0x18, 0x19) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x18, 0x18) AM_READ(ay8912_0_r) - AM_RANGE(0x1a, 0x1a) AM_READ(ay8912_1_r) - AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x1d, 0x1d) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) //cmt - AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("pit", pit8253_device, read, write) //pit - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x2c, 0x2d) AM_DEVREADWRITE("pic", pic8259_device, read, write) //i8259 - AM_RANGE(0x30, 0x37) AM_READWRITE(pal_r,pal_w) - AM_RANGE(0x40, 0x41) AM_READWRITE(kanji_r, kanji_w) //kanji regs + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(multi8_state::key_input_r)); //keyboard + map(0x01, 0x01).r(this, FUNC(multi8_state::key_status_r)); //keyboard + map(0x18, 0x19).w(m_aysnd, FUNC(ay8910_device::address_data_w)); + map(0x18, 0x18).r(this, FUNC(multi8_state::ay8912_0_r)); + map(0x1a, 0x1a).r(this, FUNC(multi8_state::ay8912_1_r)); + map(0x1c, 0x1c).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x1d, 0x1d).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x20, 0x20).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x21, 0x21).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); //cmt + map(0x24, 0x27).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); //pit + map(0x28, 0x2b).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x2c, 0x2d).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); //i8259 + map(0x30, 0x37).rw(this, FUNC(multi8_state::pal_r), FUNC(multi8_state::pal_w)); + map(0x40, 0x41).rw(this, FUNC(multi8_state::kanji_r), FUNC(multi8_state::kanji_w)); //kanji regs // AM_RANGE(0x70, 0x74) //upd765a fdc // AM_RANGE(0x78, 0x78) //memory banking -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( multi8 ) diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp index fbb7f5cbaeb..e10934b4a3f 100644 --- a/src/mame/drivers/multigam.cpp +++ b/src/mame/drivers/multigam.cpp @@ -402,37 +402,39 @@ WRITE8_MEMBER(multigam_state::multigam_mapper2_w) *******************************************************/ -ADDRESS_MAP_START(multigam_state::multigam_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */ - AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x5000, 0x5ffe) AM_ROM - AM_RANGE(0x5002, 0x5002) AM_WRITENOP - AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x6fff, 0x6fff) AM_WRITE(multigam_switch_prg_rom) - AM_RANGE(0x7fff, 0x7fff) AM_WRITE(multigam_switch_gfx_rom) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(multigam_mapper2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(multigam_state::multigmt_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */ - AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x3000, 0x3000) AM_WRITE(multigam_switch_prg_rom) - AM_RANGE(0x3fff, 0x3fff) AM_WRITE(multigam_switch_gfx_rom) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x5000, 0x5ffe) AM_ROM - AM_RANGE(0x5002, 0x5002) AM_WRITENOP - AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(multigam_mapper2_w) -ADDRESS_MAP_END +void multigam_state::multigam_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* NES RAM */ + map(0x0800, 0x0fff).ram(); /* additional RAM */ + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x5000, 0x5ffe).rom(); + map(0x5002, 0x5002).nopw(); + map(0x5fff, 0x5fff).portr("IN0"); + map(0x6000, 0x7fff).rom(); + map(0x6fff, 0x6fff).w(this, FUNC(multigam_state::multigam_switch_prg_rom)); + map(0x7fff, 0x7fff).w(this, FUNC(multigam_state::multigam_switch_gfx_rom)); + map(0x8000, 0xffff).rom().w(this, FUNC(multigam_state::multigam_mapper2_w)); +} + +void multigam_state::multigmt_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* NES RAM */ + map(0x0800, 0x0fff).ram(); /* additional RAM */ + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x3000, 0x3000).w(this, FUNC(multigam_state::multigam_switch_prg_rom)); + map(0x3fff, 0x3fff).w(this, FUNC(multigam_state::multigam_switch_gfx_rom)); + map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x5000, 0x5ffe).rom(); + map(0x5002, 0x5002).nopw(); + map(0x5fff, 0x5fff).portr("IN0"); + map(0x6000, 0x7fff).rom(); + map(0x8000, 0xffff).rom().w(this, FUNC(multigam_state::multigam_mapper2_w)); +} /****************************************************** @@ -681,22 +683,23 @@ WRITE8_MEMBER(multigam_state::multigm3_switch_prg_rom) *******************************************************/ -ADDRESS_MAP_START(multigam_state::multigm3_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */ - AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x5001, 0x5001) AM_WRITE(multigm3_switch_prg_rom) - AM_RANGE(0x5002, 0x5002) AM_WRITENOP - AM_RANGE(0x5003, 0x5003) AM_WRITE(multigm3_switch_gfx_rom) - AM_RANGE(0x5000, 0x5ffe) AM_ROM - AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank10") - AM_RANGE(0x6fff, 0x6fff) AM_WRITENOP /* 0x00 in attract mode, 0xff during play */ - AM_RANGE(0x8000, 0xffff) AM_ROM AM_WRITE(multigm3_mapper2_w) -ADDRESS_MAP_END +void multigam_state::multigm3_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* NES RAM */ + map(0x0800, 0x0fff).ram(); /* additional RAM */ + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x5001, 0x5001).w(this, FUNC(multigam_state::multigm3_switch_prg_rom)); + map(0x5002, 0x5002).nopw(); + map(0x5003, 0x5003).w(this, FUNC(multigam_state::multigm3_switch_gfx_rom)); + map(0x5000, 0x5ffe).rom(); + map(0x5fff, 0x5fff).portr("IN0"); + map(0x6000, 0x7fff).bankrw("bank10"); + map(0x6fff, 0x6fff).nopw(); /* 0x00 in attract mode, 0xff during play */ + map(0x8000, 0xffff).rom().w(this, FUNC(multigam_state::multigm3_mapper2_w)); +} /****************************************************** @@ -981,22 +984,23 @@ WRITE8_MEMBER(multigam_state::supergm3_chr_bank_w) *******************************************************/ -ADDRESS_MAP_START(multigam_state::supergm3_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* NES RAM */ - AM_RANGE(0x0800, 0x0fff) AM_RAM /* additional RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(multigam_IN0_r, multigam_IN0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(multigam_IN1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x4fff, 0x4fff) AM_READ_PORT("IN0") - AM_RANGE(0x5000, 0x5fff) AM_ROM - AM_RANGE(0x5000, 0x5000) AM_WRITENOP - AM_RANGE(0x5001, 0x5001) AM_WRITE(supergm3_prg_bank_w) - AM_RANGE(0x5002, 0x5002) AM_WRITE(supergm3_chr_bank_w) - AM_RANGE(0x5fff, 0x5fff) AM_WRITENOP - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank10") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void multigam_state::supergm3_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* NES RAM */ + map(0x0800, 0x0fff).ram(); /* additional RAM */ + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(multigam_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(multigam_state::multigam_IN0_r), FUNC(multigam_state::multigam_IN0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(multigam_state::multigam_IN1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x4fff, 0x4fff).portr("IN0"); + map(0x5000, 0x5fff).rom(); + map(0x5000, 0x5000).nopw(); + map(0x5001, 0x5001).w(this, FUNC(multigam_state::supergm3_prg_bank_w)); + map(0x5002, 0x5002).w(this, FUNC(multigam_state::supergm3_chr_bank_w)); + map(0x5fff, 0x5fff).nopw(); + map(0x6000, 0x7fff).bankrw("bank10"); + map(0x8000, 0xffff).rom(); +} /****************************************************** diff --git a/src/mame/drivers/munchmo.cpp b/src/mame/drivers/munchmo.cpp index fe13910ff5a..d36773e3f5b 100644 --- a/src/mame/drivers/munchmo.cpp +++ b/src/mame/drivers/munchmo.cpp @@ -93,39 +93,44 @@ READ8_MEMBER(munchmo_state::ay2reset_r) * *************************************/ -ADDRESS_MAP_START(munchmo_state::mnchmobl_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_xpos") - AM_RANGE(0xa800, 0xabff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_tile") - AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_attr") - AM_RANGE(0xb800, 0xb8ff) AM_MIRROR(0x0100) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xbaba, 0xbaba) AM_WRITENOP /* ? */ - AM_RANGE(0xbc00, 0xbc7f) AM_RAM AM_SHARE("status_vram") - AM_RANGE(0xbe00, 0xbe00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - ;map(0xbe01, 0xbe01).select(0x0070).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 4, data, mem_mask); }); - AM_RANGE(0xbe02, 0xbe02) AM_READ_PORT("DSW1") - AM_RANGE(0xbe03, 0xbe03) AM_READ_PORT("DSW2") - AM_RANGE(0xbf00, 0xbf00) AM_WRITE(nmi_ack_w) // CNI 1-8C - AM_RANGE(0xbf01, 0xbf01) AM_READ_PORT("SYSTEM") - AM_RANGE(0xbf02, 0xbf02) AM_READ_PORT("P1") - AM_RANGE(0xbf03, 0xbf03) AM_READ_PORT("P2") - AM_RANGE(0xbf04, 0xbf07) AM_WRITEONLY AM_SHARE("vreg") // MY0 1-8C -ADDRESS_MAP_END +void munchmo_state::mnchmobl_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0xa000, 0xa3ff).mirror(0x0400).ram().share("sprite_xpos"); + map(0xa800, 0xabff).mirror(0x0400).ram().share("sprite_tile"); + map(0xb000, 0xb3ff).mirror(0x0400).ram().share("sprite_attr"); + map(0xb800, 0xb8ff).mirror(0x0100).ram().share("videoram"); + map(0xbaba, 0xbaba).nopw(); /* ? */ + map(0xbc00, 0xbc7f).ram().share("status_vram"); + map(0xbe00, 0xbe00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xbe01, 0xbe01).select(0x0070).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ + m_mainlatch->write_d0(space, offset >> 4, data, mem_mask); + }); + map(0xbe02, 0xbe02).portr("DSW1"); + map(0xbe03, 0xbe03).portr("DSW2"); + map(0xbf00, 0xbf00).w(this, FUNC(munchmo_state::nmi_ack_w)); // CNI 1-8C + map(0xbf01, 0xbf01).portr("SYSTEM"); + map(0xbf02, 0xbf02).portr("P1"); + map(0xbf03, 0xbf03).portr("P2"); + map(0xbf04, 0xbf07).writeonly().share("vreg"); // MY0 1-8C +} /* memory map provided thru schematics */ -ADDRESS_MAP_START(munchmo_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x8000, 0x9fff) AM_READ(ay1reset_r) AM_DEVWRITE("ay1", ay8910_device, reset_w) - AM_RANGE(0xa000, 0xbfff) AM_READ(ay2reset_r) AM_DEVWRITE("ay2", ay8910_device, reset_w) - AM_RANGE(0xc000, 0xdfff) AM_WRITE(sound_nmi_ack_w) // NCL 1-8H - AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM // is mirror ok? -ADDRESS_MAP_END +void munchmo_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4000, 0x4fff).w("ay1", FUNC(ay8910_device::data_w)); + map(0x5000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6fff).w("ay2", FUNC(ay8910_device::data_w)); + map(0x7000, 0x7fff).w("ay2", FUNC(ay8910_device::address_w)); + map(0x8000, 0x9fff).r(this, FUNC(munchmo_state::ay1reset_r)).w("ay1", FUNC(ay8910_device::reset_w)); + map(0xa000, 0xbfff).r(this, FUNC(munchmo_state::ay2reset_r)).w("ay2", FUNC(ay8910_device::reset_w)); + map(0xc000, 0xdfff).w(this, FUNC(munchmo_state::sound_nmi_ack_w)); // NCL 1-8H + map(0xe000, 0xe7ff).mirror(0x1800).ram(); // is mirror ok? +} /************************************* diff --git a/src/mame/drivers/murogem.cpp b/src/mame/drivers/murogem.cpp index e2199dd8cee..4bc3473686b 100644 --- a/src/mame/drivers/murogem.cpp +++ b/src/mame/drivers/murogem.cpp @@ -155,16 +155,17 @@ WRITE8_MEMBER(murogem_state::outport_w) } -ADDRESS_MAP_START(murogem_state::murogem_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("IN1") - AM_RANGE(0x7000, 0x7000) AM_WRITE(outport_w) /* output port */ - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void murogem_state::murogem_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x4000, 0x4000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x4001, 0x4001).w("crtc", FUNC(mc6845_device::register_w)); + map(0x5000, 0x5000).portr("IN0"); + map(0x5800, 0x5800).portr("IN1"); + map(0x7000, 0x7000).w(this, FUNC(murogem_state::outport_w)); /* output port */ + map(0x8000, 0x87ff).ram().share("videoram"); + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( murogem ) diff --git a/src/mame/drivers/murogmbl.cpp b/src/mame/drivers/murogmbl.cpp index 1abf9730073..f35e4b3551a 100644 --- a/src/mame/drivers/murogmbl.cpp +++ b/src/mame/drivers/murogmbl.cpp @@ -144,29 +144,31 @@ PALETTE_INIT_MEMBER(slotunbl_state, slotunbl) } } -ADDRESS_MAP_START(murogmbl_state::murogmbl_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM - AM_RANGE(0x5800, 0x5bff) AM_RAM AM_SHARE("video") - AM_RANGE(0x5c00, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("DSW") - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN1") - AM_RANGE(0x7800, 0x7800) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* read is always discarded */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(slotunbl_state::slotunbl_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("video") +void murogmbl_state::murogmbl_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x4800, 0x4bff).ram(); + map(0x5800, 0x5bff).ram().share("video"); + map(0x5c00, 0x5fff).ram(); + map(0x6000, 0x6000).portr("IN0"); + map(0x6800, 0x6800).portr("DSW"); + map(0x7000, 0x7000).portr("IN1"); + map(0x7800, 0x7800).nopr().w("dac", FUNC(dac_byte_interface::write)); /* read is always discarded */ +} + +void slotunbl_state::slotunbl_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x4800, 0x4fff).ram(); + map(0x5000, 0x53ff).ram().share("video"); // AM_RANGE(0x5400, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x6800, 0x6800) AM_READ_PORT("DSW") - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN1") - AM_RANGE(0x7800, 0x7800) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* read is always discarded */ -ADDRESS_MAP_END + map(0x6000, 0x6000).portr("IN0"); + map(0x6800, 0x6800).portr("DSW"); + map(0x7000, 0x7000).portr("IN1"); + map(0x7800, 0x7800).nopr().w("dac", FUNC(dac_byte_interface::write)); /* read is always discarded */ +} void murogmbl_state::video_start() { diff --git a/src/mame/drivers/mustache.cpp b/src/mame/drivers/mustache.cpp index 2d62f7ccb8b..91bcfe11f9d 100644 --- a/src/mame/drivers/mustache.cpp +++ b/src/mame/drivers/mustache.cpp @@ -45,30 +45,32 @@ YM2151: #define YM_CLOCK (XTAL1/4) -ADDRESS_MAP_START(mustache_state::memmap) - AM_RANGE(0x0000, 0x7fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w) - AM_RANGE(0xd001, 0xd001) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r) - AM_RANGE(0xd002, 0xd002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w) - AM_RANGE(0xd003, 0xd003) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w) - AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("t5182", t5182_device, sharedram_r, sharedram_w) - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("P1") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("P2") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("START") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("DSWA") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("DSWB") - AM_RANGE(0xd806, 0xd806) AM_WRITE(scroll_w) - AM_RANGE(0xd807, 0xd807) AM_WRITE(video_control_w) - AM_RANGE(0xe800, 0xefff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mustache_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END +void mustache_state::memmap(address_map &map) +{ + map(0x0000, 0x7fff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().w(this, FUNC(mustache_state::videoram_w)).share("videoram"); + map(0xd000, 0xd000).w("t5182", FUNC(t5182_device::sound_irq_w)); + map(0xd001, 0xd001).r("t5182", FUNC(t5182_device::sharedram_semaphore_snd_r)); + map(0xd002, 0xd002).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_acquire_w)); + map(0xd003, 0xd003).w("t5182", FUNC(t5182_device::sharedram_semaphore_main_release_w)); + map(0xd400, 0xd4ff).rw("t5182", FUNC(t5182_device::sharedram_r), FUNC(t5182_device::sharedram_w)); + map(0xd800, 0xd800).portr("P1"); + map(0xd801, 0xd801).portr("P2"); + map(0xd802, 0xd802).portr("START"); + map(0xd803, 0xd803).portr("DSWA"); + map(0xd804, 0xd804).portr("DSWB"); + map(0xd806, 0xd806).w(this, FUNC(mustache_state::scroll_w)); + map(0xd807, 0xd807).w(this, FUNC(mustache_state::video_control_w)); + map(0xe800, 0xefff).writeonly().share("spriteram"); + map(0xf000, 0xffff).ram(); +} + +void mustache_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); + map(0x8000, 0xbfff).rom().region("maincpu", 0x8000); +} /******************************************************************************/ diff --git a/src/mame/drivers/mvme147.cpp b/src/mame/drivers/mvme147.cpp index 72679da1e4b..82108dc4e21 100644 --- a/src/mame/drivers/mvme147.cpp +++ b/src/mame/drivers/mvme147.cpp @@ -235,28 +235,29 @@ private: uint8_t m_vc_cntl_conf; }; -ADDRESS_MAP_START(mvme147_state::mvme147_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x00000000, 0x00000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */ - AM_RANGE (0x00000000, 0x00000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just during reset */ - AM_RANGE (0x00000008, 0x003fffff) AM_RAM /* 4 Mb RAM */ - AM_RANGE (0xff800000, 0xff9fffff) AM_ROM AM_REGION("roms", 0x800000) //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 1 - 147bug */ - AM_RANGE (0xffa00000, 0xffbfffff) AM_ROM AM_REGION("roms", 0xa00000) //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 2 - unpopulated */ +void mvme147_state::mvme147_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x00000007).ram().w(this, FUNC(mvme147_state::bootvect_w)); /* After first write we act as RAM */ + map(0x00000000, 0x00000007).rom().r(this, FUNC(mvme147_state::bootvect_r)); /* ROM mirror just during reset */ + map(0x00000008, 0x003fffff).ram(); /* 4 Mb RAM */ + map(0xff800000, 0xff9fffff).rom().region("roms", 0x800000); //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 1 - 147bug */ + map(0xffa00000, 0xffbfffff).rom().region("roms", 0xa00000); //AM_MIRROR(0x00780000) /* ROM/EEPROM bank 2 - unpopulated */ /* SGS-Thompson M48T18 RAM and clock chip, only 4088 bytes used, and 8 bytes for the RTC, out of 8Kb though */ - AM_RANGE (0xfffe0000, 0xfffe0fff) AM_DEVREADWRITE8("m48t18", timekeeper_device, read, write, 0xffffffff) + map(0xfffe0000, 0xfffe0fff).rw("m48t18", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); //AM_RANGE (0xfffe1000, 0xfffe100f) AM_READWRITE32(pcc32_r, pcc32_w, 0xffffffff) /* PCC 32 bits registers - needs U64 cast defined to work */ - AM_RANGE (0xfffe1010, 0xfffe1017) AM_READWRITE16(pcc16_r, pcc16_w, 0xffffffff) /* PCC 16 bits registers */ - AM_RANGE (0xfffe1018, 0xfffe102f) AM_READWRITE8(pcc8_r, pcc8_w, 0xffffffff) /* PCC 8 bits registers */ - AM_RANGE (0xfffe2000, 0xfffe201b) AM_READWRITE8(vmechip_r, vmechip_w, 0x00ff00ff) /* VMEchip 8 bits registers on odd adresses */ + map(0xfffe1010, 0xfffe1017).rw(this, FUNC(mvme147_state::pcc16_r), FUNC(mvme147_state::pcc16_w)); /* PCC 16 bits registers */ + map(0xfffe1018, 0xfffe102f).rw(this, FUNC(mvme147_state::pcc8_r), FUNC(mvme147_state::pcc8_w)); /* PCC 8 bits registers */ + map(0xfffe2000, 0xfffe201b).rw(this, FUNC(mvme147_state::vmechip_r), FUNC(mvme147_state::vmechip_w)).umask32(0x00ff00ff); /* VMEchip 8 bits registers on odd adresses */ - AM_RANGE (0xfffe3000, 0xfffe3003) AM_DEVREADWRITE8("scc", scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 1&2 - Dual serial port Z80-SCC */ - AM_RANGE (0xfffe3800, 0xfffe3803) AM_DEVREADWRITE8("scc2", scc85c30_device, ba_cd_inv_r, ba_cd_inv_w, 0xffffffff) /* Port 3&4 - Dual serial port Z80-SCC */ + map(0xfffe3000, 0xfffe3003).rw(m_sccterm, FUNC(scc85c30_device::ba_cd_inv_r), FUNC(scc85c30_device::ba_cd_inv_w)); /* Port 1&2 - Dual serial port Z80-SCC */ + map(0xfffe3800, 0xfffe3803).rw(m_sccterm2, FUNC(scc85c30_device::ba_cd_inv_r), FUNC(scc85c30_device::ba_cd_inv_w)); /* Port 3&4 - Dual serial port Z80-SCC */ //AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */ //AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START (mvme147) diff --git a/src/mame/drivers/mw18w.cpp b/src/mame/drivers/mw18w.cpp index 37255b01ba5..29f28bbf5d5 100644 --- a/src/mame/drivers/mw18w.cpp +++ b/src/mame/drivers/mw18w.cpp @@ -162,22 +162,24 @@ CUSTOM_INPUT_MEMBER(mw18w_state::mw18w_sensors_r) } -ADDRESS_MAP_START(mw18w_state::mw18w_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mw18w_state::mw18w_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(mw18w_sound0_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(mw18w_sound1_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(mw18w_lamps_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(mw18w_led_display_w) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4") - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITE(mw18w_irq0_clear_w) -ADDRESS_MAP_END +void mw18w_state::mw18w_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); +} + +void mw18w_state::mw18w_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w(this, FUNC(mw18w_state::mw18w_sound0_w)); + map(0x01, 0x01).portr("IN1").w(this, FUNC(mw18w_state::mw18w_sound1_w)); + map(0x02, 0x02).portr("IN2").w(this, FUNC(mw18w_state::mw18w_lamps_w)); + map(0x03, 0x03).portr("DSW").w(this, FUNC(mw18w_state::mw18w_led_display_w)); + map(0x04, 0x04).portr("IN4"); + map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).w(this, FUNC(mw18w_state::mw18w_irq0_clear_w)); +} diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp index df7fbc42f9e..cbfe91185cc 100644 --- a/src/mame/drivers/mw8080bw.cpp +++ b/src/mame/drivers/mw8080bw.cpp @@ -214,12 +214,13 @@ WRITE8_MEMBER(mw8080bw_state::mw8080bw_reversable_shift_count_w) * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP - AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x5fff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END +void mw8080bw_state::main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom().nopw(); + map(0x2000, 0x3fff).mirror(0x4000).ram().share("main_ram"); + map(0x4000, 0x5fff).rom().nopw(); +} @@ -330,19 +331,20 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::seawolf_erase_input_r) } -ADDRESS_MAP_START(mw8080bw_state::seawolf_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(seawolf_explosion_lamp_w) - AM_RANGE(0x02, 0x02) AM_WRITE(seawolf_periscope_lamp_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x05, 0x05) AM_WRITE(seawolf_audio_w) -ADDRESS_MAP_END +void mw8080bw_state::seawolf_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::seawolf_explosion_lamp_w)); + map(0x02, 0x02).w(this, FUNC(mw8080bw_state::seawolf_periscope_lamp_w)); + map(0x03, 0x03).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::seawolf_audio_w)); +} /* the 30 position encoder is verified */ @@ -443,16 +445,17 @@ WRITE8_MEMBER(mw8080bw_state::gunfight_io_w) } -ADDRESS_MAP_START(mw8080bw_state::gunfight_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) +void mw8080bw_state::gunfight_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); /* no decoder, just 3 AND gates */ - AM_RANGE(0x00, 0x07) AM_WRITE(gunfight_io_w) -ADDRESS_MAP_END + map(0x00, 0x07).w(this, FUNC(mw8080bw_state::gunfight_io_w)); +} static const ioport_value gunfight_controller_table[7] = @@ -638,16 +641,17 @@ WRITE8_MEMBER(mw8080bw_state::tornbase_io_w) } -ADDRESS_MAP_START(mw8080bw_state::tornbase_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) +void mw8080bw_state::tornbase_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); /* no decoder, just 3 AND gates */ - AM_RANGE(0x00, 0x07) AM_WRITE(tornbase_io_w) -ADDRESS_MAP_END + map(0x00, 0x07).w(this, FUNC(mw8080bw_state::tornbase_io_w)); +} static INPUT_PORTS_START( tornbase ) @@ -759,19 +763,20 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::zzzap_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x02, 0x02) AM_WRITE(zzzap_audio_1_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x05, 0x05) AM_WRITE(zzzap_audio_2_w) - AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void mw8080bw_state::zzzap_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x02, 0x02).w(this, FUNC(mw8080bw_state::zzzap_audio_1_w)); + map(0x03, 0x03).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::zzzap_audio_2_w)); + map(0x07, 0x07).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( zzzap ) @@ -918,14 +923,15 @@ WRITE8_MEMBER(mw8080bw_state::maze_io_w) } -ADDRESS_MAP_START(mw8080bw_state::maze_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x3) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") +void mw8080bw_state::maze_io_map(address_map &map) +{ + map.global_mask(0x3); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); /* no decoder, just a couple of AND gates */ - AM_RANGE(0x00, 0x03) AM_WRITE(maze_io_w) -ADDRESS_MAP_END + map(0x00, 0x03).w(this, FUNC(mw8080bw_state::maze_io_w)); +} static INPUT_PORTS_START( maze ) @@ -989,20 +995,21 @@ MACHINE_START_MEMBER(mw8080bw_state,boothill) } -ADDRESS_MAP_START(mw8080bw_state::boothill_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(boothill_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) -ADDRESS_MAP_END +void mw8080bw_state::boothill_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::boothill_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); +} static const ioport_value boothill_controller_table[7] = @@ -1084,16 +1091,17 @@ WRITE8_MEMBER(mw8080bw_state::checkmat_io_w) } -ADDRESS_MAP_START(mw8080bw_state::checkmat_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x3) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3") +void mw8080bw_state::checkmat_io_map(address_map &map) +{ + map.global_mask(0x3); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).portr("IN3"); /* no decoder, just a couple of AND gates */ - AM_RANGE(0x00, 0x03) AM_WRITE(checkmat_io_w) -ADDRESS_MAP_END + map(0x00, 0x03).w(this, FUNC(mw8080bw_state::checkmat_io_w)); +} static INPUT_PORTS_START( checkmat ) @@ -1219,21 +1227,22 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::desertgu_dip_sw_0_1_r) } -ADDRESS_MAP_START(mw8080bw_state::desertgu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(desertgu_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) - AM_RANGE(0x07, 0x07) AM_WRITE(desertgu_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::desertgu_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::desertgu_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::desertgu_audio_2_w)); +} static INPUT_PORTS_START( desertgu ) @@ -1344,20 +1353,21 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::dplay_pitch_right_input_r) } -ADDRESS_MAP_START(mw8080bw_state::dplay_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(dplay_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) -ADDRESS_MAP_END +void mw8080bw_state::dplay_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::dplay_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); +} static INPUT_PORTS_START( dplay ) @@ -1523,21 +1533,22 @@ MACHINE_START_MEMBER(mw8080bw_state,gmissile) } -ADDRESS_MAP_START(mw8080bw_state::gmissile_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(gmissile_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(gmissile_audio_2_w) +void mw8080bw_state::gmissile_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::gmissile_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::gmissile_audio_2_w)); /* also writes 0x00 to 0x06, but it is not connected */ - AM_RANGE(0x07, 0x07) AM_WRITE(gmissile_audio_3_w) -ADDRESS_MAP_END + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::gmissile_audio_3_w)); +} static INPUT_PORTS_START( gmissile ) @@ -1620,19 +1631,20 @@ MACHINE_START_MEMBER(mw8080bw_state,m4) } -ADDRESS_MAP_START(mw8080bw_state::m4_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(m4_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(m4_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::m4_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::m4_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::m4_audio_2_w)); +} static INPUT_PORTS_START( m4 ) @@ -1736,21 +1748,22 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::clowns_controller_r) } -ADDRESS_MAP_START(mw8080bw_state::clowns_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(clowns_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) - AM_RANGE(0x07, 0x07) AM_WRITE(clowns_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::clowns_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::clowns_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::clowns_audio_2_w)); +} static INPUT_PORTS_START( clowns ) @@ -1876,22 +1889,23 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::spacwalk_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(spacwalk_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) - AM_RANGE(0x07, 0x07) AM_WRITE(spacwalk_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::spacwalk_io_map(address_map &map) +{ + map.global_mask(0x7); + + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::spacwalk_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::spacwalk_audio_2_w)); +} static INPUT_PORTS_START( spacwalk ) PORT_START("IN0") @@ -1973,21 +1987,22 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::shuffle_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xf) /* yes, 4, and no mirroring on the read handlers */ - AM_RANGE(0x01, 0x01) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1") - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2") - AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3") - - AM_RANGE(0x01, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_1_w) - AM_RANGE(0x06, 0x06) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::shuffle_io_map(address_map &map) +{ + map.global_mask(0xf); /* yes, 4, and no mirroring on the read handlers */ + map(0x01, 0x01).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + map(0x02, 0x02).portr("IN0"); + map(0x03, 0x03).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x04, 0x04).portr("IN1"); + map(0x05, 0x05).portr("IN2"); + map(0x06, 0x06).portr("IN3"); + + map(0x01, 0x01).mirror(0x08).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).mirror(0x08).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).mirror(0x08).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).mirror(0x08).w(this, FUNC(mw8080bw_state::shuffle_audio_1_w)); + map(0x06, 0x06).mirror(0x08).w(this, FUNC(mw8080bw_state::shuffle_audio_2_w)); +} static INPUT_PORTS_START( shuffle ) @@ -2056,20 +2071,21 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::dogpatch_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(dogpatch_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) -ADDRESS_MAP_END +void mw8080bw_state::dogpatch_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::dogpatch_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); +} static const ioport_value dogpatch_controller_table[7] = @@ -2207,16 +2223,17 @@ WRITE8_MEMBER(mw8080bw_state::spcenctr_io_w) } -ADDRESS_MAP_START(mw8080bw_state::spcenctr_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xfc) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0xfc) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0xfc) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0xfc) AM_READNOP +void mw8080bw_state::spcenctr_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0xfc).portr("IN0"); + map(0x01, 0x01).mirror(0xfc).portr("IN1"); + map(0x02, 0x02).mirror(0xfc).portr("IN2"); + map(0x03, 0x03).mirror(0xfc).nopr(); /* complicated addressing logic */ - AM_RANGE(0x00, 0xff) AM_WRITE(spcenctr_io_w) -ADDRESS_MAP_END + map(0x00, 0xff).w(this, FUNC(mw8080bw_state::spcenctr_io_w)); +} static const ioport_value spcenctr_controller_table[] = @@ -2315,19 +2332,20 @@ MACHINE_START_MEMBER(mw8080bw_state,phantom2) } -ADDRESS_MAP_START(mw8080bw_state::phantom2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(phantom2_audio_1_w) - AM_RANGE(0x06, 0x06) AM_WRITE(phantom2_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::phantom2_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::phantom2_audio_1_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::phantom2_audio_2_w)); +} static INPUT_PORTS_START( phantom2 ) @@ -2443,27 +2461,28 @@ WRITE8_MEMBER(mw8080bw_state::bowler_lights_2_w) } -ADDRESS_MAP_START(mw8080bw_state::bowler_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xf) /* no masking on the reads, all 4 bits are decoded */ - AM_RANGE(0x01, 0x01) AM_READ(bowler_shift_result_r) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1") - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2") - AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3") - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(bowler_audio_1_w) - AM_RANGE(0x06, 0x06) AM_WRITE(bowler_audio_2_w) - AM_RANGE(0x07, 0x07) AM_WRITE(bowler_lights_1_w) - AM_RANGE(0x08, 0x08) AM_WRITE(bowler_audio_3_w) - AM_RANGE(0x09, 0x09) AM_WRITE(bowler_audio_4_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(bowler_audio_5_w) - AM_RANGE(0x0e, 0x0e) AM_WRITE(bowler_lights_2_w) - AM_RANGE(0x0f, 0x0f) AM_WRITE(bowler_audio_6_w) -ADDRESS_MAP_END +void mw8080bw_state::bowler_io_map(address_map &map) +{ + map.global_mask(0xf); /* no masking on the reads, all 4 bits are decoded */ + map(0x01, 0x01).r(this, FUNC(mw8080bw_state::bowler_shift_result_r)); + map(0x02, 0x02).portr("IN0"); + map(0x03, 0x03).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x04, 0x04).portr("IN1"); + map(0x05, 0x05).portr("IN2"); + map(0x06, 0x06).portr("IN3"); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::bowler_audio_1_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::bowler_audio_2_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::bowler_lights_1_w)); + map(0x08, 0x08).w(this, FUNC(mw8080bw_state::bowler_audio_3_w)); + map(0x09, 0x09).w(this, FUNC(mw8080bw_state::bowler_audio_4_w)); + map(0x0a, 0x0a).w(this, FUNC(mw8080bw_state::bowler_audio_5_w)); + map(0x0e, 0x0e).w(this, FUNC(mw8080bw_state::bowler_lights_2_w)); + map(0x0f, 0x0f).w(this, FUNC(mw8080bw_state::bowler_audio_6_w)); +} static INPUT_PORTS_START( bowler ) @@ -2630,19 +2649,20 @@ int mw8080bw_state::invaders_is_cabinet_cocktail() } -ADDRESS_MAP_START(mw8080bw_state::invaders_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invaders_audio_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void mw8080bw_state::invaders_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::invaders_audio_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::invaders_audio_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( invaders ) @@ -2764,18 +2784,19 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::blueshrk_coin_input_r) } -ADDRESS_MAP_START(mw8080bw_state::blueshrk_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(blueshrk_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void mw8080bw_state::blueshrk_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::blueshrk_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( blueshrk ) @@ -2847,21 +2868,22 @@ uint32_t mw8080bw_state::invad2ct_coin_input_r(void *param) #endif -ADDRESS_MAP_START(mw8080bw_state::invad2ct_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(invad2ct_audio_3_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_WRITE(invad2ct_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invad2ct_audio_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITE(invad2ct_audio_4_w) -ADDRESS_MAP_END +void mw8080bw_state::invad2ct_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::invad2ct_audio_3_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::invad2ct_audio_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::invad2ct_audio_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::invad2ct_audio_4_w)); +} static INPUT_PORTS_START( invad2ct ) diff --git a/src/mame/drivers/mwarr.cpp b/src/mame/drivers/mwarr.cpp index 2fe9a3aca5e..b67bac5ea37 100644 --- a/src/mame/drivers/mwarr.cpp +++ b/src/mame/drivers/mwarr.cpp @@ -212,35 +212,37 @@ WRITE16_MEMBER(mwarr_state::mwarr_brightness_w) * *************************************/ -ADDRESS_MAP_START(mwarr_state::mwarr_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(mlow_videoram_w) AM_SHARE("mlow_videoram") - AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(mhigh_videoram_w) AM_SHARE("mhigh_videoram") - AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x103000, 0x1033ff) AM_RAM AM_SHARE("bg_scrollram") - AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram") - AM_RANGE(0x103800, 0x103bff) AM_RAM AM_SHARE("mhigh_scrollram") - AM_RANGE(0x103c00, 0x103fff) AM_RAM AM_SHARE("vidattrram") - AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x108000, 0x108fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("mwarr_ram") - AM_RANGE(0x110000, 0x110001) AM_READ_PORT("P1_P2") - AM_RANGE(0x110002, 0x110003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x110004, 0x110005) AM_READ_PORT("DSW") - AM_RANGE(0x110010, 0x110011) AM_WRITE(oki1_bank_w) - AM_RANGE(0x110014, 0x110015) AM_WRITE(mwarr_brightness_w) - AM_RANGE(0x110016, 0x110017) AM_WRITE(sprites_commands_w) - AM_RANGE(0x180000, 0x180001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x190000, 0x190001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mwarr_state::oki2_map) +void mwarr_state::mwarr_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x1007ff).ram().w(this, FUNC(mwarr_state::bg_videoram_w)).share("bg_videoram"); + map(0x100800, 0x100fff).ram().w(this, FUNC(mwarr_state::mlow_videoram_w)).share("mlow_videoram"); + map(0x101000, 0x1017ff).ram().w(this, FUNC(mwarr_state::mhigh_videoram_w)).share("mhigh_videoram"); + map(0x101800, 0x1027ff).ram().w(this, FUNC(mwarr_state::tx_videoram_w)).share("tx_videoram"); + map(0x103000, 0x1033ff).ram().share("bg_scrollram"); + map(0x103400, 0x1037ff).ram().share("mlow_scrollram"); + map(0x103800, 0x103bff).ram().share("mhigh_scrollram"); + map(0x103c00, 0x103fff).ram().share("vidattrram"); + map(0x104000, 0x104fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x108000, 0x108fff).ram().share("spriteram"); + map(0x110000, 0x11ffff).ram().share("mwarr_ram"); + map(0x110000, 0x110001).portr("P1_P2"); + map(0x110002, 0x110003).portr("SYSTEM"); + map(0x110004, 0x110005).portr("DSW"); + map(0x110010, 0x110011).w(this, FUNC(mwarr_state::oki1_bank_w)); + map(0x110014, 0x110015).w(this, FUNC(mwarr_state::mwarr_brightness_w)); + map(0x110016, 0x110017).w(this, FUNC(mwarr_state::sprites_commands_w)); + map(0x180001, 0x180001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x190001, 0x190001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void mwarr_state::oki2_map(address_map &map) +{ /* $00000-$20000 stays the same in all sound banks, */ /* the second half of the bank is what gets switched */ - AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("oki2", 0) - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END + map(0x00000, 0x1ffff).rom().region("oki2", 0); + map(0x20000, 0x3ffff).bankr("okibank"); +} /************************************* diff --git a/src/mame/drivers/mwsub.cpp b/src/mame/drivers/mwsub.cpp index c031a68ff05..f8b0dd0e88a 100644 --- a/src/mame/drivers/mwsub.cpp +++ b/src/mame/drivers/mwsub.cpp @@ -146,22 +146,24 @@ WRITE8_MEMBER(submar_state::submar_irq_clear_w) } -ADDRESS_MAP_START(submar_state::submar_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x207f) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(submar_state::submar_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(submar_sensor0_r, submar_motor_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(submar_sensor1_r, submar_lamp_w) - AM_RANGE(0x02, 0x02) AM_WRITE(submar_solenoid_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(submar_sound_w) - AM_RANGE(0x04, 0x05) AM_WRITE(submar_led_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITE(submar_irq_clear_w) -ADDRESS_MAP_END +void submar_state::submar_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x207f).ram(); +} + +void submar_state::submar_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(submar_state::submar_sensor0_r), FUNC(submar_state::submar_motor_w)); + map(0x01, 0x01).rw(this, FUNC(submar_state::submar_sensor1_r), FUNC(submar_state::submar_lamp_w)); + map(0x02, 0x02).w(this, FUNC(submar_state::submar_solenoid_w)); + map(0x03, 0x03).portr("DSW").w(this, FUNC(submar_state::submar_sound_w)); + map(0x04, 0x05).w(this, FUNC(submar_state::submar_led_w)); + map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).w(this, FUNC(submar_state::submar_irq_clear_w)); +} diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp index 5098a0d5c4c..c0622d679ff 100644 --- a/src/mame/drivers/mx2178.cpp +++ b/src/mame/drivers/mx2178.cpp @@ -56,21 +56,23 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(mx2178_state::mx2178_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mx2178_state::mx2178_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("acia1", acia6850_device, read, write) - AM_RANGE(0xa0, 0xa1) AM_DEVREADWRITE("acia2", acia6850_device, read, write) -ADDRESS_MAP_END +void mx2178_state::mx2178_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom().region("roms", 0); + map(0x2000, 0x27ff).ram().share("videoram"); + map(0x6000, 0x6fff).ram(); + map(0xe000, 0xe7ff).ram(); +} + +void mx2178_state::mx2178_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x01, 0x01).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x80, 0x81).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xa0, 0xa1).rw("acia2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); +} /* Input ports */ diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp index d36f5bb6d06..d7d2081f875 100644 --- a/src/mame/drivers/myb3k.cpp +++ b/src/mame/drivers/myb3k.cpp @@ -563,43 +563,45 @@ WRITE8_MEMBER( myb3k_state::myb3k_video_mode_w ) * OFF ON - ? * ON ON - ? **********************************************************/ -ADDRESS_MAP_START(myb3k_state::myb3k_map) - ADDRESS_MAP_UNMAP_HIGH +void myb3k_state::myb3k_map(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x00000,0x3ffff) AM_RAM // It's either 128Kb or 256Kb RAM installed by machine_start() - AM_RANGE(0x40000,0x7ffff) AM_NOP - AM_RANGE(0x80000,0xcffff) AM_NOP // Expansion Unit connected through an ISA8 cable - AM_RANGE(0xd0000,0xeffff) AM_RAM AM_SHARE("vram") // Area 6, physical at 30000-3FFFF (128Kb RAM) or 10000-1FFFF (256KB RAM) - AM_RANGE(0xf0000,0xfffff) AM_ROM AM_REGION("ipl", 0) // Area 7, 8 x 8Kb -ADDRESS_MAP_END - -ADDRESS_MAP_START(myb3k_state::myb3k_io) - ADDRESS_MAP_UNMAP_LOW + map(0x40000, 0x7ffff).noprw(); + map(0x80000, 0xcffff).noprw(); // Expansion Unit connected through an ISA8 cable + map(0xd0000, 0xeffff).ram().share("vram"); // Area 6, physical at 30000-3FFFF (128Kb RAM) or 10000-1FFFF (256KB RAM) + map(0xf0000, 0xfffff).rom().region("ipl", 0); // Area 7, 8 x 8Kb +} + +void myb3k_state::myb3k_io(address_map &map) +{ + map.unmap_value_low(); /* Main Unit 0-0x7ff */ // 0-3 8255A PPI parallel port - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi", i8255_device, read, write) + map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); // Discrete latches - AM_RANGE(0x04, 0x04) AM_READ(myb3k_kbd_r) - AM_RANGE(0x04, 0x04) AM_WRITE(myb3k_video_mode_w) // b0=40CH, b1=80CH, b2=16 raster - AM_RANGE(0x05, 0x05) AM_READ(myb3k_io_status_r) // printer connector bits: b3=fault b2=paper out b1 or b0=busy - AM_RANGE(0x05, 0x05) AM_WRITE(dma_segment_w) // b0-b3=addr, b6=A b7=B - AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2") + map(0x04, 0x04).r(this, FUNC(myb3k_state::myb3k_kbd_r)); + map(0x04, 0x04).w(this, FUNC(myb3k_state::myb3k_video_mode_w)); // b0=40CH, b1=80CH, b2=16 raster + map(0x05, 0x05).r(this, FUNC(myb3k_state::myb3k_io_status_r)); // printer connector bits: b3=fault b2=paper out b1 or b0=busy + map(0x05, 0x05).w(this, FUNC(myb3k_state::dma_segment_w)); // b0-b3=addr, b6=A b7=B + map(0x06, 0x06).portr("DSW2"); // 8-9 8259A interrupt controller - AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("pic", pic8259_device, read, write) + map(0x08, 0x09).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); // c-f 8253 PIT timer - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pit", pit8253_device, read, write) + map(0x0c, 0x0f).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // 10-18 8257 DMA - AM_RANGE(0x10, 0x18) AM_DEVREADWRITE("dma", i8257_device, read, write) + map(0x10, 0x18).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); // 1c-1d HD46505S CRTC - AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("crtc", h46505_device, status_r, address_w) - AM_RANGE(0x1d, 0x1d) AM_DEVREADWRITE("crtc", h46505_device, register_r, register_w) + map(0x1c, 0x1c).rw(m_crtc, FUNC(h46505_device::status_r), FUNC(h46505_device::address_w)); + map(0x1d, 0x1d).rw(m_crtc, FUNC(h46505_device::register_r), FUNC(h46505_device::register_w)); /* Expansion Unit 0x800 - 0xfff */ -ADDRESS_MAP_END +} /* Input ports - from Step/One service manual */ static INPUT_PORTS_START( myb3k ) diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp index 2b4c687bcd5..9aaad3ce800 100644 --- a/src/mame/drivers/mycom.cpp +++ b/src/mame/drivers/mycom.cpp @@ -216,24 +216,26 @@ WRITE8_MEMBER( mycom_state::vram_data_w ) m_p_videoram[m_i_videoram] = data; } -ADDRESS_MAP_START(mycom_state::mycom_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") - AM_RANGE(0x1000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_READWRITE(mycom_upper_r,mycom_upper_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mycom_state::mycom_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(mycom_00_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(vram_data_r,vram_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1771_device, read, write) -ADDRESS_MAP_END +void mycom_state::mycom_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("boot"); + map(0x1000, 0xbfff).ram(); + map(0xc000, 0xffff).rw(this, FUNC(mycom_state::mycom_upper_r), FUNC(mycom_state::mycom_upper_w)); +} + +void mycom_state::mycom_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(mycom_state::mycom_00_w)); + map(0x01, 0x01).rw(this, FUNC(mycom_state::vram_data_r), FUNC(mycom_state::vram_data_w)); + map(0x02, 0x02).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x03, 0x03).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x04, 0x07).rw(m_ppi0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw(m_ppi1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0c, 0x0f).rw(m_ppi2, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x13).rw(m_fdc, FUNC(fd1771_device::read), FUNC(fd1771_device::write)); +} /* Input ports */ static INPUT_PORTS_START( mycom ) diff --git a/src/mame/drivers/mystston.cpp b/src/mame/drivers/mystston.cpp index 7a9ddbc575b..0c641e2cef8 100644 --- a/src/mame/drivers/mystston.cpp +++ b/src/mame/drivers/mystston.cpp @@ -101,21 +101,22 @@ WRITE8_MEMBER(mystston_state::mystston_ay8910_select_w) * *************************************/ -ADDRESS_MAP_START(mystston_state::main_map) - AM_RANGE(0x0000, 0x077f) AM_RAM - AM_RANGE(0x0780, 0x07df) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x07e0, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("fg_videoram") - AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("bg_videoram") - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x1f8f) AM_READ_PORT("IN0") AM_WRITE(mystston_video_control_w) AM_SHARE("video_control") - AM_RANGE(0x2010, 0x2010) AM_MIRROR(0x1f8f) AM_READ_PORT("IN1") AM_WRITE(irq_clear_w) - AM_RANGE(0x2020, 0x2020) AM_MIRROR(0x1f8f) AM_READ_PORT("DSW0") AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x2030, 0x2030) AM_MIRROR(0x1f8f) AM_READ_PORT("DSW1") AM_WRITEONLY AM_SHARE("ay8910_data") - AM_RANGE(0x2040, 0x2040) AM_MIRROR(0x1f8f) AM_READNOP AM_WRITE(mystston_ay8910_select_w) AM_SHARE("ay8910_select") - AM_RANGE(0x2050, 0x2050) AM_MIRROR(0x1f8f) AM_NOP - AM_RANGE(0x2060, 0x207f) AM_MIRROR(0x1f80) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void mystston_state::main_map(address_map &map) +{ + map(0x0000, 0x077f).ram(); + map(0x0780, 0x07df).ram().share("spriteram"); + map(0x07e0, 0x0fff).ram(); + map(0x1000, 0x17ff).ram().share("fg_videoram"); + map(0x1800, 0x1fff).ram().share("bg_videoram"); + map(0x2000, 0x2000).mirror(0x1f8f).portr("IN0").w(this, FUNC(mystston_state::mystston_video_control_w)).share("video_control"); + map(0x2010, 0x2010).mirror(0x1f8f).portr("IN1").w(this, FUNC(mystston_state::irq_clear_w)); + map(0x2020, 0x2020).mirror(0x1f8f).portr("DSW0").writeonly().share("scroll"); + map(0x2030, 0x2030).mirror(0x1f8f).portr("DSW1").writeonly().share("ay8910_data"); + map(0x2040, 0x2040).mirror(0x1f8f).nopr().w(this, FUNC(mystston_state::mystston_ay8910_select_w)).share("ay8910_select"); + map(0x2050, 0x2050).mirror(0x1f8f).noprw(); + map(0x2060, 0x207f).mirror(0x1f80).ram().share("paletteram"); + map(0x4000, 0xffff).rom(); +} diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp index 86c33ba5f42..0bebfd6c7dd 100644 --- a/src/mame/drivers/mystwarr.cpp +++ b/src/mame/drivers/mystwarr.cpp @@ -292,94 +292,97 @@ WRITE16_MEMBER(mystwarr_state::k053247_scattered_word_w) /* 68000 memory handlers */ /* Mystic Warriors */ -ADDRESS_MAP_START(mystwarr_state::mystwarr_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram") - AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x480000, 0x4800ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x482000, 0x48200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x482010, 0x48201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) - AM_RANGE(0x484000, 0x484007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) - AM_RANGE(0x48a000, 0x48a01f) AM_DEVWRITE("k054338", k054338_device, word_w) - AM_RANGE(0x48c000, 0x48c03f) AM_DEVWRITE("k056832", k056832_device,word_w) - AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w) - AM_RANGE(0x492000, 0x492001) AM_NOP // watchdog - AM_RANGE(0x494000, 0x494001) AM_READ_PORT("P1_P2") - AM_RANGE(0x494002, 0x494003) AM_READ_PORT("P3_P4") - AM_RANGE(0x496000, 0x496001) AM_READ_PORT("IN0") - AM_RANGE(0x496002, 0x496003) AM_READ(eeprom_r) - AM_RANGE(0x498000, 0x49801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w) - AM_RANGE(0x49c000, 0x49c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) - AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w) // VSCCS (custom) - AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) - AM_RANGE(0x602000, 0x603fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential) - AM_RANGE(0x680000, 0x683fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END +void mystwarr_state::mystwarr_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // main program + map(0x200000, 0x20ffff).ram().share("gx_workram"); + map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram"); + map(0x480000, 0x4800ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x482000, 0x48200f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); + map(0x482010, 0x48201f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0x484000, 0x484007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); + map(0x48a000, 0x48a01f).w(m_k054338, FUNC(k054338_device::word_w)); + map(0x48c000, 0x48c03f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x490000, 0x490001).w(this, FUNC(mystwarr_state::mweeprom_w)); + map(0x492000, 0x492001).noprw(); // watchdog + map(0x494000, 0x494001).portr("P1_P2"); + map(0x494002, 0x494003).portr("P3_P4"); + map(0x496000, 0x496001).portr("IN0"); + map(0x496002, 0x496003).r(this, FUNC(mystwarr_state::eeprom_r)); + map(0x498000, 0x49801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x49a000, 0x49a001).w(this, FUNC(mystwarr_state::sound_irq_w)); + map(0x49c000, 0x49c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); + map(0x49e000, 0x49e007).w(this, FUNC(mystwarr_state::irq_ack_w)); // VSCCS (custom) + map(0x600000, 0x601fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x602000, 0x603fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read(essential) + map(0x680000, 0x683fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} /* Metamorphic Force */ -ADDRESS_MAP_START(mystwarr_state::metamrph_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram") - AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE("k055673", k055673_device,k053247_word_r,k053247_word_w) - AM_RANGE(0x211000, 0x21ffff) AM_RAM - AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) - AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) - AM_RANGE(0x24c000, 0x24ffff) AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w) - AM_RANGE(0x250000, 0x25000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w) - AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w) - AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) - AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w) - AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w) - AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w) - AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3") - AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4") - AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0") - AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r) - AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here - AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w) - AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) - AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential) - AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) - AM_RANGE(0x320000, 0x321fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) - AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END +void mystwarr_state::metamrph_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // main program + map(0x200000, 0x20ffff).ram().share("gx_workram"); + map(0x210000, 0x210fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w)); + map(0x211000, 0x21ffff).ram(); + map(0x240000, 0x240007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); + map(0x244000, 0x24400f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); + map(0x244010, 0x24401f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0x24c000, 0x24ffff).rw("k053250_1", FUNC(k053250_device::ram_r), FUNC(k053250_device::ram_w)); + map(0x250000, 0x25000f).rw("k053250_1", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w)); + map(0x254000, 0x25401f).w(m_k054338, FUNC(k054338_device::word_w)); + map(0x258000, 0x2580ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x260000, 0x26001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); + map(0x264000, 0x264001).w(this, FUNC(mystwarr_state::sound_irq_w)); + map(0x268000, 0x26801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x26c000, 0x26c007).w(m_k056832, FUNC(k056832_device::b_word_w)); + map(0x270000, 0x27003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x274000, 0x274001).portr("P1_P3"); + map(0x274002, 0x274003).portr("P2_P4"); + map(0x278000, 0x278001).portr("IN0"); + map(0x278002, 0x278003).r(this, FUNC(mystwarr_state::eeprom_r)); + map(0x27c000, 0x27c001).nopr(); // watchdog lives here + map(0x27c000, 0x27c001).w(this, FUNC(mystwarr_state::mmeeprom_w)); + map(0x300000, 0x301fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x302000, 0x303fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential) + map(0x310000, 0x311fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); + map(0x320000, 0x321fff).r("k053250_1", FUNC(k053250_device::rom_r)); + map(0x330000, 0x331fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} /* Violent Storm */ -ADDRESS_MAP_START(mystwarr_state::viostorm_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram") - AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r,k053247_word_w) - AM_RANGE(0x211000, 0x21ffff) AM_RAM - AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) - AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) - AM_RANGE(0x24c000, 0x24ffff) AM_RAM // K053250 ram - AM_RANGE(0x250000, 0x25000f) AM_RAM // K053250 reg - AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w) - AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w) - AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) - AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w) - AM_RANGE(0x268000, 0x26801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w) - AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,word_w) - AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3") - AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4") - AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0") - AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r) - AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here - AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w) - AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) - AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential) - AM_RANGE(0x304000, 0x3041ff) AM_RAM - AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) - AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END +void mystwarr_state::viostorm_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // main program + map(0x200000, 0x20ffff).ram().share("gx_workram"); + map(0x210000, 0x210fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w)); + map(0x211000, 0x21ffff).ram(); + map(0x240000, 0x240007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); + map(0x244000, 0x24400f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); + map(0x244010, 0x24401f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0x24c000, 0x24ffff).ram(); // K053250 ram + map(0x250000, 0x25000f).ram(); // K053250 reg + map(0x254000, 0x25401f).w(m_k054338, FUNC(k054338_device::word_w)); + map(0x258000, 0x2580ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x25c000, 0x25c03f).rw(this, FUNC(mystwarr_state::K055550_word_r), FUNC(mystwarr_state::K055550_word_w)); + map(0x260000, 0x26001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); + map(0x264000, 0x264001).w(this, FUNC(mystwarr_state::sound_irq_w)); + map(0x268000, 0x26801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x26c000, 0x26c007).w(m_k056832, FUNC(k056832_device::b_word_w)); + map(0x270000, 0x27003f).w(m_k056832, FUNC(k056832_device::word_w)); + map(0x274000, 0x274001).portr("P1_P3"); + map(0x274002, 0x274003).portr("P2_P4"); + map(0x278000, 0x278001).portr("IN0"); + map(0x278002, 0x278003).r(this, FUNC(mystwarr_state::eeprom_r)); + map(0x27c000, 0x27c001).nopr(); // watchdog lives here + map(0x27c000, 0x27c001).w(this, FUNC(mystwarr_state::mmeeprom_w)); + map(0x300000, 0x301fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x302000, 0x303fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read(essential) + map(0x304000, 0x3041ff).ram(); + map(0x310000, 0x311fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); + map(0x330000, 0x331fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} // Martial Champion specific interfaces READ16_MEMBER(mystwarr_state::k053247_martchmp_word_r) @@ -444,102 +447,105 @@ WRITE16_MEMBER(mystwarr_state::mceeprom_w) } /* Martial Champion */ -ADDRESS_MAP_START(mystwarr_state::martchmp_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("gx_workram") // work RAM - AM_RANGE(0x300000, 0x3fffff) AM_ROM // data ROM - AM_RANGE(0x400000, 0x4000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2 - AM_RANGE(0x402000, 0x40200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // sprite ROM readback - AM_RANGE(0x402010, 0x40201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) // OBJSET2 - AM_RANGE(0x404000, 0x404007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // OBJSET1 - AM_RANGE(0x40a000, 0x40a01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC - AM_RANGE(0x40c000, 0x40c03f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET - AM_RANGE(0x40e000, 0x40e03f) AM_WRITE(K053990_martchmp_word_w) // protection - AM_RANGE(0x410000, 0x410001) AM_WRITE(mceeprom_w) - AM_RANGE(0x412000, 0x412001) AM_READWRITE(mccontrol_r,mccontrol_w) - AM_RANGE(0x414000, 0x414001) AM_READ_PORT("P1_P2") - AM_RANGE(0x414002, 0x414003) AM_READ_PORT("P3_P4") - AM_RANGE(0x416000, 0x416001) AM_READ_PORT("IN0") - AM_RANGE(0x416002, 0x416003) AM_READ(eeprom_r) // eeprom read - AM_RANGE(0x418000, 0x41801f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w) - AM_RANGE(0x41c000, 0x41c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU - AM_RANGE(0x41e000, 0x41e007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS - AM_RANGE(0x480000, 0x483fff) AM_READWRITE(k053247_martchmp_word_r,k053247_martchmp_word_w) AM_SHARE("spriteram") // sprite RAM - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette RAM - AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM - AM_RANGE(0x682000, 0x683fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential) - AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) // tile ROM readback -ADDRESS_MAP_END +void mystwarr_state::martchmp_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // main program + map(0x100000, 0x10ffff).ram().share("gx_workram"); // work RAM + map(0x300000, 0x3fffff).rom(); // data ROM + map(0x400000, 0x4000ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); // PCU2 + map(0x402000, 0x40200f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // sprite ROM readback + map(0x402010, 0x40201f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); // OBJSET2 + map(0x404000, 0x404007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // OBJSET1 + map(0x40a000, 0x40a01f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC + map(0x40c000, 0x40c03f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET + map(0x40e000, 0x40e03f).w(this, FUNC(mystwarr_state::K053990_martchmp_word_w)); // protection + map(0x410000, 0x410001).w(this, FUNC(mystwarr_state::mceeprom_w)); + map(0x412000, 0x412001).rw(this, FUNC(mystwarr_state::mccontrol_r), FUNC(mystwarr_state::mccontrol_w)); + map(0x414000, 0x414001).portr("P1_P2"); + map(0x414002, 0x414003).portr("P3_P4"); + map(0x416000, 0x416001).portr("IN0"); + map(0x416002, 0x416003).r(this, FUNC(mystwarr_state::eeprom_r)); // eeprom read + map(0x418000, 0x41801f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x41a000, 0x41a001).w(this, FUNC(mystwarr_state::sound_irq_w)); + map(0x41c000, 0x41c01f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU + map(0x41e000, 0x41e007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS + map(0x480000, 0x483fff).rw(this, FUNC(mystwarr_state::k053247_martchmp_word_r), FUNC(mystwarr_state::k053247_martchmp_word_w)).share("spriteram"); // sprite RAM + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // palette RAM + map(0x680000, 0x681fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM + map(0x682000, 0x683fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential) + map(0x700000, 0x703fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); // tile ROM readback +} /* Ultimate Battler Dadandarn */ -ADDRESS_MAP_START(mystwarr_state::dadandrn_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program and data ROM - AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM - AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential) - AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) - AM_RANGE(0x440000, 0x443fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) - AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) - AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16") - AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16") - AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET - AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS - AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w) - AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) - AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00) - AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w) - AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch - AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r) - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gx_workram") - AM_RANGE(0x680000, 0x68003f) AM_READWRITE(K055550_word_r,K055550_word_w) - AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w) - AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w) - AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w) - AM_RANGE(0x800000, 0x87ffff) AM_READ(ddd_053936_tilerom_0_r) // 256k tilemap readback - AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback - AM_RANGE(0xc00000, 0xdfffff) AM_READ(ddd_053936_tilerom_2_r) // tile character readback - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog -ADDRESS_MAP_END +void mystwarr_state::dadandrn_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // main program and data ROM + map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram"); + map(0x410000, 0x411fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM + map(0x412000, 0x413fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read/write (essential) + map(0x420000, 0x421fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x430000, 0x430007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); + map(0x440000, 0x443fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); + map(0x450000, 0x45000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); + map(0x450010, 0x45001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0x460000, 0x46001f).writeonly().share("k053936_0_ct16"); + map(0x470000, 0x470fff).ram().share("k053936_0_li16"); + map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET + map(0x482000, 0x482007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS + map(0x484000, 0x484003).w(this, FUNC(mystwarr_state::ddd_053936_clip_w)); + map(0x486000, 0x48601f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); + map(0x488000, 0x4880ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x48a000, 0x48a01f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00); + map(0x48c000, 0x48c01f).w(m_k054338, FUNC(k054338_device::word_w)); + map(0x48e000, 0x48e001).portr("IN0_P1"); // bit 3 (0x8) is test switch + map(0x48e020, 0x48e021).r(this, FUNC(mystwarr_state::dddeeprom_r)); + map(0x600000, 0x60ffff).ram().share("gx_workram"); + map(0x680000, 0x68003f).rw(this, FUNC(mystwarr_state::K055550_word_r), FUNC(mystwarr_state::K055550_word_w)); + map(0x6a0000, 0x6a0001).w(this, FUNC(mystwarr_state::mmeeprom_w)); + map(0x6c0000, 0x6c0001).w(this, FUNC(mystwarr_state::ddd_053936_enable_w)); + map(0x6e0000, 0x6e0001).w(this, FUNC(mystwarr_state::sound_irq_w)); + map(0x800000, 0x87ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_0_r)); // 256k tilemap readback + map(0xa00000, 0xa7ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_1_r)); // 128k tilemap readback + map(0xc00000, 0xdfffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_2_r)); // tile character readback + map(0xe00000, 0xe00001).nopw(); // watchdog +} /* Gaiapolis */ // a00000 = the 128k tilemap // 800000 = the 256k tilemap // c00000 = 936 tiles (7fffff window) -ADDRESS_MAP_START(mystwarr_state::gaiapols_map) - AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program - AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM - AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read / write (essential) - AM_RANGE(0x420000, 0x421fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) - AM_RANGE(0x440000, 0x441fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) - AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) - AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16") - AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16") - AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET - AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS - AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w) - AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) - AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x48a000, 0x48a01f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00) - AM_RANGE(0x48c000, 0x48c01f) AM_DEVWRITE("k054338", k054338_device, word_w) - AM_RANGE(0x48e000, 0x48e001) AM_READ_PORT("IN0_P1") // bit 3 (0x8) is test switch - AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r) - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gx_workram") - AM_RANGE(0x660000, 0x6600ff) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w) - AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w) - AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w) - AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w) - AM_RANGE(0x800000, 0x87ffff) AM_READ(gai_053936_tilerom_0_r) // 256k tilemap readback - AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback - AM_RANGE(0xc00000, 0xdfffff) AM_READ(gai_053936_tilerom_2_r) // tile character readback - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog -ADDRESS_MAP_END +void mystwarr_state::gaiapols_map(address_map &map) +{ + map(0x000000, 0x2fffff).rom(); // main program + map(0x400000, 0x40ffff).rw(this, FUNC(mystwarr_state::k053247_scattered_word_r), FUNC(mystwarr_state::k053247_scattered_word_w)).share("spriteram"); + map(0x410000, 0x411fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM + map(0x412000, 0x413fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // tilemap RAM mirror read / write (essential) + map(0x420000, 0x421fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x430000, 0x430007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); + map(0x440000, 0x441fff).r(m_k056832, FUNC(k056832_device::mw_rom_word_r)); + map(0x450000, 0x45000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); + map(0x450010, 0x45001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0x460000, 0x46001f).writeonly().share("k053936_0_ct16"); + map(0x470000, 0x470fff).ram().share("k053936_0_li16"); + map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET + map(0x482000, 0x482007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS + map(0x484000, 0x484003).w(this, FUNC(mystwarr_state::ddd_053936_clip_w)); + map(0x486000, 0x48601f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); + map(0x488000, 0x4880ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x48a000, 0x48a01f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00); + map(0x48c000, 0x48c01f).w(m_k054338, FUNC(k054338_device::word_w)); + map(0x48e000, 0x48e001).portr("IN0_P1"); // bit 3 (0x8) is test switch + map(0x48e020, 0x48e021).r(this, FUNC(mystwarr_state::dddeeprom_r)); + map(0x600000, 0x60ffff).ram().share("gx_workram"); + map(0x660000, 0x6600ff).rw("k054000", FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w)); + map(0x6a0000, 0x6a0001).w(this, FUNC(mystwarr_state::mmeeprom_w)); + map(0x6c0000, 0x6c0001).w(this, FUNC(mystwarr_state::ddd_053936_enable_w)); + map(0x6e0000, 0x6e0001).w(this, FUNC(mystwarr_state::sound_irq_w)); + map(0x800000, 0x87ffff).r(this, FUNC(mystwarr_state::gai_053936_tilerom_0_r)); // 256k tilemap readback + map(0xa00000, 0xa7ffff).r(this, FUNC(mystwarr_state::ddd_053936_tilerom_1_r)); // 128k tilemap readback + map(0xc00000, 0xdfffff).r(this, FUNC(mystwarr_state::gai_053936_tilerom_2_r)); // tile character readback + map(0xe00000, 0xe00001).nopw(); // watchdog +} /**********************************************************************************/ @@ -560,39 +566,42 @@ WRITE8_MEMBER(mystwarr_state::sound_ctrl_w) quite similar to xexex/gijoe/asterix's sound. */ -ADDRESS_MAP_START(mystwarr_state::mystwarr_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") - AM_RANGE(0x0000, 0xbfff) AM_WRITENOP - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539_1", k054539_device, read, write) - AM_RANGE(0xe230, 0xe3ff) AM_RAM - AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write) - AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) - AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mystwarr_state::martchmp_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") - AM_RANGE(0x0000, 0xbfff) AM_WRITENOP - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xe230, 0xe3ff) AM_RAM - AM_RANGE(0xe400, 0xe62f) AM_NOP - AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) - AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write -ADDRESS_MAP_END - - -ADDRESS_MAP_START(mystwarr_state::mystwarr_k054539_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("k054539", 0) -ADDRESS_MAP_END +void mystwarr_state::mystwarr_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("z80bank"); + map(0x0000, 0xbfff).nopw(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe230, 0xe3ff).ram(); + map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe630, 0xe7ff).ram(); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(mystwarr_state::sound_ctrl_w)); + map(0xfff0, 0xfff3).nopw(); // unknown write +} + + +void mystwarr_state::martchmp_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("z80bank"); + map(0x0000, 0xbfff).nopw(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe230, 0xe3ff).ram(); + map(0xe400, 0xe62f).noprw(); + map(0xe630, 0xe7ff).ram(); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(mystwarr_state::sound_ctrl_w)); + map(0xfff0, 0xfff3).nopw(); // unknown write +} + + +void mystwarr_state::mystwarr_k054539_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom().region("k054539", 0); +} WRITE_LINE_MEMBER(mystwarr_state::k054539_nmi_gen) diff --git a/src/mame/drivers/myvision.cpp b/src/mame/drivers/myvision.cpp index e5db2e67973..2e1a795dfa3 100644 --- a/src/mame/drivers/myvision.cpp +++ b/src/mame/drivers/myvision.cpp @@ -71,22 +71,24 @@ private: }; -ADDRESS_MAP_START(myvision_state::myvision_mem) - ADDRESS_MAP_UNMAP_HIGH +void myvision_state::myvision_mem(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x0000, 0x5fff) // mapped by the cartslot - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9918", tms9918a_device, vram_read, vram_write) - AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9918", tms9918a_device, register_read, register_write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(myvision_state::myvision_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ay8910", ay8910_device, data_r) -ADDRESS_MAP_END + map(0xa000, 0xa7ff).ram(); + map(0xe000, 0xe000).rw("tms9918", FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write)); + map(0xe002, 0xe002).rw("tms9918", FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write)); +} + + +void myvision_state::myvision_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w("ay8910", FUNC(ay8910_device::address_w)); + map(0x01, 0x01).w("ay8910", FUNC(ay8910_device::data_w)); + map(0x02, 0x02).r("ay8910", FUNC(ay8910_device::data_r)); +} /* Input ports */ diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp index 0b4bf8596a8..c198afcf050 100644 --- a/src/mame/drivers/mz2000.cpp +++ b/src/mame/drivers/mz2000.cpp @@ -404,32 +404,35 @@ WRITE8_MEMBER(mz2000_state::mz2000_gvram_mask_w) m_gvram_mask = data; } -ADDRESS_MAP_START(mz2000_state::mz2000_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(mz2000_mem_r,mz2000_mem_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz2000_state::mz80b_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xd8, 0xdb) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0xdc, 0xdc) AM_WRITE(floppy_select_w) - AM_RANGE(0xdd, 0xdd) AM_WRITE(floppy_side_w) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt) - AM_RANGE(0xf0, 0xf3) AM_WRITE(timer_w) +void mz2000_state::mz2000_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(mz2000_state::mz2000_mem_r), FUNC(mz2000_state::mz2000_mem_w)); +} + +void mz2000_state::mz80b_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xd8, 0xdb).rw(this, FUNC(mz2000_state::fdc_r), FUNC(mz2000_state::fdc_w)); + map(0xdc, 0xdc).w(this, FUNC(mz2000_state::floppy_select_w)); + map(0xdd, 0xdd).w(this, FUNC(mz2000_state::floppy_side_w)); + map(0xe0, 0xe3).rw("i8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe4, 0xe7).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xe8, 0xeb).rw("z80pio_1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0xf0, 0xf3).w(this, FUNC(mz2000_state::timer_w)); // AM_RANGE(0xf4, 0xf4) AM_WRITE(vram_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz2000_state::mz2000_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_IMPORT_FROM(mz80b_io) - AM_RANGE(0xf5, 0xf5) AM_WRITE(mz2000_tvram_attr_w) - AM_RANGE(0xf6, 0xf6) AM_WRITE(mz2000_gvram_mask_w) - AM_RANGE(0xf7, 0xf7) AM_WRITE(mz2000_gvram_bank_w) -ADDRESS_MAP_END +} + +void mz2000_state::mz2000_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + mz80b_io(map); + map(0xf5, 0xf5).w(this, FUNC(mz2000_state::mz2000_tvram_attr_w)); + map(0xf6, 0xf6).w(this, FUNC(mz2000_state::mz2000_gvram_mask_w)); + map(0xf7, 0xf7).w(this, FUNC(mz2000_state::mz2000_gvram_bank_w)); +} /* diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp index ad8be4569d1..52b0065d4b9 100644 --- a/src/mame/drivers/mz2500.cpp +++ b/src/mame/drivers/mz2500.cpp @@ -1227,16 +1227,17 @@ WRITE8_MEMBER(mz2500_state::floppy_side_w) } -ADDRESS_MAP_START(mz2500_state::mz2500_map) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(bank0_r,bank0_w) - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(bank1_r,bank1_w) - AM_RANGE(0x4000, 0x5fff) AM_READWRITE(bank2_r,bank2_w) - AM_RANGE(0x6000, 0x7fff) AM_READWRITE(bank3_r,bank3_w) - AM_RANGE(0x8000, 0x9fff) AM_READWRITE(bank4_r,bank4_w) - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(bank5_r,bank5_w) - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(bank6_r,bank6_w) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(bank7_r,bank7_w) -ADDRESS_MAP_END +void mz2500_state::mz2500_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(this, FUNC(mz2500_state::bank0_r), FUNC(mz2500_state::bank0_w)); + map(0x2000, 0x3fff).rw(this, FUNC(mz2500_state::bank1_r), FUNC(mz2500_state::bank1_w)); + map(0x4000, 0x5fff).rw(this, FUNC(mz2500_state::bank2_r), FUNC(mz2500_state::bank2_w)); + map(0x6000, 0x7fff).rw(this, FUNC(mz2500_state::bank3_r), FUNC(mz2500_state::bank3_w)); + map(0x8000, 0x9fff).rw(this, FUNC(mz2500_state::bank4_r), FUNC(mz2500_state::bank4_w)); + map(0xa000, 0xbfff).rw(this, FUNC(mz2500_state::bank5_r), FUNC(mz2500_state::bank5_w)); + map(0xc000, 0xdfff).rw(this, FUNC(mz2500_state::bank6_r), FUNC(mz2500_state::bank6_w)); + map(0xe000, 0xffff).rw(this, FUNC(mz2500_state::bank7_r), FUNC(mz2500_state::bank7_w)); +} READ8_MEMBER(mz2500_state::mz2500_rom_r) @@ -1511,46 +1512,47 @@ WRITE8_MEMBER(mz2500_state::mz2500_emm_data_w) m_emm_ram[m_emm_offset] = data; } -ADDRESS_MAP_START(mz2500_state::mz2500_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void mz2500_state::mz2500_io(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x60, 0x63) AM_WRITE(w3100a_w) // AM_RANGE(0x63, 0x63) AM_READ(w3100a_r) // AM_RANGE(0x98, 0x99) ADPCM, unknown type, custom? - AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("z80sio", z80sio_device, ba_cd_r, ba_cd_w) + map(0xa0, 0xa3).rw("z80sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); // AM_RANGE(0xa4, 0xa5) AM_READWRITE(sasi_r, sasi_w) - AM_RANGE(0xa8, 0xa8) AM_WRITE(mz2500_rom_w) - AM_RANGE(0xa9, 0xa9) AM_READ(mz2500_rom_r) - AM_RANGE(0xac, 0xac) AM_WRITE(mz2500_emm_addr_w) - AM_RANGE(0xad, 0xad) AM_READ(mz2500_emm_data_r) AM_WRITE(mz2500_emm_data_w) - AM_RANGE(0xae, 0xae) AM_WRITE(palette4096_io_w) + map(0xa8, 0xa8).w(this, FUNC(mz2500_state::mz2500_rom_w)); + map(0xa9, 0xa9).r(this, FUNC(mz2500_state::mz2500_rom_r)); + map(0xac, 0xac).w(this, FUNC(mz2500_state::mz2500_emm_addr_w)); + map(0xad, 0xad).r(this, FUNC(mz2500_state::mz2500_emm_data_r)).w(this, FUNC(mz2500_state::mz2500_emm_data_w)); + map(0xae, 0xae).w(this, FUNC(mz2500_state::palette4096_io_w)); // AM_RANGE(0xb0, 0xb3) AM_READWRITE(sio_r,sio_w) - AM_RANGE(0xb4, 0xb4) AM_READWRITE(mz2500_bank_addr_r,mz2500_bank_addr_w) - AM_RANGE(0xb5, 0xb5) AM_READWRITE(mz2500_bank_data_r,mz2500_bank_data_w) - AM_RANGE(0xb7, 0xb7) AM_WRITENOP - AM_RANGE(0xb8, 0xb9) AM_READWRITE(mz2500_kanji_r,mz2500_kanji_w) - AM_RANGE(0xbc, 0xbc) AM_READ(mz2500_bplane_latch_r) AM_WRITE(mz2500_cg_addr_w) - AM_RANGE(0xbd, 0xbd) AM_READ(mz2500_rplane_latch_r) AM_WRITE(mz2500_cg_data_w) - AM_RANGE(0xbe, 0xbe) AM_READ(mz2500_gplane_latch_r) - AM_RANGE(0xbf, 0xbf) AM_READ(mz2500_iplane_latch_r) - AM_RANGE(0xc6, 0xc6) AM_WRITE(mz2500_irq_sel_w) - AM_RANGE(0xc7, 0xc7) AM_WRITE(mz2500_irq_data_w) - AM_RANGE(0xc8, 0xc9) AM_DEVREADWRITE("ym", ym2203_device, read, write) + map(0xb4, 0xb4).rw(this, FUNC(mz2500_state::mz2500_bank_addr_r), FUNC(mz2500_state::mz2500_bank_addr_w)); + map(0xb5, 0xb5).rw(this, FUNC(mz2500_state::mz2500_bank_data_r), FUNC(mz2500_state::mz2500_bank_data_w)); + map(0xb7, 0xb7).nopw(); + map(0xb8, 0xb9).rw(this, FUNC(mz2500_state::mz2500_kanji_r), FUNC(mz2500_state::mz2500_kanji_w)); + map(0xbc, 0xbc).r(this, FUNC(mz2500_state::mz2500_bplane_latch_r)).w(this, FUNC(mz2500_state::mz2500_cg_addr_w)); + map(0xbd, 0xbd).r(this, FUNC(mz2500_state::mz2500_rplane_latch_r)).w(this, FUNC(mz2500_state::mz2500_cg_data_w)); + map(0xbe, 0xbe).r(this, FUNC(mz2500_state::mz2500_gplane_latch_r)); + map(0xbf, 0xbf).r(this, FUNC(mz2500_state::mz2500_iplane_latch_r)); + map(0xc6, 0xc6).w(this, FUNC(mz2500_state::mz2500_irq_sel_w)); + map(0xc7, 0xc7).w(this, FUNC(mz2500_state::mz2500_irq_data_w)); + map(0xc8, 0xc9).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // AM_RANGE(0xca, 0xca) AM_READWRITE(voice_r,voice_w) - AM_RANGE(0xcc, 0xcc) AM_READWRITE(rp5c15_8_r, rp5c15_8_w) - AM_RANGE(0xce, 0xce) AM_WRITE(mz2500_dictionary_bank_w) - AM_RANGE(0xcf, 0xcf) AM_WRITE(mz2500_kanji_bank_w) - AM_RANGE(0xd8, 0xdb) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0xdc, 0xdc) AM_WRITE(floppy_select_w) - AM_RANGE(0xdd, 0xdd) AM_WRITE(floppy_side_w) - AM_RANGE(0xde, 0xde) AM_WRITENOP - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xe8, 0xeb) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt) - AM_RANGE(0xef, 0xef) AM_READWRITE(mz2500_joystick_r,mz2500_joystick_w) - AM_RANGE(0xf0, 0xf3) AM_WRITE(timer_w) - AM_RANGE(0xf4, 0xf7) AM_READ(mz2500_crtc_hvblank_r) AM_WRITE(mz2500_tv_crtc_w) + map(0xcc, 0xcc).rw(this, FUNC(mz2500_state::rp5c15_8_r), FUNC(mz2500_state::rp5c15_8_w)); + map(0xce, 0xce).w(this, FUNC(mz2500_state::mz2500_dictionary_bank_w)); + map(0xcf, 0xcf).w(this, FUNC(mz2500_state::mz2500_kanji_bank_w)); + map(0xd8, 0xdb).rw(this, FUNC(mz2500_state::fdc_r), FUNC(mz2500_state::fdc_w)); + map(0xdc, 0xdc).w(this, FUNC(mz2500_state::floppy_select_w)); + map(0xdd, 0xdd).w(this, FUNC(mz2500_state::floppy_side_w)); + map(0xde, 0xde).nopw(); + map(0xe0, 0xe3).rw("i8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe4, 0xe7).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xe8, 0xeb).rw("z80pio_1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0xef, 0xef).rw(this, FUNC(mz2500_state::mz2500_joystick_r), FUNC(mz2500_state::mz2500_joystick_w)); + map(0xf0, 0xf3).w(this, FUNC(mz2500_state::timer_w)); + map(0xf4, 0xf7).r(this, FUNC(mz2500_state::mz2500_crtc_hvblank_r)).w(this, FUNC(mz2500_state::mz2500_tv_crtc_w)); // AM_RANGE(0xf8, 0xf9) AM_READWRITE(extrom_r,extrom_w) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( mz2500 ) diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp index 86c6d304df8..7b958380d27 100644 --- a/src/mame/drivers/mz3500.cpp +++ b/src/mame/drivers/mz3500.cpp @@ -591,41 +591,45 @@ READ8_MEMBER(mz3500_state::mz3500_fdc_dma_r) return m_fdc->dma_r(); } -ADDRESS_MAP_START(mz3500_state::mz3500_master_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mz3500_master_mem_r,mz3500_master_mem_w) -ADDRESS_MAP_END +void mz3500_state::mz3500_master_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(mz3500_state::mz3500_master_mem_r), FUNC(mz3500_state::mz3500_master_mem_w)); +} -ADDRESS_MAP_START(mz3500_state::mz3500_master_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void mz3500_state::mz3500_master_io(address_map &map) +{ + map.global_mask(0xff); // ADDRESS_MAP_UNMAP_HIGH // AM_RANGE(0xe4, 0xe7) SFD upd765 // AM_RANGE(0xe8, 0xeb) SFD I/O port and DMAC chip select // AM_RANGE(0xec, 0xef) irq signal from slave to master CPU - AM_RANGE(0xf4, 0xf5) AM_DEVICE("upd765a", upd765a_device, map) // MFD upd765 + map(0xf4, 0xf5).m(m_fdc, FUNC(upd765a_device::map)); // MFD upd765 // AM_RANGE(0xf8, 0xfb) MFD I/O port - AM_RANGE(0xf8, 0xf8) AM_READWRITE(mz3500_fdc_r,mz3500_fdc_w) - AM_RANGE(0xf9, 0xf9) AM_READ(mz3500_fdc_dma_r) - AM_RANGE(0xfc, 0xff) AM_READWRITE(mz3500_io_r,mz3500_io_w) // memory mapper -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz3500_state::mz3500_slave_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("ipl", 0) - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(mz3500_shared_ram_r, mz3500_shared_ram_w) - AM_RANGE(0x4000, 0x5fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz3500_state::mz3500_slave_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH + map(0xf8, 0xf8).rw(this, FUNC(mz3500_state::mz3500_fdc_r), FUNC(mz3500_state::mz3500_fdc_w)); + map(0xf9, 0xf9).r(this, FUNC(mz3500_state::mz3500_fdc_dma_r)); + map(0xfc, 0xff).rw(this, FUNC(mz3500_state::mz3500_io_r), FUNC(mz3500_state::mz3500_io_w)); // memory mapper +} + +void mz3500_state::mz3500_slave_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("ipl", 0); + map(0x2000, 0x27ff).rw(this, FUNC(mz3500_state::mz3500_shared_ram_r), FUNC(mz3500_state::mz3500_shared_ram_w)); + map(0x4000, 0x5fff).ram(); +} + +void mz3500_state::mz3500_slave_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); // AM_RANGE(0x00, 0x0f) f/f and irq to master CPU // AM_RANGE(0x10, 0x1f) i8251 // AM_RANGE(0x20, 0x2f) pit8253 - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("i8255", i8255_device, read, write) - AM_RANGE(0x40, 0x40) AM_READ_PORT("DSW") - AM_RANGE(0x50, 0x5f) AM_RAM_WRITE(mz3500_crtc_w) - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("upd7220_gfx", upd7220_device, read, write) - AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("upd7220_chr", upd7220_device, read, write) -ADDRESS_MAP_END + map(0x30, 0x33).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x40).portr("DSW"); + map(0x50, 0x5f).ram().w(this, FUNC(mz3500_state::mz3500_crtc_w)); + map(0x60, 0x61).rw(m_hgdc2, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); + map(0x70, 0x71).rw(m_hgdc1, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); +} WRITE8_MEMBER(mz3500_state::mz3500_pa_w) { @@ -793,14 +797,16 @@ void mz3500_state::machine_reset() } -ADDRESS_MAP_START(mz3500_state::upd7220_1_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x00000, 0x00fff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END +void mz3500_state::upd7220_1_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x00000, 0x00fff).ram().share("video_ram"); +} -ADDRESS_MAP_START(mz3500_state::upd7220_2_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM // AM_SHARE("video_ram_2") -ADDRESS_MAP_END +void mz3500_state::upd7220_2_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); // AM_SHARE("video_ram_2") +} static SLOT_INTERFACE_START( mz3500_floppies ) SLOT_INTERFACE( "525ssdd", FLOPPY_525_SSDD ) diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp index a9c1c94fb39..8441cb4c3ba 100644 --- a/src/mame/drivers/mz6500.cpp +++ b/src/mame/drivers/mz6500.cpp @@ -80,26 +80,28 @@ WRITE8_MEMBER( mz6500_state::mz6500_vram_w ) m_video_ram[offset] |= data << mask; } -ADDRESS_MAP_START(mz6500_state::mz6500_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x9ffff) AM_RAM +void mz6500_state::mz6500_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x9ffff).ram(); // AM_RANGE(0xa0000,0xbffff) kanji/dictionary ROM - AM_RANGE(0xc0000,0xeffff) AM_READWRITE8(mz6500_vram_r,mz6500_vram_w,0xffff) - AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END + map(0xc0000, 0xeffff).rw(this, FUNC(mz6500_state::mz6500_vram_r), FUNC(mz6500_state::mz6500_vram_w)); + map(0xfc000, 0xfffff).rom().region("ipl", 0); +} -ADDRESS_MAP_START(mz6500_state::mz6500_io) - ADDRESS_MAP_UNMAP_HIGH +void mz6500_state::mz6500_io(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x0000, 0x000f) i8237 dma // AM_RANGE(0x0010, 0x001f) i8255 - AM_RANGE(0x0020, 0x0021) AM_MIRROR(0xe) AM_DEVICE8("upd765", upd765a_device, map, 0xffff) + map(0x0020, 0x0021).mirror(0xe).m(m_fdc, FUNC(upd765a_device::map)); // AM_RANGE(0x0030, 0x003f) i8259 master // AM_RANGE(0x0040, 0x004f) i8259 slave // AM_RANGE(0x0050, 0x0050) segment byte for DMA // AM_RANGE(0x0060, 0x0060) system port A // AM_RANGE(0x0070, 0x0070) system port C // AM_RANGE(0x00cd, 0x00cd) MZ-1R32 - AM_RANGE(0x0100, 0x0103) AM_MIRROR(0xc) AM_DEVREADWRITE8("upd7220", upd7220_device, read, write, 0x00ff) + map(0x0100, 0x0103).mirror(0xc).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask16(0x00ff); // AM_RANGE(0x0110, 0x011f) video address / data registers (priority) // AM_RANGE(0x0120, 0x012f) video registers // AM_RANGE(0x0130, 0x013f) video register @@ -111,7 +113,7 @@ ADDRESS_MAP_START(mz6500_state::mz6500_io) // AM_RANGE(0x0240, 0x0240) z80ctc vector ack // AM_RANGE(0x0250, 0x0250) z80sio vector ack // AM_RANGE(0x0270, 0x0270) system port B -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( mz6500 ) @@ -136,9 +138,10 @@ static SLOT_INTERFACE_START( mz6500_floppies ) SLOT_INTERFACE( "525hd", FLOPPY_525_HD ) SLOT_INTERFACE_END -ADDRESS_MAP_START(mz6500_state::upd7220_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END +void mz6500_state::upd7220_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram().share("video_ram"); +} MACHINE_CONFIG_START(mz6500_state::mz6500) diff --git a/src/mame/drivers/mz700.cpp b/src/mame/drivers/mz700.cpp index 6b3493873f3..73c8a16dcc4 100644 --- a/src/mame/drivers/mz700.cpp +++ b/src/mame/drivers/mz700.cpp @@ -112,81 +112,87 @@ TIMER_DEVICE_CALLBACK_MEMBER(mz_state::ne556_other_callback) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(mz_state::mz700_mem) - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x1000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bankd") - AM_RANGE(0xe000, 0xffff) AM_DEVICE("banke", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz_state::mz700_banke) +void mz_state::mz700_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0xcfff).ram(); + map(0xd000, 0xdfff).bankrw("bankd"); + map(0xe000, 0xffff).m(m_banke, FUNC(address_map_bank_device::amap8)); +} + +void mz_state::mz700_banke(address_map &map) +{ // bank 0: ram (mz700_bank1) - AM_RANGE(0x0000, 0x1fff) AM_RAM + map(0x0000, 0x1fff).ram(); // bank 1: devices (mz700_bank3) - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x2004, 0x2007) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x2008, 0x200b) AM_MIRROR(0x1ff0) AM_READWRITE(mz700_e008_r,mz700_e008_w) - AM_RANGE(0x200c, 0x200f) AM_MIRROR(0x1ff0) AM_NOP + map(0x2000, 0x2003).mirror(0x1ff0).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x2004, 0x2007).mirror(0x1ff0).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x2008, 0x200b).mirror(0x1ff0).rw(this, FUNC(mz_state::mz700_e008_r), FUNC(mz_state::mz700_e008_w)); + map(0x200c, 0x200f).mirror(0x1ff0).noprw(); // bank 2: switched out (mz700_bank5) - AM_RANGE(0x4000, 0x5fff) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz_state::mz700_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mz700_bank_0_w) - AM_RANGE(0xe1, 0xe1) AM_WRITE(mz700_bank_1_w) - AM_RANGE(0xe2, 0xe2) AM_WRITE(mz700_bank_2_w) - AM_RANGE(0xe3, 0xe3) AM_WRITE(mz700_bank_3_w) - AM_RANGE(0xe4, 0xe4) AM_WRITE(mz700_bank_4_w) - AM_RANGE(0xe5, 0xe5) AM_WRITE(mz700_bank_5_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(mz700_bank_6_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz_state::mz800_mem) - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0x2000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("banka") - AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bankc") - AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bankd") - AM_RANGE(0xe000, 0xffff) AM_DEVICE("bankf", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz_state::mz800_bankf) + map(0x4000, 0x5fff).noprw(); +} + +void mz_state::mz700_io(address_map &map) +{ + map.global_mask(0xff); + map(0xe0, 0xe0).w(this, FUNC(mz_state::mz700_bank_0_w)); + map(0xe1, 0xe1).w(this, FUNC(mz_state::mz700_bank_1_w)); + map(0xe2, 0xe2).w(this, FUNC(mz_state::mz700_bank_2_w)); + map(0xe3, 0xe3).w(this, FUNC(mz_state::mz700_bank_3_w)); + map(0xe4, 0xe4).w(this, FUNC(mz_state::mz700_bank_4_w)); + map(0xe5, 0xe5).w(this, FUNC(mz_state::mz700_bank_5_w)); + map(0xe6, 0xe6).w(this, FUNC(mz_state::mz700_bank_6_w)); +} + +void mz_state::mz800_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x7fff).ram(); + map(0x8000, 0xbfff).bankrw("banka"); + map(0xc000, 0xcfff).bankrw("bankc"); + map(0xd000, 0xdfff).bankrw("bankd"); + map(0xe000, 0xffff).m(m_bankf, FUNC(address_map_bank_device::amap8)); +} + +void mz_state::mz800_bankf(address_map &map) +{ // bank 0: ram (mz700_bank1) - AM_RANGE(0x0000, 0x1fff) AM_RAM + map(0x0000, 0x1fff).ram(); // bank 1: devices (mz700_bank3) - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x2004, 0x2007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x2008, 0x200b) AM_READWRITE(mz700_e008_r,mz700_e008_w) - AM_RANGE(0x200c, 0x200f) AM_NOP - AM_RANGE(0x2010, 0x3fff) AM_ROM AM_REGION("monitor", 0x2010) + map(0x2000, 0x2003).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x2004, 0x2007).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x2008, 0x200b).rw(this, FUNC(mz_state::mz700_e008_r), FUNC(mz_state::mz700_e008_w)); + map(0x200c, 0x200f).noprw(); + map(0x2010, 0x3fff).rom().region("monitor", 0x2010); // bank 2: switched out (mz700_bank5) - AM_RANGE(0x4000, 0x5fff) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz_state::mz800_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xcc, 0xcc) AM_WRITE(mz800_write_format_w ) - AM_RANGE(0xcd, 0xcd) AM_WRITE(mz800_read_format_w ) - AM_RANGE(0xce, 0xce) AM_READWRITE(mz800_crtc_r, mz800_display_mode_w ) - AM_RANGE(0xcf, 0xcf) AM_WRITE(mz800_scroll_border_w ) - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0xd4, 0xd7) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0xe0, 0xe0) AM_READWRITE(mz800_bank_0_r, mz800_bank_0_w) - AM_RANGE(0xe1, 0xe1) AM_READWRITE(mz800_bank_1_r, mz700_bank_1_w) - AM_RANGE(0xe2, 0xe2) AM_WRITE(mz700_bank_2_w) - AM_RANGE(0xe3, 0xe3) AM_WRITE(mz700_bank_3_w) - AM_RANGE(0xe4, 0xe4) AM_WRITE(mz700_bank_4_w) - AM_RANGE(0xe5, 0xe5) AM_WRITE(mz700_bank_5_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(mz700_bank_6_w) - AM_RANGE(0xea, 0xea) AM_READWRITE(mz800_ramdisk_r, mz800_ramdisk_w ) - AM_RANGE(0xeb, 0xeb) AM_WRITE(mz800_ramaddr_w ) - AM_RANGE(0xf0, 0xf0) AM_READ_PORT("atari_joy1") AM_WRITE(mz800_palette_w) - AM_RANGE(0xf1, 0xf1) AM_READ_PORT("atari_joy2") - AM_RANGE(0xf2, 0xf2) AM_DEVWRITE("sn76489n", sn76489_device, write) - AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) -ADDRESS_MAP_END + map(0x4000, 0x5fff).noprw(); +} + +void mz_state::mz800_io(address_map &map) +{ + map.global_mask(0xff); + map(0xcc, 0xcc).w(this, FUNC(mz_state::mz800_write_format_w)); + map(0xcd, 0xcd).w(this, FUNC(mz_state::mz800_read_format_w)); + map(0xce, 0xce).rw(this, FUNC(mz_state::mz800_crtc_r), FUNC(mz_state::mz800_display_mode_w)); + map(0xcf, 0xcf).w(this, FUNC(mz_state::mz800_scroll_border_w)); + map(0xd0, 0xd3).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xd4, 0xd7).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xe0, 0xe0).rw(this, FUNC(mz_state::mz800_bank_0_r), FUNC(mz_state::mz800_bank_0_w)); + map(0xe1, 0xe1).rw(this, FUNC(mz_state::mz800_bank_1_r), FUNC(mz_state::mz700_bank_1_w)); + map(0xe2, 0xe2).w(this, FUNC(mz_state::mz700_bank_2_w)); + map(0xe3, 0xe3).w(this, FUNC(mz_state::mz700_bank_3_w)); + map(0xe4, 0xe4).w(this, FUNC(mz_state::mz700_bank_4_w)); + map(0xe5, 0xe5).w(this, FUNC(mz_state::mz700_bank_5_w)); + map(0xe6, 0xe6).w(this, FUNC(mz_state::mz700_bank_6_w)); + map(0xea, 0xea).rw(this, FUNC(mz_state::mz800_ramdisk_r), FUNC(mz_state::mz800_ramdisk_w)); + map(0xeb, 0xeb).w(this, FUNC(mz_state::mz800_ramaddr_w)); + map(0xf0, 0xf0).portr("atari_joy1").w(this, FUNC(mz_state::mz800_palette_w)); + map(0xf1, 0xf1).portr("atari_joy2"); + map(0xf2, 0xf2).w("sn76489n", FUNC(sn76489_device::write)); + map(0xfc, 0xff).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/mz80.cpp b/src/mame/drivers/mz80.cpp index 5c5c9ea97a0..8eaa595c481 100644 --- a/src/mame/drivers/mz80.cpp +++ b/src/mame/drivers/mz80.cpp @@ -245,21 +245,23 @@ static INPUT_PORTS_START( mz80a ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) INPUT_PORTS_END -ADDRESS_MAP_START(mz80_state::mz80k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0xcfff) AM_RAM AM_SHARE("p_ram") // 48 KB of RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("videoram") // Video RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) /* PPIA 8255 */ - AM_RANGE(0xe004, 0xe007) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) /* PIT 8253 */ - AM_RANGE(0xe008, 0xe00b) AM_READWRITE( mz80k_strobe_r, mz80k_strobe_w) - AM_RANGE(0xf000, 0xf3ff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mz80_state::mz80k_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void mz80_state::mz80k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0xcfff).ram().share("p_ram"); // 48 KB of RAM + map(0xd000, 0xd7ff).ram().share("videoram"); // Video RAM + map(0xe000, 0xe003).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); /* PPIA 8255 */ + map(0xe004, 0xe007).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); /* PIT 8253 */ + map(0xe008, 0xe00b).rw(this, FUNC(mz80_state::mz80k_strobe_r), FUNC(mz80_state::mz80k_strobe_w)); + map(0xf000, 0xf3ff).rom(); +} + +void mz80_state::mz80k_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); +} static GFXDECODE_START( mz80k ) GFXDECODE_ENTRY( "chargen", 0x0000, mz80k_charlayout, 0, 1 ) diff --git a/src/mame/drivers/mzr8105.cpp b/src/mame/drivers/mzr8105.cpp index 0f31f0bfc7f..1c18b485535 100644 --- a/src/mame/drivers/mzr8105.cpp +++ b/src/mame/drivers/mzr8105.cpp @@ -184,15 +184,16 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(mzr8105_state::mzr8105_mem) - ADDRESS_MAP_UNMAP_HIGH +void mzr8105_state::mzr8105_mem(address_map &map) +{ + map.unmap_value_high(); /* The ROMs contains an OS9 bootloader. It is position independent but reset vector suggests that it sits flat on adress 0 (zero) */ - AM_RANGE (0x000000, 0x003fff) AM_ROM AM_REGION("roms", 0x000000) /* System EPROM Area 16Kb OS9 DEBUG - not verified */ - AM_RANGE (0x004000, 0x01ffff) AM_ROM AM_REGION("roms", 0x004000)/* System EPROM Area 112Kb for System ROM - not verified */ - AM_RANGE (0x020000, 0x03ffff) AM_RAM /* Not verified */ + map(0x000000, 0x003fff).rom().region("roms", 0x000000); /* System EPROM Area 16Kb OS9 DEBUG - not verified */ + map(0x004000, 0x01ffff).rom().region("roms", 0x004000);/* System EPROM Area 112Kb for System ROM - not verified */ + map(0x020000, 0x03ffff).ram(); /* Not verified */ // AM_RANGE (0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */ // AM_RANGE (0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START (mzr8105) diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp index 477765a03b3..7fc8e8991f9 100644 --- a/src/mame/drivers/n64.cpp +++ b/src/mame/drivers/n64.cpp @@ -50,53 +50,56 @@ READ32_MEMBER(n64_mess_state::dd_null_r) return 0xffffffff; } -ADDRESS_MAP_START(n64_mess_state::n64_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rdram") // RDRAM - AM_RANGE(0x03f00000, 0x03f00027) AM_DEVREADWRITE("rcp", n64_periphs, rdram_reg_r, rdram_reg_w) - AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") // RSP DMEM - AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") // RSP IMEM - AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rcp", n64_periphs, sp_reg_r, sp_reg_w) // RSP - AM_RANGE(0x04100000, 0x041fffff) AM_DEVREADWRITE("rcp", n64_periphs, dp_reg_r, dp_reg_w) // RDP - AM_RANGE(0x04300000, 0x043fffff) AM_DEVREADWRITE("rcp", n64_periphs, mi_reg_r, mi_reg_w) // MIPS Interface - AM_RANGE(0x04400000, 0x044fffff) AM_DEVREADWRITE("rcp", n64_periphs, vi_reg_r, vi_reg_w) // Video Interface - AM_RANGE(0x04500000, 0x045fffff) AM_DEVREADWRITE("rcp", n64_periphs, ai_reg_r, ai_reg_w) // Audio Interface - AM_RANGE(0x04600000, 0x046fffff) AM_DEVREADWRITE("rcp", n64_periphs, pi_reg_r, pi_reg_w) // Peripheral Interface - AM_RANGE(0x04700000, 0x047fffff) AM_DEVREADWRITE("rcp", n64_periphs, ri_reg_r, ri_reg_w) // RDRAM Interface - AM_RANGE(0x04800000, 0x048fffff) AM_DEVREADWRITE("rcp", n64_periphs, si_reg_r, si_reg_w) // Serial Interface - AM_RANGE(0x05000508, 0x0500050b) AM_READ(dd_null_r); - AM_RANGE(0x08000000, 0x0801ffff) AM_RAM AM_SHARE("sram") // Cartridge SRAM - AM_RANGE(0x10000000, 0x13ffffff) AM_ROM AM_REGION("user2", 0) // Cartridge - AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM - AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(n64_mess_state::n64dd_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("rdram") // RDRAM - AM_RANGE(0x03f00000, 0x03f00027) AM_DEVREADWRITE("rcp", n64_periphs, rdram_reg_r, rdram_reg_w) - AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") // RSP DMEM - AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") // RSP IMEM - AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rcp", n64_periphs, sp_reg_r, sp_reg_w) // RSP - AM_RANGE(0x04100000, 0x041fffff) AM_DEVREADWRITE("rcp", n64_periphs, dp_reg_r, dp_reg_w) // RDP - AM_RANGE(0x04300000, 0x043fffff) AM_DEVREADWRITE("rcp", n64_periphs, mi_reg_r, mi_reg_w) // MIPS Interface - AM_RANGE(0x04400000, 0x044fffff) AM_DEVREADWRITE("rcp", n64_periphs, vi_reg_r, vi_reg_w) // Video Interface - AM_RANGE(0x04500000, 0x045fffff) AM_DEVREADWRITE("rcp", n64_periphs, ai_reg_r, ai_reg_w) // Audio Interface - AM_RANGE(0x04600000, 0x046fffff) AM_DEVREADWRITE("rcp", n64_periphs, pi_reg_r, pi_reg_w) // Peripheral Interface - AM_RANGE(0x04700000, 0x047fffff) AM_DEVREADWRITE("rcp", n64_periphs, ri_reg_r, ri_reg_w) // RDRAM Interface - AM_RANGE(0x04800000, 0x048fffff) AM_DEVREADWRITE("rcp", n64_periphs, si_reg_r, si_reg_w) // Serial Interface - AM_RANGE(0x05000000, 0x05ffffff) AM_DEVREADWRITE("rcp", n64_periphs, dd_reg_r, dd_reg_w) // 64DD Interface - AM_RANGE(0x06000000, 0x063fffff) AM_ROM AM_REGION("ddipl", 0) // 64DD IPL ROM - AM_RANGE(0x08000000, 0x0801ffff) AM_RAM AM_SHARE("sram") // Cartridge SRAM - AM_RANGE(0x10000000, 0x13ffffff) AM_ROM AM_REGION("user2", 0) // Cartridge - AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM - AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_DEVREADWRITE("rcp", n64_periphs, pif_ram_r, pif_ram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(n64_mess_state::rsp_map) - AM_RANGE(0x00000000, 0x00000fff) AM_RAM AM_SHARE("rsp_dmem") - AM_RANGE(0x00001000, 0x00001fff) AM_RAM AM_SHARE("rsp_imem") - AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("rsp_dmem") - AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("rsp_imem") -ADDRESS_MAP_END +void n64_mess_state::n64_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram().share("rdram"); // RDRAM + map(0x03f00000, 0x03f00027).rw("rcp", FUNC(n64_periphs::rdram_reg_r), FUNC(n64_periphs::rdram_reg_w)); + map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); // RSP DMEM + map(0x04001000, 0x04001fff).ram().share("rsp_imem"); // RSP IMEM + map(0x04040000, 0x040fffff).rw("rcp", FUNC(n64_periphs::sp_reg_r), FUNC(n64_periphs::sp_reg_w)); // RSP + map(0x04100000, 0x041fffff).rw("rcp", FUNC(n64_periphs::dp_reg_r), FUNC(n64_periphs::dp_reg_w)); // RDP + map(0x04300000, 0x043fffff).rw("rcp", FUNC(n64_periphs::mi_reg_r), FUNC(n64_periphs::mi_reg_w)); // MIPS Interface + map(0x04400000, 0x044fffff).rw("rcp", FUNC(n64_periphs::vi_reg_r), FUNC(n64_periphs::vi_reg_w)); // Video Interface + map(0x04500000, 0x045fffff).rw("rcp", FUNC(n64_periphs::ai_reg_r), FUNC(n64_periphs::ai_reg_w)); // Audio Interface + map(0x04600000, 0x046fffff).rw("rcp", FUNC(n64_periphs::pi_reg_r), FUNC(n64_periphs::pi_reg_w)); // Peripheral Interface + map(0x04700000, 0x047fffff).rw("rcp", FUNC(n64_periphs::ri_reg_r), FUNC(n64_periphs::ri_reg_w)); // RDRAM Interface + map(0x04800000, 0x048fffff).rw("rcp", FUNC(n64_periphs::si_reg_r), FUNC(n64_periphs::si_reg_w)); // Serial Interface + map(0x05000508, 0x0500050b).r(this, FUNC(n64_mess_state::dd_null_r)); + map(0x08000000, 0x0801ffff).ram().share("sram"); // Cartridge SRAM + map(0x10000000, 0x13ffffff).rom().region("user2", 0); // Cartridge + map(0x1fc00000, 0x1fc007bf).rom().region("user1", 0); // PIF ROM + map(0x1fc007c0, 0x1fc007ff).rw("rcp", FUNC(n64_periphs::pif_ram_r), FUNC(n64_periphs::pif_ram_w)); +} + +void n64_mess_state::n64dd_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram().share("rdram"); // RDRAM + map(0x03f00000, 0x03f00027).rw("rcp", FUNC(n64_periphs::rdram_reg_r), FUNC(n64_periphs::rdram_reg_w)); + map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); // RSP DMEM + map(0x04001000, 0x04001fff).ram().share("rsp_imem"); // RSP IMEM + map(0x04040000, 0x040fffff).rw("rcp", FUNC(n64_periphs::sp_reg_r), FUNC(n64_periphs::sp_reg_w)); // RSP + map(0x04100000, 0x041fffff).rw("rcp", FUNC(n64_periphs::dp_reg_r), FUNC(n64_periphs::dp_reg_w)); // RDP + map(0x04300000, 0x043fffff).rw("rcp", FUNC(n64_periphs::mi_reg_r), FUNC(n64_periphs::mi_reg_w)); // MIPS Interface + map(0x04400000, 0x044fffff).rw("rcp", FUNC(n64_periphs::vi_reg_r), FUNC(n64_periphs::vi_reg_w)); // Video Interface + map(0x04500000, 0x045fffff).rw("rcp", FUNC(n64_periphs::ai_reg_r), FUNC(n64_periphs::ai_reg_w)); // Audio Interface + map(0x04600000, 0x046fffff).rw("rcp", FUNC(n64_periphs::pi_reg_r), FUNC(n64_periphs::pi_reg_w)); // Peripheral Interface + map(0x04700000, 0x047fffff).rw("rcp", FUNC(n64_periphs::ri_reg_r), FUNC(n64_periphs::ri_reg_w)); // RDRAM Interface + map(0x04800000, 0x048fffff).rw("rcp", FUNC(n64_periphs::si_reg_r), FUNC(n64_periphs::si_reg_w)); // Serial Interface + map(0x05000000, 0x05ffffff).rw("rcp", FUNC(n64_periphs::dd_reg_r), FUNC(n64_periphs::dd_reg_w)); // 64DD Interface + map(0x06000000, 0x063fffff).rom().region("ddipl", 0); // 64DD IPL ROM + map(0x08000000, 0x0801ffff).ram().share("sram"); // Cartridge SRAM + map(0x10000000, 0x13ffffff).rom().region("user2", 0); // Cartridge + map(0x1fc00000, 0x1fc007bf).rom().region("user1", 0); // PIF ROM + map(0x1fc007c0, 0x1fc007ff).rw("rcp", FUNC(n64_periphs::pif_ram_r), FUNC(n64_periphs::pif_ram_w)); +} + +void n64_mess_state::rsp_map(address_map &map) +{ + map(0x00000000, 0x00000fff).ram().share("rsp_dmem"); + map(0x00001000, 0x00001fff).ram().share("rsp_imem"); + map(0x04000000, 0x04000fff).ram().share("rsp_dmem"); + map(0x04001000, 0x04001fff).ram().share("rsp_imem"); +} static INPUT_PORTS_START( n64 ) PORT_START("input") diff --git a/src/mame/drivers/n8080.cpp b/src/mame/drivers/n8080.cpp index f076b9b885d..4f5a540b3c6 100644 --- a/src/mame/drivers/n8080.cpp +++ b/src/mame/drivers/n8080.cpp @@ -34,33 +34,36 @@ READ8_MEMBER(n8080_state::n8080_shift_r) return m_shift_data >> (8 - m_shift_bits); } -ADDRESS_MAP_START(n8080_state::main_cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(n8080_state::helifire_main_cpu_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(n8080_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ(n8080_shift_r) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN3") - - AM_RANGE(0x02, 0x02) AM_WRITE(n8080_shift_bits_w) - AM_RANGE(0x03, 0x03) AM_WRITE(n8080_shift_data_w) - AM_RANGE(0x04, 0x04) AM_WRITE(n8080_sound_1_w) - AM_RANGE(0x05, 0x05) AM_WRITE(n8080_sound_2_w) - AM_RANGE(0x06, 0x06) AM_WRITE(n8080_video_control_w) -ADDRESS_MAP_END +void n8080_state::main_cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).ram().share("videoram"); +} + + +void n8080_state::helifire_main_cpu_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).ram().share("videoram"); + map(0xc000, 0xdfff).ram().share("colorram"); +} + +void n8080_state::main_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).r(this, FUNC(n8080_state::n8080_shift_r)); + map(0x04, 0x04).portr("IN3"); + + map(0x02, 0x02).w(this, FUNC(n8080_state::n8080_shift_bits_w)); + map(0x03, 0x03).w(this, FUNC(n8080_state::n8080_shift_data_w)); + map(0x04, 0x04).w(this, FUNC(n8080_state::n8080_sound_1_w)); + map(0x05, 0x05).w(this, FUNC(n8080_state::n8080_sound_2_w)); + map(0x06, 0x06).w(this, FUNC(n8080_state::n8080_video_control_w)); +} /* Input ports */ diff --git a/src/mame/drivers/nakajies.cpp b/src/mame/drivers/nakajies.cpp index 41e36f4a240..0829a3b0502 100644 --- a/src/mame/drivers/nakajies.cpp +++ b/src/mame/drivers/nakajies.cpp @@ -398,16 +398,17 @@ WRITE8_MEMBER( nakajies_state::bank6_w ) { bank_w( 6, offset, data ); } WRITE8_MEMBER( nakajies_state::bank7_w ) { bank_w( 7, offset, data ); } -ADDRESS_MAP_START(nakajies_state::nakajies_map) - AM_RANGE( 0x00000, 0x1ffff ) AM_READ_BANK( "bank0" ) AM_WRITE( bank0_w ) - AM_RANGE( 0x20000, 0x3ffff ) AM_READ_BANK( "bank1" ) AM_WRITE( bank1_w ) - AM_RANGE( 0x40000, 0x5ffff ) AM_READ_BANK( "bank2" ) AM_WRITE( bank2_w ) - AM_RANGE( 0x60000, 0x7ffff ) AM_READ_BANK( "bank3" ) AM_WRITE( bank3_w ) - AM_RANGE( 0x80000, 0x9ffff ) AM_READ_BANK( "bank4" ) AM_WRITE( bank4_w ) - AM_RANGE( 0xa0000, 0xbffff ) AM_READ_BANK( "bank5" ) AM_WRITE( bank5_w ) - AM_RANGE( 0xc0000, 0xdffff ) AM_READ_BANK( "bank6" ) AM_WRITE( bank6_w ) - AM_RANGE( 0xe0000, 0xfffff ) AM_READ_BANK( "bank7" ) AM_WRITE( bank7_w ) -ADDRESS_MAP_END +void nakajies_state::nakajies_map(address_map &map) +{ + map(0x00000, 0x1ffff).bankr("bank0").w(this, FUNC(nakajies_state::bank0_w)); + map(0x20000, 0x3ffff).bankr("bank1").w(this, FUNC(nakajies_state::bank1_w)); + map(0x40000, 0x5ffff).bankr("bank2").w(this, FUNC(nakajies_state::bank2_w)); + map(0x60000, 0x7ffff).bankr("bank3").w(this, FUNC(nakajies_state::bank3_w)); + map(0x80000, 0x9ffff).bankr("bank4").w(this, FUNC(nakajies_state::bank4_w)); + map(0xa0000, 0xbffff).bankr("bank5").w(this, FUNC(nakajies_state::bank5_w)); + map(0xc0000, 0xdffff).bankr("bank6").w(this, FUNC(nakajies_state::bank6_w)); + map(0xe0000, 0xfffff).bankr("bank7").w(this, FUNC(nakajies_state::bank7_w)); +} /********************************************* @@ -501,15 +502,16 @@ READ8_MEMBER( nakajies_state::keyboard_r ) } -ADDRESS_MAP_START(nakajies_state::nakajies_io_map) - AM_RANGE( 0x0000, 0x0000 ) AM_WRITE( lcd_memory_start_w ) - AM_RANGE( 0x0010, 0x0017 ) AM_WRITE( banking_w ) - AM_RANGE( 0x0060, 0x0060 ) AM_READWRITE( irq_enable_r, irq_enable_w ) - AM_RANGE( 0x0090, 0x0090 ) AM_READWRITE( irq_clear_r, irq_clear_w ) - AM_RANGE( 0x00a0, 0x00a0 ) AM_READ( unk_a0_r ) - AM_RANGE( 0x00b0, 0x00b0 ) AM_READ( keyboard_r ) - AM_RANGE( 0x00d0, 0x00df ) AM_DEVREADWRITE("rtc", rp5c01_device, read, write) -ADDRESS_MAP_END +void nakajies_state::nakajies_io_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(nakajies_state::lcd_memory_start_w)); + map(0x0010, 0x0017).w(this, FUNC(nakajies_state::banking_w)); + map(0x0060, 0x0060).rw(this, FUNC(nakajies_state::irq_enable_r), FUNC(nakajies_state::irq_enable_w)); + map(0x0090, 0x0090).rw(this, FUNC(nakajies_state::irq_clear_r), FUNC(nakajies_state::irq_clear_w)); + map(0x00a0, 0x00a0).r(this, FUNC(nakajies_state::unk_a0_r)); + map(0x00b0, 0x00b0).r(this, FUNC(nakajies_state::keyboard_r)); + map(0x00d0, 0x00df).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)); +} INPUT_CHANGED_MEMBER(nakajies_state::trigger_irq) diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp index 10927e5a7e1..a376a201612 100644 --- a/src/mame/drivers/namcofl.cpp +++ b/src/mame/drivers/namcofl.cpp @@ -214,25 +214,26 @@ WRITE8_MEMBER(namcofl_state::namcofl_c116_w) } } -ADDRESS_MAP_START(namcofl_state::namcofl_mem) - AM_RANGE(0x00000000, 0x000fffff) AM_RAMBANK("bank1") - AM_RANGE(0x10000000, 0x100fffff) AM_RAMBANK("bank2") - AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("nvram") /* nvram */ - AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w) - AM_RANGE(0x30284000, 0x3028bfff) AM_RAM AM_SHARE("shareram") - AM_RANGE(0x30300000, 0x30303fff) AM_RAM /* COMRAM */ - AM_RANGE(0x30380000, 0x303800ff) AM_READ(fl_network_r ) /* network registers */ - AM_RANGE(0x30400000, 0x30407fff) AM_DEVREAD8("c116", namco_c116_device,read,0xffffffff) AM_WRITE8(namcofl_c116_w,0xffffffff) - AM_RANGE(0x30800000, 0x3080ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff) - AM_RANGE(0x30a00000, 0x30a0003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff) - AM_RANGE(0x30c00000, 0x30c1ffff) AM_READWRITE16(c169_roz_videoram_r,c169_roz_videoram_w,0xffffffff) AM_SHARE("rozvideoram") - AM_RANGE(0x30d00000, 0x30d0001f) AM_READWRITE16(c169_roz_control_r,c169_roz_control_w,0xffffffff) - AM_RANGE(0x30e00000, 0x30e1ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram") - AM_RANGE(0x30f00000, 0x30f0000f) AM_RAM /* NebulaM2 code says this is int enable at 0000, int request at 0004, but doesn't do much about it */ - AM_RANGE(0x40000000, 0x4000005f) AM_READWRITE(namcofl_sysreg_r, namcofl_sysreg_w ) - AM_RANGE(0xfffffffc, 0xffffffff) AM_READ(fl_unk1_r ) -ADDRESS_MAP_END +void namcofl_state::namcofl_mem(address_map &map) +{ + map(0x00000000, 0x000fffff).bankrw("bank1"); + map(0x10000000, 0x100fffff).bankrw("bank2"); + map(0x20000000, 0x201fffff).rom().region("data", 0); + map(0x30000000, 0x30001fff).ram().share("nvram"); /* nvram */ + map(0x30100000, 0x30100003).w(this, FUNC(namcofl_state::namcofl_spritebank_w)); + map(0x30284000, 0x3028bfff).ram().share("shareram"); + map(0x30300000, 0x30303fff).ram(); /* COMRAM */ + map(0x30380000, 0x303800ff).r(this, FUNC(namcofl_state::fl_network_r)); /* network registers */ + map(0x30400000, 0x30407fff).r(m_c116, FUNC(namco_c116_device::read)).w(this, FUNC(namcofl_state::namcofl_c116_w)); + map(0x30800000, 0x3080ffff).rw(this, FUNC(namcofl_state::c123_tilemap_videoram_r), FUNC(namcofl_state::c123_tilemap_videoram_w)); + map(0x30a00000, 0x30a0003f).rw(this, FUNC(namcofl_state::c123_tilemap_control_r), FUNC(namcofl_state::c123_tilemap_control_w)); + map(0x30c00000, 0x30c1ffff).rw(this, FUNC(namcofl_state::c169_roz_videoram_r), FUNC(namcofl_state::c169_roz_videoram_w)).share("rozvideoram"); + map(0x30d00000, 0x30d0001f).rw(this, FUNC(namcofl_state::c169_roz_control_r), FUNC(namcofl_state::c169_roz_control_w)); + map(0x30e00000, 0x30e1ffff).rw(this, FUNC(namcofl_state::c355_obj_ram_r), FUNC(namcofl_state::c355_obj_ram_w)).share("objram"); + map(0x30f00000, 0x30f0000f).ram(); /* NebulaM2 code says this is int enable at 0000, int request at 0004, but doesn't do much about it */ + map(0x40000000, 0x4000005f).rw(this, FUNC(namcofl_state::namcofl_sysreg_r), FUNC(namcofl_state::namcofl_sysreg_w)); + map(0xfffffffc, 0xffffffff).r(this, FUNC(namcofl_state::fl_unk1_r)); +} WRITE16_MEMBER(namcofl_state::mcu_shared_w) @@ -311,24 +312,26 @@ READ8_MEMBER(namcofl_state::dac2_r){ return 0xff; } READ8_MEMBER(namcofl_state::dac1_r){ return 0xff; } READ8_MEMBER(namcofl_state::dac0_r){ return 0xff; } -ADDRESS_MAP_START(namcofl_state::namcoc75_am) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("shareram") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c75data", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcofl_state::namcoc75_io) - AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w) - AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READ(port7_r) - AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ(dac7_r) - AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ(dac6_r) - AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ(dac5_r) - AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ(dac4_r) - AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ(dac3_r) - AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ(dac2_r) - AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ(dac1_r) - AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ(dac0_r) -ADDRESS_MAP_END +void namcofl_state::namcoc75_am(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x004000, 0x00bfff).ram().w(this, FUNC(namcofl_state::mcu_shared_w)).share("shareram"); + map(0x200000, 0x27ffff).rom().region("c75data", 0); +} + +void namcofl_state::namcoc75_io(address_map &map) +{ + map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcofl_state::port6_r), FUNC(namcofl_state::port6_w)); + map(M37710_PORT7, M37710_PORT7).r(this, FUNC(namcofl_state::port7_r)); + map(M37710_ADC7_L, M37710_ADC7_L).r(this, FUNC(namcofl_state::dac7_r)); + map(M37710_ADC6_L, M37710_ADC6_L).r(this, FUNC(namcofl_state::dac6_r)); + map(M37710_ADC5_L, M37710_ADC5_L).r(this, FUNC(namcofl_state::dac5_r)); + map(M37710_ADC4_L, M37710_ADC4_L).r(this, FUNC(namcofl_state::dac4_r)); + map(M37710_ADC3_L, M37710_ADC3_L).r(this, FUNC(namcofl_state::dac3_r)); + map(M37710_ADC2_L, M37710_ADC2_L).r(this, FUNC(namcofl_state::dac2_r)); + map(M37710_ADC1_L, M37710_ADC1_L).r(this, FUNC(namcofl_state::dac1_r)); + map(M37710_ADC0_L, M37710_ADC0_L).r(this, FUNC(namcofl_state::dac0_r)); +} static INPUT_PORTS_START( speedrcr ) diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp index 76ff5542765..e2c1fb66374 100644 --- a/src/mame/drivers/namcona1.cpp +++ b/src/mame/drivers/namcona1.cpp @@ -551,21 +551,22 @@ WRITE16_MEMBER(namcona1_state::mcu_mailbox_w_mcu) COMBINE_DATA(&m_mcu_mailbox[offset%8]); } -ADDRESS_MAP_START(namcona1_state::namcona1_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_SHARE("workram") - AM_RANGE(0x3f8000, 0x3fffff) AM_READWRITE(mcu_mailbox_r, mcu_mailbox_w_68k) - AM_RANGE(0x400000, 0xbfffff) AM_ROM AM_REGION("maskrom", 0) // data - AM_RANGE(0xc00000, 0xdfffff) AM_ROM AM_REGION("maincpu", 0) // code - AM_RANGE(0xe00000, 0xe00fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xe40000, 0xe4000f) AM_READWRITE(custom_key_r, custom_key_w) - AM_RANGE(0xefff00, 0xefffff) AM_RAM_WRITE(vreg_w) AM_SHARE("vreg") - AM_RANGE(0xf00000, 0xf01fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xf40000, 0xf7ffff) AM_READWRITE(gfxram_r, gfxram_w) AM_SHARE("cgram") - AM_RANGE(0xff0000, 0xffbfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM /* unknown */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM AM_SHARE("scroll") /* scroll registers */ - AM_RANGE(0xfff000, 0xffffff) AM_RAM AM_SHARE("spriteram") /* spriteram */ -ADDRESS_MAP_END +void namcona1_state::namcona1_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).ram().share("workram"); + map(0x3f8000, 0x3fffff).rw(this, FUNC(namcona1_state::mcu_mailbox_r), FUNC(namcona1_state::mcu_mailbox_w_68k)); + map(0x400000, 0xbfffff).rom().region("maskrom", 0); // data + map(0xc00000, 0xdfffff).rom().region("maincpu", 0); // code + map(0xe00000, 0xe00fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xe40000, 0xe4000f).rw(this, FUNC(namcona1_state::custom_key_r), FUNC(namcona1_state::custom_key_w)); + map(0xefff00, 0xefffff).ram().w(this, FUNC(namcona1_state::vreg_w)).share("vreg"); + map(0xf00000, 0xf01fff).ram().w(this, FUNC(namcona1_state::paletteram_w)).share("paletteram"); + map(0xf40000, 0xf7ffff).rw(this, FUNC(namcona1_state::gfxram_r), FUNC(namcona1_state::gfxram_w)).share("cgram"); + map(0xff0000, 0xffbfff).ram().w(this, FUNC(namcona1_state::videoram_w)).share("videoram"); + map(0xffd000, 0xffdfff).ram(); /* unknown */ + map(0xffe000, 0xffefff).ram().share("scroll"); /* scroll registers */ + map(0xfff000, 0xffffff).ram().share("spriteram"); /* spriteram */ +} READ8_MEMBER(xday2_namcona2_state::printer_r) { @@ -579,17 +580,18 @@ WRITE8_MEMBER(xday2_namcona2_state::printer_w) // ... } -ADDRESS_MAP_START(xday2_namcona2_state::xday2_main_map) - AM_IMPORT_FROM(namcona1_main_map) +void xday2_namcona2_state::xday2_main_map(address_map &map) +{ + namcona1_main_map(map); // these two seems lamps and flash related (mux too?) - AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP - AM_RANGE(0xd40000, 0xd40001) AM_WRITENOP - AM_RANGE(0xd80000, 0xd80001) AM_READWRITE8(printer_r,printer_w,0x00ff) /* xday: serial out? */ - AM_RANGE(0xdc0000, 0xdc001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) /* RTC device */ + map(0xd00000, 0xd00001).nopw(); + map(0xd40000, 0xd40001).nopw(); + map(0xd80001, 0xd80001).rw(this, FUNC(xday2_namcona2_state::printer_r), FUNC(xday2_namcona2_state::printer_w)); /* xday: serial out? */ + map(0xdc0000, 0xdc001f).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); /* RTC device */ // seems bigger than standard na1 (otherwise you won't get proper ranking defaults) - AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0xe00000, 0xe03fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); +} /* ----- NA-1 MCU handling ----------------------------------- */ @@ -635,13 +637,14 @@ WRITE16_MEMBER(namcona1_state::snd_w) } } -ADDRESS_MAP_START(namcona1_state::namcona1_mcu_map) - AM_RANGE(0x000800, 0x000fff) AM_READWRITE(mcu_mailbox_r, mcu_mailbox_w_mcu) // "Mailslot" communications ports - AM_RANGE(0x001000, 0x001fff) AM_READWRITE(snd_r, snd_w) // C140-alike sound chip - AM_RANGE(0x002000, 0x002fff) AM_READWRITE(na1mcu_shared_r, na1mcu_shared_w) // mirror of first page of shared work RAM - AM_RANGE(0x003000, 0x00afff) AM_RAM // there is a 32k RAM chip according to CGFM - AM_RANGE(0x200000, 0x27ffff) AM_READWRITE(na1mcu_shared_r, na1mcu_shared_w) // shared work RAM -ADDRESS_MAP_END +void namcona1_state::namcona1_mcu_map(address_map &map) +{ + map(0x000800, 0x000fff).rw(this, FUNC(namcona1_state::mcu_mailbox_r), FUNC(namcona1_state::mcu_mailbox_w_mcu)); // "Mailslot" communications ports + map(0x001000, 0x001fff).rw(this, FUNC(namcona1_state::snd_r), FUNC(namcona1_state::snd_w)); // C140-alike sound chip + map(0x002000, 0x002fff).rw(this, FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // mirror of first page of shared work RAM + map(0x003000, 0x00afff).ram(); // there is a 32k RAM chip according to CGFM + map(0x200000, 0x27ffff).rw(this, FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // shared work RAM +} // port 4: bit 3 (0x08) enables the 68000 (see the 68k launch code at c604 in swcourt's BIOS) @@ -752,14 +755,15 @@ READ8_MEMBER(namcona1_state::portana_r) return (port & bitnum[offset>>1]) ? 0xff : 0x00; } -ADDRESS_MAP_START(namcona1_state::namcona1_mcu_io_map) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READWRITE(port4_r, port4_w ) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_READWRITE(port5_r, port5_w ) - AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w ) - AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READWRITE(port7_r, port7_w ) - AM_RANGE(M37710_PORT8, M37710_PORT8) AM_READWRITE(port8_r, port8_w ) - AM_RANGE(0x10, 0x1f) AM_READ(portana_r ) -ADDRESS_MAP_END +void namcona1_state::namcona1_mcu_io_map(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).rw(this, FUNC(namcona1_state::port4_r), FUNC(namcona1_state::port4_w)); + map(M37710_PORT5, M37710_PORT5).rw(this, FUNC(namcona1_state::port5_r), FUNC(namcona1_state::port5_w)); + map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcona1_state::port6_r), FUNC(namcona1_state::port6_w)); + map(M37710_PORT7, M37710_PORT7).rw(this, FUNC(namcona1_state::port7_r), FUNC(namcona1_state::port7_w)); + map(M37710_PORT8, M37710_PORT8).rw(this, FUNC(namcona1_state::port8_r), FUNC(namcona1_state::port8_w)); + map(0x10, 0x1f).r(this, FUNC(namcona1_state::portana_r)); +} /***************************************************************************/ diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp index 007a3597606..a82b42f2f2f 100644 --- a/src/mame/drivers/namconb1.cpp +++ b/src/mame/drivers/namconb1.cpp @@ -690,46 +690,48 @@ WRITE32_MEMBER(namconb1_state::share_w) COMBINE_DATA(m_namconb_shareram+offset*2); } -ADDRESS_MAP_START(namconb1_state::namconb1_am) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10001f) AM_READ(gunbulet_gun_r) - AM_RANGE(0x1c0000, 0x1cffff) AM_RAM - AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE(share_r, share_w) - AM_RANGE(0x208000, 0x2fffff) AM_RAM - AM_RANGE(0x400000, 0x40001f) AM_READWRITE8(namconb1_cpureg_r, namconb1_cpureg_w, 0xffffffff) - AM_RANGE(0x580000, 0x5807ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff) - AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram") - AM_RANGE(0x620000, 0x620007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff) - AM_RANGE(0x640000, 0x64ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff) - AM_RANGE(0x660000, 0x66003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff) - AM_RANGE(0x680000, 0x68000f) AM_RAM AM_SHARE("spritebank32") - AM_RANGE(0x6e0000, 0x6e001f) AM_READ(custom_key_r) AM_WRITENOP - AM_RANGE(0x700000, 0x707fff) AM_DEVREADWRITE8("c116", namco_c116_device, read, write, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namconb1_state::namconb2_am) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x1c0000, 0x1cffff) AM_RAM - AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE(share_r, share_w) - AM_RANGE(0x208000, 0x2fffff) AM_RAM - AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x600000, 0x61ffff) AM_READWRITE16(c355_obj_ram_r,c355_obj_ram_w,0xffffffff) AM_SHARE("objram") - AM_RANGE(0x620000, 0x620007) AM_READWRITE16(c355_obj_position_r,c355_obj_position_w,0xffffffff) - AM_RANGE(0x640000, 0x64000f) AM_RAM /* unknown xy offset */ - AM_RANGE(0x680000, 0x68ffff) AM_READWRITE16(c123_tilemap_videoram_r,c123_tilemap_videoram_w,0xffffffff) - AM_RANGE(0x6c0000, 0x6c003f) AM_READWRITE16(c123_tilemap_control_r,c123_tilemap_control_w,0xffffffff) - AM_RANGE(0x700000, 0x71ffff) AM_READWRITE16(c169_roz_videoram_r,c169_roz_videoram_w,0xffffffff) AM_SHARE("rozvideoram") - AM_RANGE(0x740000, 0x74001f) AM_READWRITE16(c169_roz_control_r,c169_roz_control_w,0xffffffff) - AM_RANGE(0x800000, 0x807fff) AM_DEVREADWRITE8("c116", namco_c116_device, read, write, 0xffffffff) - AM_RANGE(0x900008, 0x90000f) AM_RAM AM_SHARE("spritebank32") - AM_RANGE(0x940000, 0x94000f) AM_RAM AM_SHARE("tilebank32") - AM_RANGE(0x980000, 0x98000f) AM_READWRITE16(c169_roz_bank_r,c169_roz_bank_w,0xffffffff) - AM_RANGE(0xa00000, 0xa007ff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff) - AM_RANGE(0xc00000, 0xc0001f) AM_READ(custom_key_r) AM_WRITENOP - AM_RANGE(0xf00000, 0xf0001f) AM_READWRITE8(namconb2_cpureg_r, namconb2_cpureg_w, 0xffffffff) -ADDRESS_MAP_END +void namconb1_state::namconb1_am(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10001f).r(this, FUNC(namconb1_state::gunbulet_gun_r)); + map(0x1c0000, 0x1cffff).ram(); + map(0x1e4000, 0x1e4003).rw(this, FUNC(namconb1_state::randgen_r), FUNC(namconb1_state::srand_w)); + map(0x200000, 0x207fff).rw(this, FUNC(namconb1_state::share_r), FUNC(namconb1_state::share_w)); + map(0x208000, 0x2fffff).ram(); + map(0x400000, 0x40001f).rw(this, FUNC(namconb1_state::namconb1_cpureg_r), FUNC(namconb1_state::namconb1_cpureg_w)); + map(0x580000, 0x5807ff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); + map(0x600000, 0x61ffff).rw(this, FUNC(namconb1_state::c355_obj_ram_r), FUNC(namconb1_state::c355_obj_ram_w)).share("objram"); + map(0x620000, 0x620007).rw(this, FUNC(namconb1_state::c355_obj_position_r), FUNC(namconb1_state::c355_obj_position_w)); + map(0x640000, 0x64ffff).rw(this, FUNC(namconb1_state::c123_tilemap_videoram_r), FUNC(namconb1_state::c123_tilemap_videoram_w)); + map(0x660000, 0x66003f).rw(this, FUNC(namconb1_state::c123_tilemap_control_r), FUNC(namconb1_state::c123_tilemap_control_w)); + map(0x680000, 0x68000f).ram().share("spritebank32"); + map(0x6e0000, 0x6e001f).r(this, FUNC(namconb1_state::custom_key_r)).nopw(); + map(0x700000, 0x707fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write)); +} + +void namconb1_state::namconb2_am(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x1c0000, 0x1cffff).ram(); + map(0x1e4000, 0x1e4003).rw(this, FUNC(namconb1_state::randgen_r), FUNC(namconb1_state::srand_w)); + map(0x200000, 0x207fff).rw(this, FUNC(namconb1_state::share_r), FUNC(namconb1_state::share_w)); + map(0x208000, 0x2fffff).ram(); + map(0x400000, 0x4fffff).rom().region("data", 0); + map(0x600000, 0x61ffff).rw(this, FUNC(namconb1_state::c355_obj_ram_r), FUNC(namconb1_state::c355_obj_ram_w)).share("objram"); + map(0x620000, 0x620007).rw(this, FUNC(namconb1_state::c355_obj_position_r), FUNC(namconb1_state::c355_obj_position_w)); + map(0x640000, 0x64000f).ram(); /* unknown xy offset */ + map(0x680000, 0x68ffff).rw(this, FUNC(namconb1_state::c123_tilemap_videoram_r), FUNC(namconb1_state::c123_tilemap_videoram_w)); + map(0x6c0000, 0x6c003f).rw(this, FUNC(namconb1_state::c123_tilemap_control_r), FUNC(namconb1_state::c123_tilemap_control_w)); + map(0x700000, 0x71ffff).rw(this, FUNC(namconb1_state::c169_roz_videoram_r), FUNC(namconb1_state::c169_roz_videoram_w)).share("rozvideoram"); + map(0x740000, 0x74001f).rw(this, FUNC(namconb1_state::c169_roz_control_r), FUNC(namconb1_state::c169_roz_control_w)); + map(0x800000, 0x807fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write)); + map(0x900008, 0x90000f).ram().share("spritebank32"); + map(0x940000, 0x94000f).ram().share("tilebank32"); + map(0x980000, 0x98000f).rw(this, FUNC(namconb1_state::c169_roz_bank_r), FUNC(namconb1_state::c169_roz_bank_w)); + map(0xa00000, 0xa007ff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); + map(0xc00000, 0xc0001f).r(this, FUNC(namconb1_state::custom_key_r)).nopw(); + map(0xf00000, 0xf0001f).rw(this, FUNC(namconb1_state::namconb2_cpureg_r), FUNC(namconb1_state::namconb2_cpureg_w)); +} WRITE16_MEMBER(namconb1_state::mcu_shared_w) { @@ -752,11 +754,12 @@ WRITE16_MEMBER(namconb1_state::mcu_shared_w) } } -ADDRESS_MAP_START(namconb1_state::namcoc75_am) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x004000, 0x00bfff) AM_RAM_WRITE(mcu_shared_w) AM_SHARE("namconb_share") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c75data", 0) -ADDRESS_MAP_END +void namconb1_state::namcoc75_am(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x004000, 0x00bfff).ram().w(this, FUNC(namconb1_state::mcu_shared_w)).share("namconb_share"); + map(0x200000, 0x27ffff).rom().region("c75data", 0); +} READ8_MEMBER(namconb1_state::port6_r) @@ -835,18 +838,19 @@ READ8_MEMBER(namconb1_state::dac0_r)// bit 6 return (m_p3.read_safe(0xff)<<7)&0x80; } -ADDRESS_MAP_START(namconb1_state::namcoc75_io) - AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(port6_r, port6_w) - AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READ(port7_r) - AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ(dac7_r) - AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ(dac6_r) - AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ(dac5_r) - AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ(dac4_r) - AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ(dac3_r) - AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ(dac2_r) - AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ(dac1_r) - AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ(dac0_r) -ADDRESS_MAP_END +void namconb1_state::namcoc75_io(address_map &map) +{ + map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namconb1_state::port6_r), FUNC(namconb1_state::port6_w)); + map(M37710_PORT7, M37710_PORT7).r(this, FUNC(namconb1_state::port7_r)); + map(M37710_ADC7_L, M37710_ADC7_L).r(this, FUNC(namconb1_state::dac7_r)); + map(M37710_ADC6_L, M37710_ADC6_L).r(this, FUNC(namconb1_state::dac6_r)); + map(M37710_ADC5_L, M37710_ADC5_L).r(this, FUNC(namconb1_state::dac5_r)); + map(M37710_ADC4_L, M37710_ADC4_L).r(this, FUNC(namconb1_state::dac4_r)); + map(M37710_ADC3_L, M37710_ADC3_L).r(this, FUNC(namconb1_state::dac3_r)); + map(M37710_ADC2_L, M37710_ADC2_L).r(this, FUNC(namconb1_state::dac2_r)); + map(M37710_ADC1_L, M37710_ADC1_L).r(this, FUNC(namconb1_state::dac1_r)); + map(M37710_ADC0_L, M37710_ADC0_L).r(this, FUNC(namconb1_state::dac0_r)); +} /****************************************************************************/ diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp index 7a7ab20dd3e..72898dbaaf7 100644 --- a/src/mame/drivers/namcond1.cpp +++ b/src/mame/drivers/namcond1.cpp @@ -196,26 +196,28 @@ Some logic, resistors/caps/transistors, some connectors etc. /*************************************************************/ -ADDRESS_MAP_START(namcond1_state::namcond1_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x800000, 0x80000f) AM_DEVICE8("ygv608", ygv608_device, port_map, 0xff00) - AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) - AM_RANGE(0xc3ff00, 0xc3ffff) AM_READWRITE(cuskey_r,cuskey_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcond1_state::abcheck_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("zpr1") - AM_RANGE(0x608000, 0x60ffff) AM_RAM AM_SHARE("zpr2") - AM_RANGE(0x700000, 0x700001) AM_WRITENOP - AM_RANGE(0x740000, 0x740001) AM_WRITENOP - AM_RANGE(0x780000, 0x780001) AM_READ(printer_r) - AM_RANGE(0x800000, 0x80000f) AM_DEVICE8("ygv608", ygv608_device, port_map, 0xff00) - AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) - AM_RANGE(0xc3ff00, 0xc3ffff) AM_READWRITE(cuskey_r,cuskey_w) -ADDRESS_MAP_END +void namcond1_state::namcond1_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40ffff).ram().share("shared_ram"); + map(0x800000, 0x80000f).m(m_ygv608, FUNC(ygv608_device::port_map)).umask16(0xff00); + map(0xa00000, 0xa00fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask16(0xff00); + map(0xc3ff00, 0xc3ffff).rw(this, FUNC(namcond1_state::cuskey_r), FUNC(namcond1_state::cuskey_w)); +} + +void namcond1_state::abcheck_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40ffff).ram().share("shared_ram"); + map(0x600000, 0x607fff).ram().share("zpr1"); + map(0x608000, 0x60ffff).ram().share("zpr2"); + map(0x700000, 0x700001).nopw(); + map(0x740000, 0x740001).nopw(); + map(0x780000, 0x780001).r(this, FUNC(namcond1_state::printer_r)); + map(0x800000, 0x80000f).m(m_ygv608, FUNC(ygv608_device::port_map)).umask16(0xff00); + map(0xa00000, 0xa00fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask16(0xff00); + map(0xc3ff00, 0xc3ffff).rw(this, FUNC(namcond1_state::cuskey_r), FUNC(namcond1_state::cuskey_w)); +} READ16_MEMBER(namcond1_state::printer_r) { @@ -298,25 +300,27 @@ WRITE16_MEMBER(namcond1_state::mcu_pa_write) } /* H8/3002 MCU stuff */ -ADDRESS_MAP_START(namcond1_state::nd1h8rwmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xa00000, 0xa07fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("DSW") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1_P2") - AM_RANGE(0xc00010, 0xc00011) AM_NOP - AM_RANGE(0xc00030, 0xc00031) AM_NOP - AM_RANGE(0xc00040, 0xc00041) AM_NOP - AM_RANGE(0xffff1a, 0xffff1b) AM_NOP // abcheck - AM_RANGE(0xffff1e, 0xffff1f) AM_NOP // ^ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcond1_state::nd1h8iomap) - AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ(mcu_p7_read ) - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(mcu_pa_read, mcu_pa_write ) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_3) AM_NOP // MCU reads these, but the games have no analog controls - AM_RANGE(0x14, 0x17) AM_READNOP // abcheck -ADDRESS_MAP_END +void namcond1_state::nd1h8rwmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram().share("shared_ram"); + map(0xa00000, 0xa07fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0xc00000, 0xc00001).portr("DSW"); + map(0xc00002, 0xc00003).portr("P1_P2"); + map(0xc00010, 0xc00011).noprw(); + map(0xc00030, 0xc00031).noprw(); + map(0xc00040, 0xc00041).noprw(); + map(0xffff1a, 0xffff1b).noprw(); // abcheck + map(0xffff1e, 0xffff1f).noprw(); // ^ +} + +void namcond1_state::nd1h8iomap(address_map &map) +{ + map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(namcond1_state::mcu_p7_read)); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcond1_state::mcu_pa_read), FUNC(namcond1_state::mcu_pa_write)); + map(h8_device::ADC_0, h8_device::ADC_3).noprw(); // MCU reads these, but the games have no analog controls + map(0x14, 0x17).nopr(); // abcheck +} INTERRUPT_GEN_MEMBER(namcond1_state::mcu_interrupt) { diff --git a/src/mame/drivers/namcops2.cpp b/src/mame/drivers/namcops2.cpp index 1187704922d..c5679674b21 100644 --- a/src/mame/drivers/namcops2.cpp +++ b/src/mame/drivers/namcops2.cpp @@ -908,10 +908,11 @@ uint32_t namcops2_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm return 0; } -ADDRESS_MAP_START(namcops2_state::ps2_map) - AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // 32 MB RAM in consumer PS2s, do these have more? - AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void namcops2_state::ps2_map(address_map &map) +{ + map(0x00000000, 0x01ffffff).ram(); // 32 MB RAM in consumer PS2s, do these have more? + map(0x1fc00000, 0x1fdfffff).rom().region("bios", 0); +} static INPUT_PORTS_START( system246 ) INPUT_PORTS_END diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp index d4085dacc2a..2bb8847bde0 100644 --- a/src/mame/drivers/namcos1.cpp +++ b/src/mame/drivers/namcos1.cpp @@ -339,7 +339,6 @@ C - uses sub board with support for player 3 and 4 controls #include "includes/namcos1.h" #include "cpu/m6809/m6809.h" -#include "cpu/m6800/m6801.h" #include "machine/nvram.h" #include "sound/volt_reg.h" #include "sound/ym2151.h" @@ -394,61 +393,67 @@ WRITE8_MEMBER(namcos1_state::dac_gain_w) -ADDRESS_MAP_START(namcos1_state::main_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("c117", namco_c117_device, main_r, main_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos1_state::sub_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("c117", namco_c117_device, sub_r, sub_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos1_state::virtual_map) - AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(_3dcs_w) - AM_RANGE(0x2e0000, 0x2e7fff) AM_DEVREADWRITE("c116", namco_c116_device, read, write) - AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2f8000, 0x2f9fff) AM_READWRITE(no_key_r, no_key_w) - AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x2fd000, 0x2fd01f) AM_RAM AM_SHARE("pfcontrol") AM_MIRROR(0xfe0) - AM_RANGE(0x2fe000, 0x2fe3ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0xc00) /* PSG ( Shared ) */ - AM_RANGE(0x2ff000, 0x2ff7ff) AM_RAM AM_SHARE("triram") AM_MIRROR(0x800) - AM_RANGE(0x300000, 0x307fff) AM_RAM - AM_RANGE(0x400000, 0x7fffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(namcos1_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("soundbank") /* Banked ROMs */ - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write) - AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */ - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("triram") - AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ - AM_RANGE(0xc000, 0xc001) AM_WRITE(sound_bankswitch_w) /* ROM bank selector */ - AM_RANGE(0xd001, 0xd001) AM_DEVWRITE("c117", namco_c117_device, sound_watchdog_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(audiocpu_irq_ack_w) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(namcos1_state::mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */ - AM_RANGE(0x1000, 0x1003) AM_READ(dsw_r) - AM_RANGE(0x1400, 0x1400) AM_READ_PORT("CONTROL0") - AM_RANGE(0x1401, 0x1401) AM_READ_PORT("CONTROL1") - AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("mcubank") /* banked external ROM */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("triram") - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */ - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("dac0", dac_byte_interface, write) - AM_RANGE(0xd400, 0xd400) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0xd800, 0xd800) AM_WRITE(mcu_bankswitch_w) /* ROM bank selector */ - AM_RANGE(0xf000, 0xf000) AM_WRITE(mcu_irq_ack_w) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("mcu", 0) /* internal ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos1_state::mcu_port_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(coin_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(dac_gain_w) -ADDRESS_MAP_END +void namcos1_state::main_map(address_map &map) +{ + map(0x0000, 0xffff).rw(m_c117, FUNC(namco_c117_device::main_r), FUNC(namco_c117_device::main_w)); +} + +void namcos1_state::sub_map(address_map &map) +{ + map(0x0000, 0xffff).rw(m_c117, FUNC(namco_c117_device::sub_r), FUNC(namco_c117_device::sub_w)); +} + +void namcos1_state::virtual_map(address_map &map) +{ + map(0x2c0000, 0x2c1fff).w(this, FUNC(namcos1_state::_3dcs_w)); + map(0x2e0000, 0x2e7fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write)); + map(0x2f0000, 0x2f7fff).ram().w(this, FUNC(namcos1_state::videoram_w)).share("videoram"); + map(0x2f8000, 0x2f9fff).rw(this, FUNC(namcos1_state::no_key_r), FUNC(namcos1_state::no_key_w)); + map(0x2fc000, 0x2fcfff).ram().w(this, FUNC(namcos1_state::spriteram_w)).share("spriteram"); + map(0x2fd000, 0x2fd01f).ram().share("pfcontrol").mirror(0xfe0); + map(0x2fe000, 0x2fe3ff).rw("namco", FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)).mirror(0xc00); /* PSG ( Shared ) */ + map(0x2ff000, 0x2ff7ff).ram().share("triram").mirror(0x800); + map(0x300000, 0x307fff).ram(); + map(0x400000, 0x7fffff).rom().region("user1", 0); +} + + +void namcos1_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("soundbank"); /* Banked ROMs */ + map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write)); + map(0x5000, 0x53ff).rw("namco", FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)).mirror(0x400); /* PSG ( Shared ) */ + map(0x7000, 0x77ff).ram().share("triram"); + map(0x8000, 0x9fff).ram(); /* Sound RAM 3 */ + map(0xc000, 0xc001).w(this, FUNC(namcos1_state::sound_bankswitch_w)); /* ROM bank selector */ + map(0xd001, 0xd001).w(m_c117, FUNC(namco_c117_device::sound_watchdog_w)); + map(0xe000, 0xe000).w(this, FUNC(namcos1_state::audiocpu_irq_ack_w)); + map(0xc000, 0xffff).rom().region("audiocpu", 0); +} + + +void namcos1_state::mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); /* built in RAM */ + map(0x1000, 0x1003).r(this, FUNC(namcos1_state::dsw_r)); + map(0x1400, 0x1400).portr("CONTROL0"); + map(0x1401, 0x1401).portr("CONTROL1"); + map(0x4000, 0xbfff).bankr("mcubank"); /* banked external ROM */ + map(0xc000, 0xc7ff).ram().share("triram"); + map(0xc800, 0xcfff).ram().share("nvram"); /* EEPROM */ + map(0xd000, 0xd000).w(m_dac0, FUNC(dac_byte_interface::write)); + map(0xd400, 0xd400).w(m_dac1, FUNC(dac_byte_interface::write)); + map(0xd800, 0xd800).w(this, FUNC(namcos1_state::mcu_bankswitch_w)); /* ROM bank selector */ + map(0xf000, 0xf000).w(this, FUNC(namcos1_state::mcu_irq_ack_w)); + map(0xf000, 0xffff).rom().region("mcu", 0); /* internal ROM */ +} + +void namcos1_state::mcu_port_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).portr("COIN").w(this, FUNC(namcos1_state::coin_w)); + map(M6801_PORT2, M6801_PORT2).nopr().w(this, FUNC(namcos1_state::dac_gain_w)); +} // #define PRIORITY_EASINESS_TO_PLAY diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp index 0f13db2c0a2..f4c6a1cce3a 100644 --- a/src/mame/drivers/namcos10.cpp +++ b/src/mame/drivers/namcos10.cpp @@ -490,16 +490,17 @@ public: }; -ADDRESS_MAP_START(namcos10_state::namcos10_map) - AM_RANGE(0x1f500000, 0x1f501fff) AM_RAM AM_SHARE("share3") /* ram? stores block numbers */ - AM_RANGE(0x9f500000, 0x9f501fff) AM_RAM AM_SHARE("share3") /* ram? stores block numbers */ - AM_RANGE(0xbf500000, 0xbf501fff) AM_RAM AM_SHARE("share3") /* ram? stores block numbers */ - - AM_RANGE(0x1fba0000, 0x1fba000f) AM_READWRITE16(control_r, control_w, 0xffffffff) - AM_RANGE(0x1fba0000, 0x1fba0003) AM_READWRITE16(sprot_r, sprot_w, 0xffff0000) - AM_RANGE(0x1fba0008, 0x1fba000b) AM_READWRITE16(i2c_clock_r, i2c_clock_w, 0x0000ffff) - AM_RANGE(0x1fba0008, 0x1fba000b) AM_READWRITE16(i2c_data_r, i2c_data_w, 0xffff0000) -ADDRESS_MAP_END +void namcos10_state::namcos10_map(address_map &map) +{ + map(0x1f500000, 0x1f501fff).ram().share("share3"); /* ram? stores block numbers */ + map(0x9f500000, 0x9f501fff).ram().share("share3"); /* ram? stores block numbers */ + map(0xbf500000, 0xbf501fff).ram().share("share3"); /* ram? stores block numbers */ + + map(0x1fba0000, 0x1fba000f).rw(this, FUNC(namcos10_state::control_r), FUNC(namcos10_state::control_w)); + map(0x1fba0002, 0x1fba0003).rw(this, FUNC(namcos10_state::sprot_r), FUNC(namcos10_state::sprot_w)); + map(0x1fba0008, 0x1fba0009).rw(this, FUNC(namcos10_state::i2c_clock_r), FUNC(namcos10_state::i2c_clock_w)); + map(0x1fba000a, 0x1fba000b).rw(this, FUNC(namcos10_state::i2c_data_r), FUNC(namcos10_state::i2c_data_w)); +} // memm variant interface @@ -676,13 +677,14 @@ void namcos10_state::i2c_update() i2c_prev_clock = clock; } -ADDRESS_MAP_START(namcos10_state::namcos10_memm_map) - AM_IMPORT_FROM(namcos10_map) +void namcos10_state::namcos10_memm_map(address_map &map) +{ + namcos10_map(map); - AM_RANGE(0x1f300000, 0x1f300003) AM_WRITE16(crypto_switch_w, 0x0000ffff) - AM_RANGE(0x1f400000, 0x1f5fffff) AM_READ16(range_r, 0xffffffff) - AM_RANGE(0x1fb40000, 0x1fb4000f) AM_WRITE16(bank_w, 0xffffffff) -ADDRESS_MAP_END + map(0x1f300000, 0x1f300001).w(this, FUNC(namcos10_state::crypto_switch_w)); + map(0x1f400000, 0x1f5fffff).r(this, FUNC(namcos10_state::range_r)); + map(0x1fb40000, 0x1fb4000f).w(this, FUNC(namcos10_state::bank_w)); +} // memn variant interface @@ -771,19 +773,20 @@ READ16_MEMBER(namcos10_state::nand_block_r) return block[ offset ]; } -ADDRESS_MAP_START(namcos10_state::namcos10_memn_map) - AM_IMPORT_FROM(namcos10_map) - - AM_RANGE(0x1f300000, 0x1f300003) AM_WRITE16(crypto_switch_w, 0x0000ffff) - AM_RANGE(0x1f380000, 0x1f380003) AM_WRITE16(crypto_switch_w, 0x0000ffff) - AM_RANGE(0x1f400000, 0x1f400003) AM_READ16(nand_status_r, 0x0000ffff) - AM_RANGE(0x1f410000, 0x1f410003) AM_WRITE8(nand_address1_w, 0x000000ff) - AM_RANGE(0x1f420000, 0x1f420003) AM_WRITE8(nand_address2_w, 0x000000ff) - AM_RANGE(0x1f430000, 0x1f430003) AM_WRITE8(nand_address3_w, 0x000000ff) - AM_RANGE(0x1f440000, 0x1f440003) AM_WRITE8(nand_address4_w, 0x000000ff) - AM_RANGE(0x1f450000, 0x1f450003) AM_READ16(nand_data_r, 0x0000ffff) - AM_RANGE(0x1fb60000, 0x1fb60003) AM_READWRITE16(nand_block_r, nand_block_w, 0x0000ffff) -ADDRESS_MAP_END +void namcos10_state::namcos10_memn_map(address_map &map) +{ + namcos10_map(map); + + map(0x1f300000, 0x1f300001).w(this, FUNC(namcos10_state::crypto_switch_w)); + map(0x1f380000, 0x1f380001).w(this, FUNC(namcos10_state::crypto_switch_w)); + map(0x1f400000, 0x1f400001).r(this, FUNC(namcos10_state::nand_status_r)); + map(0x1f410000, 0x1f410000).w(this, FUNC(namcos10_state::nand_address1_w)); + map(0x1f420000, 0x1f420000).w(this, FUNC(namcos10_state::nand_address2_w)); + map(0x1f430000, 0x1f430000).w(this, FUNC(namcos10_state::nand_address3_w)); + map(0x1f440000, 0x1f440000).w(this, FUNC(namcos10_state::nand_address4_w)); + map(0x1f450000, 0x1f450001).r(this, FUNC(namcos10_state::nand_data_r)); + map(0x1fb60000, 0x1fb60001).rw(this, FUNC(namcos10_state::nand_block_r), FUNC(namcos10_state::nand_block_w)); +} void namcos10_state::memn_driver_init( ) { diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp index ed257fda765..7a33f11b913 100644 --- a/src/mame/drivers/namcos11.cpp +++ b/src/mame/drivers/namcos11.cpp @@ -464,75 +464,81 @@ WRITE16_MEMBER( namcos11_state::c76_shared_w ) COMBINE_DATA( &m_sharedram.target()[ offset ] ); } -ADDRESS_MAP_START(namcos11_state::namcos11_map) - AM_RANGE(0x1fa04000, 0x1fa0ffff) AM_READWRITE16(c76_shared_r, c76_shared_w, 0xffffffff) /* shared ram with C76 */ - AM_RANGE(0x1fa20000, 0x1fa2001f) AM_DEVREADWRITE16("keycus", ns11_keycus_device, read, write, 0xffffffff) - AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ - AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITENOP /* ?? */ - AM_RANGE(0x1fbf6000, 0x1fbf6003) AM_WRITENOP /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::rom8_map) - AM_IMPORT_FROM(namcos11_map) - - AM_RANGE(0x1f000000, 0x1f0fffff) AM_ROMBANK("bank1") - AM_RANGE(0x1f100000, 0x1f1fffff) AM_ROMBANK("bank2") - AM_RANGE(0x1f200000, 0x1f2fffff) AM_ROMBANK("bank3") - AM_RANGE(0x1f300000, 0x1f3fffff) AM_ROMBANK("bank4") - AM_RANGE(0x1f400000, 0x1f4fffff) AM_ROMBANK("bank5") - AM_RANGE(0x1f500000, 0x1f5fffff) AM_ROMBANK("bank6") - AM_RANGE(0x1f600000, 0x1f6fffff) AM_ROMBANK("bank7") - AM_RANGE(0x1f700000, 0x1f7fffff) AM_ROMBANK("bank8") - AM_RANGE(0x1fa10020, 0x1fa1002f) AM_WRITE16(rom8_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::rom8_64_map) - AM_IMPORT_FROM(namcos11_map) - - AM_RANGE(0x1f000000, 0x1f0fffff) AM_ROMBANK("bank1") - AM_RANGE(0x1f100000, 0x1f1fffff) AM_ROMBANK("bank2") - AM_RANGE(0x1f200000, 0x1f2fffff) AM_ROMBANK("bank3") - AM_RANGE(0x1f300000, 0x1f3fffff) AM_ROMBANK("bank4") - AM_RANGE(0x1f400000, 0x1f4fffff) AM_ROMBANK("bank5") - AM_RANGE(0x1f500000, 0x1f5fffff) AM_ROMBANK("bank6") - AM_RANGE(0x1f600000, 0x1f6fffff) AM_ROMBANK("bank7") - AM_RANGE(0x1f700000, 0x1f7fffff) AM_ROMBANK("bank8") - AM_RANGE(0x1f080000, 0x1f080003) AM_WRITE16(rom8_64_upper_w, 0xffffffff) - AM_RANGE(0x1fa10020, 0x1fa1002f) AM_READNOP AM_WRITE16(rom8_64_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::ptblank2ua_map) - AM_IMPORT_FROM(rom8_64_map) - - AM_RANGE(0x1f780000, 0x1f78000f) AM_READ16(lightgun_r, 0xffffffff) - AM_RANGE(0x1f788000, 0x1f788003) AM_WRITE16(lightgun_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::c76_map) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x001000, 0x001001) AM_READ_PORT("PLAYER4") - AM_RANGE(0x001002, 0x001003) AM_READ_PORT("SWITCH") - AM_RANGE(0x001004, 0x001005) AM_READ_PORT("PLAYER1") - AM_RANGE(0x001006, 0x001007) AM_READ_PORT("PLAYER2") - AM_RANGE(0x004000, 0x00bfff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("c76", 0) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c76", 0) - AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("c76", 0) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP - AM_RANGE(0x301000, 0x301001) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::c76_io_map) - AM_RANGE(M37710_ADC0_H, M37710_ADC7_H) AM_READNOP - AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ_PORT("ADC0") - AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ_PORT("ADC1") - AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ_PORT("ADC2") - AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ_PORT("ADC3") - AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ_PORT("ADC4") - AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ_PORT("ADC5") - AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ_PORT("ADC6") - AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ_PORT("ADC7") -ADDRESS_MAP_END +void namcos11_state::namcos11_map(address_map &map) +{ + map(0x1fa04000, 0x1fa0ffff).rw(this, FUNC(namcos11_state::c76_shared_r), FUNC(namcos11_state::c76_shared_w)); /* shared ram with C76 */ + map(0x1fa20000, 0x1fa2001f).rw("keycus", FUNC(ns11_keycus_device::read), FUNC(ns11_keycus_device::write)); + map(0x1fa30000, 0x1fa30fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x00ff00ff); /* eeprom */ + map(0x1fb00000, 0x1fb00003).nopw(); /* ?? */ + map(0x1fbf6000, 0x1fbf6003).nopw(); /* ?? */ +} + +void namcos11_state::rom8_map(address_map &map) +{ + namcos11_map(map); + + map(0x1f000000, 0x1f0fffff).bankr("bank1"); + map(0x1f100000, 0x1f1fffff).bankr("bank2"); + map(0x1f200000, 0x1f2fffff).bankr("bank3"); + map(0x1f300000, 0x1f3fffff).bankr("bank4"); + map(0x1f400000, 0x1f4fffff).bankr("bank5"); + map(0x1f500000, 0x1f5fffff).bankr("bank6"); + map(0x1f600000, 0x1f6fffff).bankr("bank7"); + map(0x1f700000, 0x1f7fffff).bankr("bank8"); + map(0x1fa10020, 0x1fa1002f).w(this, FUNC(namcos11_state::rom8_w)); +} + +void namcos11_state::rom8_64_map(address_map &map) +{ + namcos11_map(map); + + map(0x1f000000, 0x1f0fffff).bankr("bank1"); + map(0x1f100000, 0x1f1fffff).bankr("bank2"); + map(0x1f200000, 0x1f2fffff).bankr("bank3"); + map(0x1f300000, 0x1f3fffff).bankr("bank4"); + map(0x1f400000, 0x1f4fffff).bankr("bank5"); + map(0x1f500000, 0x1f5fffff).bankr("bank6"); + map(0x1f600000, 0x1f6fffff).bankr("bank7"); + map(0x1f700000, 0x1f7fffff).bankr("bank8"); + map(0x1f080000, 0x1f080003).w(this, FUNC(namcos11_state::rom8_64_upper_w)); + map(0x1fa10020, 0x1fa1002f).nopr().w(this, FUNC(namcos11_state::rom8_64_w)); +} + +void namcos11_state::ptblank2ua_map(address_map &map) +{ + rom8_64_map(map); + + map(0x1f780000, 0x1f78000f).r(this, FUNC(namcos11_state::lightgun_r)); + map(0x1f788000, 0x1f788003).w(this, FUNC(namcos11_state::lightgun_w)); +} + +void namcos11_state::c76_map(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x001000, 0x001001).portr("PLAYER4"); + map(0x001002, 0x001003).portr("SWITCH"); + map(0x001004, 0x001005).portr("PLAYER1"); + map(0x001006, 0x001007).portr("PLAYER2"); + map(0x004000, 0x00bfff).ram().share("sharedram"); + map(0x080000, 0x0fffff).rom().region("c76", 0); + map(0x200000, 0x27ffff).rom().region("c76", 0); + map(0x280000, 0x2fffff).rom().region("c76", 0); + map(0x300000, 0x300001).nopw(); + map(0x301000, 0x301001).nopw(); +} + +void namcos11_state::c76_io_map(address_map &map) +{ + map(M37710_ADC0_H, M37710_ADC7_H).nopr(); + map(M37710_ADC0_L, M37710_ADC0_L).portr("ADC0"); + map(M37710_ADC1_L, M37710_ADC1_L).portr("ADC1"); + map(M37710_ADC2_L, M37710_ADC2_L).portr("ADC2"); + map(M37710_ADC3_L, M37710_ADC3_L).portr("ADC3"); + map(M37710_ADC4_L, M37710_ADC4_L).portr("ADC4"); + map(M37710_ADC5_L, M37710_ADC5_L).portr("ADC5"); + map(M37710_ADC6_L, M37710_ADC6_L).portr("ADC6"); + map(M37710_ADC7_L, M37710_ADC7_L).portr("ADC7"); +} READ16_MEMBER(namcos11_state::c76_speedup_r) { diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp index 4207cb71e43..dcee22ab234 100644 --- a/src/mame/drivers/namcos12.cpp +++ b/src/mame/drivers/namcos12.cpp @@ -1333,34 +1333,38 @@ void namcos12_state::namcos12_sub_irq( screen_device &screen, bool vblank_state m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7); } -ADDRESS_MAP_START(namcos12_state::namcos12_map) - AM_RANGE(0x1f000000, 0x1f000003) AM_READNOP AM_WRITE16(bankoffset_w, 0x0000ffff) /* banking */ - AM_RANGE(0x1f080000, 0x1f083fff) AM_READWRITE16(sharedram_r, sharedram_w, 0xffffffff) /* shared ram?? */ - AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ - AM_RANGE(0x1f1bff08, 0x1f1bff0f) AM_WRITENOP /* ?? */ - AM_RANGE(0x1f700000, 0x1f70ffff) AM_WRITE16(dmaoffset_w, 0xffffffff) /* dma */ +void namcos12_state::namcos12_map(address_map &map) +{ + map(0x1f000000, 0x1f000003).nopr(); + map(0x1f000000, 0x1f000001).w(this, FUNC(namcos12_state::bankoffset_w)); /* banking */ + map(0x1f080000, 0x1f083fff).rw(this, FUNC(namcos12_state::sharedram_r), FUNC(namcos12_state::sharedram_w)); /* shared ram?? */ + map(0x1f140000, 0x1f140fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x00ff00ff); /* eeprom */ + map(0x1f1bff08, 0x1f1bff0f).nopw(); /* ?? */ + map(0x1f700000, 0x1f70ffff).w(this, FUNC(namcos12_state::dmaoffset_w)); /* dma */ /* Network area */ -// AM_RANGE(0x1f780000, 0x1f78ffff) AM_READWRITE16(link_sharedram_r, link_sharedram_w, 0xffffffff) /* H8 link CPU code */ -// AM_RANGE(0x1f796000, 0x1f796003) AM_WRITE16(linkcpu_enable_w,0xffff0000) -// AM_RANGE(0x1f796020, 0x1f796023) AM_WRITE16(linkcpu_disable_w,0xffff0000) +// map(0x1f780000, 0x1f78ffff).rw(this, FUNC(namcos12_state::link_sharedram_r), FUNC(namcos12_state::link_sharedram_w)); /* H8 link CPU code */ +// map(0x1f796002, 0x1f796003).w(this, FUNC(namcos12_state::linkcpu_enable_w)); +// map(0x1f796022, 0x1f796023).w(this, FUNC(namcos12_state::linkcpu_disable_w)); - AM_RANGE(0x1fa00000, 0x1fbfffff) AM_ROMBANK("bank1") /* banked roms */ -ADDRESS_MAP_END + map(0x1fa00000, 0x1fbfffff).bankr("bank1"); /* banked roms */ +} -ADDRESS_MAP_START(namcos12_state::ptblank2_map) - AM_IMPORT_FROM( namcos12_map ) +void namcos12_state::ptblank2_map(address_map &map) +{ + namcos12_map(map); - AM_RANGE(0x1f780000, 0x1f78000f) AM_READ16(system11gun_r, 0xffffffff) - AM_RANGE(0x1f788000, 0x1f788003) AM_WRITE16(system11gun_w, 0xffffffff) -ADDRESS_MAP_END + map(0x1f780000, 0x1f78000f).r(this, FUNC(namcos12_state::system11gun_r)); + map(0x1f788000, 0x1f788003).w(this, FUNC(namcos12_state::system11gun_w)); +} -ADDRESS_MAP_START(namcos12_state::tektagt_map) - AM_IMPORT_FROM( namcos12_map ) +void namcos12_state::tektagt_map(address_map &map) +{ + namcos12_map(map); - AM_RANGE(0x1fb00000, 0x1fb00003) AM_READWRITE16(tektagt_protection_1_r, tektagt_protection_1_w, 0xffffffff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_READWRITE16(tektagt_protection_2_r, tektagt_protection_2_w, 0xffffffff) - AM_RANGE(0x1f700000, 0x1f700003) AM_READ16(tektagt_protection_3_r, 0xffffffff) -ADDRESS_MAP_END + map(0x1fb00000, 0x1fb00003).rw(this, FUNC(namcos12_state::tektagt_protection_1_r), FUNC(namcos12_state::tektagt_protection_1_w)); + map(0x1fb80000, 0x1fb80003).rw(this, FUNC(namcos12_state::tektagt_protection_2_r), FUNC(namcos12_state::tektagt_protection_2_w)); + map(0x1f700000, 0x1f700003).r(this, FUNC(namcos12_state::tektagt_protection_3_r)); +} WRITE16_MEMBER(namcos12_state::system11gun_w) { @@ -1533,26 +1537,28 @@ void namcos12_boothack_state::machine_reset() } /* H8/3002 MCU stuff */ -ADDRESS_MAP_START(namcos12_state::s12h8rwmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1") - AM_RANGE(0x300010, 0x300011) AM_NOP // golgo13 writes here a lot, possibly also a wait state generator? - AM_RANGE(0x300030, 0x300031) AM_NOP // most S12 bioses write here simply to generate a wait state. there is no deeper meaning. -ADDRESS_MAP_END +void namcos12_state::s12h8rwmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram().share("sharedram"); + map(0x280000, 0x287fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x300000, 0x300001).portr("IN0"); + map(0x300002, 0x300003).portr("IN1"); + map(0x300010, 0x300011).noprw(); // golgo13 writes here a lot, possibly also a wait state generator? + map(0x300030, 0x300031).noprw(); // most S12 bioses write here simply to generate a wait state. there is no deeper meaning. +} // map for JVS games w/o controls connected directly -ADDRESS_MAP_START(namcos12_state::s12h8rwjvsmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DIN0") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DIN1") - AM_RANGE(0x300010, 0x300011) AM_NOP - AM_RANGE(0x300030, 0x300031) AM_NOP // most S12 bioses write here simply to generate a wait state. there is no deeper meaning. -ADDRESS_MAP_END +void namcos12_state::s12h8rwjvsmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram().share("sharedram"); + map(0x280000, 0x287fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x300000, 0x300001).portr("DIN0"); + map(0x300002, 0x300003).portr("DIN1"); + map(0x300010, 0x300011).noprw(); + map(0x300030, 0x300031).noprw(); // most S12 bioses write here simply to generate a wait state. there is no deeper meaning. +} READ16_MEMBER(namcos12_state::s12_mcu_p8_r) { @@ -1598,41 +1604,44 @@ READ16_MEMBER(namcos12_state::s12_mcu_jvs_p8_r) return 0x12; // bit 4 = JVS enable. aplarail requires it to be on, soulclbr & others will require JVS I/O if it's on } -ADDRESS_MAP_START(namcos12_state::s12h8iomap) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(s12_mcu_p6_r) - AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW") - AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_p8_r) AM_WRITENOP - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w) - AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP - AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos12_state::s12h8jvsiomap) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(s12_mcu_p6_r) - AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW") - AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_jvs_p8_r) AM_WRITENOP - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w) - AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP - AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos12_state::s12h8railiomap) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(s12_mcu_p6_r) - AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW") - AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_jvs_p8_r) AM_WRITENOP - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w) - AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_READ_PORT("LEVER") - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP - AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP -ADDRESS_MAP_END +void namcos12_state::s12h8iomap(address_map &map) +{ + map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::s12_mcu_p6_r)); + map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW"); + map(h8_device::PORT_8, h8_device::PORT_8).r(this, FUNC(namcos12_state::s12_mcu_p8_r)).nopw(); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w)); + map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w)); + map(h8_device::ADC_0, h8_device::ADC_0).noprw(); + map(h8_device::ADC_1, h8_device::ADC_1).noprw(); + map(h8_device::ADC_2, h8_device::ADC_2).noprw(); + map(h8_device::ADC_3, h8_device::ADC_3).noprw(); +} + +void namcos12_state::s12h8jvsiomap(address_map &map) +{ + map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::s12_mcu_p6_r)); + map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW"); + map(h8_device::PORT_8, h8_device::PORT_8).r(this, FUNC(namcos12_state::s12_mcu_jvs_p8_r)).nopw(); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w)); + map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w)); + map(h8_device::ADC_0, h8_device::ADC_0).noprw(); + map(h8_device::ADC_1, h8_device::ADC_1).noprw(); + map(h8_device::ADC_2, h8_device::ADC_2).noprw(); + map(h8_device::ADC_3, h8_device::ADC_3).noprw(); +} + +void namcos12_state::s12h8railiomap(address_map &map) +{ + map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::s12_mcu_p6_r)); + map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW"); + map(h8_device::PORT_8, h8_device::PORT_8).r(this, FUNC(namcos12_state::s12_mcu_jvs_p8_r)).nopw(); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w)); + map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w)); + map(h8_device::ADC_0, h8_device::ADC_0).portr("LEVER"); + map(h8_device::ADC_1, h8_device::ADC_1).noprw(); + map(h8_device::ADC_2, h8_device::ADC_2).noprw(); + map(h8_device::ADC_3, h8_device::ADC_3).noprw(); +} // Golgo 13 lightgun inputs @@ -1646,13 +1655,13 @@ READ16_MEMBER(namcos12_state::s12_mcu_gun_v_r) return ioport("LIGHT0_Y")->read(); } -ADDRESS_MAP_START(namcos12_state::golgo13_h8iomap) - AM_IMPORT_FROM( s12h8iomap ) - - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(s12_mcu_gun_h_r) - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(s12_mcu_gun_v_r) -ADDRESS_MAP_END +void namcos12_state::golgo13_h8iomap(address_map &map) +{ + s12h8iomap(map); + map(h8_device::ADC_1, h8_device::ADC_1).r(this, FUNC(namcos12_state::s12_mcu_gun_h_r)); + map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(namcos12_state::s12_mcu_gun_v_r)); +} DRIVER_INIT_MEMBER(namcos12_state,namcos12) { @@ -1752,13 +1761,15 @@ MACHINE_CONFIG_START(namcos12_boothack_state::golgo13) MACHINE_CONFIG_END #define JVSCLOCK (XTAL(14'745'600)) -ADDRESS_MAP_START(namcos12_state::jvsmap) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("iocpu", 0) - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END +void namcos12_state::jvsmap(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("iocpu", 0); + map(0xc000, 0xffff).ram(); +} -ADDRESS_MAP_START(namcos12_state::jvsiomap) -ADDRESS_MAP_END +void namcos12_state::jvsiomap(address_map &map) +{ +} MACHINE_CONFIG_START(namcos12_boothack_state::truckk) @@ -1801,35 +1812,39 @@ READ16_MEMBER(namcos12_state::iob_p6_r) return sb | 0; } -ADDRESS_MAP_START(namcos12_state::tdjvsmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("iocpu", 0) - AM_RANGE(0x6000, 0x6001) AM_READ_PORT("IN01") - AM_RANGE(0x6002, 0x6003) AM_READ_PORT("IN23") - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos12_state::tdjvsiomap) - AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READWRITE(iob_p4_r, iob_p4_w) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ(iob_p6_r) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_READ_PORT("STEER") - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ_PORT("BRAKE") - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ_PORT("GAS") -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos12_state::plarailjvsmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("iocpu", 0) - AM_RANGE(0x6000, 0x6001) AM_READ_PORT("IN01") - AM_RANGE(0x6002, 0x6003) AM_READ_PORT("IN23") - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos12_state::plarailjvsiomap) - AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READWRITE(iob_p4_r, iob_p4_w) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READ_PORT("SERVICE") - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP -ADDRESS_MAP_END +void namcos12_state::tdjvsmap(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("iocpu", 0); + map(0x6000, 0x6001).portr("IN01"); + map(0x6002, 0x6003).portr("IN23"); + map(0xc000, 0xffff).ram(); +} + +void namcos12_state::tdjvsiomap(address_map &map) +{ + map(h8_device::PORT_4, h8_device::PORT_4).rw(this, FUNC(namcos12_state::iob_p4_r), FUNC(namcos12_state::iob_p4_w)); + map(h8_device::PORT_6, h8_device::PORT_6).r(this, FUNC(namcos12_state::iob_p6_r)); + map(h8_device::ADC_0, h8_device::ADC_0).portr("STEER"); + map(h8_device::ADC_1, h8_device::ADC_1).portr("BRAKE"); + map(h8_device::ADC_2, h8_device::ADC_2).portr("GAS"); +} + +void namcos12_state::plarailjvsmap(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("iocpu", 0); + map(0x6000, 0x6001).portr("IN01"); + map(0x6002, 0x6003).portr("IN23"); + map(0xc000, 0xffff).ram(); +} + +void namcos12_state::plarailjvsiomap(address_map &map) +{ + map(h8_device::PORT_4, h8_device::PORT_4).rw(this, FUNC(namcos12_state::iob_p4_r), FUNC(namcos12_state::iob_p4_w)); + map(h8_device::PORT_6, h8_device::PORT_6).portr("SERVICE"); + map(h8_device::ADC_0, h8_device::ADC_0).noprw(); + map(h8_device::ADC_1, h8_device::ADC_1).noprw(); + map(h8_device::ADC_2, h8_device::ADC_2).noprw(); +} MACHINE_CONFIG_START(namcos12_boothack_state::technodr) coh700(config); diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp index 0ca0d08fa23..68a49ab974d 100644 --- a/src/mame/drivers/namcos2.cpp +++ b/src/mame/drivers/namcos2.cpp @@ -594,192 +594,210 @@ READ8_MEMBER(namcos2_state::ack_mcu_vbl_r) 0xc00000 ONWARDS are unverified memory locations on the video board */ -ADDRESS_MAP_START(namcos2_state::namcos2_68k_default_cpu_board_am) - AM_RANGE(0x200000, 0x3fffff) AM_ROM AM_REGION("data_rom", 0) - AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(c123_tilemap_videoram_r,c123_tilemap_videoram_w) - AM_RANGE(0x420000, 0x42003f) AM_READWRITE(c123_tilemap_control_r,c123_tilemap_control_w) - AM_RANGE(0x440000, 0x44ffff) AM_READWRITE(paletteram_word_r,paletteram_word_w) AM_SHARE("paletteram") - AM_RANGE(0x460000, 0x460fff) AM_MIRROR(0xf000) AM_READWRITE(dpram_word_r,dpram_word_w) - AM_RANGE(0x480000, 0x483fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w) - AM_RANGE(0x4a0000, 0x4a000f) AM_DEVICE("sci", namco_c139_device, regs_map) -ADDRESS_MAP_END +void namcos2_state::namcos2_68k_default_cpu_board_am(address_map &map) +{ + map(0x200000, 0x3fffff).rom().region("data_rom", 0); + map(0x400000, 0x41ffff).rw(this, FUNC(namcos2_state::c123_tilemap_videoram_r), FUNC(namcos2_state::c123_tilemap_videoram_w)); + map(0x420000, 0x42003f).rw(this, FUNC(namcos2_state::c123_tilemap_control_r), FUNC(namcos2_state::c123_tilemap_control_w)); + map(0x440000, 0x44ffff).rw(this, FUNC(namcos2_state::paletteram_word_r), FUNC(namcos2_state::paletteram_word_w)).share("paletteram"); + map(0x460000, 0x460fff).mirror(0xf000).rw(this, FUNC(namcos2_state::dpram_word_r), FUNC(namcos2_state::dpram_word_w)); + map(0x480000, 0x483fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w)); + map(0x4a0000, 0x4a000f).m(m_sci, FUNC(namco_c139_device::regs_map)); +} /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::common_default_am) - AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am ) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc40000, 0xc40001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w) - AM_RANGE(0xc80000, 0xc9ffff) AM_RAM_WRITE(rozram_word_w) AM_SHARE("rozram") - AM_RANGE(0xcc0000, 0xcc000f) AM_RAM AM_SHARE("rozctrl") - AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::master_default_am) - AM_IMPORT_FROM( common_default_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM) - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::slave_default_am) - AM_IMPORT_FROM( common_default_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) -ADDRESS_MAP_END +void namcos2_state::common_default_am(address_map &map) +{ + namcos2_68k_default_cpu_board_am(map); + map(0xc00000, 0xc03fff).ram().share("spriteram"); + map(0xc40000, 0xc40001).rw(this, FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w)); + map(0xc80000, 0xc9ffff).ram().w(this, FUNC(namcos2_state::rozram_word_w)).share("rozram"); + map(0xcc0000, 0xcc000f).ram().share("rozctrl"); + map(0xd00000, 0xd0000f).rw(this, FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w)); +} + +void namcos2_state::master_default_am(address_map &map) +{ + common_default_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM); + map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); +} + +void namcos2_state::slave_default_am(address_map &map) +{ + common_default_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM); + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); +} /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::common_finallap_am) - AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am ) - AM_RANGE(0x300000, 0x33ffff) AM_READ(namcos2_finallap_prot_r) - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x840000, 0x840001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w) - AM_RANGE(0x880000, 0x89ffff) AM_DEVREADWRITE("c45_road", namco_c45_road_device, read, write) - AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::master_finallap_am) - AM_IMPORT_FROM( common_finallap_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM) - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::slave_finallap_am) - AM_IMPORT_FROM( common_finallap_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) -ADDRESS_MAP_END +void namcos2_state::common_finallap_am(address_map &map) +{ + namcos2_68k_default_cpu_board_am(map); + map(0x300000, 0x33ffff).r(this, FUNC(namcos2_state::namcos2_finallap_prot_r)); + map(0x800000, 0x80ffff).ram().share("spriteram"); + map(0x840000, 0x840001).rw(this, FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w)); + map(0x880000, 0x89ffff).rw(m_c45_road, FUNC(namco_c45_road_device::read), FUNC(namco_c45_road_device::write)); + map(0x8c0000, 0x8c0001).nopw(); +} + +void namcos2_state::master_finallap_am(address_map &map) +{ + common_finallap_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM); + map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); +} + +void namcos2_state::slave_finallap_am(address_map &map) +{ + common_finallap_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM); + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); +} /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::common_sgunner_am) - AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am ) - AM_RANGE(0x800000, 0x8141ff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w) - AM_RANGE(0x818000, 0x818001) AM_WRITENOP - AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::master_sgunner_am) - AM_IMPORT_FROM( common_sgunner_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM) - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::slave_sgunner_am) - AM_IMPORT_FROM( common_sgunner_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) -ADDRESS_MAP_END +void namcos2_state::common_sgunner_am(address_map &map) +{ + namcos2_68k_default_cpu_board_am(map); + map(0x800000, 0x8141ff).rw(this, FUNC(namcos2_state::c355_obj_ram_r), FUNC(namcos2_state::c355_obj_ram_w)); + map(0x818000, 0x818001).nopw(); + map(0xa00000, 0xa0000f).rw(this, FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w)); +} + +void namcos2_state::master_sgunner_am(address_map &map) +{ + common_sgunner_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM); + map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); +} + +void namcos2_state::slave_sgunner_am(address_map &map) +{ + common_sgunner_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM); + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); +} /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::common_metlhawk_am) - AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am ) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc40000, 0xc4ffff) AM_READWRITE(c169_roz_videoram_r,c169_roz_videoram_w) AM_SHARE("rozvideoram") - AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(c169_roz_control_r,c169_roz_control_w) - AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gfx_ctrl_r, gfx_ctrl_w) /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::master_metlhawk_am) - AM_IMPORT_FROM( common_metlhawk_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM) - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::slave_metlhawk_am) - AM_IMPORT_FROM( common_metlhawk_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) -ADDRESS_MAP_END +void namcos2_state::common_metlhawk_am(address_map &map) +{ + namcos2_68k_default_cpu_board_am(map); + map(0xc00000, 0xc03fff).ram().share("spriteram"); + map(0xc40000, 0xc4ffff).rw(this, FUNC(namcos2_state::c169_roz_videoram_r), FUNC(namcos2_state::c169_roz_videoram_w)).share("rozvideoram"); + map(0xd00000, 0xd0001f).rw(this, FUNC(namcos2_state::c169_roz_control_r), FUNC(namcos2_state::c169_roz_control_w)); + map(0xe00000, 0xe00001).rw(this, FUNC(namcos2_state::gfx_ctrl_r), FUNC(namcos2_state::gfx_ctrl_w)); /* ??? */ +} + +void namcos2_state::master_metlhawk_am(address_map &map) +{ + common_metlhawk_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM); + map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); +} + +void namcos2_state::slave_metlhawk_am(address_map &map) +{ + common_metlhawk_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM); + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); +} /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::common_luckywld_am) - AM_IMPORT_FROM( namcos2_68k_default_cpu_board_am ) - AM_RANGE(0x800000, 0x8141ff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w) - AM_RANGE(0x818000, 0x818001) AM_NOP /* enable? */ - AM_RANGE(0x81a000, 0x81a001) AM_WRITENOP /* enable? */ - AM_RANGE(0x840000, 0x840001) AM_READNOP - AM_RANGE(0x900000, 0x900007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w) - AM_RANGE(0xa00000, 0xa1ffff) AM_DEVREADWRITE("c45_road", namco_c45_road_device, read, write) - AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(c169_roz_videoram_r,c169_roz_videoram_w) AM_SHARE("rozvideoram") - AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(c169_roz_control_r,c169_roz_control_w) - AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::master_luckywld_am) - AM_IMPORT_FROM( common_luckywld_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAMBANK(NAMCOS2_68K_MASTER_RAM) - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos2_state::slave_luckywld_am) - AM_IMPORT_FROM( common_luckywld_am ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAMBANK(NAMCOS2_68K_SLAVE_RAM) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) -ADDRESS_MAP_END +void namcos2_state::common_luckywld_am(address_map &map) +{ + namcos2_68k_default_cpu_board_am(map); + map(0x800000, 0x8141ff).rw(this, FUNC(namcos2_state::c355_obj_ram_r), FUNC(namcos2_state::c355_obj_ram_w)); + map(0x818000, 0x818001).noprw(); /* enable? */ + map(0x81a000, 0x81a001).nopw(); /* enable? */ + map(0x840000, 0x840001).nopr(); + map(0x900000, 0x900007).rw(this, FUNC(namcos2_state::c355_obj_position_r), FUNC(namcos2_state::c355_obj_position_w)); + map(0xa00000, 0xa1ffff).rw(m_c45_road, FUNC(namco_c45_road_device::read), FUNC(namco_c45_road_device::write)); + map(0xc00000, 0xc0ffff).rw(this, FUNC(namcos2_state::c169_roz_videoram_r), FUNC(namcos2_state::c169_roz_videoram_w)).share("rozvideoram"); + map(0xd00000, 0xd0001f).rw(this, FUNC(namcos2_state::c169_roz_control_r), FUNC(namcos2_state::c169_roz_control_w)); + map(0xf00000, 0xf00007).rw(this, FUNC(namcos2_state::namcos2_68k_key_r), FUNC(namcos2_state::namcos2_68k_key_w)); +} + +void namcos2_state::master_luckywld_am(address_map &map) +{ + common_luckywld_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).bankrw(NAMCOS2_68K_MASTER_RAM); + map(0x180000, 0x183fff).rw(this, FUNC(namcos2_state::namcos2_68k_eeprom_r), FUNC(namcos2_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); +} + +void namcos2_state::slave_luckywld_am(address_map &map) +{ + common_luckywld_am(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x13ffff).bankrw(NAMCOS2_68K_SLAVE_RAM); + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); +} /*************************************************************/ /* 6809 SOUND CPU Memory declarations */ /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::sound_default_am) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */ - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_device, c140_r,c140_w) - AM_RANGE(0x7000, 0x77ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram") - AM_RANGE(0x7800, 0x7fff) AM_READWRITE(dpram_byte_r,dpram_byte_w) /* mirror */ - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* Amplifier enable on 1st write */ - AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos2_sound_bankselect_w) - AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* Watchdog */ - AM_RANGE(0xe000, 0xe000) AM_WRITENOP - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void namcos2_state::sound_default_am(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank6"); /* banked */ + map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x5000, 0x6fff).rw("c140", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)); + map(0x7000, 0x77ff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram"); + map(0x7800, 0x7fff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)); /* mirror */ + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).nopw(); /* Amplifier enable on 1st write */ + map(0xc000, 0xc001).w(this, FUNC(namcos2_state::namcos2_sound_bankselect_w)); + map(0xd001, 0xd001).nopw(); /* Watchdog */ + map(0xe000, 0xe000).nopw(); + map(0xd000, 0xffff).rom(); +} /*************************************************************/ /* 68705 IO CPU Memory declarations */ /*************************************************************/ -ADDRESS_MAP_START(namcos2_state::mcu_default_am) +void namcos2_state::mcu_default_am(address_map &map) +{ /* input ports and dips are mapped here */ - AM_RANGE(0x0000, 0x003f) AM_RAM /* Fill in register to stop logging */ - AM_RANGE(0x0000, 0x0000) AM_READNOP /* Keep logging quiet */ - AM_RANGE(0x0001, 0x0001) AM_READ_PORT("MCUB") - AM_RANGE(0x0002, 0x0002) AM_READ_PORT("MCUC") - AM_RANGE(0x0003, 0x0003) AM_READWRITE(namcos2_mcu_port_d_r,namcos2_mcu_port_d_w) - AM_RANGE(0x0007, 0x0007) AM_READ_PORT("MCUH") - AM_RANGE(0x0010, 0x0010) AM_READWRITE(namcos2_mcu_analog_ctrl_r,namcos2_mcu_analog_ctrl_w) - AM_RANGE(0x0011, 0x0011) AM_READWRITE(namcos2_mcu_analog_port_r,namcos2_mcu_analog_port_w) - AM_RANGE(0x0040, 0x01bf) AM_RAM - AM_RANGE(0x01c0, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("MCUDI0") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3") - AM_RANGE(0x5000, 0x57ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram") - AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x0000, 0x003f).ram(); /* Fill in register to stop logging */ + map(0x0000, 0x0000).nopr(); /* Keep logging quiet */ + map(0x0001, 0x0001).portr("MCUB"); + map(0x0002, 0x0002).portr("MCUC"); + map(0x0003, 0x0003).rw(this, FUNC(namcos2_state::namcos2_mcu_port_d_r), FUNC(namcos2_state::namcos2_mcu_port_d_w)); + map(0x0007, 0x0007).portr("MCUH"); + map(0x0010, 0x0010).rw(this, FUNC(namcos2_state::namcos2_mcu_analog_ctrl_r), FUNC(namcos2_state::namcos2_mcu_analog_ctrl_w)); + map(0x0011, 0x0011).rw(this, FUNC(namcos2_state::namcos2_mcu_analog_port_r), FUNC(namcos2_state::namcos2_mcu_analog_port_w)); + map(0x0040, 0x01bf).ram(); + map(0x01c0, 0x1fff).rom(); + map(0x2000, 0x2000).portr("DSW"); + map(0x3000, 0x3000).portr("MCUDI0"); + map(0x3001, 0x3001).portr("MCUDI1"); + map(0x3002, 0x3002).portr("MCUDI2"); + map(0x3003, 0x3003).portr("MCUDI3"); + map(0x5000, 0x57ff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram"); + map(0x6000, 0x6fff).nopr(); /* watchdog */ + map(0x8000, 0xffff).rom(); +} /*************************************************************/ @@ -795,17 +813,18 @@ WRITE8_MEMBER(namcos2_state::c68_p3_w) m_player_mux = (data & 0x80) ? 1 : 0; } -ADDRESS_MAP_START(namcos2_state::c68_default_am) +void namcos2_state::c68_default_am(address_map &map) +{ /* input ports and dips are mapped here */ - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("MCUDI0") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3") - AM_RANGE(0x5000, 0x57ff) AM_READWRITE(dpram_byte_r,dpram_byte_w) AM_SHARE("dpram") - AM_RANGE(0x6000, 0x6fff) AM_READ(ack_mcu_vbl_r) // VBL ack - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("c68", 0) -ADDRESS_MAP_END + map(0x2000, 0x2000).portr("DSW"); + map(0x3000, 0x3000).portr("MCUDI0"); + map(0x3001, 0x3001).portr("MCUDI1"); + map(0x3002, 0x3002).portr("MCUDI2"); + map(0x3003, 0x3003).portr("MCUDI3"); + map(0x5000, 0x57ff).rw(this, FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram"); + map(0x6000, 0x6fff).r(this, FUNC(namcos2_state::ack_mcu_vbl_r)); // VBL ack + map(0x8000, 0xffff).rom().region("c68", 0); +} /*************************************************************/ /* */ diff --git a/src/mame/drivers/namcos21.cpp b/src/mame/drivers/namcos21.cpp index ff6e13a3ecc..6fb7f7e9ace 100644 --- a/src/mame/drivers/namcos21.cpp +++ b/src/mame/drivers/namcos21.cpp @@ -978,29 +978,32 @@ WRITE16_MEMBER(namcos21_state::dsp_xf_w) if (ENABLE_LOGGING) logerror("xf(%d)\n",data); } -ADDRESS_MAP_START(namcos21_state::master_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM /* BIOS */ - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("master_dsp_code") -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::master_dsp_data) - AM_RANGE(0x2000, 0x200f) AM_READWRITE(dspcuskey_r,dspcuskey_w) - AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram16_r,dspram16_w<false>) /* 0x8000 words */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::master_dsp_io) - AM_RANGE(0x00,0x00) AM_READWRITE(dsp_port0_r,dsp_port0_w) - AM_RANGE(0x01,0x01) AM_READWRITE(dsp_port1_r,dsp_port1_w) - AM_RANGE(0x02,0x02) AM_READWRITE(dsp_port2_r,dsp_port2_w) - AM_RANGE(0x03,0x03) AM_READWRITE(dsp_port3_idc_rcv_enable_r,dsp_port3_w) - AM_RANGE(0x04,0x04) AM_WRITE(dsp_port4_w) - AM_RANGE(0x08,0x08) AM_READWRITE(dsp_port8_r,dsp_port8_w) - AM_RANGE(0x09,0x09) AM_READ(dsp_port9_r) - AM_RANGE(0x0a,0x0a) AM_READWRITE(dsp_porta_r,dsp_porta_w) - AM_RANGE(0x0b,0x0b) AM_READWRITE(dsp_portb_r,dsp_portb_w) - AM_RANGE(0x0c,0x0c) AM_WRITE(dsp_portc_w) - AM_RANGE(0x0f,0x0f) AM_READ(dsp_portf_r) -ADDRESS_MAP_END +void namcos21_state::master_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); /* BIOS */ + map(0x8000, 0xbfff).ram().share("master_dsp_code"); +} + +void namcos21_state::master_dsp_data(address_map &map) +{ + map(0x2000, 0x200f).rw(this, FUNC(namcos21_state::dspcuskey_r), FUNC(namcos21_state::dspcuskey_w)); + map(0x8000, 0xffff).rw(this, FUNC(namcos21_state::dspram16_r), FUNC(namcos21_state::dspram16_w<false>)); /* 0x8000 words */ +} + +void namcos21_state::master_dsp_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(namcos21_state::dsp_port0_r), FUNC(namcos21_state::dsp_port0_w)); + map(0x01, 0x01).rw(this, FUNC(namcos21_state::dsp_port1_r), FUNC(namcos21_state::dsp_port1_w)); + map(0x02, 0x02).rw(this, FUNC(namcos21_state::dsp_port2_r), FUNC(namcos21_state::dsp_port2_w)); + map(0x03, 0x03).rw(this, FUNC(namcos21_state::dsp_port3_idc_rcv_enable_r), FUNC(namcos21_state::dsp_port3_w)); + map(0x04, 0x04).w(this, FUNC(namcos21_state::dsp_port4_w)); + map(0x08, 0x08).rw(this, FUNC(namcos21_state::dsp_port8_r), FUNC(namcos21_state::dsp_port8_w)); + map(0x09, 0x09).r(this, FUNC(namcos21_state::dsp_port9_r)); + map(0x0a, 0x0a).rw(this, FUNC(namcos21_state::dsp_porta_r), FUNC(namcos21_state::dsp_porta_w)); + map(0x0b, 0x0b).rw(this, FUNC(namcos21_state::dsp_portb_r), FUNC(namcos21_state::dsp_portb_w)); + map(0x0c, 0x0c).w(this, FUNC(namcos21_state::dsp_portc_w)); + map(0x0f, 0x0f).r(this, FUNC(namcos21_state::dsp_portf_r)); +} /************************************************************************************/ @@ -1101,21 +1104,24 @@ READ16_MEMBER(namcos21_state::slave_portf_r) return 1; } -ADDRESS_MAP_START(namcos21_state::slave_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM /* BIOS */ - AM_RANGE(0x8000, 0x8fff) AM_RAM -ADDRESS_MAP_END +void namcos21_state::slave_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); /* BIOS */ + map(0x8000, 0x8fff).ram(); +} -ADDRESS_MAP_START(namcos21_state::slave_dsp_data) +void namcos21_state::slave_dsp_data(address_map &map) +{ /* no external data memory */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(namcos21_state::slave_dsp_io) - AM_RANGE(0x00,0x00) AM_READWRITE(slave_port0_r,slave_port0_w) - AM_RANGE(0x02,0x02) AM_READ(slave_port2_r) - AM_RANGE(0x03,0x03) AM_READWRITE(slave_port3_r,slave_port3_w) - AM_RANGE(0x0f,0x0f) AM_READ(slave_portf_r) -ADDRESS_MAP_END +void namcos21_state::slave_dsp_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(namcos21_state::slave_port0_r), FUNC(namcos21_state::slave_port0_w)); + map(0x02, 0x02).r(this, FUNC(namcos21_state::slave_port2_r)); + map(0x03, 0x03).rw(this, FUNC(namcos21_state::slave_port3_r), FUNC(namcos21_state::slave_port3_w)); + map(0x0f, 0x0f).r(this, FUNC(namcos21_state::slave_portf_r)); +} /************************************************************************************/ @@ -1235,41 +1241,44 @@ WRITE8_MEMBER(namcos21_state::namcos2_dualportram_byte_w) /* MASTER 68000 CPU Memory declarations */ /*************************************************************/ -ADDRESS_MAP_START(namcos21_state::common_map) - AM_RANGE(0x280000, 0x280001) AM_WRITENOP /* written once on startup */ - AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w) - AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w) - AM_RANGE(0x440002, 0x47ffff) AM_WRITENOP /* (?) Air Combat */ - AM_RANGE(0x480000, 0x4807ff) AM_READWRITE(namcos21_depthcue_r,namcos21_depthcue_w) /* Air Combat */ - AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w) - AM_RANGE(0x720000, 0x720007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w) - AM_RANGE(0x740000, 0x74ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x750000, 0x75ffff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext") - AM_RANGE(0x760000, 0x760001) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) - AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w) - AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map) - AM_RANGE(0xc00000, 0xcfffff) AM_ROM AM_MIRROR(0x100000) AM_REGION("edata", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::master_map) - AM_IMPORT_FROM( common_map ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */ - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) - AM_RANGE(0x200000, 0x20ffff) AM_READWRITE(dspram16_r,dspram16_w<true>) AM_SHARE("dspram16") -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::slave_map) - AM_IMPORT_FROM( common_map ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAM /* private work RAM */ - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) - AM_RANGE(0x200000, 0x20ffff) AM_READWRITE(dspram16_r,dspram16_w<false>) AM_SHARE("dspram16") -ADDRESS_MAP_END +void namcos21_state::common_map(address_map &map) +{ + map(0x280000, 0x280001).nopw(); /* written once on startup */ + map(0x400000, 0x400001).w(this, FUNC(namcos21_state::pointram_control_w)); + map(0x440000, 0x440001).rw(this, FUNC(namcos21_state::pointram_data_r), FUNC(namcos21_state::pointram_data_w)); + map(0x440002, 0x47ffff).nopw(); /* (?) Air Combat */ + map(0x480000, 0x4807ff).rw(this, FUNC(namcos21_state::namcos21_depthcue_r), FUNC(namcos21_state::namcos21_depthcue_w)); /* Air Combat */ + map(0x700000, 0x71ffff).rw(this, FUNC(namcos21_state::c355_obj_ram_r), FUNC(namcos21_state::c355_obj_ram_w)); + map(0x720000, 0x720007).rw(this, FUNC(namcos21_state::c355_obj_position_r), FUNC(namcos21_state::c355_obj_position_w)); + map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext"); + map(0x760000, 0x760001).rw(this, FUNC(namcos21_state::namcos21_video_enable_r), FUNC(namcos21_state::namcos21_video_enable_w)); + map(0x800000, 0x8fffff).rom().region("data", 0); + map(0x900000, 0x90ffff).ram().share("sharedram"); + map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w)); + map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w)); + map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map)); + map(0xc00000, 0xcfffff).rom().mirror(0x100000).region("edata", 0); +} + +void namcos21_state::master_map(address_map &map) +{ + common_map(map); + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); /* private work RAM */ + map(0x180000, 0x183fff).rw(this, FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); + map(0x200000, 0x20ffff).rw(this, FUNC(namcos21_state::dspram16_r), FUNC(namcos21_state::dspram16_w<true>)).share("dspram16"); +} + +void namcos21_state::slave_map(address_map &map) +{ + common_map(map); + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x13ffff).ram(); /* private work RAM */ + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); + map(0x200000, 0x20ffff).rw(this, FUNC(namcos21_state::dspram16_r), FUNC(namcos21_state::dspram16_w<false>)).share("dspram16"); +} /************************************************************* @@ -1407,22 +1416,25 @@ READ16_MEMBER(namcos21_state::winrun_table_r) return m_winrun_polydata[offset]; } -ADDRESS_MAP_START(namcos21_state::winrun_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void namcos21_state::winrun_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} -ADDRESS_MAP_START(namcos21_state::winrun_dsp_data) - AM_RANGE( 0x2000, 0x200f ) AM_READWRITE(winrun_cuskey_r,winrun_cuskey_w) - AM_RANGE( 0x4000, 0x4fff ) AM_READWRITE(winrun_dspcomram_r,winrun_dspcomram_w) - AM_RANGE( 0x8000, 0xffff ) AM_READ(winrun_table_r ) -ADDRESS_MAP_END +void namcos21_state::winrun_dsp_data(address_map &map) +{ + map(0x2000, 0x200f).rw(this, FUNC(namcos21_state::winrun_cuskey_r), FUNC(namcos21_state::winrun_cuskey_w)); + map(0x4000, 0x4fff).rw(this, FUNC(namcos21_state::winrun_dspcomram_r), FUNC(namcos21_state::winrun_dspcomram_w)); + map(0x8000, 0xffff).r(this, FUNC(namcos21_state::winrun_table_r)); +} -ADDRESS_MAP_START(namcos21_state::winrun_dsp_io) - AM_RANGE(0x08,0x09) AM_READWRITE(winrun_dsp_pointrom_data_r,winrun_dsp_pointrom_addr_w) - AM_RANGE(0x0a,0x0a) AM_WRITE(winrun_dsp_render_w) - AM_RANGE(0x0b,0x0b) AM_WRITENOP - AM_RANGE(0x0c,0x0c) AM_WRITE(winrun_dsp_complete_w) -ADDRESS_MAP_END +void namcos21_state::winrun_dsp_io(address_map &map) +{ + map(0x08, 0x09).rw(this, FUNC(namcos21_state::winrun_dsp_pointrom_data_r), FUNC(namcos21_state::winrun_dsp_pointrom_addr_w)); + map(0x0a, 0x0a).w(this, FUNC(namcos21_state::winrun_dsp_render_w)); + map(0x0b, 0x0b).nopw(); + map(0x0c, 0x0c).w(this, FUNC(namcos21_state::winrun_dsp_complete_w)); +} WRITE16_MEMBER(namcos21_state::winrun_dspbios_w) { @@ -1464,98 +1476,103 @@ WRITE16_MEMBER(namcos21_state::winrun_dspcomram_control_w) COMBINE_DATA( &m_winrun_dspcomram_control[offset] ); } -ADDRESS_MAP_START(namcos21_state::winrun_master_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */ - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) - AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_SHARE("winrun_polydata") - AM_RANGE(0x260000, 0x26ffff) AM_RAM /* unused? */ - AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_SHARE("winrun_dspbios") - AM_RANGE(0x380000, 0x38000f) AM_READWRITE(winrun_dspcomram_control_r,winrun_dspcomram_control_w) - AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w) - AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w) - AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w) - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram") - AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w) - AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::winrun_slave_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAM - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("gpu_comram") - AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w) - AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(namcos21_state::winrun_gpu_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */ - AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */ - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("gpu_intc", namco_c148_device, map) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gpu_comram") - AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x410000, 0x41ffff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext") - AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gdata", 0) - AM_RANGE(0xc00000, 0xcfffff) AM_READWRITE(winrun_gpu_videoram_r,winrun_gpu_videoram_w) - AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE(winrun_gpu_register_r,winrun_gpu_register_w) - AM_RANGE(0xe0000c, 0xe0000d) AM_DEVREADWRITE8("gpu_intc", namco_c148_device, ext_posirq_line_r,ext_posirq_line_w,0x00ff) -ADDRESS_MAP_END +void namcos21_state::winrun_master_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* work RAM */ + map(0x180000, 0x183fff).rw(this, FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); + map(0x250000, 0x25ffff).ram().share("winrun_polydata"); + map(0x260000, 0x26ffff).ram(); /* unused? */ + map(0x280000, 0x281fff).w(this, FUNC(namcos21_state::winrun_dspbios_w)).share("winrun_dspbios"); + map(0x380000, 0x38000f).rw(this, FUNC(namcos21_state::winrun_dspcomram_control_r), FUNC(namcos21_state::winrun_dspcomram_control_w)); + map(0x3c0000, 0x3c1fff).rw(this, FUNC(namcos21_state::winrun_68k_dspcomram_r), FUNC(namcos21_state::winrun_68k_dspcomram_w)); + map(0x400000, 0x400001).w(this, FUNC(namcos21_state::pointram_control_w)); + map(0x440000, 0x440001).rw(this, FUNC(namcos21_state::pointram_data_r), FUNC(namcos21_state::pointram_data_w)); + map(0x600000, 0x60ffff).ram().share("gpu_comram"); + map(0x800000, 0x87ffff).rom().region("data", 0); + map(0x900000, 0x90ffff).ram().share("sharedram"); + map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w)); + map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w)); + map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map)); +} + +void namcos21_state::winrun_slave_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x13ffff).ram(); + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); + map(0x600000, 0x60ffff).ram().share("gpu_comram"); + map(0x800000, 0x87ffff).rom().region("data", 0); + map(0x900000, 0x90ffff).ram().share("sharedram"); + map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w)); + map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w)); + map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map)); +} + + +void namcos21_state::winrun_gpu_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).rw(this, FUNC(namcos21_state::winrun_gpu_color_r), FUNC(namcos21_state::winrun_gpu_color_w)); /* ? */ + map(0x180000, 0x19ffff).ram(); /* work RAM */ + map(0x1c0000, 0x1fffff).m(m_gpu_intc, FUNC(namco_c148_device::map)); + map(0x200000, 0x20ffff).ram().share("gpu_comram"); + map(0x400000, 0x40ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x410000, 0x41ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext"); + map(0x600000, 0x6fffff).rom().region("gdata", 0); + map(0xc00000, 0xcfffff).rw(this, FUNC(namcos21_state::winrun_gpu_videoram_r), FUNC(namcos21_state::winrun_gpu_videoram_w)); + map(0xd00000, 0xd0000f).rw(this, FUNC(namcos21_state::winrun_gpu_register_r), FUNC(namcos21_state::winrun_gpu_register_w)); + map(0xe0000d, 0xe0000d).rw(m_gpu_intc, FUNC(namco_c148_device::ext_posirq_line_r), FUNC(namco_c148_device::ext_posirq_line_w)); +} /*************************************************************/ /* SOUND 6809 CPU Memory declarations */ /*************************************************************/ -ADDRESS_MAP_START(namcos21_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */ - AM_RANGE(0x3000, 0x3003) AM_WRITENOP /* ? */ - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_device, c140_r,c140_w) - AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_SHARE("mpdualportram") - AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */ - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* amplifier enable on 1st write */ - AM_RANGE(0xc000, 0xffff) AM_WRITENOP /* avoid debug log noise; games write frequently to 0xe000 */ - AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos2_sound_bankselect_w) - AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog */ - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void namcos21_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank6"); /* banked */ + map(0x3000, 0x3003).nopw(); /* ? */ + map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x5000, 0x6fff).rw("c140", FUNC(c140_device::c140_r), FUNC(c140_device::c140_w)); + map(0x7000, 0x77ff).rw(this, FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)).share("mpdualportram"); + map(0x7800, 0x7fff).rw(this, FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)); /* mirror */ + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).nopw(); /* amplifier enable on 1st write */ + map(0xc000, 0xffff).nopw(); /* avoid debug log noise; games write frequently to 0xe000 */ + map(0xc000, 0xc001).w(this, FUNC(namcos21_state::namcos2_sound_bankselect_w)); + map(0xd001, 0xd001).nopw(); /* watchdog */ + map(0xd000, 0xffff).rom(); +} /*************************************************************/ /* I/O HD63705 MCU Memory declarations */ /*************************************************************/ -ADDRESS_MAP_START(namcos21_state::mcu_map) - AM_RANGE(0x0000, 0x003f) AM_RAM - AM_RANGE(0x0000, 0x0000) AM_READNOP - AM_RANGE(0x0001, 0x0001) AM_READ_PORT("PORTB") /* p1,p2 start */ - AM_RANGE(0x0002, 0x0002) AM_READ_PORT("PORTC") /* coins */ - AM_RANGE(0x0003, 0x0003) AM_READWRITE(namcos2_mcu_port_d_r,namcos2_mcu_port_d_w) - AM_RANGE(0x0007, 0x0007) AM_READ_PORT("PORTH") /* fire buttons */ - AM_RANGE(0x0010, 0x0010) AM_READWRITE(namcos2_mcu_analog_ctrl_r,namcos2_mcu_analog_ctrl_w) - AM_RANGE(0x0011, 0x0011) AM_READWRITE(namcos2_mcu_analog_port_r,namcos2_mcu_analog_port_w) - AM_RANGE(0x0040, 0x01bf) AM_RAM - AM_RANGE(0x01c0, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DIAL0") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DIAL1") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DIAL2") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DIAL3") - AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_SHARE("mpdualportram") - AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void namcos21_state::mcu_map(address_map &map) +{ + map(0x0000, 0x003f).ram(); + map(0x0000, 0x0000).nopr(); + map(0x0001, 0x0001).portr("PORTB"); /* p1,p2 start */ + map(0x0002, 0x0002).portr("PORTC"); /* coins */ + map(0x0003, 0x0003).rw(this, FUNC(namcos21_state::namcos2_mcu_port_d_r), FUNC(namcos21_state::namcos2_mcu_port_d_w)); + map(0x0007, 0x0007).portr("PORTH"); /* fire buttons */ + map(0x0010, 0x0010).rw(this, FUNC(namcos21_state::namcos2_mcu_analog_ctrl_r), FUNC(namcos21_state::namcos2_mcu_analog_ctrl_w)); + map(0x0011, 0x0011).rw(this, FUNC(namcos21_state::namcos2_mcu_analog_port_r), FUNC(namcos21_state::namcos2_mcu_analog_port_w)); + map(0x0040, 0x01bf).ram(); + map(0x01c0, 0x1fff).rom(); + map(0x2000, 0x2000).portr("DSW"); + map(0x3000, 0x3000).portr("DIAL0"); + map(0x3001, 0x3001).portr("DIAL1"); + map(0x3002, 0x3002).portr("DIAL2"); + map(0x3003, 0x3003).portr("DIAL3"); + map(0x5000, 0x57ff).rw(this, FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)).share("mpdualportram"); + map(0x6000, 0x6fff).nopr(); /* watchdog */ + map(0x8000, 0xffff).rom(); +} /*************************************************************/ @@ -1563,39 +1580,42 @@ ADDRESS_MAP_END /*************************************************************/ -ADDRESS_MAP_START(namcos21_state::driveyes_common_map) - AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(c355_obj_ram_r,c355_obj_ram_w) - AM_RANGE(0x720000, 0x720007) AM_READWRITE(c355_obj_position_r,c355_obj_position_w) - AM_RANGE(0x740000, 0x74ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x750000, 0x75ffff) AM_RAM_DEVWRITE("palette", palette_device, write16_ext) AM_SHARE("palette_ext") - AM_RANGE(0x760000, 0x760001) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) - AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("sci", namco_c139_device, ram_r, ram_w) - AM_RANGE(0xb80000, 0xb8000f) AM_DEVICE("sci", namco_c139_device, regs_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::driveyes_master_map) - AM_IMPORT_FROM( driveyes_common_map ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */ - AM_RANGE(0x180000, 0x183fff) AM_READWRITE8(namcos2_68k_eeprom_r,namcos2_68k_eeprom_w,0x00ff) - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("master_intc", namco_c148_device, map) - AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_SHARE("winrun_polydata") - AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_SHARE("winrun_dspbios") - AM_RANGE(0x380000, 0x38000f) AM_READWRITE(winrun_dspcomram_control_r,winrun_dspcomram_control_w) - AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w) - AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w) - AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos21_state::driveyes_slave_map) - AM_IMPORT_FROM( driveyes_common_map ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */ - AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("slave_intc", namco_c148_device, map) -ADDRESS_MAP_END +void namcos21_state::driveyes_common_map(address_map &map) +{ + map(0x700000, 0x71ffff).rw(this, FUNC(namcos21_state::c355_obj_ram_r), FUNC(namcos21_state::c355_obj_ram_w)); + map(0x720000, 0x720007).rw(this, FUNC(namcos21_state::c355_obj_position_r), FUNC(namcos21_state::c355_obj_position_w)); + map(0x740000, 0x74ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x750000, 0x75ffff).ram().w(m_palette, FUNC(palette_device::write16_ext)).share("palette_ext"); + map(0x760000, 0x760001).rw(this, FUNC(namcos21_state::namcos21_video_enable_r), FUNC(namcos21_state::namcos21_video_enable_w)); + map(0x800000, 0x8fffff).rom().region("data", 0); + map(0x900000, 0x90ffff).ram().share("sharedram"); + map(0xa00000, 0xa00fff).rw(this, FUNC(namcos21_state::namcos2_68k_dualportram_word_r), FUNC(namcos21_state::namcos2_68k_dualportram_word_w)); + map(0xb00000, 0xb03fff).rw(m_sci, FUNC(namco_c139_device::ram_r), FUNC(namco_c139_device::ram_w)); + map(0xb80000, 0xb8000f).m(m_sci, FUNC(namco_c139_device::regs_map)); +} + +void namcos21_state::driveyes_master_map(address_map &map) +{ + driveyes_common_map(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* private work RAM */ + map(0x180000, 0x183fff).rw(this, FUNC(namcos21_state::namcos2_68k_eeprom_r), FUNC(namcos21_state::namcos2_68k_eeprom_w)).umask16(0x00ff); + map(0x1c0000, 0x1fffff).m(m_master_intc, FUNC(namco_c148_device::map)); + map(0x250000, 0x25ffff).ram().share("winrun_polydata"); + map(0x280000, 0x281fff).w(this, FUNC(namcos21_state::winrun_dspbios_w)).share("winrun_dspbios"); + map(0x380000, 0x38000f).rw(this, FUNC(namcos21_state::winrun_dspcomram_control_r), FUNC(namcos21_state::winrun_dspcomram_control_w)); + map(0x3c0000, 0x3c1fff).rw(this, FUNC(namcos21_state::winrun_68k_dspcomram_r), FUNC(namcos21_state::winrun_68k_dspcomram_w)); + map(0x400000, 0x400001).w(this, FUNC(namcos21_state::pointram_control_w)); + map(0x440000, 0x440001).rw(this, FUNC(namcos21_state::pointram_data_r), FUNC(namcos21_state::pointram_data_w)); +} + +void namcos21_state::driveyes_slave_map(address_map &map) +{ + driveyes_common_map(map); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* private work RAM */ + map(0x1c0000, 0x1fffff).m(m_slave_intc, FUNC(namco_c148_device::map)); +} /*************************************************************/ /* */ diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index c32842148fd..6a27f262867 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -1724,20 +1724,21 @@ WRITE32_MEMBER(namcos22_state::namcos22s_chipselect_w) // System 22 -ADDRESS_MAP_START(namcos22_state::namcos22_am) +void namcos22_state::namcos22_am(address_map &map) +{ /** * Program ROM (2M bytes) * Mounted position: LLB: CPU 4D, LMB: CPU 2D, UMB: CPU 8D, UUB: CPU 6D * Known ROM chip type: TI TMS27C040-10, ST M27C4001-10, M27C4001-12Z */ - AM_RANGE(0x00000000, 0x001fffff) AM_ROM + map(0x00000000, 0x001fffff).rom(); /** * Main RAM (128K bytes) * Mounted position: CPU 3D, 5D, 7D, 9D * Known DRAM chip type: TC55328P-25, N3441256P-15 */ - AM_RANGE(0x10000000, 0x1001ffff) AM_RAM AM_MIRROR(0x08000000) + map(0x10000000, 0x1001ffff).ram().mirror(0x08000000); /** * KEYCUS @@ -1748,7 +1749,7 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * C389? (Cyber Cycles) * C392? (Ace Driver Victory Lap) */ - AM_RANGE(0x20000000, 0x2000000f) AM_READWRITE16(namcos22_keycus_r, namcos22_keycus_w, 0xffffffff) + map(0x20000000, 0x2000000f).rw(this, FUNC(namcos22_state::namcos22_keycus_r), FUNC(namcos22_state::namcos22_keycus_w)); /** * C139 SCI Buffer @@ -1760,7 +1761,7 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * 20010000 - 20011fff TX Buffer * 20012000 - 20013fff RX FIFO Buffer (also used for TX Buffer) */ - AM_RANGE(0x20010000, 0x20013fff) AM_RAM + map(0x20010000, 0x20013fff).ram(); /** * C139 SCI Register @@ -1791,13 +1792,13 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * 2002000c 2 R/W RX FIFO Pointer (0x0000 - 0x0fff) * 2002000e 2 W TX FIFO Pointer (0x0000 - 0x1fff) */ - AM_RANGE(0x20020000, 0x2002000f) AM_READ(namcos22_sci_r) AM_WRITEONLY + map(0x20020000, 0x2002000f).r(this, FUNC(namcos22_state::namcos22_sci_r)).writeonly(); /** * System Controller: Interrupt Control, Peripheral Control * */ - AM_RANGE(0x40000000, 0x4000001f) AM_READWRITE8(namcos22_system_controller_r, namcos22_system_controller_w, 0xffffffff) + map(0x40000000, 0x4000001f).rw(this, FUNC(namcos22_state::namcos22_system_controller_r), FUNC(namcos22_state::namcos22_system_controller_w)); /** * Unknown Device (optional for diagnostics?) @@ -1805,22 +1806,22 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * zero means not-connected. * may be related to device at 0x94000000 */ - AM_RANGE(0x48000000, 0x4800003f) AM_READNOP AM_WRITENOP + map(0x48000000, 0x4800003f).nopr().nopw(); /** * DIPSW * 0x50000000 - DIPSW3 * 0x50000001 - DIPSW2 */ - AM_RANGE(0x50000000, 0x50000003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff) - AM_RANGE(0x50000008, 0x5000000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff) + map(0x50000000, 0x50000003).rw(this, FUNC(namcos22_state::namcos22_dipswitch_r), FUNC(namcos22_state::namcos22_cpuleds_w)); + map(0x50000008, 0x5000000b).rw(this, FUNC(namcos22_state::namcos22_portbit_r), FUNC(namcos22_state::namcos22_portbit_w)); /** * EEPROM * Mounted position: CPU 9E * Known chip type: HN58C65P-25 (8k x 8bit EEPROM) */ - AM_RANGE(0x58000000, 0x58001fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff) + map(0x58000000, 0x58001fff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); /** * C74 (Mitsubishi M37702 MCU) Shared RAM (0x60004000 - 0x6000bfff) @@ -1861,8 +1862,8 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * +0x0100 - 0x02ff Parameter RAM from Main MPU (for SEs) * +0x0300 - 0x03ff? Song Title (put messages here from Sound CPU) */ - AM_RANGE(0x60000000, 0x60003fff) AM_WRITENOP - AM_RANGE(0x60004000, 0x6000bfff) AM_RAM AM_SHARE("shareram") + map(0x60000000, 0x60003fff).nopw(); + map(0x60004000, 0x6000bfff).ram().share("shareram"); /** * C71 (TI TMS320C25 DSP) Shared RAM (0x70000000 - 0x70020000) @@ -1872,43 +1873,43 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * Known chip type: TC55328P-25, N341256P-15 * Notes: connected bits = 0x00ffffff (24bit) */ - AM_RANGE(0x70000000, 0x7001ffff) AM_READWRITE(namcos22_dspram_r, namcos22_dspram_w) AM_SHARE("polygonram") + map(0x70000000, 0x7001ffff).rw(this, FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram"); /** * LED on PCB(?) */ - AM_RANGE(0x90000000, 0x90000003) AM_RAM + map(0x90000000, 0x90000003).ram(); /** * Depth-cueing Look-up Table (fog density between near to far) * Mounted position: VIDEO 8P * Known chip type: TC55328P-25 */ - AM_RANGE(0x90010000, 0x90017fff) AM_RAM AM_SHARE("czram") + map(0x90010000, 0x90017fff).ram().share("czram"); /** * C305 (Display Controller) * Mounted position: VIDEO 7D (C305) * Notes: Boot time check: 0x90020100 - 0x9002027f */ - AM_RANGE(0x90020000, 0x90027fff) AM_RAM AM_SHARE("video_mixer") + map(0x90020000, 0x90027fff).ram().share("video_mixer"); /** * Mounted position: VIDEO 6B, 7B, 8B (near C305) * Note: 0xff00-0xffff are for Tilemap (16 x 16) */ - AM_RANGE(0x90028000, 0x9003ffff) AM_RAM_WRITE(namcos22_paletteram_w) AM_SHARE("paletteram") + map(0x90028000, 0x9003ffff).ram().w(this, FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram"); /** * unknown (option) * Note: This device may be optional. This may relate to device at 0x40000000 */ - AM_RANGE(0x90040000, 0x9007ffff) AM_RAM /* diagnostic ROM? */ + map(0x90040000, 0x9007ffff).ram(); /* diagnostic ROM? */ /** * Tilemap PCG Memory */ - AM_RANGE(0x90080000, 0x9009dfff) AM_RAM_WRITE(namcos22_cgram_w) AM_SHARE("cgram") + map(0x90080000, 0x9009dfff).ram().w(this, FUNC(namcos22_state::namcos22_cgram_w)).share("cgram"); /** * Tilemap Memory (64 x 64) @@ -1916,43 +1917,44 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * Known chip type: HM511664 (64k x 16bit SRAM) * Note: Self test: 90084000 - 9009ffff */ - AM_RANGE(0x9009e000, 0x9009ffff) AM_RAM_WRITE(namcos22_textram_w) AM_SHARE("textram") + map(0x9009e000, 0x9009ffff).ram().w(this, FUNC(namcos22_state::namcos22_textram_w)).share("textram"); /** * Tilemap Register * Mounted position: unknown */ - AM_RANGE(0x900a0000, 0x900a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_SHARE("tilemapattr") -ADDRESS_MAP_END + map(0x900a0000, 0x900a000f).rw(this, FUNC(namcos22_state::namcos22_tilemapattr_r), FUNC(namcos22_state::namcos22_tilemapattr_w)).share("tilemapattr"); +} // Super System 22 -ADDRESS_MAP_START(namcos22_state::namcos22s_am) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x400000, 0x40001f) AM_READWRITE16(namcos22_keycus_r, namcos22_keycus_w, 0xffffffff) - AM_RANGE(0x410000, 0x413fff) AM_RAM /* C139 SCI buffer */ - AM_RANGE(0x420000, 0x42000f) AM_READ(namcos22_sci_r) AM_WRITEONLY /* C139 SCI registers */ - AM_RANGE(0x440000, 0x440003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff) - AM_RANGE(0x450008, 0x45000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff) - AM_RANGE(0x460000, 0x463fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00) - AM_RANGE(0x700000, 0x70001f) AM_READWRITE8(namcos22_system_controller_r, namcos22s_system_controller_w, 0xffffffff) - AM_RANGE(0x800000, 0x800003) AM_WRITE(namcos22s_chipselect_w) - AM_RANGE(0x810000, 0x81000f) AM_RAM AM_SHARE("czattr") - AM_RANGE(0x810200, 0x8103ff) AM_READWRITE(namcos22s_czram_r, namcos22s_czram_w) - AM_RANGE(0x820000, 0x8202ff) AM_WRITENOP /* leftover of old (non-super) video mixer device */ - AM_RANGE(0x824000, 0x8243ff) AM_RAM AM_SHARE("video_mixer") - AM_RANGE(0x828000, 0x83ffff) AM_RAM_WRITE(namcos22_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x860000, 0x860007) AM_READWRITE(namcos22s_spotram_r, namcos22s_spotram_w) - AM_RANGE(0x880000, 0x89dfff) AM_RAM_WRITE(namcos22_cgram_w) AM_SHARE("cgram") - AM_RANGE(0x89e000, 0x89ffff) AM_RAM_WRITE(namcos22_textram_w) AM_SHARE("textram") - AM_RANGE(0x8a0000, 0x8a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_SHARE("tilemapattr") - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("vics_data") - AM_RANGE(0x940000, 0x94007f) AM_READWRITE(namcos22s_vics_control_r, namcos22s_vics_control_w) AM_SHARE("vics_control") - AM_RANGE(0x980000, 0x9affff) AM_RAM AM_SHARE("spriteram") /* C374 */ - AM_RANGE(0xa04000, 0xa0bfff) AM_RAM AM_SHARE("shareram") /* COM RAM */ - AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(namcos22_dspram_r, namcos22_dspram_w) AM_SHARE("polygonram") - AM_RANGE(0xe00000, 0xe3ffff) AM_RAM /* workram */ -ADDRESS_MAP_END +void namcos22_state::namcos22s_am(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x400000, 0x40001f).rw(this, FUNC(namcos22_state::namcos22_keycus_r), FUNC(namcos22_state::namcos22_keycus_w)); + map(0x410000, 0x413fff).ram(); /* C139 SCI buffer */ + map(0x420000, 0x42000f).r(this, FUNC(namcos22_state::namcos22_sci_r)).writeonly(); /* C139 SCI registers */ + map(0x440000, 0x440003).rw(this, FUNC(namcos22_state::namcos22_dipswitch_r), FUNC(namcos22_state::namcos22_cpuleds_w)); + map(0x450008, 0x45000b).rw(this, FUNC(namcos22_state::namcos22_portbit_r), FUNC(namcos22_state::namcos22_portbit_w)); + map(0x460000, 0x463fff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00); + map(0x700000, 0x70001f).rw(this, FUNC(namcos22_state::namcos22_system_controller_r), FUNC(namcos22_state::namcos22s_system_controller_w)); + map(0x800000, 0x800003).w(this, FUNC(namcos22_state::namcos22s_chipselect_w)); + map(0x810000, 0x81000f).ram().share("czattr"); + map(0x810200, 0x8103ff).rw(this, FUNC(namcos22_state::namcos22s_czram_r), FUNC(namcos22_state::namcos22s_czram_w)); + map(0x820000, 0x8202ff).nopw(); /* leftover of old (non-super) video mixer device */ + map(0x824000, 0x8243ff).ram().share("video_mixer"); + map(0x828000, 0x83ffff).ram().w(this, FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram"); + map(0x860000, 0x860007).rw(this, FUNC(namcos22_state::namcos22s_spotram_r), FUNC(namcos22_state::namcos22s_spotram_w)); + map(0x880000, 0x89dfff).ram().w(this, FUNC(namcos22_state::namcos22_cgram_w)).share("cgram"); + map(0x89e000, 0x89ffff).ram().w(this, FUNC(namcos22_state::namcos22_textram_w)).share("textram"); + map(0x8a0000, 0x8a000f).rw(this, FUNC(namcos22_state::namcos22_tilemapattr_r), FUNC(namcos22_state::namcos22_tilemapattr_w)).share("tilemapattr"); + map(0x900000, 0x90ffff).ram().share("vics_data"); + map(0x940000, 0x94007f).rw(this, FUNC(namcos22_state::namcos22s_vics_control_r), FUNC(namcos22_state::namcos22s_vics_control_w)).share("vics_control"); + map(0x980000, 0x9affff).ram().share("spriteram"); /* C374 */ + map(0xa04000, 0xa0bfff).ram().share("shareram"); /* COM RAM */ + map(0xc00000, 0xc1ffff).rw(this, FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram"); + map(0xe00000, 0xe3ffff).ram(); /* workram */ +} // Time Crisis gun @@ -1976,10 +1978,11 @@ READ32_MEMBER(namcos22_state::namcos22_gun_r) } } -ADDRESS_MAP_START(namcos22_state::timecris_am) - AM_IMPORT_FROM( namcos22s_am ) - AM_RANGE(0x430000, 0x43000f) AM_READ(namcos22_gun_r) -ADDRESS_MAP_END +void namcos22_state::timecris_am(address_map &map) +{ + namcos22s_am(map); + map(0x430000, 0x43000f).r(this, FUNC(namcos22_state::namcos22_gun_r)); +} // Alpine Surfer protection @@ -2009,11 +2012,12 @@ WRITE32_MEMBER(namcos22_state::alpinesa_prot_w) } } -ADDRESS_MAP_START(namcos22_state::alpinesa_am) - AM_IMPORT_FROM( namcos22s_am ) - AM_RANGE(0x200000, 0x200003) AM_READ(alpinesa_prot_r) - AM_RANGE(0x300000, 0x300003) AM_WRITE(alpinesa_prot_w) -ADDRESS_MAP_END +void namcos22_state::alpinesa_am(address_map &map) +{ + namcos22s_am(map); + map(0x200000, 0x200003).r(this, FUNC(namcos22_state::alpinesa_prot_r)); + map(0x300000, 0x300003).w(this, FUNC(namcos22_state::alpinesa_prot_w)); +} @@ -2539,33 +2543,36 @@ WRITE16_MEMBER(namcos22_state::master_render_device_w) } } -ADDRESS_MAP_START(namcos22_state::master_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM /* internal ROM (4k words) */ - AM_RANGE(0x4000, 0x7fff) AM_ROM AM_SHARE("masterextram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos22_state::master_dsp_data) - AM_RANGE(0x1000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_READ(master_external_ram_r) AM_WRITE(master_external_ram_w) - AM_RANGE(0x8000, 0xffff) AM_READ(namcos22_dspram16_r) AM_WRITE(namcos22_dspram16_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos22_state::master_dsp_io) - AM_RANGE(0x0, 0x0) AM_READWRITE(point_loword_r, point_loword_iw) - AM_RANGE(0x1, 0x1) AM_READWRITE(point_hiword_ir, point_hiword_w) - AM_RANGE(0x2, 0x2) AM_READWRITE(pdp_begin_r, dsp_unk2_w) - AM_RANGE(0x3, 0x3) AM_READWRITE(dsp_unk_port3_r, point_address_w) - AM_RANGE(0x4, 0x4) AM_WRITENOP /* unknown */ - AM_RANGE(0x7, 0x7) AM_WRITE(upload_code_to_slave_dsp_w) - AM_RANGE(0x8, 0x8) AM_READWRITE(dsp_unk8_r, dsp_unk8_w) /* trigger irq? */ - AM_RANGE(0x9, 0x9) AM_READ(custom_ic_status_r) AM_WRITENOP /* trigger irq? */ - AM_RANGE(0xa, 0xa) AM_WRITE(dsp_unk_porta_w) - AM_RANGE(0xb, 0xb) AM_WRITENOP /* RINT-related? */ - AM_RANGE(0xc, 0xc) AM_WRITE(master_render_device_w) - AM_RANGE(0xd, 0xd) AM_WRITE(namcos22_dspram16_bank_w) - AM_RANGE(0xe, 0xe) AM_WRITE(dsp_led_w) - AM_RANGE(0xf, 0xf) AM_READ(dsp_upload_status_r) AM_WRITENOP -ADDRESS_MAP_END +void namcos22_state::master_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); /* internal ROM (4k words) */ + map(0x4000, 0x7fff).rom().share("masterextram"); +} + +void namcos22_state::master_dsp_data(address_map &map) +{ + map(0x1000, 0x3fff).ram(); + map(0x4000, 0x7fff).r(this, FUNC(namcos22_state::master_external_ram_r)).w(this, FUNC(namcos22_state::master_external_ram_w)); + map(0x8000, 0xffff).r(this, FUNC(namcos22_state::namcos22_dspram16_r)).w(this, FUNC(namcos22_state::namcos22_dspram16_w)); +} + +void namcos22_state::master_dsp_io(address_map &map) +{ + map(0x0, 0x0).rw(this, FUNC(namcos22_state::point_loword_r), FUNC(namcos22_state::point_loword_iw)); + map(0x1, 0x1).rw(this, FUNC(namcos22_state::point_hiword_ir), FUNC(namcos22_state::point_hiword_w)); + map(0x2, 0x2).rw(this, FUNC(namcos22_state::pdp_begin_r), FUNC(namcos22_state::dsp_unk2_w)); + map(0x3, 0x3).rw(this, FUNC(namcos22_state::dsp_unk_port3_r), FUNC(namcos22_state::point_address_w)); + map(0x4, 0x4).nopw(); /* unknown */ + map(0x7, 0x7).w(this, FUNC(namcos22_state::upload_code_to_slave_dsp_w)); + map(0x8, 0x8).rw(this, FUNC(namcos22_state::dsp_unk8_r), FUNC(namcos22_state::dsp_unk8_w)); /* trigger irq? */ + map(0x9, 0x9).r(this, FUNC(namcos22_state::custom_ic_status_r)).nopw(); /* trigger irq? */ + map(0xa, 0xa).w(this, FUNC(namcos22_state::dsp_unk_porta_w)); + map(0xb, 0xb).nopw(); /* RINT-related? */ + map(0xc, 0xc).w(this, FUNC(namcos22_state::master_render_device_w)); + map(0xd, 0xd).w(this, FUNC(namcos22_state::namcos22_dspram16_bank_w)); + map(0xe, 0xe).w(this, FUNC(namcos22_state::dsp_led_w)); + map(0xf, 0xf).r(this, FUNC(namcos22_state::dsp_upload_status_r)).nopw(); +} READ16_MEMBER(namcos22_state::dsp_bioz_r) @@ -2625,31 +2632,34 @@ WRITE16_MEMBER(namcos22_state::dsp_slave_portb_w) /* The slave dsp uses this to transmit a command sequence to an external device. */ } -ADDRESS_MAP_START(namcos22_state::slave_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM /* internal ROM */ - AM_RANGE(0x8000, 0x9fff) AM_ROM AM_SHARE("slaveextram") -ADDRESS_MAP_END +void namcos22_state::slave_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); /* internal ROM */ + map(0x8000, 0x9fff).rom().share("slaveextram"); +} -ADDRESS_MAP_START(namcos22_state::slave_dsp_data) - AM_RANGE(0x8000, 0x9fff) AM_READWRITE(slave_external_ram_r, slave_external_ram_w) -ADDRESS_MAP_END +void namcos22_state::slave_dsp_data(address_map &map) +{ + map(0x8000, 0x9fff).rw(this, FUNC(namcos22_state::slave_external_ram_r), FUNC(namcos22_state::slave_external_ram_w)); +} -ADDRESS_MAP_START(namcos22_state::slave_dsp_io) +void namcos22_state::slave_dsp_io(address_map &map) +{ /* unknown signal */ - AM_RANGE(0x3, 0x3) AM_READ(dsp_slave_port3_r) + map(0x3, 0x3).r(this, FUNC(namcos22_state::dsp_slave_port3_r)); - AM_RANGE(0x4, 0x4) AM_READ(dsp_slave_port4_r) - AM_RANGE(0x5, 0x5) AM_READ(dsp_slave_port5_r) - AM_RANGE(0x6, 0x6) AM_READ(dsp_slave_port6_r) AM_WRITENOP + map(0x4, 0x4).r(this, FUNC(namcos22_state::dsp_slave_port4_r)); + map(0x5, 0x5).r(this, FUNC(namcos22_state::dsp_slave_port5_r)); + map(0x6, 0x6).r(this, FUNC(namcos22_state::dsp_slave_port6_r)).nopw(); /* render device state */ - AM_RANGE(0x8, 0x8) AM_READ(dsp_slave_port8_r) AM_WRITENOP + map(0x8, 0x8).r(this, FUNC(namcos22_state::dsp_slave_port8_r)).nopw(); /* render device */ - AM_RANGE(0xb, 0xb) AM_READWRITE(dsp_slave_portb_r, dsp_slave_portb_w) + map(0xb, 0xb).rw(this, FUNC(namcos22_state::dsp_slave_portb_r), FUNC(namcos22_state::dsp_slave_portb_w)); - AM_RANGE(0xc, 0xc) AM_WRITE(dsp_slave_portc_w) -ADDRESS_MAP_END + map(0xc, 0xc).w(this, FUNC(namcos22_state::dsp_slave_portc_w)); +} /*********************************************************************************************/ @@ -2705,28 +2715,32 @@ READ8_MEMBER(namcos22_state::iomcu_port4_s22_r) return 0x00; } -ADDRESS_MAP_START(namcos22_state::mcu_s22_program) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x004000, 0x00bfff) AM_READWRITE(s22mcu_shared_r, s22mcu_shared_w ) - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x301000, 0x301001) AM_NOP // watchdog? LEDs? - AM_RANGE(0x308000, 0x308003) AM_NOP // volume control IC? -ADDRESS_MAP_END +void namcos22_state::mcu_s22_program(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x004000, 0x00bfff).rw(this, FUNC(namcos22_state::s22mcu_shared_r), FUNC(namcos22_state::s22mcu_shared_w)); + map(0x080000, 0x0fffff).rom().region("mcu", 0); + map(0x200000, 0x27ffff).rom().region("mcu", 0); + map(0x280000, 0x2fffff).rom().region("mcu", 0); + map(0x301000, 0x301001).noprw(); // watchdog? LEDs? + map(0x308000, 0x308003).noprw(); // volume control IC? +} -ADDRESS_MAP_START(namcos22_state::iomcu_s22_program) +void namcos22_state::iomcu_s22_program(address_map &map) +{ // is there any external memory or MMIO on this one? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(namcos22_state::mcu_s22_io) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READ(mcu_port4_s22_r) -ADDRESS_MAP_END +void namcos22_state::mcu_s22_io(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).r(this, FUNC(namcos22_state::mcu_port4_s22_r)); +} -ADDRESS_MAP_START(namcos22_state::iomcu_s22_io) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READ(iomcu_port4_s22_r) - AM_RANGE(0x00, 0xff) AM_NOP -ADDRESS_MAP_END +void namcos22_state::iomcu_s22_io(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).r(this, FUNC(namcos22_state::iomcu_port4_s22_r)); + map(0x00, 0xff).noprw(); +} // Super System 22 M37710 @@ -2794,24 +2808,26 @@ READ8_MEMBER(namcos22_state::namcos22s_mcu_adc_r) return (offset & 1) ? adc >> 8 : adc; } -ADDRESS_MAP_START(namcos22_state::mcu_program) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x004000, 0x00bfff) AM_READWRITE(s22mcu_shared_r, s22mcu_shared_w ) - AM_RANGE(0x00c000, 0x00ffff) AM_ROM AM_REGION("mcu", 0xc000) - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x301000, 0x301001) AM_NOP // watchdog? LEDs? - AM_RANGE(0x308000, 0x308003) AM_NOP // volume control IC? -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos22_state::mcu_io) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READWRITE(mcu_port4_r, mcu_port4_w) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_READWRITE(mcu_port5_r, mcu_port5_w) - AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(mcu_port6_r, mcu_port6_w) - AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READWRITE(mcu_port7_r, mcu_port7_w) - AM_RANGE(M37710_ADC0_L, M37710_ADC7_H) AM_READ(namcos22s_mcu_adc_r) -ADDRESS_MAP_END +void namcos22_state::mcu_program(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x004000, 0x00bfff).rw(this, FUNC(namcos22_state::s22mcu_shared_r), FUNC(namcos22_state::s22mcu_shared_w)); + map(0x00c000, 0x00ffff).rom().region("mcu", 0xc000); + map(0x080000, 0x0fffff).rom().region("mcu", 0); + map(0x200000, 0x27ffff).rom().region("mcu", 0); + map(0x280000, 0x2fffff).rom().region("mcu", 0); + map(0x301000, 0x301001).noprw(); // watchdog? LEDs? + map(0x308000, 0x308003).noprw(); // volume control IC? +} + +void namcos22_state::mcu_io(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).rw(this, FUNC(namcos22_state::mcu_port4_r), FUNC(namcos22_state::mcu_port4_w)); + map(M37710_PORT5, M37710_PORT5).rw(this, FUNC(namcos22_state::mcu_port5_r), FUNC(namcos22_state::mcu_port5_w)); + map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcos22_state::mcu_port6_r), FUNC(namcos22_state::mcu_port6_w)); + map(M37710_PORT7, M37710_PORT7).rw(this, FUNC(namcos22_state::mcu_port7_r), FUNC(namcos22_state::mcu_port7_w)); + map(M37710_ADC0_L, M37710_ADC7_H).r(this, FUNC(namcos22_state::namcos22s_mcu_adc_r)); +} /*********************************************************************************************/ @@ -2954,10 +2970,11 @@ WRITE8_MEMBER(namcos22_state::alpine_mcu_port5_w) } } -ADDRESS_MAP_START(namcos22_state::alpine_io_map) - AM_IMPORT_FROM( mcu_io ) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_WRITE(alpine_mcu_port5_w) -ADDRESS_MAP_END +void namcos22_state::alpine_io_map(address_map &map) +{ + mcu_io(map); + map(M37710_PORT5, M37710_PORT5).w(this, FUNC(namcos22_state::alpine_mcu_port5_w)); +} // Prop Cycle @@ -2971,10 +2988,11 @@ WRITE8_MEMBER(namcos22_state::propcycle_mcu_port5_w) output().set_led_value(0, data & 2); } -ADDRESS_MAP_START(namcos22_state::propcycl_io_map) - AM_IMPORT_FROM( mcu_io ) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_WRITE(propcycle_mcu_port5_w) -ADDRESS_MAP_END +void namcos22_state::propcycl_io_map(address_map &map) +{ + mcu_io(map); + map(M37710_PORT5, M37710_PORT5).w(this, FUNC(namcos22_state::propcycle_mcu_port5_w)); +} TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::propcycl_pedal_interrupt) { diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp index eb29d864301..571582f9cf1 100644 --- a/src/mame/drivers/namcos23.cpp +++ b/src/mame/drivers/namcos23.cpp @@ -2890,56 +2890,58 @@ WRITE16_MEMBER(namcos23_state::sub_comm_w) // System Gorgon -ADDRESS_MAP_START(namcos23_state::gorgon_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffffff) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(c435_r, c435_w) - AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(c417_r, c417_w, 0xffffffff) - AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_SHARE("shared_ram") // Communication RAM (C416) - AM_RANGE(0x04c3ff00, 0x04c3ff0f) AM_WRITE16(mcuen_w, 0xffffffff) - AM_RANGE(0x06080000, 0x0608000f) AM_RAM AM_SHARE("czattr") - AM_RANGE(0x06080200, 0x060803ff) AM_RAM // PCZ Convert RAM (C406) (should be banked) - AM_RANGE(0x06108000, 0x061087ff) AM_RAM AM_SHARE("gammaram") // Gamma RAM (C404) - AM_RANGE(0x06110000, 0x0613ffff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") // Palette RAM (C404) - AM_RANGE(0x06400000, 0x0641dfff) AM_RAM_WRITE(textchar_w) AM_SHARE("charram") // Text CGRAM (C361) - AM_RANGE(0x0641e000, 0x0641ffff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") // Text VRAM (C361) - AM_RANGE(0x06420000, 0x0642000f) AM_READWRITE16(c361_r, c361_w, 0xffffffff) // C361 - AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs - AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_SHARE("nvram") // Backup RAM - AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(ctl_r, ctl_w, 0xffffffff) // write for LEDs at d000000, watchdog at d000004 - AM_RANGE(0x0e000000, 0x0e007fff) AM_RAM // C405 RAM - what is this? - AM_RANGE(0x0f000000, 0x0f000003) AM_READWRITE16(sub_comm_r, sub_comm_w, 0xffffffff) // not sure - AM_RANGE(0x0f200000, 0x0f203fff) AM_RAM // C422 RAM - AM_RANGE(0x0f300000, 0x0f30000f) AM_READWRITE16(c422_r, c422_w, 0xffffffff) // C422 registers - AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void namcos23_state::gorgon_map(address_map &map) +{ + map.global_mask(0xfffffff); + map(0x00000000, 0x003fffff).ram().share("mainram"); + map(0x01000000, 0x010000ff).rw(this, FUNC(namcos23_state::c435_r), FUNC(namcos23_state::c435_w)); + map(0x02000000, 0x0200000f).rw(this, FUNC(namcos23_state::c417_r), FUNC(namcos23_state::c417_w)); + map(0x04400000, 0x0440ffff).ram().share("shared_ram"); // Communication RAM (C416) + map(0x04c3ff00, 0x04c3ff0f).w(this, FUNC(namcos23_state::mcuen_w)); + map(0x06080000, 0x0608000f).ram().share("czattr"); + map(0x06080200, 0x060803ff).ram(); // PCZ Convert RAM (C406) (should be banked) + map(0x06108000, 0x061087ff).ram().share("gammaram"); // Gamma RAM (C404) + map(0x06110000, 0x0613ffff).ram().w(this, FUNC(namcos23_state::paletteram_w)).share("paletteram"); // Palette RAM (C404) + map(0x06400000, 0x0641dfff).ram().w(this, FUNC(namcos23_state::textchar_w)).share("charram"); // Text CGRAM (C361) + map(0x0641e000, 0x0641ffff).ram().w(this, FUNC(namcos23_state::textram_w)).share("textram"); // Text VRAM (C361) + map(0x06420000, 0x0642000f).rw(this, FUNC(namcos23_state::c361_r), FUNC(namcos23_state::c361_w)); // C361 + map(0x08000000, 0x087fffff).rom().region("data", 0); // data ROMs + map(0x0c000000, 0x0c00ffff).ram().share("nvram"); // Backup RAM + map(0x0d000000, 0x0d00000f).rw(this, FUNC(namcos23_state::ctl_r), FUNC(namcos23_state::ctl_w)); // write for LEDs at d000000, watchdog at d000004 + map(0x0e000000, 0x0e007fff).ram(); // C405 RAM - what is this? + map(0x0f000000, 0x0f000003).rw(this, FUNC(namcos23_state::sub_comm_r), FUNC(namcos23_state::sub_comm_w)); // not sure + map(0x0f200000, 0x0f203fff).ram(); // C422 RAM + map(0x0f300000, 0x0f30000f).rw(this, FUNC(namcos23_state::c422_r), FUNC(namcos23_state::c422_w)); // C422 registers + map(0x0fc00000, 0x0fffffff).nopw().rom().region("user1", 0); +} // (Super) System 23 -ADDRESS_MAP_START(namcos23_state::s23_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffffff) - AM_RANGE(0x00000000, 0x00ffffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(c435_r, c435_w) - AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(c417_r, c417_w, 0xffffffff) - AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_SHARE("shared_ram") // Communication RAM (C416) - AM_RANGE(0x04c3ff00, 0x04c3ff0f) AM_WRITE16(mcuen_w, 0xffffffff) - AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_SHARE("nvram") // Backup RAM - AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422 RAM - AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16(c422_r, c422_w, 0xffffffff) // C422 registers - AM_RANGE(0x06800000, 0x0681dfff) AM_RAM_WRITE(textchar_w) AM_SHARE("charram") // Text CGRAM (C361) - AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") // Text VRAM (C361) - AM_RANGE(0x06820000, 0x0682000f) AM_READWRITE16(c361_r, c361_w, 0xffffffff) // C361 - AM_RANGE(0x06a08000, 0x06a087ff) AM_RAM AM_SHARE("gammaram") // Gamma RAM (C404) - AM_RANGE(0x06a10000, 0x06a3ffff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") // Palette RAM (C404) - AM_RANGE(0x08000000, 0x08ffffff) AM_ROM AM_REGION("data", 0x0000000) AM_MIRROR(0x1000000) // data ROMs - AM_RANGE(0x0a000000, 0x0affffff) AM_ROM AM_REGION("data", 0x1000000) AM_MIRROR(0x1000000) - AM_RANGE(0x0c000000, 0x0c00001f) AM_READWRITE16(c412_r, c412_w, 0xffffffff) - AM_RANGE(0x0c400000, 0x0c400007) AM_READWRITE16(c421_r, c421_w, 0xffffffff) - AM_RANGE(0x0c800010, 0x0c800013) AM_WRITE16(c435_state_reset_w, 0xffff0000) - AM_RANGE(0x0c800014, 0x0c800017) AM_WRITE16(c435_state_pio_w, 0x0000ffff) - AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(ctl_r, ctl_w, 0xffffffff) - AM_RANGE(0x0e800000, 0x0e800003) AM_READWRITE16(sub_comm_r, sub_comm_w, 0xffffffff) // not sure - AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void namcos23_state::s23_map(address_map &map) +{ + map.global_mask(0xfffffff); + map(0x00000000, 0x00ffffff).ram().share("mainram"); + map(0x01000000, 0x010000ff).rw(this, FUNC(namcos23_state::c435_r), FUNC(namcos23_state::c435_w)); + map(0x02000000, 0x0200000f).rw(this, FUNC(namcos23_state::c417_r), FUNC(namcos23_state::c417_w)); + map(0x04400000, 0x0440ffff).ram().share("shared_ram"); // Communication RAM (C416) + map(0x04c3ff00, 0x04c3ff0f).w(this, FUNC(namcos23_state::mcuen_w)); + map(0x06000000, 0x0600ffff).ram().share("nvram"); // Backup RAM + map(0x06200000, 0x06203fff).ram(); // C422 RAM + map(0x06400000, 0x0640000f).rw(this, FUNC(namcos23_state::c422_r), FUNC(namcos23_state::c422_w)); // C422 registers + map(0x06800000, 0x0681dfff).ram().w(this, FUNC(namcos23_state::textchar_w)).share("charram"); // Text CGRAM (C361) + map(0x0681e000, 0x0681ffff).ram().w(this, FUNC(namcos23_state::textram_w)).share("textram"); // Text VRAM (C361) + map(0x06820000, 0x0682000f).rw(this, FUNC(namcos23_state::c361_r), FUNC(namcos23_state::c361_w)); // C361 + map(0x06a08000, 0x06a087ff).ram().share("gammaram"); // Gamma RAM (C404) + map(0x06a10000, 0x06a3ffff).ram().w(this, FUNC(namcos23_state::paletteram_w)).share("paletteram"); // Palette RAM (C404) + map(0x08000000, 0x08ffffff).rom().region("data", 0x0000000).mirror(0x1000000); // data ROMs + map(0x0a000000, 0x0affffff).rom().region("data", 0x1000000).mirror(0x1000000); + map(0x0c000000, 0x0c00001f).rw(this, FUNC(namcos23_state::c412_r), FUNC(namcos23_state::c412_w)); + map(0x0c400000, 0x0c400007).rw(this, FUNC(namcos23_state::c421_r), FUNC(namcos23_state::c421_w)); + map(0x0c800010, 0x0c800011).w(this, FUNC(namcos23_state::c435_state_reset_w)); + map(0x0c800016, 0x0c800017).w(this, FUNC(namcos23_state::c435_state_pio_w)); + map(0x0d000000, 0x0d00000f).rw(this, FUNC(namcos23_state::ctl_r), FUNC(namcos23_state::ctl_w)); + map(0x0e800000, 0x0e800003).rw(this, FUNC(namcos23_state::sub_comm_r), FUNC(namcos23_state::sub_comm_w)); // not sure + map(0x0fc00000, 0x0fffffff).nopw().rom().region("user1", 0); +} @@ -2963,23 +2965,25 @@ WRITE32_MEMBER(namcos23_state::sh2_shared_w) COMBINE_DATA(&m_gmen_sh2_shared[offset]); } -ADDRESS_MAP_START(namcos23_state::gmen_mips_map) - AM_IMPORT_FROM(s23_map) - AM_RANGE(0x0e400000, 0x0e400003) AM_READ(gmen_trigger_sh2) - AM_RANGE(0x0e700000, 0x0e70ffff) AM_READWRITE(sh2_shared_r, sh2_shared_w) -ADDRESS_MAP_END +void namcos23_state::gmen_mips_map(address_map &map) +{ + s23_map(map); + map(0x0e400000, 0x0e400003).r(this, FUNC(namcos23_state::gmen_trigger_sh2)); + map(0x0e700000, 0x0e70ffff).rw(this, FUNC(namcos23_state::sh2_shared_r), FUNC(namcos23_state::sh2_shared_w)); +} // SH2 memmap /* TODO: of course, I believe that area 0x008***** is actually a bank of some sort ... */ -ADDRESS_MAP_START(namcos23_state::gmen_sh2_map) - AM_RANGE(0x00000000, 0x0000ffff) AM_RAM AM_SHARE("gmen_sh2_shared") - AM_RANGE(0x00800000, 0x008fffff) AM_ROM AM_REGION("data", 0xc00000) //c00000 "data" for final furlong 2. 0x1b6bc0 "user1" for gunmen wars - AM_RANGE(0x01800000, 0x0183ffff) AM_RAM // ??? +void namcos23_state::gmen_sh2_map(address_map &map) +{ + map(0x00000000, 0x0000ffff).ram().share("gmen_sh2_shared"); + map(0x00800000, 0x008fffff).rom().region("data", 0xc00000); //c00000 "data" for final furlong 2. 0x1b6bc0 "user1" for gunmen wars + map(0x01800000, 0x0183ffff).ram(); // ??? //AM_RANGE(0x02800000, 0x02800003) AM_RAM // probably transfer status related, reads/writes after each end of flash transfer, TBD - AM_RANGE(0x04000000, 0x043fffff) AM_RAM // SH-2 main work RAM (SDRAM) - AM_RANGE(0x06000000, 0x06000003) AM_NOP // serial port for camera? -ADDRESS_MAP_END + map(0x04000000, 0x043fffff).ram(); // SH-2 main work RAM (SDRAM) + map(0x06000000, 0x06000003).noprw(); // serial port for camera? +} @@ -3085,27 +3089,29 @@ WRITE16_MEMBER(namcos23_state::mcu_pb_w) } -ADDRESS_MAP_START(namcos23_state::s23h8rwmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(sharedram_sub_r, sharedram_sub_w ) - AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x300000, 0x300003) AM_NOP // seems to be more inputs, maybe false leftover code from System 12? - AM_RANGE(0x300010, 0x300011) AM_NOP - AM_RANGE(0x300020, 0x300021) AM_WRITE(sub_interrupt_main_w ) - AM_RANGE(0x300030, 0x300031) AM_WRITENOP // timecrs2 writes this when writing to the sync shared ram location, motoxgo doesn't -ADDRESS_MAP_END +void namcos23_state::s23h8rwmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).rw(this, FUNC(namcos23_state::sharedram_sub_r), FUNC(namcos23_state::sharedram_sub_w)); + map(0x280000, 0x287fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x300000, 0x300003).noprw(); // seems to be more inputs, maybe false leftover code from System 12? + map(0x300010, 0x300011).noprw(); + map(0x300020, 0x300021).w(this, FUNC(namcos23_state::sub_interrupt_main_w)); + map(0x300030, 0x300031).nopw(); // timecrs2 writes this when writing to the sync shared ram location, motoxgo doesn't +} -ADDRESS_MAP_START(namcos23_state::s23h8iomap) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(mcu_p6_r, mcu_p6_w ) - AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READWRITE(mcu_p8_r, mcu_p8_w ) - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(mcu_pa_r, mcu_pa_w ) - AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(mcu_pb_r, mcu_pb_w ) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP - AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP - AM_RANGE(h8_device::ADC_3, h8_device::ADC_3) AM_NOP -ADDRESS_MAP_END +void namcos23_state::s23h8iomap(address_map &map) +{ + map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(namcos23_state::mcu_p6_r), FUNC(namcos23_state::mcu_p6_w)); + map(h8_device::PORT_8, h8_device::PORT_8).rw(this, FUNC(namcos23_state::mcu_p8_r), FUNC(namcos23_state::mcu_p8_w)); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(namcos23_state::mcu_pa_r), FUNC(namcos23_state::mcu_pa_w)); + map(h8_device::PORT_B, h8_device::PORT_B).rw(this, FUNC(namcos23_state::mcu_pb_r), FUNC(namcos23_state::mcu_pb_w)); + map(h8_device::ADC_0, h8_device::ADC_0).noprw(); + map(h8_device::ADC_1, h8_device::ADC_1).noprw(); + map(h8_device::ADC_2, h8_device::ADC_2).noprw(); + map(h8_device::ADC_3, h8_device::ADC_3).noprw(); +} @@ -3159,23 +3165,25 @@ READ16_MEMBER(namcos23_state::iob_analog_r) } -ADDRESS_MAP_START(namcos23_state::s23iobrdmap) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("iocpu", 0) - AM_RANGE(0x6000, 0x6001) AM_READ_PORT("IN01") - AM_RANGE(0x6002, 0x6003) AM_READ_PORT("IN23") - AM_RANGE(0x6004, 0x6005) AM_WRITENOP - AM_RANGE(0x6006, 0x6007) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END +void namcos23_state::s23iobrdmap(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("iocpu", 0); + map(0x6000, 0x6001).portr("IN01"); + map(0x6002, 0x6003).portr("IN23"); + map(0x6004, 0x6005).nopw(); + map(0x6006, 0x6007).noprw(); + map(0xc000, 0xffff).ram(); +} -ADDRESS_MAP_START(namcos23_state::s23iobrdiomap) - AM_RANGE(h8_device::PORT_4, h8_device::PORT_4) AM_READWRITE(iob_p4_r, iob_p4_w) - AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) AM_NOP // bit 2 = status LED to indicate transmitting packet to main - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(iob_p6_r, iob_p6_w) - AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_NOP // unknown - used on ASCA-5 only - AM_RANGE(h8_device::PORT_9, h8_device::PORT_9) AM_NOP // unknown - used on ASCA-5 only - AM_RANGE(h8_device::ADC_0, h8_device::ADC_3) AM_READ(iob_analog_r) -ADDRESS_MAP_END +void namcos23_state::s23iobrdiomap(address_map &map) +{ + map(h8_device::PORT_4, h8_device::PORT_4).rw(this, FUNC(namcos23_state::iob_p4_r), FUNC(namcos23_state::iob_p4_w)); + map(h8_device::PORT_5, h8_device::PORT_5).noprw(); // bit 2 = status LED to indicate transmitting packet to main + map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(namcos23_state::iob_p6_r), FUNC(namcos23_state::iob_p6_w)); + map(h8_device::PORT_8, h8_device::PORT_8).noprw(); // unknown - used on ASCA-5 only + map(h8_device::PORT_9, h8_device::PORT_9).noprw(); // unknown - used on ASCA-5 only + map(h8_device::ADC_0, h8_device::ADC_3).r(this, FUNC(namcos23_state::iob_analog_r)); +} // Time Crisis lightgun @@ -3198,10 +3206,11 @@ READ8_MEMBER(namcos23_state::iob_gun_r) return 0; } -ADDRESS_MAP_START(namcos23_state::timecrs2iobrdmap) - AM_IMPORT_FROM( s23iobrdmap ) - AM_RANGE(0x7000, 0x700f) AM_READ8(iob_gun_r, 0xffff) -ADDRESS_MAP_END +void namcos23_state::timecrs2iobrdmap(address_map &map) +{ + s23iobrdmap(map); + map(0x7000, 0x700f).r(this, FUNC(namcos23_state::iob_gun_r)); +} diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp index 5463aca574e..56408f97444 100644 --- a/src/mame/drivers/namcos86.cpp +++ b/src/mame/drivers/namcos86.cpp @@ -333,153 +333,165 @@ void namcos86_state::machine_start() } -ADDRESS_MAP_START(namcos86_state::cpu1_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_WRITE(videoram2_w) AM_SHARE("videoram2") +void namcos86_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1"); + map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2"); - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_WRITE(spriteram_w) AM_SHARE("spriteram") + map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram"); - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ + map(0x4000, 0x43ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); /* ROM & Voice expansion board - only some games have it */ - AM_RANGE(0x6000, 0x7fff) AM_WRITE(cus115_w) /* ROM bank select and 63701X sample player control */ + map(0x6000, 0x7fff).w(this, FUNC(namcos86_state::cus115_w)); /* ROM bank select and 63701X sample player control */ - AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog1_w) - AM_RANGE(0x8400, 0x8400) AM_WRITE(int_ack1_w) /* IRQ acknowledge */ - AM_RANGE(0x8800, 0x8fff) AM_WRITE(tilebank_select_w) + map(0x8000, 0x8000).w(this, FUNC(namcos86_state::watchdog1_w)); + map(0x8400, 0x8400).w(this, FUNC(namcos86_state::int_ack1_w)); /* IRQ acknowledge */ + map(0x8800, 0x8fff).w(this, FUNC(namcos86_state::tilebank_select_w)); - AM_RANGE(0x9000, 0x9002) AM_WRITE(scroll0_w) /* scroll + priority */ - AM_RANGE(0x9003, 0x9003) AM_WRITE(bankswitch1_w) - AM_RANGE(0x9004, 0x9006) AM_WRITE(scroll1_w) /* scroll + priority */ + map(0x9000, 0x9002).w(this, FUNC(namcos86_state::scroll0_w)); /* scroll + priority */ + map(0x9003, 0x9003).w(this, FUNC(namcos86_state::bankswitch1_w)); + map(0x9004, 0x9006).w(this, FUNC(namcos86_state::scroll1_w)); /* scroll + priority */ - AM_RANGE(0x9400, 0x9402) AM_WRITE(scroll2_w) /* scroll + priority */ + map(0x9400, 0x9402).w(this, FUNC(namcos86_state::scroll2_w)); /* scroll + priority */ // { 0x9403, 0x9403 } sub CPU rom bank select would be here - AM_RANGE(0x9404, 0x9406) AM_WRITE(scroll3_w) /* scroll + priority */ + map(0x9404, 0x9406).w(this, FUNC(namcos86_state::scroll3_w)); /* scroll + priority */ - AM_RANGE(0xa000, 0xa000) AM_WRITE(backcolor_w) -ADDRESS_MAP_END + map(0xa000, 0xa000).w(this, FUNC(namcos86_state::backcolor_w)); +} // skykiddx and hopmappy cpu2 programs do nothing but sit in a loop resetting the watchdog // shared RAM is presumably mapped somewhere, but it's impossible to infer from program behaviour -ADDRESS_MAP_START(namcos86_state::hopmappy_cpu2_map) - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x9000, 0x9000) AM_WRITE(watchdog2_w) - AM_RANGE(0x9400, 0x9400) AM_WRITE(int_ack2_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::roishtar_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(watchdog2_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(int_ack2_w) // IRQ acknowledge -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::genpeitd_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0xb000, 0xb000) AM_WRITE(watchdog2_w) - AM_RANGE(0x8800, 0x8800) AM_WRITE(int_ack2_w) // IRQ acknowledge -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::rthunder_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog2_w) - AM_RANGE(0x8800, 0x8800) AM_WRITE(int_ack2_w) // IRQ acknowledge +void namcos86_state::hopmappy_cpu2_map(address_map &map) +{ + map(0x8000, 0xffff).rom(); + map(0x9000, 0x9000).w(this, FUNC(namcos86_state::watchdog2_w)); + map(0x9400, 0x9400).w(this, FUNC(namcos86_state::int_ack2_w)); +} + +void namcos86_state::roishtar_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram"); + map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2"); + map(0x6000, 0x7fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1"); + map(0x8000, 0xffff).rom(); + map(0xa000, 0xa000).w(this, FUNC(namcos86_state::watchdog2_w)); + map(0xb000, 0xb000).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge +} + +void namcos86_state::genpeitd_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1"); + map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2"); + map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram"); + map(0x8000, 0xffff).rom(); + map(0xb000, 0xb000).w(this, FUNC(namcos86_state::watchdog2_w)); + map(0x8800, 0x8800).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge +} + +void namcos86_state::rthunder_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram"); + map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1"); + map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2"); + map(0x6000, 0x7fff).bankr("bank2"); + map(0x8000, 0xffff).rom(); + map(0x8000, 0x8000).w(this, FUNC(namcos86_state::watchdog2_w)); + map(0x8800, 0x8800).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge // { 0xd800, 0xd802 } layer 2 scroll registers would be here - AM_RANGE(0xd803, 0xd803) AM_WRITE(bankswitch2_w) + map(0xd803, 0xd803).w(this, FUNC(namcos86_state::bankswitch2_w)); // { 0xd804, 0xd806 } layer 3 scroll registers would be here -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::wndrmomo_cpu2_map) - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") - AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_WRITE(watchdog2_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(int_ack2_w) // IRQ acknowledge -ADDRESS_MAP_END - - -ADDRESS_MAP_START(namcos86_state::common_mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r,m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) - AM_RANGE(0x1400, 0x1fff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROM // external ROM - AM_RANGE(0xf000, 0xffff) AM_ROM // internal ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::hopmappy_mcu_map) - AM_IMPORT_FROM(common_mcu_map) - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x2020, 0x2020) AM_READ_PORT("IN0") - AM_RANGE(0x2021, 0x2021) AM_READ_PORT("IN1") - AM_RANGE(0x2030, 0x2030) AM_READ(dsw0_r) - AM_RANGE(0x2031, 0x2031) AM_READ(dsw1_r) - AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ??? written (not always) at end of interrupt - AM_RANGE(0x8800, 0x8800) AM_WRITENOP // ??? written (not always) at end of interrupt -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::roishtar_mcu_map) - AM_IMPORT_FROM(common_mcu_map) - AM_RANGE(0x2000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x6020, 0x6020) AM_READ_PORT("IN0") - AM_RANGE(0x6021, 0x6021) AM_READ_PORT("IN1") - AM_RANGE(0x6030, 0x6030) AM_READ(dsw0_r) - AM_RANGE(0x6031, 0x6031) AM_READ(dsw1_r) - AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ??? written (not always) at end of interrupt - AM_RANGE(0x9800, 0x9800) AM_WRITENOP // ??? written (not always) at end of interrupt -ADDRESS_MAP_END +} + +void namcos86_state::wndrmomo_cpu2_map(address_map &map) +{ + map(0x2000, 0x3fff).ram().w(this, FUNC(namcos86_state::spriteram_w)).share("spriteram"); + map(0x4000, 0x5fff).ram().w(this, FUNC(namcos86_state::videoram1_w)).share("videoram1"); + map(0x6000, 0x7fff).ram().w(this, FUNC(namcos86_state::videoram2_w)).share("videoram2"); + map(0x8000, 0xffff).rom(); + map(0xc000, 0xc000).w(this, FUNC(namcos86_state::watchdog2_w)); + map(0xc800, 0xc800).w(this, FUNC(namcos86_state::int_ack2_w)); // IRQ acknowledge +} + + +void namcos86_state::common_mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw("mcu", FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); + map(0x1400, 0x1fff).ram(); + map(0x8000, 0xbfff).rom(); // external ROM + map(0xf000, 0xffff).rom(); // internal ROM +} + +void namcos86_state::hopmappy_mcu_map(address_map &map) +{ + common_mcu_map(map); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2020, 0x2020).portr("IN0"); + map(0x2021, 0x2021).portr("IN1"); + map(0x2030, 0x2030).r(this, FUNC(namcos86_state::dsw0_r)); + map(0x2031, 0x2031).r(this, FUNC(namcos86_state::dsw1_r)); + map(0x8000, 0x8000).nopw(); // ??? written (not always) at end of interrupt + map(0x8800, 0x8800).nopw(); // ??? written (not always) at end of interrupt +} + +void namcos86_state::roishtar_mcu_map(address_map &map) +{ + common_mcu_map(map); + map(0x2000, 0x3fff).rom(); + map(0x6000, 0x6001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x6020, 0x6020).portr("IN0"); + map(0x6021, 0x6021).portr("IN1"); + map(0x6030, 0x6030).r(this, FUNC(namcos86_state::dsw0_r)); + map(0x6031, 0x6031).r(this, FUNC(namcos86_state::dsw1_r)); + map(0x8000, 0x8000).nopw(); // ??? written (not always) at end of interrupt + map(0x9800, 0x9800).nopw(); // ??? written (not always) at end of interrupt +} // are these three actually different, or are the I/O ports simply mirrored from 0x2000-0x3fff? -ADDRESS_MAP_START(namcos86_state::genpeitd_mcu_map) - AM_IMPORT_FROM(common_mcu_map) - AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x2820, 0x2820) AM_READ_PORT("IN0") - AM_RANGE(0x2821, 0x2821) AM_READ_PORT("IN1") - AM_RANGE(0x2830, 0x2830) AM_READ(dsw0_r) - AM_RANGE(0x2831, 0x2831) AM_READ(dsw1_r) - AM_RANGE(0x4000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITENOP // ??? written (not always) at end of interrupt - AM_RANGE(0xa800, 0xa800) AM_WRITENOP // ??? written (not always) at end of interrupt -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::rthunder_mcu_map) - AM_IMPORT_FROM(common_mcu_map) - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x2020, 0x2020) AM_READ_PORT("IN0") - AM_RANGE(0x2021, 0x2021) AM_READ_PORT("IN1") - AM_RANGE(0x2030, 0x2030) AM_READ(dsw0_r) - AM_RANGE(0x2031, 0x2031) AM_READ(dsw1_r) - AM_RANGE(0x4000, 0x7fff) AM_ROM - AM_RANGE(0xb000, 0xb000) AM_WRITENOP // ??? written (not always) at end of interrupt - AM_RANGE(0xb800, 0xb800) AM_WRITENOP // ??? written (not always) at end of interrupt -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos86_state::wndrmomo_mcu_map) - AM_IMPORT_FROM(common_mcu_map) - AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x3820, 0x3820) AM_READ_PORT("IN0") - AM_RANGE(0x3821, 0x3821) AM_READ_PORT("IN1") - AM_RANGE(0x3830, 0x3830) AM_READ(dsw0_r) - AM_RANGE(0x3831, 0x3831) AM_READ(dsw1_r) - AM_RANGE(0x4000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_WRITENOP // ??? written (not always) at end of interrupt - AM_RANGE(0xc800, 0xc800) AM_WRITENOP // ??? written (not always) at end of interrupt -ADDRESS_MAP_END +void namcos86_state::genpeitd_mcu_map(address_map &map) +{ + common_mcu_map(map); + map(0x2800, 0x2801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2820, 0x2820).portr("IN0"); + map(0x2821, 0x2821).portr("IN1"); + map(0x2830, 0x2830).r(this, FUNC(namcos86_state::dsw0_r)); + map(0x2831, 0x2831).r(this, FUNC(namcos86_state::dsw1_r)); + map(0x4000, 0x7fff).rom(); + map(0xa000, 0xa000).nopw(); // ??? written (not always) at end of interrupt + map(0xa800, 0xa800).nopw(); // ??? written (not always) at end of interrupt +} + +void namcos86_state::rthunder_mcu_map(address_map &map) +{ + common_mcu_map(map); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2020, 0x2020).portr("IN0"); + map(0x2021, 0x2021).portr("IN1"); + map(0x2030, 0x2030).r(this, FUNC(namcos86_state::dsw0_r)); + map(0x2031, 0x2031).r(this, FUNC(namcos86_state::dsw1_r)); + map(0x4000, 0x7fff).rom(); + map(0xb000, 0xb000).nopw(); // ??? written (not always) at end of interrupt + map(0xb800, 0xb800).nopw(); // ??? written (not always) at end of interrupt +} + +void namcos86_state::wndrmomo_mcu_map(address_map &map) +{ + common_mcu_map(map); + map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x3820, 0x3820).portr("IN0"); + map(0x3821, 0x3821).portr("IN1"); + map(0x3830, 0x3830).r(this, FUNC(namcos86_state::dsw0_r)); + map(0x3831, 0x3831).r(this, FUNC(namcos86_state::dsw1_r)); + map(0x4000, 0x7fff).rom(); + map(0xc000, 0xc000).nopw(); // ??? written (not always) at end of interrupt + map(0xc800, 0xc800).nopw(); // ??? written (not always) at end of interrupt +} READ8_MEMBER(namcos86_state::readFF) @@ -487,12 +499,13 @@ READ8_MEMBER(namcos86_state::readFF) return 0xff; } -ADDRESS_MAP_START(namcos86_state::mcu_port_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("IN2") - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */ - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(coin_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(led_w) -ADDRESS_MAP_END +void namcos86_state::mcu_port_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).portr("IN2"); + map(M6801_PORT2, M6801_PORT2).r(this, FUNC(namcos86_state::readFF)); /* leds won't work otherwise */ + map(M6801_PORT1, M6801_PORT1).w(this, FUNC(namcos86_state::coin_w)); + map(M6801_PORT2, M6801_PORT2).w(this, FUNC(namcos86_state::led_w)); +} /*******************************************************************/ diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp index 0ecd4600eec..2ec3e84e971 100644 --- a/src/mame/drivers/nanos.cpp +++ b/src/mame/drivers/nanos.cpp @@ -93,10 +93,11 @@ private: -ADDRESS_MAP_START(nanos_state::nanos_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_READ_BANK("bank1") AM_WRITE_BANK("bank3") - AM_RANGE( 0x1000, 0xffff ) AM_RAMBANK("bank2") -ADDRESS_MAP_END +void nanos_state::nanos_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bank1").bankw("bank3"); + map(0x1000, 0xffff).bankrw("bank2"); +} WRITE8_MEMBER(nanos_state::nanos_tc_w) { @@ -139,31 +140,32 @@ static const z80_daisy_config nanos_daisy_chain[] = { nullptr } }; -ADDRESS_MAP_START(nanos_state::nanos_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void nanos_state::nanos_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); /* CPU card */ - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) + map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); /* I/O card */ - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("z80pio_0", z80pio_device, read, write) - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("z80sio_0", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x88, 0x8B) AM_DEVREADWRITE("z80pio_1", z80pio_device, read, write) - AM_RANGE(0x8C, 0x8F) AM_DEVREADWRITE("z80ctc_0", z80ctc_device, read, write) + map(0x80, 0x83).rw(m_pio_0, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x84, 0x87).rw(m_sio_0, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x88, 0x8B).rw(m_pio_1, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x8C, 0x8F).rw(m_ctc_0, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); /* FDC card */ - AM_RANGE(0x92, 0x92) AM_WRITE(nanos_tc_w) - AM_RANGE(0x94, 0x95) AM_DEVICE("upd765", upd765a_device, map) + map(0x92, 0x92).w(this, FUNC(nanos_state::nanos_tc_w)); + map(0x94, 0x95).m(m_fdc, FUNC(upd765a_device::map)); /* V24+IFSS card */ - AM_RANGE(0xA0, 0xA3) AM_DEVREADWRITE("z80sio_0", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0xA4, 0xA7) AM_DEVREADWRITE("z80ctc_1", z80ctc_device, read, write) + map(0xA0, 0xA3).rw(m_sio_0, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0xA4, 0xA7).rw(m_ctc_1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); /* 256-k RAM card I - 64k OS-Memory + 192k-RAM-Floppy */ //AM_RANGE(0xC0, 0xC7) /* 256-k RAM card II - 64k OS-Memory + 192k-RAM-Floppy */ //AM_RANGE(0xC8, 0xCF) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( nanos ) diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index fedc6467368..45bf387b23f 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -1680,43 +1680,44 @@ WRITE64_MEMBER(naomi_state::eeprom_93c46a_w ) * Naomi 1 address map */ -ADDRESS_MAP_START(naomi_state::naomi_map) +void naomi_state::naomi_map(address_map &map) +{ /* Area 0 */ - AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rombase") // BIOS - - AM_RANGE(0x00200000, 0x00207fff) AM_MIRROR(0x02000000) AM_RAM // bios uses it (battery backed ram ?) - AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) - AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7018, 0x005f702f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16( "comm_board", m3comm_device, naomi_r, naomi_w, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w ) - AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU) - AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU) - AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w ) - AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) - AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB) + map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0).share("rombase"); // BIOS + + map(0x00200000, 0x00207fff).mirror(0x02000000).ram(); // bios uses it (battery backed ram ?) + map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_sysctrl_r), FUNC(naomi_state::dc_sysctrl_w)); + map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap)); + map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff); + map(0x005f7018, 0x005f702f).mirror(0x02000000).rw("comm_board", FUNC(m3comm_device::naomi_r), FUNC(m3comm_device::naomi_w)).umask64(0x0000ffff0000ffff); + map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap)); + map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_g2_ctrl_r), FUNC(naomi_state::dc_g2_ctrl_w)); + map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map)); + map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map)); + map(0x00600000, 0x006007ff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_modem_r), FUNC(naomi_state::dc_modem_w)); + map(0x00700000, 0x00707fff).mirror(0x02000000).rw(this, FUNC(naomi_state::dc_aica_reg_r), FUNC(naomi_state::dc_aica_reg_w)); + map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff); + map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(this, FUNC(naomi_state::sh4_soundram_r), FUNC(naomi_state::sh4_soundram_w)); // sound RAM (8 MB) /* External Device */ - AM_RANGE(0x01000000, 0x01ffffff) AM_MIRROR(0x02000000) AM_READ16(naomi_g2bus_r, 0xffffffffffffffffU) + map(0x01000000, 0x01ffffff).mirror(0x02000000).r(this, FUNC(naomi_state::naomi_g2bus_r)); /* Area 1 */ - AM_RANGE(0x04000000, 0x04ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access - AM_RANGE(0x05000000, 0x05ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now + map(0x04000000, 0x04ffffff).mirror(0x02000000).ram().share("dc_texture_ram"); // texture memory 64 bit access + map(0x05000000, 0x05ffffff).mirror(0x02000000).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now /* Area 2*/ - AM_RANGE(0x08000000, 0x09ffffff) AM_MIRROR(0x02000000) AM_NOP // 'Unassigned' + map(0x08000000, 0x09ffffff).mirror(0x02000000).noprw(); // 'Unassigned' /* Area 3 */ - AM_RANGE(0x0c000000, 0x0dffffff) AM_MIRROR(0xa2000000) AM_RAM AM_SHARE("dc_ram") + map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram"); /* Area 4 */ - AM_RANGE(0x10000000, 0x107fffff) AM_MIRROR(0x02000000) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w) - AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU) - AM_RANGE(0x11000000, 0x11ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue) + map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w)); + map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w)); + map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue) /* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */ - AM_RANGE(0x13000000, 0x13ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue) + map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue) /* Area 5 */ //AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext. @@ -1726,7 +1727,7 @@ ADDRESS_MAP_START(naomi_state::naomi_map) /* Area 7 */ //AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal -ADDRESS_MAP_END +} /* * Naomi 2 address map @@ -1739,54 +1740,55 @@ WRITE32_MEMBER(naomi2_state::both_pvr2_ta_w) space.write_dword(0x025f8000|offset*4,data,mem_mask); } -ADDRESS_MAP_START(naomi2_state::naomi2_map) +void naomi2_state::naomi2_map(address_map &map) +{ /* Area 0 */ - AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rombase") // BIOS - - AM_RANGE(0x00200000, 0x00207fff) AM_MIRROR(0x02000000) AM_RAM // bios uses it (battery backed ram ?) - AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) - AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w ) - AM_RANGE(0x005f7c00, 0x005f7cff) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU) - AM_RANGE(0x005f8000, 0x005f9fff) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU) - AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w ) - AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) - AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB) + map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0).share("rombase"); // BIOS + + map(0x00200000, 0x00207fff).mirror(0x02000000).ram(); // bios uses it (battery backed ram ?) + map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_sysctrl_r), FUNC(naomi2_state::dc_sysctrl_w)); + map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap)); + map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff); + map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap)); + map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_g2_ctrl_r), FUNC(naomi2_state::dc_g2_ctrl_w)); + map(0x005f7c00, 0x005f7cff).m(m_powervr2, FUNC(powervr2_device::pd_dma_map)); + map(0x005f8000, 0x005f9fff).m(m_powervr2, FUNC(powervr2_device::ta_map)); + map(0x00600000, 0x006007ff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_modem_r), FUNC(naomi2_state::dc_modem_w)); + map(0x00700000, 0x00707fff).mirror(0x02000000).rw(this, FUNC(naomi2_state::dc_aica_reg_r), FUNC(naomi2_state::dc_aica_reg_w)); + map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff); + map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(this, FUNC(naomi2_state::sh4_soundram_r), FUNC(naomi2_state::sh4_soundram_w)); // sound RAM (8 MB) /* External Device */ - AM_RANGE(0x01000000, 0x01ffffff) AM_MIRROR(0x02000000) AM_READ16(naomi_g2bus_r, 0xffffffffffffffffU) + map(0x01000000, 0x01ffffff).mirror(0x02000000).r(this, FUNC(naomi2_state::naomi_g2bus_r)); - AM_RANGE(0x025f7c00, 0x025f7cff) AM_DEVICE32("powervr2_slave", powervr2_device, pd_dma_map, 0xffffffffffffffffU) - AM_RANGE(0x025f8000, 0x025f9fff) AM_DEVICE32("powervr2_slave", powervr2_device, ta_map, 0xffffffffffffffffU) + map(0x025f7c00, 0x025f7cff).m(m_powervr2_slave, FUNC(powervr2_device::pd_dma_map)); + map(0x025f8000, 0x025f9fff).m(m_powervr2_slave, FUNC(powervr2_device::ta_map)); // AM_RANGE(0x025f6800, 0x025f69ff) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) // second PVR DMA! // AM_RANGE(0x025f7c00, 0x025f7cff) AM_DEVREADWRITE32("powervr2", powervr2_device, pvr_ctrl_r, pvr_ctrl_w, 0xffffffffffffffffU) // AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU) /* Area 1 */ - AM_RANGE(0x04000000, 0x04ffffff) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access - AM_RANGE(0x05000000, 0x05ffffff) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now - AM_RANGE(0x06000000, 0x06ffffff) AM_RAM AM_SHARE("textureram2") // 64 bit access 2nd PVR RAM - AM_RANGE(0x07000000, 0x07ffffff) AM_RAM AM_SHARE("frameram2")// 32 bit access 2nd PVR RAM + map(0x04000000, 0x04ffffff).ram().share("dc_texture_ram"); // texture memory 64 bit access + map(0x05000000, 0x05ffffff).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now + map(0x06000000, 0x06ffffff).ram().share("textureram2"); // 64 bit access 2nd PVR RAM + map(0x07000000, 0x07ffffff).ram().share("frameram2");// 32 bit access 2nd PVR RAM /* Area 2*/ - AM_RANGE(0x085f6800, 0x085f69ff) AM_WRITE(dc_sysctrl_w ) // TODO: writes to BOTH PVRs - AM_RANGE(0x085f8000, 0x085f9fff) AM_WRITE32(both_pvr2_ta_w, 0xffffffffffffffffU) - AM_RANGE(0x08800000, 0x088000ff) AM_DEVREADWRITE32("powervr2", powervr2_device, elan_regs_r, elan_regs_w, 0xffffffffffffffffU) // T&L chip registers + map(0x085f6800, 0x085f69ff).w(this, FUNC(naomi2_state::dc_sysctrl_w)); // TODO: writes to BOTH PVRs + map(0x085f8000, 0x085f9fff).w(this, FUNC(naomi2_state::both_pvr2_ta_w)); + map(0x08800000, 0x088000ff).rw(m_powervr2, FUNC(powervr2_device::elan_regs_r), FUNC(powervr2_device::elan_regs_w)); // T&L chip registers // AM_RANGE(0x09000000, 0x09??????) T&L command processing - AM_RANGE(0x0a000000, 0x0bffffff) AM_RAM AM_SHARE("elan_ram") // T&L chip RAM + map(0x0a000000, 0x0bffffff).ram().share("elan_ram"); // T&L chip RAM /* Area 3 */ - AM_RANGE(0x0c000000, 0x0dffffff) AM_MIRROR(0xa2000000) AM_RAM AM_SHARE("dc_ram") + map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram"); /* Area 4 */ - AM_RANGE(0x10000000, 0x107fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w) - AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU) - AM_RANGE(0x11000000, 0x11ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue) + map(0x10000000, 0x107fffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w)); + map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w)); + map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue) /* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */ - AM_RANGE(0x13000000, 0x13ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue) + map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue) /* Area 5 */ //AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext. @@ -1796,12 +1798,13 @@ ADDRESS_MAP_START(naomi2_state::naomi2_map) /* Area 7 */ //AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal -ADDRESS_MAP_END +} -ADDRESS_MAP_START(naomi_state::naomi_port) - AM_RANGE(0x00, 0x0f) AM_READWRITE(eeprom_93c46a_r, eeprom_93c46a_w) -ADDRESS_MAP_END +void naomi_state::naomi_port(address_map &map) +{ + map(0x00, 0x0f).rw(this, FUNC(naomi_state::eeprom_93c46a_r), FUNC(naomi_state::eeprom_93c46a_w)); +} /* * Atomiswave address map, almost identical to Dreamcast @@ -1913,46 +1916,47 @@ WRITE64_MEMBER(atomiswave_state::aw_modem_w ) osd_printf_verbose("%s",string_format("MODEM: [%08x=%x] write %x to %x, mask %x\n", 0x600000+reg*4, dat, data, offset, mem_mask).c_str()); } -ADDRESS_MAP_START(atomiswave_state::aw_map) +void atomiswave_state::aw_map(address_map &map) +{ /* Area 0 */ - AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE(aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0) - AM_RANGE(0xa0000000, 0xa001ffff) AM_READWRITE(aw_flash_r, aw_flash_w ) AM_REGION("awflash", 0) - - AM_RANGE(0x00200000, 0x0021ffff) AM_RAM // battery backed up RAM - AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) - AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", aw_rom_board, submap, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w ) - AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU) - AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU) - AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE(aw_modem_r, aw_modem_w ) - AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) - AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) - AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE(sh4_soundram_r, sh4_soundram_w ) // sound RAM (8 MB) + map(0x00000000, 0x0001ffff).rw(this, FUNC(atomiswave_state::aw_flash_r), FUNC(atomiswave_state::aw_flash_w)).region("awflash", 0); + map(0xa0000000, 0xa001ffff).rw(this, FUNC(atomiswave_state::aw_flash_r), FUNC(atomiswave_state::aw_flash_w)).region("awflash", 0); + + map(0x00200000, 0x0021ffff).ram(); // battery backed up RAM + map(0x005f6800, 0x005f69ff).rw(this, FUNC(atomiswave_state::dc_sysctrl_r), FUNC(atomiswave_state::dc_sysctrl_w)); + map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap)); + map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff); + map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap)); + map(0x005f7800, 0x005f78ff).rw(this, FUNC(atomiswave_state::dc_g2_ctrl_r), FUNC(atomiswave_state::dc_g2_ctrl_w)); + map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map)); + map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map)); + map(0x00600000, 0x006007ff).rw(this, FUNC(atomiswave_state::aw_modem_r), FUNC(atomiswave_state::aw_modem_w)); + map(0x00700000, 0x00707fff).rw(this, FUNC(atomiswave_state::dc_aica_reg_r), FUNC(atomiswave_state::dc_aica_reg_w)); + map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff); + map(0x00800000, 0x00ffffff).rw(this, FUNC(atomiswave_state::sh4_soundram_r), FUNC(atomiswave_state::sh4_soundram_w)); // sound RAM (8 MB) /* Area 1 - half the texture memory, like dreamcast, not naomi */ - AM_RANGE(0x04000000, 0x047fffff) AM_RAM AM_MIRROR(0x00800000) AM_SHARE("dc_texture_ram") // texture memory 64 bit access - AM_RANGE(0x05000000, 0x057fffff) AM_RAM AM_MIRROR(0x00800000) AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now + map(0x04000000, 0x047fffff).ram().mirror(0x00800000).share("dc_texture_ram"); // texture memory 64 bit access + map(0x05000000, 0x057fffff).ram().mirror(0x00800000).share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now /* Area 2*/ - AM_RANGE(0x08000000, 0x0bffffff) AM_NOP // 'Unassigned' + map(0x08000000, 0x0bffffff).noprw(); // 'Unassigned' /* Area 3 */ - AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_SHARE("dc_ram") - AM_RANGE(0x0d000000, 0x0dffffff) AM_RAM AM_SHARE("dc_ram") // extra ram on Naomi (mirror on DC) - AM_RANGE(0x0e000000, 0x0effffff) AM_RAM AM_SHARE("dc_ram") // mirror - AM_RANGE(0x0f000000, 0x0fffffff) AM_RAM AM_SHARE("dc_ram") // mirror + map(0x0c000000, 0x0cffffff).ram().share("dc_ram"); + map(0x0d000000, 0x0dffffff).ram().share("dc_ram"); // extra ram on Naomi (mirror on DC) + map(0x0e000000, 0x0effffff).ram().share("dc_ram"); // mirror + map(0x0f000000, 0x0fffffff).ram().share("dc_ram"); // mirror - AM_RANGE(0x8c000000, 0x8cffffff) AM_RAM AM_SHARE("dc_ram") // RAM access through cache - AM_RANGE(0x8d000000, 0x8dffffff) AM_RAM AM_SHARE("dc_ram") // RAM access through cache + map(0x8c000000, 0x8cffffff).ram().share("dc_ram"); // RAM access through cache + map(0x8d000000, 0x8dffffff).ram().share("dc_ram"); // RAM access through cache /* Area 4 - half the texture memory, like dreamcast, not naomi */ - AM_RANGE(0x10000000, 0x107fffff) AM_MIRROR(0x02000000) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w) - AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU) - AM_RANGE(0x11000000, 0x117fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue + map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w)); + map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w)); + map(0x11000000, 0x117fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue /* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */ - AM_RANGE(0x13000000, 0x137fffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) AM_MIRROR(0x00800000) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue + map(0x13000000, 0x137fffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)).mirror(0x00800000); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue /* Area 5 */ @@ -1963,17 +1967,19 @@ ADDRESS_MAP_START(atomiswave_state::aw_map) /* Area 7 */ //AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal -ADDRESS_MAP_END +} -ADDRESS_MAP_START(atomiswave_state::aw_port) +void atomiswave_state::aw_port(address_map &map) +{ // ??? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(dc_state::dc_audio_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("dc_sound_ram") /* shared with SH-4 */ - AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w) -ADDRESS_MAP_END +void dc_state::dc_audio_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x007fffff).ram().share("dc_sound_ram"); /* shared with SH-4 */ + map(0x00800000, 0x00807fff).rw(this, FUNC(dc_state::dc_arm_aica_r), FUNC(dc_state::dc_arm_aica_w)); +} /* * Input ports diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp index 805176f4bfb..a183c9714dc 100644 --- a/src/mame/drivers/nascom1.cpp +++ b/src/mame/drivers/nascom1.cpp @@ -473,40 +473,45 @@ void nascom_state::screen_update(bitmap_ind16 &bitmap, const rectangle &cliprect // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(nascom1_state::nascom1_mem) - AM_RANGE(0x0000, 0x07ff) AM_ROM // MONITOR - AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM // WRAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nascom1_state::nascom1_io) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x00, 0x00) AM_READWRITE(nascom1_port_00_r, nascom1_port_00_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(nascom1_port_01_r, nascom1_port_01_w) - AM_RANGE(0x02, 0x02) AM_READ(nascom1_port_02_r) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nascom2_state::nascom2_mem) - AM_RANGE(0x0000, 0x07ff) AM_ROM // MONITOR - AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM // WRAM - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("basic", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nascom2_state::nascom2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(nascom1_port_00_r, nascom1_port_00_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(nascom1_port_01_r, nascom1_port_01_w) - AM_RANGE(0x02, 0x02) AM_READ(nascom1_port_02_r) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nascom2_state::nascom2c_mem) - AM_RANGE(0xf000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xfc00, 0xffff) AM_RAM // WRAM -ADDRESS_MAP_END +void nascom1_state::nascom1_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); // MONITOR + map(0x0800, 0x0bff).ram().share("videoram"); + map(0x0c00, 0x0fff).ram(); // WRAM +} + +void nascom1_state::nascom1_io(address_map &map) +{ + map.global_mask(0x0f); + map(0x00, 0x00).rw(this, FUNC(nascom1_state::nascom1_port_00_r), FUNC(nascom1_state::nascom1_port_00_w)); + map(0x01, 0x01).rw(this, FUNC(nascom1_state::nascom1_port_01_r), FUNC(nascom1_state::nascom1_port_01_w)); + map(0x02, 0x02).r(this, FUNC(nascom1_state::nascom1_port_02_r)); + map(0x04, 0x07).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} + +void nascom2_state::nascom2_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); // MONITOR + map(0x0800, 0x0bff).ram().share("videoram"); + map(0x0c00, 0x0fff).ram(); // WRAM + map(0xe000, 0xffff).rom().region("basic", 0); +} + +void nascom2_state::nascom2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(nascom2_state::nascom1_port_00_r), FUNC(nascom2_state::nascom1_port_00_w)); + map(0x01, 0x01).rw(this, FUNC(nascom2_state::nascom1_port_01_r), FUNC(nascom2_state::nascom1_port_01_w)); + map(0x02, 0x02).r(this, FUNC(nascom2_state::nascom1_port_02_r)); + map(0x04, 0x07).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} + +void nascom2_state::nascom2c_mem(address_map &map) +{ + map(0xf000, 0xf7ff).rom().region("maincpu", 0); + map(0xf800, 0xfbff).ram().share("videoram"); + map(0xfc00, 0xffff).ram(); // WRAM +} //************************************************************************** diff --git a/src/mame/drivers/naughtyb.cpp b/src/mame/drivers/naughtyb.cpp index a2f73212fc0..e258b227f67 100644 --- a/src/mame/drivers/naughtyb.cpp +++ b/src/mame/drivers/naughtyb.cpp @@ -246,31 +246,33 @@ WRITE8_MEMBER(naughtyb_state::popflame_protection_w) -ADDRESS_MAP_START(naughtyb_state::naughtyb_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x9000, 0x97ff) AM_WRITE(naughtyb_videoreg_w) - AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("scrollreg") - AM_RANGE(0xa000, 0xa7ff) AM_DEVWRITE("naughtyb_custom", naughtyb_sound_device, control_a_w) - AM_RANGE(0xa800, 0xafff) AM_DEVWRITE("naughtyb_custom", naughtyb_sound_device, control_b_w) - AM_RANGE(0xb000, 0xb7ff) AM_READ(in0_port_r) // IN0 - AM_RANGE(0xb800, 0xbfff) AM_READ(dsw0_port_r) // DSW0 -ADDRESS_MAP_END - -ADDRESS_MAP_START(naughtyb_state::popflame_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x9000, 0x97ff) AM_WRITE(popflame_videoreg_w) - AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("scrollreg") - AM_RANGE(0xa000, 0xa7ff) AM_DEVWRITE("popflame_custom", popflame_sound_device, control_a_w) - AM_RANGE(0xa800, 0xafff) AM_DEVWRITE("popflame_custom", popflame_sound_device, control_b_w) - AM_RANGE(0xb000, 0xb7ff) AM_READ(in0_port_r) // IN0 - AM_RANGE(0xb800, 0xbfff) AM_READ(dsw0_port_r) // DSW0 -ADDRESS_MAP_END +void naughtyb_state::naughtyb_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0x87ff).ram().share("videoram"); + map(0x8800, 0x8fff).ram().share("videoram2"); + map(0x9000, 0x97ff).w(this, FUNC(naughtyb_state::naughtyb_videoreg_w)); + map(0x9800, 0x9fff).ram().share("scrollreg"); + map(0xa000, 0xa7ff).w(m_naughtyb_custom, FUNC(naughtyb_sound_device::control_a_w)); + map(0xa800, 0xafff).w(m_naughtyb_custom, FUNC(naughtyb_sound_device::control_b_w)); + map(0xb000, 0xb7ff).r(this, FUNC(naughtyb_state::in0_port_r)); // IN0 + map(0xb800, 0xbfff).r(this, FUNC(naughtyb_state::dsw0_port_r)); // DSW0 +} + +void naughtyb_state::popflame_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0x87ff).ram().share("videoram"); + map(0x8800, 0x8fff).ram().share("videoram2"); + map(0x9000, 0x97ff).w(this, FUNC(naughtyb_state::popflame_videoreg_w)); + map(0x9800, 0x9fff).ram().share("scrollreg"); + map(0xa000, 0xa7ff).w(m_popflame_custom, FUNC(popflame_sound_device::control_a_w)); + map(0xa800, 0xafff).w(m_popflame_custom, FUNC(popflame_sound_device::control_b_w)); + map(0xb000, 0xb7ff).r(this, FUNC(naughtyb_state::in0_port_r)); // IN0 + map(0xb800, 0xbfff).r(this, FUNC(naughtyb_state::dsw0_port_r)); // DSW0 +} diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp index f5eb6c3ec02..90545e6b25b 100644 --- a/src/mame/drivers/nbmj8688.cpp +++ b/src/mame/drivers/nbmj8688.cpp @@ -121,21 +121,24 @@ DRIVER_INIT_MEMBER(nbmj8688_state,kaguya2) } -ADDRESS_MAP_START(nbmj8688_state::mjsikaku_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void nbmj8688_state::mjsikaku_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram().share("nvram"); +} -ADDRESS_MAP_START(nbmj8688_state::secolove_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void nbmj8688_state::secolove_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram().share("nvram"); +} -ADDRESS_MAP_START(nbmj8688_state::ojousan_map) - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void nbmj8688_state::ojousan_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).rom(); +} @@ -146,24 +149,25 @@ READ8_MEMBER(nbmj8688_state::ff_r) return 0xff; } -ADDRESS_MAP_START(nbmj8688_state::secolove_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w) +void nbmj8688_state::secolove_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::secolove_romsel_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} WRITE8_MEMBER(nbmj8688_state::barline_output_w) { @@ -171,213 +175,223 @@ WRITE8_MEMBER(nbmj8688_state::barline_output_w) machine().bookkeeping().coin_counter_w(0,data & 0x02); } -ADDRESS_MAP_START(nbmj8688_state::barline_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void nbmj8688_state::barline_io_map(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank1_w) - AM_RANGE(0x70, 0x70) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_device, read, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) AM_WRITE(barline_output_w) - AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank1_w)); + map(0x70, 0x70).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x80, 0x81).rw("psg", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)).w(this, FUNC(nbmj8688_state::barline_output_w)); + map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? // AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) //not used - AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) AM_WRITE(scrolly_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8688_state::crystalg_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(crystalg_romsel_w) + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::secolove_romsel_w)); + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)).w(this, FUNC(nbmj8688_state::scrolly_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8688_state::crystalg_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::crystalg_romsel_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf0, 0xf0) AM_WRITENOP // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8688_state::otonano_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w) - AM_RANGE(0x70, 0x77) AM_WRITE(blitter_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_device, read, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) AM_WRITE(scrolly_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8688_state::kaguya_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w) - AM_RANGE(0x70, 0x77) AM_WRITE(blitter_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) AM_WRITE(scrolly_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8688_state::iemoto_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x40, 0x47) AM_WRITE(blitter_w) - AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) +} + + +void nbmj8688_state::otonano_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w)); + map(0x70, 0x77).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0x80, 0x81).rw("psg", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)).w(this, FUNC(nbmj8688_state::scrolly_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + + +void nbmj8688_state::kaguya_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w)); + map(0x70, 0x77).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)).w(this, FUNC(nbmj8688_state::scrolly_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + + +void nbmj8688_state::iemoto_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x40, 0x47).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::seiha_romsel_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8688_state::seiha_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} + + +void nbmj8688_state::seiha_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::seiha_romsel_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8688_state::mjgaiden_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} + +void nbmj8688_state::mjgaiden_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8688_state::p16bit_LCD_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x42, 0x42) AM_DEVWRITE("lcdc0", hd61830_device, data_w) - AM_RANGE(0x43, 0x43) AM_DEVWRITE("lcdc0", hd61830_device, control_w) - AM_RANGE(0x44, 0x44) AM_DEVWRITE("lcdc1", hd61830_device, data_w) - AM_RANGE(0x45, 0x45) AM_DEVWRITE("lcdc1", hd61830_device, control_w) - AM_RANGE(0x46, 0x46) AM_WRITE(HD61830B_both_data_w) - AM_RANGE(0x47, 0x47) AM_WRITE(HD61830B_both_instr_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0x90, 0x97) AM_WRITE(blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xcf) AM_WRITE(clut_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w) + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} + +void nbmj8688_state::p16bit_LCD_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x42, 0x42).w(m_lcdc0, FUNC(hd61830_device::data_w)); + map(0x43, 0x43).w(m_lcdc0, FUNC(hd61830_device::control_w)); + map(0x44, 0x44).w(m_lcdc1, FUNC(hd61830_device::data_w)); + map(0x45, 0x45).w(m_lcdc1, FUNC(hd61830_device::control_w)); + map(0x46, 0x46).w(this, FUNC(nbmj8688_state::HD61830B_both_data_w)); + map(0x47, 0x47).w(this, FUNC(nbmj8688_state::HD61830B_both_instr_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0x90, 0x97).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xcf).w(this, FUNC(nbmj8688_state::clut_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::secolove_romsel_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8688_state::mjsikaku_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w) - AM_RANGE(0x60, 0x67) AM_WRITE(blitter_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_device, read, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8688_state::mmsikaku_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("nb1413m3", nb1413m3_device, sndrombank2_w) - AM_RANGE(0x20, 0x3f) AM_WRITE(clut_w) - AM_RANGE(0x40, 0x47) AM_WRITE(blitter_w) - AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w) + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} + + +void nbmj8688_state::mjsikaku_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w)); + map(0x60, 0x67).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0x80, 0x81).rw("psg", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} + + +void nbmj8688_state::mmsikaku_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x10, 0x10).w(m_nb1413m3, FUNC(nb1413m3_device::sndrombank2_w)); + map(0x20, 0x3f).w(this, FUNC(nbmj8688_state::clut_w)); + map(0x40, 0x47).w(this, FUNC(nbmj8688_state::blitter_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8688_state::mjsikaku_romsel_w)); + map(0x81, 0x81).r("psg", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("psg", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xd0, 0xd0).r(this, FUNC(nbmj8688_state::ff_r)); // irq ack? watchdog? + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8688_state::mjsikaku_gfxflag2_w)); // AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) // AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(scrolly_w) -ADDRESS_MAP_END + map(0xf0, 0xf0).w(this, FUNC(nbmj8688_state::scrolly_w)); +} CUSTOM_INPUT_MEMBER( nbmj8688_state::nb1413m3_busyflag_r ) { diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp index c4ea76b85c2..e485e73917b 100644 --- a/src/mame/drivers/nbmj8891.cpp +++ b/src/mame/drivers/nbmj8891.cpp @@ -227,326 +227,350 @@ DRIVER_INIT_MEMBER(nbmj8891_state,pairsten) } } -ADDRESS_MAP_START(nbmj8891_state::gionbana_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::mgion_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::omotesnd_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::hanamomo_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::scandalm_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::club90s_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf80f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(palette_type1_r, palette_type1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::lovehous_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type2_r, palette_type2_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::maiko_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type2_r, palette_type2_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::hnxmasev_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(palette_type2_r, palette_type2_w) - AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::hnageman_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type2_r, palette_type2_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::mmaiko_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(palette_type2_r, palette_type2_w) - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::hanaoji_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(palette_type2_r, palette_type2_w) - AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void nbmj8891_state::gionbana_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj8891_state::mgion_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w)); + map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj8891_state::omotesnd_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj8891_state::hanamomo_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w)); + map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8891_state::scandalm_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj8891_state::club90s_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf80f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xfc00, 0xfdff).rw(this, FUNC(nbmj8891_state::palette_type1_r), FUNC(nbmj8891_state::palette_type1_w)); +} + +void nbmj8891_state::lovehous_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj8891_state::maiko_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w)); + map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8891_state::hnxmasev_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf200, 0xf3ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w)); + map(0xf700, 0xf70f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8891_state::hnageman_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8891_state::mmaiko_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w)); + map(0xf400, 0xf40f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj8891_state::hanaoji_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf200, 0xf3ff).rw(this, FUNC(nbmj8891_state::palette_type2_r), FUNC(nbmj8891_state::palette_type2_w)); + map(0xf700, 0xf70f).rw(this, FUNC(nbmj8891_state::clut_r), FUNC(nbmj8891_state::clut_w)); + map(0xf800, 0xffff).ram().share("nvram"); +} READ8_MEMBER(nbmj8891_state::taiwanmb_unk_r) { return 0x00; // MCU or 1413M3 STATUS? } -ADDRESS_MAP_START(nbmj8891_state::taiwanmb_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xec00, 0xedff) AM_READWRITE(palette_type3_r, palette_type3_w) - AM_RANGE(0xf800, 0xfeff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xff00, 0xff1f) AM_NOP // ? - AM_RANGE(0xff20, 0xff20) AM_READ(taiwanmb_unk_r) // MCU or 1413M3 STATUS? (return != 0x00 then loop) - AM_RANGE(0xff20, 0xff20) AM_WRITE(taiwanmb_mcu_w) // MCU PARAMETER? - AM_RANGE(0xff21, 0xff2f) AM_READNOP // ? - AM_RANGE(0xff21, 0xff21) AM_WRITENOP // blitter parameter set end (write 0x01 only) - AM_RANGE(0xff22, 0xff27) AM_WRITE(taiwanmb_blitter_w) // blitter parameter - AM_RANGE(0xff28, 0xff28) AM_WRITE(romsel_w) // gfx rombank select - AM_RANGE(0xff29, 0xff29) AM_WRITE(taiwanmb_gfxflag_w) // screen flip flag? - AM_RANGE(0xff2a, 0xff2a) AM_WRITENOP // not used? - AM_RANGE(0xff2b, 0xff2b) AM_WRITE(clutsel_w) // color look up table select - AM_RANGE(0xff2c, 0xff2c) AM_WRITENOP // blitter parameter set start (write 0xff only) - AM_RANGE(0xff2d, 0xff2d) AM_WRITENOP // not used? - AM_RANGE(0xff2e, 0xff2e) AM_WRITENOP // not used? - AM_RANGE(0xff2f, 0xff2f) AM_WRITENOP // not used? - AM_RANGE(0xff30, 0xffff) AM_RAM // RAM? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8891_state::gionbana_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x20, 0x27) AM_WRITE(blitter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::mgion_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x30, 0x37) AM_WRITE(blitter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::omotesnd_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) - AM_RANGE(0x30, 0x30) AM_WRITE(vramsel_w) - AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) - AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) +void nbmj8891_state::taiwanmb_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xec00, 0xedff).rw(this, FUNC(nbmj8891_state::palette_type3_r), FUNC(nbmj8891_state::palette_type3_w)); + map(0xf800, 0xfeff).ram().share("nvram"); + map(0xff00, 0xff1f).noprw(); // ? + map(0xff20, 0xff20).r(this, FUNC(nbmj8891_state::taiwanmb_unk_r)); // MCU or 1413M3 STATUS? (return != 0x00 then loop) + map(0xff20, 0xff20).w(this, FUNC(nbmj8891_state::taiwanmb_mcu_w)); // MCU PARAMETER? + map(0xff21, 0xff2f).nopr(); // ? + map(0xff21, 0xff21).nopw(); // blitter parameter set end (write 0x01 only) + map(0xff22, 0xff27).w(this, FUNC(nbmj8891_state::taiwanmb_blitter_w)); // blitter parameter + map(0xff28, 0xff28).w(this, FUNC(nbmj8891_state::romsel_w)); // gfx rombank select + map(0xff29, 0xff29).w(this, FUNC(nbmj8891_state::taiwanmb_gfxflag_w)); // screen flip flag? + map(0xff2a, 0xff2a).nopw(); // not used? + map(0xff2b, 0xff2b).w(this, FUNC(nbmj8891_state::clutsel_w)); // color look up table select + map(0xff2c, 0xff2c).nopw(); // blitter parameter set start (write 0xff only) + map(0xff2d, 0xff2d).nopw(); // not used? + map(0xff2e, 0xff2e).nopw(); // not used? + map(0xff2f, 0xff2f).nopw(); // not used? + map(0xff30, 0xffff).ram(); // RAM? +} + + +void nbmj8891_state::gionbana_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x20, 0x27).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w)); + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::mgion_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x30, 0x37).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w)); + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::omotesnd_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x30, 0x30).w(this, FUNC(nbmj8891_state::vramsel_w)); + map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w)); // AM_RANGE(0x50, 0x50) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) AM_WRITENOP - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) AM_WRITENOP - AM_RANGE(0xd0, 0xdf) AM_READ(clut_r) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::hanamomo_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x30, 0x37) AM_WRITE(blitter_w) - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)).nopw(); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)).nopw(); + map(0xd0, 0xdf).r(this, FUNC(nbmj8891_state::clut_r)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::hanamomo_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x30, 0x37).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) //AM_WRITENOP - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::msjiken_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) //AM_WRITENOP - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); //AM_WRITENOP + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::msjiken_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x50, 0x57).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); //AM_WRITENOP + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) //AM_WRITENOP - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::scandal_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) - AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) - AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) - AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); //AM_WRITENOP + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::scandal_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w)); + map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) //AM_WRITENOP - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::scandalm_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) - AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) - AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); //AM_WRITENOP + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::scandalm_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::bananadr_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x07) AM_WRITE(blitter_w) - AM_RANGE(0x10, 0x10) AM_WRITE(romsel_w) - AM_RANGE(0x20, 0x20) AM_WRITE(clutsel_w) - AM_RANGE(0x30, 0x30) AM_WRITE(vramsel_w) - AM_RANGE(0x40, 0x4f) AM_WRITE(clut_w) - AM_RANGE(0x50, 0x50) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::bananadr_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x07).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x10, 0x10).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x20, 0x20).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x30, 0x30).w(this, FUNC(nbmj8891_state::vramsel_w)); + map(0x40, 0x4f).w(this, FUNC(nbmj8891_state::clut_w)); + map(0x50, 0x50).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::lovehous_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) //AM_WRITENOP - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2") - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::maiko_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x50, 0x57) AM_WRITE(blitter_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2") //AM_WRITENOP - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8891_state::taiwanmb_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) //AM_WRITENOP // ? - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::lovehous_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x50, 0x57).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); //AM_WRITENOP + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).portr("PORT0-2"); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w)); + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::maiko_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x40, 0x40).w(this, FUNC(nbmj8891_state::clutsel_w)); + map(0x50, 0x57).w(this, FUNC(nbmj8891_state::blitter_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8891_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8891_state::scrolly_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).portr("PORT0-2"); //AM_WRITENOP + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8891_state::vramsel_w)); + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8891_state::taiwanmb_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); //AM_WRITENOP // ? + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); // AM_RANGE(0xc0, 0xc0) AM_WRITENOP // ? // AM_RANGE(0xd0, 0xd0) AM_READ(ff_r) // irq ack? watchdog? - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_h_r) AM_WRITE(taiwanmb_gfxdraw_w) // blitter draw start - AM_RANGE(0xe1, 0xe1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw3_l_r) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw2_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) -ADDRESS_MAP_END + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw3_h_r)).w(this, FUNC(nbmj8891_state::taiwanmb_gfxdraw_w)); // blitter draw start + map(0xe1, 0xe1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw3_l_r)); + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); +} CUSTOM_INPUT_MEMBER( nbmj8891_state::nb1413m3_busyflag_r ) { diff --git a/src/mame/drivers/nbmj8900.cpp b/src/mame/drivers/nbmj8900.cpp index 9262731c1ba..ad793896ad3 100644 --- a/src/mame/drivers/nbmj8900.cpp +++ b/src/mame/drivers/nbmj8900.cpp @@ -93,42 +93,45 @@ DRIVER_INIT_MEMBER(nbmj8900_state,togenkyo) } -ADDRESS_MAP_START(nbmj8900_state::ohpaipee_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8900_state::togenkyo_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r, clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(palette_type1_r, palette_type1_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8900_state::ohpaipee_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("nb1413m3", nb1413m3_device, nmi_clock_w) - AM_RANGE(0x20, 0x27) AM_WRITE(blitter_w) - - AM_RANGE(0x40, 0x40) AM_WRITE(clutsel_w) - AM_RANGE(0x60, 0x60) AM_WRITE(romsel_w) - AM_RANGE(0x70, 0x70) AM_WRITE(scrolly_w) - - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_WRITE(vramsel_w) - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw2_r, outcoin_w) -ADDRESS_MAP_END +void nbmj8900_state::ohpaipee_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8900_state::clut_r), FUNC(nbmj8900_state::clut_w)); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8900_state::palette_type1_r), FUNC(nbmj8900_state::palette_type1_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8900_state::togenkyo_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8900_state::clut_r), FUNC(nbmj8900_state::clut_w)); + map(0xf400, 0xf5ff).rw(this, FUNC(nbmj8900_state::palette_type1_r), FUNC(nbmj8900_state::palette_type1_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8900_state::ohpaipee_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x00, 0x00).w(m_nb1413m3, FUNC(nb1413m3_device::nmi_clock_w)); + map(0x20, 0x27).w(this, FUNC(nbmj8900_state::blitter_w)); + + map(0x40, 0x40).w(this, FUNC(nbmj8900_state::clutsel_w)); + map(0x60, 0x60).w(this, FUNC(nbmj8900_state::romsel_w)); + map(0x70, 0x70).w(this, FUNC(nbmj8900_state::scrolly_w)); + + map(0x80, 0x81).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).w(this, FUNC(nbmj8900_state::vramsel_w)); + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); + map(0xf1, 0xf1).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r), FUNC(nb1413m3_device::outcoin_w)); +} static INPUT_PORTS_START( ohpaipee ) diff --git a/src/mame/drivers/nbmj8991.cpp b/src/mame/drivers/nbmj8991.cpp index 2e216572d42..ff94a73a527 100644 --- a/src/mame/drivers/nbmj8991.cpp +++ b/src/mame/drivers/nbmj8991.cpp @@ -96,140 +96,155 @@ DRIVER_INIT_MEMBER(nbmj8991_state,tokimbsj) } -ADDRESS_MAP_START(nbmj8991_state::pstadium_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // finalbny -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::triplew1_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram") - AM_RANGE(0xf200, 0xf20f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // mjgottub -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::triplew2_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram") - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::mjlstory_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram") - AM_RANGE(0xf700, 0xf70f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::galkoku_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(palette_type1_w) AM_SHARE("paletteram") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // hyouban -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::galkaika_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(palette_type2_w) AM_SHARE("paletteram") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") // tokimbsj -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::tokyogal_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type2_w) AM_SHARE("paletteram") - AM_RANGE(0xf400, 0xf40f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::av2mj1bb_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram") - AM_RANGE(0xf500, 0xf50f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::av2mj2rg_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf00f) AM_READWRITE(clut_r,clut_w) - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_type3_w) AM_SHARE("paletteram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::galkoku_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(blitter_w) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) +void nbmj8991_state::pstadium_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram"); + map(0xf800, 0xffff).ram().share("nvram"); // finalbny +} + +void nbmj8991_state::triplew1_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram"); + map(0xf200, 0xf20f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf800, 0xffff).ram().share("nvram"); // mjgottub +} + +void nbmj8991_state::triplew2_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram"); + map(0xf400, 0xf40f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8991_state::mjlstory_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram"); + map(0xf700, 0xf70f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8991_state::galkoku_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf400, 0xf5ff).ram().w(this, FUNC(nbmj8991_state::palette_type1_w)).share("paletteram"); + map(0xf800, 0xffff).ram().share("nvram"); // hyouban +} + +void nbmj8991_state::galkaika_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf400, 0xf5ff).ram().w(this, FUNC(nbmj8991_state::palette_type2_w)).share("paletteram"); + map(0xf800, 0xffff).ram().share("nvram"); // tokimbsj +} + +void nbmj8991_state::tokyogal_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type2_w)).share("paletteram"); + map(0xf400, 0xf40f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8991_state::av2mj1bb_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram"); + map(0xf500, 0xf50f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf800, 0xffff).ram(); +} + +void nbmj8991_state::av2mj2rg_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf00f).rw(this, FUNC(nbmj8991_state::clut_r), FUNC(nbmj8991_state::clut_w)); + map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj8991_state::palette_type3_w)).share("paletteram"); + map(0xf800, 0xffff).ram(); +} + +void nbmj8991_state::galkoku_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)).w(this, FUNC(nbmj8991_state::blitter_w)); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::hyouban_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) AM_WRITE(blitter_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("fmsnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("fmsnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, sndrombank1_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport3_r, nmi_clock_w) - AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", dac_byte_interface, write) + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8991_state::hyouban_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)).w(this, FUNC(nbmj8991_state::blitter_w)); + map(0x81, 0x81).r("fmsnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("fmsnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::sndrombank1_w)); + map(0xc0, 0xc0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r), FUNC(nb1413m3_device::nmi_clock_w)); + map(0xd0, 0xd0).w("dac", FUNC(dac_byte_interface::write)); // AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::pstadium_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_WRITE(blitter_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) //AM_WRITENOP - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf1, 0xf1).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8991_state::pstadium_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).w(this, FUNC(nbmj8991_state::blitter_w)); + map(0x80, 0x80).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)); //AM_WRITENOP + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); // AM_RANGE(0xd0, 0xd0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, dipsw1_r, outcoin_w) - AM_RANGE(0xf8, 0xf8) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::av2mj1bb_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x7f) AM_WRITE(blitter_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport0_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport2_r, vcrctrl_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport3_r) + map(0xf0, 0xf0).rw(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r), FUNC(nb1413m3_device::outcoin_w)); + map(0xf8, 0xf8).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + +void nbmj8991_state::av2mj1bb_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x7f).w(this, FUNC(nbmj8991_state::blitter_w)); + map(0x80, 0x80).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x90, 0x90).r(m_nb1413m3, FUNC(nb1413m3_device::inputport0_r)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r), FUNC(nb1413m3_device::vcrctrl_w)); + map(0xc0, 0xc0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport3_r)); // AM_RANGE(0xd0, 0xd0) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw1_r) + map(0xf0, 0xf0).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw1_r)); // AM_RANGE(0xf0, 0xf0) AM_WRITENOP - AM_RANGE(0xf8, 0xf8) AM_DEVREAD("nb1413m3", nb1413m3_device, dipsw2_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nbmj8991_state::nbmj8991_sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj8991_state::nbmj8991_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_WRITE(soundbank_w) - AM_RANGE(0x06, 0x06) AM_WRITENOP - AM_RANGE(0x80, 0x81) AM_DEVWRITE("fmsnd", ym3812_device, write) -ADDRESS_MAP_END + map(0xf8, 0xf8).r(m_nb1413m3, FUNC(nb1413m3_device::dipsw2_r)); +} + + +void nbmj8991_state::nbmj8991_sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void nbmj8991_state::nbmj8991_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac1", FUNC(dac_byte_interface::write)); + map(0x02, 0x02).w("dac2", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).w(this, FUNC(nbmj8991_state::soundbank_w)); + map(0x06, 0x06).nopw(); + map(0x80, 0x81).w("fmsnd", FUNC(ym3812_device::write)); +} CUSTOM_INPUT_MEMBER( nbmj8991_state::nb1413m3_busyflag_r ) { diff --git a/src/mame/drivers/nbmj9195.cpp b/src/mame/drivers/nbmj9195.cpp index e006a39c325..c8c256eb1cf 100644 --- a/src/mame/drivers/nbmj9195.cpp +++ b/src/mame/drivers/nbmj9195.cpp @@ -232,411 +232,444 @@ DRIVER_INIT_MEMBER(nbmj9195_state,nbmj9195) } -ADDRESS_MAP_START(nbmj9195_state::sailorws_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mjuraden_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::koinomp_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::ngpgal_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mscoutm_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe5ff) AM_RAM - AM_RANGE(0xe600, 0xebff) AM_RAM_WRITE(nb22090_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xec00, 0xf1ff) AM_RAM - AM_RANGE(0xf200, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mjegolf_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe5ff) AM_RAM_WRITE(nb22090_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xe600, 0xebff) AM_RAM - AM_RANGE(0xec00, 0xf1ff) AM_RAM - AM_RANGE(0xf200, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mjuraden_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xb2, 0xb2) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb4, 0xb4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb6, 0xb6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::koinomp_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc2, 0xc2) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xc4, 0xc4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xc6, 0xc6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - AM_RANGE(0xcf, 0xcf) AM_MIRROR(0xff00) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::patimono_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mmehyou_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::gal10ren_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc8, 0xc8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xd8, 0xd8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::renaiclb_io_map) - AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x24, 0x24) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x28, 0x28) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x2c, 0x2c) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mjlaman_io_map) - AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x22, 0x22) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x24, 0x24) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x26, 0x26) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mkeibaou_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xd8, 0xd8) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xda, 0xda) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xdc, 0xdc) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xde, 0xde) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::pachiten_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xe4, 0xe4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xe6, 0xe6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::sailorws_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf2, 0xf2) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf4, 0xf4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::sailorwr_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xf8, 0xf8) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xfa, 0xfa) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xfc, 0xfc) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xfe, 0xfe) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::psailor1_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf2, 0xf2) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf4, 0xf4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::psailor2_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xe4, 0xe4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf6, 0xf6) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::otatidai_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb8, 0xb8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::yosimoto_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0x90, 0x90) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x94, 0x94) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x98, 0x98) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0x9c, 0x9c) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::yosimotm_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - AM_RANGE(0xfc, 0xfc) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf4, 0xf4) AM_MIRROR(0xff00) AM_NOP - AM_RANGE(0xf8, 0xf8) AM_MIRROR(0xff00) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::jituroku_io_map) - AM_RANGE(0x60, 0x61) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x60, 0x6f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x70, 0x7f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) - - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xe8, 0xe8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xf8, 0xf8) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::ngpgal_io_map) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mjgottsu_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::cmehyou_io_map) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - AM_RANGE(0xb4, 0xb4) AM_MIRROR(0xff00) AM_WRITENOP - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nbmj9195_state::mjkoiura_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0x90, 0x9f) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) -ADDRESS_MAP_END +void nbmj9195_state::sailorws_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf1ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram"); + map(0xf800, 0xffff).ram().share("nvram"); +} + +void nbmj9195_state::mjuraden_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf200, 0xf3ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram"); + map(0xf800, 0xffff).ram(); +} + +void nbmj9195_state::koinomp_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe1ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram"); + map(0xe800, 0xefff).ram().share("nvram"); +} + +void nbmj9195_state::ngpgal_map(address_map &map) +{ + map(0x0000, 0xcfff).rom(); + map(0xd000, 0xd1ff).ram().w(this, FUNC(nbmj9195_state::palette_w)).share("paletteram"); + map(0xd800, 0xdfff).ram(); +} + +void nbmj9195_state::mscoutm_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe5ff).ram(); + map(0xe600, 0xebff).ram().w(this, FUNC(nbmj9195_state::nb22090_palette_w)).share("paletteram"); + map(0xec00, 0xf1ff).ram(); + map(0xf200, 0xffff).ram(); +} + +void nbmj9195_state::mjegolf_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe5ff).ram().w(this, FUNC(nbmj9195_state::nb22090_palette_w)).share("paletteram"); + map(0xe600, 0xebff).ram(); + map(0xec00, 0xf1ff).ram(); + map(0xf200, 0xffff).ram(); +} + +void nbmj9195_state::mjuraden_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xb0, 0xb0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xb2, 0xb2).mirror(0xff00).nopw(); + map(0xb4, 0xb4).mirror(0xff00).nopw(); + map(0xb6, 0xb6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::koinomp_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xc0, 0xc0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc2, 0xc2).mirror(0xff00).nopw(); + map(0xc4, 0xc4).mirror(0xff00).nopw(); + map(0xc6, 0xc6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + map(0xcf, 0xcf).mirror(0xff00).nopw(); +} + +void nbmj9195_state::patimono_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa4, 0xa4).mirror(0xff00).nopw(); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); +} + +void nbmj9195_state::mmehyou_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa4, 0xa4).mirror(0xff00).nopw(); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::gal10ren_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xc0, 0xc0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc8, 0xc8).mirror(0xff00).nopw(); + map(0xd0, 0xd0).mirror(0xff00).nopw(); + map(0xd8, 0xd8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::renaiclb_io_map(address_map &map) +{ + map(0x20, 0x20).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x24, 0x24).mirror(0xff00).nopw(); + map(0x28, 0x28).mirror(0xff00).nopw(); + map(0x2c, 0x2c).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); +} + +void nbmj9195_state::mjlaman_io_map(address_map &map) +{ + map(0x20, 0x20).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x22, 0x22).mirror(0xff00).nopw(); + map(0x24, 0x24).mirror(0xff00).nopw(); + map(0x26, 0x26).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); +} + +void nbmj9195_state::mkeibaou_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xd8, 0xd8).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xda, 0xda).mirror(0xff00).nopw(); + map(0xdc, 0xdc).mirror(0xff00).nopw(); + map(0xde, 0xde).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::pachiten_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xe0, 0xe0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe2, 0xe2).mirror(0xff00).nopw(); + map(0xe4, 0xe4).mirror(0xff00).nopw(); + map(0xe6, 0xe6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::sailorws_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xf0, 0xf0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf2, 0xf2).mirror(0xff00).nopw(); + map(0xf4, 0xf4).mirror(0xff00).nopw(); + map(0xf6, 0xf6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::sailorwr_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xf8, 0xf8).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xfa, 0xfa).mirror(0xff00).nopw(); + map(0xfc, 0xfc).mirror(0xff00).nopw(); + map(0xfe, 0xfe).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::psailor1_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xf0, 0xf0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf2, 0xf2).mirror(0xff00).nopw(); + map(0xf4, 0xf4).mirror(0xff00).nopw(); + map(0xf6, 0xf6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::psailor2_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xe0, 0xe0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe2, 0xe2).mirror(0xff00).nopw(); + map(0xe4, 0xe4).mirror(0xff00).nopw(); + map(0xf6, 0xf6).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::otatidai_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).nopw(); + map(0xb8, 0xb8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::yosimoto_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0x90, 0x90).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x94, 0x94).mirror(0xff00).nopw(); + map(0x98, 0x98).mirror(0xff00).nopw(); + map(0x9c, 0x9c).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); +} + +void nbmj9195_state::yosimotm_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xf0, 0xf0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + map(0xfc, 0xfc).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf4, 0xf4).mirror(0xff00).noprw(); + map(0xf8, 0xf8).mirror(0xff00).noprw(); +} + +void nbmj9195_state::jituroku_io_map(address_map &map) +{ + map(0x60, 0x61).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x60, 0x6f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x70, 0x7f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); + + map(0xe0, 0xe0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe8, 0xe8).mirror(0xff00).nopw(); + map(0xf0, 0xf0).mirror(0xff00).nopw(); + map(0xf8, 0xf8).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::ngpgal_io_map(address_map &map) +{ + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa4, 0xa4).mirror(0xff00).nopw(); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); +} + +void nbmj9195_state::mjgottsu_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa4, 0xa4).mirror(0xff00).nopw(); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} + +void nbmj9195_state::cmehyou_io_map(address_map &map) +{ + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + map(0xb4, 0xb4).mirror(0xff00).nopw(); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); +} + +void nbmj9195_state::mjkoiura_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0x80, 0x8f).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0x90, 0x9f).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa4, 0xa4).mirror(0xff00).nopw(); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); +} -ADDRESS_MAP_START(nbmj9195_state::mkoiuraa_io_map) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa4, 0xa4) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xa8, 0xa8) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0xff00) AM_WRITE(inputportsel_w) - - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) -ADDRESS_MAP_END +void nbmj9195_state::mkoiuraa_io_map(address_map &map) +{ + map(0xa0, 0xa0).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xa4, 0xa4).mirror(0xff00).nopw(); + map(0xa8, 0xa8).mirror(0xff00).nopw(); + map(0xb0, 0xb0).mirror(0xff00).w(this, FUNC(nbmj9195_state::inputportsel_w)); + + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); +} -ADDRESS_MAP_START(nbmj9195_state::mscoutm_io_map) - AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_1_r) - AM_RANGE(0x82, 0x82) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_0_r) - AM_RANGE(0x84, 0x84) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) +void nbmj9195_state::mscoutm_io_map(address_map &map) +{ + map(0x80, 0x80).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_1_r)); + map(0x82, 0x82).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_0_r)); + map(0x84, 0x84).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0xa0, 0xa6) AM_MIRROR(0xff00) AM_WRITENOP // nb22090 param ? + map(0xa0, 0xa6).mirror(0xff00).nopw(); // nb22090 param ? - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) - AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); + map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); - AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) -ADDRESS_MAP_END + map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); +} -ADDRESS_MAP_START(nbmj9195_state::imekura_io_map) - AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_1_r) - AM_RANGE(0x82, 0x82) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_0_r) - AM_RANGE(0x84, 0x84) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) +void nbmj9195_state::imekura_io_map(address_map &map) +{ + map(0x80, 0x80).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_1_r)); + map(0x82, 0x82).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_0_r)); + map(0x84, 0x84).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0xb0, 0xb6) AM_MIRROR(0xff00) AM_WRITENOP // nb22090 param ? + map(0xb0, 0xb6).mirror(0xff00).nopw(); // nb22090 param ? - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); - AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xe0, 0xef) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) - AM_RANGE(0xf0, 0xff) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) -ADDRESS_MAP_END + map(0xe0, 0xe1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xe0, 0xef).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); + map(0xf0, 0xff).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); +} -ADDRESS_MAP_START(nbmj9195_state::mjegolf_io_map) - AM_RANGE(0x80, 0x86) AM_MIRROR(0xff00) AM_WRITENOP // nb22090 param ? +void nbmj9195_state::mjegolf_io_map(address_map &map) +{ + map(0x80, 0x86).mirror(0xff00).nopw(); // nb22090 param ? - AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_READ(blitter_0_r) - AM_RANGE(0xa0, 0xaf) AM_MIRROR(0xff00) AM_WRITE(blitter_0_w) - AM_RANGE(0xb0, 0xbf) AM_MIRROR(0xff00) AM_WRITE(clut_0_w) + map(0xa0, 0xa1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_0_r)); + map(0xa0, 0xaf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_0_w)); + map(0xb0, 0xbf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_0_w)); - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0xff00) AM_READ(blitter_1_r) - AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_WRITE(blitter_1_w) + map(0xc0, 0xc1).mirror(0xff00).r(this, FUNC(nbmj9195_state::blitter_1_r)); + map(0xc0, 0xcf).mirror(0xff00).w(this, FUNC(nbmj9195_state::blitter_1_w)); - AM_RANGE(0xd0, 0xdf) AM_MIRROR(0xff00) AM_WRITE(clut_1_w) + map(0xd0, 0xdf).mirror(0xff00).w(this, FUNC(nbmj9195_state::clut_1_w)); - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_1_r) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0xff00) AM_READ(mscoutm_dipsw_0_r) - AM_RANGE(0xe4, 0xe4) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END + map(0xe0, 0xe0).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_1_r)); + map(0xe2, 0xe2).mirror(0xff00).r(this, FUNC(nbmj9195_state::mscoutm_dipsw_0_r)); + map(0xe4, 0xe4).mirror(0xff00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} -ADDRESS_MAP_START(nbmj9195_state::sailorws_sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END +void nbmj9195_state::sailorws_sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("soundbank"); +} -ADDRESS_MAP_START(nbmj9195_state::sailorws_sound_io_map) - AM_RANGE(0x80, 0x81) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym3812_device, write) -ADDRESS_MAP_END +void nbmj9195_state::sailorws_sound_io_map(address_map &map) +{ + map(0x80, 0x81).mirror(0xff00).w("ymsnd", FUNC(ym3812_device::write)); +} @@ -645,19 +678,21 @@ ADDRESS_MAP_END TODO: it probably doesn't belong in here. Both CPUs are certainly tmpz84c011 tho ... */ -ADDRESS_MAP_START(nbmj9195_state::shabdama_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM +void nbmj9195_state::shabdama_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xe7ff).ram(); // AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") // AM_RANGE(0xd800, 0xdfff) AM_RAM -ADDRESS_MAP_END +} -ADDRESS_MAP_START(nbmj9195_state::shabdama_io_map) +void nbmj9195_state::shabdama_io_map(address_map &map) +{ // ADDRESS_MAP_UNMAP_HIGH // AM_RANGE(0x60, 0x61) AM_READ(blitter_0_r) // AM_RANGE(0x60, 0x6f) AM_WRITE(blitter_0_w) // AM_RANGE(0x70, 0x7f) AM_WRITE(clut_0_w) -ADDRESS_MAP_END +} /******************************************************************************** These Nichibutsu Mahjong games use two different but very similar control ports: diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp index 5e80b6e53b5..56f73fde96f 100644 --- a/src/mame/drivers/nc.cpp +++ b/src/mame/drivers/nc.cpp @@ -469,12 +469,13 @@ void nc_state::nc_common_init_machine() m_uart_control = 0x0ff; } -ADDRESS_MAP_START(nc_state::nc_map) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5") - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6") - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7") - AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8") -ADDRESS_MAP_END +void nc_state::nc_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1").bankw("bank5"); + map(0x4000, 0x7fff).bankr("bank2").bankw("bank6"); + map(0x8000, 0xbfff).bankr("bank3").bankw("bank7"); + map(0xc000, 0xffff).bankr("bank4").bankw("bank8"); +} READ8_MEMBER(nc_state::nc_memory_management_r) @@ -857,25 +858,26 @@ WRITE8_MEMBER(nc_state::nc100_memory_card_wait_state_w) -ADDRESS_MAP_START(nc_state::nc100_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x0f) AM_WRITE(nc100_display_memory_start_w) - AM_RANGE(0x10, 0x13) AM_READWRITE(nc_memory_management_r, nc_memory_management_w) - AM_RANGE(0x20, 0x20) AM_WRITE(nc100_memory_card_wait_state_w) - AM_RANGE(0x30, 0x30) AM_WRITE(nc100_uart_control_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x50, 0x53) AM_WRITE(nc_sound_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nc_irq_mask_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nc100_poweroff_control_w) - AM_RANGE(0x90, 0x90) AM_READWRITE(nc_irq_status_r, nc_irq_status_w) - AM_RANGE(0x91, 0x9f) AM_READ(nc_irq_status_r) - AM_RANGE(0xa0, 0xaf) AM_READ(nc100_card_battery_status_r) - AM_RANGE(0xb0, 0xb9) AM_READ(nc_key_data_in_r) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w) - AM_RANGE(0xc1, 0xc1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xd0, 0xdf) AM_DEVREADWRITE("rtc", tc8521_device, read, write) -ADDRESS_MAP_END +void nc_state::nc100_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x0f).w(this, FUNC(nc_state::nc100_display_memory_start_w)); + map(0x10, 0x13).rw(this, FUNC(nc_state::nc_memory_management_r), FUNC(nc_state::nc_memory_management_w)); + map(0x20, 0x20).w(this, FUNC(nc_state::nc100_memory_card_wait_state_w)); + map(0x30, 0x30).w(this, FUNC(nc_state::nc100_uart_control_w)); + map(0x40, 0x40).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x50, 0x53).w(this, FUNC(nc_state::nc_sound_w)); + map(0x60, 0x60).w(this, FUNC(nc_state::nc_irq_mask_w)); + map(0x70, 0x70).w(this, FUNC(nc_state::nc100_poweroff_control_w)); + map(0x90, 0x90).rw(this, FUNC(nc_state::nc_irq_status_r), FUNC(nc_state::nc_irq_status_w)); + map(0x91, 0x9f).r(this, FUNC(nc_state::nc_irq_status_r)); + map(0xa0, 0xaf).r(this, FUNC(nc_state::nc100_card_battery_status_r)); + map(0xb0, 0xb9).r(this, FUNC(nc_state::nc_key_data_in_r)); + map(0xc0, 0xc0).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc1, 0xc1).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xd0, 0xdf).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write)); +} /* 2008-05 FP: @@ -1264,25 +1266,26 @@ WRITE8_MEMBER(nc_state::nc200_poweroff_control_w) nc200_video_set_backlight(((data ^ (1 << 2)) >> 2) & 0x01); } -ADDRESS_MAP_START(nc_state::nc200_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_WRITE(nc100_display_memory_start_w) - AM_RANGE(0x10, 0x13) AM_READWRITE(nc_memory_management_r, nc_memory_management_w) - AM_RANGE(0x20, 0x20) AM_WRITE(nc200_memory_card_wait_state_w) - AM_RANGE(0x30, 0x30) AM_WRITE(nc200_uart_control_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x50, 0x53) AM_WRITE(nc_sound_w) - AM_RANGE(0x60, 0x60) AM_WRITE(nc_irq_mask_w) - AM_RANGE(0x70, 0x70) AM_WRITE(nc200_poweroff_control_w) - AM_RANGE(0x80, 0x80) AM_READ(nc200_printer_status_r) - AM_RANGE(0x90, 0x90) AM_READWRITE(nc_irq_status_r, nc_irq_status_w) - AM_RANGE(0xa0, 0xa0) AM_READ(nc200_card_battery_status_r) - AM_RANGE(0xb0, 0xb9) AM_READ(nc_key_data_in_r) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w) - AM_RANGE(0xc1, 0xc1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE("mc", mc146818_device, read, write) - AM_RANGE(0xe0, 0xe1) AM_DEVICE("upd765", upd765a_device, map) -ADDRESS_MAP_END +void nc_state::nc200_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).w(this, FUNC(nc_state::nc100_display_memory_start_w)); + map(0x10, 0x13).rw(this, FUNC(nc_state::nc_memory_management_r), FUNC(nc_state::nc_memory_management_w)); + map(0x20, 0x20).w(this, FUNC(nc_state::nc200_memory_card_wait_state_w)); + map(0x30, 0x30).w(this, FUNC(nc_state::nc200_uart_control_w)); + map(0x40, 0x40).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x50, 0x53).w(this, FUNC(nc_state::nc_sound_w)); + map(0x60, 0x60).w(this, FUNC(nc_state::nc_irq_mask_w)); + map(0x70, 0x70).w(this, FUNC(nc_state::nc200_poweroff_control_w)); + map(0x80, 0x80).r(this, FUNC(nc_state::nc200_printer_status_r)); + map(0x90, 0x90).rw(this, FUNC(nc_state::nc_irq_status_r), FUNC(nc_state::nc_irq_status_w)); + map(0xa0, 0xa0).r(this, FUNC(nc_state::nc200_card_battery_status_r)); + map(0xb0, 0xb9).r(this, FUNC(nc_state::nc_key_data_in_r)); + map(0xc0, 0xc0).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc1, 0xc1).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xd0, 0xd1).rw("mc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)); + map(0xe0, 0xe1).m("upd765", FUNC(upd765a_device::map)); +} static INPUT_PORTS_START(nc200) PORT_START("LINE0") diff --git a/src/mame/drivers/nds.cpp b/src/mame/drivers/nds.cpp index cab0db4fcdb..b7cb4db10b4 100644 --- a/src/mame/drivers/nds.cpp +++ b/src/mame/drivers/nds.cpp @@ -582,40 +582,44 @@ WRITE32_MEMBER(nds_state::arm9_io_w) } } -ADDRESS_MAP_START(nds_state::nds_arm7_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM AM_REGION("arm7", 0) - AM_RANGE(0x02000000, 0x023fffff) AM_RAM AM_MIRROR(0x00400000) AM_SHARE("mainram") - AM_RANGE(0x03000000, 0x03007fff) AM_MIRROR(0x007f8000) AM_DEVICE("nds7wram", address_map_bank_device, amap32) - AM_RANGE(0x03800000, 0x0380ffff) AM_RAM AM_MIRROR(0x007f0000) AM_SHARE("arm7ram") - AM_RANGE(0x04000000, 0x0410ffff) AM_READWRITE(arm7_io_r, arm7_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nds_state::nds_arm9_map) - AM_RANGE(0x02000000, 0x023fffff) AM_RAM AM_MIRROR(0x00400000) AM_SHARE("mainram") - AM_RANGE(0x03000000, 0x03007fff) AM_MIRROR(0x00ff8000) AM_DEVICE("nds9wram", address_map_bank_device, amap32) - AM_RANGE(0x04000000, 0x0410ffff) AM_READWRITE(arm9_io_r, arm9_io_w) - AM_RANGE(0xffff0000, 0xffff0fff) AM_ROM AM_MIRROR(0x1000) AM_REGION("arm9", 0) -ADDRESS_MAP_END +void nds_state::nds_arm7_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom().region("arm7", 0); + map(0x02000000, 0x023fffff).ram().mirror(0x00400000).share("mainram"); + map(0x03000000, 0x03007fff).mirror(0x007f8000).m(m_arm7wrambnk, FUNC(address_map_bank_device::amap32)); + map(0x03800000, 0x0380ffff).ram().mirror(0x007f0000).share("arm7ram"); + map(0x04000000, 0x0410ffff).rw(this, FUNC(nds_state::arm7_io_r), FUNC(nds_state::arm7_io_w)); +} + +void nds_state::nds_arm9_map(address_map &map) +{ + map(0x02000000, 0x023fffff).ram().mirror(0x00400000).share("mainram"); + map(0x03000000, 0x03007fff).mirror(0x00ff8000).m("nds9wram", FUNC(address_map_bank_device::amap32)); + map(0x04000000, 0x0410ffff).rw(this, FUNC(nds_state::arm9_io_r), FUNC(nds_state::arm9_io_w)); + map(0xffff0000, 0xffff0fff).rom().mirror(0x1000).region("arm9", 0); +} // ARM7 views of WRAM -ADDRESS_MAP_START(nds_state::nds7_wram_map) - AM_RANGE(0x00000, 0x07fff) AM_READWRITE(wram_arm7mirror_r, wram_arm7mirror_w) - AM_RANGE(0x08000, 0x0bfff) AM_READWRITE(wram_first_half_r, wram_first_half_w) - AM_RANGE(0x0c000, 0x0ffff) AM_READWRITE(wram_first_half_r, wram_first_half_w) - AM_RANGE(0x10000, 0x13fff) AM_READWRITE(wram_second_half_r, wram_second_half_w) - AM_RANGE(0x14000, 0x17fff) AM_READWRITE(wram_second_half_r, wram_second_half_w) - AM_RANGE(0x18000, 0x1ffff) AM_READWRITE(wram_first_half_r, wram_first_half_w) -ADDRESS_MAP_END +void nds_state::nds7_wram_map(address_map &map) +{ + map(0x00000, 0x07fff).rw(this, FUNC(nds_state::wram_arm7mirror_r), FUNC(nds_state::wram_arm7mirror_w)); + map(0x08000, 0x0bfff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w)); + map(0x0c000, 0x0ffff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w)); + map(0x10000, 0x13fff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w)); + map(0x14000, 0x17fff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w)); + map(0x18000, 0x1ffff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w)); +} // ARM9 views of WRAM -ADDRESS_MAP_START(nds_state::nds9_wram_map) - AM_RANGE(0x00000, 0x07fff) AM_READWRITE(wram_first_half_r, wram_first_half_w) - AM_RANGE(0x08000, 0x0bfff) AM_READWRITE(wram_second_half_r, wram_second_half_w) - AM_RANGE(0x0c000, 0x0ffff) AM_READWRITE(wram_second_half_r, wram_second_half_w) - AM_RANGE(0x10000, 0x13fff) AM_READWRITE(wram_first_half_r, wram_first_half_w) - AM_RANGE(0x14000, 0x17fff) AM_READWRITE(wram_first_half_r, wram_first_half_w) - AM_RANGE(0x18000, 0x1ffff) AM_NOP AM_WRITENOP // probably actually open bus? GBATEK describes as "random" -ADDRESS_MAP_END +void nds_state::nds9_wram_map(address_map &map) +{ + map(0x00000, 0x07fff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w)); + map(0x08000, 0x0bfff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w)); + map(0x0c000, 0x0ffff).rw(this, FUNC(nds_state::wram_second_half_r), FUNC(nds_state::wram_second_half_w)); + map(0x10000, 0x13fff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w)); + map(0x14000, 0x17fff).rw(this, FUNC(nds_state::wram_first_half_r), FUNC(nds_state::wram_first_half_w)); + map(0x18000, 0x1ffff).noprw().nopw(); // probably actually open bus? GBATEK describes as "random" +} READ32_MEMBER(nds_state::wram_first_half_r) { return m_WRAM[offset]; } READ32_MEMBER(nds_state::wram_second_half_r) { return m_WRAM[offset+0x4000]; } diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp index 64746092fc4..0aaad50890c 100644 --- a/src/mame/drivers/nemesis.cpp +++ b/src/mame/drivers/nemesis.cpp @@ -251,271 +251,282 @@ WRITE8_MEMBER(nemesis_state::city_sound_bank_w) } -ADDRESS_MAP_START(nemesis_state::nemesis_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x050000, 0x051fff) AM_RAM - AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1") - AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2") - AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2") - AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1") - AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */ - AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0") - AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1") - AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0") - AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1") - AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2") - AM_RANGE(0x05cc06, 0x05cc07) AM_READ_PORT("TEST") - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00) - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::gx400_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */ - AM_RANGE(0x010000, 0x01ffff) AM_RAM - AM_RANGE(0x020000, 0x027fff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w) - AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x050000, 0x051fff) AM_RAM - AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1") - AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2") - AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2") - AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1") - AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */ - AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x057000, 0x057fff) AM_RAM /* needed for twinbee */ - AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0") - AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1") - AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST") - AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0") - AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1") - AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2") - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00) - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x060000, 0x07ffff) AM_RAM /* WORK RAM */ - AM_RANGE(0x080000, 0x0bffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::konamigt_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x050000, 0x051fff) AM_RAM - AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1") - AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2") - AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2") - AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1") - AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */ - AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0") - AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1") - AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0") - AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1") - AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2") - AM_RANGE(0x05cc06, 0x05cc07) AM_READ_PORT("TEST") - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00) - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */ - AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::rf2_gx400_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */ - AM_RANGE(0x010000, 0x01ffff) AM_RAM - AM_RANGE(0x020000, 0x027fff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w) - AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x050000, 0x051fff) AM_RAM - AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1") - AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2") - AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2") - AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1") - AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */ - AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0") - AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1") - AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST") - AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0") - AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1") - AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2") - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00) - AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */ - AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r) - AM_RANGE(0x080000, 0x0bffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nemesis_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w) - AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w) - AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w) - AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w) - AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0xe007, 0xe007) AM_SELECT(0x1ff8) AM_WRITE(nemesis_filter_w) - AM_RANGE(0xe086, 0xe086) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xe106, 0xe106) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0xe205, 0xe205) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::gx400_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("gx400_shared") - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("voiceram") - AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w) - AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("vlm", vlm5030_device, data_w) - AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w) - AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w) - AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0xe007, 0xe007) AM_SELECT(0x1ff8) AM_WRITE(nemesis_filter_w) - AM_RANGE(0xe030, 0xe030) AM_WRITE(gx400_speech_start_w) - AM_RANGE(0xe086, 0xe086) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xe106, 0xe106) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0xe205, 0xe205) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w) -ADDRESS_MAP_END +void nemesis_state::nemesis_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x050000, 0x051fff).ram(); + map(0x050000, 0x0503ff).share("xscroll1"); + map(0x050400, 0x0507ff).share("xscroll2"); + map(0x050f00, 0x050f7f).share("yscroll2"); + map(0x050f80, 0x050fff).share("yscroll1"); + map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */ + map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x056000, 0x056fff).ram().share("spriteram"); + map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram"); + map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x05c400, 0x05c401).portr("DSW0"); + map(0x05c402, 0x05c403).portr("DSW1"); + map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x05cc00, 0x05cc01).portr("IN0"); + map(0x05cc02, 0x05cc03).portr("IN1"); + map(0x05cc04, 0x05cc05).portr("IN2"); + map(0x05cc06, 0x05cc07).portr("TEST"); + map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00); + map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x060000, 0x067fff).ram(); /* WORK RAM */ +} + +void nemesis_state::gx400_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); /* ROM BIOS */ + map(0x010000, 0x01ffff).ram(); + map(0x020000, 0x027fff).rw(this, FUNC(nemesis_state::gx400_sharedram_word_r), FUNC(nemesis_state::gx400_sharedram_word_w)); + map(0x030000, 0x03ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x050000, 0x051fff).ram(); + map(0x050000, 0x0503ff).share("xscroll1"); + map(0x050400, 0x0507ff).share("xscroll2"); + map(0x050f00, 0x050f7f).share("yscroll2"); + map(0x050f80, 0x050fff).share("yscroll1"); + map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */ + map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x056000, 0x056fff).ram().share("spriteram"); + map(0x057000, 0x057fff).ram(); /* needed for twinbee */ + map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram"); + map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x05c402, 0x05c403).portr("DSW0"); + map(0x05c404, 0x05c405).portr("DSW1"); + map(0x05c406, 0x05c407).portr("TEST"); + map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x05cc00, 0x05cc01).portr("IN0"); + map(0x05cc02, 0x05cc03).portr("IN1"); + map(0x05cc04, 0x05cc05).portr("IN2"); + map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00); + map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x060000, 0x07ffff).ram(); /* WORK RAM */ + map(0x080000, 0x0bffff).rom(); +} + +void nemesis_state::konamigt_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x050000, 0x051fff).ram(); + map(0x050000, 0x0503ff).share("xscroll1"); + map(0x050400, 0x0507ff).share("xscroll2"); + map(0x050f00, 0x050f7f).share("yscroll2"); + map(0x050f80, 0x050fff).share("yscroll1"); + map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */ + map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x056000, 0x056fff).ram().share("spriteram"); + map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram"); + map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x05c400, 0x05c401).portr("DSW0"); + map(0x05c402, 0x05c403).portr("DSW1"); + map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x05cc00, 0x05cc01).portr("IN0"); + map(0x05cc02, 0x05cc03).portr("IN1"); + map(0x05cc04, 0x05cc05).portr("IN2"); + map(0x05cc06, 0x05cc07).portr("TEST"); + map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00); + map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x060000, 0x067fff).ram(); /* WORK RAM */ + map(0x070000, 0x070001).r(this, FUNC(nemesis_state::konamigt_input_word_r)); +} + +void nemesis_state::rf2_gx400_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); /* ROM BIOS */ + map(0x010000, 0x01ffff).ram(); + map(0x020000, 0x027fff).rw(this, FUNC(nemesis_state::gx400_sharedram_word_r), FUNC(nemesis_state::gx400_sharedram_word_w)); + map(0x030000, 0x03ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x050000, 0x051fff).ram(); + map(0x050000, 0x0503ff).share("xscroll1"); + map(0x050400, 0x0507ff).share("xscroll2"); + map(0x050f00, 0x050f7f).share("yscroll2"); + map(0x050f80, 0x050fff).share("yscroll1"); + map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */ + map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x056000, 0x056fff).ram().share("spriteram"); + map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram"); + map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x05c402, 0x05c403).portr("DSW0"); + map(0x05c404, 0x05c405).portr("DSW1"); + map(0x05c406, 0x05c407).portr("TEST"); + map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x05cc00, 0x05cc01).portr("IN0"); + map(0x05cc02, 0x05cc03).portr("IN1"); + map(0x05cc04, 0x05cc05).portr("IN2"); + map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00); + map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x060000, 0x067fff).ram(); /* WORK RAM */ + map(0x070000, 0x070001).r(this, FUNC(nemesis_state::konamigt_input_word_r)); + map(0x080000, 0x0bffff).rom(); +} + + +void nemesis_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0xa000, 0xafff).w(m_k005289, FUNC(k005289_device::ld1_w)); + map(0xc000, 0xcfff).w(m_k005289, FUNC(k005289_device::ld2_w)); + map(0xe001, 0xe001).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe003, 0xe003).w(m_k005289, FUNC(k005289_device::tg1_w)); + map(0xe004, 0xe004).w(m_k005289, FUNC(k005289_device::tg2_w)); + map(0xe005, 0xe005).w("ay2", FUNC(ay8910_device::address_w)); + map(0xe006, 0xe006).w("ay1", FUNC(ay8910_device::address_w)); + map(0xe007, 0xe007).select(0x1ff8).w(this, FUNC(nemesis_state::nemesis_filter_w)); + map(0xe086, 0xe086).r("ay1", FUNC(ay8910_device::data_r)); + map(0xe106, 0xe106).w("ay1", FUNC(ay8910_device::data_w)); + map(0xe205, 0xe205).r("ay2", FUNC(ay8910_device::data_r)); + map(0xe405, 0xe405).w("ay2", FUNC(ay8910_device::data_w)); +} + +void nemesis_state::gx400_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).ram().share("gx400_shared"); + map(0x8000, 0x87ff).ram().share("voiceram"); + map(0xa000, 0xafff).w(m_k005289, FUNC(k005289_device::ld1_w)); + map(0xc000, 0xcfff).w(m_k005289, FUNC(k005289_device::ld2_w)); + map(0xe000, 0xe000).w(m_vlm, FUNC(vlm5030_device::data_w)); + map(0xe001, 0xe001).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe003, 0xe003).w(m_k005289, FUNC(k005289_device::tg1_w)); + map(0xe004, 0xe004).w(m_k005289, FUNC(k005289_device::tg2_w)); + map(0xe005, 0xe005).w("ay2", FUNC(ay8910_device::address_w)); + map(0xe006, 0xe006).w("ay1", FUNC(ay8910_device::address_w)); + map(0xe007, 0xe007).select(0x1ff8).w(this, FUNC(nemesis_state::nemesis_filter_w)); + map(0xe030, 0xe030).w(this, FUNC(nemesis_state::gx400_speech_start_w)); + map(0xe086, 0xe086).r("ay1", FUNC(ay8910_device::data_r)); + map(0xe106, 0xe106).w("ay1", FUNC(ay8910_device::data_w)); + map(0xe205, 0xe205).r("ay2", FUNC(ay8910_device::data_r)); + map(0xe405, 0xe405).w("ay2", FUNC(ay8910_device::data_w)); +} // gx400 voice data is not in a ROM but in sound RAM at $8000 -ADDRESS_MAP_START(nemesis_state::gx400_vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x7ff) - AM_RANGE(0x000, 0x7ff) AM_RAM AM_SHARE("voiceram") -ADDRESS_MAP_END +void nemesis_state::gx400_vlm_map(address_map &map) +{ + map.global_mask(0x7ff); + map(0x000, 0x7ff).ram().share("voiceram"); +} /******************************************************************************/ -ADDRESS_MAP_START(nemesis_state::salamand_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_RAM - AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0") - AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ - AM_RANGE(0x0c2002, 0x0c2003) AM_READ_PORT("IN1") - AM_RANGE(0x0c2004, 0x0c2005) AM_READ_PORT("IN2") - AM_RANGE(0x0c2006, 0x0c2007) AM_READ_PORT("DSW1") - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") /* VRAM */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") - AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */ - AM_RANGE(0x190000, 0x191fff) AM_RAM - AM_RANGE(0x190000, 0x1903ff) AM_SHARE("xscroll2") - AM_RANGE(0x190400, 0x1907ff) AM_SHARE("xscroll1") - AM_RANGE(0x190f00, 0x190f7f) AM_SHARE("yscroll1") - AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::blkpnthr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x081fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x090000, 0x097fff) AM_RAM - AM_RANGE(0x0a0000, 0x0a0001) AM_RAM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0") - AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ - AM_RANGE(0x0c2002, 0x0c2003) AM_READ_PORT("IN1") - AM_RANGE(0x0c2004, 0x0c2005) AM_READ_PORT("IN2") - AM_RANGE(0x0c2006, 0x0c2007) AM_READ_PORT("DSW1") - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") AM_MIRROR(0x4000) /* VRAM */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") AM_MIRROR(0x4000) - AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") - AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x180000, 0x181fff) AM_RAM - AM_RANGE(0x180000, 0x1803ff) AM_SHARE("xscroll1") - AM_RANGE(0x180400, 0x1807ff) AM_SHARE("xscroll2") - AM_RANGE(0x180f00, 0x180f7f) AM_SHARE("yscroll2") - AM_RANGE(0x180f80, 0x180fff) AM_SHARE("yscroll1") - AM_RANGE(0x190000, 0x190fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::citybomb_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_RAM - AM_RANGE(0x0e0000, 0x0e1fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") - AM_RANGE(0x0f0002, 0x0f0003) AM_READ_PORT("IN2") - AM_RANGE(0x0f0004, 0x0f0005) AM_READ_PORT("IN1") - AM_RANGE(0x0f0006, 0x0f0007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ - AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW0") - AM_RANGE(0x0f0010, 0x0f0011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0f0018, 0x0f0019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x0f0020, 0x0f0021) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control? */ - AM_RANGE(0x0f8000, 0x0f8001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x100000, 0x1bffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x210000, 0x210fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */ - AM_RANGE(0x211000, 0x211fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x212000, 0x212fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x213000, 0x213fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x300000, 0x301fff) AM_RAM - AM_RANGE(0x300000, 0x3003ff) AM_SHARE("xscroll1") - AM_RANGE(0x300400, 0x3007ff) AM_SHARE("xscroll2") - AM_RANGE(0x300f00, 0x300f7f) AM_SHARE("yscroll2") - AM_RANGE(0x300f80, 0x300fff) AM_SHARE("yscroll1") - AM_RANGE(0x310000, 0x310fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::nyanpani_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x047fff) AM_RAM - AM_RANGE(0x060000, 0x061fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x070000, 0x070001) AM_READ_PORT("DSW1") - AM_RANGE(0x070002, 0x070003) AM_READ_PORT("IN2") - AM_RANGE(0x070004, 0x070005) AM_READ_PORT("IN1") - AM_RANGE(0x070006, 0x070007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ - AM_RANGE(0x070008, 0x070009) AM_READ_PORT("DSW0") - AM_RANGE(0x070010, 0x070011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x070018, 0x070019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ - AM_RANGE(0x078000, 0x078001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x100000, 0x13ffff) AM_ROM - AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */ - AM_RANGE(0x201000, 0x201fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") - AM_RANGE(0x202000, 0x202fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x203000, 0x203fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x210000, 0x21ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */ - AM_RANGE(0x310000, 0x311fff) AM_RAM - AM_RANGE(0x310000, 0x3103ff) AM_SHARE("xscroll1") - AM_RANGE(0x310400, 0x3107ff) AM_SHARE("xscroll2") - AM_RANGE(0x310f00, 0x310f7f) AM_SHARE("yscroll2") - AM_RANGE(0x310f80, 0x310fff) AM_SHARE("yscroll1") -ADDRESS_MAP_END +void nemesis_state::salamand_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x087fff).ram(); + map(0x090000, 0x091fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0a0000, 0x0a0001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */ + map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0c0002, 0x0c0003).portr("DSW0"); + map(0x0c0004, 0x0c0005).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x0c2000, 0x0c2001).portr("IN0"); /* Coins, start buttons, test mode */ + map(0x0c2002, 0x0c2003).portr("IN1"); + map(0x0c2004, 0x0c2005).portr("IN2"); + map(0x0c2006, 0x0c2007).portr("DSW1"); + map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); /* VRAM */ + map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); + map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x180000, 0x180fff).ram().share("spriteram"); /* more sprite ram ??? */ + map(0x190000, 0x191fff).ram(); + map(0x190000, 0x1903ff).share("xscroll2"); + map(0x190400, 0x1907ff).share("xscroll1"); + map(0x190f00, 0x190f7f).share("yscroll1"); + map(0x190f80, 0x190fff).share("yscroll2"); +} + +void nemesis_state::blkpnthr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x081fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x090000, 0x097fff).ram(); + map(0x0a0000, 0x0a0001).ram().w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */ + map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0c0002, 0x0c0003).portr("DSW0"); + map(0x0c0004, 0x0c0005).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x0c2000, 0x0c2001).portr("IN0"); /* Coins, start buttons, test mode */ + map(0x0c2002, 0x0c2003).portr("IN1"); + map(0x0c2004, 0x0c2005).portr("IN2"); + map(0x0c2006, 0x0c2007).portr("DSW1"); + map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1").mirror(0x4000); /* VRAM */ + map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2").mirror(0x4000); + map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); + map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x180000, 0x181fff).ram(); + map(0x180000, 0x1803ff).share("xscroll1"); + map(0x180400, 0x1807ff).share("xscroll2"); + map(0x180f00, 0x180f7f).share("yscroll2"); + map(0x180f80, 0x180fff).share("yscroll1"); + map(0x190000, 0x190fff).ram().share("spriteram"); /* more sprite ram ??? */ +} + +void nemesis_state::citybomb_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x080000, 0x087fff).ram(); + map(0x0e0000, 0x0e1fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0f0000, 0x0f0001).portr("DSW1"); + map(0x0f0002, 0x0f0003).portr("IN2"); + map(0x0f0004, 0x0f0005).portr("IN1"); + map(0x0f0006, 0x0f0007).portr("IN0"); /* Coins, start buttons, test mode */ + map(0x0f0008, 0x0f0009).portr("DSW0"); + map(0x0f0011, 0x0f0011).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0f0018, 0x0f0019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x0f0020, 0x0f0021).r(this, FUNC(nemesis_state::selected_ip_word_r)).nopw(); /* WEC Le Mans 24 control? */ + map(0x0f8000, 0x0f8001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */ + map(0x100000, 0x1bffff).rom(); + map(0x200000, 0x20ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x210000, 0x210fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */ + map(0x211000, 0x211fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x212000, 0x212fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x213000, 0x213fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x300000, 0x301fff).ram(); + map(0x300000, 0x3003ff).share("xscroll1"); + map(0x300400, 0x3007ff).share("xscroll2"); + map(0x300f00, 0x300f7f).share("yscroll2"); + map(0x300f80, 0x300fff).share("yscroll1"); + map(0x310000, 0x310fff).ram().share("spriteram"); /* more sprite ram ??? */ +} + +void nemesis_state::nyanpani_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x047fff).ram(); + map(0x060000, 0x061fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x070000, 0x070001).portr("DSW1"); + map(0x070002, 0x070003).portr("IN2"); + map(0x070004, 0x070005).portr("IN1"); + map(0x070006, 0x070007).portr("IN0"); /* Coins, start buttons, test mode */ + map(0x070008, 0x070009).portr("DSW0"); + map(0x070011, 0x070011).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x070018, 0x070019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */ + map(0x078000, 0x078001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */ + map(0x100000, 0x13ffff).rom(); + map(0x200000, 0x200fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */ + map(0x201000, 0x201fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); + map(0x202000, 0x202fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x203000, 0x203fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x210000, 0x21ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x300000, 0x300fff).ram().share("spriteram"); /* more sprite ram ??? */ + map(0x310000, 0x311fff).ram(); + map(0x310000, 0x3103ff).share("xscroll1"); + map(0x310400, 0x3107ff).share("xscroll2"); + map(0x310f00, 0x310f7f).share("yscroll2"); + map(0x310f80, 0x310fff).share("yscroll1"); +} READ8_MEMBER(nemesis_state::wd_r) { @@ -523,75 +534,80 @@ READ8_MEMBER(nemesis_state::wd_r) return m_frame_counter; } -ADDRESS_MAP_START(nemesis_state::sal_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("vlm", vlm5030_device, data_w) - AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ - AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::salamand_vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x3fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::blkpnthr_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(nemesis_state::city_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w) - AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w) - AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w) - AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w) - AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w) - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_WRITE(city_sound_bank_w) /* 7232 bankswitch */ - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void nemesis_state::sal_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd000, 0xd000).w(m_vlm, FUNC(vlm5030_device::data_w)); + map(0xe000, 0xe000).r(this, FUNC(nemesis_state::wd_r)); /* watchdog?? */ + map(0xf000, 0xf000).w(this, FUNC(nemesis_state::salamand_speech_start_w)); +} + +void nemesis_state::salamand_vlm_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x3fff).rom(); +} + +void nemesis_state::blkpnthr_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe000, 0xe000).r(this, FUNC(nemesis_state::wd_r)); /* watchdog?? */ +} + +void nemesis_state::city_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w)); + map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w)); + map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w)); + map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w)); + map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w)); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc000).w(this, FUNC(nemesis_state::city_sound_bank_w)); /* 7232 bankswitch */ + map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} /******************************************************************************/ -ADDRESS_MAP_START(nemesis_state::hcrash_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x05ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0") - AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("DSW1") - AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("TEST") - AM_RANGE(0x0c0008, 0x0c0009) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* watchdog probably */ - AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("IN0") - AM_RANGE(0x0c2000, 0x0c2001) AM_READ(konamigt_input_word_r) /* Konami GT control */ - AM_RANGE(0x0c2800, 0x0c280f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) // ??? - AM_RANGE(0x0c4000, 0x0c4001) AM_READ_PORT("IN1") AM_WRITE(selected_ip_word_w) - AM_RANGE(0x0c4002, 0x0c4003) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control. latches the value read previously */ - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") /* VRAM */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") - AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") - AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") - AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram") - AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x190000, 0x191fff) AM_RAM - AM_RANGE(0x190000, 0x1903ff) AM_SHARE("xscroll2") - AM_RANGE(0x190400, 0x1907ff) AM_SHARE("xscroll1") - AM_RANGE(0x190f00, 0x190f7f) AM_SHARE("yscroll1") - AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2") -ADDRESS_MAP_END +void nemesis_state::hcrash_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x05ffff).rom(); + map(0x080000, 0x083fff).ram(); + map(0x090000, 0x091fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0a0000, 0x0a0001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */ + map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0c0002, 0x0c0003).portr("DSW0"); + map(0x0c0004, 0x0c0005).portr("DSW1"); + map(0x0c0006, 0x0c0007).portr("TEST"); + map(0x0c0008, 0x0c0009).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* watchdog probably */ + map(0x0c000a, 0x0c000b).portr("IN0"); + map(0x0c2000, 0x0c2001).r(this, FUNC(nemesis_state::konamigt_input_word_r)); /* Konami GT control */ + map(0x0c2800, 0x0c280f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); // ??? + map(0x0c4000, 0x0c4001).portr("IN1").w(this, FUNC(nemesis_state::selected_ip_word_w)); + map(0x0c4002, 0x0c4003).r(this, FUNC(nemesis_state::selected_ip_word_r)).nopw(); /* WEC Le Mans 24 control. latches the value read previously */ + map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); /* VRAM */ + map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); + map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2"); + map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1"); + map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram"); + map(0x180000, 0x180fff).ram().share("spriteram"); + map(0x190000, 0x191fff).ram(); + map(0x190000, 0x1903ff).share("xscroll2"); + map(0x190400, 0x1907ff).share("xscroll1"); + map(0x190f00, 0x190f7f).share("yscroll1"); + map(0x190f80, 0x190fff).share("yscroll2"); +} /******************************************************************************/ diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp index 816434f4cf2..24bed3ec12d 100644 --- a/src/mame/drivers/neogeo.cpp +++ b/src/mame/drivers/neogeo.cpp @@ -1410,33 +1410,36 @@ READ16_MEMBER(neogeo_state::banked_vectors_r) * *************************************/ -ADDRESS_MAP_START(neogeo_state::neogeo_main_map) +void neogeo_state::neogeo_main_map(address_map &map) +{ - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM + map(0x100000, 0x10ffff).mirror(0x0f0000).ram(); /* some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too */ - AM_RANGE(0x300080, 0x300081) AM_MIRROR(0x01ff7e) AM_READ_PORT("TEST") - AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x00ff) - AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO/COIN") AM_WRITE8(audio_command_w, 0xff00) - AM_RANGE(0x360000, 0x37ffff) AM_READ(unmapped_r) - AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ_PORT("SYSTEM") - AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff) - AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(unmapped_r) - AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_DEVWRITE8("systemlatch", hc259_device, write_a3, 0x00ff) // BITW1 (system control registers) - AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(video_register_r) - AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(video_register_w) - AM_RANGE(0x3e0000, 0x3fffff) AM_READ(unmapped_r) - AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(paletteram_r, paletteram_w) - AM_RANGE(0x800000, 0x800fff) AM_READWRITE(memcard_r, memcard_w) - AM_RANGE(0xc00000, 0xc1ffff) AM_MIRROR(0x0e0000) AM_ROM AM_REGION("mainbios", 0) - AM_RANGE(0xd00000, 0xd0ffff) AM_MIRROR(0x0f0000) AM_RAM_WRITE(save_ram_w) AM_SHARE("saveram") - AM_RANGE(0xe00000, 0xffffff) AM_READ(unmapped_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(neogeo_state::main_map_slot) - AM_IMPORT_FROM( neogeo_main_map ) - AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r) -ADDRESS_MAP_END + map(0x300080, 0x300081).mirror(0x01ff7e).portr("TEST"); + map(0x300001, 0x300001).mirror(0x01fffe).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x320000, 0x320001).mirror(0x01fffe).portr("AUDIO/COIN"); + map(0x320000, 0x320000).mirror(0x01fffe).w(this, FUNC(neogeo_state::audio_command_w)); + map(0x360000, 0x37ffff).r(this, FUNC(neogeo_state::unmapped_r)); + map(0x380000, 0x380001).mirror(0x01fffe).portr("SYSTEM"); + map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(neogeo_state::io_control_w)).umask16(0x00ff); + map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(neogeo_state::unmapped_r)); + map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff); // BITW1 (system control registers) + map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(neogeo_state::video_register_r)); + map(0x3c0000, 0x3c000f).mirror(0x01fff0).w(this, FUNC(neogeo_state::video_register_w)); + map(0x3e0000, 0x3fffff).r(this, FUNC(neogeo_state::unmapped_r)); + map(0x400000, 0x401fff).mirror(0x3fe000).rw(this, FUNC(neogeo_state::paletteram_r), FUNC(neogeo_state::paletteram_w)); + map(0x800000, 0x800fff).rw(this, FUNC(neogeo_state::memcard_r), FUNC(neogeo_state::memcard_w)); + map(0xc00000, 0xc1ffff).mirror(0x0e0000).rom().region("mainbios", 0); + map(0xd00000, 0xd0ffff).mirror(0x0f0000).ram().w(this, FUNC(neogeo_state::save_ram_w)).share("saveram"); + map(0xe00000, 0xffffff).r(this, FUNC(neogeo_state::unmapped_r)); +} + + +void neogeo_state::main_map_slot(address_map &map) +{ + neogeo_main_map(map); + map(0x000000, 0x00007f).r(this, FUNC(neogeo_state::banked_vectors_r)); +} @@ -1448,26 +1451,28 @@ READ16_MEMBER(aes_state::aes_in2_r) return ret; } -ADDRESS_MAP_START(aes_state::aes_main_map) - AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r) - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM +void aes_state::aes_main_map(address_map &map) +{ + map(0x000000, 0x00007f).r(this, FUNC(aes_state::banked_vectors_r)); + map(0x100000, 0x10ffff).mirror(0x0f0000).ram(); // some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too - AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl1", neogeo_control_port_device, ctrl_r, 0xff00) - AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO") AM_WRITE8(audio_command_w, 0xff00) - AM_RANGE(0x340000, 0x340001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl2", neogeo_control_port_device, ctrl_r, 0xff00) - AM_RANGE(0x360000, 0x37ffff) AM_READ(unmapped_r) - AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ(aes_in2_r) - AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff) - AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(unmapped_r) - AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_DEVWRITE8("systemlatch", hc259_device, write_a3, 0x00ff) - AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(video_register_r) - AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(video_register_w) - AM_RANGE(0x3e0000, 0x3fffff) AM_READ(unmapped_r) - AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(paletteram_r, paletteram_w) - AM_RANGE(0x800000, 0x800fff) AM_READWRITE(memcard_r, memcard_w) - AM_RANGE(0xc00000, 0xc1ffff) AM_MIRROR(0x0e0000) AM_ROM AM_REGION("mainbios", 0) - AM_RANGE(0xd00000, 0xffffff) AM_READ(unmapped_r) -ADDRESS_MAP_END + map(0x300000, 0x300000).mirror(0x01fffe).r(m_ctrl1, FUNC(neogeo_control_port_device::ctrl_r)); + map(0x320000, 0x320001).mirror(0x01fffe).portr("AUDIO"); + map(0x320000, 0x320000).mirror(0x01fffe).w(this, FUNC(aes_state::audio_command_w)); + map(0x340000, 0x340000).mirror(0x01fffe).r(m_ctrl2, FUNC(neogeo_control_port_device::ctrl_r)); + map(0x360000, 0x37ffff).r(this, FUNC(aes_state::unmapped_r)); + map(0x380000, 0x380001).mirror(0x01fffe).r(this, FUNC(aes_state::aes_in2_r)); + map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(aes_state::io_control_w)).umask16(0x00ff); + map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(aes_state::unmapped_r)); + map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff); + map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(aes_state::video_register_r)); + map(0x3c0000, 0x3c000f).mirror(0x01fff0).w(this, FUNC(aes_state::video_register_w)); + map(0x3e0000, 0x3fffff).r(this, FUNC(aes_state::unmapped_r)); + map(0x400000, 0x401fff).mirror(0x3fe000).rw(this, FUNC(aes_state::paletteram_r), FUNC(aes_state::paletteram_w)); + map(0x800000, 0x800fff).rw(this, FUNC(aes_state::memcard_r), FUNC(aes_state::memcard_w)); + map(0xc00000, 0xc1ffff).mirror(0x0e0000).rom().region("mainbios", 0); + map(0xd00000, 0xffffff).r(this, FUNC(aes_state::unmapped_r)); +} /************************************* @@ -1476,14 +1481,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(neogeo_state::audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("audio_main") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audio_8000") - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("audio_c000") - AM_RANGE(0xe000, 0xefff) AM_ROMBANK("audio_e000") - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audio_f000") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void neogeo_state::audio_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("audio_main"); + map(0x8000, 0xbfff).bankr("audio_8000"); + map(0xc000, 0xdfff).bankr("audio_c000"); + map(0xe000, 0xefff).bankr("audio_e000"); + map(0xf000, 0xf7ff).bankr("audio_f000"); + map(0xf800, 0xffff).ram(); +} @@ -1493,13 +1499,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(neogeo_state::audio_io_map) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_SELECT(0x0010) AM_WRITE(audio_cpu_enable_nmi_w) - AM_RANGE(0x08, 0x0b) AM_MIRROR(0x00f0) AM_SELECT(0xff00) AM_READ(audio_cpu_bank_select_r) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void neogeo_state::audio_io_map(address_map &map) +{ + map(0x00, 0x00).mirror(0xff00).r(this, FUNC(neogeo_state::audio_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0x04, 0x07).mirror(0xff00).rw(m_ym, FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x08, 0x08).mirror(0xff00).select(0x0010).w(this, FUNC(neogeo_state::audio_cpu_enable_nmi_w)); + map(0x08, 0x0b).mirror(0x00f0).select(0xff00).r(this, FUNC(neogeo_state::audio_cpu_bank_select_r)); + map(0x0c, 0x0c).mirror(0xff00).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); +} diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp index 59a0f0e4a2d..d27770be1ab 100644 --- a/src/mame/drivers/neogeocd.cpp +++ b/src/mame/drivers/neogeocd.cpp @@ -889,31 +889,33 @@ MACHINE_RESET_MEMBER(ngcd_state,neocd) * *************************************/ -ADDRESS_MAP_START(ngcd_state::neocd_main_map) +void ngcd_state::neocd_main_map(address_map &map) +{ // AM_RANGE(0x000000, 0x00007f) AM_READ_BANK("vectors") // writes will fall through to area below - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_REGION("maincpu", 0x00000) - AM_RANGE(0x000000, 0x00007f) AM_READ(banked_vectors_r) - - AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl1", neogeo_control_port_device, ctrl_r, 0xff00) - AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO") AM_WRITE8(audio_command_w, 0xff00) - AM_RANGE(0x340000, 0x340001) AM_MIRROR(0x01fffe) AM_DEVREAD8("ctrl2", neogeo_control_port_device, ctrl_r, 0xff00) - AM_RANGE(0x360000, 0x37ffff) AM_READ(unmapped_r) - AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ(aes_in2_r) - AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff) - AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(unmapped_r) - AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_DEVWRITE8("systemlatch", hc259_device, write_a3, 0x00ff) - AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(video_register_r) - AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(video_register_w) - AM_RANGE(0x3e0000, 0x3fffff) AM_READ(unmapped_r) - AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(paletteram_r, paletteram_w) - AM_RANGE(0x800000, 0x803fff) AM_READWRITE(neocd_memcard_r, neocd_memcard_w) - AM_RANGE(0xc00000, 0xc7ffff) AM_MIRROR(0x080000) AM_ROM AM_REGION("mainbios", 0) - AM_RANGE(0xd00000, 0xdfffff) AM_READ(unmapped_r) - AM_RANGE(0xe00000, 0xefffff) AM_READWRITE8(neocd_transfer_r,neocd_transfer_w, 0xffff) - AM_RANGE(0xf00000, 0xfeffff) AM_READ(unmapped_r) - AM_RANGE(0xff0000, 0xff01ff) AM_READWRITE(neocd_control_r, neocd_control_w) // CDROM / DMA - AM_RANGE(0xff0200, 0xffffff) AM_READ(unmapped_r) -ADDRESS_MAP_END + map(0x000000, 0x1fffff).ram().region("maincpu", 0x00000); + map(0x000000, 0x00007f).r(this, FUNC(ngcd_state::banked_vectors_r)); + + map(0x300000, 0x300000).mirror(0x01fffe).r(m_ctrl1, FUNC(neogeo_control_port_device::ctrl_r)); + map(0x320000, 0x320001).mirror(0x01fffe).portr("AUDIO"); + map(0x320000, 0x320000).mirror(0x01fffe).w(this, FUNC(ngcd_state::audio_command_w)); + map(0x340000, 0x340000).mirror(0x01fffe).r(m_ctrl2, FUNC(neogeo_control_port_device::ctrl_r)); + map(0x360000, 0x37ffff).r(this, FUNC(ngcd_state::unmapped_r)); + map(0x380000, 0x380001).mirror(0x01fffe).r(this, FUNC(ngcd_state::aes_in2_r)); + map(0x380000, 0x38007f).mirror(0x01ff80).w(this, FUNC(ngcd_state::io_control_w)).umask16(0x00ff); + map(0x3a0000, 0x3a001f).mirror(0x01ffe0).r(this, FUNC(ngcd_state::unmapped_r)); + map(0x3a0000, 0x3a001f).mirror(0x01ffe0).w("systemlatch", FUNC(hc259_device::write_a3)).umask16(0x00ff); + map(0x3c0000, 0x3c0007).mirror(0x01fff8).r(this, FUNC(ngcd_state::video_register_r)); + map(0x3c0000, 0x3c000f).mirror(0x01fff0).w(this, FUNC(ngcd_state::video_register_w)); + map(0x3e0000, 0x3fffff).r(this, FUNC(ngcd_state::unmapped_r)); + map(0x400000, 0x401fff).mirror(0x3fe000).rw(this, FUNC(ngcd_state::paletteram_r), FUNC(ngcd_state::paletteram_w)); + map(0x800000, 0x803fff).rw(this, FUNC(ngcd_state::neocd_memcard_r), FUNC(ngcd_state::neocd_memcard_w)); + map(0xc00000, 0xc7ffff).mirror(0x080000).rom().region("mainbios", 0); + map(0xd00000, 0xdfffff).r(this, FUNC(ngcd_state::unmapped_r)); + map(0xe00000, 0xefffff).rw(this, FUNC(ngcd_state::neocd_transfer_r), FUNC(ngcd_state::neocd_transfer_w)); + map(0xf00000, 0xfeffff).r(this, FUNC(ngcd_state::unmapped_r)); + map(0xff0000, 0xff01ff).rw(this, FUNC(ngcd_state::neocd_control_r), FUNC(ngcd_state::neocd_control_w)); // CDROM / DMA + map(0xff0200, 0xffffff).r(this, FUNC(ngcd_state::unmapped_r)); +} /************************************* @@ -923,24 +925,26 @@ ADDRESS_MAP_END *************************************/ -ADDRESS_MAP_START(ngcd_state::neocd_audio_map) - AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("audiocpu", 0x00000) -ADDRESS_MAP_END +void ngcd_state::neocd_audio_map(address_map &map) +{ + map(0x0000, 0xffff).ram().region("audiocpu", 0x00000); +} -ADDRESS_MAP_START(ngcd_state::neocd_audio_io_map) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_SELECT(0x0010) AM_WRITE(audio_cpu_enable_nmi_w) +void ngcd_state::neocd_audio_io_map(address_map &map) +{ + map(0x00, 0x00).mirror(0xff00).r(this, FUNC(ngcd_state::audio_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::clear_w)); + map(0x04, 0x07).mirror(0xff00).rw(m_ym, FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x08, 0x08).mirror(0xff00).select(0x0010).w(this, FUNC(ngcd_state::audio_cpu_enable_nmi_w)); // banking reads are actually NOP on NeoCD? but some games still access them // AM_RANGE(0x08, 0x0b) AM_MIRROR(0x00f0) AM_SELECT(0xff00) AM_READ(audio_cpu_bank_select_r) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) + map(0x0c, 0x0c).mirror(0xff00).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); // ?? - AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_WRITENOP - AM_RANGE(0xc1, 0xc1) AM_MIRROR(0xff00) AM_WRITENOP -ADDRESS_MAP_END + map(0x80, 0x80).mirror(0xff00).nopw(); + map(0xc0, 0xc0).mirror(0xff00).nopw(); + map(0xc1, 0xc1).mirror(0xff00).nopw(); +} /************************************* diff --git a/src/mame/drivers/neoprint.cpp b/src/mame/drivers/neoprint.cpp index 8e8de5f18b5..db7c9ffcd09 100644 --- a/src/mame/drivers/neoprint.cpp +++ b/src/mame/drivers/neoprint.cpp @@ -247,26 +247,27 @@ WRITE8_MEMBER(neoprint_state::audio_result_w) m_audio_result = data; } -ADDRESS_MAP_START(neoprint_state::neoprint_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void neoprint_state::neoprint_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); /* AM_RANGE(0x100000, 0x17ffff) multi-cart or banking, some writes points here if anything lies there too */ - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("npvidram") - AM_RANGE(0x500000, 0x51ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x600001) AM_READWRITE8(neoprint_audio_result_r, audio_command_w, 0xff00) - AM_RANGE(0x600002, 0x600003) AM_READWRITE8(neoprint_calendar_r, neoprint_calendar_w, 0xff00) - AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE(0x600006, 0x600007) AM_READ_PORT("IN") AM_WRITENOP - AM_RANGE(0x600008, 0x600009) AM_READ_PORT("DSW1") - AM_RANGE(0x60000a, 0x60000b) AM_READ8(neoprint_unk_r,0xff00) - AM_RANGE(0x60000c, 0x60000d) AM_READ_PORT("DSW2") - AM_RANGE(0x60000e, 0x60000f) AM_WRITENOP - - AM_RANGE(0x700000, 0x70001b) AM_RAM AM_SHARE("npvidregs") - - AM_RANGE(0x70001e, 0x70001f) AM_WRITENOP //watchdog -ADDRESS_MAP_END + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x30ffff).ram().share("nvram"); + map(0x400000, 0x43ffff).ram().share("npvidram"); + map(0x500000, 0x51ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x600000, 0x600000).rw(this, FUNC(neoprint_state::neoprint_audio_result_r), FUNC(neoprint_state::audio_command_w)); + map(0x600002, 0x600002).rw(this, FUNC(neoprint_state::neoprint_calendar_r), FUNC(neoprint_state::neoprint_calendar_w)); + map(0x600004, 0x600005).portr("SYSTEM").nopw(); + map(0x600006, 0x600007).portr("IN").nopw(); + map(0x600008, 0x600009).portr("DSW1"); + map(0x60000a, 0x60000a).r(this, FUNC(neoprint_state::neoprint_unk_r)); + map(0x60000c, 0x60000d).portr("DSW2"); + map(0x60000e, 0x60000f).nopw(); + + map(0x700000, 0x70001b).ram().share("npvidregs"); + + map(0x70001e, 0x70001f).nopw(); //watchdog +} WRITE16_MEMBER(neoprint_state::nprsp_palette_w) { @@ -315,26 +316,28 @@ READ16_MEMBER(neoprint_state::rom_window_r) return rom[offset | 0x80000/2 | m_bank_val*0x40000/2]; } -ADDRESS_MAP_START(neoprint_state::nprsp_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_READ(rom_window_r) - AM_RANGE(0x200000, 0x200001) AM_READWRITE8(neoprint_audio_result_r, audio_command_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_READWRITE8(neoprint_calendar_r, neoprint_calendar_w, 0xff00) - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN") AM_WRITENOP - AM_RANGE(0x200008, 0x200009) AM_READ_PORT("DSW1") AM_WRITE8(nprsp_bank_w,0xff00) - AM_RANGE(0x20000a, 0x20000b) AM_READ8(neoprint_unk_r,0xff00) - AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("DSW2") - AM_RANGE(0x20000e, 0x20000f) AM_WRITENOP - - AM_RANGE(0x240000, 0x24001b) AM_RAM AM_SHARE("npvidregs") - AM_RANGE(0x24001e, 0x24001f) AM_WRITENOP //watchdog - - AM_RANGE(0x300000, 0x33ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x380000, 0x38ffff) AM_RAM - AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("npvidram") - AM_RANGE(0x500000, 0x57ffff) AM_RAM_WRITE(nprsp_palette_w) AM_SHARE("paletteram") -ADDRESS_MAP_END +void neoprint_state::nprsp_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x0fffff).r(this, FUNC(neoprint_state::rom_window_r)); + map(0x200000, 0x200000).rw(this, FUNC(neoprint_state::neoprint_audio_result_r), FUNC(neoprint_state::audio_command_w)); + map(0x200002, 0x200002).rw(this, FUNC(neoprint_state::neoprint_calendar_r), FUNC(neoprint_state::neoprint_calendar_w)); + map(0x200004, 0x200005).portr("SYSTEM").nopw(); + map(0x200006, 0x200007).portr("IN").nopw(); + map(0x200008, 0x200009).portr("DSW1"); + map(0x200008, 0x200008).w(this, FUNC(neoprint_state::nprsp_bank_w)); + map(0x20000a, 0x20000a).r(this, FUNC(neoprint_state::neoprint_unk_r)); + map(0x20000c, 0x20000d).portr("DSW2"); + map(0x20000e, 0x20000f).nopw(); + + map(0x240000, 0x24001b).ram().share("npvidregs"); + map(0x24001e, 0x24001f).nopw(); //watchdog + + map(0x300000, 0x33ffff).ram().share("nvram"); + map(0x380000, 0x38ffff).ram(); + map(0x400000, 0x43ffff).ram().share("npvidram"); + map(0x500000, 0x57ffff).ram().w(this, FUNC(neoprint_state::nprsp_palette_w)).share("paletteram"); +} /************************************* * @@ -342,14 +345,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(neoprint_state::neoprint_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM//AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_MAIN_BANK) +void neoprint_state::neoprint_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom();//AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_MAIN_BANK) // AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 3) // AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 2) // AM_RANGE(0xe000, 0xefff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 1) // AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK + 0) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xf800, 0xffff).ram(); +} @@ -359,18 +363,19 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(neoprint_state::neoprint_audio_io_map) +void neoprint_state::neoprint_audio_io_map(address_map &map) +{ /*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, audio_cpu_clear_nmi_w);*/ /* may not and NMI clear */ - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_WRITENOP - AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) + map(0x00, 0x00).mirror(0xff00).r(this, FUNC(neoprint_state::audio_command_r)).nopw(); + map(0x04, 0x07).mirror(0xff00).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); // AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) /* write - NMI enable / acknowledge? (the data written doesn't matter) */ // AM_RANGE(0x08, 0x08) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_f000_f7ff_r) // AM_RANGE(0x09, 0x09) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_e000_efff_r) // AM_RANGE(0x0a, 0x0a) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_c000_dfff_r) // AM_RANGE(0x0b, 0x0b) AM_SELECT(0xfff0) AM_READ(audio_cpu_bank_select_8000_bfff_r) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_WRITE(audio_result_w) + map(0x0c, 0x0c).mirror(0xff00).w(this, FUNC(neoprint_state::audio_result_w)); // AM_RANGE(0x18, 0x18) AM_MIRROR(0xff00) /* write - NMI disable? (the data written doesn't matter) */ -ADDRESS_MAP_END +} static INPUT_PORTS_START( neoprint ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/neptunp2.cpp b/src/mame/drivers/neptunp2.cpp index 7042f8c3077..280e2311f4a 100644 --- a/src/mame/drivers/neptunp2.cpp +++ b/src/mame/drivers/neptunp2.cpp @@ -54,25 +54,27 @@ READ8_MEMBER( neptunp2_state::test_r ) return machine().rand(); } -ADDRESS_MAP_START(neptunp2_state::neptunp2_map) - AM_RANGE(0x00000, 0xbffff) AM_ROM - AM_RANGE(0xe0000, 0xeffff) AM_RAM +void neptunp2_state::neptunp2_map(address_map &map) +{ + map(0x00000, 0xbffff).rom(); + map(0xe0000, 0xeffff).ram(); - AM_RANGE(0xd0000, 0xd7fff) AM_RAM //videoram - AM_RANGE(0xdb004, 0xdb007) AM_RAM - AM_RANGE(0xdb00c, 0xdb00f) AM_RAM + map(0xd0000, 0xd7fff).ram(); //videoram + map(0xdb004, 0xdb007).ram(); + map(0xdb00c, 0xdb00f).ram(); - AM_RANGE(0xff806, 0xff806) AM_READ(test_r) - AM_RANGE(0xff810, 0xff810) AM_READ(test_r) - AM_RANGE(0xff812, 0xff812) AM_READ(test_r) + map(0xff806, 0xff806).r(this, FUNC(neptunp2_state::test_r)); + map(0xff810, 0xff810).r(this, FUNC(neptunp2_state::test_r)); + map(0xff812, 0xff812).r(this, FUNC(neptunp2_state::test_r)); - AM_RANGE(0xff980, 0xff980) AM_WRITENOP + map(0xff980, 0xff980).nopw(); - AM_RANGE(0xffff0, 0xfffff) AM_ROM -ADDRESS_MAP_END + map(0xffff0, 0xfffff).rom(); +} -ADDRESS_MAP_START(neptunp2_state::neptunp2_io) -ADDRESS_MAP_END +void neptunp2_state::neptunp2_io(address_map &map) +{ +} static INPUT_PORTS_START( neptunp2 ) diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp index da2ba6a2be3..d99a7e27b80 100644 --- a/src/mame/drivers/nes.cpp +++ b/src/mame/drivers/nes.cpp @@ -26,16 +26,17 @@ WRITE8_MEMBER(nes_state::nes_vh_sprite_dma_w) m_ppu->spriteram_dma(space, data); } -ADDRESS_MAP_START(nes_state::nes_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) /* RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */ - AM_RANGE(0x4014, 0x4014) AM_WRITE(nes_vh_sprite_dma_w) /* stupid address space hole */ - AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w) /* IN0 - input port 1 */ - AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) /* IN1 - input port 2 */ +void nes_state::nes_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().mirror(0x1800); /* RAM */ + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */ + map(0x4014, 0x4014).w(this, FUNC(nes_state::nes_vh_sprite_dma_w)); /* stupid address space hole */ + map(0x4016, 0x4016).rw(this, FUNC(nes_state::nes_in0_r), FUNC(nes_state::nes_in0_w)); /* IN0 - input port 1 */ + map(0x4017, 0x4017).r(this, FUNC(nes_state::nes_in1_r)); /* IN1 - input port 2 */ // 0x4100-0x5fff -> LOW HANDLER defined on a pcb base // 0x6000-0x7fff -> MID HANDLER defined on a pcb base // 0x8000-0xffff -> HIGH HANDLER defined on a pcb base -ADDRESS_MAP_END +} static INPUT_PORTS_START( nes ) // input devices go through slot options diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp index 4e58a69da87..46139cf7d14 100644 --- a/src/mame/drivers/nes_vt.cpp +++ b/src/mame/drivers/nes_vt.cpp @@ -1171,137 +1171,149 @@ WRITE8_MEMBER(nes_vt_state::vt03_4034_w) m_vdma_ctrl = data; } -ADDRESS_MAP_START(nes_vt_state::nes_vt_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_MASK(0x001F) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */ +void nes_vt_state::nes_vt_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x3fff).mask(0x001F).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */ - AM_RANGE(0x4000, 0x4013) AM_DEVREADWRITE("apu", nesapu_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_READ(psg1_4014_r) AM_WRITE(nes_vh_sprite_dma_w) - AM_RANGE(0x4015, 0x4015) AM_READWRITE(psg1_4015_r, psg1_4015_w) /* PSG status / first control register */ - AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w) - AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) AM_WRITE(psg1_4017_w) + map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write)); + map(0x4014, 0x4014).r(this, FUNC(nes_vt_state::psg1_4014_r)).w(this, FUNC(nes_vt_state::nes_vh_sprite_dma_w)); + map(0x4015, 0x4015).rw(this, FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */ + map(0x4016, 0x4016).rw(this, FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w)); + map(0x4017, 0x4017).r(this, FUNC(nes_vt_state::nes_in1_r)).w(this, FUNC(nes_vt_state::psg1_4017_w)); - AM_RANGE(0x4034, 0x4034) AM_WRITE(vt03_4034_w) + map(0x4034, 0x4034).w(this, FUNC(nes_vt_state::vt03_4034_w)); - AM_RANGE(0x4100, 0x410b) AM_READ(vt03_410x_r) AM_WRITE(vt03_410x_w) + map(0x4100, 0x410b).r(this, FUNC(nes_vt_state::vt03_410x_r)).w(this, FUNC(nes_vt_state::vt03_410x_w)); - AM_RANGE(0x8000, 0xffff) AM_DEVICE("prg", address_map_bank_device, amap8) - AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_w) - AM_RANGE(0x6000, 0x7fff) AM_RAM -ADDRESS_MAP_END + map(0x8000, 0xffff).m(m_prg, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_w)); + map(0x6000, 0x7fff).ram(); +} /* Some later VT models have more RAM */ -ADDRESS_MAP_START(nes_vt_state::nes_vt_xx_map) - AM_IMPORT_FROM(nes_vt_map) - AM_RANGE(0x0800, 0x0fff) AM_RAM -ADDRESS_MAP_END +void nes_vt_state::nes_vt_xx_map(address_map &map) +{ + nes_vt_map(map); + map(0x0800, 0x0fff).ram(); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_hum_map) - AM_IMPORT_FROM(nes_vt_map) - AM_RANGE(0x4100, 0x410b) AM_WRITE(vt03_410x_hum_w) - AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_hum_w) -ADDRESS_MAP_END +void nes_vt_state::nes_vt_hum_map(address_map &map) +{ + nes_vt_map(map); + map(0x4100, 0x410b).w(this, FUNC(nes_vt_state::vt03_410x_hum_w)); + map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_hum_w)); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_pjoy_map) - AM_IMPORT_FROM(nes_vt_map) - AM_RANGE(0x4100, 0x410b) AM_WRITE(vt03_410x_pjoy_w) - AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_pjoy_w) -ADDRESS_MAP_END +void nes_vt_state::nes_vt_pjoy_map(address_map &map) +{ + nes_vt_map(map); + map(0x4100, 0x410b).w(this, FUNC(nes_vt_state::vt03_410x_pjoy_w)); + map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_pjoy_w)); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_sp69_map) - AM_IMPORT_FROM(nes_vt_map) - AM_RANGE(0x4100, 0x410b) AM_WRITE(vt03_410x_sp69_w) - AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_sp69_w) -ADDRESS_MAP_END +void nes_vt_state::nes_vt_sp69_map(address_map &map) +{ + nes_vt_map(map); + map(0x4100, 0x410b).w(this, FUNC(nes_vt_state::vt03_410x_sp69_w)); + map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_sp69_w)); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_cy_map) - AM_IMPORT_FROM(nes_vt_xx_map) - AM_RANGE(0x41b0, 0x41bf) AM_READ(vt03_41bx_r) AM_WRITE(vt03_41bx_w) - AM_RANGE(0x48a0, 0x48af) AM_READ(vt03_48ax_r) AM_WRITE(vt03_48ax_w) - AM_RANGE(0x4130, 0x4136) AM_READ(vt03_413x_r) AM_WRITE(vt03_413x_w) - AM_RANGE(0x414F, 0x414F) AM_READ(vt03_414f_r) - AM_RANGE(0x415C, 0x415C ) AM_READ(vt03_415c_r) +void nes_vt_state::nes_vt_cy_map(address_map &map) +{ + nes_vt_xx_map(map); + map(0x41b0, 0x41bf).r(this, FUNC(nes_vt_state::vt03_41bx_r)).w(this, FUNC(nes_vt_state::vt03_41bx_w)); + map(0x48a0, 0x48af).r(this, FUNC(nes_vt_state::vt03_48ax_r)).w(this, FUNC(nes_vt_state::vt03_48ax_w)); + map(0x4130, 0x4136).r(this, FUNC(nes_vt_state::vt03_413x_r)).w(this, FUNC(nes_vt_state::vt03_413x_w)); + map(0x414F, 0x414F).r(this, FUNC(nes_vt_state::vt03_414f_r)); + map(0x415C, 0x415C).r(this, FUNC(nes_vt_state::vt03_415c_r)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_bt_map) - AM_IMPORT_FROM(nes_vt_xx_map) - AM_RANGE(0x412c, 0x412c) AM_WRITE(vt03_412c_w) -ADDRESS_MAP_END +void nes_vt_state::nes_vt_bt_map(address_map &map) +{ + nes_vt_xx_map(map); + map(0x412c, 0x412c).w(this, FUNC(nes_vt_state::vt03_412c_w)); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_hh_map) - AM_RANGE(0x0000, 0x1fff) AM_MASK(0x0fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */ +void nes_vt_state::nes_vt_hh_map(address_map &map) +{ + map(0x0000, 0x1fff).mask(0x0fff).ram(); + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */ - AM_RANGE(0x4000, 0x4013) AM_DEVREADWRITE("apu", nesapu_device, read, write) - AM_RANGE(0x4015, 0x4015) AM_READWRITE(psg1_4015_r, psg1_4015_w) /* PSG status / first control register */ - AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w) - AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) AM_WRITE(psg1_4017_w) + map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write)); + map(0x4015, 0x4015).rw(this, FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */ + map(0x4016, 0x4016).rw(this, FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w)); + map(0x4017, 0x4017).r(this, FUNC(nes_vt_state::nes_in1_r)).w(this, FUNC(nes_vt_state::psg1_4017_w)); - AM_RANGE(0x4100, 0x410b) AM_READ(vt03_410x_r) AM_WRITE(vt03_410x_w) + map(0x4100, 0x410b).r(this, FUNC(nes_vt_state::vt03_410x_r)).w(this, FUNC(nes_vt_state::vt03_410x_w)); - AM_RANGE(0x8000, 0xffff) AM_DEVICE("prg", address_map_bank_device, amap8) - AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_w) + map(0x8000, 0xffff).m(m_prg, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_w)); - AM_RANGE(0x4034, 0x4034) AM_WRITE(vt03_4034_w) - AM_RANGE(0x4014, 0x4014) AM_READ(psg1_4014_r) AM_WRITE(vt_hh_sprite_dma_w) + map(0x4034, 0x4034).w(this, FUNC(nes_vt_state::vt03_4034_w)); + map(0x4014, 0x4014).r(this, FUNC(nes_vt_state::psg1_4014_r)).w(this, FUNC(nes_vt_state::vt_hh_sprite_dma_w)); - AM_RANGE(0x414A, 0x414A) AM_READ(vthh_414a_r) - AM_RANGE(0x411d, 0x411d) AM_WRITE(vtfp_411d_w) + map(0x414A, 0x414A).r(this, FUNC(nes_vt_state::vthh_414a_r)); + map(0x411d, 0x411d).w(this, FUNC(nes_vt_state::vtfp_411d_w)); - AM_RANGE(0x6000, 0x7fff) AM_RAM -ADDRESS_MAP_END + map(0x6000, 0x7fff).ram(); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_dg_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) /* PPU registers */ +void nes_vt_state::nes_vt_dg_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); /* PPU registers */ - AM_RANGE(0x4000, 0x4013) AM_DEVREADWRITE("apu", nesapu_device, read, write) - AM_RANGE(0x4015, 0x4015) AM_READWRITE(psg1_4015_r, psg1_4015_w) /* PSG status / first control register */ - AM_RANGE(0x4016, 0x4016) AM_READWRITE(nes_in0_r, nes_in0_w) - AM_RANGE(0x4017, 0x4017) AM_READ(nes_in1_r) AM_WRITE(psg1_4017_w) + map(0x4000, 0x4013).rw(m_apu, FUNC(nesapu_device::read), FUNC(nesapu_device::write)); + map(0x4015, 0x4015).rw(this, FUNC(nes_vt_state::psg1_4015_r), FUNC(nes_vt_state::psg1_4015_w)); /* PSG status / first control register */ + map(0x4016, 0x4016).rw(this, FUNC(nes_vt_state::nes_in0_r), FUNC(nes_vt_state::nes_in0_w)); + map(0x4017, 0x4017).r(this, FUNC(nes_vt_state::nes_in1_r)).w(this, FUNC(nes_vt_state::psg1_4017_w)); - AM_RANGE(0x4100, 0x410b) AM_READ(vt03_410x_r) AM_WRITE(vt03_410x_w) + map(0x4100, 0x410b).r(this, FUNC(nes_vt_state::vt03_410x_r)).w(this, FUNC(nes_vt_state::vt03_410x_w)); - AM_RANGE(0x411c, 0x411c) AM_WRITE(vt03_411c_w) + map(0x411c, 0x411c).w(this, FUNC(nes_vt_state::vt03_411c_w)); - AM_RANGE(0x8000, 0xffff) AM_DEVICE("prg", address_map_bank_device, amap8) - AM_RANGE(0x8000, 0xffff) AM_WRITE(vt03_8000_w) + map(0x8000, 0xffff).m(m_prg, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xffff).w(this, FUNC(nes_vt_state::vt03_8000_w)); - AM_RANGE(0x4034, 0x4034) AM_WRITE(vt03_4034_w) - AM_RANGE(0x4014, 0x4014) AM_READ(psg1_4014_r) AM_WRITE(nes_vh_sprite_dma_w) - AM_RANGE(0x6000, 0x7fff) AM_RAM -ADDRESS_MAP_END + map(0x4034, 0x4034).w(this, FUNC(nes_vt_state::vt03_4034_w)); + map(0x4014, 0x4014).r(this, FUNC(nes_vt_state::psg1_4014_r)).w(this, FUNC(nes_vt_state::nes_vh_sprite_dma_w)); + map(0x6000, 0x7fff).ram(); +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_fp_map) - AM_IMPORT_FROM(nes_vt_hh_map) - AM_RANGE(0x411e, 0x411e) AM_WRITE(vtfp_411e_w) - AM_RANGE(0x4a00, 0x4a00) AM_WRITE(vtfp_4a00_w) - AM_RANGE(0x412c, 0x412c) AM_WRITE(vtfp_412c_w) - AM_RANGE(0x412d, 0x412d) AM_READ(vtfp_412d_r) - AM_RANGE(0x4242, 0x4242) AM_WRITE(vtfp_4242_w) - AM_RANGE(0x4119, 0x4119) AM_READ(vtfp_4119_r) +void nes_vt_state::nes_vt_fp_map(address_map &map) +{ + nes_vt_hh_map(map); + map(0x411e, 0x411e).w(this, FUNC(nes_vt_state::vtfp_411e_w)); + map(0x4a00, 0x4a00).w(this, FUNC(nes_vt_state::vtfp_4a00_w)); + map(0x412c, 0x412c).w(this, FUNC(nes_vt_state::vtfp_412c_w)); + map(0x412d, 0x412d).r(this, FUNC(nes_vt_state::vtfp_412d_r)); + map(0x4242, 0x4242).w(this, FUNC(nes_vt_state::vtfp_4242_w)); + map(0x4119, 0x4119).r(this, FUNC(nes_vt_state::vtfp_4119_r)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(nes_vt_state::nes_vt_fa_map) +void nes_vt_state::nes_vt_fa_map(address_map &map) +{ - AM_IMPORT_FROM(nes_vt_dg_map) + nes_vt_dg_map(map); - AM_RANGE(0x412c, 0x412c) AM_READ(vtfa_412c_r) AM_WRITE(vtfa_412c_w) - AM_RANGE(0x4242, 0x4242) AM_WRITE(vtfp_4242_w) + map(0x412c, 0x412c).r(this, FUNC(nes_vt_state::vtfa_412c_r)).w(this, FUNC(nes_vt_state::vtfa_412c_w)); + map(0x4242, 0x4242).w(this, FUNC(nes_vt_state::vtfp_4242_w)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(nes_vt_state::prg_map) - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("prg_bank0") - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("prg_bank1") - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("prg_bank2") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("prg_bank3") -ADDRESS_MAP_END +void nes_vt_state::prg_map(address_map &map) +{ + map(0x0000, 0x1fff).bankr("prg_bank0"); + map(0x2000, 0x3fff).bankr("prg_bank1"); + map(0x4000, 0x5fff).bankr("prg_bank2"); + map(0x6000, 0x7fff).bankr("prg_bank3"); +} WRITE_LINE_MEMBER(nes_vt_state::apu_irq) { diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp index 362ab5b94d9..62af2714b16 100644 --- a/src/mame/drivers/newbrain.cpp +++ b/src/mame/drivers/newbrain.cpp @@ -577,20 +577,22 @@ READ_LINE_MEMBER( newbrain_state::tdi_r ) // ADDRESS_MAP( newbrain_mreq ) //------------------------------------------------- -ADDRESS_MAP_START(newbrain_state::newbrain_mreq) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w) -ADDRESS_MAP_END +void newbrain_state::newbrain_mreq(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(newbrain_state::mreq_r), FUNC(newbrain_state::mreq_w)); +} //------------------------------------------------- // ADDRESS_MAP( newbrain_iorq ) //------------------------------------------------- -ADDRESS_MAP_START(newbrain_state::newbrain_iorq) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(iorq_r, iorq_w) -ADDRESS_MAP_END +void newbrain_state::newbrain_iorq(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(newbrain_state::iorq_r), FUNC(newbrain_state::iorq_w)); +} diff --git a/src/mame/drivers/news.cpp b/src/mame/drivers/news.cpp index 2f3df09ce25..076e2eb8741 100644 --- a/src/mame/drivers/news.cpp +++ b/src/mame/drivers/news.cpp @@ -24,17 +24,18 @@ driver by David Haywood #include "speaker.h" -ADDRESS_MAP_START(news_state::news_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* 4000-7fff is written to during startup, probably leftover code */ - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(news_fgram_w) AM_SHARE("fgram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(news_bgram_w) AM_SHARE("bgram") - AM_RANGE(0x9000, 0x91ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("INPUTS") - AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc003, 0xc003) AM_WRITE(news_bgpic_w) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void news_state::news_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* 4000-7fff is written to during startup, probably leftover code */ + map(0x8000, 0x87ff).ram().w(this, FUNC(news_state::news_fgram_w)).share("fgram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(news_state::news_bgram_w)).share("bgram"); + map(0x9000, 0x91ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xc000, 0xc000).portr("DSW"); + map(0xc001, 0xc001).portr("INPUTS"); + map(0xc002, 0xc002).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc003, 0xc003).w(this, FUNC(news_state::news_bgpic_w)); + map(0xe000, 0xffff).ram(); +} static INPUT_PORTS_START( news ) diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp index d6730d13c0f..f442d0f54ce 100644 --- a/src/mame/drivers/next.cpp +++ b/src/mame/drivers/next.cpp @@ -892,36 +892,37 @@ WRITE_LINE_MEMBER(next_state::vblank_w) } } -ADDRESS_MAP_START(next_state::next_mem) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x01000000, 0x0101ffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x02000000, 0x020001ff) AM_MIRROR(0x300200) AM_READWRITE(dma_ctrl_r, dma_ctrl_w) - AM_RANGE(0x02004000, 0x020041ff) AM_MIRROR(0x300200) AM_READWRITE(dma_regs_r, dma_regs_w) - AM_RANGE(0x02006000, 0x0200600f) AM_MIRROR(0x300000) AM_DEVICE8("net", mb8795_device, map, 0xffffffff) +void next_state::next_mem(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom().region("user1", 0); + map(0x01000000, 0x0101ffff).rom().region("user1", 0); + map(0x02000000, 0x020001ff).mirror(0x300200).rw(this, FUNC(next_state::dma_ctrl_r), FUNC(next_state::dma_ctrl_w)); + map(0x02004000, 0x020041ff).mirror(0x300200).rw(this, FUNC(next_state::dma_regs_r), FUNC(next_state::dma_regs_w)); + map(0x02006000, 0x0200600f).mirror(0x300000).m(net, FUNC(mb8795_device::map)); // AM_RANGE(0x02006010, 0x02006013) AM_MIRROR(0x300000) memory timing - AM_RANGE(0x02007000, 0x02007003) AM_MIRROR(0x300000) AM_READ(irq_status_r) - AM_RANGE(0x02007800, 0x02007803) AM_MIRROR(0x300000) AM_READWRITE(irq_mask_r,irq_mask_w) - AM_RANGE(0x02008000, 0x02008003) AM_MIRROR(0x300000) AM_READ(dsp_r) - AM_RANGE(0x0200c000, 0x0200c003) AM_MIRROR(0x300000) AM_READ(scr1_r) - AM_RANGE(0x0200c800, 0x0200c803) AM_MIRROR(0x300000) AM_READ(rom_map_r) - AM_RANGE(0x0200d000, 0x0200d003) AM_MIRROR(0x300000) AM_READWRITE(scr2_r,scr2_w) + map(0x02007000, 0x02007003).mirror(0x300000).r(this, FUNC(next_state::irq_status_r)); + map(0x02007800, 0x02007803).mirror(0x300000).rw(this, FUNC(next_state::irq_mask_r), FUNC(next_state::irq_mask_w)); + map(0x02008000, 0x02008003).mirror(0x300000).r(this, FUNC(next_state::dsp_r)); + map(0x0200c000, 0x0200c003).mirror(0x300000).r(this, FUNC(next_state::scr1_r)); + map(0x0200c800, 0x0200c803).mirror(0x300000).r(this, FUNC(next_state::rom_map_r)); + map(0x0200d000, 0x0200d003).mirror(0x300000).rw(this, FUNC(next_state::scr2_r), FUNC(next_state::scr2_w)); // AM_RANGE(0x0200d800, 0x0200d803) AM_MIRROR(0x300000) RMTINT - AM_RANGE(0x0200e000, 0x0200e00b) AM_MIRROR(0x300000) AM_DEVICE("keyboard", nextkbd_device, amap) + map(0x0200e000, 0x0200e00b).mirror(0x300000).m(keyboard, FUNC(nextkbd_device::amap)); // AM_RANGE(0x0200f000, 0x0200f003) AM_MIRROR(0x300000) printer // AM_RANGE(0x02010000, 0x02010003) AM_MIRROR(0x300000) brightness - AM_RANGE(0x02012000, 0x0201201f) AM_MIRROR(0x300000) AM_DEVICE8("mo", nextmo_device, map, 0xffffffff) - AM_RANGE(0x02014000, 0x0201400f) AM_MIRROR(0x300000) AM_DEVICE8("scsibus:7:ncr5390", ncr5390_device, map, 0xffffffff) - AM_RANGE(0x02014020, 0x02014023) AM_MIRROR(0x300000) AM_READWRITE(scsictrl_r, scsictrl_w) - AM_RANGE(0x02016000, 0x02016003) AM_MIRROR(0x300000) AM_READWRITE(timer_data_r, timer_data_w) - AM_RANGE(0x02016004, 0x02016007) AM_MIRROR(0x300000) AM_READWRITE(timer_ctrl_r, timer_ctrl_w) - AM_RANGE(0x02018000, 0x02018003) AM_MIRROR(0x300000) AM_DEVREADWRITE8("scc", scc8530_t, reg_r, reg_w, 0xffffffff) + map(0x02012000, 0x0201201f).mirror(0x300000).m(mo, FUNC(nextmo_device::map)); + map(0x02014000, 0x0201400f).mirror(0x300000).m(scsi, FUNC(ncr5390_device::map)); + map(0x02014020, 0x02014023).mirror(0x300000).rw(this, FUNC(next_state::scsictrl_r), FUNC(next_state::scsictrl_w)); + map(0x02016000, 0x02016003).mirror(0x300000).rw(this, FUNC(next_state::timer_data_r), FUNC(next_state::timer_data_w)); + map(0x02016004, 0x02016007).mirror(0x300000).rw(this, FUNC(next_state::timer_ctrl_r), FUNC(next_state::timer_ctrl_w)); + map(0x02018000, 0x02018003).mirror(0x300000).rw(scc, FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w)); // AM_RANGE(0x02018004, 0x02018007) AM_MIRROR(0x300000) SCC CLK // AM_RANGE(0x02018190, 0x02018197) AM_MIRROR(0x300000) warp 9c DRAM timing // AM_RANGE(0x02018198, 0x0201819f) AM_MIRROR(0x300000) warp 9c VRAM timing - AM_RANGE(0x0201a000, 0x0201a003) AM_MIRROR(0x300000) AM_READ(event_counter_r) // EVENTC + map(0x0201a000, 0x0201a003).mirror(0x300000).r(this, FUNC(next_state::event_counter_r)); // EVENTC // AM_RANGE(0x020c0000, 0x020c0004) AM_MIRROR(0x300000) BMAP - AM_RANGE(0x020c0030, 0x020c0037) AM_MIRROR(0x300000) AM_READWRITE(phy_r, phy_w) - AM_RANGE(0x04000000, 0x07ffffff) AM_RAM //work ram + map(0x020c0030, 0x020c0037).mirror(0x300000).rw(this, FUNC(next_state::phy_r), FUNC(next_state::phy_w)); + map(0x04000000, 0x07ffffff).ram(); //work ram // AM_RANGE(0x0c000000, 0x0c03ffff) video RAM w A+B-AB function // AM_RANGE(0x0d000000, 0x0d03ffff) video RAM w (1-A)B function // AM_RANGE(0x0e000000, 0x0e03ffff) video RAM w ceil(A+B) function @@ -930,40 +931,46 @@ ADDRESS_MAP_START(next_state::next_mem) // AM_RANGE(0x14000000, 0x1403ffff) main RAM w (1-A)B function // AM_RANGE(0x18000000, 0x1803ffff) main RAM w ceil(A+B) function // AM_RANGE(0x1c000000, 0x1c03ffff) main RAM w AB function -ADDRESS_MAP_END - -ADDRESS_MAP_START(next_state::next_0b_m_nofdc_mem) - AM_IMPORT_FROM(next_mem) - AM_RANGE(0x0b000000, 0x0b03ffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(next_state::next_fdc_mem) - AM_IMPORT_FROM(next_mem) - AM_RANGE(0x02014100, 0x02014107) AM_MIRROR(0x300000) AM_DEVICE8("fdc", n82077aa_device, map, 0xffffffff) - AM_RANGE(0x02014108, 0x0201410b) AM_MIRROR(0x300000) AM_READWRITE(fdc_control_r, fdc_control_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(next_state::next_0b_m_mem) - AM_IMPORT_FROM(next_fdc_mem) - AM_RANGE(0x0b000000, 0x0b03ffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(next_state::next_0c_m_mem) - AM_IMPORT_FROM(next_fdc_mem) - AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(next_state::next_0c_c_mem) - AM_IMPORT_FROM(next_fdc_mem) - AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x02018180, 0x02018183) AM_MIRROR(0x300000) AM_WRITE8(ramdac_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(next_state::next_2c_c_mem) - AM_IMPORT_FROM(next_fdc_mem) - AM_RANGE(0x2c000000, 0x2c1fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x02018180, 0x02018183) AM_MIRROR(0x300000) AM_WRITE8(ramdac_w, 0xffffffff) -ADDRESS_MAP_END +} + +void next_state::next_0b_m_nofdc_mem(address_map &map) +{ + next_mem(map); + map(0x0b000000, 0x0b03ffff).ram().share("vram"); +} + +void next_state::next_fdc_mem(address_map &map) +{ + next_mem(map); + map(0x02014100, 0x02014107).mirror(0x300000).m(fdc, FUNC(n82077aa_device::map)); + map(0x02014108, 0x0201410b).mirror(0x300000).rw(this, FUNC(next_state::fdc_control_r), FUNC(next_state::fdc_control_w)); +} + +void next_state::next_0b_m_mem(address_map &map) +{ + next_fdc_mem(map); + map(0x0b000000, 0x0b03ffff).ram().share("vram"); +} + +void next_state::next_0c_m_mem(address_map &map) +{ + next_fdc_mem(map); + map(0x0c000000, 0x0c1fffff).ram().share("vram"); +} + +void next_state::next_0c_c_mem(address_map &map) +{ + next_fdc_mem(map); + map(0x0c000000, 0x0c1fffff).ram().share("vram"); + map(0x02018180, 0x02018183).mirror(0x300000).w(this, FUNC(next_state::ramdac_w)); +} + +void next_state::next_2c_c_mem(address_map &map) +{ + next_fdc_mem(map); + map(0x2c000000, 0x2c1fffff).ram().share("vram"); + map(0x02018180, 0x02018183).mirror(0x300000).w(this, FUNC(next_state::ramdac_w)); +} /* Input ports */ diff --git a/src/mame/drivers/nexus3d.cpp b/src/mame/drivers/nexus3d.cpp index e6dacaae799..a4da3b2557c 100644 --- a/src/mame/drivers/nexus3d.cpp +++ b/src/mame/drivers/nexus3d.cpp @@ -78,15 +78,16 @@ READ32_MEMBER(nexus3d_state::nexus3d_unk_r) // //} -ADDRESS_MAP_START(nexus3d_state::nexus3d_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("mainram") +void nexus3d_state::nexus3d_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("mainram"); - AM_RANGE(0x00400000, 0x01ffffff) AM_RAM // ?? uploads various data, + pointers to data in the 0x01ffxxxx range, might be video system related + map(0x00400000, 0x01ffffff).ram(); // ?? uploads various data, + pointers to data in the 0x01ffxxxx range, might be video system related // flash - AM_RANGE(0x9C000000, 0x9C000003) AM_DEVREAD8( "flash", serflash_device, n3d_flash_r, 0xffffffff) - AM_RANGE(0x9C000010, 0x9C000013) AM_DEVWRITE8("flash", serflash_device, n3d_flash_cmd_w, 0xffffffff) - AM_RANGE(0x9C000018, 0x9C00001b) AM_DEVWRITE8("flash", serflash_device, n3d_flash_addr_w, 0xffffffff) + map(0x9C000000, 0x9C000003).r(m_serflash, FUNC(serflash_device::n3d_flash_r)); + map(0x9C000010, 0x9C000013).w(m_serflash, FUNC(serflash_device::n3d_flash_cmd_w)); + map(0x9C000018, 0x9C00001b).w(m_serflash, FUNC(serflash_device::n3d_flash_addr_w)); // lots of accesses in this range // 0xc00018xx seems CRTC related @@ -94,10 +95,10 @@ ADDRESS_MAP_START(nexus3d_state::nexus3d_map) // AM_RANGE(0xC0000F44, 0xC0000F47) AM_READWRITE(nexus3d_unk2_r, nexus3d_unk2_w ) // often, status for something. // AM_RANGE(0xC0000F4C, 0xC0000F4f) AM_READWRITE(nexus3d_unk3_r, nexus3d_unk3_w ) // often - AM_RANGE(0xE0000014, 0xE0000017) AM_READ(nexus3d_unk_r ) // sits waiting for this + map(0xE0000014, 0xE0000017).r(this, FUNC(nexus3d_state::nexus3d_unk_r)); // sits waiting for this -ADDRESS_MAP_END +} static INPUT_PORTS_START( nexus3d ) diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index ce19cf400b1..69b0aa89331 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -860,16 +860,18 @@ void ngen_state::machine_reset() } // boot ROMs from modules are not mapped anywhere, instead, they have to send the code from the boot ROM via DMA -ADDRESS_MAP_START(ngen_state::ngen_mem) - AM_RANGE(0x00000, 0xf7fff) AM_RAM - AM_RANGE(0xf8000, 0xf9fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xfa000, 0xfbfff) AM_RAM AM_SHARE("fontram") - AM_RANGE(0xfc000, 0xfcfff) AM_RAM - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("bios",0) -ADDRESS_MAP_END +void ngen_state::ngen_mem(address_map &map) +{ + map(0x00000, 0xf7fff).ram(); + map(0xf8000, 0xf9fff).ram().share("vram"); + map(0xfa000, 0xfbfff).ram().share("fontram"); + map(0xfc000, 0xfcfff).ram(); + map(0xfe000, 0xfffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(ngen_state::ngen_io) - AM_RANGE(0x0000, 0x0001) AM_READWRITE(xbus_r,xbus_w) +void ngen_state::ngen_io(address_map &map) +{ + map(0x0000, 0x0001).rw(this, FUNC(ngen_state::xbus_r), FUNC(ngen_state::xbus_w)); // Floppy/Hard disk module // AM_RANGE(0x0100, 0x0107) AM_DEVREADWRITE8("fdc",wd2797_t,read,write,0x00ff) // a guess for now @@ -880,7 +882,7 @@ ADDRESS_MAP_START(ngen_state::ngen_io) // 0x0120-0x012f - WD1010 Winchester disk controller (unemulated) // AM_RANGE(0x0130, 0x0137) AM_DEVREADWRITE8("hdc_timer",pit8253_device,read,write,0x00ff) -ADDRESS_MAP_END +} ADDRESS_MAP_START(ngen_state::ngen386_mem) AM_RANGE(0x00000000, 0x000f7fff) AM_RAM diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp index 0c03ae2c593..a376910ab4a 100644 --- a/src/mame/drivers/ngp.cpp +++ b/src/mame/drivers/ngp.cpp @@ -551,15 +551,16 @@ WRITE8_MEMBER( ngp_state::flash1_w ) } -ADDRESS_MAP_START(ngp_state::ngp_mem) - AM_RANGE( 0x000080, 0x0000bf ) AM_READWRITE(ngp_io_r, ngp_io_w) /* ngp/c specific i/o */ - AM_RANGE( 0x004000, 0x006fff ) AM_RAM AM_SHARE("mainram") /* work ram */ - AM_RANGE( 0x007000, 0x007fff ) AM_RAM AM_SHARE("share1") /* shared with sound cpu */ - AM_RANGE( 0x008000, 0x00bfff ) AM_DEVREADWRITE("k1ge", k1ge_device, read, write) /* video chip */ - AM_RANGE( 0x200000, 0x3fffff ) AM_WRITE(flash0_w) /* cart area #1 */ - AM_RANGE( 0x800000, 0x9fffff ) AM_WRITE(flash1_w) /* cart area #2 */ - AM_RANGE( 0xff0000, 0xffffff ) AM_ROM AM_REGION("maincpu", 0) /* system rom */ -ADDRESS_MAP_END +void ngp_state::ngp_mem(address_map &map) +{ + map(0x000080, 0x0000bf).rw(this, FUNC(ngp_state::ngp_io_r), FUNC(ngp_state::ngp_io_w)); /* ngp/c specific i/o */ + map(0x004000, 0x006fff).ram().share("mainram"); /* work ram */ + map(0x007000, 0x007fff).ram().share("share1"); /* shared with sound cpu */ + map(0x008000, 0x00bfff).rw(m_k1ge, FUNC(k1ge_device::read), FUNC(k1ge_device::write)); /* video chip */ + map(0x200000, 0x3fffff).w(this, FUNC(ngp_state::flash0_w)); /* cart area #1 */ + map(0x800000, 0x9fffff).w(this, FUNC(ngp_state::flash1_w)); /* cart area #2 */ + map(0xff0000, 0xffffff).rom().region("maincpu", 0); /* system rom */ +} READ8_MEMBER( ngp_state::ngp_z80_comm_r ) @@ -580,12 +581,13 @@ WRITE8_MEMBER( ngp_state::ngp_z80_signal_main_w ) } -ADDRESS_MAP_START(ngp_state::z80_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAM AM_SHARE("share1") /* shared with tlcs900 */ - AM_RANGE( 0x4000, 0x4001 ) AM_DEVWRITE("t6w28", t6w28_device, write ) /* sound chip (right, left) */ - AM_RANGE( 0x8000, 0x8000 ) AM_READWRITE( ngp_z80_comm_r, ngp_z80_comm_w ) /* main-sound communication */ - AM_RANGE( 0xc000, 0xc000 ) AM_WRITE( ngp_z80_signal_main_w ) /* signal irq to main cpu */ -ADDRESS_MAP_END +void ngp_state::z80_mem(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("share1"); /* shared with tlcs900 */ + map(0x4000, 0x4001).w(m_t6w28, FUNC(t6w28_device::write)); /* sound chip (right, left) */ + map(0x8000, 0x8000).rw(this, FUNC(ngp_state::ngp_z80_comm_r), FUNC(ngp_state::ngp_z80_comm_w)); /* main-sound communication */ + map(0xc000, 0xc000).w(this, FUNC(ngp_state::ngp_z80_signal_main_w)); /* signal irq to main cpu */ +} WRITE8_MEMBER( ngp_state::ngp_z80_clear_irq ) @@ -597,9 +599,10 @@ WRITE8_MEMBER( ngp_state::ngp_z80_clear_irq ) } -ADDRESS_MAP_START(ngp_state::z80_io) - AM_RANGE( 0x0000, 0xffff ) AM_WRITE( ngp_z80_clear_irq ) -ADDRESS_MAP_END +void ngp_state::z80_io(address_map &map) +{ + map(0x0000, 0xffff).w(this, FUNC(ngp_state::ngp_z80_clear_irq)); +} INPUT_CHANGED_MEMBER(ngp_state::power_callback) diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp index 0f04f4dd377..7ce9764365e 100644 --- a/src/mame/drivers/nibble.cpp +++ b/src/mame/drivers/nibble.cpp @@ -152,17 +152,19 @@ void nibble_state::machine_reset() * Memory Map Information * *************************/ -ADDRESS_MAP_START(nibble_state::nibble_map) +void nibble_state::nibble_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_WRITE(nibble_videoram_w) AM_SHARE("videoram") // placeholder + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).w(this, FUNC(nibble_state::nibble_videoram_w)).share("videoram"); // placeholder // AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("crtc", mc6845_device, address_w) // AM_RANGE(0xff02, 0xff03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(nibble_state::nibble_cru_map) -ADDRESS_MAP_END +void nibble_state::nibble_cru_map(address_map &map) +{ +} /************************* diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp index 0cb1b05d085..1594859a31d 100644 --- a/src/mame/drivers/nightgal.cpp +++ b/src/mame/drivers/nightgal.cpp @@ -364,13 +364,14 @@ WRITE8_MEMBER(nightgal_state::output_w) * Common ********************************/ -ADDRESS_MAP_START(nightgal_state::common_nsc_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0080) AM_READ_PORT("BLIT_PORT") - AM_RANGE(0x0081, 0x0083) AM_READ(royalqn_nsc_blit_r) - AM_RANGE(0x00a0, 0x00af) AM_DEVWRITE("blitter", jangou_blitter_device, vregs_w) - AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("blitter", jangou_blitter_device, bltflip_w) -ADDRESS_MAP_END +void nightgal_state::common_nsc_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x0080, 0x0080).portr("BLIT_PORT"); + map(0x0081, 0x0083).r(this, FUNC(nightgal_state::royalqn_nsc_blit_r)); + map(0x00a0, 0x00af).w(m_blitter, FUNC(jangou_blitter_device::vregs_w)); + map(0x00b0, 0x00b0).w(m_blitter, FUNC(jangou_blitter_device::bltflip_w)); +} /******************************** * Sexy Gal @@ -398,100 +399,111 @@ WRITE8_MEMBER(nightgal_state::sexygal_audionmi_w) } -ADDRESS_MAP_START(nightgal_state::sweetgal_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x807f) AM_RAM AM_SHARE("sound_ram") - AM_RANGE(0xe000, 0xefff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void nightgal_state::sweetgal_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x807f).ram().share("sound_ram"); + map(0xe000, 0xefff).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(nightgal_state::sexygal_map) - AM_IMPORT_FROM(sweetgal_map) - AM_RANGE(0xa000, 0xa000) AM_WRITE(sexygal_audioff_w) -ADDRESS_MAP_END +void nightgal_state::sexygal_map(address_map &map) +{ + sweetgal_map(map); + map(0xa000, 0xa000).w(this, FUNC(nightgal_state::sexygal_audioff_w)); +} -ADDRESS_MAP_START(nightgal_state::common_sexygal_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10,0x10) AM_READ_PORT("DSWA") AM_WRITE(output_w) - AM_RANGE(0x11,0x11) AM_READ_PORT("SYSTEM") AM_WRITE(mux_w) - AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_0_w) - AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(royalqn_blitter_1_w) - AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w) -ADDRESS_MAP_END +void nightgal_state::common_sexygal_io(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).portr("DSWA").w(this, FUNC(nightgal_state::output_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(nightgal_state::mux_w)); + map(0x12, 0x12).mirror(0xe8).portr("DSWB").w(this, FUNC(nightgal_state::royalqn_blitter_0_w)); + map(0x13, 0x13).mirror(0xe8).portr("DSWC").w(this, FUNC(nightgal_state::royalqn_blitter_1_w)); + map(0x14, 0x14).mirror(0xe8).nopr().w(this, FUNC(nightgal_state::royalqn_blitter_2_w)); +} -ADDRESS_MAP_START(nightgal_state::sexygal_io) - AM_IMPORT_FROM( common_sexygal_io ) +void nightgal_state::sexygal_io(address_map &map) +{ + common_sexygal_io(map); - AM_RANGE(0x00,0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} -ADDRESS_MAP_START(nightgal_state::sgaltrop_io) - AM_IMPORT_FROM( common_sexygal_io ) +void nightgal_state::sgaltrop_io(address_map &map) +{ + common_sexygal_io(map); - AM_RANGE(0x01,0x01) AM_DEVREAD("ymsnd", ym2203_device, data_r) - AM_RANGE(0x02,0x03) AM_DEVWRITE("ymsnd", ym2203_device, data_address_w) -ADDRESS_MAP_END + map(0x01, 0x01).r("ymsnd", FUNC(ym2203_device::data_r)); + map(0x02, 0x03).w("ymsnd", FUNC(ym2203_device::data_address_w)); +} -ADDRESS_MAP_START(nightgal_state::sexygal_nsc_map) - AM_IMPORT_FROM( common_nsc_map ) - AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v2_regs) - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0) -ADDRESS_MAP_END +void nightgal_state::sexygal_nsc_map(address_map &map) +{ + common_nsc_map(map); + map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v2_regs)); + map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xc000, 0xdfff).mirror(0x2000).rom().region("subrom", 0); +} -ADDRESS_MAP_START(nightgal_state::sgaltrop_nsc_map) - AM_IMPORT_FROM( common_nsc_map ) +void nightgal_state::sgaltrop_nsc_map(address_map &map) +{ + common_nsc_map(map); - AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v2_regs) - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("subrom", 0) -ADDRESS_MAP_END + map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v2_regs)); + map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xc000, 0xffff).rom().region("subrom", 0); +} -ADDRESS_MAP_START(nightgal_state::sexygal_audio_map) - AM_RANGE(0x0000, 0x007f) AM_RAM +void nightgal_state::sexygal_audio_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); - AM_RANGE(0x2000, 0x207f) AM_RAM AM_SHARE("sound_ram") - AM_RANGE(0x3000, 0x3000) AM_WRITE(sexygal_audionmi_w) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiorom", 0) -ADDRESS_MAP_END + map(0x2000, 0x207f).ram().share("sound_ram"); + map(0x3000, 0x3000).w(this, FUNC(nightgal_state::sexygal_audionmi_w)); + map(0xc000, 0xffff).rom().region("audiorom", 0); +} /******************************** * Royal Queen ********************************/ -ADDRESS_MAP_START(nightgal_state::royalqn_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nightgal_state::royalqn_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_MIRROR(0xec) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02,0x03) AM_MIRROR(0xec) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10,0x10) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(output_w) - AM_RANGE(0x11,0x11) AM_MIRROR(0xe8) AM_READ_PORT("SYSTEM") AM_WRITE(mux_w) - AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_0_w) - AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(royalqn_blitter_1_w) - AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w) - AM_RANGE(0x15,0x15) AM_MIRROR(0xe8) AM_NOP - AM_RANGE(0x16,0x16) AM_MIRROR(0xe8) AM_NOP - AM_RANGE(0x17,0x17) AM_MIRROR(0xe8) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(nightgal_state::royalqn_nsc_map) - AM_IMPORT_FROM( common_nsc_map ) - - AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs) - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) - AM_RANGE(0x4000, 0x4000) AM_NOP - AM_RANGE(0x8000, 0x8000) AM_NOP //open bus or protection check - AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0) -ADDRESS_MAP_END +void nightgal_state::royalqn_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).noprw(); + map(0xc000, 0xdfff).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xe000, 0xffff).ram(); +} + +void nightgal_state::royalqn_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).mirror(0xec).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).mirror(0xec).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).mirror(0xe8).portr("DSWA").w(this, FUNC(nightgal_state::output_w)); + map(0x11, 0x11).mirror(0xe8).portr("SYSTEM").w(this, FUNC(nightgal_state::mux_w)); + map(0x12, 0x12).mirror(0xe8).portr("DSWB").w(this, FUNC(nightgal_state::royalqn_blitter_0_w)); + map(0x13, 0x13).mirror(0xe8).portr("DSWC").w(this, FUNC(nightgal_state::royalqn_blitter_1_w)); + map(0x14, 0x14).mirror(0xe8).nopr().w(this, FUNC(nightgal_state::royalqn_blitter_2_w)); + map(0x15, 0x15).mirror(0xe8).noprw(); + map(0x16, 0x16).mirror(0xe8).noprw(); + map(0x17, 0x17).mirror(0xe8).noprw(); +} + +void nightgal_state::royalqn_nsc_map(address_map &map) +{ + common_nsc_map(map); + + map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs)); + map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)); + map(0x4000, 0x4000).noprw(); + map(0x8000, 0x8000).noprw(); //open bus or protection check + map(0xc000, 0xdfff).mirror(0x2000).rom().region("subrom", 0); +} /******************************************** * diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp index c7cf8d02546..dd4bd61ea00 100644 --- a/src/mame/drivers/ninjakd2.cpp +++ b/src/mame/drivers/ninjakd2.cpp @@ -372,123 +372,131 @@ WRITE8_MEMBER(ninjakd2_state::ninjakd2_soundreset_w) * *************************************/ -ADDRESS_MAP_START(ninjakd2_state::ninjakd2_main_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("KEYCOIN") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("PAD1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("PAD2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DIPSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DIPSW2") - AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc201, 0xc201) AM_WRITE(ninjakd2_soundreset_w) - AM_RANGE(0xc202, 0xc202) AM_WRITE(ninjakd2_bankselect_w) - AM_RANGE(0xc203, 0xc203) AM_WRITE(ninjakd2_sprite_overdraw_w) - AM_RANGE(0xc208, 0xc20c) AM_WRITE(ninjakd2_bg_ctrl_w) - AM_RANGE(0xc800, 0xcdff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(ninjakd2_bgvideoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe000, 0xf9ff) AM_RAM - AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ninjakd2_state::mnight_main_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xd9ff) AM_RAM - AM_RANGE(0xda00, 0xdfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ninjakd2_bgvideoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xf000, 0xf5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("KEYCOIN") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("PAD1") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("PAD2") - AM_RANGE(0xf803, 0xf803) AM_READ_PORT("DIPSW1") - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DIPSW2") - AM_RANGE(0xfa00, 0xfa00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xfa01, 0xfa01) AM_WRITE(ninjakd2_soundreset_w) - AM_RANGE(0xfa02, 0xfa02) AM_WRITE(ninjakd2_bankselect_w) - AM_RANGE(0xfa03, 0xfa03) AM_WRITE(ninjakd2_sprite_overdraw_w) - AM_RANGE(0xfa08, 0xfa0c) AM_WRITE(ninjakd2_bg_ctrl_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ninjakd2_state::robokid_main_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd000, 0xd3ff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked - AM_RANGE(0xd400, 0xd7ff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked - AM_RANGE(0xd800, 0xdbff) AM_READWRITE(robokid_bg0_videoram_r, robokid_bg0_videoram_w) // banked - AM_RANGE(0xdc00, 0xdc00) AM_READ_PORT("KEYCOIN") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xdc01, 0xdc01) AM_READ_PORT("PAD1") AM_WRITE(ninjakd2_soundreset_w) - AM_RANGE(0xdc02, 0xdc02) AM_READ_PORT("PAD2") AM_WRITE(ninjakd2_bankselect_w) - AM_RANGE(0xdc03, 0xdc03) AM_READ_PORT("DIPSW1") AM_WRITE(ninjakd2_sprite_overdraw_w) - AM_RANGE(0xdc04, 0xdc04) AM_READ_PORT("DIPSW2") - AM_RANGE(0xdd00, 0xdd04) AM_WRITE(robokid_bg0_ctrl_w) - AM_RANGE(0xdd05, 0xdd05) AM_WRITE(robokid_bg0_bank_w) - AM_RANGE(0xde00, 0xde04) AM_WRITE(robokid_bg1_ctrl_w) - AM_RANGE(0xde05, 0xde05) AM_WRITE(robokid_bg1_bank_w) - AM_RANGE(0xdf00, 0xdf04) AM_WRITE(robokid_bg2_ctrl_w) - AM_RANGE(0xdf05, 0xdf05) AM_WRITE(robokid_bg2_bank_w) - AM_RANGE(0xe000, 0xf9ff) AM_RAM - AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ninjakd2_state::omegaf_main_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("KEYCOIN") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc001, 0xc003) AM_READ(omegaf_io_protection_r) - AM_RANGE(0xc001, 0xc001) AM_WRITE(ninjakd2_soundreset_w) - AM_RANGE(0xc002, 0xc002) AM_WRITE(ninjakd2_bankselect_w) - AM_RANGE(0xc003, 0xc003) AM_WRITE(ninjakd2_sprite_overdraw_w) - AM_RANGE(0xc004, 0xc006) AM_WRITE(omegaf_io_protection_w) - AM_RANGE(0xc100, 0xc104) AM_WRITE(robokid_bg0_ctrl_w) - AM_RANGE(0xc105, 0xc105) AM_WRITE(robokid_bg0_bank_w) - AM_RANGE(0xc1e7, 0xc1e7) AM_READNOP // see notes - AM_RANGE(0xc200, 0xc204) AM_WRITE(robokid_bg1_ctrl_w) - AM_RANGE(0xc205, 0xc205) AM_WRITE(robokid_bg1_bank_w) - AM_RANGE(0xc300, 0xc304) AM_WRITE(robokid_bg2_ctrl_w) - AM_RANGE(0xc305, 0xc305) AM_WRITE(robokid_bg2_bank_w) - AM_RANGE(0xc400, 0xc7ff) AM_READWRITE(robokid_bg0_videoram_r, robokid_bg0_videoram_w) // banked - AM_RANGE(0xc800, 0xcbff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked - AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ninjakd2_fgvideoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe000, 0xf9ff) AM_RAM - AM_RANGE(0xfa00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ninjakd2_state::ninjakd2_sound_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf000) AM_WRITE(ninjakd2_pcm_play_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ninjakd2_state::ninjakid_nopcm_sound_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf000) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(ninjakd2_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("soundcpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ninjakd2_state::ninjakd2_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("2203.1", ym2203_device, write) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("2203.2", ym2203_device, write) -ADDRESS_MAP_END +void ninjakd2_state::ninjakd2_main_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("KEYCOIN"); + map(0xc001, 0xc001).portr("PAD1"); + map(0xc002, 0xc002).portr("PAD2"); + map(0xc003, 0xc003).portr("DIPSW1"); + map(0xc004, 0xc004).portr("DIPSW2"); + map(0xc200, 0xc200).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc201, 0xc201).w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w)); + map(0xc202, 0xc202).w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w)); + map(0xc203, 0xc203).w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w)); + map(0xc208, 0xc20c).w(this, FUNC(ninjakd2_state::ninjakd2_bg_ctrl_w)); + map(0xc800, 0xcdff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_bgvideoram_w)).share("bg_videoram"); + map(0xe000, 0xf9ff).ram(); + map(0xfa00, 0xffff).ram().share("spriteram"); +} + +void ninjakd2_state::mnight_main_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xd9ff).ram(); + map(0xda00, 0xdfff).ram().share("spriteram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_bgvideoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram"); + map(0xf000, 0xf5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf800, 0xf800).portr("KEYCOIN"); + map(0xf801, 0xf801).portr("PAD1"); + map(0xf802, 0xf802).portr("PAD2"); + map(0xf803, 0xf803).portr("DIPSW1"); + map(0xf804, 0xf804).portr("DIPSW2"); + map(0xfa00, 0xfa00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xfa01, 0xfa01).w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w)); + map(0xfa02, 0xfa02).w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w)); + map(0xfa03, 0xfa03).w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w)); + map(0xfa08, 0xfa0c).w(this, FUNC(ninjakd2_state::ninjakd2_bg_ctrl_w)); +} + + +void ninjakd2_state::robokid_main_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xc800, 0xcfff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram"); + map(0xd000, 0xd3ff).rw(this, FUNC(ninjakd2_state::robokid_bg2_videoram_r), FUNC(ninjakd2_state::robokid_bg2_videoram_w)); // banked + map(0xd400, 0xd7ff).rw(this, FUNC(ninjakd2_state::robokid_bg1_videoram_r), FUNC(ninjakd2_state::robokid_bg1_videoram_w)); // banked + map(0xd800, 0xdbff).rw(this, FUNC(ninjakd2_state::robokid_bg0_videoram_r), FUNC(ninjakd2_state::robokid_bg0_videoram_w)); // banked + map(0xdc00, 0xdc00).portr("KEYCOIN").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xdc01, 0xdc01).portr("PAD1").w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w)); + map(0xdc02, 0xdc02).portr("PAD2").w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w)); + map(0xdc03, 0xdc03).portr("DIPSW1").w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w)); + map(0xdc04, 0xdc04).portr("DIPSW2"); + map(0xdd00, 0xdd04).w(this, FUNC(ninjakd2_state::robokid_bg0_ctrl_w)); + map(0xdd05, 0xdd05).w(this, FUNC(ninjakd2_state::robokid_bg0_bank_w)); + map(0xde00, 0xde04).w(this, FUNC(ninjakd2_state::robokid_bg1_ctrl_w)); + map(0xde05, 0xde05).w(this, FUNC(ninjakd2_state::robokid_bg1_bank_w)); + map(0xdf00, 0xdf04).w(this, FUNC(ninjakd2_state::robokid_bg2_ctrl_w)); + map(0xdf05, 0xdf05).w(this, FUNC(ninjakd2_state::robokid_bg2_bank_w)); + map(0xe000, 0xf9ff).ram(); + map(0xfa00, 0xffff).ram().share("spriteram"); +} + + +void ninjakd2_state::omegaf_main_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc000).portr("KEYCOIN").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc001, 0xc003).r(this, FUNC(ninjakd2_state::omegaf_io_protection_r)); + map(0xc001, 0xc001).w(this, FUNC(ninjakd2_state::ninjakd2_soundreset_w)); + map(0xc002, 0xc002).w(this, FUNC(ninjakd2_state::ninjakd2_bankselect_w)); + map(0xc003, 0xc003).w(this, FUNC(ninjakd2_state::ninjakd2_sprite_overdraw_w)); + map(0xc004, 0xc006).w(this, FUNC(ninjakd2_state::omegaf_io_protection_w)); + map(0xc100, 0xc104).w(this, FUNC(ninjakd2_state::robokid_bg0_ctrl_w)); + map(0xc105, 0xc105).w(this, FUNC(ninjakd2_state::robokid_bg0_bank_w)); + map(0xc1e7, 0xc1e7).nopr(); // see notes + map(0xc200, 0xc204).w(this, FUNC(ninjakd2_state::robokid_bg1_ctrl_w)); + map(0xc205, 0xc205).w(this, FUNC(ninjakd2_state::robokid_bg1_bank_w)); + map(0xc300, 0xc304).w(this, FUNC(ninjakd2_state::robokid_bg2_ctrl_w)); + map(0xc305, 0xc305).w(this, FUNC(ninjakd2_state::robokid_bg2_bank_w)); + map(0xc400, 0xc7ff).rw(this, FUNC(ninjakd2_state::robokid_bg0_videoram_r), FUNC(ninjakd2_state::robokid_bg0_videoram_w)); // banked + map(0xc800, 0xcbff).rw(this, FUNC(ninjakd2_state::robokid_bg1_videoram_r), FUNC(ninjakd2_state::robokid_bg1_videoram_w)); // banked + map(0xcc00, 0xcfff).rw(this, FUNC(ninjakd2_state::robokid_bg2_videoram_r), FUNC(ninjakd2_state::robokid_bg2_videoram_w)); // banked + map(0xd000, 0xd7ff).ram().w(this, FUNC(ninjakd2_state::ninjakd2_fgvideoram_w)).share("fg_videoram"); + map(0xd800, 0xdfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe000, 0xf9ff).ram(); + map(0xfa00, 0xffff).ram().share("spriteram"); +} + + +void ninjakd2_state::ninjakd2_sound_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf000).w(this, FUNC(ninjakd2_state::ninjakd2_pcm_play_w)); +} + +void ninjakd2_state::ninjakid_nopcm_sound_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf000).noprw(); +} + +void ninjakd2_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).rom().region("soundcpu", 0x8000); +} + +void ninjakd2_state::ninjakd2_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("2203.1", FUNC(ym2203_device::write)); + map(0x80, 0x81).w("2203.2", FUNC(ym2203_device::write)); +} diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp index 2cb80e4f49e..f910d98a5f0 100644 --- a/src/mame/drivers/ninjaw.cpp +++ b/src/mame/drivers/ninjaw.cpp @@ -420,84 +420,89 @@ WRITE16_MEMBER(ninjaw_state::tc0100scn_triple_screen_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(ninjaw_state::ninjaw_master_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* main ram */ - AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) - AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x220000, 0x220003) AM_READWRITE(sound_r,sound_w) - AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */ - AM_RANGE(0x2a0000, 0x2a000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x2c0000, 0x2d3fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */ - AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, word_r, word_w) /* tilemaps (3rd screen) */ - AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */ - AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */ - AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */ -ADDRESS_MAP_END +void ninjaw_state::ninjaw_master_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x0c0000, 0x0cffff).ram(); /* main ram */ + map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); + map(0x210000, 0x210001).w(this, FUNC(ninjaw_state::cpua_ctrl_w)); + map(0x220000, 0x220003).rw(this, FUNC(ninjaw_state::sound_r), FUNC(ninjaw_state::sound_w)); + map(0x240000, 0x24ffff).ram().share("share1"); + map(0x260000, 0x263fff).ram().share("spriteram"); + map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */ + map(0x2a0000, 0x2a000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x2c0000, 0x2d3fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */ + map(0x2e0000, 0x2e000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x300000, 0x313fff).rw("tc0100scn_3", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (3rd screen) */ + map(0x320000, 0x32000f).rw("tc0100scn_3", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x340000, 0x340007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */ + map(0x350000, 0x350007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */ + map(0x360000, 0x360007).rw("tc0110pcr_3", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (3rd screen) */ +} // NB there could be conflicts between which cpu writes what to the // palette, as our interleaving won't match the original board. -ADDRESS_MAP_START(ninjaw_state::ninjaw_slave_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main ram */ - AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) - AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */ - AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */ - AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */ - AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ninjaw_state::darius2_master_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* main ram */ - AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) - AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x220000, 0x220003) AM_READWRITE(sound_r,sound_w) - AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */ - AM_RANGE(0x2a0000, 0x2a000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x2c0000, 0x2d3fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */ - AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, word_r, word_w) /* tilemaps (3rd screen) */ - AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */ - AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */ - AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_device, word_r, step1_word_w) /* palette (3rd screen) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ninjaw_state::darius2_slave_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM /* main ram */ - AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) - AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */ -ADDRESS_MAP_END +void ninjaw_state::ninjaw_slave_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x080000, 0x08ffff).ram(); /* main ram */ + map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); + map(0x240000, 0x24ffff).ram().share("share1"); + map(0x260000, 0x263fff).ram().share("spriteram"); + map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */ + map(0x340000, 0x340007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */ + map(0x350000, 0x350007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */ + map(0x360000, 0x360007).rw("tc0110pcr_3", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (3rd screen) */ +} + +void ninjaw_state::darius2_master_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x0c0000, 0x0cffff).ram(); /* main ram */ + map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); + map(0x210000, 0x210001).w(this, FUNC(ninjaw_state::cpua_ctrl_w)); + map(0x220000, 0x220003).rw(this, FUNC(ninjaw_state::sound_r), FUNC(ninjaw_state::sound_w)); + map(0x240000, 0x24ffff).ram().share("share1"); + map(0x260000, 0x263fff).ram().share("spriteram"); + map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */ + map(0x2a0000, 0x2a000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x2c0000, 0x2d3fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */ + map(0x2e0000, 0x2e000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x300000, 0x313fff).rw("tc0100scn_3", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (3rd screen) */ + map(0x320000, 0x32000f).rw("tc0100scn_3", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x340000, 0x340007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */ + map(0x350000, 0x350007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */ + map(0x360000, 0x360007).rw("tc0110pcr_3", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (3rd screen) */ +} + +void ninjaw_state::darius2_slave_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x080000, 0x08ffff).ram(); /* main ram */ + map(0x200000, 0x200003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); + map(0x240000, 0x24ffff).ram().share("share1"); + map(0x260000, 0x263fff).ram().share("spriteram"); + map(0x280000, 0x293fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(ninjaw_state::tc0100scn_triple_screen_w)); /* tilemaps (1st screen/all screens) */ +} /***************************************************************************/ -ADDRESS_MAP_START(ninjaw_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r,slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol_w) /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void ninjaw_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).w(this, FUNC(ninjaw_state::pancontrol_w)); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(ninjaw_state::sound_bankswitch_w)); +} /*********************************************************** diff --git a/src/mame/drivers/nitedrvr.cpp b/src/mame/drivers/nitedrvr.cpp index 42b6191761a..300859ed9c2 100644 --- a/src/mame/drivers/nitedrvr.cpp +++ b/src/mame/drivers/nitedrvr.cpp @@ -48,20 +48,21 @@ /* Memory Map */ -ADDRESS_MAP_START(nitedrvr_state::nitedrvr_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100) // SCRAM - AM_RANGE(0x0200, 0x027f) AM_READNOP AM_WRITE(nitedrvr_videoram_w) AM_MIRROR(0x180) AM_SHARE("videoram") // PFW - AM_RANGE(0x0400, 0x042f) AM_READNOP AM_WRITEONLY AM_MIRROR(0x1c0) AM_SHARE("hvc") // POSH, POSV, CHAR - AM_RANGE(0x0430, 0x043f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_MIRROR(0x1c0) - AM_RANGE(0x0600, 0x07ff) AM_READ(nitedrvr_in0_r) - AM_RANGE(0x0800, 0x09ff) AM_READ(nitedrvr_in1_r) - AM_RANGE(0x0a00, 0x0bff) AM_WRITE(nitedrvr_out0_w) - AM_RANGE(0x0c00, 0x0dff) AM_WRITE(nitedrvr_out1_w) - AM_RANGE(0x8000, 0x807f) AM_READONLY AM_MIRROR(0x380) AM_SHARE("videoram") // PFR - AM_RANGE(0x8400, 0x87ff) AM_READWRITE(nitedrvr_steering_reset_r, nitedrvr_steering_reset_w) - AM_RANGE(0x9000, 0x9fff) AM_ROM // ROM1-ROM2 - AM_RANGE(0xfff0, 0xffff) AM_ROM // ROM2 for 6502 vectors -ADDRESS_MAP_END +void nitedrvr_state::nitedrvr_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().mirror(0x100); // SCRAM + map(0x0200, 0x027f).nopr().w(this, FUNC(nitedrvr_state::nitedrvr_videoram_w)).mirror(0x180).share("videoram"); // PFW + map(0x0400, 0x042f).nopr().writeonly().mirror(0x1c0).share("hvc"); // POSH, POSV, CHAR + map(0x0430, 0x043f).w("watchdog", FUNC(watchdog_timer_device::reset_w)).mirror(0x1c0); + map(0x0600, 0x07ff).r(this, FUNC(nitedrvr_state::nitedrvr_in0_r)); + map(0x0800, 0x09ff).r(this, FUNC(nitedrvr_state::nitedrvr_in1_r)); + map(0x0a00, 0x0bff).w(this, FUNC(nitedrvr_state::nitedrvr_out0_w)); + map(0x0c00, 0x0dff).w(this, FUNC(nitedrvr_state::nitedrvr_out1_w)); + map(0x8000, 0x807f).readonly().mirror(0x380).share("videoram"); // PFR + map(0x8400, 0x87ff).rw(this, FUNC(nitedrvr_state::nitedrvr_steering_reset_r), FUNC(nitedrvr_state::nitedrvr_steering_reset_w)); + map(0x9000, 0x9fff).rom(); // ROM1-ROM2 + map(0xfff0, 0xffff).rom(); // ROM2 for 6502 vectors +} /* Input Ports */ diff --git a/src/mame/drivers/niyanpai.cpp b/src/mame/drivers/niyanpai.cpp index f1fdde217a9..e93f22ce272 100644 --- a/src/mame/drivers/niyanpai.cpp +++ b/src/mame/drivers/niyanpai.cpp @@ -123,157 +123,161 @@ WRITE16_MEMBER(niyanpai_state::musobana_inputport_w) m_musobana_inputport = data; } -ADDRESS_MAP_START(niyanpai_state::niyanpai_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram") - - AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w) - AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram? - - AM_RANGE(0x0bf800, 0x0bffff) AM_RAM - - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00) - - AM_RANGE(0x200200, 0x200201) AM_WRITENOP // unknown - AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown - AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown - - AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) - AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) - AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) - AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) - - AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2") - AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) - - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void niyanpai_state::niyanpai_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x040fff).ram().share("nvram"); + + map(0x0a0000, 0x0a08ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w)); + map(0x0a0900, 0x0a11ff).ram(); // palette work ram? + + map(0x0bf800, 0x0bffff).ram(); + + map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w)); + + map(0x200200, 0x200201).nopw(); // unknown + map(0x240000, 0x240009).nopw(); // unknown + map(0x240200, 0x2403ff).nopw(); // unknown + + map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff); + map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff); + map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff); + map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff); + map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff); + map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff); + map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff); + map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff); + map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff); + map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r)); + + map(0x280200, 0x280201).portr("P1_P2"); + map(0x280400, 0x280401).portr("SYSTEM"); + map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w)); + map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w)); + map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w)); + + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} -ADDRESS_MAP_START(niyanpai_state::musobana_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x040fff) AM_RAM +void niyanpai_state::musobana_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x040fff).ram(); - AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w) - AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram? + map(0x0a0000, 0x0a08ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w)); + map(0x0a0900, 0x0a11ff).ram(); // palette work ram? - AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0bf800, 0x0bffff) AM_RAM + map(0x0a8000, 0x0a87ff).ram().share("nvram"); + map(0x0bf800, 0x0bffff).ram(); - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00) + map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w)); - AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select - AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown - AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown + map(0x200200, 0x200201).w(this, FUNC(niyanpai_state::musobana_inputport_w)); // inputport select + map(0x240000, 0x240009).nopw(); // unknown + map(0x240200, 0x2403ff).nopw(); // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) + map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff); + map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff); + map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff); - AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) + map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff); + map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff); + map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff); - AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) + map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff); + map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff); + map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff); + map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w)); + map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w)); + map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w)); - AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) - AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r) - AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") + map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r)); + map(0x280200, 0x280201).r(this, FUNC(niyanpai_state::musobana_inputport_0_r)); + map(0x280400, 0x280401).portr("SYSTEM"); - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} -ADDRESS_MAP_START(niyanpai_state::mhhonban_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x040fff) AM_RAM +void niyanpai_state::mhhonban_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x040fff).ram(); - AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(palette_r,palette_w) - AM_RANGE(0x060900, 0x0611ff) AM_RAM // palette work ram? - AM_RANGE(0x07f800, 0x07ffff) AM_RAM + map(0x060000, 0x0608ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w)); + map(0x060900, 0x0611ff).ram(); // palette work ram? + map(0x07f800, 0x07ffff).ram(); - AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0bf000, 0x0bffff) AM_RAM + map(0x0a8000, 0x0a87ff).ram().share("nvram"); + map(0x0bf000, 0x0bffff).ram(); - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00) + map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w)); - AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select - AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown - AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown + map(0x200200, 0x200201).w(this, FUNC(niyanpai_state::musobana_inputport_w)); // inputport select + map(0x240000, 0x240009).nopw(); // unknown + map(0x240200, 0x2403ff).nopw(); // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) + map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff); + map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff); + map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff); - AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) + map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff); + map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff); + map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff); - AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) + map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff); + map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff); + map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff); - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) + map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w)); + map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w)); + map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w)); - AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) - AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r) - AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") + map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r)); + map(0x280200, 0x280201).r(this, FUNC(niyanpai_state::musobana_inputport_0_r)); + map(0x280400, 0x280401).portr("SYSTEM"); - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} -ADDRESS_MAP_START(niyanpai_state::zokumahj_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0ff000, 0x0fffff) AM_RAM +void niyanpai_state::zokumahj_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0ff000, 0x0fffff).ram(); - AM_RANGE(0x0e0000, 0x0e08ff) AM_READWRITE(palette_r,palette_w) - AM_RANGE(0x0e0900, 0x0e11ff) AM_RAM // palette work ram? + map(0x0e0000, 0x0e08ff).rw(this, FUNC(niyanpai_state::palette_r), FUNC(niyanpai_state::palette_w)); + map(0x0e0900, 0x0e11ff).ram(); // palette work ram? - AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM + map(0x0a8000, 0x0a87ff).ram().share("nvram"); + map(0x0c0000, 0x0cffff).ram(); - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("nichisnd", nichisnd_device,sound_host_command_w,0xff00) + map(0x200000, 0x200000).w("nichisnd", FUNC(nichisnd_device::sound_host_command_w)); - AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select - AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown - AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown + map(0x200200, 0x200201).w(this, FUNC(niyanpai_state::musobana_inputport_w)); // inputport select + map(0x240000, 0x240009).nopw(); // unknown + map(0x240200, 0x2403ff).nopw(); // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) + map(0x240400, 0x240403).r(this, FUNC(niyanpai_state::blitter_0_r)).umask16(0x00ff); + map(0x240400, 0x24041f).w(this, FUNC(niyanpai_state::blitter_0_w)).umask16(0x00ff); + map(0x240420, 0x24043f).w(this, FUNC(niyanpai_state::clut_0_w)).umask16(0x00ff); - AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) + map(0x240600, 0x240603).r(this, FUNC(niyanpai_state::blitter_1_r)).umask16(0x00ff); + map(0x240600, 0x24061f).w(this, FUNC(niyanpai_state::blitter_1_w)).umask16(0x00ff); + map(0x240620, 0x24063f).w(this, FUNC(niyanpai_state::clut_1_w)).umask16(0x00ff); - AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) + map(0x240800, 0x240803).r(this, FUNC(niyanpai_state::blitter_2_r)).umask16(0x00ff); + map(0x240800, 0x24081f).w(this, FUNC(niyanpai_state::blitter_2_w)).umask16(0x00ff); + map(0x240820, 0x24083f).w(this, FUNC(niyanpai_state::clut_2_w)).umask16(0x00ff); - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) + map(0x240a01, 0x240a01).w(this, FUNC(niyanpai_state::clutsel_0_w)); + map(0x240c01, 0x240c01).w(this, FUNC(niyanpai_state::clutsel_1_w)); + map(0x240e01, 0x240e01).w(this, FUNC(niyanpai_state::clutsel_2_w)); - AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) - AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r) - AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") + map(0x280000, 0x280001).r(this, FUNC(niyanpai_state::dipsw_r)); + map(0x280200, 0x280201).r(this, FUNC(niyanpai_state::musobana_inputport_0_r)); + map(0x280400, 0x280401).portr("SYSTEM"); - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} static INPUT_PORTS_START( niyanpai ) diff --git a/src/mame/drivers/nmg5.cpp b/src/mame/drivers/nmg5.cpp index f8879011d23..ac5d0eed4bf 100644 --- a/src/mame/drivers/nmg5.cpp +++ b/src/mame/drivers/nmg5.cpp @@ -367,44 +367,46 @@ WRITE8_MEMBER(nmg5_state::oki_banking_w) ********************************************************************/ -ADDRESS_MAP_START(nmg5_state::nmg5_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x120000, 0x12ffff) AM_RAM - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x180000, 0x180001) AM_WRITE(nmg5_soundlatch_w) - AM_RANGE(0x180002, 0x180003) AM_WRITENOP - AM_RANGE(0x180004, 0x180005) AM_READWRITE(prot_r, prot_w) - AM_RANGE(0x180006, 0x180007) AM_WRITE(gfx_bank_w) - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW") - AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("SYSTEM") - AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("INPUTS") - AM_RANGE(0x18000e, 0x18000f) AM_WRITE(priority_reg_w) - AM_RANGE(0x300002, 0x300009) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0x30000a, 0x30000f) AM_WRITENOP - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("bitmap") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmg5_state::pclubys_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x440000, 0x4407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x460000, 0x4607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x480000, 0x480001) AM_WRITE(nmg5_soundlatch_w) - AM_RANGE(0x480002, 0x480003) AM_WRITENOP - AM_RANGE(0x480004, 0x480005) AM_READWRITE(prot_r, prot_w) - AM_RANGE(0x480006, 0x480007) AM_WRITE(gfx_bank_w) - AM_RANGE(0x480008, 0x480009) AM_READ_PORT("DSW") - AM_RANGE(0x48000a, 0x48000b) AM_READ_PORT("SYSTEM") - AM_RANGE(0x48000c, 0x48000d) AM_READ_PORT("INPUTS") - AM_RANGE(0x48000e, 0x48000f) AM_WRITE(priority_reg_w) - AM_RANGE(0x500002, 0x500009) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0x520000, 0x521fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x522000, 0x523fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("bitmap") -ADDRESS_MAP_END +void nmg5_state::nmg5_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x120000, 0x12ffff).ram(); + map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); + map(0x180000, 0x180001).w(this, FUNC(nmg5_state::nmg5_soundlatch_w)); + map(0x180002, 0x180003).nopw(); + map(0x180004, 0x180005).rw(this, FUNC(nmg5_state::prot_r), FUNC(nmg5_state::prot_w)); + map(0x180006, 0x180007).w(this, FUNC(nmg5_state::gfx_bank_w)); + map(0x180008, 0x180009).portr("DSW"); + map(0x18000a, 0x18000b).portr("SYSTEM"); + map(0x18000c, 0x18000d).portr("INPUTS"); + map(0x18000e, 0x18000f).w(this, FUNC(nmg5_state::priority_reg_w)); + map(0x300002, 0x300009).writeonly().share("scroll_ram"); + map(0x30000a, 0x30000f).nopw(); + map(0x320000, 0x321fff).ram().w(this, FUNC(nmg5_state::bg_videoram_w)).share("bg_videoram"); + map(0x322000, 0x323fff).ram().w(this, FUNC(nmg5_state::fg_videoram_w)).share("fg_videoram"); + map(0x800000, 0x80ffff).ram().share("bitmap"); +} + +void nmg5_state::pclubys_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x440000, 0x4407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x460000, 0x4607ff).ram().share("spriteram"); + map(0x480000, 0x480001).w(this, FUNC(nmg5_state::nmg5_soundlatch_w)); + map(0x480002, 0x480003).nopw(); + map(0x480004, 0x480005).rw(this, FUNC(nmg5_state::prot_r), FUNC(nmg5_state::prot_w)); + map(0x480006, 0x480007).w(this, FUNC(nmg5_state::gfx_bank_w)); + map(0x480008, 0x480009).portr("DSW"); + map(0x48000a, 0x48000b).portr("SYSTEM"); + map(0x48000c, 0x48000d).portr("INPUTS"); + map(0x48000e, 0x48000f).w(this, FUNC(nmg5_state::priority_reg_w)); + map(0x500002, 0x500009).writeonly().share("scroll_ram"); + map(0x520000, 0x521fff).ram().w(this, FUNC(nmg5_state::bg_videoram_w)).share("bg_videoram"); + map(0x522000, 0x523fff).ram().w(this, FUNC(nmg5_state::fg_videoram_w)).share("fg_videoram"); + map(0x800000, 0x80ffff).ram().share("bitmap"); +} /******************************************************************* @@ -412,23 +414,26 @@ ADDRESS_MAP_END ********************************************************************/ -ADDRESS_MAP_START(nmg5_state::nmg5_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmg5_state::pclubys_sound_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmg5_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(oki_banking_w) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x18, 0x18) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void nmg5_state::nmg5_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram(); +} + +void nmg5_state::pclubys_sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void nmg5_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(nmg5_state::oki_banking_w)); + map(0x10, 0x11).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x18, 0x18).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1c, 0x1c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( nmg5 ) PORT_START("DSW") diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp index 67168813772..394c55627c2 100644 --- a/src/mame/drivers/nmk16.cpp +++ b/src/mame/drivers/nmk16.cpp @@ -320,187 +320,199 @@ WRITE16_MEMBER(nmk16_state::nmk_txvideoram_w) /***************************************************************************/ -ADDRESS_MAP_START(nmk16_state::vandyke_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c007) AM_WRITE(vandyke_scroll_w) - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */ - AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::vandykeb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") -// AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x080010, 0x08001d) AM_WRITE(vandykeb_scroll_w) /* 10, 12, 1a, 1c */ - AM_RANGE(0x080016, 0x080017) AM_WRITENOP /* IRQ enable? */ - AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w) -// AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c007) AM_WRITENOP /* just in case... */ - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */ - AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::manybloc_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") - AM_RANGE(0x080010, 0x080011) AM_WRITENOP /* See notes at the top of the driver */ - AM_RANGE(0x080012, 0x080013) AM_WRITENOP /* See notes at the top of the driver */ - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x08001c, 0x08001d) AM_WRITENOP /* See notes at the top of the driver */ - AM_RANGE(0x08001e, 0x08001f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(manybloc_scroll_w) AM_SHARE("scrollram") - AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::tharrier_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ(tharrier_mcu_r) // AM_READ_PORT("IN1") - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */ - AM_RANGE(0x080010, 0x080011) AM_WRITE(tharrier_mcu_control_w) - AM_RANGE(0x080012, 0x080013) AM_WRITENOP -// AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) -// AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2") - AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -// AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w) - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM /* Unused txvideoram area? */ - AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::tharrier_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xf400, 0xf400) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xf500, 0xf500) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0xf600, 0xf600) AM_WRITE(tharrier_oki6295_bankswitch_w<0>) - AM_RANGE(0xf700, 0xf700) AM_WRITE(tharrier_oki6295_bankswitch_w<1>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::tharrier_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END +void nmk16_state::vandyke_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); + map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c007).w(this, FUNC(nmk16_state::vandyke_scroll_w)); + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x094000, 0x097fff).ram(); /* what is this? */ + map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().share("mainram"); +} + +void nmk16_state::vandykeb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); +// map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x080010, 0x08001d).w(this, FUNC(nmk16_state::vandykeb_scroll_w)); /* 10, 12, 1a, 1c */ + map(0x080016, 0x080017).nopw(); /* IRQ enable? */ + map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); +// map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c007).nopw(); /* just in case... */ + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x094000, 0x097fff).ram(); /* what is this? */ + map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().share("mainram"); +} + +void nmk16_state::manybloc_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080004, 0x080005).portr("DSW1"); + map(0x080010, 0x080011).nopw(); /* See notes at the top of the driver */ + map(0x080012, 0x080013).nopw(); /* See notes at the top of the driver */ + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x08001c, 0x08001d).nopw(); /* See notes at the top of the driver */ + map(0x08001f, 0x08001f).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09cfff).ram().w(this, FUNC(nmk16_state::manybloc_scroll_w)).share("scrollram"); + map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().share("mainram"); +} + +void nmk16_state::tharrier_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).r(this, FUNC(nmk16_state::tharrier_mcu_r)); // AM_READ_PORT("IN1") + map(0x080004, 0x080005).portr("DSW1"); + map(0x08000f, 0x08000f).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */ + map(0x080010, 0x080011).w(this, FUNC(nmk16_state::tharrier_mcu_control_w)); + map(0x080012, 0x080013).nopw(); +// map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); +// map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x080202, 0x080203).portr("IN2"); + map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +// map(0x08c000, 0x08c007).w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram(); /* Unused txvideoram area? */ + map(0x09d000, 0x09d7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} + +void nmk16_state::tharrier_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xf000, 0xf000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0xf400, 0xf400).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf500, 0xf500).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf600, 0xf600).w(this, FUNC(nmk16_state::tharrier_oki6295_bankswitch_w<0>)); + map(0xf700, 0xf700).w(this, FUNC(nmk16_state::tharrier_oki6295_bankswitch_w<1>)); +} + +void nmk16_state::tharrier_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} //Read input port 1 030c8/ BAD //3478 GOOD -ADDRESS_MAP_START(nmk16_state::mustang_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) AM_WRITENOP - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w) // frame number? - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w) - AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ?? - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::mustangb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") - AM_RANGE(0x08000e, 0x08000f) AM_NOP - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number? - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w) - AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ?? - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nmk16_state::twinactn_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") - AM_RANGE(0x08000e, 0x08000f) AM_NOP - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITENOP // frame number? - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c001) AM_WRITE(mustang_scroll_w) - AM_RANGE(0x08c002, 0x08c087) AM_WRITENOP // ?? - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nmk16_state::acrobatm_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x80000, 0x8ffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0xc0000, 0xc0001) AM_READ_PORT("IN0") - AM_RANGE(0xc0002, 0xc0003) AM_READ_PORT("IN1") - AM_RANGE(0xc0008, 0xc0009) AM_READ_PORT("DSW1") - AM_RANGE(0xc000a, 0xc000b) AM_READ_PORT("DSW2") - AM_RANGE(0xc000e, 0xc000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0xc0014, 0xc0015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0xc0016, 0xc0017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0xc0018, 0xc0019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0xc001e, 0xc001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0xc4000, 0xc45ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc8000, 0xc8007) AM_RAM_WRITE(nmk_scroll_w) - AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0xd4000, 0xd47ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::bioship_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) -// AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_bioship_x0016_w) - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x084000, 0x084001) AM_WRITE(bioship_bank_w) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(bioshipbg_scroll_w) - AM_RANGE(0x08c010, 0x08c017) AM_RAM_WRITE(bioship_scroll_w) - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END +void nmk16_state::mustang_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080004, 0x080005).portr("DSW1"); + map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x08000e, 0x08000f).nopw(); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); // frame number? + map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c001).w(this, FUNC(nmk16_state::mustang_scroll_w)); + map(0x08c002, 0x08c087).nopw(); // ?? + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} + +void nmk16_state::mustangb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080004, 0x080005).portr("DSW1"); + map(0x08000e, 0x08000f).noprw(); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).nopw(); // frame number? + map(0x08001e, 0x08001f).w("seibu_sound", FUNC(seibu_sound_device::main_mustb_w)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c001).w(this, FUNC(nmk16_state::mustang_scroll_w)); + map(0x08c002, 0x08c087).nopw(); // ?? + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} + + +void nmk16_state::twinactn_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080004, 0x080005).portr("DSW1"); + map(0x08000e, 0x08000f).noprw(); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).nopw(); // frame number? + map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c001).w(this, FUNC(nmk16_state::mustang_scroll_w)); + map(0x08c002, 0x08c087).nopw(); // ?? + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} + + +void nmk16_state::acrobatm_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x80000, 0x8ffff).ram().share("mainram"); + map(0xc0000, 0xc0001).portr("IN0"); + map(0xc0002, 0xc0003).portr("IN1"); + map(0xc0008, 0xc0009).portr("DSW1"); + map(0xc000a, 0xc000b).portr("DSW2"); + map(0xc000f, 0xc000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0xc0014, 0xc0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0xc0016, 0xc0017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0xc0018, 0xc0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0xc001f, 0xc001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0xc4000, 0xc45ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xc8000, 0xc8007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0xcc000, 0xcffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0xd4000, 0xd47ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); +} + +void nmk16_state::bioship_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); + map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); +// map(0xc0014, 0xc0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_bioship_x0016_w)); + map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x084000, 0x084001).w(this, FUNC(nmk16_state::bioship_bank_w)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c007).ram().w(this, FUNC(nmk16_state::bioshipbg_scroll_w)); + map(0x08c010, 0x08c017).ram().w(this, FUNC(nmk16_state::bioship_scroll_w)); + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().share("mainram"); +} /****************************************************************************************** @@ -661,26 +673,27 @@ WRITE16_MEMBER(nmk16_state::hachamf_mainram_w) } -ADDRESS_MAP_START(nmk16_state::hachamf_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void nmk16_state::hachamf_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); /* I/O Region */ - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); + map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); /* Video Region */ - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w) - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c007).w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); /* Main RAM, inc sprites, shared with MCU */ - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") // ram is shared with MCU -ADDRESS_MAP_END + map(0x0f0000, 0x0fffff).ram().share("mainram"); // ram is shared with MCU +} @@ -888,29 +901,30 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::hachamf_mcu_sim) mcu_run(0); } -ADDRESS_MAP_START(nmk16_state::tdragon_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x044022, 0x044023) AM_READNOP /* No Idea */ +void nmk16_state::tdragon_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x044022, 0x044023).nopr(); /* No Idea */ // AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM /* Work RAM */ // AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ // AM_RANGE(0x0b9000, 0x0bdfff) AM_RAM AM_SHARE("mcu_work_ram") /* Work RAM */ // AM_RANGE(0x0be000, 0x0befff) AM_READWRITE(mcu_shared_r,tdragon_mcu_shared_w) AM_SHARE("mcu_shared_ram") /* Work RAM */ // AM_RANGE(0x0bf000, 0x0bffff) AM_RAM /* Work RAM */ - AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0") - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("IN1") - AM_RANGE(0x0c0008, 0x0c0009) AM_READ_PORT("DSW1") - AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("DSW2") - AM_RANGE(0x0c000e, 0x0c000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */ - AM_RANGE(0x0c0016, 0x0c0017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */ - AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w) - AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") -ADDRESS_MAP_END + map(0x0b0000, 0x0bffff).ram().share("mainram"); + map(0x0c0000, 0x0c0001).portr("IN0"); + map(0x0c0002, 0x0c0003).portr("IN1"); + map(0x0c0008, 0x0c0009).portr("DSW1"); + map(0x0c000a, 0x0c000b).portr("DSW2"); + map(0x0c000f, 0x0c000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x0c0014, 0x0c0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); /* Maybe */ + map(0x0c0016, 0x0c0017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0x0c0018, 0x0c0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); /* Tile Bank ? */ + map(0x0c001f, 0x0c001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x0c4000, 0x0c4007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x0c8000, 0x0c87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0cc000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x0d0000, 0x0d07ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); +} // No sprites without this. Is it actually protection? READ16_MEMBER(nmk16_state::tdragonb_prot_r) @@ -918,218 +932,233 @@ READ16_MEMBER(nmk16_state::tdragonb_prot_r) return 0x0003; } -ADDRESS_MAP_START(nmk16_state::tdragonb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x044022, 0x044023) AM_READ(tdragonb_prot_r) - AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0") - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("IN1") - AM_RANGE(0x0c0008, 0x0c0009) AM_READ_PORT("DSW1") - AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("DSW2") - AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */ - AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */ - AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_mustb_w) - AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w) - AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::ssmissin_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0") - AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("IN1") - AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("DSW1") +void nmk16_state::tdragonb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x044022, 0x044023).r(this, FUNC(nmk16_state::tdragonb_prot_r)); + map(0x0b0000, 0x0bffff).ram().share("mainram"); + map(0x0c0000, 0x0c0001).portr("IN0"); + map(0x0c0002, 0x0c0003).portr("IN1"); + map(0x0c0008, 0x0c0009).portr("DSW1"); + map(0x0c000a, 0x0c000b).portr("DSW2"); + map(0x0c0014, 0x0c0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); /* Maybe */ + map(0x0c0018, 0x0c0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); /* Tile Bank ? */ + map(0x0c001e, 0x0c001f).w("seibu_sound", FUNC(seibu_sound_device::main_mustb_w)); + map(0x0c4000, 0x0c4007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x0c8000, 0x0c87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0cc000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x0d0000, 0x0d07ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); +} + +void nmk16_state::ssmissin_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0b0000, 0x0bffff).ram().share("mainram"); + map(0x0c0000, 0x0c0001).portr("IN0"); + map(0x0c0004, 0x0c0005).portr("IN1"); + map(0x0c0006, 0x0c0007).portr("DSW1"); // AM_RANGE(0x0c000e, 0x0c000f) AM_READ(??) - AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */ - AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */ - AM_RANGE(0x0c001e, 0x0c001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w) - AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x0d0000, 0x0d07ff) AM_MIRROR(0x1800) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") //mirror for airattck -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::ssmissin_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(ssmissin_soundbank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::oki1_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::oki2_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::strahl_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x80000, 0x80001) AM_READ_PORT("IN0") - AM_RANGE(0x80002, 0x80003) AM_READ_PORT("IN1") - AM_RANGE(0x80008, 0x80009) AM_READ_PORT("DSW1") - AM_RANGE(0x8000a, 0x8000b) AM_READ_PORT("DSW2") - AM_RANGE(0x8000e, 0x8000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x80014, 0x80015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x80016, 0x80017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0x8001e, 0x8001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x84000, 0x84007) AM_RAM_WRITE(nmk_scroll_w) - AM_RANGE(0x88000, 0x88007) AM_RAM_WRITE(nmk_scroll_2_w) - AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x94000, 0x97fff) AM_RAM_WRITE(nmk_fgvideoram_w) AM_SHARE("nmk_fgvideoram") - AM_RANGE(0x9c000, 0x9c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0xf0000, 0xfffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::macross_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(nmk_scroll_w) - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::gunnail_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") - AM_RANGE(0x08000e, 0x08000f) AM_DEVREAD8("nmk004", nmk004_device, read, 0x00ff) - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x080016, 0x080017) AM_WRITE(nmk16_x0016_w) - AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("nmk004", nmk004_device, write, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08c000, 0x08c1ff) AM_WRITEONLY AM_SHARE("scrollram") - AM_RANGE(0x08c200, 0x08c3ff) AM_WRITEONLY AM_SHARE("scrollramy") - AM_RANGE(0x08c400, 0x08c7ff) AM_WRITEONLY // unknown - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x001000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::macross2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") - AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") - AM_RANGE(0x10000e, 0x10000f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */ - AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x100016, 0x100017) AM_WRITE(macross2_sound_reset_w) /* Z80 reset */ - AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) /* to Z80 */ - AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - - AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy") - AM_RANGE(0x130400, 0x1307ff) AM_RAM - - AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram_w<1>) AM_SHARE("nmk_bgvideoram1") - AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram_w<2>) AM_SHARE("nmk_bgvideoram2") - AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w<3>) AM_SHARE("nmk_bgvideoram3") - - AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::tdragon3h_map) // bootleg has these 2 swapped - AM_IMPORT_FROM(macross2_map) - AM_RANGE(0x10000e, 0x10000f) AM_READ_PORT("DSW2") - AM_RANGE(0x10000a, 0x10000b) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::raphero_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") - AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") - AM_RANGE(0x10000e, 0x10000f) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) /* from Z80 */ - AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable or z80 sound reset like in Macross 2? */ - AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) /* to Z80 */ - AM_RANGE(0x120000, 0x1207ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - - AM_RANGE(0x130000, 0x1301ff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0x130200, 0x1303ff) AM_RAM AM_SHARE("scrollramy") - AM_RANGE(0x130400, 0x1307ff) AM_RAM - - AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x144000, 0x147fff) AM_RAM_WRITE(nmk_bgvideoram_w<1>) AM_SHARE("nmk_bgvideoram1") - AM_RANGE(0x148000, 0x14bfff) AM_RAM_WRITE(nmk_bgvideoram_w<2>) AM_SHARE("nmk_bgvideoram2") - AM_RANGE(0x14c000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w<3>) AM_SHARE("nmk_bgvideoram3") - - - AM_RANGE(0x170000, 0x170fff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::raphero_sound_mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xc800, 0xc800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xc808, 0xc808) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0xc810, 0xc817) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(macross2_sound_bank_w) - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // main cpu - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::macross2_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") /* banked ROM */ - AM_RANGE(0xa000, 0xa000) AM_READNOP /* IRQ ack? watchdog? */ - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe001, 0xe001) AM_WRITE(macross2_sound_bank_w) - AM_RANGE(0xf000, 0xf000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* from 68000 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::macross2_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::bjtwin_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2") - AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w) - AM_RANGE(0x084000, 0x084001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x084010, 0x084011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x084020, 0x08402f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) - AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x094000, 0x094001) AM_WRITE(nmk_tilebank_w) - AM_RANGE(0x094002, 0x094003) AM_WRITENOP /* IRQ enable? */ - AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END + map(0x0c0014, 0x0c0015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); /* Maybe */ + map(0x0c0018, 0x0c0019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); /* Tile Bank ? */ + map(0x0c001f, 0x0c001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0c4000, 0x0c4007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x0c8000, 0x0c87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0cc000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x0d0000, 0x0d07ff).mirror(0x1800).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); //mirror for airattck +} + +void nmk16_state::ssmissin_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(nmk16_state::ssmissin_soundbank_w)); + map(0x9800, 0x9800).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void nmk16_state::oki1_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank1"); +} + +void nmk16_state::oki2_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank2"); +} + +void nmk16_state::strahl_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x80000, 0x80001).portr("IN0"); + map(0x80002, 0x80003).portr("IN1"); + map(0x80008, 0x80009).portr("DSW1"); + map(0x8000a, 0x8000b).portr("DSW2"); + map(0x8000f, 0x8000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x80014, 0x80015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x80016, 0x80017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0x8001f, 0x8001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x84000, 0x84007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x88000, 0x88007).ram().w(this, FUNC(nmk16_state::nmk_scroll_2_w)); + map(0x8c000, 0x8c7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x90000, 0x93fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x94000, 0x97fff).ram().w(this, FUNC(nmk16_state::nmk_fgvideoram_w)).share("nmk_fgvideoram"); + map(0x9c000, 0x9c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0xf0000, 0xfffff).ram().share("mainram"); +} + +void nmk16_state::macross_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); + map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c007).ram().w(this, FUNC(nmk16_state::nmk_scroll_w)); + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} + +void nmk16_state::gunnail_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); + map(0x08000f, 0x08000f).r(m_nmk004, FUNC(nmk004_device::read)); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x080016, 0x080017).w(this, FUNC(nmk16_state::nmk16_x0016_w)); + map(0x080018, 0x080019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x08001f, 0x08001f).w(m_nmk004, FUNC(nmk004_device::write)); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08c000, 0x08c1ff).writeonly().share("scrollram"); + map(0x08c200, 0x08c3ff).writeonly().share("scrollramy"); + map(0x08c400, 0x08c7ff).writeonly(); // unknown + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x09c000, 0x09cfff).mirror(0x001000).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x0f0000, 0x0fffff).ram().share("mainram"); +} + +void nmk16_state::macross2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).portr("IN0"); + map(0x100002, 0x100003).portr("IN1"); + map(0x100008, 0x100009).portr("DSW1"); + map(0x10000a, 0x10000b).portr("DSW2"); + map(0x10000f, 0x10000f).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */ + map(0x100014, 0x100015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x100016, 0x100017).w(this, FUNC(nmk16_state::macross2_sound_reset_w)); /* Z80 reset */ + map(0x100018, 0x100019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x10001f, 0x10001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* to Z80 */ + map(0x120000, 0x1207ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + + map(0x130000, 0x1301ff).ram().share("scrollram"); + map(0x130200, 0x1303ff).ram().share("scrollramy"); + map(0x130400, 0x1307ff).ram(); + + map(0x140000, 0x143fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x144000, 0x147fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<1>)).share("nmk_bgvideoram1"); + map(0x148000, 0x14bfff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<2>)).share("nmk_bgvideoram2"); + map(0x14c000, 0x14ffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<3>)).share("nmk_bgvideoram3"); + + map(0x170000, 0x170fff).mirror(0x1000).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x1f0000, 0x1fffff).ram().share("mainram"); +} + +void nmk16_state::tdragon3h_map(address_map &map) +{ // bootleg has these 2 swapped + macross2_map(map); + map(0x10000e, 0x10000f).portr("DSW2"); + map(0x10000b, 0x10000b).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */ +} + +void nmk16_state::raphero_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).portr("IN0"); + map(0x100002, 0x100003).portr("IN1"); + map(0x100008, 0x100009).portr("DSW1"); + map(0x10000a, 0x10000b).portr("DSW2"); + map(0x10000f, 0x10000f).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* from Z80 */ + map(0x100014, 0x100015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x100016, 0x100017).nopw(); /* IRQ enable or z80 sound reset like in Macross 2? */ + map(0x100018, 0x100019).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x10001f, 0x10001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* to Z80 */ + map(0x120000, 0x1207ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + + map(0x130000, 0x1301ff).ram().share("scrollram"); + map(0x130200, 0x1303ff).ram().share("scrollramy"); + map(0x130400, 0x1307ff).ram(); + + map(0x140000, 0x143fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x144000, 0x147fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<1>)).share("nmk_bgvideoram1"); + map(0x148000, 0x14bfff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<2>)).share("nmk_bgvideoram2"); + map(0x14c000, 0x14ffff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<3>)).share("nmk_bgvideoram3"); + + + map(0x170000, 0x170fff).mirror(0x1000).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); + map(0x1f0000, 0x1fffff).ram().share("mainram"); +} + +void nmk16_state::raphero_sound_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("audiobank"); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc800, 0xc800).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc808, 0xc808).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc810, 0xc817).w("nmk112", FUNC(nmk112_device::okibank_w)); + map(0xd000, 0xd000).w(this, FUNC(nmk16_state::macross2_sound_bank_w)); + map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // main cpu + map(0xe000, 0xffff).ram(); +} + +void nmk16_state::macross2_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("audiobank"); /* banked ROM */ + map(0xa000, 0xa000).nopr(); /* IRQ ack? watchdog? */ + map(0xc000, 0xdfff).ram(); + map(0xe001, 0xe001).w(this, FUNC(nmk16_state::macross2_sound_bank_w)); + map(0xf000, 0xf000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* from 68000 */ +} + +void nmk16_state::macross2_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x80).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x88, 0x88).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w)); +} + +void nmk16_state::bjtwin_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); + map(0x080002, 0x080003).portr("IN1"); + map(0x080008, 0x080009).portr("DSW1"); + map(0x08000a, 0x08000b).portr("DSW2"); + map(0x080014, 0x080015).w(this, FUNC(nmk16_state::nmk_flipscreen_w)); + map(0x084001, 0x084001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x084011, 0x084011).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x084020, 0x08402f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); + map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x094000, 0x094001).w(this, FUNC(nmk16_state::nmk_tilebank_w)); + map(0x094002, 0x094003).nopw(); /* IRQ enable? */ + map(0x09c000, 0x09cfff).mirror(0x1000).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); + map(0x0f0000, 0x0fffff).ram().share("mainram"); +} static INPUT_PORTS_START( vandyke ) PORT_START("IN0") @@ -4936,54 +4965,56 @@ WRITE16_MEMBER(nmk16_state::afega_scroll_w) */ -ADDRESS_MAP_START(nmk16_state::afega_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0") // Buttons - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1") // P1 + P2 - AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1") // 2 x DSW - AM_RANGE(0x080012, 0x080013) AM_READ(afega_unknown_r) - AM_RANGE(0x080000, 0x08001d) AM_WRITEONLY // - AM_RANGE(0x08001e, 0x08001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sound CPU - AM_RANGE(0x080020, 0x087fff) AM_WRITEONLY // - AM_RANGE(0x084000, 0x084003) AM_RAM_WRITE(afega_scroll_w<0>) // Scroll on redhawkb (mirror or changed?..) - AM_RANGE(0x084004, 0x084007) AM_RAM_WRITE(afega_scroll_w<1>) // Scroll on redhawkb (mirror or changed?..) - AM_RANGE(0x088000, 0x0885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x088600, 0x08bfff) AM_WRITEONLY // - AM_RANGE(0x08c000, 0x08c003) AM_RAM_WRITE(afega_scroll_w<0>) AM_SHARE("afega_scroll_0") // Scroll - AM_RANGE(0x08c004, 0x08c007) AM_RAM_WRITE(afega_scroll_w<1>) AM_SHARE("afega_scroll_1") // - AM_RANGE(0x08c008, 0x08ffff) AM_WRITEONLY // - AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ? - AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1 - - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END +void nmk16_state::afega_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).portr("IN0"); // Buttons + map(0x080002, 0x080003).portr("IN1"); // P1 + P2 + map(0x080004, 0x080005).portr("DSW1"); // 2 x DSW + map(0x080012, 0x080013).r(this, FUNC(nmk16_state::afega_unknown_r)); + map(0x080000, 0x08001d).writeonly(); // + map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0x080020, 0x087fff).writeonly(); // + map(0x084000, 0x084003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)); // Scroll on redhawkb (mirror or changed?..) + map(0x084004, 0x084007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)); // Scroll on redhawkb (mirror or changed?..) + map(0x088000, 0x0885ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x088600, 0x08bfff).writeonly(); // + map(0x08c000, 0x08c003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)).share("afega_scroll_0"); // Scroll + map(0x08c004, 0x08c007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)).share("afega_scroll_1"); // + map(0x08c008, 0x08ffff).writeonly(); // + map(0x090000, 0x093fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); // Layer 0 // ? + map(0x09c000, 0x09c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); // Layer 1 + + map(0x0c0000, 0x0cffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); + map(0x0f0000, 0x0fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} // firehawk has 0x100000 bytes of program rom (at least the switchable version) so the above can't work. -ADDRESS_MAP_START(nmk16_state::firehawk_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0") // Buttons - AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1") // P1 + P2 - AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW1") // 2 x DSW - AM_RANGE(0x280012, 0x280013) AM_READ(afega_unknown_r) - AM_RANGE(0x280000, 0x28001d) AM_WRITEONLY // - AM_RANGE(0x28001e, 0x28001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sound CPU - AM_RANGE(0x280020, 0x287fff) AM_WRITEONLY // - AM_RANGE(0x284000, 0x284003) AM_RAM_WRITE(afega_scroll_w<0>) // Scroll on redhawkb (mirror or changed?..) - AM_RANGE(0x284004, 0x284007) AM_RAM_WRITE(afega_scroll_w<1>) // Scroll on redhawkb (mirror or changed?..) - AM_RANGE(0x288000, 0x2885ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x288600, 0x28bfff) AM_WRITEONLY // - AM_RANGE(0x28c000, 0x28c003) AM_RAM_WRITE(afega_scroll_w<0>) AM_SHARE("afega_scroll_0") // Scroll - AM_RANGE(0x28c004, 0x28c007) AM_RAM_WRITE(afega_scroll_w<1>) AM_SHARE("afega_scroll_1") // - AM_RANGE(0x28c008, 0x28ffff) AM_WRITEONLY // - AM_RANGE(0x290000, 0x293fff) AM_RAM_WRITE(nmk_bgvideoram_w<0>) AM_SHARE("nmk_bgvideoram0") // Layer 0 // ? - AM_RANGE(0x29c000, 0x29c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_SHARE("nmk_txvideoram") // Layer 1 - - AM_RANGE(0x3c0000, 0x3cffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") - AM_RANGE(0x3f0000, 0x3fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_SHARE("mainram") -ADDRESS_MAP_END +void nmk16_state::firehawk_map(address_map &map) +{ + map.global_mask(0x3fffff); + map(0x000000, 0x0fffff).rom(); + map(0x280000, 0x280001).portr("IN0"); // Buttons + map(0x280002, 0x280003).portr("IN1"); // P1 + P2 + map(0x280004, 0x280005).portr("DSW1"); // 2 x DSW + map(0x280012, 0x280013).r(this, FUNC(nmk16_state::afega_unknown_r)); + map(0x280000, 0x28001d).writeonly(); // + map(0x28001f, 0x28001f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0x280020, 0x287fff).writeonly(); // + map(0x284000, 0x284003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)); // Scroll on redhawkb (mirror or changed?..) + map(0x284004, 0x284007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)); // Scroll on redhawkb (mirror or changed?..) + map(0x288000, 0x2885ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x288600, 0x28bfff).writeonly(); // + map(0x28c000, 0x28c003).ram().w(this, FUNC(nmk16_state::afega_scroll_w<0>)).share("afega_scroll_0"); // Scroll + map(0x28c004, 0x28c007).ram().w(this, FUNC(nmk16_state::afega_scroll_w<1>)).share("afega_scroll_1"); // + map(0x28c008, 0x28ffff).writeonly(); // + map(0x290000, 0x293fff).ram().w(this, FUNC(nmk16_state::nmk_bgvideoram_w<0>)).share("nmk_bgvideoram0"); // Layer 0 // ? + map(0x29c000, 0x29c7ff).ram().w(this, FUNC(nmk16_state::nmk_txvideoram_w)).share("nmk_txvideoram"); // Layer 1 + + map(0x3c0000, 0x3cffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); + map(0x3f0000, 0x3fffff).ram().w(this, FUNC(nmk16_state::nmk16_mainram_strange_w)).share("mainram"); +} /*************************************************************************** @@ -5001,25 +5032,27 @@ WRITE8_MEMBER(nmk16_state::spec2k_oki1_banking_w) m_oki2->set_rom_bank(1); } -ADDRESS_MAP_START(nmk16_state::afega_sound_cpu) - AM_RANGE(0x0003, 0x0003) AM_WRITENOP // bug in sound prg? - AM_RANGE(0x0004, 0x0004) AM_WRITENOP // bug in sound prg? - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU - AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 - AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // M6295 -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmk16_state::firehawk_sound_cpu) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM // not used, only tested - AM_RANGE(0xfff0, 0xfff0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xfff2, 0xfff2) AM_WRITE(spec2k_oki1_banking_w ) - AM_RANGE(0xfff8, 0xfff8) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0xfffa, 0xfffa) AM_DEVREADWRITE("oki1", okim6295_device, read, write) -ADDRESS_MAP_END +void nmk16_state::afega_sound_cpu(address_map &map) +{ + map(0x0003, 0x0003).nopw(); // bug in sound prg? + map(0x0004, 0x0004).nopw(); // bug in sound prg? + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); // RAM + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU + map(0xf808, 0xf809).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151 + map(0xf80a, 0xf80a).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 +} + +void nmk16_state::firehawk_sound_cpu(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram(); // not used, only tested + map(0xfff0, 0xfff0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xfff2, 0xfff2).w(this, FUNC(nmk16_state::spec2k_oki1_banking_w)); + map(0xfff8, 0xfff8).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xfffa, 0xfffa).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} WRITE8_MEMBER(nmk16_state::twinactn_oki_bank_w) @@ -5032,13 +5065,14 @@ WRITE8_MEMBER(nmk16_state::twinactn_oki_bank_w) // logerror("%04x: oki bank %02x\n", m_audiocpu->pc(), data); } -ADDRESS_MAP_START(nmk16_state::twinactn_sound_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(twinactn_oki_bank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void nmk16_state::twinactn_sound_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(nmk16_state::twinactn_oki_bank_w)); + map(0x9800, 0x9800).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU +} /*************************************************************************** diff --git a/src/mame/drivers/nmkmedal.cpp b/src/mame/drivers/nmkmedal.cpp index b0004e01e5d..af8df30be89 100644 --- a/src/mame/drivers/nmkmedal.cpp +++ b/src/mame/drivers/nmkmedal.cpp @@ -46,10 +46,11 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(nmkmedal_state::mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END +void nmkmedal_state::mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0xc000, 0xc7ff).ram(); +} static INPUT_PORTS_START( trocana ) INPUT_PORTS_END diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp index c31be561cb3..4887d66749a 100644 --- a/src/mame/drivers/nokia_3310.cpp +++ b/src/mame/drivers/nokia_3310.cpp @@ -631,19 +631,20 @@ WRITE8_MEMBER(noki3310_state::mad2_mcuif_w) } -ADDRESS_MAP_START(noki3310_state::noki3310_map) - ADDRESS_MAP_GLOBAL_MASK(0x00ffffff) - AM_RANGE(0x00000000, 0x0000ffff) AM_MIRROR(0x80000) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // boot ROM / RAM - AM_RANGE(0x00010000, 0x00010fff) AM_MIRROR(0x8f000) AM_READWRITE16(dsp_ram_r, dsp_ram_w, 0xffffffff) // DSP shared memory - AM_RANGE(0x00020000, 0x000200ff) AM_MIRROR(0x8ff00) AM_READWRITE8(mad2_io_r, mad2_io_w, 0xffffffff) // IO (Primary I/O range, configures peripherals) - AM_RANGE(0x00030000, 0x00030003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_dspif_r, mad2_dspif_w, 0xffffffff) // DSPIF (API control register) - AM_RANGE(0x00040000, 0x00040003) AM_MIRROR(0x8fffc) AM_READWRITE8(mad2_mcuif_r, mad2_mcuif_w, 0xffffffff) // MCUIF (Secondary I/O range, configures memory ranges) - AM_RANGE(0x00100000, 0x0017ffff) AM_READWRITE16(ram_r, ram_w, 0xffffffff) // RAMSelX - AM_RANGE(0x00200000, 0x005fffff) AM_DEVREADWRITE16("flash", intelfsh16_device, read, write, 0xffffffff) // ROM1SelX - AM_RANGE(0x00600000, 0x009fffff) AM_UNMAP // ROM2SelX - AM_RANGE(0x00a00000, 0x00dfffff) AM_UNMAP // EEPROMSelX - AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // Reserved -ADDRESS_MAP_END +void noki3310_state::noki3310_map(address_map &map) +{ + map.global_mask(0x00ffffff); + map(0x00000000, 0x0000ffff).mirror(0x80000).rw(this, FUNC(noki3310_state::ram_r), FUNC(noki3310_state::ram_w)); // boot ROM / RAM + map(0x00010000, 0x00010fff).mirror(0x8f000).rw(this, FUNC(noki3310_state::dsp_ram_r), FUNC(noki3310_state::dsp_ram_w)); // DSP shared memory + map(0x00020000, 0x000200ff).mirror(0x8ff00).rw(this, FUNC(noki3310_state::mad2_io_r), FUNC(noki3310_state::mad2_io_w)); // IO (Primary I/O range, configures peripherals) + map(0x00030000, 0x00030003).mirror(0x8fffc).rw(this, FUNC(noki3310_state::mad2_dspif_r), FUNC(noki3310_state::mad2_dspif_w)); // DSPIF (API control register) + map(0x00040000, 0x00040003).mirror(0x8fffc).rw(this, FUNC(noki3310_state::mad2_mcuif_r), FUNC(noki3310_state::mad2_mcuif_w)); // MCUIF (Secondary I/O range, configures memory ranges) + map(0x00100000, 0x0017ffff).rw(this, FUNC(noki3310_state::ram_r), FUNC(noki3310_state::ram_w)); // RAMSelX + map(0x00200000, 0x005fffff).rw("flash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); // ROM1SelX + map(0x00600000, 0x009fffff).unmaprw(); // ROM2SelX + map(0x00a00000, 0x00dfffff).unmaprw(); // EEPROMSelX + map(0x00e00000, 0x00ffffff).unmaprw(); // Reserved +} INPUT_CHANGED_MEMBER( noki3310_state::key_irq ) diff --git a/src/mame/drivers/norautp.cpp b/src/mame/drivers/norautp.cpp index ea02944a310..c2ad642bbb5 100644 --- a/src/mame/drivers/norautp.cpp +++ b/src/mame/drivers/norautp.cpp @@ -829,22 +829,24 @@ READ8_MEMBER(norautp_state::test2_r) +----------+---------+--------------+--------+--------------+--------+--------------+------------------------+ */ -ADDRESS_MAP_START(norautp_state::norautp_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("nvram") /* 6116 */ -ADDRESS_MAP_END +void norautp_state::norautp_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram().share("nvram"); /* 6116 */ +} -ADDRESS_MAP_START(norautp_state::norautp_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa0, 0xa3) AM_MIRROR(0x1c) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x3c) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) +void norautp_state::norautp_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x60, 0x63).mirror(0x1c).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa0, 0xa3).mirror(0x1c).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc0, 0xc3).mirror(0x3c).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); //AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3c) AM_READWRITE(vram_data_r, vram_data_w) //AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3c) AM_WRITE(vram_addr_w) //AM_RANGE(0xc2, 0xc2) AM_MIRROR(0x3c) AM_READ(test_r) - AM_RANGE(0xef, 0xef) AM_READ(test2_r) -ADDRESS_MAP_END + map(0xef, 0xef).r(this, FUNC(norautp_state::test2_r)); +} /* Video RAM R/W: @@ -860,23 +862,26 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(norautp_state::nortest1_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void norautp_state::nortest1_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x2fff).rom(); + map(0x5000, 0x57ff).ram().share("nvram"); +} -ADDRESS_MAP_START(norautp_state::norautxp_map) +void norautp_state::norautxp_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(~0x4000) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x3fff) AM_ROM /* need to be checked */ - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") /* HM6116 */ -ADDRESS_MAP_END + map.global_mask(0x7fff); + map(0x0000, 0x3fff).rom(); /* need to be checked */ + map(0x6000, 0x67ff).ram().share("nvram"); /* HM6116 */ +} -ADDRESS_MAP_START(norautp_state::norautx4_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") /* 6116 */ -ADDRESS_MAP_END +void norautp_state::norautx4_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x67ff).ram().share("nvram"); /* 6116 */ +} #ifdef UNUSED_CODE ADDRESS_MAP_START(norautp_state::norautx8_map) @@ -885,11 +890,12 @@ ADDRESS_MAP_START(norautp_state::norautx8_map) ADDRESS_MAP_END #endif -ADDRESS_MAP_START(norautp_state::kimble_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc800, 0xc9ff) AM_RAM /* working RAM? */ -ADDRESS_MAP_END +void norautp_state::kimble_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().share("nvram"); + map(0xc800, 0xc9ff).ram(); /* working RAM? */ +} #ifdef UNUSED_CODE ADDRESS_MAP_START(norautp_state::norautxp_portmap) @@ -897,37 +903,42 @@ ADDRESS_MAP_START(norautp_state::norautxp_portmap) ADDRESS_MAP_END #endif -ADDRESS_MAP_START(norautp_state::newhilop_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("nvram") /* 6116 */ -ADDRESS_MAP_END +void norautp_state::newhilop_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xd000, 0xd7ff).ram().share("nvram"); /* 6116 */ +} /*********** 8080 based **********/ -ADDRESS_MAP_START(norautp_state::dphl_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */ - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram") /* should be 2x 0x100 segments (4x 2111) */ -ADDRESS_MAP_END +void norautp_state::dphl_map(address_map &map) +{ + map.global_mask(0x7fff); /* A15 not connected */ + map(0x0000, 0x3fff).rom(); + map(0x5000, 0x53ff).ram().share("nvram"); /* should be 2x 0x100 segments (4x 2111) */ +} -ADDRESS_MAP_START(norautp_state::dphla_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void norautp_state::dphla_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram().share("nvram"); +} -ADDRESS_MAP_START(norautp_state::ssjkrpkr_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void norautp_state::ssjkrpkr_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram().share("nvram"); +} -ADDRESS_MAP_START(norautp_state::dphltest_map) +void norautp_state::dphltest_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */ - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram(); + map(0x8000, 0x87ff).ram().share("nvram"); +} /* Kimble: @@ -942,17 +953,19 @@ ADDRESS_MAP_END The code read on port $62, when is suppossed to be set as output. */ -ADDRESS_MAP_START(norautp_state::kimbldhl_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void norautp_state::kimbldhl_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().share("nvram"); +} -ADDRESS_MAP_START(norautp_state::drhl_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) /* A15 not connected */ - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x5400, 0x57ff) AM_RAM -ADDRESS_MAP_END +void norautp_state::drhl_map(address_map &map) +{ + map.global_mask(0x7fff); /* A15 not connected */ + map(0x0000, 0x3fff).rom(); + map(0x5000, 0x53ff).ram().share("nvram"); + map(0x5400, 0x57ff).ram(); +} /************************* diff --git a/src/mame/drivers/notechan.cpp b/src/mame/drivers/notechan.cpp index e164a390b22..8d77e85ed67 100644 --- a/src/mame/drivers/notechan.cpp +++ b/src/mame/drivers/notechan.cpp @@ -324,20 +324,22 @@ public: * Memory Map Definition * *********************************************/ -ADDRESS_MAP_START(notechan_state::notechan_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(notechan_state::notechan_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("IN0") AM_WRITE(out_f8_w) - AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN1") AM_WRITE(out_f9_w) - AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN2") AM_WRITE(out_fa_w) - AM_RANGE(0xfb, 0xfb) AM_READ_PORT("IN3") - AM_RANGE(0xff, 0xff) AM_WRITE(out_ff_w) // watchdog reset? (written immediately upon reset, INT and NMI) -ADDRESS_MAP_END +void notechan_state::notechan_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).ram(); +} + +void notechan_state::notechan_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf8, 0xf8).portr("IN0").w(this, FUNC(notechan_state::out_f8_w)); + map(0xf9, 0xf9).portr("IN1").w(this, FUNC(notechan_state::out_f9_w)); + map(0xfa, 0xfa).portr("IN2").w(this, FUNC(notechan_state::out_fa_w)); + map(0xfb, 0xfb).portr("IN3"); + map(0xff, 0xff).w(this, FUNC(notechan_state::out_ff_w)); // watchdog reset? (written immediately upon reset, INT and NMI) +} /********************************************* diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp index b30fe4a05e6..6ff82bbd80a 100644 --- a/src/mame/drivers/nova2001.cpp +++ b/src/mame/drivers/nova2001.cpp @@ -180,116 +180,124 @@ MACHINE_START_MEMBER(nova2001_state,ninjakun) * *************************************/ -ADDRESS_MAP_START(nova2001_state::nova2001_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(nova2001_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb800, 0xbfff) AM_WRITE(nova2001_flipscreen_w) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0xc003, 0xc003) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xc004, 0xc004) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xc006, 0xc006) AM_READ_PORT("IN0") - AM_RANGE(0xc007, 0xc007) AM_READ_PORT("IN1") - AM_RANGE(0xc00e, 0xc00e) AM_READ_PORT("IN2") - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nova2001_state::ninjakun_cpu1_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITE(ninjakun_cpu1_io_A002_w) - AM_RANGE(0xa003, 0xa003) AM_WRITE(pkunwar_flipscreen_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("share2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nova2001_state::ninjakun_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x2000) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITE(ninjakun_cpu2_io_A002_w) - AM_RANGE(0xa003, 0xa003) AM_WRITE(nova2001_flipscreen_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("share2") /* swapped wrt CPU1 */ - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("share1") /* swapped wrt CPU1 */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nova2001_state::pkunwar_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(nova2001_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xa003, 0xa003) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nova2001_state::pkunwar_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(pkunwar_flipscreen_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nova2001_state::raiders5_cpu1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x9000, 0x97ff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xa000, 0xa000) AM_WRITE(nova2001_scroll_x_w) - AM_RANGE(0xa001, 0xa001) AM_WRITE(nova2001_scroll_y_w) - AM_RANGE(0xa002, 0xa002) AM_WRITE(pkunwar_flipscreen_w) - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xc003, 0xc003) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nova2001_state::raiders5_cpu2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x9000, 0x9000) AM_READNOP /* unknown */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xc000, 0xc000) AM_READNOP /* unknown */ - AM_RANGE(0xc800, 0xc800) AM_READNOP /* unknown */ - AM_RANGE(0xd000, 0xd000) AM_READNOP /* unknown */ - AM_RANGE(0xe000, 0xe000) AM_WRITE(nova2001_scroll_x_w) - AM_RANGE(0xe001, 0xe001) AM_WRITE(nova2001_scroll_y_w) - AM_RANGE(0xe002, 0xe002) AM_WRITE(pkunwar_flipscreen_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nova2001_state::raiders5_io) - AM_RANGE(0x00, 0x00) AM_READNOP /* unknown */ -ADDRESS_MAP_END +void nova2001_state::nova2001_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram"); + map(0xa800, 0xafff).ram().w(this, FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram"); + map(0xb000, 0xb7ff).ram().share("spriteram"); + map(0xb800, 0xbfff).w(this, FUNC(nova2001_state::nova2001_flipscreen_w)); + map(0xc000, 0xc000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xc001, 0xc001).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xc002, 0xc002).w("ay1", FUNC(ay8910_device::address_w)); + map(0xc003, 0xc003).w("ay2", FUNC(ay8910_device::address_w)); + map(0xc004, 0xc004).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc006, 0xc006).portr("IN0"); + map(0xc007, 0xc007).portr("IN1"); + map(0xc00e, 0xc00e).portr("IN2"); + map(0xe000, 0xe7ff).ram(); +} + + +void nova2001_state::ninjakun_cpu1_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x7fff).rom(); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r)); + map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r)); + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa001).portr("IN1"); + map(0xa002, 0xa002).portr("IN2").w(this, FUNC(nova2001_state::ninjakun_cpu1_io_A002_w)); + map(0xa003, 0xa003).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w)); + map(0xc000, 0xc7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram"); + map(0xc800, 0xcfff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram"); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xd9ff).ram().w(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette"); + map(0xe000, 0xe3ff).ram().share("share1"); + map(0xe400, 0xe7ff).ram().share("share2"); +} + +void nova2001_state::ninjakun_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x7fff).rom().region("maincpu", 0x2000); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r)); + map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r)); + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa001).portr("IN1"); + map(0xa002, 0xa002).portr("IN2").w(this, FUNC(nova2001_state::ninjakun_cpu2_io_A002_w)); + map(0xa003, 0xa003).w(this, FUNC(nova2001_state::nova2001_flipscreen_w)); + map(0xc000, 0xc7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram"); + map(0xc800, 0xcfff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram"); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xd9ff).ram().w(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette"); + map(0xe000, 0xe3ff).ram().share("share2"); /* swapped wrt CPU1 */ + map(0xe400, 0xe7ff).ram().share("share1"); /* swapped wrt CPU1 */ +} + + +void nova2001_state::pkunwar_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("spriteram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram"); + map(0xa000, 0xa001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xa001, 0xa001).r("ay1", FUNC(ay8910_device::data_r)); + map(0xa002, 0xa003).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xa003, 0xa003).r("ay2", FUNC(ay8910_device::data_r)); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xffff).rom(); +} + +void nova2001_state::pkunwar_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w)); +} + + +void nova2001_state::raiders5_cpu1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("spriteram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram"); + map(0x9000, 0x97ff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram"); + map(0xa000, 0xa000).w(this, FUNC(nova2001_state::nova2001_scroll_x_w)); + map(0xa001, 0xa001).w(this, FUNC(nova2001_state::nova2001_scroll_y_w)); + map(0xa002, 0xa002).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w)); + map(0xc000, 0xc001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xc001, 0xc001).r("ay1", FUNC(ay8910_device::data_r)); + map(0xc002, 0xc003).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xc003, 0xc003).r("ay2", FUNC(ay8910_device::data_r)); + map(0xd000, 0xd1ff).ram().w(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette"); + map(0xe000, 0xe7ff).ram().share("share1"); +} + +void nova2001_state::raiders5_cpu2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r)); + map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r)); + map(0x9000, 0x9000).nopr(); /* unknown */ + map(0xa000, 0xa7ff).ram().share("share1"); + map(0xc000, 0xc000).nopr(); /* unknown */ + map(0xc800, 0xc800).nopr(); /* unknown */ + map(0xd000, 0xd000).nopr(); /* unknown */ + map(0xe000, 0xe000).w(this, FUNC(nova2001_state::nova2001_scroll_x_w)); + map(0xe001, 0xe001).w(this, FUNC(nova2001_state::nova2001_scroll_y_w)); + map(0xe002, 0xe002).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w)); +} + +void nova2001_state::raiders5_io(address_map &map) +{ + map(0x00, 0x00).nopr(); /* unknown */ +} diff --git a/src/mame/drivers/novag6502.cpp b/src/mame/drivers/novag6502.cpp index 6b3164238d9..f2c84c8a86f 100644 --- a/src/mame/drivers/novag6502.cpp +++ b/src/mame/drivers/novag6502.cpp @@ -506,44 +506,48 @@ WRITE8_MEMBER(novag6502_state::sforte_lcd_data_w) // Super Constellation / Constellation Forte -ADDRESS_MAP_START(novag6502_state::supercon_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1c00, 0x1c00) AM_WRITENOP // printer/clock? - AM_RANGE(0x1d00, 0x1d00) AM_WRITENOP // printer/clock? - AM_RANGE(0x1e00, 0x1e00) AM_READWRITE(supercon_input2_r, supercon_mux_w) - AM_RANGE(0x1f00, 0x1f00) AM_READWRITE(supercon_input1_r, supercon_control_w) - AM_RANGE(0x2000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(novag6502_state::cforte_map) - AM_IMPORT_FROM( supercon_map ) - AM_RANGE(0x1e00, 0x1e00) AM_READWRITE(supercon_input2_r, cforte_mux_w) - AM_RANGE(0x1f00, 0x1f00) AM_READWRITE(supercon_input1_r, cforte_control_w) -ADDRESS_MAP_END +void novag6502_state::supercon_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("nvram"); + map(0x1c00, 0x1c00).nopw(); // printer/clock? + map(0x1d00, 0x1d00).nopw(); // printer/clock? + map(0x1e00, 0x1e00).rw(this, FUNC(novag6502_state::supercon_input2_r), FUNC(novag6502_state::supercon_mux_w)); + map(0x1f00, 0x1f00).rw(this, FUNC(novag6502_state::supercon_input1_r), FUNC(novag6502_state::supercon_control_w)); + map(0x2000, 0xffff).rom(); +} + +void novag6502_state::cforte_map(address_map &map) +{ + supercon_map(map); + map(0x1e00, 0x1e00).rw(this, FUNC(novag6502_state::supercon_input2_r), FUNC(novag6502_state::cforte_mux_w)); + map(0x1f00, 0x1f00).rw(this, FUNC(novag6502_state::supercon_input1_r), FUNC(novag6502_state::cforte_control_w)); +} // Super Expert / Super Forte -ADDRESS_MAP_START(novag6502_state::sforte_map) - AM_RANGE(0x0000, 0x1fef) AM_RAM AM_SHARE("nvram") // 8KB RAM, but RAM CE pin is deactivated on $1ff0-$1fff - AM_RANGE(0x1ff0, 0x1ff0) AM_READ(sexpert_input1_r) - AM_RANGE(0x1ff1, 0x1ff1) AM_READ(sexpert_input2_r) - AM_RANGE(0x1ff2, 0x1ff2) AM_WRITENOP // printer - AM_RANGE(0x1ff3, 0x1ff3) AM_WRITENOP // printer - AM_RANGE(0x1ff6, 0x1ff6) AM_WRITE(sforte_lcd_control_w) - AM_RANGE(0x1ff7, 0x1ff7) AM_WRITE(sforte_lcd_data_w) - AM_RANGE(0x1ffc, 0x1fff) AM_DEVREADWRITE("acia", mos6551_device, read, write) - AM_RANGE(0x2000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(novag6502_state::sexpert_map) - AM_IMPORT_FROM( sforte_map ) - AM_RANGE(0x1ff4, 0x1ff4) AM_WRITE(sexpert_leds_w) - AM_RANGE(0x1ff5, 0x1ff5) AM_WRITE(sexpert_mux_w) - AM_RANGE(0x1ff6, 0x1ff6) AM_WRITE(sexpert_lcd_control_w) - AM_RANGE(0x1ff7, 0x1ff7) AM_WRITE(sexpert_lcd_data_w) -ADDRESS_MAP_END +void novag6502_state::sforte_map(address_map &map) +{ + map(0x0000, 0x1fef).ram().share("nvram"); // 8KB RAM, but RAM CE pin is deactivated on $1ff0-$1fff + map(0x1ff0, 0x1ff0).r(this, FUNC(novag6502_state::sexpert_input1_r)); + map(0x1ff1, 0x1ff1).r(this, FUNC(novag6502_state::sexpert_input2_r)); + map(0x1ff2, 0x1ff2).nopw(); // printer + map(0x1ff3, 0x1ff3).nopw(); // printer + map(0x1ff6, 0x1ff6).w(this, FUNC(novag6502_state::sforte_lcd_control_w)); + map(0x1ff7, 0x1ff7).w(this, FUNC(novag6502_state::sforte_lcd_data_w)); + map(0x1ffc, 0x1fff).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x2000, 0x7fff).rom(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void novag6502_state::sexpert_map(address_map &map) +{ + sforte_map(map); + map(0x1ff4, 0x1ff4).w(this, FUNC(novag6502_state::sexpert_leds_w)); + map(0x1ff5, 0x1ff5).w(this, FUNC(novag6502_state::sexpert_mux_w)); + map(0x1ff6, 0x1ff6).w(this, FUNC(novag6502_state::sexpert_lcd_control_w)); + map(0x1ff7, 0x1ff7).w(this, FUNC(novag6502_state::sexpert_lcd_data_w)); +} diff --git a/src/mame/drivers/novag68k.cpp b/src/mame/drivers/novag68k.cpp index 52ebfefd133..0c48b204951 100644 --- a/src/mame/drivers/novag68k.cpp +++ b/src/mame/drivers/novag68k.cpp @@ -112,17 +112,19 @@ READ8_MEMBER(novag68k_state::diablo68k_input2_r) // Diablo 68000 -ADDRESS_MAP_START(novag68k_state::diablo68k_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x280000, 0x28ffff) AM_RAM - AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE8("acia", mos6551_device, read, write, 0xff00) - AM_RANGE(0x380000, 0x380001) AM_WRITE8(diablo68k_leds_w, 0xff00) AM_READNOP - AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE8(diablo68k_lcd_data_w, 0xff00) - AM_RANGE(0x3c0000, 0x3c0001) AM_READWRITE8(diablo68k_input2_r, diablo68k_control_w, 0xff00) - AM_RANGE(0x3e0000, 0x3e0001) AM_READ8(diablo68k_input1_r, 0xff00) - AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void novag68k_state::diablo68k_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x200000, 0x20ffff).rom().region("maincpu", 0x10000); + map(0x280000, 0x28ffff).ram(); + map(0x300000, 0x300007).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)).umask16(0xff00); + map(0x380000, 0x380001).nopr(); + map(0x380000, 0x380000).w(this, FUNC(novag68k_state::diablo68k_leds_w)); + map(0x3a0000, 0x3a0000).w(this, FUNC(novag68k_state::diablo68k_lcd_data_w)); + map(0x3c0000, 0x3c0000).rw(this, FUNC(novag68k_state::diablo68k_input2_r), FUNC(novag68k_state::diablo68k_control_w)); + map(0x3e0000, 0x3e0000).r(this, FUNC(novag68k_state::diablo68k_input1_r)); + map(0xff8000, 0xffbfff).ram().share("nvram"); +} diff --git a/src/mame/drivers/novagf8.cpp b/src/mame/drivers/novagf8.cpp index 92cfeb7157d..ca545ff2bba 100644 --- a/src/mame/drivers/novagf8.cpp +++ b/src/mame/drivers/novagf8.cpp @@ -119,17 +119,19 @@ READ8_MEMBER(novagf8_state::delta1_io1_r) // Delta-1 -ADDRESS_MAP_START(novagf8_state::delta1_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_MIRROR(0x1000) AM_ROM // _A13 - AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x1f00) AM_RAM // A13 -ADDRESS_MAP_END - -ADDRESS_MAP_START(novagf8_state::delta1_io) - AM_RANGE(0x0, 0x0) AM_READWRITE(delta1_io0_r, delta1_io0_w ) - AM_RANGE(0x1, 0x1) AM_READWRITE(delta1_io1_r, delta1_io1_w ) - AM_RANGE(0xc, 0xf) AM_DEVREADWRITE("f3853", f3853_device, read, write ) -ADDRESS_MAP_END +void novagf8_state::delta1_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x0fff).mirror(0x1000).rom(); // _A13 + map(0x2000, 0x20ff).mirror(0x1f00).ram(); // A13 +} + +void novagf8_state::delta1_io(address_map &map) +{ + map(0x0, 0x0).rw(this, FUNC(novagf8_state::delta1_io0_r), FUNC(novagf8_state::delta1_io0_w)); + map(0x1, 0x1).rw(this, FUNC(novagf8_state::delta1_io1_r), FUNC(novagf8_state::delta1_io1_w)); + map(0xc, 0xf).rw("f3853", FUNC(f3853_device::read), FUNC(f3853_device::write)); +} diff --git a/src/mame/drivers/nsg6809.cpp b/src/mame/drivers/nsg6809.cpp index 7cfc0700af6..e143787bba8 100644 --- a/src/mame/drivers/nsg6809.cpp +++ b/src/mame/drivers/nsg6809.cpp @@ -54,13 +54,14 @@ public: }; -ADDRESS_MAP_START(nsg6809_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2800, 0x280f) AM_DEVREADWRITE("via", via6522_device, read, write) - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("acia", mos6551_device, read, write) - AM_RANGE(0x3e00, 0x3e00) AM_DEVWRITE("deadman", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void nsg6809_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2800, 0x280f).rw("via", FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x3000, 0x3003).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x3e00, 0x3e00).w("deadman", FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0xffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( pitchhit ) INPUT_PORTS_END diff --git a/src/mame/drivers/nsm.cpp b/src/mame/drivers/nsm.cpp index 542262ce1b6..2dd86047c87 100644 --- a/src/mame/drivers/nsm.cpp +++ b/src/mame/drivers/nsm.cpp @@ -53,28 +53,30 @@ private: uint8_t m_cru_count; }; -ADDRESS_MAP_START(nsm_state::nsm_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xffec, 0xffed) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xffee, 0xffef) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(nsm_state::nsm_io_map) +void nsm_state::nsm_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xefff).ram(); + map(0xffec, 0xffed).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xffee, 0xffef).w("ay2", FUNC(ay8910_device::address_data_w)); +} + +void nsm_state::nsm_io_map(address_map &map) +{ // 00-71 selected by IC600 (74LS151) - AM_RANGE(0x0000, 0x0001) AM_READ(ff_r) // 5v supply - AM_RANGE(0x0010, 0x0011) AM_READNOP // antenna - AM_RANGE(0x0020, 0x0021) AM_READNOP // reset circuit - AM_RANGE(0x0030, 0x0031) AM_READ(ff_r) // service plug - AM_RANGE(0x0040, 0x0041) AM_READ(ff_r) // service plug - AM_RANGE(0x0050, 0x0051) AM_READ(ff_r) // test of internal battery - AM_RANGE(0x0060, 0x0061) AM_READ(ff_r) // sum of analog outputs of ay2 + map(0x0000, 0x0001).r(this, FUNC(nsm_state::ff_r)); // 5v supply + map(0x0010, 0x0011).nopr(); // antenna + map(0x0020, 0x0021).nopr(); // reset circuit + map(0x0030, 0x0031).r(this, FUNC(nsm_state::ff_r)); // service plug + map(0x0040, 0x0041).r(this, FUNC(nsm_state::ff_r)); // service plug + map(0x0050, 0x0051).r(this, FUNC(nsm_state::ff_r)); // test of internal battery + map(0x0060, 0x0061).r(this, FUNC(nsm_state::ff_r)); // sum of analog outputs of ay2 //AM_RANGE(0x0070, 0x0071) AM_READNOP // serial data in - AM_RANGE(0x0f70, 0x0f7d) AM_WRITENOP - AM_RANGE(0x0fe4, 0x0fff) AM_READNOP - AM_RANGE(0x7fb0, 0x7fbf) AM_WRITE(cru_w) - AM_RANGE(0x7fd0, 0x7fd1) AM_WRITE(oe_w) -ADDRESS_MAP_END + map(0x0f70, 0x0f7d).nopw(); + map(0x0fe4, 0x0fff).nopr(); + map(0x7fb0, 0x7fbf).w(this, FUNC(nsm_state::cru_w)); + map(0x7fd0, 0x7fd1).w(this, FUNC(nsm_state::oe_w)); +} static INPUT_PORTS_START( nsm ) INPUT_PORTS_END diff --git a/src/mame/drivers/nsmpoker.cpp b/src/mame/drivers/nsmpoker.cpp index 45646430fff..c452f4f77d2 100644 --- a/src/mame/drivers/nsmpoker.cpp +++ b/src/mame/drivers/nsmpoker.cpp @@ -177,18 +177,20 @@ READ8_MEMBER(nsmpoker_state::debug_r) * Memory Map Information * *************************/ -ADDRESS_MAP_START(nsmpoker_state::nsmpoker_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x9000, 0xafff) AM_RAM // OK... cleared at beginning. - AM_RANGE(0xb000, 0xcfff) AM_ROM // WRONG... just to map the last rom somewhere. - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(nsmpoker_videoram_w) AM_SHARE("videoram") // WRONG... just a placeholder. - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(nsmpoker_colorram_w) AM_SHARE("colorram") // WRONG... just a placeholder. -ADDRESS_MAP_END - -ADDRESS_MAP_START(nsmpoker_state::nsmpoker_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_READ(debug_r) // kind of trap at beginning -ADDRESS_MAP_END +void nsmpoker_state::nsmpoker_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x9000, 0xafff).ram(); // OK... cleared at beginning. + map(0xb000, 0xcfff).rom(); // WRONG... just to map the last rom somewhere. + map(0xe000, 0xefff).ram().w(this, FUNC(nsmpoker_state::nsmpoker_videoram_w)).share("videoram"); // WRONG... just a placeholder. + map(0xf000, 0xffff).ram().w(this, FUNC(nsmpoker_state::nsmpoker_colorram_w)).share("colorram"); // WRONG... just a placeholder. +} + +void nsmpoker_state::nsmpoker_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).r(this, FUNC(nsmpoker_state::debug_r)); // kind of trap at beginning +} /* I/O byte R/W diff --git a/src/mame/drivers/nss.cpp b/src/mame/drivers/nss.cpp index a72e3446542..c70f3c7fd4d 100644 --- a/src/mame/drivers/nss.cpp +++ b/src/mame/drivers/nss.cpp @@ -365,11 +365,12 @@ uint32_t nss_state::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, -ADDRESS_MAP_START(nss_state::snes_map) - AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes_r_bank1, snes_w_bank1) - AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ - AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* Mirror and ROM */ -ADDRESS_MAP_END +void nss_state::snes_map(address_map &map) +{ + map(0x000000, 0x7dffff).rw(this, FUNC(nss_state::snes_r_bank1), FUNC(nss_state::snes_w_bank1)); + map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ + map(0x800000, 0xffffff).rw(this, FUNC(nss_state::snes_r_bank2), FUNC(nss_state::snes_w_bank2)); /* Mirror and ROM */ +} READ8_MEMBER(nss_state::spc_ram_100_r) { @@ -381,11 +382,12 @@ WRITE8_MEMBER(nss_state::spc_ram_100_w) m_spc700->spc_ram_w(space, offset + 0x100, data); } -ADDRESS_MAP_START(nss_state::spc_mem) - AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */ - AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */ - AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w) -ADDRESS_MAP_END +void nss_state::spc_mem(address_map &map) +{ + map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */ + map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */ + map(0x0100, 0xffff).rw(this, FUNC(nss_state::spc_ram_100_r), FUNC(nss_state::spc_ram_100_w)); +} /* NSS specific */ /* @@ -504,14 +506,15 @@ WRITE8_MEMBER(nss_state::nss_prot_w) } -ADDRESS_MAP_START(nss_state::bios_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9fff) AM_READWRITE(ram_wp_r,ram_wp_w) - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("EEPROMIN") - AM_RANGE(0xc000, 0xdfff) AM_ROM AM_REGION("ibios_rom", 0x6000 ) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(nss_prot_r,nss_prot_w) -ADDRESS_MAP_END +void nss_state::bios_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9fff).rw(this, FUNC(nss_state::ram_wp_r), FUNC(nss_state::ram_wp_w)); + map(0xa000, 0xa000).portr("EEPROMIN"); + map(0xc000, 0xdfff).rom().region("ibios_rom", 0x6000); + map(0xe000, 0xffff).rw(this, FUNC(nss_state::nss_prot_r), FUNC(nss_state::nss_prot_w)); +} READ8_MEMBER(nss_state::port_00_r) { @@ -621,15 +624,16 @@ WRITE8_MEMBER(nss_state::port_07_w) m_joy_flag = 1; } -ADDRESS_MAP_START(nss_state::bios_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_READ(port_00_r) AM_WRITE(port_00_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("FP") AM_WRITE(port_01_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") AM_WRITE(port_02_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("RTC") AM_WRITE(port_03_w) - AM_RANGE(0x04, 0x04) AM_WRITE(port_04_w) - AM_RANGE(0x07, 0x07) AM_WRITE(port_07_w) -ADDRESS_MAP_END +void nss_state::bios_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).r(this, FUNC(nss_state::port_00_r)).w(this, FUNC(nss_state::port_00_w)); + map(0x01, 0x01).portr("FP").w(this, FUNC(nss_state::port_01_w)); + map(0x02, 0x02).portr("SYSTEM").w(this, FUNC(nss_state::port_02_w)); + map(0x03, 0x03).portr("RTC").w(this, FUNC(nss_state::port_03_w)); + map(0x04, 0x04).w(this, FUNC(nss_state::port_04_w)); + map(0x07, 0x07).w(this, FUNC(nss_state::port_07_w)); +} void nss_state::machine_start() { diff --git a/src/mame/drivers/nwk-tr.cpp b/src/mame/drivers/nwk-tr.cpp index f75b6dfae23..268330a2ccc 100644 --- a/src/mame/drivers/nwk-tr.cpp +++ b/src/mame/drivers/nwk-tr.cpp @@ -657,35 +657,37 @@ void nwktr_state::machine_start() m_sound_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nwktr_state::sound_irq), this)); } -ADDRESS_MAP_START(nwktr_state::nwktr_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w) - AM_RANGE(0x74010000, 0x74017fff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram") - AM_RANGE(0x74020000, 0x7403ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w) - AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) - AM_RANGE(0x780c0000, 0x780c0003) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ(sysreg_r) - AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE(sysreg_w) - AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */ - AM_RANGE(0x7d030000, 0x7d03000f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x7d040000, 0x7d04ffff) AM_READWRITE(lanc1_r, lanc1_w) - AM_RANGE(0x7d050000, 0x7d05ffff) AM_READWRITE(lanc2_r, lanc2_w) - AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ - AM_RANGE(0x7f000000, 0x7f1fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END +void nwktr_state::nwktr_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("work_ram"); /* Work RAM */ + map(0x74000000, 0x740000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w)); + map(0x74010000, 0x74017fff).ram().w(this, FUNC(nwktr_state::paletteram32_w)).share("paletteram"); + map(0x74020000, 0x7403ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w)); + map(0x74040000, 0x7407ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w)); + map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); + map(0x780c0000, 0x780c0003).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc)); + map(0x7d000000, 0x7d00ffff).r(this, FUNC(nwktr_state::sysreg_r)); + map(0x7d010000, 0x7d01ffff).w(this, FUNC(nwktr_state::sysreg_w)); + map(0x7d020000, 0x7d021fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); /* M48T58Y RTC/NVRAM */ + map(0x7d030000, 0x7d03000f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x7d040000, 0x7d04ffff).rw(this, FUNC(nwktr_state::lanc1_r), FUNC(nwktr_state::lanc1_w)); + map(0x7d050000, 0x7d05ffff).rw(this, FUNC(nwktr_state::lanc2_r), FUNC(nwktr_state::lanc2_w)); + map(0x7e000000, 0x7e7fffff).rom().region("user2", 0); /* Data ROM */ + map(0x7f000000, 0x7f1fffff).rom().share("share2"); + map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */ +} /*****************************************************************************/ -ADDRESS_MAP_START(nwktr_state::sound_memmap) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */ - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff) - AM_RANGE(0x500000, 0x500001) AM_WRITE(soundtimer_en_w) AM_READNOP - AM_RANGE(0x600000, 0x600001) AM_WRITE(soundtimer_count_w) AM_READNOP -ADDRESS_MAP_END +void nwktr_state::sound_memmap(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x200fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); /* Ricoh RF5C400 */ + map(0x300000, 0x30001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff); + map(0x500000, 0x500001).w(this, FUNC(nwktr_state::soundtimer_en_w)).nopr(); + map(0x600000, 0x600001).w(this, FUNC(nwktr_state::soundtimer_count_w)).nopr(); +} /*****************************************************************************/ @@ -710,25 +712,27 @@ WRITE32_MEMBER(nwktr_state::dsp_dataram1_w) m_sharc1_dataram[offset] = data; } -ADDRESS_MAP_START(nwktr_state::sharc0_map) - AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) - AM_RANGE(0x1400000, 0x14fffff) AM_RAM - AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("konppc", konppc_device, nwk_voodoo_0_r, nwk_voodoo_0_w) - AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) - AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_0_r, K033906_0_w) - AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nwktr_state::sharc1_map) - AM_RANGE(0x0400000, 0x041ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w) - AM_RANGE(0x1400000, 0x14fffff) AM_RAM - AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("konppc", konppc_device, nwk_voodoo_0_r, nwk_voodoo_0_w) - AM_RANGE(0x3400000, 0x34000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w) - AM_RANGE(0x3500000, 0x35000ff) AM_DEVREADWRITE("konppc", konppc_device, K033906_1_r, K033906_1_w) - AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6") -ADDRESS_MAP_END +void nwktr_state::sharc0_map(address_map &map) +{ + map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w)); + map(0x0500000, 0x05fffff).rw(this, FUNC(nwktr_state::dsp_dataram0_r), FUNC(nwktr_state::dsp_dataram0_w)); + map(0x1400000, 0x14fffff).ram(); + map(0x2400000, 0x27fffff).rw(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r), FUNC(konppc_device::nwk_voodoo_0_w)); + map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w)); + map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_0_r), FUNC(konppc_device::K033906_0_w)); + map(0x3600000, 0x37fffff).bankr("bank5"); +} + +void nwktr_state::sharc1_map(address_map &map) +{ + map(0x0400000, 0x041ffff).rw(m_konppc, FUNC(konppc_device::cgboard_1_shared_sharc_r), FUNC(konppc_device::cgboard_1_shared_sharc_w)); + map(0x0500000, 0x05fffff).rw(this, FUNC(nwktr_state::dsp_dataram1_r), FUNC(nwktr_state::dsp_dataram1_w)); + map(0x1400000, 0x14fffff).ram(); + map(0x2400000, 0x27fffff).rw(m_konppc, FUNC(konppc_device::nwk_voodoo_0_r), FUNC(konppc_device::nwk_voodoo_0_w)); + map(0x3400000, 0x34000ff).rw(m_konppc, FUNC(konppc_device::cgboard_1_comm_sharc_r), FUNC(konppc_device::cgboard_1_comm_sharc_w)); + map(0x3500000, 0x35000ff).rw(m_konppc, FUNC(konppc_device::K033906_1_r), FUNC(konppc_device::K033906_1_w)); + map(0x3600000, 0x37fffff).bankr("bank6"); +} /*****************************************************************************/ diff --git a/src/mame/drivers/nycaptor.cpp b/src/mame/drivers/nycaptor.cpp index ca128d93d50..9b45538620d 100644 --- a/src/mame/drivers/nycaptor.cpp +++ b/src/mame/drivers/nycaptor.cpp @@ -281,66 +281,69 @@ WRITE8_MEMBER(nycaptor_state::nycaptor_generic_control_w) membank("bank1")->set_entry((data&0x08)>>3); } -ADDRESS_MAP_START(nycaptor_state::nycaptor_master_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, nycaptor_generic_control_w) /* bit 3 - memory bank at 0x8000-0xbfff */ - AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd401, 0xd401) AM_READNOP - AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w) - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1") - AM_RANGE(0xd805, 0xd805) AM_READ(nycaptor_mcu_status_r1) - AM_RANGE(0xd806, 0xd806) AM_READ(sound_status_r) - AM_RANGE(0xd807, 0xd807) AM_READ(nycaptor_mcu_status_r2) - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram") - AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w) - AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nycaptor_state::nycaptor_slave_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1") - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram") - - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w) - AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r) - AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r) - AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r) - AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITENOP/* ? gfx control ? */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nycaptor_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_device, write) - AM_RANGE(0xca00, 0xca00) AM_WRITENOP - AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP - AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w) - AM_RANGE(0xd600, 0xd600) AM_DEVWRITE("dac", dac_byte_interface, write) //otherwise no girl's scream in cycle shooting, see MT03975 - AM_RANGE(0xe000, 0xefff) AM_NOP -ADDRESS_MAP_END +void nycaptor_state::nycaptor_master_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram"); + map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0xd001, 0xd001).w(this, FUNC(nycaptor_state::sub_cpu_halt_w)); + map(0xd002, 0xd002).rw(this, FUNC(nycaptor_state::nycaptor_generic_control_r), FUNC(nycaptor_state::nycaptor_generic_control_w)); /* bit 3 - memory bank at 0x8000-0xbfff */ + map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd401, 0xd401).nopr(); + map(0xd403, 0xd403).w(this, FUNC(nycaptor_state::sound_cpu_reset_w)); + map(0xd800, 0xd800).portr("DSWA"); + map(0xd801, 0xd801).portr("DSWB"); + map(0xd802, 0xd802).portr("DSWC"); + map(0xd803, 0xd803).portr("IN0"); + map(0xd804, 0xd804).portr("IN1"); + map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::nycaptor_mcu_status_r1)); + map(0xd806, 0xd806).r(this, FUNC(nycaptor_state::sound_status_r)); + map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::nycaptor_mcu_status_r2)); + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).ram().w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram"); + map(0xdce1, 0xdce1).nopw(); + map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w)); + map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w)); + map(0xe000, 0xffff).ram().share("sharedram"); +} + +void nycaptor_state::nycaptor_slave_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram"); + map(0xd800, 0xd800).portr("DSWA"); + map(0xd801, 0xd801).portr("DSWB"); + map(0xd802, 0xd802).portr("DSWC"); + map(0xd803, 0xd803).portr("IN0"); + map(0xd804, 0xd804).portr("IN1"); + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram"); + + map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w)); + map(0xdf00, 0xdf00).r(this, FUNC(nycaptor_state::nycaptor_bx_r)); + map(0xdf01, 0xdf01).r(this, FUNC(nycaptor_state::nycaptor_by_r)); + map(0xdf02, 0xdf02).r(this, FUNC(nycaptor_state::nycaptor_b_r)); + map(0xdf03, 0xdf03).r(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r)).nopw();/* ? gfx control ? */ + map(0xe000, 0xffff).ram().share("sharedram"); +} + +void nycaptor_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xc802, 0xc803).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xc900, 0xc90d).w(m_msm, FUNC(msm5232_device::write)); + map(0xca00, 0xca00).nopw(); + map(0xcb00, 0xcb00).nopw(); + map(0xcc00, 0xcc00).nopw(); + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); + map(0xd200, 0xd200).nopr().w(this, FUNC(nycaptor_state::nmi_enable_w)); + map(0xd400, 0xd400).w(this, FUNC(nycaptor_state::nmi_disable_w)); + map(0xd600, 0xd600).w("dac", FUNC(dac_byte_interface::write)); //otherwise no girl's scream in cycle shooting, see MT03975 + map(0xe000, 0xefff).noprw(); +} /* Cycle Shooting */ @@ -376,103 +379,108 @@ WRITE8_MEMBER(nycaptor_state::cyclshtg_generic_control_w) } -ADDRESS_MAP_START(nycaptor_state::cyclshtg_master_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd000) AM_READWRITE(cyclshtg_mcu_r, cyclshtg_mcu_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w) - AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w) - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1") - AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r) - AM_RANGE(0xd806, 0xd806) AM_READ(sound_status_r) - AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r) - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram") - AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w) - AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nycaptor_state::cyclshtg_slave_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1") - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram") - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w) - AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r) - AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r) - AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r) - AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) - AM_RANGE(0xdf03, 0xdf03) AM_WRITENOP - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END +void nycaptor_state::cyclshtg_master_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram"); + map(0xd000, 0xd000).rw(this, FUNC(nycaptor_state::cyclshtg_mcu_r), FUNC(nycaptor_state::cyclshtg_mcu_w)); + map(0xd001, 0xd001).w(this, FUNC(nycaptor_state::sub_cpu_halt_w)); + map(0xd002, 0xd002).rw(this, FUNC(nycaptor_state::nycaptor_generic_control_r), FUNC(nycaptor_state::cyclshtg_generic_control_w)); + map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd403, 0xd403).w(this, FUNC(nycaptor_state::sound_cpu_reset_w)); + map(0xd800, 0xd800).portr("DSWA"); + map(0xd801, 0xd801).portr("DSWB"); + map(0xd802, 0xd802).portr("DSWC"); + map(0xd803, 0xd803).portr("IN0"); + map(0xd804, 0xd804).portr("IN1"); + map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r)); + map(0xd806, 0xd806).r(this, FUNC(nycaptor_state::sound_status_r)); + map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r)); + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).ram().w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram"); + map(0xdce1, 0xdce1).nopw(); + map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w)); + map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w)); + map(0xe000, 0xffff).ram().share("sharedram"); +} + +void nycaptor_state::cyclshtg_slave_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram"); + map(0xd800, 0xd800).portr("DSWA"); + map(0xd801, 0xd801).portr("DSWB"); + map(0xd802, 0xd802).portr("DSWC"); + map(0xd803, 0xd803).portr("IN0"); + map(0xd804, 0xd804).portr("IN1"); + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram"); + map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w)); + map(0xdf00, 0xdf00).r(this, FUNC(nycaptor_state::nycaptor_bx_r)); + map(0xdf01, 0xdf01).r(this, FUNC(nycaptor_state::nycaptor_by_r)); + map(0xdf02, 0xdf02).r(this, FUNC(nycaptor_state::nycaptor_b_r)); + map(0xdf03, 0xdf03).r(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r)); + map(0xdf03, 0xdf03).nopw(); + map(0xe000, 0xffff).ram().share("sharedram"); +} READ8_MEMBER(nycaptor_state::unk_r) { return machine().rand(); } -ADDRESS_MAP_START(nycaptor_state::bronx_master_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r) AM_WRITENOP - AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, cyclshtg_generic_control_w) - AM_RANGE(0xd400, 0xd400) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xd401, 0xd401) AM_READ(unk_r) - AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w) - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1") - AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r) - AM_RANGE(0xd806, 0xd806) AM_READ(sound_status_r) - AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r) - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_RAM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram") - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w) - AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nycaptor_state::bronx_slave_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSWA") - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSWB") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSWC") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1") - AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r1) - AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r) - AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_SHARE("scrlram") - AM_RANGE(0xdd00, 0xdeff) AM_READWRITE(nycaptor_palette_r, nycaptor_palette_w) - AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r) - AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r) - AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r) - AM_RANGE(0xdf03, 0xdf03) AM_READWRITE(nycaptor_gfxctrl_r, nycaptor_gfxctrl_w) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nycaptor_state::bronx_slave_io_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void nycaptor_state::bronx_master_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram"); + map(0xd000, 0xd000).r(this, FUNC(nycaptor_state::cyclshtg_mcu_r)).nopw(); + map(0xd001, 0xd001).w(this, FUNC(nycaptor_state::sub_cpu_halt_w)); + map(0xd002, 0xd002).rw(this, FUNC(nycaptor_state::nycaptor_generic_control_r), FUNC(nycaptor_state::cyclshtg_generic_control_w)); + map(0xd400, 0xd400).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xd401, 0xd401).r(this, FUNC(nycaptor_state::unk_r)); + map(0xd403, 0xd403).w(this, FUNC(nycaptor_state::sound_cpu_reset_w)); + map(0xd800, 0xd800).portr("DSWA"); + map(0xd801, 0xd801).portr("DSWB"); + map(0xd802, 0xd802).portr("DSWC"); + map(0xd803, 0xd803).portr("IN0"); + map(0xd804, 0xd804).portr("IN1"); + map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r)); + map(0xd806, 0xd806).r(this, FUNC(nycaptor_state::sound_status_r)); + map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r)); + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).ram().w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram"); + map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w)); + map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w)); + map(0xe000, 0xffff).ram().share("sharedram"); +} + +void nycaptor_state::bronx_slave_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xcfff).ram().w(this, FUNC(nycaptor_state::nycaptor_videoram_w)).share("videoram"); + map(0xd800, 0xd800).portr("DSWA"); + map(0xd801, 0xd801).portr("DSWB"); + map(0xd802, 0xd802).portr("DSWC"); + map(0xd803, 0xd803).portr("IN0"); + map(0xd804, 0xd804).portr("IN1"); + map(0xd805, 0xd805).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r1)); + map(0xd807, 0xd807).r(this, FUNC(nycaptor_state::cyclshtg_mcu_status_r)); + map(0xdc00, 0xdc9f).ram().share("spriteram"); + map(0xdca0, 0xdcbf).w(this, FUNC(nycaptor_state::nycaptor_scrlram_w)).share("scrlram"); + map(0xdd00, 0xdeff).rw(this, FUNC(nycaptor_state::nycaptor_palette_r), FUNC(nycaptor_state::nycaptor_palette_w)); + map(0xdf00, 0xdf00).r(this, FUNC(nycaptor_state::nycaptor_bx_r)); + map(0xdf01, 0xdf01).r(this, FUNC(nycaptor_state::nycaptor_by_r)); + map(0xdf02, 0xdf02).r(this, FUNC(nycaptor_state::nycaptor_b_r)); + map(0xdf03, 0xdf03).rw(this, FUNC(nycaptor_state::nycaptor_gfxctrl_r), FUNC(nycaptor_state::nycaptor_gfxctrl_w)); + map(0xe000, 0xffff).ram().share("sharedram"); +} + +void nycaptor_state::bronx_slave_io_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("user1", 0); +} /* verified from Z80 code */ diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp index af5253116b1..ef335ef75b8 100644 --- a/src/mame/drivers/nyny.cpp +++ b/src/mame/drivers/nyny.cpp @@ -426,51 +426,54 @@ WRITE8_MEMBER(nyny_state::nyny_pia_1_2_w) } -ADDRESS_MAP_START(nyny_state::nyny_main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram1") - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("colorram1") - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("colorram2") - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("nvram") /* SRAM (coin counter, shown when holding F2) */ - AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xa101, 0xa101) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xa200, 0xa20f) AM_MIRROR(0x00f0) AM_READWRITE(nyny_pia_1_2_r, nyny_pia_1_2_w) - AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x00ff) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) AM_WRITE(audio_1_command_w) - AM_RANGE(0xa400, 0xa7ff) AM_NOP - AM_RANGE(0xa800, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nyny_state::nyny_audio_1_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0080, 0x0fff) AM_NOP - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(audio_1_answer_w) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0fff) AM_READ_PORT("SW3") - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffc) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x3000, 0x3001) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x3002, 0x3002) AM_MIRROR(0x0ffc) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x3002, 0x3003) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x4000, 0x4fff) AM_NOP - AM_RANGE(0x5000, 0x57ff) AM_MIRROR(0x0800) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x0800) AM_ROM - AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(nyny_state::nyny_audio_2_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0080, 0x0fff) AM_NOP - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0ffe) AM_DEVWRITE("ay3", ay8910_device, data_address_w) - AM_RANGE(0x3000, 0x6fff) AM_NOP - AM_RANGE(0x7000, 0x77ff) AM_MIRROR(0x0800) AM_ROM -ADDRESS_MAP_END +void nyny_state::nyny_main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("videoram1"); + map(0x2000, 0x3fff).ram().share("colorram1"); + map(0x4000, 0x5fff).ram().share("videoram2"); + map(0x6000, 0x7fff).ram().share("colorram2"); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa0ff).ram().share("nvram"); /* SRAM (coin counter, shown when holding F2) */ + map(0xa100, 0xa100).mirror(0x00fe).w(m_mc6845, FUNC(mc6845_device::address_w)); + map(0xa101, 0xa101).mirror(0x00fe).w(m_mc6845, FUNC(mc6845_device::register_w)); + map(0xa200, 0xa20f).mirror(0x00f0).rw(this, FUNC(nyny_state::nyny_pia_1_2_r), FUNC(nyny_state::nyny_pia_1_2_w)); + map(0xa300, 0xa300).mirror(0x00ff).r(m_soundlatch3, FUNC(generic_latch_8_device::read)).w(this, FUNC(nyny_state::audio_1_command_w)); + map(0xa400, 0xa7ff).noprw(); + map(0xa800, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xffff).rom(); +} + + +void nyny_state::nyny_audio_1_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0080, 0x0fff).noprw(); + map(0x1000, 0x1000).mirror(0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(nyny_state::audio_1_answer_w)); + map(0x2000, 0x2000).mirror(0x0fff).portr("SW3"); + map(0x3000, 0x3000).mirror(0x0ffc).r("ay1", FUNC(ay8910_device::data_r)); + map(0x3000, 0x3001).mirror(0x0ffc).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x3002, 0x3002).mirror(0x0ffc).r("ay2", FUNC(ay8910_device::data_r)); + map(0x3002, 0x3003).mirror(0x0ffc).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x4000, 0x4fff).noprw(); + map(0x5000, 0x57ff).mirror(0x0800).rom(); + map(0x6000, 0x67ff).mirror(0x0800).rom(); + map(0x7000, 0x77ff).mirror(0x0800).rom(); +} + + +void nyny_state::nyny_audio_2_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0080, 0x0fff).noprw(); + map(0x1000, 0x1000).mirror(0x0fff).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0x2000, 0x2000).mirror(0x0ffe).r("ay3", FUNC(ay8910_device::data_r)); + map(0x2000, 0x2001).mirror(0x0ffe).w("ay3", FUNC(ay8910_device::data_address_w)); + map(0x3000, 0x6fff).noprw(); + map(0x7000, 0x77ff).mirror(0x0800).rom(); +} diff --git a/src/mame/drivers/ob68k1a.cpp b/src/mame/drivers/ob68k1a.cpp index 28a2d92527c..a1bdd89f76a 100644 --- a/src/mame/drivers/ob68k1a.cpp +++ b/src/mame/drivers/ob68k1a.cpp @@ -117,18 +117,19 @@ WRITE8_MEMBER( ob68k1a_state::pia_w ) // ADDRESS_MAP( ob68k1a_mem ) //------------------------------------------------- -ADDRESS_MAP_START(ob68k1a_state::ob68k1a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x01ffff) AM_RAM - AM_RANGE(0xfe0000, 0xfeffff) AM_ROM AM_REGION(MC68000L10_TAG, 0) - AM_RANGE(0xffff00, 0xffff03) AM_DEVREADWRITE8(MC6850_0_TAG, acia6850_device, read, write, 0x00ff) - AM_RANGE(0xffff10, 0xffff11) AM_WRITE8(com8116_w, 0xff00) - AM_RANGE(0xffff20, 0xffff23) AM_DEVREADWRITE8(MC6850_1_TAG, acia6850_device, read, write, 0x00ff) +void ob68k1a_state::ob68k1a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x01ffff).ram(); + map(0xfe0000, 0xfeffff).rom().region(MC68000L10_TAG, 0); + map(0xffff00, 0xffff03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); + map(0xffff10, 0xffff10).w(this, FUNC(ob68k1a_state::com8116_w)); + map(0xffff20, 0xffff23).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); // AM_RANGE(0xffff40, 0xffff47) AM_DEVREADWRITE8(MC6821_0_TAG, pia6821_device, read, write, 0x00ff) // AM_RANGE(0xffff40, 0xffff47) AM_DEVREADWRITE8(MC6821_1_TAG, pia6821_device, read, write, 0xff00) - AM_RANGE(0xffff40, 0xffff47) AM_READWRITE8(pia_r, pia_w, 0xffff) - AM_RANGE(0xffff60, 0xffff6f) AM_DEVREADWRITE8(MC6840_TAG, ptm6840_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0xffff40, 0xffff47).rw(this, FUNC(ob68k1a_state::pia_r), FUNC(ob68k1a_state::pia_w)); + map(0xffff60, 0xffff6f).rw(MC6840_TAG, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff); +} diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp index d434d8f6c6a..cb049683b74 100644 --- a/src/mame/drivers/octopus.cpp +++ b/src/mame/drivers/octopus.cpp @@ -285,56 +285,61 @@ private: }; -ADDRESS_MAP_START(octopus_state::octopus_mem) - AM_RANGE(0x00000, 0xcffff) AM_RAMBANK("main_ram_bank") - AM_RANGE(0xd0000, 0xdffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xe0000, 0xe3fff) AM_NOP - AM_RANGE(0xe4000, 0xe5fff) AM_RAM AM_SHARE("fram") - AM_RANGE(0xe6000, 0xe7fff) AM_ROM AM_REGION("chargen",0) - AM_RANGE(0xe8000, 0xfbfff) AM_NOP - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(octopus_state::octopus_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("dma1", am9517a_device, read, write) - AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("dma2", am9517a_device, read, write) - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWA") - AM_RANGE(0x21, 0x2f) AM_READWRITE(system_r, system_w) - AM_RANGE(0x31, 0x33) AM_READWRITE(bank_sel_r, bank_sel_w) - AM_RANGE(0x50, 0x50) AM_DEVREADWRITE("keyboard", i8251_device, data_r, data_w) - AM_RANGE(0x51, 0x51) AM_DEVREADWRITE("keyboard", i8251_device, status_r, control_w) +void octopus_state::octopus_mem(address_map &map) +{ + map(0x00000, 0xcffff).bankrw("main_ram_bank"); + map(0xd0000, 0xdffff).ram().share("vram"); + map(0xe0000, 0xe3fff).noprw(); + map(0xe4000, 0xe5fff).ram().share("fram"); + map(0xe6000, 0xe7fff).rom().region("chargen", 0); + map(0xe8000, 0xfbfff).noprw(); + map(0xfc000, 0xfffff).rom().region("user1", 0); +} + +void octopus_state::octopus_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x0f).rw(m_dma1, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x10, 0x1f).rw(m_dma2, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x20, 0x20).portr("DSWA"); + map(0x21, 0x2f).rw(this, FUNC(octopus_state::system_r), FUNC(octopus_state::system_w)); + map(0x31, 0x33).rw(this, FUNC(octopus_state::bank_sel_r), FUNC(octopus_state::bank_sel_w)); + map(0x50, 0x50).rw(m_kb_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x51, 0x51).rw(m_kb_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 0x70-73: HD controller - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("serial", z80sio_device, da_r, da_w) - AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("serial", z80sio_device, ca_r, ca_w) - AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE("serial", z80sio_device, db_r, db_w) - AM_RANGE(0xa3, 0xa3) AM_DEVREADWRITE("serial", z80sio_device, cb_r, cb_w) - AM_RANGE(0xb0, 0xb1) AM_DEVREADWRITE("pic_master", pic8259_device, read, write) - AM_RANGE(0xb4, 0xb5) AM_DEVREADWRITE("pic_slave", pic8259_device, read, write) - AM_RANGE(0xc0, 0xc7) AM_DEVREADWRITE("crtc", scn2674_device, read, write) - AM_RANGE(0xc8, 0xc8) AM_READWRITE(vidcontrol_r, vidcontrol_w) - AM_RANGE(0xc9, 0xca) AM_READWRITE(video_latch_r, video_latch_w) + map(0x80, 0x83).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xa0, 0xa0).rw(m_serial, FUNC(z80sio_device::da_r), FUNC(z80sio_device::da_w)); + map(0xa1, 0xa1).rw(m_serial, FUNC(z80sio_device::ca_r), FUNC(z80sio_device::ca_w)); + map(0xa2, 0xa2).rw(m_serial, FUNC(z80sio_device::db_r), FUNC(z80sio_device::db_w)); + map(0xa3, 0xa3).rw(m_serial, FUNC(z80sio_device::cb_r), FUNC(z80sio_device::cb_w)); + map(0xb0, 0xb1).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xb4, 0xb5).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xc0, 0xc7).rw(m_crtc, FUNC(scn2674_device::read), FUNC(scn2674_device::write)); + map(0xc8, 0xc8).rw(this, FUNC(octopus_state::vidcontrol_r), FUNC(octopus_state::vidcontrol_w)); + map(0xc9, 0xca).rw(this, FUNC(octopus_state::video_latch_r), FUNC(octopus_state::video_latch_w)); // 0xcf: mode control - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0xe0, 0xe4) AM_READWRITE(z80_vector_r, z80_vector_w) - AM_RANGE(0xf0, 0xf1) AM_READWRITE(parallel_r, parallel_w) - AM_RANGE(0xf8, 0xff) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END + map(0xd0, 0xd3).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0xe0, 0xe4).rw(this, FUNC(octopus_state::z80_vector_r), FUNC(octopus_state::z80_vector_w)); + map(0xf0, 0xf1).rw(this, FUNC(octopus_state::parallel_r), FUNC(octopus_state::parallel_w)); + map(0xf8, 0xff).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} -ADDRESS_MAP_START(octopus_state::octopus_sub_mem) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("z80_bank", address_map_bank_device, read8, write8) -ADDRESS_MAP_END +void octopus_state::octopus_sub_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(m_z80_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); +} -ADDRESS_MAP_START(octopus_state::octopus_sub_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(z80_io_r, z80_io_w) -ADDRESS_MAP_END +void octopus_state::octopus_sub_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(octopus_state::z80_io_r), FUNC(octopus_state::z80_io_w)); +} -ADDRESS_MAP_START(octopus_state::octopus_vram) - AM_RANGE(0x0000,0xffff) AM_READWRITE(vram_r, vram_w) -ADDRESS_MAP_END +void octopus_state::octopus_vram(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(octopus_state::vram_r), FUNC(octopus_state::vram_w)); +} /* Input ports */ static INPUT_PORTS_START( octopus ) diff --git a/src/mame/drivers/odyssey.cpp b/src/mame/drivers/odyssey.cpp index da68746f3b3..85c053945bb 100644 --- a/src/mame/drivers/odyssey.cpp +++ b/src/mame/drivers/odyssey.cpp @@ -101,8 +101,9 @@ uint32_t odyssey_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma * Memory Map * **************************************/ -ADDRESS_MAP_START(odyssey_state::odyssey_map) -ADDRESS_MAP_END +void odyssey_state::odyssey_map(address_map &map) +{ +} /************************************** diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp index fa1d6689cbb..c55d2f6173e 100644 --- a/src/mame/drivers/odyssey2.cpp +++ b/src/mame/drivers/odyssey2.cpp @@ -111,21 +111,24 @@ protected: }; -ADDRESS_MAP_START(odyssey2_state::odyssey2_mem) - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x0400, 0x0bff) AM_DEVREAD("cartslot", o2_cart_slot_device, read_rom04) - AM_RANGE(0x0c00, 0x0fff) AM_DEVREAD("cartslot", o2_cart_slot_device, read_rom0c) -ADDRESS_MAP_END +void odyssey2_state::odyssey2_mem(address_map &map) +{ + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x0bff).r(m_cart, FUNC(o2_cart_slot_device::read_rom04)); + map(0x0c00, 0x0fff).r(m_cart, FUNC(o2_cart_slot_device::read_rom0c)); +} -ADDRESS_MAP_START(odyssey2_state::odyssey2_io) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) -ADDRESS_MAP_END +void odyssey2_state::odyssey2_io(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(odyssey2_state::io_read), FUNC(odyssey2_state::io_write)); +} -ADDRESS_MAP_START(g7400_state::g7400_io) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) -ADDRESS_MAP_END +void g7400_state::g7400_io(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(g7400_state::io_read), FUNC(g7400_state::io_write)); +} static INPUT_PORTS_START( odyssey2 ) diff --git a/src/mame/drivers/offtwall.cpp b/src/mame/drivers/offtwall.cpp index 7f9c560e2f8..efcd9234e51 100644 --- a/src/mame/drivers/offtwall.cpp +++ b/src/mame/drivers/offtwall.cpp @@ -222,32 +222,33 @@ READ16_MEMBER(offtwall_state::unknown_verify_r) * *************************************/ -ADDRESS_MAP_START(offtwall_state::main_map) - AM_RANGE(0x000000, 0x037fff) AM_ROM - AM_RANGE(0x038000, 0x03ffff) AM_READ(bankrom_r) AM_REGION("maincpu", 0x38000) AM_SHARE("bankrom_base") - AM_RANGE(0x120000, 0x120fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x260000, 0x260001) AM_READ_PORT("260000") - AM_RANGE(0x260002, 0x260003) AM_READ_PORT("260002") - AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010") - AM_RANGE(0x260012, 0x260013) AM_READ_PORT("260012") - AM_RANGE(0x260020, 0x260021) AM_READ_PORT("260020") - AM_RANGE(0x260022, 0x260023) AM_READ_PORT("260022") - AM_RANGE(0x260024, 0x260025) AM_READ_PORT("260024") - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_iii_device, main_response_r, 0x00ff) - AM_RANGE(0x260040, 0x260041) AM_DEVWRITE8("jsa", atari_jsa_iii_device, main_command_w, 0x00ff) - AM_RANGE(0x260050, 0x260051) AM_WRITE(io_latch_w) - AM_RANGE(0x260060, 0x260061) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write) - AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_msb_w) AM_SHARE("vad:playfield") - AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_SHARE("vad:eof") - AM_RANGE(0x3f5f80, 0x3f5fff) AM_RAM AM_SHARE("vad:mob:slip") - AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext") - AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM - AM_RANGE(0x3fd000, 0x3fd7ff) AM_RAM AM_SHARE("vad:mob") - AM_RANGE(0x3fd800, 0x3fffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END +void offtwall_state::main_map(address_map &map) +{ + map(0x000000, 0x037fff).rom(); + map(0x038000, 0x03ffff).r(this, FUNC(offtwall_state::bankrom_r)).region("maincpu", 0x38000).share("bankrom_base"); + map(0x120000, 0x120fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x260000, 0x260001).portr("260000"); + map(0x260002, 0x260003).portr("260002"); + map(0x260010, 0x260011).portr("260010"); + map(0x260012, 0x260013).portr("260012"); + map(0x260020, 0x260021).portr("260020"); + map(0x260022, 0x260023).portr("260022"); + map(0x260024, 0x260025).portr("260024"); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r)); + map(0x260041, 0x260041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w)); + map(0x260050, 0x260051).w(this, FUNC(offtwall_state::io_latch_w)); + map(0x260060, 0x260061).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x2a0000, 0x2a0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); + map(0x3f4000, 0x3f5eff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_msb_w)).share("vad:playfield"); + map(0x3f5f00, 0x3f5f7f).ram().share("vad:eof"); + map(0x3f5f80, 0x3f5fff).ram().share("vad:mob:slip"); + map(0x3f6000, 0x3f7fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext"); + map(0x3f8000, 0x3fcfff).ram(); + map(0x3fd000, 0x3fd7ff).ram().share("vad:mob"); + map(0x3fd800, 0x3fffff).ram().share("mainram"); +} diff --git a/src/mame/drivers/ohmygod.cpp b/src/mame/drivers/ohmygod.cpp index 4f097d864de..45dc4ccb283 100644 --- a/src/mame/drivers/ohmygod.cpp +++ b/src/mame/drivers/ohmygod.cpp @@ -41,31 +41,33 @@ WRITE16_MEMBER(ohmygod_state::ohmygod_ctrl_w) } } -ADDRESS_MAP_START(ohmygod_state::ohmygod_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x300000, 0x303fff) AM_RAM - AM_RANGE(0x304000, 0x307fff) AM_RAM_WRITE(ohmygod_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x308000, 0x30ffff) AM_RAM - AM_RANGE(0x400000, 0x400001) AM_WRITE(ohmygod_scrollx_w) - AM_RANGE(0x400002, 0x400003) AM_WRITE(ohmygod_scrolly_w) - AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x703fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x704000, 0x707fff) AM_RAM - AM_RANGE(0x708000, 0x70ffff) AM_RAM /* Work RAM */ - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1") - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("P2") - AM_RANGE(0x900000, 0x900001) AM_WRITE(ohmygod_ctrl_w) - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("DSW1") - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW2") - AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xc00000, 0xc00001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xd00000, 0xd00001) AM_WRITE(ohmygod_spritebank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ohmygod_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void ohmygod_state::ohmygod_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x300000, 0x303fff).ram(); + map(0x304000, 0x307fff).ram().w(this, FUNC(ohmygod_state::ohmygod_videoram_w)).share("videoram"); + map(0x308000, 0x30ffff).ram(); + map(0x400000, 0x400001).w(this, FUNC(ohmygod_state::ohmygod_scrollx_w)); + map(0x400002, 0x400003).w(this, FUNC(ohmygod_state::ohmygod_scrolly_w)); + map(0x600000, 0x6007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x703fff).ram().share("spriteram"); + map(0x704000, 0x707fff).ram(); + map(0x708000, 0x70ffff).ram(); /* Work RAM */ + map(0x800000, 0x800001).portr("P1"); + map(0x800002, 0x800003).portr("P2"); + map(0x900000, 0x900001).w(this, FUNC(ohmygod_state::ohmygod_ctrl_w)); + map(0xa00000, 0xa00001).portr("DSW1"); + map(0xa00002, 0xa00003).portr("DSW2"); + map(0xb00001, 0xb00001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc00000, 0xc00001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0xd00000, 0xd00001).w(this, FUNC(ohmygod_state::ohmygod_spritebank_w)); +} + +void ohmygod_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( ohmygod ) PORT_START("P1") diff --git a/src/mame/drivers/ojankohs.cpp b/src/mame/drivers/ojankohs.cpp index d9058cedc6c..00cc6ff306d 100644 --- a/src/mame/drivers/ojankohs.cpp +++ b/src/mame/drivers/ojankohs.cpp @@ -96,80 +96,87 @@ WRITE8_MEMBER(ojankohs_state::ojankoc_ctrl_w) } -ADDRESS_MAP_START(ojankohs_state::ojankohs_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(ojankohs_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(ojankohs_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xb7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(ojankohs_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ojankohs_state::ojankoy_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(ojankohs_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(ojankohs_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ojankohs_state::ojankoc_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(ojankoc_videoram_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ojankohs_state::ojankohs_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("system") AM_WRITE(port_select_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(keymatrix_p1_r, ojankohs_rombank_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(keymatrix_p2_r, ojankohs_gfxreg_w) - AM_RANGE(0x03, 0x03) AM_WRITE(ojankohs_adpcm_reset_w) - AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w) - AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ym2149_device, data_r) - AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ym2149_device, data_address_w) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ojankohs_state::ojankoy_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("system") AM_WRITE(port_select_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(keymatrix_p1_r, ojankoy_rombank_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(keymatrix_p2_r, ojankoy_coinctr_w) - AM_RANGE(0x04, 0x04) AM_WRITE(ojankohs_flipscreen_w) - AM_RANGE(0x05, 0x05) AM_WRITE(ojankohs_msm5205_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x06, 0x07) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ojankohs_state::ccasino_io_map) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ_PORT("system") AM_WRITE(port_select_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0xff00) AM_READWRITE(keymatrix_p1_r, ojankohs_rombank_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0xff00) AM_READWRITE(keymatrix_p2_r, ccasino_coinctr_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0xff00) AM_READ(ccasino_dipsw3_r) AM_WRITE(ojankohs_adpcm_reset_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0xff00) AM_READ(ccasino_dipsw4_r) AM_WRITE(ojankohs_flipscreen_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0xff00) AM_WRITE(ojankohs_msm5205_w) - AM_RANGE(0x06, 0x06) AM_MIRROR(0xff00) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x06, 0x07) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x08, 0x0f) AM_SELECT(0xff00) AM_WRITE(ccasino_palette_w) // 16bit address access - AM_RANGE(0x10, 0x11) AM_MIRROR(0xff00) AM_DEVWRITE("gga", vsystem_gga_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ojankohs_state::ojankoc_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1f) AM_WRITE(ojankoc_palette_w) - AM_RANGE(0xf9, 0xf9) AM_WRITE(ojankohs_msm5205_w) - AM_RANGE(0xfb, 0xfb) AM_WRITE(ojankoc_ctrl_w) - AM_RANGE(0xfc, 0xfc) AM_READ(ojankoc_keymatrix_p1_r) - AM_RANGE(0xfd, 0xfd) AM_READ(ojankoc_keymatrix_p2_r) - AM_RANGE(0xfd, 0xfd) AM_WRITE(port_select_w) - AM_RANGE(0xfe, 0xff) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0xff, 0xff) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END +void ojankohs_state::ojankohs_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(ojankohs_state::ojankohs_videoram_w)).share("videoram"); + map(0x9000, 0x9fff).ram().w(this, FUNC(ojankohs_state::ojankohs_colorram_w)).share("colorram"); + map(0xa000, 0xb7ff).ram().share("nvram"); + map(0xb800, 0xbfff).ram().w(this, FUNC(ojankohs_state::ojankohs_palette_w)).share("paletteram"); + map(0xc000, 0xffff).bankr("bank1"); +} + + +void ojankohs_state::ojankoy_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram().w(this, FUNC(ojankohs_state::ojankohs_videoram_w)).share("videoram"); + map(0xa000, 0xafff).ram().w(this, FUNC(ojankohs_state::ojankohs_colorram_w)).share("colorram"); + map(0xb000, 0xbfff).ram().share("nvram"); + map(0xc000, 0xffff).bankr("bank1"); +} + + +void ojankohs_state::ojankoc_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).bankr("bank1").w(this, FUNC(ojankohs_state::ojankoc_videoram_w)); +} + + +void ojankohs_state::ojankohs_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("system").w(this, FUNC(ojankohs_state::port_select_w)); + map(0x01, 0x01).rw(this, FUNC(ojankohs_state::keymatrix_p1_r), FUNC(ojankohs_state::ojankohs_rombank_w)); + map(0x02, 0x02).rw(this, FUNC(ojankohs_state::keymatrix_p2_r), FUNC(ojankohs_state::ojankohs_gfxreg_w)); + map(0x03, 0x03).w(this, FUNC(ojankohs_state::ojankohs_adpcm_reset_w)); + map(0x04, 0x04).w(this, FUNC(ojankohs_state::ojankohs_flipscreen_w)); + map(0x05, 0x05).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w)); + map(0x06, 0x06).r("aysnd", FUNC(ym2149_device::data_r)); + map(0x06, 0x07).w("aysnd", FUNC(ym2149_device::data_address_w)); + map(0x10, 0x11).w("gga", FUNC(vsystem_gga_device::write)); +} + +void ojankohs_state::ojankoy_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("system").w(this, FUNC(ojankohs_state::port_select_w)); + map(0x01, 0x01).rw(this, FUNC(ojankohs_state::keymatrix_p1_r), FUNC(ojankohs_state::ojankoy_rombank_w)); + map(0x02, 0x02).rw(this, FUNC(ojankohs_state::keymatrix_p2_r), FUNC(ojankohs_state::ojankoy_coinctr_w)); + map(0x04, 0x04).w(this, FUNC(ojankohs_state::ojankohs_flipscreen_w)); + map(0x05, 0x05).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w)); + map(0x06, 0x06).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x06, 0x07).w("aysnd", FUNC(ay8910_device::data_address_w)); +} + +void ojankohs_state::ccasino_io_map(address_map &map) +{ + map(0x00, 0x00).mirror(0xff00).portr("system").w(this, FUNC(ojankohs_state::port_select_w)); + map(0x01, 0x01).mirror(0xff00).rw(this, FUNC(ojankohs_state::keymatrix_p1_r), FUNC(ojankohs_state::ojankohs_rombank_w)); + map(0x02, 0x02).mirror(0xff00).rw(this, FUNC(ojankohs_state::keymatrix_p2_r), FUNC(ojankohs_state::ccasino_coinctr_w)); + map(0x03, 0x03).mirror(0xff00).r(this, FUNC(ojankohs_state::ccasino_dipsw3_r)).w(this, FUNC(ojankohs_state::ojankohs_adpcm_reset_w)); + map(0x04, 0x04).mirror(0xff00).r(this, FUNC(ojankohs_state::ccasino_dipsw4_r)).w(this, FUNC(ojankohs_state::ojankohs_flipscreen_w)); + map(0x05, 0x05).mirror(0xff00).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w)); + map(0x06, 0x06).mirror(0xff00).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x06, 0x07).mirror(0xff00).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x08, 0x0f).select(0xff00).w(this, FUNC(ojankohs_state::ccasino_palette_w)); // 16bit address access + map(0x10, 0x11).mirror(0xff00).w("gga", FUNC(vsystem_gga_device::write)); +} + +void ojankohs_state::ojankoc_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x1f).w(this, FUNC(ojankohs_state::ojankoc_palette_w)); + map(0xf9, 0xf9).w(this, FUNC(ojankohs_state::ojankohs_msm5205_w)); + map(0xfb, 0xfb).w(this, FUNC(ojankohs_state::ojankoc_ctrl_w)); + map(0xfc, 0xfc).r(this, FUNC(ojankohs_state::ojankoc_keymatrix_p1_r)); + map(0xfd, 0xfd).r(this, FUNC(ojankohs_state::ojankoc_keymatrix_p2_r)); + map(0xfd, 0xfd).w(this, FUNC(ojankohs_state::port_select_w)); + map(0xfe, 0xff).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0xff, 0xff).r("aysnd", FUNC(ay8910_device::data_r)); +} //************************************************************************** diff --git a/src/mame/drivers/okean240.cpp b/src/mame/drivers/okean240.cpp index 757dc3d8882..a5452dbac9a 100644 --- a/src/mame/drivers/okean240.cpp +++ b/src/mame/drivers/okean240.cpp @@ -219,37 +219,40 @@ WRITE8_MEMBER(okean240_state::scroll_w) m_scroll = data; } -ADDRESS_MAP_START(okean240_state::okean240_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") - AM_RANGE(0x0800, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(okean240_state::okean240_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppikbd", i8255_device, read, write) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("pic", pic8259_device, read, write) - AM_RANGE(0x80, 0x80) AM_READ(okean240_kbd_status_r) - AM_RANGE(0xa0, 0xa0) AM_READ(term_r) - AM_RANGE(0xa1, 0xa1) AM_READ(term_status_r) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppic", i8255_device, read, write) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("ppie", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(okean240_state::okean240a_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppikbd", i8255_device, read, write) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("pic", pic8259_device, read, write) - AM_RANGE(0x80, 0x80) AM_READ(okean240a_kbd_status_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppic", i8255_device, read, write) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("ppie", i8255_device, read, write) +void okean240_state::okean240_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0x3fff).ram(); + map(0x4000, 0x7fff).ram().share("videoram"); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xffff).rom(); +} + +void okean240_state::okean240_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x43).rw("ppikbd", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x60, 0x63).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x80, 0x81).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x80, 0x80).r(this, FUNC(okean240_state::okean240_kbd_status_r)); + map(0xa0, 0xa0).r(this, FUNC(okean240_state::term_r)); + map(0xa1, 0xa1).r(this, FUNC(okean240_state::term_status_r)); + map(0xc0, 0xc3).rw("ppic", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe0, 0xe3).rw("ppie", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void okean240_state::okean240a_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x43).rw("ppikbd", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x60, 0x63).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x80, 0x81).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x80, 0x80).r(this, FUNC(okean240_state::okean240a_kbd_status_r)); + map(0xa0, 0xa0).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xa1, 0xa1).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xc0, 0xc3).rw("ppic", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe0, 0xe3).rw("ppie", FUNC(i8255_device::read), FUNC(i8255_device::write)); // AM_RANGE(0x00, 0x1f)=ppa00.data // AM_RANGE(0x20, 0x23)=dsk.data // AM_RANGE(0x24, 0x24)=dsk.wait @@ -260,20 +263,21 @@ ADDRESS_MAP_START(okean240_state::okean240a_io) // AM_RANGE(0xa0, 0xa1)=comport.data // AM_RANGE(0xc0, 0xdf)=ppaC0.data // AM_RANGE(0xe0, 0xff)=ppaE0.data -ADDRESS_MAP_END - -ADDRESS_MAP_START(okean240_state::okean240t_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x23) AM_WRITENOP - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppikbd", i8255_device, read, write) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("pic", pic8259_device, read, write) - AM_RANGE(0x80, 0x80) AM_READ(okean240_kbd_status_r) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppic", i8255_device, read, write) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("ppie", i8255_device, read, write) -ADDRESS_MAP_END +} + +void okean240_state::okean240t_io(address_map &map) +{ + map.global_mask(0xff); + map(0x20, 0x23).nopw(); + map(0x40, 0x43).rw("ppikbd", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x60, 0x63).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x80, 0x81).rw("pic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x80, 0x80).r(this, FUNC(okean240_state::okean240_kbd_status_r)); + map(0xa0, 0xa0).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xa1, 0xa1).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xc0, 0xc3).rw("ppic", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe0, 0xe3).rw("ppie", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input ports */ static INPUT_PORTS_START( okean240 ) diff --git a/src/mame/drivers/olibochu.cpp b/src/mame/drivers/olibochu.cpp index 64c3d3d7159..dc256e266c7 100644 --- a/src/mame/drivers/olibochu.cpp +++ b/src/mame/drivers/olibochu.cpp @@ -270,33 +270,35 @@ WRITE8_MEMBER(olibochu_state::sound_command_w) } -ADDRESS_MAP_START(olibochu_state::olibochu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(olibochu_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(olibochu_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9000, 0x903f) AM_RAM //??? - AM_RANGE(0x9800, 0x983f) AM_RAM //??? - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") - AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW0") - AM_RANGE(0xa004, 0xa004) AM_READ_PORT("DSW1") - AM_RANGE(0xa005, 0xa005) AM_READ_PORT("DSW2") - AM_RANGE(0xa800, 0xa801) AM_WRITE(sound_command_w) - AM_RANGE(0xa802, 0xa802) AM_WRITE(olibochu_flipscreen_w) /* bit 6 = enable sound? */ - AM_RANGE(0xf000, 0xffff) AM_RAM - AM_RANGE(0xf400, 0xf41f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf440, 0xf47f) AM_RAM AM_SHARE("spriteram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(olibochu_state::olibochu_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* likely ay8910 input port, not direct */ - AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x7004, 0x7004) AM_WRITENOP //sound filter? - AM_RANGE(0x7006, 0x7006) AM_WRITENOP //irq ack? -ADDRESS_MAP_END +void olibochu_state::olibochu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(olibochu_state::olibochu_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(olibochu_state::olibochu_colorram_w)).share("colorram"); + map(0x9000, 0x903f).ram(); //??? + map(0x9800, 0x983f).ram(); //??? + map(0xa000, 0xa000).portr("IN0"); + map(0xa001, 0xa001).portr("IN1"); + map(0xa002, 0xa002).portr("IN2"); + map(0xa003, 0xa003).portr("DSW0"); + map(0xa004, 0xa004).portr("DSW1"); + map(0xa005, 0xa005).portr("DSW2"); + map(0xa800, 0xa801).w(this, FUNC(olibochu_state::sound_command_w)); + map(0xa802, 0xa802).w(this, FUNC(olibochu_state::olibochu_flipscreen_w)); /* bit 6 = enable sound? */ + map(0xf000, 0xffff).ram(); + map(0xf400, 0xf41f).ram().share("spriteram"); + map(0xf440, 0xf47f).ram().share("spriteram2"); +} + +void olibochu_state::olibochu_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x6000, 0x63ff).ram(); + map(0x7000, 0x7000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* likely ay8910 input port, not direct */ + map(0x7000, 0x7001).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x7004, 0x7004).nopw(); //sound filter? + map(0x7006, 0x7006).nopw(); //irq ack? +} static INPUT_PORTS_START( olibochu ) diff --git a/src/mame/drivers/olyboss.cpp b/src/mame/drivers/olyboss.cpp index edd5b60f933..0eb4e4ab5d1 100644 --- a/src/mame/drivers/olyboss.cpp +++ b/src/mame/drivers/olyboss.cpp @@ -162,38 +162,41 @@ void olyboss_state::device_timer(emu_timer &timer, device_timer_id id, int param // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(olyboss_state::olyboss_mem) - AM_RANGE(0x0000, 0x7ff ) AM_READWRITE(rom_r, rom_w) AM_SHARE("lowram") - AM_RANGE(0x800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(olyboss_state::olyboss_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0, 0x8) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write) - AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", upd765a_device, map) +void olyboss_state::olyboss_mem(address_map &map) +{ + map(0x0000, 0x7ff).rw(this, FUNC(olyboss_state::rom_r), FUNC(olyboss_state::rom_w)).share("lowram"); + map(0x800, 0xffff).ram(); +} + +void olyboss_state::olyboss_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x0, 0x8).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0x10, 0x11).m(m_fdc, FUNC(upd765a_device::map)); //AM_RANGE(0x20, 0x20) //beeper? - AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("uic", am9519_device, data_r, data_w) - AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("uic", am9519_device, stat_r, cmd_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ppi", i8255_device, read, write) + map(0x30, 0x30).rw(m_uic, FUNC(am9519_device::data_r), FUNC(am9519_device::data_w)); + map(0x31, 0x31).rw(m_uic, FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w)); + map(0x40, 0x43).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); //AM_RANGE(0x50, 0x53) COM2651 - AM_RANGE(0x60, 0x60) AM_READWRITE(fdcctrl_r, fdcctrl_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write) - AM_RANGE(0x82, 0x84) AM_WRITE(vchrmap_w) - AM_RANGE(0x90, 0x9f) AM_WRITE(vchrram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(olyboss_state::olyboss85_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0, 0x8) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write) - AM_RANGE(0x10, 0x11) AM_DEVICE("fdc", upd765a_device, map) - AM_RANGE(0x20, 0x21) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write) - AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("pic", pic8259_device, read, write) - AM_RANGE(0x42, 0x42) AM_READ(keyboard_read) - AM_RANGE(0x42, 0x44) AM_WRITE(vchrram85_w) - AM_RANGE(0x45, 0x45) AM_WRITE(fdcctrl85_w) -ADDRESS_MAP_END + map(0x60, 0x60).rw(this, FUNC(olyboss_state::fdcctrl_r), FUNC(olyboss_state::fdcctrl_w)); + map(0x80, 0x81).rw(m_crtc, FUNC(upd3301_device::read), FUNC(upd3301_device::write)); + map(0x82, 0x84).w(this, FUNC(olyboss_state::vchrmap_w)); + map(0x90, 0x9f).w(this, FUNC(olyboss_state::vchrram_w)); +} + +void olyboss_state::olyboss85_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x0, 0x8).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0x10, 0x11).m(m_fdc, FUNC(upd765a_device::map)); + map(0x20, 0x21).rw(m_crtc, FUNC(upd3301_device::read), FUNC(upd3301_device::write)); + map(0x30, 0x31).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x42, 0x42).r(this, FUNC(olyboss_state::keyboard_read)); + map(0x42, 0x44).w(this, FUNC(olyboss_state::vchrram85_w)); + map(0x45, 0x45).w(this, FUNC(olyboss_state::fdcctrl85_w)); +} static INPUT_PORTS_START( olyboss ) PORT_START("DSW") diff --git a/src/mame/drivers/omegrace.cpp b/src/mame/drivers/omegrace.cpp index 803f9afc576..18b780e2bc6 100644 --- a/src/mame/drivers/omegrace.cpp +++ b/src/mame/drivers/omegrace.cpp @@ -360,30 +360,32 @@ WRITE8_MEMBER(omegrace_state::omegrace_soundlatch_w) * *************************************/ -ADDRESS_MAP_START(omegrace_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4bff) AM_RAM - AM_RANGE(0x5c00, 0x5cff) AM_RAM AM_SHARE("nvram") /* NVRAM */ - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x8000) /* vector ram */ - AM_RANGE(0x9000, 0x9fff) AM_ROM /* vector rom */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(omegrace_state::port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x08) AM_READ(omegrace_vg_go_r) - AM_RANGE(0x09, 0x09) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("dvg", dvg_device, reset_w) - AM_RANGE(0x0b, 0x0b) AM_READ_PORT("AVGDVG") /* vg_halt */ - AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1") /* DIP SW C4 */ - AM_RANGE(0x17, 0x17) AM_READ_PORT("DSW2") /* DIP SW C6 */ - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") /* Player 1 input */ - AM_RANGE(0x12, 0x12) AM_READ_PORT("IN1") /* Player 2 input */ - AM_RANGE(0x13, 0x13) AM_WRITE(omegrace_leds_w) /* coin counters, leds, flip screen */ - AM_RANGE(0x14, 0x14) AM_WRITE(omegrace_soundlatch_w) /* Sound command */ - AM_RANGE(0x15, 0x15) AM_READ(omegrace_spinner1_r) /* 1st controller */ - AM_RANGE(0x16, 0x16) AM_READ_PORT("SPIN1") /* 2nd controller (cocktail) */ -ADDRESS_MAP_END +void omegrace_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4bff).ram(); + map(0x5c00, 0x5cff).ram().share("nvram"); /* NVRAM */ + map(0x8000, 0x8fff).ram().share("vectorram").region("maincpu", 0x8000); /* vector ram */ + map(0x9000, 0x9fff).rom(); /* vector rom */ +} + + +void omegrace_state::port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x08).r(this, FUNC(omegrace_state::omegrace_vg_go_r)); + map(0x09, 0x09).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x0a, 0x0a).w(m_dvg, FUNC(dvg_device::reset_w)); + map(0x0b, 0x0b).portr("AVGDVG"); /* vg_halt */ + map(0x10, 0x10).portr("DSW1"); /* DIP SW C4 */ + map(0x17, 0x17).portr("DSW2"); /* DIP SW C6 */ + map(0x11, 0x11).portr("IN0"); /* Player 1 input */ + map(0x12, 0x12).portr("IN1"); /* Player 2 input */ + map(0x13, 0x13).w(this, FUNC(omegrace_state::omegrace_leds_w)); /* coin counters, leds, flip screen */ + map(0x14, 0x14).w(this, FUNC(omegrace_state::omegrace_soundlatch_w)); /* Sound command */ + map(0x15, 0x15).r(this, FUNC(omegrace_state::omegrace_spinner1_r)); /* 1st controller */ + map(0x16, 0x16).portr("SPIN1"); /* 2nd controller (cocktail) */ +} /************************************* @@ -392,18 +394,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(omegrace_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_MIRROR(0x800) - AM_RANGE(0x1000, 0x13ff) AM_RAM -ADDRESS_MAP_END +void omegrace_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).rom().mirror(0x800); + map(0x1000, 0x13ff).ram(); +} -ADDRESS_MAP_START(omegrace_state::sound_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // the game reads from ay1 port b, but ay8912 only has port a - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8912_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8912_device, address_data_w) -ADDRESS_MAP_END +void omegrace_state::sound_port(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // the game reads from ay1 port b, but ay8912 only has port a + map(0x00, 0x01).w("ay1", FUNC(ay8912_device::address_data_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8912_device::address_data_w)); +} diff --git a/src/mame/drivers/ondra.cpp b/src/mame/drivers/ondra.cpp index d2793f1429a..14c73cfabec 100644 --- a/src/mame/drivers/ondra.cpp +++ b/src/mame/drivers/ondra.cpp @@ -22,19 +22,21 @@ /* Address maps */ -ADDRESS_MAP_START(ondra_state::ondra_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0xdfff) AM_RAMBANK("bank2") - AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ondra_state::ondra_io) - ADDRESS_MAP_GLOBAL_MASK(0x0b) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x03, 0x03) AM_WRITE(ondra_port_03_w) +void ondra_state::ondra_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0xdfff).bankrw("bank2"); + map(0xe000, 0xffff).bankrw("bank3"); +} + +void ondra_state::ondra_io(address_map &map) +{ + map.global_mask(0x0b); + map.unmap_value_high(); + map(0x03, 0x03).w(this, FUNC(ondra_state::ondra_port_03_w)); //AM_RANGE(0x09, 0x09) AM_WRITE(ondra_port_09_w) //AM_RANGE(0x0a, 0x0a) AM_WRITE(ondra_port_0a_w) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( ondra ) diff --git a/src/mame/drivers/oneshot.cpp b/src/mame/drivers/oneshot.cpp index 58ffb101e69..93d59f3c8f3 100644 --- a/src/mame/drivers/oneshot.cpp +++ b/src/mame/drivers/oneshot.cpp @@ -109,36 +109,38 @@ WRITE16_MEMBER(oneshot_state::soundbank_w) -ADDRESS_MAP_START(oneshot_state::oneshot_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x120000, 0x120fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(oneshot_mid_videoram_w) AM_SHARE("mid_videoram") // some people , girl etc. - AM_RANGE(0x181000, 0x181fff) AM_RAM_WRITE(oneshot_fg_videoram_w) AM_SHARE("fg_videoram") // credits etc. - AM_RANGE(0x182000, 0x182fff) AM_RAM_WRITE(oneshot_bg_videoram_w) AM_SHARE("bg_videoram") // credits etc. - AM_RANGE(0x188000, 0x18800f) AM_WRITEONLY AM_SHARE("scroll") // scroll registers - AM_RANGE(0x190002, 0x190003) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x190010, 0x190011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x190018, 0x190019) AM_WRITE(soundbank_w) - AM_RANGE(0x190026, 0x190027) AM_READ(oneshot_gun_x_p1_r) - AM_RANGE(0x19002e, 0x19002f) AM_READ(oneshot_gun_x_p2_r) - AM_RANGE(0x190036, 0x190037) AM_READ(oneshot_gun_y_p1_r) - AM_RANGE(0x19003e, 0x19003f) AM_READ(oneshot_gun_y_p2_r) - AM_RANGE(0x19c020, 0x19c021) AM_READ(oneshot_in0_word_r) - AM_RANGE(0x19c024, 0x19c025) AM_READ_PORT("DSW2") - AM_RANGE(0x19c02c, 0x19c02d) AM_READ_PORT("CREDITS") - AM_RANGE(0x19c030, 0x19c031) AM_READ_PORT("P1") - AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("P2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(oneshot_state::oneshot_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) - AM_RANGE(0x8001, 0x87ff) AM_RAM - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void oneshot_state::oneshot_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x087fff).ram(); + map(0x0c0000, 0x0c07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x120000, 0x120fff).ram().share("sprites"); + map(0x180000, 0x180fff).ram().w(this, FUNC(oneshot_state::oneshot_mid_videoram_w)).share("mid_videoram"); // some people , girl etc. + map(0x181000, 0x181fff).ram().w(this, FUNC(oneshot_state::oneshot_fg_videoram_w)).share("fg_videoram"); // credits etc. + map(0x182000, 0x182fff).ram().w(this, FUNC(oneshot_state::oneshot_bg_videoram_w)).share("bg_videoram"); // credits etc. + map(0x188000, 0x18800f).writeonly().share("scroll"); // scroll registers + map(0x190003, 0x190003).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x190011, 0x190011).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x190018, 0x190019).w(this, FUNC(oneshot_state::soundbank_w)); + map(0x190026, 0x190027).r(this, FUNC(oneshot_state::oneshot_gun_x_p1_r)); + map(0x19002e, 0x19002f).r(this, FUNC(oneshot_state::oneshot_gun_x_p2_r)); + map(0x190036, 0x190037).r(this, FUNC(oneshot_state::oneshot_gun_y_p1_r)); + map(0x19003e, 0x19003f).r(this, FUNC(oneshot_state::oneshot_gun_y_p2_r)); + map(0x19c020, 0x19c021).r(this, FUNC(oneshot_state::oneshot_in0_word_r)); + map(0x19c024, 0x19c025).portr("DSW2"); + map(0x19c02c, 0x19c02d).portr("CREDITS"); + map(0x19c030, 0x19c031).portr("P1"); + map(0x19c034, 0x19c035).portr("P2"); +} + +void oneshot_state::oneshot_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8000).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); + map(0x8001, 0x87ff).ram(); + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xe010, 0xe010).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( oneshot ) diff --git a/src/mame/drivers/onetwo.cpp b/src/mame/drivers/onetwo.cpp index c838830babe..521be6eaeeb 100644 --- a/src/mame/drivers/onetwo.cpp +++ b/src/mame/drivers/onetwo.cpp @@ -181,37 +181,41 @@ WRITE8_MEMBER(onetwo_state::palette2_w) * *************************************/ -ADDRESS_MAP_START(onetwo_state::main_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc800, 0xc87f) AM_RAM_WRITE(palette1_w) AM_SHARE("paletteram") - AM_RANGE(0xc900, 0xc97f) AM_RAM_WRITE(palette2_w) AM_SHARE("paletteram2") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(onetwo_fgram_w) AM_SHARE("fgram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(onetwo_state::main_cpu_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(onetwo_coin_counters_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE(onetwo_cpubank_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") - AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(onetwo_state::sound_cpu) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(onetwo_state::sound_cpu_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END +void onetwo_state::main_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0x10000); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc800, 0xc87f).ram().w(this, FUNC(onetwo_state::palette1_w)).share("paletteram"); + map(0xc900, 0xc97f).ram().w(this, FUNC(onetwo_state::palette2_w)).share("paletteram2"); + map(0xd000, 0xdfff).ram().w(this, FUNC(onetwo_state::onetwo_fgram_w)).share("fgram"); + map(0xe000, 0xffff).ram(); +} + +void onetwo_state::main_cpu_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1").w(this, FUNC(onetwo_state::onetwo_coin_counters_w)); + map(0x01, 0x01).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).portr("P1").w(this, FUNC(onetwo_state::onetwo_cpubank_w)); + map(0x03, 0x03).portr("P2"); + map(0x04, 0x04).portr("SYSTEM"); +} + +void onetwo_state::sound_cpu(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void onetwo_state::sound_cpu_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x40, 0x40).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xc0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} /************************************* * diff --git a/src/mame/drivers/onyx.cpp b/src/mame/drivers/onyx.cpp index 5889377b477..1a6be042567 100644 --- a/src/mame/drivers/onyx.cpp +++ b/src/mame/drivers/onyx.cpp @@ -90,13 +90,15 @@ MACHINE_RESET_MEMBER(onyx_state, c8002) { } -ADDRESS_MAP_START(onyx_state::c8002_mem) - AM_RANGE(0x00000, 0x00fff) AM_ROM AM_SHARE("share0") - AM_RANGE(0x01000, 0x07fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x08000, 0x0ffff) AM_RAM AM_SHARE("share2") // Z8002 has 64k memory -ADDRESS_MAP_END +void onyx_state::c8002_mem(address_map &map) +{ + map(0x00000, 0x00fff).rom().share("share0"); + map(0x01000, 0x07fff).ram().share("share1"); + map(0x08000, 0x0ffff).ram().share("share2"); // Z8002 has 64k memory +} -ADDRESS_MAP_START(onyx_state::c8002_io) +void onyx_state::c8002_io(address_map &map) +{ map(0xff00, 0xff07).lrw8("sio1_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sio1->cd_ba_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sio1->cd_ba_w(space, offset >> 1, data, mem_mask); }); map(0xff08, 0xff0f).lrw8("sio2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sio1->cd_ba_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sio1->cd_ba_w(space, offset >> 1, data, mem_mask); }); map(0xff10, 0xff17).lrw8("sio3_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sio1->cd_ba_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sio1->cd_ba_w(space, offset >> 1, data, mem_mask); }); @@ -107,19 +109,21 @@ ADDRESS_MAP_START(onyx_state::c8002_io) map(0xff40, 0xff47).lrw8("ctc3_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_ctc3->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ctc3->write(space, offset >> 1, data, mem_mask); }); map(0xff50, 0xff57).lrw8("pio1_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_pio1->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pio1->write(space, offset >> 1, data, mem_mask); }); map(0xff58, 0xff5f).lrw8("pio2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_pio2->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pio2->write(space, offset >> 1, data, mem_mask); }); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(onyx_state::submem) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0xffff) AM_RAM -ADDRESS_MAP_END +void onyx_state::submem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0xffff).ram(); +} -ADDRESS_MAP_START(onyx_state::subio) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pio1s", z80pio_device, read, write) - AM_RANGE(0x04, 0x04) AM_READNOP // disk status? - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("sio1s", z80sio_device, cd_ba_r, cd_ba_w ) -ADDRESS_MAP_END +void onyx_state::subio(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("pio1s", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x04, 0x04).nopr(); // disk status? + map(0x0c, 0x0f).rw("sio1s", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); +} /*************************************************************************** @@ -227,15 +231,17 @@ Labels of proms: 339, 153, XMN4, 2_1, 1_2 *********************************************************************************************************************************/ -ADDRESS_MAP_START(onyx_state::c5000_mem) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0xffff) AM_RAM -ADDRESS_MAP_END +void onyx_state::c5000_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0xffff).ram(); +} -ADDRESS_MAP_START(onyx_state::c5000_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio1", z80sio_device, cd_ba_r, cd_ba_w ) -ADDRESS_MAP_END +void onyx_state::c5000_io(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x13).rw(m_sio1, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); +} MACHINE_CONFIG_START(onyx_state::c5000) /* basic machine hardware */ diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp index 4a731de13de..7cf87c8630c 100644 --- a/src/mame/drivers/opwolf.cpp +++ b/src/mame/drivers/opwolf.cpp @@ -346,82 +346,89 @@ WRITE8_MEMBER(opwolf_state::sound_bankswitch_w) ***********************************************************/ -ADDRESS_MAP_START(opwolf_state::opwolf_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0f0000, 0x0f07ff) AM_MIRROR(0xf000) AM_READ(opwolf_cchip_data_r) - AM_RANGE(0x0f0802, 0x0f0803) AM_MIRROR(0xf000) AM_READ(opwolf_cchip_status_r) - AM_RANGE(0x0ff000, 0x0ff7ff) AM_WRITE(opwolf_cchip_data_w) - AM_RANGE(0x0ff802, 0x0ff803) AM_WRITE(opwolf_cchip_status_w) - AM_RANGE(0x0ffc00, 0x0ffc01) AM_WRITE(opwolf_cchip_bank_w) - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */ - AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire - AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 */ - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog ?? */ - AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) - AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY /* error in init code (?) */ - AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(opwolf_state::opwolfb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0f0008, 0x0f000b) AM_READ(opwolf_in_r) /* coins and buttons */ - AM_RANGE(0x0ff000, 0x0fffff) AM_READWRITE(cchip_r,cchip_w) - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */ - AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire - AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 */ - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog ?? */ - AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) - AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY /* error in init code (?) */ - AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(opwolf_state::opwolfp_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x107fff) AM_RAM - - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r) /* dip switches */ - AM_RANGE(0x380000, 0x380003) AM_WRITE(opwolf_spritectrl_w) // usually 0x4, changes when you fire - AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r) /* lightgun, read at $11e0/6 (AND INPUTS) */ - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog ?? */ - AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) - AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY /* error in init code (?) */ - AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ -ADDRESS_MAP_END +void opwolf_state::opwolf_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0f0000, 0x0f07ff).mirror(0xf000).r(this, FUNC(opwolf_state::opwolf_cchip_data_r)); + map(0x0f0802, 0x0f0803).mirror(0xf000).r(this, FUNC(opwolf_state::opwolf_cchip_status_r)); + map(0x0ff000, 0x0ff7ff).w(this, FUNC(opwolf_state::opwolf_cchip_data_w)); + map(0x0ff802, 0x0ff803).w(this, FUNC(opwolf_state::opwolf_cchip_status_w)); + map(0x0ffc00, 0x0ffc01).w(this, FUNC(opwolf_state::opwolf_cchip_bank_w)); + map(0x100000, 0x107fff).ram(); + map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x380000, 0x380003).r(this, FUNC(opwolf_state::opwolf_dsw_r)); /* dip switches */ + map(0x380000, 0x380003).w(this, FUNC(opwolf_state::opwolf_spritectrl_w)); // usually 0x4, changes when you fire + map(0x3a0000, 0x3a0003).r(this, FUNC(opwolf_state::opwolf_lightgun_r)); /* lightgun, read at $11e0/6 */ + map(0x3c0000, 0x3c0001).nopw(); /* watchdog ?? */ + map(0x3e0000, 0x3e0001).nopr(); + map(0x3e0000, 0x3e0000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x3e0002, 0x3e0002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xc10000, 0xc1ffff).writeonly(); /* error in init code (?) */ + map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ +} + + +void opwolf_state::opwolfb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0f0008, 0x0f000b).r(this, FUNC(opwolf_state::opwolf_in_r)); /* coins and buttons */ + map(0x0ff000, 0x0fffff).rw(this, FUNC(opwolf_state::cchip_r), FUNC(opwolf_state::cchip_w)); + map(0x100000, 0x107fff).ram(); + map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x380000, 0x380003).r(this, FUNC(opwolf_state::opwolf_dsw_r)); /* dip switches */ + map(0x380000, 0x380003).w(this, FUNC(opwolf_state::opwolf_spritectrl_w)); // usually 0x4, changes when you fire + map(0x3a0000, 0x3a0003).r(this, FUNC(opwolf_state::opwolf_lightgun_r)); /* lightgun, read at $11e0/6 */ + map(0x3c0000, 0x3c0001).nopw(); /* watchdog ?? */ + map(0x3e0000, 0x3e0001).nopr(); + map(0x3e0000, 0x3e0000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x3e0002, 0x3e0002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xc10000, 0xc1ffff).writeonly(); /* error in init code (?) */ + map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ +} + +void opwolf_state::opwolfp_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x107fff).ram(); + + map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x380000, 0x380003).r(this, FUNC(opwolf_state::opwolf_dsw_r)); /* dip switches */ + map(0x380000, 0x380003).w(this, FUNC(opwolf_state::opwolf_spritectrl_w)); // usually 0x4, changes when you fire + map(0x3a0000, 0x3a0003).r(this, FUNC(opwolf_state::opwolf_lightgun_r)); /* lightgun, read at $11e0/6 (AND INPUTS) */ + map(0x3c0000, 0x3c0001).nopw(); /* watchdog ?? */ + map(0x3e0000, 0x3e0001).nopr(); + map(0x3e0000, 0x3e0000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x3e0002, 0x3e0002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xc10000, 0xc1ffff).writeonly(); /* error in init code (?) */ + map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ +} /*************************************************************************** This extra Z80 substitutes for the c-chip in the bootleg */ -ADDRESS_MAP_START(opwolf_state::opwolfb_sub_z80_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8800, 0x8800) AM_READ(z80_input1_r) /* read at PC=$637: poked to $c004 */ - AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown write, 0 then 1 each interrupt */ - AM_RANGE(0x9800, 0x9800) AM_READ(z80_input2_r) /* read at PC=$631: poked to $c005 */ - AM_RANGE(0xa000, 0xa000) AM_WRITENOP /* IRQ acknowledge (unimplemented) */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("cchip_ram") -ADDRESS_MAP_END +void opwolf_state::opwolfb_sub_z80_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8800, 0x8800).r(this, FUNC(opwolf_state::z80_input1_r)); /* read at PC=$637: poked to $c004 */ + map(0x9000, 0x9000).nopw(); /* unknown write, 0 then 1 each interrupt */ + map(0x9800, 0x9800).r(this, FUNC(opwolf_state::z80_input2_r)); /* read at PC=$631: poked to $c005 */ + map(0xa000, 0xa000).nopw(); /* IRQ acknowledge (unimplemented) */ + map(0xc000, 0xc7ff).ram().share("cchip_ram"); +} /***************************************************************************/ @@ -550,19 +557,20 @@ WRITE8_MEMBER(opwolf_state::opwolf_adpcm_e_w) // logerror("CPU #1 e00%i-data=%2x pc=%4x\n",offset,data,m_audiocpu->pc() ); } -ADDRESS_MAP_START(opwolf_state::opwolf_sound_z80_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x9002, 0x9100) AM_READNOP - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xb006) AM_WRITE(opwolf_adpcm_b_w) - AM_RANGE(0xc000, 0xc006) AM_WRITE(opwolf_adpcm_c_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(opwolf_adpcm_d_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(opwolf_adpcm_e_w) -ADDRESS_MAP_END +void opwolf_state::opwolf_sound_z80_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9002, 0x9100).nopr(); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xb006).w(this, FUNC(opwolf_state::opwolf_adpcm_b_w)); + map(0xc000, 0xc006).w(this, FUNC(opwolf_state::opwolf_adpcm_c_w)); + map(0xd000, 0xd000).w(this, FUNC(opwolf_state::opwolf_adpcm_d_w)); + map(0xe000, 0xe000).w(this, FUNC(opwolf_state::opwolf_adpcm_e_w)); +} /*********************************************************** INPUT PORTS, DIPs diff --git a/src/mame/drivers/orao.cpp b/src/mame/drivers/orao.cpp index 0fc6d11a229..13fb13fa31a 100644 --- a/src/mame/drivers/orao.cpp +++ b/src/mame/drivers/orao.cpp @@ -26,15 +26,16 @@ /* Address maps */ -ADDRESS_MAP_START(orao_state::orao_mem) - AM_RANGE( 0x0000, 0x5fff ) AM_RAM AM_SHARE("memory") - AM_RANGE( 0x6000, 0x7fff ) AM_RAM AM_SHARE("video_ram") // video ram - AM_RANGE( 0x8000, 0x9fff ) AM_READWRITE(orao_io_r, orao_io_w ) - AM_RANGE( 0xa000, 0xafff ) AM_RAM // extension - AM_RANGE( 0xb000, 0xbfff ) AM_RAM // DOS - AM_RANGE( 0xc000, 0xdfff ) AM_ROM - AM_RANGE( 0xe000, 0xffff ) AM_ROM -ADDRESS_MAP_END +void orao_state::orao_mem(address_map &map) +{ + map(0x0000, 0x5fff).ram().share("memory"); + map(0x6000, 0x7fff).ram().share("video_ram"); // video ram + map(0x8000, 0x9fff).rw(this, FUNC(orao_state::orao_io_r), FUNC(orao_state::orao_io_w)); + map(0xa000, 0xafff).ram(); // extension + map(0xb000, 0xbfff).ram(); // DOS + map(0xc000, 0xdfff).rom(); + map(0xe000, 0xffff).rom(); +} /* Input ports */ diff --git a/src/mame/drivers/orbit.cpp b/src/mame/drivers/orbit.cpp index 8c92ff514cb..fde30c4eb16 100644 --- a/src/mame/drivers/orbit.cpp +++ b/src/mame/drivers/orbit.cpp @@ -91,24 +91,25 @@ WRITE_LINE_MEMBER(orbit_state::hyper_led_w) * *************************************/ -ADDRESS_MAP_START(orbit_state::orbit_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x0700) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x07ff) AM_READ_PORT("P1") - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x07ff) AM_READ_PORT("P2") - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x07ff) AM_READ_PORT("DSW1") - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07ff) AM_READ_PORT("DSW2") - AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x07ff) AM_READ_PORT("BUTTONS") - AM_RANGE(0x3000, 0x33bf) AM_MIRROR(0x0400) AM_RAM_WRITE(orbit_playfield_w) AM_SHARE("playfield_ram") - AM_RANGE(0x33c0, 0x33ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x00ff) AM_WRITE(orbit_note_w) - AM_RANGE(0x3900, 0x3900) AM_MIRROR(0x00ff) AM_WRITE(orbit_noise_amp_w) - AM_RANGE(0x3a00, 0x3a00) AM_MIRROR(0x00ff) AM_WRITE(orbit_note_amp_w) - AM_RANGE(0x3c00, 0x3c0f) AM_MIRROR(0x00f0) AM_DEVWRITE("latch", f9334_device, write_a0) - AM_RANGE(0x3e00, 0x3e00) AM_MIRROR(0x00ff) AM_WRITE(orbit_noise_rst_w) - AM_RANGE(0x3f00, 0x3f00) AM_MIRROR(0x00ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x6000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void orbit_state::orbit_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).mirror(0x0700).ram(); + map(0x0800, 0x0800).mirror(0x07ff).portr("P1"); + map(0x1000, 0x1000).mirror(0x07ff).portr("P2"); + map(0x1800, 0x1800).mirror(0x07ff).portr("DSW1"); + map(0x2000, 0x2000).mirror(0x07ff).portr("DSW2"); + map(0x2800, 0x2800).mirror(0x07ff).portr("BUTTONS"); + map(0x3000, 0x33bf).mirror(0x0400).ram().w(this, FUNC(orbit_state::orbit_playfield_w)).share("playfield_ram"); + map(0x33c0, 0x33ff).mirror(0x0400).ram().share("sprite_ram"); + map(0x3800, 0x3800).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_note_w)); + map(0x3900, 0x3900).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_noise_amp_w)); + map(0x3a00, 0x3a00).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_note_amp_w)); + map(0x3c00, 0x3c0f).mirror(0x00f0).w(m_latch, FUNC(f9334_device::write_a0)); + map(0x3e00, 0x3e00).mirror(0x00ff).w(this, FUNC(orbit_state::orbit_noise_rst_w)); + map(0x3f00, 0x3f00).mirror(0x00ff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x6000, 0x7fff).rom(); +} diff --git a/src/mame/drivers/oric.cpp b/src/mame/drivers/oric.cpp index 96c8fe8b336..ffc520e11f6 100644 --- a/src/mame/drivers/oric.cpp +++ b/src/mame/drivers/oric.cpp @@ -190,27 +190,29 @@ protected: }; /* Ram is 64K, with 16K hidden by the rom. The 300-3ff is also hidden by the i/o */ -ADDRESS_MAP_START(oric_state::oric_mem) - AM_RANGE( 0x0000, 0xffff) AM_RAM AM_SHARE("ram") - AM_RANGE( 0x0300, 0x030f) AM_DEVREADWRITE("via6522", via6522_device, read, write) AM_MIRROR(0xf0) - AM_RANGE( 0xc000, 0xdfff) AM_READ_BANK("bank_c000_r") AM_WRITE_BANK("bank_c000_w") - AM_RANGE( 0xe000, 0xf7ff) AM_READ_BANK("bank_e000_r") AM_WRITE_BANK("bank_e000_w") - AM_RANGE( 0xf800, 0xffff) AM_READ_BANK("bank_f800_r") AM_WRITE_BANK("bank_f800_w") -ADDRESS_MAP_END +void oric_state::oric_mem(address_map &map) +{ + map(0x0000, 0xffff).ram().share("ram"); + map(0x0300, 0x030f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).mirror(0xf0); + map(0xc000, 0xdfff).bankr("bank_c000_r").bankw("bank_c000_w"); + map(0xe000, 0xf7ff).bankr("bank_e000_r").bankw("bank_e000_w"); + map(0xf800, 0xffff).bankr("bank_f800_r").bankw("bank_f800_w"); +} /* The telestrat has the memory regions split into 16k blocks. Memory region &c000-&ffff can be ram or rom. */ -ADDRESS_MAP_START(telestrat_state::telestrat_mem) - AM_RANGE( 0x0000, 0xffff) AM_RAM AM_SHARE("ram") - AM_RANGE( 0x0300, 0x030f) AM_DEVREADWRITE("via6522", via6522_device, read, write) - AM_RANGE( 0x0310, 0x0313) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE( 0x0314, 0x0314) AM_READWRITE(port_314_r, port_314_w) - AM_RANGE( 0x0318, 0x0318) AM_READ(port_318_r) - AM_RANGE( 0x031c, 0x031f) AM_DEVREADWRITE("acia", mos6551_device, read, write) - AM_RANGE( 0x0320, 0x032f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) - AM_RANGE( 0xc000, 0xffff) AM_READ_BANK("bank_c000_r") AM_WRITE_BANK("bank_c000_w") -ADDRESS_MAP_END +void telestrat_state::telestrat_mem(address_map &map) +{ + map(0x0000, 0xffff).ram().share("ram"); + map(0x0300, 0x030f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x0310, 0x0313).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x0314, 0x0314).rw(this, FUNC(telestrat_state::port_314_r), FUNC(telestrat_state::port_314_w)); + map(0x0318, 0x0318).r(this, FUNC(telestrat_state::port_318_r)); + map(0x031c, 0x031f).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x0320, 0x032f).rw(m_via2, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xc000, 0xffff).bankr("bank_c000_r").bankw("bank_c000_w"); +} uint32_t oric_state::screen_update_oric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { diff --git a/src/mame/drivers/orion.cpp b/src/mame/drivers/orion.cpp index f3f85130ca2..8909988c70c 100644 --- a/src/mame/drivers/orion.cpp +++ b/src/mame/drivers/orion.cpp @@ -25,56 +25,62 @@ /* Address maps */ /* Orion 128 */ -ADDRESS_MAP_START(orion_state::orion128_mem) - AM_RANGE( 0x0000, 0xefff ) AM_RAMBANK("bank1") - AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank2") - AM_RANGE( 0xf400, 0xf4ff ) AM_READWRITE(orion128_system_r,orion128_system_w) // Keyboard and cassette - AM_RANGE( 0xf500, 0xf5ff ) AM_READWRITE(orion128_romdisk_r,orion128_romdisk_w) - AM_RANGE( 0xf700, 0xf7ff ) AM_READWRITE(orion128_floppy_r,orion128_floppy_w) - AM_RANGE( 0xf800, 0xffff ) AM_ROM - AM_RANGE( 0xf800, 0xf8ff ) AM_WRITE(orion128_video_mode_w) - AM_RANGE( 0xf900, 0xf9ff ) AM_WRITE(orion128_memory_page_w) - AM_RANGE( 0xfa00, 0xfaff ) AM_WRITE(orion128_video_page_w) -ADDRESS_MAP_END +void orion_state::orion128_mem(address_map &map) +{ + map(0x0000, 0xefff).bankrw("bank1"); + map(0xf000, 0xf3ff).bankrw("bank2"); + map(0xf400, 0xf4ff).rw(this, FUNC(orion_state::orion128_system_r), FUNC(orion_state::orion128_system_w)); // Keyboard and cassette + map(0xf500, 0xf5ff).rw(this, FUNC(orion_state::orion128_romdisk_r), FUNC(orion_state::orion128_romdisk_w)); + map(0xf700, 0xf7ff).rw(this, FUNC(orion_state::orion128_floppy_r), FUNC(orion_state::orion128_floppy_w)); + map(0xf800, 0xffff).rom(); + map(0xf800, 0xf8ff).w(this, FUNC(orion_state::orion128_video_mode_w)); + map(0xf900, 0xf9ff).w(this, FUNC(orion_state::orion128_memory_page_w)); + map(0xfa00, 0xfaff).w(this, FUNC(orion_state::orion128_video_page_w)); +} /* Orion Z80 Card II */ -ADDRESS_MAP_START(orion_state::orion128_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0xf8, 0xf8) AM_WRITE(orion128_video_mode_w ) - AM_RANGE( 0xf9, 0xf9) AM_WRITE(orion128_memory_page_w ) - AM_RANGE( 0xfa, 0xfa) AM_WRITE(orion128_video_page_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(orion_state::orionz80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x4000, 0xefff ) AM_RAMBANK("bank2") - AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank3") - AM_RANGE( 0xf400, 0xf7ff ) AM_RAMBANK("bank4") - AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank5") -ADDRESS_MAP_END +void orion_state::orion128_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xf8, 0xf8).w(this, FUNC(orion_state::orion128_video_mode_w)); + map(0xf9, 0xf9).w(this, FUNC(orion_state::orion128_memory_page_w)); + map(0xfa, 0xfa).w(this, FUNC(orion_state::orion128_video_page_w)); +} + +void orion_state::orionz80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0xefff).bankrw("bank2"); + map(0xf000, 0xf3ff).bankrw("bank3"); + map(0xf400, 0xf7ff).bankrw("bank4"); + map(0xf800, 0xffff).bankrw("bank5"); +} /* Orion Pro */ -ADDRESS_MAP_START(orion_state::orionz80_io) - AM_RANGE( 0x0000, 0xffff) AM_READWRITE(orionz80_io_r, orionz80_io_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(orion_state::orionpro_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x1fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x2000, 0x3fff ) AM_RAMBANK("bank2") - AM_RANGE( 0x4000, 0x7fff ) AM_RAMBANK("bank3") - AM_RANGE( 0x8000, 0xbfff ) AM_RAMBANK("bank4") - AM_RANGE( 0xc000, 0xefff ) AM_RAMBANK("bank5") - AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank6") - AM_RANGE( 0xf400, 0xf7ff ) AM_RAMBANK("bank7") - AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank8") -ADDRESS_MAP_END - -ADDRESS_MAP_START(orion_state::orionpro_io) - AM_RANGE( 0x0000, 0xffff) AM_READWRITE(orionpro_io_r, orionpro_io_w ) -ADDRESS_MAP_END +void orion_state::orionz80_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(orion_state::orionz80_io_r), FUNC(orion_state::orionz80_io_w)); +} + +void orion_state::orionpro_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x3fff).bankrw("bank2"); + map(0x4000, 0x7fff).bankrw("bank3"); + map(0x8000, 0xbfff).bankrw("bank4"); + map(0xc000, 0xefff).bankrw("bank5"); + map(0xf000, 0xf3ff).bankrw("bank6"); + map(0xf400, 0xf7ff).bankrw("bank7"); + map(0xf800, 0xffff).bankrw("bank8"); +} + +void orion_state::orionpro_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(orion_state::orionpro_io_r), FUNC(orion_state::orionpro_io_w)); +} FLOPPY_FORMATS_MEMBER( orion_state::orion_floppy_formats ) FLOPPY_SMX_FORMAT diff --git a/src/mame/drivers/osbexec.cpp b/src/mame/drivers/osbexec.cpp index 35793d2d024..d8f68fc50a1 100644 --- a/src/mame/drivers/osbexec.cpp +++ b/src/mame/drivers/osbexec.cpp @@ -211,27 +211,29 @@ READ8_MEMBER(osbexec_state::osbexec_rtc_r) } -ADDRESS_MAP_START(osbexec_state::osbexec_mem) - AM_RANGE( 0x0000, 0x1FFF ) AM_READ_BANK("0000") AM_WRITE(osbexec_0000_w ) /* ROM and maybe also banked ram */ - AM_RANGE( 0x2000, 0x3FFF ) AM_RAMBANK("2000") /* Banked RAM */ - AM_RANGE( 0x4000, 0xBFFF ) AM_RAMBANK("4000") /* Banked RAM */ - AM_RANGE( 0xC000, 0xDFFF ) AM_READWRITE(osbexec_c000_r, osbexec_c000_w ) /* Video ram / Banked RAM */ - AM_RANGE( 0xE000, 0xEFFF ) AM_RAMBANK("e000") /* Banked RAM */ - AM_RANGE( 0xF000, 0xFFFF ) AM_RAM /* 4KB of non-banked RAM for system stack etc */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(osbexec_state::osbexec_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0x03 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read, write) /* 6821 PIA @ UD12 */ - AM_RANGE( 0x04, 0x07 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("ctc", pit8253_device, read, write) /* 8253 @UD1 */ - AM_RANGE( 0x08, 0x0B ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("mb8877", wd_fdc_device_base, read, write ) /* MB8877 @ UB17 input clock = 1MHz */ - AM_RANGE( 0x0C, 0x0F ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w ) /* SIO @ UD4 */ - AM_RANGE( 0x10, 0x13 ) AM_MIRROR( 0xff00 ) AM_DEVREADWRITE( "pia_1", pia6821_device, read, write) /* 6821 PIA @ UD8 */ - AM_RANGE( 0x14, 0x17 ) AM_SELECT( 0xff00 ) AM_READ(osbexec_kbd_r ) /* KBD */ - AM_RANGE( 0x18, 0x1b ) AM_MIRROR( 0xff00 ) AM_READ(osbexec_rtc_r ) /* "RTC" @ UE13/UF13 */ +void osbexec_state::osbexec_mem(address_map &map) +{ + map(0x0000, 0x1FFF).bankr("0000").w(this, FUNC(osbexec_state::osbexec_0000_w)); /* ROM and maybe also banked ram */ + map(0x2000, 0x3FFF).bankrw("2000"); /* Banked RAM */ + map(0x4000, 0xBFFF).bankrw("4000"); /* Banked RAM */ + map(0xC000, 0xDFFF).rw(this, FUNC(osbexec_state::osbexec_c000_r), FUNC(osbexec_state::osbexec_c000_w)); /* Video ram / Banked RAM */ + map(0xE000, 0xEFFF).bankrw("e000"); /* Banked RAM */ + map(0xF000, 0xFFFF).ram(); /* 4KB of non-banked RAM for system stack etc */ +} + + +void osbexec_state::osbexec_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x03).mirror(0xff00).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* 6821 PIA @ UD12 */ + map(0x04, 0x07).mirror(0xff00).rw("ctc", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); /* 8253 @UD1 */ + map(0x08, 0x0B).mirror(0xff00).rw(m_mb8877, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)); /* MB8877 @ UB17 input clock = 1MHz */ + map(0x0C, 0x0F).mirror(0xff00).rw(m_sio, FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); /* SIO @ UD4 */ + map(0x10, 0x13).mirror(0xff00).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* 6821 PIA @ UD8 */ + map(0x14, 0x17).select(0xff00).r(this, FUNC(osbexec_state::osbexec_kbd_r)); /* KBD */ + map(0x18, 0x1b).mirror(0xff00).r(this, FUNC(osbexec_state::osbexec_rtc_r)); /* "RTC" @ UE13/UF13 */ /* ?? - vid ? */ -ADDRESS_MAP_END +} static INPUT_PORTS_START( osbexec ) diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index d6b2b9dc593..4916929a3f2 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -100,26 +100,29 @@ TODO: static constexpr XTAL MAIN_CLOCK = 15.9744_MHz_XTAL; -ADDRESS_MAP_START(osborne1_state::osborne1_mem) - AM_RANGE( 0x0000, 0x0FFF ) AM_READ_BANK("bank_0xxx") AM_WRITE(bank_0xxx_w) - AM_RANGE( 0x1000, 0x1FFF ) AM_READ_BANK("bank_1xxx") AM_WRITE(bank_1xxx_w) - AM_RANGE( 0x2000, 0x3FFF ) AM_READWRITE(bank_2xxx_3xxx_r, bank_2xxx_3xxx_w) - AM_RANGE( 0x4000, 0xEFFF ) AM_RAM - AM_RANGE( 0xF000, 0xFFFF ) AM_READ_BANK("bank_fxxx") AM_WRITE(videoram_w) -ADDRESS_MAP_END +void osborne1_state::osborne1_mem(address_map &map) +{ + map(0x0000, 0x0FFF).bankr("bank_0xxx").w(this, FUNC(osborne1_state::bank_0xxx_w)); + map(0x1000, 0x1FFF).bankr("bank_1xxx").w(this, FUNC(osborne1_state::bank_1xxx_w)); + map(0x2000, 0x3FFF).rw(this, FUNC(osborne1_state::bank_2xxx_3xxx_r), FUNC(osborne1_state::bank_2xxx_3xxx_w)); + map(0x4000, 0xEFFF).ram(); + map(0xF000, 0xFFFF).bankr("bank_fxxx").w(this, FUNC(osborne1_state::videoram_w)); +} -ADDRESS_MAP_START(osborne1_state::osborne1_op) - AM_RANGE( 0x0000, 0xFFFF ) AM_READ(opcode_r) -ADDRESS_MAP_END +void osborne1_state::osborne1_op(address_map &map) +{ + map(0x0000, 0xFFFF).r(this, FUNC(osborne1_state::opcode_r)); +} -ADDRESS_MAP_START(osborne1_state::osborne1_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void osborne1_state::osborne1_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); - AM_RANGE( 0x00, 0x03 ) AM_MIRROR( 0xfc ) AM_WRITE(bankswitch_w) -ADDRESS_MAP_END + map(0x00, 0x03).mirror(0xfc).w(this, FUNC(osborne1_state::bankswitch_w)); +} ADDRESS_MAP_START(osborne1_state::osborne1nv_io) ADDRESS_MAP_UNMAP_HIGH diff --git a/src/mame/drivers/osi.cpp b/src/mame/drivers/osi.cpp index 39b4795ce3b..725c98e2980 100644 --- a/src/mame/drivers/osi.cpp +++ b/src/mame/drivers/osi.cpp @@ -448,58 +448,62 @@ WRITE_LINE_MEMBER( c1pmf_state::osi470_pia_cb2_w ) /* Memory Maps */ -ADDRESS_MAP_START(sb2m600_state::osi600_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xdf00, 0xdf00) AM_READWRITE(keyboard_r, keyboard_w) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia_0", acia6850_device, read, write) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(uk101_state::uk101_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xd400, 0xd7ff) AM_NOP // bios sets this to spaces at boot - AM_RANGE(0xdc00, 0xdfff) AM_READ(keyboard_r) AM_WRITE(keyboard_w) - AM_RANGE(0xf000, 0xf001) AM_MIRROR(0x00fe) AM_DEVREADWRITE("acia_0", acia6850_device, read, write) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(c1p_state::c1p_mem) - AM_RANGE(0x0000, 0x4fff) AM_RAMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc704, 0xc707) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0xc708, 0xc70b) AM_DEVREADWRITE("pia_2", pia6821_device, read, write) - AM_RANGE(0xc70c, 0xc70f) AM_DEVREADWRITE("pia_3", pia6821_device, read, write) - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("color_ram") - AM_RANGE(0xd800, 0xd800) AM_WRITE(ctrl_w) - AM_RANGE(0xdf00, 0xdf00) AM_READWRITE(keyboard_r, keyboard_w) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia_0", acia6850_device, read, write) - AM_RANGE(0xf7c0, 0xf7c0) AM_WRITE(osi630_sound_w) - AM_RANGE(0xf7e0, 0xf7e0) AM_WRITE(osi630_ctrl_w) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(c1pmf_state::c1pmf_mem) - AM_RANGE(0x0000, 0x4fff) AM_RAMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) // FDC - AM_RANGE(0xc010, 0xc011) AM_DEVREADWRITE("acia_1", acia6850_device, read, write) - AM_RANGE(0xc704, 0xc707) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0xc708, 0xc70b) AM_DEVREADWRITE("pia_2", pia6821_device, read, write) - AM_RANGE(0xc70c, 0xc70f) AM_DEVREADWRITE("pia_3", pia6821_device, read, write) - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("color_ram") - AM_RANGE(0xd800, 0xd800) AM_WRITE(ctrl_w) - AM_RANGE(0xdf00, 0xdf00) AM_READWRITE(keyboard_r, keyboard_w) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("acia_0", acia6850_device, read, write) - AM_RANGE(0xf7c0, 0xf7c0) AM_WRITE(osi630_sound_w) - AM_RANGE(0xf7e0, 0xf7e0) AM_WRITE(osi630_ctrl_w) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void sb2m600_state::osi600_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("bank1"); + map(0xa000, 0xbfff).rom(); + map(0xd000, 0xd3ff).ram().share("video_ram"); + map(0xdf00, 0xdf00).rw(this, FUNC(sb2m600_state::keyboard_r), FUNC(sb2m600_state::keyboard_w)); + map(0xf000, 0xf001).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xf800, 0xffff).rom(); +} + +void uk101_state::uk101_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("bank1"); + map(0xa000, 0xbfff).rom(); + map(0xd000, 0xd3ff).ram().share("video_ram"); + map(0xd400, 0xd7ff).noprw(); // bios sets this to spaces at boot + map(0xdc00, 0xdfff).r(this, FUNC(uk101_state::keyboard_r)).w(this, FUNC(uk101_state::keyboard_w)); + map(0xf000, 0xf001).mirror(0x00fe).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xf800, 0xffff).rom(); +} + +void c1p_state::c1p_mem(address_map &map) +{ + map(0x0000, 0x4fff).bankrw("bank1"); + map(0xa000, 0xbfff).rom(); + map(0xc704, 0xc707).rw("pia_1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc708, 0xc70b).rw("pia_2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc70c, 0xc70f).rw("pia_3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xd000, 0xd3ff).ram().share("video_ram"); + map(0xd400, 0xd7ff).ram().share("color_ram"); + map(0xd800, 0xd800).w(this, FUNC(c1p_state::ctrl_w)); + map(0xdf00, 0xdf00).rw(this, FUNC(c1p_state::keyboard_r), FUNC(c1p_state::keyboard_w)); + map(0xf000, 0xf001).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xf7c0, 0xf7c0).w(this, FUNC(c1p_state::osi630_sound_w)); + map(0xf7e0, 0xf7e0).w(this, FUNC(c1p_state::osi630_ctrl_w)); + map(0xf800, 0xffff).rom(); +} + +void c1pmf_state::c1pmf_mem(address_map &map) +{ + map(0x0000, 0x4fff).bankrw("bank1"); + map(0xa000, 0xbfff).rom(); + map(0xc000, 0xc003).rw("pia_0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // FDC + map(0xc010, 0xc011).rw("acia_1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xc704, 0xc707).rw("pia_1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc708, 0xc70b).rw("pia_2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc70c, 0xc70f).rw("pia_3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xd000, 0xd3ff).ram().share("video_ram"); + map(0xd400, 0xd7ff).ram().share("color_ram"); + map(0xd800, 0xd800).w(this, FUNC(c1pmf_state::ctrl_w)); + map(0xdf00, 0xdf00).rw(this, FUNC(c1pmf_state::keyboard_r), FUNC(c1pmf_state::keyboard_w)); + map(0xf000, 0xf001).rw(m_acia_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xf7c0, 0xf7c0).w(this, FUNC(c1pmf_state::osi630_sound_w)); + map(0xf7e0, 0xf7e0).w(this, FUNC(c1pmf_state::osi630_ctrl_w)); + map(0xf800, 0xffff).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp index e320185885b..7ffeeed445d 100644 --- a/src/mame/drivers/othello.cpp +++ b/src/mame/drivers/othello.cpp @@ -160,12 +160,13 @@ PALETTE_INIT_MEMBER(othello_state, othello) palette.set_pen_color(0x0f, rgb_t(0xff, 0xff, 0xff)); } -ADDRESS_MAP_START(othello_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x97ff) AM_NOP /* not populated */ - AM_RANGE(0x9800, 0x9fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void othello_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x97ff).noprw(); /* not populated */ + map(0x9800, 0x9fff).ram().share("videoram"); + map(0xf000, 0xffff).ram(); +} READ8_MEMBER(othello_state::unk_87_r) { @@ -213,20 +214,21 @@ WRITE8_MEMBER(othello_state::tilebank_w) logerror("tilebank -> %x\n", data); } -ADDRESS_MAP_START(othello_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x09, 0x09) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x80, 0x80) AM_READ_PORT("INP") - AM_RANGE(0x81, 0x81) AM_READ_PORT("SYSTEM") - AM_RANGE(0x83, 0x83) AM_READ_PORT("DSW") - AM_RANGE(0x86, 0x86) AM_WRITE(tilebank_w) - AM_RANGE(0x87, 0x87) AM_READ(unk_87_r) - AM_RANGE(0x8a, 0x8a) AM_WRITE(unk_8a_w) - AM_RANGE(0x8c, 0x8c) AM_READWRITE(unk_8c_r, unk_8c_w) - AM_RANGE(0x8d, 0x8d) AM_READ(sound_ack_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x8f, 0x8f) AM_WRITE(unk_8f_w) -ADDRESS_MAP_END +void othello_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x08).w("crtc", FUNC(mc6845_device::address_w)); + map(0x09, 0x09).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x80, 0x80).portr("INP"); + map(0x81, 0x81).portr("SYSTEM"); + map(0x83, 0x83).portr("DSW"); + map(0x86, 0x86).w(this, FUNC(othello_state::tilebank_w)); + map(0x87, 0x87).r(this, FUNC(othello_state::unk_87_r)); + map(0x8a, 0x8a).w(this, FUNC(othello_state::unk_8a_w)); + map(0x8c, 0x8c).rw(this, FUNC(othello_state::unk_8c_r), FUNC(othello_state::unk_8c_w)); + map(0x8d, 0x8d).r(this, FUNC(othello_state::sound_ack_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x8f, 0x8f).w(this, FUNC(othello_state::unk_8f_w)); +} READ8_MEMBER(othello_state::latch_r) { @@ -257,19 +259,21 @@ WRITE8_MEMBER(othello_state::ay_data_w) if (m_ay_select & 2) m_ay2->data_w(space, 0, data); } -ADDRESS_MAP_START(othello_state::audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(othello_state::audio_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(latch_r) - AM_RANGE(0x01, 0x01) AM_WRITE(ay_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(ay_address_w) - AM_RANGE(0x04, 0x04) AM_WRITE(ack_w) - AM_RANGE(0x08, 0x08) AM_WRITE(ay_select_w) -ADDRESS_MAP_END +void othello_state::audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x83ff).ram(); +} + +void othello_state::audio_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(othello_state::latch_r)); + map(0x01, 0x01).w(this, FUNC(othello_state::ay_data_w)); + map(0x03, 0x03).w(this, FUNC(othello_state::ay_address_w)); + map(0x04, 0x04).w(this, FUNC(othello_state::ack_w)); + map(0x08, 0x08).w(this, FUNC(othello_state::ay_select_w)); +} WRITE8_MEMBER(othello_state::n7751_rom_control_w) { diff --git a/src/mame/drivers/othunder.cpp b/src/mame/drivers/othunder.cpp index 120d8e4685a..cc4abc6b0a9 100644 --- a/src/mame/drivers/othunder.cpp +++ b/src/mame/drivers/othunder.cpp @@ -470,37 +470,39 @@ WRITE8_MEMBER(othunder_state::tc0310fam_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(othunder_state::othunder_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM - AM_RANGE(0x090000, 0x09000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) +void othunder_state::othunder_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram(); + map(0x090000, 0x09000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); // AM_RANGE(0x09000c, 0x09000d) AM_WRITENOP /* ?? (keeps writing 0x77) */ - AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */ - AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x300000, 0x300003) AM_READWRITE(sound_r, sound_w) - AM_RANGE(0x400000, 0x4005ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x500007) AM_READWRITE(lightgun_r, lightgun_w) - AM_RANGE(0x600000, 0x600003) AM_WRITE(irq_ack_w) -ADDRESS_MAP_END + map(0x100000, 0x100007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */ + map(0x200000, 0x20ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x220000, 0x22000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x300000, 0x300003).rw(this, FUNC(othunder_state::sound_r), FUNC(othunder_state::sound_w)); + map(0x400000, 0x4005ff).ram().share("spriteram"); + map(0x500000, 0x500007).rw(this, FUNC(othunder_state::lightgun_r), FUNC(othunder_state::lightgun_w)); + map(0x600000, 0x600003).w(this, FUNC(othunder_state::irq_ack_w)); +} /***************************************************************************/ -ADDRESS_MAP_START(othunder_state::z80_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITE(tc0310fam_w) /* pan */ - AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */ - AM_RANGE(0xea00, 0xea00) AM_READ_PORT(ROTARY_PORT_TAG) /* rotary input */ - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void othunder_state::z80_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).w(this, FUNC(othunder_state::tc0310fam_w)); /* pan */ + map(0xe600, 0xe600).nopw(); /* ? */ + map(0xea00, 0xea00).portr(ROTARY_PORT_TAG); /* rotary input */ + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(othunder_state::sound_bankswitch_w)); +} diff --git a/src/mame/drivers/otomedius.cpp b/src/mame/drivers/otomedius.cpp index 58d48edc0da..b7164140027 100644 --- a/src/mame/drivers/otomedius.cpp +++ b/src/mame/drivers/otomedius.cpp @@ -46,11 +46,12 @@ uint32_t konami_pc_state::screen_update_konami_pc(screen_device &screen, bitmap_ return 0; } -ADDRESS_MAP_START(konami_pc_state::konami_pc_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0x70000) - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void konami_pc_state::konami_pc_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000f0000, 0x000fffff).rom().region("maincpu", 0x70000); + map(0xfff80000, 0xffffffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( konami_pc ) INPUT_PORTS_END diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index e466016fbf6..e624dafca50 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -156,32 +156,33 @@ WRITE16_MEMBER(overdriv_state::slave_irq5_assert_w) m_subcpu->set_input_line(5, HOLD_LINE); } -ADDRESS_MAP_START(overdriv_state::overdriv_master_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM /* work RAM */ - AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("INPUTS") - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0e0000, 0x0e0001) AM_WRITENOP /* unknown (always 0x30) */ - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* 053252? (LSB) */ - AM_RANGE(0x140000, 0x140001) AM_WRITENOP //watchdog reset? - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("PADDLE") AM_WRITENOP // writes 0 at POST and expect that motor busy flag is off, then checks if paddle is at center otherwise throws a "VOLUME ERROR". - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVWRITE8("k051316_1", k051316_device, ctrl_w, 0xff00) - AM_RANGE(0x1c8000, 0x1c801f) AM_DEVWRITE8("k051316_2", k051316_device, ctrl_w, 0xff00) - AM_RANGE(0x1d0000, 0x1d001f) AM_DEVWRITE("k053251", k053251_device, msb_w) - AM_RANGE(0x1d8000, 0x1d8003) AM_DEVREADWRITE8("k053260_1", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x1e0000, 0x1e0003) AM_DEVREADWRITE8("k053260_2", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x1e8000, 0x1e8001) AM_WRITE(overdriv_soundirq_w) - AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(cpuA_ctrl_w) /* halt cpu B, coin counter, start lamp, other? */ - AM_RANGE(0x1f8000, 0x1f8001) AM_WRITE(eeprom_w) - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x210000, 0x210fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0xff00) - AM_RANGE(0x218000, 0x218fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0xff00) - AM_RANGE(0x220000, 0x220fff) AM_DEVREAD8("k051316_1", k051316_device, rom_r, 0xff00) - AM_RANGE(0x228000, 0x228fff) AM_DEVREAD8("k051316_2", k051316_device, rom_r, 0xff00) - AM_RANGE(0x230000, 0x230001) AM_WRITE(slave_irq4_assert_w) - AM_RANGE(0x238000, 0x238001) AM_WRITE(slave_irq5_assert_w) -ADDRESS_MAP_END +void overdriv_state::overdriv_master_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram(); /* work RAM */ + map(0x080000, 0x080fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0c0000, 0x0c0001).portr("INPUTS"); + map(0x0c0002, 0x0c0003).portr("SYSTEM"); + map(0x0e0000, 0x0e0001).nopw(); /* unknown (always 0x30) */ + map(0x100000, 0x10001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* 053252? (LSB) */ + map(0x140000, 0x140001).nopw(); //watchdog reset? + map(0x180000, 0x180001).portr("PADDLE").nopw(); // writes 0 at POST and expect that motor busy flag is off, then checks if paddle is at center otherwise throws a "VOLUME ERROR". + map(0x1c0000, 0x1c001f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)).umask16(0xff00); + map(0x1c8000, 0x1c801f).w(m_k051316_2, FUNC(k051316_device::ctrl_w)).umask16(0xff00); + map(0x1d0000, 0x1d001f).w(m_k053251, FUNC(k053251_device::msb_w)); + map(0x1d8000, 0x1d8003).rw("k053260_1", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x1e0000, 0x1e0003).rw("k053260_2", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x1e8000, 0x1e8001).w(this, FUNC(overdriv_state::overdriv_soundirq_w)); + map(0x1f0000, 0x1f0001).w(this, FUNC(overdriv_state::cpuA_ctrl_w)); /* halt cpu B, coin counter, start lamp, other? */ + map(0x1f8000, 0x1f8001).w(this, FUNC(overdriv_state::eeprom_w)); + map(0x200000, 0x203fff).ram().share("share1"); + map(0x210000, 0x210fff).rw(m_k051316_1, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0xff00); + map(0x218000, 0x218fff).rw(m_k051316_2, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0xff00); + map(0x220000, 0x220fff).r(m_k051316_1, FUNC(k051316_device::rom_r)).umask16(0xff00); + map(0x228000, 0x228fff).r(m_k051316_2, FUNC(k051316_device::rom_r)).umask16(0xff00); + map(0x230000, 0x230001).w(this, FUNC(overdriv_state::slave_irq4_assert_w)); + map(0x238000, 0x238001).w(this, FUNC(overdriv_state::slave_irq5_assert_w)); +} #ifdef UNUSED_FUNCTION WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w ) @@ -221,43 +222,46 @@ WRITE16_MEMBER(overdriv_state::objdma_w) m_k053246->k053246_w(space,5,data,mem_mask); } -ADDRESS_MAP_START(overdriv_state::overdriv_slave_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM /* work RAM */ - AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w) - AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w) - AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w) - AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA.. - AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */ - AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff) - AM_RANGE(0x130004, 0x130005) AM_WRITE(objdma_w) +void overdriv_state::overdriv_slave_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); /* work RAM */ + map(0x0c0000, 0x0c1fff).ram(); //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w) + map(0x100000, 0x10000f).rw("k053250_1", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w)); + map(0x108000, 0x10800f).rw("k053250_2", FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w)); + map(0x118000, 0x118fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w)); // data gets copied to sprite chip with DMA.. + map(0x120000, 0x120001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x128000, 0x128001).rw(this, FUNC(overdriv_state::cpuB_ctrl_r), FUNC(overdriv_state::cpuB_ctrl_w)); /* enable K053247 ROM reading, plus something else */ + map(0x130000, 0x130007).rw(m_k053246, FUNC(k053247_device::k053246_r), FUNC(k053247_device::k053246_w)); + map(0x130004, 0x130005).w(this, FUNC(overdriv_state::objdma_w)); //AM_RANGE(0x140000, 0x140001) used in later stages, set after writes at 0x208000-0x20bfff range - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x208000, 0x20bfff) AM_RAM // sprite indirect table? - AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) - AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r) -ADDRESS_MAP_END + map(0x200000, 0x203fff).ram().share("share1"); + map(0x208000, 0x20bfff).ram(); // sprite indirect table? + map(0x218000, 0x219fff).r("k053250_1", FUNC(k053250_device::rom_r)); + map(0x220000, 0x221fff).r("k053250_2", FUNC(k053250_device::rom_r)); +} WRITE8_MEMBER(overdriv_state::sound_ack_w) { m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); } -ADDRESS_MAP_START(overdriv_state::overdriv_sound_map) - AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w) +void overdriv_state::overdriv_sound_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(overdriv_state::sound_ack_w)); // 0x012 read during explosions // 0x180 - AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write) - AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write) - AM_RANGE(0x0800, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(overdriv_state::overdriv_k053260_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_REGION("k053260", 0) -ADDRESS_MAP_END + map(0x0200, 0x0201).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x0400, 0x042f).rw("k053260_1", FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0x0600, 0x062f).rw("k053260_2", FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0x0800, 0x0fff).ram(); + map(0x1000, 0xffff).rom(); +} + +void overdriv_state::overdriv_k053260_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom().region("k053260", 0); +} /* Both IPT_START1 assignments are needed. The game will reset during */ /* the "continue" sequence if the assignment on the first port */ diff --git a/src/mame/drivers/p112.cpp b/src/mame/drivers/p112.cpp index 3f2b38406cb..dfb80728991 100644 --- a/src/mame/drivers/p112.cpp +++ b/src/mame/drivers/p112.cpp @@ -55,16 +55,18 @@ public: }; -ADDRESS_MAP_START(p112_state::p112_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x07fff) AM_ROM - AM_RANGE(0x08000, 0xfffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(p112_state::p112_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void p112_state::p112_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x07fff).rom(); + map(0x08000, 0xfffff).ram(); +} + +void p112_state::p112_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} /* Input ports */ static INPUT_PORTS_START( p112 ) diff --git a/src/mame/drivers/p2000t.cpp b/src/mame/drivers/p2000t.cpp index acd56d1b7cb..d62bdc661d4 100644 --- a/src/mame/drivers/p2000t.cpp +++ b/src/mame/drivers/p2000t.cpp @@ -36,35 +36,38 @@ Philips P2000 1 Memory map /* port i/o functions */ -ADDRESS_MAP_START(p2000t_state::p2000t_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_READ(p2000t_port_000f_r) - AM_RANGE(0x10, 0x1f) AM_WRITE(p2000t_port_101f_w) - AM_RANGE(0x20, 0x2f) AM_READ(p2000t_port_202f_r) - AM_RANGE(0x30, 0x3f) AM_WRITE(p2000t_port_303f_w) - AM_RANGE(0x50, 0x5f) AM_WRITE(p2000t_port_505f_w) - AM_RANGE(0x70, 0x7f) AM_WRITE(p2000t_port_707f_w) - AM_RANGE(0x88, 0x8b) AM_WRITE(p2000t_port_888b_w) - AM_RANGE(0x8c, 0x90) AM_WRITE(p2000t_port_8c90_w) - AM_RANGE(0x94, 0x94) AM_WRITE(p2000t_port_9494_w) -ADDRESS_MAP_END +void p2000t_state::p2000t_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).r(this, FUNC(p2000t_state::p2000t_port_000f_r)); + map(0x10, 0x1f).w(this, FUNC(p2000t_state::p2000t_port_101f_w)); + map(0x20, 0x2f).r(this, FUNC(p2000t_state::p2000t_port_202f_r)); + map(0x30, 0x3f).w(this, FUNC(p2000t_state::p2000t_port_303f_w)); + map(0x50, 0x5f).w(this, FUNC(p2000t_state::p2000t_port_505f_w)); + map(0x70, 0x7f).w(this, FUNC(p2000t_state::p2000t_port_707f_w)); + map(0x88, 0x8b).w(this, FUNC(p2000t_state::p2000t_port_888b_w)); + map(0x8c, 0x90).w(this, FUNC(p2000t_state::p2000t_port_8c90_w)); + map(0x94, 0x94).w(this, FUNC(p2000t_state::p2000t_port_9494_w)); +} /* Memory w/r functions */ -ADDRESS_MAP_START(p2000t_state::p2000t_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x4fff) AM_ROM - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x5800, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xffff) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(p2000m_state::p2000m_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x4fff) AM_ROM - AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xffff) AM_NOP -ADDRESS_MAP_END +void p2000t_state::p2000t_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x4fff).rom(); + map(0x5000, 0x57ff).ram().share("videoram"); + map(0x5800, 0x9fff).ram(); + map(0xa000, 0xffff).noprw(); +} + +void p2000m_state::p2000m_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x4fff).rom(); + map(0x5000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x9fff).ram(); + map(0xa000, 0xffff).noprw(); +} /* graphics output */ diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp index a4dfd157e8a..4065ee1c001 100644 --- a/src/mame/drivers/p8k.cpp +++ b/src/mame/drivers/p8k.cpp @@ -125,38 +125,40 @@ private: ****************************************************************************/ -ADDRESS_MAP_START(p8k_state::p8k_memmap) - AM_RANGE(0x0000, 0x0FFF) AM_RAMBANK("bank0") - AM_RANGE(0x1000, 0x1FFF) AM_RAMBANK("bank1") - AM_RANGE(0x2000, 0x2FFF) AM_RAMBANK("bank2") - AM_RANGE(0x3000, 0x3FFF) AM_RAMBANK("bank3") - AM_RANGE(0x4000, 0x4FFF) AM_RAMBANK("bank4") - AM_RANGE(0x5000, 0x5FFF) AM_RAMBANK("bank5") - AM_RANGE(0x6000, 0x6FFF) AM_RAMBANK("bank6") - AM_RANGE(0x7000, 0x7FFF) AM_RAMBANK("bank7") - AM_RANGE(0x8000, 0x8FFF) AM_RAMBANK("bank8") - AM_RANGE(0x9000, 0x9FFF) AM_RAMBANK("bank9") - AM_RANGE(0xA000, 0xAFFF) AM_RAMBANK("bank10") - AM_RANGE(0xB000, 0xBFFF) AM_RAMBANK("bank11") - AM_RANGE(0xC000, 0xCFFF) AM_RAMBANK("bank12") - AM_RANGE(0xD000, 0xDFFF) AM_RAMBANK("bank13") - AM_RANGE(0xE000, 0xEFFF) AM_RAMBANK("bank14") - AM_RANGE(0xF000, 0xFFFF) AM_RAMBANK("bank15") -ADDRESS_MAP_END - -ADDRESS_MAP_START(p8k_state::p8k_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_READWRITE(p8k_port0_r,p8k_port0_w) // MH7489 - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc0", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio0", z80pio_device, read_alt, write_alt) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt) - AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt) - AM_RANGE(0x20, 0x21) AM_DEVICE("i8272", i8272a_device, map) - AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) - AM_RANGE(0x3c, 0x3c) AM_DEVREADWRITE("dma", z80dma_device, read, write) -ADDRESS_MAP_END +void p8k_state::p8k_memmap(address_map &map) +{ + map(0x0000, 0x0FFF).bankrw("bank0"); + map(0x1000, 0x1FFF).bankrw("bank1"); + map(0x2000, 0x2FFF).bankrw("bank2"); + map(0x3000, 0x3FFF).bankrw("bank3"); + map(0x4000, 0x4FFF).bankrw("bank4"); + map(0x5000, 0x5FFF).bankrw("bank5"); + map(0x6000, 0x6FFF).bankrw("bank6"); + map(0x7000, 0x7FFF).bankrw("bank7"); + map(0x8000, 0x8FFF).bankrw("bank8"); + map(0x9000, 0x9FFF).bankrw("bank9"); + map(0xA000, 0xAFFF).bankrw("bank10"); + map(0xB000, 0xBFFF).bankrw("bank11"); + map(0xC000, 0xCFFF).bankrw("bank12"); + map(0xD000, 0xDFFF).bankrw("bank13"); + map(0xE000, 0xEFFF).bankrw("bank14"); + map(0xF000, 0xFFFF).bankrw("bank15"); +} + +void p8k_state::p8k_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x07).rw(this, FUNC(p8k_state::p8k_port0_r), FUNC(p8k_state::p8k_port0_w)); // MH7489 + map(0x08, 0x0b).rw("ctc0", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).rw("pio0", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x18, 0x1b).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x1c, 0x1f).rw(m_pio2, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x20, 0x21).m(m_i8272, FUNC(i8272a_device::map)); + map(0x24, 0x27).rw("sio", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x28, 0x2b).rw("sio1", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x2c, 0x2f).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x3c, 0x3c).rw("dma", FUNC(z80dma_device::read), FUNC(z80dma_device::write)); +} @@ -319,36 +321,39 @@ DRIVER_INIT_MEMBER(p8k_state,p8k) ****************************************************************************/ -ADDRESS_MAP_START(p8k_state::p8k_16_memmap) - AM_RANGE(0x00000, 0x03fff) AM_ROM AM_SHARE("share0") - AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x08000, 0xfffff) AM_RAM AM_SHARE("share2") -ADDRESS_MAP_END +void p8k_state::p8k_16_memmap(address_map &map) +{ + map(0x00000, 0x03fff).rom().share("share0"); + map(0x04000, 0x07fff).ram().share("share1"); + map(0x08000, 0xfffff).ram().share("share2"); +} -ADDRESS_MAP_START(p8k_state::p8k_16_datamap) - AM_RANGE(0x00000, 0x03fff) AM_ROM AM_SHARE("share0") - AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x08000, 0xfffff) AM_RAM AM_SHARE("share2") -ADDRESS_MAP_END +void p8k_state::p8k_16_datamap(address_map &map) +{ + map(0x00000, 0x03fff).rom().share("share0"); + map(0x04000, 0x07fff).ram().share("share1"); + map(0x08000, 0xfffff).ram().share("share2"); +} -ADDRESS_MAP_START(p8k_state::p8k_16_iomap) +void p8k_state::p8k_16_iomap(address_map &map) +{ // AM_RANGE(0x0fef0, 0x0feff) // clock - AM_RANGE(0x0ff80, 0x0ff87) AM_DEVREADWRITE8("sio", z80sio_device, cd_ba_r, cd_ba_w, 0xff) - AM_RANGE(0x0ff88, 0x0ff8f) AM_DEVREADWRITE8("sio1", z80sio_device, cd_ba_r, cd_ba_w, 0xff) - AM_RANGE(0x0ff90, 0x0ff97) AM_DEVREADWRITE8("pio0", z80pio_device, read_alt, write_alt, 0xff) - AM_RANGE(0x0ff98, 0x0ff9f) AM_DEVREADWRITE8("pio1", z80pio_device, read_alt, write_alt, 0xff) - AM_RANGE(0x0ffa0, 0x0ffa7) AM_DEVREADWRITE8("pio2", z80pio_device, read_alt, write_alt, 0xff) - AM_RANGE(0x0ffa8, 0x0ffaf) AM_DEVREADWRITE8("ctc0", z80ctc_device, read, write, 0xff) - AM_RANGE(0x0ffb0, 0x0ffb7) AM_DEVREADWRITE8("ctc1", z80ctc_device, read, write, 0xff) + map(0x0ff80, 0x0ff87).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)).umask16(0x00ff); + map(0x0ff88, 0x0ff8f).rw("sio1", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)).umask16(0x00ff); + map(0x0ff90, 0x0ff97).rw("pio0", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).umask16(0x00ff); + map(0x0ff98, 0x0ff9f).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).umask16(0x00ff); + map(0x0ffa0, 0x0ffa7).rw(m_pio2, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)).umask16(0x00ff); + map(0x0ffa8, 0x0ffaf).rw("ctc0", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff); + map(0x0ffb0, 0x0ffb7).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)).umask16(0x00ff); // AM_RANGE(0x0ffc0, 0x0ffc1) // SCR // AM_RANGE(0x0ffc8, 0x0ffc9) // SBR // AM_RANGE(0x0ffd0, 0x0ffd1) // NBR // AM_RANGE(0x0ffd8, 0x0ffd9) // SNVR - AM_RANGE(0x0ffe0, 0x0ffe1) AM_DEVWRITE8("p8k_16_daisy", p8k_16_daisy_device, reti_w, 0xff) + map(0x0ffe1, 0x0ffe1).w(m_daisy, FUNC(p8k_16_daisy_device::reti_w)); // AM_RANGE(0x0fff0, 0x0fff1) // TRPL // AM_RANGE(0x0fff8, 0x0fff9) // IF1L -ADDRESS_MAP_END +} /*************************************************************************** diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp index 6135b480c91..bba8b18b00a 100644 --- a/src/mame/drivers/pachifev.cpp +++ b/src/mame/drivers/pachifev.cpp @@ -140,29 +140,31 @@ READ8_MEMBER(pachifev_state::controls_r) return output_bit; } -ADDRESS_MAP_START(pachifev_state::pachifev_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf0fb) AM_NOP /* internal ram */ - AM_RANGE(0xff00, 0xff00) AM_READ_PORT("IN0") - AM_RANGE(0xff02, 0xff02) AM_READ_PORT("IN1") - AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW1") - AM_RANGE(0xff06, 0xff06) AM_READ_PORT("DSW2") - AM_RANGE(0xff08, 0xff08) AM_READ_PORT("DSW3") - AM_RANGE(0xff10, 0xff10) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0xff12, 0xff12) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0xff20, 0xff20) AM_DEVWRITE("y2404_1", y2404_device, write) - AM_RANGE(0xff30, 0xff30) AM_DEVWRITE("y2404_2", y2404_device, write) - AM_RANGE(0xff40, 0xff40) AM_WRITE(controls_w) - AM_RANGE(0xff50, 0xff50) AM_WRITENOP /* unknown */ - AM_RANGE(0xfffa, 0xfffb) AM_NOP /* decrementer */ - AM_RANGE(0xfffc, 0xffff) AM_NOP /* nmi */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pachifev_state::pachifev_cru) - AM_RANGE(0x000, 0x000) AM_READ(controls_r) -ADDRESS_MAP_END +void pachifev_state::pachifev_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + + map(0xe000, 0xe7ff).ram(); + map(0xf000, 0xf0fb).noprw(); /* internal ram */ + map(0xff00, 0xff00).portr("IN0"); + map(0xff02, 0xff02).portr("IN1"); + map(0xff04, 0xff04).portr("DSW1"); + map(0xff06, 0xff06).portr("DSW2"); + map(0xff08, 0xff08).portr("DSW3"); + map(0xff10, 0xff10).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0xff12, 0xff12).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0xff20, 0xff20).w("y2404_1", FUNC(y2404_device::write)); + map(0xff30, 0xff30).w("y2404_2", FUNC(y2404_device::write)); + map(0xff40, 0xff40).w(this, FUNC(pachifev_state::controls_w)); + map(0xff50, 0xff50).nopw(); /* unknown */ + map(0xfffa, 0xfffb).noprw(); /* decrementer */ + map(0xfffc, 0xffff).noprw(); /* nmi */ +} + +void pachifev_state::pachifev_cru(address_map &map) +{ + map(0x000, 0x000).r(this, FUNC(pachifev_state::controls_r)); +} /* verified from TMS9995 code */ diff --git a/src/mame/drivers/pacland.cpp b/src/mame/drivers/pacland.cpp index 8ada3ecf98e..643bf6226ae 100644 --- a/src/mame/drivers/pacland.cpp +++ b/src/mame/drivers/pacland.cpp @@ -194,7 +194,6 @@ Notes: #include "includes/pacland.h" #include "cpu/m6809/m6809.h" -#include "cpu/m6800/m6801.h" #include "machine/watchdog.h" #include "speaker.h" @@ -260,33 +259,35 @@ WRITE8_MEMBER(pacland_state::irq_2_ctrl_w) -ADDRESS_MAP_START(pacland_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x2000, 0x37ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3800, 0x3801) AM_WRITE(scroll0_w) - AM_RANGE(0x3a00, 0x3a01) AM_WRITE(scroll1_w) - AM_RANGE(0x3c00, 0x3c00) AM_WRITE(bankswitch_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ - AM_RANGE(0x7000, 0x7fff) AM_WRITE(irq_1_ctrl_w) - AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8000, 0xffff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_WRITE(subreset_w) - AM_RANGE(0x9000, 0x9fff) AM_WRITE(flipscreen_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacland_state::mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog? */ - AM_RANGE(0x4000, 0x7fff) AM_WRITE(irq_2_ctrl_w) - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd003) AM_READ(input_r) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void pacland_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().w(this, FUNC(pacland_state::videoram_w)).share("videoram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(pacland_state::videoram2_w)).share("videoram2"); + map(0x2000, 0x37ff).ram().share("spriteram"); + map(0x3800, 0x3801).w(this, FUNC(pacland_state::scroll0_w)); + map(0x3a00, 0x3a01).w(this, FUNC(pacland_state::scroll1_w)); + map(0x3c00, 0x3c00).w(this, FUNC(pacland_state::bankswitch_w)); + map(0x4000, 0x5fff).bankr("bank1"); + map(0x6800, 0x6bff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ + map(0x7000, 0x7fff).w(this, FUNC(pacland_state::irq_1_ctrl_w)); + map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0xffff).rom(); + map(0x8000, 0x8fff).w(this, FUNC(pacland_state::subreset_w)); + map(0x9000, 0x9fff).w(this, FUNC(pacland_state::flipscreen_w)); +} + +void pacland_state::mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ + map(0x2000, 0x3fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog? */ + map(0x4000, 0x7fff).w(this, FUNC(pacland_state::irq_2_ctrl_w)); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd003).r(this, FUNC(pacland_state::input_r)); + map(0xf000, 0xffff).rom(); +} READ8_MEMBER(pacland_state::readFF) @@ -294,12 +295,13 @@ READ8_MEMBER(pacland_state::readFF) return 0xff; } -ADDRESS_MAP_START(pacland_state::mcu_port_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("IN2") - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(coin_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */ - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(led_w) -ADDRESS_MAP_END +void pacland_state::mcu_port_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).portr("IN2"); + map(M6801_PORT1, M6801_PORT1).w(this, FUNC(pacland_state::coin_w)); + map(M6801_PORT2, M6801_PORT2).r(this, FUNC(pacland_state::readFF)); /* leds won't work otherwise */ + map(M6801_PORT2, M6801_PORT2).w(this, FUNC(pacland_state::led_w)); +} diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp index 481bc0236e2..51c2e588687 100644 --- a/src/mame/drivers/pacman.cpp +++ b/src/mame/drivers/pacman.cpp @@ -996,354 +996,369 @@ READ8_MEMBER(pacman_state::pacman_read_nop) * *************************************/ -ADDRESS_MAP_START(pacman_state::pacman_map) +void pacman_state::pacman_map(address_map &map) +{ //A lot of games don't have an a15 at the cpu. Generally only games with a cpu daughter board can access the full 32k of romspace. - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", addressable_latch_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::birdiy_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") + map(0x0000, 0x3fff).mirror(0x8000).rom(); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(addressable_latch_device::write_d0)); + map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); +} + + +void pacman_state::birdiy_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x8000).rom(); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); // AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5080, 0x509f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x50a0, 0x50af) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5080, 0x509f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x50a0, 0x50af).mirror(0xaf00).writeonly().share("spriteram2"); // AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP // AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") -ADDRESS_MAP_END + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); +} -ADDRESS_MAP_START(pacman_state::mspacman_map) +void pacman_state::mspacman_map(address_map &map) +{ /* start with 0000-3fff and 8000-bfff mapped to the ROMs */ - AM_RANGE(0x0000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_UNMAP - - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") + map(0x0000, 0xffff).bankr("bank1"); + map(0x4000, 0x7fff).mirror(0x8000).unmaprw(); + + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); /* overlay decode enable/disable on top */ - AM_RANGE(0x0038, 0x003f) AM_READWRITE(mspacman_disable_decode_r_0x0038,mspacman_disable_decode_w) - AM_RANGE(0x03b0, 0x03b7) AM_READWRITE(mspacman_disable_decode_r_0x03b0,mspacman_disable_decode_w) - AM_RANGE(0x1600, 0x1607) AM_READWRITE(mspacman_disable_decode_r_0x1600,mspacman_disable_decode_w) - AM_RANGE(0x2120, 0x2127) AM_READWRITE(mspacman_disable_decode_r_0x2120,mspacman_disable_decode_w) - AM_RANGE(0x3ff0, 0x3ff7) AM_READWRITE(mspacman_disable_decode_r_0x3ff0,mspacman_disable_decode_w) - AM_RANGE(0x3ff8, 0x3fff) AM_READWRITE(mspacman_enable_decode_r_0x3ff8,mspacman_enable_decode_w) - AM_RANGE(0x8000, 0x8007) AM_READWRITE(mspacman_disable_decode_r_0x8000,mspacman_disable_decode_w) - AM_RANGE(0x97f0, 0x97f7) AM_READWRITE(mspacman_disable_decode_r_0x97f0,mspacman_disable_decode_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::woodpek_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") - AM_RANGE(0x8000, 0xbfff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::numcrash_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_ROM + map(0x0038, 0x003f).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x0038), FUNC(pacman_state::mspacman_disable_decode_w)); + map(0x03b0, 0x03b7).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x03b0), FUNC(pacman_state::mspacman_disable_decode_w)); + map(0x1600, 0x1607).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x1600), FUNC(pacman_state::mspacman_disable_decode_w)); + map(0x2120, 0x2127).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x2120), FUNC(pacman_state::mspacman_disable_decode_w)); + map(0x3ff0, 0x3ff7).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x3ff0), FUNC(pacman_state::mspacman_disable_decode_w)); + map(0x3ff8, 0x3fff).rw(this, FUNC(pacman_state::mspacman_enable_decode_r_0x3ff8), FUNC(pacman_state::mspacman_enable_decode_w)); + map(0x8000, 0x8007).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x8000), FUNC(pacman_state::mspacman_disable_decode_w)); + map(0x97f0, 0x97f7).rw(this, FUNC(pacman_state::mspacman_disable_decode_r_0x97f0), FUNC(pacman_state::mspacman_disable_decode_w)); +} + + +void pacman_state::woodpek_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); + map(0x8000, 0xbfff).rom(); +} + + +void pacman_state::numcrash_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).rom(); /* 0x2800 - 0x2fff unmapped? */ - AM_RANGE(0x3000, 0x37ff) AM_ROM + map(0x3000, 0x37ff).rom(); /* 0x3800 - 0x3fff unmapped? */ - AM_RANGE(0x8000, 0x9fff) AM_ROM + map(0x8000, 0x9fff).rom(); - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") + map(0x4000, 0x43ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); - AM_RANGE(0x4c00, 0x4fef) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") + map(0x4c00, 0x4fef).ram(); + map(0x4ff0, 0x4fff).ram().share("spriteram"); + map(0x5000, 0x5007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).writeonly().share("spriteram2"); // AM_RANGE(0x5070, 0x507f) AM_WRITENOP // AM_RANGE(0x5080, 0x5080) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") + map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).portr("IN0"); + map(0x5040, 0x5040).portr("IN1"); + map(0x5080, 0x5080).portr("DSW1"); // AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2") // only one DSW on the PCB -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::alibaba_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4eef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ef0, 0x4eff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4f00, 0x4fff) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("latch1", ls259_device, write_d0) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf38) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5040, 0x506f) AM_MIRROR(0xaf00) AM_WRITE(alibaba_sound_w) /* the sound region is not contiguous */ - AM_RANGE(0x5050, 0x505f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c7) AM_MIRROR(0xaf00) AM_DEVWRITE("latch2", ls259_device, write_d0) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf00) AM_READ(alibaba_mystery_1_r) - AM_RANGE(0x50c1, 0x50c1) AM_MIRROR(0xaf00) AM_READ(alibaba_mystery_2_r) - AM_RANGE(0x50c2, 0x50ff) AM_MIRROR(0xaf00) AM_READ(pacman_read_nop) - AM_RANGE(0x8000, 0x8fff) AM_ROM - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::dremshpr_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) +} + + +void pacman_state::alibaba_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4eef).mirror(0xa000).ram(); + map(0x4ef0, 0x4eff).mirror(0xa000).ram().share("spriteram"); + map(0x4f00, 0x4fff).mirror(0xa000).ram(); + map(0x5000, 0x5007).mirror(0xaf38).w("latch1", FUNC(ls259_device::write_d0)); + map(0x5000, 0x5000).mirror(0xaf38).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5040, 0x506f).mirror(0xaf00).w(this, FUNC(pacman_state::alibaba_sound_w)); /* the sound region is not contiguous */ + map(0x5050, 0x505f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c7).mirror(0xaf00).w("latch2", FUNC(ls259_device::write_d0)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf00).r(this, FUNC(pacman_state::alibaba_mystery_1_r)); + map(0x50c1, 0x50c1).mirror(0xaf00).r(this, FUNC(pacman_state::alibaba_mystery_2_r)); + map(0x50c2, 0x50ff).mirror(0xaf00).r(this, FUNC(pacman_state::pacman_read_nop)); + map(0x8000, 0x8fff).rom(); + map(0x9000, 0x93ff).mirror(0x0c00).ram(); + map(0xa000, 0xa7ff).mirror(0x1800).rom(); +} + + +void pacman_state::dremshpr_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); // AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") - AM_RANGE(0x8000, 0xbfff) AM_ROM + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); + map(0x8000, 0xbfff).rom(); /* vanvan: probably a leftover from development: the Sanritsu version writes the color lookup table here, while the Karateco version writes garbage. */ - AM_RANGE(0xb800, 0xb87f) AM_WRITENOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::epos_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::s2650games_map) - AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1") - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x6000) AM_WRITE(s2650games_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1400, 0x141f) AM_MIRROR(0x6000) AM_WRITE(s2650games_scroll_w) - AM_RANGE(0x1420, 0x148f) AM_MIRROR(0x6000) AM_WRITEONLY - AM_RANGE(0x1490, 0x149f) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("s2650_spriteram") - AM_RANGE(0x14a0, 0x14bf) AM_MIRROR(0x6000) AM_WRITE(s2650games_tilesbank_w) AM_SHARE("s2650_tileram") - AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY - AM_RANGE(0x1500, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x1508, 0x155f) AM_MIRROR(0x6000) AM_WRITEONLY - AM_RANGE(0x1560, 0x156f) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x1570, 0x157f) AM_MIRROR(0x6000) AM_WRITEONLY - AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_WRITENOP - AM_RANGE(0x15c0, 0x15c0) AM_MIRROR(0x6000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x15c7, 0x15c7) AM_MIRROR(0x6000) AM_WRITE(porky_banking_w) - AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0") - AM_RANGE(0x1540, 0x1540) AM_MIRROR(0x6000) AM_READ_PORT("IN1") - AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("DSW0") - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(s2650games_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1fef) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1ff0, 0x1fff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2fff) AM_ROMBANK("bank2") - AM_RANGE(0x4000, 0x4fff) AM_ROMBANK("bank3") - AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank4") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::rocktrv2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4c00, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5fe0, 0x5fe3) AM_WRITE(rocktrv2_prot_data_w) AM_SHARE("rocktrv2_prot") - AM_RANGE(0x5ff0, 0x5ff0) AM_WRITE(rocktrv2_question_bank_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x507f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_READ_PORT("DSW2") - AM_RANGE(0x5fe0, 0x5fe0) AM_READ(rocktrv2_prot1_data_r) - AM_RANGE(0x5fe4, 0x5fe4) AM_READ(rocktrv2_prot2_data_r) - AM_RANGE(0x5fe8, 0x5fe8) AM_READ(rocktrv2_prot3_data_r) - AM_RANGE(0x5fec, 0x5fec) AM_READ(rocktrv2_prot4_data_r) - AM_RANGE(0x5fff, 0x5fff) AM_READ_PORT("DSW2") /* DSW2 mirrored */ - AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_READ(rocktrv2_question_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::bigbucks_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4c00, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x5007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x503f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x507f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x50bf) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50ff) AM_READ_PORT("DSW2") - AM_RANGE(0x5100, 0x5100) AM_WRITENOP /*?*/ - AM_RANGE(0x6000, 0x6000) AM_WRITE(bigbucks_bank_w) - AM_RANGE(0x8000, 0x9fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::mschamp_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::superabc_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4fef) AM_MIRROR(0xa000) AM_RAM AM_SHARE("28c16.u17") // nvram - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5002, 0x5002) AM_MIRROR(0xaf3c) AM_WRITE(superabc_bank_w) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW2") - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank2") - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank3") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pacman_state::crushs_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_MIRROR(0xa000) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0xa000) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x4c00, 0x4fef) AM_MIRROR(0xa000) AM_RAM - AM_RANGE(0x4ff0, 0x4fff) AM_MIRROR(0xa000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5000, 0x5007) AM_MIRROR(0xaf38) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x5040, 0x505f) AM_MIRROR(0xaf00) AM_WRITENOP // doesn't use pacman sound hw - AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") - AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(pacman_state::pengojpm_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM + map(0xb800, 0xb87f).nopw(); +} + + +void pacman_state::epos_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x8000).bankr("bank1"); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); +} + + +void pacman_state::s2650games_map(address_map &map) +{ + map(0x0000, 0x0fff).bankr("bank1"); + map(0x1000, 0x13ff).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_colorram_w)).share("colorram"); + map(0x1400, 0x141f).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_scroll_w)); + map(0x1420, 0x148f).mirror(0x6000).writeonly(); + map(0x1490, 0x149f).mirror(0x6000).writeonly().share("s2650_spriteram"); + map(0x14a0, 0x14bf).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_tilesbank_w)).share("s2650_tileram"); + map(0x14c0, 0x14ff).mirror(0x6000).writeonly(); + map(0x1500, 0x1507).mirror(0x6000).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x1508, 0x155f).mirror(0x6000).writeonly(); + map(0x1560, 0x156f).mirror(0x6000).writeonly().share("spriteram2"); + map(0x1570, 0x157f).mirror(0x6000).writeonly(); + map(0x1586, 0x1587).mirror(0x6000).nopw(); + map(0x15c0, 0x15c0).mirror(0x6000).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x15c7, 0x15c7).mirror(0x6000).w(this, FUNC(pacman_state::porky_banking_w)); + map(0x1500, 0x1500).mirror(0x6000).portr("IN0"); + map(0x1540, 0x1540).mirror(0x6000).portr("IN1"); + map(0x1580, 0x1580).mirror(0x6000).portr("DSW0"); + map(0x1800, 0x1bff).mirror(0x6000).w(this, FUNC(pacman_state::s2650games_videoram_w)).share("videoram"); + map(0x1c00, 0x1fef).mirror(0x6000).ram(); + map(0x1ff0, 0x1fff).mirror(0x6000).writeonly().share("spriteram"); + map(0x2000, 0x2fff).bankr("bank2"); + map(0x4000, 0x4fff).bankr("bank3"); + map(0x6000, 0x6fff).bankr("bank4"); +} + + +void pacman_state::rocktrv2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4c00, 0x4fff).ram(); + map(0x5000, 0x5007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5fe0, 0x5fe3).w(this, FUNC(pacman_state::rocktrv2_prot_data_w)).share("rocktrv2_prot"); + map(0x5ff0, 0x5ff0).w(this, FUNC(pacman_state::rocktrv2_question_bank_w)); + map(0x5000, 0x5000).portr("IN0"); + map(0x5040, 0x507f).portr("IN1"); + map(0x5080, 0x5080).portr("DSW1"); + map(0x50c0, 0x50c0).portr("DSW2"); + map(0x5fe0, 0x5fe0).r(this, FUNC(pacman_state::rocktrv2_prot1_data_r)); + map(0x5fe4, 0x5fe4).r(this, FUNC(pacman_state::rocktrv2_prot2_data_r)); + map(0x5fe8, 0x5fe8).r(this, FUNC(pacman_state::rocktrv2_prot3_data_r)); + map(0x5fec, 0x5fec).r(this, FUNC(pacman_state::rocktrv2_prot4_data_r)); + map(0x5fff, 0x5fff).portr("DSW2"); /* DSW2 mirrored */ + map(0x6000, 0x7fff).rom(); + map(0x8000, 0xffff).r(this, FUNC(pacman_state::rocktrv2_question_r)); +} + + +void pacman_state::bigbucks_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4c00, 0x4fff).ram(); + map(0x5000, 0x5007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x50c0, 0x50c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x503f).portr("IN0"); + map(0x5040, 0x507f).portr("IN1"); + map(0x5080, 0x50bf).portr("DSW1"); + map(0x50c0, 0x50ff).portr("DSW2"); + map(0x5100, 0x5100).nopw(); /*?*/ + map(0x6000, 0x6000).w(this, FUNC(pacman_state::bigbucks_bank_w)); + map(0x8000, 0x9fff).rom(); +} + + +void pacman_state::mschamp_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); + map(0x8000, 0xbfff).bankr("bank2"); +} + + +void pacman_state::superabc_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4fef).mirror(0xa000).ram().share("28c16.u17"); // nvram + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5002, 0x5002).mirror(0xaf3c).w(this, FUNC(pacman_state::superabc_bank_w)); + map(0x5040, 0x505f).mirror(0xaf00).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5040, 0x5040).mirror(0xaf3f).portr("IN1"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("DSW1"); + map(0x50c0, 0x50c0).mirror(0xaf3f).portr("DSW2"); + map(0x8000, 0x9fff).bankr("bank2"); + map(0xa000, 0xbfff).bankr("bank3"); +} + + +void pacman_state::crushs_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x8000).rom(); + map(0x4000, 0x43ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).mirror(0xa000).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); + map(0x4800, 0x4bff).mirror(0xa000).r(this, FUNC(pacman_state::pacman_read_nop)).nopw(); + map(0x4c00, 0x4fef).mirror(0xa000).ram(); + map(0x4ff0, 0x4fff).mirror(0xa000).ram().share("spriteram"); + map(0x5000, 0x5007).mirror(0xaf38).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x5040, 0x505f).mirror(0xaf00).nopw(); // doesn't use pacman sound hw + map(0x5060, 0x506f).mirror(0xaf00).writeonly().share("spriteram2"); + map(0x5070, 0x507f).mirror(0xaf00).nopw(); + map(0x5080, 0x5080).mirror(0xaf3f).nopw(); + map(0x50c0, 0x50c0).mirror(0xaf3f).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5000).mirror(0xaf3f).portr("IN0"); + map(0x5080, 0x5080).mirror(0xaf3f).portr("IN1"); +} + + + +void pacman_state::pengojpm_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); // AM_RANGE(0x1000, 0x1fff) // header check for 0x55aa at POST, diagnostic ROM? - AM_RANGE(0x4000, 0x7fff) AM_ROM + map(0x4000, 0x7fff).rom(); - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") + map(0x8000, 0x83ff).ram().w(this, FUNC(pacman_state::pacman_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(pacman_state::pacman_colorram_w)).share("colorram"); - AM_RANGE(0x8800, 0x8bff) AM_RAM + map(0x8800, 0x8bff).ram(); // AM_RANGE(0x8800, 0x8bff) AM_READ(pacman_read_nop) AM_WRITENOP - AM_RANGE(0x8c00, 0x8fef) AM_RAM - AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9000, 0x9007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x9040, 0x905f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x9060, 0x906f) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x9070, 0x907f) AM_WRITENOP - AM_RANGE(0x9080, 0x9080) AM_WRITENOP - AM_RANGE(0x90c0, 0x90c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN0") - AM_RANGE(0x9040, 0x9040) AM_READ_PORT("IN1") - AM_RANGE(0x9080, 0x9080) AM_READ_PORT("DSW1") - AM_RANGE(0x90c0, 0x90c0) AM_READ_PORT("DSW2") - - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0x8c00, 0x8fef).ram(); + map(0x8ff0, 0x8fff).ram().share("spriteram"); + map(0x9000, 0x9007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x9040, 0x905f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x9060, 0x906f).writeonly().share("spriteram2"); + map(0x9070, 0x907f).nopw(); + map(0x9080, 0x9080).nopw(); + map(0x90c0, 0x90c0).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x9000, 0x9000).portr("IN0"); + map(0x9040, 0x9040).portr("IN1"); + map(0x9080, 0x9080).portr("DSW1"); + map(0x90c0, 0x90c0).portr("DSW2"); + + map(0xf000, 0xffff).ram(); +} /************************************* @@ -1352,71 +1367,84 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(pacman_state::writeport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(pacman_interrupt_vector_w) /* Pac-Man only */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::vanvan_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("sn2", sn76496_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::dremshpr_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x06, 0x07) AM_DEVWRITE("ay8910", ay8910_device, data_address_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::piranha_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(piranha_interrupt_vector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::nmouse_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(nmouse_interrupt_vector_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::epos_portmap) - AM_IMPORT_FROM(writeport) - AM_RANGE(0x00, 0xff) AM_READ(epos_decryption_w) /* Switch protection logic */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::mschamp_portmap) - AM_IMPORT_FROM(writeport) - AM_RANGE(0x00, 0x00) AM_READ(mschamp_kludge_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::bigbucks_portmap) - AM_RANGE(0x0000, 0xffff) AM_READ(bigbucks_question_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::s2650games_dataport) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_DEVWRITE("sn1", sn76496_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::drivfrcp_portmap) - AM_RANGE(0x00, 0x00) AM_READNOP - AM_RANGE(0x01, 0x01) AM_READ(drivfrcp_port1_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::_8bpm_portmap) - AM_RANGE(0x00, 0x00) AM_READNOP - AM_RANGE(0x01, 0x01) AM_READ(_8bpm_port1_r) - AM_RANGE(0xe0, 0xe0) AM_READNOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::porky_portmap) - AM_RANGE(0x01, 0x01) AM_READ(porky_port1_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pacman_state::crushs_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay8912", ay8912_device, data_address_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") -ADDRESS_MAP_END +void pacman_state::writeport(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(pacman_state::pacman_interrupt_vector_w)); /* Pac-Man only */ +} + +void pacman_state::vanvan_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).w("sn1", FUNC(sn76496_device::write)); + map(0x02, 0x02).w("sn2", FUNC(sn76496_device::write)); +} + +void pacman_state::dremshpr_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x06, 0x07).w("ay8910", FUNC(ay8910_device::data_address_w)); +} + +void pacman_state::piranha_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(pacman_state::piranha_interrupt_vector_w)); +} + +void pacman_state::nmouse_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(pacman_state::nmouse_interrupt_vector_w)); +} + +void pacman_state::epos_portmap(address_map &map) +{ + writeport(map); + map(0x00, 0xff).r(this, FUNC(pacman_state::epos_decryption_w)); /* Switch protection logic */ +} + +void pacman_state::mschamp_portmap(address_map &map) +{ + writeport(map); + map(0x00, 0x00).r(this, FUNC(pacman_state::mschamp_kludge_r)); +} + +void pacman_state::bigbucks_portmap(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(pacman_state::bigbucks_question_r)); +} + +void pacman_state::s2650games_dataport(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).w("sn1", FUNC(sn76496_device::write)); +} + +void pacman_state::drivfrcp_portmap(address_map &map) +{ + map(0x00, 0x00).nopr(); + map(0x01, 0x01).r(this, FUNC(pacman_state::drivfrcp_port1_r)); +} + +void pacman_state::_8bpm_portmap(address_map &map) +{ + map(0x00, 0x00).nopr(); + map(0x01, 0x01).r(this, FUNC(pacman_state::_8bpm_port1_r)); + map(0xe0, 0xe0).nopr(); +} + +void pacman_state::porky_portmap(address_map &map) +{ + map(0x01, 0x01).r(this, FUNC(pacman_state::porky_port1_r)); +} + +void pacman_state::crushs_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay8912", FUNC(ay8912_device::data_address_w)); + map(0x01, 0x01).portr("DSW2"); + map(0x02, 0x02).portr("DSW1"); +} diff --git a/src/mame/drivers/palm.cpp b/src/mame/drivers/palm.cpp index 1b9c5ad9ad2..ae9349c1403 100644 --- a/src/mame/drivers/palm.cpp +++ b/src/mame/drivers/palm.cpp @@ -165,10 +165,11 @@ PALETTE_INIT_MEMBER(palm_state, palm) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(palm_state::palm_map) - AM_RANGE(0xc00000, 0xe07fff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xfff000, 0xffffff) AM_DEVREADWRITE(MC68328_TAG, mc68328_device, read, write) -ADDRESS_MAP_END +void palm_state::palm_map(address_map &map) +{ + map(0xc00000, 0xe07fff).rom().region("bios", 0); + map(0xfff000, 0xffffff).rw(m_lsi, FUNC(mc68328_device::read), FUNC(mc68328_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/palmz22.cpp b/src/mame/drivers/palmz22.cpp index 822d4ee9b4c..5829deb7990 100644 --- a/src/mame/drivers/palmz22.cpp +++ b/src/mame/drivers/palmz22.cpp @@ -268,9 +268,10 @@ void palmz22_state::machine_reset() ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(palmz22_state::palmz22_map) - AM_RANGE(0x30000000, 0x31ffffff) AM_RAM -ADDRESS_MAP_END +void palmz22_state::palmz22_map(address_map &map) +{ + map(0x30000000, 0x31ffffff).ram(); +} /*************************************************************************** MACHINE DRIVERS diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp index 347884531e3..64211f1d80f 100644 --- a/src/mame/drivers/pandoras.cpp +++ b/src/mame/drivers/pandoras.cpp @@ -117,57 +117,62 @@ WRITE_LINE_MEMBER(pandoras_state::coin_counter_2_w) } -ADDRESS_MAP_START(pandoras_state::pandoras_master_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("spriteram") /* Work RAM (Shared with CPU B) */ - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE("colorram") /* Color RAM (shared with CPU B) */ - AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE("videoram") /* Video RAM (shared with CPU B) */ - AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) /* INT control */ - AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w) /* bg scroll */ - AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w) /* cause INT on the Z80 */ - AM_RANGE(0x1e00, 0x1e00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound command to the Z80 */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(pandoras_cpub_irqtrigger_w) /* cause FIRQ on CPU B */ - AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */ - AM_RANGE(0x4000, 0x5fff) AM_ROM /* space for diagnostic ROM */ - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("share4") /* Shared RAM with CPU B */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pandoras_state::pandoras_slave_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("spriteram") /* Work RAM (Shared with CPU A) */ - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE("colorram") /* Color RAM (shared with CPU A) */ - AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE("videoram") /* Video RAM (shared with CPU A) */ - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) /* INT control */ - AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1a01, 0x1a01) AM_READ_PORT("P1") - AM_RANGE(0x1a02, 0x1a02) AM_READ_PORT("P2") - AM_RANGE(0x1a03, 0x1a03) AM_READ_PORT("DSW3") - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW2") +void pandoras_state::pandoras_master_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("spriteram"); /* Work RAM (Shared with CPU B) */ + map(0x1000, 0x13ff).ram().w(this, FUNC(pandoras_state::pandoras_cram_w)).share("colorram"); /* Color RAM (shared with CPU B) */ + map(0x1400, 0x17ff).ram().w(this, FUNC(pandoras_state::pandoras_vram_w)).share("videoram"); /* Video RAM (shared with CPU B) */ + map(0x1800, 0x1807).w("mainlatch", FUNC(ls259_device::write_d0)); /* INT control */ + map(0x1a00, 0x1a00).w(this, FUNC(pandoras_state::pandoras_scrolly_w)); /* bg scroll */ + map(0x1c00, 0x1c00).w(this, FUNC(pandoras_state::pandoras_z80_irqtrigger_w)); /* cause INT on the Z80 */ + map(0x1e00, 0x1e00).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound command to the Z80 */ + map(0x2000, 0x2000).w(this, FUNC(pandoras_state::pandoras_cpub_irqtrigger_w)); /* cause FIRQ on CPU B */ + map(0x2001, 0x2001).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */ + map(0x4000, 0x5fff).rom(); /* space for diagnostic ROM */ + map(0x6000, 0x67ff).ram().share("share4"); /* Shared RAM with CPU B */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void pandoras_state::pandoras_slave_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("spriteram"); /* Work RAM (Shared with CPU A) */ + map(0x1000, 0x13ff).ram().w(this, FUNC(pandoras_state::pandoras_cram_w)).share("colorram"); /* Color RAM (shared with CPU A) */ + map(0x1400, 0x17ff).ram().w(this, FUNC(pandoras_state::pandoras_vram_w)).share("videoram"); /* Video RAM (shared with CPU A) */ + map(0x1800, 0x1800).portr("DSW1"); + map(0x1800, 0x1807).w("mainlatch", FUNC(ls259_device::write_d0)); /* INT control */ + map(0x1a00, 0x1a00).portr("SYSTEM"); + map(0x1a01, 0x1a01).portr("P1"); + map(0x1a02, 0x1a02).portr("P2"); + map(0x1a03, 0x1a03).portr("DSW3"); + map(0x1c00, 0x1c00).portr("DSW2"); // AM_RANGE(0x1e00, 0x1e00) AM_READNOP /* ??? seems to be important */ - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */ - AM_RANGE(0xa000, 0xa000) AM_WRITE(pandoras_cpua_irqtrigger_w) /* cause FIRQ on CPU A */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share4") /* Shared RAM with the CPU A */ - AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pandoras_state::pandoras_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM /* ROM */ - AM_RANGE(0x2000, 0x23ff) AM_RAM /* RAM */ - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY-8910 */ - AM_RANGE(0x6001, 0x6001) AM_DEVREAD("aysnd", ay8910_device, data_r) /* AY-8910 */ - AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("aysnd", ay8910_device, data_w) /* AY-8910 */ - AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w) /* cause INT on the 8039 */ - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* sound command to the 8039 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pandoras_state::pandoras_i8039_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pandoras_state::pandoras_i8039_io_map) - AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog reset */ + map(0xa000, 0xa000).w(this, FUNC(pandoras_state::pandoras_cpua_irqtrigger_w)); /* cause FIRQ on CPU A */ + map(0xc000, 0xc7ff).ram().share("share4"); /* Shared RAM with the CPU A */ + map(0xe000, 0xffff).rom(); /* ROM */ +} + +void pandoras_state::pandoras_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); /* ROM */ + map(0x2000, 0x23ff).ram(); /* RAM */ + map(0x4000, 0x4000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x6000, 0x6000).w("aysnd", FUNC(ay8910_device::address_w)); /* AY-8910 */ + map(0x6001, 0x6001).r("aysnd", FUNC(ay8910_device::data_r)); /* AY-8910 */ + map(0x6002, 0x6002).w("aysnd", FUNC(ay8910_device::data_w)); /* AY-8910 */ + map(0x8000, 0x8000).w(this, FUNC(pandoras_state::pandoras_i8039_irqtrigger_w)); /* cause INT on the 8039 */ + map(0xa000, 0xa000).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* sound command to the 8039 */ +} + +void pandoras_state::pandoras_i8039_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void pandoras_state::pandoras_i8039_io_map(address_map &map) +{ + map(0x00, 0xff).r("soundlatch2", FUNC(generic_latch_8_device::read)); +} /*************************************************************************** diff --git a/src/mame/drivers/pangofun.cpp b/src/mame/drivers/pangofun.cpp index d984735ae3e..5a49388de5a 100644 --- a/src/mame/drivers/pangofun.cpp +++ b/src/mame/drivers/pangofun.cpp @@ -115,26 +115,28 @@ public: }; -ADDRESS_MAP_START(pangofun_state::pcat_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) - AM_RANGE(0x000e0000, 0x000effff) AM_ROM AM_REGION("game_prg", 0) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 ) +void pangofun_state::pcat_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0); + map(0x000e0000, 0x000effff).rom().region("game_prg", 0); + map(0x000f0000, 0x000fffff).rom().region("bios", 0); /* TODO: correct RAM mapping/size? */ - AM_RANGE(0x00100000, 0x00ffffff) AM_NOP - AM_RANGE(0x01000000, 0x01ffffff) AM_RAM - AM_RANGE(0x02000000, 0xfffeffff) AM_NOP - AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pangofun_state::pcat_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e0, 0x00e3) AM_WRITENOP - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) -ADDRESS_MAP_END + map(0x00100000, 0x00ffffff).noprw(); + map(0x01000000, 0x01ffffff).ram(); + map(0x02000000, 0xfffeffff).noprw(); + map(0xffff0000, 0xffffffff).rom().region("bios", 0); +} + +void pangofun_state::pcat_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e0, 0x00e3).nopw(); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); +} #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(text) PORT_CODE(key1) diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp index 33d7e129243..6069b545f43 100644 --- a/src/mame/drivers/panicr.cpp +++ b/src/mame/drivers/panicr.cpp @@ -428,29 +428,30 @@ WRITE8_MEMBER(panicr_state::t5182shared_w) } -ADDRESS_MAP_START(panicr_state::panicr_map) - AM_RANGE(0x00000, 0x01fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x02000, 0x03cff) AM_RAM AM_SHARE("spriteram") // how big is sprite ram, some places definitely have sprites at 3000+ - AM_RANGE(0x03d00, 0x03fff) AM_RAM - AM_RANGE(0x08000, 0x0bfff) AM_READ(collision_r) - AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x0d000, 0x0d000) AM_DEVWRITE("t5182", t5182_device, sound_irq_w) - AM_RANGE(0x0d002, 0x0d002) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_acquire_w) - AM_RANGE(0x0d004, 0x0d004) AM_DEVREAD("t5182", t5182_device, sharedram_semaphore_snd_r) - AM_RANGE(0x0d006, 0x0d006) AM_DEVWRITE("t5182", t5182_device, sharedram_semaphore_main_release_w) - AM_RANGE(0x0d200, 0x0d2ff) AM_READWRITE(t5182shared_r, t5182shared_w) - AM_RANGE(0x0d400, 0x0d400) AM_READ_PORT("P1") - AM_RANGE(0x0d402, 0x0d402) AM_READ_PORT("P2") - AM_RANGE(0x0d404, 0x0d404) AM_READ_PORT("START") - AM_RANGE(0x0d406, 0x0d406) AM_READ_PORT("DSW1") - AM_RANGE(0x0d407, 0x0d407) AM_READ_PORT("DSW2") - AM_RANGE(0x0d802, 0x0d802) AM_WRITE(scrollx_hi_w) - AM_RANGE(0x0d804, 0x0d804) AM_WRITE(scrollx_lo_w) - AM_RANGE(0x0d80a, 0x0d80a) AM_WRITE(output_w) - AM_RANGE(0x0d80c, 0x0d80c) AM_WRITEONLY AM_SHARE("spritebank") - AM_RANGE(0x0d818, 0x0d818) AM_WRITENOP // watchdog? - AM_RANGE(0xf0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void panicr_state::panicr_map(address_map &map) +{ + map(0x00000, 0x01fff).ram().share("mainram"); + map(0x02000, 0x03cff).ram().share("spriteram"); // how big is sprite ram, some places definitely have sprites at 3000+ + map(0x03d00, 0x03fff).ram(); + map(0x08000, 0x0bfff).r(this, FUNC(panicr_state::collision_r)); + map(0x0c000, 0x0cfff).ram().share("textram"); + map(0x0d000, 0x0d000).w(m_t5182, FUNC(t5182_device::sound_irq_w)); + map(0x0d002, 0x0d002).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_acquire_w)); + map(0x0d004, 0x0d004).r(m_t5182, FUNC(t5182_device::sharedram_semaphore_snd_r)); + map(0x0d006, 0x0d006).w(m_t5182, FUNC(t5182_device::sharedram_semaphore_main_release_w)); + map(0x0d200, 0x0d2ff).rw(this, FUNC(panicr_state::t5182shared_r), FUNC(panicr_state::t5182shared_w)); + map(0x0d400, 0x0d400).portr("P1"); + map(0x0d402, 0x0d402).portr("P2"); + map(0x0d404, 0x0d404).portr("START"); + map(0x0d406, 0x0d406).portr("DSW1"); + map(0x0d407, 0x0d407).portr("DSW2"); + map(0x0d802, 0x0d802).w(this, FUNC(panicr_state::scrollx_hi_w)); + map(0x0d804, 0x0d804).w(this, FUNC(panicr_state::scrollx_lo_w)); + map(0x0d80a, 0x0d80a).w(this, FUNC(panicr_state::output_w)); + map(0x0d80c, 0x0d80c).writeonly().share("spritebank"); + map(0x0d818, 0x0d818).nopw(); // watchdog? + map(0xf0000, 0xfffff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp index 6d2a199290f..3f7d769ec04 100644 --- a/src/mame/drivers/paradise.cpp +++ b/src/mame/drivers/paradise.cpp @@ -128,54 +128,60 @@ WRITE8_MEMBER(paradise_state::torus_coin_counter_w) machine().bookkeeping().coin_counter_w(0, data ^ 0xff); } -ADDRESS_MAP_START(paradise_state::base_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */ - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("prgbank") /* ROM (banked) */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2") /* Background */ - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") /* Midground */ - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") /* Foreground */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(paradise_state::paradise_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xd800, 0xd8ff) AM_RAM // RAM - AM_RANGE(0xd900, 0xe0ff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xe100, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(paradise_state::tgtball_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xd800, 0xd8ff) AM_RAM // RAM - AM_RANGE(0xd900, 0xd9ff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xda00, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(paradise_state::torus_map) - AM_IMPORT_FROM(base_map) - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xe000, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(paradise_state::torus_io_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x1800, 0x1800) AM_WRITE(priority_w) // Layers priority - AM_RANGE(0x2001, 0x2001) AM_WRITE(flipscreen_w) // Flip Screen - AM_RANGE(0x2004, 0x2004) AM_WRITE(palbank_w) // Layers palette bank - AM_RANGE(0x2006, 0x2006) AM_WRITE(rombank_w) // ROM bank - AM_RANGE(0x2010, 0x2010) AM_DEVREADWRITE("oki1", okim6295_device, read, write) // OKI 0 - AM_RANGE(0x2020, 0x2020) AM_READ_PORT("DSW1") - AM_RANGE(0x2021, 0x2021) AM_READ_PORT("DSW2") - AM_RANGE(0x2022, 0x2022) AM_READ_PORT("P1") - AM_RANGE(0x2023, 0x2023) AM_READ_PORT("P2") - AM_RANGE(0x2024, 0x2024) AM_READ_PORT("SYSTEM") - AM_RANGE(0x8000, 0xffff) AM_RAM_WRITE(pixmap_w) AM_SHARE("videoram") // Pixmap -ADDRESS_MAP_END - -ADDRESS_MAP_START(paradise_state::paradise_io_map) - AM_IMPORT_FROM(torus_io_map) - AM_RANGE(0x2007, 0x2007) AM_WRITE(paradise_okibank_w) // OKI 1 samples bank - AM_RANGE(0x2030, 0x2030) AM_DEVREADWRITE("oki2", okim6295_device, read, write) // OKI 1 -ADDRESS_MAP_END +void paradise_state::base_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* ROM */ + map(0x8000, 0xbfff).bankr("prgbank"); /* ROM (banked) */ + map(0xc000, 0xc7ff).ram().w(this, FUNC(paradise_state::vram_2_w)).share("vram_2"); /* Background */ + map(0xc800, 0xcfff).ram().w(this, FUNC(paradise_state::vram_1_w)).share("vram_1"); /* Midground */ + map(0xd000, 0xd7ff).ram().w(this, FUNC(paradise_state::vram_0_w)).share("vram_0"); /* Foreground */ +} + +void paradise_state::paradise_map(address_map &map) +{ + base_map(map); + map(0xd800, 0xd8ff).ram(); // RAM + map(0xd900, 0xe0ff).ram().share("spriteram"); // Sprites + map(0xe100, 0xffff).ram(); // RAM +} + +void paradise_state::tgtball_map(address_map &map) +{ + base_map(map); + map(0xd800, 0xd8ff).ram(); // RAM + map(0xd900, 0xd9ff).ram().share("spriteram"); // Sprites + map(0xda00, 0xffff).ram(); // RAM +} + +void paradise_state::torus_map(address_map &map) +{ + base_map(map); + map(0xd800, 0xdfff).ram().share("spriteram"); // Sprites + map(0xe000, 0xffff).ram(); // RAM +} + +void paradise_state::torus_io_map(address_map &map) +{ + map(0x0000, 0x17ff).ram().w(this, FUNC(paradise_state::palette_w)).share("paletteram"); // Palette + map(0x1800, 0x1800).w(this, FUNC(paradise_state::priority_w)); // Layers priority + map(0x2001, 0x2001).w(this, FUNC(paradise_state::flipscreen_w)); // Flip Screen + map(0x2004, 0x2004).w(this, FUNC(paradise_state::palbank_w)); // Layers palette bank + map(0x2006, 0x2006).w(this, FUNC(paradise_state::rombank_w)); // ROM bank + map(0x2010, 0x2010).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI 0 + map(0x2020, 0x2020).portr("DSW1"); + map(0x2021, 0x2021).portr("DSW2"); + map(0x2022, 0x2022).portr("P1"); + map(0x2023, 0x2023).portr("P2"); + map(0x2024, 0x2024).portr("SYSTEM"); + map(0x8000, 0xffff).ram().w(this, FUNC(paradise_state::pixmap_w)).share("videoram"); // Pixmap +} + +void paradise_state::paradise_io_map(address_map &map) +{ + torus_io_map(map); + map(0x2007, 0x2007).w(this, FUNC(paradise_state::paradise_okibank_w)); // OKI 1 samples bank + map(0x2030, 0x2030).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // OKI 1 +} /*************************************************************************** diff --git a/src/mame/drivers/paranoia.cpp b/src/mame/drivers/paranoia.cpp index de95a8fa890..b492f78fcf2 100644 --- a/src/mame/drivers/paranoia.cpp +++ b/src/mame/drivers/paranoia.cpp @@ -78,42 +78,47 @@ static INPUT_PORTS_START( paranoia ) PCE_STANDARD_INPUT_PORT_P1 INPUT_PORTS_END -ADDRESS_MAP_START(paranoia_state::pce_mem) - AM_RANGE( 0x000000, 0x03FFFF) AM_ROM - AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) - AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) - AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w ) - AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w ) - AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w ) - AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(paranoia_state::pce_io) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) -ADDRESS_MAP_END +void paranoia_state::pce_mem(address_map &map) +{ + map(0x000000, 0x03FFFF).rom(); + map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000); + map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); + map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w)); + map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1FF000, 0x1FF3FF).rw(this, FUNC(paranoia_state::pce_joystick_r), FUNC(paranoia_state::pce_joystick_w)); + map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); +} + +void paranoia_state::pce_io(address_map &map) +{ + map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); +} WRITE8_MEMBER(paranoia_state::i8085_d000_w) { //logerror( "D000 (8085) write %02x\n", data ); } -ADDRESS_MAP_START(paranoia_state::paranoia_8085_map) - AM_RANGE( 0x0000, 0x7fff) AM_ROM - AM_RANGE( 0x8000, 0x80ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w) - AM_RANGE( 0x8100, 0x8107) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w) - AM_RANGE( 0xd000, 0xd000) AM_WRITE(i8085_d000_w ) - AM_RANGE( 0xe000, 0xe1ff) AM_RAM -ADDRESS_MAP_END +void paranoia_state::paranoia_8085_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x80ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x8100, 0x8107).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xd000, 0xd000).w(this, FUNC(paranoia_state::i8085_d000_w)); + map(0xe000, 0xe1ff).ram(); +} -ADDRESS_MAP_START(paranoia_state::paranoia_8085_io_map) -ADDRESS_MAP_END +void paranoia_state::paranoia_8085_io_map(address_map &map) +{ +} -ADDRESS_MAP_START(paranoia_state::paranoia_z80_map) - AM_RANGE( 0x0000, 0x3fff) AM_ROM - AM_RANGE( 0x6000, 0x67ff) AM_RAM - AM_RANGE( 0x7000, 0x73ff) AM_RAM -ADDRESS_MAP_END +void paranoia_state::paranoia_z80_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x7000, 0x73ff).ram(); +} READ8_MEMBER(paranoia_state::z80_io_01_r) { @@ -133,13 +138,14 @@ WRITE8_MEMBER(paranoia_state::z80_io_37_w) { } -ADDRESS_MAP_START(paranoia_state::paranoia_z80_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_READ(z80_io_01_r ) - AM_RANGE( 0x02, 0x02 ) AM_READ(z80_io_02_r ) - AM_RANGE( 0x17, 0x17 ) AM_WRITE(z80_io_17_w ) - AM_RANGE( 0x37, 0x37 ) AM_WRITE(z80_io_37_w ) -ADDRESS_MAP_END +void paranoia_state::paranoia_z80_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(this, FUNC(paranoia_state::z80_io_01_r)); + map(0x02, 0x02).r(this, FUNC(paranoia_state::z80_io_02_r)); + map(0x17, 0x17).w(this, FUNC(paranoia_state::z80_io_17_w)); + map(0x37, 0x37).w(this, FUNC(paranoia_state::z80_io_37_w)); +} WRITE8_MEMBER(paranoia_state::i8155_a_w) { diff --git a/src/mame/drivers/parodius.cpp b/src/mame/drivers/parodius.cpp index 031851aa35a..8c42ee3e773 100644 --- a/src/mame/drivers/parodius.cpp +++ b/src/mame/drivers/parodius.cpp @@ -92,43 +92,47 @@ WRITE8_MEMBER(parodius_state::sound_arm_nmi_w) /********************************************/ -ADDRESS_MAP_START(parodius_state::parodius_map) - AM_RANGE(0x0000, 0x07ff) AM_DEVICE("bank0000", address_map_bank_device, amap8) - AM_RANGE(0x0800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x5fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0x2000, 0x27ff) AM_DEVICE("bank2000", address_map_bank_device, amap8) - AM_RANGE(0x3f8c, 0x3f8c) AM_READ_PORT("P1") - AM_RANGE(0x3f8d, 0x3f8d) AM_READ_PORT("P2") - AM_RANGE(0x3f8e, 0x3f8e) AM_READ_PORT("DSW3") - AM_RANGE(0x3f8f, 0x3f8f) AM_READ_PORT("DSW1") - AM_RANGE(0x3f90, 0x3f90) AM_READ_PORT("DSW2") - AM_RANGE(0x3fa0, 0x3faf) AM_DEVREADWRITE("k053245", k05324x_device, k053244_r, k053244_w) - AM_RANGE(0x3fb0, 0x3fbf) AM_DEVWRITE("k053251", k053251_device, write) - AM_RANGE(0x3fc0, 0x3fc0) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(parodius_3fc0_w) - AM_RANGE(0x3fc4, 0x3fc4) AM_WRITE(parodius_videobank_w) - AM_RANGE(0x3fc8, 0x3fc8) AM_WRITE(parodius_sh_irqtrigger_w) - AM_RANGE(0x3fcc, 0x3fcd) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write) - AM_RANGE(0x6000, 0x9fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION("maincpu", 0x3a000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(parodius_state::bank0000_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(parodius_state::bank2000_map) - AM_RANGE(0x0000, 0x07ff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("k053245", k05324x_device, k053245_r, k053245_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(parodius_state::parodius_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) - AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) -ADDRESS_MAP_END +void parodius_state::parodius_map(address_map &map) +{ + map(0x0000, 0x07ff).m(m_bank0000, FUNC(address_map_bank_device::amap8)); + map(0x0800, 0x1fff).ram(); + map(0x2000, 0x5fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0x2000, 0x27ff).m(m_bank2000, FUNC(address_map_bank_device::amap8)); + map(0x3f8c, 0x3f8c).portr("P1"); + map(0x3f8d, 0x3f8d).portr("P2"); + map(0x3f8e, 0x3f8e).portr("DSW3"); + map(0x3f8f, 0x3f8f).portr("DSW1"); + map(0x3f90, 0x3f90).portr("DSW2"); + map(0x3fa0, 0x3faf).rw(m_k053245, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)); + map(0x3fb0, 0x3fbf).w(m_k053251, FUNC(k053251_device::write)); + map(0x3fc0, 0x3fc0).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(parodius_state::parodius_3fc0_w)); + map(0x3fc4, 0x3fc4).w(this, FUNC(parodius_state::parodius_videobank_w)); + map(0x3fc8, 0x3fc8).w(this, FUNC(parodius_state::parodius_sh_irqtrigger_w)); + map(0x3fcc, 0x3fcd).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); + map(0x6000, 0x9fff).bankr("bank1"); /* banked ROM */ + map(0xa000, 0xffff).rom().region("maincpu", 0x3a000); +} + +void parodius_state::bank0000_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void parodius_state::bank2000_map(address_map &map) +{ + map(0x0000, 0x07ff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0x0800, 0x0fff).rw(m_k053245, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w)); +} + +void parodius_state::parodius_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfa00, 0xfa00).w(this, FUNC(parodius_state::sound_arm_nmi_w)); + map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/partner.cpp b/src/mame/drivers/partner.cpp index 841572e55bc..3c68fdb4a59 100644 --- a/src/mame/drivers/partner.cpp +++ b/src/mame/drivers/partner.cpp @@ -25,26 +25,27 @@ /* Address maps */ -ADDRESS_MAP_START(partner_state::partner_mem) - AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") - AM_RANGE( 0x0800, 0x3fff ) AM_RAMBANK("bank2") - AM_RANGE( 0x4000, 0x5fff ) AM_RAMBANK("bank3") - AM_RANGE( 0x6000, 0x7fff ) AM_RAMBANK("bank4") - AM_RANGE( 0x8000, 0x9fff ) AM_RAMBANK("bank5") - AM_RANGE( 0xa000, 0xb7ff ) AM_RAMBANK("bank6") - AM_RANGE( 0xb800, 0xbfff ) AM_RAMBANK("bank7") - AM_RANGE( 0xc000, 0xc7ff ) AM_RAMBANK("bank8") - AM_RANGE( 0xc800, 0xcfff ) AM_RAMBANK("bank9") - AM_RANGE( 0xd000, 0xd7ff ) AM_RAMBANK("bank10") - AM_RANGE( 0xd800, 0xd8ff ) AM_DEVREADWRITE("i8275", i8275_device, read, write) // video - AM_RANGE( 0xd900, 0xd9ff ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE( 0xda00, 0xdaff ) AM_WRITE(partner_mem_page_w) - AM_RANGE( 0xdb00, 0xdbff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xdc00, 0xddff ) AM_RAMBANK("bank11") - AM_RANGE( 0xde00, 0xdeff ) AM_WRITE(partner_win_memory_page_w) - AM_RANGE( 0xe000, 0xe7ff ) AM_RAMBANK("bank12") - AM_RANGE( 0xe800, 0xffff ) AM_RAMBANK("bank13") -ADDRESS_MAP_END +void partner_state::partner_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankrw("bank1"); + map(0x0800, 0x3fff).bankrw("bank2"); + map(0x4000, 0x5fff).bankrw("bank3"); + map(0x6000, 0x7fff).bankrw("bank4"); + map(0x8000, 0x9fff).bankrw("bank5"); + map(0xa000, 0xb7ff).bankrw("bank6"); + map(0xb800, 0xbfff).bankrw("bank7"); + map(0xc000, 0xc7ff).bankrw("bank8"); + map(0xc800, 0xcfff).bankrw("bank9"); + map(0xd000, 0xd7ff).bankrw("bank10"); + map(0xd800, 0xd8ff).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)); // video + map(0xd900, 0xd9ff).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xda00, 0xdaff).w(this, FUNC(partner_state::partner_mem_page_w)); + map(0xdb00, 0xdbff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xdc00, 0xddff).bankrw("bank11"); + map(0xde00, 0xdeff).w(this, FUNC(partner_state::partner_win_memory_page_w)); + map(0xe000, 0xe7ff).bankrw("bank12"); + map(0xe800, 0xffff).bankrw("bank13"); +} /* Input ports */ static INPUT_PORTS_START( partner ) diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp index 6854296e319..5b84e2c2f94 100644 --- a/src/mame/drivers/pasha2.cpp +++ b/src/mame/drivers/pasha2.cpp @@ -233,36 +233,38 @@ WRITE16_MEMBER(pasha2_state::pasha2_lamps_w) machine().output().set_value("lamp_p3_b", BIT(data, 10)); } -ADDRESS_MAP_START(pasha2_state::pasha2_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram") - AM_RANGE(0x40000000, 0x4001ffff) AM_RAM_WRITE(bitmap_0_w) - AM_RANGE(0x40020000, 0x4003ffff) AM_RAM_WRITE(bitmap_1_w) - AM_RANGE(0x40060000, 0x40060001) AM_WRITENOP - AM_RANGE(0x40064000, 0x40064001) AM_WRITENOP - AM_RANGE(0x40068000, 0x40068001) AM_WRITENOP - AM_RANGE(0x4006c000, 0x4006c001) AM_WRITENOP - AM_RANGE(0x40070000, 0x40070001) AM_WRITE(vbuffer_clear_w) - AM_RANGE(0x40074000, 0x40074001) AM_WRITE(vbuffer_set_w) - AM_RANGE(0x40078000, 0x40078001) AM_WRITENOP //once at startup -> to disable the eeprom? - AM_RANGE(0x80000000, 0x803fffff) AM_ROMBANK("bank1") - AM_RANGE(0xe0000000, 0xe00003ff) AM_RAM_WRITE(pasha2_palette_w) AM_SHARE("paletteram") //tilemap? palette? - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pasha2_state::pasha2_io) - AM_RANGE(0x08, 0x0b) AM_READNOP //sound status? - AM_RANGE(0x18, 0x1b) AM_READNOP //sound status? - AM_RANGE(0x20, 0x23) AM_WRITE(pasha2_lamps_w) - AM_RANGE(0x40, 0x43) AM_READ_PORT("COINS") - AM_RANGE(0x60, 0x63) AM_READ_PORT("DSW") - AM_RANGE(0x80, 0x83) AM_READ_PORT("INPUTS") - AM_RANGE(0xa0, 0xa3) AM_WRITENOP //soundlatch? - AM_RANGE(0xc0, 0xc3) AM_WRITE(pasha2_misc_w) - AM_RANGE(0xe2, 0xe3) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xe6, 0xe7) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xe8, 0xeb) AM_WRITE(oki1_bank_w) - AM_RANGE(0xec, 0xef) AM_WRITE(oki2_bank_w) -ADDRESS_MAP_END +void pasha2_state::pasha2_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("wram"); + map(0x40000000, 0x4001ffff).ram().w(this, FUNC(pasha2_state::bitmap_0_w)); + map(0x40020000, 0x4003ffff).ram().w(this, FUNC(pasha2_state::bitmap_1_w)); + map(0x40060000, 0x40060001).nopw(); + map(0x40064000, 0x40064001).nopw(); + map(0x40068000, 0x40068001).nopw(); + map(0x4006c000, 0x4006c001).nopw(); + map(0x40070000, 0x40070001).w(this, FUNC(pasha2_state::vbuffer_clear_w)); + map(0x40074000, 0x40074001).w(this, FUNC(pasha2_state::vbuffer_set_w)); + map(0x40078000, 0x40078001).nopw(); //once at startup -> to disable the eeprom? + map(0x80000000, 0x803fffff).bankr("bank1"); + map(0xe0000000, 0xe00003ff).ram().w(this, FUNC(pasha2_state::pasha2_palette_w)).share("paletteram"); //tilemap? palette? + map(0xfff80000, 0xffffffff).rom().region("user1", 0); +} + +void pasha2_state::pasha2_io(address_map &map) +{ + map(0x08, 0x0b).nopr(); //sound status? + map(0x18, 0x1b).nopr(); //sound status? + map(0x20, 0x23).w(this, FUNC(pasha2_state::pasha2_lamps_w)); + map(0x40, 0x43).portr("COINS"); + map(0x60, 0x63).portr("DSW"); + map(0x80, 0x83).portr("INPUTS"); + map(0xa0, 0xa3).nopw(); //soundlatch? + map(0xc0, 0xc3).w(this, FUNC(pasha2_state::pasha2_misc_w)); + map(0xe3, 0xe3).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe7, 0xe7).rw(m_oki2, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe8, 0xeb).w(this, FUNC(pasha2_state::oki1_bank_w)); + map(0xec, 0xef).w(this, FUNC(pasha2_state::oki2_bank_w)); +} static INPUT_PORTS_START( pasha2 ) PORT_START("COINS") diff --git a/src/mame/drivers/paso1600.cpp b/src/mame/drivers/paso1600.cpp index dacd843b713..4b331a0bff8 100644 --- a/src/mame/drivers/paso1600.cpp +++ b/src/mame/drivers/paso1600.cpp @@ -229,28 +229,30 @@ READ16_MEMBER( paso1600_state::test_hi_r ) return 0xffff; } -ADDRESS_MAP_START(paso1600_state::paso1600_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x7ffff) AM_RAM - AM_RANGE(0xb0000,0xb0fff) AM_RAM AM_SHARE("vram") // tvram - AM_RANGE(0xbfff0,0xbffff) AM_READWRITE8(paso1600_pcg_r,paso1600_pcg_w,0xffff) - AM_RANGE(0xc0000,0xdffff) AM_RAM AM_SHARE("gvram")// gvram - AM_RANGE(0xe0000,0xeffff) AM_ROM AM_REGION("kanji",0)// kanji rom, banked via port 0x93 - AM_RANGE(0xfe000,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(paso1600_state::paso1600_io) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000,0x000f) AM_DEVREADWRITE8("8237dma", am9517a_device, read, write, 0xffff) - AM_RANGE(0x0010,0x0011) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0xffff) // i8259 - AM_RANGE(0x001a,0x001b) AM_READ(test_hi_r) // causes RAM error otherwise? - AM_RANGE(0x0030,0x0033) AM_READWRITE8(key_r,key_w,0xffff) //UART keyboard? - AM_RANGE(0x0048,0x0049) AM_READ(test_hi_r) - AM_RANGE(0x0090,0x0091) AM_READWRITE8(paso1600_6845_status_r,paso1600_6845_address_w,0x00ff) - AM_RANGE(0x0090,0x0091) AM_READWRITE8(paso1600_6845_data_r,paso1600_6845_data_w,0xff00) +void paso1600_state::paso1600_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x7ffff).ram(); + map(0xb0000, 0xb0fff).ram().share("vram"); // tvram + map(0xbfff0, 0xbffff).rw(this, FUNC(paso1600_state::paso1600_pcg_r), FUNC(paso1600_state::paso1600_pcg_w)); + map(0xc0000, 0xdffff).ram().share("gvram");// gvram + map(0xe0000, 0xeffff).rom().region("kanji", 0);// kanji rom, banked via port 0x93 + map(0xfe000, 0xfffff).rom().region("ipl", 0); +} + +void paso1600_state::paso1600_io(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x000f).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x0010, 0x0011).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); // i8259 + map(0x001a, 0x001b).r(this, FUNC(paso1600_state::test_hi_r)); // causes RAM error otherwise? + map(0x0030, 0x0033).rw(this, FUNC(paso1600_state::key_r), FUNC(paso1600_state::key_w)); //UART keyboard? + map(0x0048, 0x0049).r(this, FUNC(paso1600_state::test_hi_r)); + map(0x0090, 0x0090).rw(this, FUNC(paso1600_state::paso1600_6845_status_r), FUNC(paso1600_state::paso1600_6845_address_w)); + map(0x0091, 0x0091).rw(this, FUNC(paso1600_state::paso1600_6845_data_r), FUNC(paso1600_state::paso1600_6845_data_w)); // AM_RANGE(0x00d8,0x00df) //fdc, unknown type // other undefined ports: 18, 1C, 92 -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( paso1600 ) diff --git a/src/mame/drivers/pasogo.cpp b/src/mame/drivers/pasogo.cpp index 76c11941c2a..fa2bb491a78 100644 --- a/src/mame/drivers/pasogo.cpp +++ b/src/mame/drivers/pasogo.cpp @@ -442,24 +442,27 @@ WRITE16_MEMBER( pasogo_state::emsram_w ) m_ems->write16(space, offset & 0x1fff, data, mem_mask); } -ADDRESS_MAP_START(pasogo_state::emsbank_map) - AM_RANGE(0x04080000, 0x040fffff) AM_RAM - AM_RANGE(0x08000000, 0x080fffff) AM_ROMBANK("bank27") - AM_RANGE(0x10000000, 0x1000ffff) AM_RAM // cart ram? -ADDRESS_MAP_END - -ADDRESS_MAP_START(pasogo_state::pasogo_mem) - AM_RANGE(0x80000, 0xeffff) AM_READWRITE(emsram_r, emsram_w) - AM_RANGE(0xb8000, 0xbffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("bank27") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pasogo_state::pasogo_io) - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff) - AM_RANGE(0x0026, 0x0027) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff) - AM_RANGE(0x006c, 0x006f) AM_READWRITE(ems_r, ems_w) -ADDRESS_MAP_END +void pasogo_state::emsbank_map(address_map &map) +{ + map(0x04080000, 0x040fffff).ram(); + map(0x08000000, 0x080fffff).bankr("bank27"); + map(0x10000000, 0x1000ffff).ram(); // cart ram? +} + +void pasogo_state::pasogo_mem(address_map &map) +{ + map(0x80000, 0xeffff).rw(this, FUNC(pasogo_state::emsram_r), FUNC(pasogo_state::emsram_w)); + map(0xb8000, 0xbffff).ram().share("vram"); + map(0xf0000, 0xfffff).bankr("bank27"); +} + + +void pasogo_state::pasogo_io(address_map &map) +{ + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); + map(0x0026, 0x0027).rw(this, FUNC(pasogo_state::vg230_io_r), FUNC(pasogo_state::vg230_io_w)); + map(0x006c, 0x006f).rw(this, FUNC(pasogo_state::ems_r), FUNC(pasogo_state::ems_w)); +} static INPUT_PORTS_START( pasogo ) diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp index 64737fd1401..5d7abc9d806 100644 --- a/src/mame/drivers/pasopia.cpp +++ b/src/mame/drivers/pasopia.cpp @@ -122,27 +122,29 @@ WRITE8_MEMBER( pasopia_state::pasopia_ctrl_w ) membank("bank1")->set_entry(m_ram_bank); } -ADDRESS_MAP_START(pasopia_state::pasopia_map) - AM_RANGE(0x0000,0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") - AM_RANGE(0x8000,0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pasopia_state::pasopia_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x08,0x0b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x10,0x10) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x11,0x11) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) +void pasopia_state::pasopia_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank1").bankw("bank2"); + map(0x8000, 0xffff).ram(); +} + + +void pasopia_state::pasopia_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw(m_ppi0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw(m_ppi1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x10, 0x10).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x11, 0x11).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // 0x18 - 0x1b pac2 // 0x1c - 0x1f something - AM_RANGE(0x20,0x23) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x28,0x2b) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) - AM_RANGE(0x30,0x33) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) + map(0x20, 0x23).rw(m_ppi2, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x28, 0x2b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x30, 0x33).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // 0x38 printer - AM_RANGE(0x3c,0x3c) AM_WRITE(pasopia_ctrl_w) -ADDRESS_MAP_END + map(0x3c, 0x3c).w(this, FUNC(pasopia_state::pasopia_ctrl_w)); +} /* Input ports */ static INPUT_PORTS_START( pasopia ) diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp index 986fda7f64f..4edfc308b28 100644 --- a/src/mame/drivers/pasopia7.cpp +++ b/src/mame/drivers/pasopia7.cpp @@ -700,19 +700,21 @@ WRITE8_MEMBER( pasopia7_state::pasopia7_io_w ) } } -ADDRESS_MAP_START(pasopia7_state::pasopia7_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_WRITE( ram_bank_w ) - AM_RANGE( 0x0000, 0x3fff ) AM_ROMBANK("bank1") - AM_RANGE( 0x4000, 0x7fff ) AM_ROMBANK("bank2") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(vram_r, vram_w ) - AM_RANGE( 0xc000, 0xffff ) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pasopia7_state::pasopia7_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xffff) AM_READWRITE( pasopia7_io_r, pasopia7_io_w ) -ADDRESS_MAP_END +void pasopia7_state::pasopia7_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).w(this, FUNC(pasopia7_state::ram_bank_w)); + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankr("bank2"); + map(0x8000, 0xbfff).rw(this, FUNC(pasopia7_state::vram_r), FUNC(pasopia7_state::vram_w)); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void pasopia7_state::pasopia7_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(pasopia7_state::pasopia7_io_r), FUNC(pasopia7_state::pasopia7_io_w)); +} /* TODO: where are SPACE and RETURN keys? */ static INPUT_PORTS_START( pasopia7 ) diff --git a/src/mame/drivers/pass.cpp b/src/mame/drivers/pass.cpp index 7f618192d04..5d1dbb3a761 100644 --- a/src/mame/drivers/pass.cpp +++ b/src/mame/drivers/pass.cpp @@ -114,30 +114,33 @@ /* todo: check all memory regions actually readable / read from */ -ADDRESS_MAP_START(pass_state::pass_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(pass_bg_videoram_w) AM_SHARE("bg_videoram") // Background - AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(pass_fg_videoram_w) AM_SHARE("fg_videoram") // Foreground - AM_RANGE(0x220000, 0x2203ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x230000, 0x230001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW") - AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS") -ADDRESS_MAP_END +void pass_state::pass_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); + map(0x200000, 0x200fff).ram().w(this, FUNC(pass_state::pass_bg_videoram_w)).share("bg_videoram"); // Background + map(0x210000, 0x213fff).ram().w(this, FUNC(pass_state::pass_fg_videoram_w)).share("fg_videoram"); // Foreground + map(0x220000, 0x2203ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x230001, 0x230001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x230100, 0x230101).portr("DSW"); + map(0x230200, 0x230201).portr("INPUTS"); +} /* sound cpu */ -ADDRESS_MAP_START(pass_state::pass_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pass_state::pass_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) -ADDRESS_MAP_END +void pass_state::pass_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf800, 0xffff).ram(); +} + +void pass_state::pass_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x80).w("oki", FUNC(okim6295_device::write)); + map(0xc0, 0xc0).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); +} /* todo : work out function of unknown but used dsw */ static INPUT_PORTS_START( pass ) diff --git a/src/mame/drivers/pastelg.cpp b/src/mame/drivers/pastelg.cpp index 492a968263b..ce45917d3d1 100644 --- a/src/mame/drivers/pastelg.cpp +++ b/src/mame/drivers/pastelg.cpp @@ -45,10 +45,11 @@ READ8_MEMBER(pastelg_state::pastelg_sndrom_r) return ROM[pastelg_blitter_src_addr_r() & 0x7fff]; } -ADDRESS_MAP_START(pastelg_state::pastelg_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void pastelg_state::pastelg_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); +} READ8_MEMBER(pastelg_state::pastelg_irq_ack_r) { @@ -56,21 +57,22 @@ READ8_MEMBER(pastelg_state::pastelg_irq_ack_r) return 0; } -ADDRESS_MAP_START(pastelg_state::pastelg_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void pastelg_state::pastelg_io_map(address_map &map) +{ + map.global_mask(0xff); // AM_RANGE(0x00, 0x00) AM_WRITENOP - AM_RANGE(0x00, 0x7f) AM_DEVREAD("nb1413m3", nb1413m3_device, sndrom_r) - AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x90, 0x96) AM_WRITE(pastelg_blitter_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("nb1413m3", nb1413m3_device, inputport1_r, inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_DEVREAD("nb1413m3", nb1413m3_device, inputport2_r) AM_WRITE(pastelg_romsel_w) - AM_RANGE(0xc0, 0xc0) AM_READ(pastelg_sndrom_r) - AM_RANGE(0xc0, 0xcf) AM_WRITEONLY AM_SHARE("clut") - AM_RANGE(0xd0, 0xd0) AM_READ(pastelg_irq_ack_r) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe0, 0xe0) AM_READ_PORT("DSWC") -ADDRESS_MAP_END + map(0x00, 0x7f).r(m_nb1413m3, FUNC(nb1413m3_device::sndrom_r)); + map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).portr("SYSTEM"); + map(0x90, 0x96).w(this, FUNC(pastelg_state::pastelg_blitter_w)); + map(0xa0, 0xa0).rw(m_nb1413m3, FUNC(nb1413m3_device::inputport1_r), FUNC(nb1413m3_device::inputportsel_w)); + map(0xb0, 0xb0).r(m_nb1413m3, FUNC(nb1413m3_device::inputport2_r)).w(this, FUNC(pastelg_state::pastelg_romsel_w)); + map(0xc0, 0xc0).r(this, FUNC(pastelg_state::pastelg_sndrom_r)); + map(0xc0, 0xcf).writeonly().share("clut"); + map(0xd0, 0xd0).r(this, FUNC(pastelg_state::pastelg_irq_ack_r)).w("dac", FUNC(dac_byte_interface::write)); + map(0xe0, 0xe0).portr("DSWC"); +} READ8_MEMBER(pastelg_state::threeds_inputport1_r) @@ -111,18 +113,19 @@ CUSTOM_INPUT_MEMBER( pastelg_state::nb1413m3_busyflag_r ) return m_nb1413m3->m_busyflag & 0x01; } -ADDRESS_MAP_START(pastelg_state::threeds_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x81, 0x81) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x82, 0x83) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") AM_WRITE(threeds_romsel_w ) - AM_RANGE(0xf0, 0xf6) AM_WRITE(pastelg_blitter_w) - AM_RANGE(0xa0, 0xa0) AM_READWRITE(threeds_inputport1_r, threeds_inputportsel_w) - AM_RANGE(0xb0, 0xb0) AM_READ(threeds_inputport2_r) AM_WRITE(threeds_output_w)//writes: bit 3 is coin lockout, bit 1 is coin counter - AM_RANGE(0xc0, 0xcf) AM_WRITEONLY AM_SHARE("clut") - AM_RANGE(0xc0, 0xc0) AM_READ(threeds_rom_readback_r) - AM_RANGE(0xd0, 0xd0) AM_READ(pastelg_irq_ack_r) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END +void pastelg_state::threeds_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x82, 0x83).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x90, 0x90).portr("SYSTEM").w(this, FUNC(pastelg_state::threeds_romsel_w)); + map(0xf0, 0xf6).w(this, FUNC(pastelg_state::pastelg_blitter_w)); + map(0xa0, 0xa0).rw(this, FUNC(pastelg_state::threeds_inputport1_r), FUNC(pastelg_state::threeds_inputportsel_w)); + map(0xb0, 0xb0).r(this, FUNC(pastelg_state::threeds_inputport2_r)).w(this, FUNC(pastelg_state::threeds_output_w));//writes: bit 3 is coin lockout, bit 1 is coin counter + map(0xc0, 0xcf).writeonly().share("clut"); + map(0xc0, 0xc0).r(this, FUNC(pastelg_state::threeds_rom_readback_r)); + map(0xd0, 0xd0).r(this, FUNC(pastelg_state::pastelg_irq_ack_r)).w("dac", FUNC(dac_byte_interface::write)); +} static INPUT_PORTS_START( pastelg ) PORT_START("DSWA") diff --git a/src/mame/drivers/patapata.cpp b/src/mame/drivers/patapata.cpp index 55a901af0e8..84074747888 100644 --- a/src/mame/drivers/patapata.cpp +++ b/src/mame/drivers/patapata.cpp @@ -182,23 +182,24 @@ also */ -ADDRESS_MAP_START(patapata_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") - AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") - AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff) - AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs") - AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x130000, 0x13ffff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x150000, 0x150001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x150010, 0x150011) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x150020, 0x15002f) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) - AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram? -ADDRESS_MAP_END +void patapata_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + + map(0x100000, 0x100001).portr("IN0"); + map(0x100002, 0x100003).portr("IN1"); + map(0x100008, 0x100009).portr("DSW1"); + map(0x10000a, 0x10000b).portr("DSW2"); + map(0x100015, 0x100015).w(this, FUNC(patapata_state::flipscreen_w)); + map(0x110000, 0x1103ff).ram().share("videoregs"); + map(0x120000, 0x1205ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x130000, 0x13ffff).ram().w(this, FUNC(patapata_state::fg_videoram_w)).share("fg_videoram"); + map(0x140000, 0x14ffff).ram().w(this, FUNC(patapata_state::bg_videoram_w)).share("bg_videoram"); + map(0x150001, 0x150001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x150011, 0x150011).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x150020, 0x15002f).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); + map(0x180000, 0x18ffff).ram(); // mainram? +} static INPUT_PORTS_START( patapata ) PORT_START("IN0") diff --git a/src/mame/drivers/pb1000.cpp b/src/mame/drivers/pb1000.cpp index 6fb19150a29..acb6e47e7d0 100644 --- a/src/mame/drivers/pb1000.cpp +++ b/src/mame/drivers/pb1000.cpp @@ -80,25 +80,27 @@ public: void pb2000c_mem(address_map &map); }; -ADDRESS_MAP_START(pb1000_state::pb1000_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE( 0x00000, 0x00bff ) AM_ROM +void pb1000_state::pb1000_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x00000, 0x00bff).rom(); //AM_RANGE( 0x00c00, 0x00c0f ) AM_NOP //I/O - AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram1") - AM_RANGE( 0x08000, 0x0ffff ) AM_ROMBANK("bank1") - AM_RANGE( 0x18000, 0x1ffff ) AM_RAM AM_SHARE("nvram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pb1000_state::pb2000c_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE( 0x00000, 0x0ffff ) AM_ROMBANK("bank1") - AM_RANGE( 0x00000, 0x00bff ) AM_ROM + map(0x06000, 0x07fff).ram().share("nvram1"); + map(0x08000, 0x0ffff).bankr("bank1"); + map(0x18000, 0x1ffff).ram().share("nvram2"); +} + +void pb1000_state::pb2000c_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x00000, 0x0ffff).bankr("bank1"); + map(0x00000, 0x00bff).rom(); //AM_RANGE( 0x00c00, 0x00c0f ) AM_NOP //I/O - AM_RANGE( 0x00c10, 0x00c11 ) AM_WRITE(gatearray_w) - AM_RANGE( 0x10000, 0x1ffff ) AM_RAM AM_SHARE("nvram1") - AM_RANGE( 0x20000, 0x27fff ) AM_DEVREAD("cardslot1", generic_slot_device, read16_rom) - AM_RANGE( 0x28000, 0x2ffff ) AM_RAM AM_SHARE("nvram2") -ADDRESS_MAP_END + map(0x00c10, 0x00c11).w(this, FUNC(pb1000_state::gatearray_w)); + map(0x10000, 0x1ffff).ram().share("nvram1"); + map(0x20000, 0x27fff).r(m_card1, FUNC(generic_slot_device::read16_rom)); + map(0x28000, 0x2ffff).ram().share("nvram2"); +} /* Input ports */ diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp index cba2e934d6f..6f474f63515 100644 --- a/src/mame/drivers/pbaction.cpp +++ b/src/mame/drivers/pbaction.cpp @@ -86,43 +86,47 @@ WRITE8_MEMBER(pbaction_state::nmi_mask_w) m_nmi_mask = data & 1; } -ADDRESS_MAP_START(pbaction_state::pbaction_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("work_ram") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(pbaction_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(pbaction_colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(pbaction_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(pbaction_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe07f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe400, 0xe5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1") AM_WRITE(nmi_mask_w) - AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2") - AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe604, 0xe604) AM_READ_PORT("DSW1") AM_WRITE(pbaction_flipscreen_w) - AM_RANGE(0xe605, 0xe605) AM_READ_PORT("DSW2") - AM_RANGE(0xe606, 0xe606) AM_READNOP /* ??? */ AM_WRITE(pbaction_scroll_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE(pbaction_sh_command_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pbaction_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pbaction_state::pbaction_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pbaction_state::pbaction_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x30, 0x31) AM_DEVWRITE("ay3", ay8910_device, address_data_w) -ADDRESS_MAP_END +void pbaction_state::pbaction_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().share("work_ram"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(pbaction_state::pbaction_videoram2_w)).share("videoram2"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(pbaction_state::pbaction_colorram2_w)).share("colorram2"); + map(0xd800, 0xdbff).ram().w(this, FUNC(pbaction_state::pbaction_videoram_w)).share("videoram"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(pbaction_state::pbaction_colorram_w)).share("colorram"); + map(0xe000, 0xe07f).ram().share("spriteram"); + map(0xe400, 0xe5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe600, 0xe600).portr("P1").w(this, FUNC(pbaction_state::nmi_mask_w)); + map(0xe601, 0xe601).portr("P2"); + map(0xe602, 0xe602).portr("SYSTEM"); + map(0xe604, 0xe604).portr("DSW1").w(this, FUNC(pbaction_state::pbaction_flipscreen_w)); + map(0xe605, 0xe605).portr("DSW2"); + map(0xe606, 0xe606).nopr() /* ??? */ .w(this, FUNC(pbaction_state::pbaction_scroll_w)); + map(0xe800, 0xe800).w(this, FUNC(pbaction_state::pbaction_sh_command_w)); +} + +void pbaction_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).rom().region("maincpu", 0x8000); +} + +void pbaction_state::pbaction_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xffff, 0xffff).nopw(); /* watchdog? */ +} + + +void pbaction_state::pbaction_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x20, 0x21).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x30, 0x31).w("ay3", FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( pbaction ) diff --git a/src/mame/drivers/pc.cpp b/src/mame/drivers/pc.cpp index a927759a2a6..515f396e4a9 100644 --- a/src/mame/drivers/pc.cpp +++ b/src/mame/drivers/pc.cpp @@ -404,50 +404,57 @@ public: void zenith_map(address_map &map); }; -ADDRESS_MAP_START(pc_state::pc8_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc_state::zenith_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xf7fff) AM_RAM - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc_state::pc16_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc_state::pc8_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc_state::pc16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff) - AM_RANGE(0x0070, 0x007f) AM_RAM // needed for Poisk-2 -ADDRESS_MAP_END +void pc_state::pc8_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void pc_state::zenith_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xf7fff).ram(); + map(0xf8000, 0xfffff).rom().region("bios", 0x8000); +} + +void pc_state::pc16_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void pc_state::pc8_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); +} + +void pc_state::pc16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); + map(0x0070, 0x007f).ram(); // needed for Poisk-2 +} READ8_MEMBER(pc_state::unk_r) { return 0; } -ADDRESS_MAP_START(pc_state::ibm5550_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", ibm5160_mb_device, map, 0xffff) - AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc_state::epc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) - AM_RANGE(0x0070, 0x0070) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) - AM_RANGE(0x0071, 0x0071) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void pc_state::ibm5550_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); + map(0x00a0, 0x00a0).r(this, FUNC(pc_state::unk_r)); +} + +void pc_state::epc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); + map(0x0070, 0x0070).rw("i8251", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0071, 0x0071).rw("i8251", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} INPUT_CHANGED_MEMBER(pc_state::pc_turbo_callback) { diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp index bc977f862b6..33fb115091f 100644 --- a/src/mame/drivers/pc100.cpp +++ b/src/mame/drivers/pc100.cpp @@ -232,12 +232,13 @@ WRITE16_MEMBER( pc100_state::pc100_vram_w ) } } -ADDRESS_MAP_START(pc100_state::pc100_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0xbffff) AM_RAM // work ram - AM_RANGE(0xc0000,0xdffff) AM_READWRITE(pc100_vram_r,pc100_vram_w) // vram, blitter based! - AM_RANGE(0xf8000,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END +void pc100_state::pc100_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xbffff).ram(); // work ram + map(0xc0000, 0xdffff).rw(this, FUNC(pc100_state::pc100_vram_r), FUNC(pc100_state::pc100_vram_w)); // vram, blitter based! + map(0xf8000, 0xfffff).rom().region("ipl", 0); +} READ16_MEMBER( pc100_state::pc100_kanji_r ) { @@ -312,28 +313,29 @@ WRITE8_MEMBER( pc100_state::pc100_crtc_data_w ) /* everything is 8-bit bus wide */ -ADDRESS_MAP_START(pc100_state::pc100_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00ff) // i8259 +void pc100_state::pc100_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // i8259 // AM_RANGE(0x04, 0x07) i8237? - AM_RANGE(0x08, 0x0b) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff ) // upd765 - AM_RANGE(0x10, 0x17) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write,0x00ff) // i8255 #1 - AM_RANGE(0x18, 0x1f) AM_DEVREADWRITE8("ppi8255_2", i8255_device, read, write,0x00ff) // i8255 #2 - AM_RANGE(0x20, 0x23) AM_READ8(pc100_key_r,0x00ff) //i/o, keyboard, mouse - AM_RANGE(0x22, 0x23) AM_WRITE8(pc100_output_w,0x00ff) //i/o, keyboard, mouse - AM_RANGE(0x24, 0x25) AM_WRITE8(pc100_tc_w,0x00ff) //i/o, keyboard, mouse - AM_RANGE(0x28, 0x29) AM_DEVREADWRITE8("uart8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x2a, 0x2b) AM_DEVREADWRITE8("uart8251", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x30, 0x31) AM_READWRITE8(pc100_shift_r,pc100_shift_w,0x00ff) // crtc shift - AM_RANGE(0x38, 0x39) AM_WRITE8(pc100_crtc_addr_w,0x00ff) //crtc address reg - AM_RANGE(0x3a, 0x3b) AM_WRITE8(pc100_crtc_data_w,0x00ff) //crtc data reg - AM_RANGE(0x3c, 0x3f) AM_READWRITE8(pc100_vs_vreg_r,pc100_vs_vreg_w,0x00ff) //crtc vertical start position - AM_RANGE(0x40, 0x5f) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x08, 0x0b).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); // upd765 + map(0x10, 0x17).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255 #1 + map(0x18, 0x1f).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255 #2 + map(0x20, 0x23).r(this, FUNC(pc100_state::pc100_key_r)).umask16(0x00ff); //i/o, keyboard, mouse + map(0x22, 0x22).w(this, FUNC(pc100_state::pc100_output_w)); //i/o, keyboard, mouse + map(0x24, 0x24).w(this, FUNC(pc100_state::pc100_tc_w)); //i/o, keyboard, mouse + map(0x28, 0x28).rw("uart8251", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x2a, 0x2a).rw("uart8251", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x30, 0x30).rw(this, FUNC(pc100_state::pc100_shift_r), FUNC(pc100_state::pc100_shift_w)); // crtc shift + map(0x38, 0x38).w(this, FUNC(pc100_state::pc100_crtc_addr_w)); //crtc address reg + map(0x3a, 0x3a).w(this, FUNC(pc100_state::pc100_crtc_data_w)); //crtc data reg + map(0x3c, 0x3f).rw(this, FUNC(pc100_state::pc100_vs_vreg_r), FUNC(pc100_state::pc100_vs_vreg_w)).umask16(0x00ff); //crtc vertical start position + map(0x40, 0x5f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // AM_RANGE(0x60, 0x61) crtc command (16-bit wide) - AM_RANGE(0x80, 0x81) AM_READWRITE(pc100_kanji_r,pc100_kanji_w) - AM_RANGE(0x82, 0x83) AM_WRITENOP //kanji-related? - AM_RANGE(0x84, 0x87) AM_WRITENOP //kanji "strobe" signal 0/1 -ADDRESS_MAP_END + map(0x80, 0x81).rw(this, FUNC(pc100_state::pc100_kanji_r), FUNC(pc100_state::pc100_kanji_w)); + map(0x82, 0x83).nopw(); //kanji-related? + map(0x84, 0x87).nopw(); //kanji "strobe" signal 0/1 +} /* Input ports */ diff --git a/src/mame/drivers/pc1500.cpp b/src/mame/drivers/pc1500.cpp index 33eca9e025e..df6597d8354 100644 --- a/src/mame/drivers/pc1500.cpp +++ b/src/mame/drivers/pc1500.cpp @@ -58,21 +58,23 @@ public: void pc1500_mem_io(address_map &map); }; -ADDRESS_MAP_START(pc1500_state::pc1500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff) AM_ROM //module ROM/RAM - AM_RANGE( 0x4000, 0x47ff) AM_RAM //user RAM - AM_RANGE( 0x4800, 0x6fff) AM_RAM //expansion RAM - AM_RANGE( 0x7000, 0x71ff) AM_RAM AM_MIRROR(0x0600) AM_SHARE("lcd_data") - AM_RANGE( 0x7800, 0x7bff) AM_RAM AM_REGION("maincpu", 0x7800) AM_MIRROR(0x0400) - AM_RANGE( 0xa000, 0xbfff) AM_ROM //expansion ROM - AM_RANGE( 0xc000, 0xffff) AM_ROM //system ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc1500_state::pc1500_mem_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0xf000, 0xf00f) AM_DEVREADWRITE("lh5810", lh5810_device, data_r, data_w) -ADDRESS_MAP_END +void pc1500_state::pc1500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); //module ROM/RAM + map(0x4000, 0x47ff).ram(); //user RAM + map(0x4800, 0x6fff).ram(); //expansion RAM + map(0x7000, 0x71ff).ram().mirror(0x0600).share("lcd_data"); + map(0x7800, 0x7bff).ram().region("maincpu", 0x7800).mirror(0x0400); + map(0xa000, 0xbfff).rom(); //expansion ROM + map(0xc000, 0xffff).rom(); //system ROM +} + +void pc1500_state::pc1500_mem_io(address_map &map) +{ + map.unmap_value_high(); + map(0xf000, 0xf00f).rw("lh5810", FUNC(lh5810_device::data_r), FUNC(lh5810_device::data_w)); +} READ8_MEMBER( pc1500_state::pc1500_kb_r ) { diff --git a/src/mame/drivers/pc1512.cpp b/src/mame/drivers/pc1512.cpp index d0b6342e373..49382da6000 100644 --- a/src/mame/drivers/pc1512.cpp +++ b/src/mame/drivers/pc1512.cpp @@ -607,68 +607,72 @@ READ8_MEMBER( pc1640_state::io_r ) // ADDRESS_MAP( pc1512_mem ) //------------------------------------------------- -ADDRESS_MAP_START(pc1512_state::pc1512_mem) - AM_RANGE(0x00000, 0x9ffff) AM_RAM - AM_RANGE(0xb8000, 0xbbfff) AM_READWRITE8(video_ram_r, video_ram_w, 0xffff) - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0) -ADDRESS_MAP_END +void pc1512_state::pc1512_mem(address_map &map) +{ + map(0x00000, 0x9ffff).ram(); + map(0xb8000, 0xbbfff).rw(this, FUNC(pc1512_state::video_ram_r), FUNC(pc1512_state::video_ram_w)); + map(0xfc000, 0xfffff).rom().region(I8086_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( pc1512_io ) //------------------------------------------------- -ADDRESS_MAP_START(pc1512_state::pc1512_io) +void pc1512_state::pc1512_io(address_map &map) +{ // [RH] 29 Aug 2016: I can find no evidence to indicate that Amstrad had only 10 I/O lines, as the // schematic calls for a stock 8086 and the I/O and data lines are multiplexed onto the same bus, // plus address lines 20-10 are towards the middle of a standard ISA slot. If it turns out that this // is not in fact accurate to hardware, please add this back in. // ADDRESS_MAP_GLOBAL_MASK(0x3ff) - AM_RANGE(0x000, 0x00f) AM_DEVREADWRITE8(I8237A5_TAG, am9517a_device, read, write, 0xffff) - AM_RANGE(0x020, 0x021) AM_DEVREADWRITE8(I8259A2_TAG, pic8259_device, read, write, 0xffff) - AM_RANGE(0x040, 0x043) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0xffff) - AM_RANGE(0x060, 0x06f) AM_READWRITE8(system_r, system_w, 0xffff) - AM_RANGE(0x070, 0x071) AM_MIRROR(0x02) AM_DEVREADWRITE8(MC146818_TAG, mc146818_device, read, write, 0xffff) - AM_RANGE(0x078, 0x07f) AM_READWRITE8(mouse_r, mouse_w, 0xffff) - AM_RANGE(0x080, 0x083) AM_WRITE8(dma_page_w, 0xffff) - AM_RANGE(0x0a0, 0x0a1) AM_WRITE8(nmi_mask_w, 0xff00) - AM_RANGE(0x378, 0x37b) AM_READWRITE8(printer_r, printer_w, 0xffff) - AM_RANGE(0x3d0, 0x3df) AM_READWRITE8(vdu_r, vdu_w, 0xffff) - AM_RANGE(0x3f0, 0x3f7) AM_DEVICE8(PC_FDC_XT_TAG, pc_fdc_xt_device, map, 0xffff) - AM_RANGE(0x3f8, 0x3ff) AM_DEVREADWRITE8(INS8250_TAG, ins8250_device, ins8250_r, ins8250_w, 0xffff) -ADDRESS_MAP_END + map(0x000, 0x00f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x020, 0x021).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x040, 0x043).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x060, 0x06f).rw(this, FUNC(pc1512_state::system_r), FUNC(pc1512_state::system_w)); + map(0x070, 0x071).mirror(0x02).rw(m_rtc, FUNC(mc146818_device::read), FUNC(mc146818_device::write)); + map(0x078, 0x07f).rw(this, FUNC(pc1512_state::mouse_r), FUNC(pc1512_state::mouse_w)); + map(0x080, 0x083).w(this, FUNC(pc1512_state::dma_page_w)); + map(0x0a1, 0x0a1).w(this, FUNC(pc1512_state::nmi_mask_w)); + map(0x378, 0x37b).rw(this, FUNC(pc1512_state::printer_r), FUNC(pc1512_state::printer_w)); + map(0x3d0, 0x3df).rw(this, FUNC(pc1512_state::vdu_r), FUNC(pc1512_state::vdu_w)); + map(0x3f0, 0x3f7).m(m_fdc, FUNC(pc_fdc_xt_device::map)); + map(0x3f8, 0x3ff).rw(m_uart, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); +} //------------------------------------------------- // ADDRESS_MAP( pc1640_mem ) //------------------------------------------------- -ADDRESS_MAP_START(pc1640_state::pc1640_mem) - AM_RANGE(0x00000, 0x9ffff) AM_RAM - AM_RANGE(0xf0000, 0xf3fff) AM_MIRROR(0xc000) AM_ROM AM_REGION(I8086_TAG, 0) -ADDRESS_MAP_END +void pc1640_state::pc1640_mem(address_map &map) +{ + map(0x00000, 0x9ffff).ram(); + map(0xf0000, 0xf3fff).mirror(0xc000).rom().region(I8086_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( pc1640_io ) //------------------------------------------------- -ADDRESS_MAP_START(pc1640_state::pc1640_io) - AM_RANGE(0x0000, 0xffff) AM_READ8(io_r, 0xffff) - - AM_RANGE(0x000, 0x00f) AM_DEVWRITE8(I8237A5_TAG, am9517a_device, write, 0xffff) - AM_RANGE(0x020, 0x021) AM_DEVWRITE8(I8259A2_TAG, pic8259_device, write, 0xffff) - AM_RANGE(0x040, 0x043) AM_DEVWRITE8(I8253_TAG, pit8253_device, write, 0xffff) - AM_RANGE(0x060, 0x06f) AM_WRITE8(system_w, 0xffff) - AM_RANGE(0x070, 0x071) AM_MIRROR(0x02) AM_DEVWRITE8(MC146818_TAG, mc146818_device, write, 0xffff) - AM_RANGE(0x078, 0x07f) AM_WRITE8(mouse_w, 0xffff) - AM_RANGE(0x080, 0x083) AM_WRITE8(dma_page_w, 0xffff) - AM_RANGE(0x0a0, 0x0a1) AM_WRITE8(nmi_mask_w, 0xff00) - AM_RANGE(0x378, 0x37b) AM_WRITE8(printer_w, 0xffff) - AM_RANGE(0x3f2, 0x3f3) AM_DEVWRITE8(PC_FDC_XT_TAG, pc_fdc_xt_device, dor_w, 0x00ff) - AM_RANGE(0x3f4, 0x3f5) AM_DEVWRITE8(PC_FDC_XT_TAG ":upd765", upd765_family_device, fifo_w, 0xff00) - AM_RANGE(0x3f8, 0x3ff) AM_DEVWRITE8(INS8250_TAG, ins8250_device, ins8250_w, 0xffff) -ADDRESS_MAP_END +void pc1640_state::pc1640_io(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(pc1640_state::io_r)); + + map(0x000, 0x00f).w(m_dmac, FUNC(am9517a_device::write)); + map(0x020, 0x021).w(m_pic, FUNC(pic8259_device::write)); + map(0x040, 0x043).w(m_pit, FUNC(pit8253_device::write)); + map(0x060, 0x06f).w(this, FUNC(pc1640_state::system_w)); + map(0x070, 0x071).mirror(0x02).w(m_rtc, FUNC(mc146818_device::write)); + map(0x078, 0x07f).w(this, FUNC(pc1640_state::mouse_w)); + map(0x080, 0x083).w(this, FUNC(pc1640_state::dma_page_w)); + map(0x0a1, 0x0a1).w(this, FUNC(pc1640_state::nmi_mask_w)); + map(0x378, 0x37b).w(this, FUNC(pc1640_state::printer_w)); + map(0x3f2, 0x3f2).w(m_fdc, FUNC(pc_fdc_xt_device::dor_w)); + map(0x3f5, 0x3f5).w(PC_FDC_XT_TAG ":upd765", FUNC(upd765_family_device::fifo_w)); + map(0x3f8, 0x3ff).w(m_uart, FUNC(ins8250_device::ins8250_w)); +} diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp index 9b2f205092a..000b4bd8d29 100644 --- a/src/mame/drivers/pc2000.cpp +++ b/src/mame/drivers/pc2000.cpp @@ -202,24 +202,26 @@ WRITE8_MEMBER( pc2000_state::beep_w ) m_beep_state = data; } -ADDRESS_MAP_START(pc2000_state::pc2000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank0") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x59 0x45, if it succeeds a jump at 0x8004 occurs - AM_RANGE(0xc000, 0xdfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc2000_state::pc2000_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(rombank0_w) - AM_RANGE(0x01, 0x01) AM_WRITE(rombank1_w) - AM_RANGE(0x03, 0x03) AM_WRITE(rombank2_w) - AM_RANGE(0x0a, 0x0b) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) - AM_RANGE(0x10, 0x11) AM_READWRITE(key_matrix_r, key_matrix_w) - AM_RANGE(0x12, 0x12) AM_READWRITE(beep_r, beep_w) -ADDRESS_MAP_END +void pc2000_state::pc2000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankr("bank0"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xbfff).bankr("bank2"); //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x59 0x45, if it succeeds a jump at 0x8004 occurs + map(0xc000, 0xdfff).ram(); +} + +void pc2000_state::pc2000_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(pc2000_state::rombank0_w)); + map(0x01, 0x01).w(this, FUNC(pc2000_state::rombank1_w)); + map(0x03, 0x03).w(this, FUNC(pc2000_state::rombank2_w)); + map(0x0a, 0x0b).rw(m_lcdc, FUNC(hd44780_device::read), FUNC(hd44780_device::write)); + map(0x10, 0x11).rw(this, FUNC(pc2000_state::key_matrix_r), FUNC(pc2000_state::key_matrix_w)); + map(0x12, 0x12).rw(this, FUNC(pc2000_state::beep_r), FUNC(pc2000_state::beep_w)); +} void gl3000s_state::machine_start() @@ -330,15 +332,16 @@ SED1520_UPDATE_CB(gl3000s_state::screen_update_left) } -ADDRESS_MAP_START(gl3000s_state::gl3000s_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_WRITE(rombank1_w) - AM_RANGE(0x03, 0x03) AM_WRITE(rombank2_w) - AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("sed1520_r", sed1520_device, read, write) - AM_RANGE(0x0a, 0x0b) AM_DEVREADWRITE("sed1520_l", sed1520_device, read, write) - AM_RANGE(0x10, 0x11) AM_READWRITE(key_matrix_r, key_matrix_w) -ADDRESS_MAP_END +void gl3000s_state::gl3000s_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x01, 0x01).w(this, FUNC(gl3000s_state::rombank1_w)); + map(0x03, 0x03).w(this, FUNC(gl3000s_state::rombank2_w)); + map(0x08, 0x09).rw(m_lcdc_r, FUNC(sed1520_device::read), FUNC(sed1520_device::write)); + map(0x0a, 0x0b).rw(m_lcdc_l, FUNC(sed1520_device::read), FUNC(sed1520_device::write)); + map(0x10, 0x11).rw(this, FUNC(gl3000s_state::key_matrix_r), FUNC(gl3000s_state::key_matrix_w)); +} READ8_MEMBER( pc1000_state::kb_r ) { @@ -395,19 +398,21 @@ HD44780_PIXEL_UPDATE(pc1000_state::pc1000_pixel_update) } } -ADDRESS_MAP_START(pc1000_state::pc1000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("bios", 0x00000) - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_DEVREAD("cartslot", generic_slot_device, read_rom) //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x33, if it succeeds a jump at 0x8010 occurs - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc1000_state::pc1000_io) - AM_RANGE(0x0000, 0x01ff) AM_READ(kb_r) - AM_RANGE(0x4000, 0x4000) AM_MIRROR(0xfe) AM_READWRITE(lcdc_control_r, lcdc_control_w) - AM_RANGE(0x4100, 0x4100) AM_MIRROR(0xfe) AM_READWRITE(lcdc_data_r, lcdc_data_w) -ADDRESS_MAP_END +void pc1000_state::pc1000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom().region("bios", 0x00000); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0xbfff).r(m_cart, FUNC(generic_slot_device::read_rom)); //0x8000 - 0xbfff tests a cartridge, header is 0x55 0xaa 0x33, if it succeeds a jump at 0x8010 occurs + map(0xc000, 0xffff).bankr("bank1"); +} + +void pc1000_state::pc1000_io(address_map &map) +{ + map(0x0000, 0x01ff).r(this, FUNC(pc1000_state::kb_r)); + map(0x4000, 0x4000).mirror(0xfe).rw(this, FUNC(pc1000_state::lcdc_control_r), FUNC(pc1000_state::lcdc_control_w)); + map(0x4100, 0x4100).mirror(0xfe).rw(this, FUNC(pc1000_state::lcdc_data_r), FUNC(pc1000_state::lcdc_data_w)); +} /* Input ports */ static INPUT_PORTS_START( pc2000 ) diff --git a/src/mame/drivers/pc4.cpp b/src/mame/drivers/pc4.cpp index 387550ce755..d820ebb7c4e 100644 --- a/src/mame/drivers/pc4.cpp +++ b/src/mame/drivers/pc4.cpp @@ -61,27 +61,29 @@ WRITE8_MEMBER( pc4_state::beep_w ) m_beep->set_state(data&0x40); } -ADDRESS_MAP_START(pc4_state::pc4_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc4_state::pc4_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE("rtc", rp5c01_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_WRITE(beep_w) - AM_RANGE(0x1fff, 0x1fff) AM_WRITE(bank_w) - - AM_RANGE(0x3000, 0x3000) AM_WRITE(lcd_control_w) - AM_RANGE(0x3001, 0x3001) AM_WRITE(lcd_data_w) - AM_RANGE(0x3002, 0x3002) AM_READ(lcd_control_r) - AM_RANGE(0x3003, 0x3003) AM_READ(lcd_data_r) - AM_RANGE(0x3005, 0x3005) AM_WRITE(lcd_offset_w) +void pc4_state::pc4_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).ram(); +} + +void pc4_state::pc4_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x000f).rw("rtc", FUNC(rp5c01_device::read), FUNC(rp5c01_device::write)); + map(0x1000, 0x1000).w(this, FUNC(pc4_state::beep_w)); + map(0x1fff, 0x1fff).w(this, FUNC(pc4_state::bank_w)); + + map(0x3000, 0x3000).w(this, FUNC(pc4_state::lcd_control_w)); + map(0x3001, 0x3001).w(this, FUNC(pc4_state::lcd_data_w)); + map(0x3002, 0x3002).r(this, FUNC(pc4_state::lcd_control_r)); + map(0x3003, 0x3003).r(this, FUNC(pc4_state::lcd_data_r)); + map(0x3005, 0x3005).w(this, FUNC(pc4_state::lcd_offset_w)); //keyboard read, offset used as matrix - AM_RANGE(0x5000, 0x50ff) AM_READ(kb_r) -ADDRESS_MAP_END + map(0x5000, 0x50ff).r(this, FUNC(pc4_state::kb_r)); +} static INPUT_PORTS_START( pc4 ) PORT_START("LINE0") diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp index 5bc9a0af231..58041d7fe55 100644 --- a/src/mame/drivers/pc6001.cpp +++ b/src/mame/drivers/pc6001.cpp @@ -227,27 +227,29 @@ WRITE8_MEMBER(pc6001_state::nec_ppi8255_w) m_ppi->write(space,offset,data); } -ADDRESS_MAP_START(pc6001_state::pc6001_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITENOP +void pc6001_state::pc6001_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom().nopw(); // AM_RANGE(0x4000, 0x5fff) // mapped by the cartslot - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc6001_state::pc6001_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_READWRITE(nec_ppi8255_r, nec_ppi8255_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_WRITENOP - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_WRITE(system_latch_w) - AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_NOP // disk device -ADDRESS_MAP_END + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).ram().share("ram"); +} + +void pc6001_state::pc6001_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x90, 0x93).mirror(0x0c).rw(this, FUNC(pc6001_state::nec_ppi8255_r), FUNC(pc6001_state::nec_ppi8255_w)); + map(0xa0, 0xa0).mirror(0x0c).w("ay8910", FUNC(ay8910_device::address_w)); + map(0xa1, 0xa1).mirror(0x0c).w("ay8910", FUNC(ay8910_device::data_w)); + map(0xa2, 0xa2).mirror(0x0c).r("ay8910", FUNC(ay8910_device::data_r)); + map(0xa3, 0xa3).mirror(0x0c).nopw(); + map(0xb0, 0xb0).mirror(0x0f).w(this, FUNC(pc6001_state::system_latch_w)); + map(0xd0, 0xd3).mirror(0x0c).noprw(); // disk device +} /***************************************** * @@ -677,50 +679,52 @@ READ8_MEMBER(pc6001mk2_state::mk2_bank_w0_r) return m_bank_w; } -ADDRESS_MAP_START(pc6001mk2_state::pc6001mk2_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") AM_WRITE(mk2_work_ram0_w) - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") AM_WRITE(mk2_work_ram1_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank3") AM_WRITE(mk2_work_ram2_w) - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank4") AM_WRITE(mk2_work_ram3_w) - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank5") AM_WRITE(mk2_work_ram4_w) - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank6") AM_WRITE(mk2_work_ram5_w) - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank7") AM_WRITE(mk2_work_ram6_w) - AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank8") AM_WRITE(mk2_work_ram7_w) -ADDRESS_MAP_END +void pc6001mk2_state::pc6001mk2_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankr("bank1").w(this, FUNC(pc6001mk2_state::mk2_work_ram0_w)); + map(0x2000, 0x3fff).bankr("bank2").w(this, FUNC(pc6001mk2_state::mk2_work_ram1_w)); + map(0x4000, 0x5fff).bankr("bank3").w(this, FUNC(pc6001mk2_state::mk2_work_ram2_w)); + map(0x6000, 0x7fff).bankr("bank4").w(this, FUNC(pc6001mk2_state::mk2_work_ram3_w)); + map(0x8000, 0x9fff).bankr("bank5").w(this, FUNC(pc6001mk2_state::mk2_work_ram4_w)); + map(0xa000, 0xbfff).bankr("bank6").w(this, FUNC(pc6001mk2_state::mk2_work_ram5_w)); + map(0xc000, 0xdfff).bankr("bank7").w(this, FUNC(pc6001mk2_state::mk2_work_ram6_w)); + map(0xe000, 0xffff).bankr("bank8").w(this, FUNC(pc6001mk2_state::mk2_work_ram7_w)); +} -ADDRESS_MAP_START(pc6001mk2_state::pc6001mk2_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) +void pc6001mk2_state::pc6001mk2_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_READWRITE(nec_ppi8255_r, necmk2_ppi8255_w) + map(0x90, 0x93).mirror(0x0c).rw(this, FUNC(pc6001mk2_state::nec_ppi8255_r), FUNC(pc6001mk2_state::necmk2_ppi8255_w)); - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_NOP + map(0xa0, 0xa0).mirror(0x0c).w("ay8910", FUNC(ay8910_device::address_w)); + map(0xa1, 0xa1).mirror(0x0c).w("ay8910", FUNC(ay8910_device::data_w)); + map(0xa2, 0xa2).mirror(0x0c).r("ay8910", FUNC(ay8910_device::data_r)); + map(0xa3, 0xa3).mirror(0x0c).noprw(); - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_WRITE(mk2_system_latch_w) + map(0xb0, 0xb0).mirror(0x0f).w(this, FUNC(pc6001mk2_state::mk2_system_latch_w)); - AM_RANGE(0xc0, 0xc0) AM_WRITE(mk2_col_bank_w) - AM_RANGE(0xc1, 0xc1) AM_WRITE(mk2_vram_bank_w) - AM_RANGE(0xc2, 0xc2) AM_WRITE(mk2_opt_bank_w) + map(0xc0, 0xc0).w(this, FUNC(pc6001mk2_state::mk2_col_bank_w)); + map(0xc1, 0xc1).w(this, FUNC(pc6001mk2_state::mk2_vram_bank_w)); + map(0xc2, 0xc2).w(this, FUNC(pc6001mk2_state::mk2_opt_bank_w)); - AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_NOP // disk device + map(0xd0, 0xd3).mirror(0x0c).noprw(); // disk device - AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("upd7752", upd7752_device, read, write) + map(0xe0, 0xe3).mirror(0x0c).rw("upd7752", FUNC(upd7752_device::read), FUNC(upd7752_device::write)); - AM_RANGE(0xf0, 0xf0) AM_READWRITE(mk2_bank_r0_r, mk2_bank_r0_w) - AM_RANGE(0xf1, 0xf1) AM_READWRITE(mk2_bank_r1_r, mk2_bank_r1_w) - AM_RANGE(0xf2, 0xf2) AM_READWRITE(mk2_bank_w0_r, mk2_bank_w0_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE(mk2_0xf3_w) + map(0xf0, 0xf0).rw(this, FUNC(pc6001mk2_state::mk2_bank_r0_r), FUNC(pc6001mk2_state::mk2_bank_r0_w)); + map(0xf1, 0xf1).rw(this, FUNC(pc6001mk2_state::mk2_bank_r1_r), FUNC(pc6001mk2_state::mk2_bank_r1_w)); + map(0xf2, 0xf2).rw(this, FUNC(pc6001mk2_state::mk2_bank_w0_r), FUNC(pc6001mk2_state::mk2_bank_w0_w)); + map(0xf3, 0xf3).w(this, FUNC(pc6001mk2_state::mk2_0xf3_w)); // AM_RANGE(0xf4 // AM_RANGE(0xf5 - AM_RANGE(0xf6, 0xf6) AM_WRITE(mk2_timer_adj_w) - AM_RANGE(0xf7, 0xf7) AM_WRITE(mk2_timer_irqv_w) -ADDRESS_MAP_END + map(0xf6, 0xf6).w(this, FUNC(pc6001mk2_state::mk2_timer_adj_w)); + map(0xf7, 0xf7).w(this, FUNC(pc6001mk2_state::mk2_timer_irqv_w)); +} /***************************************** * @@ -739,18 +743,19 @@ WRITE8_MEMBER(pc6601_state::fdc_w) { } -ADDRESS_MAP_START(pc6601_state::pc6601_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_IMPORT_FROM( pc6001mk2_io ) +void pc6601_state::pc6601_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + pc6001mk2_io(map); // these are disk related // AM_RANGE(0xb1 // AM_RANGE(0xb2 // AM_RANGE(0xb3 - AM_RANGE(0xd0, 0xdf) AM_READWRITE(fdc_r, fdc_w) -ADDRESS_MAP_END + map(0xd0, 0xdf).rw(this, FUNC(pc6601_state::fdc_r), FUNC(pc6601_state::fdc_w)); +} /***************************************** * @@ -908,63 +913,65 @@ READ8_MEMBER(pc6001sr_state::hw_rev_r) return 0; } -ADDRESS_MAP_START(pc6001sr_state::pc6001sr_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") AM_WRITE(sr_work_ram0_w) - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank2") AM_WRITE(sr_work_ram1_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank3") AM_WRITE(sr_work_ram2_w) - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank4") AM_WRITE(sr_work_ram3_w) - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank5") AM_WRITE(sr_work_ram4_w) - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank6") AM_WRITE(sr_work_ram5_w) - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank7") AM_WRITE(sr_work_ram6_w) - AM_RANGE(0xe000, 0xffff) AM_ROMBANK("bank8") AM_WRITE(sr_work_ram7_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc6001sr_state::pc6001sr_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void pc6001sr_state::pc6001sr_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankr("bank1").w(this, FUNC(pc6001sr_state::sr_work_ram0_w)); + map(0x2000, 0x3fff).bankr("bank2").w(this, FUNC(pc6001sr_state::sr_work_ram1_w)); + map(0x4000, 0x5fff).bankr("bank3").w(this, FUNC(pc6001sr_state::sr_work_ram2_w)); + map(0x6000, 0x7fff).bankr("bank4").w(this, FUNC(pc6001sr_state::sr_work_ram3_w)); + map(0x8000, 0x9fff).bankr("bank5").w(this, FUNC(pc6001sr_state::sr_work_ram4_w)); + map(0xa000, 0xbfff).bankr("bank6").w(this, FUNC(pc6001sr_state::sr_work_ram5_w)); + map(0xc000, 0xdfff).bankr("bank7").w(this, FUNC(pc6001sr_state::sr_work_ram6_w)); + map(0xe000, 0xffff).bankr("bank8").w(this, FUNC(pc6001sr_state::sr_work_ram7_w)); +} + +void pc6001sr_state::pc6001sr_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // 0x40-0x43 palette indexes - AM_RANGE(0x60, 0x67) AM_READWRITE(sr_bank_rn_r, sr_bank_rn_w) - AM_RANGE(0x68, 0x6f) AM_READWRITE(sr_bank_wn_r, sr_bank_wn_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) + map(0x60, 0x67).rw(this, FUNC(pc6001sr_state::sr_bank_rn_r), FUNC(pc6001sr_state::sr_bank_rn_w)); + map(0x68, 0x6f).rw(this, FUNC(pc6001sr_state::sr_bank_wn_r), FUNC(pc6001sr_state::sr_bank_wn_w)); + map(0x80, 0x80).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x81, 0x81).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_READWRITE(nec_ppi8255_r, necsr_ppi8255_w) + map(0x90, 0x93).mirror(0x0c).rw(this, FUNC(pc6001sr_state::nec_ppi8255_r), FUNC(pc6001sr_state::necsr_ppi8255_w)); - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x0c) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0xa2, 0xa2) AM_MIRROR(0x0c) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0xa3, 0xa3) AM_MIRROR(0x0c) AM_NOP + map(0xa0, 0xa0).mirror(0x0c).w("ay8910", FUNC(ay8910_device::address_w)); + map(0xa1, 0xa1).mirror(0x0c).w("ay8910", FUNC(ay8910_device::data_w)); + map(0xa2, 0xa2).mirror(0x0c).r("ay8910", FUNC(ay8910_device::data_r)); + map(0xa3, 0xa3).mirror(0x0c).noprw(); - AM_RANGE(0xb0, 0xb0) AM_WRITE(sr_system_latch_w) + map(0xb0, 0xb0).w(this, FUNC(pc6001sr_state::sr_system_latch_w)); /* these are disk related */ // AM_RANGE(0xb1 - AM_RANGE(0xb2, 0xb2) AM_READ(hw_rev_r) + map(0xb2, 0xb2).r(this, FUNC(pc6001sr_state::hw_rev_r)); // AM_RANGE(0xb3 - AM_RANGE(0xb8, 0xbf) AM_RAM AM_SHARE("irq_vectors") + map(0xb8, 0xbf).ram().share("irq_vectors"); // AM_RANGE(0xc0, 0xc0) AM_WRITE(mk2_col_bank_w) // AM_RANGE(0xc1, 0xc1) AM_WRITE(mk2_vram_bank_w) // AM_RANGE(0xc2, 0xc2) AM_WRITE(opt_bank_w) - AM_RANGE(0xc8, 0xc8) AM_WRITE(sr_mode_w) - AM_RANGE(0xc9, 0xc9) AM_WRITE(sr_vram_bank_w) - AM_RANGE(0xce, 0xce) AM_WRITE(sr_bitmap_yoffs_w) - AM_RANGE(0xcf, 0xcf) AM_WRITE(sr_bitmap_xoffs_w) + map(0xc8, 0xc8).w(this, FUNC(pc6001sr_state::sr_mode_w)); + map(0xc9, 0xc9).w(this, FUNC(pc6001sr_state::sr_vram_bank_w)); + map(0xce, 0xce).w(this, FUNC(pc6001sr_state::sr_bitmap_yoffs_w)); + map(0xcf, 0xcf).w(this, FUNC(pc6001sr_state::sr_bitmap_xoffs_w)); - AM_RANGE(0xd0, 0xdf) AM_READWRITE(fdc_r,fdc_w) // disk device + map(0xd0, 0xdf).rw(this, FUNC(pc6001sr_state::fdc_r), FUNC(pc6001sr_state::fdc_w)); // disk device - AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("upd7752", upd7752_device, read, write) + map(0xe0, 0xe3).mirror(0x0c).rw("upd7752", FUNC(upd7752_device::read), FUNC(upd7752_device::write)); // AM_RANGE(0xf0, 0xf0) AM_READWRITE(mk2_bank_r0_r, mk2_bank_r0_w) // AM_RANGE(0xf1, 0xf1) AM_READWRITE(mk2_bank_r1_r, mk2_bank_r1_w) // AM_RANGE(0xf2, 0xf2) AM_READWRITE(mk2_bank_w0_r, mk2_bank_w0_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE(mk2_0xf3_w) + map(0xf3, 0xf3).w(this, FUNC(pc6001sr_state::mk2_0xf3_w)); // AM_RANGE(0xf4 // AM_RANGE(0xf5 - AM_RANGE(0xf6, 0xf6) AM_WRITE(mk2_timer_adj_w) - AM_RANGE(0xf7, 0xf7) AM_WRITE(mk2_timer_irqv_w) -ADDRESS_MAP_END + map(0xf6, 0xf6).w(this, FUNC(pc6001sr_state::mk2_timer_adj_w)); + map(0xf7, 0xf7).w(this, FUNC(pc6001sr_state::mk2_timer_irqv_w)); +} /* Input ports */ static INPUT_PORTS_START( pc6001 ) diff --git a/src/mame/drivers/pc8001.cpp b/src/mame/drivers/pc8001.cpp index 6aa6dbd13cf..327817557f8 100644 --- a/src/mame/drivers/pc8001.cpp +++ b/src/mame/drivers/pc8001.cpp @@ -166,32 +166,34 @@ WRITE8_MEMBER( pc8001_state::port40_w ) /* Memory Maps */ -ADDRESS_MAP_START(pc8001_state::pc8001_mem) - AM_RANGE(0x0000, 0x5fff) AM_RAMBANK("bank1") - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc8001_state::pc8001_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_READ_PORT("Y0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("Y1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("Y2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("Y3") - AM_RANGE(0x04, 0x04) AM_READ_PORT("Y4") - AM_RANGE(0x05, 0x05) AM_READ_PORT("Y5") - AM_RANGE(0x06, 0x06) AM_READ_PORT("Y6") - AM_RANGE(0x07, 0x07) AM_READ_PORT("Y7") - AM_RANGE(0x08, 0x08) AM_READ_PORT("Y8") - AM_RANGE(0x09, 0x09) AM_READ_PORT("Y9") - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_WRITE(port10_w) - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x21, 0x21) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(port30_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READWRITE(port40_r, port40_w) - AM_RANGE(0x50, 0x51) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write) - AM_RANGE(0x60, 0x68) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write) +void pc8001_state::pc8001_mem(address_map &map) +{ + map(0x0000, 0x5fff).bankrw("bank1"); + map(0x6000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xffff).bankrw("bank3"); +} + +void pc8001_state::pc8001_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x00).portr("Y0"); + map(0x01, 0x01).portr("Y1"); + map(0x02, 0x02).portr("Y2"); + map(0x03, 0x03).portr("Y3"); + map(0x04, 0x04).portr("Y4"); + map(0x05, 0x05).portr("Y5"); + map(0x06, 0x06).portr("Y6"); + map(0x07, 0x07).portr("Y7"); + map(0x08, 0x08).portr("Y8"); + map(0x09, 0x09).portr("Y9"); + map(0x10, 0x10).mirror(0x0f).w(this, FUNC(pc8001_state::port10_w)); + map(0x20, 0x20).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x21, 0x21).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x30, 0x30).mirror(0x0f).w(this, FUNC(pc8001_state::port30_w)); + map(0x40, 0x40).mirror(0x0f).rw(this, FUNC(pc8001_state::port40_r), FUNC(pc8001_state::port40_w)); + map(0x50, 0x51).rw(m_crtc, FUNC(upd3301_device::read), FUNC(upd3301_device::write)); + map(0x60, 0x68).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write)); // AM_RANGE(0x70, 0x7f) unused // AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) AM_WRITE(pc8011_ext0_w) // AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(pc8011_ext1_w) @@ -216,20 +218,22 @@ ADDRESS_MAP_START(pc8001_state::pc8001_io) // AM_RANGE(0xe6, 0xe6) AM_WRITE(irq_mask_w) // AM_RANGE(0xe7, 0xe7) AM_WRITE(pc8012_memory_mode_w) // AM_RANGE(0xe8, 0xfb) unused - AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc8001mk2_state::pc8001mk2_mem) - AM_RANGE(0x0000, 0x5fff) AM_RAMBANK("bank1") - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc8001mk2_state::pc8001mk2_io) - AM_IMPORT_FROM(pc8001_io) - AM_RANGE(0x30, 0x30) AM_WRITE(port30_w) - AM_RANGE(0x31, 0x31) AM_WRITE(port31_w) + map(0xfc, 0xff).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void pc8001mk2_state::pc8001mk2_mem(address_map &map) +{ + map(0x0000, 0x5fff).bankrw("bank1"); + map(0x6000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void pc8001mk2_state::pc8001mk2_io(address_map &map) +{ + pc8001_io(map); + map(0x30, 0x30).w(this, FUNC(pc8001mk2_state::port30_w)); + map(0x31, 0x31).w(this, FUNC(pc8001mk2_state::port31_w)); // AM_RANGE(0x5c, 0x5c) AM_WRITE(gram_on_w) // AM_RANGE(0x5f, 0x5f) AM_WRITE(gram_off_w) // AM_RANGE(0xe8, 0xe8) kanji_address_lo_w, kanji_data_lo_r @@ -245,7 +249,7 @@ ADDRESS_MAP_START(pc8001mk2_state::pc8001mk2_io) // AM_RANGE(0xf9, 0xf9) DMA type 5 inch margin control // AM_RANGE(0xfa, 0xfa) DMA type 5 inch FDC status // AM_RANGE(0xfb, 0xfb) DMA type 5 inch FDC data register -ADDRESS_MAP_END +} /* Input Ports */ diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp index acf7765a391..00ac3813e60 100644 --- a/src/mame/drivers/pc8401a.cpp +++ b/src/mame/drivers/pc8401a.cpp @@ -331,18 +331,20 @@ WRITE8_MEMBER( pc8401a_state::port71_w ) /* Memory Maps */ -ADDRESS_MAP_START(pc8401a_state::pc8401a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank1") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xe7ff) AM_RAMBANK("bank4") - AM_RANGE(0xe800, 0xffff) AM_RAMBANK("bank5") -ADDRESS_MAP_END +void pc8401a_state::pc8401a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xe7ff).bankrw("bank4"); + map(0xe800, 0xffff).bankrw("bank5"); +} -ADDRESS_MAP_START(pc8401a_state::pc8401a_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void pc8401a_state::pc8401a_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} ADDRESS_MAP_START(pc8401a_state::pc8500_io) ADDRESS_MAP_UNMAP_HIGH diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp index 0be6674abad..183352fbd68 100644 --- a/src/mame/drivers/pc8801.cpp +++ b/src/mame/drivers/pc8801.cpp @@ -1166,9 +1166,10 @@ WRITE8_MEMBER(pc8801_state::pc8801_mem_w) } } -ADDRESS_MAP_START(pc8801_state::pc8801_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(pc8801_mem_r,pc8801_mem_w) -ADDRESS_MAP_END +void pc8801_state::pc8801_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(pc8801_state::pc8801_mem_r), FUNC(pc8801_state::pc8801_mem_w)); +} READ8_MEMBER(pc8801_state::pc8801_ctrl_r) { @@ -1767,79 +1768,80 @@ WRITE8_MEMBER(pc8801_state::pc8801_unk_w) printf("Write port 0x33\n"); } -ADDRESS_MAP_START(pc8801_state::pc8801_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_READ_PORT("KEY0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("KEY1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("KEY2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("KEY3") - AM_RANGE(0x04, 0x04) AM_READ_PORT("KEY4") - AM_RANGE(0x05, 0x05) AM_READ_PORT("KEY5") - AM_RANGE(0x06, 0x06) AM_READ_PORT("KEY6") - AM_RANGE(0x07, 0x07) AM_READ_PORT("KEY7") - AM_RANGE(0x08, 0x08) AM_READ_PORT("KEY8") - AM_RANGE(0x09, 0x09) AM_READ_PORT("KEY9") - AM_RANGE(0x0a, 0x0a) AM_READ_PORT("KEY10") - AM_RANGE(0x0b, 0x0b) AM_READ_PORT("KEY11") - AM_RANGE(0x0c, 0x0c) AM_READ_PORT("KEY12") - AM_RANGE(0x0d, 0x0d) AM_READ_PORT("KEY13") - AM_RANGE(0x0e, 0x0e) AM_READ_PORT("KEY14") - AM_RANGE(0x0f, 0x0f) AM_READ_PORT("KEY15") - AM_RANGE(0x00, 0x02) AM_WRITE(pc8801_pcg8100_w) - AM_RANGE(0x10, 0x10) AM_WRITE(pc8801_rtc_w) - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) /* RS-232C and CMT */ - AM_RANGE(0x21, 0x21) AM_MIRROR(0x0e) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x30, 0x30) AM_READ_PORT("DSW1") AM_WRITE(pc8801_txt_cmt_ctrl_w) - AM_RANGE(0x31, 0x31) AM_READ_PORT("DSW2") AM_WRITE(pc8801_gfx_ctrl_w) - AM_RANGE(0x32, 0x32) AM_READWRITE(pc8801_misc_ctrl_r, pc8801_misc_ctrl_w) - AM_RANGE(0x33, 0x33) AM_READWRITE(pc8801_unk_r,pc8801_unk_w) - AM_RANGE(0x34, 0x34) AM_WRITE(pc8801_alu_ctrl1_w) - AM_RANGE(0x35, 0x35) AM_WRITE(pc8801_alu_ctrl2_w) - AM_RANGE(0x40, 0x40) AM_READWRITE(pc8801_ctrl_r, pc8801_ctrl_w) - AM_RANGE(0x44, 0x47) AM_READWRITE(pc8801_sound_board_r,pc8801_sound_board_w) /* OPN / OPNA ports */ - AM_RANGE(0x50, 0x50) AM_READWRITE(pc8801_crtc_param_r, pc88_crtc_param_w) - AM_RANGE(0x51, 0x51) AM_READWRITE(pc8801_crtc_status_r, pc88_crtc_cmd_w) - AM_RANGE(0x52, 0x52) AM_WRITE(pc8801_bgpal_w) - AM_RANGE(0x53, 0x53) AM_WRITE(pc8801_layer_masking_w) - AM_RANGE(0x54, 0x5b) AM_WRITE(pc8801_palram_w) - AM_RANGE(0x5c, 0x5c) AM_READ(pc8801_vram_select_r) - AM_RANGE(0x5c, 0x5f) AM_WRITE(pc8801_vram_select_w) - AM_RANGE(0x60, 0x67) AM_READWRITE(pc8801_dmac_r,pc8801_dmac_w) - AM_RANGE(0x68, 0x68) AM_READWRITE(pc8801_dmac_status_r,pc8801_dmac_mode_w) - AM_RANGE(0x6e, 0x6e) AM_READ(pc8801_cpuclock_r) - AM_RANGE(0x6f, 0x6f) AM_READWRITE(pc8801_baudrate_r,pc8801_baudrate_w) - AM_RANGE(0x70, 0x70) AM_READWRITE(pc8801_window_bank_r, pc8801_window_bank_w) - AM_RANGE(0x71, 0x71) AM_READWRITE(pc8801_ext_rom_bank_r, pc8801_ext_rom_bank_w) - AM_RANGE(0x78, 0x78) AM_WRITE(pc8801_window_bank_inc_w) - AM_RANGE(0x90, 0x9f) AM_READWRITE(pc8801_cdrom_r,pc8801_cdrom_w) +void pc8801_state::pc8801_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x00).portr("KEY0"); + map(0x01, 0x01).portr("KEY1"); + map(0x02, 0x02).portr("KEY2"); + map(0x03, 0x03).portr("KEY3"); + map(0x04, 0x04).portr("KEY4"); + map(0x05, 0x05).portr("KEY5"); + map(0x06, 0x06).portr("KEY6"); + map(0x07, 0x07).portr("KEY7"); + map(0x08, 0x08).portr("KEY8"); + map(0x09, 0x09).portr("KEY9"); + map(0x0a, 0x0a).portr("KEY10"); + map(0x0b, 0x0b).portr("KEY11"); + map(0x0c, 0x0c).portr("KEY12"); + map(0x0d, 0x0d).portr("KEY13"); + map(0x0e, 0x0e).portr("KEY14"); + map(0x0f, 0x0f).portr("KEY15"); + map(0x00, 0x02).w(this, FUNC(pc8801_state::pc8801_pcg8100_w)); + map(0x10, 0x10).w(this, FUNC(pc8801_state::pc8801_rtc_w)); + map(0x20, 0x20).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); /* RS-232C and CMT */ + map(0x21, 0x21).mirror(0x0e).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x30, 0x30).portr("DSW1").w(this, FUNC(pc8801_state::pc8801_txt_cmt_ctrl_w)); + map(0x31, 0x31).portr("DSW2").w(this, FUNC(pc8801_state::pc8801_gfx_ctrl_w)); + map(0x32, 0x32).rw(this, FUNC(pc8801_state::pc8801_misc_ctrl_r), FUNC(pc8801_state::pc8801_misc_ctrl_w)); + map(0x33, 0x33).rw(this, FUNC(pc8801_state::pc8801_unk_r), FUNC(pc8801_state::pc8801_unk_w)); + map(0x34, 0x34).w(this, FUNC(pc8801_state::pc8801_alu_ctrl1_w)); + map(0x35, 0x35).w(this, FUNC(pc8801_state::pc8801_alu_ctrl2_w)); + map(0x40, 0x40).rw(this, FUNC(pc8801_state::pc8801_ctrl_r), FUNC(pc8801_state::pc8801_ctrl_w)); + map(0x44, 0x47).rw(this, FUNC(pc8801_state::pc8801_sound_board_r), FUNC(pc8801_state::pc8801_sound_board_w)); /* OPN / OPNA ports */ + map(0x50, 0x50).rw(this, FUNC(pc8801_state::pc8801_crtc_param_r), FUNC(pc8801_state::pc88_crtc_param_w)); + map(0x51, 0x51).rw(this, FUNC(pc8801_state::pc8801_crtc_status_r), FUNC(pc8801_state::pc88_crtc_cmd_w)); + map(0x52, 0x52).w(this, FUNC(pc8801_state::pc8801_bgpal_w)); + map(0x53, 0x53).w(this, FUNC(pc8801_state::pc8801_layer_masking_w)); + map(0x54, 0x5b).w(this, FUNC(pc8801_state::pc8801_palram_w)); + map(0x5c, 0x5c).r(this, FUNC(pc8801_state::pc8801_vram_select_r)); + map(0x5c, 0x5f).w(this, FUNC(pc8801_state::pc8801_vram_select_w)); + map(0x60, 0x67).rw(this, FUNC(pc8801_state::pc8801_dmac_r), FUNC(pc8801_state::pc8801_dmac_w)); + map(0x68, 0x68).rw(this, FUNC(pc8801_state::pc8801_dmac_status_r), FUNC(pc8801_state::pc8801_dmac_mode_w)); + map(0x6e, 0x6e).r(this, FUNC(pc8801_state::pc8801_cpuclock_r)); + map(0x6f, 0x6f).rw(this, FUNC(pc8801_state::pc8801_baudrate_r), FUNC(pc8801_state::pc8801_baudrate_w)); + map(0x70, 0x70).rw(this, FUNC(pc8801_state::pc8801_window_bank_r), FUNC(pc8801_state::pc8801_window_bank_w)); + map(0x71, 0x71).rw(this, FUNC(pc8801_state::pc8801_ext_rom_bank_r), FUNC(pc8801_state::pc8801_ext_rom_bank_w)); + map(0x78, 0x78).w(this, FUNC(pc8801_state::pc8801_window_bank_inc_w)); + map(0x90, 0x9f).rw(this, FUNC(pc8801_state::pc8801_cdrom_r), FUNC(pc8801_state::pc8801_cdrom_w)); // AM_RANGE(0xa0, 0xa3) AM_NOP /* music & network */ - AM_RANGE(0xa8, 0xad) AM_READWRITE(pc8801_opna_r,pc8801_opna_w) /* second sound board */ + map(0xa8, 0xad).rw(this, FUNC(pc8801_state::pc8801_opna_r), FUNC(pc8801_state::pc8801_opna_w)); /* second sound board */ // AM_RANGE(0xb4, 0xb5) AM_NOP /* Video art board */ // AM_RANGE(0xc1, 0xc1) AM_NOP /* (unknown) */ // AM_RANGE(0xc2, 0xcf) AM_NOP /* music */ // AM_RANGE(0xd0, 0xd7) AM_NOP /* music & GP-IB */ // AM_RANGE(0xd8, 0xd8) AM_NOP /* GP-IB */ // AM_RANGE(0xdc, 0xdf) AM_NOP /* MODEM */ - AM_RANGE(0xe2, 0xe2) AM_READWRITE(pc8801_extram_mode_r,pc8801_extram_mode_w) /* expand RAM mode */ - AM_RANGE(0xe3, 0xe3) AM_READWRITE(pc8801_extram_bank_r,pc8801_extram_bank_w) /* expand RAM bank */ + map(0xe2, 0xe2).rw(this, FUNC(pc8801_state::pc8801_extram_mode_r), FUNC(pc8801_state::pc8801_extram_mode_w)); /* expand RAM mode */ + map(0xe3, 0xe3).rw(this, FUNC(pc8801_state::pc8801_extram_bank_r), FUNC(pc8801_state::pc8801_extram_bank_w)); /* expand RAM bank */ #ifdef USE_PROPER_I8214 - AM_RANGE(0xe4, 0xe4) AM_WRITE(i8214_irq_level_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(i8214_irq_mask_w) + map(0xe4, 0xe4).w(this, FUNC(pc8801_state::i8214_irq_level_w)); + map(0xe6, 0xe6).w(this, FUNC(pc8801_state::i8214_irq_mask_w)); #else - AM_RANGE(0xe4, 0xe4) AM_WRITE(pc8801_irq_level_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(pc8801_irq_mask_w) + map(0xe4, 0xe4).w(this, FUNC(pc8801_state::pc8801_irq_level_w)); + map(0xe6, 0xe6).w(this, FUNC(pc8801_state::pc8801_irq_mask_w)); #endif // AM_RANGE(0xe7, 0xe7) AM_NOP /* Arcus writes here, almost likely to be a mirror of above */ - AM_RANGE(0xe8, 0xeb) AM_READWRITE(pc8801_kanji_r, pc8801_kanji_w) - AM_RANGE(0xec, 0xef) AM_READWRITE(pc8801_kanji_lv2_r, pc8801_kanji_lv2_w) - AM_RANGE(0xf0, 0xf0) AM_WRITE(pc8801_dic_bank_w) - AM_RANGE(0xf1, 0xf1) AM_WRITE(pc8801_dic_ctrl_w) + map(0xe8, 0xeb).rw(this, FUNC(pc8801_state::pc8801_kanji_r), FUNC(pc8801_state::pc8801_kanji_w)); + map(0xec, 0xef).rw(this, FUNC(pc8801_state::pc8801_kanji_lv2_r), FUNC(pc8801_state::pc8801_kanji_lv2_w)); + map(0xf0, 0xf0).w(this, FUNC(pc8801_state::pc8801_dic_bank_w)); + map(0xf1, 0xf1).w(this, FUNC(pc8801_state::pc8801_dic_ctrl_w)); // AM_RANGE(0xf3, 0xf3) AM_NOP /* DMA floppy (unknown) */ // AM_RANGE(0xf4, 0xf7) AM_NOP /* DMA 5'floppy (may be not released) */ // AM_RANGE(0xf8, 0xfb) AM_NOP /* DMA 8'floppy (unknown) */ - AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_master", i8255_device, read, write) -ADDRESS_MAP_END + map(0xfc, 0xff).rw("d8255_master", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} READ8_MEMBER(pc8801_state::cpu_8255_c_r) { @@ -1870,10 +1872,11 @@ WRITE8_MEMBER(pc8801_state::fdc_8255_c_w) m_i8255_1_pc = data; } -ADDRESS_MAP_START(pc8801_state::pc8801fdc_mem) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_RAM -ADDRESS_MAP_END +void pc8801_state::pc8801fdc_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).ram(); +} TIMER_CALLBACK_MEMBER(pc8801_state::pc8801fd_upd765_tc_to_zero) { @@ -1913,15 +1916,16 @@ WRITE8_MEMBER(pc8801_state::fdc_drive_mode_w) machine().device<upd765a_device>("upd765")->set_rate(data & 0x20 ? 500000 : 250000); } -ADDRESS_MAP_START(pc8801_state::pc8801fdc_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_WRITE(fdc_irq_vector_w) // Interrupt Opcode Port - AM_RANGE(0xf4, 0xf4) AM_WRITE(fdc_drive_mode_w) // Drive mode, 2d, 2dd, 2hd - AM_RANGE(0xf7, 0xf7) AM_WRITENOP // printer port output - AM_RANGE(0xf8, 0xf8) AM_READWRITE(upd765_tc_r,upd765_mc_w) // (R) Terminal Count Port (W) Motor Control Port - AM_RANGE(0xfa, 0xfb) AM_DEVICE("upd765", upd765a_device, map ) - AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_slave", i8255_device, read, write) -ADDRESS_MAP_END +void pc8801_state::pc8801fdc_io(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf0).w(this, FUNC(pc8801_state::fdc_irq_vector_w)); // Interrupt Opcode Port + map(0xf4, 0xf4).w(this, FUNC(pc8801_state::fdc_drive_mode_w)); // Drive mode, 2d, 2dd, 2hd + map(0xf7, 0xf7).nopw(); // printer port output + map(0xf8, 0xf8).rw(this, FUNC(pc8801_state::upd765_tc_r), FUNC(pc8801_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port + map(0xfa, 0xfb).m("upd765", FUNC(upd765a_device::map)); + map(0xfc, 0xff).rw("d8255_slave", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp index a192520e40e..7cddd40f074 100644 --- a/src/mame/drivers/pc88va.cpp +++ b/src/mame/drivers/pc88va.cpp @@ -673,13 +673,14 @@ WRITE16_MEMBER(pc88va_state::sys_mem_w) } } -ADDRESS_MAP_START(pc88va_state::pc88va_map) - AM_RANGE(0x00000, 0x7ffff) AM_RAM +void pc88va_state::pc88va_map(address_map &map) +{ + map(0x00000, 0x7ffff).ram(); // AM_RANGE(0x80000, 0x9ffff) AM_RAM // EMM - AM_RANGE(0xa0000, 0xdffff) AM_READWRITE(sys_mem_r,sys_mem_w) - AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("rom00_bank") - AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("rom10_bank") -ADDRESS_MAP_END + map(0xa0000, 0xdffff).rw(this, FUNC(pc88va_state::sys_mem_r), FUNC(pc88va_state::sys_mem_w)); + map(0xe0000, 0xeffff).bankr("rom00_bank"); + map(0xf0000, 0xfffff).bankr("rom10_bank"); +} /* IDP = NEC uPD72022 */ READ8_MEMBER(pc88va_state::idp_status_r) @@ -1248,23 +1249,24 @@ READ8_MEMBER(pc88va_state::no_subfdc_r) } #endif -ADDRESS_MAP_START(pc88va_state::pc88va_io_map) - AM_RANGE(0x0000, 0x000f) AM_READ8(key_r,0xffff) // Keyboard ROW reading +void pc88va_state::pc88va_io_map(address_map &map) +{ + map(0x0000, 0x000f).r(this, FUNC(pc88va_state::key_r)); // Keyboard ROW reading // AM_RANGE(0x0010, 0x0010) Printer / Calendar Clock Interface - AM_RANGE(0x0020, 0x0021) AM_NOP // RS-232C - AM_RANGE(0x0030, 0x0031) AM_READWRITE8(backupram_dsw_r,sys_port1_w,0xffff) // 0x30 (R) DSW1 (W) Text Control Port 0 / 0x31 (R) DSW2 (W) System Port 1 + map(0x0020, 0x0021).noprw(); // RS-232C + map(0x0030, 0x0031).rw(this, FUNC(pc88va_state::backupram_dsw_r), FUNC(pc88va_state::sys_port1_w)); // 0x30 (R) DSW1 (W) Text Control Port 0 / 0x31 (R) DSW2 (W) System Port 1 // AM_RANGE(0x0032, 0x0032) (R) ? (W) System Port 2 // AM_RANGE(0x0034, 0x0034) GVRAM Control Port 1 // AM_RANGE(0x0035, 0x0035) GVRAM Control Port 2 - AM_RANGE(0x0040, 0x0041) AM_READ(sys_port4_r) // (R) System Port 4 (W) System port 3 (strobe port) - AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x0002) AM_DEVREADWRITE8("ym", ym2203_device, read, write, 0xffff) + map(0x0040, 0x0041).r(this, FUNC(pc88va_state::sys_port4_r)); // (R) System Port 4 (W) System port 3 (strobe port) + map(0x0044, 0x0045).mirror(0x0002).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // AM_RANGE(0x005c, 0x005c) (R) GVRAM status // AM_RANGE(0x005c, 0x005f) (W) GVRAM selection // AM_RANGE(0x0070, 0x0070) ? (*) // AM_RANGE(0x0071, 0x0071) Expansion ROM select (*) // AM_RANGE(0x0078, 0x0078) Memory offset increment (*) // AM_RANGE(0x0080, 0x0081) HDD related - AM_RANGE(0x0082, 0x0083) AM_READ8(hdd_status_r,0x00ff)// HDD control, byte access 7-0 + map(0x0082, 0x0082).r(this, FUNC(pc88va_state::hdd_status_r));// HDD control, byte access 7-0 // AM_RANGE(0x00bc, 0x00bf) d8255 1 // AM_RANGE(0x00e2, 0x00e3) Expansion RAM selection (*) // AM_RANGE(0x00e4, 0x00e4) 8214 IRQ control (*) @@ -1272,14 +1274,14 @@ ADDRESS_MAP_START(pc88va_state::pc88va_io_map) // AM_RANGE(0x00e8, 0x00e9) ? (*) // AM_RANGE(0x00ec, 0x00ed) ? (*) #if TEST_SUBFDC - AM_RANGE(0x00fc, 0x00ff) AM_DEVREADWRITE8("d8255_2", i8255_device, read, write, 0xffff) // d8255 2, FDD + map(0x00fc, 0x00ff).rw("d8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // d8255 2, FDD #else - AM_RANGE(0x00fc, 0x00ff) AM_READ8(no_subfdc_r,0xffff) AM_WRITENOP + map(0x00fc, 0x00ff).r(this, FUNC(pc88va_state::no_subfdc_r)).nopw(); #endif - AM_RANGE(0x0100, 0x0101) AM_READWRITE(screen_ctrl_r,screen_ctrl_w) // Screen Control Register + map(0x0100, 0x0101).rw(this, FUNC(pc88va_state::screen_ctrl_r), FUNC(pc88va_state::screen_ctrl_w)); // Screen Control Register // AM_RANGE(0x0102, 0x0103) Graphic Screen Control Register - AM_RANGE(0x0106, 0x0109) AM_WRITE(video_pri_w) // Palette Control Register (priority) / Direct Color Control Register (priority) + map(0x0106, 0x0109).w(this, FUNC(pc88va_state::video_pri_w)); // Palette Control Register (priority) / Direct Color Control Register (priority) // AM_RANGE(0x010a, 0x010b) Picture Mask Mode Register // AM_RANGE(0x010c, 0x010d) Color Palette Mode Register // AM_RANGE(0x010e, 0x010f) Backdrop Color Register @@ -1288,41 +1290,41 @@ ADDRESS_MAP_START(pc88va_state::pc88va_io_map) // AM_RANGE(0x0126, 0x0127) ? (related to Transparent Color of Graphic Screen 1) // AM_RANGE(0x012e, 0x012f) ? (related to Transparent Color of Text/Sprite) // AM_RANGE(0x0130, 0x0137) Picture Mask Parameter - AM_RANGE(0x0142, 0x0143) AM_READWRITE8(idp_status_r,idp_command_w,0x00ff) //Text Controller (IDP) - (R) Status (W) command - AM_RANGE(0x0146, 0x0147) AM_WRITE8(idp_param_w,0x00ff) //Text Controller (IDP) - (R/W) Parameter + map(0x0142, 0x0142).rw(this, FUNC(pc88va_state::idp_status_r), FUNC(pc88va_state::idp_command_w)); //Text Controller (IDP) - (R) Status (W) command + map(0x0146, 0x0146).w(this, FUNC(pc88va_state::idp_param_w)); //Text Controller (IDP) - (R/W) Parameter // AM_RANGE(0x0148, 0x0149) Text control port 1 // AM_RANGE(0x014c, 0x014f) ? CG Port - AM_RANGE(0x0150, 0x0151) AM_READ(sysop_r) // System Operational Mode - AM_RANGE(0x0152, 0x0153) AM_READWRITE(bios_bank_r,bios_bank_w) // Memory Map Register + map(0x0150, 0x0151).r(this, FUNC(pc88va_state::sysop_r)); // System Operational Mode + map(0x0152, 0x0153).rw(this, FUNC(pc88va_state::bios_bank_r), FUNC(pc88va_state::bios_bank_w)); // Memory Map Register // AM_RANGE(0x0154, 0x0155) Refresh Register (wait states) - AM_RANGE(0x0156, 0x0157) AM_READ8(rom_bank_r,0x00ff) // ROM bank status + map(0x0156, 0x0156).r(this, FUNC(pc88va_state::rom_bank_r)); // ROM bank status // AM_RANGE(0x0158, 0x0159) Interruption Mode Modification // AM_RANGE(0x015c, 0x015f) NMI mask port (strobe port) - AM_RANGE(0x0160, 0x016f) AM_DEVREADWRITE8("dmac", am9517a_device, read, write, 0xffff) // DMA Controller - AM_RANGE(0x0184, 0x0187) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0188, 0x018b) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) // ICU, also controls 8214 emulation + map(0x0160, 0x016f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); // DMA Controller + map(0x0184, 0x0187).rw("pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0188, 0x018b).rw("pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // ICU, also controls 8214 emulation // AM_RANGE(0x0190, 0x0191) System Port 5 // AM_RANGE(0x0196, 0x0197) Keyboard sub CPU command port - AM_RANGE(0x0198, 0x0199) AM_WRITE(backupram_wp_1_w) //Backup RAM write inhibit - AM_RANGE(0x019a, 0x019b) AM_WRITE(backupram_wp_0_w) //Backup RAM write permission - AM_RANGE(0x01a0, 0x01a7) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)// vTCU (timer counter unit) - AM_RANGE(0x01a8, 0x01a9) AM_WRITE8(timer3_ctrl_reg_w,0x00ff) // General-purpose timer 3 control port - AM_RANGE(0x01b0, 0x01b7) AM_READWRITE8(pc88va_fdc_r,pc88va_fdc_w,0x00ff)// FDC related (765) - AM_RANGE(0x01b8, 0x01bb) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff) + map(0x0198, 0x0199).w(this, FUNC(pc88va_state::backupram_wp_1_w)); //Backup RAM write inhibit + map(0x019a, 0x019b).w(this, FUNC(pc88va_state::backupram_wp_0_w)); //Backup RAM write permission + map(0x01a0, 0x01a7).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);// vTCU (timer counter unit) + map(0x01a8, 0x01a8).w(this, FUNC(pc88va_state::timer3_ctrl_reg_w)); // General-purpose timer 3 control port + map(0x01b0, 0x01b7).rw(this, FUNC(pc88va_state::pc88va_fdc_r), FUNC(pc88va_state::pc88va_fdc_w)).umask16(0x00ff);// FDC related (765) + map(0x01b8, 0x01bb).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); // AM_RANGE(0x01c0, 0x01c1) ? - AM_RANGE(0x01c6, 0x01c7) AM_WRITENOP // ??? - AM_RANGE(0x01c8, 0x01cf) AM_DEVREADWRITE8("d8255_3", i8255_device, read, write,0xff00) //i8255 3 (byte access) + map(0x01c6, 0x01c7).nopw(); // ??? + map(0x01c8, 0x01cf).rw("d8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); //i8255 3 (byte access) // AM_RANGE(0x01d0, 0x01d1) Expansion RAM bank selection - AM_RANGE(0x0200, 0x021f) AM_RAM // Frame buffer 0 control parameter - AM_RANGE(0x0220, 0x023f) AM_RAM // Frame buffer 1 control parameter - AM_RANGE(0x0240, 0x025f) AM_RAM // Frame buffer 2 control parameter - AM_RANGE(0x0260, 0x027f) AM_RAM // Frame buffer 3 control parameter - AM_RANGE(0x0300, 0x033f) AM_RAM_WRITE(palette_ram_w) AM_SHARE("palram") // Palette RAM (xBBBBxRRRRxGGGG format) + map(0x0200, 0x021f).ram(); // Frame buffer 0 control parameter + map(0x0220, 0x023f).ram(); // Frame buffer 1 control parameter + map(0x0240, 0x025f).ram(); // Frame buffer 2 control parameter + map(0x0260, 0x027f).ram(); // Frame buffer 3 control parameter + map(0x0300, 0x033f).ram().w(this, FUNC(pc88va_state::palette_ram_w)).share("palram"); // Palette RAM (xBBBBxRRRRxGGGG format) // AM_RANGE(0x0500, 0x05ff) GVRAM // AM_RANGE(0x1000, 0xfeff) user area (???) - AM_RANGE(0xff00, 0xffff) AM_NOP // CPU internal use -ADDRESS_MAP_END + map(0xff00, 0xffff).noprw(); // CPU internal use +} // (*) are specific N88 V1 / V2 ports TIMER_CALLBACK_MEMBER(pc88va_state::pc8801fd_upd765_tc_to_zero) diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index c246a4b3b3f..8df9cd2004c 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -672,50 +672,53 @@ READ8_MEMBER(pc9801_state::f0_r) return 0xff; } -ADDRESS_MAP_START(pc9801_state::pc9801_map) - AM_RANGE(0xa0000, 0xa3fff) AM_READWRITE(tvram_r,tvram_w) //TVRAM - AM_RANGE(0xa8000, 0xbffff) AM_READWRITE8(gvram_r,gvram_w,0xffff) //bitmap VRAM - AM_RANGE(0xcc000, 0xcdfff) AM_ROM AM_REGION("sound_bios",0) //sound BIOS - AM_RANGE(0xd6000, 0xd6fff) AM_ROM AM_REGION("fdc_bios_2dd",0) //floppy BIOS 2dd - AM_RANGE(0xd7000, 0xd7fff) AM_ROM AM_REGION("fdc_bios_2hd",0) //floppy BIOS 2hd - AM_RANGE(0xe8000, 0xfffff) AM_ROM AM_REGION("ipl",0) -ADDRESS_MAP_END +void pc9801_state::pc9801_map(address_map &map) +{ + map(0xa0000, 0xa3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w)); //TVRAM + map(0xa8000, 0xbffff).rw(this, FUNC(pc9801_state::gvram_r), FUNC(pc9801_state::gvram_w)); //bitmap VRAM + map(0xcc000, 0xcdfff).rom().region("sound_bios", 0); //sound BIOS + map(0xd6000, 0xd6fff).rom().region("fdc_bios_2dd", 0); //floppy BIOS 2dd + map(0xd7000, 0xd7fff).rom().region("fdc_bios_2hd", 0); //floppy BIOS 2hd + map(0xe8000, 0xfffff).rom().region("ipl", 0); +} /* first device is even offsets, second one is odd offsets */ -ADDRESS_MAP_START(pc9801_state::pc9801_common_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xff00) - AM_RANGE(0x0000, 0x001f) AM_READWRITE8(pic_r, pic_w, 0x00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA - AM_RANGE(0x0020, 0x002f) AM_WRITE8(rtc_w,0x00ff) - AM_RANGE(0x0030, 0x0037) AM_DEVREADWRITE8("ppi8255_sys", i8255_device, read, write, 0xff00) //i8251 RS232c / i8255 system port - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255_prn", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00) //i8255 printer port / i8251 keyboard - AM_RANGE(0x0050, 0x0057) AM_DEVREADWRITE8("ppi8255_fdd", i8255_device, read, write, 0xff00) - AM_RANGE(0x0050, 0x0057) AM_WRITE8(nmi_ctrl_w,0x00ff) // NMI FF / i8255 floppy port (2d?) - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("upd7220_chr", upd7220_device, read, write, 0x00ff) //upd7220 character ports / <undefined> - AM_RANGE(0x0064, 0x0065) AM_WRITE8(vrtc_clear_w,0x00ff) +void pc9801_state::pc9801_common_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x001f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0xff00); + map(0x0000, 0x001f).rw(this, FUNC(pc9801_state::pic_r), FUNC(pc9801_state::pic_w)).umask16(0x00ff); // i8259 PIC (bit 3 ON slave / master) / i8237 DMA + map(0x0020, 0x002f).w(this, FUNC(pc9801_state::rtc_w)).umask16(0x00ff); + map(0x0030, 0x0037).rw("ppi8255_sys", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); //i8251 RS232c / i8255 system port + map(0x0040, 0x0047).rw("ppi8255_prn", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0040, 0x0047).rw(m_keyb, FUNC(pc9801_kbd_device::rx_r), FUNC(pc9801_kbd_device::tx_w)).umask16(0xff00); //i8255 printer port / i8251 keyboard + map(0x0050, 0x0057).rw("ppi8255_fdd", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); + map(0x0050, 0x0057).w(this, FUNC(pc9801_state::nmi_ctrl_w)).umask16(0x00ff); // NMI FF / i8255 floppy port (2d?) + map(0x0060, 0x0063).rw(m_hgdc1, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask16(0x00ff); //upd7220 character ports / <undefined> + map(0x0064, 0x0064).w(this, FUNC(pc9801_state::vrtc_clear_w)); // AM_RANGE(0x006c, 0x006f) border color / <undefined> - AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00) - AM_RANGE(0x0070, 0x007f) AM_READWRITE8(txt_scrl_r,txt_scrl_w,0x00ff) //display registers / i8253 pit - AM_RANGE(0x0080, 0x0081) AM_READWRITE8(sasi_data_r, sasi_data_w, 0x00ff) - AM_RANGE(0x0082, 0x0083) AM_READWRITE8(sasi_status_r, sasi_ctrl_w,0x00ff) - AM_RANGE(0x0090, 0x0091) AM_DEVREAD8("upd765_2hd", upd765a_device, msr_r, 0x00ff) - AM_RANGE(0x0092, 0x0093) AM_DEVREADWRITE8("upd765_2hd", upd765a_device, fifo_r, fifo_w, 0x00ff) - AM_RANGE(0x0094, 0x0095) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x00ff) - AM_RANGE(0x0090, 0x0091) AM_DEVREADWRITE8(UPD8251_TAG, i8251_device, data_r, data_w, 0xff00) - AM_RANGE(0x0092, 0x0093) AM_DEVREADWRITE8(UPD8251_TAG, i8251_device, status_r, control_w, 0xff00) - AM_RANGE(0x7fd8, 0x7fdf) AM_DEVREADWRITE8("ppi8255_mouse", i8255_device, read, write, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc9801_state::pc9801_io) - AM_IMPORT_FROM(pc9801_common_io) - AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg4_w,0xff00) - AM_RANGE(0x0068, 0x0069) AM_WRITE8(pc9801_video_ff_w,0x00ff) //mode FF / <undefined> - AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9801_a0_r,pc9801_a0_w,0xffff) //upd7220 bitmap ports / display registers - AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2dd", upd765a_device, map, 0x00ff) - AM_RANGE(0x00cc, 0x00cd) AM_READWRITE8(fdc_2dd_ctrl_r, fdc_2dd_ctrl_w, 0x00ff) //upd765a 2dd / <undefined> - AM_RANGE(0x00f0, 0x00ff) AM_READ8(f0_r,0x00ff) -ADDRESS_MAP_END + map(0x0070, 0x007f).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00); + map(0x0070, 0x007f).rw(this, FUNC(pc9801_state::txt_scrl_r), FUNC(pc9801_state::txt_scrl_w)).umask16(0x00ff); //display registers / i8253 pit + map(0x0080, 0x0080).rw(this, FUNC(pc9801_state::sasi_data_r), FUNC(pc9801_state::sasi_data_w)); + map(0x0082, 0x0082).rw(this, FUNC(pc9801_state::sasi_status_r), FUNC(pc9801_state::sasi_ctrl_w)); + map(0x0090, 0x0090).r(m_fdc_2hd, FUNC(upd765a_device::msr_r)); + map(0x0092, 0x0092).rw(m_fdc_2hd, FUNC(upd765a_device::fifo_r), FUNC(upd765a_device::fifo_w)); + map(0x0094, 0x0094).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w)); + map(0x0091, 0x0091).rw(m_sio, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0093, 0x0093).rw(m_sio, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x7fd8, 0x7fdf).rw("ppi8255_mouse", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); +} + +void pc9801_state::pc9801_io(address_map &map) +{ + pc9801_common_io(map); + map(0x0020, 0x002f).w(this, FUNC(pc9801_state::dmapg4_w)).umask16(0xff00); + map(0x0068, 0x0068).w(this, FUNC(pc9801_state::pc9801_video_ff_w)); //mode FF / <undefined> + map(0x00a0, 0x00af).rw(this, FUNC(pc9801_state::pc9801_a0_r), FUNC(pc9801_state::pc9801_a0_w)); //upd7220 bitmap ports / display registers + map(0x00c8, 0x00cb).m(m_fdc_2dd, FUNC(upd765a_device::map)).umask16(0x00ff); + map(0x00cc, 0x00cc).rw(this, FUNC(pc9801_state::fdc_2dd_ctrl_r), FUNC(pc9801_state::fdc_2dd_ctrl_w)); //upd765a 2dd / <undefined> + map(0x00f0, 0x00ff).r(this, FUNC(pc9801_state::f0_r)).umask16(0x00ff); +} /************************************* * @@ -1082,55 +1085,60 @@ WRITE16_MEMBER(pc9801_state::grcg_gvram0_w) upd7220_grcg_w(space, offset | (m_vram_bank << 16), data, mem_mask); } -ADDRESS_MAP_START(pc9801_state::ipl_bank) - AM_RANGE(0x00000, 0x2ffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc9801_state::pc9801ux_map) - AM_RANGE(0x0a0000, 0x0a3fff) AM_READWRITE(tvram_r, tvram_w) - AM_RANGE(0x0a4000, 0x0a4fff) AM_READWRITE8(pc9801rs_knjram_r, pc9801rs_knjram_w, 0xffff) - AM_RANGE(0x0a8000, 0x0bffff) AM_READWRITE(grcg_gvram_r, grcg_gvram_w) - AM_RANGE(0x0e0000, 0x0e7fff) AM_READWRITE(grcg_gvram0_r,grcg_gvram0_w) - AM_RANGE(0x0e8000, 0x0fffff) AM_DEVICE("ipl_bank", address_map_bank_device, amap16) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc9801_state::pc9801ux_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(pc9801_common_io) - AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg8_w,0xff00) - AM_RANGE(0x0050, 0x0057) AM_NOP // 2dd ppi? - AM_RANGE(0x005c, 0x005f) AM_READ(timestamp_r) AM_WRITENOP // artic - AM_RANGE(0x0068, 0x006b) AM_WRITE8(pc9801rs_video_ff_w,0x00ff) //mode FF / <undefined> - AM_RANGE(0x0070, 0x007f) AM_READWRITE8(grcg_r, grcg_w, 0x00ff) //display registers "GRCG" / i8253 pit - AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9801_a0_r, pc9801rs_a0_w, 0xffff) //upd7220 bitmap ports / display registers - AM_RANGE(0x00bc, 0x00bf) AM_READWRITE8(fdc_mode_ctrl_r,fdc_mode_ctrl_w,0xffff) - AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2hd", upd765a_device, map, 0x00ff) - AM_RANGE(0x00cc, 0x00cd) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x00ff) - AM_RANGE(0x00f0, 0x00ff) AM_READWRITE8(a20_ctrl_r, a20_ctrl_w, 0x00ff) - AM_RANGE(0x0438, 0x043b) AM_READWRITE8(access_ctrl_r,access_ctrl_w,0xffff) - AM_RANGE(0x043c, 0x043f) AM_WRITE8(pc9801rs_bank_w, 0xffff) //ROM/RAM bank - AM_RANGE(0x04a0, 0x04af) AM_WRITE(egc_w) - AM_RANGE(0x3fd8, 0x3fdf) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc9801_state::pc9801rs_map) - AM_IMPORT_FROM(pc9801ux_map) +void pc9801_state::ipl_bank(address_map &map) +{ + map(0x00000, 0x2ffff).rom().region("ipl", 0); +} + +void pc9801_state::pc9801ux_map(address_map &map) +{ + map(0x0a0000, 0x0a3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w)); + map(0x0a4000, 0x0a4fff).rw(this, FUNC(pc9801_state::pc9801rs_knjram_r), FUNC(pc9801_state::pc9801rs_knjram_w)); + map(0x0a8000, 0x0bffff).rw(this, FUNC(pc9801_state::grcg_gvram_r), FUNC(pc9801_state::grcg_gvram_w)); + map(0x0e0000, 0x0e7fff).rw(this, FUNC(pc9801_state::grcg_gvram0_r), FUNC(pc9801_state::grcg_gvram0_w)); + map(0x0e8000, 0x0fffff).m(m_ipl, FUNC(address_map_bank_device::amap16)); +} + +void pc9801_state::pc9801ux_io(address_map &map) +{ + map.unmap_value_high(); + pc9801_common_io(map); + map(0x0020, 0x002f).w(this, FUNC(pc9801_state::dmapg8_w)).umask16(0xff00); + map(0x0050, 0x0057).noprw(); // 2dd ppi? + map(0x005c, 0x005f).r(this, FUNC(pc9801_state::timestamp_r)).nopw(); // artic + map(0x0068, 0x006b).w(this, FUNC(pc9801_state::pc9801rs_video_ff_w)).umask16(0x00ff); //mode FF / <undefined> + map(0x0070, 0x007f).rw(this, FUNC(pc9801_state::grcg_r), FUNC(pc9801_state::grcg_w)).umask16(0x00ff); //display registers "GRCG" / i8253 pit + map(0x00a0, 0x00af).rw(this, FUNC(pc9801_state::pc9801_a0_r), FUNC(pc9801_state::pc9801rs_a0_w)); //upd7220 bitmap ports / display registers + map(0x00bc, 0x00bf).rw(this, FUNC(pc9801_state::fdc_mode_ctrl_r), FUNC(pc9801_state::fdc_mode_ctrl_w)); + map(0x00c8, 0x00cb).m(m_fdc_2hd, FUNC(upd765a_device::map)).umask16(0x00ff); + map(0x00cc, 0x00cc).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w)); + map(0x00f0, 0x00ff).rw(this, FUNC(pc9801_state::a20_ctrl_r), FUNC(pc9801_state::a20_ctrl_w)).umask16(0x00ff); + map(0x0438, 0x043b).rw(this, FUNC(pc9801_state::access_ctrl_r), FUNC(pc9801_state::access_ctrl_w)); + map(0x043c, 0x043f).w(this, FUNC(pc9801_state::pc9801rs_bank_w)); //ROM/RAM bank + map(0x04a0, 0x04af).w(this, FUNC(pc9801_state::egc_w)); + map(0x3fd8, 0x3fdf).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0xff00); +} + +void pc9801_state::pc9801rs_map(address_map &map) +{ + pc9801ux_map(map); // AM_RANGE(0x0d8000, 0x0d9fff) AM_ROM AM_REGION("ide",0) - AM_RANGE(0x0da000, 0x0dbfff) AM_RAM // ide ram - AM_RANGE(0xee8000, 0xefffff) AM_DEVICE("ipl_bank", address_map_bank_device, amap16) - AM_RANGE(0xfe8000, 0xffffff) AM_DEVICE("ipl_bank", address_map_bank_device, amap16) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc9801_state::pc9801rs_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(pc9801ux_io) - AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff) - AM_RANGE(0x0640, 0x064f) AM_READWRITE(ide_cs0_r, ide_cs0_w) - AM_RANGE(0x0740, 0x074f) AM_READWRITE(ide_cs1_r, ide_cs1_w) - AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // temp - AM_RANGE(0xbfd8, 0xbfdf) AM_WRITE8(pc9801rs_mouse_freq_w, 0xffff) - AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(midi_r, 0xffff) -ADDRESS_MAP_END + map(0x0da000, 0x0dbfff).ram(); // ide ram + map(0xee8000, 0xefffff).m(m_ipl, FUNC(address_map_bank_device::amap16)); + map(0xfe8000, 0xffffff).m(m_ipl, FUNC(address_map_bank_device::amap16)); +} + +void pc9801_state::pc9801rs_io(address_map &map) +{ + map.unmap_value_high(); + pc9801ux_io(map); + map(0x0430, 0x0433).rw(this, FUNC(pc9801_state::ide_ctrl_r), FUNC(pc9801_state::ide_ctrl_w)).umask16(0x00ff); + map(0x0640, 0x064f).rw(this, FUNC(pc9801_state::ide_cs0_r), FUNC(pc9801_state::ide_cs0_w)); + map(0x0740, 0x074f).rw(this, FUNC(pc9801_state::ide_cs1_r), FUNC(pc9801_state::ide_cs1_w)); + map(0x1e8c, 0x1e8f).noprw(); // temp + map(0xbfd8, 0xbfdf).w(this, FUNC(pc9801_state::pc9801rs_mouse_freq_w)); + map(0xe0d0, 0xe0d3).r(this, FUNC(pc9801_state::midi_r)); +} /************************************* * @@ -1407,62 +1415,64 @@ WRITE16_MEMBER(pc9801_state::pc9821_grcg_gvram0_w) } -ADDRESS_MAP_START(pc9801_state::pc9821_map) +void pc9801_state::pc9821_map(address_map &map) +{ //AM_RANGE(0x00080000, 0x0009ffff) AM_READWRITE8(winram_r, winram_w, 0xffffffff) - AM_RANGE(0x000a0000, 0x000a3fff) AM_READWRITE16(tvram_r, tvram_w, 0xffffffff) - AM_RANGE(0x000a4000, 0x000a4fff) AM_READWRITE8(pc9801rs_knjram_r, pc9801rs_knjram_w, 0xffffffff) - AM_RANGE(0x000a8000, 0x000bffff) AM_READWRITE16(pc9821_grcg_gvram_r, pc9821_grcg_gvram_w, 0xffffffff) - AM_RANGE(0x000cc000, 0x000cdfff) AM_ROM AM_REGION("sound_bios",0) //sound BIOS + map(0x000a0000, 0x000a3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w)); + map(0x000a4000, 0x000a4fff).rw(this, FUNC(pc9801_state::pc9801rs_knjram_r), FUNC(pc9801_state::pc9801rs_knjram_w)); + map(0x000a8000, 0x000bffff).rw(this, FUNC(pc9801_state::pc9821_grcg_gvram_r), FUNC(pc9801_state::pc9821_grcg_gvram_w)); + map(0x000cc000, 0x000cdfff).rom().region("sound_bios", 0); //sound BIOS // AM_RANGE(0x000d8000, 0x000d9fff) AM_ROM AM_REGION("ide",0) - AM_RANGE(0x000da000, 0x000dbfff) AM_RAM // ide ram - AM_RANGE(0x000e0000, 0x000e7fff) AM_READWRITE16(pc9821_grcg_gvram0_r,pc9821_grcg_gvram0_w, 0xffffffff) - AM_RANGE(0x000e8000, 0x000fffff) AM_DEVICE16("ipl_bank", address_map_bank_device, amap16, 0xffffffff) - AM_RANGE(0x00f00000, 0x00f9ffff) AM_RAM AM_SHARE("ext_gvram") - AM_RANGE(0xffee8000, 0xffefffff) AM_DEVICE16("ipl_bank", address_map_bank_device, amap16, 0xffffffff) - AM_RANGE(0xfffe8000, 0xffffffff) AM_DEVICE16("ipl_bank", address_map_bank_device, amap16, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc9801_state::pc9821_io) + map(0x000da000, 0x000dbfff).ram(); // ide ram + map(0x000e0000, 0x000e7fff).rw(this, FUNC(pc9801_state::pc9821_grcg_gvram0_r), FUNC(pc9801_state::pc9821_grcg_gvram0_w)); + map(0x000e8000, 0x000fffff).m(m_ipl, FUNC(address_map_bank_device::amap16)); + map(0x00f00000, 0x00f9ffff).ram().share("ext_gvram"); + map(0xffee8000, 0xffefffff).m(m_ipl, FUNC(address_map_bank_device::amap16)); + map(0xfffe8000, 0xffffffff).m(m_ipl, FUNC(address_map_bank_device::amap16)); +} + +void pc9801_state::pc9821_io(address_map &map) +{ // ADDRESS_MAP_UNMAP_HIGH // TODO: a read to somewhere makes this to fail at POST - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xff00ff00) - AM_RANGE(0x0000, 0x001f) AM_READWRITE8(pic_r, pic_w, 0x00ff00ff) // i8259 PIC (bit 3 ON slave / master) / i8237 DMA - AM_RANGE(0x0020, 0x002f) AM_WRITE8(rtc_w,0x000000ff) - AM_RANGE(0x0020, 0x002f) AM_WRITE8(dmapg8_w,0xff00ff00) - AM_RANGE(0x0030, 0x0037) AM_DEVREADWRITE8("ppi8255_sys", i8255_device, read, write, 0xff00ff00) //i8251 RS232c / i8255 system port - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255_prn", i8255_device, read, write, 0x00ff00ff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("keyb", pc9801_kbd_device, rx_r, tx_w, 0xff00ff00) //i8255 printer port / i8251 keyboard - AM_RANGE(0x0050, 0x0053) AM_WRITE8(nmi_ctrl_w, 0x00ff00ff) - AM_RANGE(0x005c, 0x005f) AM_READ16(timestamp_r,0xffffffff) AM_WRITENOP // artic - AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("upd7220_chr", upd7220_device, read, write, 0x00ff00ff) //upd7220 character ports / <undefined> - AM_RANGE(0x0060, 0x0063) AM_READ8(unk_r, 0xff00ff00) // mouse related (unmapped checking for AT keyb controller\PS/2 mouse?) - AM_RANGE(0x0064, 0x0067) AM_WRITE8(vrtc_clear_w, 0x000000ff) - AM_RANGE(0x0068, 0x006b) AM_WRITE8(pc9821_video_ff_w, 0x00ff00ff) //mode FF / <undefined> - AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00ff00) - AM_RANGE(0x0070, 0x007f) AM_READWRITE8(grcg_r, grcg_w, 0x00ff00ff) //display registers "GRCG" / i8253 pit - AM_RANGE(0x0090, 0x0093) AM_DEVICE8("upd765_2hd", upd765a_device, map, 0x00ff00ff) - AM_RANGE(0x0094, 0x0097) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x000000ff) - AM_RANGE(0x00a0, 0x00af) AM_READWRITE8(pc9821_a0_r, pc9821_a0_w, 0xffffffff) //upd7220 bitmap ports / display registers + map(0x0000, 0x001f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0xff00ff00); + map(0x0000, 0x001f).rw(this, FUNC(pc9801_state::pic_r), FUNC(pc9801_state::pic_w)).umask32(0x00ff00ff); // i8259 PIC (bit 3 ON slave / master) / i8237 DMA + map(0x0020, 0x002f).w(this, FUNC(pc9801_state::rtc_w)).umask32(0x000000ff); + map(0x0020, 0x002f).w(this, FUNC(pc9801_state::dmapg8_w)).umask32(0xff00ff00); + map(0x0030, 0x0037).rw("ppi8255_sys", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0xff00ff00); //i8251 RS232c / i8255 system port + map(0x0040, 0x0047).rw("ppi8255_prn", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0x00ff00ff); + map(0x0040, 0x0047).rw(m_keyb, FUNC(pc9801_kbd_device::rx_r), FUNC(pc9801_kbd_device::tx_w)).umask32(0xff00ff00); //i8255 printer port / i8251 keyboard + map(0x0050, 0x0053).w(this, FUNC(pc9801_state::nmi_ctrl_w)).umask32(0x00ff00ff); + map(0x005c, 0x005f).r(this, FUNC(pc9801_state::timestamp_r)).nopw(); // artic + map(0x0060, 0x0063).rw(m_hgdc1, FUNC(upd7220_device::read), FUNC(upd7220_device::write)).umask32(0x00ff00ff); //upd7220 character ports / <undefined> + map(0x0060, 0x0063).r(this, FUNC(pc9801_state::unk_r)).umask32(0xff00ff00); // mouse related (unmapped checking for AT keyb controller\PS/2 mouse?) + map(0x0064, 0x0064).w(this, FUNC(pc9801_state::vrtc_clear_w)); + map(0x0068, 0x006b).w(this, FUNC(pc9801_state::pc9821_video_ff_w)).umask32(0x00ff00ff); //mode FF / <undefined> + map(0x0070, 0x007f).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0xff00ff00); + map(0x0070, 0x007f).rw(this, FUNC(pc9801_state::grcg_r), FUNC(pc9801_state::grcg_w)).umask32(0x00ff00ff); //display registers "GRCG" / i8253 pit + map(0x0090, 0x0093).m(m_fdc_2hd, FUNC(upd765a_device::map)).umask32(0x00ff00ff); + map(0x0094, 0x0094).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w)); + map(0x00a0, 0x00af).rw(this, FUNC(pc9801_state::pc9821_a0_r), FUNC(pc9801_state::pc9821_a0_w)); //upd7220 bitmap ports / display registers // AM_RANGE(0x00b0, 0x00b3) PC9861k (serial port?) // AM_RANGE(0x00b9, 0x00b9) PC9861k // AM_RANGE(0x00bb, 0x00bb) PC9861k - AM_RANGE(0x00bc, 0x00bf) AM_READWRITE8(fdc_mode_ctrl_r,fdc_mode_ctrl_w,0xffffffff) - AM_RANGE(0x00c8, 0x00cb) AM_DEVICE8("upd765_2hd", upd765a_device, map, 0x00ff00ff) - AM_RANGE(0x00cc, 0x00cf) AM_READWRITE8(fdc_2hd_ctrl_r, fdc_2hd_ctrl_w, 0x000000ff) + map(0x00bc, 0x00bf).rw(this, FUNC(pc9801_state::fdc_mode_ctrl_r), FUNC(pc9801_state::fdc_mode_ctrl_w)); + map(0x00c8, 0x00cb).m(m_fdc_2hd, FUNC(upd765a_device::map)).umask32(0x00ff00ff); + map(0x00cc, 0x00cc).rw(this, FUNC(pc9801_state::fdc_2hd_ctrl_r), FUNC(pc9801_state::fdc_2hd_ctrl_w)); // AM_RANGE(0x00d8, 0x00df) AMD98 (sound?) board - AM_RANGE(0x00f0, 0x00ff) AM_READWRITE8(a20_ctrl_r, a20_ctrl_w, 0x00ff00ff) + map(0x00f0, 0x00ff).rw(this, FUNC(pc9801_state::a20_ctrl_r), FUNC(pc9801_state::a20_ctrl_w)).umask32(0x00ff00ff); // AM_RANGE(0x0188, 0x018f) AM_READWRITE8(pc9801_opn_r, pc9801_opn_w, 0xffffffff) //ym2203 opn / <undefined> // AM_RANGE(0x018c, 0x018f) YM2203 OPN extended ports / <undefined> - AM_RANGE(0x0430, 0x0433) AM_READWRITE8(ide_ctrl_r, ide_ctrl_w, 0x00ff00ff) - AM_RANGE(0x0438, 0x043b) AM_READWRITE8(access_ctrl_r,access_ctrl_w,0xffffffff) + map(0x0430, 0x0433).rw(this, FUNC(pc9801_state::ide_ctrl_r), FUNC(pc9801_state::ide_ctrl_w)).umask32(0x00ff00ff); + map(0x0438, 0x043b).rw(this, FUNC(pc9801_state::access_ctrl_r), FUNC(pc9801_state::access_ctrl_w)); // AM_RANGE(0x043d, 0x043d) ROM/RAM bank (NEC) - AM_RANGE(0x043c, 0x043f) AM_WRITE8(pc9801rs_bank_w, 0xffffffff) //ROM/RAM bank (EPSON) - AM_RANGE(0x0460, 0x0463) AM_READWRITE8(window_bank_r,window_bank_w, 0xffffffff) - AM_RANGE(0x04a0, 0x04af) AM_WRITE16(egc_w, 0xffffffff) + map(0x043c, 0x043f).w(this, FUNC(pc9801_state::pc9801rs_bank_w)); //ROM/RAM bank (EPSON) + map(0x0460, 0x0463).rw(this, FUNC(pc9801_state::window_bank_r), FUNC(pc9801_state::window_bank_w)); + map(0x04a0, 0x04af).w(this, FUNC(pc9801_state::egc_w)); // AM_RANGE(0x04be, 0x04be) FDC "RPM" register - AM_RANGE(0x0640, 0x064f) AM_READWRITE16(ide_cs0_r, ide_cs0_w, 0xffffffff) - AM_RANGE(0x0740, 0x074f) AM_READWRITE16(ide_cs1_r, ide_cs1_w, 0xffffffff) + map(0x0640, 0x064f).rw(this, FUNC(pc9801_state::ide_cs0_r), FUNC(pc9801_state::ide_cs0_w)); + map(0x0740, 0x074f).rw(this, FUNC(pc9801_state::ide_cs1_r), FUNC(pc9801_state::ide_cs1_w)); // AM_RANGE(0x08e0, 0x08ea) <undefined> / EMM SIO registers - AM_RANGE(0x09a0, 0x09a3) AM_READWRITE8(ext2_video_ff_r, ext2_video_ff_w, 0x000000ff) // GDC extended register r/w + map(0x09a0, 0x09a0).rw(this, FUNC(pc9801_state::ext2_video_ff_r), FUNC(pc9801_state::ext2_video_ff_w)); // GDC extended register r/w // AM_RANGE(0x09a8, 0x09a8) GDC 31KHz register r/w // AM_RANGE(0x0c07, 0x0c07) EPSON register w // AM_RANGE(0x0c03, 0x0c03) EPSON register 0 r @@ -1472,21 +1482,21 @@ ADDRESS_MAP_START(pc9801_state::pc9821_io) // AM_RANGE(0x0c2d, 0x0c2d) cs4231 PCM board hi byte control // AM_RANGE(0x0cc0, 0x0cc7) SCSI interface / <undefined> // AM_RANGE(0x0cfc, 0x0cff) PCI bus - AM_RANGE(0x1e8c, 0x1e8f) AM_NOP // IDE RAM switch - AM_RANGE(0x3fd8, 0x3fdf) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0xff00ff00) // <undefined> / pit mirror ports - AM_RANGE(0x7fd8, 0x7fdf) AM_DEVREADWRITE8("ppi8255_mouse", i8255_device, read, write, 0xff00ff00) - AM_RANGE(0x841c, 0x841f) AM_READWRITE8(sdip_0_r,sdip_0_w,0xffffffff) - AM_RANGE(0x851c, 0x851f) AM_READWRITE8(sdip_1_r,sdip_1_w,0xffffffff) - AM_RANGE(0x861c, 0x861f) AM_READWRITE8(sdip_2_r,sdip_2_w,0xffffffff) - AM_RANGE(0x871c, 0x871f) AM_READWRITE8(sdip_3_r,sdip_3_w,0xffffffff) - AM_RANGE(0x881c, 0x881f) AM_READWRITE8(sdip_4_r,sdip_4_w,0xffffffff) - AM_RANGE(0x891c, 0x891f) AM_READWRITE8(sdip_5_r,sdip_5_w,0xffffffff) - AM_RANGE(0x8a1c, 0x8a1f) AM_READWRITE8(sdip_6_r,sdip_6_w,0xffffffff) - AM_RANGE(0x8b1c, 0x8b1f) AM_READWRITE8(sdip_7_r,sdip_7_w,0xffffffff) - AM_RANGE(0x8c1c, 0x8c1f) AM_READWRITE8(sdip_8_r,sdip_8_w,0xffffffff) - AM_RANGE(0x8d1c, 0x8d1f) AM_READWRITE8(sdip_9_r,sdip_9_w,0xffffffff) - AM_RANGE(0x8e1c, 0x8e1f) AM_READWRITE8(sdip_a_r,sdip_a_w,0xffffffff) - AM_RANGE(0x8f1c, 0x8f1f) AM_READWRITE8(sdip_b_r,sdip_b_w,0xffffffff) + map(0x1e8c, 0x1e8f).noprw(); // IDE RAM switch + map(0x3fd8, 0x3fdf).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0xff00ff00); // <undefined> / pit mirror ports + map(0x7fd8, 0x7fdf).rw("ppi8255_mouse", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0xff00ff00); + map(0x841c, 0x841f).rw(this, FUNC(pc9801_state::sdip_0_r), FUNC(pc9801_state::sdip_0_w)); + map(0x851c, 0x851f).rw(this, FUNC(pc9801_state::sdip_1_r), FUNC(pc9801_state::sdip_1_w)); + map(0x861c, 0x861f).rw(this, FUNC(pc9801_state::sdip_2_r), FUNC(pc9801_state::sdip_2_w)); + map(0x871c, 0x871f).rw(this, FUNC(pc9801_state::sdip_3_r), FUNC(pc9801_state::sdip_3_w)); + map(0x881c, 0x881f).rw(this, FUNC(pc9801_state::sdip_4_r), FUNC(pc9801_state::sdip_4_w)); + map(0x891c, 0x891f).rw(this, FUNC(pc9801_state::sdip_5_r), FUNC(pc9801_state::sdip_5_w)); + map(0x8a1c, 0x8a1f).rw(this, FUNC(pc9801_state::sdip_6_r), FUNC(pc9801_state::sdip_6_w)); + map(0x8b1c, 0x8b1f).rw(this, FUNC(pc9801_state::sdip_7_r), FUNC(pc9801_state::sdip_7_w)); + map(0x8c1c, 0x8c1f).rw(this, FUNC(pc9801_state::sdip_8_r), FUNC(pc9801_state::sdip_8_w)); + map(0x8d1c, 0x8d1f).rw(this, FUNC(pc9801_state::sdip_9_r), FUNC(pc9801_state::sdip_9_w)); + map(0x8e1c, 0x8e1f).rw(this, FUNC(pc9801_state::sdip_a_r), FUNC(pc9801_state::sdip_a_w)); + map(0x8f1c, 0x8f1f).rw(this, FUNC(pc9801_state::sdip_b_r), FUNC(pc9801_state::sdip_b_w)); // AM_RANGE(0xa460, 0xa46f) cs4231 PCM extended port / <undefined> // AM_RANGE(0xbfdb, 0xbfdb) mouse timing port // AM_RANGE(0xc0d0, 0xc0d3) MIDI port, option 0 / <undefined> @@ -1497,7 +1507,7 @@ ADDRESS_MAP_START(pc9801_state::pc9821_io) // AM_RANGE(0xd4d0, 0xd4d3) MIDI port, option 5 / <undefined> // AM_RANGE(0xd8d0, 0xd8d3) MIDI port, option 6 / <undefined> // AM_RANGE(0xdcd0, 0xdcd3) MIDI port, option 7 / <undefined> - AM_RANGE(0xe0d0, 0xe0d3) AM_READ8(midi_r, 0xffffffff) // MIDI port, option 8 / <undefined> + map(0xe0d0, 0xe0d3).r(this, FUNC(pc9801_state::midi_r)); // MIDI port, option 8 / <undefined> // AM_RANGE(0xe4d0, 0xe4d3) MIDI port, option 9 / <undefined> // AM_RANGE(0xe8d0, 0xe8d3) MIDI port, option A / <undefined> // AM_RANGE(0xecd0, 0xecd3) MIDI port, option B / <undefined> @@ -1505,19 +1515,22 @@ ADDRESS_MAP_START(pc9801_state::pc9821_io) // AM_RANGE(0xf4d0, 0xf4d3) MIDI port, option D / <undefined> // AM_RANGE(0xf8d0, 0xf8d3) MIDI port, option E / <undefined> // AM_RANGE(0xfcd0, 0xfcd3) MIDI port, option F / <undefined> -ADDRESS_MAP_END +} -ADDRESS_MAP_START(pc9801_state::upd7220_1_map) - AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("video_ram_1") -ADDRESS_MAP_END +void pc9801_state::upd7220_1_map(address_map &map) +{ + map(0x00000, 0x03fff).ram().share("video_ram_1"); +} -ADDRESS_MAP_START(pc9801_state::upd7220_2_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram_2") -ADDRESS_MAP_END +void pc9801_state::upd7220_2_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram().share("video_ram_2"); +} -ADDRESS_MAP_START(pc9801_state::upd7220_grcg_2_map) - AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(upd7220_grcg_r, upd7220_grcg_w) AM_SHARE("video_ram_2") -ADDRESS_MAP_END +void pc9801_state::upd7220_grcg_2_map(address_map &map) +{ + map(0x00000, 0x3ffff).rw(this, FUNC(pc9801_state::upd7220_grcg_r), FUNC(pc9801_state::upd7220_grcg_w)).share("video_ram_2"); +} CUSTOM_INPUT_MEMBER(pc9801_state::system_type_r) { diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp index ae84e3b205b..2a1db32a81e 100644 --- a/src/mame/drivers/pcat_dyn.cpp +++ b/src/mame/drivers/pcat_dyn.cpp @@ -97,29 +97,31 @@ WRITE8_MEMBER(pcat_dyn_state::bank2_w) m_nvram_bank->set_entry(data & 1); } -ADDRESS_MAP_START(pcat_dyn_state::pcat_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) - AM_RANGE(0x000d0000, 0x000d0fff) AM_ROM AM_REGION("game_prg", 0x0000) AM_WRITE8(bank1_w, 0xffffffff) - AM_RANGE(0x000d1000, 0x000d1fff) AM_ROM AM_REGION("game_prg", 0x1000) AM_WRITE8(bank2_w, 0xffffffff) - AM_RANGE(0x000d2000, 0x000d2fff) AM_ROMBANK("prgbank") - AM_RANGE(0x000d3000, 0x000d3fff) AM_RAMBANK("nvram_bank") - AM_RANGE(0x000df400, 0x000df8ff) AM_RAM //I/O board? - AM_RANGE(0x000f0000, 0x000fffff) AM_ROM AM_REGION("bios", 0 ) - AM_RANGE(0x00100000, 0x001fffff) AM_RAM - AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcat_dyn_state::pcat_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16550", ns16550_device, ins8250_r, ins8250_w, 0xffffffff) - AM_RANGE(0x0530, 0x0533) AM_READ8(audio_r, 0xffffffff) - AM_RANGE(0x0534, 0x0537) AM_DEVREADWRITE8("ad1848", ad1848_device, read, write, 0xffffffff) -ADDRESS_MAP_END +void pcat_dyn_state::pcat_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w)); + map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0); + map(0x000d0000, 0x000d0fff).rom().region("game_prg", 0x0000).w(this, FUNC(pcat_dyn_state::bank1_w)); + map(0x000d1000, 0x000d1fff).rom().region("game_prg", 0x1000).w(this, FUNC(pcat_dyn_state::bank2_w)); + map(0x000d2000, 0x000d2fff).bankr("prgbank"); + map(0x000d3000, 0x000d3fff).bankrw("nvram_bank"); + map(0x000df400, 0x000df8ff).ram(); //I/O board? + map(0x000f0000, 0x000fffff).rom().region("bios", 0); + map(0x00100000, 0x001fffff).ram(); + map(0xffff0000, 0xffffffff).rom().region("bios", 0); +} + +void pcat_dyn_state::pcat_io(address_map &map) +{ + pcat32_io_common(map); + map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w)); + map(0x03f8, 0x03ff).rw("ns16550", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x0530, 0x0533).r(this, FUNC(pcat_dyn_state::audio_r)); + map(0x0534, 0x0537).rw("ad1848", FUNC(ad1848_device::read), FUNC(ad1848_device::write)); +} //TODO: use atmb device WRITE8_MEMBER( pcat_dyn_state::dma8237_1_dack_w ){ m_isabus->dack_w(1, data); } diff --git a/src/mame/drivers/pcat_nit.cpp b/src/mame/drivers/pcat_nit.cpp index 1b2c680f7dd..a6b072fca12 100644 --- a/src/mame/drivers/pcat_nit.cpp +++ b/src/mame/drivers/pcat_nit.cpp @@ -152,27 +152,29 @@ WRITE8_MEMBER(pcat_nit_state::pcat_nit_rombank_w) } } -ADDRESS_MAP_START(pcat_nit_state::pcat_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) AM_WRITENOP - AM_RANGE(0x000d0000, 0x000d3fff) AM_RAM AM_REGION("disk_bios", 0) - AM_RANGE(0x000d7000, 0x000d7003) AM_WRITE8(pcat_nit_rombank_w, 0xff) - AM_RANGE(0x000d8000, 0x000dffff) AM_ROMBANK("rombank") - AM_RANGE(0x000f0000, 0x000fffff) AM_RAM AM_REGION("bios", 0 ) - AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcat_nit_state::bonanza_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) AM_WRITENOP - AM_RANGE(0x000d0000, 0x000d3fff) AM_RAM AM_REGION("disk_bios", 0) - AM_RANGE(0x000d7000, 0x000d7003) AM_WRITE8(pcat_nit_rombank_w, 0xff) - AM_RANGE(0x000d8000, 0x000dffff) AM_ROMBANK("rombank") - AM_RANGE(0x000f0000, 0x000fffff) AM_RAM AM_REGION("bios", 0 ) - AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("bios", 0 ) -ADDRESS_MAP_END +void pcat_nit_state::pcat_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0).nopw(); + map(0x000d0000, 0x000d3fff).ram().region("disk_bios", 0); + map(0x000d7000, 0x000d7000).w(this, FUNC(pcat_nit_state::pcat_nit_rombank_w)); + map(0x000d8000, 0x000dffff).bankr("rombank"); + map(0x000f0000, 0x000fffff).ram().region("bios", 0); + map(0xffff0000, 0xffffffff).rom().region("bios", 0); +} + +void pcat_nit_state::bonanza_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(cirrus_gd5428_device::mem_r), FUNC(cirrus_gd5428_device::mem_w)); + map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0).nopw(); + map(0x000d0000, 0x000d3fff).ram().region("disk_bios", 0); + map(0x000d7000, 0x000d7000).w(this, FUNC(pcat_nit_state::pcat_nit_rombank_w)); + map(0x000d8000, 0x000dffff).bankr("rombank"); + map(0x000f0000, 0x000fffff).ram().region("bios", 0); + map(0xffff0000, 0xffffffff).rom().region("bios", 0); +} READ8_MEMBER(pcat_nit_state::pcat_nit_io_r) { @@ -189,25 +191,27 @@ READ8_MEMBER(pcat_nit_state::pcat_nit_io_r) } } -ADDRESS_MAP_START(pcat_nit_state::pcat_nit_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x0278, 0x027f) AM_READ8(pcat_nit_io_r, 0xffffffff) AM_WRITENOP - AM_RANGE(0x0280, 0x0283) AM_READNOP - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16450_0", ns16450_device, ins8250_r, ins8250_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcat_nit_state::bonanza_io_map) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x0278, 0x027f) AM_READ8(pcat_nit_io_r, 0xffffffff) AM_WRITENOP - AM_RANGE(0x0280, 0x0283) AM_READNOP - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", cirrus_gd5428_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ns16450_0", ns16450_device, ins8250_r, ins8250_w, 0xffffffff) -ADDRESS_MAP_END +void pcat_nit_state::pcat_nit_io(address_map &map) +{ + pcat32_io_common(map); + map(0x0278, 0x027f).r(this, FUNC(pcat_nit_state::pcat_nit_io_r)).nopw(); + map(0x0280, 0x0283).nopr(); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x03f8, 0x03ff).rw(m_uart, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)); +} + +void pcat_nit_state::bonanza_io_map(address_map &map) +{ + pcat32_io_common(map); + map(0x0278, 0x027f).r(this, FUNC(pcat_nit_state::pcat_nit_io_r)).nopw(); + map(0x0280, 0x0283).nopr(); + map(0x03b0, 0x03bf).rw("vga", FUNC(cirrus_gd5428_device::port_03b0_r), FUNC(cirrus_gd5428_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(cirrus_gd5428_device::port_03c0_r), FUNC(cirrus_gd5428_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(cirrus_gd5428_device::port_03d0_r), FUNC(cirrus_gd5428_device::port_03d0_w)); + map(0x03f8, 0x03ff).rw(m_uart, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)); +} static INPUT_PORTS_START( pcat_nit ) PORT_START("IN0") diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp index 90b28f5130a..28c20a8e38c 100644 --- a/src/mame/drivers/pcd.cpp +++ b/src/mame/drivers/pcd.cpp @@ -437,39 +437,42 @@ READ16_MEMBER(pcd_state::mem_r) // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(pcd_state::pcd_map) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff) - AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(mem_r, mem_w) - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcd_state::pcd_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff) - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff) - AM_RANGE(0xf820, 0xf821) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff) - AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff) - AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00) - AM_RANGE(0xf880, 0xf8bf) AM_READWRITE8(rtc_r, rtc_w, 0xffff) - AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_device, read, write, 0xffff) - AM_RANGE(0xf904, 0xf905) AM_READWRITE(dskctl_r, dskctl_w) - AM_RANGE(0xf940, 0xf943) AM_READWRITE8(scsi_r, scsi_w, 0xffff) - AM_RANGE(0xf980, 0xf9bf) AM_DEVICE("video", pcdx_video_device, map) - AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff) // UARTs - AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff) - AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff) +void pcd_state::pcd_map(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); + map(0x00000, 0x7ffff).rw(this, FUNC(pcd_state::mem_r), FUNC(pcd_state::mem_w)); + map(0xfc000, 0xfffff).rom().region("bios", 0); +} + +void pcd_state::pcd_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); + map(0xf000, 0xf7ff).ram().share("nvram"); + map(0xf800, 0xf801).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf820, 0xf821).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf840, 0xf840).rw(this, FUNC(pcd_state::stat_r), FUNC(pcd_state::stat_w)); + map(0xf841, 0xf841).rw(this, FUNC(pcd_state::led_r), FUNC(pcd_state::led_w)); + map(0xf880, 0xf8bf).rw(this, FUNC(pcd_state::rtc_r), FUNC(pcd_state::rtc_w)); + map(0xf900, 0xf903).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); + map(0xf904, 0xf905).rw(this, FUNC(pcd_state::dskctl_r), FUNC(pcd_state::dskctl_w)); + map(0xf940, 0xf943).rw(this, FUNC(pcd_state::scsi_r), FUNC(pcd_state::scsi_w)); + map(0xf980, 0xf9bf).m("video", FUNC(pcdx_video_device::map)); + map(0xf9c0, 0xf9c3).rw("usart1", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // UARTs + map(0xf9d0, 0xf9d3).rw("usart2", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf9e0, 0xf9e3).rw("usart3", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select) - AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0x00ff) - AM_RANGE(0xfb02, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcd_state::pcx_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(pcd_io) - AM_RANGE(0x8000, 0x8fff) AM_READWRITE(mmu_r, mmu_w) - AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xff00) -ADDRESS_MAP_END + map(0xfb00, 0xfb00).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); + map(0xfb02, 0xffff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); +} + +void pcd_state::pcx_io(address_map &map) +{ + map.unmap_value_high(); + pcd_io(map); + map(0x8000, 0x8fff).rw(this, FUNC(pcd_state::mmu_r), FUNC(pcd_state::mmu_w)); + map(0xfb01, 0xfb01).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); +} //************************************************************************** // MACHINE DRIVERS diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp index 13f4d33830a..c94082daf62 100644 --- a/src/mame/drivers/pce.cpp +++ b/src/mame/drivers/pce.cpp @@ -249,49 +249,53 @@ INPUT_PORTS_END -ADDRESS_MAP_START(pce_state::pce_mem) - AM_RANGE( 0x000000, 0x0FFFFF) AM_DEVREADWRITE("cartslot", pce_cart_slot_device, read_cart, write_cart) - AM_RANGE( 0x100000, 0x10FFFF) AM_RAM AM_SHARE("cd_ram") - AM_RANGE( 0x110000, 0x1EDFFF) AM_NOP - AM_RANGE( 0x1EE000, 0x1EE7FF) AM_DEVREADWRITE("pce_cd", pce_cd_device, bram_r, bram_w) - AM_RANGE( 0x1EE800, 0x1EFFFF) AM_NOP - AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) AM_SHARE("user_ram") - AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) - AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE( C6280_TAG, c6280_device, c6280_r, c6280_w ) - AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE( "maincpu", h6280_device, timer_r, timer_w ) - AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE( mess_pce_joystick_r, mess_pce_joystick_w ) - AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w ) - AM_RANGE( 0x1FF800, 0x1FFBFF) AM_READWRITE( pce_cd_intf_r, pce_cd_intf_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pce_state::pce_io) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pce_state::sgx_mem) - AM_RANGE( 0x000000, 0x0FFFFF) AM_DEVREADWRITE("cartslot", pce_cart_slot_device, read_cart, write_cart) - AM_RANGE( 0x100000, 0x10FFFF) AM_RAM AM_SHARE("cd_ram") - AM_RANGE( 0x110000, 0x1EDFFF) AM_NOP - AM_RANGE( 0x1EE000, 0x1EE7FF) AM_DEVREADWRITE("pce_cd", pce_cd_device, bram_r, bram_w) - AM_RANGE( 0x1EE800, 0x1EFFFF) AM_NOP - AM_RANGE( 0x1F0000, 0x1F7FFF) AM_RAM AM_SHARE("user_ram") - AM_RANGE( 0x1FE000, 0x1FE007) AM_DEVREADWRITE( "huc6270_0", huc6270_device, read, write ) AM_MIRROR(0x03E0) - AM_RANGE( 0x1FE008, 0x1FE00F) AM_DEVREADWRITE( "huc6202", huc6202_device, read, write ) AM_MIRROR(0x03E0) - AM_RANGE( 0x1FE010, 0x1FE017) AM_DEVREADWRITE( "huc6270_1", huc6270_device, read, write ) AM_MIRROR(0x03E0) - AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE(C6280_TAG, c6280_device, c6280_r, c6280_w ) - AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w ) - AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(mess_pce_joystick_r, mess_pce_joystick_w ) - AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w ) - AM_RANGE( 0x1FF800, 0x1FFBFF) AM_READWRITE(pce_cd_intf_r, pce_cd_intf_w ) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pce_state::sgx_io) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6202", huc6202_device, io_read, io_write ) -ADDRESS_MAP_END +void pce_state::pce_mem(address_map &map) +{ + map(0x000000, 0x0FFFFF).rw(m_cartslot, FUNC(pce_cart_slot_device::read_cart), FUNC(pce_cart_slot_device::write_cart)); + map(0x100000, 0x10FFFF).ram().share("cd_ram"); + map(0x110000, 0x1EDFFF).noprw(); + map(0x1EE000, 0x1EE7FF).rw(m_cd, FUNC(pce_cd_device::bram_r), FUNC(pce_cd_device::bram_w)); + map(0x1EE800, 0x1EFFFF).noprw(); + map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000).share("user_ram"); + map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); + map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1FE800, 0x1FEBFF).rw(C6280_TAG, FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w)); + map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1FF000, 0x1FF3FF).rw(this, FUNC(pce_state::mess_pce_joystick_r), FUNC(pce_state::mess_pce_joystick_w)); + map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); + map(0x1FF800, 0x1FFBFF).rw(this, FUNC(pce_state::pce_cd_intf_r), FUNC(pce_state::pce_cd_intf_w)); +} + +void pce_state::pce_io(address_map &map) +{ + map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); +} + + +void pce_state::sgx_mem(address_map &map) +{ + map(0x000000, 0x0FFFFF).rw(m_cartslot, FUNC(pce_cart_slot_device::read_cart), FUNC(pce_cart_slot_device::write_cart)); + map(0x100000, 0x10FFFF).ram().share("cd_ram"); + map(0x110000, 0x1EDFFF).noprw(); + map(0x1EE000, 0x1EE7FF).rw(m_cd, FUNC(pce_cd_device::bram_r), FUNC(pce_cd_device::bram_w)); + map(0x1EE800, 0x1EFFFF).noprw(); + map(0x1F0000, 0x1F7FFF).ram().share("user_ram"); + map(0x1FE000, 0x1FE007).rw("huc6270_0", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0); + map(0x1FE008, 0x1FE00F).rw("huc6202", FUNC(huc6202_device::read), FUNC(huc6202_device::write)).mirror(0x03E0); + map(0x1FE010, 0x1FE017).rw("huc6270_1", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).mirror(0x03E0); + map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1FE800, 0x1FEBFF).rw(C6280_TAG, FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w)); + map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1FF000, 0x1FF3FF).rw(this, FUNC(pce_state::mess_pce_joystick_r), FUNC(pce_state::mess_pce_joystick_w)); + map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); + map(0x1FF800, 0x1FFBFF).rw(this, FUNC(pce_state::pce_cd_intf_r), FUNC(pce_state::pce_cd_intf_w)); +} + + +void pce_state::sgx_io(address_map &map) +{ + map(0x00, 0x03).rw("huc6202", FUNC(huc6202_device::io_read), FUNC(huc6202_device::io_write)); +} uint32_t pce_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp index bf5e3c67a01..8eb486c6d83 100644 --- a/src/mame/drivers/pce220.cpp +++ b/src/mame/drivers/pce220.cpp @@ -576,59 +576,62 @@ WRITE8_MEMBER( pcg850v_state::g850v_lcd_data_w ) } -ADDRESS_MAP_START(pce220_state::pce220_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pce220_state::pce220_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_READ(kb_r) - AM_RANGE(0x11, 0x12) AM_WRITE(kb_matrix_w) - AM_RANGE(0x13, 0x13) AM_READ_PORT("SHIFT") - AM_RANGE(0x14, 0x14) AM_READWRITE(timer_r, timer_w) - AM_RANGE(0x15, 0x15) AM_READWRITE(port15_r, port15_w) - AM_RANGE(0x16, 0x16) AM_READWRITE(irq_status_r, irq_ack_w) - AM_RANGE(0x17, 0x17) AM_WRITE(irq_mask_w) - AM_RANGE(0x18, 0x18) AM_READWRITE(port18_r, port18_w) - AM_RANGE(0x19, 0x19) AM_READWRITE(rom_bank_r, rom_bank_w) - AM_RANGE(0x1a, 0x1a) AM_WRITE(boot_bank_w) - AM_RANGE(0x1b, 0x1b) AM_WRITE(ram_bank_w) - AM_RANGE(0x1c, 0x1c) AM_WRITENOP //peripheral reset - AM_RANGE(0x1d, 0x1d) AM_READ_PORT("BATTERY") - AM_RANGE(0x1e, 0x1e) AM_WRITENOP //??? - AM_RANGE(0x1f, 0x1f) AM_READ(port1f_r) - AM_RANGE(0x58, 0x58) AM_WRITE(lcd_control_w) - AM_RANGE(0x59, 0x59) AM_READ(lcd_status_r) - AM_RANGE(0x5a, 0x5a) AM_WRITE(lcd_data_w) - AM_RANGE(0x5b, 0x5b) AM_READ(lcd_data_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcg850v_state::pcg850v_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_READ(kb_r) - AM_RANGE(0x11, 0x12) AM_WRITE(kb_matrix_w) - AM_RANGE(0x13, 0x13) AM_READ_PORT("SHIFT") - AM_RANGE(0x14, 0x14) AM_READWRITE(timer_r, timer_w) - AM_RANGE(0x15, 0x15) AM_READWRITE(port15_r, port15_w) - AM_RANGE(0x16, 0x16) AM_READWRITE(irq_status_r, irq_ack_w) - AM_RANGE(0x17, 0x17) AM_WRITE(irq_mask_w) - AM_RANGE(0x18, 0x18) AM_READWRITE(port18_r, port18_w) - AM_RANGE(0x19, 0x19) AM_READWRITE(rom_bank_r, rom_bank_w) - AM_RANGE(0x1a, 0x1a) AM_WRITE(boot_bank_w) - AM_RANGE(0x1b, 0x1b) AM_WRITE(ram_bank_w) - AM_RANGE(0x1c, 0x1c) AM_WRITENOP //peripheral reset - AM_RANGE(0x1d, 0x1d) AM_READ_PORT("BATTERY") - AM_RANGE(0x1e, 0x1e) AM_WRITENOP //??? - AM_RANGE(0x1f, 0x1f) AM_READ(port1f_r) - AM_RANGE(0x40, 0x40) AM_READWRITE(g850v_lcd_status_r, g850v_lcd_control_w) - AM_RANGE(0x41, 0x41) AM_READWRITE(g850v_lcd_data_r, g850v_lcd_data_w) - AM_RANGE(0x69, 0x69) AM_READWRITE(g850v_bank_r, g850v_bank_w) -ADDRESS_MAP_END +void pce220_state::pce220_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankr("bank3"); + map(0xc000, 0xffff).bankr("bank4"); +} + +void pce220_state::pce220_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x10, 0x10).r(this, FUNC(pce220_state::kb_r)); + map(0x11, 0x12).w(this, FUNC(pce220_state::kb_matrix_w)); + map(0x13, 0x13).portr("SHIFT"); + map(0x14, 0x14).rw(this, FUNC(pce220_state::timer_r), FUNC(pce220_state::timer_w)); + map(0x15, 0x15).rw(this, FUNC(pce220_state::port15_r), FUNC(pce220_state::port15_w)); + map(0x16, 0x16).rw(this, FUNC(pce220_state::irq_status_r), FUNC(pce220_state::irq_ack_w)); + map(0x17, 0x17).w(this, FUNC(pce220_state::irq_mask_w)); + map(0x18, 0x18).rw(this, FUNC(pce220_state::port18_r), FUNC(pce220_state::port18_w)); + map(0x19, 0x19).rw(this, FUNC(pce220_state::rom_bank_r), FUNC(pce220_state::rom_bank_w)); + map(0x1a, 0x1a).w(this, FUNC(pce220_state::boot_bank_w)); + map(0x1b, 0x1b).w(this, FUNC(pce220_state::ram_bank_w)); + map(0x1c, 0x1c).nopw(); //peripheral reset + map(0x1d, 0x1d).portr("BATTERY"); + map(0x1e, 0x1e).nopw(); //??? + map(0x1f, 0x1f).r(this, FUNC(pce220_state::port1f_r)); + map(0x58, 0x58).w(this, FUNC(pce220_state::lcd_control_w)); + map(0x59, 0x59).r(this, FUNC(pce220_state::lcd_status_r)); + map(0x5a, 0x5a).w(this, FUNC(pce220_state::lcd_data_w)); + map(0x5b, 0x5b).r(this, FUNC(pce220_state::lcd_data_r)); +} + +void pcg850v_state::pcg850v_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x10, 0x10).r(this, FUNC(pcg850v_state::kb_r)); + map(0x11, 0x12).w(this, FUNC(pcg850v_state::kb_matrix_w)); + map(0x13, 0x13).portr("SHIFT"); + map(0x14, 0x14).rw(this, FUNC(pcg850v_state::timer_r), FUNC(pcg850v_state::timer_w)); + map(0x15, 0x15).rw(this, FUNC(pcg850v_state::port15_r), FUNC(pcg850v_state::port15_w)); + map(0x16, 0x16).rw(this, FUNC(pcg850v_state::irq_status_r), FUNC(pcg850v_state::irq_ack_w)); + map(0x17, 0x17).w(this, FUNC(pcg850v_state::irq_mask_w)); + map(0x18, 0x18).rw(this, FUNC(pcg850v_state::port18_r), FUNC(pcg850v_state::port18_w)); + map(0x19, 0x19).rw(this, FUNC(pcg850v_state::rom_bank_r), FUNC(pcg850v_state::rom_bank_w)); + map(0x1a, 0x1a).w(this, FUNC(pcg850v_state::boot_bank_w)); + map(0x1b, 0x1b).w(this, FUNC(pcg850v_state::ram_bank_w)); + map(0x1c, 0x1c).nopw(); //peripheral reset + map(0x1d, 0x1d).portr("BATTERY"); + map(0x1e, 0x1e).nopw(); //??? + map(0x1f, 0x1f).r(this, FUNC(pcg850v_state::port1f_r)); + map(0x40, 0x40).rw(this, FUNC(pcg850v_state::g850v_lcd_status_r), FUNC(pcg850v_state::g850v_lcd_control_w)); + map(0x41, 0x41).rw(this, FUNC(pcg850v_state::g850v_lcd_data_r), FUNC(pcg850v_state::g850v_lcd_data_w)); + map(0x69, 0x69).rw(this, FUNC(pcg850v_state::g850v_bank_r), FUNC(pcg850v_state::g850v_bank_w)); +} INPUT_CHANGED_MEMBER(pce220_state::kb_irq) { diff --git a/src/mame/drivers/pcfx.cpp b/src/mame/drivers/pcfx.cpp index 404dc8b9ad3..cc52e64b9b1 100644 --- a/src/mame/drivers/pcfx.cpp +++ b/src/mame/drivers/pcfx.cpp @@ -94,14 +94,15 @@ WRITE8_MEMBER(pcfx_state::extio_w) io_space.write_byte(offset, data); } -ADDRESS_MAP_START(pcfx_state::pcfx_mem) - AM_RANGE( 0x00000000, 0x001FFFFF ) AM_RAM /* RAM */ +void pcfx_state::pcfx_mem(address_map &map) +{ + map(0x00000000, 0x001FFFFF).ram(); /* RAM */ // AM_RANGE( 0x80000000, 0x807FFFFF ) AM_READWRITE8(extio_r,extio_w,0xffffffff) /* EXTIO */ - AM_RANGE( 0xE0000000, 0xE7FFFFFF ) AM_NOP /* BackUp RAM */ - AM_RANGE( 0xE8000000, 0xE9FFFFFF ) AM_NOP /* Extended BackUp RAM */ - AM_RANGE( 0xF8000000, 0xF8000007 ) AM_NOP /* PIO */ - AM_RANGE( 0xFFF00000, 0xFFFFFFFF ) AM_ROM AM_REGION("ipl", 0) /* ROM */ -ADDRESS_MAP_END + map(0xE0000000, 0xE7FFFFFF).noprw(); /* BackUp RAM */ + map(0xE8000000, 0xE9FFFFFF).noprw(); /* Extended BackUp RAM */ + map(0xF8000000, 0xF8000007).noprw(); /* PIO */ + map(0xFFF00000, 0xFFFFFFFF).rom().region("ipl", 0); /* ROM */ +} READ16_MEMBER( pcfx_state::pad_r ) { @@ -185,21 +186,22 @@ WRITE16_MEMBER( pcfx_state::pad_w ) } -ADDRESS_MAP_START(pcfx_state::pcfx_io) - AM_RANGE( 0x00000000, 0x000000FF ) AM_READWRITE16(pad_r, pad_w, 0xffffffff) /* PAD */ - AM_RANGE( 0x00000100, 0x000001FF ) AM_NOP /* HuC6230 */ - AM_RANGE( 0x00000200, 0x000002FF ) AM_DEVICE16( "huc6271", huc6271_device, regs, 0xffff ) /* HuC6271 */ - AM_RANGE( 0x00000300, 0x000003FF ) AM_DEVREADWRITE16( "huc6261", huc6261_device, read, write, 0xffff ) /* HuC6261 */ - AM_RANGE( 0x00000400, 0x000004FF ) AM_DEVREADWRITE8( "huc6270_a", huc6270_device, read, write, 0xffff ) /* HuC6270-A */ - AM_RANGE( 0x00000500, 0x000005FF ) AM_DEVREADWRITE8( "huc6270_b", huc6270_device, read, write, 0xffff ) /* HuC6270-B */ - AM_RANGE( 0x00000600, 0x000006FF ) AM_DEVREADWRITE( "huc6272", huc6272_device, read, write ) /* HuC6272 */ - AM_RANGE( 0x00000C80, 0x00000C83 ) AM_NOP - AM_RANGE( 0x00000E00, 0x00000EFF ) AM_READWRITE16( irq_read, irq_write, 0xffff ) /* Interrupt controller */ - AM_RANGE( 0x00000F00, 0x00000FFF ) AM_NOP +void pcfx_state::pcfx_io(address_map &map) +{ + map(0x00000000, 0x000000FF).rw(this, FUNC(pcfx_state::pad_r), FUNC(pcfx_state::pad_w)); /* PAD */ + map(0x00000100, 0x000001FF).noprw(); /* HuC6230 */ + map(0x00000200, 0x000002FF).m("huc6271", FUNC(huc6271_device::regs)).umask32(0x0000ffff); /* HuC6271 */ + map(0x00000300, 0x000003FF).rw(m_huc6261, FUNC(huc6261_device::read), FUNC(huc6261_device::write)).umask32(0x0000ffff); /* HuC6261 */ + map(0x00000400, 0x000004FF).rw("huc6270_a", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).umask32(0x0000ffff); /* HuC6270-A */ + map(0x00000500, 0x000005FF).rw("huc6270_b", FUNC(huc6270_device::read), FUNC(huc6270_device::write)).umask32(0x0000ffff); /* HuC6270-B */ + map(0x00000600, 0x000006FF).rw("huc6272", FUNC(huc6272_device::read), FUNC(huc6272_device::write)); /* HuC6272 */ + map(0x00000C80, 0x00000C83).noprw(); + map(0x00000E00, 0x00000EFF).rw(this, FUNC(pcfx_state::irq_read), FUNC(pcfx_state::irq_write)).umask32(0x0000ffff); /* Interrupt controller */ + map(0x00000F00, 0x00000FFF).noprw(); // AM_RANGE( 0x00600000, 0x006FFFFF ) AM_READ(scsi_ctrl_r) - AM_RANGE( 0x00780000, 0x007FFFFF ) AM_ROM AM_REGION("scsi_rom", 0 ) - AM_RANGE( 0x80500000, 0x805000FF ) AM_NOP /* HuC6273 */ -ADDRESS_MAP_END + map(0x00780000, 0x007FFFFF).rom().region("scsi_rom", 0); + map(0x80500000, 0x805000FF).noprw(); /* HuC6273 */ +} static INPUT_PORTS_START( pcfx ) diff --git a/src/mame/drivers/pcktgal.cpp b/src/mame/drivers/pcktgal.cpp index 875cca31817..43d770c5b56 100644 --- a/src/mame/drivers/pcktgal.cpp +++ b/src/mame/drivers/pcktgal.cpp @@ -71,35 +71,37 @@ READ8_MEMBER(pcktgal_state::adpcm_reset_r) /***************************************************************************/ -ADDRESS_MAP_START(pcktgal_state::pcktgal_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_8bit_r, pf_data_8bit_w) - AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") - AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) - AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w) - - AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(sound_w) - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(bank_w) - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void pcktgal_state::pcktgal_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_8bit_r), FUNC(deco_bac06_device::pf_data_8bit_w)); + map(0x1000, 0x11ff).ram().share("spriteram"); + map(0x1800, 0x1800).portr("P1"); + map(0x1800, 0x1807).w(m_tilegen1, FUNC(deco_bac06_device::pf_control0_8bit_w)); + map(0x1810, 0x181f).rw(m_tilegen1, FUNC(deco_bac06_device::pf_control1_8bit_r), FUNC(deco_bac06_device::pf_control1_8bit_w)); + + map(0x1a00, 0x1a00).portr("P2").w(this, FUNC(pcktgal_state::sound_w)); + map(0x1c00, 0x1c00).portr("DSW").w(this, FUNC(pcktgal_state::bank_w)); + map(0x4000, 0x5fff).bankr("bank1"); + map(0x6000, 0x7fff).bankr("bank2"); + map(0x8000, 0xffff).rom(); +} /***************************************************************************/ -ADDRESS_MAP_START(pcktgal_state::pcktgal_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_data_w) /* ADPCM data for the MSM5205 chip */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_bank_w) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x3400, 0x3400) AM_READ(adpcm_reset_r) /* ? not sure */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank3") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void pcktgal_state::pcktgal_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write)); + map(0x1800, 0x1800).w(this, FUNC(pcktgal_state::adpcm_data_w)); /* ADPCM data for the MSM5205 chip */ + map(0x2000, 0x2000).w(this, FUNC(pcktgal_state::sound_bank_w)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x3400, 0x3400).r(this, FUNC(pcktgal_state::adpcm_reset_r)); /* ? not sure */ + map(0x4000, 0x7fff).bankr("bank3"); + map(0x8000, 0xffff).rom(); +} /***************************************************************************/ diff --git a/src/mame/drivers/pcm.cpp b/src/mame/drivers/pcm.cpp index 235468dd830..c3ea8f809d5 100644 --- a/src/mame/drivers/pcm.cpp +++ b/src/mame/drivers/pcm.cpp @@ -160,26 +160,28 @@ WRITE8_MEMBER( pcm_state::pcm_85_w ) -ADDRESS_MAP_START(pcm_state::pcm_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x1fff ) AM_ROM // ROM - AM_RANGE( 0x2000, 0xf7ff ) AM_RAM // RAM - AM_RANGE( 0xf800, 0xffff ) AM_RAM AM_SHARE("videoram") // Video RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcm_state::pcm_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ctc_s", z80ctc_device, read, write) // system CTC - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("pio_s", z80pio_device, read, write) // system PIO - AM_RANGE(0x88, 0x8B) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) // SIO - AM_RANGE(0x8C, 0x8F) AM_DEVREADWRITE("ctc_u", z80ctc_device, read, write) // user CTC - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("pio_u", z80pio_device, read, write) // user PIO +void pcm_state::pcm_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); // ROM + map(0x2000, 0xf7ff).ram(); // RAM + map(0xf800, 0xffff).ram().share("videoram"); // Video RAM +} + +void pcm_state::pcm_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).rw(m_ctc_s, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // system CTC + map(0x84, 0x87).rw(m_pio_s, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // system PIO + map(0x88, 0x8B).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO + map(0x8C, 0x8F).rw(m_ctc_u, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // user CTC + map(0x90, 0x93).rw(m_pio_u, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); // user PIO //AM_RANGE(0x94, 0x97) // bank select //AM_RANGE(0x98, 0x9B) // NMI generator //AM_RANGE(0x9C, 0x9F) // io ports available to the user // disk controller? -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( pcm ) diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp index 0ec799cb2da..1692dc3ee7b 100644 --- a/src/mame/drivers/pcw.cpp +++ b/src/mame/drivers/pcw.cpp @@ -192,12 +192,13 @@ WRITE_LINE_MEMBER( pcw_state::pcw_fdc_interrupt ) block 3 could be paged into any bank, and this explains the setup of the memory below. */ -ADDRESS_MAP_START(pcw_state::pcw_map) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5") - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6") - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7") - AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8") -ADDRESS_MAP_END +void pcw_state::pcw_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1").bankw("bank5"); + map(0x4000, 0x7fff).bankr("bank2").bankw("bank6"); + map(0x8000, 0xbfff).bankr("bank3").bankw("bank7"); + map(0xc000, 0xffff).bankr("bank4").bankw("bank8"); +} /* Keyboard is read by the MCU and sent as serial data to the gate array ASIC */ @@ -948,34 +949,36 @@ WRITE8_MEMBER(pcw_state::pcw9512_parallel_w) logerror("pcw9512 parallel w: offs: %04x data: %02x\n",offset,data); } -ADDRESS_MAP_START(pcw_state::pcw_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x000, 0x001) AM_MIRROR(0x7e) AM_DEVICE("upd765", upd765a_device, map) - AM_RANGE(0x080, 0x0ef) AM_READWRITE(pcw_expansion_r, pcw_expansion_w) - AM_RANGE(0x0f0, 0x0f3) AM_WRITE( pcw_bank_select_w) - AM_RANGE(0x0f4, 0x0f4) AM_READWRITE(pcw_interrupt_counter_r, pcw_bank_force_selection_w) - AM_RANGE(0x0f5, 0x0f5) AM_WRITE( pcw_roller_ram_addr_w) - AM_RANGE(0x0f6, 0x0f6) AM_WRITE( pcw_pointer_table_top_scan_w) - AM_RANGE(0x0f7, 0x0f7) AM_WRITE( pcw_vdu_video_control_register_w) - AM_RANGE(0x0f8, 0x0f8) AM_READWRITE(pcw_system_status_r, pcw_system_control_w) - AM_RANGE(0x0fc, 0x0fc) AM_READWRITE(pcw_printer_data_r, pcw_printer_data_w) - AM_RANGE(0x0fd, 0x0fd) AM_READWRITE(pcw_printer_status_r, pcw_printer_command_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(pcw_state::pcw9512_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x000, 0x001) AM_MIRROR(0x7e) AM_DEVICE("upd765", upd765a_device, map) - AM_RANGE(0x080, 0x0ef) AM_READWRITE(pcw_expansion_r, pcw_expansion_w) - AM_RANGE(0x0f0, 0x0f3) AM_WRITE( pcw_bank_select_w) - AM_RANGE(0x0f4, 0x0f4) AM_READWRITE(pcw_interrupt_counter_r, pcw_bank_force_selection_w) - AM_RANGE(0x0f5, 0x0f5) AM_WRITE( pcw_roller_ram_addr_w) - AM_RANGE(0x0f6, 0x0f6) AM_WRITE( pcw_pointer_table_top_scan_w) - AM_RANGE(0x0f7, 0x0f7) AM_WRITE( pcw_vdu_video_control_register_w) - AM_RANGE(0x0f8, 0x0f8) AM_READWRITE(pcw_system_status_r, pcw_system_control_w) - AM_RANGE(0x0fc, 0x0fd) AM_READWRITE(pcw9512_parallel_r, pcw9512_parallel_w) -ADDRESS_MAP_END +void pcw_state::pcw_io(address_map &map) +{ + map.global_mask(0xff); + map(0x000, 0x001).mirror(0x7e).m(m_fdc, FUNC(upd765a_device::map)); + map(0x080, 0x0ef).rw(this, FUNC(pcw_state::pcw_expansion_r), FUNC(pcw_state::pcw_expansion_w)); + map(0x0f0, 0x0f3).w(this, FUNC(pcw_state::pcw_bank_select_w)); + map(0x0f4, 0x0f4).rw(this, FUNC(pcw_state::pcw_interrupt_counter_r), FUNC(pcw_state::pcw_bank_force_selection_w)); + map(0x0f5, 0x0f5).w(this, FUNC(pcw_state::pcw_roller_ram_addr_w)); + map(0x0f6, 0x0f6).w(this, FUNC(pcw_state::pcw_pointer_table_top_scan_w)); + map(0x0f7, 0x0f7).w(this, FUNC(pcw_state::pcw_vdu_video_control_register_w)); + map(0x0f8, 0x0f8).rw(this, FUNC(pcw_state::pcw_system_status_r), FUNC(pcw_state::pcw_system_control_w)); + map(0x0fc, 0x0fc).rw(this, FUNC(pcw_state::pcw_printer_data_r), FUNC(pcw_state::pcw_printer_data_w)); + map(0x0fd, 0x0fd).rw(this, FUNC(pcw_state::pcw_printer_status_r), FUNC(pcw_state::pcw_printer_command_w)); +} + + + +void pcw_state::pcw9512_io(address_map &map) +{ + map.global_mask(0xff); + map(0x000, 0x001).mirror(0x7e).m(m_fdc, FUNC(upd765a_device::map)); + map(0x080, 0x0ef).rw(this, FUNC(pcw_state::pcw_expansion_r), FUNC(pcw_state::pcw_expansion_w)); + map(0x0f0, 0x0f3).w(this, FUNC(pcw_state::pcw_bank_select_w)); + map(0x0f4, 0x0f4).rw(this, FUNC(pcw_state::pcw_interrupt_counter_r), FUNC(pcw_state::pcw_bank_force_selection_w)); + map(0x0f5, 0x0f5).w(this, FUNC(pcw_state::pcw_roller_ram_addr_w)); + map(0x0f6, 0x0f6).w(this, FUNC(pcw_state::pcw_pointer_table_top_scan_w)); + map(0x0f7, 0x0f7).w(this, FUNC(pcw_state::pcw_vdu_video_control_register_w)); + map(0x0f8, 0x0f8).rw(this, FUNC(pcw_state::pcw_system_status_r), FUNC(pcw_state::pcw_system_control_w)); + map(0x0fc, 0x0fd).rw(this, FUNC(pcw_state::pcw9512_parallel_r), FUNC(pcw_state::pcw9512_parallel_w)); +} TIMER_CALLBACK_MEMBER(pcw_state::setup_beep) diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp index 61c80319a80..1d2dd69184b 100644 --- a/src/mame/drivers/pcw16.cpp +++ b/src/mame/drivers/pcw16.cpp @@ -142,9 +142,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(pcw16_state::pcw16_timer_callback) } } -ADDRESS_MAP_START(pcw16_state::pcw16_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(pcw16_mem_r, pcw16_mem_w) -ADDRESS_MAP_END +void pcw16_state::pcw16_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(pcw16_state::pcw16_mem_r), FUNC(pcw16_state::pcw16_mem_w)); +} WRITE8_MEMBER(pcw16_state::pcw16_palette_w) @@ -934,28 +935,29 @@ static SLOT_INTERFACE_START( pcw16_floppies ) SLOT_INTERFACE_END -ADDRESS_MAP_START(pcw16_state::pcw16_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void pcw16_state::pcw16_io(address_map &map) +{ + map.global_mask(0xff); /* super i/o chip */ - AM_RANGE(0x018, 0x01f) AM_DEVICE("fdc", pc_fdc_superio_device, map) - AM_RANGE(0x020, 0x027) AM_DEVREADWRITE("ns16550_1", ns16550_device, ins8250_r, ins8250_w) - AM_RANGE(0x028, 0x02f) AM_DEVREADWRITE("ns16550_2", ns16550_device, ins8250_r, ins8250_w) - AM_RANGE(0x038, 0x03a) AM_DEVREADWRITE("lpt", pc_lpt_device, read, write) + map(0x018, 0x01f).m(m_fdc, FUNC(pc_fdc_superio_device::map)); + map(0x020, 0x027).rw("ns16550_1", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x028, 0x02f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x038, 0x03a).rw("lpt", FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)); /* anne asic */ - AM_RANGE(0x0e0, 0x0ef) AM_WRITE(pcw16_palette_w) - AM_RANGE(0x0f0, 0x0f3) AM_READWRITE(pcw16_bankhw_r, pcw16_bankhw_w) - AM_RANGE(0x0f4, 0x0f4) AM_READWRITE(pcw16_keyboard_data_shift_r, pcw16_keyboard_data_shift_w) - AM_RANGE(0x0f5, 0x0f5) AM_READWRITE(pcw16_keyboard_status_r, pcw16_keyboard_control_w) - AM_RANGE(0x0f7, 0x0f7) AM_READWRITE(pcw16_timer_interrupt_counter_r, pcw16_video_control_w) - AM_RANGE(0x0f8, 0x0f8) AM_READWRITE(pcw16_system_status_r, pcw16_system_control_w) - AM_RANGE(0x0f9, 0x0f9) AM_READWRITE(rtc_256ths_seconds_r, rtc_control_w) - AM_RANGE(0x0fa, 0x0fa) AM_READWRITE(rtc_seconds_r, rtc_seconds_w) - AM_RANGE(0x0fb, 0x0fb) AM_READWRITE(rtc_minutes_r, rtc_minutes_w) - AM_RANGE(0x0fc, 0x0fc) AM_READWRITE(rtc_hours_r, rtc_hours_w) - AM_RANGE(0x0fd, 0x0fd) AM_READWRITE(rtc_days_r, rtc_days_w) - AM_RANGE(0x0fe, 0x0fe) AM_READWRITE(rtc_month_r, rtc_month_w) - AM_RANGE(0x0ff, 0x0ff) AM_READWRITE(rtc_year_invalid_r, rtc_year_w) -ADDRESS_MAP_END + map(0x0e0, 0x0ef).w(this, FUNC(pcw16_state::pcw16_palette_w)); + map(0x0f0, 0x0f3).rw(this, FUNC(pcw16_state::pcw16_bankhw_r), FUNC(pcw16_state::pcw16_bankhw_w)); + map(0x0f4, 0x0f4).rw(this, FUNC(pcw16_state::pcw16_keyboard_data_shift_r), FUNC(pcw16_state::pcw16_keyboard_data_shift_w)); + map(0x0f5, 0x0f5).rw(this, FUNC(pcw16_state::pcw16_keyboard_status_r), FUNC(pcw16_state::pcw16_keyboard_control_w)); + map(0x0f7, 0x0f7).rw(this, FUNC(pcw16_state::pcw16_timer_interrupt_counter_r), FUNC(pcw16_state::pcw16_video_control_w)); + map(0x0f8, 0x0f8).rw(this, FUNC(pcw16_state::pcw16_system_status_r), FUNC(pcw16_state::pcw16_system_control_w)); + map(0x0f9, 0x0f9).rw(this, FUNC(pcw16_state::rtc_256ths_seconds_r), FUNC(pcw16_state::rtc_control_w)); + map(0x0fa, 0x0fa).rw(this, FUNC(pcw16_state::rtc_seconds_r), FUNC(pcw16_state::rtc_seconds_w)); + map(0x0fb, 0x0fb).rw(this, FUNC(pcw16_state::rtc_minutes_r), FUNC(pcw16_state::rtc_minutes_w)); + map(0x0fc, 0x0fc).rw(this, FUNC(pcw16_state::rtc_hours_r), FUNC(pcw16_state::rtc_hours_w)); + map(0x0fd, 0x0fd).rw(this, FUNC(pcw16_state::rtc_days_r), FUNC(pcw16_state::rtc_days_w)); + map(0x0fe, 0x0fe).rw(this, FUNC(pcw16_state::rtc_month_r), FUNC(pcw16_state::rtc_month_w)); + map(0x0ff, 0x0ff).rw(this, FUNC(pcw16_state::rtc_year_invalid_r), FUNC(pcw16_state::rtc_year_w)); +} void pcw16_state::machine_reset() diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp index 45210f27f20..e0d5a6b6e47 100644 --- a/src/mame/drivers/pcxt.cpp +++ b/src/mame/drivers/pcxt.cpp @@ -364,40 +364,45 @@ WRITE8_MEMBER(pcxt_state::fdc_dor_w) m_mb->m_pic8259->ir6_w(1); } -ADDRESS_MAP_START(pcxt_state::filetto_map) - AM_RANGE(0xc0000, 0xcffff) AM_DEVICE("bank", address_map_bank_device, amap8) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcxt_state::filetto_io) - ADDRESS_MAP_GLOBAL_MASK(0x3ff) - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map) - AM_RANGE(0x0060, 0x0060) AM_READ(port_a_r) //not a real 8255 - AM_RANGE(0x0061, 0x0061) AM_READWRITE(port_b_r, port_b_w) - AM_RANGE(0x0062, 0x0062) AM_READ(port_c_r) - AM_RANGE(0x0201, 0x0201) AM_READ_PORT("COIN") //game port - AM_RANGE(0x0310, 0x0311) AM_READWRITE(disk_iobank_r,disk_iobank_w) //Prototyping card - AM_RANGE(0x0312, 0x0312) AM_READ_PORT("IN0") //Prototyping card,read only - AM_RANGE(0x03f2, 0x03f2) AM_WRITE(fdc_dor_w) - AM_RANGE(0x03f4, 0x03f4) AM_READ(fdc765_status_r) //765 Floppy Disk Controller (FDC) Status - AM_RANGE(0x03f5, 0x03f5) AM_READWRITE(fdc765_data_r,fdc765_data_w)//FDC Data -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcxt_state::tetriskr_map) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pcxt_state::tetriskr_io) - ADDRESS_MAP_GLOBAL_MASK(0x3ff) - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", pc_noppi_mb_device, map) - AM_RANGE(0x03c8, 0x03c8) AM_READ_PORT("IN0") - AM_RANGE(0x03c9, 0x03c9) AM_READ_PORT("IN1") +void pcxt_state::filetto_map(address_map &map) +{ + map(0xc0000, 0xcffff).m(m_bank, FUNC(address_map_bank_device::amap8)); + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void pcxt_state::filetto_io(address_map &map) +{ + map.global_mask(0x3ff); + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x0060, 0x0060).r(this, FUNC(pcxt_state::port_a_r)); //not a real 8255 + map(0x0061, 0x0061).rw(this, FUNC(pcxt_state::port_b_r), FUNC(pcxt_state::port_b_w)); + map(0x0062, 0x0062).r(this, FUNC(pcxt_state::port_c_r)); + map(0x0201, 0x0201).portr("COIN"); //game port + map(0x0310, 0x0311).rw(this, FUNC(pcxt_state::disk_iobank_r), FUNC(pcxt_state::disk_iobank_w)); //Prototyping card + map(0x0312, 0x0312).portr("IN0"); //Prototyping card,read only + map(0x03f2, 0x03f2).w(this, FUNC(pcxt_state::fdc_dor_w)); + map(0x03f4, 0x03f4).r(this, FUNC(pcxt_state::fdc765_status_r)); //765 Floppy Disk Controller (FDC) Status + map(0x03f5, 0x03f5).rw(this, FUNC(pcxt_state::fdc765_data_r), FUNC(pcxt_state::fdc765_data_w));//FDC Data +} + +void pcxt_state::tetriskr_map(address_map &map) +{ + map(0xf0000, 0xfffff).rom().region("bios", 0); +} + +void pcxt_state::tetriskr_io(address_map &map) +{ + map.global_mask(0x3ff); + map(0x0000, 0x00ff).m(m_mb, FUNC(pc_noppi_mb_device::map)); + map(0x03c8, 0x03c8).portr("IN0"); + map(0x03c9, 0x03c9).portr("IN1"); // AM_RANGE(0x03ce, 0x03ce) AM_READ_PORT("IN1") //read then discarded? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(pcxt_state::bank_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("game_prg", 0) -ADDRESS_MAP_END +void pcxt_state::bank_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom().region("game_prg", 0); +} static INPUT_PORTS_START( filetto ) PORT_START("IN0") diff --git a/src/mame/drivers/pda600.cpp b/src/mame/drivers/pda600.cpp index c15acdf7b23..943662b4732 100644 --- a/src/mame/drivers/pda600.cpp +++ b/src/mame/drivers/pda600.cpp @@ -84,22 +84,24 @@ public: }; -ADDRESS_MAP_START(pda600_state::pda600_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x1ffff) AM_ROM +void pda600_state::pda600_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).rom(); //AM_RANGE(0x20000, 0x9ffff) AM_RAM // PCMCIA Card - AM_RANGE(0xa0000, 0xa7fff) AM_RAM AM_REGION("videoram", 0) - AM_RANGE(0xe0000, 0xfffff) AM_RAM AM_REGION("mainram", 0) AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pda600_state::pda600_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */ + map(0xa0000, 0xa7fff).ram().region("videoram", 0); + map(0xe0000, 0xfffff).ram().region("mainram", 0).share("nvram"); +} + +void pda600_state::pda600_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x3f).noprw(); /* Z180 internal registers */ //AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", hd64610_device, read, write) + map(0x80, 0x8f).rw("rtc", FUNC(hd64610_device::read), FUNC(hd64610_device::write)); //AM_RANGE(0xC0, 0xC1) AM_NOP /* LCD */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( pda600 ) diff --git a/src/mame/drivers/pdp1.cpp b/src/mame/drivers/pdp1.cpp index 2863f384518..7da4491344c 100644 --- a/src/mame/drivers/pdp1.cpp +++ b/src/mame/drivers/pdp1.cpp @@ -71,9 +71,10 @@ To load and play a game: */ -ADDRESS_MAP_START(pdp1_state::pdp1_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM -ADDRESS_MAP_END +void pdp1_state::pdp1_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); +} static INPUT_PORTS_START( pdp1 ) PORT_START("SPACEWAR") /* 0: spacewar controllers */ diff --git a/src/mame/drivers/pdp11.cpp b/src/mame/drivers/pdp11.cpp index 526e5d967d4..20be653321a 100644 --- a/src/mame/drivers/pdp11.cpp +++ b/src/mame/drivers/pdp11.cpp @@ -161,21 +161,23 @@ WRITE16_MEMBER(pdp11_state::teletype_ctrl_w) } } -ADDRESS_MAP_START(pdp11_state::pdp11_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xdfff ) AM_RAM // RAM - AM_RANGE( 0xea00, 0xfeff ) AM_ROM - AM_RANGE( 0xff70, 0xff77 ) AM_READWRITE(teletype_ctrl_r,teletype_ctrl_w) - - AM_RANGE( 0xfe78, 0xfe7b ) AM_DEVWRITE("rx01", rx01_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pdp11_state::pdp11qb_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xe9ff ) AM_RAM // RAM - AM_RANGE( 0xea00, 0xefff ) AM_ROM - AM_RANGE( 0xf000, 0xffff ) AM_RAM -ADDRESS_MAP_END +void pdp11_state::pdp11_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).ram(); // RAM + map(0xea00, 0xfeff).rom(); + map(0xff70, 0xff77).rw(this, FUNC(pdp11_state::teletype_ctrl_r), FUNC(pdp11_state::teletype_ctrl_w)); + + map(0xfe78, 0xfe7b).w("rx01", FUNC(rx01_device::write)); +} + +void pdp11_state::pdp11qb_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xe9ff).ram(); // RAM + map(0xea00, 0xefff).rom(); + map(0xf000, 0xffff).ram(); +} #define M9312_PORT_CONFSETTING \ PORT_CONFSETTING ( 0x00, "'DL' BOOT prom for RL11 controller") \ diff --git a/src/mame/drivers/pecom.cpp b/src/mame/drivers/pecom.cpp index 7903507ea94..3c3a292a943 100644 --- a/src/mame/drivers/pecom.cpp +++ b/src/mame/drivers/pecom.cpp @@ -17,20 +17,22 @@ /* Address maps */ -ADDRESS_MAP_START(pecom_state::pecom64_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x4000, 0x7fff ) AM_RAMBANK("bank2") - AM_RANGE( 0x8000, 0xbfff ) AM_ROM // ROM 1 - AM_RANGE( 0xc000, 0xf3ff ) AM_ROM // ROM 2 - AM_RANGE( 0xf000, 0xf7ff ) AM_RAMBANK("bank3") // CDP1869 / ROM - AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank4") // CDP1869 / ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pecom_state::pecom64_io) - AM_RANGE(0x01, 0x01) AM_WRITE(pecom_bank_w) - AM_RANGE(0x03, 0x03) AM_READ(pecom_keyboard_r) - AM_RANGE(0x03, 0x07) AM_WRITE(pecom_cdp1869_w) -ADDRESS_MAP_END +void pecom_state::pecom64_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).rom(); // ROM 1 + map(0xc000, 0xf3ff).rom(); // ROM 2 + map(0xf000, 0xf7ff).bankrw("bank3"); // CDP1869 / ROM + map(0xf800, 0xffff).bankrw("bank4"); // CDP1869 / ROM +} + +void pecom_state::pecom64_io(address_map &map) +{ + map(0x01, 0x01).w(this, FUNC(pecom_state::pecom_bank_w)); + map(0x03, 0x03).r(this, FUNC(pecom_state::pecom_keyboard_r)); + map(0x03, 0x07).w(this, FUNC(pecom_state::pecom_cdp1869_w)); +} /* Input ports */ /* Pecom 64 keyboard layout is as follows diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp index ccaa03426a2..b0a2e820eba 100644 --- a/src/mame/drivers/pegasus.cpp +++ b/src/mame/drivers/pegasus.cpp @@ -193,24 +193,26 @@ READ8_MEMBER( pegasus_state::pegasus_protection_r ) return data; } -ADDRESS_MAP_START(pegasus_state::pegasus_mem) - ADDRESS_MAP_UNMAP_HIGH +void pegasus_state::pegasus_mem(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x0000, 0x2fff) // mapped by the cartslots 1-3 - AM_RANGE(0xb000, 0xbdff) AM_RAM - AM_RANGE(0xbe00, 0xbfff) AM_RAM AM_SHARE("videoram") + map(0xb000, 0xbdff).ram(); + map(0xbe00, 0xbfff).ram().share("videoram"); //AM_RANGE(0xc000, 0xdfff) // mapped by the cartslots 4-5 - AM_RANGE(0xe000, 0xe1ff) AM_READ(pegasus_protection_r) - AM_RANGE(0xe200, 0xe3ff) AM_READWRITE(pegasus_pcg_r,pegasus_pcg_w) - AM_RANGE(0xe400, 0xe403) AM_MIRROR(0x1fc) AM_DEVREADWRITE("pia_u", pia6821_device, read, write) - AM_RANGE(0xe600, 0xe603) AM_MIRROR(0x1fc) AM_DEVREADWRITE("pia_s", pia6821_device, read, write) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pegasus_state::pegasusm_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(pegasus_mem) - AM_RANGE(0x5000, 0xafff) AM_RAM -ADDRESS_MAP_END + map(0xe000, 0xe1ff).r(this, FUNC(pegasus_state::pegasus_protection_r)); + map(0xe200, 0xe3ff).rw(this, FUNC(pegasus_state::pegasus_pcg_r), FUNC(pegasus_state::pegasus_pcg_w)); + map(0xe400, 0xe403).mirror(0x1fc).rw(m_pia_u, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe600, 0xe603).mirror(0x1fc).rw(m_pia_s, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf000, 0xffff).rom(); +} + +void pegasus_state::pegasusm_mem(address_map &map) +{ + map.unmap_value_high(); + pegasus_mem(map); + map(0x5000, 0xafff).ram(); +} /* Input ports */ static INPUT_PORTS_START( pegasus ) diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp index 568ba21f66d..ae07914556f 100644 --- a/src/mame/drivers/pencil2.cpp +++ b/src/mame/drivers/pencil2.cpp @@ -129,36 +129,38 @@ private: required_device<generic_slot_device> m_cart; }; -ADDRESS_MAP_START(pencil2_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x5fff) AM_WRITENOP // stop error log filling up - AM_RANGE(0x6000, 0x67ff) AM_MIRROR(0x1800) AM_RAM +void pencil2_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x5fff).nopw(); // stop error log filling up + map(0x6000, 0x67ff).mirror(0x1800).ram(); //AM_RANGE(0x8000, 0xffff) // mapped by the cartslot -ADDRESS_MAP_END - -ADDRESS_MAP_START(pencil2_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x10, 0x1f) AM_WRITE(port10_w) - AM_RANGE(0x30, 0x3f) AM_WRITE(port30_w) - AM_RANGE(0x80, 0x9f) AM_WRITE(port80_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0xa1, 0xa1) AM_MIRROR(0x1e) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0xc0, 0xdf) AM_WRITE(portc0_w) - AM_RANGE(0xe0, 0xff) AM_DEVWRITE("sn76489a", sn76489a_device, write) - AM_RANGE(0xe0, 0xe0) AM_READ_PORT("E0") - AM_RANGE(0xe1, 0xe1) AM_READ_PORT("E1") - AM_RANGE(0xe2, 0xe2) AM_READ(porte2_r) - AM_RANGE(0xe3, 0xe3) AM_READ_PORT("E3") - AM_RANGE(0xe4, 0xe4) AM_READ_PORT("E4") - AM_RANGE(0xe6, 0xe6) AM_READ_PORT("E6") - AM_RANGE(0xe8, 0xe8) AM_READ_PORT("E8") - AM_RANGE(0xea, 0xea) AM_READ_PORT("EA") - AM_RANGE(0xf0, 0xf0) AM_READ_PORT("F0") - AM_RANGE(0xf2, 0xf2) AM_READ_PORT("F2") -ADDRESS_MAP_END +} + +void pencil2_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x0f).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x10, 0x1f).w(this, FUNC(pencil2_state::port10_w)); + map(0x30, 0x3f).w(this, FUNC(pencil2_state::port30_w)); + map(0x80, 0x9f).w(this, FUNC(pencil2_state::port80_w)); + map(0xa0, 0xa0).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0xa1, 0xa1).mirror(0x1e).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0xc0, 0xdf).w(this, FUNC(pencil2_state::portc0_w)); + map(0xe0, 0xff).w("sn76489a", FUNC(sn76489a_device::write)); + map(0xe0, 0xe0).portr("E0"); + map(0xe1, 0xe1).portr("E1"); + map(0xe2, 0xe2).r(this, FUNC(pencil2_state::porte2_r)); + map(0xe3, 0xe3).portr("E3"); + map(0xe4, 0xe4).portr("E4"); + map(0xe6, 0xe6).portr("E6"); + map(0xe8, 0xe8).portr("E8"); + map(0xea, 0xea).portr("EA"); + map(0xf0, 0xf0).portr("F0"); + map(0xf2, 0xf2).portr("F2"); +} READ8_MEMBER( pencil2_state::porte2_r) { diff --git a/src/mame/drivers/pengadvb.cpp b/src/mame/drivers/pengadvb.cpp index ddfd39bc020..34e01c4a6be 100644 --- a/src/mame/drivers/pengadvb.cpp +++ b/src/mame/drivers/pengadvb.cpp @@ -101,34 +101,37 @@ WRITE8_MEMBER(pengadvb_state::megarom_bank_w) m_bank[offset >> 13 & 3]->set_entry(data & 0xf); } -ADDRESS_MAP_START(pengadvb_state::program_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w) // 4 pages of 16KB -ADDRESS_MAP_END +void pengadvb_state::program_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(pengadvb_state::mem_r), FUNC(pengadvb_state::mem_w)); // 4 pages of 16KB +} -ADDRESS_MAP_START(pengadvb_state::bank_mem) +void pengadvb_state::bank_mem(address_map &map) +{ // slot 0, MSX BIOS - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("maincpu", 0) + map(0x00000, 0x07fff).rom().region("maincpu", 0); // slot 1, MegaROM - AM_RANGE(0x14000, 0x15fff) AM_ROMBANK("bank0") - AM_RANGE(0x16000, 0x17fff) AM_ROMBANK("bank1") - AM_RANGE(0x18000, 0x19fff) AM_ROMBANK("bank2") - AM_RANGE(0x1a000, 0x1bfff) AM_ROMBANK("bank3") - AM_RANGE(0x14000, 0x1bfff) AM_WRITE(megarom_bank_w) + map(0x14000, 0x15fff).bankr("bank0"); + map(0x16000, 0x17fff).bankr("bank1"); + map(0x18000, 0x19fff).bankr("bank2"); + map(0x1a000, 0x1bfff).bankr("bank3"); + map(0x14000, 0x1bfff).w(this, FUNC(pengadvb_state::megarom_bank_w)); // slot 3, 16KB RAM - AM_RANGE(0x3c000, 0x3ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pengadvb_state::io_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x98, 0x98) AM_DEVREADWRITE("tms9128", tms9128_device, vram_read, vram_write) - AM_RANGE(0x99, 0x99) AM_DEVREADWRITE("tms9128", tms9128_device, register_read, register_write) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END + map(0x3c000, 0x3ffff).ram(); +} + +void pengadvb_state::io_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x98, 0x98).rw("tms9128", FUNC(tms9128_device::vram_read), FUNC(tms9128_device::vram_write)); + map(0x99, 0x99).rw("tms9128", FUNC(tms9128_device::register_read), FUNC(tms9128_device::register_write)); + map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/pengo.cpp b/src/mame/drivers/pengo.cpp index 7738d7f2e97..a2623011130 100644 --- a/src/mame/drivers/pengo.cpp +++ b/src/mame/drivers/pengo.cpp @@ -139,44 +139,47 @@ WRITE_LINE_MEMBER(pengo_state::irq_mask_w) m_irq_mask = state; } -ADDRESS_MAP_START(pengo_state::pengo_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pacman_videoram_w) AM_SHARE("videoram") /* video and color RAM, scratchpad RAM, sprite codes */ - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pacman_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8fef) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9000, 0x901f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x9020, 0x902f) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x9000, 0x903f) AM_READ_PORT("DSW1") - AM_RANGE(0x9040, 0x907f) AM_READ_PORT("DSW0") - AM_RANGE(0x9040, 0x9047) AM_DEVWRITE("latch", ls259_device, write_d0) - AM_RANGE(0x9070, 0x9070) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9080, 0x90bf) AM_READ_PORT("IN1") - AM_RANGE(0x90c0, 0x90ff) AM_READ_PORT("IN0") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pengo_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8800, 0x8fef) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pengo_state::jrpacmbl_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(jrpacman_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8800, 0x8fef) AM_RAM - AM_RANGE(0x8ff0, 0x8fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9000, 0x901f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0x9020, 0x902f) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x9030, 0x9030) AM_WRITE(jrpacman_scroll_w) - AM_RANGE(0x9040, 0x904f) AM_READ_PORT("DSW") - AM_RANGE(0x9040, 0x9047) AM_DEVWRITE("latch", ls259_device, write_d0) - AM_RANGE(0x9070, 0x9070) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9080, 0x90bf) AM_READ_PORT("P2") - AM_RANGE(0x90c0, 0x90ff) AM_READ_PORT("P1") -ADDRESS_MAP_END +void pengo_state::pengo_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(pengo_state::pacman_videoram_w)).share("videoram"); /* video and color RAM, scratchpad RAM, sprite codes */ + map(0x8400, 0x87ff).ram().w(this, FUNC(pengo_state::pacman_colorram_w)).share("colorram"); + map(0x8800, 0x8fef).ram().share("mainram"); + map(0x8ff0, 0x8fff).ram().share("spriteram"); + map(0x9000, 0x901f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x9020, 0x902f).writeonly().share("spriteram2"); + map(0x9000, 0x903f).portr("DSW1"); + map(0x9040, 0x907f).portr("DSW0"); + map(0x9040, 0x9047).w("latch", FUNC(ls259_device::write_d0)); + map(0x9070, 0x9070).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x9080, 0x90bf).portr("IN1"); + map(0x90c0, 0x90ff).portr("IN0"); +} + + +void pengo_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8800, 0x8fef).ram().share("mainram"); + map(0x8ff0, 0x8fff).ram().share("spriteram"); +} + + +void pengo_state::jrpacmbl_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(pengo_state::jrpacman_videoram_w)).share("videoram"); + map(0x8800, 0x8fef).ram(); + map(0x8ff0, 0x8fff).ram().share("spriteram"); + map(0x9000, 0x901f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0x9020, 0x902f).writeonly().share("spriteram2"); + map(0x9030, 0x9030).w(this, FUNC(pengo_state::jrpacman_scroll_w)); + map(0x9040, 0x904f).portr("DSW"); + map(0x9040, 0x9047).w("latch", FUNC(ls259_device::write_d0)); + map(0x9070, 0x9070).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x9080, 0x90bf).portr("P2"); + map(0x90c0, 0x90ff).portr("P1"); +} diff --git a/src/mame/drivers/pentagon.cpp b/src/mame/drivers/pentagon.cpp index cc9444cae04..73bd073b387 100644 --- a/src/mame/drivers/pentagon.cpp +++ b/src/mame/drivers/pentagon.cpp @@ -181,31 +181,34 @@ READ8_MEMBER(pentagon_state::beta_disable_r) return m_program->read_byte(offset + 0x4000); } -ADDRESS_MAP_START(pentagon_state::pentagon_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pentagon_state::pentagon_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0000) AM_WRITE(pentagon_port_7ffd_w) AM_MIRROR(0x7ffd) // (A15 | A1) == 0 - AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00) - AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00) - AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00) - AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00) - AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xff00) - AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pentagon_state::pentagon_switch) - AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with next because we want real addresses on the 3e00-3fff range - AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r) - AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r) -ADDRESS_MAP_END +void pentagon_state::pentagon_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void pentagon_state::pentagon_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0000).w(this, FUNC(pentagon_state::pentagon_port_7ffd_w)).mirror(0x7ffd); // (A15 | A1) == 0 + map(0x001f, 0x001f).rw(m_beta, FUNC(beta_disk_device::status_r), FUNC(beta_disk_device::command_w)).mirror(0xff00); + map(0x003f, 0x003f).rw(m_beta, FUNC(beta_disk_device::track_r), FUNC(beta_disk_device::track_w)).mirror(0xff00); + map(0x005f, 0x005f).rw(m_beta, FUNC(beta_disk_device::sector_r), FUNC(beta_disk_device::sector_w)).mirror(0xff00); + map(0x007f, 0x007f).rw(m_beta, FUNC(beta_disk_device::data_r), FUNC(beta_disk_device::data_w)).mirror(0xff00); + map(0x00fe, 0x00fe).rw(this, FUNC(pentagon_state::spectrum_port_fe_r), FUNC(pentagon_state::spectrum_port_fe_w)).select(0xff00); + map(0x00ff, 0x00ff).rw(m_beta, FUNC(beta_disk_device::state_r), FUNC(beta_disk_device::param_w)).mirror(0xff00); + map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd); + map(0xc000, 0xc000).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3ffd); +} + +void pentagon_state::pentagon_switch(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(pentagon_state::beta_neutral_r)); // Overlap with next because we want real addresses on the 3e00-3fff range + map(0x3d00, 0x3dff).r(this, FUNC(pentagon_state::beta_enable_r)); + map(0x4000, 0xffff).r(this, FUNC(pentagon_state::beta_disable_r)); +} MACHINE_RESET_MEMBER(pentagon_state,pentagon) { diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp index 0ffe4cbafcb..3a7e6690b5e 100644 --- a/src/mame/drivers/peoplepc.cpp +++ b/src/mame/drivers/peoplepc.cpp @@ -190,31 +190,33 @@ void peoplepc_state::machine_start() m_flop1->get_device()->setup_unload_cb(floppy_image_device::unload_cb(&peoplepc_state::floppy_unload, this)); } -ADDRESS_MAP_START(peoplepc_state::peoplepc_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x7ffff) AM_RAM - AM_RANGE(0xc0000, 0xdffff) AM_RAM AM_SHARE("gvram") - AM_RANGE(0xe0000, 0xe3fff) AM_RAM AM_SHARE("cvram") - AM_RANGE(0xe4000, 0xe5fff) AM_WRITE(charram_w) - AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(peoplepc_state::peoplepc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0014, 0x0017) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0018, 0x001b) AM_DEVREADWRITE8("pic8259_0", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x0020, 0x0031) AM_DEVREADWRITE8("i8257", i8257_device, read, write, 0x00ff) - AM_RANGE(0x0040, 0x0047) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0x00ff) - AM_RANGE(0x0048, 0x004f) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff) - AM_RANGE(0x0054, 0x0055) AM_DEVREADWRITE8("i8251_0", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x0056, 0x0057) AM_DEVREADWRITE8("i8251_0", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x005c, 0x005d) AM_DEVREADWRITE8("i8251_1", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x005e, 0x005f) AM_DEVREADWRITE8("i8251_1", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0x0064, 0x0067) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff) - AM_RANGE(0x006c, 0x006d) AM_DEVWRITE8("h46505", mc6845_device, address_w, 0x00ff) - AM_RANGE(0x006e, 0x006f) AM_DEVREADWRITE8("h46505", mc6845_device, register_r, register_w, 0x00ff) - AM_RANGE(0x0070, 0x0071) AM_WRITE8(dmapg_w, 0x00ff) -ADDRESS_MAP_END +void peoplepc_state::peoplepc_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x7ffff).ram(); + map(0xc0000, 0xdffff).ram().share("gvram"); + map(0xe0000, 0xe3fff).ram().share("cvram"); + map(0xe4000, 0xe5fff).w(this, FUNC(peoplepc_state::charram_w)); + map(0xfe000, 0xfffff).rom().region("maincpu", 0); +} + +void peoplepc_state::peoplepc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0014, 0x0017).rw(m_pic_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0018, 0x001b).rw("pic8259_0", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x0020, 0x0031).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write)).umask16(0x00ff); + map(0x0040, 0x0047).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x0048, 0x004f).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x0054, 0x0054).rw(m_8251key, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0056, 0x0056).rw(m_8251key, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x005c, 0x005c).rw(m_8251ser, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x005e, 0x005e).rw(m_8251ser, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x0064, 0x0067).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); + map(0x006c, 0x006c).w("h46505", FUNC(mc6845_device::address_w)); + map(0x006e, 0x006e).rw("h46505", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0070, 0x0070).w(this, FUNC(peoplepc_state::dmapg_w)); +} static SLOT_INTERFACE_START( peoplepc_floppies ) SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp index e006381d1be..e199f274eb8 100644 --- a/src/mame/drivers/peplus.cpp +++ b/src/mame/drivers/peplus.cpp @@ -1011,63 +1011,65 @@ GFXDECODE_END * Memory map information * *************************/ -ADDRESS_MAP_START(peplus_state::peplus_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("prograram") -ADDRESS_MAP_END +void peplus_state::peplus_map(address_map &map) +{ + map(0x0000, 0xffff).rom().share("prograram"); +} -ADDRESS_MAP_START(peplus_state::peplus_iomap) +void peplus_state::peplus_iomap(address_map &map) +{ // Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only) - AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(peplus_cmos_w) AM_SHARE("cmos") + map(0x0000, 0x1fff).ram().w(this, FUNC(peplus_state::peplus_cmos_w)).share("cmos"); // CRT Controller - AM_RANGE(0x2008, 0x2008) AM_WRITE(peplus_crtc_mode_w) - AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w) + map(0x2008, 0x2008).w(this, FUNC(peplus_state::peplus_crtc_mode_w)); + map(0x2080, 0x2080).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x2081, 0x2081).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x2083, 0x2083).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(peplus_state::peplus_crtc_display_w)); // Superboard Data - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("s3000_ram") + map(0x3000, 0x3fff).ram().share("s3000_ram"); // Sound and Dipswitches - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_device, data_w) + map(0x4000, 0x4000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x4004, 0x4004).portr("SW1") /* likely ay8910 input port, not direct */ .w("aysnd", FUNC(ay8910_device::data_w)); // Superboard Data - AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("s5000_ram") + map(0x5000, 0x5fff).ram().share("s5000_ram"); // Background Color Latch - AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w) + map(0x6000, 0x6000).r(this, FUNC(peplus_state::peplus_bgcolor_r)).w(this, FUNC(peplus_state::peplus_bgcolor_w)); // Bogus Location for Video RAM - AM_RANGE(0x06001, 0x06400) AM_RAM AM_SHARE("videoram") + map(0x06001, 0x06400).ram().share("videoram"); // Superboard Data - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("s7000_ram") + map(0x7000, 0x7fff).ram().share("s7000_ram"); // Input Bank A, Output Bank C - AM_RANGE(0x8000, 0x8000) AM_READ(peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w) + map(0x8000, 0x8000).r(this, FUNC(peplus_state::peplus_input_bank_a_r)).w(this, FUNC(peplus_state::peplus_output_bank_c_w)); // Drop Door, I2C EEPROM Writes - AM_RANGE(0x9000, 0x9000) AM_READ(peplus_dropdoor_r) AM_WRITE(i2c_nvram_w) + map(0x9000, 0x9000).r(this, FUNC(peplus_state::peplus_dropdoor_r)).w(this, FUNC(peplus_state::i2c_nvram_w)); // Input Banks B & C, Output Bank B - AM_RANGE(0xa000, 0xa000) AM_READ(peplus_input0_r) AM_WRITE(peplus_output_bank_b_w) + map(0xa000, 0xa000).r(this, FUNC(peplus_state::peplus_input0_r)).w(this, FUNC(peplus_state::peplus_output_bank_b_w)); // Superboard Data - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("sb000_ram") + map(0xb000, 0xbfff).ram().share("sb000_ram"); // Output Bank A - AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w) + map(0xc000, 0xc000).r(this, FUNC(peplus_state::peplus_watchdog_r)).w(this, FUNC(peplus_state::peplus_output_bank_a_w)); // Superboard Data - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sd000_ram") + map(0xd000, 0xdfff).ram().share("sd000_ram"); // DUART - AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w) + map(0xe000, 0xe00f).rw(this, FUNC(peplus_state::peplus_duart_r), FUNC(peplus_state::peplus_duart_w)); // Superboard Data - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sf000_ram") -ADDRESS_MAP_END + map(0xf000, 0xffff).ram().share("sf000_ram"); +} /************************* diff --git a/src/mame/drivers/pes.cpp b/src/mame/drivers/pes.cpp index 450c0c5bd66..0bb2aab1e57 100644 --- a/src/mame/drivers/pes.cpp +++ b/src/mame/drivers/pes.cpp @@ -223,18 +223,20 @@ void pes_state::machine_reset() Address Maps ******************************************************************************/ -ADDRESS_MAP_START(pes_state::i80c31_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM /* 27C64 ROM */ +void pes_state::i80c31_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); /* 27C64 ROM */ // AM_RANGE(0x2000, 0x3fff) AM_RAM /* 6164 8k SRAM, not populated */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(pes_state::i80c31_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0, 0x0) AM_WRITE(rsq_wsq_w) /* /WS(0) and /RS(1) */ - AM_RANGE(0x1, 0x1) AM_READWRITE(port1_r, port1_w) /* tms5220 reads and writes */ - AM_RANGE(0x3, 0x3) AM_READWRITE(port3_r, port3_w) /* writes and reads from port 3, see top of file */ -ADDRESS_MAP_END +void pes_state::i80c31_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0, 0x0).w(this, FUNC(pes_state::rsq_wsq_w)); /* /WS(0) and /RS(1) */ + map(0x1, 0x1).rw(this, FUNC(pes_state::port1_r), FUNC(pes_state::port1_w)); /* tms5220 reads and writes */ + map(0x3, 0x3).rw(this, FUNC(pes_state::port3_r), FUNC(pes_state::port3_w)); /* writes and reads from port 3, see top of file */ +} /****************************************************************************** Input Ports diff --git a/src/mame/drivers/pet.cpp b/src/mame/drivers/pet.cpp index 45ee779b3d4..cb73e92d25c 100644 --- a/src/mame/drivers/pet.cpp +++ b/src/mame/drivers/pet.cpp @@ -884,18 +884,20 @@ WRITE8_MEMBER( cbm8296_state::write ) // ADDRESS_MAP( pet2001_mem ) //------------------------------------------------- -ADDRESS_MAP_START(pet_state::pet2001_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void pet_state::pet2001_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(pet_state::read), FUNC(pet_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( cbm8296_mem ) //------------------------------------------------- -ADDRESS_MAP_START(cbm8296_state::cbm8296_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void cbm8296_state::cbm8296_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(cbm8296_state::read), FUNC(cbm8296_state::write)); +} diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp index 8c18d6942c9..7cb2b7e5868 100644 --- a/src/mame/drivers/peyper.cpp +++ b/src/mame/drivers/peyper.cpp @@ -205,29 +205,31 @@ CUSTOM_INPUT_MEMBER(peyper_state::wolfman_replay_hs_r) } -ADDRESS_MAP_START(peyper_state::peyper_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x5FFF) AM_ROM - AM_RANGE(0x6000, 0x67FF) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(peyper_state::peyper_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x05, 0x05) AM_DEVREAD("ay1", ay8910_device, data_r) // only read by Ator? - AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x09, 0x09) AM_DEVREAD("ay2", ay8910_device, data_r) // never actually read? - AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(sol_w) - AM_RANGE(0x10, 0x18) AM_WRITE(lamp_w) - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW0") - AM_RANGE(0x24, 0x24) AM_READ_PORT("DSW1") - AM_RANGE(0x28, 0x28) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2c, 0x2c) AM_WRITE(lamp7_w) -ADDRESS_MAP_END +void peyper_state::peyper_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5FFF).rom(); + map(0x6000, 0x67FF).ram().share("nvram"); +} + +void peyper_state::peyper_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0x04, 0x04).w("ay1", FUNC(ay8910_device::address_w)); + map(0x05, 0x05).r("ay1", FUNC(ay8910_device::data_r)); // only read by Ator? + map(0x06, 0x06).w("ay1", FUNC(ay8910_device::data_w)); + map(0x08, 0x08).w("ay2", FUNC(ay8910_device::address_w)); + map(0x09, 0x09).r("ay2", FUNC(ay8910_device::data_r)); // never actually read? + map(0x0a, 0x0a).w("ay2", FUNC(ay8910_device::data_w)); + map(0x0c, 0x0c).w(this, FUNC(peyper_state::sol_w)); + map(0x10, 0x18).w(this, FUNC(peyper_state::lamp_w)); + map(0x20, 0x20).portr("DSW0"); + map(0x24, 0x24).portr("DSW1"); + map(0x28, 0x28).portr("SYSTEM"); + map(0x2c, 0x2c).w(this, FUNC(peyper_state::lamp7_w)); +} static INPUT_PORTS_START( pbsonic_generic ) /* SYSTEM : port 0x28 (cpl'ed) */ diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp index b029527f21e..dbf403c5902 100644 --- a/src/mame/drivers/pg685.cpp +++ b/src/mame/drivers/pg685.cpp @@ -155,75 +155,78 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(pg685_state::pg675_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0xbffff) AM_RAM - AM_RANGE(0xf0000,0xf1fff) AM_RAM - AM_RANGE(0xf9f00, 0xf9f01) AM_DEVREADWRITE("kbdc", i8279_device, read, write) - AM_RANGE(0xf9f02, 0xf9f02) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0xf9f03, 0xf9f03) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xf9f04, 0xf9f04) AM_READWRITE(f9f04_r, f9f04_w) - AM_RANGE(0xf9f06, 0xf9f07) AM_DEVREADWRITE("mainpic", pic8259_device, read, write) - AM_RANGE(0xf9f08, 0xf9f08) AM_DEVREADWRITE("mainuart", i8251_device, data_r, data_w) - AM_RANGE(0xf9f09, 0xf9f09) AM_DEVREADWRITE("mainuart", i8251_device, status_r, control_w) - AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE("fdc", fd1797_device, read, write) - AM_RANGE(0xf9f24, 0xf9f24) AM_READWRITE(f9f24_r, f9f24_w) - AM_RANGE(0xf9f28, 0xf9f2b) AM_DEVREADWRITE("modppi1", i8255_device, read, write) - AM_RANGE(0xf9f2c, 0xf9f2f) AM_DEVREADWRITE("modppi2", i8255_device, read, write) - AM_RANGE(0xf9f30, 0xf9f30) AM_DEVREADWRITE("moduart", i8251_device, data_r, data_w) - AM_RANGE(0xf9f31, 0xf9f31) AM_DEVREADWRITE("moduart", i8251_device, status_r, control_w) - AM_RANGE(0xf9f32, 0xf9f32) AM_WRITE(f9f32_w) - AM_RANGE(0xf9f33, 0xf9f33) AM_READ(f9f33_r) - AM_RANGE(0xf9f40, 0xf9f5f) AM_DEVREADWRITE("rtc", mm58167_device, read, write) - AM_RANGE(0xfa000,0xfa7ff) AM_RAM AM_SHARE ("charcopy") - AM_RANGE(0xfb000,0xfb7ff) AM_RAM AM_SHARE ("framebuffer") - AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pg685_state::pg685_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(pg675_mem) - AM_RANGE(0xf9f34, 0xf9f37) AM_DEVREADWRITE("bppit", pit8253_device, read, write) - AM_RANGE(0xf9f38, 0xf9f3b) AM_DEVREADWRITE("bpuart", mc2661_device, read, write) - AM_RANGE(0xf9f3c, 0xf9f3d) AM_DEVREADWRITE("bppic", pic8259_device, read, write) - AM_RANGE(0xf9f3e, 0xf9f3e) AM_WRITE(f9f3e_w) - AM_RANGE(0xf9f70, 0xf9f77) AM_DEVREADWRITE("hdc", wd2010_device, read, write) - AM_RANGE(0xf9f78, 0xf9f78) AM_READWRITE(f9f78_r, f9f78_w) - AM_RANGE(0xf9f79, 0xf9f79) AM_WRITE(f9f79_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pg685_state::pg685oua12_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0xdffff) AM_RAM - AM_RANGE(0xe0000,0xeffff) AM_RAM AM_SHARE ("framebuffer16") - AM_RANGE(0xf0000,0xf1fff) AM_RAM - AM_RANGE(0xf9f00, 0xf9f01) AM_DEVREADWRITE8("kbdc", i8279_device, read, write, 0xffff) - AM_RANGE(0xf9f04, 0xf9f05) AM_READWRITE8(f9f04_r, f9f04_w, 0x00ff) - AM_RANGE(0xf9f06, 0xf9f07) AM_DEVREADWRITE8("mainpic", pic8259_device, read, write, 0xffff) - AM_RANGE(0xf9f08, 0xf9f09) AM_DEVREADWRITE8("mainuart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf9f08, 0xf9f09) AM_DEVREADWRITE8("mainuart", i8251_device, status_r, control_w, 0xff00) - AM_RANGE(0xf9f20, 0xf9f23) AM_DEVREADWRITE8("fdc", fd1797_device, read, write, 0xffff) - AM_RANGE(0xf9f24, 0xf9f25) AM_READWRITE8(f9f24_r, f9f24_w, 0x00ff) - AM_RANGE(0xf9f28, 0xf9f2b) AM_DEVREADWRITE8("modppi1", i8255_device, read, write, 0xffff) - AM_RANGE(0xf9f2c, 0xf9f2f) AM_DEVREADWRITE8("modppi2", i8255_device, read, write, 0xffff) - AM_RANGE(0xf9f30, 0xf9f31) AM_DEVREADWRITE8("moduart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf9f30, 0xf9f31) AM_DEVREADWRITE8("moduart", i8251_device, status_r, control_w, 0xff00) - AM_RANGE(0xf9f32, 0xf9f33) AM_WRITE8(f9f32_w, 0x00ff) - AM_RANGE(0xf9f32, 0xf9f33) AM_READ8(f9f33_r, 0xff00) - AM_RANGE(0xf9f34, 0xf9f37) AM_DEVREADWRITE8("bppit", pit8253_device, read, write, 0xffff) - AM_RANGE(0xf9f38, 0xf9f3b) AM_DEVREADWRITE8("bpuart", mc2661_device, read, write, 0xffff) - AM_RANGE(0xf9f3c, 0xf9f3d) AM_DEVREADWRITE8("bppic", pic8259_device, read, write, 0xffff) - AM_RANGE(0xf9f3e, 0xf9f3f) AM_WRITE8(f9f3e_w, 0x00ff) - AM_RANGE(0xf9f3e, 0xf9f3f) AM_READ8(f9f3f_r, 0xff00) - AM_RANGE(0xf9f40, 0xf9f5f) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0xffff) - AM_RANGE(0xf9f70, 0xf9f77) AM_DEVREADWRITE8("hdc", wd2010_device, read, write, 0xffff) - AM_RANGE(0xf9f78, 0xf9f79) AM_READWRITE8(f9f78_r, f9f78_w, 0x00ff) - AM_RANGE(0xf9f78, 0xf9f79) AM_WRITE8(f9f79_w, 0xff00) - AM_RANGE(0xf9f80, 0xf9f81) AM_DEVREADWRITE8("crtc", mc6845_device, status_r, address_w, 0x00ff) - AM_RANGE(0xf9f80, 0xf9f81) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) - AM_RANGE(0xfc000,0xfffff) AM_RAM // BIOS RAM shadow - AM_RANGE(0xffc000,0xffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void pg685_state::pg675_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xbffff).ram(); + map(0xf0000, 0xf1fff).ram(); + map(0xf9f00, 0xf9f01).rw("kbdc", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xf9f02, 0xf9f02).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xf9f03, 0xf9f03).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xf9f04, 0xf9f04).rw(this, FUNC(pg685_state::f9f04_r), FUNC(pg685_state::f9f04_w)); + map(0xf9f06, 0xf9f07).rw("mainpic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf9f08, 0xf9f08).rw("mainuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf9f09, 0xf9f09).rw("mainuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf9f20, 0xf9f23).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)); + map(0xf9f24, 0xf9f24).rw(this, FUNC(pg685_state::f9f24_r), FUNC(pg685_state::f9f24_w)); + map(0xf9f28, 0xf9f2b).rw("modppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf9f2c, 0xf9f2f).rw("modppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf9f30, 0xf9f30).rw("moduart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf9f31, 0xf9f31).rw("moduart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf9f32, 0xf9f32).w(this, FUNC(pg685_state::f9f32_w)); + map(0xf9f33, 0xf9f33).r(this, FUNC(pg685_state::f9f33_r)); + map(0xf9f40, 0xf9f5f).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)); + map(0xfa000, 0xfa7ff).ram().share("charcopy"); + map(0xfb000, 0xfb7ff).ram().share("framebuffer"); + map(0xfc000, 0xfffff).rom().region("bios", 0); +} + +void pg685_state::pg685_mem(address_map &map) +{ + map.unmap_value_high(); + pg675_mem(map); + map(0xf9f34, 0xf9f37).rw("bppit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf9f3c, 0xf9f3d).rw("bppic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf9f3e, 0xf9f3e).w(this, FUNC(pg685_state::f9f3e_w)); + map(0xf9f70, 0xf9f77).rw("hdc", FUNC(wd2010_device::read), FUNC(wd2010_device::write)); + map(0xf9f78, 0xf9f78).rw(this, FUNC(pg685_state::f9f78_r), FUNC(pg685_state::f9f78_w)); + map(0xf9f79, 0xf9f79).w(this, FUNC(pg685_state::f9f79_w)); +} + +void pg685_state::pg685oua12_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xdffff).ram(); + map(0xe0000, 0xeffff).ram().share("framebuffer16"); + map(0xf0000, 0xf1fff).ram(); + map(0xf9f00, 0xf9f01).rw("kbdc", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xf9f04, 0xf9f04).rw(this, FUNC(pg685_state::f9f04_r), FUNC(pg685_state::f9f04_w)); + map(0xf9f06, 0xf9f07).rw("mainpic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf9f08, 0xf9f08).rw("mainuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf9f09, 0xf9f09).rw("mainuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf9f20, 0xf9f23).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)); + map(0xf9f24, 0xf9f24).rw(this, FUNC(pg685_state::f9f24_r), FUNC(pg685_state::f9f24_w)); + map(0xf9f28, 0xf9f2b).rw("modppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf9f2c, 0xf9f2f).rw("modppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf9f30, 0xf9f30).rw("moduart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf9f31, 0xf9f31).rw("moduart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf9f32, 0xf9f32).w(this, FUNC(pg685_state::f9f32_w)); + map(0xf9f33, 0xf9f33).r(this, FUNC(pg685_state::f9f33_r)); + map(0xf9f34, 0xf9f37).rw("bppit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf9f3c, 0xf9f3d).rw("bppic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf9f3e, 0xf9f3e).w(this, FUNC(pg685_state::f9f3e_w)); + map(0xf9f3f, 0xf9f3f).r(this, FUNC(pg685_state::f9f3f_r)); + map(0xf9f40, 0xf9f5f).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)); + map(0xf9f70, 0xf9f77).rw("hdc", FUNC(wd2010_device::read), FUNC(wd2010_device::write)); + map(0xf9f78, 0xf9f78).rw(this, FUNC(pg685_state::f9f78_r), FUNC(pg685_state::f9f78_w)); + map(0xf9f79, 0xf9f79).w(this, FUNC(pg685_state::f9f79_w)); + map(0xf9f80, 0xf9f80).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xf9f81, 0xf9f81).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xfc000, 0xfffff).ram(); // BIOS RAM shadow + map(0xffc000, 0xffffff).rom().region("bios", 0); +} //************************************************************************** diff --git a/src/mame/drivers/pgm.cpp b/src/mame/drivers/pgm.cpp index 42a22df302e..9cb598b0928 100644 --- a/src/mame/drivers/pgm.cpp +++ b/src/mame/drivers/pgm.cpp @@ -299,53 +299,58 @@ WRITE8_MEMBER(pgm_state::z80_l3_w) /*** Z80 (sound CPU)**********************************************************/ -ADDRESS_MAP_START(pgm_state::pgm_z80_mem) - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("z80_mainram") -ADDRESS_MAP_END +void pgm_state::pgm_z80_mem(address_map &map) +{ + map(0x0000, 0xffff).ram().share("z80_mainram"); +} -ADDRESS_MAP_START(pgm_state::pgm_z80_io) - AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE("ics", ics2115_device, read, write) - AM_RANGE(0x8100, 0x81ff) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) AM_WRITE(z80_l3_w) - AM_RANGE(0x8200, 0x82ff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) - AM_RANGE(0x8400, 0x84ff) AM_DEVREADWRITE("soundlatch2", generic_latch_8_device, read, write) -ADDRESS_MAP_END +void pgm_state::pgm_z80_io(address_map &map) +{ + map(0x8000, 0x8003).rw("ics", FUNC(ics2115_device::read), FUNC(ics2115_device::write)); + map(0x8100, 0x81ff).r(m_soundlatch3, FUNC(generic_latch_8_device::read)).w(this, FUNC(pgm_state::z80_l3_w)); + map(0x8200, 0x82ff).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); + map(0x8400, 0x84ff).rw("soundlatch2", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); +} /*** 68000 (main CPU) + variants for protection devices **********************/ -ADDRESS_MAP_START(pgm_state::pgm_base_mem) - AM_RANGE(0x700006, 0x700007) AM_WRITENOP // Watchdog? +void pgm_state::pgm_base_mem(address_map &map) +{ + map(0x700006, 0x700007).nopw(); // Watchdog? - AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_MIRROR(0x0e0000) AM_SHARE("sram") /* Main Ram */ + map(0x800000, 0x81ffff).ram().mirror(0x0e0000).share("sram"); /* Main Ram */ - AM_RANGE(0x900000, 0x907fff) AM_MIRROR(0x0f8000) AM_READWRITE(pgm_videoram_r, pgm_videoram_w) AM_SHARE("videoram") /* IGS023 VIDEO CHIP */ - AM_RANGE(0xa00000, 0xa011ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb0ffff) AM_RAM AM_SHARE("videoregs") /* Video Regs inc. Zoom Table */ + map(0x900000, 0x907fff).mirror(0x0f8000).rw(this, FUNC(pgm_state::pgm_videoram_r), FUNC(pgm_state::pgm_videoram_w)).share("videoram"); /* IGS023 VIDEO CHIP */ + map(0xa00000, 0xa011ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xb00000, 0xb0ffff).ram().share("videoregs"); /* Video Regs inc. Zoom Table */ - AM_RANGE(0xc00002, 0xc00003) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0xc00002, 0xc00003) AM_WRITE(m68k_l1_w) - AM_RANGE(0xc00004, 0xc00005) AM_DEVREADWRITE8("soundlatch2", generic_latch_8_device, read, write, 0x00ff) - AM_RANGE(0xc00006, 0xc00007) AM_DEVREADWRITE8("rtc", v3021_device, read, write, 0x00ff) - AM_RANGE(0xc00008, 0xc00009) AM_WRITE(z80_reset_w) - AM_RANGE(0xc0000a, 0xc0000b) AM_WRITE(z80_ctrl_w) - AM_RANGE(0xc0000c, 0xc0000d) AM_DEVREADWRITE8("soundlatch3", generic_latch_8_device, read, write, 0x00ff) + map(0xc00003, 0xc00003).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc00002, 0xc00003).w(this, FUNC(pgm_state::m68k_l1_w)); + map(0xc00005, 0xc00005).rw("soundlatch2", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); + map(0xc00007, 0xc00007).rw("rtc", FUNC(v3021_device::read), FUNC(v3021_device::write)); + map(0xc00008, 0xc00009).w(this, FUNC(pgm_state::z80_reset_w)); + map(0xc0000a, 0xc0000b).w(this, FUNC(pgm_state::z80_ctrl_w)); + map(0xc0000d, 0xc0000d).rw(m_soundlatch3, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); - AM_RANGE(0xc08000, 0xc08001) AM_READ_PORT("P1P2") - AM_RANGE(0xc08002, 0xc08003) AM_READ_PORT("P3P4") - AM_RANGE(0xc08004, 0xc08005) AM_READ_PORT("Service") - AM_RANGE(0xc08006, 0xc08007) AM_READ_PORT("DSW") AM_WRITE(pgm_coin_counter_w) + map(0xc08000, 0xc08001).portr("P1P2"); + map(0xc08002, 0xc08003).portr("P3P4"); + map(0xc08004, 0xc08005).portr("Service"); + map(0xc08006, 0xc08007).portr("DSW").w(this, FUNC(pgm_state::pgm_coin_counter_w)); - AM_RANGE(0xc10000, 0xc1ffff) AM_READWRITE(z80_ram_r, z80_ram_w) /* Z80 Program */ -ADDRESS_MAP_END + map(0xc10000, 0xc1ffff).rw(this, FUNC(pgm_state::z80_ram_r), FUNC(pgm_state::z80_ram_w)); /* Z80 Program */ +} -ADDRESS_MAP_START(pgm_state::pgm_mem) - AM_IMPORT_FROM(pgm_base_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* BIOS ROM */ -ADDRESS_MAP_END +void pgm_state::pgm_mem(address_map &map) +{ + pgm_base_mem(map); + map(0x000000, 0x0fffff).rom(); /* BIOS ROM */ +} -ADDRESS_MAP_START(pgm_state::pgm_basic_mem) - AM_IMPORT_FROM(pgm_mem) - AM_RANGE(0x100000, 0x3fffff) AM_ROMBANK("bank1") /* Game ROM */ -ADDRESS_MAP_END +void pgm_state::pgm_basic_mem(address_map &map) +{ + pgm_mem(map); + map(0x100000, 0x3fffff).bankr("bank1"); /* Game ROM */ +} /*** Input Ports *************************************************************/ diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index 5f4de7ad041..f92f37405a5 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -513,88 +513,92 @@ READ32_MEMBER(pgm2_state::pio_pdsr_r) return (module_data_r() == ASSERT_LINE ? 1 : 0) << 8; // fpga data read and status (bit 7, must be 0) } -ADDRESS_MAP_START(pgm2_state::pgm2_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM //AM_REGION("user1", 0x00000) // internal ROM +void pgm2_state::pgm2_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom(); //AM_REGION("user1", 0x00000) // internal ROM - AM_RANGE(0x02000000, 0x0200ffff) AM_RAM AM_SHARE("sram") // 'battery ram' (in CPU?) + map(0x02000000, 0x0200ffff).ram().share("sram"); // 'battery ram' (in CPU?) - AM_RANGE(0x03600000, 0x036bffff) AM_READWRITE(mcu_r, mcu_w) + map(0x03600000, 0x036bffff).rw(this, FUNC(pgm2_state::mcu_r), FUNC(pgm2_state::mcu_w)); - AM_RANGE(0x03900000, 0x03900003) AM_READ_PORT("INPUTS0") - AM_RANGE(0x03a00000, 0x03a00003) AM_READ_PORT("INPUTS1") + map(0x03900000, 0x03900003).portr("INPUTS0"); + map(0x03a00000, 0x03a00003).portr("INPUTS1"); - AM_RANGE(0x20000000, 0x2007ffff) AM_RAM AM_SHARE("mainram") + map(0x20000000, 0x2007ffff).ram().share("mainram"); - AM_RANGE(0x30000000, 0x30001fff) AM_RAM AM_SHARE("sp_videoram") // spriteram ('move' ram in test mode) + map(0x30000000, 0x30001fff).ram().share("sp_videoram"); // spriteram ('move' ram in test mode) - AM_RANGE(0x30020000, 0x30021fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x30040000, 0x30045fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") + map(0x30020000, 0x30021fff).ram().w(this, FUNC(pgm2_state::bg_videoram_w)).share("bg_videoram"); + map(0x30040000, 0x30045fff).ram().w(this, FUNC(pgm2_state::fg_videoram_w)).share("fg_videoram"); - AM_RANGE(0x30060000, 0x30063fff) AM_RAM_DEVWRITE("sp_palette", palette_device, write32) AM_SHARE("sp_palette") + map(0x30060000, 0x30063fff).ram().w(m_sp_palette, FUNC(palette_device::write32)).share("sp_palette"); - AM_RANGE(0x30080000, 0x30081fff) AM_RAM_DEVWRITE("bg_palette", palette_device, write32) AM_SHARE("bg_palette") + map(0x30080000, 0x30081fff).ram().w(m_bg_palette, FUNC(palette_device::write32)).share("bg_palette"); - AM_RANGE(0x300a0000, 0x300a07ff) AM_RAM_DEVWRITE("tx_palette", palette_device, write32) AM_SHARE("tx_palette") + map(0x300a0000, 0x300a07ff).ram().w(m_tx_palette, FUNC(palette_device::write32)).share("tx_palette"); - AM_RANGE(0x300c0000, 0x300c01ff) AM_RAM AM_SHARE("sp_zoom") // sprite zoom table - it uploads the same data 4x, maybe xshrink,xgrow,yshrink,ygrow or just redundant mirrors + map(0x300c0000, 0x300c01ff).ram().share("sp_zoom"); // sprite zoom table - it uploads the same data 4x, maybe xshrink,xgrow,yshrink,ygrow or just redundant mirrors /* linescroll ram - it clears to 0x3bf on startup which is enough bytes for 240 lines if each rowscroll value was 8 bytes, but each row is 4, so only half of this is used? or tx can do it too (unlikely, as orl2 writes 256 lines of data) maybe just bad mem check bounds on orleg2. It reports pass even if it fails the first byte but if the first byte passes it attempts to test 0x10000 bytes, which is far too big so what is the real size? */ - AM_RANGE(0x300e0000, 0x300e03ff) AM_RAM AM_SHARE("lineram") AM_MIRROR(0x000fc00) + map(0x300e0000, 0x300e03ff).ram().share("lineram").mirror(0x000fc00); - AM_RANGE(0x30100000, 0x301000ff) AM_READWRITE8(shareram_r, shareram_w, 0x00ff00ff) + map(0x30100000, 0x301000ff).rw(this, FUNC(pgm2_state::shareram_r), FUNC(pgm2_state::shareram_w)).umask32(0x00ff00ff); - AM_RANGE(0x30120000, 0x30120003) AM_RAM AM_SHARE("bgscroll") // scroll - AM_RANGE(0x30120008, 0x3012000b) AM_RAM AM_SHARE("fgscroll") - AM_RANGE(0x3012000c, 0x3012000f) AM_RAM AM_SHARE("vidmode") - AM_RANGE(0x30120014, 0x30120017) AM_WRITE16(unk30120014_w, 0xffffffff) - AM_RANGE(0x30120018, 0x3012001b) AM_WRITE16(vbl_ack_w, 0x0000ffff) - AM_RANGE(0x30120030, 0x30120033) AM_WRITE16(share_bank_w, 0xffff0000) - AM_RANGE(0x30120038, 0x3012003b) AM_WRITE(sprite_encryption_w) + map(0x30120000, 0x30120003).ram().share("bgscroll"); // scroll + map(0x30120008, 0x3012000b).ram().share("fgscroll"); + map(0x3012000c, 0x3012000f).ram().share("vidmode"); + map(0x30120014, 0x30120017).w(this, FUNC(pgm2_state::unk30120014_w)); + map(0x30120018, 0x30120019).w(this, FUNC(pgm2_state::vbl_ack_w)); + map(0x30120032, 0x30120033).w(this, FUNC(pgm2_state::share_bank_w)); + map(0x30120038, 0x3012003b).w(this, FUNC(pgm2_state::sprite_encryption_w)); // there are other 0x301200xx regs - AM_RANGE(0x40000000, 0x40000003) AM_DEVREAD8("ymz774", ymz774_device, read, 0xffffffff) AM_DEVWRITE8("ymz774", ymz774_device, write, 0xffffffff) + map(0x40000000, 0x40000003).r("ymz774", FUNC(ymz774_device::read)).w("ymz774", FUNC(ymz774_device::write)); // internal IGS036 - most of them is standard ATMEL peripherals followed by custom bits // AM_RANGE(0xfffa0000, 0xfffa00ff) TC (Timer Counter) not used, mentioned in disabled / unused code // AM_RANGE(0xffffec00, 0xffffec7f) SMC (Static Memory Controller) // AM_RANGE(0xffffee00, 0xffffee57) MATRIX (Bus Matrix) - AM_RANGE(0xfffff000, 0xfffff14b) AM_DEVICE("arm_aic", arm_aic_device, regs_map) + map(0xfffff000, 0xfffff14b).m(m_arm_aic, FUNC(arm_aic_device::regs_map)); // AM_RANGE(0xfffff200, 0xfffff247) DBGU (Debug Unit) // AM_RANGE(0xfffff400, 0xfffff4af) PIO (Parallel Input Output Controller) - AM_RANGE(0xfffff430, 0xfffff437) AM_WRITENOP // often + map(0xfffff430, 0xfffff437).nopw(); // often // AM_RANGE(0xfffffd00, 0xfffffd0b) RSTC (Reset Controller) // AM_RANGE(0xfffffd20, 0xfffffd2f) RTTC (Real Time Timer) - AM_RANGE(0xfffffd28, 0xfffffd2b) AM_READ(rtc_r) + map(0xfffffd28, 0xfffffd2b).r(this, FUNC(pgm2_state::rtc_r)); // AM_RANGE(0xfffffd40, 0xfffffd4b) WDTC (Watch Dog Timer) // custom IGS036 stuff starts here - AM_RANGE(0xfffffa08, 0xfffffa0b) AM_WRITE(encryption_do_w) // after uploading encryption? table might actually send it or enable external ROM? when read bits0-1 called FUSE 0 and 1, must be 0 - AM_RANGE(0xfffffa0c, 0xfffffa0f) AM_READ(unk_startup_r) // written 0, then 0x1c, then expected to return (result&0x180)==0x180, then written 0x7c - AM_RANGE(0xfffffc00, 0xfffffcff) AM_READWRITE8(encryption_r, encryption_w, 0xffffffff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(pgm2_state::pgm2_rom_map) - AM_IMPORT_FROM(pgm2_map) - AM_RANGE(0x10000000, 0x10ffffff) AM_ROM AM_REGION("user1", 0) // external ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pgm2_state::pgm2_ram_rom_map) - AM_IMPORT_FROM(pgm2_map) - AM_RANGE(0x10000000, 0x101fffff) AM_RAM AM_SHARE("romboard_ram") // we should also probably decrypt writes once the encryption is enabled, but the game never writes with it turned on anyway - AM_RANGE(0x10200000, 0x103fffff) AM_ROM AM_REGION("user1", 0) // external ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pgm2_state::pgm2_module_rom_map) - AM_IMPORT_FROM(pgm2_rom_map) - AM_RANGE(0x10000000, 0x107fffff) AM_WRITE16(module_rom_w, 0xffffffff) - AM_RANGE(0x10000000, 0x1000000f) AM_READ16(module_rom_r, 0xffffffff) - AM_RANGE(0xfffff430, 0xfffff433) AM_WRITE(pio_sodr_w) - AM_RANGE(0xfffff434, 0xfffff437) AM_WRITE(pio_codr_w) - AM_RANGE(0xfffff43c, 0xfffff43f) AM_READ(pio_pdsr_r) -ADDRESS_MAP_END + map(0xfffffa08, 0xfffffa0b).w(this, FUNC(pgm2_state::encryption_do_w)); // after uploading encryption? table might actually send it or enable external ROM? when read bits0-1 called FUSE 0 and 1, must be 0 + map(0xfffffa0c, 0xfffffa0f).r(this, FUNC(pgm2_state::unk_startup_r)); // written 0, then 0x1c, then expected to return (result&0x180)==0x180, then written 0x7c + map(0xfffffc00, 0xfffffcff).rw(this, FUNC(pgm2_state::encryption_r), FUNC(pgm2_state::encryption_w)); +} + + +void pgm2_state::pgm2_rom_map(address_map &map) +{ + pgm2_map(map); + map(0x10000000, 0x10ffffff).rom().region("user1", 0); // external ROM +} + +void pgm2_state::pgm2_ram_rom_map(address_map &map) +{ + pgm2_map(map); + map(0x10000000, 0x101fffff).ram().share("romboard_ram"); // we should also probably decrypt writes once the encryption is enabled, but the game never writes with it turned on anyway + map(0x10200000, 0x103fffff).rom().region("user1", 0); // external ROM +} + +void pgm2_state::pgm2_module_rom_map(address_map &map) +{ + pgm2_rom_map(map); + map(0x10000000, 0x107fffff).w(this, FUNC(pgm2_state::module_rom_w)); + map(0x10000000, 0x1000000f).r(this, FUNC(pgm2_state::module_rom_r)); + map(0xfffff430, 0xfffff433).w(this, FUNC(pgm2_state::pio_sodr_w)); + map(0xfffff434, 0xfffff437).w(this, FUNC(pgm2_state::pio_codr_w)); + map(0xfffff43c, 0xfffff43f).r(this, FUNC(pgm2_state::pio_pdsr_r)); +} static INPUT_PORTS_START( pgm2 ) PORT_START("INPUTS0") diff --git a/src/mame/drivers/pgm3.cpp b/src/mame/drivers/pgm3.cpp index 85bd95bb96c..f623db40d60 100644 --- a/src/mame/drivers/pgm3.cpp +++ b/src/mame/drivers/pgm3.cpp @@ -71,9 +71,10 @@ public: void pgm3_map(address_map &map); }; -ADDRESS_MAP_START(pgm3_state::pgm3_map) - AM_RANGE(0x00000000, 0x00003fff) AM_ROM -ADDRESS_MAP_END +void pgm3_state::pgm3_map(address_map &map) +{ + map(0x00000000, 0x00003fff).rom(); +} static INPUT_PORTS_START( pgm3 ) INPUT_PORTS_END diff --git a/src/mame/drivers/phc25.cpp b/src/mame/drivers/phc25.cpp index 777634b58ed..c56ae2b29c2 100644 --- a/src/mame/drivers/phc25.cpp +++ b/src/mame/drivers/phc25.cpp @@ -119,30 +119,32 @@ WRITE_LINE_MEMBER( phc25_state::write_centronics_busy ) /* Memory Maps */ -ADDRESS_MAP_START(phc25_state::phc25_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION(Z80_TAG, 0) - AM_RANGE(0x6000, 0x77ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(phc25_state::phc25_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x40, 0x40) AM_READWRITE(port40_r, port40_w) - AM_RANGE(0x80, 0x80) AM_READ_PORT("KEY0") - AM_RANGE(0x81, 0x81) AM_READ_PORT("KEY1") - AM_RANGE(0x82, 0x82) AM_READ_PORT("KEY2") - AM_RANGE(0x83, 0x83) AM_READ_PORT("KEY3") - AM_RANGE(0x84, 0x84) AM_READ_PORT("KEY4") - AM_RANGE(0x85, 0x85) AM_READ_PORT("KEY5") - AM_RANGE(0x86, 0x86) AM_READ_PORT("KEY6") - AM_RANGE(0x87, 0x87) AM_READ_PORT("KEY7") - AM_RANGE(0x88, 0x88) AM_READ_PORT("KEY8") - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE(AY8910_TAG, ay8910_device, data_r, data_w) - AM_RANGE(0xc1, 0xc1) AM_DEVWRITE(AY8910_TAG, ay8910_device, address_w) -ADDRESS_MAP_END +void phc25_state::phc25_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5fff).rom().region(Z80_TAG, 0); + map(0x6000, 0x77ff).ram().share("video_ram"); + map(0xc000, 0xffff).ram(); +} + +void phc25_state::phc25_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x40, 0x40).rw(this, FUNC(phc25_state::port40_r), FUNC(phc25_state::port40_w)); + map(0x80, 0x80).portr("KEY0"); + map(0x81, 0x81).portr("KEY1"); + map(0x82, 0x82).portr("KEY2"); + map(0x83, 0x83).portr("KEY3"); + map(0x84, 0x84).portr("KEY4"); + map(0x85, 0x85).portr("KEY5"); + map(0x86, 0x86).portr("KEY6"); + map(0x87, 0x87).portr("KEY7"); + map(0x88, 0x88).portr("KEY8"); + map(0xc0, 0xc0).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xc1, 0xc1).w(AY8910_TAG, FUNC(ay8910_device::address_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/phoenix.cpp b/src/mame/drivers/phoenix.cpp index 6e6f9eb9caa..55a16758c89 100644 --- a/src/mame/drivers/phoenix.cpp +++ b/src/mame/drivers/phoenix.cpp @@ -56,38 +56,41 @@ Pleiads: #include "speaker.h" -ADDRESS_MAP_START(phoenix_state::phoenix_memory_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bank1") AM_WRITE(phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */ - AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w) - AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w) - AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("cust", phoenix_sound_device, control_a_w) - AM_RANGE(0x6800, 0x6bff) AM_DEVWRITE("cust", phoenix_sound_device, control_b_w) - AM_RANGE(0x7000, 0x73ff) AM_READ_PORT("IN0") /* IN0 or IN1 */ - AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(phoenix_state::pleiads_memory_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bank1") AM_WRITE(phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */ - AM_RANGE(0x5000, 0x53ff) AM_WRITE(pleiads_videoreg_w) - AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w) - AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("pleiads_custom", pleiads_sound_device, control_a_w) - AM_RANGE(0x6800, 0x6bff) AM_DEVWRITE("pleiads_custom", pleiads_sound_device, control_b_w) - AM_RANGE(0x7000, 0x73ff) AM_READ_PORT("IN0") /* IN0 or IN1 + protection */ - AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(phoenix_state::survival_memory_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_READ_BANK("bank1") AM_WRITE(phoenix_videoram_w) /* 2 pages selected by bit 0 of the video register */ - AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w) - AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w) - AM_RANGE(0x6800, 0x68ff) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x6900, 0x69ff) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x7000, 0x73ff) AM_READ(survival_input_port_0_r) /* IN0 or IN1 */ - AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */ -ADDRESS_MAP_END +void phoenix_state::phoenix_memory_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).bankr("bank1").w(this, FUNC(phoenix_state::phoenix_videoram_w)); /* 2 pages selected by bit 0 of the video register */ + map(0x5000, 0x53ff).w(this, FUNC(phoenix_state::phoenix_videoreg_w)); + map(0x5800, 0x5bff).w(this, FUNC(phoenix_state::phoenix_scroll_w)); + map(0x6000, 0x63ff).w("cust", FUNC(phoenix_sound_device::control_a_w)); + map(0x6800, 0x6bff).w("cust", FUNC(phoenix_sound_device::control_b_w)); + map(0x7000, 0x73ff).portr("IN0"); /* IN0 or IN1 */ + map(0x7800, 0x7bff).portr("DSW0"); /* DSW */ +} + +void phoenix_state::pleiads_memory_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).bankr("bank1").w(this, FUNC(phoenix_state::phoenix_videoram_w)); /* 2 pages selected by bit 0 of the video register */ + map(0x5000, 0x53ff).w(this, FUNC(phoenix_state::pleiads_videoreg_w)); + map(0x5800, 0x5bff).w(this, FUNC(phoenix_state::phoenix_scroll_w)); + map(0x6000, 0x63ff).w(m_pleiads_custom, FUNC(pleiads_sound_device::control_a_w)); + map(0x6800, 0x6bff).w(m_pleiads_custom, FUNC(pleiads_sound_device::control_b_w)); + map(0x7000, 0x73ff).portr("IN0"); /* IN0 or IN1 + protection */ + map(0x7800, 0x7bff).portr("DSW0"); /* DSW */ +} + +void phoenix_state::survival_memory_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4fff).bankr("bank1").w(this, FUNC(phoenix_state::phoenix_videoram_w)); /* 2 pages selected by bit 0 of the video register */ + map(0x5000, 0x53ff).w(this, FUNC(phoenix_state::phoenix_videoreg_w)); + map(0x5800, 0x5bff).w(this, FUNC(phoenix_state::phoenix_scroll_w)); + map(0x6800, 0x68ff).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x6900, 0x69ff).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x7000, 0x73ff).r(this, FUNC(phoenix_state::survival_input_port_0_r)); /* IN0 or IN1 */ + map(0x7800, 0x7bff).portr("DSW0"); /* DSW */ +} diff --git a/src/mame/drivers/photon.cpp b/src/mame/drivers/photon.cpp index 05e195697a6..cd489014942 100644 --- a/src/mame/drivers/photon.cpp +++ b/src/mame/drivers/photon.cpp @@ -128,27 +128,29 @@ WRITE8_MEMBER(photon_state::_80_portc_w) m_speaker->level_w(BIT(data,7)); } -ADDRESS_MAP_START(photon_state::pk8000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5") - AM_RANGE( 0x4000, 0x7fff ) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6") - AM_RANGE( 0x8000, 0xbfff ) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7") - AM_RANGE( 0xc000, 0xffff ) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8") -ADDRESS_MAP_END - -ADDRESS_MAP_START(photon_state::pk8000_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x88, 0x88) AM_READWRITE(video_color_r, video_color_w) - AM_RANGE(0x8c, 0x8c) AM_READ_PORT("JOY1") - AM_RANGE(0x8d, 0x8d) AM_READ_PORT("JOY2") - AM_RANGE(0x90, 0x90) AM_READWRITE(text_start_r, text_start_w) - AM_RANGE(0x91, 0x91) AM_READWRITE(chargen_start_r, chargen_start_w) - AM_RANGE(0x92, 0x92) AM_READWRITE(video_start_r, video_start_w) - AM_RANGE(0x93, 0x93) AM_READWRITE(color_start_r, color_start_w) - AM_RANGE(0xa0, 0xbf) AM_READWRITE(color_r, color_w) -ADDRESS_MAP_END +void photon_state::pk8000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankr("bank1").bankw("bank5"); + map(0x4000, 0x7fff).bankr("bank2").bankw("bank6"); + map(0x8000, 0xbfff).bankr("bank3").bankw("bank7"); + map(0xc000, 0xffff).bankr("bank4").bankw("bank8"); +} + +void photon_state::pk8000_io(address_map &map) +{ + map.unmap_value_high(); + map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x84, 0x87).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x88, 0x88).rw(this, FUNC(photon_state::video_color_r), FUNC(photon_state::video_color_w)); + map(0x8c, 0x8c).portr("JOY1"); + map(0x8d, 0x8d).portr("JOY2"); + map(0x90, 0x90).rw(this, FUNC(photon_state::text_start_r), FUNC(photon_state::text_start_w)); + map(0x91, 0x91).rw(this, FUNC(photon_state::chargen_start_r), FUNC(photon_state::chargen_start_w)); + map(0x92, 0x92).rw(this, FUNC(photon_state::video_start_r), FUNC(photon_state::video_start_w)); + map(0x93, 0x93).rw(this, FUNC(photon_state::color_start_r), FUNC(photon_state::color_start_w)); + map(0xa0, 0xbf).rw(this, FUNC(photon_state::color_r), FUNC(photon_state::color_w)); +} static INPUT_PORTS_START( photon ) PORT_START("JOY1") diff --git a/src/mame/drivers/photon2.cpp b/src/mame/drivers/photon2.cpp index c6c93c71f26..d68c3a713aa 100644 --- a/src/mame/drivers/photon2.cpp +++ b/src/mame/drivers/photon2.cpp @@ -258,21 +258,23 @@ WRITE8_MEMBER(photon2_state::misc_w) * *************************************/ -ADDRESS_MAP_START(photon2_state::spectrum_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("mainbank") - AM_RANGE(0x4000, 0x5aff) AM_RAM AM_SHARE("spectrum_vram") - AM_RANGE(0x5b00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(photon2_state::spectrum_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x1f, 0x1f) AM_READ_PORT("JOY") - AM_RANGE(0x5b, 0x5b) AM_READ_PORT("COIN") AM_WRITE(misc_w) - AM_RANGE(0x7a, 0x7a) AM_WRITE(membank_w) - AM_RANGE(0x7b, 0x7b) AM_WRITENOP // unknown write - AM_RANGE(0x7e, 0x7e) AM_WRITE(membank_w) - AM_RANGE(0xfe, 0xfe) AM_READWRITE(fe_r, fe_w) -ADDRESS_MAP_END +void photon2_state::spectrum_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("mainbank"); + map(0x4000, 0x5aff).ram().share("spectrum_vram"); + map(0x5b00, 0xffff).ram(); +} + +void photon2_state::spectrum_io(address_map &map) +{ + map.global_mask(0xff); + map(0x1f, 0x1f).portr("JOY"); + map(0x5b, 0x5b).portr("COIN").w(this, FUNC(photon2_state::misc_w)); + map(0x7a, 0x7a).w(this, FUNC(photon2_state::membank_w)); + map(0x7b, 0x7b).nopw(); // unknown write + map(0x7e, 0x7e).w(this, FUNC(photon2_state::membank_w)); + map(0xfe, 0xfe).rw(this, FUNC(photon2_state::fe_r), FUNC(photon2_state::fe_w)); +} /************************************* * diff --git a/src/mame/drivers/photoply.cpp b/src/mame/drivers/photoply.cpp index 4585ea985c9..b98a52b4536 100644 --- a/src/mame/drivers/photoply.cpp +++ b/src/mame/drivers/photoply.cpp @@ -190,37 +190,39 @@ WRITE8_MEMBER(photoply_state::eeprom_w) // Bits 4-7 are set for some writes, but may do nothing? } -ADDRESS_MAP_START(photoply_state::photoply_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, mem_r, mem_w, 0xffffffff) +void photoply_state::photoply_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(cirrus_gd5446_device::mem_r), FUNC(cirrus_gd5446_device::mem_w)); // AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0) // AM_RANGE(0x000c8000, 0x000cffff) AM_RAM AM_REGION("ex_bios", 0) - AM_RANGE(0x000c0000, 0x000fffff) AM_READWRITE8(bios_r,bios_w,0xffffffff) - AM_RANGE(0x00100000, 0x07ffffff) AM_RAM // 64MB RAM, guess! - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END + map(0x000c0000, 0x000fffff).rw(this, FUNC(photoply_state::bios_r), FUNC(photoply_state::bios_w)); + map(0x00100000, 0x07ffffff).ram(); // 64MB RAM, guess! + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); +} -ADDRESS_MAP_START(photoply_state::photoply_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e8, 0x00eb) AM_NOP +void photoply_state::photoply_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e8, 0x00eb).noprw(); - AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x0200, 0x0203) AM_WRITE8(eeprom_w, 0x00ff0000) + map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x0202, 0x0202).w(this, FUNC(photoply_state::eeprom_w)); // AM_RANGE(0x0278, 0x027f) AM_RAM //parallel port 2 - AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1) + map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); // AM_RANGE(0x0378, 0x037f) AM_RAM //parallel port - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", cirrus_gd5446_device, port_03d0_r, port_03d0_w, 0xffffffff) + map(0x03b0, 0x03bf).rw("vga", FUNC(cirrus_gd5446_device::port_03b0_r), FUNC(cirrus_gd5446_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(cirrus_gd5446_device::port_03c0_r), FUNC(cirrus_gd5446_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(cirrus_gd5446_device::port_03d0_r), FUNC(cirrus_gd5446_device::port_03d0_w)); - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1) + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); -ADDRESS_MAP_END +} #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1) diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp index 6dbb0198fff..c4d63a902b2 100644 --- a/src/mame/drivers/phunsy.cpp +++ b/src/mame/drivers/phunsy.cpp @@ -89,24 +89,27 @@ READ_LINE_MEMBER(phunsy_state::cass_r) return (m_cass->input() > 0.03) ? 0 : 1; } -ADDRESS_MAP_START(phunsy_state::phunsy_mem) - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x0800, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("videoram") // Video RAM - AM_RANGE(0x1800, 0x1fff) AM_READ_BANK("bankru") AM_WRITE_BANK("bankwu") // Banked RAM/ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bankq") // Banked RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(phunsy_state::phunsy_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END - -ADDRESS_MAP_START(phunsy_state::phunsy_data) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_WRITE(phunsy_ctrl_w) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(phunsy_data_r, phunsy_data_w) -ADDRESS_MAP_END +void phunsy_state::phunsy_mem(address_map &map) +{ + map(0x0000, 0x07ff).rom().region("roms", 0); + map(0x0800, 0x0fff).ram(); + map(0x1000, 0x17ff).ram().share("videoram"); // Video RAM + map(0x1800, 0x1fff).bankr("bankru").bankw("bankwu"); // Banked RAM/ROM + map(0x2000, 0x3fff).ram(); + map(0x4000, 0x7fff).bankrw("bankq"); // Banked RAM +} + +void phunsy_state::phunsy_io(address_map &map) +{ + map.unmap_value_high(); +} + +void phunsy_state::phunsy_data(address_map &map) +{ + map.unmap_value_high(); + map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(this, FUNC(phunsy_state::phunsy_ctrl_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(phunsy_state::phunsy_data_r), FUNC(phunsy_state::phunsy_data_w)); +} WRITE8_MEMBER( phunsy_state::phunsy_ctrl_w ) diff --git a/src/mame/drivers/picno.cpp b/src/mame/drivers/picno.cpp index 74a88951399..6b67a51aa59 100644 --- a/src/mame/drivers/picno.cpp +++ b/src/mame/drivers/picno.cpp @@ -48,16 +48,18 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(picno_state::mem_map) - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("roms", 0) // 32kb internal rom - AM_RANGE(0x0fb80, 0x0ff7f) AM_RAM // internal ram - AM_RANGE(0x0ff80, 0x0ffff) // internal controls - AM_RANGE(0x10000, 0x8ffff) AM_ROM AM_REGION("roms", 0x8000) // guess -ADDRESS_MAP_END - -ADDRESS_MAP_START(picno_state::io_map) +void picno_state::mem_map(address_map &map) +{ + map(0x00000, 0x07fff).rom().region("roms", 0); // 32kb internal rom + map(0x0fb80, 0x0ff7f).ram(); // internal ram + map(0x0ff80, 0x0ffff); // internal controls + map(0x10000, 0x8ffff).rom().region("roms", 0x8000); // guess +} + +void picno_state::io_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +} static INPUT_PORTS_START( picno ) INPUT_PORTS_END diff --git a/src/mame/drivers/piggypas.cpp b/src/mame/drivers/piggypas.cpp index 78cce2bd33c..8350628195c 100644 --- a/src/mame/drivers/piggypas.cpp +++ b/src/mame/drivers/piggypas.cpp @@ -116,24 +116,27 @@ WRITE8_MEMBER(piggypas_state::lcd_control_w) } } -ADDRESS_MAP_START(piggypas_state::piggypas_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(piggypas_state::piggypas_io) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("hd44780", hd44780_device, write) - AM_RANGE(0x1802, 0x1803) AM_DEVREAD("hd44780", hd44780_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(piggypas_state::fidlstix_io) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x1800, 0x1800) AM_WRITENOP // input matrix scan? -ADDRESS_MAP_END +void piggypas_state::piggypas_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} + +void piggypas_state::piggypas_io(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1800, 0x1801).w(m_hd44780, FUNC(hd44780_device::write)); + map(0x1802, 0x1803).r(m_hd44780, FUNC(hd44780_device::read)); +} + +void piggypas_state::fidlstix_io(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x0800, 0x0803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1800, 0x1800).nopw(); // input matrix scan? +} INPUT_CHANGED_MEMBER(piggypas_state::ball_sensor) diff --git a/src/mame/drivers/pimps.cpp b/src/mame/drivers/pimps.cpp index 976bdf6804d..6d4e7dda22b 100644 --- a/src/mame/drivers/pimps.cpp +++ b/src/mame/drivers/pimps.cpp @@ -91,19 +91,21 @@ private: }; -ADDRESS_MAP_START(pimps_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pimps_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void pimps_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).ram(); + map(0xf000, 0xffff).rom().region("roms", 0); +} + +void pimps_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0xf0, 0xf0).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf1, 0xf1).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xf2, 0xf2).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf3, 0xf3).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ static INPUT_PORTS_START( pimps ) diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp index 1400529fcf0..17cc793e586 100644 --- a/src/mame/drivers/pinball2k.cpp +++ b/src/mame/drivers/pinball2k.cpp @@ -475,28 +475,30 @@ void pinball2k_state::cx5510_pci_w(int function, int reg, uint32_t data, uint32_ /*****************************************************************************/ -ADDRESS_MAP_START(pinball2k_state::mediagx_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x000a0000, 0x000affff) AM_RAM - AM_RANGE(0x000b0000, 0x000b7fff) AM_RAM AM_SHARE("cga_ram") - AM_RANGE(0x000c0000, 0x000fffff) AM_RAM AM_SHARE("bios_ram") - AM_RANGE(0x00100000, 0x00ffffff) AM_RAM - AM_RANGE(0x40008000, 0x400080ff) AM_READWRITE(biu_ctrl_r, biu_ctrl_w) - AM_RANGE(0x40008300, 0x400083ff) AM_READWRITE(disp_ctrl_r, disp_ctrl_w) - AM_RANGE(0x40008400, 0x400084ff) AM_READWRITE(memory_ctrl_r, memory_ctrl_w) - AM_RANGE(0x40800000, 0x40bfffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(pinball2k_state::mediagx_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x0020, 0x0023) AM_READWRITE8(io20_r, io20_w, 0xffff0000) - AM_RANGE(0x00e8, 0x00eb) AM_NOP // I/O delay port - AM_RANGE(0x0378, 0x037b) AM_READWRITE(parallel_port_r, parallel_port_w) - AM_RANGE(0x0400, 0x0403) AM_READWRITE(port400_r, port400_w) - AM_RANGE(0x0800, 0x0803) AM_READWRITE(port800_r, port800_w) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END +void pinball2k_state::mediagx_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram().share("main_ram"); + map(0x000a0000, 0x000affff).ram(); + map(0x000b0000, 0x000b7fff).ram().share("cga_ram"); + map(0x000c0000, 0x000fffff).ram().share("bios_ram"); + map(0x00100000, 0x00ffffff).ram(); + map(0x40008000, 0x400080ff).rw(this, FUNC(pinball2k_state::biu_ctrl_r), FUNC(pinball2k_state::biu_ctrl_w)); + map(0x40008300, 0x400083ff).rw(this, FUNC(pinball2k_state::disp_ctrl_r), FUNC(pinball2k_state::disp_ctrl_w)); + map(0x40008400, 0x400084ff).rw(this, FUNC(pinball2k_state::memory_ctrl_r), FUNC(pinball2k_state::memory_ctrl_w)); + map(0x40800000, 0x40bfffff).ram().share("vram"); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void pinball2k_state::mediagx_io(address_map &map) +{ + pcat32_io_common(map); + map(0x0022, 0x0023).rw(this, FUNC(pinball2k_state::io20_r), FUNC(pinball2k_state::io20_w)); + map(0x00e8, 0x00eb).noprw(); // I/O delay port + map(0x0378, 0x037b).rw(this, FUNC(pinball2k_state::parallel_port_r), FUNC(pinball2k_state::parallel_port_w)); + map(0x0400, 0x0403).rw(this, FUNC(pinball2k_state::port400_r), FUNC(pinball2k_state::port400_w)); + map(0x0800, 0x0803).rw(this, FUNC(pinball2k_state::port800_r), FUNC(pinball2k_state::port800_w)); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} /*****************************************************************************/ @@ -590,9 +592,10 @@ void pinball2k_state::machine_reset() m_maincpu->reset(); } -ADDRESS_MAP_START(pinball2k_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void pinball2k_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(pinball2k_state::mediagx) diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp index 16341198293..9462300868e 100644 --- a/src/mame/drivers/pingpong.cpp +++ b/src/mame/drivers/pingpong.cpp @@ -89,43 +89,45 @@ TIMER_DEVICE_CALLBACK_MEMBER(pingpong_state::merlinmm_interrupt) } } -ADDRESS_MAP_START(pingpong_state::pingpong_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pingpong_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pingpong_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9002) AM_RAM - AM_RANGE(0x9003, 0x9052) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9053, 0x97ff) AM_RAM - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa880, 0xa880) AM_READ_PORT("INPUTS") - AM_RANGE(0xa900, 0xa900) AM_READ_PORT("DSW1") - AM_RANGE(0xa980, 0xa980) AM_READ_PORT("DSW2") - AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w) /* coin counters + irq enables */ - AM_RANGE(0xa200, 0xa200) AM_WRITENOP /* SN76496 data latch */ - AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("snsnd", sn76496_device, write) /* trigger read */ - AM_RANGE(0xa600, 0xa600) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pingpong_state::merlinmm_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x5400, 0x57ff) AM_RAM - AM_RANGE(0x6000, 0x6007) AM_WRITENOP /* solenoid writes */ - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN4") - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pingpong_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pingpong_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9002) AM_RAM - AM_RANGE(0x9003, 0x9052) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9053, 0x97ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w) /* irq enables */ - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa080, 0xa080) AM_READ_PORT("IN1") - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN2") - AM_RANGE(0xa180, 0xa180) AM_READ_PORT("IN3") - AM_RANGE(0xa200, 0xa200) AM_WRITENOP /* SN76496 data latch */ - AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("snsnd", sn76496_device, write) /* trigger read */ - AM_RANGE(0xa600, 0xa600) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void pingpong_state::pingpong_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(pingpong_state::pingpong_colorram_w)).share("colorram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(pingpong_state::pingpong_videoram_w)).share("videoram"); + map(0x9000, 0x9002).ram(); + map(0x9003, 0x9052).ram().share("spriteram"); + map(0x9053, 0x97ff).ram(); + map(0xa800, 0xa800).portr("SYSTEM"); + map(0xa880, 0xa880).portr("INPUTS"); + map(0xa900, 0xa900).portr("DSW1"); + map(0xa980, 0xa980).portr("DSW2"); + map(0xa000, 0xa000).w(this, FUNC(pingpong_state::coin_w)); /* coin counters + irq enables */ + map(0xa200, 0xa200).nopw(); /* SN76496 data latch */ + map(0xa400, 0xa400).w("snsnd", FUNC(sn76496_device::write)); /* trigger read */ + map(0xa600, 0xa600).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} + +void pingpong_state::merlinmm_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x5000, 0x53ff).ram().share("nvram"); + map(0x5400, 0x57ff).ram(); + map(0x6000, 0x6007).nopw(); /* solenoid writes */ + map(0x7000, 0x7000).portr("IN4"); + map(0x8000, 0x83ff).ram().w(this, FUNC(pingpong_state::pingpong_colorram_w)).share("colorram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(pingpong_state::pingpong_videoram_w)).share("videoram"); + map(0x9000, 0x9002).ram(); + map(0x9003, 0x9052).ram().share("spriteram"); + map(0x9053, 0x97ff).ram(); + map(0xa000, 0xa000).w(this, FUNC(pingpong_state::coin_w)); /* irq enables */ + map(0xa000, 0xa000).portr("IN0"); + map(0xa080, 0xa080).portr("IN1"); + map(0xa100, 0xa100).portr("IN2"); + map(0xa180, 0xa180).portr("IN3"); + map(0xa200, 0xa200).nopw(); /* SN76496 data latch */ + map(0xa400, 0xa400).w("snsnd", FUNC(sn76496_device::write)); /* trigger read */ + map(0xa600, 0xa600).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} diff --git a/src/mame/drivers/pinkiri8.cpp b/src/mame/drivers/pinkiri8.cpp index 5b3d02d4dba..fe886b5ba1b 100644 --- a/src/mame/drivers/pinkiri8.cpp +++ b/src/mame/drivers/pinkiri8.cpp @@ -376,12 +376,13 @@ uint32_t pinkiri8_state::screen_update_pinkiri8(screen_device &screen, bitmap_in return 0; } -ADDRESS_MAP_START(pinkiri8_state::pinkiri8_map) - AM_RANGE(0x00000, 0x0bfff) AM_ROM - AM_RANGE(0x0c000, 0x0dfff) AM_RAM - AM_RANGE(0x0e000, 0x0ffff) AM_ROM - AM_RANGE(0x10000, 0x1ffff) AM_ROM -ADDRESS_MAP_END +void pinkiri8_state::pinkiri8_map(address_map &map) +{ + map(0x00000, 0x0bfff).rom(); + map(0x0c000, 0x0dfff).ram(); + map(0x0e000, 0x0ffff).rom(); + map(0x10000, 0x1ffff).rom(); +} WRITE8_MEMBER(pinkiri8_state::output_regs_w) { @@ -461,42 +462,43 @@ READ8_MEMBER(pinkiri8_state::mux_p1_r) return 0xff; } -ADDRESS_MAP_START(pinkiri8_state::pinkiri8_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_RAM //Z180 internal I/O - AM_RANGE(0x60, 0x60) AM_WRITE(output_regs_w) - AM_RANGE(0x80, 0x83) AM_WRITE(pinkiri8_vram_w) - - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write) //correct? - AM_RANGE(0xb0, 0xb0) AM_WRITE(mux_w) //mux - AM_RANGE(0xb0, 0xb0) AM_READ(mux_p2_r) // mux inputs - AM_RANGE(0xb1, 0xb1) AM_READ(mux_p1_r) // mux inputs - AM_RANGE(0xb2, 0xb2) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW1") - AM_RANGE(0xf9, 0xf9) AM_READ_PORT("DSW2") - AM_RANGE(0xfa, 0xfa) AM_READ_PORT("DSW3") - AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW4") +void pinkiri8_state::pinkiri8_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).ram(); //Z180 internal I/O + map(0x60, 0x60).w(this, FUNC(pinkiri8_state::output_regs_w)); + map(0x80, 0x83).w(this, FUNC(pinkiri8_state::pinkiri8_vram_w)); + + map(0xa0, 0xa0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //correct? + map(0xb0, 0xb0).w(this, FUNC(pinkiri8_state::mux_w)); //mux + map(0xb0, 0xb0).r(this, FUNC(pinkiri8_state::mux_p2_r)); // mux inputs + map(0xb1, 0xb1).r(this, FUNC(pinkiri8_state::mux_p1_r)); // mux inputs + map(0xb2, 0xb2).portr("SYSTEM"); + map(0xf8, 0xf8).portr("DSW1"); + map(0xf9, 0xf9).portr("DSW2"); + map(0xfa, 0xfa).portr("DSW3"); + map(0xfb, 0xfb).portr("DSW4"); /* Wing custom sound chip, same as Lucky Girl Z180 */ - AM_RANGE(0xc3, 0xc3) AM_WRITENOP - AM_RANGE(0xc7, 0xc7) AM_WRITENOP - AM_RANGE(0xcb, 0xcb) AM_WRITENOP - AM_RANGE(0xcf, 0xcf) AM_WRITENOP + map(0xc3, 0xc3).nopw(); + map(0xc7, 0xc7).nopw(); + map(0xcb, 0xcb).nopw(); + map(0xcf, 0xcf).nopw(); - AM_RANGE(0xd3, 0xd3) AM_WRITENOP - AM_RANGE(0xd7, 0xd7) AM_WRITENOP - AM_RANGE(0xdb, 0xdb) AM_WRITENOP - AM_RANGE(0xdf, 0xdf) AM_WRITENOP + map(0xd3, 0xd3).nopw(); + map(0xd7, 0xd7).nopw(); + map(0xdb, 0xdb).nopw(); + map(0xdf, 0xdf).nopw(); - AM_RANGE(0xe3, 0xe3) AM_WRITENOP - AM_RANGE(0xe7, 0xe7) AM_WRITENOP - AM_RANGE(0xeb, 0xeb) AM_WRITENOP - AM_RANGE(0xef, 0xef) AM_WRITENOP + map(0xe3, 0xe3).nopw(); + map(0xe7, 0xe7).nopw(); + map(0xeb, 0xeb).nopw(); + map(0xef, 0xef).nopw(); - AM_RANGE(0xf3, 0xf3) AM_WRITENOP - AM_RANGE(0xf7, 0xf7) AM_WRITENOP + map(0xf3, 0xf3).nopw(); + map(0xf7, 0xf7).nopw(); -ADDRESS_MAP_END +} static INPUT_PORTS_START( base_inputs ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/pipbug.cpp b/src/mame/drivers/pipbug.cpp index b0464148490..6be0cb7708f 100644 --- a/src/mame/drivers/pipbug.cpp +++ b/src/mame/drivers/pipbug.cpp @@ -68,16 +68,18 @@ WRITE8_MEMBER( pipbug_state::pipbug_ctrl_w ) // 0x80 is written here - not connected in the baby 2650 } -ADDRESS_MAP_START(pipbug_state::pipbug_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x03ff) AM_ROM - AM_RANGE( 0x0400, 0x7fff) AM_RAM -ADDRESS_MAP_END +void pipbug_state::pipbug_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x7fff).ram(); +} -ADDRESS_MAP_START(pipbug_state::pipbug_data) +void pipbug_state::pipbug_data(address_map &map) +{ // ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_WRITE(pipbug_ctrl_w) -ADDRESS_MAP_END + map(S2650_CTRL_PORT, S2650_CTRL_PORT).w(this, FUNC(pipbug_state::pipbug_ctrl_w)); +} /* Input ports */ static INPUT_PORTS_START( pipbug ) diff --git a/src/mame/drivers/pipedrm.cpp b/src/mame/drivers/pipedrm.cpp index ca85fcff707..f8f54207b0e 100644 --- a/src/mame/drivers/pipedrm.cpp +++ b/src/mame/drivers/pipedrm.cpp @@ -252,26 +252,28 @@ READ8_MEMBER(pipedrm_state::pending_command_r ) * *************************************/ -ADDRESS_MAP_START(pipedrm_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xd000, 0xffff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void pipedrm_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd000, 0xffff).rw(this, FUNC(pipedrm_state::fromance_videoram_r), FUNC(pipedrm_state::fromance_videoram_w)).share("videoram"); +} -ADDRESS_MAP_START(pipedrm_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("gga", vsystem_gga_device, write) - AM_RANGE(0x20, 0x20) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x21, 0x21) AM_READ_PORT("P2") AM_WRITE(pipedrm_bankswitch_w) - AM_RANGE(0x22, 0x25) AM_WRITE(fromance_scroll_w) - AM_RANGE(0x22, 0x22) AM_READ_PORT("DSW1") - AM_RANGE(0x23, 0x23) AM_READ_PORT("DSW2") - AM_RANGE(0x24, 0x24) AM_READ_PORT("SYSTEM") - AM_RANGE(0x25, 0x25) AM_READ(pending_command_r) -ADDRESS_MAP_END +void pipedrm_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w(m_gga, FUNC(vsystem_gga_device::write)); + map(0x20, 0x20).portr("P1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x21, 0x21).portr("P2").w(this, FUNC(pipedrm_state::pipedrm_bankswitch_w)); + map(0x22, 0x25).w(this, FUNC(pipedrm_state::fromance_scroll_w)); + map(0x22, 0x22).portr("DSW1"); + map(0x23, 0x23).portr("DSW2"); + map(0x24, 0x24).portr("SYSTEM"); + map(0x25, 0x25).r(this, FUNC(pipedrm_state::pending_command_r)); +} @@ -281,28 +283,31 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(pipedrm_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank2") -ADDRESS_MAP_END +void pipedrm_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank2"); +} -ADDRESS_MAP_START(pipedrm_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x04) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0x16, 0x16) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x17, 0x17) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END +void pipedrm_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x04, 0x04).w(this, FUNC(pipedrm_state::sound_bankswitch_w)); + map(0x16, 0x16).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x17, 0x17).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} -ADDRESS_MAP_START(pipedrm_state::hatris_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x08) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x05, 0x05) AM_READ(pending_command_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END +void pipedrm_state::hatris_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x08).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x05, 0x05).r(this, FUNC(pipedrm_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} diff --git a/src/mame/drivers/pipeline.cpp b/src/mame/drivers/pipeline.cpp index 6476f3a16c1..e35a6e458f5 100644 --- a/src/mame/drivers/pipeline.cpp +++ b/src/mame/drivers/pipeline.cpp @@ -222,28 +222,31 @@ WRITE8_MEMBER(pipeline_state::protection_w) machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); } -ADDRESS_MAP_START(pipeline_state::cpu0_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x97ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1") - AM_RANGE(0x9800, 0xa7ff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2") - AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xb830, 0xb830) AM_NOP - AM_RANGE(0xb840, 0xb840) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(pipeline_state::cpu1_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pipeline_state::sound_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x06, 0x07) AM_NOP -ADDRESS_MAP_END +void pipeline_state::cpu0_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x97ff).ram().w(this, FUNC(pipeline_state::vram1_w)).share("vram1"); + map(0x9800, 0xa7ff).ram().w(this, FUNC(pipeline_state::vram2_w)).share("vram2"); + map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb830, 0xb830).noprw(); + map(0xb840, 0xb840).noprw(); +} + +void pipeline_state::cpu1_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe003).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void pipeline_state::sound_port(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x06, 0x07).noprw(); +} WRITE8_MEMBER(pipeline_state::mcu_portA_w) { diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp index ace366b6f0a..c0834e08188 100644 --- a/src/mame/drivers/pirates.cpp +++ b/src/mame/drivers/pirates.cpp @@ -153,25 +153,26 @@ CUSTOM_INPUT_MEMBER(pirates_state::prot_r) /* Memory Maps */ -ADDRESS_MAP_START(pirates_state::pirates_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // main ram - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("INPUTS") - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM") +void pirates_state::pirates_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); // main ram + map(0x300000, 0x300001).portr("INPUTS"); + map(0x400000, 0x400001).portr("SYSTEM"); // AM_RANGE(0x500000, 0x5007ff) AM_RAM - AM_RANGE(0x500000, 0x5007ff) AM_WRITEONLY AM_SHARE("spriteram") + map(0x500000, 0x5007ff).writeonly().share("spriteram"); // AM_RANGE(0x500800, 0x50080f) AM_WRITENOP - AM_RANGE(0x600000, 0x600001) AM_WRITE(out_w) - AM_RANGE(0x700000, 0x700001) AM_WRITEONLY AM_SHARE("scroll") // scroll reg - AM_RANGE(0x800000, 0x803fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x900000, 0x90017f) AM_RAM // more of tilemaps ? - AM_RANGE(0x900180, 0x90137f) AM_RAM_WRITE(tx_tileram_w) AM_SHARE("tx_tileram") - AM_RANGE(0x901380, 0x902a7f) AM_RAM_WRITE(fg_tileram_w) AM_SHARE("fg_tileram") + map(0x600000, 0x600001).w(this, FUNC(pirates_state::out_w)); + map(0x700000, 0x700001).writeonly().share("scroll"); // scroll reg + map(0x800000, 0x803fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x900000, 0x90017f).ram(); // more of tilemaps ? + map(0x900180, 0x90137f).ram().w(this, FUNC(pirates_state::tx_tileram_w)).share("tx_tileram"); + map(0x901380, 0x902a7f).ram().w(this, FUNC(pirates_state::fg_tileram_w)).share("fg_tileram"); // AM_RANGE(0x902580, 0x902a7f) AM_RAM // more of tilemaps ? - AM_RANGE(0x902a80, 0x904187) AM_RAM_WRITE(bg_tileram_w) AM_SHARE("bg_tileram") + map(0x902a80, 0x904187).ram().w(this, FUNC(pirates_state::bg_tileram_w)).share("bg_tileram"); // AM_RANGE(0x903c80, 0x904187) AM_RAM // more of tilemaps ? - AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0xa00001, 0xa00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp index 8d463ce7344..40ab75dc84e 100644 --- a/src/mame/drivers/piratesh.cpp +++ b/src/mame/drivers/piratesh.cpp @@ -383,34 +383,35 @@ WRITE16_MEMBER(piratesh_state::control3_w) } -ADDRESS_MAP_START(piratesh_state::piratesh_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x084000, 0x087fff) AM_RAM - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CRTC - AM_RANGE(0x180000, 0x18003f) AM_DEVWRITE("k056832", k056832_device, word_w) // TILEMAP - AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES - AM_RANGE(0x290000, 0x29000f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES - AM_RANGE(0x290010, 0x29001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) // SPRITES - AM_RANGE(0x2a0000, 0x2a0fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r, k053247_word_w) // SPRITES - AM_RANGE(0x2a1000, 0x2a3fff) AM_WRITENOP - AM_RANGE(0x2b0000, 0x2b000f) AM_DEVREADWRITE("k053250", k053250ps_device, reg_r, reg_w) // LVC - AM_RANGE(0x300000, 0x3000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) - AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW1") - AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW2") - AM_RANGE(0x400008, 0x400009) AM_READ_PORT("SPECIAL") - AM_RANGE(0x40000c, 0x40000d) AM_WRITE(control1_w) - AM_RANGE(0x400010, 0x400011) AM_WRITE(control2_w) - AM_RANGE(0x400014, 0x400015) AM_WRITE(control3_w) - AM_RANGE(0x500000, 0x50ffff) AM_READ(K056832_rom_r) // VRAM ROM - AM_RANGE(0x580000, 0x581fff) AM_DEVREAD("k053250", k053250ps_device, rom_r) // LVC ROM access - AM_RANGE(0x600000, 0x6004ff) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0xff00) // SOUND - AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // TILEMAP - AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("k053250", k053250ps_device, ram_r, ram_w) // LVC -ADDRESS_MAP_END +void piratesh_state::piratesh_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x083fff).ram().share("nvram"); + map(0x084000, 0x087fff).ram(); + map(0x100000, 0x10001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CRTC + map(0x180000, 0x18003f).w(m_k056832, FUNC(k056832_device::word_w)); // TILEMAP + map(0x280000, 0x280007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // SPRITES + map(0x290000, 0x29000f).r(m_k055673, FUNC(k055673_device::k055673_ps_rom_word_r)); // SPRITES + map(0x290010, 0x29001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); // SPRITES + map(0x2a0000, 0x2a0fff).rw(m_k055673, FUNC(k055673_device::k053247_word_r), FUNC(k055673_device::k053247_word_w)); // SPRITES + map(0x2a1000, 0x2a3fff).nopw(); + map(0x2b0000, 0x2b000f).rw(m_k053250, FUNC(k053250ps_device::reg_r), FUNC(k053250ps_device::reg_w)); // LVC + map(0x300000, 0x3000ff).w(m_k055555, FUNC(k055555_device::K055555_word_w)); + map(0x380000, 0x381fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400001).portr("IN0"); + map(0x400002, 0x400003).portr("IN1"); + map(0x400004, 0x400005).portr("DSW1"); + map(0x400006, 0x400007).portr("DSW2"); + map(0x400008, 0x400009).portr("SPECIAL"); + map(0x40000c, 0x40000d).w(this, FUNC(piratesh_state::control1_w)); + map(0x400010, 0x400011).w(this, FUNC(piratesh_state::control2_w)); + map(0x400014, 0x400015).w(this, FUNC(piratesh_state::control3_w)); + map(0x500000, 0x50ffff).r(this, FUNC(piratesh_state::K056832_rom_r)); // VRAM ROM + map(0x580000, 0x581fff).r(m_k053250, FUNC(k053250ps_device::rom_r)); // LVC ROM access + map(0x600000, 0x6004ff).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00); // SOUND + map(0x680000, 0x681fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); // TILEMAP + map(0x700000, 0x703fff).rw(m_k053250, FUNC(k053250ps_device::ram_r), FUNC(k053250ps_device::ram_w)); // LVC +} WRITE_LINE_MEMBER(piratesh_state::k054539_nmi_gen) diff --git a/src/mame/drivers/pitagjr.cpp b/src/mame/drivers/pitagjr.cpp index 4ffa23cb47f..e3118280373 100644 --- a/src/mame/drivers/pitagjr.cpp +++ b/src/mame/drivers/pitagjr.cpp @@ -177,11 +177,12 @@ public: }; -ADDRESS_MAP_START(pitagjr_state::pitajr_mem) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_ROM // boot ROM ??? - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") -ADDRESS_MAP_END +void pitagjr_state::pitajr_mem(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x1000, 0x1fff).rom(); // boot ROM ??? + map(0x2000, 0x3fff).bankr("rombank"); +} /* Input ports */ INPUT_PORTS_START( pitajr ) diff --git a/src/mame/drivers/pitnrun.cpp b/src/mame/drivers/pitnrun.cpp index 49217973600..a805e75d507 100644 --- a/src/mame/drivers/pitnrun.cpp +++ b/src/mame/drivers/pitnrun.cpp @@ -105,50 +105,54 @@ WRITE_LINE_MEMBER(pitnrun_state::vflip_w) flip_screen_y_set(state); } -ADDRESS_MAP_START(pitnrun_state::pitnrun_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa800, 0xa807) AM_DEVWRITE("noiselatch", ls259_device, write_d0) /* Analog Sound */ - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w) - AM_RANGE(0xc802, 0xc802) AM_WRITE(scroll_y_w) +void pitnrun_state::pitnrun_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8fff).ram().w(this, FUNC(pitnrun_state::videoram_w)).share("videoram"); + map(0x9000, 0x9fff).ram().w(this, FUNC(pitnrun_state::videoram2_w)).share("videoram2"); + map(0xa000, 0xa0ff).ram().share("spriteram"); + map(0xa800, 0xa800).portr("SYSTEM"); + map(0xa800, 0xa807).w("noiselatch", FUNC(ls259_device::write_d0)); /* Analog Sound */ + map(0xb000, 0xb000).portr("DSW"); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).portr("INPUTS").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc800, 0xc801).w(this, FUNC(pitnrun_state::scroll_w)); + map(0xc802, 0xc802).w(this, FUNC(pitnrun_state::scroll_y_w)); //AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) - AM_RANGE(0xc805, 0xc805) AM_WRITE(h_heed_w) - AM_RANGE(0xc806, 0xc806) AM_WRITE(v_heed_w) - AM_RANGE(0xc807, 0xc807) AM_WRITE(ha_w) + map(0xc805, 0xc805).w(this, FUNC(pitnrun_state::h_heed_w)); + map(0xc806, 0xc806).w(this, FUNC(pitnrun_state::v_heed_w)); + map(0xc807, 0xc807).w(this, FUNC(pitnrun_state::ha_w)); //AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r) //AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r) - AM_RANGE(0xf000, 0xf000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pitnrun_state::pitnrun_map_mcu) - AM_IMPORT_FROM(pitnrun_map) - AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) - AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r) - AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pitnrun_state::pitnrun_sound_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3800, 0x3bff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pitnrun_state::pitnrun_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x90, 0x96) AM_WRITENOP - AM_RANGE(0x97, 0x97) AM_WRITENOP - AM_RANGE(0x98, 0x98) AM_WRITENOP -ADDRESS_MAP_END + map(0xf000, 0xf000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void pitnrun_state::pitnrun_map_mcu(address_map &map) +{ + pitnrun_map(map); + map(0xc804, 0xc804).w(this, FUNC(pitnrun_state::mcu_data_w)); + map(0xd000, 0xd000).r(this, FUNC(pitnrun_state::mcu_data_r)); + map(0xd800, 0xd800).r(this, FUNC(pitnrun_state::mcu_status_r)); +} + +void pitnrun_state::pitnrun_sound_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3800, 0x3bff).ram(); +} + +void pitnrun_state::pitnrun_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); + map(0x8c, 0x8d).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8e, 0x8f).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8f, 0x8f).r("ay1", FUNC(ay8910_device::data_r)); + map(0x90, 0x96).nopw(); + map(0x97, 0x97).nopw(); + map(0x98, 0x98).nopw(); +} static INPUT_PORTS_START( pitnrun ) diff --git a/src/mame/drivers/pk8000.cpp b/src/mame/drivers/pk8000.cpp index fd0b0c047e8..20258322284 100644 --- a/src/mame/drivers/pk8000.cpp +++ b/src/mame/drivers/pk8000.cpp @@ -184,27 +184,29 @@ READ8_MEMBER(pk8000_state::joy_2_r) return retVal; } -ADDRESS_MAP_START(pk8000_state::pk8000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5") - AM_RANGE( 0x4000, 0x7fff ) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6") - AM_RANGE( 0x8000, 0xbfff ) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7") - AM_RANGE( 0xc000, 0xffff ) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pk8000_state::pk8000_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE(0x88, 0x88) AM_READWRITE(video_color_r, video_color_w) - AM_RANGE(0x8c, 0x8c) AM_READ(joy_1_r) - AM_RANGE(0x8d, 0x8d) AM_READ(joy_2_r) - AM_RANGE(0x90, 0x90) AM_READWRITE(text_start_r, text_start_w) - AM_RANGE(0x91, 0x91) AM_READWRITE(chargen_start_r, chargen_start_w) - AM_RANGE(0x92, 0x92) AM_READWRITE(video_start_r, video_start_w) - AM_RANGE(0x93, 0x93) AM_READWRITE(color_start_r, color_start_w) - AM_RANGE(0xa0, 0xbf) AM_READWRITE(color_r, color_w) -ADDRESS_MAP_END +void pk8000_state::pk8000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankr("bank1").bankw("bank5"); + map(0x4000, 0x7fff).bankr("bank2").bankw("bank6"); + map(0x8000, 0xbfff).bankr("bank3").bankw("bank7"); + map(0xc000, 0xffff).bankr("bank4").bankw("bank8"); +} + +void pk8000_state::pk8000_io(address_map &map) +{ + map.unmap_value_high(); + map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x84, 0x87).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x88, 0x88).rw(this, FUNC(pk8000_state::video_color_r), FUNC(pk8000_state::video_color_w)); + map(0x8c, 0x8c).r(this, FUNC(pk8000_state::joy_1_r)); + map(0x8d, 0x8d).r(this, FUNC(pk8000_state::joy_2_r)); + map(0x90, 0x90).rw(this, FUNC(pk8000_state::text_start_r), FUNC(pk8000_state::text_start_w)); + map(0x91, 0x91).rw(this, FUNC(pk8000_state::chargen_start_r), FUNC(pk8000_state::chargen_start_w)); + map(0x92, 0x92).rw(this, FUNC(pk8000_state::video_start_r), FUNC(pk8000_state::video_start_w)); + map(0x93, 0x93).rw(this, FUNC(pk8000_state::color_start_r), FUNC(pk8000_state::color_start_w)); + map(0xa0, 0xbf).rw(this, FUNC(pk8000_state::color_r), FUNC(pk8000_state::color_w)); +} /* Input ports */ static INPUT_PORTS_START( pk8000 ) diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp index ee56c09543c..1e0221916a1 100644 --- a/src/mame/drivers/pk8020.cpp +++ b/src/mame/drivers/pk8020.cpp @@ -23,13 +23,15 @@ #include "speaker.h" /* Address maps */ -ADDRESS_MAP_START(pk8020_state::pk8020_mem) -ADDRESS_MAP_END +void pk8020_state::pk8020_mem(address_map &map) +{ +} -ADDRESS_MAP_START(pk8020_state::pk8020_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void pk8020_state::pk8020_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); +} /* Input ports */ static INPUT_PORTS_START( pk8020 ) diff --git a/src/mame/drivers/pkscram.cpp b/src/mame/drivers/pkscram.cpp index ac780c39d3d..ade974796b2 100644 --- a/src/mame/drivers/pkscram.cpp +++ b/src/mame/drivers/pkscram.cpp @@ -119,27 +119,28 @@ WRITE16_MEMBER(pkscram_state::pkscramble_output_w) machine().bookkeeping().coin_counter_w(0, data & 0x80); } -ADDRESS_MAP_START(pkscram_state::pkscramble_map) - ADDRESS_MAP_GLOBAL_MASK(0x7ffff) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x0400ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x041000, 0x043fff) AM_RAM // main ram - AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE(pkscramble_fgtilemap_w) AM_SHARE("fgtilemap_ram") // fg tilemap - AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(pkscramble_mdtilemap_w) AM_SHARE("mdtilemap_ram") // md tilemap (just a copy of fg?) - AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(pkscramble_bgtilemap_w) AM_SHARE("bgtilemap_ram") // bg tilemap - AM_RANGE(0x047000, 0x047fff) AM_RAM // unused - AM_RANGE(0x048000, 0x048fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x049000, 0x049001) AM_READ_PORT("DSW") - AM_RANGE(0x049004, 0x049005) AM_READ_PORT("INPUTS") - AM_RANGE(0x049008, 0x049009) AM_WRITE(pkscramble_output_w) - AM_RANGE(0x049010, 0x049011) AM_WRITENOP - AM_RANGE(0x049014, 0x049015) AM_WRITENOP - AM_RANGE(0x049018, 0x049019) AM_WRITENOP - AM_RANGE(0x04901c, 0x04901d) AM_WRITENOP - AM_RANGE(0x049020, 0x049021) AM_WRITENOP - AM_RANGE(0x04900c, 0x04900f) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff) - AM_RANGE(0x052086, 0x052087) AM_WRITENOP -ADDRESS_MAP_END +void pkscram_state::pkscramble_map(address_map &map) +{ + map.global_mask(0x7ffff); + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x0400ff).ram().share("nvram"); + map(0x041000, 0x043fff).ram(); // main ram + map(0x044000, 0x044fff).ram().w(this, FUNC(pkscram_state::pkscramble_fgtilemap_w)).share("fgtilemap_ram"); // fg tilemap + map(0x045000, 0x045fff).ram().w(this, FUNC(pkscram_state::pkscramble_mdtilemap_w)).share("mdtilemap_ram"); // md tilemap (just a copy of fg?) + map(0x046000, 0x046fff).ram().w(this, FUNC(pkscram_state::pkscramble_bgtilemap_w)).share("bgtilemap_ram"); // bg tilemap + map(0x047000, 0x047fff).ram(); // unused + map(0x048000, 0x048fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x049000, 0x049001).portr("DSW"); + map(0x049004, 0x049005).portr("INPUTS"); + map(0x049008, 0x049009).w(this, FUNC(pkscram_state::pkscramble_output_w)); + map(0x049010, 0x049011).nopw(); + map(0x049014, 0x049015).nopw(); + map(0x049018, 0x049019).nopw(); + map(0x04901c, 0x04901d).nopw(); + map(0x049020, 0x049021).nopw(); + map(0x04900c, 0x04900f).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff); + map(0x052086, 0x052087).nopw(); +} static INPUT_PORTS_START( pkscramble ) diff --git a/src/mame/drivers/pktgaldx.cpp b/src/mame/drivers/pktgaldx.cpp index 00df9656864..1b8873ebdf5 100644 --- a/src/mame/drivers/pktgaldx.cpp +++ b/src/mame/drivers/pktgaldx.cpp @@ -100,33 +100,35 @@ WRITE16_MEMBER( pktgaldx_state::vblank_ack_w ) m_maincpu->set_input_line(6, CLEAR_LINE); } -ADDRESS_MAP_START(pktgaldx_state::pktgaldx_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void pktgaldx_state::pktgaldx_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x110000, 0x1107ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x112000, 0x1127ff) AM_RAM AM_SHARE("pf2_rowscroll") + map(0x100000, 0x100fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x102000, 0x102fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x110000, 0x1107ff).ram().share("pf1_rowscroll"); + map(0x112000, 0x1127ff).ram().share("pf2_rowscroll"); - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x130000, 0x130fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x130000, 0x130fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x140000, 0x14000f) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff) - AM_RANGE(0x140006, 0x140007) AM_DEVREAD8("oki1", okim6295_device, read, 0x00ff) - AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff) - AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_device, read, 0x00ff) + map(0x140000, 0x14000f).w("oki1", FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x140007, 0x140007).r("oki1", FUNC(okim6295_device::read)); + map(0x150000, 0x15000f).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x150007, 0x150007).r(m_oki2, FUNC(okim6295_device::read)); - AM_RANGE(0x161800, 0x16180f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x164800, 0x164801) AM_WRITE(pktgaldx_oki_bank_w) - AM_RANGE(0x166800, 0x166801) AM_WRITE(vblank_ack_w) - AM_RANGE(0x167800, 0x167fff) AM_READWRITE(pktgaldx_protection_region_f_104_r,pktgaldx_protection_region_f_104_w) AM_SHARE("prot16ram") /* Protection device */ + map(0x161800, 0x16180f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x164800, 0x164801).w(this, FUNC(pktgaldx_state::pktgaldx_oki_bank_w)); + map(0x166800, 0x166801).w(this, FUNC(pktgaldx_state::vblank_ack_w)); + map(0x167800, 0x167fff).rw(this, FUNC(pktgaldx_state::pktgaldx_protection_region_f_104_r), FUNC(pktgaldx_state::pktgaldx_protection_region_f_104_w)).share("prot16ram"); /* Protection device */ - AM_RANGE(0x170000, 0x17ffff) AM_RAM -ADDRESS_MAP_END + map(0x170000, 0x17ffff).ram(); +} -ADDRESS_MAP_START(pktgaldx_state::decrypted_opcodes_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END +void pktgaldx_state::decrypted_opcodes_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().share("decrypted_opcodes"); +} /* Pocket Gal Deluxe (bootleg!) */ @@ -155,38 +157,39 @@ cpu #0 (PC=0000923C): unmapped program memory word read from 00167DB2 & 00FF /* do the 300000 addresses somehow interact with the protection addresses on this bootleg? */ /* or maybe protection writes go to sound ... */ -ADDRESS_MAP_START(pktgaldx_state::pktgaldb_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("pktgaldb_fgram") // fgram on original? - AM_RANGE(0x102000, 0x102fff) AM_RAM // bgram on original? - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("pktgaldb_spr") +void pktgaldx_state::pktgaldb_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100fff).ram().share("pktgaldb_fgram"); // fgram on original? + map(0x102000, 0x102fff).ram(); // bgram on original? + map(0x120000, 0x123fff).ram().share("pktgaldb_spr"); - AM_RANGE(0x130000, 0x130fff) AM_RAM // palette on original? + map(0x130000, 0x130fff).ram(); // palette on original? - AM_RANGE(0x140000, 0x14000f) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff) - AM_RANGE(0x140006, 0x140007) AM_DEVREAD8("oki1", okim6295_device, read, 0x00ff) - AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff) - AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_device, read, 0x00ff) + map(0x140000, 0x14000f).w("oki1", FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x140007, 0x140007).r("oki1", FUNC(okim6295_device::read)); + map(0x150000, 0x15000f).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x150007, 0x150007).r(m_oki2, FUNC(okim6295_device::read)); // AM_RANGE(0x160000, 0x167fff) AM_RAM - AM_RANGE(0x164800, 0x164801) AM_WRITE(pktgaldx_oki_bank_w) - AM_RANGE(0x16500a, 0x16500b) AM_READ(pckgaldx_unknown_r) - AM_RANGE(0x166800, 0x166801) AM_WRITE(vblank_ack_w) + map(0x164800, 0x164801).w(this, FUNC(pktgaldx_state::pktgaldx_oki_bank_w)); + map(0x16500a, 0x16500b).r(this, FUNC(pktgaldx_state::pckgaldx_unknown_r)); + map(0x166800, 0x166801).w(this, FUNC(pktgaldx_state::vblank_ack_w)); /* should we really be using these to read the i/o in the BOOTLEG? these look like i/o through protection ... */ - AM_RANGE(0x167842, 0x167843) AM_READ_PORT("INPUTS") - AM_RANGE(0x167c4c, 0x167c4d) AM_READ_PORT("DSW") - AM_RANGE(0x167db2, 0x167db3) AM_READ_PORT("SYSTEM") + map(0x167842, 0x167843).portr("INPUTS"); + map(0x167c4c, 0x167c4d).portr("DSW"); + map(0x167db2, 0x167db3).portr("SYSTEM"); - AM_RANGE(0x167d10, 0x167d11) AM_READ(pckgaldx_protection_r) // check code at 6ea - AM_RANGE(0x167d1a, 0x167d1b) AM_READ(pckgaldx_protection_r) // check code at 7C4 + map(0x167d10, 0x167d11).r(this, FUNC(pktgaldx_state::pckgaldx_protection_r)); // check code at 6ea + map(0x167d1a, 0x167d1b).r(this, FUNC(pktgaldx_state::pckgaldx_protection_r)); // check code at 7C4 - AM_RANGE(0x170000, 0x17ffff) AM_RAM + map(0x170000, 0x17ffff).ram(); - AM_RANGE(0x300000, 0x30000f) AM_RAM // ?? + map(0x300000, 0x30000f).ram(); // ?? - AM_RANGE(0x330000, 0x330bff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // extra colours? -ADDRESS_MAP_END + map(0x330000, 0x330bff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // extra colours? +} /**********************************************************************************/ diff --git a/src/mame/drivers/plan80.cpp b/src/mame/drivers/plan80.cpp index 6de34e4e90f..4b6be7f09eb 100644 --- a/src/mame/drivers/plan80.cpp +++ b/src/mame/drivers/plan80.cpp @@ -88,20 +88,22 @@ WRITE8_MEMBER( plan80_state::plan80_09_w ) } -ADDRESS_MAP_START(plan80_state::plan80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") - AM_RANGE(0x0800, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(plan80_state::plan80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x04) AM_READ(plan80_04_r) - AM_RANGE(0x09, 0x09) AM_WRITE(plan80_09_w) -ADDRESS_MAP_END +void plan80_state::plan80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0xefff).ram(); + map(0xf000, 0xf7ff).ram().share("videoram"); + map(0xf800, 0xffff).rom(); +} + +void plan80_state::plan80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x04, 0x04).r(this, FUNC(plan80_state::plan80_04_r)); + map(0x09, 0x09).w(this, FUNC(plan80_state::plan80_09_w)); +} /* Input ports */ static INPUT_PORTS_START( plan80 ) // Keyboard was worked out by trial & error;'F' keys produce foreign symbols diff --git a/src/mame/drivers/play_1.cpp b/src/mame/drivers/play_1.cpp index 804567a7ec6..57dd47d9215 100644 --- a/src/mame/drivers/play_1.cpp +++ b/src/mame/drivers/play_1.cpp @@ -72,29 +72,32 @@ private: required_device<clock_device> m_monotone; }; -ADDRESS_MAP_START(play_1_state::play_1_map) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x0800, 0x081f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery" - AM_RANGE(0x0c00, 0x0c1f) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_1_state::chance_map) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x0bff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x0c00, 0x0c1f) AM_RAM - AM_RANGE(0x0e00, 0x0e1f) AM_RAM AM_SHARE("nvram") // capacitor acting as a 2-month "battery" -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_1_state::play_1_io) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(port01_w) //segments - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(port02_w) // N1-8 - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3") AM_WRITE(port03_w) // D1-4 - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4") AM_WRITE(port04_w) // U1-8 - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN5") AM_WRITE(port05_w) // V1-8 - AM_RANGE(0x06, 0x06) AM_READ_PORT("IN6") AM_WRITE(port06_w) // W1-8 - AM_RANGE(0x07, 0x07) AM_READ(port07_r) -ADDRESS_MAP_END +void play_1_state::play_1_map(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x07ff).rom().region("roms", 0); + map(0x0800, 0x081f).ram().share("nvram"); // capacitor acting as a 2-month "battery" + map(0x0c00, 0x0c1f).ram(); +} + +void play_1_state::chance_map(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x0bff).rom().region("roms", 0); + map(0x0c00, 0x0c1f).ram(); + map(0x0e00, 0x0e1f).ram().share("nvram"); // capacitor acting as a 2-month "battery" +} + +void play_1_state::play_1_io(address_map &map) +{ + map(0x01, 0x01).portr("IN1").w(this, FUNC(play_1_state::port01_w)); //segments + map(0x02, 0x02).portr("IN2").w(this, FUNC(play_1_state::port02_w)); // N1-8 + map(0x03, 0x03).portr("IN3").w(this, FUNC(play_1_state::port03_w)); // D1-4 + map(0x04, 0x04).portr("IN4").w(this, FUNC(play_1_state::port04_w)); // U1-8 + map(0x05, 0x05).portr("IN5").w(this, FUNC(play_1_state::port05_w)); // V1-8 + map(0x06, 0x06).portr("IN6").w(this, FUNC(play_1_state::port06_w)); // W1-8 + map(0x07, 0x07).r(this, FUNC(play_1_state::port07_r)); +} static INPUT_PORTS_START( chance ) PORT_START("X.0") diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp index 28dc9545f6f..53c4fd84216 100644 --- a/src/mame/drivers/play_2.cpp +++ b/src/mame/drivers/play_2.cpp @@ -103,24 +103,27 @@ private: }; -ADDRESS_MAP_START(play_2_state::play_2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_2_state::play_2_io) - AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits - AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("1863", cdp1863_device, str_w) - AM_RANGE(0x04, 0x04) AM_READ(port04_r) - AM_RANGE(0x05, 0x05) AM_READ(port05_r) - AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) - AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_2_state::zira_sound_map) - AM_RANGE(0x000, 0x3ff) AM_ROMBANK("bank1") -ADDRESS_MAP_END +void play_2_state::play_2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("roms", 0); + map(0x2000, 0x20ff).ram().share("nvram"); // pair of 5101, battery-backed +} + +void play_2_state::play_2_io(address_map &map) +{ + map(0x01, 0x01).w(this, FUNC(play_2_state::port01_w)); // digits + map(0x02, 0x02).w(this, FUNC(play_2_state::port02_w)); + map(0x03, 0x03).w(m_1863, FUNC(cdp1863_device::str_w)); + map(0x04, 0x04).r(this, FUNC(play_2_state::port04_r)); + map(0x05, 0x05).r(this, FUNC(play_2_state::port05_r)); + map(0x06, 0x06).w(this, FUNC(play_2_state::port06_w)); + map(0x07, 0x07).w(this, FUNC(play_2_state::port07_w)); +} + +void play_2_state::zira_sound_map(address_map &map) +{ + map(0x000, 0x3ff).bankr("bank1"); +} static INPUT_PORTS_START( play_2 ) diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp index 3844fbf4ee9..306d866f8f7 100644 --- a/src/mame/drivers/play_3.cpp +++ b/src/mame/drivers/play_3.cpp @@ -123,42 +123,48 @@ private: }; -ADDRESS_MAP_START(play_3_state::play_3_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x80ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_3_state::play_3_io) - AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits, scan-lines - AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) // sound code - AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) // - AM_RANGE(0x04, 0x04) AM_READ(port04_r) // switches - AM_RANGE(0x05, 0x05) AM_READ(port05_r) // more switches - AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments - AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) // flipflop clear -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_3_state::megaaton_io) - AM_IMPORT_FROM(play_3_io) - AM_RANGE(0x01, 0x01) AM_WRITE(megaaton_port01_w) // digits, scan-lines -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_3_state::sklflite_io) - AM_IMPORT_FROM(play_3_io) - AM_RANGE(0x03, 0x03) AM_WRITE(sklflite_port03_w) // -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_3_state::play_3_audio_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("aysnd1", ay8910_device, data_r, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("aysnd2", ay8910_device, data_r, address_data_w) - AM_RANGE(0x8000, 0x80ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(play_3_state::play_3_audio_io) - AM_RANGE(0x01, 0x01) AM_WRITE(port01_a_w) // irq counter - AM_RANGE(0x02, 0x02) AM_READ(port02_a_r) // sound code -ADDRESS_MAP_END +void play_3_state::play_3_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x80ff).ram().share("nvram"); // pair of 5101, battery-backed +} + +void play_3_state::play_3_io(address_map &map) +{ + map(0x01, 0x01).w(this, FUNC(play_3_state::port01_w)); // digits, scan-lines + map(0x02, 0x02).w(this, FUNC(play_3_state::port02_w)); // sound code + map(0x03, 0x03).w(this, FUNC(play_3_state::port03_w)); // + map(0x04, 0x04).r(this, FUNC(play_3_state::port04_r)); // switches + map(0x05, 0x05).r(this, FUNC(play_3_state::port05_r)); // more switches + map(0x06, 0x06).w(this, FUNC(play_3_state::port06_w)); // segments + map(0x07, 0x07).w(this, FUNC(play_3_state::port07_w)); // flipflop clear +} + +void play_3_state::megaaton_io(address_map &map) +{ + play_3_io(map); + map(0x01, 0x01).w(this, FUNC(play_3_state::megaaton_port01_w)); // digits, scan-lines +} + +void play_3_state::sklflite_io(address_map &map) +{ + play_3_io(map); + map(0x03, 0x03).w(this, FUNC(play_3_state::sklflite_port03_w)); // +} + +void play_3_state::play_3_audio_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4001).mirror(0x1ffe).rw(m_aysnd1, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).mirror(0x1ffe).rw(m_aysnd2, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x8000, 0x80ff).ram(); +} + +void play_3_state::play_3_audio_io(address_map &map) +{ + map(0x01, 0x01).w(this, FUNC(play_3_state::port01_a_w)); // irq counter + map(0x02, 0x02).r(this, FUNC(play_3_state::port02_a_r)); // sound code +} static INPUT_PORTS_START( play_3 ) diff --git a/src/mame/drivers/playch10.cpp b/src/mame/drivers/playch10.cpp index 9938b0efbe0..c94f431832b 100644 --- a/src/mame/drivers/playch10.cpp +++ b/src/mame/drivers/playch10.cpp @@ -350,34 +350,37 @@ WRITE8_MEMBER(playch10_state::time_w) /******************************************************************************/ /* BIOS */ -ADDRESS_MAP_START(playch10_state::bios_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM // 8V - AM_RANGE(0x8800, 0x8fff) AM_READWRITE(ram_8w_r, ram_8w_w) AM_SHARE("ram_8w") // 8W - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(playch10_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_READWRITE(pc10_prot_r, pc10_prot_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(playch10_state::bios_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("BIOS") - AM_RANGE(0x01, 0x01) AM_READ_PORT("SW1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SW2") - AM_RANGE(0x03, 0x03) AM_READ(pc10_detectclr_r) - AM_RANGE(0x00, 0x07) AM_DEVWRITE("outlatch1", ls259_device, write_d0) - AM_RANGE(0x08, 0x0f) AM_DEVWRITE("outlatch2", ls259_device, write_d0) - AM_RANGE(0x10, 0x13) AM_WRITE(time_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(playch10_state::cart_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_MIRROR(0x1800) AM_SHARE("work_ram") - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(pc10_in0_r, pc10_in0_w) - AM_RANGE(0x4017, 0x4017) AM_READ(pc10_in1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void playch10_state::bios_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); // 8V + map(0x8800, 0x8fff).rw(this, FUNC(playch10_state::ram_8w_r), FUNC(playch10_state::ram_8w_w)).share("ram_8w"); // 8W + map(0x9000, 0x97ff).ram().w(this, FUNC(playch10_state::playch10_videoram_w)).share("videoram"); + map(0xc000, 0xdfff).rom(); + map(0xe000, 0xffff).rw(this, FUNC(playch10_state::pc10_prot_r), FUNC(playch10_state::pc10_prot_w)); +} + +void playch10_state::bios_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("BIOS"); + map(0x01, 0x01).portr("SW1"); + map(0x02, 0x02).portr("SW2"); + map(0x03, 0x03).r(this, FUNC(playch10_state::pc10_detectclr_r)); + map(0x00, 0x07).w("outlatch1", FUNC(ls259_device::write_d0)); + map(0x08, 0x0f).w("outlatch2", FUNC(ls259_device::write_d0)); + map(0x10, 0x13).w(this, FUNC(playch10_state::time_w)); +} + +void playch10_state::cart_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().mirror(0x1800).share("work_ram"); + map(0x2000, 0x3fff).rw(m_ppu, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(playch10_state::sprite_dma_w)); + map(0x4016, 0x4016).rw(this, FUNC(playch10_state::pc10_in0_r), FUNC(playch10_state::pc10_in0_w)); + map(0x4017, 0x4017).r(this, FUNC(playch10_state::pc10_in1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x8000, 0xffff).rom(); +} /******************************************************************************/ diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp index 1bdab8861c7..884ff6acab7 100644 --- a/src/mame/drivers/playmark.cpp +++ b/src/mame/drivers/playmark.cpp @@ -261,154 +261,162 @@ WRITE8_MEMBER(playmark_state::hrdtimes_snd_control_w) /***************************** 68000 Memory Maps ****************************/ -ADDRESS_MAP_START(playmark_state::bigtwin_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x304000, 0x304001) AM_NOP /* watchdog? irq ack? */ - AM_RANGE(0x440000, 0x4403ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x500fff) AM_WRITE(wbeachvl_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x501000, 0x501fff) AM_WRITENOP /* unused RAM? */ - AM_RANGE(0x502000, 0x503fff) AM_WRITE(wbeachvl_txvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x504000, 0x50ffff) AM_WRITENOP /* unused RAM? */ - AM_RANGE(0x510000, 0x51000b) AM_WRITE(bigtwin_scroll_w) - AM_RANGE(0x51000c, 0x51000d) AM_WRITENOP /* always 3? */ - AM_RANGE(0x600000, 0x67ffff) AM_RAM AM_SHARE("bgvideoram") - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("SYSTEM") - AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("P2") - AM_RANGE(0x700016, 0x700017) AM_WRITE(coinctrl_w) - AM_RANGE(0x70001a, 0x70001b) AM_READ_PORT("DSW2") - AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("DSW1") - AM_RANGE(0x70001e, 0x70001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x780000, 0x7807ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") +void playmark_state::bigtwin_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x304000, 0x304001).noprw(); /* watchdog? irq ack? */ + map(0x440000, 0x4403ff).ram().share("spriteram"); + map(0x500000, 0x500fff).w(this, FUNC(playmark_state::wbeachvl_fgvideoram_w)).share("videoram2"); + map(0x501000, 0x501fff).nopw(); /* unused RAM? */ + map(0x502000, 0x503fff).w(this, FUNC(playmark_state::wbeachvl_txvideoram_w)).share("videoram1"); + map(0x504000, 0x50ffff).nopw(); /* unused RAM? */ + map(0x510000, 0x51000b).w(this, FUNC(playmark_state::bigtwin_scroll_w)); + map(0x51000c, 0x51000d).nopw(); /* always 3? */ + map(0x600000, 0x67ffff).ram().share("bgvideoram"); + map(0x700010, 0x700011).portr("SYSTEM"); + map(0x700012, 0x700013).portr("P1"); + map(0x700014, 0x700015).portr("P2"); + map(0x700016, 0x700017).w(this, FUNC(playmark_state::coinctrl_w)); + map(0x70001a, 0x70001b).portr("DSW2"); + map(0x70001c, 0x70001d).portr("DSW1"); + map(0x70001e, 0x70001f).w(this, FUNC(playmark_state::playmark_snd_command_w)); + map(0x780000, 0x7807ff).w(m_palette, FUNC(palette_device::write16)).share("palette"); // AM_RANGE(0xe00000, 0xe00001) ?? written on startup - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::bigtwinb_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") - AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w) - AM_RANGE(0x201000, 0x2013ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2") - AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2") - AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1") - AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::wbeachvl_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(wbeachvl_bgvideoram_w) AM_SHARE("videoram3") - AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(wbeachvl_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x508000, 0x509fff) AM_RAM_WRITE(wbeachvl_txvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x50f000, 0x50ffff) AM_RAM AM_SHARE("rowscroll") - AM_RANGE(0x510000, 0x51000b) AM_WRITE(wbeachvl_scroll_w) - AM_RANGE(0x51000c, 0x51000d) AM_WRITENOP /* 2 and 3 */ + map(0xff0000, 0xffffff).ram(); +} + +void playmark_state::bigtwinb_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3"); + map(0x104000, 0x107fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2"); + map(0x108000, 0x10ffff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1"); + map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w)); + map(0x201000, 0x2013ff).ram().share("spriteram"); + map(0x280000, 0x2807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300010, 0x300011).portr("SYSTEM"); + map(0x300012, 0x300013).portr("P1"); + map(0x300014, 0x300015).portr("P2"); + map(0x30001a, 0x30001b).portr("DSW2"); + map(0x30001c, 0x30001d).portr("DSW1"); + map(0x30001e, 0x30001f).w(this, FUNC(playmark_state::playmark_snd_command_w)); + map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */ + map(0xff0000, 0xffffff).ram(); +} + +void playmark_state::wbeachvl_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x440000, 0x440fff).ram().share("spriteram"); + map(0x500000, 0x501fff).ram().w(this, FUNC(playmark_state::wbeachvl_bgvideoram_w)).share("videoram3"); + map(0x504000, 0x505fff).ram().w(this, FUNC(playmark_state::wbeachvl_fgvideoram_w)).share("videoram2"); + map(0x508000, 0x509fff).ram().w(this, FUNC(playmark_state::wbeachvl_txvideoram_w)).share("videoram1"); + map(0x50f000, 0x50ffff).ram().share("rowscroll"); + map(0x510000, 0x51000b).w(this, FUNC(playmark_state::wbeachvl_scroll_w)); + map(0x51000c, 0x51000d).nopw(); /* 2 and 3 */ // AM_RANGE(0x700000, 0x700001) ?? written on startup - AM_RANGE(0x710010, 0x710011) AM_READ_PORT("SYSTEM") - AM_RANGE(0x710012, 0x710013) AM_READ_PORT("P1") - AM_RANGE(0x710014, 0x710015) AM_READ_PORT("P2") - AM_RANGE(0x710016, 0x710017) AM_WRITE(wbeachvl_coin_eeprom_w) - AM_RANGE(0x710018, 0x710019) AM_READ_PORT("P3") - AM_RANGE(0x71001a, 0x71001b) AM_READ_PORT("P4") + map(0x710010, 0x710011).portr("SYSTEM"); + map(0x710012, 0x710013).portr("P1"); + map(0x710014, 0x710015).portr("P2"); + map(0x710016, 0x710017).w(this, FUNC(playmark_state::wbeachvl_coin_eeprom_w)); + map(0x710018, 0x710019).portr("P3"); + map(0x71001a, 0x71001b).portr("P4"); // AM_RANGE(0x71001c, 0x71001d) AM_READ(playmark_snd_status???) - AM_RANGE(0x71001e, 0x71001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::excelsr_main_map) - AM_RANGE(0x000000, 0x2fffff) AM_ROM - AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */ - AM_RANGE(0x440000, 0x440cff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(wbeachvl_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(wbeachvl_txvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x510000, 0x51000b) AM_WRITE(excelsr_scroll_w) - AM_RANGE(0x51000c, 0x51000d) AM_WRITENOP /* 2 and 3 */ - AM_RANGE(0x600000, 0x67ffff) AM_RAM AM_SHARE("bgvideoram") - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("SYSTEM") - AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("P2") - AM_RANGE(0x700016, 0x700017) AM_WRITE(coinctrl_w) - AM_RANGE(0x70001a, 0x70001b) AM_READ_PORT("DSW2") - AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("DSW1") - AM_RANGE(0x70001e, 0x70001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x780000, 0x7807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::hrdtimes_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0bffff) AM_RAM - AM_RANGE(0x0c0000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0x0c0000) - AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") // 32*32? - AM_RANGE(0x100800, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x105fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") // 128*32? - AM_RANGE(0x106000, 0x107fff) AM_RAM - AM_RANGE(0x108000, 0x109fff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") // 64*64? - AM_RANGE(0x10a000, 0x10bfff) AM_RAM - AM_RANGE(0x10c000, 0x10ffff) AM_RAM // Unused - AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w) - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x280800, 0x280fff) AM_RAM // Unused - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("SYSTEM") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("P2") - AM_RANGE(0x300016, 0x300017) AM_WRITE(hrdtimes_coin_w) - AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2") - AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1") + map(0x71001e, 0x71001f).w(this, FUNC(playmark_state::playmark_snd_command_w)); + map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xffffff).ram(); +} + +void playmark_state::excelsr_main_map(address_map &map) +{ + map(0x000000, 0x2fffff).rom(); + map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */ + map(0x440000, 0x440cff).ram().share("spriteram"); + map(0x500000, 0x500fff).ram().w(this, FUNC(playmark_state::wbeachvl_fgvideoram_w)).share("videoram2"); + map(0x501000, 0x501fff).ram().w(this, FUNC(playmark_state::wbeachvl_txvideoram_w)).share("videoram1"); + map(0x510000, 0x51000b).w(this, FUNC(playmark_state::excelsr_scroll_w)); + map(0x51000c, 0x51000d).nopw(); /* 2 and 3 */ + map(0x600000, 0x67ffff).ram().share("bgvideoram"); + map(0x700010, 0x700011).portr("SYSTEM"); + map(0x700012, 0x700013).portr("P1"); + map(0x700014, 0x700015).portr("P2"); + map(0x700016, 0x700017).w(this, FUNC(playmark_state::coinctrl_w)); + map(0x70001a, 0x70001b).portr("DSW2"); + map(0x70001c, 0x70001d).portr("DSW1"); + map(0x70001e, 0x70001f).w(this, FUNC(playmark_state::playmark_snd_command_w)); + map(0x780000, 0x7807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xff0000, 0xffffff).ram(); +} + +void playmark_state::hrdtimes_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x0bffff).ram(); + map(0x0c0000, 0x0fffff).rom().region("maincpu", 0x0c0000); + map(0x100000, 0x1007ff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3"); // 32*32? + map(0x100800, 0x103fff).ram(); + map(0x104000, 0x105fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2"); // 128*32? + map(0x106000, 0x107fff).ram(); + map(0x108000, 0x109fff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1"); // 64*64? + map(0x10a000, 0x10bfff).ram(); + map(0x10c000, 0x10ffff).ram(); // Unused + map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w)); + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x280000, 0x2807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x280800, 0x280fff).ram(); // Unused + map(0x300010, 0x300011).portr("SYSTEM"); + map(0x300012, 0x300013).portr("P1"); + map(0x300014, 0x300015).portr("P2"); + map(0x300016, 0x300017).w(this, FUNC(playmark_state::hrdtimes_coin_w)); + map(0x30001a, 0x30001b).portr("DSW2"); + map(0x30001c, 0x30001d).portr("DSW1"); // AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::hotmind_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") - AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w) - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x2807ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("COINS") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("DISPENSER") AM_WRITE(hotmind_coin_eeprom_w) - AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2") - AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1") - AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */ - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::luckboomh_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(hrdtimes_bgvideoram_w) AM_SHARE("videoram3") - AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(hrdtimes_fgvideoram_w) AM_SHARE("videoram2") - AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(hrdtimes_txvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x110000, 0x11000d) AM_WRITE(hrdtimes_scroll_w) - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x2807ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("COINS") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("P1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("DISPENSER") AM_WRITE(luckboomh_dispenser_w) - AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("SERVICE") - AM_RANGE(0x30001e, 0x30001f) AM_WRITE(playmark_snd_command_w) - AM_RANGE(0x304000, 0x304001) AM_WRITENOP /* watchdog? irq ack? */ - AM_RANGE(0xff0000, 0xff03ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(playmark_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END + map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */ +} + +void playmark_state::hotmind_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3"); + map(0x104000, 0x107fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2"); + map(0x108000, 0x10ffff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1"); + map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w)); + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x280000, 0x2807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300010, 0x300011).portr("COINS"); + map(0x300012, 0x300013).portr("P1"); + map(0x300014, 0x300015).portr("DISPENSER").w(this, FUNC(playmark_state::hotmind_coin_eeprom_w)); + map(0x30001a, 0x30001b).portr("DSW2"); + map(0x30001c, 0x30001d).portr("DSW1"); + map(0x30001e, 0x30001f).w(this, FUNC(playmark_state::playmark_snd_command_w)); + map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */ + map(0xff0000, 0xffffff).ram(); +} + +void playmark_state::luckboomh_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram().w(this, FUNC(playmark_state::hrdtimes_bgvideoram_w)).share("videoram3"); + map(0x104000, 0x107fff).ram().w(this, FUNC(playmark_state::hrdtimes_fgvideoram_w)).share("videoram2"); + map(0x108000, 0x10ffff).ram().w(this, FUNC(playmark_state::hrdtimes_txvideoram_w)).share("videoram1"); + map(0x110000, 0x11000d).w(this, FUNC(playmark_state::hrdtimes_scroll_w)); + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x280000, 0x2807ff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300010, 0x300011).portr("COINS"); + map(0x300012, 0x300013).portr("P1"); + map(0x300014, 0x300015).portr("DISPENSER").w(this, FUNC(playmark_state::luckboomh_dispenser_w)); + map(0x30001c, 0x30001d).portr("SERVICE"); + map(0x30001e, 0x30001f).w(this, FUNC(playmark_state::playmark_snd_command_w)); + map(0x304000, 0x304001).nopw(); /* watchdog? irq ack? */ + map(0xff0000, 0xff03ff).ram().share("nvram"); + map(0xff8000, 0xffffff).ram(); +} + +void playmark_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} #define PLAYMARK_COINS \ diff --git a/src/mame/drivers/plus4.cpp b/src/mame/drivers/plus4.cpp index 09ad9f71b91..cd823f5d64a 100644 --- a/src/mame/drivers/plus4.cpp +++ b/src/mame/drivers/plus4.cpp @@ -482,18 +482,20 @@ READ8_MEMBER( plus4_state::ted_videoram_r ) // ADDRESS_MAP( plus4_mem ) //------------------------------------------------- -ADDRESS_MAP_START(plus4_state::plus4_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void plus4_state::plus4_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(plus4_state::read), FUNC(plus4_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( ted_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(plus4_state::ted_videoram_map) - AM_RANGE(0x0000, 0xffff) AM_READ(ted_videoram_r) -ADDRESS_MAP_END +void plus4_state::ted_videoram_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(plus4_state::ted_videoram_r)); +} diff --git a/src/mame/drivers/pluto5.cpp b/src/mame/drivers/pluto5.cpp index d23f252d66e..f1ff10262f5 100644 --- a/src/mame/drivers/pluto5.cpp +++ b/src/mame/drivers/pluto5.cpp @@ -239,9 +239,10 @@ WRITE32_MEMBER(pluto5_state::pluto5_mem_w) } -ADDRESS_MAP_START(pluto5_state::pluto5_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE(pluto5_mem_r, pluto5_mem_w) -ADDRESS_MAP_END +void pluto5_state::pluto5_map(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(pluto5_state::pluto5_mem_r), FUNC(pluto5_state::pluto5_mem_w)); +} static INPUT_PORTS_START( pluto5 ) INPUT_PORTS_END diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp index 593dd930d72..3e2ec832102 100644 --- a/src/mame/drivers/plygonet.cpp +++ b/src/mame/drivers/plygonet.cpp @@ -413,44 +413,47 @@ WRITE16_MEMBER(polygonet_state::dsp56k_ram_bank04_write) /**********************************************************************************/ -ADDRESS_MAP_START(polygonet_state::main_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE16("k053936", k053936_device, ctrl_r, ctrl_w, 0xffffffff) - AM_RANGE(0x440000, 0x440fff) AM_READWRITE(polygonet_roz_ram_r, polygonet_roz_ram_w) - AM_RANGE(0x480000, 0x480003) AM_READ8(polygonet_inputs_r, 0xffffffff) - AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE8(polygonet_sys_w, 0xffffffff) - AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(shared_ram_write) AM_SHARE("shared_ram") - AM_RANGE(0x504000, 0x504003) AM_WRITE(dsp_w_lines) - AM_RANGE(0x506000, 0x50600f) AM_READWRITE(dsp_host_interface_r, dsp_host_interface_w) - AM_RANGE(0x540000, 0x540fff) AM_READWRITE(polygonet_ttl_ram_r, polygonet_ttl_ram_w) - AM_RANGE(0x541000, 0x54101f) AM_RAM - AM_RANGE(0x580000, 0x5807ff) AM_RAM - AM_RANGE(0x580800, 0x580803) AM_READ(network_r) AM_WRITENOP /* network RAM | registers? */ - AM_RANGE(0x600000, 0x60000f) AM_DEVICE8("k054321", k054321_device, main_map, 0xffffffff) - AM_RANGE(0x640000, 0x640003) AM_WRITE(sound_irq_w) - AM_RANGE(0x680000, 0x680003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset32_w) - AM_RANGE(0x700000, 0x73ffff) AM_ROM AM_REGION("gfx2", 0) - AM_RANGE(0x780000, 0x79ffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void polygonet_state::main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x21ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x400000, 0x40001f).rw(m_k053936, FUNC(k053936_device::ctrl_r), FUNC(k053936_device::ctrl_w)); + map(0x440000, 0x440fff).rw(this, FUNC(polygonet_state::polygonet_roz_ram_r), FUNC(polygonet_state::polygonet_roz_ram_w)); + map(0x480000, 0x480003).r(this, FUNC(polygonet_state::polygonet_inputs_r)); + map(0x4c0000, 0x4c0003).w(this, FUNC(polygonet_state::polygonet_sys_w)); + map(0x500000, 0x503fff).ram().w(this, FUNC(polygonet_state::shared_ram_write)).share("shared_ram"); + map(0x504000, 0x504003).w(this, FUNC(polygonet_state::dsp_w_lines)); + map(0x506000, 0x50600f).rw(this, FUNC(polygonet_state::dsp_host_interface_r), FUNC(polygonet_state::dsp_host_interface_w)); + map(0x540000, 0x540fff).rw(this, FUNC(polygonet_state::polygonet_ttl_ram_r), FUNC(polygonet_state::polygonet_ttl_ram_w)); + map(0x541000, 0x54101f).ram(); + map(0x580000, 0x5807ff).ram(); + map(0x580800, 0x580803).r(this, FUNC(polygonet_state::network_r)).nopw(); /* network RAM | registers? */ + map(0x600000, 0x60000f).m(m_k054321, FUNC(k054321_device::main_map)); + map(0x640000, 0x640003).w(this, FUNC(polygonet_state::sound_irq_w)); + map(0x680000, 0x680003).w("watchdog", FUNC(watchdog_timer_device::reset32_w)); + map(0x700000, 0x73ffff).rom().region("gfx2", 0); + map(0x780000, 0x79ffff).rom().region("gfx1", 0); + map(0xff8000, 0xffffff).ram(); +} /**********************************************************************************/ -ADDRESS_MAP_START(polygonet_state::dsp_program_map) - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("dsp56k_p_mirror") /* Unsure of size, but 0x1000 matches bank01 */ - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("dsp56k_p_8000") - AM_RANGE(0xc000, 0xc000) AM_READ(dsp56k_bootload_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(polygonet_state::dsp_data_map) - AM_RANGE(0x0800, 0x5fff) AM_RAM /* Appears to not be affected by banking? */ - AM_RANGE(0x6000, 0x6fff) AM_READWRITE(dsp56k_ram_bank00_read, dsp56k_ram_bank00_write) - AM_RANGE(0x7000, 0x7fff) AM_READWRITE(dsp56k_ram_bank01_read, dsp56k_ram_bank01_write) /* Mirrored in program space @ 0x7000 */ - AM_RANGE(0x8000, 0xbfff) AM_READWRITE(dsp56k_ram_bank02_read, dsp56k_ram_bank02_write) - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(dsp56k_shared_ram_read, dsp56k_shared_ram_write) - AM_RANGE(0xe000, 0xffbf) AM_READWRITE(dsp56k_ram_bank04_read, dsp56k_ram_bank04_write) -ADDRESS_MAP_END +void polygonet_state::dsp_program_map(address_map &map) +{ + map(0x7000, 0x7fff).ram().share("dsp56k_p_mirror"); /* Unsure of size, but 0x1000 matches bank01 */ + map(0x8000, 0x87ff).ram().share("dsp56k_p_8000"); + map(0xc000, 0xc000).r(this, FUNC(polygonet_state::dsp56k_bootload_r)); +} + +void polygonet_state::dsp_data_map(address_map &map) +{ + map(0x0800, 0x5fff).ram(); /* Appears to not be affected by banking? */ + map(0x6000, 0x6fff).rw(this, FUNC(polygonet_state::dsp56k_ram_bank00_read), FUNC(polygonet_state::dsp56k_ram_bank00_write)); + map(0x7000, 0x7fff).rw(this, FUNC(polygonet_state::dsp56k_ram_bank01_read), FUNC(polygonet_state::dsp56k_ram_bank01_write)); /* Mirrored in program space @ 0x7000 */ + map(0x8000, 0xbfff).rw(this, FUNC(polygonet_state::dsp56k_ram_bank02_read), FUNC(polygonet_state::dsp56k_ram_bank02_write)); + map(0xc000, 0xdfff).rw(this, FUNC(polygonet_state::dsp56k_shared_ram_read), FUNC(polygonet_state::dsp56k_shared_ram_write)); + map(0xe000, 0xffbf).rw(this, FUNC(polygonet_state::dsp56k_ram_bank04_read), FUNC(polygonet_state::dsp56k_ram_bank04_write)); +} /**********************************************************************************/ @@ -472,17 +475,18 @@ WRITE8_MEMBER(polygonet_state::sound_ctrl_w) -ADDRESS_MAP_START(polygonet_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xe230, 0xe3ff) AM_RAM - AM_RANGE(0xe400, 0xe62f) AM_READNOP AM_WRITENOP // Second 054539 (not present) - AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) -ADDRESS_MAP_END +void polygonet_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe230, 0xe3ff).ram(); + map(0xe400, 0xe62f).nopr().nopw(); // Second 054539 (not present) + map(0xe630, 0xe7ff).ram(); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(polygonet_state::sound_ctrl_w)); +} /**********************************************************************************/ diff --git a/src/mame/drivers/pm68k.cpp b/src/mame/drivers/pm68k.cpp index 5588892fc8f..5278d890b71 100644 --- a/src/mame/drivers/pm68k.cpp +++ b/src/mame/drivers/pm68k.cpp @@ -35,14 +35,15 @@ private: }; -ADDRESS_MAP_START(pm68k_state::pm68k_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x200000, 0x205fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("mpsc", i8274_new_device, ba_cd_r, ba_cd_w, 0xff00) - AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE("stc", am9513_device, read16, write16) -ADDRESS_MAP_END +void pm68k_state::pm68k_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).ram().share("rambase"); + map(0x200000, 0x205fff).rom().region("roms", 0); + map(0x600000, 0x600007).rw("mpsc", FUNC(i8274_new_device::ba_cd_r), FUNC(i8274_new_device::ba_cd_w)).umask16(0xff00); + map(0x800000, 0x800003).rw("stc", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); +} /* Input ports */ diff --git a/src/mame/drivers/pmd85.cpp b/src/mame/drivers/pmd85.cpp index 42cfb573d5e..a77b1a8ea01 100644 --- a/src/mame/drivers/pmd85.cpp +++ b/src/mame/drivers/pmd85.cpp @@ -220,77 +220,85 @@ uint32_t pmd85_state::screen_update_pmd85(screen_device &screen, bitmap_ind16 &b /* I/O ports */ -ADDRESS_MAP_START(pmd85_state::pmd85_io_map) - AM_RANGE( 0x00, 0xff) AM_READWRITE(pmd85_io_r, pmd85_io_w ) -ADDRESS_MAP_END +void pmd85_state::pmd85_io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(pmd85_state::pmd85_io_r), FUNC(pmd85_state::pmd85_io_w)); +} -ADDRESS_MAP_START(pmd85_state::mato_io_map) - AM_RANGE( 0x00, 0xff) AM_READWRITE(mato_io_r, mato_io_w ) -ADDRESS_MAP_END +void pmd85_state::mato_io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(pmd85_state::mato_io_r), FUNC(pmd85_state::mato_io_w)); +} /* memory w/r functions */ -ADDRESS_MAP_START(pmd85_state::pmd85_mem) - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1") - AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2") - AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3") - AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank5") - AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank6") - AM_RANGE(0x9000, 0x9fff) AM_NOP - AM_RANGE(0xa000, 0xafff) AM_READ_BANK("bank7") - AM_RANGE(0xb000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank8") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pmd85_state::pmd852a_mem) - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1") - AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2") - AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3") - AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank5") - AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank6") - AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("bank7") - AM_RANGE(0xa000, 0xafff) AM_READ_BANK("bank8") - AM_RANGE(0xb000, 0xbfff) AM_RAMBANK("bank9") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank10") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pmd85_state::pmd853_mem) - AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank9") - AM_RANGE(0x2000, 0x3fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank10") - AM_RANGE(0x4000, 0x5fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank11") - AM_RANGE(0x6000, 0x7fff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank12") - AM_RANGE(0x8000, 0x9fff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank13") - AM_RANGE(0xa000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank14") - AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank15") - AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank8") AM_WRITE_BANK("bank16") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pmd85_state::alfa_mem) - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1") - AM_RANGE(0x1000, 0x33ff) AM_RAMBANK("bank2") - AM_RANGE(0x3400, 0x3fff) AM_RAMBANK("bank3") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank4") - AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank5") - AM_RANGE(0x9000, 0xb3ff) AM_READ_BANK("bank6") - AM_RANGE(0xb400, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank7") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pmd85_state::mato_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pmd85_state::c2717_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END +void pmd85_state::pmd85_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); + map(0x1000, 0x1fff).bankrw("bank2"); + map(0x2000, 0x2fff).bankrw("bank3"); + map(0x3000, 0x3fff).bankrw("bank4"); + map(0x4000, 0x7fff).bankrw("bank5"); + map(0x8000, 0x8fff).bankr("bank6"); + map(0x9000, 0x9fff).noprw(); + map(0xa000, 0xafff).bankr("bank7"); + map(0xb000, 0xbfff).noprw(); + map(0xc000, 0xffff).bankrw("bank8"); +} + +void pmd85_state::pmd852a_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); + map(0x1000, 0x1fff).bankrw("bank2"); + map(0x2000, 0x2fff).bankrw("bank3"); + map(0x3000, 0x3fff).bankrw("bank4"); + map(0x4000, 0x7fff).bankrw("bank5"); + map(0x8000, 0x8fff).bankr("bank6"); + map(0x9000, 0x9fff).bankrw("bank7"); + map(0xa000, 0xafff).bankr("bank8"); + map(0xb000, 0xbfff).bankrw("bank9"); + map(0xc000, 0xffff).bankrw("bank10"); +} + +void pmd85_state::pmd853_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bank1").bankw("bank9"); + map(0x2000, 0x3fff).bankr("bank2").bankw("bank10"); + map(0x4000, 0x5fff).bankr("bank3").bankw("bank11"); + map(0x6000, 0x7fff).bankr("bank4").bankw("bank12"); + map(0x8000, 0x9fff).bankr("bank5").bankw("bank13"); + map(0xa000, 0xbfff).bankr("bank6").bankw("bank14"); + map(0xc000, 0xdfff).bankr("bank7").bankw("bank15"); + map(0xe000, 0xffff).bankr("bank8").bankw("bank16"); +} + +void pmd85_state::alfa_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); + map(0x1000, 0x33ff).bankrw("bank2"); + map(0x3400, 0x3fff).bankrw("bank3"); + map(0x4000, 0x7fff).bankrw("bank4"); + map(0x8000, 0x8fff).bankr("bank5"); + map(0x9000, 0xb3ff).bankr("bank6"); + map(0xb400, 0xbfff).noprw(); + map(0xc000, 0xffff).bankrw("bank7"); +} + +void pmd85_state::mato_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankr("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void pmd85_state::c2717_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankr("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} /* keyboard input */ diff --git a/src/mame/drivers/pmi80.cpp b/src/mame/drivers/pmi80.cpp index 5c804ae1597..22d4f539f88 100644 --- a/src/mame/drivers/pmi80.cpp +++ b/src/mame/drivers/pmi80.cpp @@ -82,18 +82,20 @@ WRITE8_MEMBER( pmi80_state::leds_w ) } } -ADDRESS_MAP_START(pmi80_state::pmi80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x03ff ) AM_ROM - AM_RANGE( 0x0400, 0x1fff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pmi80_state::pmi80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf8, 0xf8) AM_WRITE(leds_w) - AM_RANGE(0xfa, 0xfa) AM_READWRITE(keyboard_r,keyboard_w) -ADDRESS_MAP_END +void pmi80_state::pmi80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x0400, 0x1fff).ram(); +} + +void pmi80_state::pmi80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf8, 0xf8).w(this, FUNC(pmi80_state::leds_w)); + map(0xfa, 0xfa).rw(this, FUNC(pmi80_state::keyboard_r), FUNC(pmi80_state::keyboard_w)); +} /* Input ports */ static INPUT_PORTS_START( pmi80 ) diff --git a/src/mame/drivers/pntnpuzl.cpp b/src/mame/drivers/pntnpuzl.cpp index 0e66912456c..52588bd6af4 100644 --- a/src/mame/drivers/pntnpuzl.cpp +++ b/src/mame/drivers/pntnpuzl.cpp @@ -281,29 +281,31 @@ READ16_MEMBER(pntnpuzl_state::irq4_ack_r) } -ADDRESS_MAP_START(pntnpuzl_state::pntnpuzl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ(irq1_ack_r) - AM_RANGE(0x100000, 0x100001) AM_READ(irq2_ack_r) - AM_RANGE(0x180000, 0x180001) AM_READ(irq4_ack_r) - AM_RANGE(0x200000, 0x200001) AM_WRITE(pntnpuzl_200000_w) - AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8("via", via6522_device, read, write, 0xff00) - AM_RANGE(0x280014, 0x280015) AM_READ(pntnpuzl_280014_r) - AM_RANGE(0x280018, 0x280019) AM_WRITE(pntnpuzl_280018_w) - AM_RANGE(0x28001a, 0x28001b) AM_READ(pntnpuzl_28001a_r) +void pntnpuzl_state::pntnpuzl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080001).r(this, FUNC(pntnpuzl_state::irq1_ack_r)); + map(0x100000, 0x100001).r(this, FUNC(pntnpuzl_state::irq2_ack_r)); + map(0x180000, 0x180001).r(this, FUNC(pntnpuzl_state::irq4_ack_r)); + map(0x200000, 0x200001).w(this, FUNC(pntnpuzl_state::pntnpuzl_200000_w)); + map(0x280000, 0x28001f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0xff00); + map(0x280014, 0x280015).r(this, FUNC(pntnpuzl_state::pntnpuzl_280014_r)); + map(0x280018, 0x280019).w(this, FUNC(pntnpuzl_state::pntnpuzl_280018_w)); + map(0x28001a, 0x28001b).r(this, FUNC(pntnpuzl_state::pntnpuzl_28001a_r)); /* standard VGA */ - AM_RANGE(0x3a0000, 0x3bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffff) - AM_RANGE(0x3c03b0, 0x3c03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffff) - AM_RANGE(0x3c03c0, 0x3c03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffff) - AM_RANGE(0x3c03d0, 0x3c03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffff) + map(0x3a0000, 0x3bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x3c03b0, 0x3c03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x3c03c0, 0x3c03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x3c03d0, 0x3c03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); - AM_RANGE(0x400000, 0x407fff) AM_RAM -ADDRESS_MAP_END + map(0x400000, 0x407fff).ram(); +} -ADDRESS_MAP_START(pntnpuzl_state::mcu_map) - AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("mcu", 0) -ADDRESS_MAP_END +void pntnpuzl_state::mcu_map(address_map &map) +{ + map(0x2000, 0x3fff).rom().region("mcu", 0); +} INPUT_CHANGED_MEMBER(pntnpuzl_state::coin_inserted) diff --git a/src/mame/drivers/pockchal.cpp b/src/mame/drivers/pockchal.cpp index 2e6b69cf9b7..f2dd0402011 100644 --- a/src/mame/drivers/pockchal.cpp +++ b/src/mame/drivers/pockchal.cpp @@ -71,9 +71,10 @@ uint32_t pockchalv1_state::screen_update_pockchalv1(screen_device &screen, bitma } -ADDRESS_MAP_START(pockchalv1_state::pockchalv1_map) - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END +void pockchalv1_state::pockchalv1_map(address_map &map) +{ + map(0xc000, 0xffff).ram(); +} static INPUT_PORTS_START( pockchalv1 ) diff --git a/src/mame/drivers/pocketc.cpp b/src/mame/drivers/pocketc.cpp index 1424190f482..049a8e66caf 100644 --- a/src/mame/drivers/pocketc.cpp +++ b/src/mame/drivers/pocketc.cpp @@ -85,79 +85,89 @@ /* special keys red c-ce and reset; warm boot, program NOT lost*/ -ADDRESS_MAP_START(pc1401_state::pc1401_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x3800, 0x47ff) AM_RAM - AM_RANGE( 0x6000, 0x67ff) AM_READWRITE(pc1401_lcd_read, pc1401_lcd_write ) AM_MIRROR(0x1000) - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void pc1401_state::pc1401_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3800, 0x47ff).ram(); + map(0x6000, 0x67ff).rw(this, FUNC(pc1401_state::pc1401_lcd_read), FUNC(pc1401_state::pc1401_lcd_write)).mirror(0x1000); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(pc1401_state::pc1402_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x2000, 0x47ff) AM_RAM - AM_RANGE( 0x6000, 0x67ff) AM_READWRITE(pc1401_lcd_read, pc1401_lcd_write ) AM_MIRROR(0x1000) - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void pc1401_state::pc1402_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x47ff).ram(); + map(0x6000, 0x67ff).rw(this, FUNC(pc1401_state::pc1401_lcd_read), FUNC(pc1401_state::pc1401_lcd_write)).mirror(0x1000); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(pc1251_state::pc1250_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x4000, 0x7fff) AM_ROM - AM_RANGE( 0xc000, 0xc7ff) AM_RAM // 2KB RAM - AM_RANGE( 0xf800, 0xf8ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) -ADDRESS_MAP_END +void pc1251_state::pc1250_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); // 2KB RAM + map(0xf800, 0xf8ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write)); +} -ADDRESS_MAP_START(pc1251_state::pc1251_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x4000, 0x7fff) AM_ROM - AM_RANGE( 0xb800, 0xc7ff) AM_RAM // 4KB RAM - AM_RANGE( 0xf800, 0xf8ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) -ADDRESS_MAP_END +void pc1251_state::pc1251_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).rom(); + map(0xb800, 0xc7ff).ram(); // 4KB RAM + map(0xf800, 0xf8ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write)); +} -ADDRESS_MAP_START(pc1251_state::pc1255_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x4000, 0x7fff) AM_ROM - AM_RANGE( 0xa000, 0xc7ff) AM_RAM // 10KB RAM - AM_RANGE( 0xf800, 0xf8ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) -ADDRESS_MAP_END +void pc1251_state::pc1255_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).rom(); + map(0xa000, 0xc7ff).ram(); // 10KB RAM + map(0xf800, 0xf8ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write)); +} -ADDRESS_MAP_START(pc1251_state::pc1260_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x2000, 0x20ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) +void pc1251_state::pc1260_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write)); //AM_RANGE( 0x2800, 0x28ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) - AM_RANGE( 0x5800, 0x67ff) AM_RAM // 4KB RAM - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x5800, 0x67ff).ram(); // 4KB RAM + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(pc1251_state::pc1261_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x2000, 0x20ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) +void pc1251_state::pc1261_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x20ff).rw(this, FUNC(pc1251_state::pc1251_lcd_read), FUNC(pc1251_state::pc1251_lcd_write)); //AM_RANGE( 0x2800, 0x28ff) AM_READWRITE(pc1251_lcd_read, pc1251_lcd_write) - AM_RANGE( 0x4000, 0x67ff) AM_RAM // 10KB RAM - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x4000, 0x67ff).ram(); // 10KB RAM + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(pc1350_state::pc1350_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x7000, 0x7eff) AM_READWRITE(pc1350_lcd_read, pc1350_lcd_write ) - AM_RANGE( 0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(pc1403_state::pc1403_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x3000, 0x30bf) AM_READWRITE(pc1403_lcd_read, pc1403_lcd_write ) - AM_RANGE( 0x3800, 0x3fff) AM_READWRITE(pc1403_asic_read, pc1403_asic_write ) - AM_RANGE( 0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE( 0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void pc1350_state::pc1350_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x7000, 0x7eff).rw(this, FUNC(pc1350_state::pc1350_lcd_read), FUNC(pc1350_state::pc1350_lcd_write)); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(pc1403_state::pc1403h_mem) - AM_RANGE( 0x0000, 0x1fff) AM_ROM - AM_RANGE( 0x3000, 0x30bf) AM_READWRITE(pc1403_lcd_read, pc1403_lcd_write ) - AM_RANGE( 0x3800, 0x3fff) AM_READWRITE(pc1403_asic_read, pc1403_asic_write ) - AM_RANGE( 0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE( 0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void pc1403_state::pc1403_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x30bf).rw(this, FUNC(pc1403_state::pc1403_lcd_read), FUNC(pc1403_state::pc1403_lcd_write)); + map(0x3800, 0x3fff).rw(this, FUNC(pc1403_state::pc1403_asic_read), FUNC(pc1403_state::pc1403_asic_write)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0xe000, 0xffff).ram(); +} + +void pc1403_state::pc1403h_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x30bf).rw(this, FUNC(pc1403_state::pc1403_lcd_read), FUNC(pc1403_state::pc1403_lcd_write)); + map(0x3800, 0x3fff).rw(this, FUNC(pc1403_state::pc1403_asic_read), FUNC(pc1403_state::pc1403_asic_write)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).ram(); +} #if 0 diff --git a/src/mame/drivers/pockstat.cpp b/src/mame/drivers/pockstat.cpp index a97391e8f5a..dda961ce241 100644 --- a/src/mame/drivers/pockstat.cpp +++ b/src/mame/drivers/pockstat.cpp @@ -841,21 +841,22 @@ WRITE32_MEMBER(pockstat_state::ps_audio_w) verboselog(0, "ps_audio_w: Unknown Write: %08x = %08x & %08x\n", 0xd800000 + (offset << 2), data, mem_mask); } -ADDRESS_MAP_START(pockstat_state::pockstat_mem) - AM_RANGE(0x00000000, 0x000007ff) AM_RAM - AM_RANGE(0x02000000, 0x02ffffff) AM_READ(ps_rombank_r) - AM_RANGE(0x04000000, 0x04003fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x06000000, 0x06000307) AM_READWRITE(ps_ftlb_r, ps_ftlb_w) - AM_RANGE(0x08000000, 0x0801ffff) AM_READWRITE(ps_flash_r, ps_flash_w) - AM_RANGE(0x0a000000, 0x0a000013) AM_READWRITE(ps_intc_r, ps_intc_w) - AM_RANGE(0x0a800000, 0x0a80002b) AM_READWRITE(ps_timer_r, ps_timer_w) - AM_RANGE(0x0b000000, 0x0b000007) AM_READWRITE(ps_clock_r, ps_clock_w) - AM_RANGE(0x0b800000, 0x0b80000f) AM_READWRITE(ps_rtc_r, ps_rtc_w) - AM_RANGE(0x0d000000, 0x0d000003) AM_READWRITE(ps_lcd_r, ps_lcd_w) - AM_RANGE(0x0d000100, 0x0d00017f) AM_RAM AM_SHARE("lcd_buffer") - AM_RANGE(0x0d80000c, 0x0d80000f) AM_READWRITE(ps_audio_r, ps_audio_w) - AM_RANGE(0x0d800014, 0x0d800017) AM_DEVWRITE16("dac", dac_word_interface, write, 0x0000ffff) -ADDRESS_MAP_END +void pockstat_state::pockstat_mem(address_map &map) +{ + map(0x00000000, 0x000007ff).ram(); + map(0x02000000, 0x02ffffff).r(this, FUNC(pockstat_state::ps_rombank_r)); + map(0x04000000, 0x04003fff).rom().region("maincpu", 0); + map(0x06000000, 0x06000307).rw(this, FUNC(pockstat_state::ps_ftlb_r), FUNC(pockstat_state::ps_ftlb_w)); + map(0x08000000, 0x0801ffff).rw(this, FUNC(pockstat_state::ps_flash_r), FUNC(pockstat_state::ps_flash_w)); + map(0x0a000000, 0x0a000013).rw(this, FUNC(pockstat_state::ps_intc_r), FUNC(pockstat_state::ps_intc_w)); + map(0x0a800000, 0x0a80002b).rw(this, FUNC(pockstat_state::ps_timer_r), FUNC(pockstat_state::ps_timer_w)); + map(0x0b000000, 0x0b000007).rw(this, FUNC(pockstat_state::ps_clock_r), FUNC(pockstat_state::ps_clock_w)); + map(0x0b800000, 0x0b80000f).rw(this, FUNC(pockstat_state::ps_rtc_r), FUNC(pockstat_state::ps_rtc_w)); + map(0x0d000000, 0x0d000003).rw(this, FUNC(pockstat_state::ps_lcd_r), FUNC(pockstat_state::ps_lcd_w)); + map(0x0d000100, 0x0d00017f).ram().share("lcd_buffer"); + map(0x0d80000c, 0x0d80000f).rw(this, FUNC(pockstat_state::ps_audio_r), FUNC(pockstat_state::ps_audio_w)); + map(0x0d800014, 0x0d800015).w("dac", FUNC(dac_word_interface::write)); +} /* Input ports */ static INPUT_PORTS_START( pockstat ) diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 53c700382c9..fc78c46e8c8 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -781,28 +781,31 @@ WRITE8_MEMBER( portfolio_state::io_w ) // ADDRESS_MAP( portfolio_mem ) //------------------------------------------------- -ADDRESS_MAP_START(portfolio_state::portfolio_mem) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mem_r, mem_w) -ADDRESS_MAP_END +void portfolio_state::portfolio_mem(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(portfolio_state::mem_r), FUNC(portfolio_state::mem_w)); +} //------------------------------------------------- // ADDRESS_MAP( portfolio_io ) //------------------------------------------------- -ADDRESS_MAP_START(portfolio_state::portfolio_io) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void portfolio_state::portfolio_io(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(portfolio_state::io_r), FUNC(portfolio_state::io_w)); +} //------------------------------------------------- // ADDRESS_MAP( portfolio_lcdc ) //------------------------------------------------- -ADDRESS_MAP_START(portfolio_state::portfolio_lcdc) - ADDRESS_MAP_GLOBAL_MASK(0x7ff) - AM_RANGE(0x0000, 0x07ff) AM_RAM -ADDRESS_MAP_END +void portfolio_state::portfolio_lcdc(address_map &map) +{ + map.global_mask(0x7ff); + map(0x0000, 0x07ff).ram(); +} diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp index 70218e46921..9488a1cc5f4 100644 --- a/src/mame/drivers/poisk1.cpp +++ b/src/mame/drivers/poisk1.cpp @@ -620,20 +620,22 @@ MACHINE_RESET_MEMBER(p1_state, poisk1) * macros */ -ADDRESS_MAP_START(p1_state::poisk1_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0xc000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(p1_state::poisk1_io) - AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x0028, 0x002B) AM_READWRITE(p1_trap_r, p1_trap_w) - AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) +void p1_state::poisk1_map(address_map &map) +{ + map.unmap_value_high(); + map(0xfc000, 0xfffff).rom().region("bios", 0xc000); +} + +void p1_state::poisk1_io(address_map &map) +{ + map(0x0020, 0x0021).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0028, 0x002B).rw(this, FUNC(p1_state::p1_trap_r), FUNC(p1_state::p1_trap_w)); + map(0x0040, 0x0043).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); // can't use regular AM_DEVREADWRITE, because THIS IS SPARTA! // 1st PPI occupies ports 60, 69, 6A and 6B; 2nd PPI -- 68, 61, 62 and 63. - AM_RANGE(0x0060, 0x006F) AM_READWRITE(p1_ppi_r, p1_ppi_w) - AM_RANGE(0x03D0, 0x03DF) AM_READWRITE(p1_cga_r, p1_cga_w) -ADDRESS_MAP_END + map(0x0060, 0x006F).rw(this, FUNC(p1_state::p1_ppi_r), FUNC(p1_state::p1_ppi_w)); + map(0x03D0, 0x03DF).rw(this, FUNC(p1_state::p1_cga_r), FUNC(p1_state::p1_cga_w)); +} static INPUT_PORTS_START( poisk1 ) PORT_INCLUDE( poisk1_keyboard_v91 ) diff --git a/src/mame/drivers/pokechmp.cpp b/src/mame/drivers/pokechmp.cpp index 3fb7d83f089..29fc48bd6a9 100644 --- a/src/mame/drivers/pokechmp.cpp +++ b/src/mame/drivers/pokechmp.cpp @@ -81,48 +81,51 @@ WRITE8_MEMBER(pokechmp_state::pokechmp_sound_w) -ADDRESS_MAP_START(pokechmp_state::pokechmp_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pokechmp_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x11ff) AM_RAM AM_SHARE("spriteram") +void pokechmp_state::pokechmp_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0fff).ram().w(this, FUNC(pokechmp_state::pokechmp_videoram_w)).share("videoram"); + map(0x1000, 0x11ff).ram().share("spriteram"); - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") - AM_RANGE(0x1801, 0x1801) AM_WRITE(pokechmp_flipscreen_w) + map(0x1800, 0x1800).portr("P1"); + map(0x1801, 0x1801).w(this, FUNC(pokechmp_state::pokechmp_flipscreen_w)); /* 1800 - 0x181f are unused BAC-06 registers, see video/dec0.c */ - AM_RANGE(0x1802, 0x181f) AM_WRITENOP + map(0x1802, 0x181f).nopw(); - AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(pokechmp_sound_w) - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pokechmp_bank_w) + map(0x1a00, 0x1a00).portr("P2").w(this, FUNC(pokechmp_state::pokechmp_sound_w)); + map(0x1c00, 0x1c00).portr("DSW").w(this, FUNC(pokechmp_state::pokechmp_bank_w)); /* Extra on Poke Champ (not on Pocket Gal) */ - AM_RANGE(0x2000, 0x23ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x2400, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixed") -ADDRESS_MAP_END + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).bankr("fixed"); +} /***************************************************************************/ -ADDRESS_MAP_START(pokechmp_state::pokechmp_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x1800, 0x1800) AM_WRITENOP /* MSM5205 chip on Pocket Gal, not connected here? */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(pokechmp_sound_bank_w) /* sound rom bank seems to be replaced with OKI bank */ - AM_RANGE(0x2800, 0x2800) AM_DEVREADWRITE("oki", okim6295_device, read, write) // extra - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) +void pokechmp_state::pokechmp_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write)); + map(0x1800, 0x1800).nopw(); /* MSM5205 chip on Pocket Gal, not connected here? */ + map(0x2000, 0x2000).w(this, FUNC(pokechmp_state::pokechmp_sound_bank_w)); /* sound rom bank seems to be replaced with OKI bank */ + map(0x2800, 0x2800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // extra + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // AM_RANGE(0x3400, 0x3400) AM_READ(pokechmp_adpcm_reset_r) /* not on here */ - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank3") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x4000, 0x7fff).bankr("bank3"); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(pokechmp_state::pokechmp_oki_map) - AM_RANGE(0x00000, 0x37fff) AM_ROM - AM_RANGE(0x38000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void pokechmp_state::pokechmp_oki_map(address_map &map) +{ + map(0x00000, 0x37fff).rom(); + map(0x38000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( pokechmp ) diff --git a/src/mame/drivers/pokemini.cpp b/src/mame/drivers/pokemini.cpp index d76aa166f99..45231a5df16 100644 --- a/src/mame/drivers/pokemini.cpp +++ b/src/mame/drivers/pokemini.cpp @@ -125,12 +125,13 @@ READ8_MEMBER( pokemini_state::rom_r ) return m_cart->read_rom(space, offset & 0x1fffff); } -ADDRESS_MAP_START(pokemini_state::pokemini_mem_map) - AM_RANGE( 0x000000, 0x000fff ) AM_ROM /* bios */ - AM_RANGE( 0x001000, 0x001fff ) AM_RAM AM_SHARE("p_ram") /* VRAM/RAM */ - AM_RANGE( 0x002000, 0x0020ff ) AM_READWRITE(hwreg_r, hwreg_w) /* hardware registers */ - AM_RANGE( 0x002100, 0x1fffff ) AM_READ(rom_r) /* cartridge area */ -ADDRESS_MAP_END +void pokemini_state::pokemini_mem_map(address_map &map) +{ + map(0x000000, 0x000fff).rom(); /* bios */ + map(0x001000, 0x001fff).ram().share("p_ram"); /* VRAM/RAM */ + map(0x002000, 0x0020ff).rw(this, FUNC(pokemini_state::hwreg_r), FUNC(pokemini_state::hwreg_w)); /* hardware registers */ + map(0x002100, 0x1fffff).r(this, FUNC(pokemini_state::rom_r)); /* cartridge area */ +} static INPUT_PORTS_START( pokemini ) diff --git a/src/mame/drivers/poker72.cpp b/src/mame/drivers/poker72.cpp index 87517f4d888..12fcb9ec5ab 100644 --- a/src/mame/drivers/poker72.cpp +++ b/src/mame/drivers/poker72.cpp @@ -115,26 +115,27 @@ WRITE8_MEMBER(poker72_state::tile_bank_w) m_tile_bank = (data & 4) >> 2; } -ADDRESS_MAP_START(poker72_state::poker72_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM //work ram - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("vram") - AM_RANGE(0xf000, 0xfbff) AM_RAM_WRITE(poker72_paletteram_w) AM_SHARE("pal") - AM_RANGE(0xfc00, 0xfdff) AM_RAM //??? - AM_RANGE(0xfe08, 0xfe08) AM_READ_PORT("SW1") - AM_RANGE(0xfe09, 0xfe09) AM_READ_PORT("IN1") - AM_RANGE(0xfe0a, 0xfe0a) AM_READ_PORT("IN2") - AM_RANGE(0xfe0c, 0xfe0c) AM_READ_PORT("SW4") - AM_RANGE(0xfe0d, 0xfe0d) AM_READ_PORT("SW5") - AM_RANGE(0xfe0e, 0xfe0e) AM_READ_PORT("SW6") - - AM_RANGE(0xfe17, 0xfe17) AM_READNOP //irq ack - AM_RANGE(0xfe20, 0xfe20) AM_WRITE(output_w) //output, irq enable? - AM_RANGE(0xfe22, 0xfe22) AM_WRITE(tile_bank_w) - AM_RANGE(0xfe40, 0xfe40) AM_DEVREADWRITE("ay", ay8910_device, data_r, data_w) - AM_RANGE(0xfe60, 0xfe60) AM_DEVWRITE("ay", ay8910_device, address_w) - - AM_RANGE(0xff00, 0xffff) AM_RAM //?? +void poker72_state::poker72_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); //work ram + map(0xe000, 0xefff).ram().share("vram"); + map(0xf000, 0xfbff).ram().w(this, FUNC(poker72_state::poker72_paletteram_w)).share("pal"); + map(0xfc00, 0xfdff).ram(); //??? + map(0xfe08, 0xfe08).portr("SW1"); + map(0xfe09, 0xfe09).portr("IN1"); + map(0xfe0a, 0xfe0a).portr("IN2"); + map(0xfe0c, 0xfe0c).portr("SW4"); + map(0xfe0d, 0xfe0d).portr("SW5"); + map(0xfe0e, 0xfe0e).portr("SW6"); + + map(0xfe17, 0xfe17).nopr(); //irq ack + map(0xfe20, 0xfe20).w(this, FUNC(poker72_state::output_w)); //output, irq enable? + map(0xfe22, 0xfe22).w(this, FUNC(poker72_state::tile_bank_w)); + map(0xfe40, 0xfe40).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xfe60, 0xfe60).w("ay", FUNC(ay8910_device::address_w)); + + map(0xff00, 0xffff).ram(); //?? /* bp 13a @@ -146,7 +147,7 @@ fe24 w 01f9 : call 6399 --> cls */ -ADDRESS_MAP_END +} static INPUT_PORTS_START( poker72 ) diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp index beff2b2c65c..fd5eed82c11 100644 --- a/src/mame/drivers/polepos.cpp +++ b/src/mame/drivers/polepos.cpp @@ -422,52 +422,57 @@ MACHINE_RESET_MEMBER(polepos_state,polepos) * CPU memory structures *********************************************************************/ -ADDRESS_MAP_START(polepos_state::z80_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("nvram") /* Battery Backup */ - AM_RANGE(0x4000, 0x47ff) AM_READWRITE(polepos_sprite_r, polepos_sprite_w) /* Motion Object */ - AM_RANGE(0x4800, 0x4bff) AM_READWRITE(polepos_road_r, polepos_road_w) /* Road Memory */ - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(polepos_alpha_r, polepos_alpha_w) /* Alphanumeric (char ram) */ - AM_RANGE(0x5000, 0x57ff) AM_READWRITE(polepos_view_r, polepos_view_w) /* Background Memory */ - - AM_RANGE(0x8000, 0x83bf) AM_MIRROR(0x0c00) AM_RAM /* Sound Memory */ - AM_RANGE(0x83c0, 0x83ff) AM_MIRROR(0x0c00) AM_DEVREADWRITE("namco", namco_device, polepos_sound_r, polepos_sound_w) /* Sound data */ - - AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0eff) AM_DEVREADWRITE("06xx", namco_06xx_device, data_r, data_w) - AM_RANGE(0x9100, 0x9100) AM_MIRROR(0x0eff) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x0cff) AM_READ(polepos_ready_r) /* READY */ - AM_RANGE(0xa000, 0xa007) AM_MIRROR(0x0cf8) AM_DEVWRITE("latch", ls259_device, write_d0) - AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x0cff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa200, 0xa200) AM_MIRROR(0x0cff) AM_DEVWRITE("polepos", polepos_sound_device, polepos_engine_sound_lsb_w) /* Car Sound ( Lower Nibble ) */ - AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x0cff) AM_DEVWRITE("polepos", polepos_sound_device, polepos_engine_sound_msb_w) /* Car Sound ( Upper Nibble ) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(polepos_state::z80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(polepos_adc_r) AM_WRITENOP -ADDRESS_MAP_END +void polepos_state::z80_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x37ff).mirror(0x0800).ram().share("nvram"); /* Battery Backup */ + map(0x4000, 0x47ff).rw(this, FUNC(polepos_state::polepos_sprite_r), FUNC(polepos_state::polepos_sprite_w)); /* Motion Object */ + map(0x4800, 0x4bff).rw(this, FUNC(polepos_state::polepos_road_r), FUNC(polepos_state::polepos_road_w)); /* Road Memory */ + map(0x4c00, 0x4fff).rw(this, FUNC(polepos_state::polepos_alpha_r), FUNC(polepos_state::polepos_alpha_w)); /* Alphanumeric (char ram) */ + map(0x5000, 0x57ff).rw(this, FUNC(polepos_state::polepos_view_r), FUNC(polepos_state::polepos_view_w)); /* Background Memory */ + + map(0x8000, 0x83bf).mirror(0x0c00).ram(); /* Sound Memory */ + map(0x83c0, 0x83ff).mirror(0x0c00).rw(m_namco_sound, FUNC(namco_device::polepos_sound_r), FUNC(namco_device::polepos_sound_w)); /* Sound data */ + + map(0x9000, 0x9000).mirror(0x0eff).rw("06xx", FUNC(namco_06xx_device::data_r), FUNC(namco_06xx_device::data_w)); + map(0x9100, 0x9100).mirror(0x0eff).rw("06xx", FUNC(namco_06xx_device::ctrl_r), FUNC(namco_06xx_device::ctrl_w)); + map(0xa000, 0xa000).mirror(0x0cff).r(this, FUNC(polepos_state::polepos_ready_r)); /* READY */ + map(0xa000, 0xa007).mirror(0x0cf8).w(m_latch, FUNC(ls259_device::write_d0)); + map(0xa100, 0xa100).mirror(0x0cff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xa200, 0xa200).mirror(0x0cff).w("polepos", FUNC(polepos_sound_device::polepos_engine_sound_lsb_w)); /* Car Sound ( Lower Nibble ) */ + map(0xa300, 0xa300).mirror(0x0cff).w("polepos", FUNC(polepos_sound_device::polepos_engine_sound_msb_w)); /* Car Sound ( Upper Nibble ) */ +} + +void polepos_state::z80_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(polepos_state::polepos_adc_r)).nopw(); +} /* the same memory map is used by both Z8002 CPUs; all RAM areas are shared */ -ADDRESS_MAP_START(polepos_state::z8002_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_READWRITE(polepos_sprite16_r, polepos_sprite16_w) AM_SHARE("sprite16_memory") /* Motion Object */ - AM_RANGE(0x9000, 0x97ff) AM_READWRITE(polepos_road16_r, polepos_road16_w) AM_SHARE("road16_memory") /* Road Memory */ - AM_RANGE(0x9800, 0x9fff) AM_READWRITE(polepos_alpha16_r, polepos_alpha16_w) AM_SHARE("alpha16_memory") /* Alphanumeric (char ram) */ - AM_RANGE(0xa000, 0xafff) AM_READWRITE(polepos_view16_r, polepos_view16_w) AM_SHARE("view16_memory") /* Background memory */ - AM_RANGE(0xc000, 0xc001) AM_MIRROR(0x38fe) AM_WRITE(polepos_view16_hscroll_w) /* Background horz scroll position */ - AM_RANGE(0xc100, 0xc101) AM_MIRROR(0x38fe) AM_WRITE(polepos_road16_vscroll_w) /* Road vertical position */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(polepos_state::z8002_map_1) - AM_IMPORT_FROM(z8002_map) - AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x0ffe) AM_WRITE(polepos_z8002_nvi_enable_w<true>) /* NVI enable - *NOT* shared by the two CPUs */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(polepos_state::z8002_map_2) - AM_IMPORT_FROM(z8002_map) - AM_RANGE(0x6000, 0x6001) AM_MIRROR(0x0ffe) AM_WRITE(polepos_z8002_nvi_enable_w<false>) /* NVI enable - *NOT* shared by the two CPUs */ -ADDRESS_MAP_END +void polepos_state::z8002_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).rw(this, FUNC(polepos_state::polepos_sprite16_r), FUNC(polepos_state::polepos_sprite16_w)).share("sprite16_memory"); /* Motion Object */ + map(0x9000, 0x97ff).rw(this, FUNC(polepos_state::polepos_road16_r), FUNC(polepos_state::polepos_road16_w)).share("road16_memory"); /* Road Memory */ + map(0x9800, 0x9fff).rw(this, FUNC(polepos_state::polepos_alpha16_r), FUNC(polepos_state::polepos_alpha16_w)).share("alpha16_memory"); /* Alphanumeric (char ram) */ + map(0xa000, 0xafff).rw(this, FUNC(polepos_state::polepos_view16_r), FUNC(polepos_state::polepos_view16_w)).share("view16_memory"); /* Background memory */ + map(0xc000, 0xc001).mirror(0x38fe).w(this, FUNC(polepos_state::polepos_view16_hscroll_w)); /* Background horz scroll position */ + map(0xc100, 0xc101).mirror(0x38fe).w(this, FUNC(polepos_state::polepos_road16_vscroll_w)); /* Road vertical position */ +} + +void polepos_state::z8002_map_1(address_map &map) +{ + z8002_map(map); + map(0x6000, 0x6001).mirror(0x0ffe).w(this, FUNC(polepos_state::polepos_z8002_nvi_enable_w<true>)); /* NVI enable - *NOT* shared by the two CPUs */ +} + +void polepos_state::z8002_map_2(address_map &map) +{ + z8002_map(map); + map(0x6000, 0x6001).mirror(0x0ffe).w(this, FUNC(polepos_state::polepos_z8002_nvi_enable_w<false>)); /* NVI enable - *NOT* shared by the two CPUs */ +} /********************************************************************* @@ -958,27 +963,30 @@ WRITE8_MEMBER(polepos_state::bootleg_soundlatch_w) m_soundlatch->write(space, 0, data | 0xfc); } -ADDRESS_MAP_START(polepos_state::topracern_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_IMPORT_FROM(z80_io) +void polepos_state::topracern_io(address_map &map) +{ + map.global_mask(0xff); + z80_io(map); // extra direct mapped inputs read - AM_RANGE(0x02, 0x02) AM_READ_PORT("STEER") AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN0") AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWA") AM_WRITENOP // explosion sound trigger - AM_RANGE(0x05, 0x05) AM_READ_PORT("DSWB") AM_WRITE(bootleg_soundlatch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(polepos_state::sound_z80_bootleg_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2700, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, acknowledge_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(polepos_state::sound_z80_bootleg_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("tms", tms5220_device, status_r, data_w) -ADDRESS_MAP_END + map(0x02, 0x02).portr("STEER").nopw(); + map(0x03, 0x03).portr("IN0").w("dac", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).portr("DSWA").nopw(); // explosion sound trigger + map(0x05, 0x05).portr("DSWB").w(this, FUNC(polepos_state::bootleg_soundlatch_w)); +} + +void polepos_state::sound_z80_bootleg_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2700, 0x27ff).ram(); + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x6000, 0x6000).r(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_r)); +} + +void polepos_state::sound_z80_bootleg_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w)); +} MACHINE_CONFIG_START(polepos_state::topracern) diff --git a/src/mame/drivers/polgar.cpp b/src/mame/drivers/polgar.cpp index 2329f73f018..03abe828a88 100644 --- a/src/mame/drivers/polgar.cpp +++ b/src/mame/drivers/polgar.cpp @@ -170,17 +170,18 @@ WRITE8_MEMBER(mephisto_polgar_state::polgar_led_w) output().set_led_value(100 + offset, BIT(data, 7)); } -ADDRESS_MAP_START(mephisto_polgar_state::polgar_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2000, 0x2000 ) AM_DEVWRITE("display", mephisto_display_modul_device, latch_w) - AM_RANGE( 0x2004, 0x2004 ) AM_DEVWRITE("display", mephisto_display_modul_device, io_w) - AM_RANGE( 0x2400, 0x2400 ) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x2c00, 0x2c07 ) AM_READ(polgar_keys_r) - AM_RANGE( 0x3000, 0x3000 ) AM_DEVREAD("board", mephisto_board_device, input_r) - AM_RANGE( 0x3400, 0x3405 ) AM_WRITE(polgar_led_w) - AM_RANGE( 0x4000, 0xffff ) AM_ROM -ADDRESS_MAP_END +void mephisto_polgar_state::polgar_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x2000).w("display", FUNC(mephisto_display_modul_device::latch_w)); + map(0x2004, 0x2004).w("display", FUNC(mephisto_display_modul_device::io_w)); + map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w)); + map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); + map(0x2c00, 0x2c07).r(this, FUNC(mephisto_polgar_state::polgar_keys_r)); + map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); + map(0x3400, 0x3405).w(this, FUNC(mephisto_polgar_state::polgar_led_w)); + map(0x4000, 0xffff).rom(); +} WRITE8_MEMBER(mephisto_risc_state::bank_w) @@ -236,29 +237,31 @@ TIMER_CALLBACK_MEMBER(mephisto_risc_state::disable_boot_rom) remove_boot_rom(); } -ADDRESS_MAP_START(mephisto_risc_state::mrisc_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2000, 0x2000 ) AM_DEVWRITE("display", mephisto_display_modul_device, latch_w) - AM_RANGE( 0x2004, 0x2004 ) AM_DEVWRITE("display", mephisto_display_modul_device, io_w) - AM_RANGE( 0x2c00, 0x2c07 ) AM_READ(polgar_keys_r) - AM_RANGE( 0x2400, 0x2400 ) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x3000, 0x3000 ) AM_DEVREAD("board", mephisto_board_device, input_r) - AM_RANGE( 0x3400, 0x3405 ) AM_WRITE(polgar_led_w) - AM_RANGE( 0x3406, 0x3407 ) AM_WRITE(bank_w) - AM_RANGE( 0x3800, 0x3800 ) AM_WRITE(latch1_w) - AM_RANGE( 0x3c00, 0x3c00 ) AM_READ(latch0_r) - AM_RANGE( 0x4000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("rombank") -ADDRESS_MAP_END +void mephisto_risc_state::mrisc_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x2000).w("display", FUNC(mephisto_display_modul_device::latch_w)); + map(0x2004, 0x2004).w("display", FUNC(mephisto_display_modul_device::io_w)); + map(0x2c00, 0x2c07).r(this, FUNC(mephisto_risc_state::polgar_keys_r)); + map(0x2400, 0x2400).w("board", FUNC(mephisto_board_device::led_w)); + map(0x2800, 0x2800).w("board", FUNC(mephisto_board_device::mux_w)); + map(0x3000, 0x3000).r("board", FUNC(mephisto_board_device::input_r)); + map(0x3400, 0x3405).w(this, FUNC(mephisto_risc_state::polgar_led_w)); + map(0x3406, 0x3407).w(this, FUNC(mephisto_risc_state::bank_w)); + map(0x3800, 0x3800).w(this, FUNC(mephisto_risc_state::latch1_w)); + map(0x3c00, 0x3c00).r(this, FUNC(mephisto_risc_state::latch0_r)); + map(0x4000, 0x7fff).rom(); + map(0x8000, 0xffff).bankr("rombank"); +} -ADDRESS_MAP_START(mephisto_risc_state::mrisc_arm_mem) - AM_RANGE( 0x00000000, 0x000fffff ) AM_RAM - AM_RANGE( 0x00400000, 0x007fffff ) AM_READWRITE8(latch1_r, latch0_w, 0x000000ff) - AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(disable_boot_rom_r) -ADDRESS_MAP_END +void mephisto_risc_state::mrisc_arm_mem(address_map &map) +{ + map(0x00000000, 0x000fffff).ram(); + map(0x00400000, 0x007fffff).rw(this, FUNC(mephisto_risc_state::latch1_r), FUNC(mephisto_risc_state::latch0_w)).umask32(0x000000ff); + map(0x01800000, 0x01800003).r(this, FUNC(mephisto_risc_state::disable_boot_rom_r)); +} READ8_MEMBER(mephisto_milano_state::milano_input_r) @@ -289,18 +292,19 @@ WRITE8_MEMBER(mephisto_milano_state::milano_io_w) m_display->io_w(space, offset, data & 0x0f); } -ADDRESS_MAP_START(mephisto_milano_state::milano_mem) - AM_RANGE( 0x0000, 0x1fbf ) AM_RAM AM_SHARE("nvram") +void mephisto_milano_state::milano_mem(address_map &map) +{ + map(0x0000, 0x1fbf).ram().share("nvram"); - AM_RANGE( 0x1fc0, 0x1fc0 ) AM_DEVWRITE("display", mephisto_display_modul_device, latch_w) - AM_RANGE( 0x1fd0, 0x1fd0 ) AM_WRITE(milano_led_w) - AM_RANGE( 0x1fe0, 0x1fe0 ) AM_READ(milano_input_r) - AM_RANGE( 0x1fe8, 0x1fed ) AM_WRITE(polgar_led_w) - AM_RANGE( 0x1fd8, 0x1fdf ) AM_READ(polgar_keys_r) - AM_RANGE( 0x1ff0, 0x1ff0 ) AM_WRITE(milano_io_w) + map(0x1fc0, 0x1fc0).w(m_display, FUNC(mephisto_display_modul_device::latch_w)); + map(0x1fd0, 0x1fd0).w(this, FUNC(mephisto_milano_state::milano_led_w)); + map(0x1fe0, 0x1fe0).r(this, FUNC(mephisto_milano_state::milano_input_r)); + map(0x1fe8, 0x1fed).w(this, FUNC(mephisto_milano_state::polgar_led_w)); + map(0x1fd8, 0x1fdf).r(this, FUNC(mephisto_milano_state::polgar_keys_r)); + map(0x1ff0, 0x1ff0).w(this, FUNC(mephisto_milano_state::milano_io_w)); - AM_RANGE( 0x2000, 0xffff ) AM_ROM -ADDRESS_MAP_END + map(0x2000, 0xffff).rom(); +} READ8_MEMBER(mephisto_modena_state::modena_input_r) @@ -338,14 +342,15 @@ WRITE8_MEMBER(mephisto_modena_state::modena_digits_w) m_digits_idx = (m_digits_idx + 1) & 3; } -ADDRESS_MAP_START(mephisto_modena_state::modena_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x4000, 0x4000 ) AM_WRITE(modena_digits_w) - AM_RANGE( 0x5000, 0x5000 ) AM_WRITE(modena_led_w) - AM_RANGE( 0x6000, 0x6000 ) AM_WRITE(modena_io_w) - AM_RANGE( 0x7000, 0x7fff ) AM_READ(modena_input_r) - AM_RANGE( 0x8000, 0xffff ) AM_ROM -ADDRESS_MAP_END +void mephisto_modena_state::modena_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x4000, 0x4000).w(this, FUNC(mephisto_modena_state::modena_digits_w)); + map(0x5000, 0x5000).w(this, FUNC(mephisto_modena_state::modena_led_w)); + map(0x6000, 0x6000).w(this, FUNC(mephisto_modena_state::modena_io_w)); + map(0x7000, 0x7fff).r(this, FUNC(mephisto_modena_state::modena_input_r)); + map(0x8000, 0xffff).rom(); +} INTERRUPT_GEN_MEMBER(mephisto_academy_state::academy_irq) @@ -385,17 +390,18 @@ READ8_MEMBER(mephisto_academy_state::academy_input_r) return data ^ 0xff; } -ADDRESS_MAP_START(mephisto_academy_state::academy_mem) - AM_RANGE( 0x0000, 0x1fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x2400, 0x2400 ) AM_READ(academy_input_r) - AM_RANGE( 0x2800, 0x2800 ) AM_DEVWRITE("board", mephisto_board_device, mux_w) - AM_RANGE( 0x2c00, 0x2c00 ) AM_DEVWRITE("board", mephisto_board_device, led_w) - AM_RANGE( 0x3002, 0x3002 ) AM_WRITE(academy_beeper_w) - AM_RANGE( 0x3001, 0x3001 ) AM_WRITE(academy_nmi_w) - AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(academy_led_w) - AM_RANGE( 0x3800, 0x3801 ) AM_DEVREADWRITE("display:hd44780", hd44780_device, read, write) - AM_RANGE( 0x4000, 0xffff ) AM_ROM -ADDRESS_MAP_END +void mephisto_academy_state::academy_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2400, 0x2400).r(this, FUNC(mephisto_academy_state::academy_input_r)); + map(0x2800, 0x2800).w(m_board, FUNC(mephisto_board_device::mux_w)); + map(0x2c00, 0x2c00).w(m_board, FUNC(mephisto_board_device::led_w)); + map(0x3002, 0x3002).w(this, FUNC(mephisto_academy_state::academy_beeper_w)); + map(0x3001, 0x3001).w(this, FUNC(mephisto_academy_state::academy_nmi_w)); + map(0x3400, 0x3400).w(this, FUNC(mephisto_academy_state::academy_led_w)); + map(0x3800, 0x3801).rw("display:hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write)); + map(0x4000, 0xffff).rom(); +} static INPUT_PORTS_START( polgar ) PORT_START("KEY") diff --git a/src/mame/drivers/policetr.cpp b/src/mame/drivers/policetr.cpp index f3b242582d7..7ed8b790e33 100644 --- a/src/mame/drivers/policetr.cpp +++ b/src/mame/drivers/policetr.cpp @@ -241,42 +241,44 @@ WRITE32_MEMBER(policetr_state::speedup_w) * *************************************/ -ADDRESS_MAP_START(policetr_state::policetr_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x00200000, 0x0020000f) AM_WRITE(policetr_video_w) - AM_RANGE(0x00400000, 0x00400003) AM_READ(policetr_video_r) - AM_RANGE(0x00500000, 0x00500003) AM_WRITENOP // copies ROM here at startup, plus checksum - AM_RANGE(0x00600000, 0x00600003) AM_READ(bsmt2000_data_r) - AM_RANGE(0x00700000, 0x00700003) AM_WRITE(policetr_bsmt2000_reg_w) - AM_RANGE(0x00800000, 0x00800003) AM_WRITE(policetr_bsmt2000_data_w) - AM_RANGE(0x00900000, 0x00900003) AM_WRITE(policetr_palette_offset_w) - AM_RANGE(0x00920000, 0x00920003) AM_WRITE(policetr_palette_data_w) - AM_RANGE(0x00a00000, 0x00a00003) AM_WRITE(control_w) - AM_RANGE(0x00a00000, 0x00a00003) AM_READ_PORT("IN0") - AM_RANGE(0x00a20000, 0x00a20003) AM_READ_PORT("IN1") - AM_RANGE(0x00a40000, 0x00a40003) AM_READ_PORT("DSW") - AM_RANGE(0x00e00000, 0x00e00003) AM_WRITENOP // watchdog??? - AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(policetr_state::sshooter_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("rambase") - AM_RANGE(0x00200000, 0x00200003) AM_WRITE(policetr_bsmt2000_data_w) - AM_RANGE(0x00300000, 0x00300003) AM_WRITE(policetr_palette_offset_w) - AM_RANGE(0x00320000, 0x00320003) AM_WRITE(policetr_palette_data_w) - AM_RANGE(0x00400000, 0x00400003) AM_READ(policetr_video_r) - AM_RANGE(0x00500000, 0x00500003) AM_WRITENOP // copies ROM here at startup, plus checksum - AM_RANGE(0x00600000, 0x00600003) AM_READ(bsmt2000_data_r) - AM_RANGE(0x00700000, 0x00700003) AM_WRITE(policetr_bsmt2000_reg_w) - AM_RANGE(0x00800000, 0x0080000f) AM_WRITE(policetr_video_w) - AM_RANGE(0x00a00000, 0x00a00003) AM_WRITE(control_w) - AM_RANGE(0x00a00000, 0x00a00003) AM_READ_PORT("IN0") - AM_RANGE(0x00a20000, 0x00a20003) AM_READ_PORT("IN1") - AM_RANGE(0x00a40000, 0x00a40003) AM_READ_PORT("DSW") - AM_RANGE(0x00e00000, 0x00e00003) AM_WRITENOP // watchdog??? - AM_RANGE(0x1fc00000, 0x1fcfffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void policetr_state::policetr_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram().share("rambase"); + map(0x00200000, 0x0020000f).w(this, FUNC(policetr_state::policetr_video_w)); + map(0x00400000, 0x00400003).r(this, FUNC(policetr_state::policetr_video_r)); + map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum + map(0x00600000, 0x00600003).r(this, FUNC(policetr_state::bsmt2000_data_r)); + map(0x00700000, 0x00700003).w(this, FUNC(policetr_state::policetr_bsmt2000_reg_w)); + map(0x00800000, 0x00800003).w(this, FUNC(policetr_state::policetr_bsmt2000_data_w)); + map(0x00900000, 0x00900003).w(this, FUNC(policetr_state::policetr_palette_offset_w)); + map(0x00920000, 0x00920003).w(this, FUNC(policetr_state::policetr_palette_data_w)); + map(0x00a00000, 0x00a00003).w(this, FUNC(policetr_state::control_w)); + map(0x00a00000, 0x00a00003).portr("IN0"); + map(0x00a20000, 0x00a20003).portr("IN1"); + map(0x00a40000, 0x00a40003).portr("DSW"); + map(0x00e00000, 0x00e00003).nopw(); // watchdog??? + map(0x1fc00000, 0x1fc7ffff).rom().region("user1", 0); +} + + +void policetr_state::sshooter_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram().share("rambase"); + map(0x00200000, 0x00200003).w(this, FUNC(policetr_state::policetr_bsmt2000_data_w)); + map(0x00300000, 0x00300003).w(this, FUNC(policetr_state::policetr_palette_offset_w)); + map(0x00320000, 0x00320003).w(this, FUNC(policetr_state::policetr_palette_data_w)); + map(0x00400000, 0x00400003).r(this, FUNC(policetr_state::policetr_video_r)); + map(0x00500000, 0x00500003).nopw(); // copies ROM here at startup, plus checksum + map(0x00600000, 0x00600003).r(this, FUNC(policetr_state::bsmt2000_data_r)); + map(0x00700000, 0x00700003).w(this, FUNC(policetr_state::policetr_bsmt2000_reg_w)); + map(0x00800000, 0x0080000f).w(this, FUNC(policetr_state::policetr_video_w)); + map(0x00a00000, 0x00a00003).w(this, FUNC(policetr_state::control_w)); + map(0x00a00000, 0x00a00003).portr("IN0"); + map(0x00a20000, 0x00a20003).portr("IN1"); + map(0x00a40000, 0x00a40003).portr("DSW"); + map(0x00e00000, 0x00e00003).nopw(); // watchdog??? + map(0x1fc00000, 0x1fcfffff).rom().region("user1", 0); +} diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp index c933f5dec30..a9ba88f62fd 100644 --- a/src/mame/drivers/poly.cpp +++ b/src/mame/drivers/poly.cpp @@ -82,27 +82,28 @@ private: }; -ADDRESS_MAP_START(poly_state::poly_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0x9fff) AM_RAM - AM_RANGE(0xa000,0xcfff) AM_ROM - AM_RANGE(0xd000,0xdfff) AM_RAM - AM_RANGE(0xe000,0xe003) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //video control PIA 6821 - AM_RANGE(0xe004,0xe005) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xe006,0xe006) AM_WRITE(baud_rate_w) - AM_RANGE(0xe00c,0xe00f) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //keyboard PIA 6821 - AM_RANGE(0xe020,0xe027) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) //timer 6840 - AM_RANGE(0xe030,0xe037) AM_DEVREADWRITE("adlc", mc6854_device, read, write) //Data Link Controller 6854 - AM_RANGE(0xe040,0xe040) AM_NOP //Set protect flip-flop after 1 E-cycle - AM_RANGE(0xe050,0xe05f) AM_RAM //Dynamic Address Translater (arranges memory banks) +void poly_state::poly_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x9fff).ram(); + map(0xa000, 0xcfff).rom(); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xe003).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //video control PIA 6821 + map(0xe004, 0xe005).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe006, 0xe006).w(this, FUNC(poly_state::baud_rate_w)); + map(0xe00c, 0xe00f).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //keyboard PIA 6821 + map(0xe020, 0xe027).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); //timer 6840 + map(0xe030, 0xe037).rw("adlc", FUNC(mc6854_device::read), FUNC(mc6854_device::write)); //Data Link Controller 6854 + map(0xe040, 0xe040).noprw(); //Set protect flip-flop after 1 E-cycle + map(0xe050, 0xe05f).ram(); //Dynamic Address Translater (arranges memory banks) // AM_RANGE(0xe060,0xe060) Select Map 1 // AM_RANGE(0xe070,0xe070) Select Map 2 - AM_RANGE(0xe800,0xebbf) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xebc0,0xebff) AM_RAM - AM_RANGE(0xec00,0xefbf) AM_RAM // screen 2 AM_SHARE("videoram") - AM_RANGE(0xefc0,0xefff) AM_RAM - AM_RANGE(0xf000,0xffff) AM_ROM -ADDRESS_MAP_END + map(0xe800, 0xebbf).ram().share("videoram"); + map(0xebc0, 0xebff).ram(); + map(0xec00, 0xefbf).ram(); // screen 2 AM_SHARE("videoram") + map(0xefc0, 0xefff).ram(); + map(0xf000, 0xffff).rom(); +} /* Input ports */ diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp index a14f460dc8f..3e584779e4b 100644 --- a/src/mame/drivers/poly88.cpp +++ b/src/mame/drivers/poly88.cpp @@ -48,40 +48,44 @@ #include "speaker.h" -ADDRESS_MAP_START(poly88_state::poly88_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_ROM // Monitor ROM - AM_RANGE(0x0400, 0x0bff) AM_ROM // ROM Expansion - AM_RANGE(0x0c00, 0x0dff) AM_RAM AM_MIRROR(0x200) // System RAM (mirrored) - AM_RANGE(0x1000, 0x1fff) AM_ROM // System Expansion area - AM_RANGE(0x2000, 0x3fff) AM_RAM // Minimal user RAM area - AM_RANGE(0x4000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("video_ram") // Video RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(poly88_state::poly88_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x04, 0x04) AM_WRITE(poly88_baud_rate_w) - AM_RANGE(0x08, 0x08) AM_WRITE(poly88_intr_w) - AM_RANGE(0xf8, 0xf8) AM_READ(poly88_keyboard_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(poly88_state::poly8813_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_ROM // Monitor ROM - AM_RANGE(0x0400, 0x0bff) AM_ROM // Disk System ROM - AM_RANGE(0x0c00, 0x0fff) AM_RAM // System RAM - AM_RANGE(0x1800, 0x1bff) AM_RAM AM_SHARE("video_ram") // Video RAM - AM_RANGE(0x2000, 0xffff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(poly88_state::poly8813_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void poly88_state::poly88_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); // Monitor ROM + map(0x0400, 0x0bff).rom(); // ROM Expansion + map(0x0c00, 0x0dff).ram().mirror(0x200); // System RAM (mirrored) + map(0x1000, 0x1fff).rom(); // System Expansion area + map(0x2000, 0x3fff).ram(); // Minimal user RAM area + map(0x4000, 0xf7ff).ram(); + map(0xf800, 0xfbff).ram().share("video_ram"); // Video RAM +} + +void poly88_state::poly88_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x04, 0x04).w(this, FUNC(poly88_state::poly88_baud_rate_w)); + map(0x08, 0x08).w(this, FUNC(poly88_state::poly88_intr_w)); + map(0xf8, 0xf8).r(this, FUNC(poly88_state::poly88_keyboard_r)); +} + +void poly88_state::poly8813_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); // Monitor ROM + map(0x0400, 0x0bff).rom(); // Disk System ROM + map(0x0c00, 0x0fff).ram(); // System RAM + map(0x1800, 0x1bff).ram().share("video_ram"); // Video RAM + map(0x2000, 0xffff).ram(); // RAM +} + +void poly88_state::poly8813_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} /* Input ports */ static INPUT_PORTS_START( poly88 ) diff --git a/src/mame/drivers/poly880.cpp b/src/mame/drivers/poly880.cpp index 7b5d55788e0..2041ed1e5c4 100644 --- a/src/mame/drivers/poly880.cpp +++ b/src/mame/drivers/poly880.cpp @@ -63,22 +63,24 @@ WRITE8_MEMBER( poly880_state::cldig_w ) /* Memory Maps */ -ADDRESS_MAP_START(poly880_state::poly880_mem) - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x0c00) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x0c00) AM_ROM - AM_RANGE(0x3000, 0x33ff) AM_MIRROR(0x0c00) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x3c00) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(poly880_state::poly880_io) - ADDRESS_MAP_GLOBAL_MASK(0xaf) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read_alt, write_alt) - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read_alt, write_alt) - AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_WRITE(cldig_w) -ADDRESS_MAP_END +void poly880_state::poly880_mem(address_map &map) +{ + map(0x0000, 0x03ff).mirror(0x0c00).rom(); + map(0x1000, 0x13ff).mirror(0x0c00).rom(); + map(0x2000, 0x23ff).mirror(0x0c00).rom(); + map(0x3000, 0x33ff).mirror(0x0c00).rom(); + map(0x4000, 0x43ff).mirror(0x3c00).ram(); + map(0x8000, 0xffff).bankrw("bank1"); +} + +void poly880_state::poly880_io(address_map &map) +{ + map.global_mask(0xaf); + map(0x80, 0x83).rw(Z80PIO1_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x84, 0x87).rw(Z80PIO2_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x88, 0x8b).rw(Z80CTC_TAG, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0xa0, 0xa0).mirror(0x0f).w(this, FUNC(poly880_state::cldig_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/polyplay.cpp b/src/mame/drivers/polyplay.cpp index 66869e4e059..71d5160831b 100644 --- a/src/mame/drivers/polyplay.cpp +++ b/src/mame/drivers/polyplay.cpp @@ -232,39 +232,43 @@ INPUT_CHANGED_MEMBER(polyplay_state::input_changed) } /* memory mapping */ -ADDRESS_MAP_START(polyplay_state::polyplay_mem_zre) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x8fff) AM_ROM - AM_RANGE(0xe800, 0xebff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0xec00, 0xf7ff) AM_RAM_WRITE(polyplay_characterram_w) AM_SHARE("characterram") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void polyplay_state::polyplay_mem_zre(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0fff).ram(); + map(0x1000, 0x8fff).rom(); + map(0xe800, 0xebff).rom().region("gfx1", 0); + map(0xec00, 0xf7ff).ram().w(this, FUNC(polyplay_state::polyplay_characterram_w)).share("characterram"); + map(0xf800, 0xffff).ram().share("videoram"); +} -ADDRESS_MAP_START(polyplay_state::polyplay_mem_zrepp) - AM_RANGE(0x0000, 0xbfff) AM_ROM +void polyplay_state::polyplay_mem_zrepp(address_map &map) +{ + map(0x0000, 0xbfff).rom(); - AM_RANGE(0xc000, 0xcfff) AM_RAM + map(0xc000, 0xcfff).ram(); - AM_RANGE(0xd000, 0xd7ff) AM_ROM AM_REGION("gfx1", 0) + map(0xd000, 0xd7ff).rom().region("gfx1", 0); - AM_RANGE(0xea00, 0xebff) AM_RAM - AM_RANGE(0xec00, 0xf7ff) AM_RAM_WRITE(polyplay_characterram_w) AM_SHARE("characterram") + map(0xea00, 0xebff).ram(); + map(0xec00, 0xf7ff).ram().w(this, FUNC(polyplay_state::polyplay_characterram_w)).share("characterram"); - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END + map(0xf800, 0xffff).ram().share("videoram"); +} /* port mapping */ -ADDRESS_MAP_START(polyplay_state::polyplay_io_zre) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(polyplay_state::polyplay_io_zrepp) - AM_IMPORT_FROM(polyplay_io_zre) - AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE(Z80SIO_TAG, z80sio_device, cd_ba_r, cd_ba_w) -ADDRESS_MAP_END +void polyplay_state::polyplay_io_zre(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x83).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x84, 0x87).rw(m_z80pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} + +void polyplay_state::polyplay_io_zrepp(address_map &map) +{ + polyplay_io_zre(map); + map(0x88, 0x8b).rw(m_z80sio, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); +} static INPUT_PORTS_START( polyplay ) PORT_START("IN0") diff --git a/src/mame/drivers/poolshrk.cpp b/src/mame/drivers/poolshrk.cpp index d83a888d04c..d3c4e33d3a4 100644 --- a/src/mame/drivers/poolshrk.cpp +++ b/src/mame/drivers/poolshrk.cpp @@ -101,23 +101,24 @@ READ8_MEMBER(poolshrk_state::irq_reset_r) } -ADDRESS_MAP_START(poolshrk_state::poolshrk_cpu_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x2300) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x2000) AM_WRITEONLY AM_SHARE("playfield_ram") - AM_RANGE(0x0800, 0x080f) AM_MIRROR(0x23f0) AM_WRITEONLY AM_SHARE("hpos_ram") - AM_RANGE(0x0c00, 0x0c0f) AM_MIRROR(0x23f0) AM_WRITEONLY AM_SHARE("vpos_ram") - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2000) AM_READWRITE(input_r, watchdog_w) - AM_RANGE(0x1400, 0x17ff) AM_MIRROR(0x2000) AM_WRITE(scratch_sound_w) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x2000) AM_WRITE(score_sound_w) - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x2000) AM_WRITE(click_sound_w) - AM_RANGE(0x4000, 0x4000) AM_NOP /* diagnostic ROM location */ - AM_RANGE(0x6000, 0x63ff) AM_WRITE(da_latch_w) - AM_RANGE(0x6400, 0x67ff) AM_WRITE(bump_sound_w) - AM_RANGE(0x6800, 0x6bff) AM_READ(irq_reset_r) - AM_RANGE(0x6c00, 0x6fff) AM_WRITE(led_w) - AM_RANGE(0x7000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void poolshrk_state::poolshrk_cpu_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).mirror(0x2300).ram(); + map(0x0400, 0x07ff).mirror(0x2000).writeonly().share("playfield_ram"); + map(0x0800, 0x080f).mirror(0x23f0).writeonly().share("hpos_ram"); + map(0x0c00, 0x0c0f).mirror(0x23f0).writeonly().share("vpos_ram"); + map(0x1000, 0x13ff).mirror(0x2000).rw(this, FUNC(poolshrk_state::input_r), FUNC(poolshrk_state::watchdog_w)); + map(0x1400, 0x17ff).mirror(0x2000).w(this, FUNC(poolshrk_state::scratch_sound_w)); + map(0x1800, 0x1bff).mirror(0x2000).w(this, FUNC(poolshrk_state::score_sound_w)); + map(0x1c00, 0x1fff).mirror(0x2000).w(this, FUNC(poolshrk_state::click_sound_w)); + map(0x4000, 0x4000).noprw(); /* diagnostic ROM location */ + map(0x6000, 0x63ff).w(this, FUNC(poolshrk_state::da_latch_w)); + map(0x6400, 0x67ff).w(this, FUNC(poolshrk_state::bump_sound_w)); + map(0x6800, 0x6bff).r(this, FUNC(poolshrk_state::irq_reset_r)); + map(0x6c00, 0x6fff).w(this, FUNC(poolshrk_state::led_w)); + map(0x7000, 0x7fff).rom(); +} static INPUT_PORTS_START( poolshrk ) diff --git a/src/mame/drivers/pooyan.cpp b/src/mame/drivers/pooyan.cpp index f4423db46f4..a45a8f749fa 100644 --- a/src/mame/drivers/pooyan.cpp +++ b/src/mame/drivers/pooyan.cpp @@ -64,22 +64,23 @@ WRITE_LINE_MEMBER(pooyan_state::coin_counter_2_w) * *************************************/ -ADDRESS_MAP_START(pooyan_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8800, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x90ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9400, 0x94ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x5e7f) AM_READ_PORT("DSW1") - AM_RANGE(0xa080, 0xa080) AM_MIRROR(0x5e1f) AM_READ_PORT("IN0") - AM_RANGE(0xa0a0, 0xa0a0) AM_MIRROR(0x5e1f) AM_READ_PORT("IN1") - AM_RANGE(0xa0c0, 0xa0c0) AM_MIRROR(0x5e1f) AM_READ_PORT("IN2") - AM_RANGE(0xa0e0, 0xa0e0) AM_MIRROR(0x5e1f) AM_READ_PORT("DSW0") - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x5e7f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x5e7f) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w) - AM_RANGE(0xa180, 0xa187) AM_MIRROR(0x5e78) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void pooyan_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(pooyan_state::colorram_w)).share("colorram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(pooyan_state::videoram_w)).share("videoram"); + map(0x8800, 0x8fff).ram(); + map(0x9000, 0x90ff).mirror(0x0b00).ram().share("spriteram"); + map(0x9400, 0x94ff).mirror(0x0b00).ram().share("spriteram2"); + map(0xa000, 0xa000).mirror(0x5e7f).portr("DSW1"); + map(0xa080, 0xa080).mirror(0x5e1f).portr("IN0"); + map(0xa0a0, 0xa0a0).mirror(0x5e1f).portr("IN1"); + map(0xa0c0, 0xa0c0).mirror(0x5e1f).portr("IN2"); + map(0xa0e0, 0xa0e0).mirror(0x5e1f).portr("DSW0"); + map(0xa000, 0xa000).mirror(0x5e7f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xa100, 0xa100).mirror(0x5e7f).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w)); + map(0xa180, 0xa187).mirror(0x5e78).w("mainlatch", FUNC(ls259_device::write_d0)); +} diff --git a/src/mame/drivers/popeye.cpp b/src/mame/drivers/popeye.cpp index e5b03097e07..3ebcb377092 100644 --- a/src/mame/drivers/popeye.cpp +++ b/src/mame/drivers/popeye.cpp @@ -206,17 +206,18 @@ WRITE8_MEMBER(tnx1_state::protection_w) -ADDRESS_MAP_START(tnx1_state::maincpu_program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_WRITENOP // Attempts to initialize this area with 00 on boot - AM_RANGE(0x8c00, 0x8e7f) AM_RAM AM_SHARE("dmasource") - AM_RANGE(0x8e80, 0x8fff) AM_RAM - AM_RANGE(0xa000, 0xa3ff) AM_WRITE(popeye_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa400, 0xa7ff) AM_WRITE(popeye_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xcfff) AM_WRITE(background_w) - AM_RANGE(0xe000, 0xe001) AM_READWRITE(protection_r,protection_w) -ADDRESS_MAP_END +void tnx1_state::maincpu_program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).nopw(); // Attempts to initialize this area with 00 on boot + map(0x8c00, 0x8e7f).ram().share("dmasource"); + map(0x8e80, 0x8fff).ram(); + map(0xa000, 0xa3ff).w(this, FUNC(tnx1_state::popeye_videoram_w)).share("videoram"); + map(0xa400, 0xa7ff).w(this, FUNC(tnx1_state::popeye_colorram_w)).share("colorram"); + map(0xc000, 0xcfff).w(this, FUNC(tnx1_state::background_w)); + map(0xe000, 0xe001).rw(this, FUNC(tnx1_state::protection_r), FUNC(tnx1_state::protection_w)); +} ADDRESS_MAP_START(tpp2_state::maincpu_program_map) AM_IMPORT_FROM(tpp1_state::maincpu_program_map) @@ -236,14 +237,15 @@ ADDRESS_MAP_START(popeyebl_state::maincpu_program_map) AM_RANGE(0xe000, 0xe01f) AM_ROM AM_REGION("blprot", 0x00) ADDRESS_MAP_END -ADDRESS_MAP_START(tnx1_state::maincpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x03, 0x03) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END +void tnx1_state::maincpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).portr("P2"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x03, 0x03).r("aysnd", FUNC(ay8910_device::data_r)); +} CUSTOM_INPUT_MEMBER(tnx1_state::dsw1_read) diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp index 2bf5433bb19..d4562ded0b7 100644 --- a/src/mame/drivers/popobear.cpp +++ b/src/mame/drivers/popobear.cpp @@ -473,36 +473,38 @@ WRITE8_MEMBER(popobear_state::irq_ack_w) } } -ADDRESS_MAP_START(popobear_state::popobear_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x210000, 0x21ffff) AM_RAM - AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("spr") // unknown boundaries, 0x2ff800 contains a sprite list, lower area = sprite gfx - AM_RANGE(0x300000, 0x3fffff) AM_RAM_WRITE( vram_w ) AM_SHARE("vram") // tile definitions + tilemaps +void popobear_state::popobear_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom(); + map(0x210000, 0x21ffff).ram(); + map(0x280000, 0x2fffff).ram().share("spr"); // unknown boundaries, 0x2ff800 contains a sprite list, lower area = sprite gfx + map(0x300000, 0x3fffff).ram().w(this, FUNC(popobear_state::vram_w)).share("vram"); // tile definitions + tilemaps /* Most if not all of these are vregs */ - AM_RANGE(0x480000, 0x48001f) AM_RAM AM_SHARE("vregs") - AM_RANGE(0x480020, 0x480023) AM_RAM - AM_RANGE(0x480028, 0x48002d) AM_RAM + map(0x480000, 0x48001f).ram().share("vregs"); + map(0x480020, 0x480023).ram(); + map(0x480028, 0x48002d).ram(); // AM_RANGE(0x480020, 0x480021) AM_NOP //AM_READ(480020_r) AM_WRITE(480020_w) // AM_RANGE(0x480028, 0x480029) AM_NOP //AM_WRITE(480028_w) // AM_RANGE(0x48002c, 0x48002d) AM_NOP //AM_WRITE(48002c_w) - AM_RANGE(0x480030, 0x480031) AM_WRITE8(irq_ack_w, 0x00ff) - AM_RANGE(0x480034, 0x480035) AM_RAM // coin counter or coin lockout - AM_RANGE(0x48003a, 0x48003b) AM_RAM //AM_READ(48003a_r) AM_WRITE(48003a_w) + map(0x480031, 0x480031).w(this, FUNC(popobear_state::irq_ack_w)); + map(0x480034, 0x480035).ram(); // coin counter or coin lockout + map(0x48003a, 0x48003b).ram(); //AM_READ(48003a_r) AM_WRITE(48003a_w) - AM_RANGE(0x480400, 0x4807ff) AM_RAM AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x480400, 0x4807ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") - AM_RANGE(0x520000, 0x520001) AM_READ_PORT("IN1") - AM_RANGE(0x540000, 0x540001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x550000, 0x550003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) + map(0x500000, 0x500001).portr("IN0"); + map(0x520000, 0x520001).portr("IN1"); + map(0x540001, 0x540001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x550000, 0x550003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); - AM_RANGE(0x600000, 0x600001) AM_WRITENOP - AM_RANGE(0x620000, 0x620001) AM_READ8(_620000_r,0xff00) AM_WRITENOP - AM_RANGE(0x800000, 0xbfffff) AM_ROM -ADDRESS_MAP_END + map(0x600000, 0x600001).nopw(); + map(0x620000, 0x620000).r(this, FUNC(popobear_state::_620000_r)); + map(0x620000, 0x620001).nopw(); + map(0x800000, 0xbfffff).rom(); +} static INPUT_PORTS_START( popobear ) diff --git a/src/mame/drivers/popper.cpp b/src/mame/drivers/popper.cpp index 13bd773ca13..c78c587358b 100644 --- a/src/mame/drivers/popper.cpp +++ b/src/mame/drivers/popper.cpp @@ -120,36 +120,38 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(popper_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xc0ff) AM_RAM - AM_RANGE(0xc100, 0xc6ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xc700, 0xc8ff) AM_RAM - AM_RANGE(0xc900, 0xceff) AM_RAM AM_SHARE("attribute_ram") - AM_RANGE(0xcf00, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("shared") - AM_RANGE(0xe000, 0xe003) AM_MIRROR(0x03fc) AM_READ(inputs_r) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_WRITE(nmi_control_w) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_WRITE(crt_direction_w) - AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_WRITE(back_color_select_w) - AM_RANGE(0xe003, 0xe003) AM_MIRROR(0x1ff8) AM_WRITE(vram_page_select_w) - AM_RANGE(0xe004, 0xe007) AM_MIRROR(0x1ff8) AM_WRITE(intcycle_w) - AM_RANGE(0xe400, 0xe400) AM_MIRROR(0x03ff) AM_READ(subcpu_nmi_r) - AM_RANGE(0xe800, 0xf7ff) AM_NOP - AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x03ff) AM_READ(subcpu_reset_r) - AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0x03ff) AM_READ(watchdog_clear_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(popper_state::sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_WRITE(ay1_w) - AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1ffc) AM_DEVWRITE("ay2", ay8910_device, write_bc1_bc2) - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("shared") - AM_RANGE(0xe000, 0xffff) AM_NOP -ADDRESS_MAP_END +void popper_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).noprw(); + map(0xc000, 0xc0ff).ram(); + map(0xc100, 0xc6ff).ram().share("video_ram"); + map(0xc700, 0xc8ff).ram(); + map(0xc900, 0xceff).ram().share("attribute_ram"); + map(0xcf00, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().share("sprite_ram"); + map(0xd800, 0xdfff).ram().share("shared"); + map(0xe000, 0xe003).mirror(0x03fc).r(this, FUNC(popper_state::inputs_r)); + map(0xe000, 0xe000).mirror(0x1ff8).w(this, FUNC(popper_state::nmi_control_w)); + map(0xe001, 0xe001).mirror(0x1ff8).w(this, FUNC(popper_state::crt_direction_w)); + map(0xe002, 0xe002).mirror(0x1ff8).w(this, FUNC(popper_state::back_color_select_w)); + map(0xe003, 0xe003).mirror(0x1ff8).w(this, FUNC(popper_state::vram_page_select_w)); + map(0xe004, 0xe007).mirror(0x1ff8).w(this, FUNC(popper_state::intcycle_w)); + map(0xe400, 0xe400).mirror(0x03ff).r(this, FUNC(popper_state::subcpu_nmi_r)); + map(0xe800, 0xf7ff).noprw(); + map(0xf800, 0xf800).mirror(0x03ff).r(this, FUNC(popper_state::subcpu_reset_r)); + map(0xfc00, 0xfc00).mirror(0x03ff).r(this, FUNC(popper_state::watchdog_clear_r)); +} + +void popper_state::sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x7fff).noprw(); + map(0x8000, 0x8003).mirror(0x1ffc).w(this, FUNC(popper_state::ay1_w)); + map(0xa000, 0xa003).mirror(0x1ffc).w("ay2", FUNC(ay8910_device::write_bc1_bc2)); + map(0xc000, 0xc7ff).mirror(0x1800).ram().share("shared"); + map(0xe000, 0xffff).noprw(); +} //************************************************************************** diff --git a/src/mame/drivers/portrait.cpp b/src/mame/drivers/portrait.cpp index 84a2fdd155b..8c5f197342f 100644 --- a/src/mame/drivers/portrait.cpp +++ b/src/mame/drivers/portrait.cpp @@ -122,28 +122,30 @@ WRITE8_MEMBER(portrait_state::negative_scroll_w) m_scroll = - (data ^ 0xff); } -ADDRESS_MAP_START(portrait_state::portrait_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(bgvideo_write) AM_SHARE("bgvideoram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(fgvideo_write) AM_SHARE("fgvideoram") - AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9200, 0x97ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xa010, 0xa010) AM_WRITENOP // ? - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW1") - AM_RANGE(0xa004, 0xa004) AM_READ_PORT("DSW2") - AM_RANGE(0xa008, 0xa008) AM_READ_PORT("SYSTEM") AM_WRITE(ctrl_w) - AM_RANGE(0xa010, 0xa010) AM_READ_PORT("INPUTS") - AM_RANGE(0xa018, 0xa018) AM_READNOP AM_WRITE(positive_scroll_w) - AM_RANGE(0xa019, 0xa019) AM_WRITE(negative_scroll_w) - AM_RANGE(0xa800, 0xa83f) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xffff, 0xffff) AM_READNOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(portrait_state::portrait_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void portrait_state::portrait_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(portrait_state::bgvideo_write)).share("bgvideoram"); + map(0x8800, 0x8fff).ram().w(this, FUNC(portrait_state::fgvideo_write)).share("fgvideoram"); + map(0x9000, 0x91ff).ram().share("spriteram"); + map(0x9200, 0x97ff).ram(); + map(0xa000, 0xa000).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xa010, 0xa010).nopw(); // ? + map(0xa000, 0xa000).portr("DSW1"); + map(0xa004, 0xa004).portr("DSW2"); + map(0xa008, 0xa008).portr("SYSTEM").w(this, FUNC(portrait_state::ctrl_w)); + map(0xa010, 0xa010).portr("INPUTS"); + map(0xa018, 0xa018).nopr().w(this, FUNC(portrait_state::positive_scroll_w)); + map(0xa019, 0xa019).w(this, FUNC(portrait_state::negative_scroll_w)); + map(0xa800, 0xa83f).ram().share("nvram"); + map(0xffff, 0xffff).nopr(); +} + + +void portrait_state::portrait_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} static INPUT_PORTS_START( portrait ) diff --git a/src/mame/drivers/potgoldu.cpp b/src/mame/drivers/potgoldu.cpp index e66ae83aadb..1ac9a7f4609 100644 --- a/src/mame/drivers/potgoldu.cpp +++ b/src/mame/drivers/potgoldu.cpp @@ -64,9 +64,10 @@ void potgold_state::machine_reset() } -ADDRESS_MAP_START(potgold_state::potgold_map) - AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void potgold_state::potgold_map(address_map &map) +{ + map(0xff000000, 0xffffffff).rom().region("user1", 0); +} static INPUT_PORTS_START( potgold ) diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp index 36dc6bd36d3..0e9a6ddb2a0 100644 --- a/src/mame/drivers/powerbal.cpp +++ b/src/mame/drivers/powerbal.cpp @@ -105,72 +105,76 @@ WRITE16_MEMBER(powerbal_state::oki_banking) m_okibank->set_entry(bank & (m_oki_numbanks - 1)); } -ADDRESS_MAP_START(powerbal_state::magicstk_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x094000, 0x094001) AM_WRITENOP - AM_RANGE(0x094002, 0x094003) AM_WRITENOP - AM_RANGE(0x094004, 0x094005) AM_WRITE(tile_banking_w) - AM_RANGE(0x098180, 0x09917f) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0") - AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1") - AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2") AM_WRITE(magicstk_coin_eeprom_w) - AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1") - AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2") - AM_RANGE(0x0c201c, 0x0c201d) AM_WRITE(oki_banking) - AM_RANGE(0x0c201e, 0x0c201f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c4000, 0x0c4001) AM_WRITENOP - AM_RANGE(0x0e0000, 0x0fffff) AM_RAM - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerbal_state::powerbal_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x094000, 0x094001) AM_WRITENOP - AM_RANGE(0x094002, 0x094003) AM_WRITENOP - AM_RANGE(0x094004, 0x094005) AM_WRITE(tile_banking_w) - AM_RANGE(0x098000, 0x098fff) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x099000, 0x09bfff) AM_RAM // not used - AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0") - AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1") - AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2") - AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1") - AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2") - AM_RANGE(0x0c201c, 0x0c201d) AM_WRITE(oki_banking) - AM_RANGE(0x0c201e, 0x0c201f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c4000, 0x0c4001) AM_WRITENOP - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM - AM_RANGE(0x101000, 0x101fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x102000, 0x10200d) AM_WRITENOP // not used scroll regs? - AM_RANGE(0x103000, 0x103fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerbal_state::atombjt_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080008, 0x080009) AM_READNOP // remnant of the original? - AM_RANGE(0x080014, 0x080015) AM_NOP // always 1 in this bootleg. Flip-screen switch not present according to dip sheet. - AM_RANGE(0x088000, 0x0883ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x094000, 0x094001) AM_WRITE(atombjt_tile_banking_w) - AM_RANGE(0x094002, 0x094003) AM_NOP /* IRQ enable? */ - AM_RANGE(0x09c000, 0x09cfff) AM_MIRROR(0x1000) AM_RAM_WRITE(magicstk_bgvideoram_w) AM_SHARE("videoram1") - AM_RANGE(0x0c2010, 0x0c2011) AM_READ_PORT("IN0") - AM_RANGE(0x0c2012, 0x0c2013) AM_READ_PORT("IN1") - AM_RANGE(0x0c2014, 0x0c2015) AM_READ_PORT("IN2") - AM_RANGE(0x0c2016, 0x0c2017) AM_READ_PORT("DSW1") - AM_RANGE(0x0c2018, 0x0c2019) AM_READ_PORT("DSW2") - AM_RANGE(0x0c201c, 0x0c201d) AM_WRITE(oki_banking) - AM_RANGE(0x0c201e, 0x0c201f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c4000, 0x0c4001) AM_WRITENOP // always 0? - AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x100000, 0x100fff) AM_RAM - AM_RANGE(0x101000, 0x101fff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerbal_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void powerbal_state::magicstk_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x094000, 0x094001).nopw(); + map(0x094002, 0x094003).nopw(); + map(0x094004, 0x094005).w(this, FUNC(powerbal_state::tile_banking_w)); + map(0x098180, 0x09917f).ram().w(this, FUNC(powerbal_state::magicstk_bgvideoram_w)).share("videoram1"); + map(0x0c2010, 0x0c2011).portr("IN0"); + map(0x0c2012, 0x0c2013).portr("IN1"); + map(0x0c2014, 0x0c2015).portr("IN2").w(this, FUNC(powerbal_state::magicstk_coin_eeprom_w)); + map(0x0c2016, 0x0c2017).portr("DSW1"); + map(0x0c2018, 0x0c2019).portr("DSW2"); + map(0x0c201c, 0x0c201d).w(this, FUNC(powerbal_state::oki_banking)); + map(0x0c201f, 0x0c201f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c4000, 0x0c4001).nopw(); + map(0x0e0000, 0x0fffff).ram(); + map(0x100000, 0x100fff).ram().share("spriteram"); +} + +void powerbal_state::powerbal_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x094000, 0x094001).nopw(); + map(0x094002, 0x094003).nopw(); + map(0x094004, 0x094005).w(this, FUNC(powerbal_state::tile_banking_w)); + map(0x098000, 0x098fff).ram().w(this, FUNC(powerbal_state::magicstk_bgvideoram_w)).share("videoram1"); + map(0x099000, 0x09bfff).ram(); // not used + map(0x0c2010, 0x0c2011).portr("IN0"); + map(0x0c2012, 0x0c2013).portr("IN1"); + map(0x0c2014, 0x0c2015).portr("IN2"); + map(0x0c2016, 0x0c2017).portr("DSW1"); + map(0x0c2018, 0x0c2019).portr("DSW2"); + map(0x0c201c, 0x0c201d).w(this, FUNC(powerbal_state::oki_banking)); + map(0x0c201f, 0x0c201f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c4000, 0x0c4001).nopw(); + map(0x0f0000, 0x0fffff).ram(); + map(0x101000, 0x101fff).ram().share("spriteram"); + map(0x102000, 0x10200d).nopw(); // not used scroll regs? + map(0x103000, 0x103fff).ram(); +} + +void powerbal_state::atombjt_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080008, 0x080009).nopr(); // remnant of the original? + map(0x080014, 0x080015).noprw(); // always 1 in this bootleg. Flip-screen switch not present according to dip sheet. + map(0x088000, 0x0883ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x094000, 0x094001).w(this, FUNC(powerbal_state::atombjt_tile_banking_w)); + map(0x094002, 0x094003).noprw(); /* IRQ enable? */ + map(0x09c000, 0x09cfff).mirror(0x1000).ram().w(this, FUNC(powerbal_state::magicstk_bgvideoram_w)).share("videoram1"); + map(0x0c2010, 0x0c2011).portr("IN0"); + map(0x0c2012, 0x0c2013).portr("IN1"); + map(0x0c2014, 0x0c2015).portr("IN2"); + map(0x0c2016, 0x0c2017).portr("DSW1"); + map(0x0c2018, 0x0c2019).portr("DSW2"); + map(0x0c201c, 0x0c201d).w(this, FUNC(powerbal_state::oki_banking)); + map(0x0c201f, 0x0c201f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c4000, 0x0c4001).nopw(); // always 0? + map(0x0f0000, 0x0fffff).ram().share("mainram"); + map(0x100000, 0x100fff).ram(); + map(0x101000, 0x101fff).ram().share("spriteram"); +} + +void powerbal_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( powerbal ) PORT_START("IN0") diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index 96cf4c0fd59..e512351c121 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -59,60 +59,66 @@ READ8_MEMBER(powerins_state::powerinsb_fake_ym2203_r) } -ADDRESS_MAP_START(powerins_state::powerins_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") - AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") - AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff) - AM_RANGE(0x100016, 0x100017) AM_WRITENOP // ? always 1 - AM_RANGE(0x100018, 0x100019) AM_WRITE8(tilebank_w, 0x00ff) - AM_RANGE(0x10001e, 0x10001f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0") - AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") - AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") - AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w) - AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END +void powerins_state::powerins_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100001).portr("SYSTEM"); + map(0x100002, 0x100003).portr("P1_P2"); + map(0x100008, 0x100009).portr("DSW1"); + map(0x10000a, 0x10000b).portr("DSW2"); + map(0x100015, 0x100015).w(this, FUNC(powerins_state::flipscreen_w)); + map(0x100016, 0x100017).nopw(); // ? always 1 + map(0x100019, 0x100019).w(this, FUNC(powerins_state::tilebank_w)); + map(0x10001f, 0x10001f).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x120000, 0x120fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x130000, 0x130007).ram().share("vctrl_0"); + map(0x140000, 0x143fff).ram().w(this, FUNC(powerins_state::vram_0_w)).share("vram_0"); + map(0x170000, 0x170fff).ram().w(this, FUNC(powerins_state::vram_1_w)).share("vram_1"); + map(0x171000, 0x171fff).w(this, FUNC(powerins_state::vram_1_w)); + map(0x180000, 0x18ffff).ram().share("spriteram"); +} /* powerinsa: same as the original one but without the sound cpu (and inferior sound HW) */ -ADDRESS_MAP_START(powerins_state::powerinsa_map) - AM_IMPORT_FROM(powerins_map) - AM_RANGE(0x100030, 0x100031) AM_WRITE8(powerinsa_okibank_w, 0x00ff) - AM_RANGE(0x10003e, 0x10003f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerins_state::powerins_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) +void powerins_state::powerinsa_map(address_map &map) +{ + powerins_map(map); + map(0x100031, 0x100031).w(this, FUNC(powerins_state::powerinsa_okibank_w)); + map(0x10003f, 0x10003f).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void powerins_state::powerins_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); // AM_RANGE(0xe000, 0xe000) AM_WRITENOP // ? written only once ? // AM_RANGE(0xe001, 0xe001) AM_WRITENOP // ? -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerins_state::powerins_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerins_state::powerinsb_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(powerinsb_fake_ym2203_r) AM_WRITENOP - AM_RANGE(0x01, 0x01) AM_NOP - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x90, 0x97) AM_DEVWRITE("nmk112", nmk112_device, okibank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(powerins_state::powerinsa_oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +} + +void powerins_state::powerins_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym2203", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x80).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x88, 0x88).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w)); +} + +void powerins_state::powerinsb_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(powerins_state::powerinsb_fake_ym2203_r)).nopw(); + map(0x01, 0x01).noprw(); + map(0x80, 0x80).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x88, 0x88).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x90, 0x97).w("nmk112", FUNC(nmk112_device::okibank_w)); +} + +void powerins_state::powerinsa_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} /*************************************************************************** diff --git a/src/mame/drivers/pp01.cpp b/src/mame/drivers/pp01.cpp index 56980b44c08..85a776c434e 100644 --- a/src/mame/drivers/pp01.cpp +++ b/src/mame/drivers/pp01.cpp @@ -16,34 +16,36 @@ /* Address maps */ -ADDRESS_MAP_START(pp01_state::pp01_mem) - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("bank1") - AM_RANGE(0x1000, 0x1fff) AM_RAMBANK("bank2") - AM_RANGE(0x2000, 0x2fff) AM_RAMBANK("bank3") - AM_RANGE(0x3000, 0x3fff) AM_RAMBANK("bank4") - AM_RANGE(0x4000, 0x4fff) AM_RAMBANK("bank5") - AM_RANGE(0x5000, 0x5fff) AM_RAMBANK("bank6") - AM_RANGE(0x6000, 0x6fff) AM_RAMBANK("bank7") - AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank8") - AM_RANGE(0x8000, 0x8fff) AM_RAMBANK("bank9") - AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("bank10") - AM_RANGE(0xa000, 0xafff) AM_RAMBANK("bank11") - AM_RANGE(0xb000, 0xbfff) AM_RAMBANK("bank12") - AM_RANGE(0xc000, 0xcfff) AM_RAMBANK("bank13") - AM_RANGE(0xd000, 0xdfff) AM_RAMBANK("bank14") - AM_RANGE(0xe000, 0xefff) AM_RAMBANK("bank15") - AM_RANGE(0xf000, 0xffff) AM_RAMBANK("bank16") -ADDRESS_MAP_END +void pp01_state::pp01_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); + map(0x1000, 0x1fff).bankrw("bank2"); + map(0x2000, 0x2fff).bankrw("bank3"); + map(0x3000, 0x3fff).bankrw("bank4"); + map(0x4000, 0x4fff).bankrw("bank5"); + map(0x5000, 0x5fff).bankrw("bank6"); + map(0x6000, 0x6fff).bankrw("bank7"); + map(0x7000, 0x7fff).bankrw("bank8"); + map(0x8000, 0x8fff).bankrw("bank9"); + map(0x9000, 0x9fff).bankrw("bank10"); + map(0xa000, 0xafff).bankrw("bank11"); + map(0xb000, 0xbfff).bankrw("bank12"); + map(0xc000, 0xcfff).bankrw("bank13"); + map(0xd000, 0xdfff).bankrw("bank14"); + map(0xe000, 0xefff).bankrw("bank15"); + map(0xf000, 0xffff).bankrw("bank16"); +} -ADDRESS_MAP_START(pp01_state::pp01_io) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // system +void pp01_state::pp01_io(address_map &map) +{ + map(0xc0, 0xc3).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // system //AM_RANGE(0xc4, 0xc7) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // user - AM_RANGE(0xc8, 0xc8) AM_MIRROR(2) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0xc9, 0xc9) AM_MIRROR(2) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xcc, 0xcf) AM_WRITE(pp01_video_write_mode_w) - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0xe0, 0xef) AM_MIRROR(0x10) AM_READWRITE(pp01_mem_block_r, pp01_mem_block_w) -ADDRESS_MAP_END + map(0xc8, 0xc8).mirror(2).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc9, 0xc9).mirror(2).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xcc, 0xcf).w(this, FUNC(pp01_state::pp01_video_write_mode_w)); + map(0xd0, 0xd3).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xe0, 0xef).mirror(0x10).rw(this, FUNC(pp01_state::pp01_mem_block_r), FUNC(pp01_state::pp01_mem_block_w)); +} /* Input ports */ static INPUT_PORTS_START( pp01 ) diff --git a/src/mame/drivers/ppmast93.cpp b/src/mame/drivers/ppmast93.cpp index 2bf18d06dca..5aa253a24a5 100644 --- a/src/mame/drivers/ppmast93.cpp +++ b/src/mame/drivers/ppmast93.cpp @@ -204,35 +204,39 @@ WRITE8_MEMBER(ppmast93_state::port4_w) membank("cpubank")->set_entry(data & 0x07); } -ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubank") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram") - AM_RANGE(0xd800, 0xdfff) AM_WRITENOP - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") - AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM") AM_WRITE(port4_w) - AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW1") - AM_RANGE(0x08, 0x08) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu2_map) - AM_RANGE(0x0000, 0xfbff) AM_ROM AM_REGION("sub", 0x10000) - AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xfd00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ppmast93_state::ppmast93_cpu2_io) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("sub", 0x20000) - AM_RANGE(0x0000, 0x0001) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x0002, 0x0002) AM_MIRROR(0xff00) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END +void ppmast93_state::ppmast93_cpu1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().nopw(); + map(0x8000, 0xbfff).bankr("cpubank"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(ppmast93_state::bgram_w)).share("bgram"); + map(0xd800, 0xdfff).nopw(); + map(0xf000, 0xf7ff).ram().w(this, FUNC(ppmast93_state::fgram_w)).share("fgram"); + map(0xf800, 0xffff).ram(); +} + +void ppmast93_state::ppmast93_cpu1_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).portr("P2"); + map(0x04, 0x04).portr("SYSTEM").w(this, FUNC(ppmast93_state::port4_w)); + map(0x06, 0x06).portr("DSW1"); + map(0x08, 0x08).portr("DSW2"); +} + +void ppmast93_state::ppmast93_cpu2_map(address_map &map) +{ + map(0x0000, 0xfbff).rom().region("sub", 0x10000); + map(0xfc00, 0xfc00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xfd00, 0xffff).ram(); +} + +void ppmast93_state::ppmast93_cpu2_io(address_map &map) +{ + map(0x0000, 0xffff).rom().region("sub", 0x20000); + map(0x0000, 0x0001).mirror(0xff00).w("ymsnd", FUNC(ym2413_device::write)); + map(0x0002, 0x0002).mirror(0xff00).w("dac", FUNC(dac_byte_interface::write)); +} static INPUT_PORTS_START( ppmast93 ) PORT_START("P1") diff --git a/src/mame/drivers/prehisle.cpp b/src/mame/drivers/prehisle.cpp index 693cead7ccc..44bdf05a09a 100644 --- a/src/mame/drivers/prehisle.cpp +++ b/src/mame/drivers/prehisle.cpp @@ -30,17 +30,18 @@ WRITE16_MEMBER(prehisle_state::soundcmd_w) /*******************************************************************************/ -ADDRESS_MAP_START(prehisle_state::prehisle_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x070000, 0x073fff) AM_RAM - AM_RANGE(0x090000, 0x0907ff) AM_RAM_WRITE(tx_vram_w) AM_SHARE("tx_vram") - AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(fg_vram_w) AM_SHARE("fg_vram") - AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0e0000, 0x0e00ff) AM_READ(control_r) - AM_RANGE(0x0f0000, 0x0ff0ff) AM_WRITE(control_w) - AM_RANGE(0x0f0070, 0x0ff071) AM_WRITE(soundcmd_w) -ADDRESS_MAP_END +void prehisle_state::prehisle_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x070000, 0x073fff).ram(); + map(0x090000, 0x0907ff).ram().w(this, FUNC(prehisle_state::tx_vram_w)).share("tx_vram"); + map(0x0a0000, 0x0a07ff).ram().share("spriteram"); + map(0x0b0000, 0x0b3fff).ram().w(this, FUNC(prehisle_state::fg_vram_w)).share("fg_vram"); + map(0x0d0000, 0x0d07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0e0000, 0x0e00ff).r(this, FUNC(prehisle_state::control_r)); + map(0x0f0000, 0x0ff0ff).w(this, FUNC(prehisle_state::control_w)); + map(0x0f0070, 0x0ff071).w(this, FUNC(prehisle_state::soundcmd_w)); +} /******************************************************************************/ @@ -56,20 +57,22 @@ WRITE8_MEMBER(prehisle_state::D7759_upd_reset_w) m_upd7759->reset_w(data & 0x80); } -ADDRESS_MAP_START(prehisle_state::prehisle_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf800, 0xf800) AM_WRITENOP // ??? -ADDRESS_MAP_END - -ADDRESS_MAP_START(prehisle_state::prehisle_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0x40, 0x40) AM_WRITE(D7759_write_port_0_w) - AM_RANGE(0x80, 0x80) AM_WRITE(D7759_upd_reset_w) -ADDRESS_MAP_END +void prehisle_state::prehisle_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xf800).nopw(); // ??? +} + +void prehisle_state::prehisle_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x40, 0x40).w(this, FUNC(prehisle_state::D7759_write_port_0_w)); + map(0x80, 0x80).w(this, FUNC(prehisle_state::D7759_upd_reset_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/prestige.cpp b/src/mame/drivers/prestige.cpp index 546c1784557..7e9770cb0b5 100644 --- a/src/mame/drivers/prestige.cpp +++ b/src/mame/drivers/prestige.cpp @@ -323,32 +323,35 @@ WRITE8_MEMBER( prestige_state::lcdc_w ) } -ADDRESS_MAP_START(prestige_state::prestige_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3") - AM_RANGE(0xc000, 0xdfff) AM_RAMBANK("bank4") - AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(prestige_state::prestige_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x05) AM_READWRITE(mouse_r, mouse_w) - AM_RANGE(0x30, 0x3f) AM_WRITE(lcdc_w) - AM_RANGE(0x40, 0x40) AM_WRITE(kb_w) - AM_RANGE(0x41, 0x42) AM_READ(kb_r) - AM_RANGE(0x50, 0x56) AM_READWRITE(bankswitch_r, bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(prestige_state::glcolor_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x30, 0x3f) AM_WRITE(lcdc_w) - AM_RANGE(0x40, 0x40) AM_WRITE(kb_w) - AM_RANGE(0x41, 0x42) AM_READ(kb_r) - AM_RANGE(0x50, 0x56) AM_READWRITE(bankswitch_r, bankswitch_w) -ADDRESS_MAP_END +void prestige_state::prestige_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankr("bank2"); + map(0x8000, 0xbfff).bankr("bank3"); + map(0xc000, 0xdfff).bankrw("bank4"); + map(0xe000, 0xffff).bankrw("bank5"); +} + +void prestige_state::prestige_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x04, 0x05).rw(this, FUNC(prestige_state::mouse_r), FUNC(prestige_state::mouse_w)); + map(0x30, 0x3f).w(this, FUNC(prestige_state::lcdc_w)); + map(0x40, 0x40).w(this, FUNC(prestige_state::kb_w)); + map(0x41, 0x42).r(this, FUNC(prestige_state::kb_r)); + map(0x50, 0x56).rw(this, FUNC(prestige_state::bankswitch_r), FUNC(prestige_state::bankswitch_w)); +} + +void prestige_state::glcolor_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x30, 0x3f).w(this, FUNC(prestige_state::lcdc_w)); + map(0x40, 0x40).w(this, FUNC(prestige_state::kb_w)); + map(0x41, 0x42).r(this, FUNC(prestige_state::kb_r)); + map(0x50, 0x56).rw(this, FUNC(prestige_state::bankswitch_r), FUNC(prestige_state::bankswitch_w)); +} /* Input ports */ INPUT_PORTS_START( prestige ) diff --git a/src/mame/drivers/primo.cpp b/src/mame/drivers/primo.cpp index e917ed6e4d8..9dc3f5d31ed 100644 --- a/src/mame/drivers/primo.cpp +++ b/src/mame/drivers/primo.cpp @@ -117,34 +117,39 @@ Interrupts: #include "formats/primoptp.h" -ADDRESS_MAP_START(primo_state::primoa_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x3f ) AM_READWRITE(primo_be_1_r, primo_ki_1_w ) - AM_RANGE( 0xfd, 0xfd ) AM_WRITE(primo_FD_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(primo_state::primob_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x3f ) AM_READWRITE(primo_be_1_r, primo_ki_1_w ) - AM_RANGE( 0x40, 0x7f ) AM_READWRITE(primo_be_2_r, primo_ki_2_w ) - AM_RANGE( 0xfd, 0xfd ) AM_WRITE(primo_FD_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(primo_state::primo32_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x4000, 0x7fff ) AM_RAM AM_MIRROR ( 0x8000 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(primo_state::primo48_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x4000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xbfff ) AM_RAM AM_MIRROR ( 0x4000 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(primo_state::primo64_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x4000, 0xffff ) AM_RAM -ADDRESS_MAP_END +void primo_state::primoa_port(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).rw(this, FUNC(primo_state::primo_be_1_r), FUNC(primo_state::primo_ki_1_w)); + map(0xfd, 0xfd).w(this, FUNC(primo_state::primo_FD_w)); +} + +void primo_state::primob_port(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).rw(this, FUNC(primo_state::primo_be_1_r), FUNC(primo_state::primo_ki_1_w)); + map(0x40, 0x7f).rw(this, FUNC(primo_state::primo_be_2_r), FUNC(primo_state::primo_ki_2_w)); + map(0xfd, 0xfd).w(this, FUNC(primo_state::primo_FD_w)); +} + +void primo_state::primo32_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).ram().mirror(0x8000); +} + +void primo_state::primo48_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0xbfff).ram().mirror(0x4000); +} + +void primo_state::primo64_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0xffff).ram(); +} static INPUT_PORTS_START( primo ) PORT_START( "IN0" ) diff --git a/src/mame/drivers/pro80.cpp b/src/mame/drivers/pro80.cpp index 519d095aaa4..da11277c446 100644 --- a/src/mame/drivers/pro80.cpp +++ b/src/mame/drivers/pro80.cpp @@ -112,21 +112,23 @@ READ8_MEMBER( pro80_state::kp_r ) return data | m_cass_in | 0xc0; } -ADDRESS_MAP_START(pro80_state::pro80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM - AM_RANGE(0x1400, 0x17ff) AM_RAM // 2nd RAM is optional -ADDRESS_MAP_END - -ADDRESS_MAP_START(pro80_state::pro80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("pio", z80pio_device, read, write) - AM_RANGE(0x44, 0x47) AM_READ(kp_r) - AM_RANGE(0x48, 0x4b) AM_WRITE(digit_w) - AM_RANGE(0x4c, 0x4f) AM_WRITE(segment_w) -ADDRESS_MAP_END +void pro80_state::pro80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); + map(0x1000, 0x13ff).ram(); + map(0x1400, 0x17ff).ram(); // 2nd RAM is optional +} + +void pro80_state::pro80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x40, 0x43).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x44, 0x47).r(this, FUNC(pro80_state::kp_r)); + map(0x48, 0x4b).w(this, FUNC(pro80_state::digit_w)); + map(0x4c, 0x4f).w(this, FUNC(pro80_state::segment_w)); +} /* Input ports */ static INPUT_PORTS_START( pro80 ) diff --git a/src/mame/drivers/proconn.cpp b/src/mame/drivers/proconn.cpp index 60ee5f0d952..e26a01eea82 100644 --- a/src/mame/drivers/proconn.cpp +++ b/src/mame/drivers/proconn.cpp @@ -206,69 +206,71 @@ public: DECLARE_READ16_MEMBER(serial_receive); }; -ADDRESS_MAP_START(proconn_state::proconn_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void proconn_state::proconn_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xffff).ram(); +} // the mapping of the devices is rather ugly with address bits 8-9 providing the usual address bits 0-1 or 'offset' // r0/r1/r2/r3 and w0/w1/w2/w3 might still be in the wrong order at the moment. -ADDRESS_MAP_START(proconn_state::proconn_portmap) +void proconn_state::proconn_portmap(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0x3ff) // sio (vfd should be connected to it?) - AM_RANGE(0x00ff, 0x00ff) AM_READWRITE(sio_r0, sio_w0) - AM_RANGE(0x01ff, 0x01ff) AM_READWRITE(sio_r2, sio_w2) - AM_RANGE(0x02ff, 0x02ff) AM_READWRITE(sio_r1, sio_w1) - AM_RANGE(0x03ff, 0x03ff) AM_READWRITE(sio_r3, sio_w3) + map(0x00ff, 0x00ff).rw(this, FUNC(proconn_state::sio_r0), FUNC(proconn_state::sio_w0)); + map(0x01ff, 0x01ff).rw(this, FUNC(proconn_state::sio_r2), FUNC(proconn_state::sio_w2)); + map(0x02ff, 0x02ff).rw(this, FUNC(proconn_state::sio_r1), FUNC(proconn_state::sio_w1)); + map(0x03ff, 0x03ff).rw(this, FUNC(proconn_state::sio_r3), FUNC(proconn_state::sio_w3)); // ctc - AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(ctc_r0, ctc_w0) - AM_RANGE(0x01fe, 0x01fe) AM_READWRITE(ctc_r2, ctc_w2) - AM_RANGE(0x02fe, 0x02fe) AM_READWRITE(ctc_r1, ctc_w1) - AM_RANGE(0x03fe, 0x03fe) AM_READWRITE(ctc_r3, ctc_w3) + map(0x00fe, 0x00fe).rw(this, FUNC(proconn_state::ctc_r0), FUNC(proconn_state::ctc_w0)); + map(0x01fe, 0x01fe).rw(this, FUNC(proconn_state::ctc_r2), FUNC(proconn_state::ctc_w2)); + map(0x02fe, 0x02fe).rw(this, FUNC(proconn_state::ctc_r1), FUNC(proconn_state::ctc_w1)); + map(0x03fe, 0x03fe).rw(this, FUNC(proconn_state::ctc_r3), FUNC(proconn_state::ctc_w3)); // ay (meters connected to it?) - AM_RANGE(0x00fd, 0x00fd) AM_READWRITE(ay_r0, ay_w0) - AM_RANGE(0x00fc, 0x00fc) AM_WRITE(ay_w1) + map(0x00fd, 0x00fd).rw(this, FUNC(proconn_state::ay_r0), FUNC(proconn_state::ay_w0)); + map(0x00fc, 0x00fc).w(this, FUNC(proconn_state::ay_w1)); // ?? - AM_RANGE(0xfbf9, 0xfbf9) AM_WRITENOP - AM_RANGE(0xfff9, 0xfff9) AM_WRITENOP + map(0xfbf9, 0xfbf9).nopw(); + map(0xfff9, 0xfff9).nopw(); // pio5 (lamps?) - AM_RANGE(0x00f0, 0x00f0) AM_READWRITE(pio5_r0, pio5_w0) - AM_RANGE(0x01f0, 0x01f0) AM_READWRITE(pio5_r1, pio5_w1) - AM_RANGE(0x02f0, 0x02f0) AM_READWRITE(pio5_r2, pio5_w2) - AM_RANGE(0x03f0, 0x03f0) AM_READWRITE(pio5_r3, pio5_w3) + map(0x00f0, 0x00f0).rw(this, FUNC(proconn_state::pio5_r0), FUNC(proconn_state::pio5_w0)); + map(0x01f0, 0x01f0).rw(this, FUNC(proconn_state::pio5_r1), FUNC(proconn_state::pio5_w1)); + map(0x02f0, 0x02f0).rw(this, FUNC(proconn_state::pio5_r2), FUNC(proconn_state::pio5_w2)); + map(0x03f0, 0x03f0).rw(this, FUNC(proconn_state::pio5_r3), FUNC(proconn_state::pio5_w3)); // pio4 (triacs + 7segs) - AM_RANGE(0x00e8, 0x00e8) AM_READWRITE(pio4_r0, pio4_w0) - AM_RANGE(0x01e8, 0x01e8) AM_READWRITE(pio4_r1, pio4_w1) - AM_RANGE(0x02e8, 0x02e8) AM_READWRITE(pio4_r2, pio4_w2) - AM_RANGE(0x03e8, 0x03e8) AM_READWRITE(pio4_r3, pio4_w3) + map(0x00e8, 0x00e8).rw(this, FUNC(proconn_state::pio4_r0), FUNC(proconn_state::pio4_w0)); + map(0x01e8, 0x01e8).rw(this, FUNC(proconn_state::pio4_r1), FUNC(proconn_state::pio4_w1)); + map(0x02e8, 0x02e8).rw(this, FUNC(proconn_state::pio4_r2), FUNC(proconn_state::pio4_w2)); + map(0x03e8, 0x03e8).rw(this, FUNC(proconn_state::pio4_r3), FUNC(proconn_state::pio4_w3)); // pio3 (lamps? + opto in?) - AM_RANGE(0x00d8, 0x00d8) AM_READWRITE(pio3_r0, pio3_w0) - AM_RANGE(0x01d8, 0x01d8) AM_READWRITE(pio3_r1, pio3_w1) - AM_RANGE(0x02d8, 0x02d8) AM_READWRITE(pio3_r2, pio3_w2) - AM_RANGE(0x03d8, 0x03d8) AM_READWRITE(pio3_r3, pio3_w3) + map(0x00d8, 0x00d8).rw(this, FUNC(proconn_state::pio3_r0), FUNC(proconn_state::pio3_w0)); + map(0x01d8, 0x01d8).rw(this, FUNC(proconn_state::pio3_r1), FUNC(proconn_state::pio3_w1)); + map(0x02d8, 0x02d8).rw(this, FUNC(proconn_state::pio3_r2), FUNC(proconn_state::pio3_w2)); + map(0x03d8, 0x03d8).rw(this, FUNC(proconn_state::pio3_r3), FUNC(proconn_state::pio3_w3)); // pio2 (reels?) - AM_RANGE(0x00b8, 0x00b8) AM_READWRITE(pio2_r0, pio2_w0) - AM_RANGE(0x01b8, 0x01b8) AM_READWRITE(pio2_r1, pio2_w1) - AM_RANGE(0x02b8, 0x02b8) AM_READWRITE(pio2_r2, pio2_w2) - AM_RANGE(0x03b8, 0x03b8) AM_READWRITE(pio2_r3, pio2_w3) + map(0x00b8, 0x00b8).rw(this, FUNC(proconn_state::pio2_r0), FUNC(proconn_state::pio2_w0)); + map(0x01b8, 0x01b8).rw(this, FUNC(proconn_state::pio2_r1), FUNC(proconn_state::pio2_w1)); + map(0x02b8, 0x02b8).rw(this, FUNC(proconn_state::pio2_r2), FUNC(proconn_state::pio2_w2)); + map(0x03b8, 0x03b8).rw(this, FUNC(proconn_state::pio2_r3), FUNC(proconn_state::pio2_w3)); // pio1 (reels? + inputs?) - AM_RANGE(0x0078, 0x0078) AM_READWRITE(pio1_r0, pio1_w0) - AM_RANGE(0x0178, 0x0178) AM_READWRITE(pio1_r1, pio1_w1) - AM_RANGE(0x0278, 0x0278) AM_READWRITE(pio1_r2, pio1_w2) - AM_RANGE(0x0378, 0x0378) AM_READWRITE(pio1_r3, pio1_w3) -ADDRESS_MAP_END + map(0x0078, 0x0078).rw(this, FUNC(proconn_state::pio1_r0), FUNC(proconn_state::pio1_w0)); + map(0x0178, 0x0178).rw(this, FUNC(proconn_state::pio1_r1), FUNC(proconn_state::pio1_w1)); + map(0x0278, 0x0278).rw(this, FUNC(proconn_state::pio1_r2), FUNC(proconn_state::pio1_w2)); + map(0x0378, 0x0378).rw(this, FUNC(proconn_state::pio1_r3), FUNC(proconn_state::pio1_w3)); +} static INPUT_PORTS_START( proconn ) diff --git a/src/mame/drivers/prof180x.cpp b/src/mame/drivers/prof180x.cpp index 1ab28499beb..2bd2b0951df 100644 --- a/src/mame/drivers/prof180x.cpp +++ b/src/mame/drivers/prof180x.cpp @@ -186,17 +186,19 @@ READ8_MEMBER( prof180x_state::status_r ) /* Address Maps */ -ADDRESS_MAP_START(prof180x_state::prof180x_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(prof180x_state::prof180x_io) - AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_WRITE(flr_w) - AM_RANGE(0x09, 0x09) AM_SELECT(0xff00) AM_READ(status_r) - AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xff00) AM_DEVREADWRITE(FDC9268_TAG, upd765a_device, mdma_r, mdma_w) - AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xff00) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x0c, 0x0d) AM_MIRROR(0xff00) AM_DEVICE(FDC9268_TAG, upd765a_device, map) -ADDRESS_MAP_END +void prof180x_state::prof180x_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(prof180x_state::read), FUNC(prof180x_state::write)); +} + +void prof180x_state::prof180x_io(address_map &map) +{ + map(0x08, 0x08).mirror(0xff00).w(this, FUNC(prof180x_state::flr_w)); + map(0x09, 0x09).select(0xff00).r(this, FUNC(prof180x_state::status_r)); + map(0x0a, 0x0a).mirror(0xff00).rw(FDC9268_TAG, FUNC(upd765a_device::mdma_r), FUNC(upd765a_device::mdma_w)); + map(0x0b, 0x0b).mirror(0xff00).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x0c, 0x0d).mirror(0xff00).m(FDC9268_TAG, FUNC(upd765a_device::map)); +} /* Input ports */ diff --git a/src/mame/drivers/prof80.cpp b/src/mame/drivers/prof80.cpp index 4c1e8c6ec0f..410bb5f5ef9 100644 --- a/src/mame/drivers/prof80.cpp +++ b/src/mame/drivers/prof80.cpp @@ -271,28 +271,31 @@ WRITE8_MEMBER( prof80_state::unio_ctrl_w ) // ADDRESS_MAP( prof80_mem ) //------------------------------------------------- -ADDRESS_MAP_START(prof80_state::prof80_mem) - AM_RANGE(0x0000, 0xffff) AM_DEVICE(MMU_TAG, prof80_mmu_device, z80_program_map) -ADDRESS_MAP_END +void prof80_state::prof80_mem(address_map &map) +{ + map(0x0000, 0xffff).m(m_mmu, FUNC(prof80_mmu_device::z80_program_map)); +} //------------------------------------------------- // ADDRESS_MAP( prof80_mmu ) //------------------------------------------------- -ADDRESS_MAP_START(prof80_state::prof80_mmu) - AM_RANGE(0x40000, 0x5ffff) AM_RAM - AM_RANGE(0xc0000, 0xdffff) AM_RAM - AM_RANGE(0xf0000, 0xf1fff) AM_MIRROR(0xe000) AM_ROM AM_REGION(Z80_TAG, 0) -ADDRESS_MAP_END +void prof80_state::prof80_mmu(address_map &map) +{ + map(0x40000, 0x5ffff).ram(); + map(0xc0000, 0xdffff).ram(); + map(0xf0000, 0xf1fff).mirror(0xe000).rom().region(Z80_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( prof80_io ) //------------------------------------------------- -ADDRESS_MAP_START(prof80_state::prof80_io) - AM_RANGE(0x00, 0xd7) AM_MIRROR(0xff00) AM_DEVREADWRITE(ECBBUS_TAG, ecbbus_device, io_r, io_w) +void prof80_state::prof80_io(address_map &map) +{ + map(0x00, 0xd7).mirror(0xff00).rw(m_ecb, FUNC(ecbbus_device::io_r), FUNC(ecbbus_device::io_w)); // AM_RANGE(0x80, 0x8f) AM_MIRROR(0xff00) AM_DEVREADWRITE(UNIO_Z80STI_TAG, z80sti_device, read, write) // AM_RANGE(0x94, 0x95) AM_MIRROR(0xff00) AM_DEVREADWRITE_LEGACY(UNIO_Z80SIO_TAG, z80sio_d_r, z80sio_d_w) // AM_RANGE(0x96, 0x97) AM_MIRROR(0xff00) AM_DEVREADWRITE_LEGACY(UNIO_Z80SIO_TAG, z80sio_c_r, z80sio_c_w) @@ -301,12 +304,12 @@ ADDRESS_MAP_START(prof80_state::prof80_io) // AM_RANGE(0x9d, 0x9d) AM_MIRROR(0xff00) AM_DEVWRITE(UNIO_CENTRONICS1_TAG, centronics_device, write) // AM_RANGE(0xc0, 0xc0) AM_MIRROR(0xff00) AM_READ(gripc_r) // AM_RANGE(0xc1, 0xc1) AM_MIRROR(0xff00) AM_READWRITE(gripd_r, gripd_w) - AM_RANGE(0xd8, 0xd8) AM_MIRROR(0xff00) AM_WRITE(flr_w) - AM_RANGE(0xda, 0xda) AM_MIRROR(0xff00) AM_READ(status_r) - AM_RANGE(0xdb, 0xdb) AM_MIRROR(0xff00) AM_READ(status2_r) - AM_RANGE(0xdc, 0xdd) AM_MIRROR(0xff00) AM_DEVICE(UPD765_TAG, upd765a_device, map) - AM_RANGE(0xde, 0xde) AM_MIRROR(0x0001) AM_SELECT(0xff00) AM_DEVWRITE(MMU_TAG, prof80_mmu_device, par_w) -ADDRESS_MAP_END + map(0xd8, 0xd8).mirror(0xff00).w(this, FUNC(prof80_state::flr_w)); + map(0xda, 0xda).mirror(0xff00).r(this, FUNC(prof80_state::status_r)); + map(0xdb, 0xdb).mirror(0xff00).r(this, FUNC(prof80_state::status2_r)); + map(0xdc, 0xdd).mirror(0xff00).m(m_fdc, FUNC(upd765a_device::map)); + map(0xde, 0xde).mirror(0x0001).select(0xff00).w(m_mmu, FUNC(prof80_mmu_device::par_w)); +} diff --git a/src/mame/drivers/progolf.cpp b/src/mame/drivers/progolf.cpp index b4d8f0b3d1c..626d87251ac 100644 --- a/src/mame/drivers/progolf.cpp +++ b/src/mame/drivers/progolf.cpp @@ -261,31 +261,33 @@ WRITE8_MEMBER(progolf_state::videoram_w) m_videoram[offset] = data; } -ADDRESS_MAP_START(progolf_state::main_cpu) - AM_RANGE(0x0000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(charram_w) AM_SHARE("fbram") - AM_RANGE(0x8000, 0x8fff) AM_READWRITE(videoram_r, videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN2") AM_WRITE(char_vregs_w) - AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") AM_WRITE(scrollx_hi_w) //p1 inputs - AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") AM_WRITE(scrollx_lo_w) //p2 inputs - AM_RANGE(0x9600, 0x9600) AM_READ_PORT("IN0") AM_WRITE(flip_screen_w) /* VBLANK */ - AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1") - AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x9a00, 0x9a00) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) +void progolf_state::main_cpu(address_map &map) +{ + map(0x0000, 0x5fff).ram(); + map(0x6000, 0x7fff).ram().w(this, FUNC(progolf_state::charram_w)).share("fbram"); + map(0x8000, 0x8fff).rw(this, FUNC(progolf_state::videoram_r), FUNC(progolf_state::videoram_w)).share("videoram"); + map(0x9000, 0x9000).portr("IN2").w(this, FUNC(progolf_state::char_vregs_w)); + map(0x9200, 0x9200).portr("P1").w(this, FUNC(progolf_state::scrollx_hi_w)); //p1 inputs + map(0x9400, 0x9400).portr("P2").w(this, FUNC(progolf_state::scrollx_lo_w)); //p2 inputs + map(0x9600, 0x9600).portr("IN0").w(this, FUNC(progolf_state::flip_screen_w)); /* VBLANK */ + map(0x9800, 0x9800).portr("DSW1"); + map(0x9800, 0x9800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x9801, 0x9801).w("crtc", FUNC(mc6845_device::register_w)); + map(0x9a00, 0x9a00).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write)); // AM_RANGE(0x9e00, 0x9e00) AM_WRITENOP - AM_RANGE(0xb000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(progolf_state::sound_cpu) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x4000, 0x4fff) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6fff) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xb000, 0xffff).rom(); +} + +void progolf_state::sound_cpu(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x4000, 0x4fff).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x5000, 0x5fff).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6fff).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x7000, 0x7fff).w("ay2", FUNC(ay8910_device::address_w)); + map(0x8000, 0x8fff).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0xf000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(progolf_state::coin_inserted) diff --git a/src/mame/drivers/prophet600.cpp b/src/mame/drivers/prophet600.cpp index 3edba6498ed..27c456ece51 100644 --- a/src/mame/drivers/prophet600.cpp +++ b/src/mame/drivers/prophet600.cpp @@ -239,24 +239,26 @@ READ8_MEMBER(prophet600_state::comparitor_r) return m_comparitor; } -ADDRESS_MAP_START(prophet600_state::cpu_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION(MAINCPU_TAG, 0) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x4000, 0x4001) AM_WRITE(dac_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE(UART_TAG, acia6850_device, write) - AM_RANGE(0xe000, 0xe001) AM_DEVREAD(UART_TAG, acia6850_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(prophet600_state::io_map) - AM_RANGE(0x00, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE(PIT_TAG, pit8253_device, read, write) - AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) AM_WRITE(scanrow_w) - AM_RANGE(0x09, 0x09) AM_MIRROR(0xff00) AM_READWRITE(comparitor_r, led_w) - AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xff00) AM_READWRITE(scan_r, potmux_w) - AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xff00) AM_WRITE(gate_w) - AM_RANGE(0x0d, 0x0d) AM_MIRROR(0xff00) AM_WRITE(cv_w) - AM_RANGE(0x0e, 0x0e) AM_MIRROR(0xff00) AM_WRITE(mask_w) -ADDRESS_MAP_END +void prophet600_state::cpu_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region(MAINCPU_TAG, 0); + map(0x2000, 0x27ff).ram(); + map(0x3000, 0x37ff).ram(); + map(0x4000, 0x4001).w(this, FUNC(prophet600_state::dac_w)); + map(0x6000, 0x6001).w(m_acia, FUNC(acia6850_device::write)); + map(0xe000, 0xe001).r(m_acia, FUNC(acia6850_device::read)); +} + +void prophet600_state::io_map(address_map &map) +{ + map(0x00, 0x07).mirror(0xff00).rw(PIT_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x08, 0x08).mirror(0xff00).w(this, FUNC(prophet600_state::scanrow_w)); + map(0x09, 0x09).mirror(0xff00).rw(this, FUNC(prophet600_state::comparitor_r), FUNC(prophet600_state::led_w)); + map(0x0a, 0x0a).mirror(0xff00).rw(this, FUNC(prophet600_state::scan_r), FUNC(prophet600_state::potmux_w)); + map(0x0b, 0x0b).mirror(0xff00).w(this, FUNC(prophet600_state::gate_w)); + map(0x0d, 0x0d).mirror(0xff00).w(this, FUNC(prophet600_state::cv_w)); + map(0x0e, 0x0e).mirror(0xff00).w(this, FUNC(prophet600_state::mask_w)); +} DRIVER_INIT_MEMBER(prophet600_state, prophet600) { diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp index c8e937a20b3..b07967d70ce 100644 --- a/src/mame/drivers/proteus3.cpp +++ b/src/mame/drivers/proteus3.cpp @@ -136,14 +136,15 @@ private: Address Maps ******************************************************************************/ -ADDRESS_MAP_START(proteus3_state::proteus3_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAM - AM_RANGE(0x8004, 0x8007) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // cassette - AM_RANGE(0x8010, 0x8011) AM_DEVREADWRITE("acia2", acia6850_device, read, write) // serial keyboard (never writes data) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void proteus3_state::proteus3_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram(); + map(0x8004, 0x8007).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8008, 0x8009).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // cassette + map(0x8010, 0x8011).rw(m_acia2, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // serial keyboard (never writes data) + map(0xc000, 0xffff).rom(); +} /****************************************************************************** diff --git a/src/mame/drivers/ps2.cpp b/src/mame/drivers/ps2.cpp index e1d644fabd1..79a7713b627 100644 --- a/src/mame/drivers/ps2.cpp +++ b/src/mame/drivers/ps2.cpp @@ -41,29 +41,33 @@ MACHINE_CONFIG_START(ps2_state::at_softlists) MCFG_SOFTWARE_LIST_ADD("at_cdrom_list","ibm5170_cdrom") MACHINE_CONFIG_END -ADDRESS_MAP_START(ps2_state::ps2_16_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x09ffff) AM_RAMBANK("bank10") - AM_RANGE(0x0e0000, 0x0fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xfe0000, 0xffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ps2_state::ps2_32_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10") - AM_RANGE(0x000e0000, 0x000fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ps2_state::ps2_16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ps2_state::ps2_32_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE16("mb", at_mb_device, map, 0xffffffff) -ADDRESS_MAP_END +void ps2_state::ps2_16_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x09ffff).bankrw("bank10"); + map(0x0e0000, 0x0fffff).rom().region("bios", 0); + map(0xfe0000, 0xffffff).rom().region("bios", 0); +} + +void ps2_state::ps2_32_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0009ffff).bankrw("bank10"); + map(0x000e0000, 0x000fffff).rom().region("bios", 0); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); +} + +void ps2_state::ps2_16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); +} + +void ps2_state::ps2_32_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(at_mb_device::map)); +} void ps2_state::machine_start() { diff --git a/src/mame/drivers/ps2sony.cpp b/src/mame/drivers/ps2sony.cpp index f2846731296..4691fd7549c 100644 --- a/src/mame/drivers/ps2sony.cpp +++ b/src/mame/drivers/ps2sony.cpp @@ -188,10 +188,11 @@ uint32_t ps2sony_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma return 0; } -ADDRESS_MAP_START(ps2sony_state::mem_map) - AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // 32 MB RAM - AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void ps2sony_state::mem_map(address_map &map) +{ + map(0x00000000, 0x01ffffff).ram(); // 32 MB RAM + map(0x1fc00000, 0x1fdfffff).rom().region("bios", 0); +} static INPUT_PORTS_START( ps2sony ) INPUT_PORTS_END diff --git a/src/mame/drivers/psikyo.cpp b/src/mame/drivers/psikyo.cpp index 9b09694a8f5..01b62040053 100644 --- a/src/mame/drivers/psikyo.cpp +++ b/src/mame/drivers/psikyo.cpp @@ -229,18 +229,19 @@ READ32_MEMBER(psikyo_state::s1945_mcu_r) ***************************************************************************/ -ADDRESS_MAP_START(psikyo_state::psikyo_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM (not all used) - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites, buffered by two frames (list buffered + fb buffered) - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette - AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_SHARE("vram_0") // Layer 0 - AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_SHARE("vram_1") // Layer 1 - AM_RANGE(0x804000, 0x807fff) AM_RAM AM_SHARE("vregs") // RAM + Vregs +void psikyo_state::psikyo_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM (not all used) + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites, buffered by two frames (list buffered + fb buffered) + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette + map(0x800000, 0x801fff).ram().w(this, FUNC(psikyo_state::psikyo_vram_0_w)).share("vram_0"); // Layer 0 + map(0x802000, 0x803fff).ram().w(this, FUNC(psikyo_state::psikyo_vram_1_w)).share("vram_1"); // Layer 1 + map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs // AM_RANGE(0xc00000, 0xc0000b) AM_READ(psikyo_input_r) // Depends on board // AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w) // MCU on sh404 // AM_RANGE(0xc00010, 0xc00013) AM_WRITE(psikyo_soundlatch_w) // Depends on board - AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END + map(0xfe0000, 0xffffff).ram(); // RAM +} READ32_MEMBER(psikyo_state::s1945bl_oki_r) { @@ -270,27 +271,29 @@ WRITE32_MEMBER(psikyo_state::s1945bl_oki_w) printf("ACCESSING_BITS_0_7 ?? %08x %08x\n", data & 0x000000ff, mem_mask); } -ADDRESS_MAP_START(psikyo_state::s1945bl_oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void psikyo_state::s1945bl_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} -ADDRESS_MAP_START(psikyo_state::psikyo_bootleg_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM (not all used) - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("boot_spritebuf") // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals? +void psikyo_state::psikyo_bootleg_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM (not all used) + map(0x200000, 0x200fff).ram().share("boot_spritebuf"); // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals? - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites, buffered by two frames (list buffered + fb buffered) - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette - AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_SHARE("vram_0") // Layer 0 - AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_SHARE("vram_1") // Layer 1 - AM_RANGE(0x804000, 0x807fff) AM_RAM AM_SHARE("vregs") // RAM + Vregs - AM_RANGE(0xc00000, 0xc0000b) AM_READ(gunbird_input_r) // input ports + map(0x400000, 0x401fff).ram().share("spriteram"); // Sprites, buffered by two frames (list buffered + fb buffered) + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette + map(0x800000, 0x801fff).ram().w(this, FUNC(psikyo_state::psikyo_vram_0_w)).share("vram_0"); // Layer 0 + map(0x802000, 0x803fff).ram().w(this, FUNC(psikyo_state::psikyo_vram_1_w)).share("vram_1"); // Layer 1 + map(0x804000, 0x807fff).ram().share("vregs"); // RAM + Vregs + map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::gunbird_input_r)); // input ports - AM_RANGE(0xc00018, 0xc0001b) AM_READWRITE(s1945bl_oki_r, s1945bl_oki_w) + map(0xc00018, 0xc0001b).rw(this, FUNC(psikyo_state::s1945bl_oki_r), FUNC(psikyo_state::s1945bl_oki_w)); - AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM + map(0xfe0000, 0xffffff).ram(); // RAM -ADDRESS_MAP_END +} /*************************************************************************** Sengoku Ace / Samurai Aces @@ -308,30 +311,33 @@ READ32_MEMBER(psikyo_state::sngkace_input_r) } } -ADDRESS_MAP_START(psikyo_state::sngkace_map) - AM_IMPORT_FROM(psikyo_map) - AM_RANGE(0xc00000, 0xc0000b) AM_READ(sngkace_input_r) - AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff) -ADDRESS_MAP_END +void psikyo_state::sngkace_map(address_map &map) +{ + psikyo_map(map); + map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::sngkace_input_r)); + map(0xc00013, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} WRITE8_MEMBER(psikyo_state::sngkace_sound_bankswitch_w) { membank("bank1")->set_entry(data & 0x03); } -ADDRESS_MAP_START(psikyo_state::sngkace_sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM // ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM // RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // Banked ROM -ADDRESS_MAP_END +void psikyo_state::sngkace_sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); // ROM + map(0x7800, 0x7fff).ram(); // RAM + map(0x8000, 0xffff).bankr("bank1"); // Banked ROM +} -ADDRESS_MAP_START(psikyo_state::sngkace_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x04, 0x04) AM_WRITE(sngkace_sound_bankswitch_w) - AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END +void psikyo_state::sngkace_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x04, 0x04).w(this, FUNC(psikyo_state::sngkace_sound_bankswitch_w)); + map(0x08, 0x08).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0c, 0x0c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} /*************************************************************************** @@ -349,36 +355,40 @@ READ32_MEMBER(psikyo_state::gunbird_input_r) } } -ADDRESS_MAP_START(psikyo_state::gunbird_map) - AM_IMPORT_FROM(psikyo_map) - AM_RANGE(0xc00000, 0xc0000b) AM_READ(gunbird_input_r) - AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff) -ADDRESS_MAP_END +void psikyo_state::gunbird_map(address_map &map) +{ + psikyo_map(map); + map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::gunbird_input_r)); + map(0xc00013, 0xc00013).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} -ADDRESS_MAP_START(psikyo_state::s1945jn_map) - AM_IMPORT_FROM(psikyo_map) - AM_RANGE(0xc00000, 0xc0000b) AM_READ(gunbird_input_r) - AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000) -ADDRESS_MAP_END +void psikyo_state::s1945jn_map(address_map &map) +{ + psikyo_map(map); + map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::gunbird_input_r)); + map(0xc00011, 0xc00011).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} WRITE8_MEMBER(psikyo_state::gunbird_sound_bankswitch_w) { membank("bank1")->set_entry((data >> 4) & 0x03); } -ADDRESS_MAP_START(psikyo_state::gunbird_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0x81ff) AM_RAM // RAM - AM_RANGE(0x8200, 0xffff) AM_ROMBANK("bank1") // Banked ROM -ADDRESS_MAP_END +void psikyo_state::gunbird_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0x81ff).ram(); // RAM + map(0x8200, 0xffff).bankr("bank1"); // Banked ROM +} -ADDRESS_MAP_START(psikyo_state::gunbird_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END +void psikyo_state::gunbird_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(psikyo_state::gunbird_sound_bankswitch_w)); + map(0x04, 0x07).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x08, 0x08).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x0c, 0x0c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} /*************************************************************************** Strikers 1945 / Tengai @@ -396,21 +406,23 @@ READ32_MEMBER(psikyo_state::s1945_input_r) } } -ADDRESS_MAP_START(psikyo_state::s1945_map) - AM_IMPORT_FROM(psikyo_map) - AM_RANGE(0xc00000, 0xc0000b) AM_READ(s1945_input_r) // input ports - AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w) // protection and tile bank switching - AM_RANGE(0xc00010, 0xc00013) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(psikyo_state::s1945_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w) - AM_RANGE(0x02, 0x03) AM_WRITENOP - AM_RANGE(0x08, 0x0d) AM_DEVREADWRITE("ymf", ymf278b_device, read, write) - AM_RANGE(0x10, 0x10) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END +void psikyo_state::s1945_map(address_map &map) +{ + psikyo_map(map); + map(0xc00000, 0xc0000b).r(this, FUNC(psikyo_state::s1945_input_r)); // input ports + map(0xc00004, 0xc0000b).w(this, FUNC(psikyo_state::s1945_mcu_w)); // protection and tile bank switching + map(0xc00011, 0xc00011).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + +void psikyo_state::s1945_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(psikyo_state::gunbird_sound_bankswitch_w)); + map(0x02, 0x03).nopw(); + map(0x08, 0x0d).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write)); + map(0x10, 0x10).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x18, 0x18).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/psikyo4.cpp b/src/mame/drivers/psikyo4.cpp index 9f9e48a1887..b224907621a 100644 --- a/src/mame/drivers/psikyo4.cpp +++ b/src/mame/drivers/psikyo4.cpp @@ -321,34 +321,36 @@ WRITE32_MEMBER(psikyo4_state::io_select_w) logerror("Unk ioselect write %x mask %x\n", data, mem_mask); } -ADDRESS_MAP_START(psikyo4_state::ps4_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) - AM_RANGE(0x02000000, 0x021fffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM - AM_RANGE(0x03000000, 0x030037ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x03003fe0, 0x03003fe3) AM_READWRITE(ps4_eeprom_r,ps4_eeprom_w) - AM_RANGE(0x03003fe4, 0x03003fef) AM_RAM_WRITE(ps4_vidregs_w) AM_SHARE("vidregs") // vid regs? - AM_RANGE(0x03003fe4, 0x03003fe7) AM_READNOP // also writes to this address - might be vblank? +void psikyo4_state::ps4_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); // program ROM (1 meg) + map(0x02000000, 0x021fffff).rom().region("maincpu", 0x100000); // data ROM + map(0x03000000, 0x030037ff).ram().share("spriteram"); + map(0x03003fe0, 0x03003fe3).rw(this, FUNC(psikyo4_state::ps4_eeprom_r), FUNC(psikyo4_state::ps4_eeprom_w)); + map(0x03003fe4, 0x03003fef).ram().w(this, FUNC(psikyo4_state::ps4_vidregs_w)).share("vidregs"); // vid regs? + map(0x03003fe4, 0x03003fe7).nopr(); // also writes to this address - might be vblank? // AM_RANGE(0x03003fe4, 0x03003fe7) AM_WRITENOP // might be vblank? - AM_RANGE(0x03003ff0, 0x03003ff3) AM_WRITE(ps4_screen1_brt_w) // screen 1 brightness - AM_RANGE(0x03003ff4, 0x03003ff7) AM_WRITE(ps4_bgpen_1_dword_w) AM_SHARE("bgpen_1") // screen 1 clear colour - AM_RANGE(0x03003ff8, 0x03003ffb) AM_WRITE(ps4_screen2_brt_w) // screen 2 brightness - AM_RANGE(0x03003ffc, 0x03003fff) AM_WRITE(ps4_bgpen_2_dword_w) AM_SHARE("bgpen_2") // screen 2 clear colour - AM_RANGE(0x03004000, 0x03005fff) AM_RAM_WRITE(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_SHARE("paletteram") // palette - AM_RANGE(0x03006000, 0x03007fff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg - AM_RANGE(0x05000000, 0x05000007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff) - AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("P1_P2") - AM_RANGE(0x05800004, 0x05800007) AM_READ_PORT("P3_P4") - AM_RANGE(0x05800008, 0x0580000b) AM_WRITE(io_select_w) // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets) - - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") // main RAM (1 meg) -ADDRESS_MAP_END - -ADDRESS_MAP_START(psikyo4_state::ps4_ymf_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROMBANK("ymfbank0") - AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("ymfbank1") - AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK("ymfbank2") - AM_RANGE(0x300000, 0x3fffff) AM_ROMBANK("ymfbank3") -ADDRESS_MAP_END + map(0x03003ff0, 0x03003ff3).w(this, FUNC(psikyo4_state::ps4_screen1_brt_w)); // screen 1 brightness + map(0x03003ff4, 0x03003ff7).w(this, FUNC(psikyo4_state::ps4_bgpen_1_dword_w)).share("bgpen_1"); // screen 1 clear colour + map(0x03003ff8, 0x03003ffb).w(this, FUNC(psikyo4_state::ps4_screen2_brt_w)); // screen 2 brightness + map(0x03003ffc, 0x03003fff).w(this, FUNC(psikyo4_state::ps4_bgpen_2_dword_w)).share("bgpen_2"); // screen 2 clear colour + map(0x03004000, 0x03005fff).ram().w(this, FUNC(psikyo4_state::ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w)).share("paletteram"); // palette + map(0x03006000, 0x03007fff).bankr("gfxbank"); // data for rom tests (gfx), data is controlled by vidreg + map(0x05000000, 0x05000007).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write)); + map(0x05800000, 0x05800003).portr("P1_P2"); + map(0x05800004, 0x05800007).portr("P3_P4"); + map(0x05800008, 0x0580000b).w(this, FUNC(psikyo4_state::io_select_w)); // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets) + + map(0x06000000, 0x060fffff).ram().share("ram"); // main RAM (1 meg) +} + +void psikyo4_state::ps4_ymf_map(address_map &map) +{ + map(0x000000, 0x0fffff).bankr("ymfbank0"); + map(0x100000, 0x1fffff).bankr("ymfbank1"); + map(0x200000, 0x2fffff).bankr("ymfbank2"); + map(0x300000, 0x3fffff).bankr("ymfbank3"); +} static INPUT_PORTS_START( hotgmck ) diff --git a/src/mame/drivers/psikyosh.cpp b/src/mame/drivers/psikyosh.cpp index 3b14da362f3..71a7c886ea9 100644 --- a/src/mame/drivers/psikyosh.cpp +++ b/src/mame/drivers/psikyosh.cpp @@ -487,51 +487,53 @@ P1KEY11 29|30 P2KEY11 // ps3v1 -ADDRESS_MAP_START(psikyosh_state::ps3v1_map) +void psikyosh_state::ps3v1_map(address_map &map) +{ // rom mapping - AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) - AM_RANGE(0x02000000, 0x020fffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM + map(0x00000000, 0x000fffff).rom(); // program ROM (1 meg) + map(0x02000000, 0x020fffff).rom().region("maincpu", 0x100000); // data ROM // video chip - AM_RANGE(0x03000000, 0x03003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list) - AM_RANGE(0x03004000, 0x0300ffff) AM_RAM AM_SHARE("bgram") // video banks 7-0x1f (backgrounds and other effects) - AM_RANGE(0x03040000, 0x03044fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // palette.. - AM_RANGE(0x03050000, 0x030501ff) AM_RAM AM_SHARE("zoomram") // sprite zoom lookup table - AM_RANGE(0x0305ffdc, 0x0305ffdf) AM_DEVREAD("watchdog", watchdog_timer_device, reset32_r) AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads? - AM_RANGE(0x0305ffe0, 0x0305ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_SHARE("vidregs") // video registers - AM_RANGE(0x03060000, 0x0307ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg + map(0x03000000, 0x03003fff).ram().share("spriteram"); // video banks0-7 (sprites and sprite list) + map(0x03004000, 0x0300ffff).ram().share("bgram"); // video banks 7-0x1f (backgrounds and other effects) + map(0x03040000, 0x03044fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // palette.. + map(0x03050000, 0x030501ff).ram().share("zoomram"); // sprite zoom lookup table + map(0x0305ffdc, 0x0305ffdf).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).w(this, FUNC(psikyosh_state::psikyosh_irqctrl_w)); // also writes to this address - might be vblank reads? + map(0x0305ffe0, 0x0305ffff).ram().w(this, FUNC(psikyosh_state::psikyosh_vidregs_w)).share("vidregs"); // video registers + map(0x03060000, 0x0307ffff).bankr("gfxbank"); // data for rom tests (gfx), data is controlled by vidreg // rom mapping - AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx) (Mirrored?) + map(0x04060000, 0x0407ffff).bankr("gfxbank"); // data for rom tests (gfx) (Mirrored?) // sound chip - AM_RANGE(0x05000000, 0x05000007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff) + map(0x05000000, 0x05000007).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write)); // inputs/eeprom - AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("INPUTS") - AM_RANGE(0x05800004, 0x05800007) AM_READWRITE(psh_eeprom_r, psh_eeprom_w) + map(0x05800000, 0x05800003).portr("INPUTS"); + map(0x05800004, 0x05800007).rw(this, FUNC(psikyosh_state::psh_eeprom_r), FUNC(psikyosh_state::psh_eeprom_w)); // ram - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") // main RAM (1 meg) -ADDRESS_MAP_END + map(0x06000000, 0x060fffff).ram().share("ram"); // main RAM (1 meg) +} // ps5, ps5v2 -ADDRESS_MAP_START(psikyosh_state::ps5_map) +void psikyosh_state::ps5_map(address_map &map) +{ // rom mapping - AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) + map(0x00000000, 0x000fffff).rom(); // program ROM (1 meg) // inputs/eeprom - AM_RANGE(0x03000000, 0x03000003) AM_READ_PORT("INPUTS") - AM_RANGE(0x03000004, 0x03000007) AM_READWRITE(psh_eeprom_r, psh_eeprom_w) + map(0x03000000, 0x03000003).portr("INPUTS"); + map(0x03000004, 0x03000007).rw(this, FUNC(psikyosh_state::psh_eeprom_r), FUNC(psikyosh_state::psh_eeprom_w)); // sound chip - AM_RANGE(0x03100000, 0x03100007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff) + map(0x03100000, 0x03100007).rw("ymf", FUNC(ymf278b_device::read), FUNC(ymf278b_device::write)); // video chip - AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list) - AM_RANGE(0x04004000, 0x0400ffff) AM_RAM AM_SHARE("bgram") // video banks 7-0x1f (backgrounds and other effects) - AM_RANGE(0x04040000, 0x04044fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x04050000, 0x040501ff) AM_RAM AM_SHARE("zoomram") // sprite zoom lookup table - AM_RANGE(0x0405ffdc, 0x0405ffdf) AM_READNOP AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads? - AM_RANGE(0x0405ffe0, 0x0405ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_SHARE("vidregs") // video registers - AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg + map(0x04000000, 0x04003fff).ram().share("spriteram"); // video banks0-7 (sprites and sprite list) + map(0x04004000, 0x0400ffff).ram().share("bgram"); // video banks 7-0x1f (backgrounds and other effects) + map(0x04040000, 0x04044fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x04050000, 0x040501ff).ram().share("zoomram"); // sprite zoom lookup table + map(0x0405ffdc, 0x0405ffdf).nopr().w(this, FUNC(psikyosh_state::psikyosh_irqctrl_w)); // also writes to this address - might be vblank reads? + map(0x0405ffe0, 0x0405ffff).ram().w(this, FUNC(psikyosh_state::psikyosh_vidregs_w)).share("vidregs"); // video registers + map(0x04060000, 0x0407ffff).bankr("gfxbank"); // data for rom tests (gfx), data is controlled by vidreg // rom mapping - AM_RANGE(0x05000000, 0x0507ffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM + map(0x05000000, 0x0507ffff).rom().region("maincpu", 0x100000); // data ROM // ram - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END + map(0x06000000, 0x060fffff).ram().share("ram"); +} static INPUT_PORTS_START( common ) diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp index 5c189a427e9..5e18c8d3a56 100644 --- a/src/mame/drivers/psion.cpp +++ b/src/mame/drivers/psion.cpp @@ -249,66 +249,72 @@ READ8_MEMBER( psion1_state::switchoff_r ) return 0; } -ADDRESS_MAP_START(psion1_state::psion1_mem) - AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register") - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07fe) AM_DEVREADWRITE("hd44780", hd44780_device, control_read, control_write) - AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("hd44780", hd44780_device, data_read, data_write) - AM_RANGE(0x2800, 0x2800) AM_READ(reset_kb_counter_r) - AM_RANGE(0x2e00, 0x2e00) AM_READ(switchoff_r) - AM_RANGE(0x3000, 0x3000) AM_READ(inc_kb_counter_r) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(psion_state::psioncm_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register") - AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w) - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(psion_state::psionla_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register") - AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w) - AM_RANGE(0x0400, 0x5fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(psion_state::psionp350_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register") - AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w) - AM_RANGE(0x0400, 0x3fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("rambank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(psion_state::psionlam_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register") - AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w) - AM_RANGE(0x0400, 0x7fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(psion_state::psionlz_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w) - AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register") - AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w) - AM_RANGE(0x0400, 0x3fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("rambank") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank") - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void psion1_state::psion1_mem(address_map &map) +{ + map(0x0000, 0x001f).rw(this, FUNC(psion1_state::hd63701_int_reg_r), FUNC(psion1_state::hd63701_int_reg_w)); + map(0x0040, 0x00ff).ram().share("sys_register"); + map(0x2000, 0x2000).mirror(0x07fe).rw(m_lcdc, FUNC(hd44780_device::control_read), FUNC(hd44780_device::control_write)); + map(0x2001, 0x2001).mirror(0x07fe).rw(m_lcdc, FUNC(hd44780_device::data_read), FUNC(hd44780_device::data_write)); + map(0x2800, 0x2800).r(this, FUNC(psion1_state::reset_kb_counter_r)); + map(0x2e00, 0x2e00).r(this, FUNC(psion1_state::switchoff_r)); + map(0x3000, 0x3000).r(this, FUNC(psion1_state::inc_kb_counter_r)); + map(0x4000, 0x47ff).ram().share("ram"); + map(0xf000, 0xffff).rom(); +} + +void psion_state::psioncm_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w)); + map(0x0040, 0x00ff).ram().share("sys_register"); + map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w)); + map(0x2000, 0x3fff).ram().share("ram"); + map(0x8000, 0xffff).rom(); +} + +void psion_state::psionla_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w)); + map(0x0040, 0x00ff).ram().share("sys_register"); + map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w)); + map(0x0400, 0x5fff).ram().share("ram"); + map(0x8000, 0xffff).rom(); +} + +void psion_state::psionp350_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w)); + map(0x0040, 0x00ff).ram().share("sys_register"); + map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w)); + map(0x0400, 0x3fff).ram().share("ram"); + map(0x4000, 0x7fff).bankrw("rambank"); + map(0x8000, 0xffff).rom(); +} + +void psion_state::psionlam_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w)); + map(0x0040, 0x00ff).ram().share("sys_register"); + map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w)); + map(0x0400, 0x7fff).ram().share("ram"); + map(0x8000, 0xbfff).bankr("rombank"); + map(0xc000, 0xffff).rom(); +} + +void psion_state::psionlz_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x001f).rw(this, FUNC(psion_state::hd63701_int_reg_r), FUNC(psion_state::hd63701_int_reg_w)); + map(0x0040, 0x00ff).ram().share("sys_register"); + map(0x0100, 0x03ff).rw(this, FUNC(psion_state::io_r), FUNC(psion_state::io_w)); + map(0x0400, 0x3fff).ram().share("ram"); + map(0x4000, 0x7fff).bankrw("rambank"); + map(0x8000, 0xbfff).bankr("rombank"); + map(0xc000, 0xffff).rom(); +} /* Input ports */ INPUT_PORTS_START( psion ) diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp index 3543709f36c..51efa6cceaa 100644 --- a/src/mame/drivers/psx.cpp +++ b/src/mame/drivers/psx.cpp @@ -503,13 +503,15 @@ void psx1_state::cd_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t printf("cd_dma_write?!: addr %x, size %x\n", n_address, n_size); } -ADDRESS_MAP_START(psx1_state::psx_map) - AM_RANGE(0x1f000000, 0x1f07ffff) AM_READWRITE16(parallel_r, parallel_w, 0xffffffff) -ADDRESS_MAP_END +void psx1_state::psx_map(address_map &map) +{ + map(0x1f000000, 0x1f07ffff).rw(this, FUNC(psx1_state::parallel_r), FUNC(psx1_state::parallel_w)); +} -ADDRESS_MAP_START(psx1_state::subcpu_map) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void psx1_state::subcpu_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} MACHINE_CONFIG_START(psx1_state::psj) /* basic machine hardware */ diff --git a/src/mame/drivers/psychic5.cpp b/src/mame/drivers/psychic5.cpp index e986b246513..1318b06beaa 100644 --- a/src/mame/drivers/psychic5.cpp +++ b/src/mame/drivers/psychic5.cpp @@ -435,106 +435,114 @@ WRITE8_MEMBER(psychic5_state::bombsa_flipscreen_w) ***************************************************************************/ -ADDRESS_MAP_START(psychic5_state::psychic5_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xdfff) AM_DEVICE("vrambank", address_map_bank_device, amap8) - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf001, 0xf001) AM_READNOP AM_WRITE(psychic5_coin_counter_w) - AM_RANGE(0xf002, 0xf002) AM_READWRITE(bankselect_r, psychic5_bankselect_w) - AM_RANGE(0xf003, 0xf003) AM_READWRITE(vram_page_select_r, vram_page_select_w) - AM_RANGE(0xf004, 0xf004) AM_NOP // ??? - AM_RANGE(0xf005, 0xf005) AM_READNOP AM_WRITE(psychic5_title_screen_w) - AM_RANGE(0xf006, 0xf1ff) AM_NOP - AM_RANGE(0xf200, 0xf7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(psychic5_state::psychic5_vrambank_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x1000, 0x1fff) AM_RAM - - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1") - AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2") - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1") - AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2") - - AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control") - - AM_RANGE(0x2400, 0x25ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp") - AM_RANGE(0x2800, 0x29ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg") - AM_RANGE(0x2a00, 0x2bff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx") - - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - -ADDRESS_MAP_END - - -ADDRESS_MAP_START(psychic5_state::psychic5_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(psychic5_state::psychic5_soundport_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ym2203_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(psychic5_state::bombsa_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xcfff) AM_RAM +void psychic5_state::psychic5_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xdfff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xf000).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf001, 0xf001).nopr().w(this, FUNC(psychic5_state::psychic5_coin_counter_w)); + map(0xf002, 0xf002).rw(this, FUNC(psychic5_state::bankselect_r), FUNC(psychic5_state::psychic5_bankselect_w)); + map(0xf003, 0xf003).rw(this, FUNC(psychic5_state::vram_page_select_r), FUNC(psychic5_state::vram_page_select_w)); + map(0xf004, 0xf004).noprw(); // ??? + map(0xf005, 0xf005).nopr().w(this, FUNC(psychic5_state::psychic5_title_screen_w)); + map(0xf006, 0xf1ff).noprw(); + map(0xf200, 0xf7ff).ram().share("spriteram"); + map(0xf800, 0xffff).ram(); +} + + +void psychic5_state::psychic5_vrambank_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().w(this, FUNC(psychic5_state::bg_videoram_w)).share("bg_videoram"); + map(0x1000, 0x1fff).ram(); + + map(0x2000, 0x2000).portr("SYSTEM"); + map(0x2001, 0x2001).portr("P1"); + map(0x2002, 0x2002).portr("P2"); + map(0x2003, 0x2003).portr("DSW1"); + map(0x2004, 0x2004).portr("DSW2"); + + map(0x2308, 0x230c).ram().share("bg_control"); + + map(0x2400, 0x25ff).ram().w(this, FUNC(psychic5_state::sprite_col_w)).share("palette_ram_sp"); + map(0x2800, 0x29ff).ram().w(this, FUNC(psychic5_state::bg_col_w)).share("palette_ram_bg"); + map(0x2a00, 0x2bff).ram().w(this, FUNC(psychic5_state::tx_col_w)).share("palette_ram_tx"); + + map(0x3000, 0x37ff).ram().w(this, FUNC(psychic5_state::fg_videoram_w)).share("fg_videoram"); + +} + + +void psychic5_state::psychic5_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} + +void psychic5_state::psychic5_soundport_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write)); + map(0x80, 0x81).w("ym2", FUNC(ym2203_device::write)); +} + + +void psychic5_state::bombsa_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xcfff).ram(); /* ports look like the other games */ - AM_RANGE(0xd000, 0xd1ff) AM_RAM - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // confirmed - AM_RANGE(0xd001, 0xd001) AM_WRITE(bombsa_flipscreen_w) - AM_RANGE(0xd002, 0xd002) AM_READWRITE(bankselect_r, bombsa_bankselect_w) - AM_RANGE(0xd003, 0xd003) AM_READWRITE(vram_page_select_r, vram_page_select_w) - AM_RANGE(0xd005, 0xd005) AM_WRITE(bombsa_unknown_w) // ? - - AM_RANGE(0xd200, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM - - AM_RANGE(0xe000, 0xffff) AM_DEVICE("vrambank", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(psychic5_state::bombsa_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf000) AM_WRITEONLY // Is this a confirm of some sort? -ADDRESS_MAP_END - -ADDRESS_MAP_START(psychic5_state::bombsa_soundport_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(psychic5_state::bombsa_vrambank_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1") - AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2") - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW1") - AM_RANGE(0x2004, 0x2004) AM_READ_PORT("DSW2") - - AM_RANGE(0x2308, 0x230c) AM_RAM AM_SHARE("bg_control") - - AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(sprite_col_w) AM_SHARE("palette_ram_sp") - AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(bg_col_w) AM_SHARE("palette_ram_bg") - AM_RANGE(0x3400, 0x35ff) AM_RAM_WRITE(tx_col_w) AM_SHARE("palette_ram_tx") - - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") -ADDRESS_MAP_END + map(0xd000, 0xd1ff).ram(); + map(0xd000, 0xd000).w("soundlatch", FUNC(generic_latch_8_device::write)); // confirmed + map(0xd001, 0xd001).w(this, FUNC(psychic5_state::bombsa_flipscreen_w)); + map(0xd002, 0xd002).rw(this, FUNC(psychic5_state::bankselect_r), FUNC(psychic5_state::bombsa_bankselect_w)); + map(0xd003, 0xd003).rw(this, FUNC(psychic5_state::vram_page_select_r), FUNC(psychic5_state::vram_page_select_w)); + map(0xd005, 0xd005).w(this, FUNC(psychic5_state::bombsa_unknown_w)); // ? + + map(0xd200, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram(); + + map(0xe000, 0xffff).m(m_vrambank, FUNC(address_map_bank_device::amap8)); +} + +void psychic5_state::bombsa_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf000).writeonly(); // Is this a confirm of some sort? +} + +void psychic5_state::bombsa_soundport_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x81).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} + +void psychic5_state::bombsa_vrambank_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().w(this, FUNC(psychic5_state::bg_videoram_w)).share("bg_videoram"); + + map(0x2000, 0x2000).portr("SYSTEM"); + map(0x2001, 0x2001).portr("P1"); + map(0x2002, 0x2002).portr("P2"); + map(0x2003, 0x2003).portr("DSW1"); + map(0x2004, 0x2004).portr("DSW2"); + + map(0x2308, 0x230c).ram().share("bg_control"); + + map(0x3000, 0x31ff).ram().w(this, FUNC(psychic5_state::sprite_col_w)).share("palette_ram_sp"); + map(0x3200, 0x33ff).ram().w(this, FUNC(psychic5_state::bg_col_w)).share("palette_ram_bg"); + map(0x3400, 0x35ff).ram().w(this, FUNC(psychic5_state::tx_col_w)).share("palette_ram_tx"); + + map(0x2800, 0x2fff).ram().w(this, FUNC(psychic5_state::fg_videoram_w)).share("fg_videoram"); +} static INPUT_PORTS_START( psychic5 ) diff --git a/src/mame/drivers/pt68k4.cpp b/src/mame/drivers/pt68k4.cpp index bf2a16cd379..0b16a985291 100644 --- a/src/mame/drivers/pt68k4.cpp +++ b/src/mame/drivers/pt68k4.cpp @@ -250,34 +250,36 @@ WRITE8_MEMBER(pt68k4_state::fdc_select_w) } } -ADDRESS_MAP_START(pt68k4_state::pt68k2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("rambase") // 1MB RAM - AM_RANGE(0xf80000, 0xf8ffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, mem_r, mem_w, 0x00ff) - AM_RANGE(0xfa0000, 0xfbffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, io_r, io_w, 0x00ff) - AM_RANGE(0xfe0000, 0xfe001f) AM_DEVREADWRITE8(DUART1_TAG, mc68681_device, read, write, 0x00ff) - AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff) - AM_RANGE(0xfe0080, 0xfe00bf) AM_READ8(pia_stub_r, 0x00ff) - AM_RANGE(0xfe00c0, 0xfe00ff) AM_WRITE8(fdc_select_w, 0x00ff) - AM_RANGE(0xfe0100, 0xfe013f) AM_DEVREADWRITE8(WDFDC_TAG, wd1772_device, read, write, 0x00ff) - AM_RANGE(0xfe01c0, 0xfe01c3) AM_READWRITE8(keyboard_r, keyboard_w, 0x00ff) - AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE8(hiram_r, hiram_w, 0xff00) - AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pt68k4_state::pt68k4_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("rambase") // 1MB RAM (OS9 needs more) - AM_RANGE(0xf80000, 0xf8ffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xc00000, 0xdfffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, mem_r, mem_w, 0x00ff) - AM_RANGE(0xfa0000, 0xfbffff) AM_DEVREADWRITE8(ISABUS_TAG, isa8_device, io_r, io_w, 0x00ff) - AM_RANGE(0xfe0000, 0xfe001f) AM_DEVREADWRITE8(DUART1_TAG, mc68681_device, read, write, 0x00ff) - AM_RANGE(0xfe0040, 0xfe005f) AM_DEVREADWRITE8(DUART2_TAG, mc68681_device, read, write, 0x00ff) - AM_RANGE(0xfe01c0, 0xfe01c3) AM_READWRITE8(keyboard_r, keyboard_w, 0x00ff) - AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE8(hiram_r, hiram_w, 0xff00) - AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0x00ff) -ADDRESS_MAP_END +void pt68k4_state::pt68k2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().share("rambase"); // 1MB RAM + map(0xf80000, 0xf8ffff).rom().region("roms", 0); + map(0xc00000, 0xdfffff).rw(m_isa, FUNC(isa8_device::mem_r), FUNC(isa8_device::mem_w)).umask16(0x00ff); + map(0xfa0000, 0xfbffff).rw(m_isa, FUNC(isa8_device::io_r), FUNC(isa8_device::io_w)).umask16(0x00ff); + map(0xfe0000, 0xfe001f).rw(m_duart1, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xfe0040, 0xfe005f).rw(m_duart2, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xfe0080, 0xfe00bf).r(this, FUNC(pt68k4_state::pia_stub_r)).umask16(0x00ff); + map(0xfe00c0, 0xfe00ff).w(this, FUNC(pt68k4_state::fdc_select_w)).umask16(0x00ff); + map(0xfe0100, 0xfe013f).rw(m_wdfdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)).umask16(0x00ff); + map(0xfe01c0, 0xfe01c3).rw(this, FUNC(pt68k4_state::keyboard_r), FUNC(pt68k4_state::keyboard_w)).umask16(0x00ff); + map(0xff0000, 0xff0fff).rw(this, FUNC(pt68k4_state::hiram_r), FUNC(pt68k4_state::hiram_w)).umask16(0xff00); + map(0xff0000, 0xff0fff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0x00ff); +} + +void pt68k4_state::pt68k4_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().share("rambase"); // 1MB RAM (OS9 needs more) + map(0xf80000, 0xf8ffff).rom().region("roms", 0); + map(0xc00000, 0xdfffff).rw(m_isa, FUNC(isa8_device::mem_r), FUNC(isa8_device::mem_w)).umask16(0x00ff); + map(0xfa0000, 0xfbffff).rw(m_isa, FUNC(isa8_device::io_r), FUNC(isa8_device::io_w)).umask16(0x00ff); + map(0xfe0000, 0xfe001f).rw(m_duart1, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xfe0040, 0xfe005f).rw(m_duart2, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xfe01c0, 0xfe01c3).rw(this, FUNC(pt68k4_state::keyboard_r), FUNC(pt68k4_state::keyboard_w)).umask16(0x00ff); + map(0xff0000, 0xff0fff).rw(this, FUNC(pt68k4_state::hiram_r), FUNC(pt68k4_state::hiram_w)).umask16(0xff00); + map(0xff0000, 0xff0fff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0x00ff); +} /* Input ports */ static INPUT_PORTS_START( pt68k4 ) diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp index 848324936f9..2ca57ea6248 100644 --- a/src/mame/drivers/ptcsol.cpp +++ b/src/mame/drivers/ptcsol.cpp @@ -424,26 +424,28 @@ WRITE8_MEMBER( sol20_state::sol20_fe_w ) m_sol20_fe = data; } -ADDRESS_MAP_START(sol20_state::sol20_mem) - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") - AM_RANGE(0x0800, 0xbfff) AM_RAM // optional s100 ram - AM_RANGE(0xc000, 0xc7ff) AM_ROM - AM_RANGE(0xc800, 0xcbff) AM_RAM // system ram - AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xd000, 0xffff) AM_RAM // optional s100 ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(sol20_state::sol20_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf8, 0xf8) AM_READWRITE(sol20_f8_r, sol20_f8_w) - AM_RANGE(0xf9, 0xf9) AM_DEVREADWRITE("uart", ay51013_device, receive, transmit) - AM_RANGE(0xfa, 0xfa) AM_READWRITE(sol20_fa_r, sol20_fa_w) - AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE("uart_s", ay51013_device, receive, transmit) - AM_RANGE(0xfc, 0xfc) AM_READ(sol20_fc_r) - AM_RANGE(0xfd, 0xfd) AM_READWRITE(sol20_fd_r, sol20_fd_w) - AM_RANGE(0xfe, 0xfe) AM_WRITE(sol20_fe_w) - AM_RANGE(0xff, 0xff) AM_READ_PORT("S2") +void sol20_state::sol20_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0xbfff).ram(); // optional s100 ram + map(0xc000, 0xc7ff).rom(); + map(0xc800, 0xcbff).ram(); // system ram + map(0xcc00, 0xcfff).ram().share("videoram"); + map(0xd000, 0xffff).ram(); // optional s100 ram +} + +void sol20_state::sol20_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xf8, 0xf8).rw(this, FUNC(sol20_state::sol20_f8_r), FUNC(sol20_state::sol20_f8_w)); + map(0xf9, 0xf9).rw(m_uart, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit)); + map(0xfa, 0xfa).rw(this, FUNC(sol20_state::sol20_fa_r), FUNC(sol20_state::sol20_fa_w)); + map(0xfb, 0xfb).rw(m_uart_s, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit)); + map(0xfc, 0xfc).r(this, FUNC(sol20_state::sol20_fc_r)); + map(0xfd, 0xfd).rw(this, FUNC(sol20_state::sol20_fd_r), FUNC(sol20_state::sol20_fd_w)); + map(0xfe, 0xfe).w(this, FUNC(sol20_state::sol20_fe_w)); + map(0xff, 0xff).portr("S2"); /* AM_RANGE(0xf8, 0xf8) serial status in (bit 6=data av, bit 7=tmbe) AM_RANGE(0xf9, 0xf9) serial data in, out AM_RANGE(0xfa, 0xfa) general status in (bit 0=keyb data av, bit 1=parin data av, bit 2=parout ready) @@ -452,7 +454,7 @@ ADDRESS_MAP_START(sol20_state::sol20_io) AM_RANGE(0xfd, 0xfd) parallel data in, out AM_RANGE(0xfe, 0xfe) scroll register AM_RANGE(0xff, 0xff) sense switches */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( sol20 ) diff --git a/src/mame/drivers/pturn.cpp b/src/mame/drivers/pturn.cpp index b5c5c6bfa6b..8f6208ff89d 100644 --- a/src/mame/drivers/pturn.cpp +++ b/src/mame/drivers/pturn.cpp @@ -343,41 +343,43 @@ READ8_MEMBER(pturn_state::custom_r) } -ADDRESS_MAP_START(pturn_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_WRITENOP AM_READ(custom_r) +void pturn_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).nopw().r(this, FUNC(pturn_state::custom_r)); - AM_RANGE(0xdfe0, 0xdfe0) AM_NOP + map(0xdfe0, 0xdfe0).noprw(); - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe400) AM_WRITE(fgpalette_w) - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + map(0xe000, 0xe3ff).ram().w(this, FUNC(pturn_state::videoram_w)).share("videoram"); + map(0xe400, 0xe400).w(this, FUNC(pturn_state::fgpalette_w)); + map(0xe800, 0xe800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram") + map(0xf000, 0xf0ff).ram().share("spriteram"); - AM_RANGE(0xf400, 0xf400) AM_WRITE(bg_scrollx_w) + map(0xf400, 0xf400).w(this, FUNC(pturn_state::bg_scrollx_w)); - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_WRITENOP - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w) - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf803, 0xf803) AM_WRITE(bg_scrolly_w) - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW2") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW1") - AM_RANGE(0xf806, 0xf806) AM_READNOP /* Protection related, ((val&3)==2) -> jump to 0 */ + map(0xf800, 0xf800).portr("P1").nopw(); + map(0xf801, 0xf801).portr("P2").w(this, FUNC(pturn_state::bgcolor_w)); + map(0xf802, 0xf802).portr("SYSTEM"); + map(0xf803, 0xf803).w(this, FUNC(pturn_state::bg_scrolly_w)); + map(0xf804, 0xf804).portr("DSW2"); + map(0xf805, 0xf805).portr("DSW1"); + map(0xf806, 0xf806).nopr(); /* Protection related, ((val&3)==2) -> jump to 0 */ - AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) + map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0)); -ADDRESS_MAP_END +} -ADDRESS_MAP_START(pturn_state::sub_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(nmi_sub_enable_w) - AM_RANGE(0x4000, 0x4000) AM_RAM - AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END +void pturn_state::sub_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(pturn_state::nmi_sub_enable_w)); + map(0x4000, 0x4000).ram(); + map(0x5000, 0x5001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).w("ay2", FUNC(ay8910_device::address_data_w)); +} static const gfx_layout charlayout = { diff --git a/src/mame/drivers/puckpkmn.cpp b/src/mame/drivers/puckpkmn.cpp index 78a400fc0f3..9c1233627bc 100644 --- a/src/mame/drivers/puckpkmn.cpp +++ b/src/mame/drivers/puckpkmn.cpp @@ -213,49 +213,51 @@ static INPUT_PORTS_START( jzth ) INPUT_PORTS_END -ADDRESS_MAP_START(md_boot_state::puckpkmn_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM /* Main 68k Program Roms */ - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2") - AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK") - AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1") - AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2") - AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff) - AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) - - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) +void md_boot_state::puckpkmn_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); /* Main 68k Program Roms */ + map(0x700010, 0x700011).portr("P2"); + map(0x700012, 0x700013).portr("P1"); + map(0x700014, 0x700015).portr("UNK"); + map(0x700016, 0x700017).portr("DSW1"); + map(0x700018, 0x700019).portr("DSW2"); + map(0x700023, 0x700023).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa04000, 0xa04003).rw(this, FUNC(md_boot_state::megadriv_68k_YM2612_read), FUNC(md_boot_state::megadriv_68k_YM2612_write)); + map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); + + map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000); /* Unknown reads/writes: */ - AM_RANGE(0xa00000, 0xa00551) AM_WRITENOP /* ? */ + map(0xa00000, 0xa00551).nopw(); /* ? */ // AM_RANGE(0xa10000, 0xa10001) AM_READNOP /* ? once */ - AM_RANGE(0xa10002, 0xa10005) AM_NOP /* ? alternative way of reading inputs ? */ - AM_RANGE(0xa11100, 0xa11101) AM_NOP /* ? */ + map(0xa10002, 0xa10005).noprw(); /* ? alternative way of reading inputs ? */ + map(0xa11100, 0xa11101).noprw(); /* ? */ // AM_RANGE(0xa10008, 0xa1000d) AM_WRITENOP /* ? once */ // AM_RANGE(0xa14000, 0xa14003) AM_WRITENOP /* ? once */ - AM_RANGE(0xa11200, 0xa11201) AM_WRITENOP /* ? */ -ADDRESS_MAP_END + map(0xa11200, 0xa11201).nopw(); /* ? */ +} -ADDRESS_MAP_START(md_boot_state::jzth_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2") - AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK") - AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1") - AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2") - AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8( megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff) - AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) +void md_boot_state::jzth_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x700010, 0x700011).portr("P2"); + map(0x700012, 0x700013).portr("P1"); + map(0x700014, 0x700015).portr("UNK"); + map(0x700016, 0x700017).portr("DSW1"); + map(0x700018, 0x700019).portr("DSW2"); + map(0x700023, 0x700023).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa04000, 0xa04003).rw(this, FUNC(md_boot_state::megadriv_68k_YM2612_read), FUNC(md_boot_state::megadriv_68k_YM2612_write)); + map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) + map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000); - AM_RANGE(0xa00000, 0xa00551) AM_NOP + map(0xa00000, 0xa00551).noprw(); - AM_RANGE(0xA11100, 0xA11101) AM_NOP + map(0xA11100, 0xA11101).noprw(); - AM_RANGE(0x710000, 0x710001) AM_READWRITE(bl_710000_r,bl_710000_w) // protection, will erase the VDP address causing writes to 0 unless this returns 0xe -ADDRESS_MAP_END + map(0x710000, 0x710001).rw(this, FUNC(md_boot_state::bl_710000_r), FUNC(md_boot_state::bl_710000_w)); // protection, will erase the VDP address causing writes to 0 unless this returns 0xe +} READ16_MEMBER(md_boot_state::puckpkmna_70001c_r) { @@ -269,11 +271,12 @@ READ16_MEMBER(md_boot_state::puckpkmna_4b2476_r) return 0x3400; } -ADDRESS_MAP_START(md_boot_state::puckpkmna_map) - AM_IMPORT_FROM( puckpkmn_map ) - AM_RANGE(0x4b2476, 0x4b2477) AM_READ(puckpkmna_4b2476_r) - AM_RANGE(0x70001c, 0x70001d) AM_READ(puckpkmna_70001c_r) -ADDRESS_MAP_END +void md_boot_state::puckpkmna_map(address_map &map) +{ + puckpkmn_map(map); + map(0x4b2476, 0x4b2477).r(this, FUNC(md_boot_state::puckpkmna_4b2476_r)); + map(0x70001c, 0x70001d).r(this, FUNC(md_boot_state::puckpkmna_70001c_r)); +} MACHINE_CONFIG_START(md_boot_state::puckpkmn) md_ntsc(config); diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp index 064bdd0afa2..e4c9fe0970a 100644 --- a/src/mame/drivers/pulsar.cpp +++ b/src/mame/drivers/pulsar.cpp @@ -81,21 +81,23 @@ private: required_device<msm5832_device> m_rtc; }; -ADDRESS_MAP_START(pulsar_state::pulsar_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x0800, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pulsar_state::pulsar_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x0c) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x0c) AM_DEVREADWRITE("fdc", fd1797_device, read, write) - AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xf0, 0xff) AM_WRITE(baud_w) -ADDRESS_MAP_END +void pulsar_state::pulsar_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0"); + map(0x0800, 0xf7ff).ram(); + map(0xf800, 0xffff).bankr("bankr1").bankw("bankw1"); +} + +void pulsar_state::pulsar_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xc0, 0xc3).mirror(0x0c).rw("dart", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0xd0, 0xd3).mirror(0x0c).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)); + map(0xe0, 0xe3).mirror(0x0c).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf0, 0xff).w(this, FUNC(pulsar_state::baud_w)); +} WRITE8_MEMBER( pulsar_state::baud_w ) diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp index 991a45aeb60..e6a11870549 100644 --- a/src/mame/drivers/punchout.cpp +++ b/src/mame/drivers/punchout.cpp @@ -140,52 +140,56 @@ WRITE_LINE_MEMBER(punchout_state::nmi_mask_w) m_nmi_mask = state; } -ADDRESS_MAP_START(punchout_state::punchout_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(punchout_bg_top_videoram_w) AM_SHARE("bg_top_videoram") - AM_RANGE(0xdff0, 0xdff7) AM_SHARE("spr1_ctrlram") - AM_RANGE(0xdff8, 0xdffc) AM_SHARE("spr2_ctrlram") - AM_RANGE(0xdffd, 0xdffd) AM_SHARE("palettebank") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(punchout_spr1_videoram_w) AM_SHARE("spr1_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(punchout_spr2_videoram_w) AM_SHARE("spr2_videoram") - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(punchout_bg_bot_videoram_w) AM_SHARE("bg_bot_videoram") // also contains scroll RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(punchout_state::armwrest_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(armwrest_fg_videoram_w) AM_SHARE("armwrest_fgram") - AM_RANGE(0xdff0, 0xdff7) AM_SHARE("spr1_ctrlram") - AM_RANGE(0xdff8, 0xdffc) AM_SHARE("spr2_ctrlram") - AM_RANGE(0xdffd, 0xdffd) AM_SHARE("palettebank") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(punchout_spr1_videoram_w) AM_SHARE("spr1_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(punchout_spr2_videoram_w) AM_SHARE("spr2_videoram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(punchout_bg_bot_videoram_w) AM_SHARE("bg_bot_videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(punchout_bg_top_videoram_w) AM_SHARE("bg_top_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(punchout_state::punchout_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x00, 0x01) AM_WRITENOP // the 2A03 #1 is not present - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("vlm", vlm5030_device, data_w) - AM_RANGE(0x05, 0x07) AM_WRITENOP // spunchout protection - AM_RANGE(0x08, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(punchout_state::punchout_vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void punchout_state::punchout_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram().share("nvram"); + map(0xd000, 0xd7ff).ram(); + map(0xd800, 0xdfff).ram().w(this, FUNC(punchout_state::punchout_bg_top_videoram_w)).share("bg_top_videoram"); + map(0xdff0, 0xdff7).share("spr1_ctrlram"); + map(0xdff8, 0xdffc).share("spr2_ctrlram"); + map(0xdffd, 0xdffd).share("palettebank"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(punchout_state::punchout_spr1_videoram_w)).share("spr1_videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(punchout_state::punchout_spr2_videoram_w)).share("spr2_videoram"); + map(0xf000, 0xffff).ram().w(this, FUNC(punchout_state::punchout_bg_bot_videoram_w)).share("bg_bot_videoram"); // also contains scroll RAM +} + + +void punchout_state::armwrest_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram().share("nvram"); + map(0xd000, 0xd7ff).ram(); + map(0xd800, 0xdfff).ram().w(this, FUNC(punchout_state::armwrest_fg_videoram_w)).share("armwrest_fgram"); + map(0xdff0, 0xdff7).share("spr1_ctrlram"); + map(0xdff8, 0xdffc).share("spr2_ctrlram"); + map(0xdffd, 0xdffd).share("palettebank"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(punchout_state::punchout_spr1_videoram_w)).share("spr1_videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(punchout_state::punchout_spr2_videoram_w)).share("spr2_videoram"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(punchout_state::punchout_bg_bot_videoram_w)).share("bg_bot_videoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(punchout_state::punchout_bg_top_videoram_w)).share("bg_top_videoram"); +} + + +void punchout_state::punchout_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x00, 0x01).nopw(); // the 2A03 #1 is not present + map(0x02, 0x02).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x03, 0x03).portr("DSW1").w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x04, 0x04).w(m_vlm, FUNC(vlm5030_device::data_w)); + map(0x05, 0x07).nopw(); // spunchout protection + map(0x08, 0x0f).w("mainlatch", FUNC(ls259_device::write_d0)); +} + + +void punchout_state::punchout_vlm_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x3fff).rom(); +} // Super Punch-Out!! comes with an extra security PCB that plugs into the Z80 socket @@ -235,21 +239,23 @@ WRITE8_MEMBER(punchout_state::spunchout_rp5h01_clock_w) m_rp5h01->test_w(data & 1); } -ADDRESS_MAP_START(punchout_state::spnchout_io_map) - AM_IMPORT_FROM( punchout_io_map ) - AM_RANGE(0x05, 0x05) AM_MIRROR(0xf0) AM_WRITE(spunchout_rp5h01_reset_w) - AM_RANGE(0x06, 0x06) AM_MIRROR(0xf0) AM_WRITE(spunchout_rp5h01_clock_w) - AM_RANGE(0x07, 0x07) AM_SELECT(0xf0) AM_READWRITE(spunchout_exp_r, spunchout_exp_w) // protection ports -ADDRESS_MAP_END +void punchout_state::spnchout_io_map(address_map &map) +{ + punchout_io_map(map); + map(0x05, 0x05).mirror(0xf0).w(this, FUNC(punchout_state::spunchout_rp5h01_reset_w)); + map(0x06, 0x06).mirror(0xf0).w(this, FUNC(punchout_state::spunchout_rp5h01_clock_w)); + map(0x07, 0x07).select(0xf0).rw(this, FUNC(punchout_state::spunchout_exp_r), FUNC(punchout_state::spunchout_exp_w)); // protection ports +} // 2A03 (sound) -ADDRESS_MAP_START(punchout_state::punchout_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x4016, 0x4016) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4017, 0x4017) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void punchout_state::punchout_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x4016, 0x4016).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x4017, 0x4017).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xffff).rom(); +} diff --git a/src/mame/drivers/pv1000.cpp b/src/mame/drivers/pv1000.cpp index 83557663c86..989c9672b54 100644 --- a/src/mame/drivers/pv1000.cpp +++ b/src/mame/drivers/pv1000.cpp @@ -179,17 +179,19 @@ public: }; -ADDRESS_MAP_START(pv1000_state::pv1000) +void pv1000_state::pv1000(address_map &map) +{ //AM_RANGE(0x0000, 0x7fff) // mapped by the cartslot - AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(gfxram_w) AM_REGION("gfxram", 0) -ADDRESS_MAP_END + map(0xb800, 0xbbff).ram().share("videoram"); + map(0xbc00, 0xbfff).ram().w(this, FUNC(pv1000_state::gfxram_w)).region("gfxram", 0); +} -ADDRESS_MAP_START(pv1000_state::pv1000_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf8, 0xff) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void pv1000_state::pv1000_io(address_map &map) +{ + map.global_mask(0xff); + map(0xf8, 0xff).rw(this, FUNC(pv1000_state::io_r), FUNC(pv1000_state::io_w)); +} WRITE8_MEMBER( pv1000_state::gfxram_w ) diff --git a/src/mame/drivers/pv2000.cpp b/src/mame/drivers/pv2000.cpp index ceec19c2b83..9f93b991382 100644 --- a/src/mame/drivers/pv2000.cpp +++ b/src/mame/drivers/pv2000.cpp @@ -178,34 +178,36 @@ WRITE8_MEMBER( pv2000_state::cass_out ) /* Memory Maps */ -ADDRESS_MAP_START(pv2000_state::pv2000_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM +void pv2000_state::pv2000_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) + map(0x4000, 0x4000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0x4001, 0x4001).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); - AM_RANGE(0x7000, 0x7fff) AM_RAM + map(0x7000, 0x7fff).ram(); //AM_RANGE(0x8000, 0xbfff) ext ram? //AM_RANGE(0xc000, 0xffff) // mapped by the cartslot -ADDRESS_MAP_END +} -ADDRESS_MAP_START(pv2000_state::pv2000_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void pv2000_state::pv2000_io_map(address_map &map) +{ + map.global_mask(0xff); //theres also printer and tape I/O (TODO) - AM_RANGE(0x00, 0x00) AM_WRITE(cass_conf_w) + map(0x00, 0x00).w(this, FUNC(pv2000_state::cass_conf_w)); //keyboard/joystick - AM_RANGE(0x10, 0x10) AM_READ(keys_hi_r) - AM_RANGE(0x20, 0x20) AM_READWRITE(keys_lo_r, keys_w) + map(0x10, 0x10).r(this, FUNC(pv2000_state::keys_hi_r)); + map(0x20, 0x20).rw(this, FUNC(pv2000_state::keys_lo_r), FUNC(pv2000_state::keys_w)); //sn76489a - AM_RANGE(0x40, 0x40) AM_READ(keys_mod_r) AM_DEVWRITE("sn76489a", sn76489a_device, write) + map(0x40, 0x40).r(this, FUNC(pv2000_state::keys_mod_r)).w("sn76489a", FUNC(sn76489a_device::write)); /* Cassette input. Gets hit a lot after a GLOAD command */ - AM_RANGE(0x60, 0x60) AM_READWRITE(cass_in,cass_out) -ADDRESS_MAP_END + map(0x60, 0x60).rw(this, FUNC(pv2000_state::cass_in), FUNC(pv2000_state::cass_out)); +} static INPUT_PORTS_START( pv2000 ) diff --git a/src/mame/drivers/pv9234.cpp b/src/mame/drivers/pv9234.cpp index dbd03d117c1..91072b0e063 100644 --- a/src/mame/drivers/pv9234.cpp +++ b/src/mame/drivers/pv9234.cpp @@ -105,23 +105,24 @@ WRITE32_MEMBER( pv9234_state::debug2_w ) logerror("debug2=%02x\n",data); // ignore the huge amount of zeroes here } -ADDRESS_MAP_START(pv9234_state::pv9234_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_REGION("maincpu",0) //FLASH ROM! +void pv9234_state::pv9234_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().region("maincpu", 0); //FLASH ROM! // AM_RANGE(0x00000000, 0x00000033) AM_WRITE something // AM_RANGE(0x00000044, 0x00000047) AM_WRITE something // AM_RANGE(0x00000060, 0x0000006b) AM_WRITE something // AM_RANGE(0x00007000, 0x00007003) AM_WRITE something // AM_RANGE(0x00008000, 0x00008003) AM_WRITE something - AM_RANGE(0x00008014, 0x00008017) AM_WRITE(debug1_w) + map(0x00008014, 0x00008017).w(this, FUNC(pv9234_state::debug1_w)); // AM_RANGE(0x00008020, 0x00008027) AM_WRITE something - AM_RANGE(0x000080c0, 0x000080c3) AM_WRITE(debug2_w) - AM_RANGE(0x000080cc, 0x000080cf) AM_WRITE(debug_w) + map(0x000080c0, 0x000080c3).w(this, FUNC(pv9234_state::debug2_w)); + map(0x000080cc, 0x000080cf).w(this, FUNC(pv9234_state::debug_w)); // AM_RANGE(0x000080d0, 0x000080d3) AM_WRITE something - AM_RANGE(0x0003e000, 0x0003efff) AM_RAM AM_SHARE("p_ram") - AM_RANGE(0x00080000, 0x00087fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("share1")//mirror is a guess, writes a prg at 0xc0200 then it jumps at b0200 (!) - AM_RANGE(0xe0000000, 0xe0007fff) AM_MIRROR(0x0fff8000) AM_RAM AM_SHARE("share1") - AM_RANGE(0xffffff00, 0xffffffff) AM_RAM //i/o? stack ram? -ADDRESS_MAP_END + map(0x0003e000, 0x0003efff).ram().share("p_ram"); + map(0x00080000, 0x00087fff).mirror(0x78000).ram().share("share1");//mirror is a guess, writes a prg at 0xc0200 then it jumps at b0200 (!) + map(0xe0000000, 0xe0007fff).mirror(0x0fff8000).ram().share("share1"); + map(0xffffff00, 0xffffffff).ram(); //i/o? stack ram? +} /* Input ports */ static INPUT_PORTS_START( pv9234 ) diff --git a/src/mame/drivers/pve500.cpp b/src/mame/drivers/pve500.cpp index 95134119778..cec4828a444 100644 --- a/src/mame/drivers/pve500.cpp +++ b/src/mame/drivers/pve500.cpp @@ -133,25 +133,29 @@ static const z80_daisy_config maincpu_daisy_chain[] = }; -ADDRESS_MAP_START(pve500_state::maincpu_io) - AM_RANGE(0x00, 0x03) AM_MIRROR(0xff00) AM_DEVREADWRITE("external_sio", z80sio0_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x08, 0x0B) AM_MIRROR(0xff00) AM_DEVREADWRITE("external_ctc", z80ctc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pve500_state::maincpu_prg) - AM_RANGE(0x0000, 0xbfff) AM_ROM // ICB7: 48kbytes EPROM - AM_RANGE(0xc000, 0xdfff) AM_RAM // ICD6: 8kbytes of RAM - AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_DEVREADWRITE("mb8421", mb8421_device, left_r, left_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pve500_state::subcpu_io) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pve500_state::subcpu_prg) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ICG5: 32kbytes EPROM - AM_RANGE(0x8000, 0x8007) AM_MIRROR(0x3ff8) AM_DEVREADWRITE("cxdio", cxd1095_device, read, write) - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w) -ADDRESS_MAP_END +void pve500_state::maincpu_io(address_map &map) +{ + map(0x00, 0x03).mirror(0xff00).rw("external_sio", FUNC(z80sio0_device::cd_ba_r), FUNC(z80sio0_device::cd_ba_w)); + map(0x08, 0x0B).mirror(0xff00).rw("external_ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} + +void pve500_state::maincpu_prg(address_map &map) +{ + map(0x0000, 0xbfff).rom(); // ICB7: 48kbytes EPROM + map(0xc000, 0xdfff).ram(); // ICD6: 8kbytes of RAM + map(0xe000, 0xe7ff).mirror(0x1800).rw("mb8421", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); +} + +void pve500_state::subcpu_io(address_map &map) +{ +} + +void pve500_state::subcpu_prg(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ICG5: 32kbytes EPROM + map(0x8000, 0x8007).mirror(0x3ff8).rw(m_cxdio, FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)); + map(0xc000, 0xc7ff).mirror(0x3800).rw("mb8421", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)); +} DRIVER_INIT_MEMBER( pve500_state, pve500 ) { diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp index 2599066f130..b7b489bfed5 100644 --- a/src/mame/drivers/pwrview.cpp +++ b/src/mame/drivers/pwrview.cpp @@ -337,61 +337,65 @@ READ8_MEMBER(pwrview_state::pitclock_r) return 0; } -ADDRESS_MAP_START(pwrview_state::bios_bank) - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0x00000, 0x07fff) AM_WRITE(nmimem_w) - - AM_RANGE(0x08000, 0x0ffff) AM_WRITE(nmimem_w) - AM_RANGE(0x0be00, 0x0be7f) AM_RAMBANK("vram1") - AM_RANGE(0x0befe, 0x0beff) AM_READWRITE(vram1_r, vram1_w); - AM_RANGE(0x0bf00, 0x0bf7f) AM_RAMBANK("vram2") - AM_RANGE(0x0bffe, 0x0bfff) AM_READWRITE(vram2_r, vram2_w); - AM_RANGE(0x0c000, 0x0ffff) AM_ROM AM_REGION("bios", 0x4000) - - AM_RANGE(0x10000, 0x17fff) AM_RAM - - AM_RANGE(0x18000, 0x1ffff) AM_WRITE(nmimem_w) - - AM_RANGE(0x1be00, 0x1be7f) AM_RAMBANK("vram1") - AM_RANGE(0x1befe, 0x1beff) AM_READWRITE(vram1_r, vram1_w); - AM_RANGE(0x1bf00, 0x1bf7f) AM_RAMBANK("vram2") - AM_RANGE(0x1bffe, 0x1bfff) AM_READWRITE(vram2_r, vram2_w); - AM_RANGE(0x1c000, 0x1ffff) AM_ROM AM_REGION("bios", 0x4000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pwrview_state::pwrview_map) - AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x00000, 0x003ff) AM_READWRITE(bank0_r, bank0_w) - AM_RANGE(0xf8000, 0xfffff) AM_DEVICE("bios_bank", address_map_bank_device, amap16) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pwrview_state::pwrview_fetch_map) - AM_RANGE(0x00000, 0xf7fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x00000, 0x003ff) AM_READ(bank0_r) - AM_RANGE(0xf8000, 0xfffff) AM_READ(fbios_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pwrview_state::pwrview_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmiio_r, nmiio_w) - AM_RANGE(0xc000, 0xc001) AM_READWRITE8(unk1_r, unk1_w, 0xff00) - AM_RANGE(0xc002, 0xc005) AM_READWRITE8(led_r, led_w, 0xff00) - AM_RANGE(0xc006, 0xc007) AM_READ8(rotary_r, 0xff00) - AM_RANGE(0xc008, 0xc009) AM_READWRITE8(unk2_r, unk2_w, 0xff00) - AM_RANGE(0xc00a, 0xc00b) AM_READ8(err_r, 0xff00) - AM_RANGE(0xc00c, 0xc00d) AM_RAM - AM_RANGE(0xc080, 0xc081) AM_READWRITE8(unk4_r, unk4_w, 0x00ff) - AM_RANGE(0xc088, 0xc089) AM_DEVWRITE8("crtc", hd6845_device, address_w, 0x00ff) - AM_RANGE(0xc08a, 0xc08b) AM_DEVREADWRITE8("crtc", hd6845_device, register_r, register_w, 0x00ff) - AM_RANGE(0xc280, 0xc287) AM_READWRITE8(unk3_r, unk3_w, 0x00ff) - AM_RANGE(0xc288, 0xc28f) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff) - AM_RANGE(0xc2a0, 0xc2a7) AM_DEVREADWRITE8("sio", z80sio2_device, cd_ba_r, cd_ba_w, 0x00ff) - AM_RANGE(0xc2c0, 0xc2c1) AM_DEVREADWRITE8("uart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xc2c2, 0xc2c3) AM_DEVREADWRITE8("uart", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xc2e0, 0xc2e3) AM_DEVICE8("fdc", upd765a_device, map, 0x00ff) - AM_RANGE(0xc2e4, 0xc2e5) AM_RAM - AM_RANGE(0xc2e6, 0xc2e7) AM_READ8(pitclock_r, 0x00ff) -ADDRESS_MAP_END +void pwrview_state::bios_bank(address_map &map) +{ + map(0x00000, 0x07fff).rom().region("bios", 0); + map(0x00000, 0x07fff).w(this, FUNC(pwrview_state::nmimem_w)); + + map(0x08000, 0x0ffff).w(this, FUNC(pwrview_state::nmimem_w)); + map(0x0be00, 0x0be7f).bankrw("vram1"); + map(0x0befe, 0x0beff).rw(this, FUNC(pwrview_state::vram1_r), FUNC(pwrview_state::vram1_w)); + map(0x0bf00, 0x0bf7f).bankrw("vram2"); + map(0x0bffe, 0x0bfff).rw(this, FUNC(pwrview_state::vram2_r), FUNC(pwrview_state::vram2_w)); + map(0x0c000, 0x0ffff).rom().region("bios", 0x4000); + + map(0x10000, 0x17fff).ram(); + + map(0x18000, 0x1ffff).w(this, FUNC(pwrview_state::nmimem_w)); + + map(0x1be00, 0x1be7f).bankrw("vram1"); + map(0x1befe, 0x1beff).rw(this, FUNC(pwrview_state::vram1_r), FUNC(pwrview_state::vram1_w)); + map(0x1bf00, 0x1bf7f).bankrw("vram2"); + map(0x1bffe, 0x1bfff).rw(this, FUNC(pwrview_state::vram2_r), FUNC(pwrview_state::vram2_w)); + map(0x1c000, 0x1ffff).rom().region("bios", 0x4000); +} + +void pwrview_state::pwrview_map(address_map &map) +{ + map(0x00000, 0xf7fff).ram().share("ram"); + map(0x00000, 0x003ff).rw(this, FUNC(pwrview_state::bank0_r), FUNC(pwrview_state::bank0_w)); + map(0xf8000, 0xfffff).m(m_biosbank, FUNC(address_map_bank_device::amap16)); +} + +void pwrview_state::pwrview_fetch_map(address_map &map) +{ + map(0x00000, 0xf7fff).ram().share("ram"); + map(0x00000, 0x003ff).r(this, FUNC(pwrview_state::bank0_r)); + map(0xf8000, 0xfffff).r(this, FUNC(pwrview_state::fbios_r)); +} + +void pwrview_state::pwrview_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(pwrview_state::nmiio_r), FUNC(pwrview_state::nmiio_w)); + map(0xc001, 0xc001).rw(this, FUNC(pwrview_state::unk1_r), FUNC(pwrview_state::unk1_w)); + map(0xc002, 0xc005).rw(this, FUNC(pwrview_state::led_r), FUNC(pwrview_state::led_w)).umask16(0xff00); + map(0xc007, 0xc007).r(this, FUNC(pwrview_state::rotary_r)); + map(0xc009, 0xc009).rw(this, FUNC(pwrview_state::unk2_r), FUNC(pwrview_state::unk2_w)); + map(0xc00b, 0xc00b).r(this, FUNC(pwrview_state::err_r)); + map(0xc00c, 0xc00d).ram(); + map(0xc080, 0xc080).rw(this, FUNC(pwrview_state::unk4_r), FUNC(pwrview_state::unk4_w)); + map(0xc088, 0xc088).w("crtc", FUNC(hd6845_device::address_w)); + map(0xc08a, 0xc08a).rw("crtc", FUNC(hd6845_device::register_r), FUNC(hd6845_device::register_w)); + map(0xc280, 0xc287).rw(this, FUNC(pwrview_state::unk3_r), FUNC(pwrview_state::unk3_w)).umask16(0x00ff); + map(0xc288, 0xc28f).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xc2a0, 0xc2a7).rw("sio", FUNC(z80sio2_device::cd_ba_r), FUNC(z80sio2_device::cd_ba_w)).umask16(0x00ff); + map(0xc2c0, 0xc2c0).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc2c2, 0xc2c2).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xc2e0, 0xc2e3).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff); + map(0xc2e4, 0xc2e5).ram(); + map(0xc2e6, 0xc2e6).r(this, FUNC(pwrview_state::pitclock_r)); +} static SLOT_INTERFACE_START(pwrview_floppies) SLOT_INTERFACE("525dd", FLOPPY_525_DD) diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp index a1d3582475b..22665bbf853 100644 --- a/src/mame/drivers/px4.cpp +++ b/src/mame/drivers/px4.cpp @@ -1259,46 +1259,49 @@ void px4p_state::machine_start() // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(px4_state::px4_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(px4_state::px4_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void px4_state::px4_mem(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).bankrw("bank2"); +} + +void px4_state::px4_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // gapnit, 0x00-0x07 - AM_RANGE(0x00, 0x00) AM_READWRITE( icrlc_r, ctrl1_w ) - AM_RANGE(0x01, 0x01) AM_READWRITE( icrhc_r, cmdr_w ) - AM_RANGE(0x02, 0x02) AM_READWRITE( icrlb_r, ctrl2_w ) - AM_RANGE(0x03, 0x03) AM_READ( icrhb_r ) - AM_RANGE(0x04, 0x04) AM_READWRITE( isr_r, ier_w ) - AM_RANGE(0x05, 0x05) AM_READWRITE( str_r, bankr_w ) - AM_RANGE(0x06, 0x06) AM_READWRITE( sior_r, sior_w ) - AM_RANGE(0x07, 0x07) AM_NOP + map(0x00, 0x00).rw(this, FUNC(px4_state::icrlc_r), FUNC(px4_state::ctrl1_w)); + map(0x01, 0x01).rw(this, FUNC(px4_state::icrhc_r), FUNC(px4_state::cmdr_w)); + map(0x02, 0x02).rw(this, FUNC(px4_state::icrlb_r), FUNC(px4_state::ctrl2_w)); + map(0x03, 0x03).r(this, FUNC(px4_state::icrhb_r)); + map(0x04, 0x04).rw(this, FUNC(px4_state::isr_r), FUNC(px4_state::ier_w)); + map(0x05, 0x05).rw(this, FUNC(px4_state::str_r), FUNC(px4_state::bankr_w)); + map(0x06, 0x06).rw(this, FUNC(px4_state::sior_r), FUNC(px4_state::sior_w)); + map(0x07, 0x07).noprw(); // gapndl, 0x08-0x0f - AM_RANGE(0x08, 0x08) AM_WRITE( vadr_w ) - AM_RANGE(0x09, 0x09) AM_WRITE( yoff_w ) - AM_RANGE(0x0a, 0x0a) AM_WRITE( fr_w ) - AM_RANGE(0x0b, 0x0b) AM_WRITE( spur_w ) - AM_RANGE(0x0c, 0x0f) AM_NOP + map(0x08, 0x08).w(this, FUNC(px4_state::vadr_w)); + map(0x09, 0x09).w(this, FUNC(px4_state::yoff_w)); + map(0x0a, 0x0a).w(this, FUNC(px4_state::fr_w)); + map(0x0b, 0x0b).w(this, FUNC(px4_state::spur_w)); + map(0x0c, 0x0f).noprw(); // gapnio, 0x10-0x1f - AM_RANGE(0x10, 0x13) AM_READWRITE( ctgif_r, ctgif_w ) - AM_RANGE(0x14, 0x14) AM_READWRITE( artdir_r, artdor_w ) - AM_RANGE(0x15, 0x15) AM_READWRITE( artsr_r, artmr_w ) - AM_RANGE(0x16, 0x16) AM_READWRITE( iostr_r, artcr_w ) - AM_RANGE(0x17, 0x17) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x18, 0x18) AM_WRITE( swr_w ) - AM_RANGE(0x19, 0x19) AM_WRITE( ioctlr_w ) - AM_RANGE(0x1a, 0x1f) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(px4p_state::px4p_io) - AM_IMPORT_FROM(px4_io) - AM_RANGE(0x90, 0x92) AM_WRITE(ramdisk_address_w ) - AM_RANGE(0x93, 0x93) AM_READWRITE(ramdisk_data_r, ramdisk_data_w ) - AM_RANGE(0x94, 0x94) AM_READ(ramdisk_control_r) -ADDRESS_MAP_END + map(0x10, 0x13).rw(this, FUNC(px4_state::ctgif_r), FUNC(px4_state::ctgif_w)); + map(0x14, 0x14).rw(this, FUNC(px4_state::artdir_r), FUNC(px4_state::artdor_w)); + map(0x15, 0x15).rw(this, FUNC(px4_state::artsr_r), FUNC(px4_state::artmr_w)); + map(0x16, 0x16).rw(this, FUNC(px4_state::iostr_r), FUNC(px4_state::artcr_w)); + map(0x17, 0x17).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x18, 0x18).w(this, FUNC(px4_state::swr_w)); + map(0x19, 0x19).w(this, FUNC(px4_state::ioctlr_w)); + map(0x1a, 0x1f).noprw(); +} + +void px4p_state::px4p_io(address_map &map) +{ + px4_io(map); + map(0x90, 0x92).w(this, FUNC(px4p_state::ramdisk_address_w)); + map(0x93, 0x93).rw(this, FUNC(px4p_state::ramdisk_data_r), FUNC(px4p_state::ramdisk_data_w)); + map(0x94, 0x94).r(this, FUNC(px4p_state::ramdisk_control_r)); +} //************************************************************************** diff --git a/src/mame/drivers/px8.cpp b/src/mame/drivers/px8.cpp index 30163e8df6a..3cd20844cb0 100644 --- a/src/mame/drivers/px8.cpp +++ b/src/mame/drivers/px8.cpp @@ -511,51 +511,55 @@ WRITE8_MEMBER( px8_state::ksc_w ) ADDRESS_MAP( px8_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(px8_state::px8_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAMBANK("bank0") - AM_RANGE(0x8000, 0xffff) AM_RAMBANK("bank1") -ADDRESS_MAP_END +void px8_state::px8_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankrw("bank0"); + map(0x8000, 0xffff).bankrw("bank1"); +} /*------------------------------------------------- ADDRESS_MAP( px8_io ) -------------------------------------------------*/ -ADDRESS_MAP_START(px8_state::px8_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x00, 0x07) AM_READWRITE(gah40m_r, gah40m_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x0d, 0x0d) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) +void px8_state::px8_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x0f); + map(0x00, 0x07).rw(this, FUNC(px8_state::gah40m_r), FUNC(px8_state::gah40m_w)); + map(0x0c, 0x0c).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x0d, 0x0d).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // AM_RANGE(0x0e, 0x0e) AM_DEVREADWRITE(SED1320_TAG, sed1330_device, status_r, data_w) // AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE(SED1320_TAG, sed1330_device, data_r, command_w) -ADDRESS_MAP_END +} /*------------------------------------------------- ADDRESS_MAP( px8_slave_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(px8_state::px8_slave_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0020, 0x0023) AM_READWRITE(gah40s_r, gah40s_w) +void px8_state::px8_slave_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0020, 0x0023).rw(this, FUNC(px8_state::gah40s_r), FUNC(px8_state::gah40s_w)); // AM_RANGE(0x0024, 0x0027) AM_DEVREADWRITE_LEGACY(SED1320_TAG, ) - AM_RANGE(0x0028, 0x0028) AM_WRITE(gah40s_ier_w) - AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x9800, 0xefff) AM_NOP - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6303_TAG, 0) /* internal mask rom */ -ADDRESS_MAP_END + map(0x0028, 0x0028).w(this, FUNC(px8_state::gah40s_ier_w)); + map(0x8000, 0x97ff).ram().share("video_ram"); + map(0x9800, 0xefff).noprw(); + map(0xf000, 0xffff).rom().region(HD6303_TAG, 0); /* internal mask rom */ +} /*------------------------------------------------- ADDRESS_MAP( px8_slave_io ) -------------------------------------------------*/ -ADDRESS_MAP_START(px8_state::px8_slave_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(M6801_PORT1, M6801_PORT1) - AM_RANGE(M6801_PORT2, M6801_PORT2) - AM_RANGE(M6801_PORT3, M6801_PORT3) - AM_RANGE(M6801_PORT4, M6801_PORT4) -ADDRESS_MAP_END +void px8_state::px8_slave_io(address_map &map) +{ + map.unmap_value_high(); + map(M6801_PORT1, M6801_PORT1); + map(M6801_PORT2, M6801_PORT2); + map(M6801_PORT3, M6801_PORT3); + map(M6801_PORT4, M6801_PORT4); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp index 2906dd7f168..f2c70e7ade5 100644 --- a/src/mame/drivers/pyl601.cpp +++ b/src/mame/drivers/pyl601.cpp @@ -254,29 +254,30 @@ READ8_MEMBER(pyl601_state::floppy_r) return m_floppy_ctrl; } -ADDRESS_MAP_START(pyl601_state::pyl601_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xbfff ) AM_RAMBANK("bank1") - AM_RANGE( 0xc000, 0xdfff ) AM_RAMBANK("bank2") - AM_RANGE( 0xe000, 0xe5ff ) AM_RAMBANK("bank3") - AM_RANGE( 0xe600, 0xe600 ) AM_MIRROR(4) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE( 0xe601, 0xe601 ) AM_MIRROR(4) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE( 0xe628, 0xe628 ) AM_READ(keyboard_r) - AM_RANGE( 0xe629, 0xe629 ) AM_READWRITE(video_mode_r,video_mode_w) - AM_RANGE( 0xe62a, 0xe62a ) AM_READWRITE(keycheck_r,led_w) - AM_RANGE( 0xe62b, 0xe62b ) AM_READWRITE(timer_r,speaker_w) - AM_RANGE( 0xe62d, 0xe62d ) AM_READ(video_mode_r) - AM_RANGE( 0xe62e, 0xe62e ) AM_READWRITE(keycheck_r,led_w) - AM_RANGE( 0xe680, 0xe680 ) AM_WRITE(vdisk_page_w) - AM_RANGE( 0xe681, 0xe681 ) AM_WRITE(vdisk_h_w) - AM_RANGE( 0xe682, 0xe682 ) AM_WRITE(vdisk_l_w) - AM_RANGE( 0xe683, 0xe683 ) AM_READWRITE(vdisk_data_r,vdisk_data_w) - AM_RANGE( 0xe6c0, 0xe6c0 ) AM_READWRITE(floppy_r, floppy_w) - AM_RANGE( 0xe6d0, 0xe6d1 ) AM_DEVICE("upd765", upd765a_device, map) - AM_RANGE( 0xe6f0, 0xe6f0 ) AM_READWRITE(rom_page_r, rom_page_w) - AM_RANGE( 0xe700, 0xefff ) AM_RAMBANK("bank4") - AM_RANGE( 0xf000, 0xffff ) AM_READ_BANK("bank5") AM_WRITE_BANK("bank6") -ADDRESS_MAP_END +void pyl601_state::pyl601_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xbfff).bankrw("bank1"); + map(0xc000, 0xdfff).bankrw("bank2"); + map(0xe000, 0xe5ff).bankrw("bank3"); + map(0xe600, 0xe600).mirror(4).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xe601, 0xe601).mirror(4).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xe628, 0xe628).r(this, FUNC(pyl601_state::keyboard_r)); + map(0xe629, 0xe629).rw(this, FUNC(pyl601_state::video_mode_r), FUNC(pyl601_state::video_mode_w)); + map(0xe62a, 0xe62a).rw(this, FUNC(pyl601_state::keycheck_r), FUNC(pyl601_state::led_w)); + map(0xe62b, 0xe62b).rw(this, FUNC(pyl601_state::timer_r), FUNC(pyl601_state::speaker_w)); + map(0xe62d, 0xe62d).r(this, FUNC(pyl601_state::video_mode_r)); + map(0xe62e, 0xe62e).rw(this, FUNC(pyl601_state::keycheck_r), FUNC(pyl601_state::led_w)); + map(0xe680, 0xe680).w(this, FUNC(pyl601_state::vdisk_page_w)); + map(0xe681, 0xe681).w(this, FUNC(pyl601_state::vdisk_h_w)); + map(0xe682, 0xe682).w(this, FUNC(pyl601_state::vdisk_l_w)); + map(0xe683, 0xe683).rw(this, FUNC(pyl601_state::vdisk_data_r), FUNC(pyl601_state::vdisk_data_w)); + map(0xe6c0, 0xe6c0).rw(this, FUNC(pyl601_state::floppy_r), FUNC(pyl601_state::floppy_w)); + map(0xe6d0, 0xe6d1).m(m_fdc, FUNC(upd765a_device::map)); + map(0xe6f0, 0xe6f0).rw(this, FUNC(pyl601_state::rom_page_r), FUNC(pyl601_state::rom_page_w)); + map(0xe700, 0xefff).bankrw("bank4"); + map(0xf000, 0xffff).bankr("bank5").bankw("bank6"); +} /* Input ports */ /* A small note about natural keyboard mode: Ctrl is mapped to PGUP and the 'Lat/Cyr' key is mapped to PGDOWN */ diff --git a/src/mame/drivers/pyson.cpp b/src/mame/drivers/pyson.cpp index 14838183ab1..8261f6558be 100644 --- a/src/mame/drivers/pyson.cpp +++ b/src/mame/drivers/pyson.cpp @@ -187,10 +187,11 @@ uint32_t pyson_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, return 0; } -ADDRESS_MAP_START(pyson_state::ps2_map) - AM_RANGE(0x00000000, 0x01ffffff) AM_RAM // 32 MB RAM in consumer PS2s, do these have more? - AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void pyson_state::ps2_map(address_map &map) +{ + map(0x00000000, 0x01ffffff).ram(); // 32 MB RAM in consumer PS2s, do these have more? + map(0x1fc00000, 0x1fdfffff).rom().region("bios", 0); +} static INPUT_PORTS_START( pyson ) INPUT_PORTS_END diff --git a/src/mame/drivers/pzletime.cpp b/src/mame/drivers/pzletime.cpp index bb35ec083b4..619f13e3227 100644 --- a/src/mame/drivers/pzletime.cpp +++ b/src/mame/drivers/pzletime.cpp @@ -233,21 +233,22 @@ CUSTOM_INPUT_MEMBER(pzletime_state::ticket_status_r) return (m_ticket && !(m_screen->frame_number() % 128)); } -ADDRESS_MAP_START(pzletime_state::pzletime_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x700000, 0x700005) AM_RAM_WRITE(video_regs_w) AM_SHARE("video_regs") - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x9005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa00000, 0xa00007) AM_RAM AM_SHARE("tilemap_regs") - AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("bg_videoram") - AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(mid_videoram_w) AM_SHARE("mid_videoram") - AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(txt_videoram_w) AM_SHARE("txt_videoram") - AM_RANGE(0xd00000, 0xd01fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("INPUT") AM_WRITE(eeprom_w) - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("SYSTEM") AM_WRITE(ticket_w) - AM_RANGE(0xe00004, 0xe00005) AM_WRITE(oki_bank_w) - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM -ADDRESS_MAP_END +void pzletime_state::pzletime_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x700000, 0x700005).ram().w(this, FUNC(pzletime_state::video_regs_w)).share("video_regs"); + map(0x800001, 0x800001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x900000, 0x9005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa00000, 0xa00007).ram().share("tilemap_regs"); + map(0xb00000, 0xb3ffff).ram().share("bg_videoram"); + map(0xc00000, 0xc00fff).ram().w(this, FUNC(pzletime_state::mid_videoram_w)).share("mid_videoram"); + map(0xc01000, 0xc01fff).ram().w(this, FUNC(pzletime_state::txt_videoram_w)).share("txt_videoram"); + map(0xd00000, 0xd01fff).ram().share("spriteram"); + map(0xe00000, 0xe00001).portr("INPUT").w(this, FUNC(pzletime_state::eeprom_w)); + map(0xe00002, 0xe00003).portr("SYSTEM").w(this, FUNC(pzletime_state::ticket_w)); + map(0xe00004, 0xe00005).w(this, FUNC(pzletime_state::oki_bank_w)); + map(0xf00000, 0xf0ffff).ram(); +} static INPUT_PORTS_START( pzletime ) diff --git a/src/mame/drivers/qdrmfgp.cpp b/src/mame/drivers/qdrmfgp.cpp index 3b3697db9c7..fa93ba96d07 100644 --- a/src/mame/drivers/qdrmfgp.cpp +++ b/src/mame/drivers/qdrmfgp.cpp @@ -248,56 +248,59 @@ WRITE_LINE_MEMBER(qdrmfgp_state::gp2_ide_interrupt) * *************************************/ -ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("workram") /* work ram */ - AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */ - AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_device, word_w) /* video reg */ - AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) /* ccu */ - AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service sw */ - AM_RANGE(0x340000, 0x340001) AM_READ(inputs_r) /* inputport */ - AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */ - AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */ - AM_RANGE(0x370000, 0x370001) AM_WRITE(gp_control_w) /* control reg */ - AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */ - AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0x00ff) /* sound regs */ - AM_RANGE(0x880000, 0x881fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* vram */ - AM_RANGE(0x882000, 0x883fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) /* vram (mirror) */ - AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */ - AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) /* IDE control regs */ - AM_RANGE(0xa40000, 0xa4000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs1, write_cs1) /* IDE status control reg */ - AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r, sndram_w) /* sound ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp2_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x110fff) AM_RAM AM_SHARE("workram") /* work ram */ - AM_RANGE(0x180000, 0x183fff) AM_RAM AM_SHARE("nvram") /* backup ram */ - AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30003f) AM_DEVWRITE("k056832", k056832_device, word_w) /* video reg */ - AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00) /* ccu */ - AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR") /* battery power & service */ - AM_RANGE(0x340000, 0x340001) AM_READ(inputs_r) /* inputport */ - AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* unknown */ - AM_RANGE(0x360000, 0x360001) AM_WRITENOP /* unknown */ - AM_RANGE(0x370000, 0x370001) AM_WRITE(gp2_control_w) /* control reg */ - AM_RANGE(0x380000, 0x380001) AM_WRITENOP /* Watchdog */ - AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0x00ff) /* sound regs */ - AM_RANGE(0x880000, 0x881fff) AM_READWRITE(gp2_vram_r, gp2_vram_w) /* vram */ - AM_RANGE(0x89f000, 0x8a0fff) AM_READWRITE(gp2_vram_mirror_r, gp2_vram_mirror_w) /* vram (mirror) */ - AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r) /* gfxrom through */ - AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) /* IDE control regs */ - AM_RANGE(0xa40000, 0xa4000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs1, write_cs1) /* IDE status control reg */ - AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w) /* sound ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(qdrmfgp_state::qdrmfgp_k054539_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("k054539", 0) - AM_RANGE(0x100000, 0x45ffff) AM_RAM AM_SHARE("sndram") -ADDRESS_MAP_END +void qdrmfgp_state::qdrmfgp_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram().share("workram"); /* work ram */ + map(0x180000, 0x183fff).ram().share("nvram"); /* backup ram */ + map(0x280000, 0x280fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30003f).w(m_k056832, FUNC(k056832_device::word_w)); /* video reg */ + map(0x320000, 0x32001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); /* ccu */ + map(0x330000, 0x330001).portr("SENSOR"); /* battery power & service sw */ + map(0x340000, 0x340001).r(this, FUNC(qdrmfgp_state::inputs_r)); /* inputport */ + map(0x350000, 0x350001).nopw(); /* unknown */ + map(0x360000, 0x360001).nopw(); /* unknown */ + map(0x370000, 0x370001).w(this, FUNC(qdrmfgp_state::gp_control_w)); /* control reg */ + map(0x380000, 0x380001).nopw(); /* Watchdog */ + map(0x800000, 0x80045f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); /* sound regs */ + map(0x880000, 0x881fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* vram */ + map(0x882000, 0x883fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); /* vram (mirror) */ + map(0x900000, 0x901fff).r(this, FUNC(qdrmfgp_state::v_rom_r)); /* gfxrom through */ + map(0xa00000, 0xa0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); /* IDE control regs */ + map(0xa40000, 0xa4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); /* IDE status control reg */ + map(0xc00000, 0xcbffff).rw(this, FUNC(qdrmfgp_state::sndram_r), FUNC(qdrmfgp_state::sndram_w)); /* sound ram */ +} + + +void qdrmfgp_state::qdrmfgp2_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x110fff).ram().share("workram"); /* work ram */ + map(0x180000, 0x183fff).ram().share("nvram"); /* backup ram */ + map(0x280000, 0x280fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30003f).w(m_k056832, FUNC(k056832_device::word_w)); /* video reg */ + map(0x320000, 0x32001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0xff00); /* ccu */ + map(0x330000, 0x330001).portr("SENSOR"); /* battery power & service */ + map(0x340000, 0x340001).r(this, FUNC(qdrmfgp_state::inputs_r)); /* inputport */ + map(0x350000, 0x350001).nopw(); /* unknown */ + map(0x360000, 0x360001).nopw(); /* unknown */ + map(0x370000, 0x370001).w(this, FUNC(qdrmfgp_state::gp2_control_w)); /* control reg */ + map(0x380000, 0x380001).nopw(); /* Watchdog */ + map(0x800000, 0x80045f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); /* sound regs */ + map(0x880000, 0x881fff).rw(this, FUNC(qdrmfgp_state::gp2_vram_r), FUNC(qdrmfgp_state::gp2_vram_w)); /* vram */ + map(0x89f000, 0x8a0fff).rw(this, FUNC(qdrmfgp_state::gp2_vram_mirror_r), FUNC(qdrmfgp_state::gp2_vram_mirror_w)); /* vram (mirror) */ + map(0x900000, 0x901fff).r(this, FUNC(qdrmfgp_state::v_rom_r)); /* gfxrom through */ + map(0xa00000, 0xa0000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); /* IDE control regs */ + map(0xa40000, 0xa4000f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); /* IDE status control reg */ + map(0xc00000, 0xcbffff).rw(this, FUNC(qdrmfgp_state::sndram_r), FUNC(qdrmfgp_state::sndram_w)); /* sound ram */ +} + + +void qdrmfgp_state::qdrmfgp_k054539_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().region("k054539", 0); + map(0x100000, 0x45ffff).ram().share("sndram"); +} /************************************* * diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp index bf1577b1116..3540944bbe1 100644 --- a/src/mame/drivers/qix.cpp +++ b/src/mame/drivers/qix.cpp @@ -245,47 +245,50 @@ Interrupts: * *************************************/ -ADDRESS_MAP_START(qix_state::main_map) - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x8400, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_READNOP /* 6850 ACIA */ - AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w) - AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w) - AM_RANGE(0x9000, 0x93ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write) - AM_RANGE(0x9400, 0x97ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w) - AM_RANGE(0x9800, 0x9bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x9c00, 0x9fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(qix_state::kram3_main_map) - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x8400, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_READNOP /* 6850 ACIA */ - AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w) - AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w) - AM_RANGE(0x9000, 0x93ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write) - AM_RANGE(0x9400, 0x97ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w) - AM_RANGE(0x9800, 0x9bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x9c00, 0x9fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0xa000, 0xffff) AM_ROMBANK("bank0") -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(qix_state::zoo_main_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x0400, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_READNOP /* ACIA */ - AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w) - AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w) - AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write) - AM_RANGE(0x1400, 0x17ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w) - AM_RANGE(0x1800, 0x1bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1c00, 0x1fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void qix_state::main_map(address_map &map) +{ + map(0x8000, 0x83ff).ram().share("share1"); + map(0x8400, 0x87ff).ram(); + map(0x8800, 0x8bff).nopr(); /* 6850 ACIA */ + map(0x8c00, 0x8c00).mirror(0x3fe).rw(this, FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w)); + map(0x8c01, 0x8c01).mirror(0x3fe).rw(this, FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w)); + map(0x9000, 0x93ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x9400, 0x97ff).r(m_pia0, FUNC(pia6821_device::read)).w(this, FUNC(qix_state::qix_pia_w)); + map(0x9800, 0x9bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x9c00, 0x9fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xa000, 0xffff).rom(); +} + + +void qix_state::kram3_main_map(address_map &map) +{ + map(0x8000, 0x83ff).ram().share("share1"); + map(0x8400, 0x87ff).ram(); + map(0x8800, 0x8bff).nopr(); /* 6850 ACIA */ + map(0x8c00, 0x8c00).mirror(0x3fe).rw(this, FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w)); + map(0x8c01, 0x8c01).mirror(0x3fe).rw(this, FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w)); + map(0x9000, 0x93ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x9400, 0x97ff).r(m_pia0, FUNC(pia6821_device::read)).w(this, FUNC(qix_state::qix_pia_w)); + map(0x9800, 0x9bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x9c00, 0x9fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xa000, 0xffff).bankr("bank0"); +} + + + +void qix_state::zoo_main_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("share1"); + map(0x0400, 0x07ff).ram(); + map(0x0800, 0x0bff).nopr(); /* ACIA */ + map(0x0c00, 0x0c00).mirror(0x3fe).rw(this, FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w)); + map(0x0c01, 0x0c01).mirror(0x3fe).rw(this, FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w)); + map(0x1000, 0x13ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1400, 0x17ff).r(m_pia0, FUNC(pia6821_device::read)).w(this, FUNC(qix_state::qix_pia_w)); + map(0x1800, 0x1bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1c00, 0x1fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xffff).rom(); +} diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp index 3cdbad14824..5659a7e3ed5 100644 --- a/src/mame/drivers/ql.cpp +++ b/src/mame/drivers/ql.cpp @@ -496,19 +496,21 @@ READ8_MEMBER( ql_state::ipc_bus_r ) // ADDRESS_MAP( ql_mem ) //------------------------------------------------- -ADDRESS_MAP_START(ql_state::ql_mem) - AM_RANGE(0x000000, 0x0fffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void ql_state::ql_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rw(this, FUNC(ql_state::read), FUNC(ql_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( ipc_io ) //------------------------------------------------- -ADDRESS_MAP_START(ql_state::ipc_io) - AM_RANGE(0x00, 0x7f) AM_WRITE(ipc_w) - AM_RANGE(0x27, 0x28) AM_READNOP // IPC reads these to set P0 (bus) to Hi-Z mode -ADDRESS_MAP_END +void ql_state::ipc_io(address_map &map) +{ + map(0x00, 0x7f).w(this, FUNC(ql_state::ipc_w)); + map(0x27, 0x28).nopr(); // IPC reads these to set P0 (bus) to Hi-Z mode +} diff --git a/src/mame/drivers/qtsbc.cpp b/src/mame/drivers/qtsbc.cpp index 21453953e2b..6c5d5e6e95f 100644 --- a/src/mame/drivers/qtsbc.cpp +++ b/src/mame/drivers/qtsbc.cpp @@ -67,19 +67,21 @@ READ8_MEMBER( qtsbc_state::qtsbc_43_r ) return 0; // this controls where the new ram program gets built at. 0 = 0xE000. } -ADDRESS_MAP_START(qtsbc_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("ram") AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(qtsbc_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x43, 0x43) AM_READ(qtsbc_43_r) -ADDRESS_MAP_END +void qtsbc_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).ram().share("ram").region("maincpu", 0); +} + +void qtsbc_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x06, 0x06).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x07, 0x07).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x43, 0x43).r(this, FUNC(qtsbc_state::qtsbc_43_r)); +} /* Input ports */ static INPUT_PORTS_START( qtsbc ) diff --git a/src/mame/drivers/quakeat.cpp b/src/mame/drivers/quakeat.cpp index f4e995b1bc5..e6a3b794f55 100644 --- a/src/mame/drivers/quakeat.cpp +++ b/src/mame/drivers/quakeat.cpp @@ -91,21 +91,23 @@ uint32_t quakeat_state::screen_update_quake(screen_device &screen, bitmap_ind16 return 0; } -ADDRESS_MAP_START(quakeat_state::quake_map) - AM_RANGE(0x00000000, 0x0000ffff) AM_ROM AM_REGION("pc_bios", 0) /* BIOS */ -ADDRESS_MAP_END +void quakeat_state::quake_map(address_map &map) +{ + map(0x00000000, 0x0000ffff).rom().region("pc_bios", 0); /* BIOS */ +} -ADDRESS_MAP_START(quakeat_state::quake_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e8, 0x00eb) AM_NOP +void quakeat_state::quake_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e8, 0x00eb).noprw(); // AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x0300, 0x03af) AM_NOP - AM_RANGE(0x03b0, 0x03df) AM_NOP + map(0x0300, 0x03af).noprw(); + map(0x03b0, 0x03df).noprw(); // AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w) // AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) // AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w) // AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write) -ADDRESS_MAP_END +} /*************************************************************/ diff --git a/src/mame/drivers/quantum.cpp b/src/mame/drivers/quantum.cpp index 976a737042a..0419bf3cd4b 100644 --- a/src/mame/drivers/quantum.cpp +++ b/src/mame/drivers/quantum.cpp @@ -147,22 +147,23 @@ WRITE16_MEMBER(quantum_state::led_w) * *************************************/ -ADDRESS_MAP_START(quantum_state::main_map) - AM_RANGE(0x000000, 0x013fff) AM_ROM - AM_RANGE(0x018000, 0x01cfff) AM_RAM - AM_RANGE(0x800000, 0x801fff) AM_RAM AM_SHARE("vectorram") - AM_RANGE(0x840000, 0x84001f) AM_DEVREADWRITE8("pokey1", pokey_device, read, write, 0x00ff) - AM_RANGE(0x840020, 0x84003f) AM_DEVREADWRITE8("pokey2", pokey_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x9001ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x940000, 0x940001) AM_READ(trackball_r) /* trackball */ - AM_RANGE(0x948000, 0x948001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x950000, 0x95001f) AM_WRITEONLY AM_SHARE("colorram") - AM_RANGE(0x958000, 0x958001) AM_WRITE(led_w) - AM_RANGE(0x960000, 0x960001) AM_WRITENOP - AM_RANGE(0x968000, 0x968001) AM_DEVWRITE("avg", avg_quantum_device, reset_word_w) - AM_RANGE(0x970000, 0x970001) AM_DEVWRITE("avg", avg_quantum_device, go_word_w) - AM_RANGE(0x978000, 0x978001) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) -ADDRESS_MAP_END +void quantum_state::main_map(address_map &map) +{ + map(0x000000, 0x013fff).rom(); + map(0x018000, 0x01cfff).ram(); + map(0x800000, 0x801fff).ram().share("vectorram"); + map(0x840000, 0x84001f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff); + map(0x840020, 0x84003f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff); + map(0x900000, 0x9001ff).ram().share("nvram"); + map(0x940000, 0x940001).r(this, FUNC(quantum_state::trackball_r)); /* trackball */ + map(0x948000, 0x948001).portr("SYSTEM"); + map(0x950000, 0x95001f).writeonly().share("colorram"); + map(0x958000, 0x958001).w(this, FUNC(quantum_state::led_w)); + map(0x960000, 0x960001).nopw(); + map(0x968000, 0x968001).w(m_avg, FUNC(avg_quantum_device::reset_word_w)); + map(0x970000, 0x970001).w(m_avg, FUNC(avg_quantum_device::go_word_w)); + map(0x978000, 0x978001).nopr().w("watchdog", FUNC(watchdog_timer_device::reset16_w)); +} /************************************* diff --git a/src/mame/drivers/quasar.cpp b/src/mame/drivers/quasar.cpp index 11d091150a7..9e878e50a12 100644 --- a/src/mame/drivers/quasar.cpp +++ b/src/mame/drivers/quasar.cpp @@ -110,28 +110,31 @@ READ_LINE_MEMBER(quasar_state::audio_t1_r) // memory map taken from the manual -ADDRESS_MAP_START(quasar_state::quasar) - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READ(cvs_bullet_ram_or_palette_r) AM_WRITE(quasar_bullet_w) AM_SHARE("bullet_ram") - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_0_or_character_ram_r, cvs_s2636_0_or_character_ram_w) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_1_or_character_ram_r, cvs_s2636_1_or_character_ram_w) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_2_or_character_ram_r, cvs_s2636_2_or_character_ram_w) - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READ(cvs_video_or_color_ram_r) AM_WRITE(quasar_video_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x2000, 0x33ff) AM_ROM - AM_RANGE(0x4000, 0x53ff) AM_ROM - AM_RANGE(0x6000, 0x73ff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(quasar_state::quasar_io) - AM_RANGE(0x00, 0x03) AM_READWRITE(quasar_IO_r, video_page_select_w) - AM_RANGE(0x08, 0x0b) AM_WRITE(io_page_select_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(quasar_state::quasar_data) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READ(cvs_collision_r) AM_WRITENOP - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(cvs_collision_clear, quasar_sh_command_w) -ADDRESS_MAP_END +void quasar_state::quasar(address_map &map) +{ + map(0x0000, 0x13ff).rom(); + map(0x1400, 0x14ff).mirror(0x6000).r(this, FUNC(quasar_state::cvs_bullet_ram_or_palette_r)).w(this, FUNC(quasar_state::quasar_bullet_w)).share("bullet_ram"); + map(0x1500, 0x15ff).mirror(0x6000).rw(this, FUNC(quasar_state::cvs_s2636_0_or_character_ram_r), FUNC(quasar_state::cvs_s2636_0_or_character_ram_w)); + map(0x1600, 0x16ff).mirror(0x6000).rw(this, FUNC(quasar_state::cvs_s2636_1_or_character_ram_r), FUNC(quasar_state::cvs_s2636_1_or_character_ram_w)); + map(0x1700, 0x17ff).mirror(0x6000).rw(this, FUNC(quasar_state::cvs_s2636_2_or_character_ram_r), FUNC(quasar_state::cvs_s2636_2_or_character_ram_w)); + map(0x1800, 0x1bff).mirror(0x6000).r(this, FUNC(quasar_state::cvs_video_or_color_ram_r)).w(this, FUNC(quasar_state::quasar_video_w)).share("video_ram"); + map(0x1c00, 0x1fff).mirror(0x6000).ram(); + map(0x2000, 0x33ff).rom(); + map(0x4000, 0x53ff).rom(); + map(0x6000, 0x73ff).rom(); +} + +void quasar_state::quasar_io(address_map &map) +{ + map(0x00, 0x03).rw(this, FUNC(quasar_state::quasar_IO_r), FUNC(quasar_state::video_page_select_w)); + map(0x08, 0x0b).w(this, FUNC(quasar_state::io_page_select_w)); +} + +void quasar_state::quasar_data(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).r(this, FUNC(quasar_state::cvs_collision_r)).nopw(); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(quasar_state::cvs_collision_clear), FUNC(quasar_state::quasar_sh_command_w)); +} /************************************* * @@ -139,14 +142,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(quasar_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM -ADDRESS_MAP_END +void quasar_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); +} -ADDRESS_MAP_START(quasar_state::sound_portmap) - AM_RANGE(0x00, 0x7f) AM_RAM - AM_RANGE(0x80, 0x80) AM_READ(quasar_sh_command_r) -ADDRESS_MAP_END +void quasar_state::sound_portmap(address_map &map) +{ + map(0x00, 0x7f).ram(); + map(0x80, 0x80).r(this, FUNC(quasar_state::quasar_sh_command_r)); +} /************************************************************************ diff --git a/src/mame/drivers/queen.cpp b/src/mame/drivers/queen.cpp index 8cc009e39ab..1731e143ed5 100644 --- a/src/mame/drivers/queen.cpp +++ b/src/mame/drivers/queen.cpp @@ -238,29 +238,31 @@ WRITE32_MEMBER(queen_state::bios_ram_w) } } -ADDRESS_MAP_START(queen_state::queen_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000e0000, 0x000effff) AM_ROMBANK("bios_ext") AM_WRITE(bios_ext_ram_w) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x01ffffff) AM_RAM - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(queen_state::queen_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x00e8, 0x00ef) AM_NOP - - AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) - - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END +void queen_state::queen_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000e0000, 0x000effff).bankr("bios_ext").w(this, FUNC(queen_state::bios_ext_ram_w)); + map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(queen_state::bios_ram_w)); + map(0x00100000, 0x01ffffff).ram(); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void queen_state::queen_io(address_map &map) +{ + pcat32_io_common(map); + map(0x00e8, 0x00ef).noprw(); + + map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); + + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} void queen_state::machine_start() { diff --git a/src/mame/drivers/quickpick5.cpp b/src/mame/drivers/quickpick5.cpp index 17c762e6fa5..7ff5737986b 100644 --- a/src/mame/drivers/quickpick5.cpp +++ b/src/mame/drivers/quickpick5.cpp @@ -264,26 +264,27 @@ TIMER_DEVICE_CALLBACK_MEMBER(quickpick5_state::scanline) } } -ADDRESS_MAP_START(quickpick5_state::quickpick5_main) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdbff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xdc00, 0xdc0f) AM_DEVREADWRITE("k053252", k053252_device, read, write) - AM_RANGE(0xdc40, 0xdc4f) AM_READWRITE(k244_r, k244_w) - AM_RANGE(0xdc80, 0xdc80) AM_READ_PORT("DSW3") - AM_RANGE(0xdc81, 0xdc81) AM_READ_PORT("DSW4") - AM_RANGE(0xdcc0, 0xdcc0) AM_READ_PORT("DSW1") - AM_RANGE(0xdcc1, 0xdcc1) AM_READ_PORT("DSW2") - AM_RANGE(0xdd00, 0xdd00) AM_WRITENOP - AM_RANGE(0xdd40, 0xdd40) AM_NOP - AM_RANGE(0xdd80, 0xdd80) AM_READWRITE(control_r, control_w) - AM_RANGE(0xddc0, 0xddc0) AM_WRITENOP - AM_RANGE(0xde00, 0xde00) AM_WRITENOP - AM_RANGE(0xde40, 0xde40) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xe000, 0xefff) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf800, 0xffff) AM_READWRITE(k245_r, k245_w) -ADDRESS_MAP_END +void quickpick5_state::quickpick5_main(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdbff).ram().share("nvram"); + map(0xdc00, 0xdc0f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); + map(0xdc40, 0xdc4f).rw(this, FUNC(quickpick5_state::k244_r), FUNC(quickpick5_state::k244_w)); + map(0xdc80, 0xdc80).portr("DSW3"); + map(0xdc81, 0xdc81).portr("DSW4"); + map(0xdcc0, 0xdcc0).portr("DSW1"); + map(0xdcc1, 0xdcc1).portr("DSW2"); + map(0xdd00, 0xdd00).nopw(); + map(0xdd40, 0xdd40).noprw(); + map(0xdd80, 0xdd80).rw(this, FUNC(quickpick5_state::control_r), FUNC(quickpick5_state::control_w)); + map(0xddc0, 0xddc0).nopw(); + map(0xde00, 0xde00).nopw(); + map(0xde40, 0xde40).w(m_oki, FUNC(okim6295_device::write)); + map(0xe000, 0xefff).rw(this, FUNC(quickpick5_state::vram_r), FUNC(quickpick5_state::vram_w)); + map(0xf000, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf800, 0xffff).rw(this, FUNC(quickpick5_state::k245_r), FUNC(quickpick5_state::k245_w)); +} static INPUT_PORTS_START( quickpick5 ) PORT_START("DSW1") diff --git a/src/mame/drivers/quizdna.cpp b/src/mame/drivers/quizdna.cpp index 13c9ef6cf10..8d428738b55 100644 --- a/src/mame/drivers/quizdna.cpp +++ b/src/mame/drivers/quizdna.cpp @@ -33,72 +33,77 @@ WRITE8_MEMBER(quizdna_state::gekiretu_rombank_w) /****************************************************************************/ -ADDRESS_MAP_START(quizdna_state::quizdna_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0x9fff) AM_WRITE(fg_ram_w) - AM_RANGE(0xa000, 0xbfff) AM_WRITE(bg_ram_w) - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe200, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_SHARE("paletteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizdna_state::gekiretu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0x9fff) AM_WRITE(fg_ram_w) - AM_RANGE(0xa000, 0xbfff) AM_WRITE(bg_ram_w) - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_SHARE("paletteram") - AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf200, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizdna_state::quizdna_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x03) AM_WRITE(bg_xscroll_w) - AM_RANGE(0x04, 0x04) AM_WRITE(bg_yscroll_w) - AM_RANGE(0x05, 0x06) AM_WRITENOP /* unknown */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE") - AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w) - AM_RANGE(0xd0, 0xd0) AM_WRITE(screen_ctrl_w) - AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizdna_state::gakupara_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(bg_xscroll_w) - AM_RANGE(0x02, 0x02) AM_WRITE(bg_yscroll_w) - AM_RANGE(0x03, 0x04) AM_WRITENOP /* unknown */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE") - AM_RANGE(0xc0, 0xc0) AM_WRITE(rombank_w) - AM_RANGE(0xd0, 0xd0) AM_WRITE(screen_ctrl_w) - AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizdna_state::gekiretu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x03) AM_WRITE(bg_xscroll_w) - AM_RANGE(0x04, 0x04) AM_WRITE(bg_yscroll_w) - AM_RANGE(0x05, 0x06) AM_WRITENOP /* unknown */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x91, 0x91) AM_READ_PORT("SERVICE") - AM_RANGE(0xc0, 0xc0) AM_WRITE(gekiretu_rombank_w) - AM_RANGE(0xd0, 0xd0) AM_WRITE(screen_ctrl_w) - AM_RANGE(0xe0, 0xe1) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xf0, 0xf0) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void quizdna_state::quizdna_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0x8000, 0x9fff).w(this, FUNC(quizdna_state::fg_ram_w)); + map(0xa000, 0xbfff).w(this, FUNC(quizdna_state::bg_ram_w)); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe1ff).ram().share("spriteram"); + map(0xe200, 0xefff).ram(); + map(0xf000, 0xffff).ram().w(this, FUNC(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)).share("paletteram"); +} + +void quizdna_state::gekiretu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0x8000, 0x9fff).w(this, FUNC(quizdna_state::fg_ram_w)); + map(0xa000, 0xbfff).w(this, FUNC(quizdna_state::bg_ram_w)); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().w(this, FUNC(quizdna_state::paletteram_xBGR_RRRR_GGGG_BBBB_w)).share("paletteram"); + map(0xf000, 0xf1ff).ram().share("spriteram"); + map(0xf200, 0xffff).ram(); +} + +void quizdna_state::quizdna_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).w(this, FUNC(quizdna_state::bg_xscroll_w)); + map(0x04, 0x04).w(this, FUNC(quizdna_state::bg_yscroll_w)); + map(0x05, 0x06).nopw(); /* unknown */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x90, 0x90).portr("SYSTEM"); + map(0x91, 0x91).portr("SERVICE"); + map(0xc0, 0xc0).w(this, FUNC(quizdna_state::rombank_w)); + map(0xd0, 0xd0).w(this, FUNC(quizdna_state::screen_ctrl_w)); + map(0xe0, 0xe1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf0, 0xf0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void quizdna_state::gakupara_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(quizdna_state::bg_xscroll_w)); + map(0x02, 0x02).w(this, FUNC(quizdna_state::bg_yscroll_w)); + map(0x03, 0x04).nopw(); /* unknown */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x90, 0x90).portr("SYSTEM"); + map(0x91, 0x91).portr("SERVICE"); + map(0xc0, 0xc0).w(this, FUNC(quizdna_state::rombank_w)); + map(0xd0, 0xd0).w(this, FUNC(quizdna_state::screen_ctrl_w)); + map(0xe0, 0xe1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf0, 0xf0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void quizdna_state::gekiretu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).w(this, FUNC(quizdna_state::bg_xscroll_w)); + map(0x04, 0x04).w(this, FUNC(quizdna_state::bg_yscroll_w)); + map(0x05, 0x06).nopw(); /* unknown */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x90, 0x90).portr("SYSTEM"); + map(0x91, 0x91).portr("SERVICE"); + map(0xc0, 0xc0).w(this, FUNC(quizdna_state::gekiretu_rombank_w)); + map(0xd0, 0xd0).w(this, FUNC(quizdna_state::screen_ctrl_w)); + map(0xe0, 0xe1).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf0, 0xf0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /****************************************************************************/ diff --git a/src/mame/drivers/quizo.cpp b/src/mame/drivers/quizo.cpp index 07abf04e9d9..bec3cf377ed 100644 --- a/src/mame/drivers/quizo.cpp +++ b/src/mame/drivers/quizo.cpp @@ -145,23 +145,25 @@ WRITE8_MEMBER(quizo_state::port60_w) membank("bank1")->set_entry(rombankLookup[data]); } -ADDRESS_MAP_START(quizo_state::memmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_WRITE(vram_w) - -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizo_state::portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x10, 0x10) AM_READ_PORT("IN1") - AM_RANGE(0x40, 0x40) AM_READ_PORT("IN2") - AM_RANGE(0x50, 0x51) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x60, 0x60) AM_WRITE(port60_w) - AM_RANGE(0x70, 0x70) AM_WRITE(port70_w) -ADDRESS_MAP_END +void quizo_state::memmap(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).w(this, FUNC(quizo_state::vram_w)); + +} + +void quizo_state::portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x10, 0x10).portr("IN1"); + map(0x40, 0x40).portr("IN2"); + map(0x50, 0x51).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x60, 0x60).w(this, FUNC(quizo_state::port60_w)); + map(0x70, 0x70).w(this, FUNC(quizo_state::port70_w)); +} static INPUT_PORTS_START( quizo ) PORT_START("IN0") diff --git a/src/mame/drivers/quizpani.cpp b/src/mame/drivers/quizpani.cpp index 074c2bf1256..f3a88acea1e 100644 --- a/src/mame/drivers/quizpani.cpp +++ b/src/mame/drivers/quizpani.cpp @@ -56,26 +56,27 @@ Stephh's notes (based on the games M68000 code and some tests) : #include "speaker.h" -ADDRESS_MAP_START(quizpani_state::quizpani_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2") - AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") - AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") - AM_RANGE(0x100014, 0x100015) AM_WRITENOP /* screen flipping? */ - AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable? */ - AM_RANGE(0x100018, 0x100019) AM_WRITE(tilesbank_w) - AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x104020, 0x104027) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) - AM_RANGE(0x108000, 0x1083ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP - AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_SHARE("scrollreg") - AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP - AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(txt_videoram_w) AM_SHARE("txt_videoram") - AM_RANGE(0x180000, 0x18ffff) AM_RAM - AM_RANGE(0x200000, 0x33ffff) AM_ROM -ADDRESS_MAP_END +void quizpani_state::quizpani_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).portr("SYSTEM"); + map(0x100002, 0x100003).portr("P1_P2"); + map(0x100008, 0x100009).portr("DSW1"); + map(0x10000a, 0x10000b).portr("DSW2"); + map(0x100014, 0x100015).nopw(); /* screen flipping? */ + map(0x100016, 0x100017).nopw(); /* IRQ enable? */ + map(0x100018, 0x100019).w(this, FUNC(quizpani_state::tilesbank_w)); + map(0x104001, 0x104001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x104020, 0x104027).w("nmk112", FUNC(nmk112_device::okibank_w)).umask16(0x00ff); + map(0x108000, 0x1083ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x108400, 0x1085ff).nopw(); + map(0x10c000, 0x10c007).ram().share("scrollreg"); + map(0x10c008, 0x10c403).nopw(); + map(0x110000, 0x113fff).ram().w(this, FUNC(quizpani_state::bg_videoram_w)).share("bg_videoram"); + map(0x11c000, 0x11ffff).ram().w(this, FUNC(quizpani_state::txt_videoram_w)).share("txt_videoram"); + map(0x180000, 0x18ffff).ram(); + map(0x200000, 0x33ffff).rom(); +} /* verified from M68000 code */ diff --git a/src/mame/drivers/quizpun2.cpp b/src/mame/drivers/quizpun2.cpp index 1a3f322e2a2..86e6f0d9f5a 100644 --- a/src/mame/drivers/quizpun2.cpp +++ b/src/mame/drivers/quizpun2.cpp @@ -323,32 +323,35 @@ WRITE8_MEMBER(quizpun2_state::soundlatch_w) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(quizpun2_state::quizpun2_map) - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0x9fff ) AM_ROMBANK("bank1") - - AM_RANGE( 0xa000, 0xbfff ) AM_RAM_WRITE(fg_ram_w) AM_SHARE("fg_ram") - AM_RANGE( 0xc000, 0xcfff ) AM_RAM_WRITE(bg_ram_w) AM_SHARE("bg_ram") - - AM_RANGE( 0xd000, 0xd3ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE( 0xe000, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizpun2_state::quizpun2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x40, 0x40 ) AM_WRITE(irq_ack) - AM_RANGE( 0x50, 0x50 ) AM_WRITE(soundlatch_w) - AM_RANGE( 0x60, 0x60 ) AM_WRITE(rombank_w) - AM_RANGE( 0x70, 0x70 ) AM_WRITE(scroll_w) - AM_RANGE( 0x80, 0x80 ) AM_READ_PORT( "DSW" ) - AM_RANGE( 0x90, 0x90 ) AM_READ_PORT( "IN0" ) - AM_RANGE( 0xa0, 0xa0 ) AM_READ_PORT( "IN1" ) - AM_RANGE( 0xe0, 0xe0 ) AM_READWRITE(quizpun_protection_r, quizpun_protection_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizpun2_state::quizpun2_cop_map) - AM_RANGE( 0x000, 0x3ff ) AM_ROM AM_REGION("cop", 0) -ADDRESS_MAP_END +void quizpun2_state::quizpun2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + + map(0xa000, 0xbfff).ram().w(this, FUNC(quizpun2_state::fg_ram_w)).share("fg_ram"); + map(0xc000, 0xcfff).ram().w(this, FUNC(quizpun2_state::bg_ram_w)).share("bg_ram"); + + map(0xd000, 0xd3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe000, 0xffff).ram(); +} + +void quizpun2_state::quizpun2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).w(this, FUNC(quizpun2_state::irq_ack)); + map(0x50, 0x50).w(this, FUNC(quizpun2_state::soundlatch_w)); + map(0x60, 0x60).w(this, FUNC(quizpun2_state::rombank_w)); + map(0x70, 0x70).w(this, FUNC(quizpun2_state::scroll_w)); + map(0x80, 0x80).portr("DSW"); + map(0x90, 0x90).portr("IN0"); + map(0xa0, 0xa0).portr("IN1"); + map(0xe0, 0xe0).rw(this, FUNC(quizpun2_state::quizpun_protection_r), FUNC(quizpun2_state::quizpun_protection_w)); +} + +void quizpun2_state::quizpun2_cop_map(address_map &map) +{ + map(0x000, 0x3ff).rom().region("cop", 0); +} // quizpun @@ -471,18 +474,20 @@ WRITE8_MEMBER(quizpun2_state::quizpun_68705_port_c_w) Memory Maps - Sound CPU ***************************************************************************/ -ADDRESS_MAP_START(quizpun2_state::quizpun2_sound_map) - AM_RANGE( 0x0000, 0xf7ff ) AM_ROM - AM_RANGE( 0xf800, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(quizpun2_state::quizpun2_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITENOP // IRQ end - AM_RANGE( 0x20, 0x20 ) AM_WRITENOP // NMI end - AM_RANGE( 0x40, 0x40 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE( 0x60, 0x61 ) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END +void quizpun2_state::quizpun2_sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void quizpun2_state::quizpun2_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); // IRQ end + map(0x20, 0x20).nopw(); // NMI end + map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x60, 0x61).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} /*************************************************************************** Input Ports diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp index 9dbd87ecdd1..fd6774718e2 100644 --- a/src/mame/drivers/quizshow.cpp +++ b/src/mame/drivers/quizshow.cpp @@ -232,22 +232,23 @@ WRITE8_MEMBER(quizshow_state::main_ram_w) } -ADDRESS_MAP_START(quizshow_state::mem_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1802, 0x1802) AM_WRITE(audio_w) - AM_RANGE(0x1804, 0x1804) AM_WRITE(lamps1_w) - AM_RANGE(0x1808, 0x1808) AM_WRITE(lamps2_w) - AM_RANGE(0x1810, 0x1810) AM_WRITE(lamps3_w) - AM_RANGE(0x1820, 0x1820) AM_WRITE(tape_control_w) - AM_RANGE(0x1840, 0x1840) AM_WRITE(video_disable_w) - AM_RANGE(0x1881, 0x1881) AM_READ_PORT("IN0") - AM_RANGE(0x1882, 0x1882) AM_READ_PORT("IN1") - AM_RANGE(0x1884, 0x1884) AM_READ_PORT("IN2") - AM_RANGE(0x1888, 0x1888) AM_READ_PORT("IN3") - AM_RANGE(0x1900, 0x1900) AM_READ(timing_r) - AM_RANGE(0x1e00, 0x1fff) AM_RAM_WRITE(main_ram_w) AM_SHARE("main_ram") -ADDRESS_MAP_END +void quizshow_state::mem_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0bff).rom(); + map(0x1802, 0x1802).w(this, FUNC(quizshow_state::audio_w)); + map(0x1804, 0x1804).w(this, FUNC(quizshow_state::lamps1_w)); + map(0x1808, 0x1808).w(this, FUNC(quizshow_state::lamps2_w)); + map(0x1810, 0x1810).w(this, FUNC(quizshow_state::lamps3_w)); + map(0x1820, 0x1820).w(this, FUNC(quizshow_state::tape_control_w)); + map(0x1840, 0x1840).w(this, FUNC(quizshow_state::video_disable_w)); + map(0x1881, 0x1881).portr("IN0"); + map(0x1882, 0x1882).portr("IN1"); + map(0x1884, 0x1884).portr("IN2"); + map(0x1888, 0x1888).portr("IN3"); + map(0x1900, 0x1900).r(this, FUNC(quizshow_state::timing_r)); + map(0x1e00, 0x1fff).ram().w(this, FUNC(quizshow_state::main_ram_w)).share("main_ram"); +} /*************************************************************************** diff --git a/src/mame/drivers/qvt103.cpp b/src/mame/drivers/qvt103.cpp index 30368f877fc..3ff060680bc 100644 --- a/src/mame/drivers/qvt103.cpp +++ b/src/mame/drivers/qvt103.cpp @@ -39,19 +39,21 @@ u32 qvt103_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con return 0; } -ADDRESS_MAP_START(qvt103_state::mem_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("kbdmcu", i8741_device, upi41_master_r, upi41_master_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM +void qvt103_state::mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().region("maincpu", 0); + map(0x6000, 0x6001).rw("kbdmcu", FUNC(i8741_device::upi41_master_r), FUNC(i8741_device::upi41_master_w)); + map(0x8000, 0x87ff).ram(); //AM_RANGE(0xa000, 0xa03f) AM_DEVREADWRITE("vpac", crt9007_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_RAM // not entirely contiguous? -ADDRESS_MAP_END - -ADDRESS_MAP_START(qvt103_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("dart", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END + map(0xc000, 0xffff).ram(); // not entirely contiguous? +} + +void qvt103_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x14, 0x17).rw("dart", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x18, 0x1b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} static INPUT_PORTS_START( qvt103 ) INPUT_PORTS_END diff --git a/src/mame/drivers/qvt201.cpp b/src/mame/drivers/qvt201.cpp index 47e20088cfa..d5c0f862780 100644 --- a/src/mame/drivers/qvt201.cpp +++ b/src/mame/drivers/qvt201.cpp @@ -43,14 +43,15 @@ u32 qvt201_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, con return 0; } -ADDRESS_MAP_START(qvt201_state::mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("nvram") +void qvt201_state::mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8800, 0x8fff).ram().share("nvram"); //AM_RANGE(0x9000, 0x9007) AM_DEVREADWRITE("crtc", scn2672_device, read, write) - AM_RANGE(0x9800, 0x980f) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("dataram") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("attram") -ADDRESS_MAP_END + map(0x9800, 0x980f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0xc000, 0xdfff).ram().share("dataram"); + map(0xe000, 0xffff).ram().share("attram"); +} static INPUT_PORTS_START( qvt201 ) INPUT_PORTS_END diff --git a/src/mame/drivers/qvt6800.cpp b/src/mame/drivers/qvt6800.cpp index 6d6b3618dad..dc15a18e126 100644 --- a/src/mame/drivers/qvt6800.cpp +++ b/src/mame/drivers/qvt6800.cpp @@ -42,25 +42,27 @@ MC6845_UPDATE_ROW(qvt6800_state::update_row) { } -ADDRESS_MAP_START(qvt6800_state::qvt102_mem_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2800, 0x2803) AM_DEVWRITE("ctc", z80ctc_device, write) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x9800, 0x9801) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(qvt6800_state::qvt190_mem_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2500, 0x2501) AM_DEVREADWRITE("acia1", acia6850_device, read, write) - AM_RANGE(0x2600, 0x2601) AM_DEVREADWRITE("acia2", acia6850_device, read, write) - AM_RANGE(0x2800, 0x2800) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x2801, 0x2801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void qvt6800_state::qvt102_mem_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("nvram"); + map(0x2800, 0x2803).w("ctc", FUNC(z80ctc_device::write)); + map(0x4000, 0x47ff).ram().share("videoram"); + map(0x8000, 0x8000).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x8001, 0x8001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x9800, 0x9801).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe000, 0xffff).rom().region("maincpu", 0); +} + +void qvt6800_state::qvt190_mem_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2500, 0x2501).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x2600, 0x2601).rw("acia2", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x2800, 0x2800).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x4000, 0x47ff).ram().share("videoram"); + map(0x8000, 0xffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( qvt6800 ) INPUT_PORTS_END diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp index 21f26226829..e52a0bfc346 100644 --- a/src/mame/drivers/qx10.cpp +++ b/src/mame/drivers/qx10.cpp @@ -492,36 +492,38 @@ WRITE8_MEMBER( qx10_state::vram_bank_w ) } } -ADDRESS_MAP_START(qx10_state::qx10_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x8000, 0xdfff ) AM_RAMBANK("bank2") - AM_RANGE( 0xe000, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(qx10_state::qx10_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit8253_1", pit8253_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pit8253_2", pit8253_device, read, write) - AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("pic8259_master", pic8259_device, read, write) - AM_RANGE(0x0c, 0x0d) AM_DEVREADWRITE("pic8259_slave", pic8259_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("upd7201", z80dart_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("i8255", i8255_device, read, write) - AM_RANGE(0x18, 0x1b) AM_READ_PORT("DSW") AM_WRITE(qx10_18_w) - AM_RANGE(0x1c, 0x1f) AM_WRITE(prom_sel_w) - AM_RANGE(0x20, 0x23) AM_WRITE(cmos_sel_w) - AM_RANGE(0x2c, 0x2c) AM_READ_PORT("CONFIG") - AM_RANGE(0x2d, 0x2d) AM_READWRITE(vram_bank_r,vram_bank_w) - AM_RANGE(0x30, 0x33) AM_READWRITE(qx10_30_r, fdd_motor_w) - AM_RANGE(0x34, 0x35) AM_DEVICE("upd765", upd765a_device, map) - AM_RANGE(0x38, 0x39) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) +void qx10_state::qx10_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankrw("bank1"); + map(0x8000, 0xdfff).bankrw("bank2"); + map(0xe000, 0xffff).ram(); +} + +void qx10_state::qx10_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_pit_1, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x04, 0x07).rw(m_pit_2, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x08, 0x09).rw(m_pic_m, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0c, 0x0d).rw(m_pic_s, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x10, 0x13).rw(m_scc, FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); + map(0x14, 0x17).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x18, 0x1b).portr("DSW").w(this, FUNC(qx10_state::qx10_18_w)); + map(0x1c, 0x1f).w(this, FUNC(qx10_state::prom_sel_w)); + map(0x20, 0x23).w(this, FUNC(qx10_state::cmos_sel_w)); + map(0x2c, 0x2c).portr("CONFIG"); + map(0x2d, 0x2d).rw(this, FUNC(qx10_state::vram_bank_r), FUNC(qx10_state::vram_bank_w)); + map(0x30, 0x33).rw(this, FUNC(qx10_state::qx10_30_r), FUNC(qx10_state::fdd_motor_w)); + map(0x34, 0x35).m(m_fdc, FUNC(upd765a_device::map)); + map(0x38, 0x39).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); // AM_RANGE(0x3a, 0x3a) GDC zoom // AM_RANGE(0x3b, 0x3b) GDC light pen req - AM_RANGE(0x3c, 0x3d) AM_READWRITE(mc146818_r, mc146818_w) - AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("8237dma_1", am9517a_device, read, write) - AM_RANGE(0x50, 0x5f) AM_DEVREADWRITE("8237dma_2", am9517a_device, read, write) + map(0x3c, 0x3d).rw(this, FUNC(qx10_state::mc146818_r), FUNC(qx10_state::mc146818_w)); + map(0x40, 0x4f).rw(m_dma_1, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x50, 0x5f).rw(m_dma_2, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); // AM_RANGE(0xfc, 0xfd) Multi-Font comms -ADDRESS_MAP_END +} /* Input ports */ /* TODO: shift break */ @@ -663,9 +665,10 @@ WRITE16_MEMBER( qx10_state::vram_w ) COMBINE_DATA(&m_video_ram[offset + (0x20000 * bank)]); } -ADDRESS_MAP_START(qx10_state::upd7220_map) - AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r,vram_w) -ADDRESS_MAP_END +void qx10_state::upd7220_map(address_map &map) +{ + map(0x00000, 0x3ffff).rw(this, FUNC(qx10_state::vram_r), FUNC(qx10_state::vram_w)); +} static SLOT_INTERFACE_START(keyboard) SLOT_INTERFACE("qx10", QX10_KEYBOARD) diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp index 16e2f4265d5..922bd6ad413 100644 --- a/src/mame/drivers/r2dtank.cpp +++ b/src/mame/drivers/r2dtank.cpp @@ -326,26 +326,28 @@ WRITE8_MEMBER(r2dtank_state::pia_comp_w) } -ADDRESS_MAP_START(r2dtank_state::r2dtank_main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x6000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x8003) AM_DEVREAD("pia_main", pia6821_device, read) AM_WRITE(pia_comp_w) - AM_RANGE(0x8004, 0x8004) AM_READWRITE(audio_answer_r, audio_command_w) - AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xb001, 0xb001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xc000, 0xc007) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc800, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(r2dtank_state::r2dtank_audio_map) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE("pia_audio", pia6821_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_READWRITE(audio_command_r, audio_answer_w) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void r2dtank_state::r2dtank_main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("videoram"); + map(0x2000, 0x3fff).ram(); + map(0x4000, 0x5fff).ram().share("colorram"); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0x8003).r("pia_main", FUNC(pia6821_device::read)).w(this, FUNC(r2dtank_state::pia_comp_w)); + map(0x8004, 0x8004).rw(this, FUNC(r2dtank_state::audio_answer_r), FUNC(r2dtank_state::audio_command_w)); + map(0xb000, 0xb000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xb001, 0xb001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xc000, 0xc007).ram().share("nvram"); + map(0xc800, 0xffff).rom(); +} + + +void r2dtank_state::r2dtank_audio_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0xd000, 0xd003).rw("pia_audio", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf000, 0xf000).rw(this, FUNC(r2dtank_state::audio_command_r), FUNC(r2dtank_state::audio_answer_w)); + map(0xf800, 0xffff).rom(); +} diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp index e828666cc7f..ac511fb55ea 100644 --- a/src/mame/drivers/r2dx_v33.cpp +++ b/src/mame/drivers/r2dx_v33.cpp @@ -383,134 +383,143 @@ READ16_MEMBER(r2dx_v33_state::r2dx_debug_r) return 0xffff; } -ADDRESS_MAP_START(r2dx_v33_state::rdx_v33_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM // vectors copied here +void r2dx_v33_state::rdx_v33_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); // vectors copied here - AM_RANGE(0x00400, 0x00401) AM_WRITE(r2dx_tilemapdma_w) // tilemaps to private buffer - AM_RANGE(0x00402, 0x00403) AM_WRITE(r2dx_paldma_w) // palettes to private buffer + map(0x00400, 0x00401).w(this, FUNC(r2dx_v33_state::r2dx_tilemapdma_w)); // tilemaps to private buffer + map(0x00402, 0x00403).w(this, FUNC(r2dx_v33_state::r2dx_paldma_w)); // palettes to private buffer - AM_RANGE(0x00404, 0x00405) AM_WRITE(r2dx_rom_bank_w) - AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w) + map(0x00404, 0x00405).w(this, FUNC(r2dx_v33_state::r2dx_rom_bank_w)); + map(0x00406, 0x00407).w(this, FUNC(r2dx_v33_state::tile_bank_w)); - AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_dx_w) - AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_dy_w) - AM_RANGE(0x00424, 0x00425) AM_WRITE(r2dx_sdistl_w) - AM_RANGE(0x00426, 0x00427) AM_WRITE(r2dx_sdisth_w) - AM_RANGE(0x00428, 0x00429) AM_WRITE(r2dx_angle_w) + map(0x00420, 0x00421).w(this, FUNC(r2dx_v33_state::r2dx_dx_w)); + map(0x00422, 0x00423).w(this, FUNC(r2dx_v33_state::r2dx_dy_w)); + map(0x00424, 0x00425).w(this, FUNC(r2dx_v33_state::r2dx_sdistl_w)); + map(0x00426, 0x00427).w(this, FUNC(r2dx_v33_state::r2dx_sdisth_w)); + map(0x00428, 0x00429).w(this, FUNC(r2dx_v33_state::r2dx_angle_w)); - AM_RANGE(0x00430, 0x00431) AM_READ(r2dx_angle_r) - AM_RANGE(0x00432, 0x00433) AM_READ(r2dx_dist_r) - AM_RANGE(0x00434, 0x00435) AM_READ(r2dx_sin_r) - AM_RANGE(0x00436, 0x00437) AM_READ(r2dx_cos_r) + map(0x00430, 0x00431).r(this, FUNC(r2dx_v33_state::r2dx_angle_r)); + map(0x00432, 0x00433).r(this, FUNC(r2dx_v33_state::r2dx_dist_r)); + map(0x00434, 0x00435).r(this, FUNC(r2dx_v33_state::r2dx_sin_r)); + map(0x00436, 0x00437).r(this, FUNC(r2dx_v33_state::r2dx_cos_r)); - AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) + map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); //AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write) - AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // sprite buffering - AM_RANGE(0x006b0, 0x006b1) AM_WRITE(mcu_prog_w) // could be encryption key uploads just like raiden2.cpp ? - AM_RANGE(0x006b2, 0x006b3) AM_WRITE(mcu_prog_w2) + map(0x0068e, 0x0068f).nopw(); // sprite buffering + map(0x006b0, 0x006b1).w(this, FUNC(r2dx_v33_state::mcu_prog_w)); // could be encryption key uploads just like raiden2.cpp ? + map(0x006b2, 0x006b3).w(this, FUNC(r2dx_v33_state::mcu_prog_w2)); // AM_RANGE(0x006b4, 0x006b5) AM_WRITENOP // AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP - AM_RANGE(0x006bc, 0x006bd) AM_WRITE(mcu_prog_offs_w) + map(0x006bc, 0x006bd).w(this, FUNC(r2dx_v33_state::mcu_prog_offs_w)); // AM_RANGE(0x006be, 0x006bf) AM_WRITENOP // sprite protection not 100% verified as the same - AM_RANGE(0x006c0, 0x006c1) AM_READWRITE(sprite_prot_off_r, sprite_prot_off_w) - AM_RANGE(0x006c2, 0x006c3) AM_READWRITE(sprite_prot_src_seg_r, sprite_prot_src_seg_w) - AM_RANGE(0x006c6, 0x006c7) AM_WRITE(sprite_prot_dst1_w) - - AM_RANGE(0x006d8, 0x006d9) AM_WRITE(sprite_prot_x_w) - AM_RANGE(0x006da, 0x006db) AM_WRITE(sprite_prot_y_w) - AM_RANGE(0x006dc, 0x006dd) AM_READWRITE(sprite_prot_maxx_r, sprite_prot_maxx_w) - AM_RANGE(0x006de, 0x006df) AM_WRITE(sprite_prot_src_w) - - - AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w) - AM_RANGE(0x00740, 0x00741) AM_READ(r2dx_debug_r) - AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT") - AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x00762, 0x00763) AM_READ(sprite_prot_dst1_r) - - AM_RANGE(0x00780, 0x00781) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // single OKI chip on this version - - AM_RANGE(0x00800, 0x00fff) AM_RAM // copies eeprom here? - AM_RANGE(0x01000, 0x0bfff) AM_RAM - - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x0c800, 0x0cfff) AM_RAM - AM_RANGE(0x0d000, 0x0d7ff) AM_RAM //_WRITE(raiden2_background_w) AM_SHARE("back_data") - AM_RANGE(0x0d800, 0x0dfff) AM_RAM //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM //_WRITE(raiden2_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM //_WRITE(raiden2_text_w) AM_SHARE("text_data") - AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ - AM_RANGE(0x10000, 0x1efff) AM_RAM - AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - - AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("bank1") AM_WRITENOP - AM_RANGE(0x30000, 0xfffff) AM_ROMBANK("bank3") AM_WRITENOP -ADDRESS_MAP_END + map(0x006c0, 0x006c1).rw(this, FUNC(r2dx_v33_state::sprite_prot_off_r), FUNC(r2dx_v33_state::sprite_prot_off_w)); + map(0x006c2, 0x006c3).rw(this, FUNC(r2dx_v33_state::sprite_prot_src_seg_r), FUNC(r2dx_v33_state::sprite_prot_src_seg_w)); + map(0x006c6, 0x006c7).w(this, FUNC(r2dx_v33_state::sprite_prot_dst1_w)); + + map(0x006d8, 0x006d9).w(this, FUNC(r2dx_v33_state::sprite_prot_x_w)); + map(0x006da, 0x006db).w(this, FUNC(r2dx_v33_state::sprite_prot_y_w)); + map(0x006dc, 0x006dd).rw(this, FUNC(r2dx_v33_state::sprite_prot_maxx_r), FUNC(r2dx_v33_state::sprite_prot_maxx_w)); + map(0x006de, 0x006df).w(this, FUNC(r2dx_v33_state::sprite_prot_src_w)); + + + map(0x00700, 0x00701).w(this, FUNC(r2dx_v33_state::rdx_v33_eeprom_w)); + map(0x00740, 0x00741).r(this, FUNC(r2dx_v33_state::r2dx_debug_r)); + map(0x00744, 0x00745).portr("INPUT"); + map(0x0074c, 0x0074d).portr("SYSTEM"); + map(0x00762, 0x00763).r(this, FUNC(r2dx_v33_state::sprite_prot_dst1_r)); + + map(0x00780, 0x00780).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // single OKI chip on this version + + map(0x00800, 0x00fff).ram(); // copies eeprom here? + map(0x01000, 0x0bfff).ram(); + + map(0x0c000, 0x0c7ff).ram().share("sprites"); + map(0x0c800, 0x0cfff).ram(); + map(0x0d000, 0x0d7ff).ram(); //_WRITE(raiden2_background_w) AM_SHARE("back_data") + map(0x0d800, 0x0dfff).ram(); //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data") + map(0x0e000, 0x0e7ff).ram(); //_WRITE(raiden2_midground_w) AM_SHARE("mid_data") + map(0x0e800, 0x0f7ff).ram(); //_WRITE(raiden2_text_w) AM_SHARE("text_data") + map(0x0f800, 0x0ffff).ram(); /* Stack area */ + map(0x10000, 0x1efff).ram(); + map(0x1f000, 0x1ffff).ram(); //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + + map(0x20000, 0x2ffff).bankr("bank1").nopw(); + map(0x30000, 0xfffff).bankr("bank3").nopw(); +} -ADDRESS_MAP_START(r2dx_v33_state::nzeroteam_base_map) - AM_RANGE(0x00000, 0x003ff) AM_RAM //stack area +void r2dx_v33_state::nzeroteam_base_map(address_map &map) +{ + map(0x00000, 0x003ff).ram(); //stack area - AM_RANGE(0x00400, 0x00401) AM_WRITE(r2dx_tilemapdma_w) // tilemaps to private buffer - AM_RANGE(0x00402, 0x00403) AM_WRITE(r2dx_paldma_w) // palettes to private buffer + map(0x00400, 0x00401).w(this, FUNC(r2dx_v33_state::r2dx_tilemapdma_w)); // tilemaps to private buffer + map(0x00402, 0x00403).w(this, FUNC(r2dx_v33_state::r2dx_paldma_w)); // palettes to private buffer // 0x404 is bank on r2dx, this doesn't need it // AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w) // not the same? - AM_RANGE(0x00406, 0x00407) AM_NOP // always 6022, supposed to be the tile bank but ignores the actual value??? - - AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_dx_w) - AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_dy_w) - AM_RANGE(0x00424, 0x00425) AM_WRITE(r2dx_sdistl_w) - AM_RANGE(0x00426, 0x00427) AM_WRITE(r2dx_sdisth_w) - AM_RANGE(0x00428, 0x00429) AM_WRITE(r2dx_angle_w) - - AM_RANGE(0x00430, 0x00431) AM_READ(r2dx_angle_r) - AM_RANGE(0x00432, 0x00433) AM_READ(r2dx_dist_r) - AM_RANGE(0x00434, 0x00435) AM_READ(r2dx_sin_r) - AM_RANGE(0x00436, 0x00437) AM_READ(r2dx_cos_r) + map(0x00406, 0x00407).noprw(); // always 6022, supposed to be the tile bank but ignores the actual value??? + + map(0x00420, 0x00421).w(this, FUNC(r2dx_v33_state::r2dx_dx_w)); + map(0x00422, 0x00423).w(this, FUNC(r2dx_v33_state::r2dx_dy_w)); + map(0x00424, 0x00425).w(this, FUNC(r2dx_v33_state::r2dx_sdistl_w)); + map(0x00426, 0x00427).w(this, FUNC(r2dx_v33_state::r2dx_sdisth_w)); + map(0x00428, 0x00429).w(this, FUNC(r2dx_v33_state::r2dx_angle_w)); + + map(0x00430, 0x00431).r(this, FUNC(r2dx_v33_state::r2dx_angle_r)); + map(0x00432, 0x00433).r(this, FUNC(r2dx_v33_state::r2dx_dist_r)); + map(0x00434, 0x00435).r(this, FUNC(r2dx_v33_state::r2dx_sin_r)); + map(0x00436, 0x00437).r(this, FUNC(r2dx_v33_state::r2dx_cos_r)); + + map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + //map(0x00640, 0x006bf)rw("obj", FUNC(seibu_encrypted_sprite_device::read), FUNC(seibu_encrypted_sprite_device::write)); + map(0x0068e, 0x0068f).nopw(); // sprite buffering + map(0x006b0, 0x006b1).w(this, FUNC(r2dx_v33_state::mcu_prog_w)); + map(0x006b2, 0x006b3).w(this, FUNC(r2dx_v33_state::mcu_prog_w2)); +// map(0x006b4, 0x006b5).nopw(); +// map(0x006b6, 0x006b7).nopw(); + map(0x006bc, 0x006bd).w(this, FUNC(r2dx_v33_state::mcu_prog_offs_w)); +// map(0x006d8, 0x006d9).w(this, FUNC(r2dx_v33_state::bbbbll_w)); // scroll? +// map(0x006dc, 0x006dd).r(this, FUNC(r2dx_v33_state::nzerotea_unknown_r)); +// map(0x006de, 0x006df).w(this, FUNC(r2dx_v33_state::mcu_unkaa_w)); // mcu command related? +// map(0x00700, 0x00701).w(this, FUNC(r2dx_v33_state::rdx_v33_eeprom_w)); + +// map(0x00762, 0x00763).r(this, FUNC(r2dx_v33_state::nzerotea_unknown_r)); + + map(0x00780, 0x0079f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + + map(0x00800, 0x00fff).ram(); + map(0x01000, 0x0bfff).ram(); + + map(0x0c000, 0x0c7ff).ram().share("sprites"); + map(0x0c800, 0x0cfff).ram(); + map(0x0d000, 0x0d7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_background_w)).share("back_data"); + map(0x0d800, 0x0dfff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_foreground_w)).share("fore_data"); + map(0x0e000, 0x0e7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_midground_w)).share("mid_data"); + map(0x0e800, 0x0f7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_text_w)).share("text_data"); + map(0x0f800, 0x0ffff).ram(); /* Stack area */ + map(0x10000, 0x1efff).ram(); + map(0x1f000, 0x1ffff).ram(); //.w("palette", FUNC(palette_device::write)).share("palette"); + + map(0x20000, 0xfffff).rom().region("maincpu", 0x20000); +} - AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - //AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write) - AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // sprite buffering - AM_RANGE(0x006b0, 0x006b1) AM_WRITE(mcu_prog_w) - AM_RANGE(0x006b2, 0x006b3) AM_WRITE(mcu_prog_w2) -// AM_RANGE(0x006b4, 0x006b5) AM_WRITENOP -// AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP - AM_RANGE(0x006bc, 0x006bd) AM_WRITE(mcu_prog_offs_w) -// AM_RANGE(0x006d8, 0x006d9) AM_WRITE(bbbbll_w) // scroll? -// AM_RANGE(0x006dc, 0x006dd) AM_READ(nzerotea_unknown_r) -// AM_RANGE(0x006de, 0x006df) AM_WRITE(mcu_unkaa_w) // mcu command related? - //AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w) - -// AM_RANGE(0x00762, 0x00763) AM_READ(nzerotea_unknown_r) - - ;map(0x00780, 0x0079f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - - AM_RANGE(0x00800, 0x00fff) AM_RAM - AM_RANGE(0x01000, 0x0bfff) AM_RAM - - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x0c800, 0x0cfff) AM_RAM - AM_RANGE(0x0d000, 0x0d7ff) AM_RAM //_WRITE(raiden2_background_w) AM_SHARE("back_data") - AM_RANGE(0x0d800, 0x0dfff) AM_RAM //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM //_WRITE(raiden2_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM //_WRITE(raiden2_text_w) AM_SHARE("text_data") - AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ - AM_RANGE(0x10000, 0x1efff) AM_RAM - AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - - AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x20000 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(r2dx_v33_state::nzerotea_map) - AM_IMPORT_FROM( nzeroteam_base_map ) - AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") - AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT") - AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END +void r2dx_v33_state::nzerotea_map(address_map &map) +{ + nzeroteam_base_map(map); + map(0x00740, 0x00741).portr("DSW"); + map(0x00744, 0x00745).portr("INPUT"); + map(0x0074c, 0x0074d).portr("SYSTEM"); +} WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w) { @@ -521,13 +530,14 @@ WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w) m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } -ADDRESS_MAP_START(r2dx_v33_state::zerotm2k_map) - AM_IMPORT_FROM( nzeroteam_base_map ) - AM_RANGE(0x00740, 0x00741) AM_READ_PORT("P3_P4") - AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT") - AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x00748, 0x00749) AM_WRITE(zerotm2k_eeprom_w) -ADDRESS_MAP_END +void r2dx_v33_state::zerotm2k_map(address_map &map) +{ + nzeroteam_base_map(map); + map(0x00740, 0x00741).portr("P3_P4"); + map(0x00744, 0x00745).portr("INPUT"); + map(0x0074c, 0x0074d).portr("SYSTEM"); + map(0x00748, 0x00749).w(this, FUNC(r2dx_v33_state::zerotm2k_eeprom_w)); +} @@ -769,9 +779,10 @@ MACHINE_RESET_MEMBER(r2dx_v33_state,nzeroteam) mid_bank = 1; } -ADDRESS_MAP_START(r2dx_v33_state::r2dx_oki_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void r2dx_v33_state::r2dx_oki_map(address_map &map) +{ + map(0x00000, 0x3ffff).bankr("okibank"); +} MACHINE_CONFIG_START(r2dx_v33_state::rdx_v33) diff --git a/src/mame/drivers/r9751.cpp b/src/mame/drivers/r9751.cpp index cf6850d71a7..864790add63 100644 --- a/src/mame/drivers/r9751.cpp +++ b/src/mame/drivers/r9751.cpp @@ -619,16 +619,17 @@ WRITE32_MEMBER( r9751_state::r9751_mmio_fff8_w ) Address Maps ******************************************************************************/ -ADDRESS_MAP_START(r9751_state::r9751_mem) +void r9751_state::r9751_mem(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000,0x00ffffff) AM_RAM AM_SHARE("main_ram") // 16MB - AM_RANGE(0x08000000,0x0800ffff) AM_ROM AM_REGION("prom", 0) - AM_RANGE(0x5FF00000,0x5FFFFFFF) AM_READWRITE(r9751_mmio_5ff_r, r9751_mmio_5ff_w) - AM_RANGE(0xFF010000,0xFF01FFFF) AM_READWRITE(r9751_mmio_ff01_r, r9751_mmio_ff01_w) - AM_RANGE(0xFF050000,0xFF06FFFF) AM_READWRITE(r9751_mmio_ff05_r, r9751_mmio_ff05_w) - AM_RANGE(0xFFF80000,0xFFF8FFFF) AM_READWRITE(r9751_mmio_fff8_r, r9751_mmio_fff8_w) + map(0x00000000, 0x00ffffff).ram().share("main_ram"); // 16MB + map(0x08000000, 0x0800ffff).rom().region("prom", 0); + map(0x5FF00000, 0x5FFFFFFF).rw(this, FUNC(r9751_state::r9751_mmio_5ff_r), FUNC(r9751_state::r9751_mmio_5ff_w)); + map(0xFF010000, 0xFF01FFFF).rw(this, FUNC(r9751_state::r9751_mmio_ff01_r), FUNC(r9751_state::r9751_mmio_ff01_w)); + map(0xFF050000, 0xFF06FFFF).rw(this, FUNC(r9751_state::r9751_mmio_ff05_r), FUNC(r9751_state::r9751_mmio_ff05_w)); + map(0xFFF80000, 0xFFF8FFFF).rw(this, FUNC(r9751_state::r9751_mmio_fff8_r), FUNC(r9751_state::r9751_mmio_fff8_w)); //AM_RANGE(0xffffff00,0xffffffff) AM_RAM // Unknown area -ADDRESS_MAP_END +} /****************************************************************************** Input Ports diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp index 1604313fed1..7018c4b95ab 100644 --- a/src/mame/drivers/rabbit.cpp +++ b/src/mame/drivers/rabbit.cpp @@ -713,40 +713,41 @@ WRITE32_MEMBER(rabbit_state::eeprom_write) } } -ADDRESS_MAP_START(rabbit_state::rabbit_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x000000, 0x000003) AM_WRITENOP // bug in code / emulation? - AM_RANGE(0x000010, 0x000013) AM_WRITENOP // bug in code / emulation? - AM_RANGE(0x000024, 0x000027) AM_WRITENOP // bug in code / emulation? - AM_RANGE(0x00719c, 0x00719f) AM_WRITENOP // bug in code / emulation? - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS") AM_WRITE(eeprom_write) - AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status? +void rabbit_state::rabbit_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x000000, 0x000003).nopw(); // bug in code / emulation? + map(0x000010, 0x000013).nopw(); // bug in code / emulation? + map(0x000024, 0x000027).nopw(); // bug in code / emulation? + map(0x00719c, 0x00719f).nopw(); // bug in code / emulation? + map(0x200000, 0x200003).portr("INPUTS").w(this, FUNC(rabbit_state::eeprom_write)); + map(0x400010, 0x400013).r(this, FUNC(rabbit_state::randomrabbits)); // gfx chip status? /* this lot are probably gfxchip/blitter etc. related */ - AM_RANGE(0x400010, 0x400013) AM_WRITEONLY AM_SHARE("viewregs0" ) - AM_RANGE(0x400100, 0x400117) AM_WRITEONLY AM_SHARE("tilemap_regs.0" ) // tilemap regs1 - AM_RANGE(0x400120, 0x400137) AM_WRITEONLY AM_SHARE("tilemap_regs.1" ) // tilemap regs2 - AM_RANGE(0x400140, 0x400157) AM_WRITEONLY AM_SHARE("tilemap_regs.2" ) // tilemap regs3 - AM_RANGE(0x400160, 0x400177) AM_WRITEONLY AM_SHARE("tilemap_regs.3" ) // tilemap regs4 - AM_RANGE(0x400200, 0x40021b) AM_WRITEONLY AM_SHARE("spriteregs" ) // sprregs? - AM_RANGE(0x400300, 0x400303) AM_WRITE(rombank_w) // used during rom testing, rombank/area select + something else? - AM_RANGE(0x400400, 0x400413) AM_WRITEONLY AM_SHARE("viewregs6" ) // some global controls? (brightness etc.?) - AM_RANGE(0x400500, 0x400503) AM_WRITEONLY AM_SHARE("viewregs7" ) - AM_RANGE(0x400700, 0x40070f) AM_WRITE(blitter_w) AM_SHARE("blitterregs" ) - AM_RANGE(0x400800, 0x40080f) AM_WRITEONLY AM_SHARE("viewregs9" ) // never changes? - AM_RANGE(0x400900, 0x4009ff) AM_DEVREADWRITE16("i5000snd", i5000snd_device, read, write, 0xffffffff) + map(0x400010, 0x400013).writeonly().share("viewregs0"); + map(0x400100, 0x400117).writeonly().share("tilemap_regs.0"); // tilemap regs1 + map(0x400120, 0x400137).writeonly().share("tilemap_regs.1"); // tilemap regs2 + map(0x400140, 0x400157).writeonly().share("tilemap_regs.2"); // tilemap regs3 + map(0x400160, 0x400177).writeonly().share("tilemap_regs.3"); // tilemap regs4 + map(0x400200, 0x40021b).writeonly().share("spriteregs"); // sprregs? + map(0x400300, 0x400303).w(this, FUNC(rabbit_state::rombank_w)); // used during rom testing, rombank/area select + something else? + map(0x400400, 0x400413).writeonly().share("viewregs6"); // some global controls? (brightness etc.?) + map(0x400500, 0x400503).writeonly().share("viewregs7"); + map(0x400700, 0x40070f).w(this, FUNC(rabbit_state::blitter_w)).share("blitterregs"); + map(0x400800, 0x40080f).writeonly().share("viewregs9"); // never changes? + map(0x400900, 0x4009ff).rw("i5000snd", FUNC(i5000snd_device::read), FUNC(i5000snd_device::write)); /* hmm */ - AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("viewregs10" ) + map(0x479700, 0x479713).writeonly().share("viewregs10"); - AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK("bank1") // data (gfx / sound) rom readback for ROM testing + map(0x440000, 0x47ffff).bankr("bank1"); // data (gfx / sound) rom readback for ROM testing /* tilemaps */ - AM_RANGE(0x480000, 0x483fff) AM_READWRITE(tilemap0_r,tilemap0_w) - AM_RANGE(0x484000, 0x487fff) AM_READWRITE(tilemap1_r,tilemap1_w) - AM_RANGE(0x488000, 0x48bfff) AM_READWRITE(tilemap2_r,tilemap2_w) - AM_RANGE(0x48c000, 0x48ffff) AM_READWRITE(tilemap3_r,tilemap3_w) - AM_RANGE(0x494000, 0x497fff) AM_RAM AM_SHARE("spriteram") // sprites? - AM_RANGE(0x4a0000, 0x4affff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x480000, 0x483fff).rw(this, FUNC(rabbit_state::tilemap0_r), FUNC(rabbit_state::tilemap0_w)); + map(0x484000, 0x487fff).rw(this, FUNC(rabbit_state::tilemap1_r), FUNC(rabbit_state::tilemap1_w)); + map(0x488000, 0x48bfff).rw(this, FUNC(rabbit_state::tilemap2_r), FUNC(rabbit_state::tilemap2_w)); + map(0x48c000, 0x48ffff).rw(this, FUNC(rabbit_state::tilemap3_r), FUNC(rabbit_state::tilemap3_w)); + map(0x494000, 0x497fff).ram().share("spriteram"); // sprites? + map(0x4a0000, 0x4affff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xff0000, 0xffffff).ram(); +} static INPUT_PORTS_START( rabbit ) diff --git a/src/mame/drivers/rad_eu3a05.cpp b/src/mame/drivers/rad_eu3a05.cpp index 1236e3bf988..93fd0efbe01 100644 --- a/src/mame/drivers/rad_eu3a05.cpp +++ b/src/mame/drivers/rad_eu3a05.cpp @@ -903,79 +903,81 @@ READ8_MEMBER(radica_eu3a05_state::read_full_space) return fullbankspace.read_byte(offset); } -ADDRESS_MAP_START(radica_eu3a05_state::radicasi_map) +void radica_eu3a05_state::radicasi_map(address_map &map) +{ // can the addresses move around? - AM_RANGE(0x0000, 0x05ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x0600, 0x3dff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x3e00, 0x3fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4800, 0x49ff) AM_RAM AM_SHARE("palram") + map(0x0000, 0x05ff).ram().share("ram"); + map(0x0600, 0x3dff).ram().share("vram"); + map(0x3e00, 0x3fff).ram().share("spriteram"); + map(0x4800, 0x49ff).ram().share("palram"); // 500x system regs? - AM_RANGE(0x5003, 0x5003) AM_READ(radicasi_5003_r) - AM_RANGE(0x500b, 0x500b) AM_READ(radicasi_pal_ntsc_r) // PAL / NTSC flag at least - AM_RANGE(0x500c, 0x500c) AM_WRITE(radicasi_rombank_hi_w) - AM_RANGE(0x500d, 0x500d) AM_READWRITE(radicasi_rombank_lo_r, radicasi_rombank_lo_w) + map(0x5003, 0x5003).r(this, FUNC(radica_eu3a05_state::radicasi_5003_r)); + map(0x500b, 0x500b).r(this, FUNC(radica_eu3a05_state::radicasi_pal_ntsc_r)); // PAL / NTSC flag at least + map(0x500c, 0x500c).w(this, FUNC(radica_eu3a05_state::radicasi_rombank_hi_w)); + map(0x500d, 0x500d).rw(this, FUNC(radica_eu3a05_state::radicasi_rombank_lo_r), FUNC(radica_eu3a05_state::radicasi_rombank_lo_w)); // 501x DMA controller - AM_RANGE(0x500F, 0x500F) AM_READWRITE(radicasi_dmasrc_lo_r, radicasi_dmasrc_lo_w) - AM_RANGE(0x5010, 0x5010) AM_READWRITE(radicasi_dmasrc_md_r, radicasi_dmasrc_md_w) - AM_RANGE(0x5011, 0x5011) AM_READWRITE(radicasi_dmasrc_hi_r, radicasi_dmasrc_hi_w) + map(0x500F, 0x500F).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasrc_lo_r), FUNC(radica_eu3a05_state::radicasi_dmasrc_lo_w)); + map(0x5010, 0x5010).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasrc_md_r), FUNC(radica_eu3a05_state::radicasi_dmasrc_md_w)); + map(0x5011, 0x5011).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasrc_hi_r), FUNC(radica_eu3a05_state::radicasi_dmasrc_hi_w)); - AM_RANGE(0x5012, 0x5012) AM_READWRITE(radicasi_dmadst_lo_r, radicasi_dmadst_lo_w) - AM_RANGE(0x5013, 0x5013) AM_READWRITE(radicasi_dmadst_hi_r, radicasi_dmadst_hi_w) + map(0x5012, 0x5012).rw(this, FUNC(radica_eu3a05_state::radicasi_dmadst_lo_r), FUNC(radica_eu3a05_state::radicasi_dmadst_lo_w)); + map(0x5013, 0x5013).rw(this, FUNC(radica_eu3a05_state::radicasi_dmadst_hi_r), FUNC(radica_eu3a05_state::radicasi_dmadst_hi_w)); - AM_RANGE(0x5014, 0x5014) AM_READWRITE(radicasi_dmasize_lo_r, radicasi_dmasize_lo_w) - AM_RANGE(0x5015, 0x5015) AM_READWRITE(radicasi_dmasize_hi_r, radicasi_dmasize_hi_w) + map(0x5014, 0x5014).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasize_lo_r), FUNC(radica_eu3a05_state::radicasi_dmasize_lo_w)); + map(0x5015, 0x5015).rw(this, FUNC(radica_eu3a05_state::radicasi_dmasize_hi_r), FUNC(radica_eu3a05_state::radicasi_dmasize_hi_w)); - AM_RANGE(0x5016, 0x5016) AM_READWRITE(radicasi_dmatrg_r, radicasi_dmatrg_w) + map(0x5016, 0x5016).rw(this, FUNC(radica_eu3a05_state::radicasi_dmatrg_r), FUNC(radica_eu3a05_state::radicasi_dmatrg_w)); // 502x - 503x video regs area? - AM_RANGE(0x5020, 0x5026) AM_RAM // unknown, space invaders sets these to fixed values, tetris has them as 00 - AM_RANGE(0x5027, 0x5027) AM_WRITE(radicasi_vidctrl_w) + map(0x5020, 0x5026).ram(); // unknown, space invaders sets these to fixed values, tetris has them as 00 + map(0x5027, 0x5027).w(this, FUNC(radica_eu3a05_state::radicasi_vidctrl_w)); - AM_RANGE(0x5029, 0x5029) AM_READWRITE(radicasi_tile_gfxbase_lo_r, radicasi_tile_gfxbase_lo_w) // tilebase - AM_RANGE(0x502a, 0x502a) AM_READWRITE(radicasi_tile_gfxbase_hi_r, radicasi_tile_gfxbase_hi_w) // tilebase + map(0x5029, 0x5029).rw(this, FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_lo_r), FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_lo_w)); // tilebase + map(0x502a, 0x502a).rw(this, FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_hi_r), FUNC(radica_eu3a05_state::radicasi_tile_gfxbase_hi_w)); // tilebase - AM_RANGE(0x502b, 0x502b) AM_READWRITE(radicasi_sprite_gfxbase_lo_r, radicasi_sprite_gfxbase_lo_w) // tilebase (spr?) - AM_RANGE(0x502c, 0x502c) AM_READWRITE(radicasi_sprite_gfxbase_hi_r, radicasi_sprite_gfxbase_hi_w) // tilebase (spr?) + map(0x502b, 0x502b).rw(this, FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_lo_r), FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_lo_w)); // tilebase (spr?) + map(0x502c, 0x502c).rw(this, FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_hi_r), FUNC(radica_eu3a05_state::radicasi_sprite_gfxbase_hi_w)); // tilebase (spr?) - AM_RANGE(0x5031, 0x5032) AM_READWRITE(radicasi_sprite_bg_scroll_r, radicasi_sprite_bg_scroll_w) + map(0x5031, 0x5032).rw(this, FUNC(radica_eu3a05_state::radicasi_sprite_bg_scroll_r), FUNC(radica_eu3a05_state::radicasi_sprite_bg_scroll_w)); // 504x GPIO area? - AM_RANGE(0x5040, 0x5046) AM_DEVREADWRITE("gpio", radica6502_gpio_device, gpio_r, gpio_w) - AM_RANGE(0x5048, 0x504a) AM_DEVWRITE("gpio", radica6502_gpio_device, gpio_unk_w) + map(0x5040, 0x5046).rw("gpio", FUNC(radica6502_gpio_device::gpio_r), FUNC(radica6502_gpio_device::gpio_w)); + map(0x5048, 0x504a).w("gpio", FUNC(radica6502_gpio_device::gpio_unk_w)); // 506x unknown - AM_RANGE(0x5060, 0x506d) AM_RAM // read/written by tetris + map(0x5060, 0x506d).ram(); // read/written by tetris // 508x sound - AM_RANGE(0x5080, 0x5091) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_addr_r, radicasi_sound_addr_w) - AM_RANGE(0x5092, 0x50a3) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_size_r, radicasi_sound_size_w) - AM_RANGE(0x50a4, 0x50a4) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_unk_r, radicasi_sound_unk_w) - AM_RANGE(0x50a5, 0x50a5) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_trigger_r, radicasi_sound_trigger_w) + map(0x5080, 0x5091).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_addr_r), FUNC(radica6502_sound_device::radicasi_sound_addr_w)); + map(0x5092, 0x50a3).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_size_r), FUNC(radica6502_sound_device::radicasi_sound_size_w)); + map(0x50a4, 0x50a4).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_unk_r), FUNC(radica6502_sound_device::radicasi_sound_unk_w)); + map(0x50a5, 0x50a5).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_trigger_r), FUNC(radica6502_sound_device::radicasi_sound_trigger_w)); - AM_RANGE(0x50a8, 0x50a8) AM_DEVREAD("6ch_sound", radica6502_sound_device, radicasi_50a8_r) // possible 'stopped' status of above channels, waits for it to be 0x3f in places + map(0x50a8, 0x50a8).r("6ch_sound", FUNC(radica6502_sound_device::radicasi_50a8_r)); // possible 'stopped' status of above channels, waits for it to be 0x3f in places - AM_RANGE(0x50a9, 0x50a9) AM_READWRITE(radicasi_50a9_r, radicasi_50a9_w) + map(0x50a9, 0x50a9).rw(this, FUNC(radica_eu3a05_state::radicasi_50a9_r), FUNC(radica_eu3a05_state::radicasi_50a9_w)); //AM_RANGE(0x5000, 0x50ff) AM_RAM - AM_RANGE(0x6000, 0xdfff) AM_DEVICE("bank", address_map_bank_device, amap8) + map(0x6000, 0xdfff).m(m_bank, FUNC(address_map_bank_device::amap8)); - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x3f8000) + map(0xe000, 0xffff).rom().region("maincpu", 0x3f8000); // not sure how these work, might be a modified 6502 core instead. - AM_RANGE(0xfffa, 0xfffb) AM_READ(radicasi_nmi_vector_r) - AM_RANGE(0xfffe, 0xffff) AM_READ(radicasi_irq_vector_r) -ADDRESS_MAP_END + map(0xfffa, 0xfffb).r(this, FUNC(radica_eu3a05_state::radicasi_nmi_vector_r)); + map(0xfffe, 0xffff).r(this, FUNC(radica_eu3a05_state::radicasi_irq_vector_r)); +} -ADDRESS_MAP_START(radica_eu3a05_state::radicasi_bank_map) - AM_RANGE(0x000000, 0xffffff) AM_NOP // shut up any logging when video params are invalid - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x400000, 0x40ffff) AM_RAM // ?? only ever cleared maybe a mirror of below? - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("pixram") // Qix writes here and sets the tile base here instead of ROM so it can have a pixel layer -ADDRESS_MAP_END +void radica_eu3a05_state::radicasi_bank_map(address_map &map) +{ + map(0x000000, 0xffffff).noprw(); // shut up any logging when video params are invalid + map(0x000000, 0x3fffff).rom().region("maincpu", 0); + map(0x400000, 0x40ffff).ram(); // ?? only ever cleared maybe a mirror of below? + map(0x800000, 0x80ffff).ram().share("pixram"); // Qix writes here and sets the tile base here instead of ROM so it can have a pixel layer +} static INPUT_PORTS_START( rad_sinv ) PORT_START("IN0") diff --git a/src/mame/drivers/rad_eu3a14.cpp b/src/mame/drivers/rad_eu3a14.cpp index 6af2e96a04a..af8808bd8a9 100644 --- a/src/mame/drivers/rad_eu3a14.cpp +++ b/src/mame/drivers/rad_eu3a14.cpp @@ -462,71 +462,73 @@ READ8_MEMBER(radica_eu3a14_state::radicasi_pal_ntsc_r) //return 0x00; // PAL } -ADDRESS_MAP_START(radica_eu3a14_state::bank_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void radica_eu3a14_state::bank_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(radica_eu3a14_state::radica_eu3a14_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x1fff) AM_RAM AM_SHARE("mainram") // 200-9ff is sprites? a00 - ??? is tilemap? +void radica_eu3a14_state::radica_eu3a14_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x1fff).ram().share("mainram"); // 200-9ff is sprites? a00 - ??? is tilemap? - AM_RANGE(0x3000, 0x3fff) AM_RAM // runs code from here + map(0x3000, 0x3fff).ram(); // runs code from here - AM_RANGE(0x4800, 0x4bff) AM_RAM AM_SHARE("palram") + map(0x4800, 0x4bff).ram().share("palram"); // similar to eu3a05, at least for pal flags and rom banking - AM_RANGE(0x5007, 0x5007) AM_NOP - AM_RANGE(0x5008, 0x5008) AM_WRITENOP // startup - AM_RANGE(0x5009, 0x5009) AM_NOP - AM_RANGE(0x500a, 0x500a) AM_WRITENOP // startup - AM_RANGE(0x500b, 0x500b) AM_READ(radicasi_pal_ntsc_r) AM_WRITENOP // PAL / NTSC flag at least - AM_RANGE(0x500c, 0x500c) AM_WRITE(radicasi_rombank_hi_w) - AM_RANGE(0x500d, 0x500d) AM_READWRITE(radicasi_rombank_lo_r, radicasi_rombank_lo_w) + map(0x5007, 0x5007).noprw(); + map(0x5008, 0x5008).nopw(); // startup + map(0x5009, 0x5009).noprw(); + map(0x500a, 0x500a).nopw(); // startup + map(0x500b, 0x500b).r(this, FUNC(radica_eu3a14_state::radicasi_pal_ntsc_r)).nopw(); // PAL / NTSC flag at least + map(0x500c, 0x500c).w(this, FUNC(radica_eu3a14_state::radicasi_rombank_hi_w)); + map(0x500d, 0x500d).rw(this, FUNC(radica_eu3a14_state::radicasi_rombank_lo_r), FUNC(radica_eu3a14_state::radicasi_rombank_lo_w)); // DMA is similar to, but not the same as eu3a05 - AM_RANGE(0x500f, 0x5017) AM_RAM AM_SHARE("dmaparams") - AM_RANGE(0x5018, 0x5018) AM_READWRITE(dma_trigger_r, dma_trigger_w) + map(0x500f, 0x5017).ram().share("dmaparams"); + map(0x5018, 0x5018).rw(this, FUNC(radica_eu3a14_state::dma_trigger_r), FUNC(radica_eu3a14_state::dma_trigger_w)); // probably GPIO like eu3a05, although it access 47/48 as unknown instead of 48/49/4a - AM_RANGE(0x5040, 0x5040) AM_WRITENOP - AM_RANGE(0x5041, 0x5041) AM_READ_PORT("IN0") - AM_RANGE(0x5042, 0x5042) AM_WRITENOP - AM_RANGE(0x5043, 0x5043) AM_NOP - AM_RANGE(0x5044, 0x5044) AM_WRITENOP - AM_RANGE(0x5045, 0x5045) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x5046, 0x5046) AM_WRITENOP - AM_RANGE(0x5047, 0x5047) AM_WRITENOP - AM_RANGE(0x5048, 0x5048) AM_WRITENOP + map(0x5040, 0x5040).nopw(); + map(0x5041, 0x5041).portr("IN0"); + map(0x5042, 0x5042).nopw(); + map(0x5043, 0x5043).noprw(); + map(0x5044, 0x5044).nopw(); + map(0x5045, 0x5045).portr("IN1").nopw(); + map(0x5046, 0x5046).nopw(); + map(0x5047, 0x5047).nopw(); + map(0x5048, 0x5048).nopw(); // sound appears to be the same as eu3a05 - AM_RANGE(0x5080, 0x5091) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_addr_r, radicasi_sound_addr_w) - AM_RANGE(0x5092, 0x50a3) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_size_r, radicasi_sound_size_w) - AM_RANGE(0x50a4, 0x50a4) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_unk_r, radicasi_sound_unk_w) // read frequently on this - AM_RANGE(0x50a5, 0x50a5) AM_DEVREADWRITE("6ch_sound", radica6502_sound_device, radicasi_sound_trigger_r, radicasi_sound_trigger_w) - AM_RANGE(0x50a6, 0x50a6) AM_WRITENOP // startup - AM_RANGE(0x50a7, 0x50a7) AM_WRITENOP // startup - AM_RANGE(0x50a8, 0x50a8) AM_DEVREAD("6ch_sound", radica6502_sound_device, radicasi_50a8_r) - AM_RANGE(0x50a9, 0x50a9) AM_WRITENOP // startup + map(0x5080, 0x5091).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_addr_r), FUNC(radica6502_sound_device::radicasi_sound_addr_w)); + map(0x5092, 0x50a3).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_size_r), FUNC(radica6502_sound_device::radicasi_sound_size_w)); + map(0x50a4, 0x50a4).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_unk_r), FUNC(radica6502_sound_device::radicasi_sound_unk_w)); // read frequently on this + map(0x50a5, 0x50a5).rw("6ch_sound", FUNC(radica6502_sound_device::radicasi_sound_trigger_r), FUNC(radica6502_sound_device::radicasi_sound_trigger_w)); + map(0x50a6, 0x50a6).nopw(); // startup + map(0x50a7, 0x50a7).nopw(); // startup + map(0x50a8, 0x50a8).r("6ch_sound", FUNC(radica6502_sound_device::radicasi_50a8_r)); + map(0x50a9, 0x50a9).nopw(); // startup // video regs are here this time - AM_RANGE(0x5100, 0x5100) AM_RAM - AM_RANGE(0x5103, 0x5106) AM_RAM - AM_RANGE(0x5107, 0x5107) AM_RAM // on transitions, maybe layer disables? + map(0x5100, 0x5100).ram(); + map(0x5103, 0x5106).ram(); + map(0x5107, 0x5107).ram(); // on transitions, maybe layer disables? - AM_RANGE(0x5110, 0x5112) AM_RAM // startup - AM_RANGE(0x5113, 0x5113) AM_RAM // written with tilebase? - AM_RANGE(0x5114, 0x5115) AM_RAM AM_SHARE("tilebase") - AM_RANGE(0x5116, 0x5117) AM_RAM - AM_RANGE(0x5121, 0x5124) AM_RAM AM_SHARE("scrollregs") - AM_RANGE(0x5150, 0x5150) AM_RAM // startup - AM_RANGE(0x5151, 0x5153) AM_RAM // startup + map(0x5110, 0x5112).ram(); // startup + map(0x5113, 0x5113).ram(); // written with tilebase? + map(0x5114, 0x5115).ram().share("tilebase"); + map(0x5116, 0x5117).ram(); + map(0x5121, 0x5124).ram().share("scrollregs"); + map(0x5150, 0x5150).ram(); // startup + map(0x5151, 0x5153).ram(); // startup - AM_RANGE(0x6000, 0xdfff) AM_DEVICE("bank", address_map_bank_device, amap8) + map(0x6000, 0xdfff).m(m_bank, FUNC(address_map_bank_device::amap8)); - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) + map(0xe000, 0xffff).rom().region("maincpu", 0x0000); - AM_RANGE(0xfffe, 0xffff) AM_READ(irq_vector_r) -ADDRESS_MAP_END + map(0xfffe, 0xffff).r(this, FUNC(radica_eu3a14_state::irq_vector_r)); +} READ8_MEMBER(radica_eu3a14_state::dma_trigger_r) { diff --git a/src/mame/drivers/radio86.cpp b/src/mame/drivers/radio86.cpp index 245edc71c29..41c4a6fb843 100644 --- a/src/mame/drivers/radio86.cpp +++ b/src/mame/drivers/radio86.cpp @@ -25,81 +25,89 @@ /* Address maps */ -ADDRESS_MAP_START(radio86_state::radio86_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) +void radio86_state::radio86_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0x7fff).ram(); // RAM + map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc); //AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(radio86_state::radio86_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x00, 0xff ) AM_READWRITE(radio_io_r,radio_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(radio86_state::rk7007_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x80, 0x83 ) AM_DEVREADWRITE("ms7007", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(radio86_state::radio86rom_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(radio86_state::radio86ram_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0xdfff ) AM_RAM // RAM - AM_RANGE( 0xe000, 0xe7ff ) AM_ROM // System ROM page 2 - AM_RANGE( 0xe800, 0xf5ff ) AM_RAM // RAM - AM_RANGE( 0xf700, 0xf703 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE( 0xf780, 0xf7bf ) AM_DEVREADWRITE("i8275", i8275_device, read, write) // video - AM_RANGE( 0xf684, 0xf687 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) - AM_RANGE( 0xf688, 0xf688 ) AM_WRITE(radio86_pagesel ) - AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM page 1 -ADDRESS_MAP_END - -ADDRESS_MAP_START(radio86_state::radio86_16_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0x3fff ) AM_RAM // RAM - AM_RANGE( 0x4000, 0x7fff ) AM_READ(radio_cpu_state_r) - AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) + map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video + map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf000, 0xffff).rom(); // System ROM +} + +void radio86_state::radio86_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0xff).rw(this, FUNC(radio86_state::radio_io_r), FUNC(radio86_state::radio_io_w)); +} + +void radio86_state::rk7007_io(address_map &map) +{ + map.unmap_value_high(); + map(0x80, 0x83).rw("ms7007", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void radio86_state::radio86rom_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0x7fff).ram(); // RAM + map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc); + map(0xa000, 0xa003).rw(m_ppi8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc); + map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video + map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf000, 0xffff).rom(); // System ROM +} + +void radio86_state::radio86ram_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0xdfff).ram(); // RAM + map(0xe000, 0xe7ff).rom(); // System ROM page 2 + map(0xe800, 0xf5ff).ram(); // RAM + map(0xf700, 0xf703).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf780, 0xf7bf).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)); // video + map(0xf684, 0xf687).rw(m_ppi8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf688, 0xf688).w(this, FUNC(radio86_state::radio86_pagesel)); + map(0xf800, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf800, 0xffff).rom(); // System ROM page 1 +} + +void radio86_state::radio86_16_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0x3fff).ram(); // RAM + map(0x4000, 0x7fff).r(this, FUNC(radio86_state::radio_cpu_state_r)); + map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc); //AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END + map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video + map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf000, 0xffff).rom(); // System ROM +} -ADDRESS_MAP_START(radio86_state::mikron2_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0xc000, 0xc003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x00fc) +void radio86_state::mikron2_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0x7fff).ram(); // RAM + map(0xc000, 0xc003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x00fc); //AM_RANGE( 0xc100, 0xc103 ) AM_DEVREADWRITE_LEGACY("ppi8255_2", i8255a_r, i8255a_w) AM_MIRROR(0x00fc) - AM_RANGE( 0xc200, 0xc201 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x00fe) // video - AM_RANGE( 0xc300, 0xc3ff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(radio86_state::impuls03_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) - AM_RANGE( 0xa000, 0xbfff ) AM_ROM // Basic ROM - AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA - AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END + map(0xc200, 0xc201).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x00fe); // video + map(0xc300, 0xc3ff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf000, 0xffff).rom(); // System ROM +} + +void radio86_state::impuls03_mem(address_map &map) +{ + map(0x0000, 0x0fff).bankrw("bank1"); // First bank + map(0x1000, 0x7fff).ram(); // RAM + map(0x8000, 0x8003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)).mirror(0x1ffc); + map(0xa000, 0xbfff).rom(); // Basic ROM + map(0xc000, 0xc001).rw("i8275", FUNC(i8275_device::read), FUNC(i8275_device::write)).mirror(0x1ffe); // video + map(0xe000, 0xffff).w(m_dma8257, FUNC(i8257_device::write)); // DMA + map(0xf000, 0xffff).rom(); // System ROM +} /* Input ports */ INPUT_PORTS_START( radio86 ) diff --git a/src/mame/drivers/raiden.cpp b/src/mame/drivers/raiden.cpp index 0d1984df510..a3beac779b7 100644 --- a/src/mame/drivers/raiden.cpp +++ b/src/mame/drivers/raiden.cpp @@ -87,105 +87,113 @@ /******************************************************************************/ -ADDRESS_MAP_START(raiden_state::main_map) - AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x0a000, 0x0a00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_SHARE("videoram") - AM_RANGE(0x0e000, 0x0e001) AM_READ_PORT("P1_P2") - AM_RANGE(0x0e002, 0x0e003) AM_READ_PORT("DSW") - AM_RANGE(0x0e004, 0x0e005) AM_WRITENOP // watchdog? - AM_RANGE(0x0e006, 0x0e007) AM_WRITE8(raiden_control_w, 0x00ff) - AM_RANGE(0x0f000, 0x0f03f) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0xa0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden_state::sub_map) - AM_RANGE(0x00000, 0x01fff) AM_RAM - AM_RANGE(0x02000, 0x027ff) AM_RAM_WRITE(raiden_background_w) AM_SHARE("back_data") - AM_RANGE(0x02800, 0x02fff) AM_RAM_WRITE(raiden_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x03000, 0x03fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x07ffe, 0x07fff) AM_WRITENOP // ? - AM_RANGE(0x08000, 0x08001) AM_WRITENOP // watchdog? - AM_RANGE(0x0a000, 0x0a001) AM_WRITENOP // ? - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void raiden_state::main_map(address_map &map) +{ + map(0x00000, 0x06fff).ram(); + map(0x07000, 0x07fff).ram().share("spriteram"); + map(0x08000, 0x08fff).ram().share("shared_ram"); + map(0x0a000, 0x0a00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0x0c000, 0x0c7ff).w(this, FUNC(raiden_state::raiden_text_w)).share("videoram"); + map(0x0e000, 0x0e001).portr("P1_P2"); + map(0x0e002, 0x0e003).portr("DSW"); + map(0x0e004, 0x0e005).nopw(); // watchdog? + map(0x0e006, 0x0e006).w(this, FUNC(raiden_state::raiden_control_w)); + map(0x0f000, 0x0f03f).writeonly().share("scroll_ram"); + map(0xa0000, 0xfffff).rom(); +} + +void raiden_state::sub_map(address_map &map) +{ + map(0x00000, 0x01fff).ram(); + map(0x02000, 0x027ff).ram().w(this, FUNC(raiden_state::raiden_background_w)).share("back_data"); + map(0x02800, 0x02fff).ram().w(this, FUNC(raiden_state::raiden_foreground_w)).share("fore_data"); + map(0x03000, 0x03fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x04000, 0x04fff).ram().share("shared_ram"); + map(0x07ffe, 0x07fff).nopw(); // ? + map(0x08000, 0x08001).nopw(); // watchdog? + map(0x0a000, 0x0a001).nopw(); // ? + map(0xc0000, 0xfffff).rom(); +} /******************************************************************************/ -ADDRESS_MAP_START(raiden_state::raidenu_main_map) - AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08000, 0x0803f) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") - AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") - AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP // watchdog? - AM_RANGE(0x0b006, 0x0b007) AM_WRITE8(raiden_control_w, 0x00ff) - AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_SHARE("videoram") - AM_RANGE(0x0d000, 0x0d00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0xa0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden_state::raidenu_sub_map) - AM_RANGE(0x00000, 0x05fff) AM_RAM - AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(raiden_background_w) AM_SHARE("back_data") - AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(raiden_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x07000, 0x07fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x0a000, 0x0a001) AM_WRITENOP // ? - AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP // watchdog? - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void raiden_state::raidenu_main_map(address_map &map) +{ + map(0x00000, 0x06fff).ram(); + map(0x07000, 0x07fff).ram().share("spriteram"); + map(0x08000, 0x0803f).writeonly().share("scroll_ram"); + map(0x0a000, 0x0afff).ram().share("shared_ram"); + map(0x0b000, 0x0b001).portr("P1_P2"); + map(0x0b002, 0x0b003).portr("DSW"); + map(0x0b004, 0x0b005).nopw(); // watchdog? + map(0x0b006, 0x0b006).w(this, FUNC(raiden_state::raiden_control_w)); + map(0x0c000, 0x0c7ff).w(this, FUNC(raiden_state::raiden_text_w)).share("videoram"); + map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0xa0000, 0xfffff).rom(); +} + +void raiden_state::raidenu_sub_map(address_map &map) +{ + map(0x00000, 0x05fff).ram(); + map(0x06000, 0x067ff).ram().w(this, FUNC(raiden_state::raiden_background_w)).share("back_data"); + map(0x06800, 0x06fff).ram().w(this, FUNC(raiden_state::raiden_foreground_w)).share("fore_data"); + map(0x07000, 0x07fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x08000, 0x08fff).ram().share("shared_ram"); + map(0x0a000, 0x0a001).nopw(); // ? + map(0x0c000, 0x0c001).nopw(); // watchdog? + map(0xc0000, 0xfffff).rom(); +} /******************************************************************************/ -ADDRESS_MAP_START(raiden_state::raidenb_main_map) - AM_RANGE(0x00000, 0x06fff) AM_RAM - AM_RANGE(0x07000, 0x07fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2") - AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW") - AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP // watchdog? - AM_RANGE(0x0b006, 0x0b007) AM_WRITE8(raidenb_control_w, 0x00ff) - AM_RANGE(0x0c000, 0x0c7ff) AM_WRITE(raiden_text_w) AM_SHARE("videoram") - AM_RANGE(0x0d000, 0x0d00d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0x0d040, 0x0d08f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - AM_RANGE(0xa0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void raiden_state::raidenb_main_map(address_map &map) +{ + map(0x00000, 0x06fff).ram(); + map(0x07000, 0x07fff).ram().share("spriteram"); + map(0x0a000, 0x0afff).ram().share("shared_ram"); + map(0x0b000, 0x0b001).portr("P1_P2"); + map(0x0b002, 0x0b003).portr("DSW"); + map(0x0b004, 0x0b005).nopw(); // watchdog? + map(0x0b006, 0x0b006).w(this, FUNC(raiden_state::raidenb_control_w)); + map(0x0c000, 0x0c7ff).w(this, FUNC(raiden_state::raiden_text_w)).share("videoram"); + map(0x0d000, 0x0d00d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0x0d040, 0x0d08f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0xa0000, 0xfffff).rom(); +} /*****************************************************************************/ -ADDRESS_MAP_START(raiden_state::raiden_sound_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden_state::raiden_sound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden_state::sei80bu_encrypted_full_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END +void raiden_state::raiden_sound_map(address_map &map) +{ + map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void raiden_state::raiden_sound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0xffff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); +} + +void raiden_state::sei80bu_encrypted_full_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("audiocpu", 0); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} /*****************************************************************************/ diff --git a/src/mame/drivers/raiden2.cpp b/src/mame/drivers/raiden2.cpp index cf4032284d6..5cbd0b3fa31 100644 --- a/src/mame/drivers/raiden2.cpp +++ b/src/mame/drivers/raiden2.cpp @@ -224,10 +224,10 @@ int cnt=0, ccol = -1; WRITE16_MEMBER(raiden2_state::m_videoram_private_w) { - //AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(raiden2_background_w) AM_SHARE("back_data") - //AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(raiden2_foreground_w) AM_SHARE("fore_data") - //AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(raiden2_midground_w) AM_SHARE("mid_data") - //AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(raiden2_text_w) AM_SHARE("text_data") + // map(0x0d000, 0x0d7ff).ram().w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data"); + // map(0x0d800, 0x0dfff).ram().w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data"); + // map(0x0e000, 0x0e7ff).ram().w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data"); + // map(0x0e800, 0x0f7ff).ram().w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data"); if (offset < 0x800 / 2) { @@ -889,213 +889,238 @@ WRITE16_MEMBER(raiden2_state::sprite_prot_off_w) } /* MEMORY MAPS */ -ADDRESS_MAP_START(raiden2_state::raiden2_cop_mem) - AM_RANGE(0x0041c, 0x0041d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_target_w) // angle target (for 0x6200 COP macro) - AM_RANGE(0x0041e, 0x0041f) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_angle_step_w) // angle step (for 0x6200 COP macro) - AM_RANGE(0x00420, 0x00421) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_low_w) - AM_RANGE(0x00422, 0x00423) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_high_w) - AM_RANGE(0x00424, 0x00425) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_itoa_mode_w) - AM_RANGE(0x00428, 0x00429) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v1_w) - AM_RANGE(0x0042a, 0x0042b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_v2_w) - AM_RANGE(0x0042c, 0x0042d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_prng_maxvalue_w) - AM_RANGE(0x00432, 0x00433) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_data_w) - AM_RANGE(0x00434, 0x00435) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_addr_w) - AM_RANGE(0x00436, 0x00437) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_hitbox_baseadr_w) - AM_RANGE(0x00438, 0x00439) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_value_w) - AM_RANGE(0x0043a, 0x0043b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_mask_w) - AM_RANGE(0x0043c, 0x0043d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pgm_trigger_w) - AM_RANGE(0x00444, 0x00445) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_scale_w) - AM_RANGE(0x00450, 0x00451) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_hi_w) - AM_RANGE(0x00452, 0x00453) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_ram_addr_lo_w) - AM_RANGE(0x00454, 0x00455) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_hi_w) - AM_RANGE(0x00456, 0x00457) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_lookup_lo_w) - AM_RANGE(0x00458, 0x00459) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_param_w) - AM_RANGE(0x0045a, 0x0045b) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_val_w) //palette DMA brightness val, used by X Se Dae / Zero Team - AM_RANGE(0x0045c, 0x0045d) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_pal_brightness_mode_w) //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5) - AM_RANGE(0x00470, 0x00471) AM_READWRITE(cop_tile_bank_2_r,cop_tile_bank_2_w) // implementaton of this varies between games, external hookup? - - AM_RANGE(0x00476, 0x00477) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_dma_adr_rel_w) - AM_RANGE(0x00478, 0x00479) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_src_w) - AM_RANGE(0x0047a, 0x0047b) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_size_w) - AM_RANGE(0x0047c, 0x0047d) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_dst_w) - AM_RANGE(0x0047e, 0x0047f) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_dma_mode_r, cop_dma_mode_w) - AM_RANGE(0x004a0, 0x004ad) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_high_r, cop_reg_high_w) - AM_RANGE(0x004c0, 0x004cd) AM_DEVREADWRITE("raiden2cop", raiden2cop_device, cop_reg_low_r, cop_reg_low_w) - AM_RANGE(0x00500, 0x00505) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_cmd_w) - AM_RANGE(0x00580, 0x00581) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_r) - AM_RANGE(0x00582, 0x00587) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_val_r) - AM_RANGE(0x00588, 0x00589) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_collision_status_stat_r) - AM_RANGE(0x00590, 0x00599) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_itoa_digits_r) - AM_RANGE(0x005a0, 0x005a7) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_prng_r) // zeroteam reads from 5a4 - AM_RANGE(0x005b0, 0x005b1) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_status_r) - AM_RANGE(0x005b2, 0x005b3) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_dist_r) - AM_RANGE(0x005b4, 0x005b5) AM_DEVREAD("raiden2cop", raiden2cop_device, cop_angle_r) - - AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) - //AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write) - AM_RANGE(0x006a0, 0x006a3) AM_WRITE(sprcpt_val_1_w) - AM_RANGE(0x006a4, 0x006a7) AM_WRITE(sprcpt_data_3_w) - AM_RANGE(0x006a8, 0x006ab) AM_WRITE(sprcpt_data_4_w) - AM_RANGE(0x006ac, 0x006af) AM_WRITE(sprcpt_flags_1_w) - AM_RANGE(0x006b0, 0x006b3) AM_WRITE(sprcpt_data_1_w) - AM_RANGE(0x006b4, 0x006b7) AM_WRITE(sprcpt_data_2_w) - AM_RANGE(0x006b8, 0x006bb) AM_WRITE(sprcpt_val_2_w) - AM_RANGE(0x006bc, 0x006bf) AM_WRITE(sprcpt_adr_w) - AM_RANGE(0x006c0, 0x006c1) AM_READWRITE(sprite_prot_off_r, sprite_prot_off_w) - AM_RANGE(0x006c2, 0x006c3) AM_READWRITE(sprite_prot_src_seg_r, sprite_prot_src_seg_w) - AM_RANGE(0x006c4, 0x006c5) AM_WRITENOP // constant value written along with 0x6c0 - AM_RANGE(0x006c6, 0x006c7) AM_WRITE(sprite_prot_dst1_w) - AM_RANGE(0x006ca, 0x006cb) AM_WRITE(raiden2_bank_w) - AM_RANGE(0x006cc, 0x006cd) AM_WRITE(tile_bank_01_w) - AM_RANGE(0x006ce, 0x006cf) AM_WRITE(sprcpt_flags_2_w) - AM_RANGE(0x006d8, 0x006d9) AM_WRITE(sprite_prot_x_w) - AM_RANGE(0x006da, 0x006db) AM_WRITE(sprite_prot_y_w) - AM_RANGE(0x006dc, 0x006dd) AM_READWRITE(sprite_prot_maxx_r, sprite_prot_maxx_w) - AM_RANGE(0x006de, 0x006df) AM_WRITE(sprite_prot_src_w) +void raiden2_state::raiden2_cop_mem(address_map &map) +{ + map(0x0041c, 0x0041d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_target_w)); // angle target (for 0x6200 COP macro) + map(0x0041e, 0x0041f).w(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_step_w)); // angle step (for 0x6200 COP macro) + map(0x00420, 0x00421).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_low_w)); + map(0x00422, 0x00423).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_high_w)); + map(0x00424, 0x00425).w(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_mode_w)); + map(0x00428, 0x00429).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v1_w)); + map(0x0042a, 0x0042b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_v2_w)); + map(0x0042c, 0x0042d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_maxvalue_w)); + map(0x00432, 0x00433).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_data_w)); + map(0x00434, 0x00435).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_addr_w)); + map(0x00436, 0x00437).w(m_raiden2cop, FUNC(raiden2cop_device::cop_hitbox_baseadr_w)); + map(0x00438, 0x00439).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_value_w)); + map(0x0043a, 0x0043b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_mask_w)); + map(0x0043c, 0x0043d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pgm_trigger_w)); + map(0x00444, 0x00445).w(m_raiden2cop, FUNC(raiden2cop_device::cop_scale_w)); + map(0x00450, 0x00451).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_hi_w)); + map(0x00452, 0x00453).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_ram_addr_lo_w)); + map(0x00454, 0x00455).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_hi_w)); + map(0x00456, 0x00457).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_lookup_lo_w)); + map(0x00458, 0x00459).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_param_w)); + map(0x0045a, 0x0045b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_val_w)); //palette DMA brightness val, used by X Se Dae / Zero Team + map(0x0045c, 0x0045d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_pal_brightness_mode_w)); //palette DMA brightness mode, used by X Se Dae / Zero Team (sets to 5) + map(0x00470, 0x00471).rw(this, FUNC(raiden2_state::cop_tile_bank_2_r), FUNC(raiden2_state::cop_tile_bank_2_w)); // implementaton of this varies between games, external hookup? + + map(0x00476, 0x00477).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_adr_rel_w)); + map(0x00478, 0x00479).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_src_w)); + map(0x0047a, 0x0047b).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_size_w)); + map(0x0047c, 0x0047d).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_dst_w)); + map(0x0047e, 0x0047f).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_mode_r), FUNC(raiden2cop_device::cop_dma_mode_w)); + map(0x004a0, 0x004ad).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_high_r), FUNC(raiden2cop_device::cop_reg_high_w)); + map(0x004c0, 0x004cd).rw(m_raiden2cop, FUNC(raiden2cop_device::cop_reg_low_r), FUNC(raiden2cop_device::cop_reg_low_w)); + map(0x00500, 0x00505).w(m_raiden2cop, FUNC(raiden2cop_device::cop_cmd_w)); + map(0x00580, 0x00581).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_r)); + map(0x00582, 0x00587).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_val_r)); + map(0x00588, 0x00589).r(m_raiden2cop, FUNC(raiden2cop_device::cop_collision_status_stat_r)); + map(0x00590, 0x00599).r(m_raiden2cop, FUNC(raiden2cop_device::cop_itoa_digits_r)); + map(0x005a0, 0x005a7).r(m_raiden2cop, FUNC(raiden2cop_device::cop_prng_r)); // zeroteam reads from 5a4 + map(0x005b0, 0x005b1).r(m_raiden2cop, FUNC(raiden2cop_device::cop_status_r)); + map(0x005b2, 0x005b3).r(m_raiden2cop, FUNC(raiden2cop_device::cop_dist_r)); + map(0x005b4, 0x005b5).r(m_raiden2cop, FUNC(raiden2cop_device::cop_angle_r)); + + map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + //map(0x00640, 0x006bf).rw("obj", FUNC(seibu_encrypted_sprite_device::read), FUNC(seibu_encrypted_sprite_device::write)); + map(0x006a0, 0x006a3).w(this, FUNC(raiden2_state::sprcpt_val_1_w)); + map(0x006a4, 0x006a7).w(this, FUNC(raiden2_state::sprcpt_data_3_w)); + map(0x006a8, 0x006ab).w(this, FUNC(raiden2_state::sprcpt_data_4_w)); + map(0x006ac, 0x006af).w(this, FUNC(raiden2_state::sprcpt_flags_1_w)); + map(0x006b0, 0x006b3).w(this, FUNC(raiden2_state::sprcpt_data_1_w)); + map(0x006b4, 0x006b7).w(this, FUNC(raiden2_state::sprcpt_data_2_w)); + map(0x006b8, 0x006bb).w(this, FUNC(raiden2_state::sprcpt_val_2_w)); + map(0x006bc, 0x006bf).w(this, FUNC(raiden2_state::sprcpt_adr_w)); + map(0x006c0, 0x006c1).rw(this, FUNC(raiden2_state::sprite_prot_off_r), FUNC(raiden2_state::sprite_prot_off_w)); + map(0x006c2, 0x006c3).rw(this, FUNC(raiden2_state::sprite_prot_src_seg_r), FUNC(raiden2_state::sprite_prot_src_seg_w)); + map(0x006c4, 0x006c5).nopw(); // constant value written along with 0x6c0 + map(0x006c6, 0x006c7).w(this, FUNC(raiden2_state::sprite_prot_dst1_w)); + map(0x006ca, 0x006cb).w(this, FUNC(raiden2_state::raiden2_bank_w)); + map(0x006cc, 0x006cd).w(this, FUNC(raiden2_state::tile_bank_01_w)); + map(0x006ce, 0x006cf).w(this, FUNC(raiden2_state::sprcpt_flags_2_w)); + map(0x006d8, 0x006d9).w(this, FUNC(raiden2_state::sprite_prot_x_w)); + map(0x006da, 0x006db).w(this, FUNC(raiden2_state::sprite_prot_y_w)); + map(0x006dc, 0x006dd).rw(this, FUNC(raiden2_state::sprite_prot_maxx_r), FUNC(raiden2_state::sprite_prot_maxx_w)); + map(0x006de, 0x006df).w(this, FUNC(raiden2_state::sprite_prot_src_w)); /* end video block */ - AM_RANGE(0x006fc, 0x006fd) AM_DEVWRITE("raiden2cop", raiden2cop_device,cop_dma_trigger_w) - AM_RANGE(0x006fe, 0x006ff) AM_DEVWRITE("raiden2cop", raiden2cop_device, cop_sort_dma_trig_w) // sort-DMA trigger + map(0x006fc, 0x006fd).w(m_raiden2cop, FUNC(raiden2cop_device::cop_dma_trigger_w)); + map(0x006fe, 0x006ff).w(m_raiden2cop, FUNC(raiden2cop_device::cop_sort_dma_trig_w)); // sort-DMA trigger + + map(0x00762, 0x00763).r(this, FUNC(raiden2_state::sprite_prot_dst1_r)); +} + +void raiden2_state::raiden2_mem(address_map &map) +{ + map(0x00000, 0x003ff).ram(); + + raiden2_cop_mem(map); - AM_RANGE(0x00762, 0x00763) AM_READ(sprite_prot_dst1_r) -ADDRESS_MAP_END + map(0x0068e, 0x0068f).nopw(); //irq ack / sprite buffering? -ADDRESS_MAP_START(raiden2_state::raiden2_mem) - AM_RANGE(0x00000, 0x003ff) AM_RAM + map(0x00700, 0x0071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); - AM_IMPORT_FROM( raiden2_cop_mem ) + map(0x00740, 0x00741).portr("DSW"); + map(0x00744, 0x00745).portr("P1_P2"); + map(0x0074c, 0x0074d).portr("SYSTEM"); - AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP //irq ack / sprite buffering? + map(0x00800, 0x0bfff).ram(); - ;map(0x00700, 0x0071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); + map(0x0c000, 0x0cfff).ram().share("sprites"); + map(0x0d000, 0x0d7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data"); + map(0x0d800, 0x0dfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data"); + map(0x0e000, 0x0e7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data"); + map(0x0e800, 0x0f7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data"); + map(0x0f800, 0x0ffff).ram(); /* Stack area */ - AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") - AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2") - AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") + map(0x10000, 0x1efff).ram(); + map(0x1f000, 0x1ffff).ram(); //.w("palette", palette_device, write).share("palette"); + + map(0x20000, 0x2ffff).bankr("mainbank1"); + map(0x30000, 0x3ffff).bankr("mainbank2"); + map(0x40000, 0xfffff).rom().region("maincpu", 0x40000); +} - AM_RANGE(0x00800, 0x0bfff) AM_RAM +void raiden2_state::raidendx_mem(address_map &map) +{ + raiden2_mem(map); + map(0x00470, 0x00471).rw(this, FUNC(raiden2_state::cop_tile_bank_2_r), FUNC(raiden2_state::raidendx_cop_bank_2_w)); + map(0x004d0, 0x004d7).ram(); //??? + map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read_alt), FUNC(seibu_crtc_device::write_alt)); +// map(0x006ca, 0x006cb).nopw(); +} + +void raiden2_state::zeroteam_mem(address_map &map) +{ + map(0x00000, 0x003ff).ram(); + + raiden2_cop_mem(map); + + map(0x00470, 0x00471).nopw(); + map(0x006cc, 0x006cd).nopw(); + + map(0x0068e, 0x0068f).nopw(); // irq ack / sprite buffering? + + map(0x00700, 0x0071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + + map(0x00740, 0x00741).portr("DSW"); + map(0x00744, 0x00745).portr("P1_P2"); + map(0x00748, 0x00749).portr("P3_P4"); + map(0x0074c, 0x0074d).portr("SYSTEM"); + + map(0x00800, 0x0b7ff).ram(); + map(0x0b800, 0x0bfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data"); + map(0x0c000, 0x0c7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data"); + map(0x0c800, 0x0cfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data"); + map(0x0d000, 0x0dfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data"); + map(0x0e000, 0x0efff).ram(); // .w("palette", palette_device, write).share("palette"); + map(0x0f000, 0x0ffff).ram().share("sprites"); + map(0x10000, 0x1ffff).ram(); + + map(0x20000, 0x2ffff).bankr("mainbank1"); + map(0x30000, 0x3ffff).bankr("mainbank2"); + map(0x40000, 0xfffff).rom().region("maincpu", 0x40000); +} + +void raiden2_state::xsedae_mem(address_map &map) +{ + map(0x00000, 0x003ff).ram(); - AM_RANGE(0x0c000, 0x0cfff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x0d000, 0x0d7ff) AM_RAM // _WRITE(raiden2_background_w) AM_SHARE("back_data") - AM_RANGE(0x0d800, 0x0dfff) AM_RAM // _WRITE(raiden2_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM // _WRITE(raiden2_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM // _WRITE(raiden2_text_w) AM_SHARE("text_data") - AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ - - AM_RANGE(0x10000, 0x1efff) AM_RAM - AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - - AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("mainbank1") - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("mainbank2") - AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x40000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden2_state::raidendx_mem) - AM_IMPORT_FROM( raiden2_mem ) - AM_RANGE(0x00470, 0x00471) AM_READWRITE(cop_tile_bank_2_r,raidendx_cop_bank_2_w) - AM_RANGE(0x004d0, 0x004d7) AM_RAM //??? - AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read_alt, write_alt) -// AM_RANGE(0x006ca, 0x006cb) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden2_state::zeroteam_mem) - AM_RANGE(0x00000, 0x003ff) AM_RAM - - AM_IMPORT_FROM( raiden2_cop_mem ) - - AM_RANGE(0x00470, 0x00471) AM_WRITENOP - AM_RANGE(0x006cc, 0x006cd) AM_WRITENOP - - AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // irq ack / sprite buffering? - - ;map(0x00700, 0x0071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - - AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") - AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2") - AM_RANGE(0x00748, 0x00749) AM_READ_PORT("P3_P4") - AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") - - AM_RANGE(0x00800, 0x0b7ff) AM_RAM - AM_RANGE(0x0b800, 0x0bfff) AM_RAM // _WRITE(raiden2_background_w) AM_SHARE("back_data") - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM // _WRITE(raiden2_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x0c800, 0x0cfff) AM_RAM // _WRITE(raiden2_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x0d000, 0x0dfff) AM_RAM // _WRITE(raiden2_text_w) AM_SHARE("text_data") - AM_RANGE(0x0e000, 0x0efff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x10000, 0x1ffff) AM_RAM - - AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("mainbank1") - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("mainbank2") - AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x40000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden2_state::xsedae_mem) - AM_RANGE(0x00000, 0x003ff) AM_RAM - - AM_IMPORT_FROM( raiden2_cop_mem ) - - AM_RANGE(0x00470, 0x00471) AM_WRITENOP - AM_RANGE(0x006cc, 0x006cd) AM_WRITENOP - - AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP //irq ack / sprite buffering? - - ;map(0x00700, 0x0071f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff); - - AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW") - AM_RANGE(0x00744, 0x00745) AM_READ_PORT("P1_P2") - AM_RANGE(0x00748, 0x00749) AM_READ_PORT("P3_P4") - AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") - - AM_RANGE(0x00800, 0x0b7ff) AM_RAM - AM_RANGE(0x0b800, 0x0bfff) AM_RAM // _WRITE(raiden2_background_w) AM_SHARE("back_data") - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM // _WRITE(raiden2_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x0c800, 0x0cfff) AM_RAM // _WRITE(raiden2_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x0d000, 0x0dfff) AM_RAM // _WRITE(raiden2_text_w) AM_SHARE("text_data") - AM_RANGE(0x0e000, 0x0efff) AM_RAM // _DEVWRITE("palette", palette_device, write) AM_SHARE("palette") - AM_RANGE(0x0f000, 0x0ffff) AM_RAM AM_SHARE("sprites") - - AM_RANGE(0x10000, 0x1ffff) AM_RAM - - AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x20000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden2_state::raiden2_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4004, 0x4004) AM_NOP - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x6002, 0x6002) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(raiden2_state::zeroteam_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END + raiden2_cop_mem(map); + + map(0x00470, 0x00471).nopw(); + map(0x006cc, 0x006cd).nopw(); + + map(0x0068e, 0x0068f).nopw(); //irq ack / sprite buffering? + + map(0x00700, 0x0071f).lrw8("seibu_sound_rw", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_seibu_sound->main_r(space, offset >> 1, mem_mask); + }, + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); + }).umask16(0x00ff); + + map(0x00740, 0x00741).portr("DSW"); + map(0x00744, 0x00745).portr("P1_P2"); + map(0x00748, 0x00749).portr("P3_P4"); + map(0x0074c, 0x0074d).portr("SYSTEM"); + + map(0x00800, 0x0b7ff).ram(); + map(0x0b800, 0x0bfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_background_w)).share("back_data"); + map(0x0c000, 0x0c7ff).ram(); // .w(this, FUNC(raiden2_state::raiden2_foreground_w).share("fore_data"); + map(0x0c800, 0x0cfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_midground_w).share("mid_data"); + map(0x0d000, 0x0dfff).ram(); // .w(this, FUNC(raiden2_state::raiden2_text_w).share("text_data"); + map(0x0e000, 0x0efff).ram(); // .w("palette", palette_device, write).share("palette"); + map(0x0f000, 0x0ffff).ram().share("sprites"); + + map(0x10000, 0x1ffff).ram(); + + map(0x20000, 0xfffff).rom().region("maincpu", 0x20000); +} + +void raiden2_state::raiden2_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4004, 0x4004).noprw(); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401a, 0x401a).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6000, 0x6000).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x6002, 0x6002).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} + +void raiden2_state::zeroteam_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401a, 0x401a).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} /* INPUT PORTS */ diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index 19ff393fb15..c1669039fd3 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -904,10 +904,11 @@ void rainbow_state::machine_start() #endif } -ADDRESS_MAP_START(rainbow_state::rainbow8088_map) -ADDRESS_MAP_UNMAP_HIGH -AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("sh_ram") -AM_RANGE(0x10000, END_OF_RAM) AM_RAM AM_SHARE("ext_ram") AM_WRITE(ext_ram_w) +void rainbow_state::rainbow8088_map(address_map &map) +{ +map.unmap_value_high(); +map(0x00000, 0x0ffff).ram().share("sh_ram"); +map(0x10000, END_OF_RAM).ram().share("ext_ram").w(this, FUNC(rainbow_state::ext_ram_w)); // There is a 2212 (256 x 4 bit) NVRAM from 0xed000 to 0xed0ff (*) // shadowed at $ec000 - $ecfff and from $ed100 - $edfff. @@ -919,30 +920,31 @@ AM_RANGE(0x10000, END_OF_RAM) AM_RAM AM_SHARE("ext_ram") AM_WRITE(ext_ram_w) // 'diagnostic_w' handler (similar to real hardware). // - Address bits 8-12 are ignored (-> AM_MIRROR). -AM_RANGE(0xed000, 0xed0ff) AM_RAM AM_SHARE("vol_ram") //AM_MIRROR(0x1f00) -AM_RANGE(0xed100, 0xed1ff) AM_RAM AM_SHARE("nvram") +map(0xed000, 0xed0ff).ram().share("vol_ram"); //AM_MIRROR(0x1f00) +map(0xed100, 0xed1ff).ram().share("nvram"); -AM_RANGE(0xee000, 0xeffff) AM_RAM AM_SHARE("p_ram") -AM_RANGE(0xf0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +map(0xee000, 0xeffff).ram().share("p_ram"); +map(0xf0000, 0xfffff).rom(); +} -ADDRESS_MAP_START(rainbow_state::rainbow8088_io) -ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_GLOBAL_MASK(0x1ff) -AM_RANGE(0x00, 0x00) AM_READWRITE(i8088_latch_r, i8088_latch_w) -AM_RANGE(0x02, 0x02) AM_READWRITE(comm_control_r, comm_control_w) // Communication status / control register (8088) -AM_RANGE(0x04, 0x04) AM_DEVWRITE("vt100_video", rainbow_video_device, dc011_w) +void rainbow_state::rainbow8088_io(address_map &map) +{ +map.unmap_value_high(); +map.global_mask(0x1ff); +map(0x00, 0x00).rw(this, FUNC(rainbow_state::i8088_latch_r), FUNC(rainbow_state::i8088_latch_w)); +map(0x02, 0x02).rw(this, FUNC(rainbow_state::comm_control_r), FUNC(rainbow_state::comm_control_w)); // Communication status / control register (8088) +map(0x04, 0x04).w(m_crtc, FUNC(rainbow_video_device::dc011_w)); -AM_RANGE(0x06, 0x06) AM_WRITE(comm_bitrate_w) +map(0x06, 0x06).w(this, FUNC(rainbow_state::comm_bitrate_w)); -AM_RANGE(0x08, 0x08) AM_READ(system_parameter_r) -AM_RANGE(0x0a, 0x0a) AM_READWRITE(diagnostic_r, diagnostic_w) -AM_RANGE(0x0c, 0x0c) AM_SELECT(0x100) AM_DEVWRITE("vt100_video", rainbow_video_device, dc012_w) +map(0x08, 0x08).r(this, FUNC(rainbow_state::system_parameter_r)); +map(0x0a, 0x0a).rw(this, FUNC(rainbow_state::diagnostic_r), FUNC(rainbow_state::diagnostic_w)); +map(0x0c, 0x0c).select(0x100).w(m_crtc, FUNC(rainbow_video_device::dc012_w)); -AM_RANGE(0x0e, 0x0e) AM_WRITE(printer_bitrate_w) +map(0x0e, 0x0e).w(this, FUNC(rainbow_state::printer_bitrate_w)); -AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("kbdser", i8251_device, data_r, data_w) -AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("kbdser", i8251_device, status_r, control_w) +map(0x10, 0x10).rw(m_kbd8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); +map(0x11, 0x11).rw(m_kbd8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // =========================================================== // There are 4 select lines for Option Select 1 to 4 @@ -955,8 +957,8 @@ AM_RANGE(0x11, 0x11) AM_DEVREADWRITE("kbdser", i8251_device, status_r, control_w // See boot rom @1EA6: 0x27 (<- RESET EXTENDED COMM OPTION ) // Corvus B/H harddisk controller (incompatible with EXT.COMM OPTION): -AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("corvus", corvus_hdc_device, read, write) -AM_RANGE(0x21, 0x21) AM_READ(corvus_status_r) +map(0x20, 0x20).rw(m_corvus_hdc, FUNC(corvus_hdc_device::read), FUNC(corvus_hdc_device::write)); +map(0x21, 0x21).r(this, FUNC(rainbow_state::corvus_status_r)); // =========================================================== // 0x30 -> 0x3f ***** Option Select 3 @@ -971,16 +973,16 @@ AM_RANGE(0x21, 0x21) AM_READ(corvus_status_r) // * Color graphics option (NEC upd7220 GDC plus external hw.). See Programmer's Reference AA-AE36A-TV. // Either 384 x 240 x 16 or 800 x 240 x 4 colors (out of 4096). 8 x 64 K video RAM. // (Write Buffer, Pattern Register/Multiplier, ALU/PS, Color Map, readback and offset/scroll hardware): -AM_RANGE(0x50, 0x55) AM_READWRITE(GDC_EXTRA_REGISTER_r, GDC_EXTRA_REGISTER_w) -AM_RANGE(0x56, 0x57) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) // 56 param, 57 command +map(0x50, 0x55).rw(this, FUNC(rainbow_state::GDC_EXTRA_REGISTER_r), FUNC(rainbow_state::GDC_EXTRA_REGISTER_w)); +map(0x56, 0x57).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); // 56 param, 57 command // =========================================================== // 0x60 -> 0x6f ***** EXTENDED COMM. OPTION / Option Select 2. // =========================================================== // 0x60 -> 0x6f ***** RD51 HD. CONTROLLER / Option Select 2. -AM_RANGE(0x60, 0x67) AM_DEVREADWRITE("hdc", wd2010_device, read, write) AM_MIRROR(0x100) -AM_RANGE(0x68, 0x68) AM_READWRITE(hd_status_68_r, hd_status_68_w) -AM_RANGE(0x69, 0x69) AM_READ(hd_status_69_r) +map(0x60, 0x67).rw(m_hdc, FUNC(wd2010_device::read), FUNC(wd2010_device::write)).mirror(0x100); +map(0x68, 0x68).rw(this, FUNC(rainbow_state::hd_status_68_r), FUNC(rainbow_state::hd_status_68_w)); +map(0x69, 0x69).r(this, FUNC(rainbow_state::hd_status_69_r)); // =========================================================== // THE RD51 CONTROLLER: WD1010AL - 00 (WDC '83) // + 2 K x 8 SRAM (SY2128-4 or Japan 8328) 21-17872-01 @@ -1016,29 +1018,31 @@ AM_RANGE(0x69, 0x69) AM_READ(hd_status_69_r) // 0x70 -> 0x7f ***** Option Select 4 // =========================================================== // 0x10c -> (MHFU disable register handled by 0x0c + AM_SELECT) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rainbow_state::rainbowz80_mem) -ADDRESS_MAP_UNMAP_HIGH -AM_RANGE(0x0000, 0xffff) AM_READWRITE(share_z80_r, share_z80_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rainbow_state::rainbowz80_io) -ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_GLOBAL_MASK(0xff) -AM_RANGE(0x00, 0x00) AM_READWRITE(z80_latch_r, z80_latch_w) -AM_RANGE(0x20, 0x20) AM_READWRITE(z80_generalstat_r, z80_diskdiag_read_w) // read to port 0x20 used by MS-DOS 2.x diskette loader. -AM_RANGE(0x21, 0x21) AM_READWRITE(z80_generalstat_r, z80_diskdiag_write_w) -AM_RANGE(0x40, 0x40) AM_READWRITE(z80_diskstatus_r, z80_diskcontrol_w) -AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(FD1793_TAG, fd1793_device, read, write) +} + +void rainbow_state::rainbowz80_mem(address_map &map) +{ +map.unmap_value_high(); +map(0x0000, 0xffff).rw(this, FUNC(rainbow_state::share_z80_r), FUNC(rainbow_state::share_z80_w)); +} + +void rainbow_state::rainbowz80_io(address_map &map) +{ +map.unmap_value_high(); +map.global_mask(0xff); +map(0x00, 0x00).rw(this, FUNC(rainbow_state::z80_latch_r), FUNC(rainbow_state::z80_latch_w)); +map(0x20, 0x20).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_read_w)); // read to port 0x20 used by MS-DOS 2.x diskette loader. +map(0x21, 0x21).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_write_w)); +map(0x40, 0x40).rw(this, FUNC(rainbow_state::z80_diskstatus_r), FUNC(rainbow_state::z80_diskcontrol_w)); +map(0x60, 0x63).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); // Z80 I/O shadow area > $80 -AM_RANGE(0x80, 0x80) AM_READWRITE(z80_latch_r, z80_latch_w) -AM_RANGE(0xA0, 0xA0) AM_READWRITE(z80_generalstat_r, z80_diskdiag_read_w) // read to port 0x20 used by MS-DOS 2.x diskette loader. -AM_RANGE(0xA1, 0xA1) AM_READWRITE(z80_generalstat_r, z80_diskdiag_write_w) -AM_RANGE(0xC0, 0xC0) AM_READWRITE(z80_diskstatus_r, z80_diskcontrol_w) -AM_RANGE(0xE0, 0xE3) AM_DEVREADWRITE(FD1793_TAG, fd1793_device, read, write) -ADDRESS_MAP_END +map(0x80, 0x80).rw(this, FUNC(rainbow_state::z80_latch_r), FUNC(rainbow_state::z80_latch_w)); +map(0xA0, 0xA0).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_read_w)); // read to port 0x20 used by MS-DOS 2.x diskette loader. +map(0xA1, 0xA1).rw(this, FUNC(rainbow_state::z80_generalstat_r), FUNC(rainbow_state::z80_diskdiag_write_w)); +map(0xC0, 0xC0).rw(this, FUNC(rainbow_state::z80_diskstatus_r), FUNC(rainbow_state::z80_diskcontrol_w)); +map(0xE0, 0xE3).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); +} /* Input ports */ @@ -3179,9 +3183,10 @@ GFXDECODE_ENTRY("chargen", 0x0000, rainbow_charlayout, 0, 1) GFXDECODE_END // Allocate 512 K (4 x 64 K x 16 bit) of memory (GDC-NEW): -ADDRESS_MAP_START(rainbow_state::upd7220_map) - AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram") -ADDRESS_MAP_END +void rainbow_state::upd7220_map(address_map &map) +{ + map(0x00000, 0x3ffff).rw(this, FUNC(rainbow_state::vram_r), FUNC(rainbow_state::vram_w)).share("vram"); +} MACHINE_CONFIG_START(rainbow_state::rainbow) MCFG_DEFAULT_LAYOUT(layout_rainbow) diff --git a/src/mame/drivers/rallyx.cpp b/src/mame/drivers/rallyx.cpp index b2f4c929312..b430f91495f 100644 --- a/src/mame/drivers/rallyx.cpp +++ b/src/mame/drivers/rallyx.cpp @@ -283,43 +283,46 @@ WRITE_LINE_MEMBER(rallyx_state::coin_counter_2_w) * *************************************/ -ADDRESS_MAP_START(rallyx_state::rallyx_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(rallyx_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2") - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW") - AM_RANGE(0xa000, 0xa00f) AM_WRITEONLY AM_SHARE("radarattr") - AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa100, 0xa11f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) - AM_RANGE(0xa130, 0xa130) AM_WRITE(rallyx_scrollx_w) - AM_RANGE(0xa140, 0xa140) AM_WRITE(rallyx_scrolly_w) - AM_RANGE(0xa170, 0xa170) AM_WRITENOP /* ? */ - AM_RANGE(0xa180, 0xa187) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rallyx_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0, 0) AM_WRITE(rallyx_interrupt_vector_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(rallyx_state::jungler_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(rallyx_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2") - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW1") - AM_RANGE(0xa180, 0xa180) AM_READ_PORT("DSW2") - AM_RANGE(0xa000, 0xa00f) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("radarattr") // jungler writes to a03x - AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa100, 0xa100) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w) - AM_RANGE(0xa130, 0xa130) AM_WRITE(rallyx_scrollx_w) /* only jungler and tactcian */ - AM_RANGE(0xa140, 0xa140) AM_WRITE(rallyx_scrolly_w) /* only jungler and tactcian */ - AM_RANGE(0xa180, 0xa187) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void rallyx_state::rallyx_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(rallyx_state::rallyx_videoram_w)).share("videoram"); + map(0x9800, 0x9fff).ram(); + map(0xa000, 0xa000).portr("P1"); + map(0xa080, 0xa080).portr("P2"); + map(0xa100, 0xa100).portr("DSW"); + map(0xa000, 0xa00f).writeonly().share("radarattr"); + map(0xa080, 0xa080).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xa100, 0xa11f).w(m_namco_sound, FUNC(namco_device::pacman_sound_w)); + map(0xa130, 0xa130).w(this, FUNC(rallyx_state::rallyx_scrollx_w)); + map(0xa140, 0xa140).w(this, FUNC(rallyx_state::rallyx_scrolly_w)); + map(0xa170, 0xa170).nopw(); /* ? */ + map(0xa180, 0xa187).w("mainlatch", FUNC(ls259_device::write_d0)); +} + +void rallyx_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0, 0).w(this, FUNC(rallyx_state::rallyx_interrupt_vector_w)); +} + + +void rallyx_state::jungler_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(rallyx_state::rallyx_videoram_w)).share("videoram"); + map(0x9800, 0x9fff).ram(); + map(0xa000, 0xa000).portr("P1"); + map(0xa080, 0xa080).portr("P2"); + map(0xa100, 0xa100).portr("DSW1"); + map(0xa180, 0xa180).portr("DSW2"); + map(0xa000, 0xa00f).mirror(0x00f0).writeonly().share("radarattr"); // jungler writes to a03x + map(0xa080, 0xa080).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xa100, 0xa100).w(m_timeplt_audio, FUNC(timeplt_audio_device::sound_data_w)); + map(0xa130, 0xa130).w(this, FUNC(rallyx_state::rallyx_scrollx_w)); /* only jungler and tactcian */ + map(0xa140, 0xa140).w(this, FUNC(rallyx_state::rallyx_scrolly_w)); /* only jungler and tactcian */ + map(0xa180, 0xa187).w("mainlatch", FUNC(ls259_device::write_d0)); +} /************************************* diff --git a/src/mame/drivers/rambo.cpp b/src/mame/drivers/rambo.cpp index efb46d3b872..406eeac48d0 100644 --- a/src/mame/drivers/rambo.cpp +++ b/src/mame/drivers/rambo.cpp @@ -107,17 +107,20 @@ WRITE8_MEMBER(rambo_state::port_w) * Address maps * \****************************************************/ -ADDRESS_MAP_START(rambo_state::rambo_prg_map) - AM_RANGE(0x0000, 0x1FFFF) AM_ROM -ADDRESS_MAP_END +void rambo_state::rambo_prg_map(address_map &map) +{ + map(0x0000, 0x1FFFF).rom(); +} -ADDRESS_MAP_START(rambo_state::rambo_data_map) - AM_RANGE(0x0200, 0x21FF) AM_RAM /* ATMEGA2560 Internal SRAM */ -ADDRESS_MAP_END +void rambo_state::rambo_data_map(address_map &map) +{ + map(0x0200, 0x21FF).ram(); /* ATMEGA2560 Internal SRAM */ +} -ADDRESS_MAP_START(rambo_state::rambo_io_map) - AM_RANGE(AVR8_IO_PORTA, AVR8_IO_PORTL) AM_READWRITE( port_r, port_w ) -ADDRESS_MAP_END +void rambo_state::rambo_io_map(address_map &map) +{ + map(AVR8_IO_PORTA, AVR8_IO_PORTL).rw(this, FUNC(rambo_state::port_r), FUNC(rambo_state::port_w)); +} /****************************************************\ * Machine definition * diff --git a/src/mame/drivers/rampart.cpp b/src/mame/drivers/rampart.cpp index 9ffb6401fd6..bce638b62d0 100644 --- a/src/mame/drivers/rampart.cpp +++ b/src/mame/drivers/rampart.cpp @@ -127,31 +127,32 @@ WRITE16_MEMBER(rampart_state::latch_w) *************************************/ /* full memory map deduced from schematics and GALs */ -ADDRESS_MAP_START(rampart_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fffff) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x140000, 0x147fff) AM_MIRROR(0x438000) AM_ROM /* slapstic goes here */ - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("bitmap") - AM_RANGE(0x220000, 0x3bffff) AM_WRITENOP /* the code blasts right through this when initializing */ - AM_RANGE(0x3c0000, 0x3c07ff) AM_MIRROR(0x019800) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0xff00) AM_SHARE("palette") - AM_RANGE(0x3e0000, 0x3e07ff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("mob") - AM_RANGE(0x3e0800, 0x3e3f3f) AM_MIRROR(0x010000) AM_RAM - AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x3e3f80, 0x3effff) AM_MIRROR(0x010000) AM_RAM - AM_RANGE(0x460000, 0x460001) AM_MIRROR(0x019ffe) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0x480000, 0x480003) AM_MIRROR(0x019ffc) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) - AM_RANGE(0x500000, 0x500fff) AM_MIRROR(0x019000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x5a6000, 0x5a6001) AM_MIRROR(0x019ffe) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffe) AM_WRITE(latch_w) - AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffc) AM_READ_PORT("IN0") - AM_RANGE(0x640002, 0x640003) AM_MIRROR(0x019ffc) AM_READ_PORT("IN1") - AM_RANGE(0x6c0000, 0x6c0001) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK0") - AM_RANGE(0x6c0002, 0x6c0003) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK1") - AM_RANGE(0x6c0004, 0x6c0005) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK2") - AM_RANGE(0x6c0006, 0x6c0007) AM_MIRROR(0x019ff8) AM_READ_PORT("TRACK3") - AM_RANGE(0x726000, 0x726001) AM_MIRROR(0x019ffe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x7e6000, 0x7e6001) AM_MIRROR(0x019ffe) AM_WRITE(scanline_int_ack_w) -ADDRESS_MAP_END +void rampart_state::main_map(address_map &map) +{ + map.global_mask(0x7fffff); + map(0x000000, 0x0fffff).rom(); + map(0x140000, 0x147fff).mirror(0x438000).rom(); /* slapstic goes here */ + map(0x200000, 0x21ffff).ram().share("bitmap"); + map(0x220000, 0x3bffff).nopw(); /* the code blasts right through this when initializing */ + map(0x3c0000, 0x3c07ff).mirror(0x019800).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0xff00).share("palette"); + map(0x3e0000, 0x3e07ff).mirror(0x010000).ram().share("mob"); + map(0x3e0800, 0x3e3f3f).mirror(0x010000).ram(); + map(0x3e3f40, 0x3e3f7f).mirror(0x010000).ram().share("mob:slip"); + map(0x3e3f80, 0x3effff).mirror(0x010000).ram(); + map(0x460000, 0x460000).mirror(0x019ffe).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x480000, 0x480003).mirror(0x019ffc).w(m_ym2413, FUNC(ym2413_device::write)).umask16(0xff00); + map(0x500000, 0x500fff).mirror(0x019000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x5a6000, 0x5a6001).mirror(0x019ffe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x640000, 0x640001).mirror(0x019ffe).w(this, FUNC(rampart_state::latch_w)); + map(0x640000, 0x640001).mirror(0x019ffc).portr("IN0"); + map(0x640002, 0x640003).mirror(0x019ffc).portr("IN1"); + map(0x6c0000, 0x6c0001).mirror(0x019ff8).portr("TRACK0"); + map(0x6c0002, 0x6c0003).mirror(0x019ff8).portr("TRACK1"); + map(0x6c0004, 0x6c0005).mirror(0x019ff8).portr("TRACK2"); + map(0x6c0006, 0x6c0007).mirror(0x019ff8).portr("TRACK3"); + map(0x726000, 0x726001).mirror(0x019ffe).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x7e6000, 0x7e6001).mirror(0x019ffe).w(this, FUNC(rampart_state::scanline_int_ack_w)); +} diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp index 1eb9c45d895..a7d6a45aa1f 100644 --- a/src/mame/drivers/rastan.cpp +++ b/src/mame/drivers/rastan.cpp @@ -208,40 +208,43 @@ WRITE8_MEMBER(rastan_state::rastan_msm5205_stop_w) -ADDRESS_MAP_START(rastan_state::rastan_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x10c000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x350008, 0x350009) AM_WRITENOP /* 0 only (often) ? */ - AM_RANGE(0x380000, 0x380001) AM_WRITE(rastan_spritectrl_w) /* sprite palette bank, coin counters & lockout */ - AM_RANGE(0x390000, 0x390001) AM_READ_PORT("P1") - AM_RANGE(0x390002, 0x390003) AM_READ_PORT("P2") - AM_RANGE(0x390004, 0x390005) AM_READ_PORT("SPECIAL") - AM_RANGE(0x390006, 0x390007) AM_READ_PORT("SYSTEM") - AM_RANGE(0x390008, 0x390009) AM_READ_PORT("DSWA") - AM_RANGE(0x39000a, 0x39000b) AM_READ_PORT("DSWB") - AM_RANGE(0x3c0000, 0x3c0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) - AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(rastan_state::rastan_s_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(rastan_msm5205_address_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(rastan_msm5205_start_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(rastan_msm5205_stop_w) -ADDRESS_MAP_END +void rastan_state::rastan_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x10c000, 0x10ffff).ram(); + map(0x200000, 0x200fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x350008, 0x350009).nopw(); /* 0 only (often) ? */ + map(0x380000, 0x380001).w(this, FUNC(rastan_state::rastan_spritectrl_w)); /* sprite palette bank, coin counters & lockout */ + map(0x390000, 0x390001).portr("P1"); + map(0x390002, 0x390003).portr("P2"); + map(0x390004, 0x390005).portr("SPECIAL"); + map(0x390006, 0x390007).portr("SYSTEM"); + map(0x390008, 0x390009).portr("DSWA"); + map(0x39000a, 0x39000b).portr("DSWB"); + map(0x3c0000, 0x3c0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x3e0000, 0x3e0001).nopr(); + map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */ +} + + +void rastan_state::rastan_s_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xb000).w(this, FUNC(rastan_state::rastan_msm5205_address_w)); + map(0xc000, 0xc000).w(this, FUNC(rastan_state::rastan_msm5205_start_w)); + map(0xd000, 0xd000).w(this, FUNC(rastan_state::rastan_msm5205_stop_w)); +} diff --git a/src/mame/drivers/rastersp.cpp b/src/mame/drivers/rastersp.cpp index 1b2110ad582..32362424b42 100644 --- a/src/mame/drivers/rastersp.cpp +++ b/src/mame/drivers/rastersp.cpp @@ -673,40 +673,43 @@ READ32_MEMBER( rastersp_state::dsp_speedup_r ) * *************************************/ -ADDRESS_MAP_START(rastersp_state::cpu_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("dram") - AM_RANGE(0x01000000, 0x010bffff) AM_NOP // External ROM - AM_RANGE(0x010c0000, 0x010cffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0x02200000, 0x022fffff) AM_READWRITE8(nvram_r, nvram_w, 0x000000ff) - AM_RANGE(0x02200800, 0x02200803) AM_WRITENOP // ? - AM_RANGE(0x02208000, 0x02208fff) AM_DEVREADWRITE("scsibus:7:ncr53c700", ncr53c7xx_device, read, write) - AM_RANGE(0x0220e000, 0x0220e003) AM_WRITE(dpylist_w) - AM_RANGE(0xfff00000, 0xffffffff) AM_RAMBANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(rastersp_state::io_map) - AM_RANGE(0x0020, 0x0023) AM_WRITE(cyrix_cache_w) - AM_RANGE(0x1000, 0x1003) AM_READ_PORT("P1") AM_WRITE(port1_w) - AM_RANGE(0x1004, 0x1007) AM_READ_PORT("P2") AM_WRITE(port2_w) - AM_RANGE(0x1008, 0x100b) AM_READ_PORT("COMMON") AM_WRITE(port3_w) - AM_RANGE(0x100c, 0x100f) AM_READ_PORT("DSW2") - AM_RANGE(0x1010, 0x1013) AM_READ_PORT("DSW1") - AM_RANGE(0x1014, 0x1017) AM_READ_PORT("EXTRA") - AM_RANGE(0x4000, 0x4007) AM_DEVREADWRITE8("rtc", mc146818_device, read, write, 0x000000ff) - AM_RANGE(0x6008, 0x600b) AM_READNOP AM_WRITENOP // RS232 -ADDRESS_MAP_END - - -ADDRESS_MAP_START(rastersp_state::dsp_map) - AM_RANGE(0x000000, 0x0fffff) AM_RAMBANK("bank1") - AM_RANGE(0x400000, 0x40ffff) AM_ROM AM_REGION("dspboot", 0) - AM_RANGE(0x808000, 0x80807f) AM_READWRITE(tms32031_control_r, tms32031_control_w) - AM_RANGE(0x880402, 0x880402) AM_WRITE(dsp_unk_w) - AM_RANGE(0x883c00, 0x883c00) AM_WRITE(dsp_486_int_w) - AM_RANGE(0xc00000, 0xc03fff) AM_RAMBANK("bank2") - AM_RANGE(0xc80000, 0xc80000) AM_WRITE(dsp_ctrl_w) - AM_RANGE(0xfc0000, 0xffffff) AM_RAMBANK("bank3") -ADDRESS_MAP_END +void rastersp_state::cpu_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("dram"); + map(0x01000000, 0x010bffff).noprw(); // External ROM + map(0x010c0000, 0x010cffff).rom().region("bios", 0); + map(0x02200000, 0x022fffff).rw(this, FUNC(rastersp_state::nvram_r), FUNC(rastersp_state::nvram_w)).umask32(0x000000ff); + map(0x02200800, 0x02200803).nopw(); // ? + map(0x02208000, 0x02208fff).rw("scsibus:7:ncr53c700", FUNC(ncr53c7xx_device::read), FUNC(ncr53c7xx_device::write)); + map(0x0220e000, 0x0220e003).w(this, FUNC(rastersp_state::dpylist_w)); + map(0xfff00000, 0xffffffff).bankrw("bank3"); +} + +void rastersp_state::io_map(address_map &map) +{ + map(0x0020, 0x0023).w(this, FUNC(rastersp_state::cyrix_cache_w)); + map(0x1000, 0x1003).portr("P1").w(this, FUNC(rastersp_state::port1_w)); + map(0x1004, 0x1007).portr("P2").w(this, FUNC(rastersp_state::port2_w)); + map(0x1008, 0x100b).portr("COMMON").w(this, FUNC(rastersp_state::port3_w)); + map(0x100c, 0x100f).portr("DSW2"); + map(0x1010, 0x1013).portr("DSW1"); + map(0x1014, 0x1017).portr("EXTRA"); + map(0x4000, 0x4007).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)).umask32(0x000000ff); + map(0x6008, 0x600b).nopr().nopw(); // RS232 +} + + +void rastersp_state::dsp_map(address_map &map) +{ + map(0x000000, 0x0fffff).bankrw("bank1"); + map(0x400000, 0x40ffff).rom().region("dspboot", 0); + map(0x808000, 0x80807f).rw(this, FUNC(rastersp_state::tms32031_control_r), FUNC(rastersp_state::tms32031_control_w)); + map(0x880402, 0x880402).w(this, FUNC(rastersp_state::dsp_unk_w)); + map(0x883c00, 0x883c00).w(this, FUNC(rastersp_state::dsp_486_int_w)); + map(0xc00000, 0xc03fff).bankrw("bank2"); + map(0xc80000, 0xc80000).w(this, FUNC(rastersp_state::dsp_ctrl_w)); + map(0xfc0000, 0xffffff).bankrw("bank3"); +} diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp index ced2772ae4a..e2fac7c49ad 100644 --- a/src/mame/drivers/ravens.cpp +++ b/src/mame/drivers/ravens.cpp @@ -206,26 +206,29 @@ MACHINE_RESET_MEMBER( ravens_state, ravens2 ) } -ADDRESS_MAP_START(ravens_state::ravens_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff) AM_ROM - AM_RANGE( 0x0800, 0x1fff) AM_RAM - AM_RANGE( 0x2000, 0x7FFF) AM_RAM // for quickload, optional -ADDRESS_MAP_END - -ADDRESS_MAP_START(ravens_state::ravens_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x09, 0x09) AM_WRITE(leds_w) // LED output port - AM_RANGE(0x10, 0x15) AM_WRITE(display_w) // 6-led display - AM_RANGE(0x17, 0x17) AM_READ(port17_r) // pushbuttons -ADDRESS_MAP_END - -ADDRESS_MAP_START(ravens_state::ravens2_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x07, 0x07) AM_READ(port07_r) - AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w) - AM_RANGE(0x1c, 0x1c) AM_WRITE(port1c_w) -ADDRESS_MAP_END +void ravens_state::ravens_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x1fff).ram(); + map(0x2000, 0x7FFF).ram(); // for quickload, optional +} + +void ravens_state::ravens_io(address_map &map) +{ + map.unmap_value_high(); + map(0x09, 0x09).w(this, FUNC(ravens_state::leds_w)); // LED output port + map(0x10, 0x15).w(this, FUNC(ravens_state::display_w)); // 6-led display + map(0x17, 0x17).r(this, FUNC(ravens_state::port17_r)); // pushbuttons +} + +void ravens_state::ravens2_io(address_map &map) +{ + map.unmap_value_high(); + map(0x07, 0x07).r(this, FUNC(ravens_state::port07_r)); + map(0x1b, 0x1b).w(this, FUNC(ravens_state::port1b_w)); + map(0x1c, 0x1c).w(this, FUNC(ravens_state::port1c_w)); +} /* Input ports */ static INPUT_PORTS_START( ravens ) diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp index d4e6bc4345e..2fef560b835 100644 --- a/src/mame/drivers/rbisland.cpp +++ b/src/mame/drivers/rbisland.cpp @@ -346,48 +346,51 @@ WRITE16_MEMBER(rbisland_state::jumping_sound_w) MEMORY STRUCTURES ***************************************************************************/ -ADDRESS_MAP_START(rbisland_state::rbisland_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */ - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */ - AM_RANGE(0x390000, 0x390003) AM_READ_PORT("DSWA") - AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(rbisland_spritectrl_w) - AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("DSWB") - AM_RANGE(0x3c0000, 0x3c0003) AM_WRITENOP /* written very often, watchdog? */ - AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x3e0002, 0x3e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x800000, 0x8007ff) AM_READWRITE(rbisland_cchip_ram_r,rbisland_cchip_ram_w) - AM_RANGE(0x800802, 0x800803) AM_READWRITE(rbisland_cchip_ctrl_r,rbisland_cchip_ctrl_w) - AM_RANGE(0x800c00, 0x800c01) AM_WRITE(rbisland_cchip_bank_w) - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) - AM_RANGE(0xc20000, 0xc20003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xc50000, 0xc50003) AM_DEVWRITE("pc080sn", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) /* sprite ram + other stuff */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(rbisland_state::jumping_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM - AM_RANGE(0x10c000, 0x10ffff) AM_RAM /* main RAM */ - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x201000, 0x203fff) AM_RAM /* r/w in initial checks */ - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("DSWA") - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSWB") - AM_RANGE(0x401000, 0x401001) AM_READ_PORT("401001") - AM_RANGE(0x401002, 0x401003) AM_READ_PORT("401003") - AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(jumping_spritectrl_w) - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP /* watchdog? */ - AM_RANGE(0x400006, 0x400007) AM_WRITE(jumping_sound_w) - AM_RANGE(0x420000, 0x420001) AM_READNOP /* read, but result not used */ - AM_RANGE(0x430000, 0x430003) AM_DEVWRITE("pc080sn", pc080sn_device, yscroll_word_w) - AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x800000, 0x80ffff) AM_WRITENOP /* original c-chip location (not used) */ - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("pc080sn", pc080sn_device, word_r, word_w) - AM_RANGE(0xc20000, 0xc20003) AM_WRITENOP /* seems it is a leftover from rbisland: scroll y written here too */ - AM_RANGE(0xc40000, 0xc40003) AM_DEVWRITE("pc080sn", pc080sn_device, xscroll_word_w) - AM_RANGE(0xd00000, 0xd01fff) AM_RAM /* original spriteram location, needed for Attract Mode */ -ADDRESS_MAP_END +void rbisland_state::rbisland_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x10c000, 0x10ffff).ram(); /* main RAM */ + map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x201000, 0x203fff).ram(); /* r/w in initial checks */ + map(0x390000, 0x390003).portr("DSWA"); + map(0x3a0000, 0x3a0001).w(this, FUNC(rbisland_state::rbisland_spritectrl_w)); + map(0x3b0000, 0x3b0003).portr("DSWB"); + map(0x3c0000, 0x3c0003).nopw(); /* written very often, watchdog? */ + map(0x3e0000, 0x3e0001).nopr(); + map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x800000, 0x8007ff).rw(this, FUNC(rbisland_state::rbisland_cchip_ram_r), FUNC(rbisland_state::rbisland_cchip_ram_w)); + map(0x800802, 0x800803).rw(this, FUNC(rbisland_state::rbisland_cchip_ctrl_r), FUNC(rbisland_state::rbisland_cchip_ctrl_w)); + map(0x800c00, 0x800c01).w(this, FUNC(rbisland_state::rbisland_cchip_bank_w)); + map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xc20000, 0xc20003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xc50000, 0xc50003).w(m_pc080sn, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram + other stuff */ +} + +void rbisland_state::jumping_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); + map(0x10c000, 0x10ffff).ram(); /* main RAM */ + map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x201000, 0x203fff).ram(); /* r/w in initial checks */ + map(0x400000, 0x400001).portr("DSWA"); + map(0x400002, 0x400003).portr("DSWB"); + map(0x401000, 0x401001).portr("401001"); + map(0x401002, 0x401003).portr("401003"); + map(0x3a0000, 0x3a0001).w(this, FUNC(rbisland_state::jumping_spritectrl_w)); + map(0x3c0000, 0x3c0001).nopw(); /* watchdog? */ + map(0x400006, 0x400007).w(this, FUNC(rbisland_state::jumping_sound_w)); + map(0x420000, 0x420001).nopr(); /* read, but result not used */ + map(0x430000, 0x430003).w(m_pc080sn, FUNC(pc080sn_device::yscroll_word_w)); + map(0x440000, 0x4407ff).ram().share("spriteram"); + map(0x800000, 0x80ffff).nopw(); /* original c-chip location (not used) */ + map(0xc00000, 0xc0ffff).rw(m_pc080sn, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xc20000, 0xc20003).nopw(); /* seems it is a leftover from rbisland: scroll y written here too */ + map(0xc40000, 0xc40003).w(m_pc080sn, FUNC(pc080sn_device::xscroll_word_w)); + map(0xd00000, 0xd01fff).ram(); /* original spriteram location, needed for Attract Mode */ +} /********************************************************** @@ -408,25 +411,27 @@ READ8_MEMBER(rbisland_state::jumping_latch_r) } -ADDRESS_MAP_START(rbisland_state::rbisland_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x9002, 0x9100) AM_READNOP - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rbisland_state::jumping_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xb400, 0xb401) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xb800, 0xb800) AM_READ(jumping_latch_r) - AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP /* looks like a bankswitch, but sound works with or without it */ - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void rbisland_state::rbisland_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9002, 0x9100).nopr(); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); +} + +void rbisland_state::jumping_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0xb000, 0xb001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb400, 0xb401).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb800, 0xb800).r(this, FUNC(rbisland_state::jumping_latch_r)); + map(0xbc00, 0xbc00).nopw(); /* looks like a bankswitch, but sound works with or without it */ + map(0xc000, 0xffff).rom(); +} /*********************************************************** diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp index a2d7b9fbfa9..c28d8b78fcd 100644 --- a/src/mame/drivers/rbmk.cpp +++ b/src/mame/drivers/rbmk.cpp @@ -166,42 +166,45 @@ WRITE16_MEMBER(rbmk_state::eeprom_w) } -ADDRESS_MAP_START(rbmk_state::rbmk_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_WRITENOP - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x500000, 0x50ffff) AM_RAM - AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("vidram2") - AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access - AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("vidram") - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(eeprom_w) - AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(dip_mux_r, dip_mux_w) - AM_RANGE(0xc08000, 0xc08001) AM_READ_PORT("IN1") AM_WRITE(tilebank_w) - AM_RANGE(0xc10000, 0xc10001) AM_READ_PORT("IN2") - AM_RANGE(0xc18080, 0xc18081) AM_READ(unk_r) - AM_RANGE(0xc20000, 0xc20001) AM_READ_PORT("IN3") - AM_RANGE(0xc28000, 0xc28001) AM_WRITE(unk_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rbmk_state::rbspm_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_WRITE(eeprom_w) // wrong - AM_RANGE(0x300000, 0x300001) AM_READWRITE(dip_mux_r, dip_mux_w) - AM_RANGE(0x308000, 0x308001) AM_READ_PORT("IN1") AM_WRITE(tilebank_w) // ok - AM_RANGE(0x310000, 0x310001) AM_READ_PORT("IN2") - AM_RANGE(0x318080, 0x318081) AM_READ(unk_r) - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN3") - AM_RANGE(0x328000, 0x328001) AM_WRITE(unk_w) - AM_RANGE(0x500000, 0x50ffff) AM_RAM - AM_RANGE(0x900000, 0x900fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // if removed fails gfx test? - AM_RANGE(0x940000, 0x940fff) AM_RAM AM_SHARE("vidram2") // if removed fails palette test? - AM_RANGE(0x980300, 0x983fff) AM_RAM // 0x2048 words ???, byte access, u25 and u26 according to test mode - AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_SHARE("vidram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(rbmk_state::mcu_mem) +void rbmk_state::rbmk_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom().nopw(); + map(0x100000, 0x10ffff).ram(); + map(0x500000, 0x50ffff).ram(); + map(0x940000, 0x940fff).ram().share("vidram2"); + map(0x980300, 0x983fff).ram(); // 0x2048 words ???, byte access + map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x9c0000, 0x9c0fff).ram().share("vidram"); + map(0xb00000, 0xb00001).w(this, FUNC(rbmk_state::eeprom_w)); + map(0xc00000, 0xc00001).rw(this, FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w)); + map(0xc08000, 0xc08001).portr("IN1").w(this, FUNC(rbmk_state::tilebank_w)); + map(0xc10000, 0xc10001).portr("IN2"); + map(0xc18080, 0xc18081).r(this, FUNC(rbmk_state::unk_r)); + map(0xc20000, 0xc20001).portr("IN3"); + map(0xc28000, 0xc28001).w(this, FUNC(rbmk_state::unk_w)); +} + +void rbmk_state::rbspm_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x200001).w(this, FUNC(rbmk_state::eeprom_w)); // wrong + map(0x300000, 0x300001).rw(this, FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w)); + map(0x308000, 0x308001).portr("IN1").w(this, FUNC(rbmk_state::tilebank_w)); // ok + map(0x310000, 0x310001).portr("IN2"); + map(0x318080, 0x318081).r(this, FUNC(rbmk_state::unk_r)); + map(0x320000, 0x320001).portr("IN3"); + map(0x328000, 0x328001).w(this, FUNC(rbmk_state::unk_w)); + map(0x500000, 0x50ffff).ram(); + map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // if removed fails gfx test? + map(0x940000, 0x940fff).ram().share("vidram2"); // if removed fails palette test? + map(0x980300, 0x983fff).ram(); // 0x2048 words ???, byte access, u25 and u26 according to test mode + map(0x9c0000, 0x9c0fff).ram().share("vidram"); +} + +void rbmk_state::mcu_mem(address_map &map) +{ // AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +} READ8_MEMBER(rbmk_state::mcu_io_r) { @@ -238,9 +241,10 @@ WRITE8_MEMBER(rbmk_state::mcu_io_mux_w) m_mux_data = ~data; } -ADDRESS_MAP_START(rbmk_state::mcu_io) - AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE(mcu_io_r, mcu_io_w ) -ADDRESS_MAP_END +void rbmk_state::mcu_io(address_map &map) +{ + map(0x0ff00, 0x0ffff).rw(this, FUNC(rbmk_state::mcu_io_r), FUNC(rbmk_state::mcu_io_w)); +} static INPUT_PORTS_START( rbmk ) PORT_START("IN1") /* 16bit */ diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp index dc16ac159f1..d2ea326a5c3 100644 --- a/src/mame/drivers/rc702.cpp +++ b/src/mame/drivers/rc702.cpp @@ -97,24 +97,26 @@ private: }; -ADDRESS_MAP_START(rc702_state::rc702_mem) - AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rc702_state::rc702_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("crtc", i8275_device, read, write) - AM_RANGE(0x04, 0x05) AM_DEVICE("fdc", upd765a_device, map) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("sio1", z80dart_device, cd_ba_r, cd_ba_w) // boot sequence doesn't program this - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("pio", z80pio_device, read, write) - AM_RANGE(0x14, 0x17) AM_READ_PORT("DSW") AM_WRITE(port14_w) // motors - AM_RANGE(0x18, 0x1b) AM_WRITE(port18_w) // memory banking - AM_RANGE(0x1c, 0x1f) AM_WRITE(port1c_w) // sound - AM_RANGE(0xf0, 0xff) AM_DEVREADWRITE("dma", am9517a_device, read, write) -ADDRESS_MAP_END +void rc702_state::rc702_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0"); + map(0x0800, 0xffff).ram(); +} + +void rc702_state::rc702_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x01).rw("crtc", FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0x04, 0x05).m(m_fdc, FUNC(upd765a_device::map)); + map(0x08, 0x0b).rw("sio1", FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); // boot sequence doesn't program this + map(0x0c, 0x0f).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x10, 0x13).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x14, 0x17).portr("DSW").w(this, FUNC(rc702_state::port14_w)); // motors + map(0x18, 0x1b).w(this, FUNC(rc702_state::port18_w)); // memory banking + map(0x1c, 0x1f).w(this, FUNC(rc702_state::port1c_w)); // sound + map(0xf0, 0xff).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); +} /* Input ports */ static INPUT_PORTS_START( rc702 ) diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp index 0c3768700e2..0fa535c20ea 100644 --- a/src/mame/drivers/rc759.cpp +++ b/src/mame/drivers/rc759.cpp @@ -467,41 +467,43 @@ void rc759_state::machine_reset() // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(rc759_state::rc759_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM - AM_RANGE(0xd0000, 0xd7fff) AM_MIRROR(0x08000) AM_RAM AM_SHARE("vram") - AM_RANGE(0xe8000, 0xeffff) AM_MIRROR(0x10000) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rc759_state::rc759_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000, 0x003) AM_MIRROR(0x0c) AM_DEVREADWRITE8("pic", pic8259_device, read, write, 0x00ff) - AM_RANGE(0x020, 0x021) AM_READ8(keyboard_r, 0x00ff) - AM_RANGE(0x056, 0x057) AM_NOP // in reality, access to sound and rtc is a bit more involved - AM_RANGE(0x05a, 0x05b) AM_DEVWRITE8("snd", sn76489a_device, write, 0x00ff) - AM_RANGE(0x05c, 0x05d) AM_READWRITE8(rtc_r, rtc_w, 0x00ff) +void rc759_state::rc759_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); + map(0xd0000, 0xd7fff).mirror(0x08000).ram().share("vram"); + map(0xe8000, 0xeffff).mirror(0x10000).rom().region("bios", 0); +} + +void rc759_state::rc759_io(address_map &map) +{ + map.unmap_value_high(); + map(0x000, 0x003).mirror(0x0c).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x020, 0x020).r(this, FUNC(rc759_state::keyboard_r)); + map(0x056, 0x057).noprw(); // in reality, access to sound and rtc is a bit more involved + map(0x05a, 0x05a).w(m_snd, FUNC(sn76489a_device::write)); + map(0x05c, 0x05c).rw(this, FUNC(rc759_state::rtc_r), FUNC(rc759_state::rtc_w)); // AM_RANGE(0x060, 0x06f) AM_WRITE8(crt_control_w, 0x00ff) - AM_RANGE(0x070, 0x077) AM_MIRROR(0x08) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) - AM_RANGE(0x080, 0x0ff) AM_READWRITE8(nvram_r, nvram_w, 0x00ff) + map(0x070, 0x077).mirror(0x08).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x080, 0x0ff).rw(this, FUNC(rc759_state::nvram_r), FUNC(rc759_state::nvram_w)).umask16(0x00ff); // AM_RANGE(0x100, 0x101) net - AM_RANGE(0x180, 0x1bf) AM_READWRITE8(palette_r, palette_w, 0x00ff) - AM_RANGE(0x230, 0x231) AM_WRITE(txt_irst_w) - AM_RANGE(0x240, 0x241) AM_WRITE(txt_ca_w) - AM_RANGE(0x250, 0x251) AM_READWRITE8(centronics_data_r, centronics_data_w, 0x00ff) - AM_RANGE(0x260, 0x261) AM_READWRITE8(centronics_control_r, centronics_control_w, 0x00ff) - AM_RANGE(0x280, 0x287) AM_DEVREADWRITE8("fdc", wd2797_device, read, write, 0x00ff) - AM_RANGE(0x288, 0x289) AM_WRITE8(floppy_control_w, 0x00ff) + map(0x180, 0x1bf).rw(this, FUNC(rc759_state::palette_r), FUNC(rc759_state::palette_w)).umask16(0x00ff); + map(0x230, 0x231).w(this, FUNC(rc759_state::txt_irst_w)); + map(0x240, 0x241).w(this, FUNC(rc759_state::txt_ca_w)); + map(0x250, 0x250).rw(this, FUNC(rc759_state::centronics_data_r), FUNC(rc759_state::centronics_data_w)); + map(0x260, 0x260).rw(this, FUNC(rc759_state::centronics_control_r), FUNC(rc759_state::centronics_control_w)); + map(0x280, 0x287).rw(m_fdc, FUNC(wd2797_device::read), FUNC(wd2797_device::write)).umask16(0x00ff); + map(0x288, 0x288).w(this, FUNC(rc759_state::floppy_control_w)); // AM_RANGE(0x28a, 0x28b) external printer data // AM_RANGE(0x28d, 0x28d) external printer control - AM_RANGE(0x28e, 0x28f) AM_READWRITE8(floppy_ack_r, floppy_reserve_w, 0x00ff) - AM_RANGE(0x290, 0x291) AM_WRITE8(floppy_release_w, 0x00ff) + map(0x28e, 0x28e).rw(this, FUNC(rc759_state::floppy_ack_r), FUNC(rc759_state::floppy_reserve_w)); + map(0x290, 0x290).w(this, FUNC(rc759_state::floppy_release_w)); // AM_RANGE(0x292, 0x293) AM_READWRITE8(printer_ack_r, printer_reserve_w, 0x00ff) // AM_RANGE(0x294, 0x295) AM_WRITE8(printer_release_w, 0x00ff) - AM_RANGE(0x300, 0x30f) AM_DEVREADWRITE8("isbx", isbx_slot_device, mcs0_r, mcs0_w, 0x00ff) - AM_RANGE(0x310, 0x31f) AM_DEVREADWRITE8("isbx", isbx_slot_device, mcs1_r, mcs1_w, 0x00ff) + map(0x300, 0x30f).rw(m_isbx, FUNC(isbx_slot_device::mcs0_r), FUNC(isbx_slot_device::mcs0_w)).umask16(0x00ff); + map(0x310, 0x31f).rw(m_isbx, FUNC(isbx_slot_device::mcs1_r), FUNC(isbx_slot_device::mcs1_w)).umask16(0x00ff); // AM_RANGE(0x320, 0x321) isbx dma ack // AM_RANGE(0x330, 0x331) isbx tc -ADDRESS_MAP_END +} //************************************************************************** diff --git a/src/mame/drivers/rcorsair.cpp b/src/mame/drivers/rcorsair.cpp index 2b91ce5df1e..a7c821641f1 100644 --- a/src/mame/drivers/rcorsair.cpp +++ b/src/mame/drivers/rcorsair.cpp @@ -87,17 +87,20 @@ protected: }; -ADDRESS_MAP_START(rcorsair_state::rcorsair_main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xa000, 0xa03f) AM_RAM -ADDRESS_MAP_END +void rcorsair_state::rcorsair_main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0xa000, 0xa03f).ram(); +} -ADDRESS_MAP_START(rcorsair_state::rcorsair_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void rcorsair_state::rcorsair_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} -ADDRESS_MAP_START(rcorsair_state::rcorsair_sub_io_map) -ADDRESS_MAP_END +void rcorsair_state::rcorsair_sub_io_map(address_map &map) +{ +} static INPUT_PORTS_START( inports ) PORT_START("IN0") diff --git a/src/mame/drivers/rd100.cpp b/src/mame/drivers/rd100.cpp index 21ad378c454..234ea08fcf7 100644 --- a/src/mame/drivers/rd100.cpp +++ b/src/mame/drivers/rd100.cpp @@ -43,15 +43,16 @@ private: }; -ADDRESS_MAP_START(rd100_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_RAM +void rd100_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram(); //AM_RANGE(0x8608, 0x860f) AM_DEVREADWRITE("timer", ptm6840_device, read, write) - AM_RANGE(0x8640, 0x8643) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x8680, 0x8683) AM_DEVREADWRITE("pia2", pia6821_device, read, write) + map(0x8640, 0x8643).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8680, 0x8683).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //AM_RANGE(0x8700, 0x8700) // device - AM_RANGE(0x8800, 0xffff) AM_ROM AM_REGION("roms", 0x800) -ADDRESS_MAP_END + map(0x8800, 0xffff).rom().region("roms", 0x800); +} /* Input ports */ static INPUT_PORTS_START( rd100 ) diff --git a/src/mame/drivers/rd110.cpp b/src/mame/drivers/rd110.cpp index 19171596eff..193585907db 100644 --- a/src/mame/drivers/rd110.cpp +++ b/src/mame/drivers/rd110.cpp @@ -216,22 +216,24 @@ PALETTE_INIT_MEMBER(d110_state, d110) palette.set_pen_color(1, rgb_t(0, 0, 0)); } -ADDRESS_MAP_START(d110_state::d110_map) - AM_RANGE(0x0100, 0x0100) AM_WRITE(bank_w) - AM_RANGE(0x0200, 0x0200) AM_WRITE(so_w) - AM_RANGE(0x021a, 0x021a) AM_READ_PORT("SC0") AM_WRITENOP - AM_RANGE(0x021c, 0x021c) AM_READ_PORT("SC1") - AM_RANGE(0x0300, 0x0300) AM_WRITE(lcd_data_w) - AM_RANGE(0x0380, 0x0380) AM_READWRITE(lcd_ctrl_r, lcd_ctrl_w) - AM_RANGE(0x1000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x1000) - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("fixed") -ADDRESS_MAP_END - -ADDRESS_MAP_START(d110_state::d110_io) - AM_RANGE(i8x9x_device::SERIAL, i8x9x_device::SERIAL) AM_WRITE(midi_w) - AM_RANGE(i8x9x_device::P0, i8x9x_device::P0) AM_READ(port0_r) -ADDRESS_MAP_END +void d110_state::d110_map(address_map &map) +{ + map(0x0100, 0x0100).w(this, FUNC(d110_state::bank_w)); + map(0x0200, 0x0200).w(this, FUNC(d110_state::so_w)); + map(0x021a, 0x021a).portr("SC0").nopw(); + map(0x021c, 0x021c).portr("SC1"); + map(0x0300, 0x0300).w(this, FUNC(d110_state::lcd_data_w)); + map(0x0380, 0x0380).rw(this, FUNC(d110_state::lcd_ctrl_r), FUNC(d110_state::lcd_ctrl_w)); + map(0x1000, 0x7fff).rom().region("maincpu", 0x1000); + map(0x8000, 0xbfff).bankrw("bank"); + map(0xc000, 0xffff).bankrw("fixed"); +} + +void d110_state::d110_io(address_map &map) +{ + map(i8x9x_device::SERIAL, i8x9x_device::SERIAL).w(this, FUNC(d110_state::midi_w)); + map(i8x9x_device::P0, i8x9x_device::P0).r(this, FUNC(d110_state::port0_r)); +} MACHINE_CONFIG_START(d110_state::d110) MCFG_CPU_ADD( "maincpu", P8098, XTAL(12'000'000) ) diff --git a/src/mame/drivers/re900.cpp b/src/mame/drivers/re900.cpp index 7a7e9a87c8d..38917c27891 100644 --- a/src/mame/drivers/re900.cpp +++ b/src/mame/drivers/re900.cpp @@ -246,19 +246,21 @@ WRITE8_MEMBER(re900_state::watchdog_reset_w) * Memory Map Information * *******************************/ -ADDRESS_MAP_START(re900_state::mem_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("rom") -ADDRESS_MAP_END - -ADDRESS_MAP_START(re900_state::mem_io) - AM_RANGE(0x0000, 0xbfff) AM_READ(rom_r) - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xefff) AM_WRITE(watchdog_reset_w) - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("tms9128", tms9928a_device, vram_write) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("tms9128", tms9928a_device, register_write) - AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ay_re900", ay8910_device, address_data_w) - AM_RANGE(0xe802, 0xe802) AM_DEVREAD("ay_re900", ay8910_device, data_r) -ADDRESS_MAP_END +void re900_state::mem_prg(address_map &map) +{ + map(0x0000, 0xffff).rom().share("rom"); +} + +void re900_state::mem_io(address_map &map) +{ + map(0x0000, 0xbfff).r(this, FUNC(re900_state::rom_r)); + map(0xc000, 0xdfff).ram().share("nvram"); + map(0xe000, 0xefff).w(this, FUNC(re900_state::watchdog_reset_w)); + map(0xe000, 0xe000).w("tms9128", FUNC(tms9928a_device::vram_write)); + map(0xe001, 0xe001).w("tms9128", FUNC(tms9928a_device::register_write)); + map(0xe800, 0xe801).w("ay_re900", FUNC(ay8910_device::address_data_w)); + map(0xe802, 0xe802).r("ay_re900", FUNC(ay8910_device::data_r)); +} /************************ diff --git a/src/mame/drivers/realbrk.cpp b/src/mame/drivers/realbrk.cpp index 969953f3be2..033e2d41088 100644 --- a/src/mame/drivers/realbrk.cpp +++ b/src/mame/drivers/realbrk.cpp @@ -155,59 +155,64 @@ WRITE16_MEMBER(realbrk_state::backup_ram_w) ***************************************************************************/ /*Basic memory map for this HW*/ -ADDRESS_MAP_START(realbrk_state::base_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Background (0) - AM_RANGE(0x602000, 0x603fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Background (1) - AM_RANGE(0x604000, 0x604fff) AM_RAM_WRITE(vram_2_w) AM_SHARE("vram_2") // Text (2) - AM_RANGE(0x605000, 0x61ffff) AM_RAM // - AM_RANGE(0x606000, 0x60600f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // Scroll + Video Regs - AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00) // YMZ280 - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // RAM - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void realbrk_state::base_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x203fff).ram().share("spriteram"); // Sprites + map(0x400000, 0x40ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x600000, 0x601fff).ram().w(this, FUNC(realbrk_state::vram_0_w)).share("vram_0"); // Background (0) + map(0x602000, 0x603fff).ram().w(this, FUNC(realbrk_state::vram_1_w)).share("vram_1"); // Background (1) + map(0x604000, 0x604fff).ram().w(this, FUNC(realbrk_state::vram_2_w)).share("vram_2"); // Text (2) + map(0x605000, 0x61ffff).ram(); // + map(0x606000, 0x60600f).ram().w(this, FUNC(realbrk_state::vregs_w)).share("vregs"); // Scroll + Video Regs + map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0xff00); // YMZ280 + map(0xfe0000, 0xfeffff).ram(); // RAM + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*realbrk specific memory map*/ -ADDRESS_MAP_START(realbrk_state::realbrk_mem) - AM_IMPORT_FROM(base_mem) - AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) // - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // P1 & P2 (Inputs) - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins - AM_RANGE(0xc00004, 0xc00005) AM_RAM_READ(realbrk_dsw_r) AM_SHARE("dsw_select") // DSW select - AM_RANGE(0xff0000, 0xfffbff) AM_RAM // RAM -ADDRESS_MAP_END +void realbrk_state::realbrk_mem(address_map &map) +{ + base_mem(map); + map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); // + map(0xc00000, 0xc00001).portr("IN0"); // P1 & P2 (Inputs) + map(0xc00002, 0xc00003).portr("IN1"); // Coins + map(0xc00004, 0xc00005).ram().r(this, FUNC(realbrk_state::realbrk_dsw_r)).share("dsw_select"); // DSW select + map(0xff0000, 0xfffbff).ram(); // RAM +} /*pkgnsh specific memory map*/ -ADDRESS_MAP_START(realbrk_state::pkgnsh_mem) - AM_IMPORT_FROM(base_mem) - AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0xff00) // YM2413 - AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnsh_input_r ) // P1 & P2 (Inputs) - AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_r,backup_ram_w) AM_SHARE("backup_ram") // RAM -ADDRESS_MAP_END +void realbrk_state::pkgnsh_mem(address_map &map) +{ + base_mem(map); + map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0xff00); // YM2413 + map(0xc00000, 0xc00013).r(this, FUNC(realbrk_state::pkgnsh_input_r)); // P1 & P2 (Inputs) + map(0xff0000, 0xfffbff).rw(this, FUNC(realbrk_state::backup_ram_r), FUNC(realbrk_state::backup_ram_w)).share("backup_ram"); // RAM +} /*pkgnshdx specific memory map*/ -ADDRESS_MAP_START(realbrk_state::pkgnshdx_mem) - AM_IMPORT_FROM(base_mem) - AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) // - AM_RANGE(0xc00000, 0xc00013) AM_READ(pkgnshdx_input_r ) // P1 & P2 (Inputs) - AM_RANGE(0xc00004, 0xc00005) AM_WRITEONLY AM_SHARE("dsw_select") // DSW select - AM_RANGE(0xff0000, 0xfffbff) AM_READWRITE(backup_ram_dx_r,backup_ram_w) AM_SHARE("backup_ram") // RAM -ADDRESS_MAP_END +void realbrk_state::pkgnshdx_mem(address_map &map) +{ + base_mem(map); + map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); // + map(0xc00000, 0xc00013).r(this, FUNC(realbrk_state::pkgnshdx_input_r)); // P1 & P2 (Inputs) + map(0xc00004, 0xc00005).writeonly().share("dsw_select"); // DSW select + map(0xff0000, 0xfffbff).rw(this, FUNC(realbrk_state::backup_ram_dx_r), FUNC(realbrk_state::backup_ram_w)).share("backup_ram"); // RAM +} /*dai2kaku specific memory map*/ -ADDRESS_MAP_START(realbrk_state::dai2kaku_mem) - AM_IMPORT_FROM(base_mem) - AM_RANGE(0x605000, 0x6053ff) AM_RAM AM_SHARE("vram_0ras") // rasterinfo (0) - AM_RANGE(0x605400, 0x6057ff) AM_RAM AM_SHARE("vram_1ras") // rasterinfo (1) - AM_RANGE(0x800008, 0x80000b) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) // - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") // P1 & P2 (Inputs) - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Coins - AM_RANGE(0xc00004, 0xc00005) AM_RAM_READ(realbrk_dsw_r) AM_SHARE("dsw_select") // DSW select - AM_RANGE(0xff0000, 0xfffbff) AM_RAM // RAM - AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(dai2kaku_flipscreen_w ) // Hack! Parallel port data register -ADDRESS_MAP_END +void realbrk_state::dai2kaku_mem(address_map &map) +{ + base_mem(map); + map(0x605000, 0x6053ff).ram().share("vram_0ras"); // rasterinfo (0) + map(0x605400, 0x6057ff).ram().share("vram_1ras"); // rasterinfo (1) + map(0x800008, 0x80000b).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); // + map(0xc00000, 0xc00001).portr("IN0"); // P1 & P2 (Inputs) + map(0xc00002, 0xc00003).portr("IN1"); // Coins + map(0xc00004, 0xc00005).ram().r(this, FUNC(realbrk_state::realbrk_dsw_r)).share("dsw_select"); // DSW select + map(0xff0000, 0xfffbff).ram(); // RAM + map(0xfffd0a, 0xfffd0b).w(this, FUNC(realbrk_state::dai2kaku_flipscreen_w)); // Hack! Parallel port data register +} /*************************************************************************** diff --git a/src/mame/drivers/redalert.cpp b/src/mame/drivers/redalert.cpp index 6595613c786..e14c8f494d6 100644 --- a/src/mame/drivers/redalert.cpp +++ b/src/mame/drivers/redalert.cpp @@ -152,69 +152,73 @@ READ8_MEMBER(redalert_state::panther_unk_r) * *************************************/ -ADDRESS_MAP_START(redalert_state::redalert_main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram") - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("charram") - AM_RANGE(0x5000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ_PORT("C020") AM_WRITENOP - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_audio_command_w) - AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control") - AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color") - AM_RANGE(0xc060, 0xc060) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_voice_command_w) - AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(redalert_interrupt_clear_r, redalert_interrupt_clear_w) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(redalert_state::ww3_main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram") - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("charram") - AM_RANGE(0x5000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ_PORT("C020") AM_WRITENOP - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_audio_command_w) - AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control") - AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color") - AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(redalert_interrupt_clear_r, redalert_interrupt_clear_w) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(redalert_state::panther_main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram") - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("charram") - AM_RANGE(0x5000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ(panther_unk_r) /* vblank? */ - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(redalert_audio_command_w) - AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control") - AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color") - AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(panther_interrupt_clear_r, redalert_interrupt_clear_w) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(redalert_state::demoneye_main_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(redalert_bitmap_videoram_w) AM_SHARE("bitmap_videoram") - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("charram") - AM_RANGE(0x6000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0f8f) AM_READ_PORT("C000") AM_WRITENOP - AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x0f8f) AM_READ_PORT("C010") AM_WRITENOP - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x0f8f) AM_READ_PORT("C020") AM_WRITENOP - AM_RANGE(0xc030, 0xc030) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITE(demoneye_audio_command_w) - AM_RANGE(0xc040, 0xc040) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("video_control") - AM_RANGE(0xc050, 0xc050) AM_MIRROR(0x0f8f) AM_READNOP AM_WRITEONLY AM_SHARE("bitmap_color") - AM_RANGE(0xc060, 0xc060) AM_MIRROR(0x0f80) AM_NOP /* unknown */ - AM_RANGE(0xc061, 0xc061) AM_MIRROR(0x0f80) AM_NOP /* unknown */ - AM_RANGE(0xc062, 0xc062) AM_MIRROR(0x0f80) AM_NOP /* unknown */ - AM_RANGE(0xc070, 0xc070) AM_MIRROR(0x0f8f) AM_READWRITE(redalert_interrupt_clear_r, redalert_interrupt_clear_w) /* probably not correct */ - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END +void redalert_state::redalert_main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram"); + map(0x4000, 0x4fff).ram().share("charram"); + map(0x5000, 0xbfff).rom(); + map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw(); + map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw(); + map(0xc020, 0xc020).mirror(0x0f8f).portr("C020").nopw(); + map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_audio_command_w)); + map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control"); + map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color"); + map(0xc060, 0xc060).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_voice_command_w)); + map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::redalert_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w)); + map(0xf000, 0xffff).rom().region("maincpu", 0x8000); +} + +void redalert_state::ww3_main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram"); + map(0x4000, 0x4fff).ram().share("charram"); + map(0x5000, 0xbfff).rom(); + map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw(); + map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw(); + map(0xc020, 0xc020).mirror(0x0f8f).portr("C020").nopw(); + map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_audio_command_w)); + map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control"); + map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color"); + map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::redalert_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w)); + map(0xf000, 0xffff).rom().region("maincpu", 0x8000); +} + +void redalert_state::panther_main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram"); + map(0x4000, 0x4fff).ram().share("charram"); + map(0x5000, 0xbfff).rom(); + map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw(); + map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw(); + map(0xc020, 0xc020).mirror(0x0f8f).r(this, FUNC(redalert_state::panther_unk_r)); /* vblank? */ + map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::redalert_audio_command_w)); + map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control"); + map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color"); + map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::panther_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w)); + map(0xf000, 0xffff).rom().region("maincpu", 0x8000); +} + +void redalert_state::demoneye_main_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).ram().w(this, FUNC(redalert_state::redalert_bitmap_videoram_w)).share("bitmap_videoram"); + map(0x4000, 0x5fff).ram().share("charram"); + map(0x6000, 0xbfff).rom(); + map(0xc000, 0xc000).mirror(0x0f8f).portr("C000").nopw(); + map(0xc010, 0xc010).mirror(0x0f8f).portr("C010").nopw(); + map(0xc020, 0xc020).mirror(0x0f8f).portr("C020").nopw(); + map(0xc030, 0xc030).mirror(0x0f8f).nopr().w(this, FUNC(redalert_state::demoneye_audio_command_w)); + map(0xc040, 0xc040).mirror(0x0f8f).nopr().writeonly().share("video_control"); + map(0xc050, 0xc050).mirror(0x0f8f).nopr().writeonly().share("bitmap_color"); + map(0xc060, 0xc060).mirror(0x0f80).noprw(); /* unknown */ + map(0xc061, 0xc061).mirror(0x0f80).noprw(); /* unknown */ + map(0xc062, 0xc062).mirror(0x0f80).noprw(); /* unknown */ + map(0xc070, 0xc070).mirror(0x0f8f).rw(this, FUNC(redalert_state::redalert_interrupt_clear_r), FUNC(redalert_state::redalert_interrupt_clear_w)); /* probably not correct */ + map(0xf000, 0xffff).rom().region("maincpu", 0x8000); +} diff --git a/src/mame/drivers/redclash.cpp b/src/mame/drivers/redclash.cpp index 79fd4051f83..31901d38c80 100644 --- a/src/mame/drivers/redclash.cpp +++ b/src/mame/drivers/redclash.cpp @@ -41,45 +41,47 @@ template <unsigned B> WRITE8_MEMBER(redclash_state::redclash_star_w) m_stars->set_speed(BIT(data, 0) << B, 1U << B); } -ADDRESS_MAP_START(redclash_state::zerohour_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */ - AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */ - AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */ - AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star_w<0>) - AM_RANGE(0x5801, 0x5804) AM_WRITENOP /* to sound board */ - AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star_w<1>) - AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star_w<2>) - AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w) - AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w) - AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(redclash_state::redclash_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM +void redclash_state::zerohour_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x37ff).ram(); + map(0x3800, 0x3bff).ram().share("spriteram"); + map(0x4000, 0x43ff).ram().w(this, FUNC(redclash_state::redclash_videoram_w)).share("videoram"); + map(0x4800, 0x4800).portr("IN0"); /* IN0 */ + map(0x4801, 0x4801).portr("IN1"); /* IN1 */ + map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */ + map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */ + map(0x5000, 0x5007).nopw(); /* to sound board */ + map(0x5800, 0x5800).w(this, FUNC(redclash_state::redclash_star_w<0>)); + map(0x5801, 0x5804).nopw(); /* to sound board */ + map(0x5805, 0x5805).w(this, FUNC(redclash_state::redclash_star_w<1>)); + map(0x5806, 0x5806).w(this, FUNC(redclash_state::redclash_star_w<2>)); + map(0x5807, 0x5807).w(this, FUNC(redclash_state::redclash_flipscreen_w)); + map(0x7000, 0x7000).w(this, FUNC(redclash_state::redclash_star_reset_w)); + map(0x7800, 0x7800).w(this, FUNC(redclash_state::irqack_w)); +} + +void redclash_state::redclash_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); // AM_RANGE(0x3000, 0x3000) AM_WRITENOP // AM_RANGE(0x3800, 0x3800) AM_WRITENOP - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1") /* DSW0 */ - AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2") /* DSW1 */ - AM_RANGE(0x5000, 0x5007) AM_WRITENOP /* to sound board */ - AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star_w<0>) - AM_RANGE(0x5801, 0x5801) AM_WRITE(redclash_gfxbank_w) - AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star_w<1>) - AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star_w<2>) - AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w) - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x6800, 0x6bff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w) - AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w) -ADDRESS_MAP_END + map(0x4000, 0x43ff).ram().w(this, FUNC(redclash_state::redclash_videoram_w)).share("videoram"); + map(0x4800, 0x4800).portr("IN0"); /* IN0 */ + map(0x4801, 0x4801).portr("IN1"); /* IN1 */ + map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */ + map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */ + map(0x5000, 0x5007).nopw(); /* to sound board */ + map(0x5800, 0x5800).w(this, FUNC(redclash_state::redclash_star_w<0>)); + map(0x5801, 0x5801).w(this, FUNC(redclash_state::redclash_gfxbank_w)); + map(0x5805, 0x5805).w(this, FUNC(redclash_state::redclash_star_w<1>)); + map(0x5806, 0x5806).w(this, FUNC(redclash_state::redclash_star_w<2>)); + map(0x5807, 0x5807).w(this, FUNC(redclash_state::redclash_flipscreen_w)); + map(0x6000, 0x67ff).ram(); + map(0x6800, 0x6bff).ram().share("spriteram"); + map(0x7000, 0x7000).w(this, FUNC(redclash_state::redclash_star_reset_w)); + map(0x7800, 0x7800).w(this, FUNC(redclash_state::irqack_w)); +} /* This game doesn't have VBlank interrupts. diff --git a/src/mame/drivers/relief.cpp b/src/mame/drivers/relief.cpp index fee92c40211..f2a4b5c439c 100644 --- a/src/mame/drivers/relief.cpp +++ b/src/mame/drivers/relief.cpp @@ -107,10 +107,11 @@ WRITE16_MEMBER(relief_state::audio_volume_w) } } -ADDRESS_MAP_START(relief_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROMBANK("okibank") - AM_RANGE(0x20000, 0x3ffff) AM_ROM -ADDRESS_MAP_END +void relief_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).bankr("okibank"); + map(0x20000, 0x3ffff).rom(); +} /************************************* @@ -119,32 +120,33 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(relief_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x140000, 0x140003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) - AM_RANGE(0x140010, 0x140011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x140020, 0x140021) AM_WRITE(audio_volume_w) - AM_RANGE(0x140030, 0x140031) AM_WRITE(audio_control_w) - AM_RANGE(0x180000, 0x180fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00) - AM_RANGE(0x1c0030, 0x1c0031) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x260001) AM_READ_PORT("260000") - AM_RANGE(0x260002, 0x260003) AM_READ_PORT("260002") - AM_RANGE(0x260010, 0x260011) AM_READ(special_port2_r) - AM_RANGE(0x260012, 0x260013) AM_READ_PORT("260012") - AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write) - AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2") - AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield") - AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext") - AM_RANGE(0x3f6000, 0x3f67ff) AM_RAM AM_SHARE("vad:mob") - AM_RANGE(0x3f6800, 0x3f8eff) AM_RAM - AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_SHARE("vad:eof") - AM_RANGE(0x3f8f80, 0x3f8fff) AM_SHARE("vad:mob:slip") - AM_RANGE(0x3f9000, 0x3fffff) AM_RAM -ADDRESS_MAP_END +void relief_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fffff); + map(0x000000, 0x07ffff).rom(); + map(0x140000, 0x140003).w(m_ym2413, FUNC(ym2413_device::write)).umask16(0x00ff); + map(0x140011, 0x140011).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140020, 0x140021).w(this, FUNC(relief_state::audio_volume_w)); + map(0x140030, 0x140031).w(this, FUNC(relief_state::audio_control_w)); + map(0x180000, 0x180fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0xff00); + map(0x1c0030, 0x1c0031).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x260001).portr("260000"); + map(0x260002, 0x260003).portr("260002"); + map(0x260010, 0x260011).r(this, FUNC(relief_state::special_port2_r)); + map(0x260012, 0x260013).portr("260012"); + map(0x2a0000, 0x2a0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); + map(0x3f0000, 0x3f1fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2"); + map(0x3f2000, 0x3f3fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield"); + map(0x3f4000, 0x3f5fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext"); + map(0x3f6000, 0x3f67ff).ram().share("vad:mob"); + map(0x3f6800, 0x3f8eff).ram(); + map(0x3f8f00, 0x3f8f7f).ram().share("vad:eof"); + map(0x3f8f80, 0x3f8fff).share("vad:mob:slip"); + map(0x3f9000, 0x3fffff).ram(); +} diff --git a/src/mame/drivers/renegade.cpp b/src/mame/drivers/renegade.cpp index b18e375465f..9d98125cc23 100644 --- a/src/mame/drivers/renegade.cpp +++ b/src/mame/drivers/renegade.cpp @@ -230,39 +230,42 @@ WRITE8_MEMBER(renegade_state::coincounter_w) /********************************************************************************************/ -ADDRESS_MAP_START(renegade_state::renegade_nomcu_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x3000, 0x30ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3100, 0x31ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") AM_WRITE(scroll_lsb_w) /* Player#1 controls, P1,P2 start */ - AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") AM_WRITE(scroll_msb_w) /* Player#2 controls, coin triggers */ - AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* DIP2 various IO ports */ - AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) /* DIP1 */ - AM_RANGE(0x3805, 0x3805) AM_READNOP AM_WRITE(bankswitch_w) - AM_RANGE(0x3806, 0x3806) AM_WRITENOP // ?? watchdog - AM_RANGE(0x3807, 0x3807) AM_WRITE(coincounter_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(renegade_state::renegade_map) - AM_IMPORT_FROM(renegade_nomcu_map) - AM_RANGE(0x3804, 0x3804) AM_DEVREADWRITE("mcu", taito68705_mcu_device, data_r, data_w) - AM_RANGE(0x3805, 0x3805) AM_READ(mcu_reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(renegade_state::renegade_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_start_w) - AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_addr_w) - AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write) - AM_RANGE(0x3000, 0x3000) AM_WRITE(adpcm_stop_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void renegade_state::renegade_nomcu_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); + map(0x1800, 0x1fff).ram().w(this, FUNC(renegade_state::fg_videoram_w)).share("fg_videoram"); + map(0x2000, 0x27ff).ram().share("spriteram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(renegade_state::bg_videoram_w)).share("bg_videoram"); + map(0x3000, 0x30ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x3100, 0x31ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x3800, 0x3800).portr("IN0").w(this, FUNC(renegade_state::scroll_lsb_w)); /* Player#1 controls, P1,P2 start */ + map(0x3801, 0x3801).portr("IN1").w(this, FUNC(renegade_state::scroll_msb_w)); /* Player#2 controls, coin triggers */ + map(0x3802, 0x3802).portr("DSW2").w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* DIP2 various IO ports */ + map(0x3803, 0x3803).portr("DSW1").w(this, FUNC(renegade_state::flipscreen_w)); /* DIP1 */ + map(0x3805, 0x3805).nopr().w(this, FUNC(renegade_state::bankswitch_w)); + map(0x3806, 0x3806).nopw(); // ?? watchdog + map(0x3807, 0x3807).w(this, FUNC(renegade_state::coincounter_w)); + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom(); +} + +void renegade_state::renegade_map(address_map &map) +{ + renegade_nomcu_map(map); + map(0x3804, 0x3804).rw(m_mcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); + map(0x3805, 0x3805).r(this, FUNC(renegade_state::mcu_reset_r)); +} + +void renegade_state::renegade_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1800, 0x1800).w(this, FUNC(renegade_state::adpcm_start_w)); + map(0x2000, 0x2000).w(this, FUNC(renegade_state::adpcm_addr_w)); + map(0x2800, 0x2801).rw("ymsnd", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); + map(0x3000, 0x3000).w(this, FUNC(renegade_state::adpcm_stop_w)); + map(0x8000, 0xffff).rom(); +} static INPUT_PORTS_START( renegade ) diff --git a/src/mame/drivers/replicator.cpp b/src/mame/drivers/replicator.cpp index 3d488f3a951..6ddba3655d5 100644 --- a/src/mame/drivers/replicator.cpp +++ b/src/mame/drivers/replicator.cpp @@ -532,17 +532,20 @@ WRITE8_MEMBER(replicator_state::port_w) * Address maps * \****************************************************/ -ADDRESS_MAP_START(replicator_state::replicator_prg_map) - AM_RANGE(0x0000, 0x1FFFF) AM_ROM -ADDRESS_MAP_END +void replicator_state::replicator_prg_map(address_map &map) +{ + map(0x0000, 0x1FFFF).rom(); +} -ADDRESS_MAP_START(replicator_state::replicator_data_map) - AM_RANGE(0x0200, 0x21FF) AM_RAM /* ATMEGA1280 Internal SRAM */ -ADDRESS_MAP_END +void replicator_state::replicator_data_map(address_map &map) +{ + map(0x0200, 0x21FF).ram(); /* ATMEGA1280 Internal SRAM */ +} -ADDRESS_MAP_START(replicator_state::replicator_io_map) - AM_RANGE(AVR8_IO_PORTA, AVR8_IO_PORTL) AM_READWRITE( port_r, port_w ) -ADDRESS_MAP_END +void replicator_state::replicator_io_map(address_map &map) +{ + map(AVR8_IO_PORTA, AVR8_IO_PORTL).rw(this, FUNC(replicator_state::port_r), FUNC(replicator_state::port_w)); +} /****************************************************\ * Input ports * diff --git a/src/mame/drivers/retofinv.cpp b/src/mame/drivers/retofinv.cpp index 752e25e1fc3..975dc1cd150 100644 --- a/src/mame/drivers/retofinv.cpp +++ b/src/mame/drivers/retofinv.cpp @@ -177,50 +177,54 @@ READ8_MEMBER(retofinv_state::mcu_status_r) empty socket at IC73 from 6000-7fff) and if it finds a particular string there, it jumps to that area, presumably for diagnostic use */ -ADDRESS_MAP_START(retofinv_state::bootleg_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x7fff, 0x7fff) AM_WRITE(coincounter_w) - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x8800, 0x9fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xb800, 0xb802) AM_WRITE(gfx_ctrl_w) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") - AM_RANGE(0xc002, 0xc002) AM_READNOP /* bit 7 must be 0, otherwise game resets */ - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc005, 0xc005) AM_READ_PORT("DSW1") - AM_RANGE(0xc006, 0xc006) AM_READ_PORT("DSW2") - AM_RANGE(0xc007, 0xc007) AM_READ_PORT("DSW3") - AM_RANGE(0xc800, 0xc807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd800, 0xd800) AM_WRITE(soundcommand_w) - AM_RANGE(0xf800, 0xf800) AM_READ(cpu0_mf800_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(retofinv_state::main_map) - AM_IMPORT_FROM(bootleg_map) - AM_RANGE(0xc003, 0xc003) AM_READ(mcu_status_r) - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("68705", taito68705_mcu_device, data_r) - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("68705", taito68705_mcu_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(retofinv_state::sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x8800, 0x9fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xc800, 0xc807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(retofinv_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM /* 6116 sram at IC28 */ - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x6000, 0x6000) AM_WRITE(cpu2_m6000_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xe000, 0xffff) AM_ROM /* space for diagnostic ROM */ -ADDRESS_MAP_END +void retofinv_state::bootleg_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x7fff, 0x7fff).w(this, FUNC(retofinv_state::coincounter_w)); + map(0x8000, 0x87ff).ram().w(this, FUNC(retofinv_state::fg_videoram_w)).share("fg_videoram"); + map(0x8800, 0x9fff).ram().share("sharedram"); + map(0xa000, 0xa7ff).ram().w(this, FUNC(retofinv_state::bg_videoram_w)).share("bg_videoram"); + map(0xb800, 0xb802).w(this, FUNC(retofinv_state::gfx_ctrl_w)); + map(0xc000, 0xc000).portr("P1"); + map(0xc001, 0xc001).portr("P2"); + map(0xc002, 0xc002).nopr(); /* bit 7 must be 0, otherwise game resets */ + map(0xc004, 0xc004).portr("SYSTEM"); + map(0xc005, 0xc005).portr("DSW1"); + map(0xc006, 0xc006).portr("DSW2"); + map(0xc007, 0xc007).portr("DSW3"); + map(0xc800, 0xc807).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xd000, 0xd000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd800, 0xd800).w(this, FUNC(retofinv_state::soundcommand_w)); + map(0xf800, 0xf800).r(this, FUNC(retofinv_state::cpu0_mf800_r)); +} + +void retofinv_state::main_map(address_map &map) +{ + bootleg_map(map); + map(0xc003, 0xc003).r(this, FUNC(retofinv_state::mcu_status_r)); + map(0xe000, 0xe000).r(m_68705, FUNC(taito68705_mcu_device::data_r)); + map(0xe800, 0xe800).w(m_68705, FUNC(taito68705_mcu_device::data_w)); +} + +void retofinv_state::sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(retofinv_state::fg_videoram_w)).share("fg_videoram"); + map(0x8800, 0x9fff).ram().share("sharedram"); + map(0xa000, 0xa7ff).ram().w(this, FUNC(retofinv_state::bg_videoram_w)).share("bg_videoram"); + map(0xc800, 0xc807).w("mainlatch", FUNC(ls259_device::write_d0)); +} + +void retofinv_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); /* 6116 sram at IC28 */ + map(0x4000, 0x4000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x6000, 0x6000).w(this, FUNC(retofinv_state::cpu2_m6000_w)); + map(0x8000, 0x8000).w("sn1", FUNC(sn76489a_device::write)); + map(0xa000, 0xa000).w("sn2", FUNC(sn76489a_device::write)); + map(0xe000, 0xffff).rom(); /* space for diagnostic ROM */ +} diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp index d1631f2e5e8..18f12240bd1 100644 --- a/src/mame/drivers/rex6000.cpp +++ b/src/mame/drivers/rex6000.cpp @@ -370,59 +370,64 @@ WRITE8_MEMBER( oz750_state::kb_mask_w ) m_kb_mask = (m_kb_mask & 0xff00) | data; } -ADDRESS_MAP_START(rex6000_state::rex6000_banked_map) - AM_RANGE( 0x0000000, 0x00fffff ) AM_DEVREADWRITE("flash0a", intelfsh8_device, read, write) - AM_RANGE( 0x0100000, 0x01fffff ) AM_DEVREADWRITE("flash0b", intelfsh8_device, read, write) - AM_RANGE( 0x0c00000, 0x0cfffff ) AM_DEVREADWRITE("flash1a", intelfsh8_device, read, write) - AM_RANGE( 0x0d00000, 0x0dfffff ) AM_DEVREADWRITE("flash1b", intelfsh8_device, read, write) - AM_RANGE( 0x1600000, 0x16fffff ) AM_DEVREADWRITE("flash1a", intelfsh8_device, read, write) - AM_RANGE( 0x1700000, 0x17fffff ) AM_DEVREADWRITE("flash1b", intelfsh8_device, read, write) - AM_RANGE( 0x2000000, 0x2007fff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(oz750_state::oz750_banked_map) - AM_RANGE( 0x0000000, 0x01fffff ) AM_DEVREADWRITE("flash0a", intelfsh8_device, read, write) - AM_RANGE( 0x0200000, 0x02fffff ) AM_MIRROR(0x100000) AM_DEVREADWRITE("flash1a", intelfsh8_device, read, write) - AM_RANGE( 0x0600000, 0x07fffff ) AM_READWRITE(lcd_io_r, lcd_io_w) - AM_RANGE( 0x0800000, 0x083ffff ) AM_MIRROR(0x1c0000) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x0a00000, 0x0a3ffff ) AM_MIRROR(0x1c0000) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(rex6000_state::rex6000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("flash0a", intelfsh8_device, read, write) - AM_RANGE( 0x8000, 0x9fff ) AM_DEVREADWRITE("bank0", address_map_bank_device, read8, write8) - AM_RANGE( 0xa000, 0xbfff ) AM_DEVREADWRITE("bank1", address_map_bank_device, read8, write8) - AM_RANGE( 0xc000, 0xffff ) AM_RAMBANK("ram") //system RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rex6000_state::rex6000_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x04 ) AM_READWRITE(bankswitch_r, bankswitch_w) - AM_RANGE( 0x05, 0x07 ) AM_READWRITE(irq_r, irq_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("INPUT") - AM_RANGE( 0x15, 0x19 ) AM_READWRITE(beep_r, beep_w) - AM_RANGE( 0x22, 0x23 ) AM_READWRITE(lcd_base_r, lcd_base_w) - AM_RANGE( 0x30, 0x3f ) AM_DEVREADWRITE(TC8521_TAG, tc8521_device, read, write) - AM_RANGE( 0x40, 0x47 ) AM_MIRROR(0x08) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w ) - AM_RANGE( 0x50, 0x51 ) AM_READWRITE(lcd_io_r, lcd_io_w) - AM_RANGE( 0x60, 0x6f ) AM_READWRITE(touchscreen_r, touchscreen_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(oz750_state::oz750_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x04 ) AM_READWRITE(bankswitch_r, bankswitch_w) - AM_RANGE( 0x05, 0x08 ) AM_READWRITE(irq_r, irq_w) - AM_RANGE( 0x10, 0x10 ) AM_READ(kb_data_r) - AM_RANGE( 0x11, 0x12 ) AM_READWRITE(kb_status_r, kb_mask_w) - AM_RANGE( 0x15, 0x19 ) AM_READWRITE(beep_r, beep_w) - AM_RANGE( 0x22, 0x23 ) AM_READWRITE(lcd_base_r, lcd_base_w) - AM_RANGE( 0x30, 0x3f ) AM_DEVREADWRITE(TC8521_TAG, tc8521_device, read, write) - AM_RANGE( 0x40, 0x47 ) AM_MIRROR(0x08) AM_DEVREADWRITE("ns16550", ns16550_device, ins8250_r, ins8250_w ) -ADDRESS_MAP_END +void rex6000_state::rex6000_banked_map(address_map &map) +{ + map(0x0000000, 0x00fffff).rw("flash0a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0100000, 0x01fffff).rw(m_flash0b, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0c00000, 0x0cfffff).rw("flash1a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0d00000, 0x0dfffff).rw("flash1b", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x1600000, 0x16fffff).rw("flash1a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x1700000, 0x17fffff).rw("flash1b", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x2000000, 0x2007fff).ram().share("nvram"); +} + +void oz750_state::oz750_banked_map(address_map &map) +{ + map(0x0000000, 0x01fffff).rw("flash0a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0200000, 0x02fffff).mirror(0x100000).rw("flash1a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x0600000, 0x07fffff).rw(this, FUNC(oz750_state::lcd_io_r), FUNC(oz750_state::lcd_io_w)); + map(0x0800000, 0x083ffff).mirror(0x1c0000).ram().share("nvram"); + map(0x0a00000, 0x0a3ffff).mirror(0x1c0000).ram(); +} + + +void rex6000_state::rex6000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rw("flash0a", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x8000, 0x9fff).rw(m_bankdev0, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xa000, 0xbfff).rw(m_bankdev1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xc000, 0xffff).bankrw("ram"); //system RAM +} + +void rex6000_state::rex6000_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x01, 0x04).rw(this, FUNC(rex6000_state::bankswitch_r), FUNC(rex6000_state::bankswitch_w)); + map(0x05, 0x07).rw(this, FUNC(rex6000_state::irq_r), FUNC(rex6000_state::irq_w)); + map(0x10, 0x10).portr("INPUT"); + map(0x15, 0x19).rw(this, FUNC(rex6000_state::beep_r), FUNC(rex6000_state::beep_w)); + map(0x22, 0x23).rw(this, FUNC(rex6000_state::lcd_base_r), FUNC(rex6000_state::lcd_base_w)); + map(0x30, 0x3f).rw(TC8521_TAG, FUNC(tc8521_device::read), FUNC(tc8521_device::write)); + map(0x40, 0x47).mirror(0x08).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); + map(0x50, 0x51).rw(this, FUNC(rex6000_state::lcd_io_r), FUNC(rex6000_state::lcd_io_w)); + map(0x60, 0x6f).rw(this, FUNC(rex6000_state::touchscreen_r), FUNC(rex6000_state::touchscreen_w)); +} + +void oz750_state::oz750_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x01, 0x04).rw(this, FUNC(oz750_state::bankswitch_r), FUNC(oz750_state::bankswitch_w)); + map(0x05, 0x08).rw(this, FUNC(oz750_state::irq_r), FUNC(oz750_state::irq_w)); + map(0x10, 0x10).r(this, FUNC(oz750_state::kb_data_r)); + map(0x11, 0x12).rw(this, FUNC(oz750_state::kb_status_r), FUNC(oz750_state::kb_mask_w)); + map(0x15, 0x19).rw(this, FUNC(oz750_state::beep_r), FUNC(oz750_state::beep_w)); + map(0x22, 0x23).rw(this, FUNC(oz750_state::lcd_base_r), FUNC(oz750_state::lcd_base_w)); + map(0x30, 0x3f).rw(TC8521_TAG, FUNC(tc8521_device::read), FUNC(tc8521_device::write)); + map(0x40, 0x47).mirror(0x08).rw(m_uart, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); +} INPUT_CHANGED_MEMBER(rex6000_state::trigger_irq) { diff --git a/src/mame/drivers/rgum.cpp b/src/mame/drivers/rgum.cpp index 1caa6888f71..48113282c73 100644 --- a/src/mame/drivers/rgum.cpp +++ b/src/mame/drivers/rgum.cpp @@ -74,25 +74,26 @@ uint32_t rgum_state::screen_update_royalgum(screen_device &screen, bitmap_ind16 return 0; } -ADDRESS_MAP_START(rgum_state::rgum_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM //not all of it? +void rgum_state::rgum_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); //not all of it? - AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x2002, 0x2002) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_w) + map(0x2000, 0x2000).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x2002, 0x2002).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); - AM_RANGE(0x2801, 0x2801) AM_READNOP //read but value discarded? - AM_RANGE(0x2803, 0x2803) AM_READNOP + map(0x2801, 0x2801).nopr(); //read but value discarded? + map(0x2803, 0x2803).nopr(); - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) + map(0x3000, 0x3003).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("cram") + map(0x4000, 0x47ff).ram().share("vram"); + map(0x5000, 0x57ff).ram().share("cram"); - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x8000, 0xffff).rom(); +} CUSTOM_INPUT_MEMBER(rgum_state::rgum_heartbeat_r) diff --git a/src/mame/drivers/risc2500.cpp b/src/mame/drivers/risc2500.cpp index 153354fd54c..ac1a4119fd3 100644 --- a/src/mame/drivers/risc2500.cpp +++ b/src/mame/drivers/risc2500.cpp @@ -302,12 +302,13 @@ void risc2500_state::machine_reset() install_boot_rom(); } -ADDRESS_MAP_START(risc2500_state::risc2500_mem) - AM_RANGE( 0x00000000, 0x0001ffff ) AM_RAM - AM_RANGE( 0x01800000, 0x01800003 ) AM_READ(disable_boot_rom) - AM_RANGE( 0x01000000, 0x01000003 ) AM_READWRITE(p1000_r, p1000_w) - AM_RANGE( 0x02000000, 0x0203ffff ) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void risc2500_state::risc2500_mem(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram(); + map(0x01800000, 0x01800003).r(this, FUNC(risc2500_state::disable_boot_rom)); + map(0x01000000, 0x01000003).rw(this, FUNC(risc2500_state::p1000_r), FUNC(risc2500_state::p1000_w)); + map(0x02000000, 0x0203ffff).rom().region("maincpu", 0); +} MACHINE_CONFIG_START(risc2500_state::risc2500) diff --git a/src/mame/drivers/riscpc.cpp b/src/mame/drivers/riscpc.cpp index 819570cf9b8..e56656a7969 100644 --- a/src/mame/drivers/riscpc.cpp +++ b/src/mame/drivers/riscpc.cpp @@ -760,8 +760,9 @@ WRITE32_MEMBER( riscpc_state::a7000_iomd_w ) } } -ADDRESS_MAP_START(riscpc_state::a7000_mem) - AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0x00800000) AM_ROM AM_REGION("user1", 0) +void riscpc_state::a7000_mem(address_map &map) +{ + map(0x00000000, 0x003fffff).mirror(0x00800000).rom().region("user1", 0); // AM_RANGE(0x01000000, 0x01ffffff) AM_NOP //expansion ROM // AM_RANGE(0x02000000, 0x02ffffff) AM_RAM //VRAM // I/O 03000000 - 033fffff @@ -770,16 +771,16 @@ ADDRESS_MAP_START(riscpc_state::a7000_mem) // AM_RANGE(0x0302b000, 0x0302bfff) //Network podule // AM_RANGE(0x03040000, 0x0304ffff) //podule space 0,1,2,3 // AM_RANGE(0x03070000, 0x0307ffff) //podule space 4,5,6,7 - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(a7000_iomd_r,a7000_iomd_w) //IOMD Registers //mirrored at 0x03000000-0x1ff? + map(0x03200000, 0x032001ff).rw(this, FUNC(riscpc_state::a7000_iomd_r), FUNC(riscpc_state::a7000_iomd_w)); //IOMD Registers //mirrored at 0x03000000-0x1ff? // AM_RANGE(0x03310000, 0x03310003) //Mouse Buttons - AM_RANGE(0x03400000, 0x037fffff) AM_WRITE(a7000_vidc20_w) + map(0x03400000, 0x037fffff).w(this, FUNC(riscpc_state::a7000_vidc20_w)); // AM_RANGE(0x08000000, 0x08ffffff) AM_MIRROR(0x07000000) //EASI space - AM_RANGE(0x10000000, 0x13ffffff) AM_RAM //SIMM 0 bank 0 - AM_RANGE(0x14000000, 0x17ffffff) AM_RAM //SIMM 0 bank 1 + map(0x10000000, 0x13ffffff).ram(); //SIMM 0 bank 0 + map(0x14000000, 0x17ffffff).ram(); //SIMM 0 bank 1 // AM_RANGE(0x18000000, 0x18ffffff) AM_MIRROR(0x03000000) AM_RAM //SIMM 1 bank 0 // AM_RANGE(0x1c000000, 0x1cffffff) AM_MIRROR(0x03000000) AM_RAM //SIMM 1 bank 1 -ADDRESS_MAP_END +} /* Input ports */ diff --git a/src/mame/drivers/rltennis.cpp b/src/mame/drivers/rltennis.cpp index 201a4b16816..23c3b98e031 100644 --- a/src/mame/drivers/rltennis.cpp +++ b/src/mame/drivers/rltennis.cpp @@ -91,21 +91,22 @@ WRITE16_MEMBER(rltennis_state::snd2_w) COMBINE_DATA(&m_data740000); } -ADDRESS_MAP_START(rltennis_state::rltennis_main) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x700000, 0x70000f) AM_WRITE(blitter_w) - AM_RANGE(0x720000, 0x720001) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff) - AM_RANGE(0x720002, 0x720003) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff) - AM_RANGE(0x720006, 0x720007) AM_DEVWRITE8("ramdac",ramdac_device,index_r_w,0x00ff) - AM_RANGE(0x740000, 0x740001) AM_WRITE(snd1_w) - AM_RANGE(0x760000, 0x760001) AM_WRITE(snd2_w) - AM_RANGE(0x780000, 0x780001) AM_WRITENOP /* sound control, unknown, usually = 0x0044 */ - AM_RANGE(0x7a0000, 0x7a0003) AM_READNOP /* unknown, read only at boot time*/ - AM_RANGE(0x7e0000, 0x7e0001) AM_READ(io_r) - AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2") -ADDRESS_MAP_END +void rltennis_state::rltennis_main(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram().share("nvram"); + map(0x200000, 0x20ffff).ram(); + map(0x700000, 0x70000f).w(this, FUNC(rltennis_state::blitter_w)); + map(0x720001, 0x720001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x720003, 0x720003).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w)); + map(0x720007, 0x720007).w("ramdac", FUNC(ramdac_device::index_r_w)); + map(0x740000, 0x740001).w(this, FUNC(rltennis_state::snd1_w)); + map(0x760000, 0x760001).w(this, FUNC(rltennis_state::snd2_w)); + map(0x780000, 0x780001).nopw(); /* sound control, unknown, usually = 0x0044 */ + map(0x7a0000, 0x7a0003).nopr(); /* unknown, read only at boot time*/ + map(0x7e0000, 0x7e0001).r(this, FUNC(rltennis_state::io_r)); + map(0x7e0002, 0x7e0003).portr("P2"); +} static INPUT_PORTS_START( rltennis ) PORT_START("P1") @@ -179,9 +180,10 @@ void rltennis_state::machine_reset() m_timer->adjust(attotime::from_hz(RLT_TIMER_FREQ)); } -ADDRESS_MAP_START(rltennis_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) -ADDRESS_MAP_END +void rltennis_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w)); +} MACHINE_CONFIG_START(rltennis_state::rltennis) diff --git a/src/mame/drivers/rm380z.cpp b/src/mame/drivers/rm380z.cpp index b12d6d1ccb9..7e20c7081d4 100644 --- a/src/mame/drivers/rm380z.cpp +++ b/src/mame/drivers/rm380z.cpp @@ -171,30 +171,34 @@ Module timer tag static_vblank_timer name m_expire.seconds #include "screen.h" -ADDRESS_MAP_START(rm380z_state::rm380z_mem) - AM_RANGE( 0xe000, 0xefff ) AM_ROM AM_REGION(RM380Z_MAINCPU_TAG, 0) - AM_RANGE( 0xf000, 0xf5ff ) AM_READWRITE(videoram_read,videoram_write) - AM_RANGE( 0xf600, 0xf9ff ) AM_ROM AM_REGION(RM380Z_MAINCPU_TAG, 0x1000) /* Extra ROM space for COS4.0 */ - AM_RANGE( 0xfa00, 0xfaff ) AM_RAM - AM_RANGE( 0xfb00, 0xfbff ) AM_READWRITE( port_read, port_write ) - AM_RANGE( 0xfc00, 0xffff ) AM_READWRITE(hiram_read,hiram_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rm380z_state::rm380z_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xbf) AM_READWRITE(rm380z_portlow_r, rm380z_portlow_w) - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("wd1771", fd1771_device, read, write) - AM_RANGE(0xc4, 0xc4) AM_WRITE(disk_0_control) - AM_RANGE(0xc5, 0xff) AM_READWRITE(rm380z_porthi_r, rm380z_porthi_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rm380z_state::rm480z_mem) - AM_RANGE( 0x0000, 0xe7ff ) AM_RAM - AM_RANGE( 0xe800, 0xf7ff ) AM_ROM AM_REGION(RM380Z_MAINCPU_TAG, 0) - AM_RANGE( 0xf800, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rm380z_state::rm480z_io) +void rm380z_state::rm380z_mem(address_map &map) +{ + map(0xe000, 0xefff).rom().region(RM380Z_MAINCPU_TAG, 0); + map(0xf000, 0xf5ff).rw(this, FUNC(rm380z_state::videoram_read), FUNC(rm380z_state::videoram_write)); + map(0xf600, 0xf9ff).rom().region(RM380Z_MAINCPU_TAG, 0x1000); /* Extra ROM space for COS4.0 */ + map(0xfa00, 0xfaff).ram(); + map(0xfb00, 0xfbff).rw(this, FUNC(rm380z_state::port_read), FUNC(rm380z_state::port_write)); + map(0xfc00, 0xffff).rw(this, FUNC(rm380z_state::hiram_read), FUNC(rm380z_state::hiram_write)); +} + +void rm380z_state::rm380z_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xbf).rw(this, FUNC(rm380z_state::rm380z_portlow_r), FUNC(rm380z_state::rm380z_portlow_w)); + map(0xc0, 0xc3).rw(m_fdc, FUNC(fd1771_device::read), FUNC(fd1771_device::write)); + map(0xc4, 0xc4).w(this, FUNC(rm380z_state::disk_0_control)); + map(0xc5, 0xff).rw(this, FUNC(rm380z_state::rm380z_porthi_r), FUNC(rm380z_state::rm380z_porthi_w)); +} + +void rm380z_state::rm480z_mem(address_map &map) +{ + map(0x0000, 0xe7ff).ram(); + map(0xe800, 0xf7ff).rom().region(RM380Z_MAINCPU_TAG, 0); + map(0xf800, 0xffff).ram(); +} + +void rm380z_state::rm480z_io(address_map &map) +{ //AM_RANGE(0x00, 0x17) AM_RAM // videoram //AM_RANGE(0x18, 0x18) AM_MIRROR(0xff00) // control port 0 //AM_RANGE(0x19, 0x19) AM_MIRROR(0xff00) // control port 1 @@ -207,7 +211,7 @@ ADDRESS_MAP_START(rm380z_state::rm480z_io) //AM_RANGE(0x2c, 0x2f) AM_MIRROR(0xff00) // z80ctc IEEE int, Maths int, RTC, RTC // option //AM_RANGE(0x30, 0x37) AM_MIRROR(0xff00) // IEEE chip // option //AM_RANGE(0x38, 0x3b) AM_MIRROR(0xff00) // Hi-res graphics option -ADDRESS_MAP_END +} INPUT_PORTS_START( rm380z ) // PORT_START("additional_chars") diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp index 45bb8e1865c..0ad7b06d25d 100644 --- a/src/mame/drivers/rmhaihai.cpp +++ b/src/mame/drivers/rmhaihai.cpp @@ -251,53 +251,57 @@ void themj_state::machine_reset() -ADDRESS_MAP_START(rmhaihai_state::rmhaihai_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb83c, 0xb83c) AM_WRITENOP // ?? - AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // ?? - AM_RANGE(0xc000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM /* rmhaisei only */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(rmhaihai_state::rmhaihai_io_map) - AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r) - AM_RANGE(0x8000, 0x8000) AM_READ(keyboard_r) AM_WRITENOP // ?? - AM_RANGE(0x8001, 0x8001) AM_READNOP AM_WRITE(keyboard_w) // ?? - AM_RANGE(0x8020, 0x8020) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x8040, 0x8040) AM_WRITE(adpcm_w) - AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w) - AM_RANGE(0x8080, 0x8080) AM_WRITENOP // ?? - AM_RANGE(0xbc04, 0xbc04) AM_WRITENOP // ?? - AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ?? -ADDRESS_MAP_END - -ADDRESS_MAP_START(themj_state::themj_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("bank2") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(themj_state::themj_io_map) - AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r) - AM_RANGE(0x8000, 0x8000) AM_READ(keyboard_r) AM_WRITENOP // ?? - AM_RANGE(0x8001, 0x8001) AM_READNOP AM_WRITE(keyboard_w) // ?? - AM_RANGE(0x8020, 0x8020) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x8020, 0x8021) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x8040, 0x8040) AM_WRITE(adpcm_w) - AM_RANGE(0x8060, 0x8060) AM_WRITE(ctrl_w) - AM_RANGE(0x8080, 0x8080) AM_WRITENOP // ?? - AM_RANGE(0x80a0, 0x80a0) AM_WRITE(themj_rombank_w) - AM_RANGE(0xbc04, 0xbc04) AM_WRITENOP // ?? - AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP // ?? -ADDRESS_MAP_END +void rmhaihai_state::rmhaihai_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa7ff).ram().share("nvram"); + map(0xa800, 0xafff).ram().w(this, FUNC(rmhaihai_state::colorram_w)).share("colorram"); + map(0xb000, 0xb7ff).ram().w(this, FUNC(rmhaihai_state::videoram_w)).share("videoram"); + map(0xb83c, 0xb83c).nopw(); // ?? + map(0xbc00, 0xbc00).nopw(); // ?? + map(0xc000, 0xdfff).rom(); + map(0xe000, 0xffff).rom(); /* rmhaisei only */ +} + +void rmhaihai_state::rmhaihai_io_map(address_map &map) +{ + map(0x0000, 0x7fff).r(this, FUNC(rmhaihai_state::samples_r)); + map(0x8000, 0x8000).r(this, FUNC(rmhaihai_state::keyboard_r)).nopw(); // ?? + map(0x8001, 0x8001).nopr().w(this, FUNC(rmhaihai_state::keyboard_w)); // ?? + map(0x8020, 0x8020).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x8020, 0x8021).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x8040, 0x8040).w(this, FUNC(rmhaihai_state::adpcm_w)); + map(0x8060, 0x8060).w(this, FUNC(rmhaihai_state::ctrl_w)); + map(0x8080, 0x8080).nopw(); // ?? + map(0xbc04, 0xbc04).nopw(); // ?? + map(0xbc0c, 0xbc0c).nopw(); // ?? +} + +void themj_state::themj_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xa7ff).ram(); + map(0xa800, 0xafff).ram().w(this, FUNC(themj_state::colorram_w)).share("colorram"); + map(0xb000, 0xb7ff).ram().w(this, FUNC(themj_state::videoram_w)).share("videoram"); + map(0xc000, 0xdfff).bankr("bank2"); + map(0xe000, 0xffff).rom(); +} + +void themj_state::themj_io_map(address_map &map) +{ + map(0x0000, 0x7fff).r(this, FUNC(themj_state::samples_r)); + map(0x8000, 0x8000).r(this, FUNC(themj_state::keyboard_r)).nopw(); // ?? + map(0x8001, 0x8001).nopr().w(this, FUNC(themj_state::keyboard_w)); // ?? + map(0x8020, 0x8020).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x8020, 0x8021).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x8040, 0x8040).w(this, FUNC(themj_state::adpcm_w)); + map(0x8060, 0x8060).w(this, FUNC(themj_state::ctrl_w)); + map(0x8080, 0x8080).nopw(); // ?? + map(0x80a0, 0x80a0).w(this, FUNC(themj_state::themj_rombank_w)); + map(0xbc04, 0xbc04).nopw(); // ?? + map(0xbc0c, 0xbc0c).nopw(); // ?? +} static INPUT_PORTS_START( mjctrl ) diff --git a/src/mame/drivers/rmnimbus.cpp b/src/mame/drivers/rmnimbus.cpp index f977ab7de47..e7855be4868 100644 --- a/src/mame/drivers/rmnimbus.cpp +++ b/src/mame/drivers/rmnimbus.cpp @@ -36,31 +36,33 @@ static SLOT_INTERFACE_START(keyboard) SLOT_INTERFACE("rmnkbd", RMNIMBUS_KEYBOARD) SLOT_INTERFACE_END -ADDRESS_MAP_START(rmnimbus_state::nimbus_mem) - AM_RANGE( 0x00000, 0x1FFFF ) AM_RAMBANK(RAM_BANK00_TAG) - AM_RANGE( 0x20000, 0x3FFFF ) AM_RAMBANK(RAM_BANK01_TAG) - AM_RANGE( 0x40000, 0x5FFFF ) AM_RAMBANK(RAM_BANK02_TAG) - AM_RANGE( 0x60000, 0x7FFFF ) AM_RAMBANK(RAM_BANK03_TAG) - AM_RANGE( 0x80000, 0x9FFFF ) AM_RAMBANK(RAM_BANK04_TAG) - AM_RANGE( 0xA0000, 0xBFFFF ) AM_RAMBANK(RAM_BANK05_TAG) - AM_RANGE( 0xC0000, 0xDFFFF ) AM_RAMBANK(RAM_BANK06_TAG) - AM_RANGE( 0xE0000, 0xEFFFF ) AM_RAMBANK(RAM_BANK07_TAG) - AM_RANGE( 0xF0000, 0xFFFFF ) AM_ROM AM_REGION(MAINCPU_TAG, 0x0f0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rmnimbus_state::nimbus_io) - AM_RANGE( 0x0000, 0x0031) AM_READWRITE(nimbus_video_io_r, nimbus_video_io_w) - AM_RANGE( 0x0080, 0x0081) AM_READWRITE8(nimbus_mcu_r, nimbus_mcu_w, 0x00FF) - AM_RANGE( 0x0092, 0x0093) AM_READWRITE8(nimbus_iou_r, nimbus_iou_w, 0x00FF) - AM_RANGE( 0x00A4, 0x00A5) AM_READWRITE8(nimbus_mouse_js_r, nimbus_mouse_js_w, 0x00FF) - AM_RANGE( 0x00c0, 0x00cf) AM_READWRITE8(nimbus_pc8031_r, nimbus_pc8031_w, 0x00FF) - AM_RANGE( 0x00e0, 0x00ef) AM_DEVREADWRITE8(AY8910_TAG, ay8910_device, data_r, address_data_w, 0x00FF) - AM_RANGE( 0x00f0, 0x00f7) AM_DEVREADWRITE8(Z80SIO_TAG, z80sio2_device, cd_ba_r, cd_ba_w, 0x00ff) - AM_RANGE( 0x0400, 0x0401) AM_WRITE8(fdc_ctl_w, 0x00ff) - AM_RANGE( 0x0408, 0x040f) AM_DEVREADWRITE8(FDC_TAG, wd2793_device, read, write, 0x00ff) - AM_RANGE( 0x0410, 0x041f) AM_READWRITE8(scsi_r, scsi_w, 0x00ff) - AM_RANGE( 0x0480, 0x049f) AM_DEVREADWRITE8(VIA_TAG, via6522_device, read, write, 0x00FF) -ADDRESS_MAP_END +void rmnimbus_state::nimbus_mem(address_map &map) +{ + map(0x00000, 0x1FFFF).bankrw(RAM_BANK00_TAG); + map(0x20000, 0x3FFFF).bankrw(RAM_BANK01_TAG); + map(0x40000, 0x5FFFF).bankrw(RAM_BANK02_TAG); + map(0x60000, 0x7FFFF).bankrw(RAM_BANK03_TAG); + map(0x80000, 0x9FFFF).bankrw(RAM_BANK04_TAG); + map(0xA0000, 0xBFFFF).bankrw(RAM_BANK05_TAG); + map(0xC0000, 0xDFFFF).bankrw(RAM_BANK06_TAG); + map(0xE0000, 0xEFFFF).bankrw(RAM_BANK07_TAG); + map(0xF0000, 0xFFFFF).rom().region(MAINCPU_TAG, 0x0f0000); +} + +void rmnimbus_state::nimbus_io(address_map &map) +{ + map(0x0000, 0x0031).rw(this, FUNC(rmnimbus_state::nimbus_video_io_r), FUNC(rmnimbus_state::nimbus_video_io_w)); + map(0x0080, 0x0080).rw(this, FUNC(rmnimbus_state::nimbus_mcu_r), FUNC(rmnimbus_state::nimbus_mcu_w)); + map(0x0092, 0x0092).rw(this, FUNC(rmnimbus_state::nimbus_iou_r), FUNC(rmnimbus_state::nimbus_iou_w)); + map(0x00a4, 0x00a4).rw(this, FUNC(rmnimbus_state::nimbus_mouse_js_r), FUNC(rmnimbus_state::nimbus_mouse_js_w)); + map(0x00c0, 0x00cf).rw(this, FUNC(rmnimbus_state::nimbus_pc8031_r), FUNC(rmnimbus_state::nimbus_pc8031_w)).umask16(0x00ff); + map(0x00e0, 0x00ef).rw(AY8910_TAG, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x00f0, 0x00f7).rw(m_z80sio, FUNC(z80sio2_device::cd_ba_r), FUNC(z80sio2_device::cd_ba_w)).umask16(0x00ff); + map(0x0400, 0x0400).w(this, FUNC(rmnimbus_state::fdc_ctl_w)); + map(0x0408, 0x040f).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)).umask16(0x00ff); + map(0x0410, 0x041f).rw(this, FUNC(rmnimbus_state::scsi_r), FUNC(rmnimbus_state::scsi_w)).umask16(0x00ff); + map(0x0480, 0x049f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)).umask16(0x00ff); +} static INPUT_PORTS_START( nimbus ) @@ -89,15 +91,17 @@ static INPUT_PORTS_START( nimbus ) INPUT_PORTS_END -ADDRESS_MAP_START(rmnimbus_state::nimbus_iocpu_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rmnimbus_state::nimbus_iocpu_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x000FF) AM_READWRITE(nimbus_pc8031_iou_r, nimbus_pc8031_iou_w) -ADDRESS_MAP_END +void rmnimbus_state::nimbus_iocpu_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); +} + +void rmnimbus_state::nimbus_iocpu_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x000FF).rw(this, FUNC(rmnimbus_state::nimbus_pc8031_iou_r), FUNC(rmnimbus_state::nimbus_pc8031_iou_w)); +} MACHINE_CONFIG_START(rmnimbus_state::nimbus) /* basic machine hardware */ diff --git a/src/mame/drivers/rmt32.cpp b/src/mame/drivers/rmt32.cpp index 1b88a8516fd..9c8fd506a9d 100644 --- a/src/mame/drivers/rmt32.cpp +++ b/src/mame/drivers/rmt32.cpp @@ -332,23 +332,25 @@ PALETTE_INIT_MEMBER(mt32_state, mt32) palette.set_pen_color(1, rgb_t(0, 255, 0)); } -ADDRESS_MAP_START(mt32_state::mt32_map) - AM_RANGE(0x0100, 0x0100) AM_WRITE(bank_w) - AM_RANGE(0x0200, 0x0200) AM_WRITE(so_w) - AM_RANGE(0x021a, 0x021a) AM_READ_PORT("SC0") - AM_RANGE(0x021c, 0x021c) AM_READ_PORT("SC1") - AM_RANGE(0x0300, 0x0300) AM_WRITE(lcd_data_w) - AM_RANGE(0x0380, 0x0380) AM_READWRITE(lcd_ctrl_r, lcd_ctrl_w) - AM_RANGE(0x1000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x1000) - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("fixed") -ADDRESS_MAP_END - -ADDRESS_MAP_START(mt32_state::mt32_io) - AM_RANGE(i8x9x_device::A7, i8x9x_device::A7) AM_READ_PORT("A7") - AM_RANGE(i8x9x_device::SERIAL, i8x9x_device::SERIAL) AM_WRITE(midi_w) - AM_RANGE(i8x9x_device::P0, i8x9x_device::P0) AM_READ(port0_r) -ADDRESS_MAP_END +void mt32_state::mt32_map(address_map &map) +{ + map(0x0100, 0x0100).w(this, FUNC(mt32_state::bank_w)); + map(0x0200, 0x0200).w(this, FUNC(mt32_state::so_w)); + map(0x021a, 0x021a).portr("SC0"); + map(0x021c, 0x021c).portr("SC1"); + map(0x0300, 0x0300).w(this, FUNC(mt32_state::lcd_data_w)); + map(0x0380, 0x0380).rw(this, FUNC(mt32_state::lcd_ctrl_r), FUNC(mt32_state::lcd_ctrl_w)); + map(0x1000, 0x7fff).rom().region("maincpu", 0x1000); + map(0x8000, 0xbfff).bankrw("bank"); + map(0xc000, 0xffff).bankrw("fixed"); +} + +void mt32_state::mt32_io(address_map &map) +{ + map(i8x9x_device::A7, i8x9x_device::A7).portr("A7"); + map(i8x9x_device::SERIAL, i8x9x_device::SERIAL).w(this, FUNC(mt32_state::midi_w)); + map(i8x9x_device::P0, i8x9x_device::P0).r(this, FUNC(mt32_state::port0_r)); +} MACHINE_CONFIG_START(mt32_state::mt32) MCFG_CPU_ADD( "maincpu", P8098, XTAL(12'000'000) ) diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp index 548ea2db785..fac614158cd 100644 --- a/src/mame/drivers/rockrage.cpp +++ b/src/mame/drivers/rockrage.cpp @@ -97,40 +97,43 @@ WRITE8_MEMBER(rockrage_state::rockrage_speech_w) m_vlm->st((data >> 0) & 0x01); } -ADDRESS_MAP_START(rockrage_state::rockrage_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k007342", k007342_device, read, write) /* Color RAM + Video RAM */ - AM_RANGE(0x2000, 0x21ff) AM_DEVREADWRITE("k007420", k007420_device, read, write) /* Sprite RAM */ - AM_RANGE(0x2200, 0x23ff) AM_DEVREADWRITE("k007342", k007342_device, scroll_r, scroll_w) /* Scroll RAM */ - AM_RANGE(0x2400, 0x247f) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0x2600, 0x2607) AM_DEVWRITE("k007342", k007342_device, vreg_w) /* Video Registers */ - AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1") - AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2") - AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2") - AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1") - AM_RANGE(0x2e80, 0x2e80) AM_WRITE(rockrage_sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x2ec0, 0x2ec0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2f00, 0x2f00) AM_WRITE(rockrage_vreg_w) /* ??? */ - AM_RANGE(0x2f40, 0x2f40) AM_WRITE(rockrage_bankswitch_w) /* bankswitch control */ - AM_RANGE(0x4000, 0x5fff) AM_RAM /* RAM */ - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(rockrage_state::rockrage_sound_map) - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* VLM5030 */ - AM_RANGE(0x3000, 0x3000) AM_READ(rockrage_VLM5030_busy_r) /* VLM5030 */ - AM_RANGE(0x4000, 0x4000) AM_WRITE(rockrage_speech_w) /* VLM5030 */ - AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) /* YM 2151 */ - AM_RANGE(0x7000, 0x77ff) AM_RAM /* RAM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(rockrage_state::rockrage_vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void rockrage_state::rockrage_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(m_k007342, FUNC(k007342_device::read), FUNC(k007342_device::write)); /* Color RAM + Video RAM */ + map(0x2000, 0x21ff).rw(m_k007420, FUNC(k007420_device::read), FUNC(k007420_device::write)); /* Sprite RAM */ + map(0x2200, 0x23ff).rw(m_k007342, FUNC(k007342_device::scroll_r), FUNC(k007342_device::scroll_w)); /* Scroll RAM */ + map(0x2400, 0x247f).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette"); + map(0x2600, 0x2607).w(m_k007342, FUNC(k007342_device::vreg_w)); /* Video Registers */ + map(0x2e00, 0x2e00).portr("SYSTEM"); + map(0x2e01, 0x2e01).portr("P1"); + map(0x2e02, 0x2e02).portr("P2"); + map(0x2e03, 0x2e03).portr("DSW2"); + map(0x2e40, 0x2e40).portr("DSW1"); + map(0x2e80, 0x2e80).w(this, FUNC(rockrage_state::rockrage_sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x2ec0, 0x2ec0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2f00, 0x2f00).w(this, FUNC(rockrage_state::rockrage_vreg_w)); /* ??? */ + map(0x2f40, 0x2f40).w(this, FUNC(rockrage_state::rockrage_bankswitch_w)); /* bankswitch control */ + map(0x4000, 0x5fff).ram(); /* RAM */ + map(0x6000, 0x7fff).bankr("rombank"); /* banked ROM */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void rockrage_state::rockrage_sound_map(address_map &map) +{ + map(0x2000, 0x2000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* VLM5030 */ + map(0x3000, 0x3000).r(this, FUNC(rockrage_state::rockrage_VLM5030_busy_r)); /* VLM5030 */ + map(0x4000, 0x4000).w(this, FUNC(rockrage_state::rockrage_speech_w)); /* VLM5030 */ + map(0x5000, 0x5000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x6000, 0x6001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM 2151 */ + map(0x7000, 0x77ff).ram(); /* RAM */ + map(0x8000, 0xffff).rom(); /* ROM */ +} + +void rockrage_state::rockrage_vlm_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x7fff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/rocnrope.cpp b/src/mame/drivers/rocnrope.cpp index 724df7fb41e..a67c0aefebe 100644 --- a/src/mame/drivers/rocnrope.cpp +++ b/src/mame/drivers/rocnrope.cpp @@ -60,25 +60,26 @@ WRITE_LINE_MEMBER(rocnrope_state::coin_counter_2_w) * *************************************/ -ADDRESS_MAP_START(rocnrope_state::rocnrope_map) - AM_RANGE(0x3080, 0x3080) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3081, 0x3081) AM_READ_PORT("P1") - AM_RANGE(0x3082, 0x3082) AM_READ_PORT("P2") - AM_RANGE(0x3083, 0x3083) AM_READ_PORT("DSW1") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2") - AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW3") - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4000, 0x402f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x4400, 0x442f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(rocnrope_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4c00, 0x4fff) AM_RAM_WRITE(rocnrope_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x5fff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8080, 0x8087) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w) - AM_RANGE(0x8182, 0x818d) AM_WRITE(rocnrope_interrupt_vector_w) - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END +void rocnrope_state::rocnrope_map(address_map &map) +{ + map(0x3080, 0x3080).portr("SYSTEM"); + map(0x3081, 0x3081).portr("P1"); + map(0x3082, 0x3082).portr("P2"); + map(0x3083, 0x3083).portr("DSW1"); + map(0x3000, 0x3000).portr("DSW2"); + map(0x3100, 0x3100).portr("DSW3"); + map(0x4000, 0x47ff).ram(); + map(0x4000, 0x402f).ram().share("spriteram2"); + map(0x4400, 0x442f).ram().share("spriteram"); + map(0x4800, 0x4bff).ram().w(this, FUNC(rocnrope_state::rocnrope_colorram_w)).share("colorram"); + map(0x4c00, 0x4fff).ram().w(this, FUNC(rocnrope_state::rocnrope_videoram_w)).share("videoram"); + map(0x5000, 0x5fff).ram(); + map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x8080, 0x8087).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x8100, 0x8100).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w)); + map(0x8182, 0x818d).w(this, FUNC(rocnrope_state::rocnrope_interrupt_vector_w)); + map(0x6000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp index 0fcdbbaba6b..55d220d32b3 100644 --- a/src/mame/drivers/rohga.cpp +++ b/src/mame/drivers/rohga.cpp @@ -118,7 +118,6 @@ #include "includes/rohga.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "machine/decocrpt.h" #include "sound/ym2151.h" #include "screen.h" @@ -160,157 +159,164 @@ WRITE16_MEMBER( rohga_state::ioprot_w ) } -ADDRESS_MAP_START(rohga_state::rohga_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - - AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) - - AM_RANGE(0x280000, 0x283fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */ +void rohga_state::rohga_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); - AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3") + map(0x200000, 0x20000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w)); + map(0x240000, 0x24000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w)); - AM_RANGE(0x300000, 0x300001) AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */ - AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */ - AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w) /* Write 1111 for dma? (Or any value?) */ - AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* ? */ - AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_common", decocomn_device, priority_w) - AM_RANGE(0x321100, 0x321101) AM_READ(rohga_irq_ack_r) /* Irq ack? Value not used */ + map(0x280000, 0x283fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */ - AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) + map(0x2c0000, 0x2c0001).portr("DSW3"); - AM_RANGE(0x3c8000, 0x3c9fff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf2_rowscroll") - AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf4_rowscroll") + map(0x300000, 0x300001).w(this, FUNC(rohga_state::rohga_buffer_spriteram16_w)); /* write 1 for sprite dma */ + map(0x310000, 0x310009).nopw(); /* Palette control? */ + map(0x31000a, 0x31000b).w(m_decocomn, FUNC(decocomn_device::palette_dma_w)); /* Write 1111 for dma? (Or any value?) */ + map(0x320000, 0x320001).nopw(); /* ? */ + map(0x322000, 0x322001).w(m_decocomn, FUNC(decocomn_device::priority_w)); + map(0x321100, 0x321101).r(this, FUNC(rohga_state::rohga_irq_ack_r)); /* Irq ack? Value not used */ - AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x3e0000, 0x3e1fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */ -ADDRESS_MAP_END + map(0x3c0000, 0x3c1fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x3c2000, 0x3c2fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x3c4000, 0x3c4fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x3c6000, 0x3c6fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x3c8000, 0x3c9fff).ram().share("pf1_rowscroll"); + map(0x3ca000, 0x3cafff).mirror(0x1000).ram().share("pf2_rowscroll"); + map(0x3cc000, 0x3ccfff).mirror(0x1000).ram().share("pf3_rowscroll"); + map(0x3ce000, 0x3cefff).mirror(0x1000).ram().share("pf4_rowscroll"); -ADDRESS_MAP_START(rohga_state::wizdfire_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM + map(0x3d0000, 0x3d07ff).ram().share("spriteram1"); + map(0x3e0000, 0x3e1fff).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram"); + map(0x3f0000, 0x3f3fff).ram(); /* Main ram */ +} - AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x202fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x208000, 0x208fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x20a000, 0x20afff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x20b000, 0x20b3ff) AM_WRITEONLY /* ? Always 0 written */ - AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_SHARE("pf4_rowscroll") +void rohga_state::wizdfire_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) + map(0x200000, 0x200fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x202fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x208000, 0x208fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x20a000, 0x20afff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE("deco_common", decocomn_device, priority_w) /* Priority */ - AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */ - AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */ + map(0x20b000, 0x20b3ff).writeonly(); /* ? Always 0 written */ + map(0x20c000, 0x20c7ff).ram().share("pf3_rowscroll"); + map(0x20e000, 0x20e7ff).ram().share("pf4_rowscroll"); - AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x350000, 0x350001) AM_DEVWRITE("spriteram1", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ - AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x370000, 0x370001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ + map(0x300000, 0x30000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w)); + map(0x310000, 0x31000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w)); - AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w) + map(0x320000, 0x320001).w(m_decocomn, FUNC(decocomn_device::priority_w)); /* Priority */ + map(0x320002, 0x320003).nopw(); /* ? */ + map(0x320004, 0x320005).w(this, FUNC(rohga_state::wizdfire_irq_ack_w)); /* VBL IRQ ack */ - AM_RANGE(0xfdc000, 0xffffff) AM_RAM - AM_RANGE(0xfe4000, 0xfe7fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */ -ADDRESS_MAP_END + map(0x340000, 0x3407ff).ram().share("spriteram1"); + map(0x350000, 0x350001).w("spriteram1", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */ + map(0x360000, 0x3607ff).ram().share("spriteram2"); + map(0x370000, 0x370001).w("spriteram2", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */ + map(0x380000, 0x381fff).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram"); + map(0x390008, 0x390009).w(m_decocomn, FUNC(decocomn_device::palette_dma_w)); -ADDRESS_MAP_START(rohga_state::nitrobal_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM + map(0xfdc000, 0xffffff).ram(); + map(0xfe4000, 0xfe7fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */ +} - AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x1000) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x2027ff) AM_MIRROR(0x800) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_SHARE("pf2_rowscroll") - AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_SHARE("pf4_rowscroll") +void rohga_state::nitrobal_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x310000, 0x31000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) + map(0x200000, 0x200fff).mirror(0x1000).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x2027ff).mirror(0x800).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x208000, 0x2087ff).mirror(0x800).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x20a000, 0x20a7ff).mirror(0x800).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3") AM_DEVWRITE("deco_common", decocomn_device, priority_w) /* Priority */ - AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */ - AM_RANGE(0x320004, 0x320005) AM_WRITE(wizdfire_irq_ack_w) /* VBL IRQ ack */ + map(0x204000, 0x2047ff).ram().share("pf1_rowscroll"); + map(0x206000, 0x2067ff).ram().share("pf2_rowscroll"); + map(0x20c000, 0x20c7ff).ram().share("pf3_rowscroll"); + map(0x20e000, 0x20e7ff).ram().share("pf4_rowscroll"); - AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x350000, 0x350001) AM_DEVWRITE("spriteram1", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ - AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x370000, 0x370001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write) /* Triggers DMA for spriteram */ + map(0x300000, 0x30000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w)); + map(0x310000, 0x31000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w)); - AM_RANGE(0x380000, 0x381fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x390008, 0x390009) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w) + map(0x320000, 0x320001).portr("DSW3").w(m_decocomn, FUNC(decocomn_device::priority_w)); /* Priority */ + map(0x320002, 0x320003).nopw(); /* ? */ + map(0x320004, 0x320005).w(this, FUNC(rohga_state::wizdfire_irq_ack_w)); /* VBL IRQ ack */ - AM_RANGE(0xfec000, 0xff3fff) AM_RAM - AM_RANGE(0xff4000, 0xff7fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */ + map(0x340000, 0x3407ff).ram().share("spriteram1"); + map(0x350000, 0x350001).w("spriteram1", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */ + map(0x360000, 0x3607ff).ram().share("spriteram2"); + map(0x370000, 0x370001).w("spriteram2", FUNC(buffered_spriteram16_device::write)); /* Triggers DMA for spriteram */ - AM_RANGE(0xff8000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x380000, 0x381fff).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram"); + map(0x390008, 0x390009).w(m_decocomn, FUNC(decocomn_device::palette_dma_w)); + map(0xfec000, 0xff3fff).ram(); + map(0xff4000, 0xff7fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */ -ADDRESS_MAP_START(rohga_state::hotb_base_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) - AM_RANGE(0x280000, 0x283fff) AM_READWRITE(ioprot_r,ioprot_w) AM_SHARE("prot16ram") /* Protection device */ + map(0xff8000, 0xffffff).ram(); +} - AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3") - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW3") AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */ - AM_RANGE(0x310002, 0x310003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */ - AM_RANGE(0x31000a, 0x31000b) AM_DEVWRITE("deco_common", decocomn_device, palette_dma_w) /* Write 1111 for dma? (Or any value?) */ - AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* bit 4: cleared on irq routine start, set on end */ - AM_RANGE(0x322000, 0x322001) AM_DEVWRITE("deco_common", decocomn_device, priority_w) - AM_RANGE(0x321100, 0x321101) AM_WRITE(wizdfire_irq_ack_w) /* Irq ack? Value not used */ - - AM_RANGE(0x3c0000, 0x3c1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x3c2000, 0x3c2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x3c4000, 0x3c4fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x3c6000, 0x3c6fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x3c8000, 0x3c9fff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf2_rowscroll") - AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf3_rowscroll") - AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("pf4_rowscroll") - AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_SHARE("spriteram1") - AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_RAM_DEVWRITE("deco_common", decocomn_device, buffered_palette_w) AM_SHARE("paletteram") -ADDRESS_MAP_END +void rohga_state::hotb_base_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20000f).w("tilegen1", FUNC(deco16ic_device::pf_control_w)); + map(0x240000, 0x24000f).w("tilegen2", FUNC(deco16ic_device::pf_control_w)); + map(0x280000, 0x283fff).rw(this, FUNC(rohga_state::ioprot_r), FUNC(rohga_state::ioprot_w)).share("prot16ram"); /* Protection device */ + + map(0x2c0000, 0x2c0001).portr("DSW3"); + map(0x300000, 0x300001).portr("DSW3").w(this, FUNC(rohga_state::rohga_buffer_spriteram16_w)); /* write 1 for sprite dma */ + map(0x310002, 0x310003).portr("SYSTEM"); + map(0x310000, 0x310009).nopw(); /* Palette control? */ + map(0x31000a, 0x31000b).w(m_decocomn, FUNC(decocomn_device::palette_dma_w)); /* Write 1111 for dma? (Or any value?) */ + map(0x320000, 0x320001).nopw(); /* bit 4: cleared on irq routine start, set on end */ + map(0x322000, 0x322001).w(m_decocomn, FUNC(decocomn_device::priority_w)); + map(0x321100, 0x321101).w(this, FUNC(rohga_state::wizdfire_irq_ack_w)); /* Irq ack? Value not used */ + + map(0x3c0000, 0x3c1fff).rw("tilegen1", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x3c2000, 0x3c2fff).rw("tilegen1", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x3c4000, 0x3c4fff).rw("tilegen2", FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x3c6000, 0x3c6fff).rw("tilegen2", FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x3c8000, 0x3c9fff).ram().share("pf1_rowscroll"); + map(0x3ca000, 0x3cafff).mirror(0x1000).ram().share("pf2_rowscroll"); + map(0x3cc000, 0x3ccfff).mirror(0x1000).ram().share("pf3_rowscroll"); + map(0x3ce000, 0x3cefff).mirror(0x1000).ram().share("pf4_rowscroll"); + + map(0x3d0000, 0x3d07ff).ram().share("spriteram1"); + map(0x3e0000, 0x3e1fff).mirror(0x2000).ram().w(m_decocomn, FUNC(decocomn_device::buffered_palette_w)).share("paletteram"); +} -ADDRESS_MAP_START(rohga_state::schmeisr_map) - AM_IMPORT_FROM(hotb_base_map) - AM_RANGE(0xff0000, 0xff7fff) AM_RAM /* Main ram */ -ADDRESS_MAP_END +void rohga_state::schmeisr_map(address_map &map) +{ + hotb_base_map(map); + map(0xff0000, 0xff7fff).ram(); /* Main ram */ +} -ADDRESS_MAP_START(rohga_state::hangzo_map) - AM_IMPORT_FROM(hotb_base_map) - AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */ -ADDRESS_MAP_END +void rohga_state::hangzo_map(address_map &map) +{ + hotb_base_map(map); + map(0x3f0000, 0x3f3fff).ram(); /* Main ram */ +} /******************************************************************************/ -ADDRESS_MAP_START(rohga_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_NOP - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("ioprot", deco_146_base_device, soundlatch_r) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void rohga_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).noprw(); + map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); + map(0x1f0000, 0x1f1fff).ram(); + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /**********************************************************************************/ diff --git a/src/mame/drivers/rollerg.cpp b/src/mame/drivers/rollerg.cpp index 980abd2a129..231dd47e2a1 100644 --- a/src/mame/drivers/rollerg.cpp +++ b/src/mame/drivers/rollerg.cpp @@ -77,35 +77,37 @@ READ8_MEMBER(rollerg_state::pip_r) return 0x7f; } -ADDRESS_MAP_START(rollerg_state::rollerg_map) - AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w) - AM_RANGE(0x0020, 0x0020) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) - AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write) - AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w) - AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1") - AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2") - AM_RANGE(0x0052, 0x0052) AM_READ_PORT("DSW3") - AM_RANGE(0x0053, 0x0053) AM_READ_PORT("DSW1") - AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSW2") - AM_RANGE(0x0061, 0x0061) AM_READ(pip_r) /* ????? */ - AM_RANGE(0x0100, 0x010f) AM_DEVREADWRITE("k053252", k053252_device, read, write) /* 053252? */ - AM_RANGE(0x0200, 0x020f) AM_DEVWRITE("k051316", k051316_device, ctrl_w) - AM_RANGE(0x0300, 0x030f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) - AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_k051316_r) AM_DEVWRITE("k051316", k051316_device, write) - AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) - AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2000, 0x3aff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rollerg_state::rollerg_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("k053260", k053260_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) -ADDRESS_MAP_END +void rollerg_state::rollerg_map(address_map &map) +{ + map(0x0010, 0x0010).w(this, FUNC(rollerg_state::rollerg_0010_w)); + map(0x0020, 0x0020).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); + map(0x0030, 0x0031).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); + map(0x0040, 0x0040).w(this, FUNC(rollerg_state::soundirq_w)); + map(0x0050, 0x0050).portr("P1"); + map(0x0051, 0x0051).portr("P2"); + map(0x0052, 0x0052).portr("DSW3"); + map(0x0053, 0x0053).portr("DSW1"); + map(0x0060, 0x0060).portr("DSW2"); + map(0x0061, 0x0061).r(this, FUNC(rollerg_state::pip_r)); /* ????? */ + map(0x0100, 0x010f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); /* 053252? */ + map(0x0200, 0x020f).w(m_k051316, FUNC(k051316_device::ctrl_w)); + map(0x0300, 0x030f).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)); + map(0x0800, 0x0fff).r(this, FUNC(rollerg_state::rollerg_k051316_r)).w(m_k051316, FUNC(k051316_device::write)); + map(0x1000, 0x17ff).rw(m_k053244, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w)); + map(0x1800, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0x2000, 0x3aff).ram(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + +void rollerg_state::rollerg_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa02f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xfc00, 0xfc00).w(this, FUNC(rollerg_state::sound_arm_nmi_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/rollext.cpp b/src/mame/drivers/rollext.cpp index 584c35e486c..98b8a732516 100644 --- a/src/mame/drivers/rollext.cpp +++ b/src/mame/drivers/rollext.cpp @@ -509,16 +509,17 @@ WRITE32_MEMBER(rollext_state::cmd_callback) // Master Processor memory map -ADDRESS_MAP_START(rollext_state::memmap) - AM_RANGE(0x40000000, 0x40ffffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x60000000, 0x600fffff) AM_RAM AM_SHARE("disp_ram") - AM_RANGE(0x80000000, 0x8000ffff) AM_RAM AM_SHARE("palette_ram") - AM_RANGE(0x90000000, 0x9007ffff) AM_RAM AM_SHARE("texture_mask") - AM_RANGE(0xa0000000, 0xa00000ff) AM_READWRITE(a0000000_r, a0000000_w) - AM_RANGE(0xb0000000, 0xb0000007) AM_READ(b0000000_r) - AM_RANGE(0xc0000000, 0xc03fffff) AM_ROM AM_REGION("rom1", 0) - AM_RANGE(0xff000000, 0xffffffff) AM_RAM AM_REGION("rom0", 0) -ADDRESS_MAP_END +void rollext_state::memmap(address_map &map) +{ + map(0x40000000, 0x40ffffff).ram().share("main_ram"); + map(0x60000000, 0x600fffff).ram().share("disp_ram"); + map(0x80000000, 0x8000ffff).ram().share("palette_ram"); + map(0x90000000, 0x9007ffff).ram().share("texture_mask"); + map(0xa0000000, 0xa00000ff).rw(this, FUNC(rollext_state::a0000000_r), FUNC(rollext_state::a0000000_w)); + map(0xb0000000, 0xb0000007).r(this, FUNC(rollext_state::b0000000_r)); + map(0xc0000000, 0xc03fffff).rom().region("rom1", 0); + map(0xff000000, 0xffffffff).ram().region("rom0", 0); +} static INPUT_PORTS_START(rollext) diff --git a/src/mame/drivers/rollrace.cpp b/src/mame/drivers/rollrace.cpp index d008efa9219..63796fa993b 100644 --- a/src/mame/drivers/rollrace.cpp +++ b/src/mame/drivers/rollrace.cpp @@ -64,36 +64,38 @@ WRITE_LINE_MEMBER(rollrace_state::coin_counter_2_w) machine().bookkeeping().coin_counter_w(1, state); } -ADDRESS_MAP_START(rollrace_state::rollrace_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROM /* only rollace2 */ - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/ - AM_RANGE(0xd900, 0xd900) AM_READWRITE(fake_d800_r,fake_d800_w) /* protection ??*/ - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe47f) AM_RAM_WRITE(cram_w) AM_SHARE("colorram") - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/ - AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf400, 0xf400) AM_WRITE(backgroundcolor_w) - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bkgpen_w) - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(backgroundpage_w) - AM_RANGE(0xf803, 0xf803) AM_WRITE(flipy_w) - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2") - AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(rollrace_state::rollrace_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_nmi_mask_w) - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_device, address_data_w) -ADDRESS_MAP_END +void rollrace_state::rollrace_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).rom(); /* only rollace2 */ + map(0xc000, 0xcfff).ram(); + map(0xd806, 0xd806).nopr(); /* looks like a watchdog, bit4 checked*/ + map(0xd900, 0xd900).rw(this, FUNC(rollrace_state::fake_d800_r), FUNC(rollrace_state::fake_d800_w)); /* protection ??*/ + map(0xe000, 0xe3ff).ram().w(this, FUNC(rollrace_state::vram_w)).share("videoram"); + map(0xe400, 0xe47f).ram().w(this, FUNC(rollrace_state::cram_w)).share("colorram"); + map(0xe800, 0xe800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xec00, 0xec0f).noprw(); /* Analog sound effects ?? ec00 sound enable ?*/ + map(0xf000, 0xf0ff).ram().share("spriteram"); + map(0xf400, 0xf400).w(this, FUNC(rollrace_state::backgroundcolor_w)); + map(0xf800, 0xf800).portr("P1"); + map(0xf801, 0xf801).portr("P2").w(this, FUNC(rollrace_state::bkgpen_w)); + map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(rollrace_state::backgroundpage_w)); + map(0xf803, 0xf803).w(this, FUNC(rollrace_state::flipy_w)); + map(0xf804, 0xf804).portr("DSW1"); + map(0xf805, 0xf805).portr("DSW2"); + map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0)); +} + + +void rollrace_state::rollrace_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x2fff).ram(); + map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(rollrace_state::sound_nmi_mask_w)); + map(0x4000, 0x4001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x5000, 0x5001).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).w("ay3", FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( rollrace ) diff --git a/src/mame/drivers/ron.cpp b/src/mame/drivers/ron.cpp index 257c4a5d733..082cb239050 100644 --- a/src/mame/drivers/ron.cpp +++ b/src/mame/drivers/ron.cpp @@ -195,31 +195,35 @@ WRITE8_MEMBER(ron_state::sound_cmd_w) m_audiocpu->set_input_line(INPUT_LINE_RESET, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE); } -ADDRESS_MAP_START(ron_state::ron_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x8400, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM AM_SHARE("cram") - AM_RANGE(0x8c00, 0x8fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ron_state::ron_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x01) AM_READ(p1_mux_r) - AM_RANGE(0x02, 0x03) AM_READ(p2_mux_r) - AM_RANGE(0x03, 0x03) AM_WRITE(mux_w) - AM_RANGE(0x07, 0x07) AM_WRITE(sound_cmd_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(output_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ron_state::ron_audio_map) - AM_RANGE(0x0000,0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ron_state::ron_audio_io) - -ADDRESS_MAP_END +void ron_state::ron_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x8000, 0x83ff).ram().share("vram"); + map(0x8400, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().share("cram"); + map(0x8c00, 0x8fff).ram(); +} + +void ron_state::ron_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x01).r(this, FUNC(ron_state::p1_mux_r)); + map(0x02, 0x03).r(this, FUNC(ron_state::p2_mux_r)); + map(0x03, 0x03).w(this, FUNC(ron_state::mux_w)); + map(0x07, 0x07).w(this, FUNC(ron_state::sound_cmd_w)); + map(0x0a, 0x0a).w(this, FUNC(ron_state::output_w)); +} + +void ron_state::ron_audio_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void ron_state::ron_audio_io(address_map &map) +{ + +} static INPUT_PORTS_START( ron ) PORT_START("IN0") diff --git a/src/mame/drivers/rotaryf.cpp b/src/mame/drivers/rotaryf.cpp index 193a932c1bb..810290d9e67 100644 --- a/src/mame/drivers/rotaryf.cpp +++ b/src/mame/drivers/rotaryf.cpp @@ -194,23 +194,25 @@ uint32_t rotaryf_state::screen_update(screen_device &screen, bitmap_rgb32 &bitma } -ADDRESS_MAP_START(rotaryf_state::rotaryf_map) - AM_RANGE(0x0000, 0x17ff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x7000, 0x73ff) AM_MIRROR(0x0c00) AM_RAM - AM_RANGE(0x8000, 0x9fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xa000, 0xa1ff) AM_RAM /* writes 00, 18, 27, 3C, 7E, FE to A019, A039, A059... A179 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(rotaryf_state::rotaryf_io_map) - AM_RANGE(0x02, 0x02) AM_WRITENOP - AM_RANGE(0x04, 0x04) AM_WRITENOP - AM_RANGE(0x07, 0x07) AM_WRITENOP - AM_RANGE(0x20, 0x20) AM_WRITENOP - AM_RANGE(0x21, 0x21) AM_READ_PORT("COIN") AM_WRITENOP - AM_RANGE(0x26, 0x26) AM_READ_PORT("DSW") - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x30, 0x30) AM_WRITE(port30_w) -ADDRESS_MAP_END +void rotaryf_state::rotaryf_map(address_map &map) +{ + map(0x0000, 0x17ff).mirror(0x4000).rom(); + map(0x7000, 0x73ff).mirror(0x0c00).ram(); + map(0x8000, 0x9fff).mirror(0x4000).ram().share("videoram"); + map(0xa000, 0xa1ff).ram(); /* writes 00, 18, 27, 3C, 7E, FE to A019, A039, A059... A179 */ +} + +void rotaryf_state::rotaryf_io_map(address_map &map) +{ + map(0x02, 0x02).nopw(); + map(0x04, 0x04).nopw(); + map(0x07, 0x07).nopw(); + map(0x20, 0x20).nopw(); + map(0x21, 0x21).portr("COIN").nopw(); + map(0x26, 0x26).portr("DSW"); + map(0x28, 0x2b).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x30, 0x30).w(this, FUNC(rotaryf_state::port30_w)); +} static INPUT_PORTS_START( rotaryf ) diff --git a/src/mame/drivers/roul.cpp b/src/mame/drivers/roul.cpp index 963d4246ec6..5f6d031b23b 100644 --- a/src/mame/drivers/roul.cpp +++ b/src/mame/drivers/roul.cpp @@ -204,32 +204,36 @@ WRITE8_MEMBER(roul_state::ball_w) m_lamp_old = lamp; } -ADDRESS_MAP_START(roul_state::roul_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(roul_state::roul_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf4) AM_WRITE(blitter_cmd_w) - AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r) - AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW") - AM_RANGE(0xf9, 0xf9) AM_WRITE(ball_w) - AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN0") - AM_RANGE(0xfd, 0xfd) AM_READ_PORT("IN1") - AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(roul_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(roul_state::sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void roul_state::roul_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().share("nvram"); +} + +void roul_state::roul_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf0, 0xf4).w(this, FUNC(roul_state::blitter_cmd_w)); + map(0xf5, 0xf5).r(this, FUNC(roul_state::blitter_status_r)); + map(0xf8, 0xf8).portr("DSW"); + map(0xf9, 0xf9).w(this, FUNC(roul_state::ball_w)); + map(0xfa, 0xfa).portr("IN0"); + map(0xfd, 0xfd).portr("IN1"); + map(0xfe, 0xfe).w(this, FUNC(roul_state::sound_latch_w)); +} + +void roul_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram(); +} + +void roul_state::sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} void roul_state::video_start() { diff --git a/src/mame/drivers/route16.cpp b/src/mame/drivers/route16.cpp index 6d4d5a02cdb..d7abaa945ed 100644 --- a/src/mame/drivers/route16.cpp +++ b/src/mame/drivers/route16.cpp @@ -217,81 +217,89 @@ WRITE8_MEMBER(route16_state::speakres_out2_w) * *************************************/ -ADDRESS_MAP_START(route16_state::route16_cpu1_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3001) AM_READ(route16_prot_read) - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(route16_sharedram_w<true>) AM_SHARE("sharedram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w) - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::routex_cpu1_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(route16_sharedram_w<true>) AM_SHARE("sharedram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w) - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") - AM_RANGE(0x6400, 0x6400) AM_READ(routex_prot_read) - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::stratvox_cpu1_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w) - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::speakres_cpu1_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w) - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") AM_WRITE(out1_w) - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE(speakres_out2_w) - AM_RANGE(0x6000, 0x6000) AM_READ(speakres_in3_r) - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::ttmahjng_cpu1_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(out0_w) - AM_RANGE(0x5000, 0x5000) AM_READ(ttmahjng_p2_matrix_r) AM_WRITE(out1_w) - AM_RANGE(0x5800, 0x5800) AM_READWRITE(ttmahjng_p1_matrix_r, ttmahjng_input_port_matrix_w) - AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0x6900, 0x6900) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::route16_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(route16_sharedram_w<false>) AM_SHARE("sharedram") - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::stratvox_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("videoram2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(route16_state::cpu1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x1ff) - AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x00ff) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0x0100, 0x0100) AM_MIRROR(0x00ff) AM_DEVWRITE("ay8910", ay8910_device, address_w) -ADDRESS_MAP_END +void route16_state::route16_cpu1_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x3000, 0x3001).r(this, FUNC(route16_state::route16_prot_read)); + map(0x4000, 0x43ff).ram().w(this, FUNC(route16_state::route16_sharedram_w<true>)).share("sharedram"); + map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w)); + map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w)); + map(0x5800, 0x5800).portr("P2"); + map(0x8000, 0xbfff).ram().share("videoram1"); +} + + +void route16_state::routex_cpu1_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().w(this, FUNC(route16_state::route16_sharedram_w<true>)).share("sharedram"); + map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w)); + map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w)); + map(0x5800, 0x5800).portr("P2"); + map(0x6400, 0x6400).r(this, FUNC(route16_state::routex_prot_read)); + map(0x8000, 0xbfff).ram().share("videoram1"); +} + + +void route16_state::stratvox_cpu1_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().share("sharedram"); + map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w)); + map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w)); + map(0x5800, 0x5800).portr("P2"); + map(0x8000, 0xbfff).ram().share("videoram1"); +} + + +void route16_state::speakres_cpu1_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().share("sharedram"); + map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w)); + map(0x5000, 0x5000).portr("P1").w(this, FUNC(route16_state::out1_w)); + map(0x5800, 0x5800).portr("P2").w(this, FUNC(route16_state::speakres_out2_w)); + map(0x6000, 0x6000).r(this, FUNC(route16_state::speakres_in3_r)); + map(0x8000, 0xbfff).ram().share("videoram1"); +} + + +void route16_state::ttmahjng_cpu1_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().share("sharedram"); + map(0x4800, 0x4800).portr("DSW").w(this, FUNC(route16_state::out0_w)); + map(0x5000, 0x5000).r(this, FUNC(route16_state::ttmahjng_p2_matrix_r)).w(this, FUNC(route16_state::out1_w)); + map(0x5800, 0x5800).rw(this, FUNC(route16_state::ttmahjng_p1_matrix_r), FUNC(route16_state::ttmahjng_input_port_matrix_w)); + map(0x6800, 0x6800).w("ay8910", FUNC(ay8910_device::data_w)); + map(0x6900, 0x6900).w("ay8910", FUNC(ay8910_device::address_w)); + map(0x8000, 0xbfff).ram().share("videoram1"); +} + + +void route16_state::route16_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram().w(this, FUNC(route16_state::route16_sharedram_w<false>)).share("sharedram"); + map(0x8000, 0xbfff).ram().share("videoram2"); +} + + +void route16_state::stratvox_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2800, 0x2800).w("dac", FUNC(dac_byte_interface::write)); + map(0x4000, 0x43ff).ram().share("sharedram"); + map(0x8000, 0xbfff).ram().share("videoram2"); +} + + +void route16_state::cpu1_io_map(address_map &map) +{ + map.global_mask(0x1ff); + map(0x0000, 0x0000).mirror(0x00ff).w("ay8910", FUNC(ay8910_device::data_w)); + map(0x0100, 0x0100).mirror(0x00ff).w("ay8910", FUNC(ay8910_device::address_w)); +} diff --git a/src/mame/drivers/rowamet.cpp b/src/mame/drivers/rowamet.cpp index e0b4685700a..11f5834cee2 100644 --- a/src/mame/drivers/rowamet.cpp +++ b/src/mame/drivers/rowamet.cpp @@ -64,33 +64,36 @@ private: }; -ADDRESS_MAP_START(rowamet_state::rowamet_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x2800, 0x2800) AM_READ_PORT("X0") - AM_RANGE(0x2801, 0x2801) AM_READ_PORT("X1") - AM_RANGE(0x2802, 0x2802) AM_READ_PORT("X2") - AM_RANGE(0x2803, 0x2803) AM_READ_PORT("X3") - AM_RANGE(0x2804, 0x2804) AM_READ_PORT("X4") - AM_RANGE(0x2805, 0x2805) AM_READ_PORT("X5") - AM_RANGE(0x2806, 0x2806) AM_READ_PORT("X6") - AM_RANGE(0x2807, 0x2807) AM_READ_PORT("X7") - AM_RANGE(0x2808, 0x2808) AM_READ_PORT("X8") - AM_RANGE(0x4000, 0x407f) AM_RAM - AM_RANGE(0x4080, 0x408f) AM_RAM AM_SHARE("ram") - AM_RANGE(0x4090, 0x409f) AM_READWRITE(io_r,io_w) - AM_RANGE(0x40a0, 0x40ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rowamet_state::rowamet_sub_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0x2000) - AM_RANGE(0x1000, 0x17ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rowamet_state::rowamet_sub_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(sound_r,mute_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END +void rowamet_state::rowamet_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("roms", 0); + map(0x2800, 0x2800).portr("X0"); + map(0x2801, 0x2801).portr("X1"); + map(0x2802, 0x2802).portr("X2"); + map(0x2803, 0x2803).portr("X3"); + map(0x2804, 0x2804).portr("X4"); + map(0x2805, 0x2805).portr("X5"); + map(0x2806, 0x2806).portr("X6"); + map(0x2807, 0x2807).portr("X7"); + map(0x2808, 0x2808).portr("X8"); + map(0x4000, 0x407f).ram(); + map(0x4080, 0x408f).ram().share("ram"); + map(0x4090, 0x409f).rw(this, FUNC(rowamet_state::io_r), FUNC(rowamet_state::io_w)); + map(0x40a0, 0x40ff).ram(); +} + +void rowamet_state::rowamet_sub_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("roms", 0x2000); + map(0x1000, 0x17ff).ram(); +} + +void rowamet_state::rowamet_sub_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(rowamet_state::sound_r), FUNC(rowamet_state::mute_w)); + map(0x01, 0x01).w("dac", FUNC(dac_byte_interface::write)); +} static INPUT_PORTS_START( rowamet ) PORT_START("X0") diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp index c36bdcc9de3..54dddb28642 100644 --- a/src/mame/drivers/royalmah.cpp +++ b/src/mame/drivers/royalmah.cpp @@ -606,217 +606,240 @@ WRITE8_MEMBER(royalmah_state::mjclub_bank_w) } -ADDRESS_MAP_START(royalmah_state::royalmah_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITENOP - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) // banked ROMs not present in royalmah - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::mjapinky_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITENOP - AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x7800, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") - AM_RANGE( 0x8000, 0x8000 ) AM_READ(mjapinky_dsw_r ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::tahjong_map) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_WRITENOP - AM_RANGE( 0x4000, 0x6fff ) AM_ROMBANK("mainbank") - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END - - - - -ADDRESS_MAP_START(royalmah_state::royalmah_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::ippatsu_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2") - AM_RANGE( 0x13, 0x13 ) AM_READ_PORT("DSW3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::janyoup2_iomap) - AM_IMPORT_FROM( ippatsu_iomap ) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x21, 0x21) AM_DEVWRITE("crtc", mc6845_device, register_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::seljan_map) - AM_RANGE( 0x0000, 0x8fff ) AM_ROM AM_WRITENOP - AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::seljan_iomap) - AM_RANGE( 0x0001, 0x0001 ) AM_MIRROR(0x7f00) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x0002, 0x0003 ) AM_MIRROR(0x7f00) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x0010, 0x0010 ) AM_MIRROR(0x7f00) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x0011, 0x0011 ) AM_MIRROR(0x7f00) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x0012, 0x0012 ) AM_MIRROR(0x7f00) AM_READ_PORT("DSW2") AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE( 0x0013, 0x0013 ) AM_MIRROR(0x7f00) AM_READ_PORT("DSW3") AM_DEVWRITE("crtc", mc6845_device, register_w) +void royalmah_state::royalmah_map(address_map &map) +{ + map(0x0000, 0x6fff).rom().nopw(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).bankr("mainbank"); // banked ROMs not present in royalmah + map(0x8000, 0xffff).writeonly().share("videoram"); +} + +void royalmah_state::mjapinky_map(address_map &map) +{ + map(0x0000, 0x6fff).rom().nopw(); + map(0x7000, 0x77ff).ram().share("nvram"); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("mainbank"); + map(0x8000, 0xffff).writeonly().share("videoram"); + map(0x8000, 0x8000).r(this, FUNC(royalmah_state::mjapinky_dsw_r)); +} + +void royalmah_state::tahjong_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); + map(0x4000, 0x6fff).bankr("mainbank"); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).writeonly().share("videoram"); +} + + + + +void royalmah_state::royalmah_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); +} + +void royalmah_state::ippatsu_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x12, 0x12).portr("DSW2"); + map(0x13, 0x13).portr("DSW3"); +} + +void royalmah_state::janyoup2_iomap(address_map &map) +{ + ippatsu_iomap(map); + map(0x20, 0x20).w("crtc", FUNC(mc6845_device::address_w)); + map(0x21, 0x21).w("crtc", FUNC(mc6845_device::register_w)); +} + +void royalmah_state::seljan_map(address_map &map) +{ + map(0x0000, 0x8fff).rom().nopw(); + map(0xe000, 0xefff).ram().share("nvram"); +} + +void royalmah_state::seljan_iomap(address_map &map) +{ + map(0x0001, 0x0001).mirror(0x7f00).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x0002, 0x0003).mirror(0x7f00).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x0010, 0x0010).mirror(0x7f00).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x0011, 0x0011).mirror(0x7f00).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x0012, 0x0012).mirror(0x7f00).portr("DSW2").w("crtc", FUNC(mc6845_device::address_w)); + map(0x0013, 0x0013).mirror(0x7f00).portr("DSW3").w("crtc", FUNC(mc6845_device::register_w)); // TODO: following actually starts at 0x8000, needs custom 6845 routine because it uses start address register. - AM_RANGE( 0x7e00, 0xffff ) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::tahjong_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x12, 0x12 ) AM_WRITE(tahjong_bank_w) - AM_RANGE( 0x13, 0x13 ) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::suzume_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x80, 0x80 ) AM_READ(suzume_dsw_r ) - AM_RANGE( 0x81, 0x81 ) AM_WRITE(suzume_bank_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::mjyarou_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::dondenmj_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW2") // DSW2 - AM_RANGE( 0x86, 0x86 ) AM_READ_PORT("DSW3") // DSW3 - AM_RANGE( 0x87, 0x87 ) AM_WRITE(dynax_bank_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::makaijan_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("DSW2") // DSW2 - AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW3") // DSW3 - AM_RANGE( 0x86, 0x86 ) AM_WRITE(dynax_bank_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::daisyari_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0xc0, 0xc0 ) AM_READWRITE(daisyari_dsw_r, daisyari_bank_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::mjclub_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE(mjclub_dsw_r, mjclub_bank_w ) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::mjdiplob_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x61, 0x61 ) AM_WRITE(tontonb_bank_w) - AM_RANGE( 0x62, 0x62 ) AM_READ_PORT("DSW2") // DSW2 - AM_RANGE( 0x63, 0x63 ) AM_READ_PORT("DSW3") // DSW3 -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::tontonb_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x44, 0x44 ) AM_WRITE(tontonb_bank_w ) - AM_RANGE( 0x46, 0x46 ) AM_READ_PORT("DSW2") // DSW2 - AM_RANGE( 0x47, 0x47 ) AM_READ_PORT("DSW3") // DSW3 -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::majs101b_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE(majs101b_dsw_r, dynax_bank_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::mjderngr_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) + map(0x7e00, 0xffff).ram().share("videoram"); +} + +void royalmah_state::tahjong_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x12, 0x12).w(this, FUNC(royalmah_state::tahjong_bank_w)); + map(0x13, 0x13).portr("DSW2"); +} + +void royalmah_state::suzume_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x80, 0x80).r(this, FUNC(royalmah_state::suzume_dsw_r)); + map(0x81, 0x81).w(this, FUNC(royalmah_state::suzume_bank_w)); +} + +void royalmah_state::mjyarou_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x12, 0x12).portr("DSW2"); +} + +void royalmah_state::dondenmj_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x85, 0x85).portr("DSW2"); // DSW2 + map(0x86, 0x86).portr("DSW3"); // DSW3 + map(0x87, 0x87).w(this, FUNC(royalmah_state::dynax_bank_w)); +} + +void royalmah_state::makaijan_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x84, 0x84).portr("DSW2"); // DSW2 + map(0x85, 0x85).portr("DSW3"); // DSW3 + map(0x86, 0x86).w(this, FUNC(royalmah_state::dynax_bank_w)); +} + +void royalmah_state::daisyari_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0xc0, 0xc0).rw(this, FUNC(royalmah_state::daisyari_dsw_r), FUNC(royalmah_state::daisyari_bank_w)); +} + +void royalmah_state::mjclub_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(royalmah_state::mjclub_dsw_r), FUNC(royalmah_state::mjclub_bank_w)); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); +} + +void royalmah_state::mjdiplob_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x61, 0x61).w(this, FUNC(royalmah_state::tontonb_bank_w)); + map(0x62, 0x62).portr("DSW2"); // DSW2 + map(0x63, 0x63).portr("DSW3"); // DSW3 +} + +void royalmah_state::tontonb_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x44, 0x44).w(this, FUNC(royalmah_state::tontonb_bank_w)); + map(0x46, 0x46).portr("DSW2"); // DSW2 + map(0x47, 0x47).portr("DSW3"); // DSW3 +} + +void royalmah_state::majs101b_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x00, 0x00).rw(this, FUNC(royalmah_state::majs101b_dsw_r), FUNC(royalmah_state::dynax_bank_w)); +} + +void royalmah_state::mjderngr_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); // AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") - AM_RANGE( 0x10, 0x10 ) AM_WRITE(mjderngr_coin_w ) // palette bank is set separately - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x20, 0x20 ) AM_WRITE(dynax_bank_w ) - AM_RANGE( 0x40, 0x40 ) AM_READ_PORT("DSW2") - AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT("DSW1") - AM_RANGE( 0x60, 0x60 ) AM_WRITE(mjderngr_palbank_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::mjapinky_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE(mjapinky_bank_w ) - AM_RANGE( 0x01, 0x01 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x04, 0x04 ) AM_READ_PORT("DSW2") - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(mjapinky_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::janoh_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITENOP - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END + map(0x10, 0x10).w(this, FUNC(royalmah_state::mjderngr_coin_w)); // palette bank is set separately + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x20, 0x20).w(this, FUNC(royalmah_state::dynax_bank_w)); + map(0x40, 0x40).portr("DSW2"); + map(0x4c, 0x4c).portr("DSW1"); + map(0x60, 0x60).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); +} + +void royalmah_state::mjapinky_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(royalmah_state::mjapinky_bank_w)); + map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x04, 0x04).portr("DSW2"); + map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::mjapinky_palbank_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); +} + +void royalmah_state::janoh_map(address_map &map) +{ + map(0x0000, 0x6fff).rom().nopw(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).writeonly().share("videoram"); +} /* this CPU makes little sense - what is it for? why so many addresses accessed? -- it puts a value in shared ram to allow the main CPU to boot, then.. ? */ -ADDRESS_MAP_START(royalmah_state::janoh_sub_map) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4100, 0x413f ) AM_RAM - AM_RANGE( 0x6000, 0x607f ) AM_RAM - AM_RANGE( 0x7000, 0x7000 ) AM_READNOP - AM_RANGE( 0x7200, 0x7200 ) AM_WRITENOP - AM_RANGE( 0xf000, 0xffff ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(royalmah_state::janoh_sub_iomap) -ADDRESS_MAP_END +void royalmah_state::janoh_sub_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4100, 0x413f).ram(); + map(0x6000, 0x607f).ram(); + map(0x7000, 0x7000).nopr(); + map(0x7200, 0x7200).nopw(); + map(0xf000, 0xffff).ram().share("nvram"); +} + +void royalmah_state::janoh_sub_iomap(address_map &map) +{ +} /**************************************************************************** Jansou @@ -900,46 +923,50 @@ WRITE8_MEMBER(royalmah_state::jansou_sound_w) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(royalmah_state::jansou_map) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_WRITENOP - - AM_RANGE( 0x6000, 0x600f ) AM_WRITE(jansou_colortable_w) - AM_RANGE( 0x6400, 0x6400 ) AM_WRITE(jansou_6400_w) - AM_RANGE( 0x6401, 0x6401 ) AM_WRITE(jansou_6401_w) - AM_RANGE( 0x6402, 0x6402 ) AM_WRITE(jansou_6402_w) - AM_RANGE( 0x6403, 0x6403 ) AM_READ(jansou_6403_r) - AM_RANGE( 0x6404, 0x6404 ) AM_READ(jansou_6404_r) - AM_RANGE( 0x6405, 0x6405 ) AM_READ(jansou_6405_r) - AM_RANGE( 0x6406, 0x6406 ) AM_WRITE(jansou_dsw_sel_w) - AM_RANGE( 0x6407, 0x6407 ) AM_READ(jansou_dsw_r) - AM_RANGE( 0x6800, 0x6800 ) AM_WRITE(jansou_sound_w) - - AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END +void royalmah_state::jansou_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().nopw(); + + map(0x6000, 0x600f).w(this, FUNC(royalmah_state::jansou_colortable_w)); + map(0x6400, 0x6400).w(this, FUNC(royalmah_state::jansou_6400_w)); + map(0x6401, 0x6401).w(this, FUNC(royalmah_state::jansou_6401_w)); + map(0x6402, 0x6402).w(this, FUNC(royalmah_state::jansou_6402_w)); + map(0x6403, 0x6403).r(this, FUNC(royalmah_state::jansou_6403_r)); + map(0x6404, 0x6404).r(this, FUNC(royalmah_state::jansou_6404_r)); + map(0x6405, 0x6405).r(this, FUNC(royalmah_state::jansou_6405_r)); + map(0x6406, 0x6406).w(this, FUNC(royalmah_state::jansou_dsw_sel_w)); + map(0x6407, 0x6407).r(this, FUNC(royalmah_state::jansou_dsw_r)); + map(0x6800, 0x6800).w(this, FUNC(royalmah_state::jansou_sound_w)); + + map(0x7000, 0x77ff).ram().share("nvram"); + map(0x8000, 0xffff).writeonly().share("videoram"); +} -ADDRESS_MAP_START(royalmah_state::jansou_sub_map) - AM_RANGE( 0x0000, 0xffff ) AM_ROM AM_WRITENOP // tries to write to the stack at irq generation -ADDRESS_MAP_END +void royalmah_state::jansou_sub_map(address_map &map) +{ + map(0x0000, 0xffff).rom().nopw(); // tries to write to the stack at irq generation +} -ADDRESS_MAP_START(royalmah_state::jansou_sub_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END +void royalmah_state::jansou_sub_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac", FUNC(dac_byte_interface::write)); +} /**************************************************************************** Janputer '96 ****************************************************************************/ -ADDRESS_MAP_START(royalmah_state::janptr96_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") AM_SHARE("nvram") // nvram - AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("rambank") // banked nvram - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("mainbank") - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END +void royalmah_state::janptr96_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).bankrw("bank3").share("nvram"); // nvram + map(0x7000, 0x7fff).bankrw("rambank"); // banked nvram + map(0x8000, 0xffff).bankr("mainbank"); + map(0x8000, 0xffff).writeonly().share("videoram"); +} WRITE8_MEMBER(royalmah_state::janptr96_dswsel_w) { @@ -981,17 +1008,18 @@ WRITE8_MEMBER(royalmah_state::janptr96_coin_counter_w) machine().bookkeeping().coin_counter_w(1,data & 1); // out } -ADDRESS_MAP_START(royalmah_state::janptr96_iomap) - AM_RANGE( 0x00, 0x00 ) AM_MIRROR(0xff00) AM_WRITE(janptr96_rombank_w ) // BANK ROM Select - AM_RANGE( 0x20, 0x20 ) AM_MIRROR(0xff00) AM_READWRITE(janptr96_unknown_r, janptr96_rambank_w ) - AM_RANGE( 0x50, 0x50 ) AM_MIRROR(0xff00) AM_WRITE(mjderngr_palbank_w ) - AM_RANGE( 0x60, 0x6f ) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x81, 0x81 ) AM_MIRROR(0xff00) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x82, 0x83 ) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x93, 0x93 ) AM_MIRROR(0xff00) AM_WRITE(input_port_select_w ) - AM_RANGE( 0xd8, 0xd8 ) AM_MIRROR(0xff00) AM_WRITE(janptr96_coin_counter_w ) - AM_RANGE( 0xd9, 0xd9 ) AM_MIRROR(0xff00) AM_READ_PORT("SYSTEM") AM_WRITENOP // second input select? -ADDRESS_MAP_END +void royalmah_state::janptr96_iomap(address_map &map) +{ + map(0x00, 0x00).mirror(0xff00).w(this, FUNC(royalmah_state::janptr96_rombank_w)); // BANK ROM Select + map(0x20, 0x20).mirror(0xff00).rw(this, FUNC(royalmah_state::janptr96_unknown_r), FUNC(royalmah_state::janptr96_rambank_w)); + map(0x50, 0x50).mirror(0xff00).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); + map(0x60, 0x6f).mirror(0xff00).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x81, 0x81).mirror(0xff00).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x82, 0x83).mirror(0xff00).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x93, 0x93).mirror(0xff00).w(this, FUNC(royalmah_state::input_port_select_w)); + map(0xd8, 0xd8).mirror(0xff00).w(this, FUNC(royalmah_state::janptr96_coin_counter_w)); + map(0xd9, 0xd9).mirror(0xff00).portr("SYSTEM").nopw(); // second input select? +} /**************************************************************************** Mahjong If @@ -1056,13 +1084,14 @@ WRITE8_MEMBER(royalmah_state::mjifb_videoram_w) m_videoram[offset + 0x4000] = data; } -ADDRESS_MAP_START(royalmah_state::mjifb_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjifb_rom_io_r, mjifb_rom_io_w) AM_SHARE("videoram") - AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w) +void royalmah_state::mjifb_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xbfff).rw(this, FUNC(royalmah_state::mjifb_rom_io_r), FUNC(royalmah_state::mjifb_rom_io_w)).share("videoram"); + map(0xc000, 0xffff).rom().w(this, FUNC(royalmah_state::mjifb_videoram_w)); // AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITEONLY This should, but doesn't work -ADDRESS_MAP_END +} READ8_MEMBER(royalmah_state::mjifb_p3_r) { @@ -1146,12 +1175,13 @@ WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) logerror("%04X: unmapped input write at %04X = %02X\n", m_maincpu->pc(), offset,data); } -ADDRESS_MAP_START(royalmah_state::mjdejavu_map) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_SHARE("videoram") - AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w) -ADDRESS_MAP_END +void royalmah_state::mjdejavu_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xbfff).rw(this, FUNC(royalmah_state::mjdejavu_rom_io_r), FUNC(royalmah_state::mjdejavu_rom_io_w)).share("videoram"); + map(0xc000, 0xffff).rom().w(this, FUNC(royalmah_state::mjifb_videoram_w)); +} /**************************************************************************** @@ -1178,21 +1208,22 @@ WRITE8_MEMBER(royalmah_state::mjtensin_6ff3_w) mjtensin_update_rombank(); } -ADDRESS_MAP_START(royalmah_state::mjtensin_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x6fbf ) AM_RAM - AM_RANGE( 0x6fc1, 0x6fc1 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x6fc2, 0x6fc3 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x6fd0, 0x6fd0 ) AM_WRITE(janptr96_coin_counter_w ) - AM_RANGE( 0x6fd1, 0x6fd1 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x6fe0, 0x6fef ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x6ff0, 0x6ff0 ) AM_READWRITE(janptr96_dsw_r, janptr96_dswsel_w ) - AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE(mjderngr_palbank_w ) - AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE(mjtensin_6ff3_w ) - AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END +void royalmah_state::mjtensin_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fbf).ram(); + map(0x6fc1, 0x6fc1).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x6fc2, 0x6fc3).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x6fd0, 0x6fd0).w(this, FUNC(royalmah_state::janptr96_coin_counter_w)); + map(0x6fd1, 0x6fd1).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x6fe0, 0x6fef).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x6ff0, 0x6ff0).rw(this, FUNC(royalmah_state::janptr96_dsw_r), FUNC(royalmah_state::janptr96_dswsel_w)); + map(0x6ff1, 0x6ff1).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); + map(0x6ff3, 0x6ff3).w(this, FUNC(royalmah_state::mjtensin_6ff3_w)); + map(0x7000, 0x7fff).ram().share("nvram"); + map(0x8000, 0xffff).bankr("mainbank"); + map(0x8000, 0xffff).writeonly().share("videoram"); +} /**************************************************************************** @@ -1241,23 +1272,24 @@ WRITE8_MEMBER(royalmah_state::cafetime_7fe3_w) // popmessage("%02x",data); } -ADDRESS_MAP_START(royalmah_state::cafetime_map) - AM_RANGE( 0x0000, 0x5fff ) AM_ROM - AM_RANGE( 0x6000, 0x7eff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x7fc1, 0x7fc1 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x7fc2, 0x7fc3 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE(janptr96_coin_counter_w ) - AM_RANGE( 0x7fd1, 0x7fd1 ) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE( 0x7fd3, 0x7fd3 ) AM_WRITE(input_port_select_w ) - AM_RANGE( 0x7fe0, 0x7fe0 ) AM_READ(cafetime_dsw_r ) - AM_RANGE( 0x7fe1, 0x7fe1 ) AM_WRITE(cafetime_dsw_w ) - AM_RANGE( 0x7fe2, 0x7fe2 ) AM_WRITE(mjderngr_palbank_w ) - AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE(cafetime_7fe3_w ) - AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ(cafetime_7fe4_r ) - AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) - AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") -ADDRESS_MAP_END +void royalmah_state::cafetime_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7eff).ram().share("nvram"); + map(0x7fc1, 0x7fc1).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x7fc2, 0x7fc3).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x7fd0, 0x7fd0).w(this, FUNC(royalmah_state::janptr96_coin_counter_w)); + map(0x7fd1, 0x7fd1).portr("SYSTEM").nopw(); + map(0x7fd3, 0x7fd3).w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x7fe0, 0x7fe0).r(this, FUNC(royalmah_state::cafetime_dsw_r)); + map(0x7fe1, 0x7fe1).w(this, FUNC(royalmah_state::cafetime_dsw_w)); + map(0x7fe2, 0x7fe2).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); + map(0x7fe3, 0x7fe3).w(this, FUNC(royalmah_state::cafetime_7fe3_w)); + map(0x7fe4, 0x7fe4).r(this, FUNC(royalmah_state::cafetime_7fe4_r)); + map(0x7ff0, 0x7fff).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x8000, 0xffff).bankr("mainbank"); + map(0x8000, 0xffff).writeonly().share("videoram"); +} /**************************************************************************** @@ -1331,26 +1363,27 @@ READ8_MEMBER(royalmah_state::mjvegasa_12500_r) return 0xff; } -ADDRESS_MAP_START(royalmah_state::mjvegasa_map) +void royalmah_state::mjvegasa_map(address_map &map) +{ - AM_RANGE( 0x00000, 0x05fff ) AM_ROM - AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_SHARE("videoram") + map(0x00000, 0x05fff).rom(); + map(0x06000, 0x07fff).ram().share("nvram"); + map(0x08000, 0x0ffff).rw(this, FUNC(royalmah_state::mjvegasa_rom_io_r), FUNC(royalmah_state::mjvegasa_rom_io_w)).share("videoram"); - AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE( 0x10002, 0x10003 ) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE( 0x10010, 0x10010 ) AM_WRITE(mjvegasa_coin_counter_w ) - AM_RANGE( 0x10011, 0x10011 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) - AM_RANGE( 0x10013, 0x10013 ) AM_WRITE(input_port_select_w ) + map(0x10001, 0x10001).r(m_ay, FUNC(ay8910_device::data_r)); + map(0x10002, 0x10003).w(m_ay, FUNC(ay8910_device::data_address_w)); + map(0x10010, 0x10010).w(this, FUNC(royalmah_state::mjvegasa_coin_counter_w)); + map(0x10011, 0x10011).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); + map(0x10013, 0x10013).w(this, FUNC(royalmah_state::input_port_select_w)); - AM_RANGE( 0x12000, 0x12000 ) AM_WRITE(mjvegasa_rombank_w ) - AM_RANGE( 0x12100, 0x12100 ) AM_READ(cafetime_dsw_r ) - AM_RANGE( 0x12200, 0x12200 ) AM_WRITE(cafetime_dsw_w ) - AM_RANGE( 0x12300, 0x12300 ) AM_WRITE(mjderngr_palbank_w ) - AM_RANGE( 0x12400, 0x12400 ) AM_WRITE(mjvegasa_12400_w ) - AM_RANGE( 0x12500, 0x12500 ) AM_READ(mjvegasa_12500_r ) + map(0x12000, 0x12000).w(this, FUNC(royalmah_state::mjvegasa_rombank_w)); + map(0x12100, 0x12100).r(this, FUNC(royalmah_state::cafetime_dsw_r)); + map(0x12200, 0x12200).w(this, FUNC(royalmah_state::cafetime_dsw_w)); + map(0x12300, 0x12300).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); + map(0x12400, 0x12400).w(this, FUNC(royalmah_state::mjvegasa_12400_w)); + map(0x12500, 0x12500).r(this, FUNC(royalmah_state::mjvegasa_12500_r)); -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/rpunch.cpp b/src/mame/drivers/rpunch.cpp index e2de8364767..9a812c4c08b 100644 --- a/src/mame/drivers/rpunch.cpp +++ b/src/mame/drivers/rpunch.cpp @@ -202,24 +202,25 @@ WRITE8_MEMBER(rpunch_state::upd_data_w) * *************************************/ -ADDRESS_MAP_START(rpunch_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("bitmapram") - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x080000, 0x083fff) AM_RAM_WRITE(rpunch_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(rpunch_scrollreg_w) - AM_RANGE(0x0c0008, 0x0c0009) AM_SELECT(0x20) AM_WRITE8(rpunch_gga_w, 0x00ff) - AM_RANGE(0x0c000c, 0x0c000d) AM_WRITE(rpunch_videoreg_w) - AM_RANGE(0x0c000e, 0x0c000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0c0010, 0x0c0013) AM_WRITE(rpunch_ins_w) - AM_RANGE(0x0c0018, 0x0c0019) AM_READ_PORT("P1") - AM_RANGE(0x0c001a, 0x0c001b) AM_READ_PORT("P2") - AM_RANGE(0x0c001c, 0x0c001d) AM_READ_PORT("DSW") - AM_RANGE(0x0c001e, 0x0c001f) AM_READ(sound_busy_r) - AM_RANGE(0x0fc000, 0x0fffff) AM_RAM -ADDRESS_MAP_END +void rpunch_state::main_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x04ffff).ram().share("bitmapram"); + map(0x060000, 0x060fff).ram().share("spriteram"); + map(0x080000, 0x083fff).ram().w(this, FUNC(rpunch_state::rpunch_videoram_w)).share("videoram"); + map(0x0a0000, 0x0a07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0c0000, 0x0c0007).w(this, FUNC(rpunch_state::rpunch_scrollreg_w)); + map(0x0c0009, 0x0c0009).select(0x20).w(this, FUNC(rpunch_state::rpunch_gga_w)); + map(0x0c000c, 0x0c000d).w(this, FUNC(rpunch_state::rpunch_videoreg_w)); + map(0x0c000f, 0x0c000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0c0010, 0x0c0013).w(this, FUNC(rpunch_state::rpunch_ins_w)); + map(0x0c0018, 0x0c0019).portr("P1"); + map(0x0c001a, 0x0c001b).portr("P2"); + map(0x0c001c, 0x0c001d).portr("DSW"); + map(0x0c001e, 0x0c001f).r(this, FUNC(rpunch_state::sound_busy_r)); + map(0x0fc000, 0x0fffff).ram(); +} @@ -229,14 +230,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(rpunch_state::sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf200, 0xf200) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf400, 0xf400) AM_WRITE(upd_control_w) - AM_RANGE(0xf600, 0xf600) AM_WRITE(upd_data_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void rpunch_state::sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf200, 0xf200).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf400, 0xf400).w(this, FUNC(rpunch_state::upd_control_w)); + map(0xf600, 0xf600).w(this, FUNC(rpunch_state::upd_data_w)); + map(0xf800, 0xffff).ram(); +} diff --git a/src/mame/drivers/rsc55.cpp b/src/mame/drivers/rsc55.cpp index 30717f254b0..ed1c71cc578 100644 --- a/src/mame/drivers/rsc55.cpp +++ b/src/mame/drivers/rsc55.cpp @@ -60,12 +60,14 @@ sc55_state::sc55_state(const machine_config &mconfig, device_type type, const ch { } -ADDRESS_MAP_START(sc55_state::sc55_map) - AM_RANGE(0x1000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x1000) -ADDRESS_MAP_END +void sc55_state::sc55_map(address_map &map) +{ + map(0x1000, 0x3fff).rom().region("maincpu", 0x1000); +} -ADDRESS_MAP_START(sc55_state::sc55_io) -ADDRESS_MAP_END +void sc55_state::sc55_io(address_map &map) +{ +} MACHINE_CONFIG_START(sc55_state::sc55) MCFG_CPU_ADD( "maincpu", P8098, XTAL(20'000'000) ) // probably not? diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp index 54a72522247..db52bb8bf06 100644 --- a/src/mame/drivers/rt1715.cpp +++ b/src/mame/drivers/rt1715.cpp @@ -189,33 +189,37 @@ PALETTE_INIT_MEMBER(rt1715_state, rt1715) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(rt1715_state::rt1715_mem) - AM_RANGE(0x0000, 0x07ff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank3") - AM_RANGE(0x0800, 0xffff) AM_RAMBANK("bank2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(rt1715_state::rt1715_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("a71", z80pio_device, read_alt, write_alt) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("a72", z80pio_device, read_alt, write_alt) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("a30", z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("a29", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x18, 0x19) AM_DEVREADWRITE("a26", i8275_device, read, write) - AM_RANGE(0x20, 0x20) AM_WRITE(rt1715_floppy_enable) - AM_RANGE(0x28, 0x28) AM_WRITE(rt1715_rom_disable) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rt1715_state::k7658_mem) - AM_RANGE(0x0000, 0xffff) AM_WRITE(k7658_data_w) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0xf800) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rt1715_state::k7658_io) - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x8000) AM_READ(k7658_led1_r) - AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x8000) AM_READ(k7658_led2_r) - AM_RANGE(0x8000, 0x9fff) AM_READ(k7658_data_r) -ADDRESS_MAP_END +void rt1715_state::rt1715_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankr("bank1").bankw("bank3"); + map(0x0800, 0xffff).bankrw("bank2"); +} + +void rt1715_state::rt1715_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw("a71", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x04, 0x07).rw("a72", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x08, 0x0b).rw("a30", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).rw("a29", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x18, 0x19).rw("a26", FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0x20, 0x20).w(this, FUNC(rt1715_state::rt1715_floppy_enable)); + map(0x28, 0x28).w(this, FUNC(rt1715_state::rt1715_rom_disable)); +} + +void rt1715_state::k7658_mem(address_map &map) +{ + map(0x0000, 0xffff).w(this, FUNC(rt1715_state::k7658_data_w)); + map(0x0000, 0x07ff).mirror(0xf800).rom(); +} + +void rt1715_state::k7658_io(address_map &map) +{ + map(0x2000, 0x2000).mirror(0x8000).r(this, FUNC(rt1715_state::k7658_led1_r)); + map(0x4000, 0x4000).mirror(0x8000).r(this, FUNC(rt1715_state::k7658_led2_r)); + map(0x8000, 0x9fff).r(this, FUNC(rt1715_state::k7658_data_r)); +} /*************************************************************************** diff --git a/src/mame/drivers/runaway.cpp b/src/mame/drivers/runaway.cpp index 714704aa235..329561dbc6e 100644 --- a/src/mame/drivers/runaway.cpp +++ b/src/mame/drivers/runaway.cpp @@ -82,27 +82,28 @@ WRITE8_MEMBER(runaway_state::runaway_irq_ack_w) } -ADDRESS_MAP_START(runaway_state::runaway_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(runaway_video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0x1000, 0x1000) AM_WRITE(runaway_irq_ack_w) - AM_RANGE(0x1400, 0x143f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(runaway_paletteram_w) - AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* coin counter? */ - AM_RANGE(0x2001, 0x2001) AM_WRITENOP /* coin counter? */ - AM_RANGE(0x2003, 0x2004) AM_WRITE(runaway_led_w) - AM_RANGE(0x2005, 0x2005) AM_WRITE(runaway_tile_bank_w) - - AM_RANGE(0x3000, 0x3007) AM_READ(runaway_input_r) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("4000") - AM_RANGE(0x5000, 0x5000) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x7000, 0x700f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x8000, 0xcfff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM /* for the interrupt vectors */ -ADDRESS_MAP_END +void runaway_state::runaway_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07bf).ram().w(this, FUNC(runaway_state::runaway_video_ram_w)).share("video_ram"); + map(0x07c0, 0x07ff).ram().share("sprite_ram"); + map(0x1000, 0x1000).w(this, FUNC(runaway_state::runaway_irq_ack_w)); + map(0x1400, 0x143f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x1800, 0x1800).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x1c00, 0x1c0f).w(this, FUNC(runaway_state::runaway_paletteram_w)); + map(0x2000, 0x2000).nopw(); /* coin counter? */ + map(0x2001, 0x2001).nopw(); /* coin counter? */ + map(0x2003, 0x2004).w(this, FUNC(runaway_state::runaway_led_w)); + map(0x2005, 0x2005).w(this, FUNC(runaway_state::runaway_tile_bank_w)); + + map(0x3000, 0x3007).r(this, FUNC(runaway_state::runaway_input_r)); + map(0x4000, 0x4000).portr("4000"); + map(0x5000, 0x5000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x6000, 0x600f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x7000, 0x700f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x8000, 0xcfff).rom(); + map(0xf000, 0xffff).rom(); /* for the interrupt vectors */ +} static INPUT_PORTS_START( qwak ) diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp index 400fae0b805..3d1f031db85 100644 --- a/src/mame/drivers/rungun.cpp +++ b/src/mame/drivers/rungun.cpp @@ -176,25 +176,26 @@ WRITE16_MEMBER(rungun_state::palette_write) cur_paldevice.set_pen_color(offset,pal5bit(r),pal5bit(g),pal5bit(b)); } -ADDRESS_MAP_START(rungun_state::rungun_map) - AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program + data - AM_RANGE(0x300000, 0x3007ff) AM_READWRITE(palette_read,palette_write) - AM_RANGE(0x380000, 0x39ffff) AM_RAM // work RAM - AM_RANGE(0x400000, 0x43ffff) AM_READ8(rng_53936_rom_r,0x00ff) // '936 ROM readback window - AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r, rng_sysregs_w) AM_SHARE("sysreg") - AM_RANGE(0x4c0000, 0x4c001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU (for scanline and vblank polling) - AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w) - AM_RANGE(0x580000, 0x58001f) AM_DEVICE8("k054321", k054321_device, main_map, 0xff00) - AM_RANGE(0x5c0000, 0x5c000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // 246A ROM readback window - AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) - AM_RANGE(0x600000, 0x601fff) AM_RAMBANK("spriteram_bank") // OBJ RAM - AM_RANGE(0x640000, 0x640007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // '246A registers - AM_RANGE(0x680000, 0x68001f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) // '936 registers - AM_RANGE(0x6c0000, 0x6cffff) AM_READWRITE(rng_psac2_videoram_r,rng_psac2_videoram_w) // PSAC2 ('936) RAM (34v + 35v) - AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) // PSAC "Line RAM" - AM_RANGE(0x740000, 0x741fff) AM_READWRITE(rng_ttl_ram_r, rng_ttl_ram_w) // text plane RAM - AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP // watchdog -ADDRESS_MAP_END +void rungun_state::rungun_map(address_map &map) +{ + map(0x000000, 0x2fffff).rom(); // main program + data + map(0x300000, 0x3007ff).rw(this, FUNC(rungun_state::palette_read), FUNC(rungun_state::palette_write)); + map(0x380000, 0x39ffff).ram(); // work RAM + map(0x400000, 0x43ffff).r(this, FUNC(rungun_state::rng_53936_rom_r)).umask16(0x00ff); // '936 ROM readback window + map(0x480000, 0x48001f).rw(this, FUNC(rungun_state::rng_sysregs_r), FUNC(rungun_state::rng_sysregs_w)).share("sysreg"); + map(0x4c0000, 0x4c001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask16(0x00ff); // CCU (for scanline and vblank polling) + map(0x540000, 0x540001).w(this, FUNC(rungun_state::sound_irq_w)); + map(0x580000, 0x58001f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0xff00); + map(0x5c0000, 0x5c000f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); // 246A ROM readback window + map(0x5c0010, 0x5c001f).w(m_k055673, FUNC(k055673_device::k055673_reg_word_w)); + map(0x600000, 0x601fff).bankrw("spriteram_bank"); // OBJ RAM + map(0x640000, 0x640007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); // '246A registers + map(0x680000, 0x68001f).w(m_k053936, FUNC(k053936_device::ctrl_w)); // '936 registers + map(0x6c0000, 0x6cffff).rw(this, FUNC(rungun_state::rng_psac2_videoram_r), FUNC(rungun_state::rng_psac2_videoram_w)); // PSAC2 ('936) RAM (34v + 35v) + map(0x700000, 0x7007ff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); // PSAC "Line RAM" + map(0x740000, 0x741fff).rw(this, FUNC(rungun_state::rng_ttl_ram_r), FUNC(rungun_state::rng_ttl_ram_w)); // text plane RAM + map(0x7c0000, 0x7c0001).nopw(); // watchdog +} /**********************************************************************************/ @@ -236,23 +237,25 @@ WRITE_LINE_MEMBER(rungun_state::k054539_nmi_gen) /* sound (this should be split into audio/xexex.c or pregx.c or so someday) */ -ADDRESS_MAP_START(rungun_state::rungun_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539_1", k054539_device, read, write) - AM_RANGE(0xe230, 0xe3ff) AM_RAM - AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write) - AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) - AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(rungun_state::rungun_k054539_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("k054539", 0) -ADDRESS_MAP_END +void rungun_state::rungun_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank2"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw(m_k054539_1, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe230, 0xe3ff).ram(); + map(0xe400, 0xe62f).rw(m_k054539_2, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe630, 0xe7ff).ram(); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(rungun_state::sound_ctrl_w)); + map(0xfff0, 0xfff3).nopw(); +} + + +void rungun_state::rungun_k054539_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom().region("k054539", 0); +} static INPUT_PORTS_START( rng ) diff --git a/src/mame/drivers/rvoice.cpp b/src/mame/drivers/rvoice.cpp index 0b21d8708c9..d24cb0b61ab 100644 --- a/src/mame/drivers/rvoice.cpp +++ b/src/mame/drivers/rvoice.cpp @@ -334,19 +334,21 @@ WRITE8_MEMBER(rvoice_state::main_hd63701_internal_registers_w) Address Maps ******************************************************************************/ -ADDRESS_MAP_START(rvoice_state::hd63701_main_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0027) AM_READWRITE(main_hd63701_internal_registers_r, main_hd63701_internal_registers_w) // INTERNAL REGS - AM_RANGE(0x0040, 0x005f) AM_RAM // INTERNAL RAM (overlaps acia) - AM_RANGE(0x0060, 0x007f) AM_DEVREADWRITE("acia65c51", mos6551_device, read, write) // ACIA 65C51 - AM_RANGE(0x0080, 0x013f) AM_RAM // INTERNAL RAM (overlaps acia) - AM_RANGE(0x2000, 0x7fff) AM_RAM // EXTERNAL SRAM - AM_RANGE(0x8000, 0xffff) AM_ROM // 27512 EPROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(rvoice_state::hd63701_main_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void rvoice_state::hd63701_main_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0027).rw(this, FUNC(rvoice_state::main_hd63701_internal_registers_r), FUNC(rvoice_state::main_hd63701_internal_registers_w)); // INTERNAL REGS + map(0x0040, 0x005f).ram(); // INTERNAL RAM (overlaps acia) + map(0x0060, 0x007f).rw("acia65c51", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); // ACIA 65C51 + map(0x0080, 0x013f).ram(); // INTERNAL RAM (overlaps acia) + map(0x2000, 0x7fff).ram(); // EXTERNAL SRAM + map(0x8000, 0xffff).rom(); // 27512 EPROM +} + +void rvoice_state::hd63701_main_io(address_map &map) +{ + map.unmap_value_high(); +} /****************************************************************************** diff --git a/src/mame/drivers/rx78.cpp b/src/mame/drivers/rx78.cpp index 05d806feb06..ee68fb8589c 100644 --- a/src/mame/drivers/rx78.cpp +++ b/src/mame/drivers/rx78.cpp @@ -275,29 +275,31 @@ WRITE8_MEMBER( rx78_state::vdp_pri_mask_w ) } -ADDRESS_MAP_START(rx78_state::rx78_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("roms", 0) +void rx78_state::rx78_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom().region("roms", 0); //AM_RANGE(0x2000, 0x5fff) // mapped by the cartslot - AM_RANGE(0x6000, 0xafff) AM_RAM //ext RAM - AM_RANGE(0xb000, 0xebff) AM_RAM - AM_RANGE(0xec00, 0xffff) AM_READWRITE(vram_r, vram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(rx78_state::rx78_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) + map(0x6000, 0xafff).ram(); //ext RAM + map(0xb000, 0xebff).ram(); + map(0xec00, 0xffff).rw(this, FUNC(rx78_state::vram_r), FUNC(rx78_state::vram_w)); +} + +void rx78_state::rx78_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE(0xe2, 0xe2) AM_READNOP AM_WRITENOP //printer // AM_RANGE(0xe3, 0xe3) AM_WRITENOP //printer - AM_RANGE(0xf0, 0xf0) AM_READWRITE(cass_r, cass_w) //cmt - AM_RANGE(0xf1, 0xf1) AM_WRITE(vram_read_bank_w) - AM_RANGE(0xf2, 0xf2) AM_WRITE(vram_write_bank_w) - AM_RANGE(0xf4, 0xf4) AM_READWRITE(key_r, key_w) //keyboard - AM_RANGE(0xf5, 0xfb) AM_WRITE(vdp_reg_w) //vdp - AM_RANGE(0xfc, 0xfc) AM_WRITE(vdp_bg_reg_w) //vdp - AM_RANGE(0xfe, 0xfe) AM_WRITE(vdp_pri_mask_w) - AM_RANGE(0xff, 0xff) AM_DEVWRITE("sn1", sn76489a_device, write) //psg -ADDRESS_MAP_END + map(0xf0, 0xf0).rw(this, FUNC(rx78_state::cass_r), FUNC(rx78_state::cass_w)); //cmt + map(0xf1, 0xf1).w(this, FUNC(rx78_state::vram_read_bank_w)); + map(0xf2, 0xf2).w(this, FUNC(rx78_state::vram_write_bank_w)); + map(0xf4, 0xf4).rw(this, FUNC(rx78_state::key_r), FUNC(rx78_state::key_w)); //keyboard + map(0xf5, 0xfb).w(this, FUNC(rx78_state::vdp_reg_w)); //vdp + map(0xfc, 0xfc).w(this, FUNC(rx78_state::vdp_bg_reg_w)); //vdp + map(0xfe, 0xfe).w(this, FUNC(rx78_state::vdp_pri_mask_w)); + map(0xff, 0xff).w("sn1", FUNC(sn76489a_device::write)); //psg +} /* Input ports */ static INPUT_PORTS_START( rx78 ) diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp index 51b3150083a..c503b2e20a2 100644 --- a/src/mame/drivers/s11.cpp +++ b/src/mame/drivers/s11.cpp @@ -28,32 +28,35 @@ ToDo: #include "s11.lh" -ADDRESS_MAP_START(s11_state::s11_main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(s11_state::s11_audio_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w) - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(s11_state::s11_bg_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void s11_state::s11_main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).w(this, FUNC(s11_state::sol3_w)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x2c00, 0x2c03).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x3400, 0x3403).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget + map(0x4000, 0xffff).rom(); +} + +void s11_state::s11_audio_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x0800).ram(); + map(0x1000, 0x1fff).w(this, FUNC(s11_state::bank_w)); + map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xbfff).bankr("bank0"); + map(0xc000, 0xffff).bankr("bank1"); +} + +void s11_state::s11_bg_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xffff).rom(); +} static INPUT_PORTS_START( s11 ) PORT_START("X0") diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp index 1cd95825d81..a2c30090dc9 100644 --- a/src/mame/drivers/s11a.cpp +++ b/src/mame/drivers/s11a.cpp @@ -31,33 +31,36 @@ Note: To start a game, certain switches need to be activated. You must first pr #include "s11a.lh" -ADDRESS_MAP_START(s11a_state::s11a_main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_MIRROR(0x00fc) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_MIRROR(0x01ff) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x2c00, 0x2c03) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display - AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x3400, 0x3403) AM_MIRROR(0x0bfc) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(s11a_state::s11a_audio_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w) - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(s11a_state::s11a_bg_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write) - AM_RANGE(0x7800, 0x7fff) AM_WRITE(bgbank_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bgbank") -ADDRESS_MAP_END +void s11a_state::s11a_main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("nvram"); + map(0x2100, 0x2103).mirror(0x00fc).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).mirror(0x01ff).w(this, FUNC(s11a_state::sol3_w)); // solenoids + map(0x2400, 0x2403).mirror(0x03fc).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).mirror(0x03fc).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x2c00, 0x2c03).mirror(0x03fc).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display + map(0x3000, 0x3003).mirror(0x03fc).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x3400, 0x3403).mirror(0x0bfc).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget + map(0x4000, 0xffff).rom(); +} + +void s11a_state::s11a_audio_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x0800).ram(); + map(0x1000, 0x1fff).w(this, FUNC(s11a_state::bank_w)); + map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xbfff).bankr("bank0"); + map(0xc000, 0xffff).bankr("bank1"); +} + +void s11a_state::s11a_bg_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x1800).ram(); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x7800, 0x7fff).w(this, FUNC(s11a_state::bgbank_w)); + map(0x8000, 0xffff).bankr("bgbank"); +} static INPUT_PORTS_START( s11a ) PORT_START("X0") diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp index bda57333aad..93706a7d51a 100644 --- a/src/mame/drivers/s11b.cpp +++ b/src/mame/drivers/s11b.cpp @@ -32,35 +32,38 @@ #include "s11b.lh" -ADDRESS_MAP_START(s11b_state::s11b_main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_MIRROR(0x00fc) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_MIRROR(0x01ff) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x2c00, 0x2c03) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display - AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x3400, 0x3403) AM_MIRROR(0x0bfc) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(s11b_state::s11b_audio_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w) - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(s11b_state::s11b_bg_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write) - AM_RANGE(0x6000, 0x67ff) AM_WRITE(bg_speech_digit_w) - AM_RANGE(0x6800, 0x6fff) AM_WRITE(bg_speech_clock_w) - AM_RANGE(0x7800, 0x7fff) AM_WRITE(bgbank_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bgbank") -ADDRESS_MAP_END +void s11b_state::s11b_main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("nvram"); + map(0x2100, 0x2103).mirror(0x00fc).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).mirror(0x01ff).w(this, FUNC(s11b_state::sol3_w)); // solenoids + map(0x2400, 0x2403).mirror(0x03fc).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).mirror(0x03fc).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x2c00, 0x2c03).mirror(0x03fc).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display + map(0x3000, 0x3003).mirror(0x03fc).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x3400, 0x3403).mirror(0x0bfc).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget + map(0x4000, 0xffff).rom(); +} + +void s11b_state::s11b_audio_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x0800).ram(); + map(0x1000, 0x1fff).w(this, FUNC(s11b_state::bank_w)); + map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xbfff).bankr("bank0"); + map(0xc000, 0xffff).bankr("bank1"); +} + +void s11b_state::s11b_bg_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x6000, 0x67ff).w(this, FUNC(s11b_state::bg_speech_digit_w)); + map(0x6800, 0x6fff).w(this, FUNC(s11b_state::bg_speech_clock_w)); + map(0x7800, 0x7fff).w(this, FUNC(s11b_state::bgbank_w)); + map(0x8000, 0xffff).bankr("bgbank"); +} static INPUT_PORTS_START( s11b ) PORT_START("X0") diff --git a/src/mame/drivers/s11c.cpp b/src/mame/drivers/s11c.cpp index 9a8212aac29..dd6dda2def1 100644 --- a/src/mame/drivers/s11c.cpp +++ b/src/mame/drivers/s11c.cpp @@ -14,17 +14,18 @@ #include "s11c.lh" -ADDRESS_MAP_START(s11c_state::s11c_main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_MIRROR(0x00fc) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_MIRROR(0x01ff) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x2c00, 0x2c03) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display - AM_RANGE(0x3000, 0x3003) AM_MIRROR(0x03fc) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x3400, 0x3403) AM_MIRROR(0x0bfc) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void s11c_state::s11c_main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("nvram"); + map(0x2100, 0x2103).mirror(0x00fc).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).mirror(0x01ff).w(this, FUNC(s11c_state::sol3_w)); // solenoids + map(0x2400, 0x2403).mirror(0x03fc).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).mirror(0x03fc).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x2c00, 0x2c03).mirror(0x03fc).rw(m_pia2c, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // alphanumeric display + map(0x3000, 0x3003).mirror(0x03fc).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x3400, 0x3403).mirror(0x0bfc).rw(m_pia34, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // widget + map(0x4000, 0xffff).rom(); +} ADDRESS_MAP_START(s11c_state::s11c_audio_map) AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp index 4649dc0ad0b..1f04000f9d0 100644 --- a/src/mame/drivers/s3.cpp +++ b/src/mame/drivers/s3.cpp @@ -109,23 +109,25 @@ private: optional_device<pia6821_device> m_pias; }; -ADDRESS_MAP_START(s3_state::s3_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s3_state::s3_audio_map) - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) // sounds - AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s3_state::s3_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); + map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x6000, 0x7fff).rom().region("roms", 0); +} + +void s3_state::s3_audio_map(address_map &map) +{ + map.global_mask(0xfff); + map(0x0000, 0x007f).ram(); + map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds + map(0x0800, 0x0fff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s3 ) PORT_START("X0") diff --git a/src/mame/drivers/s4.cpp b/src/mame/drivers/s4.cpp index bb29669084c..235f69e5804 100644 --- a/src/mame/drivers/s4.cpp +++ b/src/mame/drivers/s4.cpp @@ -103,23 +103,25 @@ private: optional_device<pia6821_device> m_pias; }; -ADDRESS_MAP_START(s4_state::s4_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s4_state::s4_audio_map) - ADDRESS_MAP_GLOBAL_MASK(0x0fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) // sounds - AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s4_state::s4_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); + map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x6000, 0x7fff).rom().region("roms", 0); +} + +void s4_state::s4_audio_map(address_map &map) +{ + map.global_mask(0x0fff); + map(0x0000, 0x00ff).ram(); + map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds + map(0x0800, 0x0fff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s4 ) PORT_START("X0") diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp index 28544ec7a39..78033f97bdf 100644 --- a/src/mame/drivers/s6.cpp +++ b/src/mame/drivers/s6.cpp @@ -118,23 +118,25 @@ private: required_device<pia6821_device> m_pia30; }; -ADDRESS_MAP_START(s6_state::s6_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s6_state::s6_audio_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0x3000, 0x7fff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s6_state::s6_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); + map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x6000, 0x7fff).rom().region("roms", 0); +} + +void s6_state::s6_audio_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram(); + map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x3000, 0x7fff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s6 ) PORT_START("X0") diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp index 1544e458460..8156bc09781 100644 --- a/src/mame/drivers/s6a.cpp +++ b/src/mame/drivers/s6a.cpp @@ -111,22 +111,24 @@ private: required_device<pia6821_device> m_pia30; }; -ADDRESS_MAP_START(s6a_state::s6a_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s6a_state::s6a_audio_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0xb000, 0xffff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s6a_state::s6a_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram().share("nvram"); + map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x6000, 0x7fff).rom().region("roms", 0); +} + +void s6a_state::s6a_audio_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x0400, 0x0403).mirror(0x8000).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xb000, 0xffff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s6a ) PORT_START("X0") diff --git a/src/mame/drivers/s7.cpp b/src/mame/drivers/s7.cpp index 12d8933729d..a5f08031851 100644 --- a/src/mame/drivers/s7.cpp +++ b/src/mame/drivers/s7.cpp @@ -141,25 +141,27 @@ private: required_device<pia6821_device> m_pia30; }; -ADDRESS_MAP_START(s7_state::s7_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x1000) - AM_RANGE(0x0100, 0x01ff) AM_READWRITE(nvram_r,nvram_w) - AM_RANGE(0x0200, 0x03ff) AM_RAM AM_MIRROR(0x1000) - AM_RANGE(0x1100, 0x11ff) AM_RAM - AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s7_state::s7_audio_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0xb000, 0xffff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s7_state::s7_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram().mirror(0x1000); + map(0x0100, 0x01ff).rw(this, FUNC(s7_state::nvram_r), FUNC(s7_state::nvram_w)); + map(0x0200, 0x03ff).ram().mirror(0x1000); + map(0x1100, 0x11ff).ram(); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2203).rw(m_pia22, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x5000, 0x7fff).rom().region("roms", 0); +} + +void s7_state::s7_audio_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x0400, 0x0403).mirror(0x8000).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xb000, 0xffff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s7 ) PORT_START("X0") diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp index 4470d77577f..99b89e267f0 100644 --- a/src/mame/drivers/s8.cpp +++ b/src/mame/drivers/s8.cpp @@ -111,22 +111,24 @@ private: required_device<pia6821_device> m_pia30; }; -ADDRESS_MAP_START(s8_state::s8_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x5000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s8_state::s8_audio_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s8_state::s8_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).w(this, FUNC(s8_state::sol3_w)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x5000, 0x7fff).rom().region("roms", 0); +} + +void s8_state::s8_audio_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x4000, 0x4003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc000, 0xffff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s8 ) PORT_START("X0") diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp index e9b63e8cefc..6fbad88c913 100644 --- a/src/mame/drivers/s8a.cpp +++ b/src/mame/drivers/s8a.cpp @@ -87,22 +87,24 @@ private: required_device<pia6821_device> m_pia30; }; -ADDRESS_MAP_START(s8a_state::s8a_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s8a_state::s8a_audio_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s8a_state::s8a_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).w(this, FUNC(s8a_state::sol3_w)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x6000, 0x7fff).rom().region("roms", 0); +} + +void s8a_state::s8a_audio_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x2000, 0x2003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc000, 0xffff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s8a ) PORT_START("X0") diff --git a/src/mame/drivers/s9.cpp b/src/mame/drivers/s9.cpp index f66ef8357bd..ad737254251 100644 --- a/src/mame/drivers/s9.cpp +++ b/src/mame/drivers/s9.cpp @@ -99,22 +99,24 @@ private: required_device<pia6821_device> m_pia30; }; -ADDRESS_MAP_START(s9_state::s9_main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids - AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids - AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps - AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs - AM_RANGE(0x4000, 0x7fff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(s9_state::s9_audio_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pias", pia6821_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audioroms", 0) -ADDRESS_MAP_END +void s9_state::s9_main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); + map(0x2100, 0x2103).rw(m_pia21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sound+solenoids + map(0x2200, 0x2200).w(this, FUNC(s9_state::sol3_w)); // solenoids + map(0x2400, 0x2403).rw(m_pia24, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // lamps + map(0x2800, 0x2803).rw(m_pia28, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // display + map(0x3000, 0x3003).rw(m_pia30, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // inputs + map(0x4000, 0x7fff).rom().region("roms", 0); +} + +void s9_state::s9_audio_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x2003).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8000, 0xffff).rom().region("audioroms", 0); +} static INPUT_PORTS_START( s9 ) PORT_START("X0") diff --git a/src/mame/drivers/sacstate.cpp b/src/mame/drivers/sacstate.cpp index 100acf5290a..8bb546412de 100644 --- a/src/mame/drivers/sacstate.cpp +++ b/src/mame/drivers/sacstate.cpp @@ -94,22 +94,24 @@ WRITE8_MEMBER( sacstate_state::port08_w ) m_val = 0; } -ADDRESS_MAP_START(sacstate_state::sacstate_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000,0x7ff) AM_ROM - AM_RANGE(0x800,0xfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sacstate_state::sacstate_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READ(port00_r) - AM_RANGE(0x01,0x01) AM_READ(port01_r) - AM_RANGE(0x04,0x04) AM_READ(port04_r) - AM_RANGE(0x08,0x08) AM_WRITE(port08_w) - AM_RANGE(0x16,0x16) AM_DEVWRITE("terminal", generic_terminal_device, write) - AM_RANGE(0x17,0x1f) AM_WRITENOP -ADDRESS_MAP_END +void sacstate_state::sacstate_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000, 0x7ff).rom(); + map(0x800, 0xfff).ram(); +} + +void sacstate_state::sacstate_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(sacstate_state::port00_r)); + map(0x01, 0x01).r(this, FUNC(sacstate_state::port01_r)); + map(0x04, 0x04).r(this, FUNC(sacstate_state::port04_r)); + map(0x08, 0x08).w(this, FUNC(sacstate_state::port08_w)); + map(0x16, 0x16).w(m_terminal, FUNC(generic_terminal_device::write)); + map(0x17, 0x1f).nopw(); +} /* Input ports */ static INPUT_PORTS_START( sacstate ) diff --git a/src/mame/drivers/safarir.cpp b/src/mame/drivers/safarir.cpp index 327f14273a5..694b7561946 100644 --- a/src/mame/drivers/safarir.cpp +++ b/src/mame/drivers/safarir.cpp @@ -342,16 +342,17 @@ void safarir_state::machine_start() * *************************************/ -ADDRESS_MAP_START(safarir_state::main_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_READWRITE(ram_r, ram_w) AM_SHARE("ram") - AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READNOP AM_WRITE(ram_bank_w) - AM_RANGE(0x2c00, 0x2c00) AM_MIRROR(0x03ff) AM_READNOP AM_WRITEONLY AM_SHARE("bg_scroll") - AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x03ff) AM_WRITE(safarir_audio_w) /* goes to SN76477 */ - AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_WRITENOP /* cleared at the beginning */ - AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ_PORT("INPUTS") AM_WRITENOP - AM_RANGE(0x3c00, 0x3c00) AM_MIRROR(0x03ff) AM_READ_PORT("DSW") AM_WRITENOP -ADDRESS_MAP_END +void safarir_state::main_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x2000, 0x27ff).rw(this, FUNC(safarir_state::ram_r), FUNC(safarir_state::ram_w)).share("ram"); + map(0x2800, 0x2800).mirror(0x03ff).nopr().w(this, FUNC(safarir_state::ram_bank_w)); + map(0x2c00, 0x2c00).mirror(0x03ff).nopr().writeonly().share("bg_scroll"); + map(0x3000, 0x3000).mirror(0x03ff).w(this, FUNC(safarir_state::safarir_audio_w)); /* goes to SN76477 */ + map(0x3400, 0x3400).mirror(0x03ff).nopw(); /* cleared at the beginning */ + map(0x3800, 0x3800).mirror(0x03ff).portr("INPUTS").nopw(); + map(0x3c00, 0x3c00).mirror(0x03ff).portr("DSW").nopw(); +} diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp index 474f467f889..f6871a05c5c 100644 --- a/src/mame/drivers/sage2.cpp +++ b/src/mame/drivers/sage2.cpp @@ -36,25 +36,26 @@ // ADDRESS_MAP( sage2_mem ) //------------------------------------------------- -ADDRESS_MAP_START(sage2_state::sage2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xffc000, 0xffc007) AM_DEVREADWRITE8(I8253_1_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0xffc010, 0xffc01f) AM_NOP //AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff) - AM_RANGE(0xffc020, 0xffc027) AM_DEVREADWRITE8(I8255A_0_TAG, i8255_device, read, write, 0x00ff) // i8255, DIPs + Floppy ctrl port - AM_RANGE(0xffc030, 0xffc031) AM_DEVREADWRITE8(I8251_1_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xffc032, 0xffc033) AM_DEVREADWRITE8(I8251_1_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xffc040, 0xffc043) AM_DEVREADWRITE8(I8259_TAG, pic8259_device, read, write, 0x00ff) - AM_RANGE(0xffc050, 0xffc053) AM_DEVICE8(UPD765_TAG, upd765a_device, map, 0x00ff) - AM_RANGE(0xffc060, 0xffc067) AM_DEVREADWRITE8(I8255A_1_TAG, i8255_device, read, write, 0x00ff) // i8255, Printer - AM_RANGE(0xffc070, 0xffc071) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xffc072, 0xffc073) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xffc080, 0xffc087) AM_MIRROR(0x78) AM_DEVREADWRITE8(I8253_0_TAG, pit8253_device, read, write, 0x00ff) +void sage2_state::sage2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0xffc000, 0xffc007).rw(I8253_1_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0xffc010, 0xffc01f).noprw(); //AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff) + map(0xffc020, 0xffc027).rw(I8255A_0_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255, DIPs + Floppy ctrl port + map(0xffc031, 0xffc031).rw(m_usart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xffc033, 0xffc033).rw(m_usart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xffc040, 0xffc043).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0xffc050, 0xffc053).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); + map(0xffc060, 0xffc067).rw(I8255A_1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); // i8255, Printer + map(0xffc071, 0xffc071).rw(m_usart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xffc073, 0xffc073).rw(m_usart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xffc080, 0xffc087).mirror(0x78).rw(I8253_0_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); // AM_RANGE(0xffc400, 0xffc407) AM_DEVREADWRITE8(S2651_0_TAG, s2651_device, read, write, 0x00ff) // AM_RANGE(0xffc440, 0xffc447) AM_DEVREADWRITE8(S2651_1_TAG, s2651_device, read, write, 0x00ff) // AM_RANGE(0xffc480, 0xffc487) AM_DEVREADWRITE8(S2651_2_TAG, s2651_device, read, write, 0x00ff) // AM_RANGE(0xffc4c0, 0xffc4c7) AM_DEVREADWRITE8(S2651_3_TAG, s2651_device, read, write, 0x00ff) // AM_RANGE(0xffc500, 0xffc7ff) // Winchester drive ports -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/sam.cpp b/src/mame/drivers/sam.cpp index 48e09eec99e..98dd1b406f7 100644 --- a/src/mame/drivers/sam.cpp +++ b/src/mame/drivers/sam.cpp @@ -14,10 +14,11 @@ public: void sam_map(address_map &map); }; -ADDRESS_MAP_START(sam_state::sam_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("boot",0) - AM_RANGE(0x00300000, 0x003fffff) AM_RAM -ADDRESS_MAP_END +void sam_state::sam_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom().region("boot", 0); + map(0x00300000, 0x003fffff).ram(); +} static INPUT_PORTS_START( sam ) INPUT_PORTS_END diff --git a/src/mame/drivers/samcoupe.cpp b/src/mame/drivers/samcoupe.cpp index a639ffb80b8..93089dd351b 100644 --- a/src/mame/drivers/samcoupe.cpp +++ b/src/mame/drivers/samcoupe.cpp @@ -303,31 +303,33 @@ WRITE8_MEMBER(samcoupe_state::samcoupe_lpt2_strobe_w) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(samcoupe_state::samcoupe_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_READWRITE(sam_bank1_r, sam_bank1_w) // AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAM AM_READWRITE(sam_bank2_r, sam_bank2_w) // AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_READWRITE(sam_bank3_r, sam_bank3_w) // AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAM AM_READWRITE(sam_bank4_r, sam_bank4_w) // AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(samcoupe_state::samcoupe_io) - AM_RANGE(0x0080, 0x0081) AM_SELECT(0xff00) AM_WRITE(samcoupe_ext_mem_w) - AM_RANGE(0x00e0, 0x00e7) AM_SELECT(0xff10) AM_READWRITE(samcoupe_disk_r, samcoupe_disk_w) - AM_RANGE(0x00e8, 0x00e8) AM_SELECT(0xff00) AM_DEVWRITE("lpt1_data_out", output_latch_device, write) - AM_RANGE(0x00e9, 0x00e9) AM_SELECT(0xff00) AM_READWRITE(samcoupe_lpt1_busy_r, samcoupe_lpt1_strobe_w) - AM_RANGE(0x00ea, 0x00ea) AM_SELECT(0xff00) AM_DEVWRITE("lpt2_data_out", output_latch_device, write) - AM_RANGE(0x00eb, 0x00eb) AM_SELECT(0xff00) AM_READWRITE(samcoupe_lpt2_busy_r, samcoupe_lpt2_strobe_w) - AM_RANGE(0x00f8, 0x00f8) AM_SELECT(0xff00) AM_READWRITE(samcoupe_pen_r, samcoupe_clut_w) - AM_RANGE(0x00f9, 0x00f9) AM_SELECT(0xff00) AM_READWRITE(samcoupe_status_r, samcoupe_line_int_w) - AM_RANGE(0x00fa, 0x00fa) AM_SELECT(0xff00) AM_READWRITE(samcoupe_lmpr_r, samcoupe_lmpr_w) - AM_RANGE(0x00fb, 0x00fb) AM_SELECT(0xff00) AM_READWRITE(samcoupe_hmpr_r, samcoupe_hmpr_w) - AM_RANGE(0x00fc, 0x00fc) AM_SELECT(0xff00) AM_READWRITE(samcoupe_vmpr_r, samcoupe_vmpr_w) - AM_RANGE(0x00fd, 0x00fd) AM_SELECT(0xff00) AM_READWRITE(samcoupe_midi_r, samcoupe_midi_w) - AM_RANGE(0x00fe, 0x00fe) AM_SELECT(0xff00) AM_READWRITE(samcoupe_keyboard_r, samcoupe_border_w) - AM_RANGE(0x00ff, 0x00ff) AM_SELECT(0xff00) AM_READ(samcoupe_attributes_r) - AM_RANGE(0x00ff, 0x00ff) AM_SELECT(0xfe00) AM_DEVWRITE("saa1099", saa1099_device, data_w) - AM_RANGE(0x01ff, 0x01ff) AM_SELECT(0xfe00) AM_DEVWRITE("saa1099", saa1099_device, control_w) -ADDRESS_MAP_END +void samcoupe_state::samcoupe_mem(address_map &map) +{ + map(0x0000, 0x3fff).ram().rw(this, FUNC(samcoupe_state::sam_bank1_r), FUNC(samcoupe_state::sam_bank1_w)); // AM_RAMBANK("bank1") + map(0x4000, 0x7fff).ram().rw(this, FUNC(samcoupe_state::sam_bank2_r), FUNC(samcoupe_state::sam_bank2_w)); // AM_RAMBANK("bank2") + map(0x8000, 0xbfff).ram().rw(this, FUNC(samcoupe_state::sam_bank3_r), FUNC(samcoupe_state::sam_bank3_w)); // AM_RAMBANK("bank3") + map(0xc000, 0xffff).ram().rw(this, FUNC(samcoupe_state::sam_bank4_r), FUNC(samcoupe_state::sam_bank4_w)); // AM_RAMBANK("bank4") +} + +void samcoupe_state::samcoupe_io(address_map &map) +{ + map(0x0080, 0x0081).select(0xff00).w(this, FUNC(samcoupe_state::samcoupe_ext_mem_w)); + map(0x00e0, 0x00e7).select(0xff10).rw(this, FUNC(samcoupe_state::samcoupe_disk_r), FUNC(samcoupe_state::samcoupe_disk_w)); + map(0x00e8, 0x00e8).select(0xff00).w("lpt1_data_out", FUNC(output_latch_device::write)); + map(0x00e9, 0x00e9).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_lpt1_busy_r), FUNC(samcoupe_state::samcoupe_lpt1_strobe_w)); + map(0x00ea, 0x00ea).select(0xff00).w("lpt2_data_out", FUNC(output_latch_device::write)); + map(0x00eb, 0x00eb).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_lpt2_busy_r), FUNC(samcoupe_state::samcoupe_lpt2_strobe_w)); + map(0x00f8, 0x00f8).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_pen_r), FUNC(samcoupe_state::samcoupe_clut_w)); + map(0x00f9, 0x00f9).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_status_r), FUNC(samcoupe_state::samcoupe_line_int_w)); + map(0x00fa, 0x00fa).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_lmpr_r), FUNC(samcoupe_state::samcoupe_lmpr_w)); + map(0x00fb, 0x00fb).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_hmpr_r), FUNC(samcoupe_state::samcoupe_hmpr_w)); + map(0x00fc, 0x00fc).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_vmpr_r), FUNC(samcoupe_state::samcoupe_vmpr_w)); + map(0x00fd, 0x00fd).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_midi_r), FUNC(samcoupe_state::samcoupe_midi_w)); + map(0x00fe, 0x00fe).select(0xff00).rw(this, FUNC(samcoupe_state::samcoupe_keyboard_r), FUNC(samcoupe_state::samcoupe_border_w)); + map(0x00ff, 0x00ff).select(0xff00).r(this, FUNC(samcoupe_state::samcoupe_attributes_r)); + map(0x00ff, 0x00ff).select(0xfe00).w("saa1099", FUNC(saa1099_device::data_w)); + map(0x01ff, 0x01ff).select(0xfe00).w("saa1099", FUNC(saa1099_device::control_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/sandscrp.cpp b/src/mame/drivers/sandscrp.cpp index d7e0d2529d8..3e70d4d2316 100644 --- a/src/mame/drivers/sandscrp.cpp +++ b/src/mame/drivers/sandscrp.cpp @@ -275,26 +275,27 @@ WRITE8_MEMBER(sandscrp_state::soundlatch_w) m_soundlatch[Latch]->write(space,0,data); } -ADDRESS_MAP_START(sandscrp_state::sandscrp) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x100001) AM_WRITE(irq_cause_w) // IRQ Ack - - AM_RANGE(0x700000, 0x70ffff) AM_RAM // RAM - AM_RANGE(0x200000, 0x20001f) AM_DEVREADWRITE("calc1_mcu", kaneko_hit_device, kaneko_hit_r,kaneko_hit_w) - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_regs_r, kaneko_tmap_regs_w) - AM_RANGE(0x400000, 0x403fff) AM_DEVREADWRITE("view2", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) - AM_RANGE(0x500000, 0x501fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w ) // sprites - AM_RANGE(0x600000, 0x600fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(coincounter_w) // Coin Counters (Lockout unused) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK") - AM_RANGE(0xec0000, 0xec0001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x800000, 0x800001) AM_READ(irq_cause_r) // IRQ Cause - AM_RANGE(0xe00000, 0xe00001) AM_READWRITE8(soundlatch_r<1>, soundlatch_w<0>, 0x00ff) // From/To Sound CPU - AM_RANGE(0xe40000, 0xe40001) AM_READWRITE(latchstatus_word_r, latchstatus_word_w) // -ADDRESS_MAP_END +void sandscrp_state::sandscrp(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x100001).w(this, FUNC(sandscrp_state::irq_cause_w)); // IRQ Ack + + map(0x700000, 0x70ffff).ram(); // RAM + map(0x200000, 0x20001f).rw("calc1_mcu", FUNC(kaneko_hit_device::kaneko_hit_r), FUNC(kaneko_hit_device::kaneko_hit_w)); + map(0x300000, 0x30001f).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_regs_w)); + map(0x400000, 0x403fff).rw(m_view2, FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_r), FUNC(kaneko_view2_tilemap_device::kaneko_tmap_vram_w)); + map(0x500000, 0x501fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); // sprites + map(0x600000, 0x600fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); // Palette + map(0xa00000, 0xa00001).w(this, FUNC(sandscrp_state::coincounter_w)); // Coin Counters (Lockout unused) + map(0xb00000, 0xb00001).portr("P1"); + map(0xb00002, 0xb00003).portr("P2"); + map(0xb00004, 0xb00005).portr("SYSTEM"); + map(0xb00006, 0xb00007).portr("UNK"); + map(0xec0000, 0xec0001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x800000, 0x800001).r(this, FUNC(sandscrp_state::irq_cause_r)); // IRQ Cause + map(0xe00001, 0xe00001).rw(this, FUNC(sandscrp_state::soundlatch_r<1>), FUNC(sandscrp_state::soundlatch_w<0>)); // From/To Sound CPU + map(0xe40000, 0xe40001).rw(this, FUNC(sandscrp_state::latchstatus_word_r), FUNC(sandscrp_state::latchstatus_word_w)); // +} @@ -313,21 +314,23 @@ READ8_MEMBER(sandscrp_state::latchstatus_r) (m_latch_full[0] ? 0x40 : 0) ; } -ADDRESS_MAP_START(sandscrp_state::sandscrp_soundmem) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") // Banked ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM // RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sandscrp_state::sandscrp_soundport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(bankswitch_w) // ROM Bank - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) // PORTA/B read - AM_RANGE(0x04, 0x04) AM_DEVWRITE("oki", okim6295_device, write) // OKIM6295 - AM_RANGE(0x06, 0x06) AM_WRITE(soundlatch_w<1>) // - AM_RANGE(0x07, 0x07) AM_READ(soundlatch_r<0>) // - AM_RANGE(0x08, 0x08) AM_READ(latchstatus_r) // -ADDRESS_MAP_END +void sandscrp_state::sandscrp_soundmem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("audiobank"); // Banked ROM + map(0xc000, 0xdfff).ram(); // RAM +} + +void sandscrp_state::sandscrp_soundport(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(sandscrp_state::bankswitch_w)); // ROM Bank + map(0x02, 0x03).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // PORTA/B read + map(0x04, 0x04).w("oki", FUNC(okim6295_device::write)); // OKIM6295 + map(0x06, 0x06).w(this, FUNC(sandscrp_state::soundlatch_w<1>)); // + map(0x07, 0x07).r(this, FUNC(sandscrp_state::soundlatch_r<0>)); // + map(0x08, 0x08).r(this, FUNC(sandscrp_state::latchstatus_r)); // +} /*************************************************************************** diff --git a/src/mame/drivers/sangho.cpp b/src/mame/drivers/sangho.cpp index 98850b7c39f..e5183ef40ba 100644 --- a/src/mame/drivers/sangho.cpp +++ b/src/mame/drivers/sangho.cpp @@ -285,37 +285,40 @@ WRITE8_MEMBER(sangho_state::sec_slot_w) } -ADDRESS_MAP_START(sangho_state::sangho_map) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank5") - AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank6") - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank7") - AM_RANGE(0xc000, 0xffff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank8") -ADDRESS_MAP_END +void sangho_state::sangho_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1").bankw("bank5"); + map(0x4000, 0x7fff).bankr("bank2").bankw("bank6"); + map(0x8000, 0xbfff).bankr("bank3").bankw("bank7"); + map(0xc000, 0xffff).bankr("bank4").bankw("bank8"); +} /* Puzzle Star Ports */ -ADDRESS_MAP_START(sangho_state::pzlestar_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE( 0x91, 0x91) AM_WRITE(pzlestar_bank_w ) - AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9958", v9958_device, read, write ) - AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1") - AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2") - AM_RANGE( 0xa8, 0xa8) AM_READWRITE(pzlestar_mem_bank_r, pzlestar_mem_bank_w ) - AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW") -ADDRESS_MAP_END +void sangho_state::pzlestar_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7c, 0x7d).w("ymsnd", FUNC(ym2413_device::write)); + map(0x91, 0x91).w(this, FUNC(sangho_state::pzlestar_bank_w)); + map(0x98, 0x9b).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write)); + map(0xa0, 0xa0).portr("P1"); + map(0xa1, 0xa1).portr("P2"); + map(0xa8, 0xa8).rw(this, FUNC(sangho_state::pzlestar_mem_bank_r), FUNC(sangho_state::pzlestar_mem_bank_w)); + map(0xf7, 0xf7).portr("DSW"); +} /* Sexy Boom Ports */ -ADDRESS_MAP_START(sangho_state::sexyboom_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1") - AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2") - AM_RANGE( 0xf0, 0xf3) AM_DEVREADWRITE("v9958", v9958_device, read, write ) - AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW") - AM_RANGE( 0xf8, 0xff) AM_WRITE(sexyboom_bank_w ) -ADDRESS_MAP_END +void sangho_state::sexyboom_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7c, 0x7d).w("ymsnd", FUNC(ym2413_device::write)); + map(0xa0, 0xa0).portr("P1"); + map(0xa1, 0xa1).portr("P2"); + map(0xf0, 0xf3).rw(m_v9958, FUNC(v9958_device::read), FUNC(v9958_device::write)); + map(0xf7, 0xf7).portr("DSW"); + map(0xf8, 0xff).w(this, FUNC(sangho_state::sexyboom_bank_w)); +} static INPUT_PORTS_START( sexyboom ) PORT_START("P1") diff --git a/src/mame/drivers/sanremmg.cpp b/src/mame/drivers/sanremmg.cpp index d803f7da54d..45710e0a10d 100644 --- a/src/mame/drivers/sanremmg.cpp +++ b/src/mame/drivers/sanremmg.cpp @@ -42,10 +42,11 @@ uint32_t sanremmg_state::screen_update_sanremmg(screen_device &screen, bitmap_in -ADDRESS_MAP_START(sanremmg_state::sanremmg_map) - AM_RANGE(0x00000000, 0x003fffff) AM_ROM +void sanremmg_state::sanremmg_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom(); -ADDRESS_MAP_END +} static INPUT_PORTS_START( sanremmg ) diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp index ef6ac655ed3..ff888591191 100644 --- a/src/mame/drivers/sanremo.cpp +++ b/src/mame/drivers/sanremo.cpp @@ -224,24 +224,26 @@ WRITE8_MEMBER(sanremo_state::banksel_w) * Memory map information * *********************************************/ -ADDRESS_MAP_START(sanremo_state::sanremo_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(sanremo_videoram_w) AM_SHARE("videoram") // 2x 76C28 (1x accessed directly, latched bank written to other like subsino etc.) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") // battery backed UM6116 -ADDRESS_MAP_END - -ADDRESS_MAP_START(sanremo_state::sanremo_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x04) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x05, 0x05) AM_WRITE(lamps_w) - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x17, 0x17) AM_DEVWRITE("ay8910", ay8910_device, data_w) - AM_RANGE(0x24, 0x24) AM_WRITE(banksel_w) - AM_RANGE(0x27, 0x27) AM_DEVREAD("ay8910", ay8910_device, data_r) - AM_RANGE(0x37, 0x37) AM_DEVWRITE("ay8910", ay8910_device, address_w) -ADDRESS_MAP_END +void sanremo_state::sanremo_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(this, FUNC(sanremo_state::sanremo_videoram_w)).share("videoram"); // 2x 76C28 (1x accessed directly, latched bank written to other like subsino etc.) + map(0xc000, 0xc7ff).ram().share("nvram"); // battery backed UM6116 +} + +void sanremo_state::sanremo_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).portr("IN0"); + map(0x02, 0x02).portr("IN1"); + map(0x04, 0x04).w("crtc", FUNC(mc6845_device::address_w)); + map(0x05, 0x05).w(this, FUNC(sanremo_state::lamps_w)); + map(0x14, 0x14).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x17, 0x17).w("ay8910", FUNC(ay8910_device::data_w)); + map(0x24, 0x24).w(this, FUNC(sanremo_state::banksel_w)); + map(0x27, 0x27).r("ay8910", FUNC(ay8910_device::data_r)); + map(0x37, 0x37).w("ay8910", FUNC(ay8910_device::address_w)); +} /* diff --git a/src/mame/drivers/sansa_fuze.cpp b/src/mame/drivers/sansa_fuze.cpp index 05a4cc23082..c8c4132d774 100644 --- a/src/mame/drivers/sansa_fuze.cpp +++ b/src/mame/drivers/sansa_fuze.cpp @@ -28,12 +28,13 @@ public: -ADDRESS_MAP_START(sansa_fuze_state::sansa_fuze_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM +void sansa_fuze_state::sansa_fuze_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); - AM_RANGE(0x80000000, 0x8001ffff) AM_ROM AM_REGION("maincpu", 0x00000) - AM_RANGE(0x81000000, 0x81ffffff) AM_RAM -ADDRESS_MAP_END + map(0x80000000, 0x8001ffff).rom().region("maincpu", 0x00000); + map(0x81000000, 0x81ffffff).ram(); +} static INPUT_PORTS_START( sansa_fuze ) diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp index 8195fa28f94..f8bc4272e19 100644 --- a/src/mame/drivers/sapi1.cpp +++ b/src/mame/drivers/sapi1.cpp @@ -189,80 +189,88 @@ static const uint8_t MHB2501[] = { /* Address maps */ -ADDRESS_MAP_START(sapi1_state::sapi1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x1fff) AM_ROM // Extension ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x2400, 0x27ff) AM_READWRITE(sapi1_keyboard_r, sapi1_keyboard_w) // PORT 0 - keyboard +void sapi1_state::sapi1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x1fff).rom(); // Extension ROM + map(0x2000, 0x23ff).ram(); + map(0x2400, 0x27ff).rw(this, FUNC(sapi1_state::sapi1_keyboard_r), FUNC(sapi1_state::sapi1_keyboard_w)); // PORT 0 - keyboard //AM_RANGE(0x2800, 0x2bff) AM_NOP // PORT 1 //AM_RANGE(0x2c00, 0x2fff) AM_NOP // PORT 2 //AM_RANGE(0x3000, 0x33ff) AM_NOP // 3214 - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("videoram") // AND-1 (video RAM) - AM_RANGE(0x4000, 0x7fff) AM_RAM // REM-1 -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x1fff) AM_ROM // Extension ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x2400, 0x27ff) AM_READ(sapi2_keyboard_status_r) - AM_RANGE(0x2800, 0x28ff) AM_READ(sapi2_keyboard_data_r) - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("videoram") // AND-1 (video RAM) - AM_RANGE(0x4000, 0x7fff) AM_RAM // REM-1 -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi3_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RAMBANK("bank1") - AM_RANGE(0x0800, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi3a_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RAMBANK("bank1") - AM_RANGE(0x0800, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xfdff) AM_ROM - AM_RANGE(0xfe00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi3b_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RAMBANK("bank1") - AM_RANGE(0x0800, 0xafff) AM_RAM - AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xb800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi3_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w) - AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi3a_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w) - AM_RANGE(0x10, 0x10) AM_READWRITE(uart_status_r, modem_control_w) - AM_RANGE(0x11, 0x11) AM_READWRITE(uart_ready_r, uart_mode_w) - AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("uart", ay51013_device, receive, transmit) - AM_RANGE(0x13, 0x13) AM_WRITE(uart_reset_w) - AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sapi1_state::sapi3b_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sapi3_00_w) - AM_RANGE(0x0c, 0x0c) AM_READ(sapi3_0c_r) - AM_RANGE(0x25, 0x25) AM_READWRITE(sapi3_25_r,sapi3_25_w) - AM_RANGE(0xe0, 0xe0) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0xe1, 0xe1) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END + map(0x3800, 0x3fff).ram().share("videoram"); // AND-1 (video RAM) + map(0x4000, 0x7fff).ram(); // REM-1 +} + +void sapi1_state::sapi2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x1fff).rom(); // Extension ROM + map(0x2000, 0x23ff).ram(); + map(0x2400, 0x27ff).r(this, FUNC(sapi1_state::sapi2_keyboard_status_r)); + map(0x2800, 0x28ff).r(this, FUNC(sapi1_state::sapi2_keyboard_data_r)); + map(0x3800, 0x3fff).ram().share("videoram"); // AND-1 (video RAM) + map(0x4000, 0x7fff).ram(); // REM-1 +} + +void sapi1_state::sapi3_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).ram().bankrw("bank1"); + map(0x0800, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("videoram"); +} + +void sapi1_state::sapi3a_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).ram().bankrw("bank1"); + map(0x0800, 0xf7ff).ram(); + map(0xf800, 0xfdff).rom(); + map(0xfe00, 0xffff).ram(); +} + +void sapi1_state::sapi3b_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).ram().bankrw("bank1"); + map(0x0800, 0xafff).ram(); + map(0xb000, 0xb7ff).ram().share("videoram"); + map(0xb800, 0xffff).ram(); +} + +void sapi1_state::sapi3_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(sapi1_state::sapi3_00_w)); + map(0x25, 0x25).rw(this, FUNC(sapi1_state::sapi3_25_r), FUNC(sapi1_state::sapi3_25_w)); +} + +void sapi1_state::sapi3a_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(sapi1_state::sapi3_00_w)); + map(0x10, 0x10).rw(this, FUNC(sapi1_state::uart_status_r), FUNC(sapi1_state::modem_control_w)); + map(0x11, 0x11).rw(this, FUNC(sapi1_state::uart_ready_r), FUNC(sapi1_state::uart_mode_w)); + map(0x12, 0x12).rw(m_uart, FUNC(ay51013_device::receive), FUNC(ay51013_device::transmit)); + map(0x13, 0x13).w(this, FUNC(sapi1_state::uart_reset_w)); + map(0x25, 0x25).rw(this, FUNC(sapi1_state::sapi3_25_r), FUNC(sapi1_state::sapi3_25_w)); +} + +void sapi1_state::sapi3b_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(sapi1_state::sapi3_00_w)); + map(0x0c, 0x0c).r(this, FUNC(sapi1_state::sapi3_0c_r)); + map(0x25, 0x25).rw(this, FUNC(sapi1_state::sapi3_25_r), FUNC(sapi1_state::sapi3_25_w)); + map(0xe0, 0xe0).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xe1, 0xe1).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} /* Input ports */ static INPUT_PORTS_START( sapi1 ) diff --git a/src/mame/drivers/sartorius.cpp b/src/mame/drivers/sartorius.cpp index e7a53ee6110..61bb6d53661 100644 --- a/src/mame/drivers/sartorius.cpp +++ b/src/mame/drivers/sartorius.cpp @@ -69,17 +69,20 @@ public: }; - ADDRESS_MAP_START(sart3733_state::sart3733_rom) - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("maincpu", 0x0000) -ADDRESS_MAP_END + void sart3733_state::sart3733_rom(address_map &map) +{ + map(0x0000, 0x07ff).rom().region("maincpu", 0x0000); +} - ADDRESS_MAP_START(sart3733_state::sart3733_memory) - AM_RANGE(0x0000, 0x007f) AM_RAM // 2 * 4002 -ADDRESS_MAP_END + void sart3733_state::sart3733_memory(address_map &map) +{ + map(0x0000, 0x007f).ram(); // 2 * 4002 +} - ADDRESS_MAP_START(sart3733_state::sart3733_status) - AM_RANGE(0x0000, 0x001f) AM_RAM // 2 * 4002 -ADDRESS_MAP_END + void sart3733_state::sart3733_status(address_map &map) +{ + map(0x0000, 0x001f).ram(); // 2 * 4002 +} MACHINE_CONFIG_START(sart3733_state::sart3733) diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp index d27f87e553a..d605e67d2ea 100644 --- a/src/mame/drivers/saturn.cpp +++ b/src/mame/drivers/saturn.cpp @@ -518,40 +518,42 @@ READ32_MEMBER( sat_console_state::abus_dummy_r ) return -1; } -ADDRESS_MAP_START(sat_console_state::saturn_mem) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_MIRROR(0x20000000) AM_REGION("bios", 0) AM_WRITENOP // bios - AM_RANGE(0x00100000, 0x0010007f) AM_DEVREADWRITE8("smpc", smpc_hle_device, read, write, 0xffffffff) - AM_RANGE(0x00180000, 0x0018ffff) AM_READWRITE8(saturn_backupram_r, saturn_backupram_w,0xffffffff) AM_SHARE("share1") - AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_MIRROR(0x20100000) AM_SHARE("workram_l") - AM_RANGE(0x01000000, 0x017fffff) AM_WRITE(saturn_minit_w) - AM_RANGE(0x01800000, 0x01ffffff) AM_WRITE(saturn_sinit_w) +void sat_console_state::saturn_mem(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().mirror(0x20000000).region("bios", 0).nopw(); // bios + map(0x00100000, 0x0010007f).rw(m_smpc_hle, FUNC(smpc_hle_device::read), FUNC(smpc_hle_device::write)); + map(0x00180000, 0x0018ffff).rw(this, FUNC(sat_console_state::saturn_backupram_r), FUNC(sat_console_state::saturn_backupram_w)).share("share1"); + map(0x00200000, 0x002fffff).ram().mirror(0x20100000).share("workram_l"); + map(0x01000000, 0x017fffff).w(this, FUNC(sat_console_state::saturn_minit_w)); + map(0x01800000, 0x01ffffff).w(this, FUNC(sat_console_state::saturn_sinit_w)); // AM_RANGE(0x02000000, 0x023fffff) AM_ROM AM_MIRROR(0x20000000) // Cartridge area // AM_RANGE(0x02400000, 0x027fffff) AM_RAM // External Data RAM area // AM_RANGE(0x04000000, 0x047fffff) AM_RAM // External Battery RAM area - AM_RANGE(0x04fffffc, 0x04ffffff) AM_READ8(saturn_cart_type_r,0x000000ff) - AM_RANGE(0x05000000, 0x057fffff) AM_READ(abus_dummy_r) - AM_RANGE(0x05800000, 0x0589ffff) AM_DEVREADWRITE("stvcd", stvcd_device, stvcd_r, stvcd_w) + map(0x04ffffff, 0x04ffffff).r(this, FUNC(sat_console_state::saturn_cart_type_r)); + map(0x05000000, 0x057fffff).r(this, FUNC(sat_console_state::abus_dummy_r)); + map(0x05800000, 0x0589ffff).rw(m_stvcd, FUNC(stvcd_device::stvcd_r), FUNC(stvcd_device::stvcd_w)); /* Sound */ - AM_RANGE(0x05a00000, 0x05a7ffff) AM_READWRITE16(saturn_soundram_r, saturn_soundram_w,0xffffffff) - AM_RANGE(0x05b00000, 0x05b00fff) AM_DEVREADWRITE16("scsp", scsp_device, read, write, 0xffffffff) + map(0x05a00000, 0x05a7ffff).rw(this, FUNC(sat_console_state::saturn_soundram_r), FUNC(sat_console_state::saturn_soundram_w)); + map(0x05b00000, 0x05b00fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write)); /* VDP1 */ - AM_RANGE(0x05c00000, 0x05c7ffff) AM_READWRITE(saturn_vdp1_vram_r, saturn_vdp1_vram_w) - AM_RANGE(0x05c80000, 0x05cbffff) AM_READWRITE(saturn_vdp1_framebuffer0_r, saturn_vdp1_framebuffer0_w) - AM_RANGE(0x05d00000, 0x05d0001f) AM_READWRITE16(saturn_vdp1_regs_r, saturn_vdp1_regs_w,0xffffffff) - AM_RANGE(0x05e00000, 0x05e7ffff) AM_MIRROR(0x80000) AM_READWRITE(saturn_vdp2_vram_r, saturn_vdp2_vram_w) - AM_RANGE(0x05f00000, 0x05f7ffff) AM_READWRITE(saturn_vdp2_cram_r, saturn_vdp2_cram_w) - AM_RANGE(0x05f80000, 0x05fbffff) AM_READWRITE16(saturn_vdp2_regs_r, saturn_vdp2_regs_w,0xffffffff) - AM_RANGE(0x05fe0000, 0x05fe00cf) AM_DEVICE("scu", sega_scu_device, regs_map ) //AM_READWRITE(saturn_scu_r, saturn_scu_w) - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h") - AM_RANGE(0x45000000, 0x46ffffff) AM_WRITENOP - AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP // cache address array - AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM // cache data array, Dragon Ball Z sprites relies on this -ADDRESS_MAP_END - -ADDRESS_MAP_START(sat_console_state::sound_mem) - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("sound_ram") - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp", scsp_device, read, write) -ADDRESS_MAP_END + map(0x05c00000, 0x05c7ffff).rw(this, FUNC(sat_console_state::saturn_vdp1_vram_r), FUNC(sat_console_state::saturn_vdp1_vram_w)); + map(0x05c80000, 0x05cbffff).rw(this, FUNC(sat_console_state::saturn_vdp1_framebuffer0_r), FUNC(sat_console_state::saturn_vdp1_framebuffer0_w)); + map(0x05d00000, 0x05d0001f).rw(this, FUNC(sat_console_state::saturn_vdp1_regs_r), FUNC(sat_console_state::saturn_vdp1_regs_w)); + map(0x05e00000, 0x05e7ffff).mirror(0x80000).rw(this, FUNC(sat_console_state::saturn_vdp2_vram_r), FUNC(sat_console_state::saturn_vdp2_vram_w)); + map(0x05f00000, 0x05f7ffff).rw(this, FUNC(sat_console_state::saturn_vdp2_cram_r), FUNC(sat_console_state::saturn_vdp2_cram_w)); + map(0x05f80000, 0x05fbffff).rw(this, FUNC(sat_console_state::saturn_vdp2_regs_r), FUNC(sat_console_state::saturn_vdp2_regs_w)); + map(0x05fe0000, 0x05fe00cf).m(m_scu, FUNC(sega_scu_device::regs_map)); //AM_READWRITE(saturn_scu_r, saturn_scu_w) + map(0x06000000, 0x060fffff).ram().mirror(0x21f00000).share("workram_h"); + map(0x45000000, 0x46ffffff).nopw(); + map(0x60000000, 0x600003ff).nopw(); // cache address array + map(0xc0000000, 0xc0000fff).ram(); // cache data array, Dragon Ball Z sprites relies on this +} + +void sat_console_state::sound_mem(address_map &map) +{ + map(0x000000, 0x0fffff).ram().share("sound_ram"); + map(0x100000, 0x100fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write)); +} INPUT_CHANGED_MEMBER(sat_console_state::tray_open) diff --git a/src/mame/drivers/sauro.cpp b/src/mame/drivers/sauro.cpp index a2531dfadd1..69c8913ec10 100644 --- a/src/mame/drivers/sauro.cpp +++ b/src/mame/drivers/sauro.cpp @@ -185,66 +185,71 @@ WRITE8_MEMBER(sauro_state::adpcm_w) m_sp0256->ald_w(space, 0, data); } -ADDRESS_MAP_START(sauro_state::sauro_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sauro_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(sauro_colorram2_w) AM_SHARE("colorram2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sauro_state::sauro_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW2") - AM_RANGE(0x40, 0x40) AM_READ_PORT("P1") - AM_RANGE(0x60, 0x60) AM_READ_PORT("P2") - AM_RANGE(0x80, 0x80) AM_WRITE(sauro_sound_command_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(scroll_bg_w) - AM_RANGE(0xa1, 0xa1) AM_WRITE(sauro_scroll_fg_w) - AM_RANGE(0xc0, 0xcf) AM_DEVWRITE("mainlatch", ls259_device, write_a0) - AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sauro_state::sauro_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xa000, 0xa000) AM_WRITE(adpcm_w) - AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r) - AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */ - AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sauro_state::saurob_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xa000, 0xa000) AM_WRITENOP - AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r) - AM_RANGE(0xe000, 0xe006) AM_WRITENOP /* echo from write to e0000 */ - AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sauro_state::trckydoc_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1") - AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2") - AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1") - AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2") - AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xf828, 0xf828) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xf830, 0xf830) AM_WRITE(scroll_bg_w) - AM_RANGE(0xf838, 0xf83f) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void sauro_state::sauro_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xe800, 0xebff).ram().share("spriteram"); + map(0xf000, 0xf3ff).ram().w(this, FUNC(sauro_state::videoram_w)).share("videoram"); + map(0xf400, 0xf7ff).ram().w(this, FUNC(sauro_state::colorram_w)).share("colorram"); + map(0xf800, 0xfbff).ram().w(this, FUNC(sauro_state::sauro_videoram2_w)).share("videoram2"); + map(0xfc00, 0xffff).ram().w(this, FUNC(sauro_state::sauro_colorram2_w)).share("colorram2"); +} + +void sauro_state::sauro_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1"); + map(0x20, 0x20).portr("DSW2"); + map(0x40, 0x40).portr("P1"); + map(0x60, 0x60).portr("P2"); + map(0x80, 0x80).w(this, FUNC(sauro_state::sauro_sound_command_w)); + map(0xa0, 0xa0).w(this, FUNC(sauro_state::scroll_bg_w)); + map(0xa1, 0xa1).w(this, FUNC(sauro_state::sauro_scroll_fg_w)); + map(0xc0, 0xcf).w("mainlatch", FUNC(ls259_device::write_a0)); + map(0xe0, 0xe0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} + +void sauro_state::sauro_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xc001).w("ymsnd", FUNC(ym3812_device::write)); + map(0xa000, 0xa000).w(this, FUNC(sauro_state::adpcm_w)); + map(0xe000, 0xe000).r(this, FUNC(sauro_state::sauro_sound_command_r)); + map(0xe000, 0xe006).nopw(); /* echo from write to e0000 */ + map(0xe00e, 0xe00f).nopw(); +} + + +void sauro_state::saurob_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xc000, 0xc001).w("ymsnd", FUNC(ym3812_device::write)); + map(0xa000, 0xa000).nopw(); + map(0xe000, 0xe000).r(this, FUNC(sauro_state::sauro_sound_command_r)); + map(0xe000, 0xe006).nopw(); /* echo from write to e0000 */ + map(0xe00e, 0xe00f).nopw(); +} + + +void sauro_state::trckydoc_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().share("nvram"); + map(0xe800, 0xebff).ram().mirror(0x400).share("spriteram"); + map(0xf000, 0xf3ff).ram().w(this, FUNC(sauro_state::videoram_w)).share("videoram"); + map(0xf400, 0xf7ff).ram().w(this, FUNC(sauro_state::colorram_w)).share("colorram"); + map(0xf800, 0xf800).portr("DSW1"); + map(0xf808, 0xf808).portr("DSW2"); + map(0xf810, 0xf810).portr("P1"); + map(0xf818, 0xf818).portr("P2"); + map(0xf820, 0xf821).w("ymsnd", FUNC(ym3812_device::write)); + map(0xf828, 0xf828).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xf830, 0xf830).w(this, FUNC(sauro_state::scroll_bg_w)); + map(0xf838, 0xf83f).w("mainlatch", FUNC(ls259_device::write_d0)); +} /* verified from Z80 code */ diff --git a/src/mame/drivers/savia84.cpp b/src/mame/drivers/savia84.cpp index 0e8b20cad4c..5635086aea2 100644 --- a/src/mame/drivers/savia84.cpp +++ b/src/mame/drivers/savia84.cpp @@ -61,18 +61,20 @@ private: required_device<i8255_device> m_ppi8255; }; -ADDRESS_MAP_START(savia84_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x7fff) // A15 not connected at the CPU - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x1800, 0x1fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(savia84_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // ports F8-FB -ADDRESS_MAP_END +void savia84_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x7fff); // A15 not connected at the CPU + map(0x0000, 0x07ff).rom(); + map(0x1800, 0x1fff).ram(); +} + +void savia84_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x07); + map(0x00, 0x03).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); // ports F8-FB +} /* Input ports */ static INPUT_PORTS_START( savia84 ) diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp index 51c6eb62029..6414f74ac33 100644 --- a/src/mame/drivers/savquest.cpp +++ b/src/mame/drivers/savquest.cpp @@ -736,40 +736,42 @@ WRITE8_MEMBER(savquest_state::smram_w) } -ADDRESS_MAP_START(savquest_state::savquest_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_READWRITE8(smram_r,smram_w,0xffffffff) //AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM AM_REGION("video_bios", 0) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_f0000") AM_WRITE(bios_f0000_ram_w) - AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_e0000") AM_WRITE(bios_e0000_ram_w) - AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_e4000") AM_WRITE(bios_e4000_ram_w) - AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_e8000") AM_WRITE(bios_e8000_ram_w) - AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ec000") AM_WRITE(bios_ec000_ram_w) - AM_RANGE(0x00100000, 0x07ffffff) AM_RAM // 128MB RAM - AM_RANGE(0xe0000000, 0xe0fbffff) AM_DEVREADWRITE("voodoo", voodoo_device, voodoo_r, voodoo_w) - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(savquest_state::savquest_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("rtc", ds12885_device, read, write, 0xffffffff) - - AM_RANGE(0x00e8, 0x00ef) AM_NOP - - AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0) - AM_RANGE(0x0378, 0x037b) AM_READWRITE8(parallel_port_r, parallel_port_w, 0xffffffff) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1) - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1) - - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) +void savquest_state::savquest_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw(this, FUNC(savquest_state::smram_r), FUNC(savquest_state::smram_w)); //AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) + map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0); + map(0x000f0000, 0x000fffff).bankr("bios_f0000").w(this, FUNC(savquest_state::bios_f0000_ram_w)); + map(0x000e0000, 0x000e3fff).bankr("bios_e0000").w(this, FUNC(savquest_state::bios_e0000_ram_w)); + map(0x000e4000, 0x000e7fff).bankr("bios_e4000").w(this, FUNC(savquest_state::bios_e4000_ram_w)); + map(0x000e8000, 0x000ebfff).bankr("bios_e8000").w(this, FUNC(savquest_state::bios_e8000_ram_w)); + map(0x000ec000, 0x000effff).bankr("bios_ec000").w(this, FUNC(savquest_state::bios_ec000_ram_w)); + map(0x00100000, 0x07ffffff).ram(); // 128MB RAM + map(0xe0000000, 0xe0fbffff).rw(m_voodoo, FUNC(voodoo_device::voodoo_r), FUNC(voodoo_device::voodoo_w)); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void savquest_state::savquest_io(address_map &map) +{ + pcat32_io_common(map); + map(0x0070, 0x007f).rw(m_mc146818, FUNC(ds12885_device::read), FUNC(ds12885_device::write)); + + map(0x00e8, 0x00ef).noprw(); + + map(0x0170, 0x0177).rw("ide2", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_32_device::read_cs0), FUNC(ide_controller_32_device::write_cs0)); + map(0x0378, 0x037b).rw(this, FUNC(savquest_state::parallel_port_r), FUNC(savquest_state::parallel_port_w)); + map(0x03b0, 0x03bf).rw(m_vga, FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw(m_vga, FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw(m_vga, FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x0370, 0x0377).rw("ide2", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_32_device::read_cs1), FUNC(ide_controller_32_device::write_cs1)); + + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); // AM_RANGE(0x5000, 0x5007) // routes to port $eb -ADDRESS_MAP_END +} #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1) diff --git a/src/mame/drivers/sbasketb.cpp b/src/mame/drivers/sbasketb.cpp index 384904a9d01..093cb702865 100644 --- a/src/mame/drivers/sbasketb.cpp +++ b/src/mame/drivers/sbasketb.cpp @@ -79,39 +79,41 @@ WRITE_LINE_MEMBER(sbasketb_state::irq_mask_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(sbasketb_state::sbasketb_map) - AM_RANGE(0x2000, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(sbasketb_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(sbasketb_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x39ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3a00, 0x3bff) AM_RAM /* Probably unused, but initialized */ - AM_RANGE(0x3c00, 0x3c00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3c10, 0x3c10) AM_READNOP /* ???? */ - AM_RANGE(0x3c20, 0x3c20) AM_WRITEONLY AM_SHARE("palettebank") - AM_RANGE(0x3c80, 0x3c87) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x3d00, 0x3d00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w) - AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3e01, 0x3e01) AM_READ_PORT("P1") - AM_RANGE(0x3e02, 0x3e02) AM_READ_PORT("P2") - AM_RANGE(0x3e03, 0x3e03) AM_READNOP - AM_RANGE(0x3e80, 0x3e80) AM_READ_PORT("DSW2") - AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("DSW1") - AM_RANGE(0x3f80, 0x3f80) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbasketb_state::sbasketb_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */ - AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, hyperspt_sound_w) /* speech and output control */ - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe001, 0xe001) AM_WRITE(konami_SN76496_latch_w) /* Loads the snd command into the snd latch */ - AM_RANGE(0xe002, 0xe002) AM_WRITE(konami_SN76496_w) /* This address triggers the SN chip to read the data port. */ -ADDRESS_MAP_END +void sbasketb_state::sbasketb_map(address_map &map) +{ + map(0x2000, 0x2fff).ram(); + map(0x3000, 0x33ff).ram().w(this, FUNC(sbasketb_state::sbasketb_colorram_w)).share("colorram"); + map(0x3400, 0x37ff).ram().w(this, FUNC(sbasketb_state::sbasketb_videoram_w)).share("videoram"); + map(0x3800, 0x39ff).ram().share("spriteram"); + map(0x3a00, 0x3bff).ram(); /* Probably unused, but initialized */ + map(0x3c00, 0x3c00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3c10, 0x3c10).nopr(); /* ???? */ + map(0x3c20, 0x3c20).writeonly().share("palettebank"); + map(0x3c80, 0x3c87).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x3d00, 0x3d00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3d80, 0x3d80).w(this, FUNC(sbasketb_state::sbasketb_sh_irqtrigger_w)); + map(0x3e00, 0x3e00).portr("SYSTEM"); + map(0x3e01, 0x3e01).portr("P1"); + map(0x3e02, 0x3e02).portr("P2"); + map(0x3e03, 0x3e03).nopr(); + map(0x3e80, 0x3e80).portr("DSW2"); + map(0x3f00, 0x3f00).portr("DSW1"); + map(0x3f80, 0x3f80).writeonly().share("scroll"); + map(0x6000, 0xffff).rom(); +} + +void sbasketb_state::sbasketb_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8000).r("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sh_timer_r)); + map(0xa000, 0xa000).w(m_vlm, FUNC(vlm5030_device::data_w)); /* speech data */ + map(0xc000, 0xdfff).w("trackfld_audio", FUNC(trackfld_audio_device::hyperspt_sound_w)); /* speech and output control */ + map(0xe000, 0xe000).w("dac", FUNC(dac_byte_interface::write)); + map(0xe001, 0xe001).w(this, FUNC(sbasketb_state::konami_SN76496_latch_w)); /* Loads the snd command into the snd latch */ + map(0xe002, 0xe002).w(this, FUNC(sbasketb_state::konami_SN76496_w)); /* This address triggers the SN chip to read the data port. */ +} static INPUT_PORTS_START( sbasketb ) diff --git a/src/mame/drivers/sbc6510.cpp b/src/mame/drivers/sbc6510.cpp index cb289ea97c7..178b6d3429f 100644 --- a/src/mame/drivers/sbc6510.cpp +++ b/src/mame/drivers/sbc6510.cpp @@ -94,27 +94,31 @@ private: }; -ADDRESS_MAP_START(sbc6510_state::sbc6510_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0001) AM_RAM - AM_RANGE(0x0002, 0x0002) AM_READWRITE(a2_r,a2_w) - AM_RANGE(0x0003, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe00f) AM_MIRROR(0x1f0) AM_DEVREADWRITE("cia6526", mos6526_device, read, write) - AM_RANGE(0xe800, 0xe800) AM_MIRROR(0x1ff) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xea00, 0xea00) AM_MIRROR(0x1ff) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbc6510_state::sbc6510_video_mem) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbc6510_state::sbc6510_video_data) - AM_RANGE(0x0100, 0x04ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbc6510_state::sbc6510_video_io) -ADDRESS_MAP_END +void sbc6510_state::sbc6510_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0001).ram(); + map(0x0002, 0x0002).rw(this, FUNC(sbc6510_state::a2_r), FUNC(sbc6510_state::a2_w)); + map(0x0003, 0xdfff).ram(); + map(0xe000, 0xe00f).mirror(0x1f0).rw("cia6526", FUNC(mos6526_device::read), FUNC(mos6526_device::write)); + map(0xe800, 0xe800).mirror(0x1ff).w("ay8910", FUNC(ay8910_device::address_w)); + map(0xea00, 0xea00).mirror(0x1ff).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0xf000, 0xffff).rom(); +} + +void sbc6510_state::sbc6510_video_mem(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} + +void sbc6510_state::sbc6510_video_data(address_map &map) +{ + map(0x0100, 0x04ff).ram(); +} + +void sbc6510_state::sbc6510_video_io(address_map &map) +{ +} /* Input ports */ static INPUT_PORTS_START( sbc6510 ) // cbm keyboard diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp index 08222af30d2..1fa1e23283d 100644 --- a/src/mame/drivers/sbowling.cpp +++ b/src/mame/drivers/sbowling.cpp @@ -247,23 +247,25 @@ READ8_MEMBER(sbowling_state::controls_r) return ioport("TRACKX")->read(); } -ADDRESS_MAP_START(sbowling_state::main_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xf801, 0xf801) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sbowling_state::port_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(controls_r, pix_data_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(pix_data_r, pix_shift_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW0") AM_WRITE(system_w) - AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW1") AM_WRITE(graph_control_w) -ADDRESS_MAP_END +void sbowling_state::main_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x8000, 0xbfff).ram().w(this, FUNC(sbowling_state::videoram_w)).share("videoram"); + map(0xf800, 0xf801).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xf801, 0xf801).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xfc00, 0xffff).ram(); +} + + +void sbowling_state::port_map(address_map &map) +{ + map(0x00, 0x00).portr("IN0").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x01, 0x01).rw(this, FUNC(sbowling_state::controls_r), FUNC(sbowling_state::pix_data_w)); + map(0x02, 0x02).rw(this, FUNC(sbowling_state::pix_data_r), FUNC(sbowling_state::pix_shift_w)); + map(0x03, 0x03).portr("IN1").nopw(); + map(0x04, 0x04).portr("DSW0").w(this, FUNC(sbowling_state::system_w)); + map(0x05, 0x05).portr("DSW1").w(this, FUNC(sbowling_state::graph_control_w)); +} diff --git a/src/mame/drivers/sbrain.cpp b/src/mame/drivers/sbrain.cpp index 1fefb4466d7..75eef4bc7b2 100644 --- a/src/mame/drivers/sbrain.cpp +++ b/src/mame/drivers/sbrain.cpp @@ -123,36 +123,40 @@ private: required_ioport_array<10> m_keyboard; }; -ADDRESS_MAP_START(sbrain_state::sbrain_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE( 0x4000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xbfff ) AM_RAMBANK("bank2") - AM_RANGE( 0xc000, 0xf7ff ) AM_RAM - AM_RANGE( 0xf800, 0xffff ) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbrain_state::sbrain_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_MIRROR(6) AM_DEVREADWRITE("uart0", i8251_device, data_r, data_w) - AM_RANGE(0x41, 0x41) AM_MIRROR(6) AM_DEVREADWRITE("uart0", i8251_device, status_r, control_w) - AM_RANGE(0x48, 0x4f) AM_READ(port48_r) //chr_int_latch - AM_RANGE(0x50, 0x57) AM_READ(port50_r) - AM_RANGE(0x58, 0x58) AM_MIRROR(6) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x59, 0x59) AM_MIRROR(6) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0x60, 0x67) AM_WRITE(baud_w) - AM_RANGE(0x68, 0x6b) AM_MIRROR(4) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbrain_state::sbrain_submem) - AM_RANGE( 0x0000, 0x07ff ) AM_ROM - AM_RANGE( 0x8800, 0x8bff ) AM_RAM AM_REGION("subcpu", 0x8800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbrain_state::sbrain_subio) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("fdc", fd1791_device, read, write) - AM_RANGE(0x10, 0x10) AM_READWRITE(port10_r,port10_w) -ADDRESS_MAP_END +void sbrain_state::sbrain_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0"); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0xbfff).bankrw("bank2"); + map(0xc000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("videoram"); +} + +void sbrain_state::sbrain_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).mirror(6).rw(m_u0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x41, 0x41).mirror(6).rw(m_u0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x48, 0x4f).r(this, FUNC(sbrain_state::port48_r)); //chr_int_latch + map(0x50, 0x57).r(this, FUNC(sbrain_state::port50_r)); + map(0x58, 0x58).mirror(6).rw(m_u1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x59, 0x59).mirror(6).rw(m_u1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x60, 0x67).w(this, FUNC(sbrain_state::baud_w)); + map(0x68, 0x6b).mirror(4).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void sbrain_state::sbrain_submem(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x8800, 0x8bff).ram().region("subcpu", 0x8800); +} + +void sbrain_state::sbrain_subio(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x0b).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write)); + map(0x10, 0x10).rw(this, FUNC(sbrain_state::port10_r), FUNC(sbrain_state::port10_w)); +} READ8_MEMBER( sbrain_state::port48_r ) diff --git a/src/mame/drivers/sbrkout.cpp b/src/mame/drivers/sbrkout.cpp index 17d265220f6..6deb92b69ad 100644 --- a/src/mame/drivers/sbrkout.cpp +++ b/src/mame/drivers/sbrkout.cpp @@ -418,21 +418,22 @@ uint32_t sbrkout_state::screen_update_sbrkout(screen_device &screen, bitmap_ind1 *************************************/ /* full memory map derived from schematics */ -ADDRESS_MAP_START(sbrkout_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x380) AM_RAMBANK("bank1") - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0800, 0x083f) AM_READ(switches_r) - AM_RANGE(0x0840, 0x0840) AM_MIRROR(0x003f) AM_READ_PORT("COIN") - AM_RANGE(0x0880, 0x0880) AM_MIRROR(0x003f) AM_READ_PORT("START") - AM_RANGE(0x08c0, 0x08c0) AM_MIRROR(0x003f) AM_READ_PORT("SERVICE") - AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_READ(sync_r) - AM_RANGE(0x0c00, 0x0c7f) AM_WRITE(output_latch_w) - AM_RANGE(0x0c80, 0x0c80) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0e00, 0x0e00) AM_MIRROR(0x007f) AM_WRITE(irq_ack_w) - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03ff) AM_READ(sync2_r) - AM_RANGE(0x2800, 0x3fff) AM_ROM -ADDRESS_MAP_END +void sbrkout_state::main_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x007f).mirror(0x380).bankrw("bank1"); + map(0x0400, 0x07ff).ram().w(this, FUNC(sbrkout_state::sbrkout_videoram_w)).share("videoram"); + map(0x0800, 0x083f).r(this, FUNC(sbrkout_state::switches_r)); + map(0x0840, 0x0840).mirror(0x003f).portr("COIN"); + map(0x0880, 0x0880).mirror(0x003f).portr("START"); + map(0x08c0, 0x08c0).mirror(0x003f).portr("SERVICE"); + map(0x0c00, 0x0c00).mirror(0x03ff).r(this, FUNC(sbrkout_state::sync_r)); + map(0x0c00, 0x0c7f).w(this, FUNC(sbrkout_state::output_latch_w)); + map(0x0c80, 0x0c80).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0e00, 0x0e00).mirror(0x007f).w(this, FUNC(sbrkout_state::irq_ack_w)); + map(0x1000, 0x1000).mirror(0x03ff).r(this, FUNC(sbrkout_state::sync2_r)); + map(0x2800, 0x3fff).rom(); +} /************************************* diff --git a/src/mame/drivers/sbugger.cpp b/src/mame/drivers/sbugger.cpp index 00f92ab6aa9..96e34727edc 100644 --- a/src/mame/drivers/sbugger.cpp +++ b/src/mame/drivers/sbugger.cpp @@ -111,19 +111,21 @@ Sound PCB /* memory maps */ -ADDRESS_MAP_START(sbugger_state::sbugger_map) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(videoram_attr_w) AM_SHARE("videoram_attr") - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("i8156", i8155_device, memory_r, memory_w) /* sp is set to e0ff */ - AM_RANGE(0xf400, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sbugger_state::sbugger_io_map) - AM_RANGE(0xe0, 0xe7) AM_DEVREADWRITE("i8156", i8155_device, io_r, io_w) - AM_RANGE(0xe8, 0xe8) AM_DEVWRITE("sn76489.1", sn76489_device, write) - AM_RANGE(0xe9, 0xe9) AM_DEVWRITE("sn76489.2", sn76489_device, write) -ADDRESS_MAP_END +void sbugger_state::sbugger_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0xc800, 0xcbff).ram().w(this, FUNC(sbugger_state::videoram_attr_w)).share("videoram_attr"); + map(0xcc00, 0xcfff).ram().w(this, FUNC(sbugger_state::videoram_w)).share("videoram"); + map(0xe000, 0xe0ff).rw("i8156", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); /* sp is set to e0ff */ + map(0xf400, 0xffff).ram(); +} + +void sbugger_state::sbugger_io_map(address_map &map) +{ + map(0xe0, 0xe7).rw("i8156", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0xe8, 0xe8).w("sn76489.1", FUNC(sn76489_device::write)); + map(0xe9, 0xe9).w("sn76489.2", FUNC(sn76489_device::write)); +} /* gfx decode */ diff --git a/src/mame/drivers/sc1.cpp b/src/mame/drivers/sc1.cpp index 02272745947..edf6d7dc7c8 100644 --- a/src/mame/drivers/sc1.cpp +++ b/src/mame/drivers/sc1.cpp @@ -124,18 +124,20 @@ READ8_MEMBER( sc1_state::pio_port_b_r ) } -ADDRESS_MAP_START(sc1_state::sc1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_ROM - AM_RANGE( 0x4000, 0x43ff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sc1_state::sc1_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0xfc, 0xfc) AM_WRITE(matrix_w) -ADDRESS_MAP_END +void sc1_state::sc1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x43ff).ram(); +} + +void sc1_state::sc1_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).rw("z80pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0xfc, 0xfc).w(this, FUNC(sc1_state::matrix_w)); +} /* Input ports */ static INPUT_PORTS_START( sc1 ) diff --git a/src/mame/drivers/sc2.cpp b/src/mame/drivers/sc2.cpp index fb452c6f635..1260e0d0b48 100644 --- a/src/mame/drivers/sc2.cpp +++ b/src/mame/drivers/sc2.cpp @@ -60,19 +60,21 @@ READ8_MEMBER( sc2_state::sc2_beep ) return 0xff; } -ADDRESS_MAP_START(sc2_state::sc2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0fff ) AM_ROM - AM_RANGE( 0x1000, 0x13ff ) AM_RAM - AM_RANGE( 0x2000, 0x33ff ) AM_ROM - AM_RANGE( 0x3c00, 0x3c00 ) AM_READ(sc2_beep) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sc2_state::sc2_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0xfc) AM_DEVREADWRITE("z80pio", z80pio_device, read, write) -ADDRESS_MAP_END +void sc2_state::sc2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram(); + map(0x2000, 0x33ff).rom(); + map(0x3c00, 0x3c00).r(this, FUNC(sc2_state::sc2_beep)); +} + +void sc2_state::sc2_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0xfc).rw("z80pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input ports */ static INPUT_PORTS_START( sc2 ) diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp index cc44dc18617..70e7150c328 100644 --- a/src/mame/drivers/scobra.cpp +++ b/src/mame/drivers/scobra.cpp @@ -138,182 +138,190 @@ READ8_MEMBER(scobra_state::hustler_ppi8255_1_r){ return m_ppi8255_1->read(space, WRITE8_MEMBER(scobra_state::hustler_ppi8255_0_w){ m_ppi8255_0->write(space, offset >> 3, data); } WRITE8_MEMBER(scobra_state::hustler_ppi8255_1_w){ m_ppi8255_1->write(space, offset >> 3, data); } -ADDRESS_MAP_START(scobra_state::type1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400) - AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9080, 0x90ff) AM_RAM - AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xa802, 0xa802) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xa804, 0xa804) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::type2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x8880, 0x88ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400) - AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xa000, 0xa00f) AM_READWRITE(scobra_type2_ppi8255_0_r, scobra_type2_ppi8255_0_w) - AM_RANGE(0xa800, 0xa80f) AM_READWRITE(scobra_type2_ppi8255_1_r, scobra_type2_ppi8255_1_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0xb008, 0xb008) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0xb00c, 0xb00c) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb00e, 0xb00e) AM_WRITE(galaxold_flip_screen_x_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::tazmani3_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x883f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x8840, 0x885f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x8860, 0x887f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x8880, 0x88ff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400) - AM_RANGE(0x9800, 0x9800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0xb008, 0xb008) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0xb00c, 0xb00c) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb00e, 0xb00e) AM_WRITE(galaxold_flip_screen_x_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::hustler_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9080, 0x90ff) AM_RAM - AM_RANGE(0xa802, 0xa802) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xa804, 0xa804) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xa80e, 0xa80e) AM_WRITENOP /* coin counters */ - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xd000, 0xd01f) AM_READWRITE(hustler_ppi8255_0_r, hustler_ppi8255_0_w) - AM_RANGE(0xe000, 0xe01f) AM_READWRITE(hustler_ppi8255_1_r, hustler_ppi8255_1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::hustlerb_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9080, 0x90ff) AM_RAM - AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xa802, 0xa802) AM_WRITENOP /* coin counters */ - AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xc100, 0xc103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xc200, 0xc203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scobra_state::mimonkey_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") AM_MIRROR(0x0400) - AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9080, 0x90ff) AM_RAM - AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xa800, 0xa802) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void scobra_state::type1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400); + map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9040, 0x905f).ram().share("spriteram"); + map(0x9060, 0x907f).ram().share("bulletsram"); + map(0x9080, 0x90ff).ram(); + map(0x9800, 0x9803).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa000, 0xa003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa801, 0xa801).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xa802, 0xa802).w(this, FUNC(scobra_state::galaxold_coin_counter_w)); + map(0xa804, 0xa804).w(this, FUNC(scobra_state::galaxold_stars_enable_w)); + map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); + map(0xa807, 0xa807).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); + map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void scobra_state::type2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x883f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x8840, 0x885f).ram().share("spriteram"); + map(0x8860, 0x887f).ram().share("bulletsram"); + map(0x8880, 0x88ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400); + map(0x9800, 0x9800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xa000, 0xa00f).rw(this, FUNC(scobra_state::scobra_type2_ppi8255_0_r), FUNC(scobra_state::scobra_type2_ppi8255_0_w)); + map(0xa800, 0xa80f).rw(this, FUNC(scobra_state::scobra_type2_ppi8255_1_r), FUNC(scobra_state::scobra_type2_ppi8255_1_w)); + map(0xb000, 0xb000).w(this, FUNC(scobra_state::galaxold_stars_enable_w)); + map(0xb004, 0xb004).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(scobra_state::galaxold_coin_counter_0_w)); + map(0xb008, 0xb008).w(this, FUNC(scobra_state::galaxold_coin_counter_1_w)); + map(0xb00c, 0xb00c).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); + map(0xb00e, 0xb00e).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); +} + +void scobra_state::tazmani3_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x883f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x8840, 0x885f).ram().share("spriteram"); + map(0x8860, 0x887f).ram().share("bulletsram"); + map(0x8880, 0x88ff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400); + map(0x9800, 0x9800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xa000, 0xa003).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa800, 0xa803).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb000, 0xb000).w(this, FUNC(scobra_state::galaxold_stars_enable_w)); + map(0xb001, 0xb001).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xb006, 0xb006).w(this, FUNC(scobra_state::galaxold_coin_counter_0_w)); + map(0xb008, 0xb008).w(this, FUNC(scobra_state::galaxold_coin_counter_1_w)); + map(0xb00c, 0xb00c).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); + map(0xb00e, 0xb00e).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); +} + +void scobra_state::hustler_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram"); + map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9040, 0x905f).ram().share("spriteram"); + map(0x9060, 0x907f).ram().share("bulletsram"); + map(0x9080, 0x90ff).ram(); + map(0xa802, 0xa802).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); + map(0xa804, 0xa804).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); + map(0xa80e, 0xa80e).nopw(); /* coin counters */ + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xd000, 0xd01f).rw(this, FUNC(scobra_state::hustler_ppi8255_0_r), FUNC(scobra_state::hustler_ppi8255_0_w)); + map(0xe000, 0xe01f).rw(this, FUNC(scobra_state::hustler_ppi8255_1_r), FUNC(scobra_state::hustler_ppi8255_1_w)); +} + +void scobra_state::hustlerb_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram"); + map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9040, 0x905f).ram().share("spriteram"); + map(0x9060, 0x907f).ram().share("bulletsram"); + map(0x9080, 0x90ff).ram(); + map(0xa801, 0xa801).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xa802, 0xa802).nopw(); /* coin counters */ + map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); + map(0xa807, 0xa807).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); + map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc100, 0xc103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc200, 0xc203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + + +void scobra_state::mimonkey_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram").mirror(0x0400); + map(0x9000, 0x903f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9040, 0x905f).ram().share("spriteram"); + map(0x9060, 0x907f).ram().share("bulletsram"); + map(0x9080, 0x90ff).ram(); + map(0x9800, 0x9803).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa000, 0xa003).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa800, 0xa802).w(this, FUNC(scobra_state::galaxold_gfxbank_w)); + map(0xa801, 0xa801).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xa806, 0xa806).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); + map(0xa807, 0xa807).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); + map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xc000, 0xffff).rom(); +} // weird address map like anteateruk in galaxian.c (also a free enterprise set) -ADDRESS_MAP_START(scobra_state::rescuefe_map) - AM_RANGE(0x0000, 0x05ff) AM_ROM - AM_RANGE(0x0600, 0x0fff) AM_RAM // sets stack here - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1400, 0x143f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x1440, 0x145f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1460, 0x147f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x1480, 0x14ff) AM_RAM +void scobra_state::rescuefe_map(address_map &map) +{ + map(0x0000, 0x05ff).rom(); + map(0x0600, 0x0fff).ram(); // sets stack here + map(0x1000, 0x13ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram"); + map(0x1400, 0x143f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); + map(0x1440, 0x145f).ram().share("spriteram"); + map(0x1460, 0x147f).ram().share("bulletsram"); + map(0x1480, 0x14ff).ram(); - AM_RANGE(0x4400, 0x5dff) AM_ROM - AM_RANGE(0x5e00, 0x6bff) AM_ROM // some right? + map(0x4400, 0x5dff).rom(); + map(0x5e00, 0x6bff).rom(); // some right? - AM_RANGE(0x8200, 0x93ff) AM_ROM // wrong? (maybe some correct?) + map(0x8200, 0x93ff).rom(); // wrong? (maybe some correct?) - AM_RANGE(0xa600, 0xa6ff) AM_ROM // wrong (taunt string) jumps to around a600 so something must map in this area? + map(0xa600, 0xa6ff).rom(); // wrong (taunt string) jumps to around a600 so something must map in this area? - AM_RANGE(0xEA01, 0xEA01) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xEA93, 0xEA93) AM_WRITE(scrambold_background_enable_w) - AM_RANGE(0xEA86, 0xEA86) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xEA87, 0xEA87) AM_WRITE(galaxold_flip_screen_y_w) + map(0xEA01, 0xEA01).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); + map(0xEA93, 0xEA93).w(this, FUNC(scobra_state::scrambold_background_enable_w)); + map(0xEA86, 0xEA86).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); + map(0xEA87, 0xEA87).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); // does it have a real ppi8255? - AM_RANGE(0xC190, 0xC193) AM_DEVREAD("ppi8255_0", i8255_device, read) // ? - AM_RANGE(0xC160, 0xC163) AM_DEVREAD("ppi8255_0", i8255_device, read) // ? + map(0xC190, 0xC193).r(m_ppi8255_0, FUNC(i8255_device::read)); // ? + map(0xC160, 0xC163).r(m_ppi8255_0, FUNC(i8255_device::read)); // ? - AM_RANGE(0xC4Ac, 0xC4AF) AM_DEVREAD("ppi8255_1", i8255_device, read) // ? + map(0xC4Ac, 0xC4AF).r(m_ppi8255_1, FUNC(i8255_device::read)); // ? - AM_RANGE(0xc180, 0xc183) AM_DEVWRITE("ppi8255_0", i8255_device, write) // correct based on main set? - AM_RANGE(0xc220, 0xc223) AM_DEVWRITE("ppi8255_1", i8255_device, write) // ^ + map(0xc180, 0xc183).w(m_ppi8255_0, FUNC(i8255_device::write)); // correct based on main set? + map(0xc220, 0xc223).w(m_ppi8255_1, FUNC(i8255_device::write)); // ^ // addresses below are WRONG, just moved to keep things out the way while the rom mapping is figured out // AM_RANGE(0xf802, 0xf802) AM_WRITE(galaxold_coin_counter_w) // AM_RANGE(0xf000, 0xf000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(scobra_state::minefldfe_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM // ok - AM_RANGE(0x0c00, 0x0c3f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") // ok - AM_RANGE(0x0c40, 0x0c5f) AM_RAM AM_SHARE("spriteram") // ok - AM_RANGE(0x0c60, 0x0c7f) AM_RAM AM_SHARE("bulletsram") // ok - AM_RANGE(0x0c80, 0x17ff) AM_RAM +void scobra_state::minefldfe_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); // ok + map(0x0c00, 0x0c3f).ram().w(this, FUNC(scobra_state::galaxold_attributesram_w)).share("attributesram"); // ok + map(0x0c40, 0x0c5f).ram().share("spriteram"); // ok + map(0x0c60, 0x0c7f).ram().share("bulletsram"); // ok + map(0x0c80, 0x17ff).ram(); - AM_RANGE(0x2200, 0x3fff) AM_ROM // ok - AM_RANGE(0x5800, 0x6dff) AM_ROM - AM_RANGE(0x8a00, 0x91ff) AM_ROM + map(0x2200, 0x3fff).rom(); // ok + map(0x5800, 0x6dff).rom(); + map(0x8a00, 0x91ff).rom(); - AM_RANGE(0x4200, 0x45ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") // ok + map(0x4200, 0x45ff).ram().w(this, FUNC(scobra_state::galaxold_videoram_w)).share("videoram"); // ok - AM_RANGE(0x7621, 0x7621) AM_WRITE(galaxold_nmi_enable_w) // a801 - AM_RANGE(0x7673, 0x7673) AM_WRITE(scrambold_background_enable_w) // a083 - AM_RANGE(0x7704, 0x7704) AM_WRITE(galaxold_stars_enable_w) // a804 - AM_RANGE(0x7616, 0x7616) AM_WRITE(galaxold_flip_screen_x_w) // a806 - AM_RANGE(0x7617, 0x7617) AM_WRITE(galaxold_flip_screen_y_w) // a807 + map(0x7621, 0x7621).w(this, FUNC(scobra_state::galaxold_nmi_enable_w)); // a801 + map(0x7673, 0x7673).w(this, FUNC(scobra_state::scrambold_background_enable_w)); // a083 + map(0x7704, 0x7704).w(this, FUNC(scobra_state::galaxold_stars_enable_w)); // a804 + map(0x7616, 0x7616).w(this, FUNC(scobra_state::galaxold_flip_screen_x_w)); // a806 + map(0x7617, 0x7617).w(this, FUNC(scobra_state::galaxold_flip_screen_y_w)); // a807 - AM_RANGE(0x4C00, 0x4C03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x4B00, 0x4B03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) + map(0x4C00, 0x4C03).mirror(0x00fc).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x4B00, 0x4B03).mirror(0x00fc).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); - AM_RANGE(0x1D98, 0x1D98) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) // 0xb000 + map(0x1D98, 0x1D98).r("watchdog", FUNC(watchdog_timer_device::reset_r)); // 0xb000 // addresses below are WRONG, just moved to keep things out the way while the rom mapping is figured out - AM_RANGE(0xf802, 0xf802) AM_WRITE(galaxold_coin_counter_w) -ADDRESS_MAP_END + map(0xf802, 0xf802).w(this, FUNC(scobra_state::galaxold_coin_counter_w)); +} READ8_MEMBER(scobra_state::scobra_soundram_r) @@ -326,45 +334,51 @@ WRITE8_MEMBER(scobra_state::scobra_soundram_w) m_soundram[offset & 0x03ff] = data; } -ADDRESS_MAP_START(scobra_state::scobra_sound_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_READWRITE(scobra_soundram_r, scobra_soundram_w) AM_SHARE("soundram") - AM_RANGE(0x9000, 0x9fff) AM_WRITE(scramble_filter_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scobra_state::scobra_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::hustler_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6fff) AM_WRITE(frogger_filter_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::hustler_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scobra_state::hustlerb_sound_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_WRITE(frogger_filter_w) - AM_RANGE(0x8000, 0x8fff) AM_RAM_READ(scobra_soundram_r) AM_SHARE("soundram") /* only here to initialize pointer */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(scobra_state::hustlerb_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) -ADDRESS_MAP_END +void scobra_state::scobra_sound_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x8000, 0x8fff).rw(this, FUNC(scobra_state::scobra_soundram_r), FUNC(scobra_state::scobra_soundram_w)).share("soundram"); + map(0x9000, 0x9fff).w(this, FUNC(scobra_state::scramble_filter_w)); +} + + +void scobra_state::scobra_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w("ay1", FUNC(ay8910_device::address_w)); + map(0x20, 0x20).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x40, 0x40).w("ay2", FUNC(ay8910_device::address_w)); + map(0x80, 0x80).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} + +void scobra_state::hustler_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x6000, 0x6fff).w(this, FUNC(scobra_state::frogger_filter_w)); +} + +void scobra_state::hustler_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w)); +} + + +void scobra_state::hustlerb_sound_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x6000, 0x6fff).w(this, FUNC(scobra_state::frogger_filter_w)); + map(0x8000, 0x8fff).ram().r(this, FUNC(scobra_state::scobra_soundram_r)).share("soundram"); /* only here to initialize pointer */ +} + +void scobra_state::hustlerb_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x80, 0x80).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} /* stratgyx coinage DIPs are spread across two input ports */ diff --git a/src/mame/drivers/scopus.cpp b/src/mame/drivers/scopus.cpp index e14a9010f6e..395d45e99cf 100644 --- a/src/mame/drivers/scopus.cpp +++ b/src/mame/drivers/scopus.cpp @@ -117,21 +117,23 @@ void sagitta180_state::machine_reset() { } -ADDRESS_MAP_START(sagitta180_state::maincpu_map) - ADDRESS_MAP_GLOBAL_MASK(0xffff) - AM_RANGE(0x0000, 0x07ff) AM_ROM +void sagitta180_state::maincpu_map(address_map &map) +{ + map.global_mask(0xffff); + map(0x0000, 0x07ff).rom(); // AM_RANGE(0x0800, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0x1800, 0xffff).ram(); +} -ADDRESS_MAP_START(sagitta180_state::maincpu_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW") - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("crtc", i8275_device, read, write) - AM_RANGE(0x40, 0x48) AM_DEVREADWRITE("dma", i8257_device, read, write) -ADDRESS_MAP_END +void sagitta180_state::maincpu_io_map(address_map &map) +{ + map(0x00, 0x00).portr("DSW"); + map(0x20, 0x20).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x21, 0x21).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x30, 0x31).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0x40, 0x48).rw(m_dma8257, FUNC(i8257_device::read), FUNC(i8257_device::write)); +} static INPUT_PORTS_START( sagitta180 ) diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp index fe8b40070da..99399b1e196 100644 --- a/src/mame/drivers/scorpion.cpp +++ b/src/mame/drivers/scorpion.cpp @@ -176,32 +176,35 @@ READ8_MEMBER(scorpion_state::beta_disable_r) return m_program->read_byte(offset + 0x4000); } -ADDRESS_MAP_START(scorpion_state::scorpion_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") AM_WRITE(scorpion_0000_w) - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(scorpion_state::scorpion_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x001f, 0x001f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, status_r, command_w) AM_MIRROR(0xff00) - AM_RANGE(0x003f, 0x003f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, track_r, track_w) AM_MIRROR(0xff00) - AM_RANGE(0x005f, 0x005f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, sector_r, sector_w) AM_MIRROR(0xff00) - AM_RANGE(0x007f, 0x007f) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, data_r, data_w) AM_MIRROR(0xff00) - AM_RANGE(0x00fe, 0x00fe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xff00) - AM_RANGE(0x00ff, 0x00ff) AM_DEVREADWRITE(BETA_DISK_TAG, beta_disk_device, state_r, param_w) AM_MIRROR(0xff00) - AM_RANGE(0x4021, 0x4021) AM_WRITE(scorpion_port_7ffd_w) AM_MIRROR(0x3fdc) - AM_RANGE(0x8021, 0x8021) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3fdc) - AM_RANGE(0xc021, 0xc021) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3fdc) - AM_RANGE(0x0021, 0x0021) AM_WRITE(scorpion_port_1ffd_w) AM_MIRROR(0x3fdc) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scorpion_state::scorpion_switch) - AM_RANGE(0x0000, 0x3fff) AM_READ(beta_neutral_r) // Overlap with previous because we want real addresses on the 3e00-3fff range - AM_RANGE(0x3d00, 0x3dff) AM_READ(beta_enable_r) - AM_RANGE(0x4000, 0xffff) AM_READ(beta_disable_r) -ADDRESS_MAP_END +void scorpion_state::scorpion_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1").w(this, FUNC(scorpion_state::scorpion_0000_w)); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void scorpion_state::scorpion_io(address_map &map) +{ + map.unmap_value_high(); + map(0x001f, 0x001f).rw(m_beta, FUNC(beta_disk_device::status_r), FUNC(beta_disk_device::command_w)).mirror(0xff00); + map(0x003f, 0x003f).rw(m_beta, FUNC(beta_disk_device::track_r), FUNC(beta_disk_device::track_w)).mirror(0xff00); + map(0x005f, 0x005f).rw(m_beta, FUNC(beta_disk_device::sector_r), FUNC(beta_disk_device::sector_w)).mirror(0xff00); + map(0x007f, 0x007f).rw(m_beta, FUNC(beta_disk_device::data_r), FUNC(beta_disk_device::data_w)).mirror(0xff00); + map(0x00fe, 0x00fe).rw(this, FUNC(scorpion_state::spectrum_port_fe_r), FUNC(scorpion_state::spectrum_port_fe_w)).select(0xff00); + map(0x00ff, 0x00ff).rw(m_beta, FUNC(beta_disk_device::state_r), FUNC(beta_disk_device::param_w)).mirror(0xff00); + map(0x4021, 0x4021).w(this, FUNC(scorpion_state::scorpion_port_7ffd_w)).mirror(0x3fdc); + map(0x8021, 0x8021).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3fdc); + map(0xc021, 0xc021).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3fdc); + map(0x0021, 0x0021).w(this, FUNC(scorpion_state::scorpion_port_1ffd_w)).mirror(0x3fdc); +} + +void scorpion_state::scorpion_switch(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(scorpion_state::beta_neutral_r)); // Overlap with previous because we want real addresses on the 3e00-3fff range + map(0x3d00, 0x3dff).r(this, FUNC(scorpion_state::beta_enable_r)); + map(0x4000, 0xffff).r(this, FUNC(scorpion_state::beta_disable_r)); +} MACHINE_RESET_MEMBER(scorpion_state,scorpion) { diff --git a/src/mame/drivers/scotrsht.cpp b/src/mame/drivers/scotrsht.cpp index d56c8ab8bce..291e8fb83d5 100644 --- a/src/mame/drivers/scotrsht.cpp +++ b/src/mame/drivers/scotrsht.cpp @@ -64,40 +64,43 @@ WRITE8_MEMBER(scotrsht_state::soundlatch_w) m_audiocpu->set_input_line(0, HOLD_LINE); } -ADDRESS_MAP_START(scotrsht_state::scotrsht_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram") /* sprites */ - AM_RANGE(0x10c0, 0x1fff) AM_RAM /* work ram */ - AM_RANGE(0x2000, 0x201f) AM_RAM AM_SHARE("scroll") /* scroll registers */ - AM_RANGE(0x2040, 0x2040) AM_WRITENOP - AM_RANGE(0x2041, 0x2041) AM_WRITENOP - AM_RANGE(0x2042, 0x2042) AM_WRITENOP /* it should be -> bit 2 = scroll direction like in jailbrek, but it's not used */ - AM_RANGE(0x2043, 0x2043) AM_WRITE(charbank_w) - AM_RANGE(0x2044, 0x2044) AM_WRITE(ctrl_w) - AM_RANGE(0x3000, 0x3000) AM_WRITE(palettebank_w) - AM_RANGE(0x3100, 0x3100) AM_WRITE(soundlatch_w) - AM_RANGE(0x3200, 0x3200) AM_WRITENOP /* it writes 0, 1 */ - AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW2") - AM_RANGE(0x3200, 0x3200) AM_READ_PORT("DSW3") - AM_RANGE(0x3300, 0x3300) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3301, 0x3301) AM_READ_PORT("P1") - AM_RANGE(0x3302, 0x3302) AM_READ_PORT("P2") - AM_RANGE(0x3303, 0x3303) AM_READ_PORT("DSW1") - AM_RANGE(0x3300, 0x3300) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(scotrsht_state::scotrsht_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scotrsht_state::scotrsht_sound_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END +void scotrsht_state::scotrsht_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(this, FUNC(scotrsht_state::colorram_w)).share("colorram"); + map(0x0800, 0x0fff).ram().w(this, FUNC(scotrsht_state::videoram_w)).share("videoram"); + map(0x1000, 0x10bf).ram().share("spriteram"); /* sprites */ + map(0x10c0, 0x1fff).ram(); /* work ram */ + map(0x2000, 0x201f).ram().share("scroll"); /* scroll registers */ + map(0x2040, 0x2040).nopw(); + map(0x2041, 0x2041).nopw(); + map(0x2042, 0x2042).nopw(); /* it should be -> bit 2 = scroll direction like in jailbrek, but it's not used */ + map(0x2043, 0x2043).w(this, FUNC(scotrsht_state::charbank_w)); + map(0x2044, 0x2044).w(this, FUNC(scotrsht_state::ctrl_w)); + map(0x3000, 0x3000).w(this, FUNC(scotrsht_state::palettebank_w)); + map(0x3100, 0x3100).w(this, FUNC(scotrsht_state::soundlatch_w)); + map(0x3200, 0x3200).nopw(); /* it writes 0, 1 */ + map(0x3100, 0x3100).portr("DSW2"); + map(0x3200, 0x3200).portr("DSW3"); + map(0x3300, 0x3300).portr("SYSTEM"); + map(0x3301, 0x3301).portr("P1"); + map(0x3302, 0x3302).portr("P2"); + map(0x3303, 0x3303).portr("DSW1"); + map(0x3300, 0x3300).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x4000, 0xffff).rom(); +} + +void scotrsht_state::scotrsht_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void scotrsht_state::scotrsht_sound_port(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} static INPUT_PORTS_START( scotrsht ) diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index e6bc6278f8c..5a8c67f496a 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -40,26 +40,27 @@ Notes: #include "speaker.h" -ADDRESS_MAP_START(scramble_state::scramble_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror address */ - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7800, 0x7800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8100, 0x8103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x8110, 0x8113) AM_DEVREAD("ppi8255_0", i8255_device, read) /* mirror for Frog */ - AM_RANGE(0x8200, 0x8203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) -ADDRESS_MAP_END +void scramble_state::scramble_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */ + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_coin_counter_w)); + map(0x6804, 0x6804).w(this, FUNC(scramble_state::galaxold_stars_enable_w)); + map(0x6806, 0x6806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x6807, 0x6807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x8110, 0x8113).r(m_ppi8255_0, FUNC(i8255_device::read)); /* mirror for Frog */ + map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} READ8_MEMBER(scramble_state::scramble_soundram_r) { @@ -71,37 +72,40 @@ WRITE8_MEMBER(scramble_state::scramble_soundram_w) m_soundram[offset & 0x03ff] = data; } -ADDRESS_MAP_START(scramble_state::scramble_sound_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_READWRITE(scramble_soundram_r, scramble_soundram_w) AM_SHARE("soundram") - AM_RANGE(0x9000, 0x9fff) AM_WRITE(scramble_filter_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scramble_state::scramble_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("8910.1", ay8910_device, address_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("8910.1", ay8910_device, data_r, data_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("8910.2", ay8910_device, address_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8910.2", ay8910_device, data_r, data_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scramble_state::ckongs_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6bff) AM_RAM - AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x7800, 0x7803) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x987f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9880, 0x98ff) AM_RAM - AM_RANGE(0xa801, 0xa801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0xa802, 0xa802) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0xa806, 0xa806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0xa807, 0xa807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END +void scramble_state::scramble_sound_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x8000, 0x8fff).rw(this, FUNC(scramble_state::scramble_soundram_r), FUNC(scramble_state::scramble_soundram_w)).share("soundram"); + map(0x9000, 0x9fff).w(this, FUNC(scramble_state::scramble_filter_w)); +} + +void scramble_state::scramble_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w)); + map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x40, 0x40).w("8910.2", FUNC(ay8910_device::address_w)); + map(0x80, 0x80).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} + + +void scramble_state::ckongs_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6bff).ram(); + map(0x7000, 0x7003).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7800, 0x7803).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x9000, 0x93ff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x9800, 0x983f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x987f).ram().share("bulletsram"); + map(0x9880, 0x98ff).ram(); + map(0xa801, 0xa801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0xa802, 0xa802).w(this, FUNC(scramble_state::galaxold_coin_counter_w)); + map(0xa806, 0xa806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0xa807, 0xa807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} @@ -125,205 +129,215 @@ WRITE8_MEMBER(scramble_state::mars_ppi8255_1_w) m_ppi8255_1->write(space, ((offset >> 2) & 0x02) | ((offset >> 1) & 0x01), data); } -ADDRESS_MAP_START(scramble_state::mars_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6808, 0x6808) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0x6809, 0x6809) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x680b, 0x680b) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x7000, 0x7000) AM_READNOP - AM_RANGE(0x8100, 0x810f) AM_READWRITE(mars_ppi8255_0_r, mars_ppi8255_0_w) - AM_RANGE(0x8200, 0x820f) AM_READWRITE(mars_ppi8255_1_r, mars_ppi8255_1_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::newsin7_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_stars_enable_w) +void scramble_state::mars_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).r(this, FUNC(scramble_state::galaxold_videoram_r)); + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w)); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_stars_enable_w)); + map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x6808, 0x6808).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w)); + map(0x6809, 0x6809).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x680b, 0x680b).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x7000, 0x7000).nopr(); + map(0x8100, 0x810f).rw(this, FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w)); + map(0x8200, 0x820f).rw(this, FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w)); +} + + + +void scramble_state::newsin7_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).r(this, FUNC(scramble_state::galaxold_videoram_r)); + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w)); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_stars_enable_w)); //AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6808, 0x6808) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0x6809, 0x6809) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x680b, 0x680b) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8200, 0x820f) AM_READWRITE(mars_ppi8255_1_r, mars_ppi8255_1_w) - AM_RANGE(0xa000, 0xafff) AM_ROM - AM_RANGE(0xc100, 0xc10f) AM_READWRITE(mars_ppi8255_0_r, mars_ppi8255_0_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::mrkougar_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6808, 0x6808) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0x6809, 0x6809) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x680b, 0x680b) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8100, 0x810f) AM_READWRITE(mars_ppi8255_0_r, mars_ppi8255_0_w) - AM_RANGE(0x8200, 0x820f) AM_READWRITE(mars_ppi8255_1_r, mars_ppi8255_1_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::hotshock_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READ(galaxold_videoram_r) - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_WRITE(galaxold_coin_counter_2_w) - AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0x6004, 0x6004) AM_WRITE(hotshock_flip_screen_w) - AM_RANGE(0x6005, 0x6005) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0x6006, 0x6006) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3") - AM_RANGE(0x9000, 0x9000) AM_WRITE(hotshock_sh_irqtrigger_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::hunchbks_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1210, 0x1213) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x1400, 0x143f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x1440, 0x145f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1460, 0x147f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x1480, 0x14ff) AM_RAM - AM_RANGE(0x1500, 0x1503) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x1606, 0x1606) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x1607, 0x1607) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x1680, 0x1680) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x1780, 0x1780) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_READWRITE(hunchbks_mirror_r, hunchbks_mirror_w) - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x5000, 0x5fff) AM_READWRITE(hunchbks_mirror_r, hunchbks_mirror_w) - AM_RANGE(0x6000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7fff) AM_READWRITE(hunchbks_mirror_r, hunchbks_mirror_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::mimonscr_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror address?, probably not */ - AM_RANGE(0x4400, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x6800, 0x6802) AM_WRITE(galaxold_gfxbank_w) - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8100, 0x8103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x8200, 0x8203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::ad2083_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x6004, 0x6004) AM_WRITE(hotshock_flip_screen_w) - AM_RANGE(0x6800, 0x6800) AM_WRITE(galaxold_coin_counter_2_w) - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_0_w) - AM_RANGE(0x6803, 0x6803) AM_WRITE(scrambold_background_blue_w) - AM_RANGE(0x6805, 0x6805) AM_WRITE(galaxold_coin_counter_1_w) - AM_RANGE(0x6806, 0x6806) AM_WRITE(scrambold_background_red_w) - AM_RANGE(0x6807, 0x6807) AM_WRITE(scrambold_background_green_w) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x9000, 0x9000) AM_WRITE(hotshock_sh_irqtrigger_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3") - AM_RANGE(0xa000, 0xdfff) AM_ROM - AM_RANGE(0xe800, 0xebff) AM_RAM -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(scramble_state::triplep_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) /* mirror address */ - AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x5040, 0x505f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5060, 0x507f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x5080, 0x50ff) AM_RAM - AM_RANGE(0x5800, 0x67ff) AM_ROM - AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) - AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w) - AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w) - AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8100, 0x8103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scramble_state::triplep_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("8910.1", ay8910_device, data_address_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("8910.1", ay8910_device, data_r) - AM_RANGE(0x02, 0x02) AM_READ(triplep_pip_r) - AM_RANGE(0x03, 0x03) AM_READ(triplep_pap_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(scramble_state::hotshock_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("8910.1", ay8910_device, address_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("8910.1", ay8910_device, data_r, data_w) - AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("8910.2", ay8910_device, data_r, data_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("8910.2", ay8910_device, address_w) -ADDRESS_MAP_END + map(0x6808, 0x6808).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w)); + map(0x6809, 0x6809).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x680b, 0x680b).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8200, 0x820f).rw(this, FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w)); + map(0xa000, 0xafff).rom(); + map(0xc100, 0xc10f).rw(this, FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w)); +} + + + +void scramble_state::mrkougar_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w)); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x6808, 0x6808).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w)); + map(0x6809, 0x6809).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x680b, 0x680b).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8100, 0x810f).rw(this, FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w)); + map(0x8200, 0x820f).rw(this, FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w)); +} + + + +void scramble_state::hotshock_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).r(this, FUNC(scramble_state::galaxold_videoram_r)); + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6000, 0x6000).w(this, FUNC(scramble_state::galaxold_coin_counter_2_w)); + map(0x6002, 0x6002).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w)); + map(0x6004, 0x6004).w(this, FUNC(scramble_state::hotshock_flip_screen_w)); + map(0x6005, 0x6005).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w)); + map(0x6006, 0x6006).w(this, FUNC(scramble_state::galaxold_gfxbank_w)); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0x8000).portr("IN0").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x8001, 0x8001).portr("IN1"); + map(0x8002, 0x8002).portr("IN2"); + map(0x8003, 0x8003).portr("IN3"); + map(0x9000, 0x9000).w(this, FUNC(scramble_state::hotshock_sh_irqtrigger_w)); +} + + + +void scramble_state::hunchbks_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1210, 0x1213).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1400, 0x143f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x1440, 0x145f).ram().share("spriteram"); + map(0x1460, 0x147f).ram().share("bulletsram"); + map(0x1480, 0x14ff).ram(); + map(0x1500, 0x1503).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1606, 0x1606).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x1607, 0x1607).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x1680, 0x1680).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x1780, 0x1780).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x1800, 0x1bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x1c00, 0x1fff).ram(); + map(0x2000, 0x2fff).rom(); + map(0x3000, 0x3fff).rw(this, FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w)); + map(0x4000, 0x4fff).rom(); + map(0x5000, 0x5fff).rw(this, FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w)); + map(0x6000, 0x6fff).rom(); + map(0x7000, 0x7fff).rw(this, FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w)); +} + + + +void scramble_state::mimonscr_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address?, probably not */ + map(0x4400, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x6800, 0x6802).w(this, FUNC(scramble_state::galaxold_gfxbank_w)); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x6806, 0x6806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x6807, 0x6807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc000, 0xffff).rom(); +} + + + +void scramble_state::ad2083_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x6004, 0x6004).w(this, FUNC(scramble_state::hotshock_flip_screen_w)); + map(0x6800, 0x6800).w(this, FUNC(scramble_state::galaxold_coin_counter_2_w)); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_coin_counter_0_w)); + map(0x6803, 0x6803).w(this, FUNC(scramble_state::scrambold_background_blue_w)); + map(0x6805, 0x6805).w(this, FUNC(scramble_state::galaxold_coin_counter_1_w)); + map(0x6806, 0x6806).w(this, FUNC(scramble_state::scrambold_background_red_w)); + map(0x6807, 0x6807).w(this, FUNC(scramble_state::scrambold_background_green_w)); + map(0x8000, 0x8000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x9000, 0x9000).w(this, FUNC(scramble_state::hotshock_sh_irqtrigger_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0x8000).portr("IN0"); + map(0x8001, 0x8001).portr("IN1"); + map(0x8002, 0x8002).portr("IN2"); + map(0x8003, 0x8003).portr("IN3"); + map(0xa000, 0xdfff).rom(); + map(0xe800, 0xebff).ram(); +} + + + +void scramble_state::triplep_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x4800, 0x4bff).ram().w(this, FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */ + map(0x5000, 0x503f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x5040, 0x505f).ram().share("spriteram"); + map(0x5060, 0x507f).ram().share("bulletsram"); + map(0x5080, 0x50ff).ram(); + map(0x5800, 0x67ff).rom(); + map(0x6801, 0x6801).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); + map(0x6802, 0x6802).w(this, FUNC(scramble_state::galaxold_coin_counter_w)); + map(0x6804, 0x6804).w(this, FUNC(scramble_state::galaxold_stars_enable_w)); + map(0x6806, 0x6806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); + map(0x6807, 0x6807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); + map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void scramble_state::triplep_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("8910.1", FUNC(ay8910_device::data_address_w)); + map(0x01, 0x01).r("8910.1", FUNC(ay8910_device::data_r)); + map(0x02, 0x02).r(this, FUNC(scramble_state::triplep_pip_r)); + map(0x03, 0x03).r(this, FUNC(scramble_state::triplep_pap_r)); +} + +void scramble_state::hotshock_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w)); + map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x40, 0x40).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x80, 0x80).w("8910.2", FUNC(ay8910_device::address_w)); +} @@ -335,68 +349,73 @@ READ8_MEMBER(scramble_state::hncholms_prot_r) return 0; } -ADDRESS_MAP_START(scramble_state::hunchbks_readport) - AM_RANGE(0x00, 0x00) AM_READ(hncholms_prot_r) -ADDRESS_MAP_END +void scramble_state::hunchbks_readport(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(scramble_state::hncholms_prot_r)); +} // Harem -ADDRESS_MAP_START(scramble_state::harem_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM +void scramble_state::harem_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); - AM_RANGE(0x2000, 0x27ff) AM_RAM + map(0x2000, 0x27ff).ram(); - AM_RANGE(0x4000, 0x403f) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram") - AM_RANGE(0x4040, 0x405f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x4060, 0x407f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x4080, 0x47ff) AM_RAM + map(0x4000, 0x403f).ram().w(this, FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram"); + map(0x4040, 0x405f).ram().share("spriteram"); + map(0x4060, 0x407f).ram().share("bulletsram"); + map(0x4080, 0x47ff).ram(); - AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) // mirror address + map(0x4800, 0x4bff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).rw(this, FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); // mirror address - AM_RANGE(0x5000, 0x5000) AM_RAM_WRITE(racknrol_tiles_bank_w) AM_SHARE("racknrol_tbank") // high bits of tiles, 1 bit every 4 columns - AM_RANGE(0x5800, 0x5800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(galaxold_nmi_enable_w) + map(0x5000, 0x5000).ram().w(this, FUNC(scramble_state::racknrol_tiles_bank_w)).share("racknrol_tbank"); // high bits of tiles, 1 bit every 4 columns + map(0x5800, 0x5800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(scramble_state::galaxold_nmi_enable_w)); - AM_RANGE(0x5801, 0x5801) AM_WRITE(harem_decrypt_clk_w) // run-time bitswap selection - AM_RANGE(0x5802, 0x5802) AM_WRITE(harem_decrypt_bit_w) - AM_RANGE(0x5803, 0x5803) AM_WRITE(harem_decrypt_rst_w) + map(0x5801, 0x5801).w(this, FUNC(scramble_state::harem_decrypt_clk_w)); // run-time bitswap selection + map(0x5802, 0x5802).w(this, FUNC(scramble_state::harem_decrypt_bit_w)); + map(0x5803, 0x5803).w(this, FUNC(scramble_state::harem_decrypt_rst_w)); - AM_RANGE(0x5804, 0x5804) AM_WRITE(galaxold_coin_counter_w) - AM_RANGE(0x5805, 0x5805) AM_WRITE(galaxold_gfxbank_w) // bit 0 = sprite tiles high bit - AM_RANGE(0x5806, 0x5806) AM_WRITE(galaxold_flip_screen_x_w) // maybe (0 at boot) - AM_RANGE(0x5807, 0x5807) AM_WRITE(galaxold_flip_screen_y_w) // "" + map(0x5804, 0x5804).w(this, FUNC(scramble_state::galaxold_coin_counter_w)); + map(0x5805, 0x5805).w(this, FUNC(scramble_state::galaxold_gfxbank_w)); // bit 0 = sprite tiles high bit + map(0x5806, 0x5806).w(this, FUNC(scramble_state::galaxold_flip_screen_x_w)); // maybe (0 at boot) + map(0x5807, 0x5807).w(this, FUNC(scramble_state::galaxold_flip_screen_y_w)); // "" - AM_RANGE(0x6100, 0x6103) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x6200, 0x6203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) + map(0x6100, 0x6103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6200, 0x6203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rombank") // bitswapped rom -ADDRESS_MAP_END + map(0x8000, 0x9fff).bankr("rombank"); // bitswapped rom +} -ADDRESS_MAP_START(scramble_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rombank_decrypted") -ADDRESS_MAP_END +void scramble_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("maincpu", 0); + map(0x8000, 0x9fff).bankr("rombank_decrypted"); +} -ADDRESS_MAP_START(scramble_state::harem_sound_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_READ(harem_digitalker_intr_r) - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xa000, 0xafff) AM_WRITE(scramble_filter_w) -ADDRESS_MAP_END +void scramble_state::harem_sound_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x6000, 0x6000).r(this, FUNC(scramble_state::harem_digitalker_intr_r)); + map(0x8000, 0x83ff).ram(); + map(0xa000, 0xafff).w(this, FUNC(scramble_state::scramble_filter_w)); +} -ADDRESS_MAP_START(scramble_state::harem_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void scramble_state::harem_sound_io_map(address_map &map) +{ + map.global_mask(0xff); // ports->speech: - AM_RANGE(0x04, 0x04) AM_DEVWRITE("8910.3", ay8910_device, address_w) - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("8910.3", ay8910_device, data_r, data_w) + map(0x04, 0x04).w("8910.3", FUNC(ay8910_device::address_w)); + map(0x08, 0x08).rw("8910.3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // same as scramble: - AM_RANGE(0x10, 0x10) AM_DEVWRITE("8910.1", ay8910_device, address_w) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("8910.1", ay8910_device, data_r, data_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("8910.2", ay8910_device, address_w) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("8910.2", ay8910_device, data_r, data_w) // read soundlatch -ADDRESS_MAP_END + map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w)); + map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x40, 0x40).w("8910.2", FUNC(ay8910_device::address_w)); + map(0x80, 0x80).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // read soundlatch +} diff --git a/src/mame/drivers/scregg.cpp b/src/mame/drivers/scregg.cpp index 730e2c9b438..7611e7c11cc 100644 --- a/src/mame/drivers/scregg.cpp +++ b/src/mame/drivers/scregg.cpp @@ -99,36 +99,38 @@ READ8_MEMBER(scregg_state::scregg_irqack_r) } -ADDRESS_MAP_START(scregg_state::dommy_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x2800, 0x2bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") AM_WRITE(scregg_irqack_w) - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") AM_WRITE(btime_video_control_w) - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("P1") - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("P2") - AM_RANGE(0x4004, 0x4005) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_READ(scregg_irqack_r) - AM_RANGE(0x4006, 0x4007) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scregg_state::eggs_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w) - AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r,btime_mirrorcolorram_w) - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") AM_WRITE(btime_video_control_w) - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("DSW2") AM_WRITE(scregg_irqack_w) - AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P1") - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P2") - AM_RANGE(0x2004, 0x2005) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_READ(scregg_irqack_r) - AM_RANGE(0x2006, 0x2007) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x3000, 0x7fff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM /* reset/interrupt vectors */ -ADDRESS_MAP_END +void scregg_state::dommy_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x23ff).ram().share("videoram"); + map(0x2400, 0x27ff).ram().share("colorram"); + map(0x2800, 0x2bff).rw(this, FUNC(scregg_state::btime_mirrorvideoram_r), FUNC(scregg_state::btime_mirrorvideoram_w)); + map(0x4000, 0x4000).portr("DSW1").w(this, FUNC(scregg_state::scregg_irqack_w)); + map(0x4001, 0x4001).portr("DSW2").w(this, FUNC(scregg_state::btime_video_control_w)); + map(0x4002, 0x4002).portr("P1"); + map(0x4003, 0x4003).portr("P2"); + map(0x4004, 0x4005).w("ay1", FUNC(ay8910_device::address_data_w)).r(this, FUNC(scregg_state::scregg_irqack_r)); + map(0x4006, 0x4007).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xa000, 0xffff).rom(); +} + + +void scregg_state::eggs_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x13ff).ram().share("videoram"); + map(0x1400, 0x17ff).ram().share("colorram"); + map(0x1800, 0x1bff).rw(this, FUNC(scregg_state::btime_mirrorvideoram_r), FUNC(scregg_state::btime_mirrorvideoram_w)); + map(0x1c00, 0x1fff).rw(this, FUNC(scregg_state::btime_mirrorcolorram_r), FUNC(scregg_state::btime_mirrorcolorram_w)); + map(0x2000, 0x2000).portr("DSW1").w(this, FUNC(scregg_state::btime_video_control_w)); + map(0x2001, 0x2001).portr("DSW2").w(this, FUNC(scregg_state::scregg_irqack_w)); + map(0x2002, 0x2002).portr("P1"); + map(0x2003, 0x2003).portr("P2"); + map(0x2004, 0x2005).w("ay1", FUNC(ay8910_device::address_data_w)).r(this, FUNC(scregg_state::scregg_irqack_r)); + map(0x2006, 0x2007).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x3000, 0x7fff).rom(); + map(0xf000, 0xffff).rom(); /* reset/interrupt vectors */ +} static INPUT_PORTS_START( scregg ) diff --git a/src/mame/drivers/scv.cpp b/src/mame/drivers/scv.cpp index 8d993f071d9..c70900c4ea9 100644 --- a/src/mame/drivers/scv.cpp +++ b/src/mame/drivers/scv.cpp @@ -72,15 +72,16 @@ protected: }; -ADDRESS_MAP_START(scv_state::scv_mem) - AM_RANGE( 0x0000, 0x0fff ) AM_ROM // BIOS +void scv_state::scv_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); // BIOS - AM_RANGE( 0x2000, 0x3403 ) AM_RAM AM_SHARE("videoram") // VRAM + 4 registers - AM_RANGE( 0x3600, 0x3600 ) AM_DEVWRITE("upd1771c", upd1771c_device, write) + map(0x2000, 0x3403).ram().share("videoram"); // VRAM + 4 registers + map(0x3600, 0x3600).w(m_upd1771c, FUNC(upd1771c_device::write)); - AM_RANGE( 0x8000, 0xff7f ) AM_DEVREADWRITE("cartslot", scv_cart_slot_device, read_cart, write_cart) // cartridge - AM_RANGE( 0xff80, 0xffff ) AM_RAM // upd7801 internal RAM -ADDRESS_MAP_END + map(0x8000, 0xff7f).rw(m_cart, FUNC(scv_cart_slot_device::read_cart), FUNC(scv_cart_slot_device::write_cart)); // cartridge + map(0xff80, 0xffff).ram(); // upd7801 internal RAM +} static INPUT_PORTS_START( scv ) diff --git a/src/mame/drivers/scyclone.cpp b/src/mame/drivers/scyclone.cpp index e88d11e53ff..6f505d30462 100644 --- a/src/mame/drivers/scyclone.cpp +++ b/src/mame/drivers/scyclone.cpp @@ -299,48 +299,52 @@ uint32_t scyclone_state::screen_update_scyclone(screen_device &screen, bitmap_rg -ADDRESS_MAP_START(scyclone_state::scyclone_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4400, 0x5fff) AM_READWRITE(vram_r,vram_w) - AM_RANGE(0x6000, 0x60ff) AM_NOP // this just seems to be overflow from the VRAM writes, probably goes nowhere -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scyclone_state::scyclone_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(vidctrl_w) - AM_RANGE(0x04, 0x04) AM_WRITE(sprite_xpos_w) - AM_RANGE(0x05, 0x05) AM_WRITE(sprite_ypos_w) - AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // possible watchdog, unlikely to be twinkle related. - AM_RANGE(0x08, 0x08) AM_WRITE(sprite_colour_w) - AM_RANGE(0x09, 0x09) AM_WRITE(sprite_tile_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(starscroll_w) - AM_RANGE(0x0e, 0x0e) AM_WRITE(port0e_w) - AM_RANGE(0x0f, 0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x40, 0x40) AM_WRITE(videomask1_w) - AM_RANGE(0x80, 0x80) AM_WRITE(videomask2_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(scyclone_state::scyclone_sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("dac", dac_byte_interface, write) // music - AM_RANGE(0x3001, 0x3001) AM_WRITE(snd_3001_w) // written at the same time, with the same data as 0x3005 - AM_RANGE(0x3002, 0x3002) AM_DEVWRITE("dac2", dac_byte_interface, write) // speech +void scyclone_state::scyclone_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x4400, 0x5fff).rw(this, FUNC(scyclone_state::vram_r), FUNC(scyclone_state::vram_w)); + map(0x6000, 0x60ff).noprw(); // this just seems to be overflow from the VRAM writes, probably goes nowhere +} + + +void scyclone_state::scyclone_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("mb14241", FUNC(mb14241_device::shift_result_r)).w("mb14241", FUNC(mb14241_device::shift_count_w)); + map(0x01, 0x01).portr("IN0").w("mb14241", FUNC(mb14241_device::shift_data_w)); + map(0x02, 0x02).portr("IN1"); + map(0x03, 0x03).portr("DSW0").w(this, FUNC(scyclone_state::vidctrl_w)); + map(0x04, 0x04).w(this, FUNC(scyclone_state::sprite_xpos_w)); + map(0x05, 0x05).w(this, FUNC(scyclone_state::sprite_ypos_w)); + map(0x06, 0x06).w(this, FUNC(scyclone_state::port06_w)); // possible watchdog, unlikely to be twinkle related. + map(0x08, 0x08).w(this, FUNC(scyclone_state::sprite_colour_w)); + map(0x09, 0x09).w(this, FUNC(scyclone_state::sprite_tile_w)); + map(0x0a, 0x0a).w(this, FUNC(scyclone_state::starscroll_w)); + map(0x0e, 0x0e).w(this, FUNC(scyclone_state::port0e_w)); + map(0x0f, 0x0f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x40, 0x40).w(this, FUNC(scyclone_state::videomask1_w)); + map(0x80, 0x80).w(this, FUNC(scyclone_state::videomask2_w)); +} + + +void scyclone_state::scyclone_sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac", FUNC(dac_byte_interface::write)); // music + map(0x3001, 0x3001).w(this, FUNC(scyclone_state::snd_3001_w)); // written at the same time, with the same data as 0x3005 + map(0x3002, 0x3002).w("dac2", FUNC(dac_byte_interface::write)); // speech // AM_RANGE(0x3003, 0x3003) AM_WRITE(snd_3003_w) // writes 02 or 00 // AM_RANGE(0x3004, 0x3004) AM_WRITE(snd_3004_w) // always writes 00? - AM_RANGE(0x3005, 0x3005) AM_WRITE(snd_3005_w) // written at the same time, with the same data as 0x3001 -ADDRESS_MAP_END + map(0x3005, 0x3005).w(this, FUNC(scyclone_state::snd_3005_w)); // written at the same time, with the same data as 0x3001 +} -ADDRESS_MAP_START(scyclone_state::scyclone_sub_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void scyclone_state::scyclone_sub_iomap(address_map &map) +{ + map.global_mask(0xff); +} // appears to be when a white bitmap pixel (col 0x7) collides with a large sprite? diff --git a/src/mame/drivers/sderby.cpp b/src/mame/drivers/sderby.cpp index bfe91bc9957..656af0ebc45 100644 --- a/src/mame/drivers/sderby.cpp +++ b/src/mame/drivers/sderby.cpp @@ -296,121 +296,127 @@ WRITE16_MEMBER(sderby_state::roulette_out_w) * Memory Maps * ***************************/ -ADDRESS_MAP_START(sderby_state::sderby_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */ - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::sderbya_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */ - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x308000, 0x30800d) AM_READ(sderbya_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD - AM_RANGE(0xcf0000, 0xcf07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xcfc000, 0xcfffff) AM_RAM //MOD -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sderby_state::luckboom_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* ??? - check code at 0x000456 (executed once at startup) */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* ??? - check code at 0x000524 (executed once at startup) */ - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(sderby_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0xe00000, 0xe007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::spacewin_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */ - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */ - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITE(scmatto_out_w) /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd00000, 0xd001ff) AM_RAM - AM_RANGE(0x800000, 0x800fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x801000, 0x80100d) AM_WRITENOP /* unknown */ - AM_RANGE(0x8f0000, 0x8f07ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */ - AM_RANGE(0x8fc000, 0x8fffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::shinygld_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x104000, 0x10400b) AM_WRITE(sderby_scroll_w) /* tilemaps offset control */ - AM_RANGE(0x10400c, 0x10400d) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x10400e, 0x10400f) AM_WRITENOP /* seems another video register. constantly used */ - AM_RANGE(0x104010, 0x105fff) AM_WRITENOP /* unknown */ - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* unknown... write 0x01 in game, and 0x00 on reset */ - AM_RANGE(0x308000, 0x30800d) AM_READ(sderby_input_r) - AM_RANGE(0x308008, 0x308009) AM_WRITENOP /* output port */ - AM_RANGE(0x30800e, 0x30800f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x380000, 0x380fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x401000, 0x40100d) AM_WRITENOP /* unknown */ - AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram") /* 16K Dallas DS1220Y-200 NVRAM */ - AM_RANGE(0x7f0000, 0x7fffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby_state::roulette_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x440000, 0x440fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(sderby_videoram_w) AM_SHARE("videoram") /* bg */ - AM_RANGE(0x501000, 0x501fff) AM_RAM_WRITE(sderby_md_videoram_w) AM_SHARE("md_videoram") /* mid */ - AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(sderby_fg_videoram_w) AM_SHARE("fg_videoram") /* fg */ - AM_RANGE(0x504000, 0x50400b) AM_RAM_WRITE(sderby_scroll_w) - AM_RANGE(0x50400e, 0x50400f) AM_WRITENOP - - AM_RANGE(0x708000, 0x708009) AM_READ(roulette_input_r) - AM_RANGE(0x708006, 0x708007) AM_WRITE(roulette_out_w) - AM_RANGE(0x70800a, 0x70800b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x70800c, 0x70800d) AM_WRITENOP /* watchdog?? (0x0003) */ - AM_RANGE(0x70800e, 0x70800f) AM_READWRITE(rprot_r, rprot_w) /* MCU communication */ - AM_RANGE(0x780000, 0x780fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - - AM_RANGE(0xff0000, 0xff07ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void sderby_state::sderby_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */ + map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */ + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0xd00000, 0xd007ff).ram().share("nvram"); + map(0xffc000, 0xffffff).ram(); +} + +void sderby_state::sderbya_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */ + map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */ + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderbya_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ //MOD + map(0xcf0000, 0xcf07ff).ram().share("nvram"); + map(0xcfc000, 0xcfffff).ram(); //MOD +} + + +void sderby_state::luckboom_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x10400c, 0x10400d).nopw(); /* ??? - check code at 0x000456 (executed once at startup) */ + map(0x10400e, 0x10400f).nopw(); /* ??? - check code at 0x000524 (executed once at startup) */ + map(0x200000, 0x200fff).ram().share("spriteram"); + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::sderby_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0xe00000, 0xe007ff).ram().share("nvram"); + map(0xff0000, 0xffffff).ram(); +} + +void sderby_state::spacewin_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */ + map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */ + map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */ + map(0x104010, 0x105fff).nopw(); /* unknown */ + map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).w(this, FUNC(sderby_state::scmatto_out_w)); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd00000, 0xd001ff).ram(); + map(0x800000, 0x800fff).ram().share("spriteram"); + map(0x801000, 0x80100d).nopw(); /* unknown */ + map(0x8f0000, 0x8f07ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */ + map(0x8fc000, 0x8fffff).ram(); +} + +void sderby_state::shinygld_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x101000, 0x101fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x102000, 0x103fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x104000, 0x10400b).w(this, FUNC(sderby_state::sderby_scroll_w)); /* tilemaps offset control */ + map(0x10400c, 0x10400d).nopw(); /* seems another video register. constantly used */ + map(0x10400e, 0x10400f).nopw(); /* seems another video register. constantly used */ + map(0x104010, 0x105fff).nopw(); /* unknown */ + map(0x300000, 0x300001).nopw(); /* unknown... write 0x01 in game, and 0x00 on reset */ + map(0x308000, 0x30800d).r(this, FUNC(sderby_state::sderby_input_r)); + map(0x308008, 0x308009).nopw(); /* output port */ + map(0x30800f, 0x30800f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x380fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400fff).ram().share("spriteram"); + map(0x401000, 0x40100d).nopw(); /* unknown */ + map(0x700000, 0x7007ff).ram().share("nvram"); /* 16K Dallas DS1220Y-200 NVRAM */ + map(0x7f0000, 0x7fffff).ram(); +} + +void sderby_state::roulette_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x440000, 0x440fff).writeonly().share("spriteram"); + map(0x500000, 0x500fff).ram().w(this, FUNC(sderby_state::sderby_videoram_w)).share("videoram"); /* bg */ + map(0x501000, 0x501fff).ram().w(this, FUNC(sderby_state::sderby_md_videoram_w)).share("md_videoram"); /* mid */ + map(0x502000, 0x503fff).ram().w(this, FUNC(sderby_state::sderby_fg_videoram_w)).share("fg_videoram"); /* fg */ + map(0x504000, 0x50400b).ram().w(this, FUNC(sderby_state::sderby_scroll_w)); + map(0x50400e, 0x50400f).nopw(); + + map(0x708000, 0x708009).r(this, FUNC(sderby_state::roulette_input_r)); + map(0x708006, 0x708007).w(this, FUNC(sderby_state::roulette_out_w)); + map(0x70800b, 0x70800b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x70800c, 0x70800d).nopw(); /* watchdog?? (0x0003) */ + map(0x70800e, 0x70800f).rw(this, FUNC(sderby_state::rprot_r), FUNC(sderby_state::rprot_w)); /* MCU communication */ + map(0x780000, 0x780fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + + map(0xff0000, 0xff07ff).ram().share("nvram"); + map(0xffc000, 0xffffff).ram(); +} diff --git a/src/mame/drivers/sderby2.cpp b/src/mame/drivers/sderby2.cpp index 40f907dfd3d..ff64eb9cf42 100644 --- a/src/mame/drivers/sderby2.cpp +++ b/src/mame/drivers/sderby2.cpp @@ -182,25 +182,27 @@ READ8_MEMBER(sderby2_state::sub_io_0_r) 2KB of palette per screen? (0x7FF) */ -ADDRESS_MAP_START(sderby2_state::main_program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM - AM_RANGE(0xe400, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xebff) AM_RAM - AM_RANGE(0xec00, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM // Is this banked? -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby2_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_READ(host_r) - AM_RANGE(0x20, 0x20) AM_WRITE(sub_nmi) - AM_RANGE(0x30, 0x30) AM_WRITENOP // Written with 0x12 byte sequence at start - AM_RANGE(0x40, 0x40) AM_WRITE(host_io_40_w) // Occasionally written -ADDRESS_MAP_END +void sderby2_state::main_program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe3ff).ram(); + map(0xe400, 0xe7ff).ram(); + map(0xe800, 0xebff).ram(); + map(0xec00, 0xefff).ram(); + map(0xf000, 0xffff).ram(); // Is this banked? +} + +void sderby2_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).r(this, FUNC(sderby2_state::host_r)); + map(0x20, 0x20).w(this, FUNC(sderby2_state::sub_nmi)); + map(0x30, 0x30).nopw(); // Written with 0x12 byte sequence at start + map(0x40, 0x40).w(this, FUNC(sderby2_state::host_io_40_w)); // Occasionally written +} /* @@ -210,25 +212,27 @@ ADDRESS_MAP_END 18 x 2148 (1024x4) Side 4 x 2148 (1024x4) Near 316-5012 and 316-5011 */ -ADDRESS_MAP_START(sderby2_state::sub_program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - - AM_RANGE(0xc000, 0xcfff) AM_RAM // Tested at FFF, 1016, 102D - AM_RANGE(0xd000, 0xd3ff) AM_RAM // 2KB Tested - AM_RANGE(0xd400, 0xd7ff) AM_RAM // 2KB Tested at 105B - AM_RANGE(0xd800, 0xdbff) AM_RAM // 2KB Tested at 105B - AM_RANGE(0xdc00, 0xdfff) AM_RAM // 2KB Tested at 10B7 - - AM_RANGE(0xe000, 0xffff) AM_RAM // Tested at FE8 -ADDRESS_MAP_END - -ADDRESS_MAP_START(sderby2_state::sub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sub_io_0_r) - AM_RANGE(0x20, 0x20) AM_READ(sub_r) - AM_RANGE(0x40, 0x40) AM_WRITE(main_nmi) - AM_RANGE(0x60, 0x60) AM_WRITENOP // Written with 0x12 byte sequence at start -ADDRESS_MAP_END +void sderby2_state::sub_program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + + map(0xc000, 0xcfff).ram(); // Tested at FFF, 1016, 102D + map(0xd000, 0xd3ff).ram(); // 2KB Tested + map(0xd400, 0xd7ff).ram(); // 2KB Tested at 105B + map(0xd800, 0xdbff).ram(); // 2KB Tested at 105B + map(0xdc00, 0xdfff).ram(); // 2KB Tested at 10B7 + + map(0xe000, 0xffff).ram(); // Tested at FE8 +} + +void sderby2_state::sub_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(sderby2_state::sub_io_0_r)); + map(0x20, 0x20).r(this, FUNC(sderby2_state::sub_r)); + map(0x40, 0x40).w(this, FUNC(sderby2_state::main_nmi)); + map(0x60, 0x60).nopw(); // Written with 0x12 byte sequence at start +} /************************************* diff --git a/src/mame/drivers/sdk80.cpp b/src/mame/drivers/sdk80.cpp index 9c10cc73505..e58b57ab3c1 100644 --- a/src/mame/drivers/sdk80.cpp +++ b/src/mame/drivers/sdk80.cpp @@ -68,20 +68,22 @@ private: uint8_t m_usart_clock_state; }; -ADDRESS_MAP_START(sdk80_state::sdk80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x13ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sdk80_state::sdk80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xec, 0xef) AM_DEVREADWRITE(I8255A_1_TAG, i8255_device, read, write) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE(I8255A_0_TAG, i8255_device, read, write) - AM_RANGE(0xfa, 0xfa) AM_DEVREADWRITE(I8251A_TAG, i8251_device, data_r, data_w) - AM_RANGE(0xfb, 0xfb) AM_DEVREADWRITE(I8251A_TAG, i8251_device, status_r, control_w) -ADDRESS_MAP_END +void sdk80_state::sdk80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x13ff).ram(); +} + +void sdk80_state::sdk80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xec, 0xef).rw(m_ppi_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf4, 0xf7).rw(m_ppi_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfa, 0xfa).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xfb, 0xfb).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} static INPUT_PORTS_START( sdk80 ) PORT_START(I8251A_BAUD_TAG) diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index c0da59579b1..e567e0324f7 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -77,23 +77,25 @@ void sdk85_state::machine_reset() m_maincpu->reset(); } -ADDRESS_MAP_START(sdk85_state::sdk85_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_DEVREAD("romio", i8355_device, memory_r) - AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("expromio", i8355_device, memory_r) - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x06ff) AM_DEVREADWRITE("kdc", i8279_device, data_r, data_w) - AM_RANGE(0x1900, 0x1900) AM_MIRROR(0x06ff) AM_DEVREADWRITE("kdc", i8279_device, status_r, cmd_w) - AM_RANGE(0x2000, 0x20ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("ramio", i8155_device, memory_r, memory_w) - AM_RANGE(0x2800, 0x28ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("expramio", i8155_device, memory_r, memory_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sdk85_state::sdk85_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_MIRROR(0x04) AM_DEVREADWRITE("romio", i8355_device, io_r, io_w) - AM_RANGE(0x08, 0x0b) AM_MIRROR(0x04) AM_DEVREADWRITE("expromio", i8355_device, io_r, io_w) - AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("ramio", i8155_device, io_r, io_w) - AM_RANGE(0x28, 0x2f) AM_DEVREADWRITE("expramio", i8155_device, io_r, io_w) -ADDRESS_MAP_END +void sdk85_state::sdk85_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).r("romio", FUNC(i8355_device::memory_r)); + map(0x0800, 0x0fff).r("expromio", FUNC(i8355_device::memory_r)); + map(0x1800, 0x1800).mirror(0x06ff).rw("kdc", FUNC(i8279_device::data_r), FUNC(i8279_device::data_w)); + map(0x1900, 0x1900).mirror(0x06ff).rw("kdc", FUNC(i8279_device::status_r), FUNC(i8279_device::cmd_w)); + map(0x2000, 0x20ff).mirror(0x0700).rw("ramio", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x2800, 0x28ff).mirror(0x0700).rw("expramio", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); +} + +void sdk85_state::sdk85_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x03).mirror(0x04).rw("romio", FUNC(i8355_device::io_r), FUNC(i8355_device::io_w)); + map(0x08, 0x0b).mirror(0x04).rw("expromio", FUNC(i8355_device::io_r), FUNC(i8355_device::io_w)); + map(0x20, 0x27).rw("ramio", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x28, 0x2f).rw("expramio", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} /* Input ports */ static INPUT_PORTS_START( sdk85 ) diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp index d214e156650..97ed529cf16 100644 --- a/src/mame/drivers/sdk86.cpp +++ b/src/mame/drivers/sdk86.cpp @@ -59,19 +59,21 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(sdk86_state::sdk86_mem) - AM_RANGE(0x00000, 0x00fff) AM_RAM //2K standard, or 4k (board fully populated) - AM_RANGE(0xfe000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sdk86_state::sdk86_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xfff0, 0xfff1) AM_MIRROR(4) AM_DEVREADWRITE8(I8251_TAG, i8251_device, data_r, data_w, 0xff) - AM_RANGE(0xfff2, 0xfff3) AM_MIRROR(4) AM_DEVREADWRITE8(I8251_TAG, i8251_device, status_r, control_w, 0xff) - AM_RANGE(0xffe8, 0xffeb) AM_MIRROR(4) AM_DEVREADWRITE8("i8279", i8279_device, read, write, 0xff) - AM_RANGE(0xfff8, 0xffff) AM_DEVREADWRITE8("port1", i8255_device, read, write, 0xff00) - AM_RANGE(0xfff8, 0xffff) AM_DEVREADWRITE8("port2", i8255_device, read, write, 0x00ff) -ADDRESS_MAP_END +void sdk86_state::sdk86_mem(address_map &map) +{ + map(0x00000, 0x00fff).ram(); //2K standard, or 4k (board fully populated) + map(0xfe000, 0xfffff).rom(); +} + +void sdk86_state::sdk86_io(address_map &map) +{ + map.unmap_value_high(); + map(0xfff0, 0xfff0).mirror(4).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xfff2, 0xfff2).mirror(4).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xffe8, 0xffeb).mirror(4).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)).umask16(0x00ff); + map(0xfff8, 0xffff).rw("port1", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); + map(0xfff8, 0xffff).rw("port2", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); +} /* Input ports */ static INPUT_PORTS_START( sdk86 ) diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp index b062c859a81..03e1e4eed2a 100644 --- a/src/mame/drivers/seabattl.cpp +++ b/src/mame/drivers/seabattl.cpp @@ -252,28 +252,30 @@ void seabattl_state::video_start() ***************************************************************************/ -ADDRESS_MAP_START(seabattl_state::seabattl_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x2000, 0x33ff) AM_ROM - AM_RANGE(0x1400, 0x17ff) AM_MIRROR(0x2000) AM_RAM_WRITE(seabattl_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x2000) AM_RAM_WRITE(seabattl_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1cff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x1d00, 0x1dff) AM_MIRROR(0x2000) AM_RAM AM_SHARE("objram") - AM_RANGE(0x1e00, 0x1e00) AM_MIRROR(0x20f0) AM_WRITE(time_display_w) - AM_RANGE(0x1e01, 0x1e01) AM_MIRROR(0x20f0) AM_WRITE(score_display_w) - AM_RANGE(0x1e02, 0x1e02) AM_MIRROR(0x20f0) AM_READ_PORT("IN0") AM_WRITE(score2_display_w) - AM_RANGE(0x1e05, 0x1e05) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS2") - AM_RANGE(0x1e06, 0x1e06) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS1") AM_WRITE(sound_w) - AM_RANGE(0x1e07, 0x1e07) AM_MIRROR(0x20f0) AM_READ_PORT("DIPS0") AM_WRITE(sound2_w) - AM_RANGE(0x1f00, 0x1fff) AM_MIRROR(0x2000) AM_DEVREADWRITE("s2636", s2636_device, read_data, write_data) - AM_RANGE(0x1fcc, 0x1fcc) AM_MIRROR(0x2000) AM_READ_PORT("IN1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(seabattl_state::seabattl_data_map) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE( seabattl_collision_r, seabattl_control_w ) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE( seabattl_collision_clear_r, seabattl_collision_clear_w ) -ADDRESS_MAP_END +void seabattl_state::seabattl_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x13ff).rom(); + map(0x2000, 0x33ff).rom(); + map(0x1400, 0x17ff).mirror(0x2000).ram().w(this, FUNC(seabattl_state::seabattl_colorram_w)).share("colorram"); + map(0x1800, 0x1bff).mirror(0x2000).ram().w(this, FUNC(seabattl_state::seabattl_videoram_w)).share("videoram"); + map(0x1c00, 0x1cff).mirror(0x2000).ram(); + map(0x1d00, 0x1dff).mirror(0x2000).ram().share("objram"); + map(0x1e00, 0x1e00).mirror(0x20f0).w(this, FUNC(seabattl_state::time_display_w)); + map(0x1e01, 0x1e01).mirror(0x20f0).w(this, FUNC(seabattl_state::score_display_w)); + map(0x1e02, 0x1e02).mirror(0x20f0).portr("IN0").w(this, FUNC(seabattl_state::score2_display_w)); + map(0x1e05, 0x1e05).mirror(0x20f0).portr("DIPS2"); + map(0x1e06, 0x1e06).mirror(0x20f0).portr("DIPS1").w(this, FUNC(seabattl_state::sound_w)); + map(0x1e07, 0x1e07).mirror(0x20f0).portr("DIPS0").w(this, FUNC(seabattl_state::sound2_w)); + map(0x1f00, 0x1fff).mirror(0x2000).rw(m_s2636, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1fcc, 0x1fcc).mirror(0x2000).portr("IN1"); +} + +void seabattl_state::seabattl_data_map(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(seabattl_state::seabattl_collision_r), FUNC(seabattl_state::seabattl_control_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(seabattl_state::seabattl_collision_clear_r), FUNC(seabattl_state::seabattl_collision_clear_w)); +} READ8_MEMBER(seabattl_state::seabattl_collision_r) { diff --git a/src/mame/drivers/sealy.cpp b/src/mame/drivers/sealy.cpp index 25bdb8250ec..b521a3d3765 100644 --- a/src/mame/drivers/sealy.cpp +++ b/src/mame/drivers/sealy.cpp @@ -70,9 +70,10 @@ uint32_t sealy_state::screen_update_sealy(screen_device &screen, bitmap_rgb32 &b } -ADDRESS_MAP_START(sealy_state::sealy_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM -ADDRESS_MAP_END +void sealy_state::sealy_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); +} static INPUT_PORTS_START( sealy ) diff --git a/src/mame/drivers/seattlecmp.cpp b/src/mame/drivers/seattlecmp.cpp index 07a2a513e28..8ec37dac3fd 100644 --- a/src/mame/drivers/seattlecmp.cpp +++ b/src/mame/drivers/seattlecmp.cpp @@ -67,23 +67,25 @@ READ8_MEMBER(seattle_comp_state::pic_slave_ack) } -ADDRESS_MAP_START(seattle_comp_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0xff7ff) AM_RAM - AM_RANGE(0xff800,0xfffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void seattle_comp_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0xff7ff).ram(); + map(0xff800, 0xfffff).rom().region("user1", 0); +} -ADDRESS_MAP_START(seattle_comp_state::io_map) +void seattle_comp_state::io_map(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf1) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff) - AM_RANGE(0xf2, 0xf3) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff) - AM_RANGE(0xf4, 0xf5) AM_DEVREADWRITE8("stc", am9513_device, read8, write8, 0xffff) - AM_RANGE(0xf6, 0xf7) AM_DEVREADWRITE8("uart", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0xf6, 0xf7) AM_DEVREADWRITE8("uart", i8251_device, status_r, control_w, 0xff00) + map.global_mask(0xff); + map(0xf0, 0xf1).rw("pic1", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf2, 0xf3).rw("pic2", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf4, 0xf5).rw("stc", FUNC(am9513_device::read8), FUNC(am9513_device::write8)); + map(0xf6, 0xf6).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xf7, 0xf7).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); //AM_RANGE(0xfc, 0xfd) Parallel data, status, serial DCD //AM_RANGE(0xfe, 0xff) Eprom disable bit, read sense switches (bank of 8 dipswitches) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( seattle ) diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp index 5c50584375b..92076b872ca 100644 --- a/src/mame/drivers/segac2.cpp +++ b/src/mame/drivers/segac2.cpp @@ -639,17 +639,18 @@ WRITE16_MEMBER(segac2_state::print_club_camera_w) ******************************************************************************/ -ADDRESS_MAP_START(segac2_state::main_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_MIRROR(0x13fdfe) AM_READWRITE8(prot_r, prot_w, 0x00ff) - AM_RANGE(0x800200, 0x800201) AM_MIRROR(0x13fdfe) AM_WRITE8(control_w, 0x00ff) - AM_RANGE(0x840000, 0x84001f) AM_MIRROR(0x13fee0) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0x840100, 0x840107) AM_MIRROR(0x13fef8) AM_DEVREADWRITE8("ymsnd", ym3438_device, read, write, 0x00ff) - AM_RANGE(0x880100, 0x880101) AM_MIRROR(0x13fefe) AM_WRITE8(counter_timer_w, 0x00ff) - AM_RANGE(0x8c0000, 0x8c0fff) AM_MIRROR(0x13f000) AM_READWRITE(palette_r, palette_w) AM_SHARE("paletteram") - AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) - AM_RANGE(0xe00000, 0xe0ffff) AM_MIRROR(0x1f0000) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void segac2_state::main_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x800001, 0x800001).mirror(0x13fdfe).rw(this, FUNC(segac2_state::prot_r), FUNC(segac2_state::prot_w)); + map(0x800201, 0x800201).mirror(0x13fdfe).w(this, FUNC(segac2_state::control_w)); + map(0x840000, 0x84001f).mirror(0x13fee0).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0x840100, 0x840107).mirror(0x13fef8).rw(m_ymsnd, FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask16(0x00ff); + map(0x880101, 0x880101).mirror(0x13fefe).w(this, FUNC(segac2_state::counter_timer_w)); + map(0x8c0000, 0x8c0fff).mirror(0x13f000).rw(this, FUNC(segac2_state::palette_r), FUNC(segac2_state::palette_w)).share("paletteram"); + map(0xc00000, 0xc0001f).mirror(0x18ff00).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); + map(0xe00000, 0xe0ffff).mirror(0x1f0000).ram().share("nvram"); +} /****************************************************************************** diff --git a/src/mame/drivers/segacoin.cpp b/src/mame/drivers/segacoin.cpp index 03c727c7721..26c264b49a2 100644 --- a/src/mame/drivers/segacoin.cpp +++ b/src/mame/drivers/segacoin.cpp @@ -49,26 +49,30 @@ public: /* Memory maps */ -ADDRESS_MAP_START(segacoin_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segacoin_state::main_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(segacoin_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segacoin_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void segacoin_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xffff).ram(); +} + +void segacoin_state::main_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} + + +void segacoin_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xffff).ram(); +} + +void segacoin_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} diff --git a/src/mame/drivers/segae.cpp b/src/mame/drivers/segae.cpp index e0206d1565b..03f073573de 100644 --- a/src/mame/drivers/segae.cpp +++ b/src/mame/drivers/segae.cpp @@ -378,53 +378,59 @@ private: ****************************************************************************************/ /* we have to fill in the ROM addresses for systeme due to the encrypted games */ -ADDRESS_MAP_START(systeme_state::systeme_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* Fixed ROM */ - AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank1") AM_WRITE_BANK("vram_write") /* Banked ROM */ - AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(systeme_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(systeme_state::banked_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") - AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(systeme_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - - AM_RANGE(0x7b, 0x7b) AM_DEVWRITE("sn1", segapsg_device, write) - AM_RANGE(0x7e, 0x7f) AM_DEVWRITE("sn2", segapsg_device, write) - AM_RANGE(0x7e, 0x7e) AM_DEVREAD("vdp1", sega315_5124_device, vcount_read) - AM_RANGE(0xba, 0xba) AM_DEVREADWRITE("vdp1", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0xbb, 0xbb) AM_DEVREADWRITE("vdp1", sega315_5124_device, register_read, register_write) - AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("vdp2", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("vdp2", sega315_5124_device, register_read, register_write) - AM_RANGE(0xe0, 0xe0) AM_READ_PORT("e0") - AM_RANGE(0xe1, 0xe1) AM_READ_PORT("e1") - AM_RANGE(0xe2, 0xe2) AM_READ_PORT("e2") - AM_RANGE(0xf2, 0xf2) AM_READ_PORT("f2") - AM_RANGE(0xf3, 0xf3) AM_READ_PORT("f3") - AM_RANGE(0xf7, 0xf7) AM_WRITE(bank_write) - AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(systeme_state::vdp1_map) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("vdp1_bank") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(systeme_state::vdp2_map) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("vdp2_bank") -ADDRESS_MAP_END +void systeme_state::systeme_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* Fixed ROM */ + map(0x8000, 0xbfff).bankr("bank1").bankw("vram_write"); /* Banked ROM */ + map(0xc000, 0xffff).ram().share("mainram"); +} + +void systeme_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).ram().share("mainram"); +} + +void systeme_state::banked_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); + map(0xc000, 0xffff).ram().share("mainram"); +} + + +void systeme_state::io_map(address_map &map) +{ + map.global_mask(0xff); + + map(0x7b, 0x7b).w("sn1", FUNC(segapsg_device::write)); + map(0x7e, 0x7f).w("sn2", FUNC(segapsg_device::write)); + map(0x7e, 0x7e).r(m_vdp1, FUNC(sega315_5124_device::vcount_read)); + map(0xba, 0xba).rw(m_vdp1, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0xbb, 0xbb).rw(m_vdp1, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xbe, 0xbe).rw(m_vdp2, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0xbf, 0xbf).rw(m_vdp2, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xe0, 0xe0).portr("e0"); + map(0xe1, 0xe1).portr("e1"); + map(0xe2, 0xe2).portr("e2"); + map(0xf2, 0xf2).portr("f2"); + map(0xf3, 0xf3).portr("f3"); + map(0xf7, 0xf7).w(this, FUNC(systeme_state::bank_write)); + map(0xf8, 0xfb).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + + +void systeme_state::vdp1_map(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("vdp1_bank"); +} + + +void systeme_state::vdp2_map(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("vdp2_bank"); +} WRITE8_MEMBER(systeme_state::bank_write) diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp index b0263aa4028..5114de3366a 100644 --- a/src/mame/drivers/segag80r.cpp +++ b/src/mame/drivers/segag80r.cpp @@ -332,52 +332,58 @@ WRITE8_MEMBER(segag80r_state::sindbadm_sn2_SN76496_w) *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(segag80r_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM /* CPU board ROM */ - AM_RANGE(0x0800, 0x7fff) AM_ROM /* PROM board ROM area */ - AM_RANGE(0x8000, 0xbfff) AM_ROM /* PROM board ROM area */ - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram") - AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segag80r_state::g80r_opcodes_map) - AM_RANGE(0x0000, 0xffff) AM_READ(g80r_opcode_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segag80r_state::sega_315_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram") - AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void segag80r_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); /* CPU board ROM */ + map(0x0800, 0x7fff).rom(); /* PROM board ROM area */ + map(0x8000, 0xbfff).rom(); /* PROM board ROM area */ + map(0xc800, 0xcfff).ram().w(this, FUNC(segag80r_state::mainram_w)).share("mainram"); + map(0xe000, 0xffff).ram().w(this, FUNC(segag80r_state::vidram_w)).share("videoram"); +} + +void segag80r_state::g80r_opcodes_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(segag80r_state::g80r_opcode_r)); +} + +void segag80r_state::sega_315_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).rom().region("maincpu", 0x8000); + map(0xc800, 0xcfff).ram().w(this, FUNC(segag80r_state::mainram_w)).share("mainram"); + map(0xe000, 0xffff).ram().w(this, FUNC(segag80r_state::vidram_w)).share("videoram"); +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(segag80r_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xbe, 0xbf) AM_READWRITE(segag80r_video_port_r, segag80r_video_port_w) - AM_RANGE(0xf9, 0xf9) AM_MIRROR(0x04) AM_WRITE(coin_count_w) - AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r) - AM_RANGE(0xfc, 0xfc) AM_READ_PORT("FC") -ADDRESS_MAP_END +void segag80r_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0xbe, 0xbf).rw(this, FUNC(segag80r_state::segag80r_video_port_r), FUNC(segag80r_state::segag80r_video_port_w)); + map(0xf9, 0xf9).mirror(0x04).w(this, FUNC(segag80r_state::coin_count_w)); + map(0xf8, 0xfb).r(this, FUNC(segag80r_state::mangled_ports_r)); + map(0xfc, 0xfc).portr("FC"); +} -ADDRESS_MAP_START(segag80r_state::main_ppi8255_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0xbe, 0xbf) AM_READWRITE(segag80r_video_port_r, segag80r_video_port_w) - AM_RANGE(0xf9, 0xf9) AM_MIRROR(0x04) AM_WRITE(coin_count_w) - AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r) - AM_RANGE(0xfc, 0xfc) AM_READ_PORT("FC") -ADDRESS_MAP_END +void segag80r_state::main_ppi8255_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x0c, 0x0f).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xbe, 0xbf).rw(this, FUNC(segag80r_state::segag80r_video_port_r), FUNC(segag80r_state::segag80r_video_port_w)); + map(0xf9, 0xf9).mirror(0x04).w(this, FUNC(segag80r_state::coin_count_w)); + map(0xf8, 0xfb).r(this, FUNC(segag80r_state::mangled_ports_r)); + map(0xfc, 0xfc).portr("FC"); +} -ADDRESS_MAP_START(segag80r_state::sindbadm_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x42, 0x43) AM_READWRITE(segag80r_video_port_r, segag80r_video_port_w) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r) -ADDRESS_MAP_END +void segag80r_state::sindbadm_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x42, 0x43).rw(this, FUNC(segag80r_state::segag80r_video_port_r), FUNC(segag80r_state::segag80r_video_port_w)); + map(0x80, 0x83).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf8, 0xfb).r(this, FUNC(segag80r_state::mangled_ports_r)); +} @@ -388,13 +394,14 @@ ADDRESS_MAP_END *************************************/ /* complete memory map derived from System 1 schematics */ -ADDRESS_MAP_START(segag80r_state::sindbadm_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1ffc) AM_WRITE(sindbadm_sn1_SN76496_w) - AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1ffc) AM_WRITE(sindbadm_sn2_SN76496_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segag80r_state::sindbadm_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x87ff).mirror(0x1800).ram(); + map(0xa000, 0xa003).mirror(0x1ffc).w(this, FUNC(segag80r_state::sindbadm_sn1_SN76496_w)); + map(0xc000, 0xc003).mirror(0x1ffc).w(this, FUNC(segag80r_state::sindbadm_sn2_SN76496_w)); + map(0xe000, 0xe000).mirror(0x1fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp index cb08ef60beb..57ed7667a42 100644 --- a/src/mame/drivers/segag80v.cpp +++ b/src/mame/drivers/segag80v.cpp @@ -389,30 +389,33 @@ WRITE8_MEMBER(segag80v_state::unknown_w) *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(segag80v_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM /* CPU board ROM */ - AM_RANGE(0x0800, 0xbfff) AM_ROM /* PROM board ROM area */ - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(mainram_w) AM_SHARE("mainram") - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(vectorram_w) AM_SHARE("vectorram") -ADDRESS_MAP_END +void segag80v_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); /* CPU board ROM */ + map(0x0800, 0xbfff).rom(); /* PROM board ROM area */ + map(0xc800, 0xcfff).ram().w(this, FUNC(segag80v_state::mainram_w)).share("mainram"); + map(0xe000, 0xefff).ram().w(this, FUNC(segag80v_state::vectorram_w)).share("vectorram"); +} -ADDRESS_MAP_START(segag80v_state::opcodes_map) - AM_RANGE(0x0000, 0xffff) AM_READ(g80v_opcode_r) -ADDRESS_MAP_END +void segag80v_state::opcodes_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(segag80v_state::g80v_opcode_r)); +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(segag80v_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xbc, 0xbc) /* AM_READ ??? */ - AM_RANGE(0xbd, 0xbe) AM_WRITE(multiply_w) - AM_RANGE(0xbe, 0xbe) AM_READ(multiply_r) - AM_RANGE(0xbf, 0xbf) AM_WRITE(unknown_w) - - AM_RANGE(0xf9, 0xf9) AM_MIRROR(0x04) AM_WRITE(coin_count_w) - AM_RANGE(0xf8, 0xfb) AM_READ(mangled_ports_r) - AM_RANGE(0xfc, 0xfc) AM_READ_PORT("FC") -ADDRESS_MAP_END +void segag80v_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0xbc, 0xbc); /* AM_READ ??? */ + map(0xbd, 0xbe).w(this, FUNC(segag80v_state::multiply_w)); + map(0xbe, 0xbe).r(this, FUNC(segag80v_state::multiply_r)); + map(0xbf, 0xbf).w(this, FUNC(segag80v_state::unknown_w)); + + map(0xf9, 0xf9).mirror(0x04).w(this, FUNC(segag80v_state::coin_count_w)); + map(0xf8, 0xfb).r(this, FUNC(segag80v_state::mangled_ports_r)); + map(0xfc, 0xfc).portr("FC"); +} diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp index 53b6426d4eb..ce94844d413 100644 --- a/src/mame/drivers/segahang.cpp +++ b/src/mame/drivers/segahang.cpp @@ -396,37 +396,40 @@ void segahang_state::sharrier_i8751_sim() // MAIN CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segahang_state::hangon_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x20c000, 0x20ffff) AM_RAM AM_SHARE("workram") - AM_RANGE(0x400000, 0x403fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x600000, 0x6007ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0xa00000, 0xa00fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc00000, 0xc3ffff) AM_ROM AM_REGION("subcpu", 0) - AM_RANGE(0xc68000, 0xc68fff) AM_RAM AM_SHARE("roadram") - AM_RANGE(0xc7c000, 0xc7ffff) AM_RAM AM_SHARE("subram") - AM_RANGE(0xe00000, 0xffffff) AM_READWRITE(hangon_io_r, hangon_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::decrypted_opcodes_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::sharrier_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("workram") - AM_RANGE(0x100000, 0x107fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x108000, 0x108fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x124000, 0x127fff) AM_RAM AM_SHARE("subram") - AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x140000, 0x14ffff) AM_READWRITE(sharrier_io_r, sharrier_io_w) - AM_RANGE(0xc68000, 0xc68fff) AM_RAM AM_SHARE("roadram") -ADDRESS_MAP_END +void segahang_state::hangon_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom(); + map(0x20c000, 0x20ffff).ram().share("workram"); + map(0x400000, 0x403fff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x600000, 0x6007ff).ram().share("sprites"); + map(0xa00000, 0xa00fff).ram().w(this, FUNC(segahang_state::paletteram_w)).share("paletteram"); + map(0xc00000, 0xc3ffff).rom().region("subcpu", 0); + map(0xc68000, 0xc68fff).ram().share("roadram"); + map(0xc7c000, 0xc7ffff).ram().share("subram"); + map(0xe00000, 0xffffff).rw(this, FUNC(segahang_state::hangon_io_r), FUNC(segahang_state::hangon_io_w)); +} + +void segahang_state::decrypted_opcodes_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom().share("decrypted_opcodes"); +} + +void segahang_state::sharrier_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram().share("workram"); + map(0x100000, 0x107fff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x108000, 0x108fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x110000, 0x110fff).ram().w(this, FUNC(segahang_state::paletteram_w)).share("paletteram"); + map(0x124000, 0x127fff).ram().share("subram"); + map(0x130000, 0x130fff).ram().share("sprites"); + map(0x140000, 0x14ffff).rw(this, FUNC(segahang_state::sharrier_io_r), FUNC(segahang_state::sharrier_io_w)); + map(0xc68000, 0xc68fff).ram().share("roadram"); +} @@ -435,57 +438,64 @@ ADDRESS_MAP_END //************************************************************************** // On Super Hang On there is a memory mapper, like the System16 one, todo: emulate it! -ADDRESS_MAP_START(segahang_state::sub_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x7ffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x068000, 0x068fff) AM_RAM AM_SHARE("roadram") - AM_RANGE(0x07c000, 0x07ffff) AM_RAM AM_SHARE("subram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::fd1094_decrypted_opcodes_map) - AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") -ADDRESS_MAP_END +void segahang_state::sub_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x7ffff); + map(0x000000, 0x03ffff).rom(); + map(0x068000, 0x068fff).ram().share("roadram"); + map(0x07c000, 0x07ffff).ram().share("subram"); +} + +void segahang_state::fd1094_decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes"); +} //************************************************************************** // SOUND CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segahang_state::sound_map_2203) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x0800) AM_RAM - AM_RANGE(0xd000, 0xd001) AM_MIRROR(0x0ffe) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xe000, 0xe0ff) AM_MIRROR(0x0f00) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::sound_portmap_2203) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::sound_map_2151) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::sound_portmap_2151) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segahang_state::sound_portmap_2203x2) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) - AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void segahang_state::sound_map_2203(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).mirror(0x0800).ram(); + map(0xd000, 0xd001).mirror(0x0ffe).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xe000, 0xe0ff).mirror(0x0f00).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w)); +} + +void segahang_state::sound_portmap_2203(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segahang_state::sound_data_r)); +} + +void segahang_state::sound_map_2151(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0xf000, 0xf0ff).mirror(0x700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w)); + map(0xf800, 0xffff).ram(); +} + +void segahang_state::sound_portmap_2151(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segahang_state::sound_data_r)); +} + +void segahang_state::sound_portmap_2203x2(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segahang_state::sound_data_r)); + map(0xc0, 0xc1).mirror(0x3e).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} @@ -493,8 +503,9 @@ ADDRESS_MAP_END // I8751 MCU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segahang_state::mcu_io_map) -ADDRESS_MAP_END +void segahang_state::mcu_io_map(address_map &map) +{ +} diff --git a/src/mame/drivers/segajw.cpp b/src/mame/drivers/segajw.cpp index 806453aba83..5bd1813d457 100644 --- a/src/mame/drivers/segajw.cpp +++ b/src/mame/drivers/segajw.cpp @@ -174,44 +174,48 @@ CUSTOM_INPUT_MEMBER( segajw_state::coin_sensors_r ) return data; } -ADDRESS_MAP_START(segajw_state::segajw_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void segajw_state::segajw_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); - AM_RANGE(0x080000, 0x080001) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w) - AM_RANGE(0x080002, 0x080003) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w) + map(0x080000, 0x080001).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x080002, 0x080003).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW0") - AM_RANGE(0x180004, 0x180005) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW1") - AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("DSW3") - AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("DSW2") + map(0x180000, 0x180001).portr("DSW0"); + map(0x180005, 0x180005).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0x180008, 0x180009).portr("DSW1"); + map(0x18000a, 0x18000b).portr("DSW3"); + map(0x18000c, 0x18000d).portr("DSW2"); - AM_RANGE(0x1a0000, 0x1a001f) AM_DEVREADWRITE8("io1a", sega_315_5296_device, read, write, 0x00ff) + map(0x1a0000, 0x1a001f).rw("io1a", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE8("io1c", sega_315_5296_device, read, write, 0x00ff) + map(0x1c0000, 0x1c001f).rw("io1c", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); - AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x280002, 0x280003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x280004, 0x280005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) + map(0x280001, 0x280001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x280003, 0x280003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x280005, 0x280005).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END + map(0xff0000, 0xffffff).ram().share("nvram"); +} -ADDRESS_MAP_START(segajw_state::segajw_audiocpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void segajw_state::segajw_audiocpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xffff).ram(); +} -ADDRESS_MAP_START(segajw_state::segajw_audiocpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void segajw_state::segajw_audiocpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x83).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} -ADDRESS_MAP_START(segajw_state::segajw_hd63484_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM - AM_RANGE(0x80000, 0xbffff) AM_ROM AM_REGION("gfx1", 0) -ADDRESS_MAP_END +void segajw_state::segajw_hd63484_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); + map(0x80000, 0xbffff).rom().region("gfx1", 0); +} static INPUT_PORTS_START( segajw ) @@ -362,9 +366,10 @@ void segajw_state::machine_reset() m_coin_counter = 0xff; } -ADDRESS_MAP_START(segajw_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void segajw_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(segajw_state::segajw) /* basic machine hardware */ diff --git a/src/mame/drivers/segald.cpp b/src/mame/drivers/segald.cpp index c6ab36ebf23..9cfd3e6ef59 100644 --- a/src/mame/drivers/segald.cpp +++ b/src/mame/drivers/segald.cpp @@ -253,28 +253,30 @@ WRITE8_MEMBER(segald_state::astron_io_bankswitch_w) /* PROGRAM MAP */ -ADDRESS_MAP_START(segald_state::mainmem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(astron_OBJ_read, astron_OBJ_write) AM_SHARE("obj_ram") /* OBJ according to the schematics (sprite) */ - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(astron_DISC_read, astron_DISC_write) /* DISC interface according to schematics */ - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("DSWA") /* SW bank 2 (DIPs) */ - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("DSWB") /* SW bank 3 (DIPs) */ - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN0") /* SW bank 0 (IO) */ - AM_RANGE(0xd003, 0xd003) AM_READ_PORT("IN1") /* SW bank 1 (IO) */ - AM_RANGE(0xd800, 0xd803) AM_READWRITE(astron_OUT_read, astron_OUT_write) AM_SHARE("out_ram") /* OUT according to schematics (output port) */ - AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(astron_COLOR_read, astron_COLOR_write) AM_SHARE("color_ram") /* COLOR according to the schematics */ - AM_RANGE(0xf000, 0xf7ff) AM_WRITE(astron_FIX_write) AM_SHARE("fix_ram") /* FIX according to schematics (characters) */ - AM_RANGE(0xf800, 0xffff) AM_RAM /* RAM according to schematics */ -ADDRESS_MAP_END +void segald_state::mainmem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + + map(0xc000, 0xc7ff).rw(this, FUNC(segald_state::astron_OBJ_read), FUNC(segald_state::astron_OBJ_write)).share("obj_ram"); /* OBJ according to the schematics (sprite) */ + map(0xc800, 0xcfff).rw(this, FUNC(segald_state::astron_DISC_read), FUNC(segald_state::astron_DISC_write)); /* DISC interface according to schematics */ + map(0xd000, 0xd000).portr("DSWA"); /* SW bank 2 (DIPs) */ + map(0xd001, 0xd001).portr("DSWB"); /* SW bank 3 (DIPs) */ + map(0xd002, 0xd002).portr("IN0"); /* SW bank 0 (IO) */ + map(0xd003, 0xd003).portr("IN1"); /* SW bank 1 (IO) */ + map(0xd800, 0xd803).rw(this, FUNC(segald_state::astron_OUT_read), FUNC(segald_state::astron_OUT_write)).share("out_ram"); /* OUT according to schematics (output port) */ + map(0xe000, 0xe1ff).rw(this, FUNC(segald_state::astron_COLOR_read), FUNC(segald_state::astron_COLOR_write)).share("color_ram"); /* COLOR according to the schematics */ + map(0xf000, 0xf7ff).w(this, FUNC(segald_state::astron_FIX_write)).share("fix_ram"); /* FIX according to schematics (characters) */ + map(0xf800, 0xffff).ram(); /* RAM according to schematics */ +} /* I/O MAP */ -ADDRESS_MAP_START(segald_state::mainport) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(astron_io_bankswitch_w) -ADDRESS_MAP_END +void segald_state::mainport(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(segald_state::astron_io_bankswitch_w)); +} /* PORTS */ diff --git a/src/mame/drivers/segam1.cpp b/src/mame/drivers/segam1.cpp index 8cf5828c790..6e2a40b7f1c 100644 --- a/src/mame/drivers/segam1.cpp +++ b/src/mame/drivers/segam1.cpp @@ -184,53 +184,58 @@ uint32_t segam1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap -ADDRESS_MAP_START(segam1_state::segam1_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x340000, 0x340fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff) - AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) - AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP /* Horizontal split position (ABSEL) */ - AM_RANGE(0xb40000, 0xb40001) AM_WRITENOP /* Scanline trigger position (XHOUT) */ - AM_RANGE(0xb60000, 0xb60001) AM_WRITENOP /* Frame trigger position (XVOUT) */ - AM_RANGE(0xb70000, 0xb70001) AM_WRITENOP /* Synchronization mode */ - AM_RANGE(0xb80000, 0xbfffff) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc04000, 0xc0401f) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write) - AM_RANGE(0xe00000, 0xe0001f) AM_DEVREADWRITE8("io1", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("INX") - AM_RANGE(0xe40002, 0xe40003) AM_READ_PORT("INY") - AM_RANGE(0xe40004, 0xe40005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xe40006, 0xe40007) AM_WRITENOP - AM_RANGE(0xe40008, 0xe40009) AM_READ_PORT("INZ") - AM_RANGE(0xe80000, 0xe8001f) AM_DEVREADWRITE8("io2", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0xf00000, 0xf03fff) AM_MIRROR(0x0fc000) AM_RAM // NVRAM? -ADDRESS_MAP_END - -ADDRESS_MAP_START(segam1_state::segam1_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segam1_state::unkm1_sound_map) - AM_IMPORT_FROM(segam1_sound_map) - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segam1_state::segam1_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_WRITE(sound_a0_bank_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(segam1_state::segam1_comms_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0xe003, 0xe003) AM_WRITENOP // ??? -ADDRESS_MAP_END +void segam1_state::segam1_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x340000, 0x340fff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)).umask16(0x00ff); + map(0xb00000, 0xb0ffff).rw(m_tile, FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)); + map(0xb20000, 0xb20001).nopw(); /* Horizontal split position (ABSEL) */ + map(0xb40000, 0xb40001).nopw(); /* Scanline trigger position (XHOUT) */ + map(0xb60000, 0xb60001).nopw(); /* Frame trigger position (XVOUT) */ + map(0xb70000, 0xb70001).nopw(); /* Synchronization mode */ + map(0xb80000, 0xbfffff).rw(m_tile, FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)); + map(0xc00000, 0xc03fff).ram().w(this, FUNC(segam1_state::paletteram_w)).share("paletteram"); + map(0xc04000, 0xc0401f).rw(m_mixer, FUNC(segas24_mixer_device::read), FUNC(segas24_mixer_device::write)); + map(0xe00000, 0xe0001f).rw("io1", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0xe40000, 0xe40001).portr("INX"); + map(0xe40002, 0xe40003).portr("INY"); + map(0xe40005, 0xe40005).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xe40006, 0xe40007).nopw(); + map(0xe40008, 0xe40009).portr("INZ"); + map(0xe80000, 0xe8001f).rw("io2", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0xf00000, 0xf03fff).mirror(0x0fc000).ram(); // NVRAM? +} + +void segam1_state::segam1_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xbfff).bankr("soundbank"); + map(0xf000, 0xffff).ram(); +} + +void segam1_state::unkm1_sound_map(address_map &map) +{ + segam1_sound_map(map); + map(0xe000, 0xefff).ram(); +} + +void segam1_state::segam1_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x83).rw(m_ymsnd, FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xa0, 0xa0).w(this, FUNC(segam1_state::sound_a0_bank_w)); + map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read)).nopw(); +} + +void segam1_state::segam1_comms_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0xc000, 0xc000).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xc001, 0xc001).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xe003, 0xe003).nopw(); // ??? +} static INPUT_PORTS_START( segam1 ) diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp index 33536e51c3a..0f7741bd6e4 100644 --- a/src/mame/drivers/segaorun.cpp +++ b/src/mame/drivers/segaorun.cpp @@ -839,35 +839,38 @@ WRITE_LINE_MEMBER(segaorun_state::m68k_reset_callback) // MAIN CPU MEMORY MAP //************************************************************************** -ADDRESS_MAP_START(segaorun_state::outrun_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff) +void segaorun_state::outrun_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff); // these get overwritten by the memory mapper above, but we put them here // so they are properly allocated and tracked for saving - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x200000, 0x201fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram") - AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x500000, 0x507fff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END + map(0x100000, 0x100fff).ram().share("sprites"); + map(0x200000, 0x201fff).ram().share("paletteram"); + map(0x300000, 0x30ffff).ram().share("tileram"); + map(0x400000, 0x400fff).ram().share("textram"); + map(0x500000, 0x507fff).ram().share("workram"); +} -ADDRESS_MAP_START(segaorun_state::decrypted_opcodes_map) - AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") -ADDRESS_MAP_END +void segaorun_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes"); +} //************************************************************************** // SECOND CPU MEMORY MAP //************************************************************************** -ADDRESS_MAP_START(segaorun_state::sub_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x05ffff) AM_ROM AM_SHARE("cpu1rom") - AM_RANGE(0x060000, 0x067fff) AM_MIRROR(0x018000) AM_RAM AM_SHARE("cpu1ram") - AM_RANGE(0x080000, 0x080fff) AM_MIRROR(0x00f000) AM_RAM AM_SHARE("roadram") - AM_RANGE(0x090000, 0x09ffff) AM_DEVREADWRITE("segaic16road", segaic16_road_device, segaic16_road_control_0_r, segaic16_road_control_0_w) -ADDRESS_MAP_END +void segaorun_state::sub_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xfffff); + map(0x000000, 0x05ffff).rom().share("cpu1rom"); + map(0x060000, 0x067fff).mirror(0x018000).ram().share("cpu1ram"); + map(0x080000, 0x080fff).mirror(0x00f000).ram().share("roadram"); + map(0x090000, 0x09ffff).rw(m_segaic16road, FUNC(segaic16_road_device::segaic16_road_control_0_r), FUNC(segaic16_road_device::segaic16_road_control_0_w)); +} @@ -875,19 +878,21 @@ ADDRESS_MAP_END // SOUND CPU MEMORY MAP //************************************************************************** -ADDRESS_MAP_START(segaorun_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segaorun_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVREAD("mapper", sega_315_5195_mapper_device, pread) -ADDRESS_MAP_END +void segaorun_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w)); + map(0xf800, 0xffff).ram(); +} + +void segaorun_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).mirror(0x3f).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread)); +} diff --git a/src/mame/drivers/segapico.cpp b/src/mame/drivers/segapico.cpp index 0b1117f90f3..7e5a5c2d2ab 100644 --- a/src/mame/drivers/segapico.cpp +++ b/src/mame/drivers/segapico.cpp @@ -570,15 +570,16 @@ public: -ADDRESS_MAP_START(copera_state::copera_mem) - AM_RANGE(0x000000, 0x3fffff) AM_ROM +void copera_state::copera_mem(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(pico_68k_io_read, pico_68k_io_write) + map(0x800000, 0x80001f).rw(this, FUNC(copera_state::pico_68k_io_read), FUNC(copera_state::pico_68k_io_write)); - AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) + map(0xc00000, 0xc0001f).rw(m_vdp, FUNC(sega315_5313_device::vdp_r), FUNC(sega315_5313_device::vdp_w)); - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) -ADDRESS_MAP_END + map(0xe00000, 0xe0ffff).ram().mirror(0x1f0000); +} diff --git a/src/mame/drivers/segapm.cpp b/src/mame/drivers/segapm.cpp index 573a1872366..0448e9a3776 100644 --- a/src/mame/drivers/segapm.cpp +++ b/src/mame/drivers/segapm.cpp @@ -39,14 +39,15 @@ uint32_t segapm_state::screen_update_segapm(screen_device &screen, bitmap_ind16 -ADDRESS_MAP_START(segapm_state::segapm_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void segapm_state::segapm_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // A15100 - AM_RANGE(0xe00000, 0xe7ffff) AM_RAM + map(0xe00000, 0xe7ffff).ram(); -ADDRESS_MAP_END +} static INPUT_PORTS_START( segapm ) INPUT_PORTS_END diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index ffca7c35de1..54e66094390 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -960,52 +960,58 @@ void segas16a_state::sjryuko_lamp_changed_w(uint8_t changed, uint8_t newval) // MAIN CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segas16a_state::system16a_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x380000) AM_ROM - AM_RANGE(0x400000, 0x407fff) AM_MIRROR(0xb88000) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_MIRROR(0xb8f000) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_MIRROR(0x3bf800) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_MIRROR(0x3bf000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc43fff) AM_MIRROR(0x39c000) AM_READWRITE(misc_io_r, misc_io_w) - AM_RANGE(0xc60000, 0xc6ffff) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xc70000, 0xc73fff) AM_MIRROR(0x38c000) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16a_state::decrypted_opcodes_map) - AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") -ADDRESS_MAP_END +void segas16a_state::system16a_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).mirror(0x380000).rom(); + map(0x400000, 0x407fff).mirror(0xb88000).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).mirror(0xb8f000).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x440000, 0x4407ff).mirror(0x3bf800).ram().share("sprites"); + map(0x840000, 0x840fff).mirror(0x3bf000).ram().w(this, FUNC(segas16a_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc43fff).mirror(0x39c000).rw(this, FUNC(segas16a_state::misc_io_r), FUNC(segas16a_state::misc_io_w)); + map(0xc60000, 0xc6ffff).r(m_watchdog, FUNC(watchdog_timer_device::reset16_r)); + map(0xc70000, 0xc73fff).mirror(0x38c000).ram().share("nvram"); +} + +void segas16a_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes"); +} //************************************************************************** // SOUND CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segas16a_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe800, 0xe800) AM_READ(sound_data_r) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas16a_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0xe800, 0xe800).r(this, FUNC(segas16a_state::sound_data_r)); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(segas16a_state::sound_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("sound_decrypted_opcodes") -ADDRESS_MAP_END +void segas16a_state::sound_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("sound_decrypted_opcodes"); +} -ADDRESS_MAP_START(segas16a_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(n7751_command_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r) -ADDRESS_MAP_END +void segas16a_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).mirror(0x3f).w(this, FUNC(segas16a_state::n7751_command_w)); + map(0xc0, 0xc0).mirror(0x3f).r(this, FUNC(segas16a_state::sound_data_r)); +} -ADDRESS_MAP_START(segas16a_state::sound_no7751_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_NOP - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(sound_data_r) -ADDRESS_MAP_END +void segas16a_state::sound_no7751_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).mirror(0x3f).noprw(); + map(0xc0, 0xc0).mirror(0x3f).r(this, FUNC(segas16a_state::sound_data_r)); +} @@ -1013,9 +1019,10 @@ ADDRESS_MAP_END // I8751 MCU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segas16a_state::mcu_io_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mcu_io_r, mcu_io_w) -ADDRESS_MAP_END +void segas16a_state::mcu_io_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(segas16a_state::mcu_io_r), FUNC(segas16a_state::mcu_io_w)); +} diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp index a86d6a93f3f..d1b8c9b468c 100644 --- a/src/mame/drivers/segas16b.cpp +++ b/src/mame/drivers/segas16b.cpp @@ -1686,131 +1686,141 @@ WRITE16_MEMBER( segas16b_state::sjryuko_custom_io_w ) // MAIN CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segas16b_state::system16b_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff) +void segas16b_state::system16b_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff); // these get overwritten by the memory mapper above, but we put them here // so they are properly allocated and tracked for saving - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram") - AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END + map(0x100000, 0x1007ff).ram().share("sprites"); + map(0x200000, 0x200fff).ram().share("paletteram"); + map(0x300000, 0x30ffff).ram().share("tileram"); + map(0x400000, 0x400fff).ram().share("textram"); + map(0x500000, 0x503fff).ram().share("workram"); +} -ADDRESS_MAP_START(segas16b_state::decrypted_opcodes_map) - AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") -ADDRESS_MAP_END +void segas16b_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes"); +} -ADDRESS_MAP_START(segas16b_state::system16c_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff) +void segas16b_state::system16c_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff); // these get overwritten by the memory mapper above, but we put them here // so they are properly allocated and tracked for saving - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram") - AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("workram") // only change from system16b_map -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::system16b_bootleg_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x23ffff) AM_RAM // used during startup for decompression - AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(rom_5704_bank_w) - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc43fff) AM_READWRITE(bootleg_custom_io_r, bootleg_custom_io_w) - AM_RANGE(0x123406, 0x123407) AM_WRITE(sound_w16) - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::map_fpointbla) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x02000e, 0x02000f) AM_READ_PORT("P2") - AM_RANGE(0x0a0000, 0x0a001f) AM_RAM AM_SHARE("bootleg_scroll") - AM_RANGE(0x0a0020, 0x0a0027) AM_RAM AM_SHARE("bootleg_page") - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x443002, 0x443003) AM_READ_PORT("SERVICE") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x843018, 0x843019) AM_READ_PORT("DSW1") - AM_RANGE(0xfe0004, 0xfe0005) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfe000c, 0xfe000d) AM_READ_PORT("P1") - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::decrypted_opcodes_map_x) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::decrypted_opcodes_map_fpointbla) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::lockonph_map) + map(0x100000, 0x1007ff).ram().share("sprites"); + map(0x200000, 0x200fff).ram().share("paletteram"); + map(0x300000, 0x30ffff).ram().share("tileram"); + map(0x400000, 0x400fff).ram().share("textram"); + map(0x500000, 0x53ffff).ram().share("workram"); // only change from system16b_map +} + +void segas16b_state::system16b_bootleg_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x23ffff).ram(); // used during startup for decompression + map(0x3f0000, 0x3fffff).w(this, FUNC(segas16b_state::rom_5704_bank_w)); + map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x440000, 0x4407ff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas16b_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc43fff).rw(this, FUNC(segas16b_state::bootleg_custom_io_r), FUNC(segas16b_state::bootleg_custom_io_w)); + map(0x123406, 0x123407).w(this, FUNC(segas16b_state::sound_w16)); + map(0xffc000, 0xffffff).ram().share("workram"); +} + +void segas16b_state::map_fpointbla(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x02000e, 0x02000f).portr("P2"); + map(0x0a0000, 0x0a001f).ram().share("bootleg_scroll"); + map(0x0a0020, 0x0a0027).ram().share("bootleg_page"); + map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x440000, 0x4407ff).ram().share("sprites"); + map(0x443002, 0x443003).portr("SERVICE"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas16b_state::paletteram_w)).share("paletteram"); + map(0x843018, 0x843019).portr("DSW1"); + map(0xfe0005, 0xfe0005).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xfe000c, 0xfe000d).portr("P1"); + map(0xffc000, 0xffffff).ram().share("workram"); +} + +void segas16b_state::decrypted_opcodes_map_x(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom().share("decrypted_opcodes"); +} + +void segas16b_state::decrypted_opcodes_map_fpointbla(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x01ffff).rom().share("decrypted_opcodes"); +} + +void segas16b_state::lockonph_map(address_map &map) +{ // this still appears to have a mapper device, does the hardware use it? should we move this to all be configured by it? - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(rom_5704_bank_w) - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x841fff) AM_RAM_WRITE(philko_paletteram_w) AM_SHARE("paletteram") + map(0x000000, 0x0bffff).rom(); + map(0x3f0000, 0x3fffff).w(this, FUNC(segas16b_state::rom_5704_bank_w)); + map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x440000, 0x4407ff).ram().share("sprites"); + map(0x840000, 0x841fff).ram().w(this, FUNC(segas16b_state::philko_paletteram_w)).share("paletteram"); - AM_RANGE(0xC40000, 0xC40001) AM_WRITENOP // coin counters etc.? + map(0xC40000, 0xC40001).nopw(); // coin counters etc.? - AM_RANGE(0xC41000, 0xC41001) AM_READ_PORT("P1") - AM_RANGE(0xC41002, 0xC41003) AM_READ_PORT("P2") - AM_RANGE(0xC41004, 0xC41005) AM_READ_PORT("SERVICE") + map(0xC41000, 0xC41001).portr("P1"); + map(0xC41002, 0xC41003).portr("P2"); + map(0xC41004, 0xC41005).portr("SERVICE"); - AM_RANGE(0xC42000, 0xC42001) AM_READ_PORT("DSW1") - AM_RANGE(0xC42002, 0xC42003) AM_READ_PORT("DSW2") + map(0xC42000, 0xC42001).portr("DSW1"); + map(0xC42002, 0xC42003).portr("DSW2"); - AM_RANGE(0x777706, 0x777707) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) + map(0x777707, 0x777707).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END + map(0xff0000, 0xffffff).ram().share("workram"); +} -ADDRESS_MAP_START(segas16b_state::fpointbl_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM +void segas16b_state::fpointbl_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") + map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); - AM_RANGE(0x600006, 0x600007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE") - AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1") - AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2") - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2") - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1") + map(0x600007, 0x600007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x601000, 0x601001).portr("SERVICE"); + map(0x601002, 0x601003).portr("P1"); + map(0x601004, 0x601005).portr("P2"); + map(0x600000, 0x600001).portr("DSW2"); + map(0x600002, 0x600003).portr("DSW1"); - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x843000, 0x843001) AM_WRITENOP + map(0x840000, 0x840fff).ram().w(this, FUNC(segas16b_state::paletteram_w)).share("paletteram"); + map(0x843000, 0x843001).nopw(); - AM_RANGE(0xC46000, 0xC4601f) AM_RAM AM_SHARE("bootleg_scroll") - AM_RANGE(0xC46020, 0xC46027) AM_RAM AM_SHARE("bootleg_page") + map(0xC46000, 0xC4601f).ram().share("bootleg_scroll"); + map(0xC46020, 0xC46027).ram().share("bootleg_page"); - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram().share("workram"); +} /* Flash Point (Datsu bootlegs = fpointbl, fpointbj) Has sound latch at $E000 instead of I/O ports $C0-FF */ -ADDRESS_MAP_START(segas16b_state::fpointbl_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas16b_state::fpointbl_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xffff).ram(); +} READ16_MEMBER(segas16b_state::bootleg_custom_io_r) @@ -1828,60 +1838,67 @@ WRITE16_MEMBER(segas16b_state::bootleg_custom_io_w) // SOUND CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segas16b_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank") - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("mapper", sega_315_5195_mapper_device, pread) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::sound_decrypted_opcodes_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("sound_decrypted_opcodes") - AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("mapper", sega_315_5195_mapper_device, pread) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::bootleg_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank") - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas16b_state::bootleg_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segas16b_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xdfff).bankr("soundbank"); + map(0xe800, 0xe800).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread)); + map(0xf800, 0xffff).ram(); +} + +void segas16b_state::sound_decrypted_opcodes_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom().share("sound_decrypted_opcodes"); + map(0x8000, 0xdfff).bankr("soundbank"); +} + +void segas16b_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).mirror(0x3f).w(this, FUNC(segas16b_state::upd7759_control_w)); + map(0x80, 0x80).mirror(0x3f).r(this, FUNC(segas16b_state::upd7759_status_r)).w(m_upd7759, FUNC(upd7759_device::port_w)); + map(0xc0, 0xc0).mirror(0x3f).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread)); +} + +void segas16b_state::bootleg_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xdfff).bankr("soundbank"); + map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xffff).ram(); +} + +void segas16b_state::bootleg_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).mirror(0x3f).w(this, FUNC(segas16b_state::upd7759_control_w)); + map(0x80, 0x80).mirror(0x3f).r(this, FUNC(segas16b_state::upd7759_status_r)).w(m_upd7759, FUNC(upd7759_device::port_w)); + map(0xc0, 0xc0).mirror(0x3f).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} // similar to whizz / other philko games in sidearms.cpp, but with the m6295 -ADDRESS_MAP_START(segas16b_state::lockonph_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas16b_state::lockonph_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(segas16b_state::lockonph_sound_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITENOP // ?? - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segas16b_state::lockonph_sound_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).nopw(); // ?? + map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} //************************************************************************** @@ -1896,11 +1913,12 @@ WRITE8_MEMBER(segas16b_state::spin_68k_w) m_maincpu->spin_until_time(m_maincpu->cycles_to_attotime(20000)); } -ADDRESS_MAP_START(segas16b_state::mcu_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1f) AM_DEVREADWRITE("mapper", sega_315_5195_mapper_device, read, write) -ADDRESS_MAP_END +void segas16b_state::mcu_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)); +} @@ -9588,36 +9606,37 @@ WRITE16_MEMBER( isgsm_state::main_bank_change_w ) membank(ISGSM_MAIN_BANK)->set_base(memregion("maincpu")->base()); } -ADDRESS_MAP_START(isgsm_state::isgsm_map) - - AM_RANGE(0x000000, 0x0fffff) AM_ROMBANK(ISGSM_MAIN_BANK) AM_REGION("bios", 0) // this area is ALWAYS read-only, even when the game is banked in - AM_RANGE(0x200000, 0x23ffff) AM_RAM // used during startup for decompression - AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(rom_5704_bank_w) - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc43fff) AM_READWRITE(standard_io_r, standard_io_w) - - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(data_w) // writes decompressed data here (copied from RAM..) - AM_RANGE(0xe00002, 0xe00003) AM_WRITE(datatype_w) // selects which 'type' of data we're writing - AM_RANGE(0xe00004, 0xe00005) AM_WRITE(addr_high_w) // high address, and some mode bits - AM_RANGE(0xe00006, 0xe00007) AM_WRITE(addr_low_w) // low address - - AM_RANGE(0xe80000, 0xe80001) AM_READ(cart_data_r) // 8-bit port that the entire cart can be read from - AM_RANGE(0xe80002, 0xe80003) AM_READ_PORT("CARDDSW") - AM_RANGE(0xe80004, 0xe80005) AM_WRITE(cart_addr_high_w) - AM_RANGE(0xe80006, 0xe80007) AM_WRITE(cart_addr_low_w) - AM_RANGE(0xe80008, 0xe80009) AM_READWRITE(cart_security_high_r, cart_security_high_w) // 32-bit bitswap device.. - AM_RANGE(0xe8000a, 0xe8000b) AM_READWRITE(cart_security_low_r, cart_security_low_w) - - AM_RANGE(0xee0000, 0xefffff) AM_ROM AM_REGION("gamecart_rgn", 0) // only the first 0x20000 bytes of the cart are visible here.. - - AM_RANGE(0xfe0006, 0xfe0007) AM_WRITE(sound_w16) - AM_RANGE(0xfe0008, 0xfe0009) AM_WRITE(sound_reset_w) - AM_RANGE(0xfe000a, 0xfe000b) AM_WRITE(main_bank_change_w) - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END +void isgsm_state::isgsm_map(address_map &map) +{ + + map(0x000000, 0x0fffff).bankr(ISGSM_MAIN_BANK).region("bios", 0); // this area is ALWAYS read-only, even when the game is banked in + map(0x200000, 0x23ffff).ram(); // used during startup for decompression + map(0x3f0000, 0x3fffff).w(this, FUNC(isgsm_state::rom_5704_bank_w)); + map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x440000, 0x4407ff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(isgsm_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc43fff).rw(this, FUNC(isgsm_state::standard_io_r), FUNC(isgsm_state::standard_io_w)); + + map(0xe00000, 0xe00001).w(this, FUNC(isgsm_state::data_w)); // writes decompressed data here (copied from RAM..) + map(0xe00002, 0xe00003).w(this, FUNC(isgsm_state::datatype_w)); // selects which 'type' of data we're writing + map(0xe00004, 0xe00005).w(this, FUNC(isgsm_state::addr_high_w)); // high address, and some mode bits + map(0xe00006, 0xe00007).w(this, FUNC(isgsm_state::addr_low_w)); // low address + + map(0xe80000, 0xe80001).r(this, FUNC(isgsm_state::cart_data_r)); // 8-bit port that the entire cart can be read from + map(0xe80002, 0xe80003).portr("CARDDSW"); + map(0xe80004, 0xe80005).w(this, FUNC(isgsm_state::cart_addr_high_w)); + map(0xe80006, 0xe80007).w(this, FUNC(isgsm_state::cart_addr_low_w)); + map(0xe80008, 0xe80009).rw(this, FUNC(isgsm_state::cart_security_high_r), FUNC(isgsm_state::cart_security_high_w)); // 32-bit bitswap device.. + map(0xe8000a, 0xe8000b).rw(this, FUNC(isgsm_state::cart_security_low_r), FUNC(isgsm_state::cart_security_low_w)); + + map(0xee0000, 0xefffff).rom().region("gamecart_rgn", 0); // only the first 0x20000 bytes of the cart are visible here.. + + map(0xfe0006, 0xfe0007).w(this, FUNC(isgsm_state::sound_w16)); + map(0xfe0008, 0xfe0009).w(this, FUNC(isgsm_state::sound_reset_w)); + map(0xfe000a, 0xfe000b).w(this, FUNC(isgsm_state::main_bank_change_w)); + map(0xffc000, 0xffffff).ram().share("workram"); +} diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp index 6d6faf7efd8..0a6605a0b7c 100644 --- a/src/mame/drivers/segas18.cpp +++ b/src/mame/drivers/segas18.cpp @@ -613,22 +613,24 @@ WRITE8_MEMBER( segas18_state::soundbank_w ) * *************************************/ -ADDRESS_MAP_START(segas18_state::system18_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0xffffff) AM_DEVREADWRITE8("mapper", sega_315_5195_mapper_device, read, write, 0x00ff) +void segas18_state::system18_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff); // these get overwritten by the memory mapper above, but we put them here // so they are properly allocated and tracked for saving - AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("tileram") - AM_RANGE(0x400000, 0x400fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x500000, 0x503fff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END + map(0x100000, 0x1007ff).ram().share("sprites"); + map(0x200000, 0x200fff).ram().share("paletteram"); + map(0x300000, 0x30ffff).ram().share("tileram"); + map(0x400000, 0x400fff).ram().share("textram"); + map(0x500000, 0x503fff).ram().share("workram"); +} -ADDRESS_MAP_START(segas18_state::decrypted_opcodes_map) - AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") -ADDRESS_MAP_END +void segas18_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes"); +} /************************************* * @@ -636,23 +638,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(segas18_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0x10000) - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_device, rf5c68_w) - AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas18_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x9fff).rom().region("soundcpu", 0x10000); + map(0xa000, 0xbfff).bankr("soundbank"); + map(0xc000, 0xc00f).mirror(0x0ff0).w("rfsnd", FUNC(rf5c68_device::rf5c68_w)); + map(0xd000, 0xdfff).rw("rfsnd", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); + map(0xe000, 0xffff).ram(); +} -ADDRESS_MAP_START(segas18_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym1", ym3438_device, read, write) - AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym2", ym3438_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1f) AM_WRITE(soundbank_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_DEVREADWRITE("mapper", sega_315_5195_mapper_device, pread, pwrite) -ADDRESS_MAP_END +void segas18_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).mirror(0x0c).rw("ym1", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x90, 0x93).mirror(0x0c).rw("ym2", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xa0, 0xa0).mirror(0x1f).w(this, FUNC(segas18_state::soundbank_w)); + map(0xc0, 0xc0).mirror(0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::pread), FUNC(sega_315_5195_mapper_device::pwrite)); +} @@ -662,11 +666,12 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(segas18_state::mcu_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) // port 2 not used for high order address byte - AM_RANGE(0x00, 0x1f) AM_DEVREADWRITE("mapper", sega_315_5195_mapper_device, read, write) -ADDRESS_MAP_END +void segas18_state::mcu_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // port 2 not used for high order address byte + map(0x00, 0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)); +} diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp index 4f4fed049fb..62db06b7ee1 100644 --- a/src/mame/drivers/segas24.cpp +++ b/src/mame/drivers/segas24.cpp @@ -1064,51 +1064,54 @@ fc-ff ramhi */ -ADDRESS_MAP_START(segas24_state::system24_cpu1_map) - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x040000) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x080000, 0x0bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") - AM_RANGE(0x100000, 0x13ffff) AM_MIRROR(0x0c0000) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) - AM_RANGE(0x220000, 0x220001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Horizontal split position (ABSEL) */ - AM_RANGE(0x240000, 0x240001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Scanline trigger position (XHOUT) */ - AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Frame trigger position (XVOUT) */ - AM_RANGE(0x270000, 0x270001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Synchronization mode */ - AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) - AM_RANGE(0x400000, 0x403fff) AM_MIRROR(0x1f8000) AM_READWRITE(sys16_paletteram_r, sys16_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write) - AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite_device, read, write) - AM_RANGE(0x800000, 0x80003f) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0x800040, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(iod_r, iod_w) - AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) - AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w) - AM_RANGE(0xb80000, 0xbbffff) AM_ROMBANK("bank1") - AM_RANGE(0xbc0000, 0xbc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w) - AM_RANGE(0xbc0002, 0xbc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) - AM_RANGE(0xbc0004, 0xbc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff) - AM_RANGE(0xbc0006, 0xbc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w) - AM_RANGE(0xc80000, 0xcbffff) AM_ROMBANK("bank2") - AM_RANGE(0xcc0000, 0xcc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w) - AM_RANGE(0xcc0002, 0xcc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) - AM_RANGE(0xcc0004, 0xcc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff) - AM_RANGE(0xcc0006, 0xcc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w) - AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu") - AM_RANGE(0xf80000, 0xfbffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas24_state::roughrac_cpu1_map) - AM_IMPORT_FROM(system24_cpu1_map) - AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas24_state::hotrod_cpu1_map) - AM_IMPORT_FROM(system24_cpu1_map) - AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xc00008, 0xc0000f) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc1", msm6253_device, d7_r, select_w, 0x00ff) - AM_RANGE(0xc00012, 0xc00013) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc2", msm6253_device, d7_r, select_w, 0x00ff) -ADDRESS_MAP_END +void segas24_state::system24_cpu1_map(address_map &map) +{ + map(0x000000, 0x03ffff).mirror(0x040000).rom().region("maincpu", 0); + map(0x080000, 0x0bffff).mirror(0x040000).ram().share("share1"); + map(0x100000, 0x13ffff).mirror(0x0c0000).rom().region("maincpu", 0); + map(0x200000, 0x20ffff).mirror(0x110000).rw("tile", FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)); + map(0x220000, 0x220001).mirror(0x11fffe).nopw(); /* Horizontal split position (ABSEL) */ + map(0x240000, 0x240001).mirror(0x11fffe).nopw(); /* Scanline trigger position (XHOUT) */ + map(0x260000, 0x260001).mirror(0x10fffe).nopw(); /* Frame trigger position (XVOUT) */ + map(0x270000, 0x270001).mirror(0x10fffe).nopw(); /* Synchronization mode */ + map(0x280000, 0x29ffff).mirror(0x160000).rw("tile", FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)); + map(0x400000, 0x403fff).mirror(0x1f8000).rw(this, FUNC(segas24_state::sys16_paletteram_r), FUNC(segas24_state::sys16_paletteram_w)).share("paletteram"); + map(0x404000, 0x40401f).mirror(0x1fbfe0).rw("mixer", FUNC(segas24_mixer_device::read), FUNC(segas24_mixer_device::write)); + map(0x600000, 0x63ffff).mirror(0x180000).rw("sprite", FUNC(segas24_sprite_device::read), FUNC(segas24_sprite_device::write)); + map(0x800000, 0x80003f).mirror(0x1ffe00).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0x800040, 0x80007f).mirror(0x1ffe00).rw(this, FUNC(segas24_state::iod_r), FUNC(segas24_state::iod_w)); + map(0x800100, 0x800103).mirror(0x1ffe00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0xa00000, 0xa00007).mirror(0x0ffff8).rw(this, FUNC(segas24_state::irq_r), FUNC(segas24_state::irq_w)); + map(0xb00000, 0xb00007).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_r), FUNC(segas24_state::fdc_w)); + map(0xb00008, 0xb0000f).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_status_r), FUNC(segas24_state::fdc_ctrl_w)); + map(0xb80000, 0xbbffff).bankr("bank1"); + map(0xbc0000, 0xbc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w)); + map(0xbc0003, 0xbc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w)); + map(0xbc0005, 0xbc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w)); + map(0xbc0006, 0xbc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w)); + map(0xc80000, 0xcbffff).bankr("bank2"); + map(0xcc0000, 0xcc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w)); + map(0xcc0003, 0xcc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w)); + map(0xcc0005, 0xcc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w)); + map(0xcc0006, 0xcc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w)); + map(0xf00000, 0xf3ffff).mirror(0x040000).ram().share("subcpu"); + map(0xf80000, 0xfbffff).mirror(0x040000).ram().share("share1"); +} + +void segas24_state::roughrac_cpu1_map(address_map &map) +{ + system24_cpu1_map(map); + map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd4701", FUNC(upd4701_device::read_xy)).umask16(0x00ff); +} + +void segas24_state::hotrod_cpu1_map(address_map &map) +{ + system24_cpu1_map(map); + map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xc00008, 0xc0000f).mirror(0x07ffe0).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xc00011, 0xc00011).mirror(0x07ffec).rw("adc1", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w)); + map(0xc00013, 0xc00013).mirror(0x07ffec).rw("adc2", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w)); +} @@ -1118,55 +1121,59 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(segas24_state::system24_cpu2_map) - AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu") - AM_RANGE(0x080000, 0x0bffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") - AM_RANGE(0x100000, 0x13ffff) AM_MIRROR(0x0c0000) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x110000) AM_DEVREADWRITE("tile", segas24_tile_device, tile_r, tile_w) - AM_RANGE(0x220000, 0x220001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Horizontal split position (ABSEL) */ - AM_RANGE(0x240000, 0x240001) AM_MIRROR(0x11fffe) AM_WRITENOP /* Scanline trigger position (XHOUT) */ - AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Frame trigger position (XVOUT) */ - AM_RANGE(0x270000, 0x270001) AM_MIRROR(0x10fffe) AM_WRITENOP /* Synchronization mode */ - AM_RANGE(0x280000, 0x29ffff) AM_MIRROR(0x160000) AM_DEVREADWRITE("tile", segas24_tile_device, char_r, char_w) - AM_RANGE(0x400000, 0x403fff) AM_MIRROR(0x1f8000) AM_READWRITE(sys16_paletteram_r, sys16_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x404000, 0x40401f) AM_MIRROR(0x1fbfe0) AM_DEVREADWRITE("mixer", segas24_mixer_device, read, write) - AM_RANGE(0x600000, 0x63ffff) AM_MIRROR(0x180000) AM_DEVREADWRITE("sprite", segas24_sprite_device, read, write) - AM_RANGE(0x800000, 0x80003f) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0x800040, 0x80007f) AM_MIRROR(0x1ffe00) AM_READWRITE(iod_r, iod_w) - AM_RANGE(0x800100, 0x800103) AM_MIRROR(0x1ffe00) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xa00000, 0xa00007) AM_MIRROR(0x0ffff8) AM_READWRITE(irq_r, irq_w) - AM_RANGE(0xb00000, 0xb00007) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0xb00008, 0xb0000f) AM_MIRROR(0x07fff0) AM_READWRITE(fdc_status_r, fdc_ctrl_w) - AM_RANGE(0xb80000, 0xbbffff) AM_ROMBANK("bank1") - AM_RANGE(0xbc0000, 0xbc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w) - AM_RANGE(0xbc0002, 0xbc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) - AM_RANGE(0xbc0004, 0xbc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff) - AM_RANGE(0xbc0006, 0xbc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w) - AM_RANGE(0xc80000, 0xcbffff) AM_ROMBANK("bank2") - AM_RANGE(0xcc0000, 0xcc0001) AM_MIRROR(0x03fff8) AM_READWRITE(curbank_r, curbank_w) - AM_RANGE(0xcc0002, 0xcc0003) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_mode_r, frc_mode_w,0x00ff) - AM_RANGE(0xcc0004, 0xcc0005) AM_MIRROR(0x03fff8) AM_READWRITE8(frc_r, frc_w,0x00ff) - AM_RANGE(0xcc0006, 0xcc0007) AM_MIRROR(0x03fff8) AM_READWRITE(mlatch_r, mlatch_w) - AM_RANGE(0xf00000, 0xf3ffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("subcpu") - AM_RANGE(0xf80000, 0xfbffff) AM_MIRROR(0x040000) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas24_state::roughrac_cpu2_map) - AM_IMPORT_FROM(system24_cpu2_map) - AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas24_state::hotrod_cpu2_map) - AM_IMPORT_FROM(system24_cpu2_map) - AM_RANGE(0xc00000, 0xc00007) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xc00008, 0xc0000f) AM_MIRROR(0x07ffe0) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xc00010, 0xc00011) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc1", msm6253_device, d7_r, select_w, 0x00ff) - AM_RANGE(0xc00012, 0xc00013) AM_MIRROR(0x07ffec) AM_DEVREADWRITE8("adc2", msm6253_device, d7_r, select_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas24_state::decrypted_opcodes_map) - AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") -ADDRESS_MAP_END +void segas24_state::system24_cpu2_map(address_map &map) +{ + map(0x000000, 0x03ffff).mirror(0x040000).ram().share("subcpu"); + map(0x080000, 0x0bffff).mirror(0x040000).ram().share("share1"); + map(0x100000, 0x13ffff).mirror(0x0c0000).rom().region("maincpu", 0); + map(0x200000, 0x20ffff).mirror(0x110000).rw("tile", FUNC(segas24_tile_device::tile_r), FUNC(segas24_tile_device::tile_w)); + map(0x220000, 0x220001).mirror(0x11fffe).nopw(); /* Horizontal split position (ABSEL) */ + map(0x240000, 0x240001).mirror(0x11fffe).nopw(); /* Scanline trigger position (XHOUT) */ + map(0x260000, 0x260001).mirror(0x10fffe).nopw(); /* Frame trigger position (XVOUT) */ + map(0x270000, 0x270001).mirror(0x10fffe).nopw(); /* Synchronization mode */ + map(0x280000, 0x29ffff).mirror(0x160000).rw("tile", FUNC(segas24_tile_device::char_r), FUNC(segas24_tile_device::char_w)); + map(0x400000, 0x403fff).mirror(0x1f8000).rw(this, FUNC(segas24_state::sys16_paletteram_r), FUNC(segas24_state::sys16_paletteram_w)).share("paletteram"); + map(0x404000, 0x40401f).mirror(0x1fbfe0).rw("mixer", FUNC(segas24_mixer_device::read), FUNC(segas24_mixer_device::write)); + map(0x600000, 0x63ffff).mirror(0x180000).rw("sprite", FUNC(segas24_sprite_device::read), FUNC(segas24_sprite_device::write)); + map(0x800000, 0x80003f).mirror(0x1ffe00).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0x800040, 0x80007f).mirror(0x1ffe00).rw(this, FUNC(segas24_state::iod_r), FUNC(segas24_state::iod_w)); + map(0x800100, 0x800103).mirror(0x1ffe00).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0xa00000, 0xa00007).mirror(0x0ffff8).rw(this, FUNC(segas24_state::irq_r), FUNC(segas24_state::irq_w)); + map(0xb00000, 0xb00007).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_r), FUNC(segas24_state::fdc_w)); + map(0xb00008, 0xb0000f).mirror(0x07fff0).rw(this, FUNC(segas24_state::fdc_status_r), FUNC(segas24_state::fdc_ctrl_w)); + map(0xb80000, 0xbbffff).bankr("bank1"); + map(0xbc0000, 0xbc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w)); + map(0xbc0003, 0xbc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w)); + map(0xbc0005, 0xbc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w)); + map(0xbc0006, 0xbc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w)); + map(0xc80000, 0xcbffff).bankr("bank2"); + map(0xcc0000, 0xcc0001).mirror(0x03fff8).rw(this, FUNC(segas24_state::curbank_r), FUNC(segas24_state::curbank_w)); + map(0xcc0003, 0xcc0003).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_mode_r), FUNC(segas24_state::frc_mode_w)); + map(0xcc0005, 0xcc0005).mirror(0x03fff8).rw(this, FUNC(segas24_state::frc_r), FUNC(segas24_state::frc_w)); + map(0xcc0006, 0xcc0007).mirror(0x03fff8).rw(this, FUNC(segas24_state::mlatch_r), FUNC(segas24_state::mlatch_w)); + map(0xf00000, 0xf3ffff).mirror(0x040000).ram().share("subcpu"); + map(0xf80000, 0xfbffff).mirror(0x040000).ram().share("share1"); +} + +void segas24_state::roughrac_cpu2_map(address_map &map) +{ + system24_cpu2_map(map); + map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd4701", FUNC(upd4701_device::read_xy)).umask16(0x00ff); +} + +void segas24_state::hotrod_cpu2_map(address_map &map) +{ + system24_cpu2_map(map); + map(0xc00000, 0xc00007).mirror(0x07ffe0).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xc00008, 0xc0000f).mirror(0x07ffe0).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xc00011, 0xc00011).mirror(0x07ffec).rw("adc1", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w)); + map(0xc00013, 0xc00013).mirror(0x07ffec).rw("adc2", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::select_w)); +} + +void segas24_state::decrypted_opcodes_map(address_map &map) +{ + map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes"); +} /************************************* * diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp index f54f96e912a..0ae765ae9a7 100644 --- a/src/mame/drivers/segas32.cpp +++ b/src/mame/drivers/segas32.cpp @@ -1050,51 +1050,53 @@ WRITE8_MEMBER(segas32_state::sound_dummy_w) * *************************************/ -ADDRESS_MAP_START(segas32_state::system32_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_MIRROR(0x0f0000) AM_RAM AM_SHARE("workram") - AM_RANGE(0x300000, 0x31ffff) AM_MIRROR(0x0e0000) AM_READWRITE(system32_videoram_r, system32_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x0e0000) AM_READWRITE(system32_spriteram_r, system32_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x50000f) AM_MIRROR(0x0ffff0) AM_READWRITE8(sprite_control_r, sprite_control_w, 0x00ff) - AM_RANGE(0x600000, 0x60ffff) AM_MIRROR(0x0e0000) AM_READWRITE(system32_paletteram_r, system32_paletteram_w) AM_SHARE("paletteram.0") - AM_RANGE(0x610000, 0x61007f) AM_MIRROR(0x0eff80) AM_READWRITE(system32_mixer_r, system32_mixer_w) - AM_RANGE(0x700000, 0x701fff) AM_MIRROR(0x0fe000) AM_READWRITE8(shared_ram_r, shared_ram_w, 0xffff) - AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE8("s32comm", s32comm_device, share_r, share_w, 0x00ff) - AM_RANGE(0x801000, 0x801001) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x00ff) - AM_RANGE(0x801002, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff) - AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("io_chip", sega_315_5296_device, read, write, 0x00ff) +void segas32_state::system32_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x20ffff).mirror(0x0f0000).ram().share("workram"); + map(0x300000, 0x31ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_videoram_r), FUNC(segas32_state::system32_videoram_w)).share("videoram"); + map(0x400000, 0x41ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_spriteram_r), FUNC(segas32_state::system32_spriteram_w)).share("spriteram"); + map(0x500000, 0x50000f).mirror(0x0ffff0).rw(this, FUNC(segas32_state::sprite_control_r), FUNC(segas32_state::sprite_control_w)).umask16(0x00ff); + map(0x600000, 0x60ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_paletteram_r), FUNC(segas32_state::system32_paletteram_w)).share("paletteram.0"); + map(0x610000, 0x61007f).mirror(0x0eff80).rw(this, FUNC(segas32_state::system32_mixer_r), FUNC(segas32_state::system32_mixer_w)); + map(0x700000, 0x701fff).mirror(0x0fe000).rw(this, FUNC(segas32_state::shared_ram_r), FUNC(segas32_state::shared_ram_w)); + map(0x800000, 0x800fff).rw("s32comm", FUNC(s32comm_device::share_r), FUNC(s32comm_device::share_w)).umask16(0x00ff); + map(0x801000, 0x801000).rw("s32comm", FUNC(s32comm_device::cn_r), FUNC(s32comm_device::cn_w)); + map(0x801002, 0x801002).rw("s32comm", FUNC(s32comm_device::fg_r), FUNC(s32comm_device::fg_w)); + map(0xc00000, 0xc0001f).mirror(0x0fff80).rw("io_chip", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); // 0xc00040-0xc0007f - I/O expansion area - AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE8(int_control_r, int_control_w, 0xffff) - AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE(random_number_r, random_number_w) - AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0xd00000, 0xd0000f).mirror(0x07fff0).rw(this, FUNC(segas32_state::int_control_r), FUNC(segas32_state::int_control_w)); + map(0xd80000, 0xdfffff).rw(this, FUNC(segas32_state::random_number_r), FUNC(segas32_state::random_number_w)); + map(0xf00000, 0xffffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(segas32_state::multi32_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_MIRROR(0x0e0000) AM_RAM - AM_RANGE(0x300000, 0x31ffff) AM_MIRROR(0x0e0000) AM_READWRITE16(system32_videoram_r, system32_videoram_w, 0xffffffff) AM_SHARE("videoram") - AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x0e0000) AM_READWRITE(multi32_spriteram_r, multi32_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x50000f) AM_MIRROR(0x0ffff0) AM_READWRITE8(sprite_control_r, sprite_control_w, 0x00ff00ff) - AM_RANGE(0x600000, 0x60ffff) AM_MIRROR(0x060000) AM_READWRITE(multi32_paletteram_0_r, multi32_paletteram_0_w) AM_SHARE("paletteram.0") - AM_RANGE(0x610000, 0x61007f) AM_MIRROR(0x06ff80) AM_WRITE(multi32_mixer_0_w) - AM_RANGE(0x680000, 0x68ffff) AM_MIRROR(0x060000) AM_READWRITE(multi32_paletteram_1_r, multi32_paletteram_1_w) AM_SHARE("paletteram.1") - AM_RANGE(0x690000, 0x69007f) AM_MIRROR(0x06ff80) AM_WRITE(multi32_mixer_1_w) - AM_RANGE(0x700000, 0x701fff) AM_MIRROR(0x0fe000) AM_READWRITE8(shared_ram_r, shared_ram_w, 0xffffffff) - AM_RANGE(0x800000, 0x800fff) AM_DEVREADWRITE8("s32comm", s32comm_device, share_r, share_w, 0x00ff00ff) - AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, cn_r, cn_w, 0x000000ff) - AM_RANGE(0x801000, 0x801003) AM_DEVREADWRITE8("s32comm", s32comm_device, fg_r, fg_w, 0x00ff0000) - AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("io_chip_0", sega_315_5296_device, read, write, 0x00ff00ff) +void segas32_state::multi32_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xffffff); + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x21ffff).mirror(0x0e0000).ram(); + map(0x300000, 0x31ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::system32_videoram_r), FUNC(segas32_state::system32_videoram_w)).share("videoram"); + map(0x400000, 0x41ffff).mirror(0x0e0000).rw(this, FUNC(segas32_state::multi32_spriteram_r), FUNC(segas32_state::multi32_spriteram_w)).share("spriteram"); + map(0x500000, 0x50000f).mirror(0x0ffff0).rw(this, FUNC(segas32_state::sprite_control_r), FUNC(segas32_state::sprite_control_w)).umask32(0x00ff00ff); + map(0x600000, 0x60ffff).mirror(0x060000).rw(this, FUNC(segas32_state::multi32_paletteram_0_r), FUNC(segas32_state::multi32_paletteram_0_w)).share("paletteram.0"); + map(0x610000, 0x61007f).mirror(0x06ff80).w(this, FUNC(segas32_state::multi32_mixer_0_w)); + map(0x680000, 0x68ffff).mirror(0x060000).rw(this, FUNC(segas32_state::multi32_paletteram_1_r), FUNC(segas32_state::multi32_paletteram_1_w)).share("paletteram.1"); + map(0x690000, 0x69007f).mirror(0x06ff80).w(this, FUNC(segas32_state::multi32_mixer_1_w)); + map(0x700000, 0x701fff).mirror(0x0fe000).rw(this, FUNC(segas32_state::shared_ram_r), FUNC(segas32_state::shared_ram_w)); + map(0x800000, 0x800fff).rw("s32comm", FUNC(s32comm_device::share_r), FUNC(s32comm_device::share_w)).umask32(0x00ff00ff); + map(0x801000, 0x801000).rw("s32comm", FUNC(s32comm_device::cn_r), FUNC(s32comm_device::cn_w)); + map(0x801002, 0x801002).rw("s32comm", FUNC(s32comm_device::fg_r), FUNC(s32comm_device::fg_w)); + map(0xc00000, 0xc0001f).mirror(0x07ff80).rw("io_chip_0", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask32(0x00ff00ff); // 0xc00040-0xc0007f - I/O expansion area 0 - AM_RANGE(0xc80000, 0xc8001f) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("io_chip_1", sega_315_5296_device, read, write, 0x00ff00ff) + map(0xc80000, 0xc8001f).mirror(0x07ff80).rw("io_chip_1", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask32(0x00ff00ff); // 0xc80040-0xc8007f - I/O expansion area 1 - AM_RANGE(0xd00000, 0xd0000f) AM_MIRROR(0x07fff0) AM_READWRITE8(int_control_r, int_control_w, 0xffffffff) - AM_RANGE(0xd80000, 0xdfffff) AM_READWRITE16(random_number_r, random_number_w, 0xffffffff) - AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0xd00000, 0xd0000f).mirror(0x07fff0).rw(this, FUNC(segas32_state::int_control_r), FUNC(segas32_state::int_control_w)); + map(0xd80000, 0xdfffff).rw(this, FUNC(segas32_state::random_number_r), FUNC(segas32_state::random_number_w)); + map(0xf00000, 0xffffff).rom().region("maincpu", 0); +} @@ -1104,25 +1106,27 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(segas32_state::system32_sound_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0) - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x0ff0) AM_DEVWRITE("rfsnd", rf5c68_device, rf5c68_w) - AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("rfsnd", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("z80_shared_ram") -ADDRESS_MAP_END +void segas32_state::system32_sound_map(address_map &map) +{ + map(0x0000, 0x9fff).rom().region("soundcpu", 0); + map(0xa000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc00f).mirror(0x0ff0).w("rfsnd", FUNC(rf5c68_device::rf5c68_w)); + map(0xd000, 0xdfff).rw("rfsnd", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); + map(0xe000, 0xffff).ram().share("z80_shared_ram"); +} -ADDRESS_MAP_START(segas32_state::system32_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym1", ym3438_device, read, write) - AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym2", ym3438_device, read, write) - AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w) - AM_RANGE(0xb0, 0xbf) AM_WRITE(sound_bank_hi_w) - AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w) - AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x04) AM_WRITE(sound_int_control_hi_w) - AM_RANGE(0xf1, 0xf1) AM_READWRITE(sound_dummy_r, sound_dummy_w) -ADDRESS_MAP_END +void segas32_state::system32_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).mirror(0x0c).rw("ym1", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x90, 0x93).mirror(0x0c).rw("ym2", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xa0, 0xaf).w(this, FUNC(segas32_state::sound_bank_lo_w)); + map(0xb0, 0xbf).w(this, FUNC(segas32_state::sound_bank_hi_w)); + map(0xc0, 0xcf).w(this, FUNC(segas32_state::sound_int_control_lo_w)); + map(0xd0, 0xd3).mirror(0x04).w(this, FUNC(segas32_state::sound_int_control_hi_w)); + map(0xf1, 0xf1).rw(this, FUNC(segas32_state::sound_dummy_r), FUNC(segas32_state::sound_dummy_w)); +} ADDRESS_MAP_START(segas32_state::multi32_sound_map) @@ -2285,14 +2289,15 @@ segas32_analog_state::segas32_analog_state(const machine_config &mconfig, device -ADDRESS_MAP_START(segas32_trackball_state::system32_trackball_map) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(system32_map) +void segas32_trackball_state::system32_trackball_map(address_map &map) +{ + map.unmap_value_high(); + system32_map(map); //AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_READWRITE8(sonic_custom_io_r, sonic_custom_io_w, 0x00ff) - AM_RANGE(0xc00040, 0xc00047) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("upd1", upd4701_device, read_xy, reset_xy, 0x00ff) - AM_RANGE(0xc00048, 0xc0004f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("upd2", upd4701_device, read_xy, reset_xy, 0x00ff) - AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("upd3", upd4701_device, read_xy, reset_xy, 0x00ff) -ADDRESS_MAP_END + map(0xc00040, 0xc00047).mirror(0x0fff80).rw("upd1", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy)).umask16(0x00ff); + map(0xc00048, 0xc0004f).mirror(0x0fff80).rw("upd2", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy)).umask16(0x00ff); + map(0xc00050, 0xc00057).mirror(0x0fff80).rw("upd3", FUNC(upd4701_device::read_xy), FUNC(upd4701_device::reset_xy)).umask16(0x00ff); +} MACHINE_CONFIG_START(segas32_trackball_state::device_add_mconfig) segas32_state::device_add_mconfig(config); @@ -2572,13 +2577,14 @@ sega_multi32_state::sega_multi32_state(const machine_config &mconfig, device_typ } -ADDRESS_MAP_START(sega_multi32_analog_state::multi32_analog_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_IMPORT_FROM(multi32_map) - AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff00ff) - AM_RANGE(0xc00060, 0xc00063) AM_MIRROR(0x07ff80) AM_WRITE8(analog_bank_w, 0x000000ff) -ADDRESS_MAP_END +void sega_multi32_analog_state::multi32_analog_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xffffff); + multi32_map(map); + map(0xc00050, 0xc00057).mirror(0x07ff80).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask32(0x00ff00ff); + map(0xc00060, 0xc00060).mirror(0x07ff80).w(this, FUNC(sega_multi32_analog_state::analog_bank_w)); +} MACHINE_CONFIG_START(sega_multi32_analog_state::device_add_mconfig) sega_multi32_state::device_add_mconfig(config); diff --git a/src/mame/drivers/segasp.cpp b/src/mame/drivers/segasp.cpp index 29e62259442..afd12c50bef 100644 --- a/src/mame/drivers/segasp.cpp +++ b/src/mame/drivers/segasp.cpp @@ -178,49 +178,50 @@ READ64_MEMBER(segasp_state::sp_io_r) } // todo, base DC / Naomi stuff should be in it's own map, differences only here, same for Naomi 2 etc. -ADDRESS_MAP_START(segasp_state::segasp_map) +void segasp_state::segasp_map(address_map &map) +{ /* Area 0 */ - AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) // BIOS + map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0); // BIOS - AM_RANGE(0x005f6800, 0x005f69ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_sysctrl_r, dc_sysctrl_w ) - AM_RANGE(0x005f6c00, 0x005f6cff) AM_MIRROR(0x02000000) AM_DEVICE32( "maple_dc", maple_dc_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7000, 0x005f70ff) AM_MIRROR(0x02000000) AM_DEVICE16( "rom_board", naomi_board, submap, 0x0000ffff0000ffffU ) - AM_RANGE(0x005f7400, 0x005f74ff) AM_MIRROR(0x02000000) AM_DEVICE32( "rom_board", naomi_g1_device, amap, 0xffffffffffffffffU ) - AM_RANGE(0x005f7800, 0x005f78ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_g2_ctrl_r, dc_g2_ctrl_w ) - AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, pd_dma_map, 0xffffffffffffffffU) - AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_DEVICE32("powervr2", powervr2_device, ta_map, 0xffffffffffffffffU) - AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE(dc_modem_r, dc_modem_w ) - AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE32(dc_aica_reg_r, dc_aica_reg_w, 0xffffffffffffffffU) - AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_DEVREADWRITE16("aicartc", aicartc_device, read, write, 0x0000ffff0000ffffU ) + map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_sysctrl_r), FUNC(segasp_state::dc_sysctrl_w)); + map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap)); + map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff); + map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap)); + map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_g2_ctrl_r), FUNC(segasp_state::dc_g2_ctrl_w)); + map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map)); + map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map)); + map(0x00600000, 0x006007ff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_modem_r), FUNC(segasp_state::dc_modem_w)); + map(0x00700000, 0x00707fff).mirror(0x02000000).rw(this, FUNC(segasp_state::dc_aica_reg_r), FUNC(segasp_state::dc_aica_reg_w)); + map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff); - AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE(sh4_soundram_r, sh4_soundram_w) // sound RAM (8 MB) + map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(this, FUNC(segasp_state::sh4_soundram_r), FUNC(segasp_state::sh4_soundram_w)); // sound RAM (8 MB) /* External Device */ - AM_RANGE(0x01000000, 0x0100ffff) AM_RAM // banked access to ROM/NET board address space, mainly backup SRAM and ATA - AM_RANGE(0x01010000, 0x01010007) AM_READWRITE(sp_bank_r, sp_bank_w ) + map(0x01000000, 0x0100ffff).ram(); // banked access to ROM/NET board address space, mainly backup SRAM and ATA + map(0x01010000, 0x01010007).rw(this, FUNC(segasp_state::sp_bank_r), FUNC(segasp_state::sp_bank_w)); // AM_RANGE(0x01010080, 0x01010087) IRQ pending/reset, ATA control - AM_RANGE(0x01010100, 0x01010127) AM_READ(sp_io_r) - AM_RANGE(0x01010128, 0x0101012f) AM_READWRITE(sp_eeprom_r, sp_eeprom_w ) - AM_RANGE(0x01010150, 0x01010157) AM_READ(sp_rombdflg_r) + map(0x01010100, 0x01010127).r(this, FUNC(segasp_state::sp_io_r)); + map(0x01010128, 0x0101012f).rw(this, FUNC(segasp_state::sp_eeprom_r), FUNC(segasp_state::sp_eeprom_w)); + map(0x01010150, 0x01010157).r(this, FUNC(segasp_state::sp_rombdflg_r)); // AM_RANGE(0x01010180, 0x010101af) custom UART 1 // AM_RANGE(0x010101c0, 0x010101ef) custom UART 2 /* Area 1 */ - AM_RANGE(0x04000000, 0x04ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("dc_texture_ram") // texture memory 64 bit access - AM_RANGE(0x05000000, 0x05ffffff) AM_MIRROR(0x02000000) AM_RAM AM_SHARE("frameram") // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now + map(0x04000000, 0x04ffffff).mirror(0x02000000).ram().share("dc_texture_ram"); // texture memory 64 bit access + map(0x05000000, 0x05ffffff).mirror(0x02000000).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now /* Area 2*/ - AM_RANGE(0x08000000, 0x09ffffff) AM_MIRROR(0x02000000) AM_NOP // 'Unassigned' + map(0x08000000, 0x09ffffff).mirror(0x02000000).noprw(); // 'Unassigned' /* Area 3 */ - AM_RANGE(0x0c000000, 0x0dffffff) AM_MIRROR(0xa2000000) AM_RAM AM_SHARE("dc_ram") + map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram"); /* Area 4 */ - AM_RANGE(0x10000000, 0x107fffff) AM_MIRROR(0x02000000) AM_DEVWRITE("powervr2", powervr2_device, ta_fifo_poly_w) - AM_RANGE(0x10800000, 0x10ffffff) AM_DEVWRITE8("powervr2", powervr2_device, ta_fifo_yuv_w, 0xffffffffffffffffU) - AM_RANGE(0x11000000, 0x11ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath0_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue) + map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w)); + map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w)); + map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue) /* 0x12000000 -0x13ffffff Mirror area of 0x10000000 -0x11ffffff */ - AM_RANGE(0x13000000, 0x13ffffff) AM_DEVWRITE("powervr2", powervr2_device, ta_texture_directpath1_w) // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue) + map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue) /* Area 5 */ //AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext. @@ -230,11 +231,12 @@ ADDRESS_MAP_START(segasp_state::segasp_map) /* Area 7 */ //AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal -ADDRESS_MAP_END +} -ADDRESS_MAP_START(segasp_state::onchip_port) - AM_RANGE(0x00, 0x0f) AM_READWRITE(sn_93c46a_r, sn_93c46a_w) -ADDRESS_MAP_END +void segasp_state::onchip_port(address_map &map) +{ + map(0x00, 0x0f).rw(this, FUNC(segasp_state::sn_93c46a_r), FUNC(segasp_state::sn_93c46a_w)); +} INPUT_PORTS_START( segasp ) diff --git a/src/mame/drivers/segaufo.cpp b/src/mame/drivers/segaufo.cpp index 5a52497d5a2..6f9e1504163 100644 --- a/src/mame/drivers/segaufo.cpp +++ b/src/mame/drivers/segaufo.cpp @@ -461,35 +461,39 @@ READ8_MEMBER(ufo_state::ex_upd_busy_r) /* Memory maps */ -ADDRESS_MAP_START(ufo_state::ufo_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ufo_state::ufo_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("ym", ym3438_device, read, write) - AM_RANGE(0x80, 0xbf) AM_DEVREADWRITE("io1", sega_315_5296_device, read, write) - AM_RANGE(0xc0, 0xff) AM_DEVREADWRITE("io2", sega_315_5296_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ufo_state::ex_ufo21_portmap) - AM_IMPORT_FROM( ufo_portmap ) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0x60, 0x60) AM_WRITE(ex_upd_start_w) AM_READNOP - AM_RANGE(0x61, 0x61) AM_READ(ex_upd_busy_r) - AM_RANGE(0x64, 0x65) AM_WRITE(ex_ufo21_lamps_w) AM_READNOP +void ufo_state::ufo_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xe000, 0xffff).ram(); +} + +void ufo_state::ufo_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)); + map(0x40, 0x43).rw("ym", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x80, 0xbf).rw(m_io1, FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)); + map(0xc0, 0xff).rw(m_io2, FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)); +} + + +void ufo_state::ex_ufo21_portmap(address_map &map) +{ + ufo_portmap(map); + map(0x20, 0x20).w(m_upd, FUNC(upd7759_device::port_w)); + map(0x60, 0x60).w(this, FUNC(ufo_state::ex_upd_start_w)).nopr(); + map(0x61, 0x61).r(this, FUNC(ufo_state::ex_upd_busy_r)); + map(0x64, 0x65).w(this, FUNC(ufo_state::ex_ufo21_lamps_w)).nopr(); // AM_RANGE(0x68, 0x68) AM_WRITENOP // ? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(ufo_state::ex_ufo800_portmap) - AM_IMPORT_FROM( ufo_portmap ) +void ufo_state::ex_ufo800_portmap(address_map &map) +{ + ufo_portmap(map); // AM_RANGE(0x60, 0x67) AM_NOP // unused? // AM_RANGE(0x68, 0x68) AM_WRITENOP // ? -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp index 0dc2fe89ba9..cd8b4ff4f1e 100644 --- a/src/mame/drivers/segaxbd.cpp +++ b/src/mame/drivers/segaxbd.cpp @@ -958,36 +958,37 @@ WRITE16_MEMBER( segaxbd_state::paletteram_w ) // MAIN CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segaxbd_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("backup1") - AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("backup2") - AM_RANGE(0x0c0000, 0x0cffff) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, tileram_r, tileram_w) AM_SHARE("tileram") - AM_RANGE(0x0d0000, 0x0d0fff) AM_MIRROR(0x00f000) AM_DEVREADWRITE("segaic16vid", segaic16_video_device, textram_r, textram_w) AM_SHARE("textram") - AM_RANGE(0x0e0000, 0x0e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_main", sega_315_5248_multiplier_device, read, write) - AM_RANGE(0x0e4000, 0x0e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_main", sega_315_5249_divider_device, read, write) - AM_RANGE(0x0e8000, 0x0e801f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("cmptimer_main", sega_315_5250_compare_timer_device, read, write) - AM_RANGE(0x100000, 0x100fff) AM_MIRROR(0x00f000) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x110000, 0x11ffff) AM_DEVWRITE("sprites", sega_xboard_sprite_device, draw_write) - AM_RANGE(0x120000, 0x123fff) AM_MIRROR(0x00c000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x130000, 0x13ffff) AM_READWRITE(adc_r, adc_w) - AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x00fff0) AM_DEVREADWRITE8("iochip_0", cxd1095_device, read, write, 0x00ff) - AM_RANGE(0x150000, 0x15000f) AM_MIRROR(0x00fff0) AM_DEVREADWRITE8("iochip_1", cxd1095_device, read, write, 0x00ff) - AM_RANGE(0x160000, 0x16ffff) AM_WRITE(iocontrol_w) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("subcpu", 0x00000) - AM_RANGE(0x280000, 0x283fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0") - AM_RANGE(0x2a0000, 0x2a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram1") - AM_RANGE(0x2e0000, 0x2e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write) - AM_RANGE(0x2e4000, 0x2e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write) - AM_RANGE(0x2e8000, 0x2e800f) AM_MIRROR(0x003ff0) AM_DEVREADWRITE("cmptimer_subx", sega_315_5250_compare_timer_device, read, write) - AM_RANGE(0x2ec000, 0x2ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("roadram") - AM_RANGE(0x2ee000, 0x2effff) AM_DEVREADWRITE("segaic16road", segaic16_road_device, segaic16_road_control_0_r, segaic16_road_control_0_w) +void segaxbd_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fffff); + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x083fff).mirror(0x01c000).ram().share("backup1"); + map(0x0a0000, 0x0a3fff).mirror(0x01c000).ram().share("backup2"); + map(0x0c0000, 0x0cffff).rw("segaic16vid", FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram"); + map(0x0d0000, 0x0d0fff).mirror(0x00f000).rw("segaic16vid", FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram"); + map(0x0e0000, 0x0e0007).mirror(0x003ff8).rw("multiplier_main", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write)); + map(0x0e4000, 0x0e401f).mirror(0x003fe0).rw("divider_main", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write)); + map(0x0e8000, 0x0e801f).mirror(0x003fe0).rw("cmptimer_main", FUNC(sega_315_5250_compare_timer_device::read), FUNC(sega_315_5250_compare_timer_device::write)); + map(0x100000, 0x100fff).mirror(0x00f000).ram().share("sprites"); + map(0x110000, 0x11ffff).w("sprites", FUNC(sega_xboard_sprite_device::draw_write)); + map(0x120000, 0x123fff).mirror(0x00c000).ram().w(this, FUNC(segaxbd_state::paletteram_w)).share("paletteram"); + map(0x130000, 0x13ffff).rw(this, FUNC(segaxbd_state::adc_r), FUNC(segaxbd_state::adc_w)); + map(0x140000, 0x14000f).mirror(0x00fff0).rw("iochip_0", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff); + map(0x150000, 0x15000f).mirror(0x00fff0).rw("iochip_1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff); + map(0x160000, 0x16ffff).w(this, FUNC(segaxbd_state::iocontrol_w)); + map(0x200000, 0x27ffff).rom().region("subcpu", 0x00000); + map(0x280000, 0x283fff).mirror(0x01c000).ram().share("subram0"); + map(0x2a0000, 0x2a3fff).mirror(0x01c000).ram().share("subram1"); + map(0x2e0000, 0x2e0007).mirror(0x003ff8).rw("multiplier_subx", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write)); + map(0x2e4000, 0x2e401f).mirror(0x003fe0).rw("divider_subx", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write)); + map(0x2e8000, 0x2e800f).mirror(0x003ff0).rw("cmptimer_subx", FUNC(sega_315_5250_compare_timer_device::read), FUNC(sega_315_5250_compare_timer_device::write)); + map(0x2ec000, 0x2ecfff).mirror(0x001000).ram().share("roadram"); + map(0x2ee000, 0x2effff).rw("segaic16road", FUNC(segaic16_road_device::segaic16_road_control_0_r), FUNC(segaic16_road_device::segaic16_road_control_0_w)); // AM_RANGE(0x2f0000, 0x2f3fff) AM_READWRITE(excs_r, excs_w) - AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_SHARE("backup1") - AM_RANGE(0x3fc000, 0x3fffff) AM_RAM AM_SHARE("backup2") -ADDRESS_MAP_END + map(0x3f8000, 0x3fbfff).ram().share("backup1"); + map(0x3fc000, 0x3fffff).ram().share("backup2"); +} ADDRESS_MAP_START(segaxbd_state::decrypted_opcodes_map) AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") @@ -997,19 +998,20 @@ ADDRESS_MAP_END // SUB CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segaxbd_state::sub_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram0") - AM_RANGE(0x0a0000, 0x0a3fff) AM_MIRROR(0x01c000) AM_RAM AM_SHARE("subram1") - AM_RANGE(0x0e0000, 0x0e0007) AM_MIRROR(0x003ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write) - AM_RANGE(0x0e4000, 0x0e401f) AM_MIRROR(0x003fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write) - AM_RANGE(0x0e8000, 0x0e800f) AM_MIRROR(0x003ff0) AM_DEVREADWRITE("cmptimer_subx", sega_315_5250_compare_timer_device, read, write) - AM_RANGE(0x0ec000, 0x0ecfff) AM_MIRROR(0x001000) AM_RAM AM_SHARE("roadram") - AM_RANGE(0x0ee000, 0x0effff) AM_DEVREADWRITE("segaic16road", segaic16_road_device, segaic16_road_control_0_r, segaic16_road_control_0_w) +void segaxbd_state::sub_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xfffff); + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x083fff).mirror(0x01c000).ram().share("subram0"); + map(0x0a0000, 0x0a3fff).mirror(0x01c000).ram().share("subram1"); + map(0x0e0000, 0x0e0007).mirror(0x003ff8).rw("multiplier_subx", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write)); + map(0x0e4000, 0x0e401f).mirror(0x003fe0).rw("divider_subx", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write)); + map(0x0e8000, 0x0e800f).mirror(0x003ff0).rw("cmptimer_subx", FUNC(sega_315_5250_compare_timer_device::read), FUNC(sega_315_5250_compare_timer_device::write)); + map(0x0ec000, 0x0ecfff).mirror(0x001000).ram().share("roadram"); + map(0x0ee000, 0x0effff).rw("segaic16road", FUNC(segaic16_road_device::segaic16_road_control_0_r), FUNC(segaic16_road_device::segaic16_road_control_0_w)); // AM_RANGE(0x0f0000, 0x0f3fff) AM_READWRITE(excs_r, excs_w) -ADDRESS_MAP_END +} @@ -1017,19 +1019,21 @@ ADDRESS_MAP_END // Z80 SOUND CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segaxbd_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segaxbd_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w)); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(segaxbd_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) -ADDRESS_MAP_END +void segaxbd_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segaxbd_state::sound_data_r)); +} diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp index 193ac31d233..a05b0d7ef73 100644 --- a/src/mame/drivers/segaybd.cpp +++ b/src/mame/drivers/segaybd.cpp @@ -583,69 +583,74 @@ void segaybd_state::update_irqs() // MAIN CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segaybd_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080007) AM_MIRROR(0x001ff8) AM_DEVREADWRITE("multiplier_main", sega_315_5248_multiplier_device, read, write) - AM_RANGE(0x082000, 0x082001) AM_MIRROR(0x001ffe) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_main", sega_315_5249_divider_device, read, write) +void segaybd_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fffff); + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080007).mirror(0x001ff8).rw("multiplier_main", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write)); + map(0x082001, 0x082001).mirror(0x001ffe).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x084000, 0x08401f).mirror(0x001fe0).rw("divider_main", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write)); // AM_RANGE(0x086000, 0x087fff) /DEA0 - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram") - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("io", sega_315_5296_device, read, write, 0x00ff) - AM_RANGE(0x100040, 0x100047) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff) - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM -ADDRESS_MAP_END + map(0x0c0000, 0x0cffff).ram().share("shareram"); + map(0x100000, 0x10001f).rw("io", FUNC(sega_315_5296_device::read), FUNC(sega_315_5296_device::write)).umask16(0x00ff); + map(0x100040, 0x100047).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask16(0x00ff); + map(0x1f0000, 0x1fffff).ram(); +} //************************************************************************** // SUB CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segaybd_state::subx_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080007) AM_MIRROR(0x001ff8) AM_DEVREADWRITE("multiplier_subx", sega_315_5248_multiplier_device, read, write) - AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_subx", sega_315_5249_divider_device, read, write) - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram") - AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("ysprites") - AM_RANGE(0x1f8000, 0x1fbfff) AM_RAM - AM_RANGE(0x1fc000, 0x1fffff) AM_RAM AM_SHARE("backupram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segaybd_state::suby_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080007) AM_MIRROR(0x001ff8) AM_DEVREADWRITE("multiplier_suby", sega_315_5248_multiplier_device, read, write) - AM_RANGE(0x084000, 0x08401f) AM_MIRROR(0x001fe0) AM_DEVREADWRITE("divider_suby", sega_315_5249_divider_device, read, write) - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("shareram") - AM_RANGE(0x180000, 0x1807ff) AM_MIRROR(0x007800) AM_RAM AM_SHARE("rotateram") - AM_RANGE(0x188000, 0x188fff) AM_MIRROR(0x007000) AM_RAM AM_SHARE("bsprites") - AM_RANGE(0x190000, 0x193fff) AM_MIRROR(0x004000) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x198000, 0x19ffff) AM_DEVREAD("segaic16vid", segaic16_video_device, rotate_control_r) - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM -ADDRESS_MAP_END +void segaybd_state::subx_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fffff); + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080007).mirror(0x001ff8).rw("multiplier_subx", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write)); + map(0x084000, 0x08401f).mirror(0x001fe0).rw("divider_subx", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write)); + map(0x0c0000, 0x0cffff).ram().share("shareram"); + map(0x180000, 0x18ffff).ram().share("ysprites"); + map(0x1f8000, 0x1fbfff).ram(); + map(0x1fc000, 0x1fffff).ram().share("backupram"); +} + +void segaybd_state::suby_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fffff); + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080007).mirror(0x001ff8).rw("multiplier_suby", FUNC(sega_315_5248_multiplier_device::read), FUNC(sega_315_5248_multiplier_device::write)); + map(0x084000, 0x08401f).mirror(0x001fe0).rw("divider_suby", FUNC(sega_315_5249_divider_device::read), FUNC(sega_315_5249_divider_device::write)); + map(0x0c0000, 0x0cffff).ram().share("shareram"); + map(0x180000, 0x1807ff).mirror(0x007800).ram().share("rotateram"); + map(0x188000, 0x188fff).mirror(0x007000).ram().share("bsprites"); + map(0x190000, 0x193fff).mirror(0x004000).ram().w(this, FUNC(segaybd_state::paletteram_w)).share("paletteram"); + map(0x198000, 0x19ffff).r(m_segaic16vid, FUNC(segaic16_video_device::rotate_control_r)); + map(0x1f0000, 0x1fffff).ram(); +} //************************************************************************** // Z80 SOUND CPU ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(segaybd_state::sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm", segapcm_device, sega_pcm_r, sega_pcm_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segaybd_state::sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w)); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(segaybd_state::sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segaybd_state::sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).mirror(0x3f).r("soundlatch", FUNC(generic_latch_8_device::read)); +} //************************************************************************** @@ -681,20 +686,22 @@ WRITE16_MEMBER(segaybd_state::link2_w) logerror("link2_w %04x\n", data); } -ADDRESS_MAP_START(segaybd_state::main_map_link) - AM_IMPORT_FROM(main_map) - AM_RANGE(0x190000, 0x190fff) AM_DEVREADWRITE8("mb8421", mb8421_device, left_r, left_w, 0x00ff) - AM_RANGE(0x191000, 0x191001) AM_READ(link_r) - AM_RANGE(0x192000, 0x192001) AM_READWRITE(link2_r, link2_w) -ADDRESS_MAP_END +void segaybd_state::main_map_link(address_map &map) +{ + main_map(map); + map(0x190000, 0x190fff).rw("mb8421", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)).umask16(0x00ff); + map(0x191000, 0x191001).r(this, FUNC(segaybd_state::link_r)); + map(0x192000, 0x192001).rw(this, FUNC(segaybd_state::link2_r), FUNC(segaybd_state::link2_w)); +} -ADDRESS_MAP_START(segaybd_state::link_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM // 0x2000-0x2*** maybe shared with other boards? - AM_RANGE(0x4000, 0x47ff) AM_DEVREADWRITE("mb8421", mb8421_device, right_r, right_w) -ADDRESS_MAP_END +void segaybd_state::link_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x3fff).ram(); // 0x2000-0x2*** maybe shared with other boards? + map(0x4000, 0x47ff).rw("mb8421", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)); +} #if 0 READ8_MEMBER(segaybd_state::link_portc0_r) @@ -703,20 +710,22 @@ READ8_MEMBER(segaybd_state::link_portc0_r) } #endif -ADDRESS_MAP_START(segaybd_state::link_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void segaybd_state::link_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); - AM_RANGE(0x40, 0x40) AM_READ_PORT("LinkID_DSW1") - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("LinkID_DSW2") -ADDRESS_MAP_END + map(0x40, 0x40).portr("LinkID_DSW1"); + map(0xc0, 0xc0).portr("LinkID_DSW2"); +} -ADDRESS_MAP_START(segaybd_state::motor_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void segaybd_state::motor_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).ram(); +} //************************************************************************** // GENERIC PORT DEFINITIONS diff --git a/src/mame/drivers/seibucats.cpp b/src/mame/drivers/seibucats.cpp index 315b9dcfd90..a72692216ca 100644 --- a/src/mame/drivers/seibucats.cpp +++ b/src/mame/drivers/seibucats.cpp @@ -163,33 +163,34 @@ WRITE16_MEMBER(seibucats_state::aux_rtc_w) { } -ADDRESS_MAP_START(seibucats_state::seibucats_map) +void seibucats_state::seibucats_map(address_map &map) +{ // TODO: map devices - AM_RANGE(0x00000000, 0x0003ffff) AM_RAM AM_SHARE("mainram") + map(0x00000000, 0x0003ffff).ram().share("mainram"); - AM_RANGE(0x00000010, 0x00000013) AM_READ8(spi_status_r, 0x000000ff) - AM_RANGE(0x00000400, 0x00000403) AM_WRITE16(input_select_w, 0x0000ffff) - AM_RANGE(0x00000404, 0x00000407) AM_WRITE16(output_latch_w, 0x0000ffff) - AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) - AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) - AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) - AM_RANGE(0x00000560, 0x00000563) AM_WRITE16(sprite_dma_start_w, 0xffff0000) + map(0x00000010, 0x00000010).r(this, FUNC(seibucats_state::spi_status_r)); + map(0x00000400, 0x00000401).w(this, FUNC(seibucats_state::input_select_w)); + map(0x00000404, 0x00000405).w(this, FUNC(seibucats_state::output_latch_w)); + map(0x00000484, 0x00000487).w(this, FUNC(seibucats_state::palette_dma_start_w)); + map(0x00000490, 0x00000493).w(this, FUNC(seibucats_state::video_dma_length_w)); + map(0x00000494, 0x00000497).w(this, FUNC(seibucats_state::video_dma_address_w)); + map(0x00000562, 0x00000563).w(this, FUNC(seibucats_state::sprite_dma_start_w)); - AM_RANGE(0x00000600, 0x00000607) AM_READ16(input_mux_r, 0x0000ffff) + map(0x00000600, 0x00000607).r(this, FUNC(seibucats_state::input_mux_r)).umask32(0x0000ffff); - AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_REGION("ipl", 0) AM_WRITENOP // emjjoshi attempts to write there? + map(0x00200000, 0x003fffff).rom().region("ipl", 0).nopw(); // emjjoshi attempts to write there? // following are likely to be Seibu CATS specific - AM_RANGE(0x01200000, 0x01200007) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x000000ff) - AM_RANGE(0x01200100, 0x01200107) AM_WRITENOP // YMF721-S MIDI data - AM_RANGE(0x01200104, 0x01200107) AM_READNOP // YMF721-S MIDI status - AM_RANGE(0x01200200, 0x01200203) AM_DEVREADWRITE8("usart1", i8251_device, data_r, data_w, 0x000000ff) - AM_RANGE(0x01200204, 0x01200207) AM_DEVREADWRITE8("usart1", i8251_device, status_r, control_w, 0x000000ff) - AM_RANGE(0x01200300, 0x01200303) AM_DEVREADWRITE8("usart2", i8251_device, data_r, data_w, 0x000000ff) - AM_RANGE(0x01200304, 0x01200307) AM_DEVREADWRITE8("usart2", i8251_device, status_r, control_w, 0x000000ff) - AM_RANGE(0xa0000000, 0xa1ffffff) AM_NOP // NVRAM on ROM board - AM_RANGE(0xa2000000, 0xa2000003) AM_WRITE16(aux_rtc_w, 0x0000ffff) - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END + map(0x01200000, 0x01200007).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask32(0x000000ff); + map(0x01200100, 0x01200107).nopw(); // YMF721-S MIDI data + map(0x01200104, 0x01200107).nopr(); // YMF721-S MIDI status + map(0x01200200, 0x01200200).rw("usart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01200204, 0x01200204).rw("usart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x01200300, 0x01200300).rw("usart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01200304, 0x01200304).rw("usart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xa0000000, 0xa1ffffff).noprw(); // NVRAM on ROM board + map(0xa2000000, 0xa2000001).w(this, FUNC(seibucats_state::aux_rtc_w)); + map(0xffe00000, 0xffffffff).rom().region("ipl", 0); +} static INPUT_PORTS_START( spi_mahjong_keyboard ) PORT_START("KEY.0") diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp index 5c3f6e518ab..b42375b1697 100644 --- a/src/mame/drivers/seibuspi.cpp +++ b/src/mame/drivers/seibuspi.cpp @@ -993,124 +993,133 @@ WRITE32_MEMBER(seibuspi_state::ejsakura_input_select_w) } -ADDRESS_MAP_START(seibuspi_state::base_map) - AM_RANGE(0x00000000, 0x0003ffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x00000400, 0x0000043f) AM_DEVREADWRITE16("crtc", seibu_crtc_device, read, write, 0xffffffff) - AM_RANGE(0x00000480, 0x00000483) AM_WRITE(tilemap_dma_start_w) - AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) - AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) - AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) - AM_RANGE(0x00000498, 0x0000049b) AM_WRITENOP // ? dma address high bits? (always writes 0) - AM_RANGE(0x00000600, 0x00000603) AM_READ8(spi_status_r, 0x000000ff) - AM_RANGE(0x00000604, 0x00000607) AM_READ_PORT("INPUTS") - AM_RANGE(0x00000608, 0x0000060b) AM_READ_PORT("EXCH") - AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM") - AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1") - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::sei252_map) +void seibuspi_state::base_map(address_map &map) +{ + map(0x00000000, 0x0003ffff).ram().share("mainram"); + map(0x00000400, 0x0000043f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); + map(0x00000480, 0x00000483).w(this, FUNC(seibuspi_state::tilemap_dma_start_w)); + map(0x00000484, 0x00000487).w(this, FUNC(seibuspi_state::palette_dma_start_w)); + map(0x00000490, 0x00000493).w(this, FUNC(seibuspi_state::video_dma_length_w)); + map(0x00000494, 0x00000497).w(this, FUNC(seibuspi_state::video_dma_address_w)); + map(0x00000498, 0x0000049b).nopw(); // ? dma address high bits? (always writes 0) + map(0x00000600, 0x00000600).r(this, FUNC(seibuspi_state::spi_status_r)); + map(0x00000604, 0x00000607).portr("INPUTS"); + map(0x00000608, 0x0000060b).portr("EXCH"); + map(0x0000060c, 0x0000060f).portr("SYSTEM"); + map(0x00200000, 0x003fffff).rom().share("share1"); + map(0xffe00000, 0xffffffff).rom().region("maincpu", 0).share("share1"); // ROM location in real-mode +} + +void seibuspi_state::sei252_map(address_map &map) +{ //AM_RANGE(0x00000500, 0x0000057f) AM_DEVREADWRITE16("obj", sei252_device, read_xor, write_xor, 0xffffffff) - AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE16(sprite_dma_start_w, 0xffff0000) - AM_RANGE(0x00000524, 0x00000527) AM_WRITENOP // SEI252 sprite decryption key, see machine/spisprit.c - AM_RANGE(0x00000528, 0x0000052b) AM_WRITENOP // SEI252 sprite decryption unknown - AM_RANGE(0x00000530, 0x00000533) AM_WRITENOP // SEI252 sprite decryption table key, see machine/spisprit.c - AM_RANGE(0x00000534, 0x00000537) AM_WRITENOP // SEI252 sprite decryption unknown - AM_RANGE(0x0000053c, 0x0000053f) AM_WRITENOP // SEI252 sprite decryption table index, see machine/spisprit.c -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::rise_map) + map(0x0000050e, 0x0000050f).w(this, FUNC(seibuspi_state::sprite_dma_start_w)); + map(0x00000524, 0x00000527).nopw(); // SEI252 sprite decryption key, see machine/spisprit.c + map(0x00000528, 0x0000052b).nopw(); // SEI252 sprite decryption unknown + map(0x00000530, 0x00000533).nopw(); // SEI252 sprite decryption table key, see machine/spisprit.c + map(0x00000534, 0x00000537).nopw(); // SEI252 sprite decryption unknown + map(0x0000053c, 0x0000053f).nopw(); // SEI252 sprite decryption table index, see machine/spisprit.c +} + +void seibuspi_state::rise_map(address_map &map) +{ //AM_RANGE(0x00000500, 0x0000057f) AM_DEVREADWRITE16("obj", seibu_encrypted_sprite_device, read, write, 0xffffffff) - AM_RANGE(0x0000054c, 0x0000054f) AM_WRITENOP // RISE10/11 sprite decryption key, see machine/seibuspi.c - AM_RANGE(0x00000560, 0x00000563) AM_WRITE16(sprite_dma_start_w, 0xffff0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::spi_map) - AM_IMPORT_FROM( base_map ) - AM_IMPORT_FROM( sei252_map ) - AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP // ? - AM_RANGE(0x00000680, 0x00000683) AM_DEVREAD8("soundfifo2", fifo7200_device, data_byte_r, 0x000000ff) - AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff) - AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff) - AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_transfer_w, 0x000000ff) - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(z80_enable_w, 0x000000ff) - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(rf2_layer_bank_w, 0x00ff0000) - AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff) - AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff) - AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff) - AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff) - AM_RANGE(0x000006dc, 0x000006df) AM_READ8(spi_ds2404_unknown_r, 0x0000ff00) - AM_RANGE(0x00a00000, 0x013fffff) AM_ROM AM_REGION("sound01", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::rdft2_map) - AM_IMPORT_FROM( base_map ) - AM_IMPORT_FROM( rise_map ) - AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP // ? - AM_RANGE(0x00000680, 0x00000683) AM_DEVREAD8("soundfifo2", fifo7200_device, data_byte_r, 0x000000ff) - AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff) - AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff) - AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_transfer_w, 0x000000ff) - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(z80_enable_w, 0x000000ff) - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(rf2_layer_bank_w, 0x00ff0000) - AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff) - AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff) - AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff) - AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff) - AM_RANGE(0x000006dc, 0x000006df) AM_READ8(spi_ds2404_unknown_r, 0x0000ff00) - AM_RANGE(0x00a00000, 0x013fffff) AM_ROM AM_REGION("sound01", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::sxx2e_map) - AM_IMPORT_FROM( base_map ) - AM_IMPORT_FROM( sei252_map ) - AM_RANGE(0x00000680, 0x00000683) AM_READ8(sb_coin_r, 0x000000ff) - AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff) - AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff) - AM_RANGE(0x00000688, 0x0000068b) AM_NOP // ? - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITENOP - AM_RANGE(0x000006d0, 0x000006d3) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_1w_reset_w, 0x000000ff) - AM_RANGE(0x000006d4, 0x000006d7) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_data_w, 0x000000ff) - AM_RANGE(0x000006d8, 0x000006db) AM_DEVWRITE8("ds2404", ds2404_device, ds2404_clk_w, 0x000000ff) - AM_RANGE(0x000006dc, 0x000006df) AM_DEVREAD8("ds2404", ds2404_device, ds2404_data_r, 0x000000ff) - AM_RANGE(0x000006dc, 0x000006df) AM_READ8(spi_ds2404_unknown_r, 0x0000ff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::sxx2f_map) - AM_IMPORT_FROM( base_map ) - AM_IMPORT_FROM( rise_map ) - AM_RANGE(0x00000680, 0x00000683) AM_READ8(sb_coin_r, 0x000000ff) - AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff) - AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff) - AM_RANGE(0x00000688, 0x0000068b) AM_NOP // ? - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000) - AM_RANGE(0x00000690, 0x00000693) AM_WRITENOP // ? -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::sys386i_map) - AM_IMPORT_FROM( base_map ) - AM_IMPORT_FROM( rise_map ) - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000) - AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(oki_bank_w, 0xff000000) - AM_RANGE(0x01200000, 0x01200003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x01200004, 0x01200007) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::sys386f_map) - AM_RANGE(0x00000000, 0x0003ffff) AM_RAM AM_SHARE("mainram") - AM_IMPORT_FROM( rise_map ) - AM_RANGE(0x00000010, 0x00000013) AM_READ8(spi_status_r, 0x000000ff) - AM_RANGE(0x00000400, 0x00000403) AM_READ_PORT("SYSTEM") AM_WRITE(ejsakura_input_select_w) - AM_RANGE(0x00000404, 0x00000407) AM_WRITE8(eeprom_w, 0x000000ff) - AM_RANGE(0x00000408, 0x0000040f) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x000000ff) - AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) - AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) - AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) - AM_RANGE(0x00000600, 0x00000607) AM_DEVREAD8("ymz", ymz280b_device, read, 0x000000ff) - AM_RANGE(0x0000060c, 0x0000060f) AM_READ(ejsakura_keyboard_r) - AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1") - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode -ADDRESS_MAP_END + map(0x0000054c, 0x0000054f).nopw(); // RISE10/11 sprite decryption key, see machine/seibuspi.c + map(0x00000562, 0x00000563).w(this, FUNC(seibuspi_state::sprite_dma_start_w)); +} + +void seibuspi_state::spi_map(address_map &map) +{ + base_map(map); + sei252_map(map); + map(0x00000600, 0x00000603).nopw(); // ? + map(0x00000680, 0x00000680).r("soundfifo2", FUNC(fifo7200_device::data_byte_r)); + map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w)); + map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r)); + map(0x00000688, 0x00000688).w(this, FUNC(seibuspi_state::z80_prg_transfer_w)); + map(0x0000068c, 0x0000068c).w(this, FUNC(seibuspi_state::z80_enable_w)); + map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::rf2_layer_bank_w)); + map(0x000006d0, 0x000006d0).w("ds2404", FUNC(ds2404_device::ds2404_1w_reset_w)); + map(0x000006d4, 0x000006d4).w("ds2404", FUNC(ds2404_device::ds2404_data_w)); + map(0x000006d8, 0x000006d8).w("ds2404", FUNC(ds2404_device::ds2404_clk_w)); + map(0x000006dc, 0x000006dc).r("ds2404", FUNC(ds2404_device::ds2404_data_r)); + map(0x000006dd, 0x000006dd).r(this, FUNC(seibuspi_state::spi_ds2404_unknown_r)); + map(0x00a00000, 0x013fffff).rom().region("sound01", 0); +} + +void seibuspi_state::rdft2_map(address_map &map) +{ + base_map(map); + rise_map(map); + map(0x00000600, 0x00000603).nopw(); // ? + map(0x00000680, 0x00000680).r("soundfifo2", FUNC(fifo7200_device::data_byte_r)); + map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w)); + map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r)); + map(0x00000688, 0x00000688).w(this, FUNC(seibuspi_state::z80_prg_transfer_w)); + map(0x0000068c, 0x0000068c).w(this, FUNC(seibuspi_state::z80_enable_w)); + map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::rf2_layer_bank_w)); + map(0x000006d0, 0x000006d0).w("ds2404", FUNC(ds2404_device::ds2404_1w_reset_w)); + map(0x000006d4, 0x000006d4).w("ds2404", FUNC(ds2404_device::ds2404_data_w)); + map(0x000006d8, 0x000006d8).w("ds2404", FUNC(ds2404_device::ds2404_clk_w)); + map(0x000006dc, 0x000006dc).r("ds2404", FUNC(ds2404_device::ds2404_data_r)); + map(0x000006dd, 0x000006dd).r(this, FUNC(seibuspi_state::spi_ds2404_unknown_r)); + map(0x00a00000, 0x013fffff).rom().region("sound01", 0); +} + +void seibuspi_state::sxx2e_map(address_map &map) +{ + base_map(map); + sei252_map(map); + map(0x00000680, 0x00000680).r(this, FUNC(seibuspi_state::sb_coin_r)); + map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w)); + map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r)); + map(0x00000688, 0x0000068b).noprw(); // ? + map(0x0000068c, 0x0000068f).nopw(); + map(0x000006d0, 0x000006d0).w("ds2404", FUNC(ds2404_device::ds2404_1w_reset_w)); + map(0x000006d4, 0x000006d4).w("ds2404", FUNC(ds2404_device::ds2404_data_w)); + map(0x000006d8, 0x000006d8).w("ds2404", FUNC(ds2404_device::ds2404_clk_w)); + map(0x000006dc, 0x000006dc).r("ds2404", FUNC(ds2404_device::ds2404_data_r)); + map(0x000006dd, 0x000006dd).r(this, FUNC(seibuspi_state::spi_ds2404_unknown_r)); +} + +void seibuspi_state::sxx2f_map(address_map &map) +{ + base_map(map); + rise_map(map); + map(0x00000680, 0x00000680).r(this, FUNC(seibuspi_state::sb_coin_r)); + map(0x00000680, 0x00000680).w("soundfifo1", FUNC(fifo7200_device::data_byte_w)); + map(0x00000684, 0x00000684).r(this, FUNC(seibuspi_state::sound_fifo_status_r)); + map(0x00000688, 0x0000068b).noprw(); // ? + map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::spi_layerbanks_eeprom_w)); + map(0x00000690, 0x00000693).nopw(); // ? +} + +void seibuspi_state::sys386i_map(address_map &map) +{ + base_map(map); + rise_map(map); + map(0x0000068e, 0x0000068e).w(this, FUNC(seibuspi_state::spi_layerbanks_eeprom_w)); + map(0x0000068f, 0x0000068f).w(this, FUNC(seibuspi_state::oki_bank_w)); + map(0x01200000, 0x01200000).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x01200004, 0x01200004).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void seibuspi_state::sys386f_map(address_map &map) +{ + map(0x00000000, 0x0003ffff).ram().share("mainram"); + rise_map(map); + map(0x00000010, 0x00000010).r(this, FUNC(seibuspi_state::spi_status_r)); + map(0x00000400, 0x00000403).portr("SYSTEM").w(this, FUNC(seibuspi_state::ejsakura_input_select_w)); + map(0x00000404, 0x00000404).w(this, FUNC(seibuspi_state::eeprom_w)); + map(0x00000408, 0x0000040f).w("ymz", FUNC(ymz280b_device::write)).umask32(0x000000ff); + map(0x00000484, 0x00000487).w(this, FUNC(seibuspi_state::palette_dma_start_w)); + map(0x00000490, 0x00000493).w(this, FUNC(seibuspi_state::video_dma_length_w)); + map(0x00000494, 0x00000497).w(this, FUNC(seibuspi_state::video_dma_address_w)); + map(0x00000600, 0x00000607).r("ymz", FUNC(ymz280b_device::read)).umask32(0x000000ff); + map(0x0000060c, 0x0000060f).r(this, FUNC(seibuspi_state::ejsakura_keyboard_r)); + map(0x00200000, 0x003fffff).rom().share("share1"); + map(0xffe00000, 0xffffffff).rom().region("maincpu", 0).share("share1"); // ROM location in real-mode +} /*****************************************************************************/ @@ -1151,33 +1160,36 @@ WRITE8_MEMBER(seibuspi_state::spi_coin_w) } -ADDRESS_MAP_START(seibuspi_state::sxx2e_soundmap) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM - AM_RANGE(0x4002, 0x4002) AM_WRITENOP // ? - AM_RANGE(0x4003, 0x4003) AM_WRITENOP // ? - AM_RANGE(0x4004, 0x4004) AM_WRITE(spi_coin_w) - AM_RANGE(0x4008, 0x4008) AM_DEVREAD("soundfifo1", fifo7200_device, data_byte_r) - AM_RANGE(0x4008, 0x4008) AM_WRITENOP // ? - AM_RANGE(0x4009, 0x4009) AM_READ(z80_soundfifo_status_r) - AM_RANGE(0x400b, 0x400b) AM_WRITENOP // ? - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w) - AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("ymf", ymf271_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("z80_bank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::spi_soundmap) - AM_IMPORT_FROM( sxx2e_soundmap ) - AM_RANGE(0x4008, 0x4008) AM_DEVWRITE("soundfifo2", fifo7200_device, data_byte_w) - AM_RANGE(0x400a, 0x400a) AM_READ_PORT("JUMPERS") // TO DO: get these to actually work -ADDRESS_MAP_END - -ADDRESS_MAP_START(seibuspi_state::spi_ymf271_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x0fffff) AM_DEVREADWRITE("soundflash1", intel_e28f008sa_device, read, write) - AM_RANGE(0x100000, 0x1fffff) AM_DEVREADWRITE("soundflash2", intel_e28f008sa_device, read, write) -ADDRESS_MAP_END +void seibuspi_state::sxx2e_soundmap(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram(); + map(0x4002, 0x4002).nopw(); // ? + map(0x4003, 0x4003).nopw(); // ? + map(0x4004, 0x4004).w(this, FUNC(seibuspi_state::spi_coin_w)); + map(0x4008, 0x4008).r("soundfifo1", FUNC(fifo7200_device::data_byte_r)); + map(0x4008, 0x4008).nopw(); // ? + map(0x4009, 0x4009).r(this, FUNC(seibuspi_state::z80_soundfifo_status_r)); + map(0x400b, 0x400b).nopw(); // ? + map(0x4013, 0x4013).portr("COIN"); + map(0x401b, 0x401b).w(this, FUNC(seibuspi_state::z80_bank_w)); + map(0x6000, 0x600f).rw("ymf", FUNC(ymf271_device::read), FUNC(ymf271_device::write)); + map(0x8000, 0xffff).bankr("z80_bank"); +} + +void seibuspi_state::spi_soundmap(address_map &map) +{ + sxx2e_soundmap(map); + map(0x4008, 0x4008).w("soundfifo2", FUNC(fifo7200_device::data_byte_w)); + map(0x400a, 0x400a).portr("JUMPERS"); // TO DO: get these to actually work +} + +void seibuspi_state::spi_ymf271_map(address_map &map) +{ + map.global_mask(0x1fffff); + map(0x000000, 0x0fffff).rw("soundflash1", FUNC(intel_e28f008sa_device::read), FUNC(intel_e28f008sa_device::write)); + map(0x100000, 0x1fffff).rw("soundflash2", FUNC(intel_e28f008sa_device::read), FUNC(intel_e28f008sa_device::write)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp index daccdd167f0..8458d3eaf02 100644 --- a/src/mame/drivers/seicross.cpp +++ b/src/mame/drivers/seicross.cpp @@ -110,49 +110,54 @@ WRITE8_MEMBER(seicross_state::dac_w) m_dac->write(data >> 4); } -ADDRESS_MAP_START(seicross_state::main_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x8820, 0x887f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* video RAM */ - AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("row_scroll") - AM_RANGE(0x9880, 0x989f) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("TEST") /* test */ - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seicross_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(seicross_state::mcu_nvram_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x1000, 0x10ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x2000) AM_WRITE(dac_w) - AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(seicross_state::mcu_no_nvram_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0x1005, 0x1005) AM_READ_PORT("DSW2") /* DSW2 */ - AM_RANGE(0x1006, 0x1006) AM_READ_PORT("DSW3") /* DSW3 */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(dac_w) - AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(seicross_state::decrypted_opcodes_map) - AM_RANGE(0x8000, 0xf7ff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END +void seicross_state::main_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram().share("share1"); + map(0x8820, 0x887f).ram().share("spriteram"); + map(0x9000, 0x93ff).ram().w(this, FUNC(seicross_state::videoram_w)).share("videoram"); /* video RAM */ + map(0x9800, 0x981f).ram().share("row_scroll"); + map(0x9880, 0x989f).writeonly().share("spriteram2"); + map(0x9c00, 0x9fff).ram().w(this, FUNC(seicross_state::colorram_w)).share("colorram"); + map(0xa000, 0xa000).portr("IN0"); /* IN0 */ + map(0xa800, 0xa800).portr("IN1"); /* IN1 */ + map(0xb000, 0xb000).portr("TEST"); /* test */ + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void seicross_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x08).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x04, 0x04).mirror(0x08).r("aysnd", FUNC(ay8910_device::data_r)); +} + + +void seicross_state::mcu_nvram_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x1000, 0x10ff).ram().share("nvram"); + map(0x2000, 0x2000).w(this, FUNC(seicross_state::dac_w)); + map(0x8000, 0xf7ff).rom().region("maincpu", 0); + map(0xf800, 0xffff).ram().share("share1"); +} + +void seicross_state::mcu_no_nvram_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x1003, 0x1003).portr("DSW1"); /* DSW1 */ + map(0x1005, 0x1005).portr("DSW2"); /* DSW2 */ + map(0x1006, 0x1006).portr("DSW3"); /* DSW3 */ + map(0x2000, 0x2000).w(this, FUNC(seicross_state::dac_w)); + map(0x8000, 0xf7ff).rom().region("maincpu", 0); + map(0xf800, 0xffff).ram().share("share1"); +} + +void seicross_state::decrypted_opcodes_map(address_map &map) +{ + map(0x8000, 0xf7ff).rom().share("decrypted_opcodes"); + map(0xf800, 0xffff).ram().share("share1"); +} diff --git a/src/mame/drivers/seicupbl.cpp b/src/mame/drivers/seicupbl.cpp index cebceb9e6c1..4fc9e274a23 100644 --- a/src/mame/drivers/seicupbl.cpp +++ b/src/mame/drivers/seicupbl.cpp @@ -321,27 +321,28 @@ WRITE16_MEMBER(seicupbl_state::vram_sc3_w) m_sc_layer[3]->mark_tile_dirty(offset); } -ADDRESS_MAP_START(seicupbl_state::cupsocbl_mem) +void seicupbl_state::cupsocbl_mem(address_map &map) +{ // AM_IMPORT_FROM( legionna_cop_mem ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100400, 0x1005ff) AM_DEVREADWRITE("seibucop_boot", seibu_cop_bootleg_device, copdxbl_0_r,copdxbl_0_w) AM_SHARE("cop_mcu_ram") - AM_RANGE(0x100660, 0x10066f) AM_RAM AM_SHARE("vregs") - AM_RANGE(0x100700, 0x100701) AM_READ_PORT("DSW1") - AM_RANGE(0x100704, 0x100705) AM_READ_PORT("PLAYERS12") - AM_RANGE(0x100708, 0x100709) AM_READ_PORT("PLAYERS34") - AM_RANGE(0x10070c, 0x10070d) AM_READ_PORT("SYSTEM") - AM_RANGE(0x10071c, 0x10071d) AM_READ_PORT("DSW2") - AM_RANGE(0x100740, 0x100741) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(vram_sc0_w) AM_SHARE("back_data") - AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(vram_sc2_w) AM_SHARE("fore_data") - AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(vram_sc1_w) AM_SHARE("mid_data") - AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(vram_sc3_w) AM_SHARE("textram") - AM_RANGE(0x103000, 0x103fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x104000, 0x106fff) AM_RAM - AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x107800, 0x107fff) AM_RAM - AM_RANGE(0x108000, 0x11ffff) AM_RAM -ADDRESS_MAP_END + map(0x000000, 0x0fffff).rom(); + map(0x100400, 0x1005ff).rw("seibucop_boot", FUNC(seibu_cop_bootleg_device::copdxbl_0_r), FUNC(seibu_cop_bootleg_device::copdxbl_0_w)).share("cop_mcu_ram"); + map(0x100660, 0x10066f).ram().share("vregs"); + map(0x100700, 0x100701).portr("DSW1"); + map(0x100704, 0x100705).portr("PLAYERS12"); + map(0x100708, 0x100709).portr("PLAYERS34"); + map(0x10070c, 0x10070d).portr("SYSTEM"); + map(0x10071c, 0x10071d).portr("DSW2"); + map(0x100741, 0x100741).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x100800, 0x100fff).ram().w(this, FUNC(seicupbl_state::vram_sc0_w)).share("back_data"); + map(0x101000, 0x1017ff).ram().w(this, FUNC(seicupbl_state::vram_sc2_w)).share("fore_data"); + map(0x101800, 0x101fff).ram().w(this, FUNC(seicupbl_state::vram_sc1_w)).share("mid_data"); + map(0x102000, 0x102fff).ram().w(this, FUNC(seicupbl_state::vram_sc3_w)).share("textram"); + map(0x103000, 0x103fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x104000, 0x106fff).ram(); + map(0x107000, 0x1077ff).ram().share("spriteram"); + map(0x107800, 0x107fff).ram(); + map(0x108000, 0x11ffff).ram(); +} WRITE8_MEMBER(seicupbl_state::okim_rombank_w) { @@ -349,13 +350,14 @@ WRITE8_MEMBER(seicupbl_state::okim_rombank_w) m_oki->set_rom_bank(data & 0x7); } -ADDRESS_MAP_START(seicupbl_state::cupsocbl_sound_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(okim_rombank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void seicupbl_state::cupsocbl_sound_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(seicupbl_state::okim_rombank_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( cupsoc ) diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp index b50e7b1cfde..16971e83611 100644 --- a/src/mame/drivers/selz80.cpp +++ b/src/mame/drivers/selz80.cpp @@ -69,27 +69,30 @@ private: required_device<clock_device> m_clock; }; -ADDRESS_MAP_START(selz80_state::dagz80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(selz80_state::selz80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x27ff) AM_RAM // all 3 RAM sockets filled +void selz80_state::dagz80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("ram"); + map(0xe000, 0xffff).ram(); +} + +void selz80_state::selz80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x27ff).ram(); // all 3 RAM sockets filled // AM_RANGE(0x3000, 0x37ff) AM_ROM // empty socket for ROM - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(selz80_state::selz80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) -ADDRESS_MAP_END + map(0xa000, 0xffff).rom(); +} + +void selz80_state::selz80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0x18, 0x18).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x19, 0x19).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ static INPUT_PORTS_START( selz80 ) diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp index 084c277021b..305a8b88fd3 100644 --- a/src/mame/drivers/sengokmj.cpp +++ b/src/mame/drivers/sengokmj.cpp @@ -390,32 +390,34 @@ READ16_MEMBER(sengokmj_state::system_r) return (ioport("SYSTEM")->read() & 0xffbf) | m_hopper_io; } -ADDRESS_MAP_START(sengokmj_state::sengokmj_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM - AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(seibucrtc_sc0vram_w) AM_SHARE("sc0_vram") - AM_RANGE(0x0c800, 0x0cfff) AM_RAM_WRITE(seibucrtc_sc1vram_w) AM_SHARE("sc1_vram") - AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(seibucrtc_sc2vram_w) AM_SHARE("sc2_vram") - AM_RANGE(0x0d800, 0x0e7ff) AM_RAM_WRITE(seibucrtc_sc3vram_w) AM_SHARE("sc3_vram") - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0f800, 0x0ffff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sengokmj_state::sengokmj_io_map) - AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) +void sengokmj_state::sengokmj_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x08000, 0x09fff).ram().share("nvram"); + map(0x0c000, 0x0c7ff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc0vram_w)).share("sc0_vram"); + map(0x0c800, 0x0cfff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc1vram_w)).share("sc1_vram"); + map(0x0d000, 0x0d7ff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc2vram_w)).share("sc2_vram"); + map(0x0d800, 0x0e7ff).ram().w(this, FUNC(sengokmj_state::seibucrtc_sc3vram_w)).share("sc3_vram"); + map(0x0e800, 0x0f7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0f800, 0x0ffff).ram().share("sprite_ram"); + map(0xc0000, 0xfffff).rom(); +} + +void sengokmj_state::sengokmj_io_map(address_map &map) +{ + map(0x4000, 0x400f).rw("seibu_sound", FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); /*Areas from 8000-804f are for the custom Seibu CRTC.*/ - AM_RANGE(0x8000, 0x804f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) + map(0x8000, 0x804f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); // AM_RANGE(0x8080, 0x8081) CRTC extra register? // AM_RANGE(0x80c0, 0x80c1) CRTC extra register? // AM_RANGE(0x8100, 0x8101) AM_WRITENOP // always 0 - AM_RANGE(0x8180, 0x8181) AM_WRITE(out_w) - AM_RANGE(0x8140, 0x8141) AM_WRITE(mahjong_panel_w) - AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW") - AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r) - AM_RANGE(0xc004, 0xc005) AM_READ(system_r) //switches -ADDRESS_MAP_END + map(0x8180, 0x8181).w(this, FUNC(sengokmj_state::out_w)); + map(0x8140, 0x8141).w(this, FUNC(sengokmj_state::mahjong_panel_w)); + map(0xc000, 0xc001).portr("DSW"); + map(0xc002, 0xc003).r(this, FUNC(sengokmj_state::mahjong_panel_r)); + map(0xc004, 0xc005).r(this, FUNC(sengokmj_state::system_r)); //switches +} static INPUT_PORTS_START( sengokmj ) diff --git a/src/mame/drivers/senjyo.cpp b/src/mame/drivers/senjyo.cpp index b9793d60db1..a92e373c31c 100644 --- a/src/mame/drivers/senjyo.cpp +++ b/src/mame/drivers/senjyo.cpp @@ -123,57 +123,61 @@ WRITE8_MEMBER(senjyo_state::sound_cmd_w) m_pio->strobe_a(1); } -ADDRESS_MAP_START(senjyo_state::senjyo_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram") - AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9c00, 0x9dff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x9e00, 0x9e3f) AM_RAM - AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_SHARE("fgscroll") - AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3") +void senjyo_state::senjyo_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(senjyo_state::fgvideoram_w)).share("fgvideoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(senjyo_state::fgcolorram_w)).share("fgcolorram"); + map(0x9800, 0x987f).ram().share("spriteram"); + map(0x9c00, 0x9dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x9e00, 0x9e3f).ram(); + map(0x9e00, 0x9e1f).ram().share("fgscroll"); + map(0x9e20, 0x9e21).ram().share("scrolly3"); /* AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */ - AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3") - AM_RANGE(0x9e27, 0x9e27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */ - AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_SHARE("scrolly2") + map(0x9e25, 0x9e25).ram().share("scrollx3"); + map(0x9e27, 0x9e27).ram().share("bgstripesram"); /* controls width of background stripes */ + map(0x9e28, 0x9e29).ram().share("scrolly2"); /* AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */ - AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_SHARE("scrollx2") - AM_RANGE(0x9e30, 0x9e31) AM_RAM AM_SHARE("scrolly1") + map(0x9e2d, 0x9e2d).ram().share("scrollx2"); + map(0x9e30, 0x9e31).ram().share("scrolly1"); /* AM_RANGE(0x9e32, 0x9e33) height of the layer (Senjyo only, fixed at 0x100) */ - AM_RANGE(0x9e35, 0x9e35) AM_RAM AM_SHARE("scrollx1") + map(0x9e35, 0x9e35).ram().share("scrollx1"); /* AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */ /* AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram") - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram") - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w) - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2") - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM") AM_WRITE(irq_ctrl_w) - AM_RANGE(0xd003, 0xd003) AM_READNOP // debug cheat port? (i.e. bit 0 in starforc: invincibility, bit 3-0 in senyjo: disables enemy fire) - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_WRITE(sound_cmd_w) - AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(senjyo_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(senjyo_state::senjyo_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write) - AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(senjyo_state::senjyo_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) -ADDRESS_MAP_END + map(0xa000, 0xa7ff).ram().w(this, FUNC(senjyo_state::bg3videoram_w)).share("bg3videoram"); + map(0xa800, 0xafff).ram().w(this, FUNC(senjyo_state::bg2videoram_w)).share("bg2videoram"); + map(0xb000, 0xb7ff).ram().w(this, FUNC(senjyo_state::bg1videoram_w)).share("bg1videoram"); + map(0xb800, 0xbbff).ram().share("radarram"); + map(0xd000, 0xd000).portr("P1").w(this, FUNC(senjyo_state::flip_screen_w)); + map(0xd001, 0xd001).portr("P2"); + map(0xd002, 0xd002).portr("SYSTEM").w(this, FUNC(senjyo_state::irq_ctrl_w)); + map(0xd003, 0xd003).nopr(); // debug cheat port? (i.e. bit 0 in starforc: invincibility, bit 3-0 in senyjo: disables enemy fire) + map(0xd004, 0xd004).portr("DSW1").w(this, FUNC(senjyo_state::sound_cmd_w)); + map(0xd005, 0xd005).portr("DSW2"); +} + +void senjyo_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + +void senjyo_state::senjyo_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).w("sn1", FUNC(sn76496_device::write)); + map(0x9000, 0x9000).w("sn2", FUNC(sn76496_device::write)); + map(0xa000, 0xa000).w("sn3", FUNC(sn76496_device::write)); + map(0xd000, 0xd000).w(this, FUNC(senjyo_state::volume_w)); +} + +void senjyo_state::senjyo_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x08, 0x0b).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /* For the bootleg */ @@ -190,47 +194,49 @@ WRITE8_MEMBER(senjyo_state::starforb_scrollx2) m_scrollx1[offset] = data; } -ADDRESS_MAP_START(senjyo_state::starforb_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(fgcolorram_w) AM_SHARE("fgcolorram") - AM_RANGE(0x9800, 0x987f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9c00, 0x9dff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") +void senjyo_state::starforb_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x93ff).ram().w(this, FUNC(senjyo_state::fgvideoram_w)).share("fgvideoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(senjyo_state::fgcolorram_w)).share("fgcolorram"); + map(0x9800, 0x987f).ram().share("spriteram"); + map(0x9c00, 0x9dff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); /* The format / use of the ram here is different on the bootleg */ - AM_RANGE(0x9e00, 0x9e3f) AM_RAM - AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_SHARE("scrolly3") - AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_SHARE("scrollx3") - AM_RANGE(0x9e30, 0x9e31) AM_RAM_WRITE(starforb_scrolly2) AM_SHARE("scrolly2") // ok - AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_SHARE("scrollx2") // ok - - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(bg3videoram_w) AM_SHARE("bg3videoram") - AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") - AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("radarram") - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w) - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2") - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM") AM_WRITE(irq_ctrl_w) - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_WRITE(sound_cmd_w) - AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2") + map(0x9e00, 0x9e3f).ram(); + map(0x9e20, 0x9e21).ram().share("scrolly3"); + map(0x9e25, 0x9e25).ram().share("scrollx3"); + map(0x9e30, 0x9e31).ram().w(this, FUNC(senjyo_state::starforb_scrolly2)).share("scrolly2"); // ok + map(0x9e35, 0x9e35).ram().w(this, FUNC(senjyo_state::starforb_scrollx2)).share("scrollx2"); // ok + + map(0xa000, 0xa7ff).ram().w(this, FUNC(senjyo_state::bg3videoram_w)).share("bg3videoram"); + map(0xa800, 0xafff).ram().w(this, FUNC(senjyo_state::bg2videoram_w)).share("bg2videoram"); + map(0xb000, 0xb7ff).ram().w(this, FUNC(senjyo_state::bg1videoram_w)).share("bg1videoram"); + map(0xb800, 0xbbff).ram().share("radarram"); + map(0xd000, 0xd000).portr("P1").w(this, FUNC(senjyo_state::flip_screen_w)); + map(0xd001, 0xd001).portr("P2"); + map(0xd002, 0xd002).portr("SYSTEM").w(this, FUNC(senjyo_state::irq_ctrl_w)); + map(0xd004, 0xd004).portr("DSW1").w(this, FUNC(senjyo_state::sound_cmd_w)); + map(0xd005, 0xd005).portr("DSW2"); /* these aren't used / written, left here to make sure memory is allocated */ - AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_SHARE("fgscroll") - AM_RANGE(0xfe27, 0xfe27) AM_RAM AM_SHARE("bgstripesram") /* controls width of background stripes */ - AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_SHARE("scrolly1") - AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_SHARE("scrollx1") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(senjyo_state::starforb_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_device, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_device, write) - AM_RANGE(0xd000, 0xd000) AM_WRITE(volume_w) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xfe00, 0xfe1f).ram().share("fgscroll"); + map(0xfe27, 0xfe27).ram().share("bgstripesram"); /* controls width of background stripes */ + map(0xfe28, 0xfe29).ram().share("scrolly1"); + map(0xfe2d, 0xfe2d).ram().share("scrollx1"); +} + + +void senjyo_state::starforb_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).w("sn1", FUNC(sn76496_device::write)); + map(0x9000, 0x9000).w("sn2", FUNC(sn76496_device::write)); + map(0xa000, 0xa000).w("sn3", FUNC(sn76496_device::write)); + map(0xd000, 0xd000).w(this, FUNC(senjyo_state::volume_w)); + map(0xf000, 0xffff).ram(); +} static INPUT_PORTS_START( senjyo ) diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp index ee64888df9b..6a67682a3c6 100644 --- a/src/mame/drivers/seta.cpp +++ b/src/mame/drivers/seta.cpp @@ -1698,22 +1698,23 @@ WRITE16_MEMBER(seta_state::ipl2_ack_w) writing to sharedram! */ -ADDRESS_MAP_START(seta_state::tndrcade_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x200001) AM_WRITE(ipl1_ack_w) - AM_RANGE(0x280000, 0x280001) AM_WRITENOP // ? 0 / 1 (sub cpu related?) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 / 1 - AM_RANGE(0x380000, 0x3803ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? $4000 - AM_RANGE(0x600000, 0x6005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x600600, 0x600607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0x800000, 0x800007) AM_WRITE(sub_ctrl_w) // Sub CPU Control? - AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w) // Shared RAM - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE("share1") // RAM (Mirrored?) - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("share1") // RAM (Mirrored?) -ADDRESS_MAP_END +void seta_state::tndrcade_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x200001).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0x280000, 0x280001).nopw(); // ? 0 / 1 (sub cpu related?) + map(0x300000, 0x300001).nopw(); // ? 0 / 1 + map(0x380000, 0x3803ff).ram().share("paletteram1"); // Palette + map(0x400000, 0x400001).nopw(); // ? $4000 + map(0x600000, 0x6005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x600600, 0x600607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0x800000, 0x800007).w(this, FUNC(seta_state::sub_ctrl_w)); // Sub CPU Control? + map(0xa00000, 0xa00fff).rw(this, FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)); // Shared RAM + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe00000, 0xe03fff).ram().share("share1"); // RAM (Mirrored?) + map(0xffc000, 0xffffff).ram().share("share1"); // RAM (Mirrored?) +} /*************************************************************************** @@ -1721,59 +1722,61 @@ ADDRESS_MAP_END (with slight variations, and Meta Fox protection hooked in) ***************************************************************************/ -ADDRESS_MAP_START(seta_state::downtown_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_NOP // watchdog? (twineagl) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // IRQ enable/acknowledge? - AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w) // special tile banking to animate water in twineagl - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM Ctrl - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - AM_RANGE(0xa00000, 0xa00007) AM_WRITE(sub_ctrl_w) // Sub CPU Control? - AM_RANGE(0xb00000, 0xb00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w) // Shared RAM - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // ? $4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xf00000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END +void seta_state::downtown_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); // ROM + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).noprw(); // watchdog? (twineagl) + map(0x300000, 0x300001).nopw(); // IRQ enable/acknowledge? + map(0x400000, 0x400007).w(this, FUNC(seta_state::twineagl_tilebank_w)); // special tile banking to animate water in twineagl + map(0x500000, 0x500001).nopw(); // ? + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl + map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + map(0xa00000, 0xa00007).w(this, FUNC(seta_state::sub_ctrl_w)); // Sub CPU Control? + map(0xb00000, 0xb00fff).rw(this, FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)); // Shared RAM + map(0xc00000, 0xc00001).nopw(); // ? $4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xf00000, 0xffffff).ram(); // RAM +} /*************************************************************************** Caliber 50 ***************************************************************************/ -ADDRESS_MAP_START(seta_state::calibr50_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x100001) AM_READ(ipl2_ack_r) - AM_RANGE(0x200000, 0x200fff) AM_RAM // NVRAM - AM_RANGE(0x300000, 0x300001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x400000, 0x400001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM Ctrl - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - - AM_RANGE(0x904000, 0x904fff) AM_RAM // - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("P1") // X1-004 - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("P2") // X1-004 - AM_RANGE(0xa00008, 0xa00009) AM_READ_PORT("COINS") // X1-004 - AM_RANGE(0xa00010, 0xa00017) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xa00018, 0xa00019) AM_DEVREAD8("upd4701", upd4701_device, reset_xy, 0x00ff) - - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // From Sub CPU - AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) // To Sub CPU - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000 - - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END +void seta_state::calibr50_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); // ROM + map(0x100000, 0x100001).r(this, FUNC(seta_state::ipl2_ack_r)); + map(0x200000, 0x200fff).ram(); // NVRAM + map(0x300000, 0x300001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x400000, 0x400001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x500000, 0x500001).nopw(); // ? + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl + map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + + map(0x904000, 0x904fff).ram(); // + map(0xa00000, 0xa00001).portr("P1"); // X1-004 + map(0xa00002, 0xa00003).portr("P2"); // X1-004 + map(0xa00008, 0xa00009).portr("COINS"); // X1-004 + map(0xa00010, 0xa00017).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xa00019, 0xa00019).r(m_upd4701, FUNC(upd4701_device::reset_xy)); + + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb00001, 0xb00001).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From Sub CPU + map(0xb00001, 0xb00001).w("soundlatch1", FUNC(generic_latch_8_device::write)); // To Sub CPU + map(0xc00000, 0xc00001).ram(); // ? $4000 + + map(0xff0000, 0xffffff).ram(); // RAM +} /*************************************************************************** @@ -1821,84 +1824,87 @@ WRITE8_MEMBER(seta_state::usclssic_lockout_w) } -ADDRESS_MAP_START(seta_state::usclssic_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x900000, 0x900001) AM_RAM // ? $4000 - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb40000, 0xb40007) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xb40000, 0xb40001) AM_WRITE8(usclssic_lockout_w, 0x00ff) // Coin Lockout + Tiles Banking - AM_RANGE(0xb4000a, 0xb4000b) AM_WRITE(ipl1_ack_w) - AM_RANGE(0xb40010, 0xb40011) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb40010, 0xb40011) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) // To Sub CPU - AM_RANGE(0xb40018, 0xb4001f) AM_READ(usclssic_dsw_r) // 2 DSWs - AM_RANGE(0xb40018, 0xb40019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xb80000, 0xb80001) AM_READ(ipl2_ack_r) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - AM_RANGE(0xd04000, 0xd04fff) AM_RAM // - AM_RANGE(0xe00000, 0xe00fff) AM_RAM // NVRAM? (odd bytes) -ADDRESS_MAP_END +void seta_state::usclssic_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xff0000, 0xffffff).ram(); // RAM + map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x900000, 0x900001).ram(); // ? $4000 + map(0xa00000, 0xa00005).ram().share("vctrl_0"); // VRAM Ctrl + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xb40000, 0xb40007).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xb40001, 0xb40001).w(this, FUNC(seta_state::usclssic_lockout_w)); // Coin Lockout + Tiles Banking + map(0xb4000a, 0xb4000b).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0xb40010, 0xb40011).portr("COINS"); // Coins + map(0xb40011, 0xb40011).w("soundlatch1", FUNC(generic_latch_8_device::write)); // To Sub CPU + map(0xb40018, 0xb4001f).r(this, FUNC(seta_state::usclssic_dsw_r)); // 2 DSWs + map(0xb40018, 0xb40019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xb80000, 0xb80001).r(this, FUNC(seta_state::ipl2_ack_r)); + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + map(0xd04000, 0xd04fff).ram(); // + map(0xe00000, 0xe00fff).ram(); // NVRAM? (odd bytes) +} /*************************************************************************** Athena no Hatena? ***************************************************************************/ -ADDRESS_MAP_START(seta_state::atehate_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x900000, 0x9fffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? watchdog ? - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 (irq ack lev 2?) - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? (end of lev 1: bit 4 goes 1,0,1) - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr -ADDRESS_MAP_END +void seta_state::atehate_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x900000, 0x9fffff).ram(); // RAM + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).nopw(); // ? watchdog ? + map(0x300000, 0x300001).nopw(); // ? 0 (irq ack lev 2?) + map(0x500000, 0x500001).nopw(); // ? (end of lev 1: bit 4 goes 1,0,1) + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr +} /*************************************************************************** Blandia ***************************************************************************/ -ADDRESS_MAP_START(seta_state::blandia_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero and blandia only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x703c00, 0x7047ff) AM_RAM AM_SHARE("paletteram2") // 2nd Palette for the palette offset effect - AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x880000, 0x880001) AM_RAM // ? 0xc000 - AM_RANGE(0x900000, 0x903fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0xb04000, 0xb0ffff) AM_RAM // (jjsquawk) - AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0xb84000, 0xb8ffff) AM_RAM // (jjsquawk) - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END +void seta_state::blandia_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram(); // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero and blandia only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the palette offset effect + map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x880000, 0x880001).ram(); // ? 0xc000 + map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xa00000, 0xa00005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xa80000, 0xa80005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xb00000, 0xb03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0xb04000, 0xb0ffff).ram(); // (jjsquawk) + map(0xb80000, 0xb83fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0xb84000, 0xb8ffff).ram(); // (jjsquawk) + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).nopw(); // ? + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** @@ -1906,34 +1912,35 @@ ADDRESS_MAP_END (with slight variations) ***************************************************************************/ -ADDRESS_MAP_START(seta_state::blandiap_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x703c00, 0x7047ff) AM_RAM AM_SHARE("paletteram2") // 2nd Palette for the palette offset effect - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END +void seta_state::blandiap_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram(); // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the palette offset effect + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // (jjsquawk) + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).nopw(); // ? + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** @@ -1974,149 +1981,154 @@ READ16_MEMBER(seta_state::extra_r) return m_extra_port.read_safe(0xff); } -ADDRESS_MAP_START(seta_state::wrofaero_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_READ(extra_r) // Buttons 4,5,6 (Daioh only) - - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound +void seta_state::wrofaero_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram(); // RAM + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + map(0x500006, 0x500007).r(this, FUNC(seta_state::extra_r)); // Buttons 4,5,6 (Daioh only) + + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // (jjsquawk) + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound #if __uPD71054_TIMER - AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? + map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ? #else - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? + map(0xd00000, 0xd00007).nopw(); // ? #endif - AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END + map(0xe00000, 0xe00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} -ADDRESS_MAP_START(seta_state::zombraid_map) - AM_IMPORT_FROM( wrofaero_map ) - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram") // actually 8K x8 SRAM - AM_RANGE(0xf00000, 0xf00001) AM_WRITE(zombraid_gun_w) - AM_RANGE(0xf00002, 0xf00003) AM_READ(zombraid_gun_r) -ADDRESS_MAP_END +void seta_state::zombraid_map(address_map &map) +{ + wrofaero_map(map); + map(0x300000, 0x30ffff).ram().share("nvram"); // actually 8K x8 SRAM + map(0xf00000, 0xf00001).w(this, FUNC(seta_state::zombraid_gun_w)); + map(0xf00002, 0xf00003).r(this, FUNC(seta_state::zombraid_gun_r)); +} READ16_MEMBER(seta_state::zingzipbl_unknown_r) { return 0x0000; } -ADDRESS_MAP_START(seta_state::zingzipbl_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("workram") // RAM (pointer for zombraid crosshair hack) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) +void seta_state::zingzipbl_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) // AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 // AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400002, 0x400003) AM_READ(zingzipbl_unknown_r) // P2 + map(0x400002, 0x400003).r(this, FUNC(seta_state::zingzipbl_unknown_r)); // P2 // AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers //AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - - AM_RANGE(0x902010, 0x902013) AM_READ(zingzipbl_unknown_r ) - - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_RAM // soundram on original + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // (jjsquawk) + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + + map(0x902010, 0x902013).r(this, FUNC(seta_state::zingzipbl_unknown_r)); + + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).ram(); // soundram on original #if __uPD71054_TIMER - AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? + map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ? #else - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? + map(0xd00000, 0xd00007).nopw(); // ? #endif - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta_state::jjsquawb_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("workram") // RAM (pointer for zombraid crosshair hack) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x70b3ff) AM_RAM // RZ: (rezon,jjsquawk) - AM_RANGE(0x70b400, 0x70bfff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x70c000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0 - AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x908000, 0x908005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x909000, 0x909005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa0a000, 0xa0a5ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // RZ: Sprites Y - AM_RANGE(0xa0a600, 0xa0a607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} + +void seta_state::jjsquawb_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x70b3ff).ram(); // RZ: (rezon,jjsquawk) + map(0x70b400, 0x70bfff).ram().share("paletteram1"); // Palette + map(0x70c000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0 + map(0x804000, 0x807fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x908000, 0x908005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x909000, 0x909005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa0a000, 0xa0a5ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // RZ: Sprites Y + map(0xa0a600, 0xa0a607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); // AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // RZ: Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0xb0c000, 0xb0ffff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // RZ: Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound #if __uPD71054_TIMER - AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? + map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ? #else - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? + map(0xd00000, 0xd00007).nopw(); // ? #endif - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** Orbs ***************************************************************************/ -ADDRESS_MAP_START(seta_state::orbs_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_READNOP // ? - AM_RANGE(0x200000, 0x200001) AM_READNOP // ? - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins +void seta_state::orbs_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM + map(0x100000, 0x100001).nopr(); // ? + map(0x200000, 0x200001).nopr(); // ? + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).nopw(); // ? + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins //AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r ) // P1 - AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM - AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END + map(0x8000f0, 0x8000f1).ram(); // NVRAM + map(0x800100, 0x8001ff).ram(); // NVRAM + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} /*************************************************************************** Kero Kero Keroppi no Issyoni Asobou @@ -2177,27 +2189,28 @@ WRITE16_MEMBER(seta_state::keroppi_prize_w) } } -ADDRESS_MAP_START(seta_state::keroppi_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_READ(keroppi_protection_r) // - AM_RANGE(0x200000, 0x200001) AM_READ(keroppi_protection_init_r) // - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ(keroppi_coin_r) // Coins - AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM - AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? - AM_RANGE(0x900002, 0x900003) AM_WRITE(keroppi_prize_w) // - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END +void seta_state::keroppi_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM + map(0x100000, 0x100001).r(this, FUNC(seta_state::keroppi_protection_r)); // + map(0x200000, 0x200001).r(this, FUNC(seta_state::keroppi_protection_init_r)); // + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).nopw(); // ? + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).r(this, FUNC(seta_state::keroppi_coin_r)); // Coins + map(0x8000f0, 0x8000f1).ram(); // NVRAM + map(0x800100, 0x8001ff).ram(); // NVRAM + map(0x900000, 0x900001).nopw(); // ? + map(0x900002, 0x900003).w(this, FUNC(seta_state::keroppi_prize_w)); // + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} MACHINE_START_MEMBER(seta_state,keroppi) { @@ -2210,143 +2223,148 @@ MACHINE_START_MEMBER(seta_state,keroppi) ***************************************************************************/ /* similar to krzybowl */ -ADDRESS_MAP_START(seta_state::blockcar_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf03fff) AM_RAM // RAM - AM_RANGE(0xf04000, 0xf041ff) AM_RAM // Backup RAM? - AM_RANGE(0xf05000, 0xf050ff) AM_RAM // Backup RAM? - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?) - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?) - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta_state::blockcarb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf03fff) AM_RAM // RAM - AM_RANGE(0xf04000, 0xf041ff) AM_RAM // Backup RAM? - AM_RANGE(0xf05000, 0xf050ff) AM_RAM // Backup RAM? - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?) - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?) - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500008, 0x500009) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff) - //AM_RANGE(0x50000c, 0x50000d) // ?? - AM_RANGE(0xa00000, 0xa03fff) AM_NOP // Sound - not on this bootleg - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END +void seta_state::blockcar_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0xf00000, 0xf03fff).ram(); // RAM + map(0xf04000, 0xf041ff).ram(); // Backup RAM? + map(0xf05000, 0xf050ff).ram(); // Backup RAM? + map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?) + map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?) + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?) + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} + +void seta_state::blockcarb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0xf00000, 0xf03fff).ram(); // RAM + map(0xf04000, 0xf041ff).ram(); // Backup RAM? + map(0xf05000, 0xf050ff).ram(); // Backup RAM? + map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?) + map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?) + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?) + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x500009, 0x500009).w("oki", FUNC(okim6295_device::write)); + //map(0x50000c, 0x50000d); // ?? + map(0xa00000, 0xa03fff).noprw(); // Sound - not on this bootleg + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} /*************************************************************************** Daioh ***************************************************************************/ -ADDRESS_MAP_START(seta_state::daioh_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA") // Buttons 4,5,6 - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r ) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb13fff) AM_RAM - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // -ADDRESS_MAP_END +void seta_state::daioh_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500006, 0x500007).portr("EXTRA"); // Buttons 4,5,6 + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb13fff).ram(); + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xe00000, 0xe00001).nopw(); // +} /*************************************************************************** Daioh (location test version) ***************************************************************************/ -ADDRESS_MAP_START(seta_state::daiohp_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_MIRROR(0x080000) // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_MIRROR(0x080000) // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA") // Buttons 4,5,6 - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r ) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb13fff) AM_RAM - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END +void seta_state::daiohp_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().mirror(0x080000); // ROM + map(0x100000, 0x17ffff).rom().mirror(0x080000); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500006, 0x500007).portr("EXTRA"); // Buttons 4,5,6 + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb13fff).ram(); + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).nopw(); // ? + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** Dragon Unit, Quiz Kokology, Quiz Kokology 2, Strike Gunner ***************************************************************************/ -ADDRESS_MAP_START(seta_state::drgnunit_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM (qzkklogy) - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM (drgnunit,stg) - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // Watchdog - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x800005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - AM_RANGE(0x904000, 0x90ffff) AM_WRITENOP // unused (qzkklogy) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb00006, 0xb00007) AM_READNOP // unused (qzkklogy) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr -ADDRESS_MAP_END +void seta_state::drgnunit_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM (qzkklogy) + map(0xffc000, 0xffffff).ram(); // RAM (drgnunit,stg) + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).nopw(); // Watchdog + map(0x300000, 0x300001).nopw(); // ? IRQ Ack + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0x800000, 0x800005).ram().share("vctrl_0"); // VRAM Ctrl + map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + map(0x904000, 0x90ffff).nopw(); // unused (qzkklogy) + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xb00006, 0xb00007).nopr(); // unused (qzkklogy) + map(0xc00000, 0xc00001).ram(); // ? $4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr +} /*************************************************************************** The Roulette @@ -2479,136 +2497,142 @@ WRITE8_MEMBER(setaroul_state::led_w) show_outputs(); } -ADDRESS_MAP_START(setaroul_state::setaroul_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM +void setaroul_state::setaroul_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); - AM_RANGE(0x800000, 0x800003) AM_NOP // RS232C Auto Time Set: r/w + map(0x800000, 0x800003).noprw(); // RS232C Auto Time Set: r/w - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("nvram") + map(0xc00000, 0xc03fff).ram().share("nvram"); - AM_RANGE(0xc40000, 0xc40001) AM_NOP // lev. 2/5 irq ack - AM_RANGE(0xc80000, 0xc80001) AM_NOP // lev. 4 irq ack + map(0xc40000, 0xc40001).noprw(); // lev. 2/5 irq ack + map(0xc80000, 0xc80001).noprw(); // lev. 4 irq ack - AM_RANGE(0xcc0000, 0xcc001f) AM_READWRITE(rtc_r, rtc_w) + map(0xcc0000, 0xcc001f).rw(this, FUNC(setaroul_state::rtc_r), FUNC(setaroul_state::rtc_w)); - AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + map(0xd00000, 0xd00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); - AM_RANGE(0xd40000, 0xd40001) AM_READ_PORT("DSW1-A") AM_WRITE8(pay_w, 0x00ff) - AM_RANGE(0xd40002, 0xd40003) AM_READ_PORT("DSW1-B") + map(0xd40000, 0xd40001).portr("DSW1-A"); + map(0xd40001, 0xd40001).w(this, FUNC(setaroul_state::pay_w)); + map(0xd40002, 0xd40003).portr("DSW1-B"); - AM_RANGE(0xd40004, 0xd40005) AM_READ_PORT("DSW2-A") - AM_RANGE(0xd40006, 0xd40007) AM_READ_PORT("DSW2-B") + map(0xd40004, 0xd40005).portr("DSW2-A"); + map(0xd40006, 0xd40007).portr("DSW2-B"); - AM_RANGE(0xd40008, 0xd40009) AM_READ_PORT("COIN") AM_WRITE8(led_w, 0x00ff) - AM_RANGE(0xd4000a, 0xd4000b) AM_READ_PORT("DOOR") + map(0xd40008, 0xd40009).portr("COIN"); + map(0xd40009, 0xd40009).w(this, FUNC(setaroul_state::led_w)); + map(0xd4000a, 0xd4000b).portr("DOOR"); - AM_RANGE(0xd40010, 0xd40011) AM_READWRITE(inputs_r, mux_w) + map(0xd40010, 0xd40011).rw(this, FUNC(setaroul_state::inputs_r), FUNC(setaroul_state::mux_w)); - AM_RANGE(0xd40018, 0xd40019) AM_READ_PORT("DSW3") + map(0xd40018, 0xd40019).portr("DSW3"); - AM_RANGE(0xdc0000, 0xdc3fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0xdc0000, 0xdc3fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE(0xe00000, 0xe03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") - AM_RANGE(0xe40000, 0xe40005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl - AM_RANGE(0xf00000, 0xf03fff) AM_READWRITE(spritecode_r, spritecode_w) - AM_RANGE(0xf40000, 0xf40bff) AM_WRITE(spriteylow_w) - AM_RANGE(0xf40c00, 0xf40c11) AM_WRITE(spritectrl_w) + map(0xe00000, 0xe03fff).ram().w(this, FUNC(setaroul_state::vram_w<0>)).share("vram_0"); + map(0xe40000, 0xe40005).ram().share("vctrl_0"); // VRAM Ctrl + map(0xf00000, 0xf03fff).rw(this, FUNC(setaroul_state::spritecode_r), FUNC(setaroul_state::spritecode_w)); + map(0xf40000, 0xf40bff).w(this, FUNC(setaroul_state::spriteylow_w)); + map(0xf40c00, 0xf40c11).w(this, FUNC(setaroul_state::spritectrl_w)); // AM_RANGE(0xf80000, 0xf80001) AM_WRITE // $40 at boot -ADDRESS_MAP_END +} /*************************************************************************** Extreme Downhill / Sokonuke ***************************************************************************/ -ADDRESS_MAP_START(seta_state::extdwnhl_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM - AM_RANGE(0x220000, 0x23ffff) AM_RAM // RAM (sokonuke) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400008, 0x40000b) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x40000c, 0x40000d) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF) - AM_RANGE(0x500000, 0x500003) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500004, 0x500007) AM_NOP // IRQ Ack (extdwnhl (R) & sokonuke (W)) - AM_RANGE(0x600400, 0x600fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x601000, 0x610bff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb13fff) AM_RAM // - AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::extdwnhl_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x210000, 0x21ffff).ram(); // RAM + map(0x220000, 0x23ffff).ram(); // RAM (sokonuke) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400008, 0x40000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x40000c, 0x40000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF) + map(0x500000, 0x500003).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500004, 0x500007).noprw(); // IRQ Ack (extdwnhl (R) & sokonuke (W)) + map(0x600400, 0x600fff).ram().share("paletteram1"); // Palette + map(0x601000, 0x610bff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb13fff).ram(); // + map(0xe00000, 0xe03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /*************************************************************************** (Kamen) Masked Riders Club Battle Race / Mad Shark ***************************************************************************/ -ADDRESS_MAP_START(seta_state::kamenrid_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500007) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x500008, 0x500009) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x50000c, 0x50000d) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // xx Watchdog? (sokonuke) - AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x600004, 0x600005) AM_WRITE(ipl1_ack_w) - AM_RANGE(0x600006, 0x600007) AM_WRITE(ipl2_ack_w) - AM_RANGE(0x700000, 0x7003ff) AM_RAM // Palette RAM (tested) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x807fff) AM_RAM // tested - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x887fff) AM_RAM // tested - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb07fff) AM_RAM // tested - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::kamenrid_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500007).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x500008, 0x500009).portr("COINS"); // Coins + map(0x50000c, 0x50000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // xx Watchdog? (sokonuke) + map(0x600000, 0x600005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x600004, 0x600005).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0x600006, 0x600007).w(this, FUNC(seta_state::ipl2_ack_w)); + map(0x700000, 0x7003ff).ram(); // Palette RAM (tested) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x703fff).ram(); // Palette + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x807fff).ram(); // tested + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x887fff).ram(); // tested + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? $4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb07fff).ram(); // tested + map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /* almost identical to kamenrid */ -ADDRESS_MAP_START(seta_state::madshark_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x50000c, 0x50000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x600004, 0x600005) AM_WRITE(ipl1_ack_w) - AM_RANGE(0x600006, 0x600007) AM_WRITE(ipl2_ack_w) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::madshark_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x500008, 0x50000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x600000, 0x600005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x600004, 0x600005).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0x600006, 0x600007).w(this, FUNC(seta_state::ipl2_ack_w)); + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? $4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} WRITE16_MEMBER(seta_state::magspeed_lights_w) @@ -2622,63 +2646,65 @@ WRITE16_MEMBER(seta_state::magspeed_lights_w) } /* almost identical to kamenrid */ -ADDRESS_MAP_START(seta_state::magspeed_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x50000c, 0x50000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x500010, 0x500015) AM_RAM_WRITE(msgundam_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x500018, 0x500019) AM_WRITE(ipl1_ack_w) // lev 2 irq ack? - AM_RANGE(0x50001c, 0x50001d) AM_WRITE(ipl2_ack_w) // lev 4 irq ack? - AM_RANGE(0x600000, 0x600005) AM_WRITE(magspeed_lights_w) // Lights - AM_RANGE(0x600006, 0x600007) AM_WRITENOP // ? - AM_RANGE(0x700000, 0x7003ff) AM_RAM // Palette RAM (tested) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette RAM (tested) - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x807fff) AM_RAM // tested - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x887fff) AM_RAM // tested - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb07fff) AM_RAM // tested - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::magspeed_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x500008, 0x50000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x500010, 0x500015).ram().w(this, FUNC(seta_state::msgundam_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x500018, 0x500019).w(this, FUNC(seta_state::ipl1_ack_w)); // lev 2 irq ack? + map(0x50001c, 0x50001d).w(this, FUNC(seta_state::ipl2_ack_w)); // lev 4 irq ack? + map(0x600000, 0x600005).w(this, FUNC(seta_state::magspeed_lights_w)); // Lights + map(0x600006, 0x600007).nopw(); // ? + map(0x700000, 0x7003ff).ram(); // Palette RAM (tested) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x703fff).ram(); // Palette RAM (tested) + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x807fff).ram(); // tested + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x887fff).ram(); // tested + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? $4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb07fff).ram(); // tested + map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /*************************************************************************** Krazy Bowl ***************************************************************************/ -ADDRESS_MAP_START(seta_state::krzybowl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_READNOP // ? - AM_RANGE(0x200000, 0x200001) AM_READNOP // ? - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x600000, 0x600007) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff) // P1 trackball - AM_RANGE(0x600008, 0x60000f) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff) // P2 trackball - AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM - AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END +void seta_state::krzybowl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM + map(0x100000, 0x100001).nopr(); // ? + map(0x200000, 0x200001).nopr(); // ? + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).nopw(); // ? + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x600000, 0x600007).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P1 trackball + map(0x600008, 0x60000f).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P2 trackball + map(0x8000f0, 0x8000f1).ram(); // NVRAM + map(0x800100, 0x8001ff).ram(); // NVRAM + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} /*************************************************************************** @@ -2698,29 +2724,30 @@ WRITE16_MEMBER(seta_state::msgundam_vregs_w) /* Mirror RAM is necessary or startup, to clear Work RAM after the test */ -ADDRESS_MAP_START(seta_state::msgundam_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_MIRROR(0x70000) // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITE(ipl1_ack_w) // Lev 2 IRQ Ack - AM_RANGE(0x400004, 0x400005) AM_WRITE(ipl2_ack_w) // Lev 4 IRQ Ack - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(msgundam_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x880000, 0x880001) AM_RAM // ? 0x4000 - AM_RANGE(0x900000, 0x903fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) -ADDRESS_MAP_END +void seta_state::msgundam_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram().mirror(0x70000); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).w(this, FUNC(seta_state::ipl1_ack_w)); // Lev 2 IRQ Ack + map(0x400004, 0x400005).w(this, FUNC(seta_state::ipl2_ack_w)); // Lev 4 IRQ Ack + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::msgundam_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x880000, 0x880001).ram(); // ? 0x4000 + map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xa00000, 0xa03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0xa80000, 0xa83fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0xb00000, 0xb00005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xb80000, 0xb80005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); +} /*************************************************************************** @@ -2728,27 +2755,28 @@ ADDRESS_MAP_END ***************************************************************************/ /* similar to wrofaero */ -ADDRESS_MAP_START(seta_state::oisipuzl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette -ADDRESS_MAP_END +void seta_state::oisipuzl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).nopw(); // ? IRQ Ack + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x700000, 0x703fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00400, 0xc00fff).ram().share("paletteram1"); // Palette +} /*************************************************************************** @@ -2757,27 +2785,28 @@ ADDRESS_MAP_END /* Same as oisipuzl but with the sound system replaced */ -ADDRESS_MAP_START(seta_state::triplfun_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // tfun sound - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette -ADDRESS_MAP_END +void seta_state::triplfun_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).nopw(); // ? IRQ Ack + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500007, 0x500007).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // tfun sound + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00400, 0xc00fff).ram().share("paletteram1"); // Palette +} /*************************************************************************** @@ -2812,19 +2841,20 @@ READ16_MEMBER(seta_state::kiwame_input_r) } } -ADDRESS_MAP_START(seta_state::kiwame_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram") // RAM - AM_RANGE(0x800000, 0x803fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0x900000, 0x900001) AM_RAM // ? 0x4000 - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r) // mahjong panel - AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) -ADDRESS_MAP_END +void seta_state::kiwame_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram().share("nvram"); // RAM + map(0x800000, 0x803fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0x900000, 0x900001).ram(); // ? 0x4000 + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00009).r(this, FUNC(seta_state::kiwame_input_r)); // mahjong panel + map(0xe00000, 0xe00003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); +} /*************************************************************************** @@ -2843,111 +2873,117 @@ WRITE16_MEMBER(seta_state::thunderl_protection_w) /* Similar to downtown etc. */ -ADDRESS_MAP_START(seta_state::thunderl_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? - AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r ) // Protection (not in wits) - AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") // P3 (wits) - AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(seta_state::thunderlbl_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM -// AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? -// AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins -// AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r ) // Protection (not in wits) - AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0xff00) // P3 (wits) - AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits) -ADDRESS_MAP_END +void seta_state::thunderl_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); // ROM + map(0xffc000, 0xffffff).ram(); // RAM + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x300000, 0x300001).nopw(); // ? + map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits) + map(0xb00008, 0xb00009).portr("P3"); // P3 (wits) + map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits) + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe04000, 0xe07fff).ram(); // (wits) +} + + +void seta_state::thunderlbl_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); // ROM + map(0xffc000, 0xffffff).ram(); // RAM +// map(0x100000, 0x103fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x300000, 0x300001).nopw(); // ? +// map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins +// map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits) + map(0xb00008, 0xb00009).portr("P3"); // P3 (wits) + map(0xb00008, 0xb00008).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits) + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe04000, 0xe07fff).ram(); // (wits) +} /*************************************************************************** Wiggie Waggie ***************************************************************************/ -ADDRESS_MAP_START(seta_state::wiggie_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_NOP // X1_010 is not used - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? - AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r) // Protection (not in wits) - AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") // P3 (wits) - AM_RANGE(0xb00008, 0xb00009) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0xff00) - AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta_state::wiggie_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +void seta_state::wiggie_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); // ROM + map(0xffc000, 0xffffff).ram(); // RAM + map(0x100000, 0x103fff).noprw(); // X1_010 is not used + map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x300000, 0x300001).nopw(); // ? + map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits) + map(0xb00008, 0xb00009).portr("P3"); // P3 (wits) + map(0xb00008, 0xb00008).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits) + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe04000, 0xe07fff).ram(); // (wits) +} + +void seta_state::wiggie_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r("soundlatch1", FUNC(generic_latch_8_device::read)); +} /*************************************************************************** Ultraman Club / SD Gundam Neo Battling ***************************************************************************/ -ADDRESS_MAP_START(seta_state::umanclub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x3003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x300400, 0x300fff) AM_RAM // - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? (end of lev 2) - AM_RANGE(0x400004, 0x400005) AM_WRITENOP // ? (end of lev 2) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::umanclub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x3003ff).ram().share("paletteram1"); // Palette + map(0x300400, 0x300fff).ram(); // + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).nopw(); // ? (end of lev 2) + map(0x400004, 0x400005).nopw(); // ? (end of lev 2) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /*************************************************************************** @@ -2962,25 +2998,26 @@ WRITE8_MEMBER(seta_state::utoukond_sound_control_w) // other bits used for banking? (low nibble seems to always be 2) } -ADDRESS_MAP_START(seta_state::utoukond_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_WRITEONLY AM_SHARE("vctrl_1")// VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? ack -ADDRESS_MAP_END +void seta_state::utoukond_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).writeonly().share("vctrl_0");// VRAM 0&1 Ctrl + map(0x980000, 0x980005).writeonly().share("vctrl_1");// VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00001, 0xc00001).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xe00000, 0xe00001).nopw(); // ? ack +} /*************************************************************************** Pairs Love @@ -3003,52 +3040,54 @@ WRITE16_MEMBER(seta_state::pairlove_prot_w) m_pairslove_protram[offset] = data; } -ADDRESS_MAP_START(seta_state::pairlove_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?) - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?) - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x900000, 0x9001ff) AM_READWRITE(pairlove_prot_r,pairlove_prot_w) - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM -ADDRESS_MAP_END +void seta_state::pairlove_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?) + map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?) + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?) + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x900000, 0x9001ff).rw(this, FUNC(seta_state::pairlove_prot_r), FUNC(seta_state::pairlove_prot_w)); + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb00fff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xf00000, 0xf0ffff).ram(); // RAM +} /*************************************************************************** Crazy Fight ***************************************************************************/ -ADDRESS_MAP_START(seta_state::crazyfgt_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM - AM_RANGE(0x610000, 0x610001) AM_READ_PORT("COINS") - AM_RANGE(0x610002, 0x610003) AM_READ_PORT("UNK") - AM_RANGE(0x610004, 0x610005) AM_READ_PORT("INPUT") - AM_RANGE(0x610006, 0x610007) AM_WRITENOP - AM_RANGE(0x620000, 0x620003) AM_WRITENOP // protection - AM_RANGE(0x630000, 0x630003) AM_READ(seta_dsw_r) - AM_RANGE(0x640400, 0x640fff) AM_WRITEONLY AM_SHARE("paletteram1") // Palette - AM_RANGE(0x650000, 0x650003) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0x00ff) - AM_RANGE(0x658000, 0x658001) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff) - AM_RANGE(0x670000, 0x670001) AM_READNOP // watchdog? - AM_RANGE(0x800000, 0x803fff) AM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2 - AM_RANGE(0x880000, 0x883fff) AM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_WRITENOP // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr -ADDRESS_MAP_END +void seta_state::crazyfgt_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x40ffff).ram(); + map(0x610000, 0x610001).portr("COINS"); + map(0x610002, 0x610003).portr("UNK"); + map(0x610004, 0x610005).portr("INPUT"); + map(0x610006, 0x610007).nopw(); + map(0x620000, 0x620003).nopw(); // protection + map(0x630000, 0x630003).r(this, FUNC(seta_state::seta_dsw_r)); + map(0x640400, 0x640fff).writeonly().share("paletteram1"); // Palette + map(0x650000, 0x650003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff); + map(0x658001, 0x658001).w("oki", FUNC(okim6295_device::write)); + map(0x670000, 0x670001).nopr(); // watchdog? + map(0x800000, 0x803fff).w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2 + map(0x880000, 0x883fff).w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0 + map(0x900000, 0x900005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).nopw(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr +} /*************************************************************************** @@ -3201,46 +3240,47 @@ READ16_MEMBER(jockeyc_state::trackball_r) return 0; } -ADDRESS_MAP_START(jockeyc_state::jockeyc_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) +void jockeyc_state::jockeyc_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) - AM_RANGE(0x200000, 0x200001) AM_READWRITE(mux_r, jockeyc_mux_w) - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("COIN") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SERVICE") AM_WRITE(jockeyc_out_w) + map(0x200000, 0x200001).rw(this, FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::jockeyc_mux_w)); + map(0x200002, 0x200003).portr("COIN"); + map(0x200010, 0x200011).portr("SERVICE").w(this, FUNC(jockeyc_state::jockeyc_out_w)); - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300002, 0x300003) AM_NOP // clr.l $300000 (watchdog) + map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300002, 0x300003).noprw(); // clr.l $300000 (watchdog) - AM_RANGE(0x300010, 0x300011) AM_WRITENOP // lev1 ack - AM_RANGE(0x300020, 0x300021) AM_WRITENOP // lev2 ack - AM_RANGE(0x300040, 0x300041) AM_WRITENOP // lev4 ack - AM_RANGE(0x300060, 0x300061) AM_WRITENOP // lev6 ack + map(0x300010, 0x300011).nopw(); // lev1 ack + map(0x300020, 0x300021).nopw(); // lev2 ack + map(0x300040, 0x300041).nopw(); // lev4 ack + map(0x300060, 0x300061).nopw(); // lev6 ack #if JOCKEYC_HIDDEN_EDITOR - AM_RANGE(0x400000, 0x400007) AM_READ(trackball_r) + map(0x400000, 0x400007).r(this, FUNC(jockeyc_state::trackball_r)); #endif - AM_RANGE(0x500000, 0x500003) AM_READ(dsw_r) // DSW x 3 - AM_RANGE(0x600000, 0x600001) AM_READ(comm_r) // comm data - AM_RANGE(0x600002, 0x600003) AM_READ(comm_r) // comm status (bits 0,4,5,6) + map(0x500000, 0x500003).r(this, FUNC(jockeyc_state::dsw_r)); // DSW x 3 + map(0x600000, 0x600001).r(this, FUNC(jockeyc_state::comm_r)); // comm data + map(0x600002, 0x600003).r(this, FUNC(jockeyc_state::comm_r)); // comm status (bits 0,4,5,6) - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(rtc_r, rtc_w) + map(0x800000, 0x80001f).rw(this, FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w)); - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0xb04000, 0xb0ffff) AM_WRITENOP // likely left-over + map(0xa00000, 0xa00005).writeonly().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xb00000, 0xb03fff).ram().w(this, FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0xb04000, 0xb0ffff).nopw(); // likely left-over - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 + map(0xc00000, 0xc00001).ram(); // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (battery backed) -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed) +} /*************************************************************************** @@ -3288,40 +3328,41 @@ READ16_MEMBER(jockeyc_state::inttoote_700000_r) return m_inttoote_700000[offset] & 0x3f; } -ADDRESS_MAP_START(jockeyc_state::inttoote_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) +void jockeyc_state::inttoote_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) - AM_RANGE(0x200000, 0x200001) AM_READWRITE(mux_r, inttoote_mux_w) - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("COIN") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SERVICE") AM_WRITE(inttoote_out_w) + map(0x200000, 0x200001).rw(this, FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::inttoote_mux_w)); + map(0x200002, 0x200003).portr("COIN"); + map(0x200010, 0x200011).portr("SERVICE").w(this, FUNC(jockeyc_state::inttoote_out_w)); - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); - AM_RANGE(0x300010, 0x300011) AM_WRITENOP // lev1 ack - AM_RANGE(0x300020, 0x300021) AM_WRITENOP // lev2 ack - AM_RANGE(0x300040, 0x300041) AM_WRITENOP // lev4 ack - AM_RANGE(0x300060, 0x300061) AM_WRITENOP // lev6 ack + map(0x300010, 0x300011).nopw(); // lev1 ack + map(0x300020, 0x300021).nopw(); // lev2 ack + map(0x300040, 0x300041).nopw(); // lev4 ack + map(0x300060, 0x300061).nopw(); // lev6 ack - AM_RANGE(0x500000, 0x500003) AM_READ(dsw_r) // DSW x 3 + map(0x500000, 0x500003).r(this, FUNC(jockeyc_state::dsw_r)); // DSW x 3 - AM_RANGE(0x700000, 0x700101) AM_RAM_READ(inttoote_700000_r) AM_SHARE("inttoote_700000") + map(0x700000, 0x700101).ram().r(this, FUNC(jockeyc_state::inttoote_700000_r)).share("inttoote_700000"); - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(rtc_r, rtc_w) + map(0x800000, 0x80001f).rw(this, FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w)); - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 + map(0xa00000, 0xa00005).writeonly().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xb00000, 0xb03fff).ram().w(this, FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 + map(0xc00000, 0xc00001).ram(); // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (battery backed) -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed) +} /*************************************************************************** @@ -3350,41 +3391,43 @@ WRITE8_MEMBER(seta_state::sub_bankswitch_lockout_w) READ8_MEMBER(seta_state::ff_r){return 0xff;} -ADDRESS_MAP_START(seta_state::tndrcade_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_READ(ff_r) // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom) +void seta_state::tndrcade_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r(this, FUNC(seta_state::ff_r)); // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom) //AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // //AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1 - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2 - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x6000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END + map(0x1000, 0x1000).portr("P1"); // P1 + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x1001, 0x1001).portr("P2"); // P2 + map(0x1002, 0x1002).portr("COINS"); // Coins + map(0x2000, 0x2001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x3000, 0x3001).w("ym2", FUNC(ym3812_device::write)); + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x6000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** Twin Eagle ***************************************************************************/ -ADDRESS_MAP_START(seta_state::twineagl_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // - AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1 - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2 - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END +void seta_state::twineagl_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); // + map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); // + map(0x1000, 0x1000).portr("P1"); // P1 + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x1001, 0x1001).portr("P2"); // P2 + map(0x1002, 0x1002).portr("COINS"); // Coins + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x7000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** @@ -3414,17 +3457,18 @@ READ8_MEMBER(seta_state::downtown_ip_r) return 0; } -ADDRESS_MAP_START(seta_state::downtown_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // - AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1007) AM_READ(downtown_ip_r) // Input Ports - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END +void seta_state::downtown_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); // + map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); // + map(0x1000, 0x1007).r(this, FUNC(seta_state::downtown_ip_r)); // Input Ports + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x7000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** @@ -3459,52 +3503,56 @@ WRITE8_MEMBER(seta_state::calibr50_soundlatch2_w) m_subcpu->spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply } -ADDRESS_MAP_START(seta_state::calibr50_sub_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1snd", x1_010_device, read ,write) // Sound - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // From Main CPU - AM_RANGE(0x4000, 0x4000) AM_WRITE(calibr50_sub_bankswitch_w) // Bankswitching - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM - AM_RANGE(0xc000, 0xc000) AM_WRITE(calibr50_soundlatch2_w) // To Main CPU -ADDRESS_MAP_END +void seta_state::calibr50_sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); // Sound + map(0x4000, 0x4000).r("soundlatch1", FUNC(generic_latch_8_device::read)); // From Main CPU + map(0x4000, 0x4000).w(this, FUNC(seta_state::calibr50_sub_bankswitch_w)); // Bankswitching + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM + map(0xc000, 0xc000).w(this, FUNC(seta_state::calibr50_soundlatch2_w)); // To Main CPU +} /*************************************************************************** Meta Fox ***************************************************************************/ -ADDRESS_MAP_START(seta_state::metafox_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // - AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1") // P1 +void seta_state::metafox_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); // + map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); // + map(0x1000, 0x1000).portr("COINS"); // Coins + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x1002, 0x1002).portr("P1"); // P1 //AM_RANGE(0x1004, 0x1004) AM_READNOP // ? - AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P2") // P2 - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END + map(0x1006, 0x1006).portr("P2"); // P2 + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x7000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** Ultra Toukon Densetsu ***************************************************************************/ -ADDRESS_MAP_START(seta_state::utoukond_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1snd", x1_010_device, read, write) -ADDRESS_MAP_END +void seta_state::utoukond_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); +} -ADDRESS_MAP_START(seta_state::utoukond_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) - AM_RANGE(0x80, 0x80) AM_WRITE(utoukond_sound_control_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +void seta_state::utoukond_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x80, 0x80).w(this, FUNC(seta_state::utoukond_sound_control_w)); + map(0xc0, 0xc0).r("soundlatch1", FUNC(generic_latch_8_device::read)); +} /*************************************************************************** @@ -8254,19 +8302,21 @@ MACHINE_CONFIG_START(seta_state::blockcar) MACHINE_CONFIG_END -ADDRESS_MAP_START(seta_state::blockcarb_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xd000, 0xdfff) AM_RAM +void seta_state::blockcarb_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0xd000, 0xdfff).ram(); //AM_RANGE(0xf001, 0xf001) ?? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(seta_state::blockcarb_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void seta_state::blockcarb_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +} MACHINE_CONFIG_START(seta_state::blockcarb) blockcar(config); @@ -9263,19 +9313,21 @@ MACHINE_CONFIG_START(seta_state::thunderl) MACHINE_CONFIG_END -ADDRESS_MAP_START(seta_state::thunderlbl_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xdfff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void seta_state::thunderlbl_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xdfff).rom(); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(seta_state::thunderlbl_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +void seta_state::thunderlbl_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc0, 0xc0).mirror(0x3f).r("soundlatch1", FUNC(generic_latch_8_device::read)); +} MACHINE_CONFIG_START(seta_state::thunderlbl) diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index 92bced002e1..f5cc5a7e275 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -159,25 +159,26 @@ WRITE16_MEMBER(seta2_state::grdians_lockout_w) // popmessage("%04X", data & 0xffff); } -ADDRESS_MAP_START(seta2_state::grdians_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x304000, 0x30ffff) AM_RAM // ? seems tile data - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins - AM_RANGE(0x70000c, 0x70000d) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::grdians_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x304000, 0x30ffff).ram(); // ? seems tile data + map(0x600000, 0x600001).portr("DSW1"); // DSW 1 + map(0x600002, 0x600003).portr("DSW2"); // DSW 2 + map(0x700000, 0x700001).portr("P1"); // P1 + map(0x700002, 0x700003).portr("P2"); // P2 + map(0x700004, 0x700005).portr("SYSTEM"); // Coins + map(0x70000c, 0x70000d).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x800000, 0x800001).w(this, FUNC(seta2_state::grdians_lockout_w)); + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xc50000, 0xc5ffff).ram(); // cleared + map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xe00010, 0xe0001f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** Mobile Suit Gundam EX Revue @@ -195,27 +196,28 @@ WRITE16_MEMBER(seta2_state::gundamex_eeprom_w) m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE); } -ADDRESS_MAP_START(seta2_state::gundamex_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x57ffff) AM_ROM // ROM - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN0") // P1 - AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1") // P2 - AM_RANGE(0x70000c, 0x70000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::gundamex_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x57ffff).rom(); // ROM + map(0x600000, 0x600001).portr("DSW1"); // DSW 1 + map(0x600002, 0x600003).portr("DSW2"); // DSW 2 + map(0x700000, 0x700001).portr("P1"); // P1 + map(0x700002, 0x700003).portr("P2"); // P2 + map(0x700004, 0x700005).portr("SYSTEM"); // Coins + map(0x700008, 0x700009).portr("IN0"); // P1 + map(0x70000a, 0x70000b).portr("IN1"); // P2 + map(0x70000c, 0x70000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x800000, 0x800001).w(this, FUNC(seta2_state::grdians_lockout_w)); + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xc50000, 0xc5ffff).ram(); // cleared + map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xe00010, 0xe0001f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -259,70 +261,73 @@ WRITE16_MEMBER(seta2_state::mj4simai_keyboard_w) m_keyboard_row = data & 0xff; } -ADDRESS_MAP_START(seta2_state::mj4simai_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r) // P1 - AM_RANGE(0x600002, 0x600003) AM_READ(mj4simai_p2_r) // P2 - AM_RANGE(0x600004, 0x600005) AM_WRITE(mj4simai_keyboard_w) // select keyboard row to read - AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x600100, 0x600101) AM_READ_PORT("SYSTEM") // - AM_RANGE(0x600200, 0x600201) AM_WRITENOP // Leds? Coins? - AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x600300, 0x60030f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::mj4simai_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x600000, 0x600001).r(this, FUNC(seta2_state::mj4simai_p1_r)); // P1 + map(0x600002, 0x600003).r(this, FUNC(seta2_state::mj4simai_p2_r)); // P2 + map(0x600004, 0x600005).w(this, FUNC(seta2_state::mj4simai_keyboard_w)); // select keyboard row to read + map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x600100, 0x600101).portr("SYSTEM"); // + map(0x600200, 0x600201).nopw(); // Leds? Coins? + map(0x600300, 0x600301).portr("DSW1"); // DSW 1 + map(0x600302, 0x600303).portr("DSW2"); // DSW 2 + map(0x600300, 0x60030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** Kosodate Quiz My Angel ***************************************************************************/ -ADDRESS_MAP_START(seta2_state::myangel_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins - AM_RANGE(0x700006, 0x700007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x700200, 0x700201) AM_WRITENOP // Leds? Coins? - AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x700310, 0x70031f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::myangel_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x700000, 0x700001).portr("P1"); // P1 + map(0x700002, 0x700003).portr("P2"); // P2 + map(0x700004, 0x700005).portr("SYSTEM"); // Coins + map(0x700006, 0x700007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x700200, 0x700201).nopw(); // Leds? Coins? + map(0x700300, 0x700301).portr("DSW1"); // DSW 1 + map(0x700302, 0x700303).portr("DSW2"); // DSW 2 + map(0x700310, 0x70031f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** Kosodate Quiz My Angel 2 ***************************************************************************/ -ADDRESS_MAP_START(seta2_state::myangel2_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") // Coins - AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x600200, 0x600201) AM_WRITENOP // Leds? Coins? - AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x600300, 0x60030f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::myangel2_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x600000, 0x600001).portr("P1"); // P1 + map(0x600002, 0x600003).portr("P2"); // P2 + map(0x600004, 0x600005).portr("SYSTEM"); // Coins + map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x600200, 0x600201).nopw(); // Leds? Coins? + map(0x600300, 0x600301).portr("DSW1"); // DSW 1 + map(0x600302, 0x600303).portr("DSW2"); // DSW 2 + map(0x600300, 0x60030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd3ffff).ram().share("spriteram"); // Sprites + map(0xd40000, 0xd4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xd60000, 0xd6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -351,61 +356,65 @@ WRITE16_MEMBER(seta2_state::pzlbowl_coin_counter_w) } } -ADDRESS_MAP_START(seta2_state::pzlbowl_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x400300, 0x40030f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READWRITE(pzlbowl_coins_r,pzlbowl_coin_counter_w) // Coins + Protection? - AM_RANGE(0x500006, 0x500007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection - AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x840000, 0x84ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x860000, 0x86003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::pzlbowl_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x400300, 0x400301).portr("DSW1"); // DSW 1 + map(0x400302, 0x400303).portr("DSW2"); // DSW 2 + map(0x400300, 0x40030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).rw(this, FUNC(seta2_state::pzlbowl_coins_r), FUNC(seta2_state::pzlbowl_coin_counter_w)); // Coins + Protection? + map(0x500006, 0x500007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x700000, 0x700001).r(this, FUNC(seta2_state::pzlbowl_protection_r)); // Protection + map(0x800000, 0x83ffff).ram().share("spriteram"); // Sprites + map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x860000, 0x86003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** Penguin Bros ***************************************************************************/ -ADDRESS_MAP_START(seta2_state::penbros_base_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM // zeroed at startup, then never written again on originals, used on the bootleg - AM_RANGE(0x220000, 0x22ffff) AM_RAM // zeroed at startup, then never written again - AM_RANGE(0x230000, 0x23ffff) AM_RAM // zeroed at startup, then never written again on originals, used on the bootleg - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") - AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w) - AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) - AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta2_state::penbros_map) - AM_IMPORT_FROM(penbros_base_map) - AM_RANGE(0x300000, 0x30ffff) AM_RAM - AM_RANGE(0x500300, 0x500301) AM_READ_PORT("DSW1") - AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2") - AM_RANGE(0x500300, 0x50030f) AM_WRITE(sound_bank_w) - AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta2_state::ablastb_map) - AM_IMPORT_FROM(penbros_base_map) - AM_RANGE(0x508300, 0x508301) AM_READ_PORT("DSW1") - AM_RANGE(0x508302, 0x508303) AM_READ_PORT("DSW2") +void seta2_state::penbros_base_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x210000, 0x21ffff).ram(); // zeroed at startup, then never written again on originals, used on the bootleg + map(0x220000, 0x22ffff).ram(); // zeroed at startup, then never written again + map(0x230000, 0x23ffff).ram(); // zeroed at startup, then never written again on originals, used on the bootleg + map(0x600000, 0x600001).portr("P1"); + map(0x600002, 0x600003).portr("P2"); + map(0x600004, 0x600005).portr("SYSTEM"); + map(0x600004, 0x600005).w(this, FUNC(seta2_state::pzlbowl_coin_counter_w)); + map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0xa00000, 0xa03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); + map(0xb00000, 0xb3ffff).ram().share("spriteram"); + map(0xb40000, 0xb4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void seta2_state::penbros_map(address_map &map) +{ + penbros_base_map(map); + map(0x300000, 0x30ffff).ram(); + map(0x500300, 0x500301).portr("DSW1"); + map(0x500302, 0x500303).portr("DSW2"); + map(0x500300, 0x50030f).w(this, FUNC(seta2_state::sound_bank_w)); + map(0xb60000, 0xb6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); +} + +void seta2_state::ablastb_map(address_map &map) +{ + penbros_base_map(map); + map(0x508300, 0x508301).portr("DSW1"); + map(0x508302, 0x508303).portr("DSW2"); // TODO: Is there samples banking like in the original? -ADDRESS_MAP_END +} /*************************************************************************** @@ -446,24 +455,25 @@ WRITE16_MEMBER(seta2_state::reelquak_coin_w) // popmessage("COIN %04X", data & 0xffff); } -ADDRESS_MAP_START(seta2_state::reelquak_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram") // NVRAM (Battery Backed) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("TICKET") // Tickets - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("SYSTEM") // Coins - AM_RANGE(0x400006, 0x400007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x400200, 0x400201) AM_WRITE(reelquak_coin_w) // Coin Counters / IRQ Ack - AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x400300, 0x40030f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::reelquak_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x303fff).ram().share("nvram"); // NVRAM (Battery Backed) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("TICKET"); // Tickets + map(0x400004, 0x400005).portr("SYSTEM"); // Coins + map(0x400006, 0x400007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x400200, 0x400201).w(this, FUNC(seta2_state::reelquak_coin_w)); // Coin Counters / IRQ Ack + map(0x400300, 0x400301).portr("DSW1"); // DSW 1 + map(0x400302, 0x400303).portr("DSW2"); // DSW 2 + map(0x400300, 0x40030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -471,13 +481,14 @@ ADDRESS_MAP_END ***************************************************************************/ // To be done: -ADDRESS_MAP_START(seta2_state::namcostr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END +void seta2_state::namcostr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc60000, 0xc6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -497,32 +508,33 @@ WRITE16_MEMBER(seta2_state::samshoot_coin_w) // popmessage("%04x",data); } -ADDRESS_MAP_START(seta2_state::samshoot_map) - AM_RANGE( 0x000000, 0x1fffff ) AM_ROM - AM_RANGE( 0x200000, 0x20ffff ) AM_RAM - AM_RANGE( 0x300000, 0x30ffff ) AM_RAM AM_SHARE("nvram") +void seta2_state::samshoot_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x30ffff).ram().share("nvram"); - AM_RANGE( 0x400000, 0x400001 ) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE( 0x400002, 0x400003 ) AM_READ_PORT("BUTTONS") // Buttons + map(0x400000, 0x400001).portr("DSW1"); // DSW 1 + map(0x400002, 0x400003).portr("BUTTONS"); // Buttons - AM_RANGE( 0x400300, 0x40030f ) AM_WRITE(sound_bank_w ) // Samples Banks + map(0x400300, 0x40030f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks - AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("GUN1") // P1 - AM_RANGE( 0x580000, 0x580001 ) AM_READ_PORT("GUN2") // P2 + map(0x500000, 0x500001).portr("GUN1"); // P1 + map(0x580000, 0x580001).portr("GUN2"); // P2 - AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT("TRIGGER") // Trigger - AM_RANGE( 0x700002, 0x700003 ) AM_READ_PORT("PUMP") // Pump - AM_RANGE( 0x700004, 0x700005 ) AM_READ_PORT("COIN") AM_WRITE(samshoot_coin_w ) // Coins - AM_RANGE( 0x700006, 0x700007 ) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r ) // Watchdog? + map(0x700000, 0x700001).portr("TRIGGER"); // Trigger + map(0x700002, 0x700003).portr("PUMP"); // Pump + map(0x700004, 0x700005).portr("COIN").w(this, FUNC(seta2_state::samshoot_coin_w)); // Coins + map(0x700006, 0x700007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog? - AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers + map(0x800000, 0x83ffff).ram().share("spriteram"); // Sprites + map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x860000, 0x86003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers - AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE( 0xfffc00, 0xffffff ) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -592,39 +604,40 @@ WRITE16_MEMBER(staraudi_state::staraudi_tileram_w) m_gfxdecode->gfx(i)->mark_dirty(tile); } -ADDRESS_MAP_START(staraudi_state::staraudi_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x23ffff) AM_RAM // RAM +void staraudi_state::staraudi_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x23ffff).ram(); // RAM - AM_RANGE(0x400000, 0x45ffff) AM_READWRITE(staraudi_tileram_r, staraudi_tileram_w) AM_SHARE("tileram") // Tile RAM + map(0x400000, 0x45ffff).rw(this, FUNC(staraudi_state::staraudi_tileram_r), FUNC(staraudi_state::staraudi_tileram_w)).share("tileram"); // Tile RAM // AM_RANGE(0x500000, 0x53ffff) AM_RAM // Camera RAM (r8g8) // AM_RANGE(0x540000, 0x57ffff) AM_RAM // Camera RAM (00b8) - AM_RANGE(0x500000, 0x57ffff) AM_RAM AM_SHARE("rgbram") - - AM_RANGE(0x600000, 0x600001) AM_WRITE(staraudi_camera_w) // Camera Outputs - - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins - AM_RANGE(0x700006, 0x700007) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - - AM_RANGE(0x700100, 0x700101) AM_WRITE(staraudi_lamps1_w) // Lamps 1 - AM_RANGE(0x700180, 0x70018f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff ) - AM_RANGE(0x700200, 0x700201) AM_WRITE(staraudi_lamps2_w) // Lamps 2 - AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x700300, 0x70030f) AM_WRITE(sound_bank_w) // Samples Banks - - AM_RANGE(0x800000, 0x9fffff) AM_DEVREADWRITE("flash", intelfsh16_device, read, write) - - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared - AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0x500000, 0x57ffff).ram().share("rgbram"); + + map(0x600000, 0x600001).w(this, FUNC(staraudi_state::staraudi_camera_w)); // Camera Outputs + + map(0x700000, 0x700001).portr("P1"); // P1 + map(0x700002, 0x700003).portr("P2"); // P2 + map(0x700004, 0x700005).portr("SYSTEM"); // Coins + map(0x700006, 0x700007).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + + map(0x700100, 0x700101).w(this, FUNC(staraudi_state::staraudi_lamps1_w)); // Lamps 1 + map(0x700180, 0x70018f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff); + map(0x700200, 0x700201).w(this, FUNC(staraudi_state::staraudi_lamps2_w)); // Lamps 2 + map(0x700300, 0x700301).portr("DSW1"); // DSW 1 + map(0x700302, 0x700303).portr("DSW2"); // DSW 2 + map(0x700300, 0x70030f).w(this, FUNC(staraudi_state::sound_bank_w)); // Samples Banks + + map(0x800000, 0x9fffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + + map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites + map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xc50000, 0xc5ffff).ram(); // cleared + map(0xc60000, 0xc6003f).w(this, FUNC(staraudi_state::vregs_w)).share("vregs"); // Video Registers + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -676,28 +689,29 @@ WRITE16_MEMBER(seta2_state::telpacfl_lockout_w) // popmessage("LOCK %04X", data); } -ADDRESS_MAP_START(seta2_state::telpacfl_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram") // NVRAM (Battery Backed) - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("COIN") // Coin - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1") // P1 + Dispenser - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SERVICE") // Service - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("UNKNOWN") // (unused?) - AM_RANGE(0x700008, 0x700009) AM_WRITE(telpacfl_lamp1_w) // Lamps - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(telpacfl_lamp2_w) // "" - AM_RANGE(0x800000, 0x800001) AM_WRITE(telpacfl_lockout_w) // Coin Blockers - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0xd00006, 0xd00007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void seta2_state::telpacfl_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x303fff).ram().share("nvram"); // NVRAM (Battery Backed) + map(0x600000, 0x600001).portr("DSW1"); // DSW 1 + map(0x600002, 0x600003).portr("DSW2"); // DSW 2 + map(0x700000, 0x700001).portr("COIN"); // Coin + map(0x700002, 0x700003).portr("P1"); // P1 + Dispenser + map(0x700004, 0x700005).portr("SERVICE"); // Service + map(0x700006, 0x700007).portr("UNKNOWN"); // (unused?) + map(0x700008, 0x700009).w(this, FUNC(seta2_state::telpacfl_lamp1_w)); // Lamps + map(0x70000c, 0x70000d).w(this, FUNC(seta2_state::telpacfl_lamp2_w)); // "" + map(0x800000, 0x800001).w(this, FUNC(seta2_state::telpacfl_lockout_w)); // Coin Blockers + map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb3ffff).ram().share("spriteram"); // Sprites + map(0xb40000, 0xb4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0xb60000, 0xb6003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers + map(0xd00006, 0xd00007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0xe00000, 0xe00001) AM_WRITE - AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(sound_bank_w) // Samples Banks - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers -ADDRESS_MAP_END + map(0xe00010, 0xe0001f).w(this, FUNC(seta2_state::sound_bank_w)); // Samples Banks + map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers +} /*************************************************************************** @@ -880,50 +894,53 @@ WRITE32_MEMBER(seta2_state::oki_write) } } -ADDRESS_MAP_START(seta2_state::funcube_map) - AM_RANGE( 0x00000000, 0x0007ffff ) AM_ROM - AM_RANGE( 0x00200000, 0x0020ffff ) AM_RAM +void seta2_state::funcube_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); + map(0x00200000, 0x0020ffff).ram(); - AM_RANGE( 0x00400000, 0x00400003 ) AM_READ(funcube_debug_r) - AM_RANGE( 0x00400004, 0x00400007 ) AM_DEVREAD("watchdog", watchdog_timer_device, reset32_r) AM_WRITENOP + map(0x00400000, 0x00400003).r(this, FUNC(seta2_state::funcube_debug_r)); + map(0x00400004, 0x00400007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw(); - AM_RANGE( 0x00500000, 0x00500003 ) AM_READWRITE(oki_read, oki_write) + map(0x00500000, 0x00500003).rw(this, FUNC(seta2_state::oki_read), FUNC(seta2_state::oki_write)); - AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram") - AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") // Palette - AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(vregs_w, 0xffffffff ) AM_SHARE("vregs") + map(0x00800000, 0x0083ffff).rw(this, FUNC(seta2_state::spriteram16_word_r), FUNC(seta2_state::spriteram16_word_w)).share("spriteram"); + map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette + map(0x00860000, 0x0086003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); - AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w ) + map(0x00c00000, 0x00c002ff).rw(this, FUNC(seta2_state::funcube_nvram_dword_r), FUNC(seta2_state::funcube_nvram_dword_w)); - AM_RANGE(0xf0000000, 0xf00001ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, seta2_coldfire_regs_r, seta2_coldfire_regs_w) // technically this can be moved with MBAR - AM_RANGE(0xffffe000, 0xffffffff ) AM_RAM // SRAM -ADDRESS_MAP_END + map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR + map(0xffffe000, 0xffffffff).ram(); // SRAM +} -ADDRESS_MAP_START(seta2_state::funcube2_map) - AM_RANGE( 0x00000000, 0x0007ffff ) AM_ROM - AM_RANGE( 0x00200000, 0x0020ffff ) AM_RAM +void seta2_state::funcube2_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); + map(0x00200000, 0x0020ffff).ram(); - AM_RANGE( 0x00500000, 0x00500003 ) AM_READ(funcube_debug_r ) - AM_RANGE( 0x00500004, 0x00500007 ) AM_DEVREAD("watchdog", watchdog_timer_device, reset32_r) AM_WRITENOP + map(0x00500000, 0x00500003).r(this, FUNC(seta2_state::funcube_debug_r)); + map(0x00500004, 0x00500007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw(); - AM_RANGE( 0x00600000, 0x00600003 ) AM_READWRITE(oki_read, oki_write) + map(0x00600000, 0x00600003).rw(this, FUNC(seta2_state::oki_read), FUNC(seta2_state::oki_write)); - AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram") - AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(vregs_w, 0xffffffff ) AM_SHARE("vregs") + map(0x00800000, 0x0083ffff).rw(this, FUNC(seta2_state::spriteram16_word_r), FUNC(seta2_state::spriteram16_word_w)).share("spriteram"); + map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x00860000, 0x0086003f).w(this, FUNC(seta2_state::vregs_w)).share("vregs"); - AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w ) + map(0x00c00000, 0x00c002ff).rw(this, FUNC(seta2_state::funcube_nvram_dword_r), FUNC(seta2_state::funcube_nvram_dword_w)); - AM_RANGE(0xf0000000, 0xf00001ff) AM_DEVREADWRITE("maincpu_onboard", mcf5206e_peripheral_device, seta2_coldfire_regs_r, seta2_coldfire_regs_w) // technically this can be moved with MBAR - AM_RANGE(0xffffe000, 0xffffffff ) AM_RAM // SRAM -ADDRESS_MAP_END + map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR + map(0xffffe000, 0xffffffff).ram(); // SRAM +} // Sub CPU -ADDRESS_MAP_START(seta2_state::funcube_sub_map) - AM_RANGE( 0x000000, 0x01ffff ) AM_ROM - AM_RANGE( 0x200000, 0x20017f ) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void seta2_state::funcube_sub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x200000, 0x20017f).ram().share("nvram"); +} @@ -1014,19 +1031,21 @@ READ16_MEMBER(seta2_state::funcube_battery_r) } // cabinet linking on sci0 -ADDRESS_MAP_START(seta2_state::funcube_sub_io) - AM_RANGE( h8_device::PORT_7, h8_device::PORT_7 ) AM_READ(funcube_coins_r ) - AM_RANGE( h8_device::PORT_4, h8_device::PORT_4 ) AM_READ(funcube_battery_r ) - AM_RANGE( h8_device::PORT_A, h8_device::PORT_A ) AM_READWRITE(funcube_outputs_r, funcube_outputs_w ) AM_SHARE("funcube_outputs") - AM_RANGE( h8_device::PORT_B, h8_device::PORT_B ) AM_WRITE(funcube_leds_w ) AM_SHARE("funcube_leds") -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta2_state::funcube2_sub_io) - AM_RANGE( h8_device::PORT_7, h8_device::PORT_7 ) AM_READ(funcube_coins_r ) - AM_RANGE( h8_device::PORT_4, h8_device::PORT_4 ) AM_NOP // unused - AM_RANGE( h8_device::PORT_A, h8_device::PORT_A ) AM_READWRITE(funcube_outputs_r, funcube_outputs_w ) AM_SHARE("funcube_outputs") - AM_RANGE( h8_device::PORT_B, h8_device::PORT_B ) AM_WRITE(funcube_leds_w ) AM_SHARE("funcube_leds") -ADDRESS_MAP_END +void seta2_state::funcube_sub_io(address_map &map) +{ + map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(seta2_state::funcube_coins_r)); + map(h8_device::PORT_4, h8_device::PORT_4).r(this, FUNC(seta2_state::funcube_battery_r)); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(seta2_state::funcube_outputs_r), FUNC(seta2_state::funcube_outputs_w)).share("funcube_outputs"); + map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(seta2_state::funcube_leds_w)).share("funcube_leds"); +} + +void seta2_state::funcube2_sub_io(address_map &map) +{ + map(h8_device::PORT_7, h8_device::PORT_7).r(this, FUNC(seta2_state::funcube_coins_r)); + map(h8_device::PORT_4, h8_device::PORT_4).noprw(); // unused + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(seta2_state::funcube_outputs_r), FUNC(seta2_state::funcube_outputs_w)).share("funcube_outputs"); + map(h8_device::PORT_B, h8_device::PORT_B).w(this, FUNC(seta2_state::funcube_leds_w)).share("funcube_leds"); +} diff --git a/src/mame/drivers/sf.cpp b/src/mame/drivers/sf.cpp index 376febf47f9..368756ec45f 100644 --- a/src/mame/drivers/sf.cpp +++ b/src/mame/drivers/sf.cpp @@ -161,96 +161,102 @@ WRITE8_MEMBER(sf_state::msm2_5205_w) m_msm2->vclk_w(0); } -ADDRESS_MAP_START(sf_state::sfan_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x04ffff) AM_ROM - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("PUNCH") - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("KICK") - AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("DSW1") - AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2") - AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc0000e, 0xc0000f) AM_READNOP - AM_RANGE(0xc00010, 0xc00011) AM_WRITE8(coin_w, 0x00ff) - AM_RANGE(0xc00014, 0xc00015) AM_WRITE(fg_scroll_w) - AM_RANGE(0xc00018, 0xc00019) AM_WRITE(bg_scroll_w) - AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(gfxctrl_w) - AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE8(soundcmd_w, 0x00ff) +void sf_state::sfan_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x04ffff).rom(); + map(0x800000, 0x800fff).ram().w(this, FUNC(sf_state::videoram_w)).share("videoram"); + map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc00001).portr("IN0"); + map(0xc00002, 0xc00003).portr("IN1"); + map(0xc00004, 0xc00005).portr("PUNCH"); + map(0xc00006, 0xc00007).portr("KICK"); + map(0xc00008, 0xc00009).portr("DSW1"); + map(0xc0000a, 0xc0000b).portr("DSW2"); + map(0xc0000c, 0xc0000d).portr("SYSTEM"); + map(0xc0000e, 0xc0000f).nopr(); + map(0xc00011, 0xc00011).w(this, FUNC(sf_state::coin_w)); + map(0xc00014, 0xc00015).w(this, FUNC(sf_state::fg_scroll_w)); + map(0xc00018, 0xc00019).w(this, FUNC(sf_state::bg_scroll_w)); + map(0xc0001a, 0xc0001b).w(this, FUNC(sf_state::gfxctrl_w)); + map(0xc0001d, 0xc0001d).w(this, FUNC(sf_state::soundcmd_w)); // AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w) - AM_RANGE(0xff8000, 0xffdfff) AM_RAM - AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_SHARE("objectram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sf_state::sfus_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x04ffff) AM_ROM - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") - AM_RANGE(0xc00004, 0xc00005) AM_READNOP - AM_RANGE(0xc00006, 0xc00007) AM_READNOP - AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("DSW1") - AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2") - AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc0000e, 0xc0000f) AM_READNOP - AM_RANGE(0xc00010, 0xc00011) AM_WRITE8(coin_w, 0x00ff) - AM_RANGE(0xc00014, 0xc00015) AM_WRITE(fg_scroll_w) - AM_RANGE(0xc00018, 0xc00019) AM_WRITE(bg_scroll_w) - AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(gfxctrl_w) - AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE8(soundcmd_w, 0x00ff) + map(0xff8000, 0xffdfff).ram(); + map(0xffe000, 0xffffff).ram().share("objectram"); +} + +void sf_state::sfus_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x04ffff).rom(); + map(0x800000, 0x800fff).ram().w(this, FUNC(sf_state::videoram_w)).share("videoram"); + map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc00001).portr("IN0"); + map(0xc00002, 0xc00003).portr("IN1"); + map(0xc00004, 0xc00005).nopr(); + map(0xc00006, 0xc00007).nopr(); + map(0xc00008, 0xc00009).portr("DSW1"); + map(0xc0000a, 0xc0000b).portr("DSW2"); + map(0xc0000c, 0xc0000d).portr("SYSTEM"); + map(0xc0000e, 0xc0000f).nopr(); + map(0xc00011, 0xc00011).w(this, FUNC(sf_state::coin_w)); + map(0xc00014, 0xc00015).w(this, FUNC(sf_state::fg_scroll_w)); + map(0xc00018, 0xc00019).w(this, FUNC(sf_state::bg_scroll_w)); + map(0xc0001a, 0xc0001b).w(this, FUNC(sf_state::gfxctrl_w)); + map(0xc0001d, 0xc0001d).w(this, FUNC(sf_state::soundcmd_w)); // AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w) - AM_RANGE(0xff8000, 0xffdfff) AM_RAM - AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_SHARE("objectram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sf_state::sfjp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x04ffff) AM_ROM - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb00000, 0xb007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN2") - AM_RANGE(0xc00006, 0xc00007) AM_READNOP - AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("DSW1") - AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2") - AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc0000e, 0xc0000f) AM_READNOP - AM_RANGE(0xc00010, 0xc00011) AM_WRITE8(coin_w, 0x00ff) - AM_RANGE(0xc00014, 0xc00015) AM_WRITE(fg_scroll_w) - AM_RANGE(0xc00018, 0xc00019) AM_WRITE(bg_scroll_w) - AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(gfxctrl_w) - AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE8(soundcmd_w, 0x00ff) - AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w) - AM_RANGE(0xff8000, 0xffdfff) AM_RAM - AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_SHARE("objectram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sf_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) -ADDRESS_MAP_END + map(0xff8000, 0xffdfff).ram(); + map(0xffe000, 0xffffff).ram().share("objectram"); +} + +void sf_state::sfjp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x04ffff).rom(); + map(0x800000, 0x800fff).ram().w(this, FUNC(sf_state::videoram_w)).share("videoram"); + map(0xb00000, 0xb007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc00001).portr("IN0"); + map(0xc00002, 0xc00003).portr("IN1"); + map(0xc00004, 0xc00005).portr("IN2"); + map(0xc00006, 0xc00007).nopr(); + map(0xc00008, 0xc00009).portr("DSW1"); + map(0xc0000a, 0xc0000b).portr("DSW2"); + map(0xc0000c, 0xc0000d).portr("SYSTEM"); + map(0xc0000e, 0xc0000f).nopr(); + map(0xc00011, 0xc00011).w(this, FUNC(sf_state::coin_w)); + map(0xc00014, 0xc00015).w(this, FUNC(sf_state::fg_scroll_w)); + map(0xc00018, 0xc00019).w(this, FUNC(sf_state::bg_scroll_w)); + map(0xc0001a, 0xc0001b).w(this, FUNC(sf_state::gfxctrl_w)); + map(0xc0001d, 0xc0001d).w(this, FUNC(sf_state::soundcmd_w)); + map(0xc0001e, 0xc0001f).w(this, FUNC(sf_state::protection_w)); + map(0xff8000, 0xffdfff).ram(); + map(0xffe000, 0xffffff).ram().share("objectram"); +} + +void sf_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); +} /* Yes, _no_ ram */ -ADDRESS_MAP_START(sf_state::sound2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0x0000, 0xffff) AM_WRITENOP /* avoid cluttering up error.log */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(sf_state::sound2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(msm1_5205_w) - AM_RANGE(0x01, 0x01) AM_WRITE(msm2_5205_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x02, 0x02) AM_WRITE(sound2_bank_w) -ADDRESS_MAP_END +void sf_state::sound2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).bankr("bank1"); + map(0x0000, 0xffff).nopw(); /* avoid cluttering up error.log */ +} + +void sf_state::sound2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(sf_state::msm1_5205_w)); + map(0x01, 0x01).w(this, FUNC(sf_state::msm2_5205_w)); + map(0x01, 0x01).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x02, 0x02).w(this, FUNC(sf_state::sound2_bank_w)); +} diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp index d5e471a9b3b..f6d1521b08a 100644 --- a/src/mame/drivers/sfbonus.cpp +++ b/src/mame/drivers/sfbonus.cpp @@ -1212,10 +1212,11 @@ uint32_t sfbonus_state::screen_update_sfbonus(screen_device &screen, bitmap_ind1 -ADDRESS_MAP_START(sfbonus_state::sfbonus_map) - AM_RANGE(0x0000, 0xefff) AM_ROMBANK("bank1") AM_WRITE(sfbonus_videoram_w) - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void sfbonus_state::sfbonus_map(address_map &map) +{ + map(0x0000, 0xefff).bankr("bank1").w(this, FUNC(sfbonus_state::sfbonus_videoram_w)); + map(0xf000, 0xffff).ram().share("nvram"); +} WRITE8_MEMBER(sfbonus_state::sfbonus_bank_w) { @@ -1282,39 +1283,40 @@ WRITE8_MEMBER(sfbonus_state::sfbonus_2c01_w) } -ADDRESS_MAP_START(sfbonus_state::sfbonus_io) - AM_RANGE(0x0400, 0x0400) AM_READ_PORT("KEY1") - AM_RANGE(0x0408, 0x0408) AM_READ_PORT("KEY2") - AM_RANGE(0x0410, 0x0410) AM_READ_PORT("KEY3") +void sfbonus_state::sfbonus_io(address_map &map) +{ + map(0x0400, 0x0400).portr("KEY1"); + map(0x0408, 0x0408).portr("KEY2"); + map(0x0410, 0x0410).portr("KEY3"); - AM_RANGE(0x0418, 0x0418) AM_READ_PORT("SWITCH1") - AM_RANGE(0x0420, 0x0420) AM_READ_PORT("SWITCH2") - AM_RANGE(0x0428, 0x0428) AM_READ_PORT("SWITCH3") - AM_RANGE(0x0430, 0x0430) AM_READ_PORT("SWITCH4") - AM_RANGE(0x0438, 0x0438) AM_READ_PORT("SWITCH5") + map(0x0418, 0x0418).portr("SWITCH1"); + map(0x0420, 0x0420).portr("SWITCH2"); + map(0x0428, 0x0428).portr("SWITCH3"); + map(0x0430, 0x0430).portr("SWITCH4"); + map(0x0438, 0x0438).portr("SWITCH5"); - AM_RANGE(0x0800, 0x0800) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0x0800, 0x0800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x0c00, 0x0c00) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0x0c01, 0x0c01) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE(0x0c02, 0x0c02) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x0c00, 0x0c00).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0c01, 0x0c01).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0c02, 0x0c02).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x1800, 0x1807) AM_WRITE(sfbonus_1800_w) AM_SHARE("1800_regs") // lamps and coin counters + map(0x1800, 0x1807).w(this, FUNC(sfbonus_state::sfbonus_1800_w)).share("1800_regs"); // lamps and coin counters - AM_RANGE(0x2400, 0x241f) AM_RAM AM_SHARE("vregs") + map(0x2400, 0x241f).ram().share("vregs"); - AM_RANGE(0x2800, 0x2800) AM_READ(sfbonus_2800_r) - AM_RANGE(0x2801, 0x2801) AM_READ(sfbonus_2801_r) AM_WRITE(sfbonus_2801_w) AM_SHARE("2801_regs") + map(0x2800, 0x2800).r(this, FUNC(sfbonus_state::sfbonus_2800_r)); + map(0x2801, 0x2801).r(this, FUNC(sfbonus_state::sfbonus_2801_r)).w(this, FUNC(sfbonus_state::sfbonus_2801_w)).share("2801_regs"); - AM_RANGE(0x2c00, 0x2c00) AM_READ(sfbonus_2c00_r) - AM_RANGE(0x2c01, 0x2c01) AM_READ(sfbonus_2c01_r) AM_WRITE(sfbonus_2c01_w) AM_SHARE("2c01_regs") + map(0x2c00, 0x2c00).r(this, FUNC(sfbonus_state::sfbonus_2c00_r)); + map(0x2c01, 0x2c01).r(this, FUNC(sfbonus_state::sfbonus_2c01_r)).w(this, FUNC(sfbonus_state::sfbonus_2c01_w)).share("2c01_regs"); - AM_RANGE(0x3000, 0x3000) AM_WRITE(sfbonus_3000_w) AM_SHARE("3000_regs") - AM_RANGE(0x3400, 0x3400) AM_WRITE(sfbonus_bank_w) - AM_RANGE(0x3800, 0x3800) AM_READ(sfbonus_3800_r) + map(0x3000, 0x3000).w(this, FUNC(sfbonus_state::sfbonus_3000_w)).share("3000_regs"); + map(0x3400, 0x3400).w(this, FUNC(sfbonus_state::sfbonus_bank_w)); + map(0x3800, 0x3800).r(this, FUNC(sfbonus_state::sfbonus_3800_r)); - AM_RANGE(0x3800, 0x3807) AM_WRITE(sfbonus_3800_w) AM_SHARE("3800_regs") -ADDRESS_MAP_END + map(0x3800, 0x3807).w(this, FUNC(sfbonus_state::sfbonus_3800_w)).share("3800_regs"); +} static const gfx_layout sfbonus_layout = @@ -1359,9 +1361,10 @@ void sfbonus_state::machine_reset() } -ADDRESS_MAP_START(sfbonus_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void sfbonus_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(sfbonus_state::sfbonus) diff --git a/src/mame/drivers/sfcbox.cpp b/src/mame/drivers/sfcbox.cpp index 9f131ec4635..270a051ebed 100644 --- a/src/mame/drivers/sfcbox.cpp +++ b/src/mame/drivers/sfcbox.cpp @@ -167,11 +167,12 @@ uint32_t sfcbox_state::screen_update( screen_device &screen, bitmap_rgb32 &bitma return 0; } -ADDRESS_MAP_START(sfcbox_state::snes_map) - AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes_r_bank1, snes_w_bank1) - AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ - AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* Mirror and ROM */ -ADDRESS_MAP_END +void sfcbox_state::snes_map(address_map &map) +{ + map(0x000000, 0x7dffff).rw(this, FUNC(sfcbox_state::snes_r_bank1), FUNC(sfcbox_state::snes_w_bank1)); + map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ + map(0x800000, 0xffffff).rw(this, FUNC(sfcbox_state::snes_r_bank2), FUNC(sfcbox_state::snes_w_bank2)); /* Mirror and ROM */ +} READ8_MEMBER(sfcbox_state::spc_ram_100_r) { @@ -183,18 +184,20 @@ WRITE8_MEMBER(sfcbox_state::spc_ram_100_w) m_spc700->spc_ram_w(space, offset + 0x100, data); } -ADDRESS_MAP_START(sfcbox_state::spc_mem) - AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */ - AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */ - AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w) -ADDRESS_MAP_END +void sfcbox_state::spc_mem(address_map &map) +{ + map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */ + map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */ + map(0x0100, 0xffff).rw(this, FUNC(sfcbox_state::spc_ram_100_r), FUNC(sfcbox_state::spc_ram_100_w)); +} -ADDRESS_MAP_START(sfcbox_state::sfcbox_map) - AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("krom", 0) - AM_RANGE(0x20000, 0x27fff) AM_RAM - AM_RANGE(0x40000, 0x47fff) AM_ROM AM_REGION("grom1", 0) - AM_RANGE(0x60000, 0x67fff) AM_ROM AM_REGION("grom2", 0) -ADDRESS_MAP_END +void sfcbox_state::sfcbox_map(address_map &map) +{ + map(0x00000, 0x0ffff).rom().region("krom", 0); + map(0x20000, 0x27fff).ram(); + map(0x40000, 0x47fff).rom().region("grom1", 0); + map(0x60000, 0x67fff).rom().region("grom2", 0); +} WRITE8_MEMBER( sfcbox_state::port_80_w ) @@ -283,21 +286,22 @@ WRITE8_MEMBER( sfcbox_state::snes_map_1_w ) printf("%s SRAM Size\n",sram_size[((data & 0xc0) >> 6)]); } -ADDRESS_MAP_START(sfcbox_state::sfcbox_io) - AM_RANGE(0x00, 0x3f) AM_RAM // internal i/o - AM_RANGE(0x0b, 0x0b) AM_DEVWRITE("mb90082",mb90082_device,write) - AM_RANGE(0x80, 0x80) AM_READ_PORT("KEY") AM_WRITE(port_80_w) // Keyswitch and Button Inputs / SNES Transfer and Misc Output - AM_RANGE(0x81, 0x81) AM_READWRITE(port_81_r,port_81_w) // SNES Transfer and Misc Input / Misc Output +void sfcbox_state::sfcbox_io(address_map &map) +{ + map(0x00, 0x3f).ram(); // internal i/o + map(0x0b, 0x0b).w(m_mb90082, FUNC(mb90082_device::write)); + map(0x80, 0x80).portr("KEY").w(this, FUNC(sfcbox_state::port_80_w)); // Keyswitch and Button Inputs / SNES Transfer and Misc Output + map(0x81, 0x81).rw(this, FUNC(sfcbox_state::port_81_r), FUNC(sfcbox_state::port_81_w)); // SNES Transfer and Misc Input / Misc Output // AM_RANGE(0x82, 0x82) // Unknown/unused - AM_RANGE(0x83, 0x83) AM_READWRITE(port_83_r,port_83_w) // Joypad Input/Status / Joypad Output/Control + map(0x83, 0x83).rw(this, FUNC(sfcbox_state::port_83_r), FUNC(sfcbox_state::port_83_w)); // Joypad Input/Status / Joypad Output/Control // AM_RANGE(0x84, 0x84) // Joypad 1, MSB (1st 8 bits) (eg. Bit7=ButtonB, 0=Low=Pressed) // AM_RANGE(0x85, 0x85) // Joypad 1, LSB (2nd 8 bits) (eg. Bit0=LSB of ID, 0=Low=One) // AM_RANGE(0x86, 0x86) // Joypad 2, MSB (1st 8 bits) (eg. Bit7=ButtonB, 0=Low=Pressed) // AM_RANGE(0x87, 0x87) // Joypad 2, LSB (2nd 8 bits) (eg. Bit0=LSB of ID, 0=Low=One) - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("RTC_R") AM_WRITE_PORT("RTC_W") // Real Time Clock - AM_RANGE(0xc0, 0xc0) AM_WRITE(snes_map_0_w) // SNES Mapping Register 0 - AM_RANGE(0xc1, 0xc1) AM_WRITE(snes_map_1_w) // SNES Mapping Register 1 -ADDRESS_MAP_END + map(0xa0, 0xa0).portr("RTC_R").portw("RTC_W"); // Real Time Clock + map(0xc0, 0xc0).w(this, FUNC(sfcbox_state::snes_map_0_w)); // SNES Mapping Register 0 + map(0xc1, 0xc1).w(this, FUNC(sfcbox_state::snes_map_1_w)); // SNES Mapping Register 1 +} static INPUT_PORTS_START( snes ) diff --git a/src/mame/drivers/sfkick.cpp b/src/mame/drivers/sfkick.cpp index 547162c9e88..00aa18f8301 100644 --- a/src/mame/drivers/sfkick.cpp +++ b/src/mame/drivers/sfkick.cpp @@ -465,40 +465,44 @@ WRITE8_MEMBER(sfkick_state::page3_w) -ADDRESS_MAP_START(sfkick_state::sfkick_map) - AM_RANGE( 0x0000, 0x1fff) AM_ROMBANK("bank1") - AM_RANGE( 0x2000, 0x3fff) AM_ROMBANK("bank2") - AM_RANGE( 0x4000, 0x5fff) AM_ROMBANK("bank3") - AM_RANGE( 0x6000, 0x7fff) AM_ROMBANK("bank4") - AM_RANGE( 0x8000, 0x9fff) AM_ROMBANK("bank5") - AM_RANGE( 0xa000, 0xbfff) AM_ROMBANK("bank6") - AM_RANGE( 0xc000, 0xdfff) AM_ROMBANK("bank7") - AM_RANGE( 0xe000, 0xffff) AM_ROMBANK("bank8") - AM_RANGE( 0x0000, 0x3fff) AM_WRITE(page0_w ) - AM_RANGE( 0x4000, 0x7fff) AM_WRITE(page1_w ) - AM_RANGE( 0x8000, 0xbfff) AM_WRITE(page2_w ) - AM_RANGE( 0xc000, 0xffff) AM_WRITE(page3_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sfkick_state::sfkick_io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0xa0, 0xa7) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE( "v9938", v9938_device, read, write) - AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0xb4, 0xb5) AM_RAM /* loopback ? req by sfkicka (MSX Bios leftover)*/ -ADDRESS_MAP_END - -ADDRESS_MAP_START(sfkick_state::sfkick_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sfkick_state::sfkick_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x05) AM_DEVREADWRITE("ym1", ym2203_device, read, write) -ADDRESS_MAP_END +void sfkick_state::sfkick_map(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bank1"); + map(0x2000, 0x3fff).bankr("bank2"); + map(0x4000, 0x5fff).bankr("bank3"); + map(0x6000, 0x7fff).bankr("bank4"); + map(0x8000, 0x9fff).bankr("bank5"); + map(0xa000, 0xbfff).bankr("bank6"); + map(0xc000, 0xdfff).bankr("bank7"); + map(0xe000, 0xffff).bankr("bank8"); + map(0x0000, 0x3fff).w(this, FUNC(sfkick_state::page0_w)); + map(0x4000, 0x7fff).w(this, FUNC(sfkick_state::page1_w)); + map(0x8000, 0xbfff).w(this, FUNC(sfkick_state::page2_w)); + map(0xc000, 0xffff).w(this, FUNC(sfkick_state::page3_w)); +} + +void sfkick_state::sfkick_io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0xa0, 0xa7).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x98, 0x9b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0xa8, 0xab).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb4, 0xb5).ram(); /* loopback ? req by sfkicka (MSX Bios leftover)*/ +} + +void sfkick_state::sfkick_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); +} + +void sfkick_state::sfkick_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x04, 0x05).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} WRITE8_MEMBER(sfkick_state::ppi_port_c_w) { diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp index de01c6f7343..b4624a0666c 100644 --- a/src/mame/drivers/sg1000.cpp +++ b/src/mame/drivers/sg1000.cpp @@ -123,48 +123,52 @@ WRITE8_MEMBER( sg1000_state::peripheral_w ) ADDRESS_MAP( sg1000_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(sg1000_state::sg1000_map) - AM_RANGE(0x0000, 0xbfff) AM_DEVREADWRITE(CARTSLOT_TAG, sega8_cart_slot_device, read_cart, write_cart) - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3c00) AM_RAM -ADDRESS_MAP_END +void sg1000_state::sg1000_map(address_map &map) +{ + map(0x0000, 0xbfff).rw(m_cart, FUNC(sega8_cart_slot_device::read_cart), FUNC(sega8_cart_slot_device::write_cart)); + map(0xc000, 0xc3ff).mirror(0x3c00).ram(); +} /*------------------------------------------------- ADDRESS_MAP( sg1000_io_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(sg1000_state::sg1000_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write) - AM_RANGE(0xdc, 0xdf) AM_READWRITE(peripheral_r, peripheral_w) -ADDRESS_MAP_END +void sg1000_state::sg1000_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).mirror(0x3f).w(SN76489AN_TAG, FUNC(sn76489a_device::write)); + map(0x80, 0x80).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write)); + map(0xdc, 0xdf).rw(this, FUNC(sg1000_state::peripheral_r), FUNC(sg1000_state::peripheral_w)); +} /*------------------------------------------------- ADDRESS_MAP( omv_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(sg1000_state::omv_map) - AM_RANGE(0x0000, 0xbfff) AM_READWRITE(omv_r, omv_w) - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3800) AM_RAM -ADDRESS_MAP_END +void sg1000_state::omv_map(address_map &map) +{ + map(0x0000, 0xbfff).rw(this, FUNC(sg1000_state::omv_r), FUNC(sg1000_state::omv_w)); + map(0xc000, 0xc7ff).mirror(0x3800).ram(); +} /*------------------------------------------------- ADDRESS_MAP( omv_io_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(sg1000_state::omv_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x38) AM_READ_PORT("C0") - AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x38) AM_READ_PORT("C1") - AM_RANGE(0xc2, 0xc2) AM_MIRROR(0x38) AM_READ_PORT("C2") - AM_RANGE(0xc3, 0xc3) AM_MIRROR(0x38) AM_READ_PORT("C3") - AM_RANGE(0xc4, 0xc4) AM_MIRROR(0x3a) AM_READ_PORT("C4") - AM_RANGE(0xc5, 0xc5) AM_MIRROR(0x3a) AM_READ_PORT("C5") -ADDRESS_MAP_END +void sg1000_state::omv_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).mirror(0x3f).w(SN76489AN_TAG, FUNC(sn76489a_device::write)); + map(0x80, 0x80).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write)); + map(0xc0, 0xc0).mirror(0x38).portr("C0"); + map(0xc1, 0xc1).mirror(0x38).portr("C1"); + map(0xc2, 0xc2).mirror(0x38).portr("C2"); + map(0xc3, 0xc3).mirror(0x38).portr("C3"); + map(0xc4, 0xc4).mirror(0x3a).portr("C4"); + map(0xc5, 0xc5).mirror(0x3a).portr("C5"); +} /*------------------------------------------------- ADDRESS_MAP( sc3000_map ) @@ -202,26 +206,28 @@ ADDRESS_MAP_END ADDRESS_MAP( sf7000_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(sf7000_state::sf7000_map) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END +void sf7000_state::sf7000_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1").bankw("bank2"); + map(0x4000, 0xffff).ram(); +} /*------------------------------------------------- ADDRESS_MAP( sf7000_io_map ) -------------------------------------------------*/ -ADDRESS_MAP_START(sf7000_state::sf7000_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write) - AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write) - AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write) - AM_RANGE(0xdc, 0xdf) AM_READWRITE(peripheral_r, peripheral_w) - AM_RANGE(0xe0, 0xe1) AM_DEVICE(UPD765_TAG, upd765a_device, map) - AM_RANGE(0xe4, 0xe7) AM_DEVREADWRITE(UPD9255_1_TAG, i8255_device, read, write) - AM_RANGE(0xe8, 0xe8) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0xe9, 0xe9) AM_DEVREADWRITE(UPD8251_TAG, i8251_device, status_r, control_w) -ADDRESS_MAP_END +void sf7000_state::sf7000_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write)); + map(0xbe, 0xbe).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write)); + map(0xbf, 0xbf).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write)); + map(0xdc, 0xdf).rw(this, FUNC(sf7000_state::peripheral_r), FUNC(sf7000_state::peripheral_w)); + map(0xe0, 0xe1).m(m_fdc, FUNC(upd765a_device::map)); + map(0xe4, 0xe7).rw(UPD9255_1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe8, 0xe8).rw(UPD8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xe9, 0xe9).rw(UPD8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/sg1000a.cpp b/src/mame/drivers/sg1000a.cpp index e98326d7a26..22c6e16dae6 100644 --- a/src/mame/drivers/sg1000a.cpp +++ b/src/mame/drivers/sg1000a.cpp @@ -306,32 +306,36 @@ public: * *************************************/ -ADDRESS_MAP_START(sg1000a_state::program_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_MIRROR(0x400) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sg1000a_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sg1000a_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("snsnd", sn76489a_device, write) - AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) - AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sg1000a_state::sderby2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("snsnd", sn76489a_device, write) - AM_RANGE(0xbe, 0xbe) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) - AM_RANGE(0xbf, 0xbf) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) +void sg1000a_state::program_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram().mirror(0x400); +} + +void sg1000a_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).rom().region("maincpu", 0x8000); +} + +void sg1000a_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::write)); + map(0xbe, 0xbe).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0xbf, 0xbf).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); + map(0xdc, 0xdf).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void sg1000a_state::sderby2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).w("snsnd", FUNC(sn76489a_device::write)); + map(0xbe, 0xbe).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); + map(0xbf, 0xbf).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write)); // AM_RANGE(0xc0, 0xc1) NEC D8251AC UART - AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) // NEC D8255AC-2 -ADDRESS_MAP_END + map(0xc8, 0xcb).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); // NEC D8255AC-2 +} /************************************* * diff --git a/src/mame/drivers/sh4robot.cpp b/src/mame/drivers/sh4robot.cpp index 8d3776e4f8a..5664c49e4c6 100644 --- a/src/mame/drivers/sh4robot.cpp +++ b/src/mame/drivers/sh4robot.cpp @@ -49,17 +49,19 @@ private: }; -ADDRESS_MAP_START(sh4robot_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x00000fff) AM_ROM - AM_RANGE(0x08000000, 0x08ffffff) AM_RAM // SDRAM 1 - AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM // SDRAM 2 - AM_RANGE(0xa0000000, 0xa0000fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sh4robot_state::io_map) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void sh4robot_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x00000fff).rom(); + map(0x08000000, 0x08ffffff).ram(); // SDRAM 1 + map(0x0c000000, 0x0cffffff).ram(); // SDRAM 2 + map(0xa0000000, 0xa0000fff).rom().region("maincpu", 0); +} + +void sh4robot_state::io_map(address_map &map) +{ + map.unmap_value_high(); +} static INPUT_PORTS_START( sh4robot ) INPUT_PORTS_END diff --git a/src/mame/drivers/shadfrce.cpp b/src/mame/drivers/shadfrce.cpp index 39be5021952..a07375e3083 100644 --- a/src/mame/drivers/shadfrce.cpp +++ b/src/mame/drivers/shadfrce.cpp @@ -349,34 +349,36 @@ TIMER_DEVICE_CALLBACK_MEMBER(shadfrce_state::scanline) /* Memory Maps */ -ADDRESS_MAP_START(shadfrce_state::shadfrce_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(bg0videoram_w) AM_SHARE("bg0videoram") /* video */ - AM_RANGE(0x101000, 0x101fff) AM_RAM - AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") /* bg 2 */ - AM_RANGE(0x102800, 0x103fff) AM_RAM - AM_RANGE(0x140000, 0x141fff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x142000, 0x143fff) AM_RAM AM_SHARE("spvideoram") /* sprites */ - AM_RANGE(0x180000, 0x187fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(bg0scrollx_w) /* SCROLL X */ - AM_RANGE(0x1c0002, 0x1c0003) AM_WRITE(bg0scrolly_w) /* SCROLL Y */ - AM_RANGE(0x1c0004, 0x1c0005) AM_WRITE(bg1scrollx_w) /* SCROLL X */ - AM_RANGE(0x1c0006, 0x1c0007) AM_WRITE(bg1scrolly_w) /* SCROLL Y */ - AM_RANGE(0x1c0008, 0x1c0009) AM_WRITENOP /* ?? */ - AM_RANGE(0x1c000a, 0x1c000b) AM_READNOP AM_WRITE(flip_screen) - AM_RANGE(0x1c000c, 0x1c000d) AM_WRITENOP /* ?? */ - AM_RANGE(0x1d0000, 0x1d0005) AM_WRITE(irq_ack_w) - AM_RANGE(0x1d0006, 0x1d0007) AM_WRITE(irq_w) - AM_RANGE(0x1d0008, 0x1d0009) AM_WRITE(scanline_w) - AM_RANGE(0x1d000c, 0x1d000d) AM_READNOP AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x1d000c, 0x1d000d) AM_WRITE8(screen_brt_w, 0x00ff) - AM_RANGE(0x1d0010, 0x1d0011) AM_WRITENOP /* ?? */ - AM_RANGE(0x1d0012, 0x1d0013) AM_WRITENOP /* ?? */ - AM_RANGE(0x1d0014, 0x1d0015) AM_WRITENOP /* ?? */ - AM_RANGE(0x1d0016, 0x1d0017) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x1d0020, 0x1d0027) AM_READ(input_ports_r) - AM_RANGE(0x1f0000, 0x1fffff) AM_RAM -ADDRESS_MAP_END +void shadfrce_state::shadfrce_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100fff).ram().w(this, FUNC(shadfrce_state::bg0videoram_w)).share("bg0videoram"); /* video */ + map(0x101000, 0x101fff).ram(); + map(0x102000, 0x1027ff).ram().w(this, FUNC(shadfrce_state::bg1videoram_w)).share("bg1videoram"); /* bg 2 */ + map(0x102800, 0x103fff).ram(); + map(0x140000, 0x141fff).ram().w(this, FUNC(shadfrce_state::fgvideoram_w)).share("fgvideoram"); + map(0x142000, 0x143fff).ram().share("spvideoram"); /* sprites */ + map(0x180000, 0x187fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x1c0000, 0x1c0001).w(this, FUNC(shadfrce_state::bg0scrollx_w)); /* SCROLL X */ + map(0x1c0002, 0x1c0003).w(this, FUNC(shadfrce_state::bg0scrolly_w)); /* SCROLL Y */ + map(0x1c0004, 0x1c0005).w(this, FUNC(shadfrce_state::bg1scrollx_w)); /* SCROLL X */ + map(0x1c0006, 0x1c0007).w(this, FUNC(shadfrce_state::bg1scrolly_w)); /* SCROLL Y */ + map(0x1c0008, 0x1c0009).nopw(); /* ?? */ + map(0x1c000a, 0x1c000b).nopr().w(this, FUNC(shadfrce_state::flip_screen)); + map(0x1c000c, 0x1c000d).nopw(); /* ?? */ + map(0x1d0000, 0x1d0005).w(this, FUNC(shadfrce_state::irq_ack_w)); + map(0x1d0006, 0x1d0007).w(this, FUNC(shadfrce_state::irq_w)); + map(0x1d0008, 0x1d0009).w(this, FUNC(shadfrce_state::scanline_w)); + map(0x1d000c, 0x1d000d).nopr(); + map(0x1d000c, 0x1d000c).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1d000d, 0x1d000d).w(this, FUNC(shadfrce_state::screen_brt_w)); + map(0x1d0010, 0x1d0011).nopw(); /* ?? */ + map(0x1d0012, 0x1d0013).nopw(); /* ?? */ + map(0x1d0014, 0x1d0015).nopw(); /* ?? */ + map(0x1d0016, 0x1d0017).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x1d0020, 0x1d0027).r(this, FUNC(shadfrce_state::input_ports_r)); + map(0x1f0000, 0x1fffff).ram(); +} /* and the sound cpu */ @@ -385,15 +387,16 @@ WRITE8_MEMBER(shadfrce_state::oki_bankswitch_w) m_oki->set_rom_bank(data & 1); } -ADDRESS_MAP_START(shadfrce_state::shadfrce_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void shadfrce_state::shadfrce_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd800, 0xd800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).w(this, FUNC(shadfrce_state::oki_bankswitch_w)); + map(0xf000, 0xffff).ram(); +} /* Input Ports */ diff --git a/src/mame/drivers/shangha3.cpp b/src/mame/drivers/shangha3.cpp index 05a4d7f998d..87ca8d70ca2 100644 --- a/src/mame/drivers/shangha3.cpp +++ b/src/mame/drivers/shangha3.cpp @@ -115,68 +115,73 @@ WRITE16_MEMBER(shangha3_state::irq_ack_w) m_maincpu->set_input_line(4, CLEAR_LINE); } -ADDRESS_MAP_START(shangha3_state::shangha3_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS") - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w) - AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w) - AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w) - AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("aysnd", ym2149_device, data_r, 0x00ff) - AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("aysnd", ym2149_device, data_w, 0x00ff) - AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("aysnd", ym2149_device, address_w, 0x00ff) - AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w) - AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */ - AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangha3_state::heberpop_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS") - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW") - AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w) - AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w) - AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w) - AM_RANGE(0x20000e, 0x20000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */ - AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w) - AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangha3_state::blocken_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") AM_WRITENOP // w -> unknown purpose - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW") - AM_RANGE(0x100008, 0x100009) AM_WRITE(blitter_go_w) - AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?) - AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w) - AM_RANGE(0x10000e, 0x10000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */ - AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w) - AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(shangha3_state::heberpop_sound_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangha3_state::heberpop_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void shangha3_state::shangha3_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x200000, 0x200001).portr("INPUTS"); + map(0x200002, 0x200003).portr("SYSTEM"); + map(0x200008, 0x200009).w(this, FUNC(shangha3_state::blitter_go_w)); + map(0x20000a, 0x20000b).w(this, FUNC(shangha3_state::irq_ack_w)); + map(0x20000c, 0x20000d).w(this, FUNC(shangha3_state::shangha3_coinctrl_w)); + map(0x20001f, 0x20001f).r("aysnd", FUNC(ym2149_device::data_r)); + map(0x20002f, 0x20002f).w("aysnd", FUNC(ym2149_device::data_w)); + map(0x20003f, 0x20003f).w("aysnd", FUNC(ym2149_device::address_w)); + map(0x20004e, 0x20004f).rw(this, FUNC(shangha3_state::shangha3_prot_r), FUNC(shangha3_state::shangha3_prot_w)); + map(0x20006f, 0x20006f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */ + map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w)); + map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w)); +} + +void shangha3_state::heberpop_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x200000, 0x200001).portr("INPUTS"); + map(0x200002, 0x200003).portr("SYSTEM"); + map(0x200004, 0x200005).portr("DSW"); + map(0x200008, 0x200009).w(this, FUNC(shangha3_state::blitter_go_w)); + map(0x20000a, 0x20000b).w(this, FUNC(shangha3_state::irq_ack_w)); + map(0x20000c, 0x20000d).w(this, FUNC(shangha3_state::heberpop_coinctrl_w)); + map(0x20000f, 0x20000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */ + map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w)); + map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w)); + map(0x800000, 0xb7ffff).rom().region("gfx1", 0); +} + +void shangha3_state::blocken_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x100001).portr("INPUTS"); + map(0x100002, 0x100003).portr("SYSTEM").nopw(); // w -> unknown purpose + map(0x100004, 0x100005).portr("DSW"); + map(0x100008, 0x100009).w(this, FUNC(shangha3_state::blitter_go_w)); + map(0x10000a, 0x10000b).nopr().w(this, FUNC(shangha3_state::irq_ack_w)); // r -> unknown purpose (value doesn't matter, left-over?) + map(0x10000c, 0x10000d).w(this, FUNC(shangha3_state::blocken_coinctrl_w)); + map(0x10000f, 0x10000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */ + map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w)); + map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w)); + map(0x800000, 0xb7ffff).rom().region("gfx1", 0); +} + + +void shangha3_state::heberpop_sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void shangha3_state::heberpop_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x80, 0x80).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( shangha3 ) diff --git a/src/mame/drivers/shanghai.cpp b/src/mame/drivers/shanghai.cpp index 1213adeb016..1ac41f51b5e 100644 --- a/src/mame/drivers/shanghai.cpp +++ b/src/mame/drivers/shanghai.cpp @@ -100,71 +100,77 @@ WRITE8_MEMBER(shanghai_state::shanghai_coin_w) machine().bookkeeping().coin_counter_w(1,data & 2); } -ADDRESS_MAP_START(shanghai_state::shanghai_map) - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0x80000, 0xfffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(shanghai_state::shangha2_map) - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0x04000, 0x041ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x80000, 0xfffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(shanghai_state::shanghai_portmap) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff) - AM_RANGE(0x40, 0x41) AM_READ_PORT("P1") - AM_RANGE(0x44, 0x45) AM_READ_PORT("P2") - AM_RANGE(0x48, 0x49) AM_READ_PORT("SYSTEM") - AM_RANGE(0x4c, 0x4d) AM_WRITE8(shanghai_coin_w,0x00ff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(shanghai_state::shangha2_portmap) - AM_RANGE(0x00, 0x01) AM_READ_PORT("P1") - AM_RANGE(0x10, 0x11) AM_READ_PORT("P2") - AM_RANGE(0x20, 0x21) AM_READ_PORT("SYSTEM") - AM_RANGE(0x30, 0x31) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w) - AM_RANGE(0x32, 0x33) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff) - AM_RANGE(0x50, 0x51) AM_WRITE8(shanghai_coin_w,0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(shanghai_state::kothello_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM - AM_RANGE(0x08010, 0x08011) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w) - AM_RANGE(0x08012, 0x08013) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w) - AM_RANGE(0x09010, 0x09011) AM_READ_PORT("P1") - AM_RANGE(0x09012, 0x09013) AM_READ_PORT("P2") - AM_RANGE(0x09014, 0x09015) AM_READ_PORT("SYSTEM") - AM_RANGE(0x09016, 0x0901f) AM_WRITENOP // 0x9016 is set to 0 at the boot - AM_RANGE(0x0a000, 0x0a1ff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0b010, 0x0b01f) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0x80000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(shanghai_state::kothello_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4005, 0x4006) AM_DEVWRITE("adpcm", seibu_adpcm_device, adr_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401a, 0x401a) AM_DEVWRITE("adpcm", seibu_adpcm_device, ctl_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END +void shanghai_state::shanghai_map(address_map &map) +{ + map(0x00000, 0x03fff).ram(); + map(0x80000, 0xfffff).rom(); +} + + +void shanghai_state::shangha2_map(address_map &map) +{ + map(0x00000, 0x03fff).ram(); + map(0x04000, 0x041ff).w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x80000, 0xfffff).rom(); +} + + +void shanghai_state::shanghai_portmap(address_map &map) +{ + map(0x00, 0x01).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x02, 0x03).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x20, 0x23).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff); + map(0x40, 0x41).portr("P1"); + map(0x44, 0x45).portr("P2"); + map(0x48, 0x49).portr("SYSTEM"); + map(0x4c, 0x4c).w(this, FUNC(shanghai_state::shanghai_coin_w)); +} + + +void shanghai_state::shangha2_portmap(address_map &map) +{ + map(0x00, 0x01).portr("P1"); + map(0x10, 0x11).portr("P2"); + map(0x20, 0x21).portr("SYSTEM"); + map(0x30, 0x31).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x32, 0x33).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x40, 0x43).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff); + map(0x50, 0x50).w(this, FUNC(shanghai_state::shanghai_coin_w)); +} + +void shanghai_state::kothello_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x08010, 0x08011).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x08012, 0x08013).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x09010, 0x09011).portr("P1"); + map(0x09012, 0x09013).portr("P2"); + map(0x09014, 0x09015).portr("SYSTEM"); + map(0x09016, 0x0901f).nopw(); // 0x9016 is set to 0 at the boot + map(0x0a000, 0x0a1ff).w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x0b010, 0x0b01f).rw("seibu_sound", FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0x80000, 0xfffff).rom(); +} + +void shanghai_state::kothello_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w("seibu_sound", FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w("seibu_sound", FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w("seibu_sound", FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w("seibu_sound", FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4005, 0x4006).w("adpcm", FUNC(seibu_adpcm_device::adr_w)); + map(0x4007, 0x4007).w("seibu_sound", FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw("seibu_sound", FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r("seibu_sound", FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r("seibu_sound", FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w("seibu_sound", FUNC(seibu_sound_device::main_data_w)); + map(0x401a, 0x401a).w("adpcm", FUNC(seibu_adpcm_device::ctl_w)); + map(0x401b, 0x401b).w("seibu_sound", FUNC(seibu_sound_device::coin_w)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} static INPUT_PORTS_START( kothello ) SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */ @@ -384,9 +390,10 @@ static INPUT_PORTS_START( shangha2 ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) ) INPUT_PORTS_END -ADDRESS_MAP_START(shanghai_state::hd63484_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM -ADDRESS_MAP_END +void shanghai_state::hd63484_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); +} MACHINE_CONFIG_START(shanghai_state::shanghai) diff --git a/src/mame/drivers/shangkid.cpp b/src/mame/drivers/shangkid.cpp index 65e30df2195..16ba388275a 100644 --- a/src/mame/drivers/shangkid.cpp +++ b/src/mame/drivers/shangkid.cpp @@ -276,93 +276,102 @@ GFXDECODE_END /***************************************************************************************/ -ADDRESS_MAP_START(shangkid_state::chinhero_main_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w) - AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w) - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") - AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2") - AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1") - AM_RANGE(0xc000, 0xc002) AM_WRITEONLY AM_SHARE("videoreg") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangkid_state::shangkid_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w) - AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w) - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") - AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2") - AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1") - AM_RANGE(0xc000, 0xc002) AM_WRITEONLY AM_SHARE("videoreg") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END +void shangkid_state::chinhero_main_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w)); + map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w)); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).portr("DSW"); + map(0xb801, 0xb801).portr("SYSTEM"); + map(0xb802, 0xb802).portr("P2"); + map(0xb803, 0xb803).portr("P1"); + map(0xc000, 0xc002).writeonly().share("videoreg"); + map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram"); + map(0xe000, 0xfdff).ram().share("share2"); + map(0xfe00, 0xffff).ram().share("spriteram"); +} + +void shangkid_state::shangkid_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); + map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w)); + map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w)); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).portr("DSW"); + map(0xb801, 0xb801).portr("SYSTEM"); + map(0xb802, 0xb802).portr("P2"); + map(0xb803, 0xb803).portr("P1"); + map(0xc000, 0xc002).writeonly().share("videoreg"); + map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram"); + map(0xe000, 0xfdff).ram().share("share2"); + map(0xfe00, 0xffff).ram().share("spriteram"); +} /***************************************************************************************/ -ADDRESS_MAP_START(shangkid_state::chinhero_bbx_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w) - AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w) - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") - AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2") - AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangkid_state::shangkid_bbx_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(nmiq_1_w) - AM_RANGE(0xa800, 0xa800) AM_WRITE(nmiq_2_w) - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") - AM_RANGE(0xb801, 0xb801) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb802, 0xb802) AM_READ_PORT("P2") - AM_RANGE(0xb803, 0xb803) AM_READ_PORT("P1") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangkid_state::chinhero_bbx_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(shangkid_state::shangkid_bbx_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void shangkid_state::chinhero_bbx_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w)); + map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w)); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).portr("DSW"); + map(0xb801, 0xb801).portr("SYSTEM"); + map(0xb802, 0xb802).portr("P2"); + map(0xb803, 0xb803).portr("P1"); + map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram"); + map(0xe000, 0xfdff).ram().share("share2"); + map(0xfe00, 0xffff).ram().share("spriteram"); +} + +void shangkid_state::shangkid_bbx_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(shangkid_state::nmiq_1_w)); + map(0xa800, 0xa800).w(this, FUNC(shangkid_state::nmiq_2_w)); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).portr("DSW"); + map(0xb801, 0xb801).portr("SYSTEM"); + map(0xb802, 0xb802).portr("P2"); + map(0xb803, 0xb803).portr("P1"); + map(0xd000, 0xdfff).ram().w(this, FUNC(shangkid_state::videoram_w)).share("videoram"); + map(0xe000, 0xfdff).ram().share("share2"); + map(0xfe00, 0xffff).ram().share("spriteram"); +} + +void shangkid_state::chinhero_bbx_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::address_data_w)); +} + +void shangkid_state::shangkid_bbx_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::address_data_w)); +} /***************************************************************************************/ -ADDRESS_MAP_START(shangkid_state::chinhero_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_MIRROR(0x0800) -ADDRESS_MAP_END +void shangkid_state::chinhero_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram().mirror(0x0800); +} -ADDRESS_MAP_START(shangkid_state::shangkid_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROMBANK("bank2") /* sample player writes to ROM area */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_MIRROR(0x0800) -ADDRESS_MAP_END +void shangkid_state::shangkid_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).bankr("bank2"); /* sample player writes to ROM area */ + map(0xe000, 0xe7ff).ram().mirror(0x0800); +} -ADDRESS_MAP_START(shangkid_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END +void shangkid_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(shangkid_state::soundlatch_r)).w("dac", FUNC(dac_byte_interface::write)); +} /***************************************************************************************/ @@ -453,25 +462,27 @@ MACHINE_CONFIG_END -ADDRESS_MAP_START(shangkid_state::dynamski_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("videoram") /* tilemap */ - AM_RANGE(0xc800, 0xcbff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_RAM - AM_RANGE(0xd800, 0xdbff) AM_RAM - AM_RANGE(0xe000, 0xe007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe801, 0xe801) AM_READ_PORT("P1") - AM_RANGE(0xe802, 0xe802) AM_READ_PORT("P2") - AM_RANGE(0xe803, 0xe803) AM_READ_PORT("DSW") - AM_RANGE(0xf000, 0xf7ff) AM_RAM /* work ram */ -ADDRESS_MAP_END +void shangkid_state::dynamski_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().share("videoram"); /* tilemap */ + map(0xc800, 0xcbff).ram(); + map(0xd000, 0xd3ff).ram(); + map(0xd800, 0xdbff).ram(); + map(0xe000, 0xe007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xe800, 0xe800).portr("SYSTEM"); + map(0xe801, 0xe801).portr("P1"); + map(0xe802, 0xe802).portr("P2"); + map(0xe803, 0xe803).portr("DSW"); + map(0xf000, 0xf7ff).ram(); /* work ram */ +} -ADDRESS_MAP_START(shangkid_state::dynamski_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void shangkid_state::dynamski_portmap(address_map &map) +{ + map.global_mask(0xff); /* ports are reversed */ - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END + map(0x00, 0x01).w(m_aysnd, FUNC(ay8910_device::data_address_w)); +} MACHINE_CONFIG_START(shangkid_state::dynamski) diff --git a/src/mame/drivers/shaolins.cpp b/src/mame/drivers/shaolins.cpp index 04b39935a8d..aa924427305 100644 --- a/src/mame/drivers/shaolins.cpp +++ b/src/mame/drivers/shaolins.cpp @@ -32,31 +32,32 @@ TIMER_DEVICE_CALLBACK_MEMBER(shaolins_state::interrupt) -ADDRESS_MAP_START(shaolins_state::shaolins_map) - AM_RANGE(0x0000, 0x0000) AM_WRITE(nmi_w) /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */ +void shaolins_state::shaolins_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(shaolins_state::nmi_w)); /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */ /* bit 3, bit 4 = coin counters */ - AM_RANGE(0x0100, 0x0100) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0300, 0x0300) AM_DEVWRITE("sn1", sn76489a_device, write) /* trigger chip to read from latch. The program always */ - AM_RANGE(0x0400, 0x0400) AM_DEVWRITE("sn2", sn76489a_device, write) /* writes the same number as the latch, so we don't */ + map(0x0100, 0x0100).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0300, 0x0300).w("sn1", FUNC(sn76489a_device::write)); /* trigger chip to read from latch. The program always */ + map(0x0400, 0x0400).w("sn2", FUNC(sn76489a_device::write)); /* writes the same number as the latch, so we don't */ /* bother emulating them. */ - AM_RANGE(0x0500, 0x0500) AM_READ_PORT("DSW1") - AM_RANGE(0x0600, 0x0600) AM_READ_PORT("DSW2") - AM_RANGE(0x0700, 0x0700) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0701, 0x0701) AM_READ_PORT("P1") - AM_RANGE(0x0702, 0x0702) AM_READ_PORT("P2") - AM_RANGE(0x0703, 0x0703) AM_READ_PORT("DSW3") - AM_RANGE(0x0800, 0x0800) AM_WRITENOP /* latch for 76496 #0 */ - AM_RANGE(0x1000, 0x1000) AM_WRITENOP /* latch for 76496 #1 */ - AM_RANGE(0x1800, 0x1800) AM_WRITE(palettebank_w) - AM_RANGE(0x2000, 0x2000) AM_WRITE(scroll_w) - AM_RANGE(0x2800, 0x2bff) AM_RAM /* RAM BANK 2 */ - AM_RANGE(0x3000, 0x30ff) AM_RAM /* RAM BANK 1 */ - AM_RANGE(0x3100, 0x33ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x5fff) AM_ROM /* Machine checks for extra rom */ - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x0500, 0x0500).portr("DSW1"); + map(0x0600, 0x0600).portr("DSW2"); + map(0x0700, 0x0700).portr("SYSTEM"); + map(0x0701, 0x0701).portr("P1"); + map(0x0702, 0x0702).portr("P2"); + map(0x0703, 0x0703).portr("DSW3"); + map(0x0800, 0x0800).nopw(); /* latch for 76496 #0 */ + map(0x1000, 0x1000).nopw(); /* latch for 76496 #1 */ + map(0x1800, 0x1800).w(this, FUNC(shaolins_state::palettebank_w)); + map(0x2000, 0x2000).w(this, FUNC(shaolins_state::scroll_w)); + map(0x2800, 0x2bff).ram(); /* RAM BANK 2 */ + map(0x3000, 0x30ff).ram(); /* RAM BANK 1 */ + map(0x3100, 0x33ff).ram().share("spriteram"); + map(0x3800, 0x3bff).ram().w(this, FUNC(shaolins_state::colorram_w)).share("colorram"); + map(0x3c00, 0x3fff).ram().w(this, FUNC(shaolins_state::videoram_w)).share("videoram"); + map(0x4000, 0x5fff).rom(); /* Machine checks for extra rom */ + map(0x6000, 0xffff).rom(); +} static INPUT_PORTS_START( shaolins ) diff --git a/src/mame/drivers/shisen.cpp b/src/mame/drivers/shisen.cpp index ca0fc67b533..cb5ed7f4196 100644 --- a/src/mame/drivers/shisen.cpp +++ b/src/mame/drivers/shisen.cpp @@ -49,37 +49,41 @@ WRITE8_MEMBER(shisen_state::coin_w) -ADDRESS_MAP_START(shisen_state::shisen_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(shisen_state::shisen_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(dsw1_r, coin_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE(bankswitch_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") - AM_RANGE(0x04, 0x04) AM_READ_PORT("COIN") -ADDRESS_MAP_END - -ADDRESS_MAP_START(shisen_state::shisen_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xfd00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(shisen_state::shisen_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, shisen_sample_addr_w) - AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) - AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) -ADDRESS_MAP_END +void shisen_state::shisen_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc800, 0xcaff).ram().w(this, FUNC(shisen_state::paletteram_w)).share("paletteram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(shisen_state::videoram_w)).share("videoram"); + map(0xe000, 0xffff).ram(); +} + +void shisen_state::shisen_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(shisen_state::dsw1_r), FUNC(shisen_state::coin_w)); + map(0x01, 0x01).portr("DSW2").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x02, 0x02).portr("P1").w(this, FUNC(shisen_state::bankswitch_w)); + map(0x03, 0x03).portr("P2"); + map(0x04, 0x04).portr("COIN"); +} + +void shisen_state::shisen_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xfd00, 0xffff).ram(); +} + +void shisen_state::shisen_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::shisen_sample_addr_w)); + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); + map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); +} static INPUT_PORTS_START( shisen ) diff --git a/src/mame/drivers/shootaway2.cpp b/src/mame/drivers/shootaway2.cpp index dfde3bbb7b8..07e97042578 100644 --- a/src/mame/drivers/shootaway2.cpp +++ b/src/mame/drivers/shootaway2.cpp @@ -66,14 +66,16 @@ uint32_t m74_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c return 0; } -ADDRESS_MAP_START(m74_state::c68_map) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(m74_state::sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("subcpu", 0) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void m74_state::c68_map(address_map &map) +{ + map(0x8000, 0xffff).rom().region("maincpu", 0x0000); +} + +void m74_state::sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("subcpu", 0); + map(0x8000, 0xffff).ram(); +} static INPUT_PORTS_START( m74 ) INPUT_PORTS_END diff --git a/src/mame/drivers/shootout.cpp b/src/mame/drivers/shootout.cpp index 1ab752e6496..a47202a5a47 100644 --- a/src/mame/drivers/shootout.cpp +++ b/src/mame/drivers/shootout.cpp @@ -103,46 +103,49 @@ WRITE8_MEMBER(shootout_state::coincounter_w) /*******************************************************************************/ -ADDRESS_MAP_START(shootout_state::shootout_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1") AM_WRITE(bankswitch_w) - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1") AM_WRITE(flipscreen_w) - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2") AM_WRITE(coincounter_w) - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2") AM_WRITE(sound_cpu_command_w) - AM_RANGE(0x1004, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x19ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(shootout_state::shootouj_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1") - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1") - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2") - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2") - AM_RANGE(0x1004, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_WRITE(coincounter_w) - AM_RANGE(0x2000, 0x21ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") - AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x0000) -ADDRESS_MAP_END +void shootout_state::shootout_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1000).portr("DSW1").w(this, FUNC(shootout_state::bankswitch_w)); + map(0x1001, 0x1001).portr("P1").w(this, FUNC(shootout_state::flipscreen_w)); + map(0x1002, 0x1002).portr("P2").w(this, FUNC(shootout_state::coincounter_w)); + map(0x1003, 0x1003).portr("DSW2").w(this, FUNC(shootout_state::sound_cpu_command_w)); + map(0x1004, 0x17ff).ram(); + map(0x1800, 0x19ff).ram().share("spriteram"); + map(0x2000, 0x27ff).ram().w(this, FUNC(shootout_state::textram_w)).share("textram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(shootout_state::videoram_w)).share("videoram"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom().region("maincpu", 0x0000); +} + +void shootout_state::shootouj_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1000).portr("DSW1"); + map(0x1001, 0x1001).portr("P1"); + map(0x1002, 0x1002).portr("P2"); + map(0x1003, 0x1003).portr("DSW2"); + map(0x1004, 0x17ff).ram(); + map(0x1800, 0x1800).w(this, FUNC(shootout_state::coincounter_w)); + map(0x2000, 0x21ff).ram().share("spriteram"); + map(0x2800, 0x2801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x3000, 0x37ff).ram().w(this, FUNC(shootout_state::textram_w)).share("textram"); + map(0x3800, 0x3fff).ram().w(this, FUNC(shootout_state::videoram_w)).share("videoram"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom().region("maincpu", 0x0000); +} /*******************************************************************************/ /* same as Tryout */ -ADDRESS_MAP_START(shootout_state::shootout_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_READ(sound_cpu_command_r) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x0000) - AM_RANGE(0xd000, 0xd000) AM_WRITENOP // Unknown, NOT irq/nmi mask (Always 0x80 ???) -ADDRESS_MAP_END +void shootout_state::shootout_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa000).r(this, FUNC(shootout_state::sound_cpu_command_r)); + map(0xc000, 0xffff).rom().region("audiocpu", 0x0000); + map(0xd000, 0xd000).nopw(); // Unknown, NOT irq/nmi mask (Always 0x80 ???) +} /*******************************************************************************/ diff --git a/src/mame/drivers/shougi.cpp b/src/mame/drivers/shougi.cpp index ba0ed19d55c..337633c137b 100644 --- a/src/mame/drivers/shougi.cpp +++ b/src/mame/drivers/shougi.cpp @@ -247,19 +247,20 @@ WRITE_LINE_MEMBER(shougi_state::nmi_enable_w) } -ADDRESS_MAP_START(shougi_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM /* 2114 x 2 (0x400 x 4bit each) */ - AM_RANGE(0x4800, 0x480f) AM_DEVWRITE("mainlatch", ls259_device, write_a3) - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") - AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* game won't boot if watchdog doesn't work */ - AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x6800, 0x6800) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x7000, 0x73ff) AM_DEVREADWRITE("alpha_8201", alpha_8201_device, ext_ram_r, ext_ram_w) - AM_RANGE(0x7800, 0x7bff) AM_RAM AM_SHARE("sharedram") /* 2114 x 2 (0x400 x 4bit each) */ - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("videoram") /* 4116 x 16 (32K) */ -ADDRESS_MAP_END +void shougi_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); /* 2114 x 2 (0x400 x 4bit each) */ + map(0x4800, 0x480f).w("mainlatch", FUNC(ls259_device::write_a3)); + map(0x4800, 0x4800).portr("DSW"); + map(0x5000, 0x5000).portr("P1"); + map(0x5800, 0x5800).portr("P2").w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* game won't boot if watchdog doesn't work */ + map(0x6000, 0x6000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x6800, 0x6800).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x7000, 0x73ff).rw(m_alpha_8201, FUNC(alpha_8201_device::ext_ram_r), FUNC(alpha_8201_device::ext_ram_w)); + map(0x7800, 0x7bff).ram().share("sharedram"); /* 2114 x 2 (0x400 x 4bit each) */ + map(0x8000, 0xffff).ram().share("videoram"); /* 4116 x 16 (32K) */ +} // subcpu side @@ -273,15 +274,17 @@ READ8_MEMBER(shougi_state::semaphore_r) } -ADDRESS_MAP_START(shougi_state::sub_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE("sharedram") /* 2114 x 2 (0x400 x 4bit each) */ -ADDRESS_MAP_END +void shougi_state::sub_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x63ff).ram().share("sharedram"); /* 2114 x 2 (0x400 x 4bit each) */ +} -ADDRESS_MAP_START(shougi_state::readport_sub) - ADDRESS_MAP_GLOBAL_MASK(0x00ff) - AM_RANGE(0x00, 0x00) AM_READ(semaphore_r) -ADDRESS_MAP_END +void shougi_state::readport_sub(address_map &map) +{ + map.global_mask(0x00ff); + map(0x00, 0x00).r(this, FUNC(shougi_state::semaphore_r)); +} diff --git a/src/mame/drivers/shtzone.cpp b/src/mame/drivers/shtzone.cpp index a1a4ac09aa9..c798fdf6e8e 100644 --- a/src/mame/drivers/shtzone.cpp +++ b/src/mame/drivers/shtzone.cpp @@ -66,10 +66,11 @@ public: void shtzone_map(address_map &map); }; -ADDRESS_MAP_START(shtzone_state::shtzone_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM -ADDRESS_MAP_END +void shtzone_state::shtzone_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram(); +} static INPUT_PORTS_START( shtzone ) diff --git a/src/mame/drivers/shuuz.cpp b/src/mame/drivers/shuuz.cpp index c332b8a1f93..1013b97fec1 100644 --- a/src/mame/drivers/shuuz.cpp +++ b/src/mame/drivers/shuuz.cpp @@ -110,26 +110,27 @@ READ16_MEMBER(shuuz_state::special_port0_r) * *************************************/ -ADDRESS_MAP_START(shuuz_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x101000, 0x101fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x102000, 0x102001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x103000, 0x103003) AM_READ(leta_r) - AM_RANGE(0x105000, 0x105001) AM_READWRITE(special_port0_r, latch_w) - AM_RANGE(0x105002, 0x105003) AM_READ_PORT("BUTTONS") - AM_RANGE(0x106000, 0x106001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x107000, 0x107007) AM_NOP - AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write) - AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_msb_w) AM_SHARE("vad:playfield") - AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_SHARE("vad:eof") - AM_RANGE(0x3f5f80, 0x3f5fff) AM_SHARE("vad:mob:slip") - AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext") - AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM - AM_RANGE(0x3fd000, 0x3fd3ff) AM_RAM AM_SHARE("vad:mob") - AM_RANGE(0x3fd400, 0x3fffff) AM_RAM -ADDRESS_MAP_END +void shuuz_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x101000, 0x101fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x102000, 0x102001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x103000, 0x103003).r(this, FUNC(shuuz_state::leta_r)); + map(0x105000, 0x105001).rw(this, FUNC(shuuz_state::special_port0_r), FUNC(shuuz_state::latch_w)); + map(0x105002, 0x105003).portr("BUTTONS"); + map(0x106001, 0x106001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x107000, 0x107007).noprw(); + map(0x3e0000, 0x3e07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); + map(0x3f4000, 0x3f5eff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_msb_w)).share("vad:playfield"); + map(0x3f5f00, 0x3f5f7f).ram().share("vad:eof"); + map(0x3f5f80, 0x3f5fff).share("vad:mob:slip"); + map(0x3f6000, 0x3f7fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext"); + map(0x3f8000, 0x3fcfff).ram(); + map(0x3fd000, 0x3fd3ff).ram().share("vad:mob"); + map(0x3fd400, 0x3fffff).ram(); +} diff --git a/src/mame/drivers/sidearms.cpp b/src/mame/drivers/sidearms.cpp index 76d4eb8fcae..a4299e6f0f6 100644 --- a/src/mame/drivers/sidearms.cpp +++ b/src/mame/drivers/sidearms.cpp @@ -77,55 +77,58 @@ READ8_MEMBER(sidearms_state::turtship_ports_r) } -ADDRESS_MAP_START(sidearms_state::sidearms_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1") AM_WRITE(bankswitch_w) - AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xc803, 0xc803) AM_READ_PORT("DSW0") - AM_RANGE(0xc804, 0xc804) AM_READ_PORT("DSW1") AM_WRITE(c804_w) - AM_RANGE(0xc805, 0xc805) AM_READ_PORT("DSW2") AM_WRITE(star_scrollx_w) - AM_RANGE(0xc806, 0xc806) AM_WRITE(star_scrolly_w) - AM_RANGE(0xc808, 0xc809) AM_WRITEONLY AM_SHARE("bg_scrollx") - AM_RANGE(0xc80a, 0xc80b) AM_WRITEONLY AM_SHARE("bg_scrolly") - AM_RANGE(0xc80c, 0xc80c) AM_WRITE(gfxctrl_w) /* background and sprite enable */ - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sidearms_state::turtship_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe400, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xe800, 0xe807) AM_READ(turtship_ports_r) - AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xe801, 0xe801) AM_WRITE(bankswitch_w) - AM_RANGE(0xe802, 0xe802) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe804, 0xe804) AM_WRITE(c804_w) - AM_RANGE(0xe805, 0xe805) AM_WRITE(star_scrollx_w) - AM_RANGE(0xe806, 0xe806) AM_WRITE(star_scrolly_w) - AM_RANGE(0xe808, 0xe809) AM_WRITEONLY AM_SHARE("bg_scrollx") - AM_RANGE(0xe80a, 0xe80b) AM_WRITEONLY AM_SHARE("bg_scrolly") - AM_RANGE(0xe80c, 0xe80c) AM_WRITE(gfxctrl_w) /* background and sprite enable */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sidearms_state::sidearms_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) -ADDRESS_MAP_END +void sidearms_state::sidearms_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xc400, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xc800, 0xc800).portr("SYSTEM").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc801, 0xc801).portr("P1").w(this, FUNC(sidearms_state::bankswitch_w)); + map(0xc802, 0xc802).portr("P2").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xc803, 0xc803).portr("DSW0"); + map(0xc804, 0xc804).portr("DSW1").w(this, FUNC(sidearms_state::c804_w)); + map(0xc805, 0xc805).portr("DSW2").w(this, FUNC(sidearms_state::star_scrollx_w)); + map(0xc806, 0xc806).w(this, FUNC(sidearms_state::star_scrolly_w)); + map(0xc808, 0xc809).writeonly().share("bg_scrollx"); + map(0xc80a, 0xc80b).writeonly().share("bg_scrolly"); + map(0xc80c, 0xc80c).w(this, FUNC(sidearms_state::gfxctrl_w)); /* background and sprite enable */ + map(0xd000, 0xd7ff).ram().w(this, FUNC(sidearms_state::videoram_w)).share("videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(sidearms_state::colorram_w)).share("colorram"); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).ram().share("spriteram"); +} + +void sidearms_state::turtship_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xdfff).ram().share("spriteram"); + map(0xe000, 0xe3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe400, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xe800, 0xe807).r(this, FUNC(sidearms_state::turtship_ports_r)); + map(0xe800, 0xe800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xe801, 0xe801).w(this, FUNC(sidearms_state::bankswitch_w)); + map(0xe802, 0xe802).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe804, 0xe804).w(this, FUNC(sidearms_state::c804_w)); + map(0xe805, 0xe805).w(this, FUNC(sidearms_state::star_scrollx_w)); + map(0xe806, 0xe806).w(this, FUNC(sidearms_state::star_scrolly_w)); + map(0xe808, 0xe809).writeonly().share("bg_scrollx"); + map(0xe80a, 0xe80b).writeonly().share("bg_scrolly"); + map(0xe80c, 0xe80c).w(this, FUNC(sidearms_state::gfxctrl_w)); /* background and sprite enable */ + map(0xf000, 0xf7ff).ram().w(this, FUNC(sidearms_state::videoram_w)).share("videoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(sidearms_state::colorram_w)).share("colorram"); +} + +void sidearms_state::sidearms_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf002, 0xf003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} /* Whizz */ @@ -142,41 +145,44 @@ WRITE8_MEMBER(sidearms_state::whizz_bankswitch_w) membank("bank1")->set_entry(bank); } -ADDRESS_MAP_START(sidearms_state::whizz_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc400, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc801, 0xc801) AM_READ_PORT("DSW1") AM_WRITE(whizz_bankswitch_w) - AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xc803, 0xc803) AM_READ_PORT("IN0") AM_WRITENOP - AM_RANGE(0xc804, 0xc804) AM_READ_PORT("IN1") AM_WRITE(c804_w) - AM_RANGE(0xc805, 0xc805) AM_READ_PORT("IN2") AM_WRITENOP - AM_RANGE(0xc806, 0xc806) AM_READ_PORT("IN3") - AM_RANGE(0xc807, 0xc807) AM_READ_PORT("IN4") - AM_RANGE(0xc808, 0xc809) AM_WRITEONLY AM_SHARE("bg_scrollx") - AM_RANGE(0xc80a, 0xc80b) AM_WRITEONLY AM_SHARE("bg_scrolly") - AM_RANGE(0xc80c, 0xc80c) AM_WRITE(gfxctrl_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xe805, 0xe805) AM_WRITE(star_scrollx_w) - AM_RANGE(0xe806, 0xe806) AM_WRITE(star_scrolly_w) - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sidearms_state::whizz_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sidearms_state::whizz_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITENOP - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void sidearms_state::whizz_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xc400, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xc800, 0xc800).portr("DSW0").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc801, 0xc801).portr("DSW1").w(this, FUNC(sidearms_state::whizz_bankswitch_w)); + map(0xc802, 0xc802).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xc803, 0xc803).portr("IN0").nopw(); + map(0xc804, 0xc804).portr("IN1").w(this, FUNC(sidearms_state::c804_w)); + map(0xc805, 0xc805).portr("IN2").nopw(); + map(0xc806, 0xc806).portr("IN3"); + map(0xc807, 0xc807).portr("IN4"); + map(0xc808, 0xc809).writeonly().share("bg_scrollx"); + map(0xc80a, 0xc80b).writeonly().share("bg_scrolly"); + map(0xc80c, 0xc80c).w(this, FUNC(sidearms_state::gfxctrl_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(sidearms_state::videoram_w)).share("videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(sidearms_state::colorram_w)).share("colorram"); + map(0xe000, 0xefff).ram(); + map(0xe805, 0xe805).w(this, FUNC(sidearms_state::star_scrollx_w)); + map(0xe806, 0xe806).w(this, FUNC(sidearms_state::star_scrolly_w)); + map(0xf000, 0xffff).ram().share("spriteram"); +} + +void sidearms_state::whizz_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf800, 0xffff).ram(); +} + +void sidearms_state::whizz_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).nopw(); + map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( sidearms ) diff --git a/src/mame/drivers/sidepckt.cpp b/src/mame/drivers/sidepckt.cpp index faa6c65315a..aa174661cc2 100644 --- a/src/mame/drivers/sidepckt.cpp +++ b/src/mame/drivers/sidepckt.cpp @@ -197,37 +197,40 @@ WRITE8_MEMBER(sidepckt_state::i8751_w) /******************************************************************************/ -ADDRESS_MAP_START(sidepckt_state::sidepckt_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x400) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x400) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2100, 0x24ff) AM_WRITENOP // ??? (Unused spriteram? The game writes some values at boot, but never read) - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("P1") - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2") - AM_RANGE(0x3004, 0x3004) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x300c, 0x300c) AM_READWRITE(scroll_y_r, scroll_y_w) - AM_RANGE(0x3014, 0x3014) AM_READ(i8751_r) - AM_RANGE(0x3018, 0x3018) AM_WRITE(i8751_w) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sidepckt_state::sidepcktb_map) - AM_IMPORT_FROM( sidepckt_map ) - AM_RANGE(0x3014, 0x3014) AM_READNOP - AM_RANGE(0x3018, 0x3018) AM_WRITENOP -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sidepckt_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym2", ym3526_device, write) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void sidepckt_state::sidepckt_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x13ff).mirror(0x400).ram().w(this, FUNC(sidepckt_state::videoram_w)).share("videoram"); + map(0x1800, 0x1bff).mirror(0x400).ram().w(this, FUNC(sidepckt_state::colorram_w)).share("colorram"); + map(0x2000, 0x20ff).ram().share("spriteram"); + map(0x2100, 0x24ff).nopw(); // ??? (Unused spriteram? The game writes some values at boot, but never read) + map(0x3000, 0x3000).portr("P1"); + map(0x3001, 0x3001).portr("P2"); + map(0x3002, 0x3002).portr("DSW1"); + map(0x3003, 0x3003).portr("DSW2"); + map(0x3004, 0x3004).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x300c, 0x300c).rw(this, FUNC(sidepckt_state::scroll_y_r), FUNC(sidepckt_state::scroll_y_w)); + map(0x3014, 0x3014).r(this, FUNC(sidepckt_state::i8751_r)); + map(0x3018, 0x3018).w(this, FUNC(sidepckt_state::i8751_w)); + map(0x4000, 0xffff).rom(); +} + +void sidepckt_state::sidepcktb_map(address_map &map) +{ + sidepckt_map(map); + map(0x3014, 0x3014).nopr(); + map(0x3018, 0x3018).nopw(); +} + + +void sidepckt_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1001).w("ym1", FUNC(ym2203_device::write)); + map(0x2000, 0x2001).w("ym2", FUNC(ym3526_device::write)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0xffff).rom(); +} /******************************************************************************/ diff --git a/src/mame/drivers/sigmab52.cpp b/src/mame/drivers/sigmab52.cpp index 1ccacc7282e..fe592cd52e5 100644 --- a/src/mame/drivers/sigmab52.cpp +++ b/src/mame/drivers/sigmab52.cpp @@ -318,44 +318,45 @@ WRITE8_MEMBER(sigmab52_state::palette_bank_w) * Memory Maps * *************************/ -ADDRESS_MAP_START(sigmab52_state::jwildb52_map) - AM_RANGE(0x0000, 0x3fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") +void sigmab52_state::jwildb52_map(address_map &map) +{ + map(0x0000, 0x3fff).ram().share("nvram"); + map(0x4000, 0x7fff).bankr("bank1"); - AM_RANGE(0x8000, 0xf6ff) AM_ROM + map(0x8000, 0xf6ff).rom(); - AM_RANGE(0xf700, 0xf700) AM_READ(unk_f700_r) // ACIA ??? - AM_RANGE(0xf710, 0xf710) AM_WRITE(bank1_w) + map(0xf700, 0xf700).r(this, FUNC(sigmab52_state::unk_f700_r)); // ACIA ??? + map(0xf710, 0xf710).w(this, FUNC(sigmab52_state::bank1_w)); - AM_RANGE(0xf720, 0xf727) AM_DEVREADWRITE("6840ptm_1", ptm6840_device, read, write) + map(0xf720, 0xf727).rw("6840ptm_1", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); - AM_RANGE(0xf730, 0xf730) AM_DEVREADWRITE("hd63484", hd63484_device, status8_r, address8_w) - AM_RANGE(0xf731, 0xf731) AM_DEVREADWRITE("hd63484", hd63484_device, data8_r, data8_w) + map(0xf730, 0xf730).rw("hd63484", FUNC(hd63484_device::status8_r), FUNC(hd63484_device::address8_w)); + map(0xf731, 0xf731).rw("hd63484", FUNC(hd63484_device::data8_r), FUNC(hd63484_device::data8_w)); - AM_RANGE(0xf740, 0xf740) AM_READ(in0_r) - AM_RANGE(0xf741, 0xf741) AM_READ_PORT("IN1") - AM_RANGE(0xf742, 0xf742) AM_READ_PORT("IN2") - AM_RANGE(0xf743, 0xf743) AM_READ_PORT("DSW1") - AM_RANGE(0xf744, 0xf744) AM_READ_PORT("DSW2") - AM_RANGE(0xf745, 0xf745) AM_READ_PORT("DSW3") - AM_RANGE(0xf746, 0xf746) AM_READ_PORT("DSW4") - AM_RANGE(0xf747, 0xf747) AM_READ_PORT("IN3") - AM_RANGE(0xf750, 0xf750) AM_WRITE(palette_bank_w) + map(0xf740, 0xf740).r(this, FUNC(sigmab52_state::in0_r)); + map(0xf741, 0xf741).portr("IN1"); + map(0xf742, 0xf742).portr("IN2"); + map(0xf743, 0xf743).portr("DSW1"); + map(0xf744, 0xf744).portr("DSW2"); + map(0xf745, 0xf745).portr("DSW3"); + map(0xf746, 0xf746).portr("DSW4"); + map(0xf747, 0xf747).portr("IN3"); + map(0xf750, 0xf750).w(this, FUNC(sigmab52_state::palette_bank_w)); - AM_RANGE(0xf760, 0xf760) AM_READ(unk_f760_r) + map(0xf760, 0xf760).r(this, FUNC(sigmab52_state::unk_f760_r)); // AM_RANGE(0xf770, 0xf77f) Bill validator - AM_RANGE(0xf780, 0xf780) AM_WRITE(audiocpu_cmd_irq_w) - AM_RANGE(0xf790, 0xf790) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + map(0xf780, 0xf780).w(this, FUNC(sigmab52_state::audiocpu_cmd_irq_w)); + map(0xf790, 0xf790).w("soundlatch", FUNC(generic_latch_8_device::write)); - AM_RANGE(0xf7b0, 0xf7b0) AM_WRITE(coin_enable_w) - AM_RANGE(0xf7d5, 0xf7d5) AM_WRITE(hopper_w) - AM_RANGE(0xf7b2, 0xf7b7) AM_WRITE(lamps1_w) - AM_RANGE(0xf7c0, 0xf7c3) AM_WRITE(lamps2_w) - AM_RANGE(0xf7d6, 0xf7d7) AM_WRITE(tower_lamps_w) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0xf7b0, 0xf7b0).w(this, FUNC(sigmab52_state::coin_enable_w)); + map(0xf7d5, 0xf7d5).w(this, FUNC(sigmab52_state::hopper_w)); + map(0xf7b2, 0xf7b7).w(this, FUNC(sigmab52_state::lamps1_w)); + map(0xf7c0, 0xf7c3).w(this, FUNC(sigmab52_state::lamps2_w)); + map(0xf7d6, 0xf7d7).w(this, FUNC(sigmab52_state::tower_lamps_w)); + map(0xf800, 0xffff).rom(); +} /* Unknown R/W: @@ -369,24 +370,26 @@ ADDRESS_MAP_END */ -ADDRESS_MAP_START(sigmab52_state::sound_prog_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x6020, 0x6027) AM_DEVREADWRITE("6840ptm_2", ptm6840_device, read, write) - AM_RANGE(0x6030, 0x6030) AM_WRITE(audiocpu_irq_ack_w) - AM_RANGE(0x6050, 0x6050) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x6060, 0x6061) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END +void sigmab52_state::sound_prog_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x6020, 0x6027).rw(m_6840ptm_2, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x6030, 0x6030).w(this, FUNC(sigmab52_state::audiocpu_irq_ack_w)); + map(0x6050, 0x6050).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x6060, 0x6061).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x8000, 0xffff).rom().region("audiocpu", 0); +} /* Unknown R/W: */ -ADDRESS_MAP_START(sigmab52_state::jwildb52_hd63484_map) - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0x20000, 0x3ffff) AM_ROM AM_REGION("gfx1", 0) -ADDRESS_MAP_END +void sigmab52_state::jwildb52_hd63484_map(address_map &map) +{ + map(0x00000, 0x1ffff).ram(); + map(0x20000, 0x3ffff).rom().region("gfx1", 0); +} INPUT_CHANGED_MEMBER( sigmab52_state::coin_drop_start ) { diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp index e704bb76c2e..997a0c0b8da 100644 --- a/src/mame/drivers/sigmab98.cpp +++ b/src/mame/drivers/sigmab98.cpp @@ -800,42 +800,44 @@ READ8_MEMBER(sigmab98_state::dodghero_regs2_r) } } -ADDRESS_MAP_START(sigmab98_state::dodghero_mem_map) - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0xa7ff ) AM_ROMBANK("rombank") +void sigmab98_state::dodghero_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xa7ff).bankr("rombank"); - AM_RANGE( 0xa800, 0xb7ff ) AM_RAM AM_SHARE("spriteram") + map(0xa800, 0xb7ff).ram().share("spriteram"); - AM_RANGE( 0xc800, 0xc9ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0xc800, 0xc9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE( 0xd001, 0xd07f ) AM_RAM AM_SHARE("vtable") + map(0xd001, 0xd07f).ram().share("vtable"); - AM_RANGE( 0xd800, 0xdfff ) AM_RAMBANK("rambank") // not used, where is it mapped? + map(0xd800, 0xdfff).bankrw("rambank"); // not used, where is it mapped? - AM_RANGE( 0xd800, 0xd821 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs") - AM_RANGE( 0xd813, 0xd813 ) AM_READ(d013_r) - AM_RANGE( 0xd821, 0xd821 ) AM_READ(d021_r) + map(0xd800, 0xd821).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs"); + map(0xd813, 0xd813).r(this, FUNC(sigmab98_state::d013_r)); + map(0xd821, 0xd821).r(this, FUNC(sigmab98_state::d021_r)); - AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram") // battery backed RAM + map(0xe000, 0xefff).ram().share("nvram"); // battery backed RAM - AM_RANGE( 0xf000, 0xffff ) AM_RAM -ADDRESS_MAP_END + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(sigmab98_state::dodghero_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void sigmab98_state::dodghero_io_map(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE( 0x00, 0x01 ) AM_DEVREADWRITE("ymz", ymz280b_device, read, write ) + map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); - AM_RANGE( 0xa0, 0xa1 ) AM_READWRITE(dodghero_regs_r, dodghero_regs_w ) + map(0xa0, 0xa1).rw(this, FUNC(sigmab98_state::dodghero_regs_r), FUNC(sigmab98_state::dodghero_regs_w)); // AM_RANGE( 0xa2, 0xa3 ) - AM_RANGE( 0xa4, 0xa5 ) AM_READWRITE(dodghero_regs2_r, dodghero_regs2_w ) + map(0xa4, 0xa5).rw(this, FUNC(sigmab98_state::dodghero_regs2_r), FUNC(sigmab98_state::dodghero_regs2_w)); - AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "EEPROM" ) AM_WRITE(eeprom_w) - AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(c4_w ) - AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(c6_w ) - AM_RANGE( 0xc8, 0xc8 ) AM_WRITE(c8_w ) -ADDRESS_MAP_END + map(0xc0, 0xc0).portr("EEPROM").w(this, FUNC(sigmab98_state::eeprom_w)); + map(0xc2, 0xc2).portr("BUTTON"); + map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(sigmab98_state::c4_w)); + map(0xc6, 0xc6).w(this, FUNC(sigmab98_state::c6_w)); + map(0xc8, 0xc8).w(this, FUNC(sigmab98_state::c8_w)); +} /*************************************************************************** GeGeGe no Kitarou Youkai Slot @@ -996,44 +998,46 @@ WRITE8_MEMBER(sigmab98_state::c8_w) show_outputs(); } -ADDRESS_MAP_START(sigmab98_state::gegege_mem_map) - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0x9fff ) AM_ROMBANK("rombank") +void sigmab98_state::gegege_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("rombank"); - AM_RANGE( 0xa000, 0xafff ) AM_RAM AM_SHARE("spriteram") + map(0xa000, 0xafff).ram().share("spriteram"); - AM_RANGE( 0xc000, 0xc1ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0xc000, 0xc1ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE( 0xc800, 0xc87f ) AM_RAM AM_SHARE("vtable") + map(0xc800, 0xc87f).ram().share("vtable"); - AM_RANGE( 0xd000, 0xd021 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs") - AM_RANGE( 0xd013, 0xd013 ) AM_READ(d013_r) - AM_RANGE( 0xd021, 0xd021 ) AM_READ(d021_r) + map(0xd000, 0xd021).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs"); + map(0xd013, 0xd013).r(this, FUNC(sigmab98_state::d013_r)); + map(0xd021, 0xd021).r(this, FUNC(sigmab98_state::d021_r)); - AM_RANGE( 0xd800, 0xdfff ) AM_RAMBANK("rambank") + map(0xd800, 0xdfff).bankrw("rambank"); - AM_RANGE( 0xe000, 0xefff ) AM_RAM AM_SHARE("nvram") // battery backed RAM + map(0xe000, 0xefff).ram().share("nvram"); // battery backed RAM - AM_RANGE( 0xf000, 0xffff ) AM_RAM -ADDRESS_MAP_END + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(sigmab98_state::gegege_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void sigmab98_state::gegege_io_map(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE( 0x00, 0x01 ) AM_DEVREADWRITE("ymz", ymz280b_device, read, write ) + map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); - AM_RANGE( 0xa0, 0xa1 ) AM_READWRITE(gegege_regs_r, gegege_regs_w ) + map(0xa0, 0xa1).rw(this, FUNC(sigmab98_state::gegege_regs_r), FUNC(sigmab98_state::gegege_regs_w)); // AM_RANGE( 0xa2, 0xa3 ) - AM_RANGE( 0xa4, 0xa5 ) AM_READWRITE(gegege_regs2_r, gegege_regs2_w ) + map(0xa4, 0xa5).rw(this, FUNC(sigmab98_state::gegege_regs2_r), FUNC(sigmab98_state::gegege_regs2_w)); - AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "EEPROM" ) AM_WRITE(eeprom_w) - AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(c4_w ) - AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(c6_w ) - AM_RANGE( 0xc8, 0xc8 ) AM_WRITE(c8_w ) + map(0xc0, 0xc0).portr("EEPROM").w(this, FUNC(sigmab98_state::eeprom_w)); + map(0xc2, 0xc2).portr("BUTTON"); + map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(sigmab98_state::c4_w)); + map(0xc6, 0xc6).w(this, FUNC(sigmab98_state::c6_w)); + map(0xc8, 0xc8).w(this, FUNC(sigmab98_state::c8_w)); - AM_RANGE( 0xe5, 0xe5 ) AM_READNOP // during irq -ADDRESS_MAP_END + map(0xe5, 0xe5).nopr(); // during irq +} /*************************************************************************** Minna Ganbare! Dash Hero @@ -1095,23 +1099,24 @@ READ8_MEMBER(sigmab98_state::dashhero_regs2_r) } } -ADDRESS_MAP_START(sigmab98_state::dashhero_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void sigmab98_state::dashhero_io_map(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE( 0x00, 0x01 ) AM_DEVREADWRITE("ymz", ymz280b_device, read, write ) + map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); - AM_RANGE( 0xa0, 0xa1 ) AM_READWRITE(gegege_regs_r, gegege_regs_w ) + map(0xa0, 0xa1).rw(this, FUNC(sigmab98_state::gegege_regs_r), FUNC(sigmab98_state::gegege_regs_w)); // AM_RANGE( 0xa2, 0xa3 ) - AM_RANGE( 0xa4, 0xa5 ) AM_READWRITE(dashhero_regs2_r, dashhero_regs2_w ) + map(0xa4, 0xa5).rw(this, FUNC(sigmab98_state::dashhero_regs2_r), FUNC(sigmab98_state::dashhero_regs2_w)); - AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "EEPROM" ) AM_WRITE(eeprom_w) - AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(c4_w ) - AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(c6_w ) - AM_RANGE( 0xc8, 0xc8 ) AM_WRITE(c8_w ) + map(0xc0, 0xc0).portr("EEPROM").w(this, FUNC(sigmab98_state::eeprom_w)); + map(0xc2, 0xc2).portr("BUTTON"); + map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(sigmab98_state::c4_w)); + map(0xc6, 0xc6).w(this, FUNC(sigmab98_state::c6_w)); + map(0xc8, 0xc8).w(this, FUNC(sigmab98_state::c8_w)); - AM_RANGE( 0xe5, 0xe5 ) AM_READNOP // during irq -ADDRESS_MAP_END + map(0xe5, 0xe5).nopr(); // during irq +} /*************************************************************************** @@ -1227,36 +1232,38 @@ WRITE8_MEMBER(lufykzku_state::lufykzku_c8_w) show_outputs(); } -ADDRESS_MAP_START(lufykzku_state::lufykzku_mem_map) - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0xbfff ) AM_RAMBANK("romrambank") AM_SHARE("nvram") // ROM | NVRAM +void lufykzku_state::lufykzku_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankrw("romrambank").share("nvram"); // ROM | NVRAM - AM_RANGE( 0xc000, 0xcfff ) AM_RAM AM_SHARE("spriteram") + map(0xc000, 0xcfff).ram().share("spriteram"); - AM_RANGE( 0xd000, 0xefff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // more palette entries + map(0xd000, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // more palette entries - AM_RANGE( 0xf000, 0xf021 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs") - AM_RANGE( 0xf013, 0xf013 ) AM_READ(d013_r) - AM_RANGE( 0xf021, 0xf021 ) AM_READ(d021_r) + map(0xf000, 0xf021).rw(this, FUNC(lufykzku_state::vregs_r), FUNC(lufykzku_state::vregs_w)).share("vregs"); + map(0xf013, 0xf013).r(this, FUNC(lufykzku_state::d013_r)); + map(0xf021, 0xf021).r(this, FUNC(lufykzku_state::d021_r)); - AM_RANGE( 0xf400, 0xf47f ) AM_RAM AM_SHARE("vtable") + map(0xf400, 0xf47f).ram().share("vtable"); - AM_RANGE( 0xfc00, 0xffff ) AM_RAM -ADDRESS_MAP_END + map(0xfc00, 0xffff).ram(); +} -ADDRESS_MAP_START(lufykzku_state::lufykzku_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x01, 0x01 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) +void lufykzku_state::lufykzku_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("oki", FUNC(okim9810_device::write)); + map(0x01, 0x01).w("oki", FUNC(okim9810_device::write_tmp_register)); - AM_RANGE( 0xa2, 0xa3 ) AM_READWRITE(lufykzku_regs_r, lufykzku_regs_w ) + map(0xa2, 0xa3).rw(this, FUNC(lufykzku_state::lufykzku_regs_r), FUNC(lufykzku_state::lufykzku_regs_w)); - AM_RANGE( 0xc0, 0xc0 ) AM_READ_PORT( "COIN" ) AM_WRITE(lufykzku_watchdog_w ) // bit 7 -> watchdog - AM_RANGE( 0xc2, 0xc2 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0xc4, 0xc4 ) AM_READ_PORT( "PAYOUT" ) AM_WRITE(lufykzku_c4_w) // bit 7 = medal lock, bit 6 = coin3, bit 5 = yen - AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(lufykzku_c6_w ) - AM_RANGE( 0xc8, 0xc8 ) AM_READWRITE(lufykzku_c8_r, lufykzku_c8_w ) // 0xc8 bit 6 read (eeprom?) -ADDRESS_MAP_END + map(0xc0, 0xc0).portr("COIN").w(this, FUNC(lufykzku_state::lufykzku_watchdog_w)); // bit 7 -> watchdog + map(0xc2, 0xc2).portr("BUTTON"); + map(0xc4, 0xc4).portr("PAYOUT").w(this, FUNC(lufykzku_state::lufykzku_c4_w)); // bit 7 = medal lock, bit 6 = coin3, bit 5 = yen + map(0xc6, 0xc6).w(this, FUNC(lufykzku_state::lufykzku_c6_w)); + map(0xc8, 0xc8).rw(this, FUNC(lufykzku_state::lufykzku_c8_r), FUNC(lufykzku_state::lufykzku_c8_w)); // 0xc8 bit 6 read (eeprom?) +} /*************************************************************************** @@ -1466,42 +1473,44 @@ READ8_MEMBER(sigmab98_state::sammymdl_coin_hopper_r) return ret; } -ADDRESS_MAP_START(sigmab98_state::animalc_map) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0x7fff ) AM_ROMBANK( "rombank" ) - AM_RANGE( 0x8000, 0x8fff ) AM_RAMBANK( "rambank" ) AM_SHARE( "nvram" ) +void sigmab98_state::animalc_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0x8fff).bankrw("rambank").share("nvram"); - AM_RANGE( 0x9000, 0x9fff ) AM_RAM - AM_RANGE( 0xa000, 0xafff ) AM_RAM - AM_RANGE( 0xb000, 0xbfff ) AM_RAMBANK("sprbank") + map(0x9000, 0x9fff).ram(); + map(0xa000, 0xafff).ram(); + map(0xb000, 0xbfff).bankrw("sprbank"); - AM_RANGE( 0xd000, 0xd1ff ) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE( 0xd800, 0xd87f ) AM_RAM AM_SHARE("vtable") + map(0xd000, 0xd1ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xd800, 0xd87f).ram().share("vtable"); - AM_RANGE( 0xe000, 0xe021 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs") - AM_RANGE( 0xe011, 0xe011 ) AM_WRITENOP // IRQ Enable? Screen disable? - AM_RANGE( 0xe013, 0xe013 ) AM_READWRITE(vblank_r, vblank_w ) // IRQ Ack? + map(0xe000, 0xe021).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs"); + map(0xe011, 0xe011).nopw(); // IRQ Enable? Screen disable? + map(0xe013, 0xe013).rw(this, FUNC(sigmab98_state::vblank_r), FUNC(sigmab98_state::vblank_w)); // IRQ Ack? - AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM -ADDRESS_MAP_END + map(0xfe00, 0xffff).ram(); // High speed internal RAM +} -ADDRESS_MAP_START(sigmab98_state::animalc_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x02, 0x03 ) AM_READWRITE(animalc_rombank_r, animalc_rombank_w ) - AM_RANGE( 0x04, 0x05 ) AM_READWRITE(animalc_rambank_r, animalc_rambank_w ) +void sigmab98_state::animalc_io(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw(this, FUNC(sigmab98_state::animalc_rombank_r), FUNC(sigmab98_state::animalc_rombank_w)); + map(0x04, 0x05).rw(this, FUNC(sigmab98_state::animalc_rambank_r), FUNC(sigmab98_state::animalc_rambank_w)); - AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w ) - AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r ) - AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w ) - AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, sammymdl_leds_w ) - AM_RANGE( 0x34, 0x34 ) AM_READ(unk_34_r ) - AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) - AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) - AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) - AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 -ADDRESS_MAP_END + map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w)); + map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r)); + map(0x30, 0x30).portr("BUTTON"); + map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w)); + map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::sammymdl_leds_w)); + map(0x34, 0x34).r(this, FUNC(sigmab98_state::unk_34_r)); + map(0x90, 0x90).w("oki", FUNC(okim9810_device::write)); + map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register)); + map(0x92, 0x92).r("oki", FUNC(okim9810_device::read)); + map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w)); + map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1 +} /*************************************************************************** Go Go Cowboy @@ -1755,15 +1764,16 @@ WRITE8_MEMBER(sigmab98_state::gocowboy_dc00_w) logerror("%s: unknown write to %02x = %02x with rambank = %02x\n", machine().describe_context(), offset + 0xdc00, data, m_rambank); } -ADDRESS_MAP_START(sigmab98_state::gocowboy_map) - AM_RANGE(0x0000, 0x43ff) AM_ROM +void sigmab98_state::gocowboy_map(address_map &map) +{ + map(0x0000, 0x43ff).rom(); - AM_RANGE( 0x4400, 0xdbff ) AM_READWRITE(gocowboy_4400_r, gocowboy_4400_w ) // SPRITERAM + PALETTERAM + VTABLE + VREGS | NVRAM + map(0x4400, 0xdbff).rw(this, FUNC(sigmab98_state::gocowboy_4400_r), FUNC(sigmab98_state::gocowboy_4400_w)); // SPRITERAM + PALETTERAM + VTABLE + VREGS | NVRAM - AM_RANGE( 0xdc00, 0xfbff ) AM_READWRITE(gocowboy_dc00_r, gocowboy_dc00_w ) AM_SHARE("nvram") // PALETTERAM | NVRAM + map(0xdc00, 0xfbff).rw(this, FUNC(sigmab98_state::gocowboy_dc00_r), FUNC(sigmab98_state::gocowboy_dc00_w)).share("nvram"); // PALETTERAM | NVRAM - AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM -ADDRESS_MAP_END + map(0xfe00, 0xffff).ram(); // High speed internal RAM +} WRITE8_MEMBER(sigmab98_state::gocowboy_leds_w) @@ -1782,22 +1792,23 @@ WRITE8_MEMBER(sigmab98_state::gocowboy_leds_w) show_3_outputs(); } -ADDRESS_MAP_START(sigmab98_state::gocowboy_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x02, 0x03 ) AM_READWRITE(gocowboy_rombank_r, gocowboy_rombank_w ) - AM_RANGE( 0x04, 0x05 ) AM_READWRITE(gocowboy_rambank_r, gocowboy_rambank_w ) +void sigmab98_state::gocowboy_io(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw(this, FUNC(sigmab98_state::gocowboy_rombank_r), FUNC(sigmab98_state::gocowboy_rombank_w)); + map(0x04, 0x05).rw(this, FUNC(sigmab98_state::gocowboy_rambank_r), FUNC(sigmab98_state::gocowboy_rambank_w)); - AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w ) - AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r ) - AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w ) - AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, gocowboy_leds_w ) - AM_RANGE( 0x90, 0x90 ) AM_DEVREADWRITE("oki", okim9810_device, read, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) - AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) - AM_RANGE( 0xb0, 0xb0 ) AM_WRITENOP - AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 -ADDRESS_MAP_END + map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w)); + map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r)); + map(0x30, 0x30).portr("BUTTON"); + map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w)); + map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::gocowboy_leds_w)); + map(0x90, 0x90).rw("oki", FUNC(okim9810_device::read), FUNC(okim9810_device::write)); + map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register)); + map(0x92, 0x92).r("oki", FUNC(okim9810_device::read)); + map(0xb0, 0xb0).nopw(); + map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1 +} /*************************************************************************** Hae Hae Ka Ka Ka @@ -2019,29 +2030,31 @@ WRITE8_MEMBER(sigmab98_state::haekaka_coin_counter_w) show_3_outputs(); } -ADDRESS_MAP_START(sigmab98_state::haekaka_map) - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0xb000, 0xcfff ) AM_READWRITE(haekaka_b000_r, haekaka_b000_w ) - AM_RANGE( 0xd000, 0xefff ) AM_RAM AM_SHARE( "nvram" ) - AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sigmab98_state::haekaka_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x02, 0x03 ) AM_READWRITE(haekaka_rombank_r, haekaka_rombank_w ) - AM_RANGE( 0x04, 0x05 ) AM_READWRITE(haekaka_rambank_r, haekaka_rambank_w ) - - AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w ) - AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r ) - AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, haekaka_coin_counter_w ) - AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, haekaka_leds_w ) - AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) - AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) - AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) - AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 -ADDRESS_MAP_END +void sigmab98_state::haekaka_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xb000, 0xcfff).rw(this, FUNC(sigmab98_state::haekaka_b000_r), FUNC(sigmab98_state::haekaka_b000_w)); + map(0xd000, 0xefff).ram().share("nvram"); + map(0xfe00, 0xffff).ram(); // High speed internal RAM +} + +void sigmab98_state::haekaka_io(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw(this, FUNC(sigmab98_state::haekaka_rombank_r), FUNC(sigmab98_state::haekaka_rombank_w)); + map(0x04, 0x05).rw(this, FUNC(sigmab98_state::haekaka_rambank_r), FUNC(sigmab98_state::haekaka_rambank_w)); + + map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w)); + map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r)); + map(0x30, 0x30).portr("BUTTON"); + map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::haekaka_coin_counter_w)); + map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::haekaka_leds_w)); + map(0x90, 0x90).w("oki", FUNC(okim9810_device::write)); + map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register)); + map(0x92, 0x92).r("oki", FUNC(okim9810_device::read)); + map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w)); + map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1 +} /*************************************************************************** Itazura Monkey @@ -2257,47 +2270,50 @@ READ8_MEMBER(sigmab98_state::itazuram_palette_r) return m_paletteram[offset]; } -ADDRESS_MAP_START(sigmab98_state::itazuram_map) - AM_RANGE( 0x0000, 0x37ff ) AM_ROM - AM_RANGE( 0x3800, 0x47ff ) AM_READ_BANK( "rombank0" ) AM_WRITE_BANK( "sprbank0" ) - AM_RANGE( 0x4800, 0x57ff ) AM_READ_BANK( "rombank1" ) AM_WRITE_BANK( "sprbank1" ) +void sigmab98_state::itazuram_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0x3800, 0x47ff).bankr("rombank0").bankw("sprbank0"); + map(0x4800, 0x57ff).bankr("rombank1").bankw("sprbank1"); - AM_RANGE( 0x5800, 0x59ff ) AM_READWRITE(itazuram_palette_r, itazuram_palette_w ) - AM_RANGE( 0x6000, 0x607f ) AM_RAM AM_SHARE("vtable") + map(0x5800, 0x59ff).rw(this, FUNC(sigmab98_state::itazuram_palette_r), FUNC(sigmab98_state::itazuram_palette_w)); + map(0x6000, 0x607f).ram().share("vtable"); - AM_RANGE( 0x6800, 0x6821 ) AM_READWRITE(vregs_r, vregs_w) AM_SHARE("vregs") - AM_RANGE( 0x6811, 0x6811 ) AM_WRITENOP // IRQ Enable? Screen disable? - AM_RANGE( 0x6813, 0x6813 ) AM_WRITENOP // IRQ Ack? - AM_RANGE( 0xdc00, 0xfdff ) AM_READ_BANK( "palbank" ) AM_WRITE(itazuram_nvram_palette_w ) AM_SHARE( "nvram" ) // nvram | paletteram + map(0x6800, 0x6821).rw(this, FUNC(sigmab98_state::vregs_r), FUNC(sigmab98_state::vregs_w)).share("vregs"); + map(0x6811, 0x6811).nopw(); // IRQ Enable? Screen disable? + map(0x6813, 0x6813).nopw(); // IRQ Ack? + map(0xdc00, 0xfdff).bankr("palbank").w(this, FUNC(sigmab98_state::itazuram_nvram_palette_w)).share("nvram"); // nvram | paletteram - AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM -ADDRESS_MAP_END + map(0xfe00, 0xffff).ram(); // High speed internal RAM +} -ADDRESS_MAP_START(sigmab98_state::itazuram_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x02, 0x03 ) AM_READWRITE(itazuram_rombank_r, itazuram_rombank_w ) - AM_RANGE( 0x04, 0x05 ) AM_READWRITE(itazuram_rambank_r, itazuram_rambank_w ) +void sigmab98_state::itazuram_io(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw(this, FUNC(sigmab98_state::itazuram_rombank_r), FUNC(sigmab98_state::itazuram_rombank_w)); + map(0x04, 0x05).rw(this, FUNC(sigmab98_state::itazuram_rambank_r), FUNC(sigmab98_state::itazuram_rambank_w)); - AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w ) - AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r ) - AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w ) - AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, sammymdl_leds_w ) - AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) - AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) - AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) - AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 -ADDRESS_MAP_END + map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w)); + map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r)); + map(0x30, 0x30).portr("BUTTON"); + map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w)); + map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::sammymdl_leds_w)); + map(0x90, 0x90).w("oki", FUNC(okim9810_device::write)); + map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register)); + map(0x92, 0x92).r("oki", FUNC(okim9810_device::read)); + map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w)); + map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1 +} /*************************************************************************** Pye-nage Taikai ***************************************************************************/ -ADDRESS_MAP_START(sigmab98_state::pyenaget_io) - AM_IMPORT_FROM( haekaka_io ) - AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w ) -ADDRESS_MAP_END +void sigmab98_state::pyenaget_io(address_map &map) +{ + haekaka_io(map); + map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w)); +} /*************************************************************************** Taihou de Doboon @@ -2495,29 +2511,31 @@ WRITE8_MEMBER(sigmab98_state::tdoboon_c000_w) logerror("%s: unknown write to %02x = %02x with rombank = %02x\n", machine().describe_context(), offset+0xc000, data, m_rombank); } -ADDRESS_MAP_START(sigmab98_state::tdoboon_map) - AM_RANGE( 0x0000, 0xbfff ) AM_ROM - AM_RANGE( 0xc000, 0xcfff ) AM_READWRITE(tdoboon_c000_r, tdoboon_c000_w ) - AM_RANGE( 0xd000, 0xefff ) AM_RAM AM_SHARE( "nvram" ) - AM_RANGE( 0xfe00, 0xffff ) AM_RAM // High speed internal RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sigmab98_state::tdoboon_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x02, 0x03 ) AM_READWRITE(tdoboon_rombank_r, tdoboon_rombank_w ) - AM_RANGE( 0x04, 0x05 ) AM_READWRITE(tdoboon_rambank_r, tdoboon_rambank_w ) - - AM_RANGE( 0x2c, 0x2c ) AM_READWRITE(sammymdl_eeprom_r, sammymdl_eeprom_w ) - AM_RANGE( 0x2e, 0x2e ) AM_READ(sammymdl_coin_hopper_r ) - AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" ) - AM_RANGE( 0x31, 0x31 ) AM_READWRITE(sammymdl_coin_counter_r, sammymdl_coin_counter_w ) - AM_RANGE( 0x32, 0x32 ) AM_READWRITE(sammymdl_leds_r, sammymdl_leds_w ) - AM_RANGE( 0x90, 0x90 ) AM_DEVWRITE("oki", okim9810_device, write ) - AM_RANGE( 0x91, 0x91 ) AM_DEVWRITE("oki", okim9810_device, write_tmp_register ) - AM_RANGE( 0x92, 0x92 ) AM_DEVREAD("oki", okim9810_device, read ) - AM_RANGE( 0xb0, 0xb0 ) AM_WRITE(sammymdl_hopper_w ) - AM_RANGE( 0xc0, 0xc0 ) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w ) // 1 -ADDRESS_MAP_END +void sigmab98_state::tdoboon_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).rw(this, FUNC(sigmab98_state::tdoboon_c000_r), FUNC(sigmab98_state::tdoboon_c000_w)); + map(0xd000, 0xefff).ram().share("nvram"); + map(0xfe00, 0xffff).ram(); // High speed internal RAM +} + +void sigmab98_state::tdoboon_io(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw(this, FUNC(sigmab98_state::tdoboon_rombank_r), FUNC(sigmab98_state::tdoboon_rombank_w)); + map(0x04, 0x05).rw(this, FUNC(sigmab98_state::tdoboon_rambank_r), FUNC(sigmab98_state::tdoboon_rambank_w)); + + map(0x2c, 0x2c).rw(this, FUNC(sigmab98_state::sammymdl_eeprom_r), FUNC(sigmab98_state::sammymdl_eeprom_w)); + map(0x2e, 0x2e).r(this, FUNC(sigmab98_state::sammymdl_coin_hopper_r)); + map(0x30, 0x30).portr("BUTTON"); + map(0x31, 0x31).rw(this, FUNC(sigmab98_state::sammymdl_coin_counter_r), FUNC(sigmab98_state::sammymdl_coin_counter_w)); + map(0x32, 0x32).rw(this, FUNC(sigmab98_state::sammymdl_leds_r), FUNC(sigmab98_state::sammymdl_leds_w)); + map(0x90, 0x90).w("oki", FUNC(okim9810_device::write)); + map(0x91, 0x91).w("oki", FUNC(okim9810_device::write_tmp_register)); + map(0x92, 0x92).r("oki", FUNC(okim9810_device::read)); + map(0xb0, 0xb0).w(this, FUNC(sigmab98_state::sammymdl_hopper_w)); + map(0xc0, 0xc0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); // 1 +} /*************************************************************************** diff --git a/src/mame/drivers/silkroad.cpp b/src/mame/drivers/silkroad.cpp index 79519768e43..b7a459822e9 100644 --- a/src/mame/drivers/silkroad.cpp +++ b/src/mame/drivers/silkroad.cpp @@ -157,23 +157,24 @@ WRITE32_MEMBER(silkroad_state::silk_coin_counter_w) } } -ADDRESS_MAP_START(silkroad_state::cpu_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x40c000, 0x40cfff) AM_RAM AM_SHARE("sprram") // sprites - AM_RANGE(0x600000, 0x603fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_SHARE("paletteram") // palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(silkroad_fgram_w) AM_SHARE("vidram") // lower Layer - AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(silkroad_fgram2_w) AM_SHARE("vidram2") // mid layer - AM_RANGE(0x808000, 0x80bfff) AM_RAM_WRITE(silkroad_fgram3_w) AM_SHARE("vidram3") // higher layer - AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS") - AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("DSW") - AM_RANGE(0xc00024, 0xc00027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000) - AM_RANGE(0xc00028, 0xc0002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000) - AM_RANGE(0xc00030, 0xc00033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000) - AM_RANGE(0xc00034, 0xc00037) AM_WRITE(silk_6295_bank_w) - AM_RANGE(0xc00038, 0xc0003b) AM_WRITE(silk_coin_counter_w) - AM_RANGE(0xc0010c, 0xc00123) AM_WRITEONLY AM_SHARE("regs") - AM_RANGE(0xfe0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void silkroad_state::cpu_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x40c000, 0x40cfff).ram().share("sprram"); // sprites + map(0x600000, 0x603fff).ram().w(this, FUNC(silkroad_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w)).share("paletteram"); // palette + map(0x800000, 0x803fff).ram().w(this, FUNC(silkroad_state::silkroad_fgram_w)).share("vidram"); // lower Layer + map(0x804000, 0x807fff).ram().w(this, FUNC(silkroad_state::silkroad_fgram2_w)).share("vidram2"); // mid layer + map(0x808000, 0x80bfff).ram().w(this, FUNC(silkroad_state::silkroad_fgram3_w)).share("vidram3"); // higher layer + map(0xc00000, 0xc00003).portr("INPUTS"); + map(0xc00004, 0xc00007).portr("DSW"); + map(0xc00025, 0xc00025).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc00028, 0xc0002f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x00ff0000); + map(0xc00031, 0xc00031).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xc00034, 0xc00037).w(this, FUNC(silkroad_state::silk_6295_bank_w)); + map(0xc00038, 0xc0003b).w(this, FUNC(silkroad_state::silk_coin_counter_w)); + map(0xc0010c, 0xc00123).writeonly().share("regs"); + map(0xfe0000, 0xffffff).ram(); +} static INPUT_PORTS_START( silkroad ) diff --git a/src/mame/drivers/silvmil.cpp b/src/mame/drivers/silvmil.cpp index 613f539410d..4113782740e 100644 --- a/src/mame/drivers/silvmil.cpp +++ b/src/mame/drivers/silvmil.cpp @@ -183,26 +183,27 @@ uint32_t silvmil_state::screen_update_silvmil(screen_device &screen, bitmap_ind1 } -ADDRESS_MAP_START(silvmil_state::silvmil_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - - AM_RANGE(0x100000, 0x100001) AM_WRITE(silvmil_tilebank1_w) - AM_RANGE(0x100002, 0x100003) AM_WRITE(silvmil_fg_scrollx_w) - AM_RANGE(0x100004, 0x100005) AM_WRITE(silvmil_fg_scrolly_w) - AM_RANGE(0x100006, 0x100007) AM_WRITE(silvmil_bg_scrollx_w) - AM_RANGE(0x100008, 0x100009) AM_WRITE(silvmil_bg_scrolly_w) - AM_RANGE(0x10000e, 0x10000f) AM_WRITE(silvmil_tilebank_w) - - AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(silvmil_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(silvmil_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x200000, 0x2005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x270000, 0x270001) AM_WRITE(silvmil_soundcmd_w) - AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2") - AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN") - AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW") - AM_RANGE(0x300000, 0x30ffff) AM_RAM -ADDRESS_MAP_END +void silvmil_state::silvmil_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + + map(0x100000, 0x100001).w(this, FUNC(silvmil_state::silvmil_tilebank1_w)); + map(0x100002, 0x100003).w(this, FUNC(silvmil_state::silvmil_fg_scrollx_w)); + map(0x100004, 0x100005).w(this, FUNC(silvmil_state::silvmil_fg_scrolly_w)); + map(0x100006, 0x100007).w(this, FUNC(silvmil_state::silvmil_bg_scrollx_w)); + map(0x100008, 0x100009).w(this, FUNC(silvmil_state::silvmil_bg_scrolly_w)); + map(0x10000e, 0x10000f).w(this, FUNC(silvmil_state::silvmil_tilebank_w)); + + map(0x120000, 0x120fff).ram().w(this, FUNC(silvmil_state::silvmil_fg_videoram_w)).share("fg_videoram"); + map(0x122000, 0x122fff).ram().w(this, FUNC(silvmil_state::silvmil_bg_videoram_w)).share("bg_videoram"); + map(0x200000, 0x2005ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x210000, 0x2107ff).ram().share("spriteram"); + map(0x270000, 0x270001).w(this, FUNC(silvmil_state::silvmil_soundcmd_w)); + map(0x280000, 0x280001).portr("P1_P2"); + map(0x280002, 0x280003).portr("COIN"); + map(0x280004, 0x280005).portr("DSW"); + map(0x300000, 0x30ffff).ram(); +} static INPUT_PORTS_START( silvmil ) @@ -390,14 +391,15 @@ void silvmil_state::machine_reset() } -ADDRESS_MAP_START(silvmil_state::silvmil_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1) - AM_RANGE(0xc006, 0xc006) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc00f, 0xc00f) AM_WRITENOP // ?? -ADDRESS_MAP_END +void silvmil_state::silvmil_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xd000, 0xd7ff).ram(); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc002, 0xc002).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).mirror(1); + map(0xc006, 0xc006).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc00f, 0xc00f).nopw(); // ?? +} MACHINE_CONFIG_START(silvmil_state::silvmil) diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp index 0a1f09262a2..4f8e84503bc 100644 --- a/src/mame/drivers/simpl156.cpp +++ b/src/mame/drivers/simpl156.cpp @@ -221,113 +221,118 @@ WRITE32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_w) /* Memory Map controled by PALs */ /* Joe and Mac Returns */ -ADDRESS_MAP_START(simpl156_state::joemacr_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x107fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram - AM_RANGE(0x110000, 0x111fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) - AM_RANGE(0x120000, 0x120fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x130000, 0x130003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w) - AM_RANGE(0x140000, 0x14001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x150000, 0x151fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x152000, 0x153fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x154000, 0x155fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x160000, 0x161fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) - AM_RANGE(0x164000, 0x165fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) - AM_RANGE(0x170000, 0x170003) AM_READONLY AM_WRITENOP // ? - AM_RANGE(0x180000, 0x180003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x1c0000, 0x1c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit) -ADDRESS_MAP_END +void simpl156_state::joemacr_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x107fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram + map(0x110000, 0x111fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x120000, 0x120fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x130000, 0x130003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x140000, 0x14001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x150000, 0x151fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x152000, 0x153fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x154000, 0x155fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x160000, 0x161fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); + map(0x164000, 0x165fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x170000, 0x170003).readonly().nopw(); // ? + map(0x180000, 0x180000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x1c0000, 0x1c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x200000, 0x200003).portr("IN0"); + map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) +} /* Chain Reaction */ -ADDRESS_MAP_START(simpl156_state::chainrec_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM // rom (32-bit) - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit) - AM_RANGE(0x3c0000, 0x3c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x400000, 0x407fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram? - AM_RANGE(0x410000, 0x411fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) - AM_RANGE(0x420000, 0x420fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x430000, 0x430003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w) - AM_RANGE(0x440000, 0x44001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x450000, 0x451fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x452000, 0x453fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x454000, 0x455fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x460000, 0x461fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) - AM_RANGE(0x464000, 0x465fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) - AM_RANGE(0x470000, 0x470003) AM_READONLY AM_WRITENOP // ?? - AM_RANGE(0x480000, 0x480003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff) -ADDRESS_MAP_END +void simpl156_state::chainrec_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom(); // rom (32-bit) + map(0x200000, 0x200003).portr("IN0"); + map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) + map(0x3c0000, 0x3c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x400000, 0x407fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram? + map(0x410000, 0x411fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x420000, 0x420fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x430000, 0x430003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x440000, 0x44001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x450000, 0x451fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x452000, 0x453fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x454000, 0x455fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x460000, 0x461fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); + map(0x464000, 0x465fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x470000, 0x470003).readonly().nopw(); // ?? + map(0x480000, 0x480000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /* Magical Drop */ -ADDRESS_MAP_START(simpl156_state::magdrop_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit) - AM_RANGE(0x340000, 0x340003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x380000, 0x387fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram? - AM_RANGE(0x390000, 0x391fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) - AM_RANGE(0x3a0000, 0x3a0fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w) - AM_RANGE(0x3c0000, 0x3c001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x3d0000, 0x3d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x3d2000, 0x3d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x3d4000, 0x3d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x3e0000, 0x3e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) - AM_RANGE(0x3e4000, 0x3e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) - AM_RANGE(0x3f0000, 0x3f0003) AM_READONLY AM_WRITENOP //? - AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff) -ADDRESS_MAP_END +void simpl156_state::magdrop_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x200003).portr("IN0"); + map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) + map(0x340000, 0x340000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x380000, 0x387fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram? + map(0x390000, 0x391fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x3a0000, 0x3a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x3b0000, 0x3b0003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x3c0000, 0x3c001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x3d0000, 0x3d1fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x3d2000, 0x3d3fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x3d4000, 0x3d5fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x3e0000, 0x3e1fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); + map(0x3e4000, 0x3e5fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x3f0000, 0x3f0003).readonly().nopw(); //? + map(0x400000, 0x400000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /* Magical Drop Plus 1 */ -ADDRESS_MAP_START(simpl156_state::magdropp_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit) - AM_RANGE(0x4c0000, 0x4c0003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x680000, 0x687fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram? - AM_RANGE(0x690000, 0x691fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) - AM_RANGE(0x6a0000, 0x6a0fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x6b0000, 0x6b0003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w) - AM_RANGE(0x6c0000, 0x6c001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x6d0000, 0x6d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x6d2000, 0x6d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x6d4000, 0x6d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x6e0000, 0x6e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) - AM_RANGE(0x6e4000, 0x6e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) - AM_RANGE(0x6f0000, 0x6f0003) AM_READONLY AM_WRITENOP // ? - AM_RANGE(0x780000, 0x780003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff) -ADDRESS_MAP_END +void simpl156_state::magdropp_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x200003).portr("IN0"); + map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) + map(0x4c0000, 0x4c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x680000, 0x687fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram? + map(0x690000, 0x691fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x6a0000, 0x6a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x6b0000, 0x6b0003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x6c0000, 0x6c001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x6d0000, 0x6d1fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x6d2000, 0x6d3fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x6d4000, 0x6d5fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x6e0000, 0x6e1fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); + map(0x6e4000, 0x6e5fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x6f0000, 0x6f0003).readonly().nopw(); // ? + map(0x780000, 0x780000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /* Mitchell MT5601-0 PCB (prtytime, charlien, osman) */ -ADDRESS_MAP_START(simpl156_state::mitchell156_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("okisfx", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x140000, 0x140003) AM_DEVREADWRITE8("okimusic", okim6295_device, read, write, 0x000000ff) - AM_RANGE(0x180000, 0x187fff) AM_READWRITE(simpl156_mainram_r, simpl156_mainram_w) AM_SHARE("mainram") // main ram - AM_RANGE(0x190000, 0x191fff) AM_READWRITE(simpl156_spriteram_r, simpl156_spriteram_w) - AM_RANGE(0x1a0000, 0x1a0fff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0x1b0000, 0x1b0003) AM_READ_PORT("IN1") AM_WRITE(simpl156_eeprom_w) - AM_RANGE(0x1c0000, 0x1c001f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_dword_r, pf_control_dword_w) - AM_RANGE(0x1d0000, 0x1d1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1d2000, 0x1d3fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_dword_r, pf1_data_dword_w) - AM_RANGE(0x1d4000, 0x1d5fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_dword_r, pf2_data_dword_w) - AM_RANGE(0x1e0000, 0x1e1fff) AM_READWRITE(simpl156_pf1_rowscroll_r, simpl156_pf1_rowscroll_w) - AM_RANGE(0x1e4000, 0x1e5fff) AM_READWRITE(simpl156_pf2_rowscroll_r, simpl156_pf2_rowscroll_w) - AM_RANGE(0x1f0000, 0x1f0003) AM_READONLY AM_WRITENOP // ? - AM_RANGE(0x200000, 0x200003) AM_READ_PORT("IN0") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("systemram") // work ram (32-bit) -ADDRESS_MAP_END +void simpl156_state::mitchell156_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x180000, 0x187fff).rw(this, FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram + map(0x190000, 0x191fff).rw(this, FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x1a0000, 0x1a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0x1b0000, 0x1b0003).portr("IN1").w(this, FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x1c0000, 0x1c001f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); + map(0x1d0000, 0x1d1fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1d2000, 0x1d3fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); + map(0x1d4000, 0x1d5fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); + map(0x1e0000, 0x1e1fff).rw(this, FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); + map(0x1e4000, 0x1e5fff).rw(this, FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x1f0000, 0x1f0003).readonly().nopw(); // ? + map(0x200000, 0x200003).portr("IN0"); + map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) +} static const gfx_layout tile_8x8_layout = diff --git a/src/mame/drivers/simple_st0016.cpp b/src/mame/drivers/simple_st0016.cpp index 6610ee49509..591d2585d7c 100644 --- a/src/mame/drivers/simple_st0016.cpp +++ b/src/mame/drivers/simple_st0016.cpp @@ -38,18 +38,20 @@ void st0016_state::machine_start() m_mainbank->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000); } -ADDRESS_MAP_START(st0016_state::st0016_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xe87f) AM_RAM /* common ram */ - AM_RANGE(0xf000, 0xffff) AM_RAM /* work ram */ -ADDRESS_MAP_END +void st0016_state::st0016_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xe87f).ram(); /* common ram */ + map(0xf000, 0xffff).ram(); /* work ram */ +} -ADDRESS_MAP_START(st0016_state::renju_mem) - AM_IMPORT_FROM( st0016_mem ) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x200000 ) -ADDRESS_MAP_END +void st0016_state::renju_mem(address_map &map) +{ + st0016_mem(map); + map(0x0000, 0x7fff).rom().region("maincpu", 0x200000); +} READ8_MEMBER(st0016_state::mux_r) @@ -87,17 +89,18 @@ WRITE8_MEMBER(st0016_state::st0016_rom_bank_w) // st0016_rom_bank = data; } -ADDRESS_MAP_START(st0016_state::st0016_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P1") AM_WRITE(mux_select_w) - AM_RANGE(0xc1, 0xc1) AM_READ_PORT("P2") AM_WRITENOP - AM_RANGE(0xc2, 0xc2) AM_READ(mux_r) AM_WRITENOP - AM_RANGE(0xc3, 0xc3) AM_READ_PORT("P2") AM_WRITENOP - AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* renju = $40, neratte = 0 */ - AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITENOP /* banking ? ram bank ? shared rambank ? */ - AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */ -ADDRESS_MAP_END +void st0016_state::st0016_io(address_map &map) +{ + map.global_mask(0xff); + map(0xc0, 0xc0).portr("P1").w(this, FUNC(st0016_state::mux_select_w)); + map(0xc1, 0xc1).portr("P2").nopw(); + map(0xc2, 0xc2).r(this, FUNC(st0016_state::mux_r)).nopw(); + map(0xc3, 0xc3).portr("P2").nopw(); + map(0xe0, 0xe0).nopw(); /* renju = $40, neratte = 0 */ + map(0xe1, 0xe1).w(this, FUNC(st0016_state::st0016_rom_bank_w)); + map(0xe6, 0xe6).nopw(); /* banking ? ram bank ? shared rambank ? */ + map(0xe7, 0xe7).nopw(); /* watchdog */ +} /************************************* @@ -138,26 +141,28 @@ WRITE8_MEMBER(st0016_state::latch8_w) machine().scheduler().synchronize(); } -ADDRESS_MAP_START(st0016_state::v810_mem) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM - AM_RANGE(0x80000000, 0x8001ffff) AM_RAM - AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM - AM_RANGE(0x40000000, 0x4000000f) AM_READ(latch32_r) AM_WRITE(latch32_w) - AM_RANGE(0xfff80000, 0xffffffff) AM_ROMBANK("bank2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(st0016_state::st0016_m2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc0, 0xc3) AM_READ(latch8_r) AM_WRITE(latch8_w) - AM_RANGE(0xd0, 0xd0) AM_READ_PORT("P1") AM_WRITE(mux_select_w) - AM_RANGE(0xd1, 0xd1) AM_READ_PORT("P2") AM_WRITENOP - AM_RANGE(0xd2, 0xd2) AM_READ(mux_r) AM_WRITENOP - AM_RANGE(0xd3, 0xd3) AM_READ_PORT("P2") AM_WRITENOP - AM_RANGE(0xe0, 0xe0) AM_WRITENOP - AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITENOP /* banking ? ram bank ? shared rambank ? */ - AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */ -ADDRESS_MAP_END +void st0016_state::v810_mem(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram(); + map(0x80000000, 0x8001ffff).ram(); + map(0xc0000000, 0xc001ffff).ram(); + map(0x40000000, 0x4000000f).r(this, FUNC(st0016_state::latch32_r)).w(this, FUNC(st0016_state::latch32_w)); + map(0xfff80000, 0xffffffff).bankr("bank2"); +} + +void st0016_state::st0016_m2_io(address_map &map) +{ + map.global_mask(0xff); + map(0xc0, 0xc3).r(this, FUNC(st0016_state::latch8_r)).w(this, FUNC(st0016_state::latch8_w)); + map(0xd0, 0xd0).portr("P1").w(this, FUNC(st0016_state::mux_select_w)); + map(0xd1, 0xd1).portr("P2").nopw(); + map(0xd2, 0xd2).r(this, FUNC(st0016_state::mux_r)).nopw(); + map(0xd3, 0xd3).portr("P2").nopw(); + map(0xe0, 0xe0).nopw(); + map(0xe1, 0xe1).w(this, FUNC(st0016_state::st0016_rom_bank_w)); + map(0xe6, 0xe6).nopw(); /* banking ? ram bank ? shared rambank ? */ + map(0xe7, 0xe7).nopw(); /* watchdog */ +} /************************************* * diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp index 138a1f78967..99e338da0ed 100644 --- a/src/mame/drivers/simpsons.cpp +++ b/src/mame/drivers/simpsons.cpp @@ -115,39 +115,42 @@ Notes: ***************************************************************************/ -ADDRESS_MAP_START(simpsons_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0x0000, 0x0fff) AM_DEVICE("bank0000", address_map_bank_device, amap8) - AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2000", address_map_bank_device, amap8) - AM_RANGE(0x1f80, 0x1f80) AM_READ_PORT("COIN") - AM_RANGE(0x1f81, 0x1f81) AM_READ_PORT("TEST") - AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("P1") - AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P2") - AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P3") - AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("P4") - AM_RANGE(0x1fa0, 0x1fa7) AM_DEVWRITE("k053246", k053247_device, k053246_w) - AM_RANGE(0x1fb0, 0x1fbf) AM_DEVWRITE("k053251", k053251_device, write) - AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(simpsons_coin_counter_w) - AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(simpsons_eeprom_w) - AM_RANGE(0x1fc4, 0x1fc4) AM_READ(simpsons_sound_interrupt_r) - AM_RANGE(0x1fc6, 0x1fc7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write) - AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD("k053246", k053247_device, k053246_r) - AM_RANGE(0x1fca, 0x1fca) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(simpsons_state::bank0000_map) - AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(simpsons_state::bank2000_map) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(simpsons_k052109_r, simpsons_k052109_w) - AM_RANGE(0x2000, 0x2fff) AM_READWRITE(simpsons_k053247_r, simpsons_k053247_w) - AM_RANGE(0x3000, 0x3fff) AM_RAM -ADDRESS_MAP_END +void simpsons_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0x0000, 0x0fff).m(m_bank0000, FUNC(address_map_bank_device::amap8)); + map(0x2000, 0x3fff).m(m_bank2000, FUNC(address_map_bank_device::amap8)); + map(0x1f80, 0x1f80).portr("COIN"); + map(0x1f81, 0x1f81).portr("TEST"); + map(0x1f90, 0x1f90).portr("P1"); + map(0x1f91, 0x1f91).portr("P2"); + map(0x1f92, 0x1f92).portr("P3"); + map(0x1f93, 0x1f93).portr("P4"); + map(0x1fa0, 0x1fa7).w(m_k053246, FUNC(k053247_device::k053246_w)); + map(0x1fb0, 0x1fbf).w(m_k053251, FUNC(k053251_device::write)); + map(0x1fc0, 0x1fc0).w(this, FUNC(simpsons_state::simpsons_coin_counter_w)); + map(0x1fc2, 0x1fc2).w(this, FUNC(simpsons_state::simpsons_eeprom_w)); + map(0x1fc4, 0x1fc4).r(this, FUNC(simpsons_state::simpsons_sound_interrupt_r)); + map(0x1fc6, 0x1fc7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); + map(0x1fc8, 0x1fc9).r(m_k053246, FUNC(k053247_device::k053246_r)); + map(0x1fca, 0x1fca).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x4000, 0x5fff).ram(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom().region("maincpu", 0x78000); +} + +void simpsons_state::bank0000_map(address_map &map) +{ + map(0x0000, 0x0fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0x1000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); +} + +void simpsons_state::bank2000_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(this, FUNC(simpsons_state::simpsons_k052109_r), FUNC(simpsons_state::simpsons_k052109_w)); + map(0x2000, 0x2fff).rw(this, FUNC(simpsons_state::simpsons_k053247_r), FUNC(simpsons_state::simpsons_k053247_w)); + map(0x3000, 0x3fff).ram(); +} WRITE8_MEMBER(simpsons_state::z80_bankswitch_w) { @@ -186,15 +189,16 @@ WRITE8_MEMBER(simpsons_state::z80_arm_nmi_w) timer_set(attotime::from_usec(25), TIMER_NMI); /* kludge until the K053260 is emulated correctly */ } -ADDRESS_MAP_START(simpsons_state::z80_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w) - AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) - AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w) -ADDRESS_MAP_END +void simpsons_state::z80_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank2"); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfa00, 0xfa00).w(this, FUNC(simpsons_state::z80_arm_nmi_w)); + map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0xfe00, 0xfe00).w(this, FUNC(simpsons_state::z80_bankswitch_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/sitcom.cpp b/src/mame/drivers/sitcom.cpp index 557d3f0402e..4ecd781b6e9 100644 --- a/src/mame/drivers/sitcom.cpp +++ b/src/mame/drivers/sitcom.cpp @@ -141,25 +141,28 @@ protected: }; -ADDRESS_MAP_START(sitcom_state::sitcom_bank) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("bootstrap", 0) - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sitcom_state::sitcom_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_DEVICE("bank", address_map_bank_device, amap8) - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sitcom_state::sitcom_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x1c) AM_DEVREADWRITE("pia", i8255_device, read, write) - AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x1c) AM_DEVWRITE("ds0", dl1414_device, bus_w) - AM_RANGE(0xe0, 0xe3) AM_MIRROR(0x1c) AM_DEVWRITE("ds1", dl1414_device, bus_w) -ADDRESS_MAP_END +void sitcom_state::sitcom_bank(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom().region("bootstrap", 0); + map(0x8000, 0xffff).ram().share("ram"); +} + +void sitcom_state::sitcom_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).m(m_bank, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xffff).ram().share("ram"); +} + +void sitcom_state::sitcom_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x1c).rw("pia", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc0, 0xc3).mirror(0x1c).w("ds0", FUNC(dl1414_device::bus_w)); + map(0xe0, 0xe3).mirror(0x1c).w("ds1", FUNC(dl1414_device::bus_w)); +} INPUT_PORTS_START( sitcom ) diff --git a/src/mame/drivers/sk1.cpp b/src/mame/drivers/sk1.cpp index be04547e2c7..a5afdd08475 100644 --- a/src/mame/drivers/sk1.cpp +++ b/src/mame/drivers/sk1.cpp @@ -80,11 +80,12 @@ void sk1_state::driver_start() } -ADDRESS_MAP_START(sk1_state::sk1_memory) +void sk1_state::sk1_memory(address_map &map) +{ // chip selects are driven by decoding A13 and A15 with IC3 quad 2-input NOR gate - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("lsi2", 0x0000) - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x4000) AM_RAM -ADDRESS_MAP_END + map(0x0000, 0x7fff).rom().region("lsi2", 0x0000); + map(0x8000, 0x83ff).mirror(0x4000).ram(); +} MACHINE_CONFIG_START(sk1_state::sk1) diff --git a/src/mame/drivers/skeetsht.cpp b/src/mame/drivers/skeetsht.cpp index 94cf69c4cd2..b6bb4c1b0af 100644 --- a/src/mame/drivers/skeetsht.cpp +++ b/src/mame/drivers/skeetsht.cpp @@ -188,16 +188,18 @@ WRITE8_MEMBER(skeetsht_state::ay8910_w) * *************************************/ -ADDRESS_MAP_START(skeetsht_state::hc11_pgm_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("68hc11", 0) - AM_RANGE(0x1800, 0x1800) AM_WRITE(ay8910_w) - AM_RANGE(0x2800, 0x2807) AM_READWRITE(tms_r, tms_w) - AM_RANGE(0xb600, 0xbdff) AM_RAM //internal EEPROM -ADDRESS_MAP_END +void skeetsht_state::hc11_pgm_map(address_map &map) +{ + map(0x0000, 0xffff).rom().region("68hc11", 0); + map(0x1800, 0x1800).w(this, FUNC(skeetsht_state::ay8910_w)); + map(0x2800, 0x2807).rw(this, FUNC(skeetsht_state::tms_r), FUNC(skeetsht_state::tms_w)); + map(0xb600, 0xbdff).ram(); //internal EEPROM +} -ADDRESS_MAP_START(skeetsht_state::hc11_io_map) - AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE(hc11_porta_r, hc11_porta_w) -ADDRESS_MAP_END +void skeetsht_state::hc11_io_map(address_map &map) +{ + map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).rw(this, FUNC(skeetsht_state::hc11_porta_r), FUNC(skeetsht_state::hc11_porta_w)); +} /************************************* @@ -206,12 +208,13 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(skeetsht_state::tms_program_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("tms_vram") - AM_RANGE(0x00440000, 0x004fffff) AM_READWRITE(ramdac_r, ramdac_w) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xff800000, 0xffbfffff) AM_ROM AM_MIRROR(0x00400000) AM_REGION("tms", 0) -ADDRESS_MAP_END +void skeetsht_state::tms_program_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("tms_vram"); + map(0x00440000, 0x004fffff).rw(this, FUNC(skeetsht_state::ramdac_r), FUNC(skeetsht_state::ramdac_w)); + map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xff800000, 0xffbfffff).rom().mirror(0x00400000).region("tms", 0); +} /************************************* diff --git a/src/mame/drivers/skimaxx.cpp b/src/mame/drivers/skimaxx.cpp index 40ee6ad62c0..af758ee0551 100644 --- a/src/mame/drivers/skimaxx.cpp +++ b/src/mame/drivers/skimaxx.cpp @@ -309,31 +309,32 @@ READ32_MEMBER(skimaxx_state::skimaxx_analog_r) * *************************************/ -ADDRESS_MAP_START(skimaxx_state::m68030_1_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x10000000, 0x10000003) AM_WRITE(skimaxx_sub_ctrl_w ) - AM_RANGE(0x10100000, 0x1010000f) AM_DEVREADWRITE16("tms", tms34010_device, host_r, host_w, 0x0000ffff) +void skimaxx_state::m68030_1_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom(); + map(0x10000000, 0x10000003).w(this, FUNC(skimaxx_state::skimaxx_sub_ctrl_w)); + map(0x10100000, 0x1010000f).rw(m_tms, FUNC(tms34010_device::host_r), FUNC(tms34010_device::host_w)).umask32(0x0000ffff); // AM_RANGE(0x10180000, 0x10187fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x10180000, 0x1018ffff) AM_RAM AM_SHARE("share1") // above 10188000 accessed at level end (game bug?) - AM_RANGE(0x20000000, 0x20000003) AM_READNOP // watchdog_r? + map(0x10180000, 0x1018ffff).ram().share("share1"); // above 10188000 accessed at level end (game bug?) + map(0x20000000, 0x20000003).nopr(); // watchdog_r? - AM_RANGE(0x20000010, 0x20000013) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // left - AM_RANGE(0x20000014, 0x20000017) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) // left - AM_RANGE(0x20000018, 0x2000001b) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x00ff) // right - AM_RANGE(0x2000001c, 0x2000001f) AM_DEVREADWRITE8("oki4", okim6295_device, read, write, 0x00ff) // right + map(0x20000013, 0x20000013).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // left + map(0x20000017, 0x20000017).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // left + map(0x2000001b, 0x2000001b).rw("oki3", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // right + map(0x2000001f, 0x2000001f).rw("oki4", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // right - AM_RANGE(0x20000020, 0x20000023) AM_READ(skimaxx_unk1_r ) // units linking? - AM_RANGE(0x20000024, 0x20000027) AM_WRITE(skimaxx_unk1_w ) // "" + map(0x20000020, 0x20000023).r(this, FUNC(skimaxx_state::skimaxx_unk1_r)); // units linking? + map(0x20000024, 0x20000027).w(this, FUNC(skimaxx_state::skimaxx_unk1_w)); // "" - AM_RANGE(0x20000040, 0x20000043) AM_RAM // write - AM_RANGE(0x20000044, 0x20000047) AM_READ_PORT( "DSW" ) - AM_RANGE(0x20000048, 0x2000004b) AM_READ_PORT( "COIN" ) - AM_RANGE(0x2000004c, 0x2000004f) AM_READ(unk_r) // bit 7, bit 0 + map(0x20000040, 0x20000043).ram(); // write + map(0x20000044, 0x20000047).portr("DSW"); + map(0x20000048, 0x2000004b).portr("COIN"); + map(0x2000004c, 0x2000004f).r(this, FUNC(skimaxx_state::unk_r)); // bit 7, bit 0 - AM_RANGE(0x20000050, 0x20000057) AM_READ(skimaxx_analog_r ) AM_WRITENOP // read (0-1f), write motor? + map(0x20000050, 0x20000057).r(this, FUNC(skimaxx_state::skimaxx_analog_r)).nopw(); // read (0-1f), write motor? - AM_RANGE(0xfffc0000, 0xfffdffff) AM_RAM AM_MIRROR(0x00020000) -ADDRESS_MAP_END + map(0xfffc0000, 0xfffdffff).ram().mirror(0x00020000); +} /************************************* @@ -342,22 +343,23 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(skimaxx_state::m68030_2_map) - AM_RANGE(0x00000000, 0x003fffff) AM_ROM +void skimaxx_state::m68030_2_map(address_map &map) +{ + map(0x00000000, 0x003fffff).rom(); - AM_RANGE(0x20000000, 0x2007ffff) AM_READ(skimaxx_blitter_r ) // do blit - AM_RANGE(0x30000000, 0x3000000f) AM_WRITE(skimaxx_blitter_w ) AM_SHARE("blitter_regs") + map(0x20000000, 0x2007ffff).r(this, FUNC(skimaxx_state::skimaxx_blitter_r)); // do blit + map(0x30000000, 0x3000000f).w(this, FUNC(skimaxx_state::skimaxx_blitter_w)).share("blitter_regs"); - AM_RANGE(0x40000000, 0x40000003) AM_WRITE(skimaxx_fpga_ctrl_w ) AM_SHARE("fpga_ctrl") + map(0x40000000, 0x40000003).w(this, FUNC(skimaxx_state::skimaxx_fpga_ctrl_w)).share("fpga_ctrl"); - AM_RANGE(0x50000000, 0x5007ffff) AM_RAMBANK("bank1") // background ram allocated here at video_start (skimaxx_bg_buffer_back/front) + map(0x50000000, 0x5007ffff).bankrw("bank1"); // background ram allocated here at video_start (skimaxx_bg_buffer_back/front) // AM_RANGE(0xfffc0000, 0xfffc7fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xfffc0000, 0xfffcffff) AM_RAM AM_SHARE("share1") + map(0xfffc0000, 0xfffcffff).ram().share("share1"); // AM_RANGE(0xfffe0000, 0xffffffff) AM_RAM // I think this is banked with the shared RAM? (see CPU sync routines) - AM_RANGE(0xfffe0000, 0xfffeffff) AM_RAM AM_SHARE("share1") // HACK - AM_RANGE(0xfffe0010, 0xfffeffff) AM_RAM // HACK - AM_RANGE(0xffff0000, 0xffffffff) AM_RAM -ADDRESS_MAP_END + map(0xfffe0000, 0xfffeffff).ram().share("share1"); // HACK + map(0xfffe0010, 0xfffeffff).ram(); // HACK + map(0xffff0000, 0xffffffff).ram(); +} /************************************* @@ -366,16 +368,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(skimaxx_state::tms_program_map) - AM_RANGE(0x00000000, 0x0003ffff) AM_RAM - AM_RANGE(0x00050000, 0x0005ffff) AM_RAM - AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_SHARE("fg_buffer") - AM_RANGE(0x02000000, 0x0200000f) AM_RAM - AM_RANGE(0x02100000, 0x0210000f) AM_RAM - AM_RANGE(0x04000000, 0x047fffff) AM_ROM AM_REGION("tmsgfx", 0) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("tms", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("tms", 0) -ADDRESS_MAP_END +void skimaxx_state::tms_program_map(address_map &map) +{ + map(0x00000000, 0x0003ffff).ram(); + map(0x00050000, 0x0005ffff).ram(); + map(0x00220000, 0x003fffff).ram().share("fg_buffer"); + map(0x02000000, 0x0200000f).ram(); + map(0x02100000, 0x0210000f).ram(); + map(0x04000000, 0x047fffff).rom().region("tmsgfx", 0); + map(0xc0000000, 0xc00001ff).rw(m_tms, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xff800000, 0xffffffff).rom().region("tms", 0); +} /************************************* diff --git a/src/mame/drivers/skullxbo.cpp b/src/mame/drivers/skullxbo.cpp index 09f25f2e513..61ae035186b 100644 --- a/src/mame/drivers/skullxbo.cpp +++ b/src/mame/drivers/skullxbo.cpp @@ -99,36 +99,37 @@ WRITE16_MEMBER(skullxbo_state::skullxbo_mobwr_w) * *************************************/ -ADDRESS_MAP_START(skullxbo_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xff0000, 0xff07ff) AM_WRITE(skullxbo_mobmsb_w) - AM_RANGE(0xff0800, 0xff0bff) AM_WRITE(skullxbo_halt_until_hblank_0_w) - AM_RANGE(0xff0c00, 0xff0fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xff1000, 0xff13ff) AM_WRITE(video_int_ack_w) - AM_RANGE(0xff1400, 0xff17ff) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff) - AM_RANGE(0xff1800, 0xff1bff) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0xff1c00, 0xff1c7f) AM_WRITE(playfield_latch_w) - AM_RANGE(0xff1c80, 0xff1cff) AM_WRITE(skullxbo_xscroll_w) AM_SHARE("xscroll") - AM_RANGE(0xff1d00, 0xff1d7f) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0xff1d80, 0xff1dff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xff1e00, 0xff1e7f) AM_WRITE(playfield_latch_w) - AM_RANGE(0xff1e80, 0xff1eff) AM_WRITE(skullxbo_xscroll_w) - AM_RANGE(0xff1f00, 0xff1f7f) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0xff1f80, 0xff1fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff4000, 0xff47ff) AM_WRITE(skullxbo_yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0xff4800, 0xff4fff) AM_WRITE(skullxbo_mobwr_w) - AM_RANGE(0xff5000, 0xff5001) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff) - AM_RANGE(0xff5800, 0xff5801) AM_READ_PORT("FF5800") - AM_RANGE(0xff5802, 0xff5803) AM_READ_PORT("FF5802") - AM_RANGE(0xff6000, 0xff6fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xff8000, 0xff9fff) AM_RAM_WRITE(playfield_latched_w) AM_SHARE("playfield") - AM_RANGE(0xffa000, 0xffbfff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16_ext) AM_SHARE("playfield_ext") - AM_RANGE(0xffc000, 0xffcf7f) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xffcf80, 0xffcfff) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xffe000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void skullxbo_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0xff0000, 0xff07ff).w(this, FUNC(skullxbo_state::skullxbo_mobmsb_w)); + map(0xff0800, 0xff0bff).w(this, FUNC(skullxbo_state::skullxbo_halt_until_hblank_0_w)); + map(0xff0c00, 0xff0fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xff1000, 0xff13ff).w(this, FUNC(skullxbo_state::video_int_ack_w)); + map(0xff1400, 0xff17ff).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w)).umask16(0x00ff); + map(0xff1800, 0xff1bff).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0xff1c00, 0xff1c7f).w(this, FUNC(skullxbo_state::playfield_latch_w)); + map(0xff1c80, 0xff1cff).w(this, FUNC(skullxbo_state::skullxbo_xscroll_w)).share("xscroll"); + map(0xff1d00, 0xff1d7f).w(this, FUNC(skullxbo_state::scanline_int_ack_w)); + map(0xff1d80, 0xff1dff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xff1e00, 0xff1e7f).w(this, FUNC(skullxbo_state::playfield_latch_w)); + map(0xff1e80, 0xff1eff).w(this, FUNC(skullxbo_state::skullxbo_xscroll_w)); + map(0xff1f00, 0xff1f7f).w(this, FUNC(skullxbo_state::scanline_int_ack_w)); + map(0xff1f80, 0xff1fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xff2000, 0xff2fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xff4000, 0xff47ff).w(this, FUNC(skullxbo_state::skullxbo_yscroll_w)).share("yscroll"); + map(0xff4800, 0xff4fff).w(this, FUNC(skullxbo_state::skullxbo_mobwr_w)); + map(0xff5001, 0xff5001).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r)); + map(0xff5800, 0xff5801).portr("FF5800"); + map(0xff5802, 0xff5803).portr("FF5802"); + map(0xff6000, 0xff6fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xff8000, 0xff9fff).ram().w(this, FUNC(skullxbo_state::playfield_latched_w)).share("playfield"); + map(0xffa000, 0xffbfff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16_ext)).share("playfield_ext"); + map(0xffc000, 0xffcf7f).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0xffcf80, 0xffcfff).ram().share("mob:slip"); + map(0xffd000, 0xffdfff).ram().share("mob"); + map(0xffe000, 0xffffff).ram(); +} diff --git a/src/mame/drivers/skyarmy.cpp b/src/mame/drivers/skyarmy.cpp index 13d30a14387..4ec8c11f20c 100644 --- a/src/mame/drivers/skyarmy.cpp +++ b/src/mame/drivers/skyarmy.cpp @@ -210,27 +210,29 @@ WRITE_LINE_MEMBER(skyarmy_state::nmi_enable_w) } -ADDRESS_MAP_START(skyarmy_state::skyarmy_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") /* Color RAM */ - AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram") /* Sprites */ - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scrollram") /* Scroll RAM */ - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P1") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2") - AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("latch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(skyarmy_state::skyarmy_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay0", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ay0", ay8910_device, data_r) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_DEVREAD("ay1", ay8910_device, data_r) -ADDRESS_MAP_END +void skyarmy_state::skyarmy_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8fff).ram().w(this, FUNC(skyarmy_state::videoram_w)).share("videoram"); /* Video RAM */ + map(0x9000, 0x93ff).ram().w(this, FUNC(skyarmy_state::colorram_w)).share("colorram"); /* Color RAM */ + map(0x9800, 0x983f).ram().share("spriteram"); /* Sprites */ + map(0x9840, 0x985f).ram().share("scrollram"); /* Scroll RAM */ + map(0xa000, 0xa000).portr("DSW"); + map(0xa001, 0xa001).portr("P1"); + map(0xa002, 0xa002).portr("P2"); + map(0xa003, 0xa003).portr("SYSTEM"); + map(0xa000, 0xa007).w("latch", FUNC(ls259_device::write_d0)); +} + +void skyarmy_state::skyarmy_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay0", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("ay0", FUNC(ay8910_device::data_r)); + map(0x04, 0x05).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r("ay1", FUNC(ay8910_device::data_r)); +} /* verified from Z80 code */ diff --git a/src/mame/drivers/skydiver.cpp b/src/mame/drivers/skydiver.cpp index e78e160ec95..b29bf2ee3ff 100644 --- a/src/mame/drivers/skydiver.cpp +++ b/src/mame/drivers/skydiver.cpp @@ -172,33 +172,34 @@ INTERRUPT_GEN_MEMBER(skydiver_state::interrupt) * *************************************/ -ADDRESS_MAP_START(skydiver_state::skydiver_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x4300) AM_READWRITE(wram_r, wram_w) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x4000) AM_RAM /* RAM B1 */ - AM_RANGE(0x0400, 0x07ff) AM_MIRROR(0x4000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */ - AM_RANGE(0x0800, 0x080f) AM_MIRROR(0x47f0) AM_DEVWRITE("latch1", f9334_device, write_a0) - AM_RANGE(0x1000, 0x100f) AM_MIRROR(0x47f0) AM_DEVWRITE("latch2", f9334_device, write_a0) - AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x47e0) AM_READ_PORT("IN0") - AM_RANGE(0x1801, 0x1801) AM_MIRROR(0x47e0) AM_READ_PORT("IN1") - AM_RANGE(0x1802, 0x1802) AM_MIRROR(0x47e0) AM_READ_PORT("IN2") - AM_RANGE(0x1803, 0x1803) AM_MIRROR(0x47e0) AM_READ_PORT("IN3") - AM_RANGE(0x1804, 0x1804) AM_MIRROR(0x47e0) AM_READ_PORT("IN4") - AM_RANGE(0x1805, 0x1805) AM_MIRROR(0x47e0) AM_READ_PORT("IN5") - AM_RANGE(0x1806, 0x1806) AM_MIRROR(0x47e0) AM_READ_PORT("IN6") - AM_RANGE(0x1807, 0x1807) AM_MIRROR(0x47e0) AM_READ_PORT("IN7") - AM_RANGE(0x1808, 0x1808) AM_MIRROR(0x47e4) AM_READ_PORT("IN8") - AM_RANGE(0x1809, 0x1809) AM_MIRROR(0x47e4) AM_READ_PORT("IN9") - AM_RANGE(0x180a, 0x180a) AM_MIRROR(0x47e4) AM_READ_PORT("IN10") - AM_RANGE(0x180b, 0x180b) AM_MIRROR(0x47e4) AM_READ_PORT("IN11") - AM_RANGE(0x1810, 0x1810) AM_MIRROR(0x47e4) AM_READ_PORT("IN12") - AM_RANGE(0x1811, 0x1811) AM_MIRROR(0x47e4) AM_READ_PORT("IN13") - AM_RANGE(0x2000, 0x201f) AM_MIRROR(0x47e0) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(latch3_watchdog_w) - AM_RANGE(0x2800, 0x2fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x3800, 0x3fff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_ROM -ADDRESS_MAP_END +void skydiver_state::skydiver_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x007f).mirror(0x4300).rw(this, FUNC(skydiver_state::wram_r), FUNC(skydiver_state::wram_w)); + map(0x0080, 0x00ff).mirror(0x4000).ram(); /* RAM B1 */ + map(0x0400, 0x07ff).mirror(0x4000).ram().w(this, FUNC(skydiver_state::videoram_w)).share("videoram"); /* RAMs K1,M1,P1,J1,N1,K/L1,L1,H/J1 */ + map(0x0800, 0x080f).mirror(0x47f0).w("latch1", FUNC(f9334_device::write_a0)); + map(0x1000, 0x100f).mirror(0x47f0).w("latch2", FUNC(f9334_device::write_a0)); + map(0x1800, 0x1800).mirror(0x47e0).portr("IN0"); + map(0x1801, 0x1801).mirror(0x47e0).portr("IN1"); + map(0x1802, 0x1802).mirror(0x47e0).portr("IN2"); + map(0x1803, 0x1803).mirror(0x47e0).portr("IN3"); + map(0x1804, 0x1804).mirror(0x47e0).portr("IN4"); + map(0x1805, 0x1805).mirror(0x47e0).portr("IN5"); + map(0x1806, 0x1806).mirror(0x47e0).portr("IN6"); + map(0x1807, 0x1807).mirror(0x47e0).portr("IN7"); + map(0x1808, 0x1808).mirror(0x47e4).portr("IN8"); + map(0x1809, 0x1809).mirror(0x47e4).portr("IN9"); + map(0x180a, 0x180a).mirror(0x47e4).portr("IN10"); + map(0x180b, 0x180b).mirror(0x47e4).portr("IN11"); + map(0x1810, 0x1810).mirror(0x47e4).portr("IN12"); + map(0x1811, 0x1811).mirror(0x47e4).portr("IN13"); + map(0x2000, 0x201f).mirror(0x47e0).r(m_watchdog, FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(skydiver_state::latch3_watchdog_w)); + map(0x2800, 0x2fff).mirror(0x4000).rom(); + map(0x3000, 0x37ff).mirror(0x4000).rom(); + map(0x3800, 0x3fff).rom(); + map(0x7800, 0x7fff).rom(); +} diff --git a/src/mame/drivers/skyfox.cpp b/src/mame/drivers/skyfox.cpp index 9e21acfa4a8..5d68ab440fb 100644 --- a/src/mame/drivers/skyfox.cpp +++ b/src/mame/drivers/skyfox.cpp @@ -50,17 +50,18 @@ WRITE8_MEMBER(skyfox_state::skyfox_vregs_w) } } -ADDRESS_MAP_START(skyfox_state::skyfox_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd400, 0xdfff) AM_RAM // ? - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("INPUTS") - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW0") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW1") - AM_RANGE(0xe008, 0xe00f) AM_WRITE(skyfox_vregs_w) - AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSW2") -ADDRESS_MAP_END +void skyfox_state::skyfox_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd3ff).ram().share("spriteram"); + map(0xd400, 0xdfff).ram(); // ? + map(0xe000, 0xe000).portr("INPUTS"); + map(0xe001, 0xe001).portr("DSW0"); + map(0xe002, 0xe002).portr("DSW1"); + map(0xe008, 0xe00f).w(this, FUNC(skyfox_state::skyfox_vregs_w)); + map(0xf001, 0xf001).portr("DSW2"); +} /*************************************************************************** @@ -69,15 +70,16 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(skyfox_state::skyfox_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM +void skyfox_state::skyfox_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); // AM_RANGE(0x9000, 0x9001) AM_WRITENOP // ?? - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) + map(0xa000, 0xa001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); // AM_RANGE(0xb000, 0xb001) AM_WRITENOP // ?? - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0xc000, 0xc001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*************************************************************************** diff --git a/src/mame/drivers/skykid.cpp b/src/mame/drivers/skykid.cpp index 816c5e7292f..bd7d0f4a7a3 100644 --- a/src/mame/drivers/skykid.cpp +++ b/src/mame/drivers/skykid.cpp @@ -19,7 +19,6 @@ Notes: #include "includes/skykid.h" #include "cpu/m6809/m6809.h" -#include "cpu/m6800/m6801.h" #include "machine/watchdog.h" #include "sound/namco.h" #include "screen.h" @@ -104,32 +103,34 @@ void skykid_state::machine_start() -ADDRESS_MAP_START(skykid_state::skykid_map) - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0x2000, 0x2fff) AM_READWRITE(skykid_videoram_r,skykid_videoram_w) AM_SHARE("videoram")/* Video RAM (background) */ - AM_RANGE(0x4000, 0x47ff) AM_READWRITE(skykid_textram_r,skykid_textram_w) AM_SHARE("textram") /* video RAM (text layer) */ - AM_RANGE(0x4800, 0x5fff) AM_RAM AM_SHARE("spriteram") /* RAM + Sprite RAM */ - AM_RANGE(0x6000, 0x60ff) AM_WRITE(skykid_scroll_y_w) /* Y scroll register map */ - AM_RANGE(0x6200, 0x63ff) AM_WRITE(skykid_scroll_x_w) /* X scroll register map */ - AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ - AM_RANGE(0x7000, 0x7fff) AM_WRITE(skykid_irq_1_ctrl_w) /* IRQ control */ - AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ - AM_RANGE(0x8000, 0x8fff) AM_WRITE(skykid_subreset_w) /* MCU control */ - AM_RANGE(0x9000, 0x9fff) AM_WRITE(skykid_bankswitch_w) /* Bankswitch control */ - AM_RANGE(0xa000, 0xa001) AM_WRITE(skykid_flipscreen_priority_w) /* flip screen & priority */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(skykid_state::mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ - AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog? */ - AM_RANGE(0x4000, 0x7fff) AM_WRITE(skykid_irq_2_ctrl_w) - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void skykid_state::skykid_map(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bank1"); /* banked ROM */ + map(0x2000, 0x2fff).rw(this, FUNC(skykid_state::skykid_videoram_r), FUNC(skykid_state::skykid_videoram_w)).share("videoram");/* Video RAM (background) */ + map(0x4000, 0x47ff).rw(this, FUNC(skykid_state::skykid_textram_r), FUNC(skykid_state::skykid_textram_w)).share("textram"); /* video RAM (text layer) */ + map(0x4800, 0x5fff).ram().share("spriteram"); /* RAM + Sprite RAM */ + map(0x6000, 0x60ff).w(this, FUNC(skykid_state::skykid_scroll_y_w)); /* Y scroll register map */ + map(0x6200, 0x63ff).w(this, FUNC(skykid_state::skykid_scroll_x_w)); /* X scroll register map */ + map(0x6800, 0x6bff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ + map(0x7000, 0x7fff).w(this, FUNC(skykid_state::skykid_irq_1_ctrl_w)); /* IRQ control */ + map(0x7800, 0x7fff).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0xffff).rom(); /* ROM */ + map(0x8000, 0x8fff).w(this, FUNC(skykid_state::skykid_subreset_w)); /* MCU control */ + map(0x9000, 0x9fff).w(this, FUNC(skykid_state::skykid_bankswitch_w)); /* Bankswitch control */ + map(0xa000, 0xa001).w(this, FUNC(skykid_state::skykid_flipscreen_priority_w)); /* flip screen & priority */ +} + +void skykid_state::mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); /* PSG device, shared RAM */ + map(0x2000, 0x3fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog? */ + map(0x4000, 0x7fff).w(this, FUNC(skykid_state::skykid_irq_2_ctrl_w)); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xf000, 0xffff).rom(); +} READ8_MEMBER(skykid_state::readFF) @@ -137,12 +138,13 @@ READ8_MEMBER(skykid_state::readFF) return 0xff; } -ADDRESS_MAP_START(skykid_state::mcu_port_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ(inputport_r) /* input ports read */ - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITE(inputport_select_w) /* input port select */ - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READ(readFF) /* leds won't work otherwise */ - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITE(skykid_led_w) /* lamps */ -ADDRESS_MAP_END +void skykid_state::mcu_port_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).r(this, FUNC(skykid_state::inputport_r)); /* input ports read */ + map(M6801_PORT1, M6801_PORT1).w(this, FUNC(skykid_state::inputport_select_w)); /* input port select */ + map(M6801_PORT2, M6801_PORT2).r(this, FUNC(skykid_state::readFF)); /* leds won't work otherwise */ + map(M6801_PORT2, M6801_PORT2).w(this, FUNC(skykid_state::skykid_led_w)); /* lamps */ +} diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp index 331e23b11ac..bc6bd8c6963 100644 --- a/src/mame/drivers/skylncr.cpp +++ b/src/mame/drivers/skylncr.cpp @@ -455,107 +455,113 @@ READ8_MEMBER(skylncr_state::bdream97_opcode_r) * Memory Map * **************************************/ -ADDRESS_MAP_START(skylncr_state::mem_map_skylncr) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skylncr_videoram_w ) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(skylncr_colorram_w ) AM_SHARE("colorram") - - AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(reeltiles_1_w ) AM_SHARE("reeltiles_1_ram") - AM_RANGE(0x9a00, 0x9bff) AM_RAM_WRITE(reeltiles_2_w ) AM_SHARE("reeltiles_2_ram") - AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(reeltiles_3_w ) AM_SHARE("reeltiles_3_ram") - AM_RANGE(0x9e00, 0x9fff) AM_RAM_WRITE(reeltiles_4_w ) AM_SHARE("reeltiles_4_ram") - AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(reeltileshigh_1_w ) AM_SHARE("rthigh_1_ram") - AM_RANGE(0xa200, 0xa3ff) AM_RAM_WRITE(reeltileshigh_2_w ) AM_SHARE("rthigh_2_ram") - AM_RANGE(0xa400, 0xa5ff) AM_RAM_WRITE(reeltileshigh_3_w ) AM_SHARE("rthigh_3_ram") - AM_RANGE(0xa600, 0xa7ff) AM_RAM_WRITE(reeltileshigh_4_w ) AM_SHARE("rthigh_4_ram") - - AM_RANGE(0xaa55, 0xaa55) AM_READ(ret_ff ) - - AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE(reelscroll1_w) AM_SHARE("reelscroll1") - AM_RANGE(0xb040, 0xb07f) AM_RAM_WRITE(reelscroll1_w) - AM_RANGE(0xb080, 0xb0bf) AM_RAM_WRITE(reelscroll1_w) - AM_RANGE(0xb0c0, 0xb0ff) AM_RAM_WRITE(reelscroll1_w) - AM_RANGE(0xb100, 0xb13f) AM_RAM_WRITE(reelscroll1_w) - AM_RANGE(0xb140, 0xb17f) AM_RAM_WRITE(reelscroll1_w) - AM_RANGE(0xb180, 0xb1bf) AM_RAM_WRITE(reelscroll1_w) - AM_RANGE(0xb1c0, 0xb1ff) AM_RAM_WRITE(reelscroll1_w) - - AM_RANGE(0xb200, 0xb23f) AM_RAM_WRITE(reelscroll2_w) AM_SHARE("reelscroll2") - AM_RANGE(0xb240, 0xb27f) AM_RAM_WRITE(reelscroll2_w) - AM_RANGE(0xb280, 0xb2bf) AM_RAM_WRITE(reelscroll2_w) - AM_RANGE(0xb2c0, 0xb2ff) AM_RAM_WRITE(reelscroll2_w) - AM_RANGE(0xb300, 0xb33f) AM_RAM_WRITE(reelscroll2_w) - AM_RANGE(0xb340, 0xb37f) AM_RAM_WRITE(reelscroll2_w) - AM_RANGE(0xb380, 0xb3bf) AM_RAM_WRITE(reelscroll2_w) - AM_RANGE(0xb3c0, 0xb3ff) AM_RAM_WRITE(reelscroll2_w) - - AM_RANGE(0xb400, 0xb43f) AM_RAM_WRITE(reelscroll3_w) AM_SHARE("reelscroll3") - AM_RANGE(0xb440, 0xb47f) AM_RAM_WRITE(reelscroll3_w) - AM_RANGE(0xb480, 0xb4bf) AM_RAM_WRITE(reelscroll3_w) - AM_RANGE(0xb4c0, 0xb4ff) AM_RAM_WRITE(reelscroll3_w) - AM_RANGE(0xb500, 0xb53f) AM_RAM_WRITE(reelscroll3_w) - AM_RANGE(0xb540, 0xb57f) AM_RAM_WRITE(reelscroll3_w) - AM_RANGE(0xb580, 0xb5bf) AM_RAM_WRITE(reelscroll3_w) - AM_RANGE(0xb5c0, 0xb5ff) AM_RAM_WRITE(reelscroll3_w) - - AM_RANGE(0xb600, 0xb63f) AM_RAM_WRITE(reelscroll4_w) AM_SHARE("reelscroll4") - AM_RANGE(0xb640, 0xb67f) AM_RAM_WRITE(reelscroll4_w) - AM_RANGE(0xb680, 0xb6bf) AM_RAM_WRITE(reelscroll4_w) - AM_RANGE(0xb6c0, 0xb6ff) AM_RAM_WRITE(reelscroll4_w) - AM_RANGE(0xb700, 0xb73f) AM_RAM_WRITE(reelscroll4_w) - AM_RANGE(0xb740, 0xb77f) AM_RAM_WRITE(reelscroll4_w) - AM_RANGE(0xb780, 0xb7bf) AM_RAM_WRITE(reelscroll4_w) - AM_RANGE(0xb7c0, 0xb7ff) AM_RAM_WRITE(reelscroll4_w) - - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(skylncr_state::io_map_skylncr) - ADDRESS_MAP_GLOBAL_MASK(0xff) - - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ - - AM_RANGE(0x20, 0x20) AM_WRITE(skylncr_coin_w) - - AM_RANGE(0x30, 0x31) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x31, 0x31) AM_DEVREAD("aysnd", ay8910_device, data_r) - - AM_RANGE(0x40, 0x40) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0x41, 0x41) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE(0x42, 0x42) AM_DEVWRITE("ramdac", ramdac_device, mask_w) - - AM_RANGE(0x50, 0x50) AM_DEVWRITE("ramdac2", ramdac_device, index_w) - AM_RANGE(0x51, 0x51) AM_DEVWRITE("ramdac2", ramdac_device, pal_w) - AM_RANGE(0x52, 0x52) AM_DEVWRITE("ramdac2", ramdac_device, mask_w) - - AM_RANGE(0x70, 0x70) AM_WRITE(skylncr_nmi_enable_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(skylncr_state::io_map_mbutrfly) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_IMPORT_FROM(io_map_skylncr) - AM_RANGE(0x60, 0x60) AM_WRITE(mbutrfly_prot_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(skylncr_state::bdream97_opcode_map) - AM_RANGE(0x0000, 0xffff) AM_READ(bdream97_opcode_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(skylncr_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(skylncr_state::ramdac2_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac2", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void skylncr_state::mem_map_skylncr(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("nvram"); + + map(0x8800, 0x8fff).ram().w(this, FUNC(skylncr_state::skylncr_videoram_w)).share("videoram"); + map(0x9000, 0x97ff).ram().w(this, FUNC(skylncr_state::skylncr_colorram_w)).share("colorram"); + + map(0x9800, 0x99ff).ram().w(this, FUNC(skylncr_state::reeltiles_1_w)).share("reeltiles_1_ram"); + map(0x9a00, 0x9bff).ram().w(this, FUNC(skylncr_state::reeltiles_2_w)).share("reeltiles_2_ram"); + map(0x9c00, 0x9dff).ram().w(this, FUNC(skylncr_state::reeltiles_3_w)).share("reeltiles_3_ram"); + map(0x9e00, 0x9fff).ram().w(this, FUNC(skylncr_state::reeltiles_4_w)).share("reeltiles_4_ram"); + map(0xa000, 0xa1ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_1_w)).share("rthigh_1_ram"); + map(0xa200, 0xa3ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_2_w)).share("rthigh_2_ram"); + map(0xa400, 0xa5ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_3_w)).share("rthigh_3_ram"); + map(0xa600, 0xa7ff).ram().w(this, FUNC(skylncr_state::reeltileshigh_4_w)).share("rthigh_4_ram"); + + map(0xaa55, 0xaa55).r(this, FUNC(skylncr_state::ret_ff)); + + map(0xb000, 0xb03f).ram().w(this, FUNC(skylncr_state::reelscroll1_w)).share("reelscroll1"); + map(0xb040, 0xb07f).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + map(0xb080, 0xb0bf).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + map(0xb0c0, 0xb0ff).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + map(0xb100, 0xb13f).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + map(0xb140, 0xb17f).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + map(0xb180, 0xb1bf).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + map(0xb1c0, 0xb1ff).ram().w(this, FUNC(skylncr_state::reelscroll1_w)); + + map(0xb200, 0xb23f).ram().w(this, FUNC(skylncr_state::reelscroll2_w)).share("reelscroll2"); + map(0xb240, 0xb27f).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + map(0xb280, 0xb2bf).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + map(0xb2c0, 0xb2ff).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + map(0xb300, 0xb33f).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + map(0xb340, 0xb37f).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + map(0xb380, 0xb3bf).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + map(0xb3c0, 0xb3ff).ram().w(this, FUNC(skylncr_state::reelscroll2_w)); + + map(0xb400, 0xb43f).ram().w(this, FUNC(skylncr_state::reelscroll3_w)).share("reelscroll3"); + map(0xb440, 0xb47f).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + map(0xb480, 0xb4bf).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + map(0xb4c0, 0xb4ff).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + map(0xb500, 0xb53f).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + map(0xb540, 0xb57f).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + map(0xb580, 0xb5bf).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + map(0xb5c0, 0xb5ff).ram().w(this, FUNC(skylncr_state::reelscroll3_w)); + + map(0xb600, 0xb63f).ram().w(this, FUNC(skylncr_state::reelscroll4_w)).share("reelscroll4"); + map(0xb640, 0xb67f).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + map(0xb680, 0xb6bf).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + map(0xb6c0, 0xb6ff).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + map(0xb700, 0xb73f).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + map(0xb740, 0xb77f).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + map(0xb780, 0xb7bf).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + map(0xb7c0, 0xb7ff).ram().w(this, FUNC(skylncr_state::reelscroll4_w)); + + map(0xc000, 0xffff).rom(); +} + + +void skylncr_state::io_map_skylncr(address_map &map) +{ + map.global_mask(0xff); + + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0x10, 0x13).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + + map(0x20, 0x20).w(this, FUNC(skylncr_state::skylncr_coin_w)); + + map(0x30, 0x31).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x31, 0x31).r("aysnd", FUNC(ay8910_device::data_r)); + + map(0x40, 0x40).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x41, 0x41).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x42, 0x42).w("ramdac", FUNC(ramdac_device::mask_w)); + + map(0x50, 0x50).w("ramdac2", FUNC(ramdac_device::index_w)); + map(0x51, 0x51).w("ramdac2", FUNC(ramdac_device::pal_w)); + map(0x52, 0x52).w("ramdac2", FUNC(ramdac_device::mask_w)); + + map(0x70, 0x70).w(this, FUNC(skylncr_state::skylncr_nmi_enable_w)); +} + + +void skylncr_state::io_map_mbutrfly(address_map &map) +{ + map.global_mask(0xff); + io_map_skylncr(map); + map(0x60, 0x60).w(this, FUNC(skylncr_state::mbutrfly_prot_w)); +} + + +void skylncr_state::bdream97_opcode_map(address_map &map) +{ + map(0x0000, 0xffff).r(this, FUNC(skylncr_state::bdream97_opcode_r)); +} + + +void skylncr_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} + + +void skylncr_state::ramdac2_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac2", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} diff --git a/src/mame/drivers/skyraid.cpp b/src/mame/drivers/skyraid.cpp index 29674d78989..966de721782 100644 --- a/src/mame/drivers/skyraid.cpp +++ b/src/mame/drivers/skyraid.cpp @@ -71,23 +71,24 @@ WRITE8_MEMBER(skyraid_state::skyraid_scroll_w) } -ADDRESS_MAP_START(skyraid_state::skyraid_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x300) - AM_RANGE(0x0400, 0x040f) AM_WRITEONLY AM_SHARE("pos_ram") - AM_RANGE(0x0800, 0x087f) AM_RAM AM_MIRROR(0x480) AM_SHARE("alpha_num_ram") - AM_RANGE(0x1000, 0x1000) AM_READ(skyraid_port_0_r) - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW") - AM_RANGE(0x1400, 0x1400) AM_READ_PORT("COIN") - AM_RANGE(0x1401, 0x1401) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("obj_ram") - AM_RANGE(0x4000, 0x4000) AM_WRITE(skyraid_scroll_w) - AM_RANGE(0x4400, 0x4400) AM_WRITE(skyraid_sound_w) - AM_RANGE(0x4800, 0x4800) AM_WRITE(skyraid_range_w) - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5800, 0x5800) AM_WRITE(skyraid_offset_w) - AM_RANGE(0x7000, 0x7fff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void skyraid_state::skyraid_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().mirror(0x300); + map(0x0400, 0x040f).writeonly().share("pos_ram"); + map(0x0800, 0x087f).ram().mirror(0x480).share("alpha_num_ram"); + map(0x1000, 0x1000).r(this, FUNC(skyraid_state::skyraid_port_0_r)); + map(0x1001, 0x1001).portr("DSW"); + map(0x1400, 0x1400).portr("COIN"); + map(0x1401, 0x1401).portr("SYSTEM"); + map(0x1c00, 0x1c0f).writeonly().share("obj_ram"); + map(0x4000, 0x4000).w(this, FUNC(skyraid_state::skyraid_scroll_w)); + map(0x4400, 0x4400).w(this, FUNC(skyraid_state::skyraid_sound_w)); + map(0x4800, 0x4800).w(this, FUNC(skyraid_state::skyraid_range_w)); + map(0x5000, 0x5000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5800, 0x5800).w(this, FUNC(skyraid_state::skyraid_offset_w)); + map(0x7000, 0x7fff).rom(); + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( skyraid ) PORT_START("LANGUAGE") diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp index 72a2b244d5b..067d6ee86f7 100644 --- a/src/mame/drivers/slapfght.cpp +++ b/src/mame/drivers/slapfght.cpp @@ -273,91 +273,101 @@ Stephh's notes (based on the games Z80 code and some tests) : ***************************************************************************/ -ADDRESS_MAP_START(slapfght_state::perfrman_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(slapfght_state::tigerh_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_lo_w) - AM_RANGE(0xe801, 0xe801) AM_WRITE(scrollx_hi_w) - AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::tigerh_map_mcu) - AM_IMPORT_FROM( tigerh_map ) - AM_RANGE(0xe803, 0xe803) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::tigerhb1_map) - AM_IMPORT_FROM( tigerh_map ) - AM_RANGE(0xe803, 0xe803) AM_READWRITE(tigerhb1_prot_r, tigerhb1_prot_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::tigerhb2_map) - AM_IMPORT_FROM( tigerh_map ) - AM_RANGE(0xe803, 0xe803) AM_NOP // no MCU -ADDRESS_MAP_END - - -ADDRESS_MAP_START(slapfght_state::slapfigh_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_lo_w) - AM_RANGE(0xe801, 0xe801) AM_WRITE(scrollx_hi_w) - AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::slapfigh_map_mcu) - AM_IMPORT_FROM( slapfigh_map ) - AM_RANGE(0xe803, 0xe803) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, data_r, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::slapfighb1_map) - AM_IMPORT_FROM( slapfigh_map ) - AM_RANGE(0xe803, 0xe803) AM_NOP // no MCU -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::getstar_map) - AM_IMPORT_FROM( slapfigh_map ) - AM_RANGE(0xe803, 0xe803) AM_READWRITE(getstar_mcusim_r, getstar_mcusim_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::slapfighb2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_hi_w) - AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w) - AM_RANGE(0xe803, 0xe803) AM_WRITE(scrollx_lo_w) - AM_RANGE(0xec00, 0xefff) AM_ROM // it reads a copy of the logo from here! - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram") -ADDRESS_MAP_END +void slapfght_state::perfrman_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8fff).ram().share("share1"); + map(0x9000, 0x97ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram"); + map(0x9800, 0x9fff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram"); + map(0xa000, 0xa7ff).ram().share("spriteram"); +} + + +void slapfght_state::tigerh_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram"); + map(0xe000, 0xe7ff).ram().share("spriteram"); + map(0xe800, 0xe800).w(this, FUNC(slapfght_state::scrollx_lo_w)); + map(0xe801, 0xe801).w(this, FUNC(slapfght_state::scrollx_hi_w)); + map(0xe802, 0xe802).w(this, FUNC(slapfght_state::scrolly_w)); + map(0xf000, 0xf7ff).ram().w(this, FUNC(slapfght_state::fixram_w)).share("fixvideoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(slapfght_state::fixcol_w)).share("fixcolorram"); +} + +void slapfght_state::tigerh_map_mcu(address_map &map) +{ + tigerh_map(map); + map(0xe803, 0xe803).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); +} + +void slapfght_state::tigerhb1_map(address_map &map) +{ + tigerh_map(map); + map(0xe803, 0xe803).rw(this, FUNC(slapfght_state::tigerhb1_prot_r), FUNC(slapfght_state::tigerhb1_prot_w)); +} + +void slapfght_state::tigerhb2_map(address_map &map) +{ + tigerh_map(map); + map(0xe803, 0xe803).noprw(); // no MCU +} + + +void slapfght_state::slapfigh_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram"); + map(0xe000, 0xe7ff).ram().share("spriteram"); + map(0xe800, 0xe800).w(this, FUNC(slapfght_state::scrollx_lo_w)); + map(0xe801, 0xe801).w(this, FUNC(slapfght_state::scrollx_hi_w)); + map(0xe802, 0xe802).w(this, FUNC(slapfght_state::scrolly_w)); + map(0xf000, 0xf7ff).ram().w(this, FUNC(slapfght_state::fixram_w)).share("fixvideoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(slapfght_state::fixcol_w)).share("fixcolorram"); +} + +void slapfght_state::slapfigh_map_mcu(address_map &map) +{ + slapfigh_map(map); + map(0xe803, 0xe803).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); +} + +void slapfght_state::slapfighb1_map(address_map &map) +{ + slapfigh_map(map); + map(0xe803, 0xe803).noprw(); // no MCU +} + +void slapfght_state::getstar_map(address_map &map) +{ + slapfigh_map(map); + map(0xe803, 0xe803).rw(this, FUNC(slapfght_state::getstar_mcusim_r), FUNC(slapfght_state::getstar_mcusim_w)); +} + +void slapfght_state::slapfighb2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(slapfght_state::videoram_w)).share("videoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(slapfght_state::colorram_w)).share("colorram"); + map(0xe000, 0xe7ff).ram().share("spriteram"); + map(0xe800, 0xe800).w(this, FUNC(slapfght_state::scrollx_hi_w)); + map(0xe802, 0xe802).w(this, FUNC(slapfght_state::scrolly_w)); + map(0xe803, 0xe803).w(this, FUNC(slapfght_state::scrollx_lo_w)); + map(0xec00, 0xefff).rom(); // it reads a copy of the logo from here! + map(0xf000, 0xf7ff).ram().w(this, FUNC(slapfght_state::fixram_w)).share("fixvideoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(slapfght_state::fixcol_w)).share("fixcolorram"); +} /**************************************************************************/ @@ -389,29 +399,33 @@ READ8_MEMBER(slapfght_state::vblank_r) return m_screen->vblank() ? 1 : 0; } -ADDRESS_MAP_START(slapfght_state::io_map_nomcu) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(vblank_r) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) -ADDRESS_MAP_END +void slapfght_state::io_map_nomcu(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(slapfght_state::vblank_r)); + map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0)); +} -ADDRESS_MAP_START(slapfght_state::io_map_mcu) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(tigerh_mcu_status_r) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) -ADDRESS_MAP_END +void slapfght_state::io_map_mcu(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(slapfght_state::tigerh_mcu_status_r)); + map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0)); +} -ADDRESS_MAP_START(slapfght_state::getstarb1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(getstarb1_prot_r) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) -ADDRESS_MAP_END +void slapfght_state::getstarb1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(slapfght_state::getstarb1_prot_r)); + map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0)); +} -ADDRESS_MAP_START(slapfght_state::getstarb2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(getstar_mcusim_status_r) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0) -ADDRESS_MAP_END +void slapfght_state::getstarb2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(slapfght_state::getstar_mcusim_status_r)); + map(0x00, 0x0f).w("mainlatch", FUNC(ls259_device::write_a0)); +} @@ -432,30 +446,32 @@ WRITE8_MEMBER(slapfght_state::sound_nmi_enable_w) m_sound_nmi_enabled = offset ? false : true; } -ADDRESS_MAP_START(slapfght_state::perfrman_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xa082, 0xa082) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0xa090, 0xa090) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xa092, 0xa092) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0xa0e0, 0xa0e0) AM_SELECT(0x0010) AM_WRITE(sound_nmi_enable_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapfght_state::tigerh_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0xa082, 0xa082) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0xa090, 0xa090) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0xa092, 0xa092) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0xa0e0, 0xa0e0) AM_SELECT(0x0010) AM_WRITE(sound_nmi_enable_w) - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xffff) AM_RAM -ADDRESS_MAP_END +void slapfght_state::perfrman_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8800, 0x8fff).ram().share("share1"); + map(0xa080, 0xa080).w("ay1", FUNC(ay8910_device::address_w)); + map(0xa081, 0xa081).r("ay1", FUNC(ay8910_device::data_r)); + map(0xa082, 0xa082).w("ay1", FUNC(ay8910_device::data_w)); + map(0xa090, 0xa090).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa091, 0xa091).r("ay2", FUNC(ay8910_device::data_r)); + map(0xa092, 0xa092).w("ay2", FUNC(ay8910_device::data_w)); + map(0xa0e0, 0xa0e0).select(0x0010).w(this, FUNC(slapfght_state::sound_nmi_enable_w)); +} + +void slapfght_state::tigerh_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xa080, 0xa080).w("ay1", FUNC(ay8910_device::address_w)); + map(0xa081, 0xa081).r("ay1", FUNC(ay8910_device::data_r)); + map(0xa082, 0xa082).w("ay1", FUNC(ay8910_device::data_w)); + map(0xa090, 0xa090).w("ay2", FUNC(ay8910_device::address_w)); + map(0xa091, 0xa091).r("ay2", FUNC(ay8910_device::data_r)); + map(0xa092, 0xa092).w("ay2", FUNC(ay8910_device::data_w)); + map(0xa0e0, 0xa0e0).select(0x0010).w(this, FUNC(slapfght_state::sound_nmi_enable_w)); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xffff).ram(); +} diff --git a/src/mame/drivers/slapshot.cpp b/src/mame/drivers/slapshot.cpp index 0eb6e58dc62..3d5f6c91d63 100644 --- a/src/mame/drivers/slapshot.cpp +++ b/src/mame/drivers/slapshot.cpp @@ -262,53 +262,56 @@ READ16_MEMBER(slapshot_state::msb_sound_r) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(slapshot_state::slapshot_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x500000, 0x50ffff) AM_RAM /* main RAM */ - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteext") /* debugging */ - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */ - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) /* priority chip */ - AM_RANGE(0xc00000, 0xc0000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w) - AM_RANGE(0xc00020, 0xc0002f) AM_READ(service_input_r) /* service mirror */ - AM_RANGE(0xd00000, 0xd00003) AM_READWRITE(msb_sound_r, msb_sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slapshot_state::opwolf3_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x500000, 0x50ffff) AM_RAM /* main RAM */ - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteext") /* debugging */ - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE8("mk48t08", timekeeper_device, read, write, 0xff00) /* nvram (only low bytes used) */ - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) /* priority chip */ - AM_RANGE(0xc00000, 0xc0000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w) - AM_RANGE(0xc00020, 0xc0002f) AM_READ(service_input_r) /* service mirror */ - AM_RANGE(0xd00000, 0xd00003) AM_READWRITE(msb_sound_r, msb_sound_w) - AM_RANGE(0xe00000, 0xe00007) AM_READWRITE(opwolf3_adc_r, opwolf3_adc_req_w) -ADDRESS_MAP_END +void slapshot_state::slapshot_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x500000, 0x50ffff).ram(); /* main RAM */ + map(0x600000, 0x60ffff).ram().share("spriteram"); /* sprite ram */ + map(0x700000, 0x701fff).ram().share("spriteext"); /* debugging */ + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa00000, 0xa03fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */ + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); /* priority chip */ + map(0xc00000, 0xc0000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w)); + map(0xc00020, 0xc0002f).r(this, FUNC(slapshot_state::service_input_r)); /* service mirror */ + map(0xd00000, 0xd00003).rw(this, FUNC(slapshot_state::msb_sound_r), FUNC(slapshot_state::msb_sound_w)); +} + +void slapshot_state::opwolf3_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x500000, 0x50ffff).ram(); /* main RAM */ + map(0x600000, 0x60ffff).ram().share("spriteram"); /* sprite ram */ + map(0x700000, 0x701fff).ram().share("spriteext"); /* debugging */ + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa00000, 0xa03fff).rw("mk48t08", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); /* nvram (only low bytes used) */ + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); /* priority chip */ + map(0xc00000, 0xc0000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w)); + map(0xc00020, 0xc0002f).r(this, FUNC(slapshot_state::service_input_r)); /* service mirror */ + map(0xd00000, 0xd00003).rw(this, FUNC(slapshot_state::msb_sound_r), FUNC(slapshot_state::msb_sound_w)); + map(0xe00000, 0xe00007).rw(this, FUNC(slapshot_state::opwolf3_adc_r), FUNC(slapshot_state::opwolf3_adc_req_w)); +} /***************************************************************************/ -ADDRESS_MAP_START(slapshot_state::opwolf3_z80_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void slapshot_state::opwolf3_z80_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(slapshot_state::sound_bankswitch_w)); +} /*********************************************************** diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp index 0ac469de829..ee7b30464b6 100644 --- a/src/mame/drivers/slc1.cpp +++ b/src/mame/drivers/slc1.cpp @@ -194,17 +194,19 @@ void slc1_state::machine_reset() ***************************************************************************/ -ADDRESS_MAP_START(slc1_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x4fff) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0xc00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slc1_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r,io_w) -ADDRESS_MAP_END +void slc1_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x4fff); + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x43ff).ram().mirror(0xc00); +} + +void slc1_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(slc1_state::io_r), FUNC(slc1_state::io_w)); +} /************************************************************************** diff --git a/src/mame/drivers/sleic.cpp b/src/mame/drivers/sleic.cpp index acb29cc37c1..09aa81bd0a5 100644 --- a/src/mame/drivers/sleic.cpp +++ b/src/mame/drivers/sleic.cpp @@ -50,10 +50,11 @@ public: }; -ADDRESS_MAP_START(sleic_state::sleic_map) - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0xe0000, 0xfffff) AM_ROM -ADDRESS_MAP_END +void sleic_state::sleic_map(address_map &map) +{ + map(0x00000, 0x1ffff).ram(); + map(0xe0000, 0xfffff).rom(); +} static INPUT_PORTS_START( sleic ) INPUT_PORTS_END diff --git a/src/mame/drivers/slicer.cpp b/src/mame/drivers/slicer.cpp index 7f3d853d63b..c31450db245 100644 --- a/src/mame/drivers/slicer.cpp +++ b/src/mame/drivers/slicer.cpp @@ -64,22 +64,24 @@ WRITE_LINE_MEMBER(slicer_state::drive_sel_w) m_fdc->set_floppy(floppy); } -ADDRESS_MAP_START(slicer_state::slicer_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(slicer_state::slicer_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x007f) AM_DEVREADWRITE8("fdc", fd1797_device, read, write, 0x00ff) //PCS0 - AM_RANGE(0x0080, 0x00ff) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0x00ff) //PCS1 - AM_RANGE(0x0100, 0x0107) AM_MIRROR(0x0078) AM_DEVWRITE8("drivelatch", ls259_device, write_d0, 0x00ff) //PCS2 +void slicer_state::slicer_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); // fixed 256k for now + map(0xf8000, 0xfffff).rom().region("bios", 0); +} + +void slicer_state::slicer_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x007f).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)).umask16(0x00ff); //PCS0 + map(0x0080, 0x00ff).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0x00ff); //PCS1 + map(0x0100, 0x0107).mirror(0x0078).w("drivelatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); //PCS2 // TODO: 0x180 sets ack - AM_RANGE(0x0180, 0x0181) AM_DEVREAD8("sasi_data_in", input_buffer_device, read, 0x00ff) AM_DEVWRITE8("sasi_data_out", output_latch_device, write, 0x00ff) //PCS3 - AM_RANGE(0x0180, 0x0181) AM_DEVREAD8("sasi_ctrl_in", input_buffer_device, read, 0xff00) - AM_RANGE(0x0184, 0x0185) AM_DEVREAD8("sasi_data_in", input_buffer_device, read, 0x00ff) AM_DEVWRITE8("sasi_data_out", output_latch_device, write, 0x00ff) - AM_RANGE(0x0184, 0x0185) AM_DEVREAD8("sasi_ctrl_in", input_buffer_device, read, 0xff00) -ADDRESS_MAP_END + map(0x0180, 0x0180).r("sasi_data_in", FUNC(input_buffer_device::read)).w("sasi_data_out", FUNC(output_latch_device::write)).umask16(0x00ff); //PCS3 + map(0x0181, 0x0181).r("sasi_ctrl_in", FUNC(input_buffer_device::read)); + map(0x0184, 0x0184).r("sasi_data_in", FUNC(input_buffer_device::read)).w("sasi_data_out", FUNC(output_latch_device::write)).umask16(0x00ff); + map(0x0185, 0x0185).r("sasi_ctrl_in", FUNC(input_buffer_device::read)); +} static SLOT_INTERFACE_START( slicer_floppies ) SLOT_INTERFACE("525dd", FLOPPY_525_DD) diff --git a/src/mame/drivers/sliver.cpp b/src/mame/drivers/sliver.cpp index b6306747be8..84cb7905203 100644 --- a/src/mame/drivers/sliver.cpp +++ b/src/mame/drivers/sliver.cpp @@ -352,33 +352,34 @@ WRITE16_MEMBER(sliver_state::sound_w) m_audiocpu->set_input_line(MCS51_INT0_LINE, HOLD_LINE); } -ADDRESS_MAP_START(sliver_state::sliver_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM +void sliver_state::sliver_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); - AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0x100004, 0x100005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) + map(0x100001, 0x100001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x100003, 0x100003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x100005, 0x100005).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x300002, 0x300003) AM_NOP // bit 0 tested, writes 0xe0 and 0xc0 - both r and w at the end of interrupt code + map(0x300002, 0x300003).noprw(); // bit 0 tested, writes 0xe0 and 0xc0 - both r and w at the end of interrupt code - AM_RANGE(0x300004, 0x300005) AM_WRITE(io_offset_w) //unknown i/o device - AM_RANGE(0x300006, 0x300007) AM_WRITE(io_data_w) + map(0x300004, 0x300005).w(this, FUNC(sliver_state::io_offset_w)); //unknown i/o device + map(0x300006, 0x300007).w(this, FUNC(sliver_state::io_data_w)); - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1_P2") - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW") - AM_RANGE(0x400006, 0x400007) AM_WRITE(fifo_data_w) - AM_RANGE(0x400008, 0x400009) AM_WRITE(fifo_clear_w) - AM_RANGE(0x40000a, 0x40000b) AM_WRITE(fifo_flush_w) - AM_RANGE(0x40000c, 0x40000d) AM_WRITE(jpeg1_w) - AM_RANGE(0x40000e, 0x40000f) AM_WRITE(jpeg2_w) + map(0x400000, 0x400001).portr("P1_P2"); + map(0x400002, 0x400003).portr("SYSTEM"); + map(0x400004, 0x400005).portr("DSW"); + map(0x400006, 0x400007).w(this, FUNC(sliver_state::fifo_data_w)); + map(0x400008, 0x400009).w(this, FUNC(sliver_state::fifo_clear_w)); + map(0x40000a, 0x40000b).w(this, FUNC(sliver_state::fifo_flush_w)); + map(0x40000c, 0x40000d).w(this, FUNC(sliver_state::jpeg1_w)); + map(0x40000e, 0x40000f).w(this, FUNC(sliver_state::jpeg2_w)); - AM_RANGE(0x400010, 0x400015) AM_WRITENOP //unknown - AM_RANGE(0x400016, 0x400017) AM_WRITE(sound_w) - AM_RANGE(0x400018, 0x400019) AM_WRITENOP //unknown + map(0x400010, 0x400015).nopw(); //unknown + map(0x400016, 0x400017).w(this, FUNC(sliver_state::sound_w)); + map(0x400018, 0x400019).nopw(); //unknown - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0xff0000, 0xffffff).ram(); +} // Sound CPU @@ -388,19 +389,22 @@ WRITE8_MEMBER(sliver_state::oki_setbank) membank("okibank")->set_entry(bank); } -ADDRESS_MAP_START(sliver_state::soundmem_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void sliver_state::soundmem_prg(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} -ADDRESS_MAP_START(sliver_state::soundmem_io) - AM_RANGE(0x0100, 0x0100) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x0101, 0x0101) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void sliver_state::soundmem_io(address_map &map) +{ + map(0x0100, 0x0100).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0101, 0x0101).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} -ADDRESS_MAP_START(sliver_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void sliver_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} void sliver_state::video_start() { @@ -499,9 +503,10 @@ static INPUT_PORTS_START( sliver ) PORT_DIPUNUSED_DIPLOC( 0x8000, 0x0000, "SW2:8" ) /* Listed as "UNUSED (MUST ON)" */ INPUT_PORTS_END -ADDRESS_MAP_START(sliver_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("colorram") -ADDRESS_MAP_END +void sliver_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).ram().share("colorram"); +} TIMER_DEVICE_CALLBACK_MEMBER ( sliver_state::obj_irq_cb ) { diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp index 6c701ad3c37..286798e6947 100644 --- a/src/mame/drivers/slotcarn.cpp +++ b/src/mame/drivers/slotcarn.cpp @@ -172,38 +172,40 @@ WRITE_LINE_MEMBER(slotcarn_state::hsync_changed) * Memory Map * *******************************/ -ADDRESS_MAP_START(slotcarn_state::slotcarn_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("backup_ram") - AM_RANGE(0x6800, 0x6fff) AM_RAM // spielbud - AM_RANGE(0x7000, 0xafff) AM_ROM // spielbud +void slotcarn_state::slotcarn_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram().share("backup_ram"); + map(0x6800, 0x6fff).ram(); // spielbud + map(0x7000, 0xafff).rom(); // spielbud - AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xb100, 0xb100) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) + map(0xb000, 0xb000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xb100, 0xb100).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); - AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xba00, 0xba03) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ - AM_RANGE(0xbc00, 0xbc03) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ + map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xba00, 0xba03).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */ + map(0xbc00, 0xbc03).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */ - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW3") - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW4") + map(0xc000, 0xc000).portr("DSW3"); + map(0xc400, 0xc400).portr("DSW4"); - AM_RANGE(0xd800, 0xd81f) AM_RAM // column scroll for reels? + map(0xd800, 0xd81f).ram(); // column scroll for reels? - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) + map(0xe000, 0xe000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xe001, 0xe001).w("crtc", FUNC(mc6845_device::register_w)); - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr") - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("ravideo") - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) -ADDRESS_MAP_END + map(0xe800, 0xefff).ram().share("raattr"); + map(0xf000, 0xf7ff).ram().share("ravideo"); + map(0xf800, 0xfbff).rw(this, FUNC(slotcarn_state::palette_r), FUNC(slotcarn_state::palette_w)); +} // spielbud - is the ay mirrored, or are there now 2? -ADDRESS_MAP_START(slotcarn_state::spielbud_io_map) - AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0xb100, 0xb100) AM_DEVWRITE("aysnd", ay8910_device, data_w) -ADDRESS_MAP_END +void slotcarn_state::spielbud_io_map(address_map &map) +{ + map(0xb000, 0xb000).w("aysnd", FUNC(ay8910_device::address_w)); + map(0xb100, 0xb100).w("aysnd", FUNC(ay8910_device::data_w)); +} /******************************** * Input Ports * diff --git a/src/mame/drivers/sm1800.cpp b/src/mame/drivers/sm1800.cpp index 4bb3a5e595b..f2d48c5ae90 100644 --- a/src/mame/drivers/sm1800.cpp +++ b/src/mame/drivers/sm1800.cpp @@ -55,23 +55,25 @@ public: void sm1800_mem(address_map &map); }; -ADDRESS_MAP_START(sm1800_state::sm1800_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff ) AM_ROM +void sm1800_state::sm1800_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); //AM_RANGE( 0x0fb0, 0x0fff ) AM_DEVWRITE("i8275", i8275_device, dack_w) - AM_RANGE( 0x1000, 0x17ff ) AM_RAM // videoram looks like 1080-17FF, normal ascii -ADDRESS_MAP_END - -ADDRESS_MAP_START(sm1800_state::sm1800_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x3c, 0x3d ) AM_DEVREADWRITE("i8275", i8275_device, read, write) - AM_RANGE( 0x5c, 0x5c) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) - AM_RANGE( 0x5d, 0x5d) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) - AM_RANGE( 0x6c, 0x6f ) AM_DEVREADWRITE("i8255", i8255_device, read, write) + map(0x1000, 0x17ff).ram(); // videoram looks like 1080-17FF, normal ascii +} + +void sm1800_state::sm1800_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x3c, 0x3d).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0x5c, 0x5c).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x5d, 0x5d).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x6c, 0x6f).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); //AM_RANGE( 0x74, 0x74 ) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w) //AM_RANGE( 0x75, 0x75 ) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( sm1800 ) diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp index fea756e2f2e..c08ec66df36 100644 --- a/src/mame/drivers/sm7238.cpp +++ b/src/mame/drivers/sm7238.cpp @@ -125,37 +125,40 @@ private: required_device<screen_device> m_screen; }; -ADDRESS_MAP_START(sm7238_state::sm7238_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0x0000, 0x9fff) AM_ROM - AM_RANGE (0xa000, 0xa7ff) AM_RAM - AM_RANGE (0xb000, 0xb3ff) AM_RAM AM_SHARE("nvram") - AM_RANGE (0xb800, 0xb800) AM_WRITE(text_control_w) - AM_RANGE (0xbc00, 0xbc00) AM_WRITE(control_w) - AM_RANGE (0xc000, 0xcfff) AM_RAM // chargen - AM_RANGE (0xe000, 0xffff) AM_DEVICE("videobank", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sm7238_state::videobank_map) - AM_RANGE (0x0000, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE (0x2000, 0x2fff) AM_MIRROR(0x1000) AM_WRITE(vmem_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sm7238_state::sm7238_io) - ADDRESS_MAP_UNMAP_HIGH +void sm7238_state::sm7238_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa7ff).ram(); + map(0xb000, 0xb3ff).ram().share("nvram"); + map(0xb800, 0xb800).w(this, FUNC(sm7238_state::text_control_w)); + map(0xbc00, 0xbc00).w(this, FUNC(sm7238_state::control_w)); + map(0xc000, 0xcfff).ram(); // chargen + map(0xe000, 0xffff).m(m_videobank, FUNC(address_map_bank_device::amap8)); +} + +void sm7238_state::videobank_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("videoram"); + map(0x2000, 0x2fff).mirror(0x1000).w(this, FUNC(sm7238_state::vmem_w)); +} + +void sm7238_state::sm7238_io(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE (0x40, 0x4f) AM_RAM // LUT - AM_RANGE (0xa0, 0xa0) AM_DEVREADWRITE("i8251line", i8251_device, data_r, data_w) - AM_RANGE (0xa1, 0xa1) AM_DEVREADWRITE("i8251line", i8251_device, status_r, control_w) - AM_RANGE (0xa4, 0xa4) AM_DEVREADWRITE("i8251kbd", i8251_device, data_r, data_w) - AM_RANGE (0xa5, 0xa5) AM_DEVREADWRITE("i8251kbd", i8251_device, status_r, control_w) - AM_RANGE (0xa8, 0xab) AM_DEVREADWRITE("t_color", pit8253_device, read, write) - AM_RANGE (0xac, 0xad) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE (0xb0, 0xb3) AM_DEVREADWRITE("t_hblank", pit8253_device, read, write) - AM_RANGE (0xb4, 0xb7) AM_DEVREADWRITE("t_vblank", pit8253_device, read, write) - AM_RANGE (0xb8, 0xb8) AM_DEVREADWRITE("i8251prn", i8251_device, data_r, data_w) - AM_RANGE (0xb9, 0xb9) AM_DEVREADWRITE("i8251prn", i8251_device, status_r, control_w) - AM_RANGE (0xbc, 0xbf) AM_DEVREADWRITE("t_iface", pit8253_device, read, write) -ADDRESS_MAP_END + map(0xa0, 0xa0).rw(m_i8251line, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xa1, 0xa1).rw(m_i8251line, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xa4, 0xa4).rw(m_i8251kbd, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xa5, 0xa5).rw(m_i8251kbd, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xa8, 0xab).rw(m_t_color, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xac, 0xad).rw(m_pic8259, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xb0, 0xb3).rw(m_t_hblank, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xb4, 0xb7).rw(m_t_vblank, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xb8, 0xb8).rw(m_i8251prn, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xb9, 0xb9).rw(m_i8251prn, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xbc, 0xbf).rw(m_t_iface, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); +} void sm7238_state::machine_reset() { diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp index 42913947867..e33e68fa989 100644 --- a/src/mame/drivers/smc777.cpp +++ b/src/mame/drivers/smc777.cpp @@ -610,48 +610,50 @@ WRITE8_MEMBER(smc777_state::irq_mask_w) m_irq_mask = data & 1; } -ADDRESS_MAP_START(smc777_state::smc777_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(smc777_mem_r, smc777_mem_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(smc777_state::smc777_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x07) AM_SELECT(0xff00) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0x08, 0x0f) AM_SELECT(0xff00) AM_READWRITE(attr_r, attr_w) - AM_RANGE(0x10, 0x17) AM_SELECT(0xff00) AM_READWRITE(pcg_r, pcg_w) - AM_RANGE(0x18, 0x19) AM_MIRROR(0xff00) AM_WRITE(mc6845_w) - AM_RANGE(0x1a, 0x1b) AM_MIRROR(0xff00) AM_READWRITE(key_r, key_w) - AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_READWRITE(system_input_r, system_output_w) +void smc777_state::smc777_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(smc777_state::smc777_mem_r), FUNC(smc777_state::smc777_mem_w)); +} + +void smc777_state::smc777_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x07).select(0xff00).rw(this, FUNC(smc777_state::vram_r), FUNC(smc777_state::vram_w)); + map(0x08, 0x0f).select(0xff00).rw(this, FUNC(smc777_state::attr_r), FUNC(smc777_state::attr_w)); + map(0x10, 0x17).select(0xff00).rw(this, FUNC(smc777_state::pcg_r), FUNC(smc777_state::pcg_w)); + map(0x18, 0x19).mirror(0xff00).w(this, FUNC(smc777_state::mc6845_w)); + map(0x1a, 0x1b).mirror(0xff00).rw(this, FUNC(smc777_state::key_r), FUNC(smc777_state::key_w)); + map(0x1c, 0x1c).mirror(0xff00).rw(this, FUNC(smc777_state::system_input_r), FUNC(smc777_state::system_output_w)); // AM_RANGE(0x1d, 0x1d) system and control read, printer strobe write // AM_RANGE(0x1e, 0x1f) rs232 irq control - AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_READWRITE(display_reg_r, display_reg_w) - AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_READWRITE(irq_mask_r, irq_mask_w) + map(0x20, 0x20).mirror(0xff00).rw(this, FUNC(smc777_state::display_reg_r), FUNC(smc777_state::display_reg_w)); + map(0x21, 0x21).mirror(0xff00).rw(this, FUNC(smc777_state::irq_mask_r), FUNC(smc777_state::irq_mask_w)); // AM_RANGE(0x22, 0x22) printer output data - AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_WRITE(border_col_w) + map(0x23, 0x23).mirror(0xff00).w(this, FUNC(smc777_state::border_col_w)); // AM_RANGE(0x24, 0x24) rtc write address // AM_RANGE(0x25, 0x25) rtc read // AM_RANGE(0x26, 0x26) rs232 #1 // AM_RANGE(0x28, 0x2c) fdc #2 // AM_RANGE(0x2d, 0x2f) rs232 #2 - AM_RANGE(0x30, 0x33) AM_MIRROR(0xff00) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0x34, 0x34) AM_MIRROR(0xff00) AM_READWRITE(fdc_request_r, floppy_select_w) + map(0x30, 0x33).mirror(0xff00).rw(this, FUNC(smc777_state::fdc_r), FUNC(smc777_state::fdc_w)); + map(0x34, 0x34).mirror(0xff00).rw(this, FUNC(smc777_state::fdc_request_r), FUNC(smc777_state::floppy_select_w)); // AM_RANGE(0x35, 0x37) rs232 #3 // AM_RANGE(0x38, 0x3b) cache disk unit // AM_RANGE(0x3c, 0x3d) rgb superimposer // AM_RANGE(0x40, 0x47) ieee-488 // AM_RANGE(0x48, 0x4f) hdd (winchester) - AM_RANGE(0x51, 0x51) AM_MIRROR(0xff00) AM_READ_PORT("JOY_1P") AM_WRITE(color_mode_w) - AM_RANGE(0x52, 0x52) AM_SELECT(0xff00) AM_WRITE(ramdac_w) - AM_RANGE(0x53, 0x53) AM_MIRROR(0xff00) AM_DEVWRITE("sn1", sn76489a_device, write) + map(0x51, 0x51).mirror(0xff00).portr("JOY_1P").w(this, FUNC(smc777_state::color_mode_w)); + map(0x52, 0x52).select(0xff00).w(this, FUNC(smc777_state::ramdac_w)); + map(0x53, 0x53).mirror(0xff00).w("sn1", FUNC(sn76489a_device::write)); // AM_RANGE(0x54, 0x59) vrt controller // AM_RANGE(0x5a, 0x5b) ram banking // AM_RANGE(0x70, 0x70) auto-start rom // AM_RANGE(0x74, 0x74) ieee-488 rom // AM_RANGE(0x75, 0x75) vrt controller rom // AM_RANGE(0x7e, 0x7f) kanji rom - AM_RANGE(0x80, 0xff) AM_SELECT(0xff00) AM_READWRITE(fbuf_r, fbuf_w) -ADDRESS_MAP_END + map(0x80, 0xff).select(0xff00).rw(this, FUNC(smc777_state::fbuf_r), FUNC(smc777_state::fbuf_w)); +} /* Input ports */ static INPUT_PORTS_START( smc777 ) diff --git a/src/mame/drivers/sms.cpp b/src/mame/drivers/sms.cpp index c3a7c5f6661..4bb8bbcc9c9 100644 --- a/src/mame/drivers/sms.cpp +++ b/src/mame/drivers/sms.cpp @@ -264,114 +264,122 @@ DC00 - Selection buttons #2, 9-16 (R) #define MASTER_CLOCK_PAL 53203425.0 /* 12 * subcarrier freq. (4.43361875MHz) */ -ADDRESS_MAP_START(sms_state::sms1_mem) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(write_cart) - AM_RANGE(0x0000, 0x3fff) AM_READ(read_0000) - AM_RANGE(0x4000, 0x7fff) AM_READ(read_4000) - AM_RANGE(0x8000, 0xbfff) AM_READ(read_8000) - AM_RANGE(0xc000, 0xfff7) AM_READWRITE(read_ram, write_ram) - AM_RANGE(0xfff8, 0xfffb) AM_READWRITE(sms_sscope_r, sms_sscope_w) /* 3-D glasses */ - AM_RANGE(0xfffc, 0xffff) AM_READWRITE(sms_mapper_r, sms_mapper_w) /* Bankswitch control */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(sms_state::sms_mem) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(write_cart) - AM_RANGE(0x0000, 0x3fff) AM_READ(read_0000) - AM_RANGE(0x4000, 0x7fff) AM_READ(read_4000) - AM_RANGE(0x8000, 0xbfff) AM_READ(read_8000) - AM_RANGE(0xc000, 0xfffb) AM_READWRITE(read_ram, write_ram) - AM_RANGE(0xfffc, 0xffff) AM_READWRITE(sms_mapper_r, sms_mapper_w) /* Bankswitch control */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(smssdisp_state::sms_store_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM /* BIOS */ - AM_RANGE(0x4000, 0x47ff) AM_RAM /* RAM */ - AM_RANGE(0x6000, 0x7fff) AM_READ(store_cart_peek) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW") AM_WRITE(sms_store_control_w) /* Control */ - AM_RANGE(0xc000, 0xc000) AM_READWRITE(sms_store_cart_select_r, sms_store_cart_select_w) /* cartridge/card slot selector */ - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("GAMESEL1") /* Game selector port #1 */ - AM_RANGE(0xdc00, 0xdc00) AM_READ_PORT("GAMESEL2") /* Game selector port #2 */ -ADDRESS_MAP_END +void sms_state::sms1_mem(address_map &map) +{ + map(0x0000, 0xbfff).w(this, FUNC(sms_state::write_cart)); + map(0x0000, 0x3fff).r(this, FUNC(sms_state::read_0000)); + map(0x4000, 0x7fff).r(this, FUNC(sms_state::read_4000)); + map(0x8000, 0xbfff).r(this, FUNC(sms_state::read_8000)); + map(0xc000, 0xfff7).rw(this, FUNC(sms_state::read_ram), FUNC(sms_state::write_ram)); + map(0xfff8, 0xfffb).rw(this, FUNC(sms_state::sms_sscope_r), FUNC(sms_state::sms_sscope_w)); /* 3-D glasses */ + map(0xfffc, 0xffff).rw(this, FUNC(sms_state::sms_mapper_r), FUNC(sms_state::sms_mapper_w)); /* Bankswitch control */ +} + +void sms_state::sms_mem(address_map &map) +{ + map(0x0000, 0xbfff).w(this, FUNC(sms_state::write_cart)); + map(0x0000, 0x3fff).r(this, FUNC(sms_state::read_0000)); + map(0x4000, 0x7fff).r(this, FUNC(sms_state::read_4000)); + map(0x8000, 0xbfff).r(this, FUNC(sms_state::read_8000)); + map(0xc000, 0xfffb).rw(this, FUNC(sms_state::read_ram), FUNC(sms_state::write_ram)); + map(0xfffc, 0xffff).rw(this, FUNC(sms_state::sms_mapper_r), FUNC(sms_state::sms_mapper_w)); /* Bankswitch control */ +} + +void smssdisp_state::sms_store_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); /* BIOS */ + map(0x4000, 0x47ff).ram(); /* RAM */ + map(0x6000, 0x7fff).r(this, FUNC(smssdisp_state::store_cart_peek)); + map(0x8000, 0x8000).portr("DSW").w(this, FUNC(smssdisp_state::sms_store_control_w)); /* Control */ + map(0xc000, 0xc000).rw(this, FUNC(smssdisp_state::sms_store_cart_select_r), FUNC(smssdisp_state::sms_store_cart_select_w)); /* cartridge/card slot selector */ + map(0xd800, 0xd800).portr("GAMESEL1"); /* Game selector port #1 */ + map(0xdc00, 0xdc00).portr("GAMESEL2"); /* Game selector port #2 */ +} // I/O ports $3E and $3F do not exist on Mark III -ADDRESS_MAP_START(sms_state::sg1000m3_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write) - AM_RANGE(0xc0, 0xc7) AM_MIRROR(0x38) AM_READWRITE(sg1000m3_peripheral_r, sg1000m3_peripheral_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sms_state::sms_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_MIRROR(0x3e) AM_WRITE(sms_mem_control_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x3e) AM_WRITE(sms_io_control_w) - AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3e) AM_READ(sms_input_port_dc_r) - AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3e) AM_READ(sms_input_port_dd_r) -ADDRESS_MAP_END +void sms_state::sg1000m3_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xc0, 0xc7).mirror(0x38).rw(this, FUNC(sms_state::sg1000m3_peripheral_r), FUNC(sms_state::sg1000m3_peripheral_w)); +} + + +void sms_state::sms_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x00).mirror(0x3e).w(this, FUNC(sms_state::sms_mem_control_w)); + map(0x01, 0x01).mirror(0x3e).w(this, FUNC(sms_state::sms_io_control_w)); + map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xc0, 0xc0).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dc_r)); + map(0xc1, 0xc1).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dd_r)); +} // It seems the Korean versions do some more strict decoding on the I/O // addresses. // At least the mirrors for I/O ports $3E/$3F don't seem to exist there. // Leaving the mirrors breaks the Korean cartridge bublboky. -ADDRESS_MAP_START(sms_state::smskr_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x3e, 0x3e) AM_WRITE(sms_mem_control_w) - AM_RANGE(0x3f, 0x3f) AM_WRITE(sms_io_control_w) - AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3e) AM_READ(sms_input_port_dc_r) - AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3e) AM_READ(sms_input_port_dd_r) -ADDRESS_MAP_END +void sms_state::smskr_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x3e, 0x3e).w(this, FUNC(sms_state::sms_mem_control_w)); + map(0x3f, 0x3f).w(this, FUNC(sms_state::sms_io_control_w)); + map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xc0, 0xc0).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dc_r)); + map(0xc1, 0xc1).mirror(0x3e).r(this, FUNC(sms_state::sms_input_port_dd_r)); +} // Mirrors for I/O ports $3E/$3F don't exist on the Japanese SMS. // Also, $C0/$C1 are the only mirrors for I/O ports $DC/$DD. -ADDRESS_MAP_START(sms_state::smsj_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x3e, 0x3e) AM_WRITE(sms_mem_control_w) - AM_RANGE(0x3f, 0x3f) AM_WRITE(sms_io_control_w) - AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write) - AM_RANGE(0xc0, 0xc0) AM_READ(sms_input_port_dc_r) - AM_RANGE(0xc1, 0xc1) AM_READ(sms_input_port_dd_r) - AM_RANGE(0xdc, 0xdc) AM_READ(sms_input_port_dc_r) - AM_RANGE(0xdd, 0xdd) AM_READ(sms_input_port_dd_r) - AM_RANGE(0xf0, 0xf0) AM_WRITE(smsj_ym2413_register_port_w) - AM_RANGE(0xf1, 0xf1) AM_WRITE(smsj_ym2413_data_port_w) - AM_RANGE(0xf2, 0xf2) AM_READWRITE(smsj_audio_control_r, smsj_audio_control_w) -ADDRESS_MAP_END +void sms_state::smsj_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x3e, 0x3e).w(this, FUNC(sms_state::sms_mem_control_w)); + map(0x3f, 0x3f).w(this, FUNC(sms_state::sms_io_control_w)); + map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::sms_psg_w)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xc0, 0xc0).r(this, FUNC(sms_state::sms_input_port_dc_r)); + map(0xc1, 0xc1).r(this, FUNC(sms_state::sms_input_port_dd_r)); + map(0xdc, 0xdc).r(this, FUNC(sms_state::sms_input_port_dc_r)); + map(0xdd, 0xdd).r(this, FUNC(sms_state::sms_input_port_dd_r)); + map(0xf0, 0xf0).w(this, FUNC(sms_state::smsj_ym2413_register_port_w)); + map(0xf1, 0xf1).w(this, FUNC(sms_state::smsj_ym2413_data_port_w)); + map(0xf2, 0xf2).rw(this, FUNC(sms_state::smsj_audio_control_r), FUNC(sms_state::smsj_audio_control_w)); +} // It seems the mirrors for I/O ports $3E/$3F also don't seem to exist on the // Game Gear. Leaving the mirrors breaks 'gloc' (it freezes after 1st stage). -ADDRESS_MAP_START(sms_state::gg_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x00) AM_READ(gg_input_port_00_r) - AM_RANGE(0x01, 0x05) AM_READWRITE(gg_sio_r, gg_sio_w) - AM_RANGE(0x06, 0x06) AM_WRITE(gg_psg_stereo_w) - AM_RANGE(0x3e, 0x3e) AM_WRITE(sms_mem_control_w) - AM_RANGE(0x3f, 0x3f) AM_WRITE(sms_io_control_w) - AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, gg_psg_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write) - AM_RANGE(0xc0, 0xc0) AM_READ(sms_input_port_dc_r) - AM_RANGE(0xc1, 0xc1) AM_READ(sms_input_port_dd_r) - AM_RANGE(0xdc, 0xdc) AM_READ(sms_input_port_dc_r) - AM_RANGE(0xdd, 0xdd) AM_READ(sms_input_port_dd_r) -ADDRESS_MAP_END +void sms_state::gg_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x00).r(this, FUNC(sms_state::gg_input_port_00_r)); + map(0x01, 0x05).rw(this, FUNC(sms_state::gg_sio_r), FUNC(sms_state::gg_sio_w)); + map(0x06, 0x06).w(this, FUNC(sms_state::gg_psg_stereo_w)); + map(0x3e, 0x3e).w(this, FUNC(sms_state::sms_mem_control_w)); + map(0x3f, 0x3f).w(this, FUNC(sms_state::sms_io_control_w)); + map(0x40, 0x7f).rw(this, FUNC(sms_state::sms_count_r), FUNC(sms_state::gg_psg_w)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); + map(0xc0, 0xc0).r(this, FUNC(sms_state::sms_input_port_dc_r)); + map(0xc1, 0xc1).r(this, FUNC(sms_state::sms_input_port_dd_r)); + map(0xdc, 0xdc).r(this, FUNC(sms_state::sms_input_port_dc_r)); + map(0xdd, 0xdd).r(this, FUNC(sms_state::sms_input_port_dd_r)); +} static INPUT_PORTS_START( sms ) diff --git a/src/mame/drivers/sms_bootleg.cpp b/src/mame/drivers/sms_bootleg.cpp index eb058e4f2fc..01faa78cbf2 100644 --- a/src/mame/drivers/sms_bootleg.cpp +++ b/src/mame/drivers/sms_bootleg.cpp @@ -236,11 +236,12 @@ A Korean version has been seen too (unless this can be switched?) -ADDRESS_MAP_START(smsbootleg_state::sms_supergame_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xfff7) AM_RAM +void smsbootleg_state::sms_supergame_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xfff7).ram(); // AM_RANGE(0xfffc, 0xffff) AM_READWRITE(sms_mapper_r, sms_mapper_w) /* Bankswitch control */ -ADDRESS_MAP_END +} WRITE8_MEMBER(smsbootleg_state::port08_w) { @@ -253,21 +254,22 @@ WRITE8_MEMBER(smsbootleg_state::port18_w) } -ADDRESS_MAP_START(smsbootleg_state::sms_supergame_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH +void smsbootleg_state::sms_supergame_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); - AM_RANGE(0x04, 0x04) AM_READNOP //AM_READ_PORT("IN0") // these - AM_RANGE(0x08, 0x08) AM_WRITE(port08_w) - AM_RANGE(0x14, 0x14) AM_READNOP //AM_READ_PORT("IN1") // seem to be from a coinage / timer MCU, changing them directly changes the credits / time value - AM_RANGE(0x18, 0x18) AM_WRITE(port18_w) + map(0x04, 0x04).nopr(); //AM_READ_PORT("IN0") // these + map(0x08, 0x08).w(this, FUNC(smsbootleg_state::port08_w)); + map(0x14, 0x14).nopr(); //AM_READ_PORT("IN1") // seem to be from a coinage / timer MCU, changing them directly changes the credits / time value + map(0x18, 0x18).w(this, FUNC(smsbootleg_state::port18_w)); - AM_RANGE(0x40, 0x7f) AM_READWRITE(sms_count_r, sms_psg_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, vram_read, vram_write) - AM_RANGE(0x81, 0x81) AM_MIRROR(0x3e) AM_DEVREADWRITE("sms_vdp", sega315_5124_device, register_read, register_write) + map(0x40, 0x7f).rw(this, FUNC(smsbootleg_state::sms_count_r), FUNC(smsbootleg_state::sms_psg_w)); + map(0x80, 0x80).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::vram_read), FUNC(sega315_5124_device::vram_write)); + map(0x81, 0x81).mirror(0x3e).rw(m_vdp, FUNC(sega315_5124_device::register_read), FUNC(sega315_5124_device::register_write)); - AM_RANGE(0xdc, 0xdc) AM_READ_PORT("IN2") -ADDRESS_MAP_END + map(0xdc, 0xdc).portr("IN2"); +} diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp index f6beb935e8e..e922a6e922a 100644 --- a/src/mame/drivers/smsmcorp.cpp +++ b/src/mame/drivers/smsmcorp.cpp @@ -484,34 +484,37 @@ uint32_t smsmfg_state::screen_update_sms(screen_device &screen, bitmap_ind16 &bi * *************************************/ -ADDRESS_MAP_START(smsmfg_state::sms_map) - AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x00800, 0x00803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x01000, 0x01007) AM_WRITE(video_w) - AM_RANGE(0x01800, 0x01803) AM_READWRITE(link_r, link_w) - AM_RANGE(0x04000, 0x07fff) AM_ROMBANK("bank1") - AM_RANGE(0x04000, 0x04000) AM_WRITE(bankswitch_w) - AM_RANGE(0x08000, 0x0ffff) AM_ROM - AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors -ADDRESS_MAP_END - -ADDRESS_MAP_START(smsmfg_state::sureshot_map) - AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x02000, 0x02007) AM_WRITE(video_w) - AM_RANGE(0x03000, 0x03003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x03800, 0x03803) AM_READWRITE(link_r, link_w) - AM_RANGE(0x08000, 0x0ffff) AM_ROM - AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors -ADDRESS_MAP_END - -ADDRESS_MAP_START(smsmfg_state::sub_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x3100, 0x3103) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x3381, 0x3382) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x3400, 0x3400) AM_READ(z80_8088_r) - AM_RANGE(0x3500, 0x3501) AM_READWRITE(p03_r, p03_w) -ADDRESS_MAP_END +void smsmfg_state::sms_map(address_map &map) +{ + map(0x00000, 0x007ff).ram().share("nvram"); + map(0x00800, 0x00803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x01000, 0x01007).w(this, FUNC(smsmfg_state::video_w)); + map(0x01800, 0x01803).rw(this, FUNC(smsmfg_state::link_r), FUNC(smsmfg_state::link_w)); + map(0x04000, 0x07fff).bankr("bank1"); + map(0x04000, 0x04000).w(this, FUNC(smsmfg_state::bankswitch_w)); + map(0x08000, 0x0ffff).rom(); + map(0xf8000, 0xfffff).rom(); // mirror for vectors +} + +void smsmfg_state::sureshot_map(address_map &map) +{ + map(0x00000, 0x007ff).ram().share("nvram"); + map(0x02000, 0x02007).w(this, FUNC(smsmfg_state::video_w)); + map(0x03000, 0x03003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x03800, 0x03803).rw(this, FUNC(smsmfg_state::link_r), FUNC(smsmfg_state::link_w)); + map(0x08000, 0x0ffff).rom(); + map(0xf8000, 0xfffff).rom(); // mirror for vectors +} + +void smsmfg_state::sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x27ff).ram(); + map(0x3100, 0x3103).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x3381, 0x3382).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x3400, 0x3400).r(this, FUNC(smsmfg_state::z80_8088_r)); + map(0x3500, 0x3501).rw(this, FUNC(smsmfg_state::p03_r), FUNC(smsmfg_state::p03_w)); +} /************************************* * diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp index 604d131f2c9..e84729717f0 100644 --- a/src/mame/drivers/snes.cpp +++ b/src/mame/drivers/snes.cpp @@ -1012,17 +1012,19 @@ WRITE8_MEMBER( snes_console_state::pfest94_lo_w ) * *************************************/ -ADDRESS_MAP_START(snes_console_state::snes_map) +void snes_console_state::snes_map(address_map &map) +{ // AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes20_lo_r, snes20_lo_w) - AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ + map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ // AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes20_hi_r, snes20_hi_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(snes_console_state::spc_map) - AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */ - AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */ - AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w) -ADDRESS_MAP_END +void snes_console_state::spc_map(address_map &map) +{ + map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */ + map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */ + map(0x0100, 0xffff).rw(this, FUNC(snes_console_state::spc_ram_100_r), FUNC(snes_console_state::spc_ram_100_w)); +} /************************************* diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp index fdf2c424bef..884375fdbb4 100644 --- a/src/mame/drivers/snesb.cpp +++ b/src/mame/drivers/snesb.cpp @@ -297,11 +297,12 @@ READ8_MEMBER(snesb_state::snesb_coin_r) } -ADDRESS_MAP_START(snesb_state::snesb_map) - AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes_r_bank1, snes_w_bank1) - AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ - AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* Mirror and ROM */ -ADDRESS_MAP_END +void snesb_state::snesb_map(address_map &map) +{ + map(0x000000, 0x7dffff).rw(this, FUNC(snesb_state::snes_r_bank1), FUNC(snesb_state::snes_w_bank1)); + map(0x7e0000, 0x7fffff).ram(); /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */ + map(0x800000, 0xffffff).rw(this, FUNC(snesb_state::snes_r_bank2), FUNC(snesb_state::snes_w_bank2)); /* Mirror and ROM */ +} READ8_MEMBER(snesb_state::spc_ram_100_r) { @@ -313,11 +314,12 @@ WRITE8_MEMBER(snesb_state::spc_ram_100_w) m_spc700->spc_ram_w(space, offset + 0x100, data); } -ADDRESS_MAP_START(snesb_state::spc_mem) - AM_RANGE(0x0000, 0x00ef) AM_DEVREADWRITE("spc700", snes_sound_device, spc_ram_r, spc_ram_w) /* lower 32k ram */ - AM_RANGE(0x00f0, 0x00ff) AM_DEVREADWRITE("spc700", snes_sound_device, spc_io_r, spc_io_w) /* spc io */ - AM_RANGE(0x0100, 0xffff) AM_READWRITE(spc_ram_100_r, spc_ram_100_w) -ADDRESS_MAP_END +void snesb_state::spc_mem(address_map &map) +{ + map(0x0000, 0x00ef).rw(m_spc700, FUNC(snes_sound_device::spc_ram_r), FUNC(snes_sound_device::spc_ram_w)); /* lower 32k ram */ + map(0x00f0, 0x00ff).rw(m_spc700, FUNC(snes_sound_device::spc_io_r), FUNC(snes_sound_device::spc_io_w)); /* spc io */ + map(0x0100, 0xffff).rw(this, FUNC(snesb_state::spc_ram_100_r), FUNC(snesb_state::spc_ram_100_w)); +} static INPUT_PORTS_START( snes_common ) @@ -721,8 +723,9 @@ MACHINE_CONFIG_START(snesb_state::kinstb) MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) MACHINE_CONFIG_END -ADDRESS_MAP_START(snesb_state::mcu_io_map) -ADDRESS_MAP_END +void snesb_state::mcu_io_map(address_map &map) +{ +} MACHINE_CONFIG_START(snesb_state::mk3snes) diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp index 92f0a7dcbf4..2efcde926b7 100644 --- a/src/mame/drivers/snk.cpp +++ b/src/mame/drivers/snk.cpp @@ -819,667 +819,706 @@ CUSTOM_INPUT_MEMBER(snk_state::snk_bonus_r) /************************************************************************/ -ADDRESS_MAP_START(snk_state::marvins_cpuA_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_WRITE(marvins_palette_bank_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1") - AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2") - AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w) - AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1") - AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2") - AM_RANGE(0x8600, 0x8600) AM_WRITE(marvins_flipscreen_w) - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share5") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM - AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w) - AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::marvins_cpuB_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share5") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w) - AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w) -ADDRESS_MAP_END +void snk_state::marvins_cpuA_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6000).w(this, FUNC(snk_state::marvins_palette_bank_w)); + map(0x8000, 0x8000).portr("IN0"); + map(0x8100, 0x8100).portr("IN1"); + map(0x8200, 0x8200).portr("IN2"); + map(0x8300, 0x8300).w(this, FUNC(snk_state::marvins_soundlatch_w)); + map(0x8400, 0x8400).portr("DSW1"); + map(0x8500, 0x8500).portr("DSW2"); + map(0x8600, 0x8600).w(this, FUNC(snk_state::marvins_flipscreen_w)); + map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc000, 0xcfff).ram().share("spriteram"); // + work ram + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram"); + map(0xd800, 0xdfff).ram().share("share3"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram().share("share5"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM + map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w)); + map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w)); + map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w)); +} + +void snk_state::marvins_cpuB_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc000, 0xcfff).ram().share("spriteram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram"); + map(0xd800, 0xdfff).ram().share("share3"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram().share("share5"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); + map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w)); + map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w)); + map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w)); +} // vangrd2 accesses video registers at xxF1 instead of xx00 -ADDRESS_MAP_START(snk_state::madcrash_cpuA_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1") - AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2") - AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w) - AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1") - AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2") - AM_RANGE(0x8600, 0x8600) AM_MIRROR(0xff) AM_WRITE(marvins_flipscreen_w) - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share5") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM - AM_RANGE(0xf800, 0xf800) AM_MIRROR(0xff) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xf900, 0xf900) AM_MIRROR(0xff) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xfa00, 0xfa00) AM_MIRROR(0xff) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xfb00, 0xfb00) AM_MIRROR(0xff) AM_WRITE(marvins_scroll_msb_w) - AM_RANGE(0xfc00, 0xfc00) AM_MIRROR(0xff) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xfd00, 0xfd00) AM_MIRROR(0xff) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0xff) AM_WRITE(snk_fg_scrolly_w) - AM_RANGE(0xff00, 0xff00) AM_MIRROR(0xff) AM_WRITE(snk_fg_scrollx_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::madcrash_cpuB_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0x8700, 0x8700) AM_WRITE(snk_cpuB_nmi_ack_w) // vangrd2 - AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w) // madcrash - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share5") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0xd800, 0xd800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xd900, 0xd900) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xda00, 0xda00) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xdb00, 0xdb00) AM_WRITE(marvins_scroll_msb_w) - AM_RANGE(0xdc00, 0xdc00) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xdd00, 0xdd00) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xde00, 0xde00) AM_WRITE(snk_fg_scrolly_w) - AM_RANGE(0xdf00, 0xdf00) AM_WRITE(snk_fg_scrollx_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::madcrush_cpuA_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN1") - AM_RANGE(0x8200, 0x8200) AM_READ_PORT("IN2") - AM_RANGE(0x8300, 0x8300) AM_WRITE(marvins_soundlatch_w) - AM_RANGE(0x8400, 0x8400) AM_READ_PORT("DSW1") - AM_RANGE(0x8500, 0x8500) AM_READ_PORT("DSW2") - AM_RANGE(0x8600, 0x8600) AM_MIRROR(0xff) AM_WRITE(marvins_flipscreen_w) - AM_RANGE(0x8700, 0x8700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w) - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share5") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w) - AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::madcrush_cpuB_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share5") - AM_RANGE(0xc800, 0xc800) AM_MIRROR(0xff) AM_WRITE(marvins_palette_bank_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(marvins_fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") // ?? - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(snk_fg_scrolly_w) - AM_RANGE(0xfb00, 0xfb00) AM_WRITE(snk_fg_scrollx_w) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xfd00, 0xfd00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xfe00, 0xfe00) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xff00, 0xff00) AM_WRITE(marvins_scroll_msb_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::jcross_cpuA_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN1") - AM_RANGE(0xa200, 0xa200) AM_READ_PORT("IN2") - AM_RANGE(0xa300, 0xa300) AM_WRITE(sgladiat_soundlatch_w) - AM_RANGE(0xa400, 0xa400) AM_READ_PORT("DSW1") - AM_RANGE(0xa500, 0xa500) AM_READ_PORT("DSW2") - AM_RANGE(0xa600, 0xa600) AM_WRITE(sgladiat_flipscreen_w) // flip screen, bg palette bank - AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xd300, 0xd300) AM_WRITE(jcross_scroll_msb_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xd500, 0xd500) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xd600, 0xd600) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xd700, 0xd700) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM - AM_RANGE(0xffff, 0xffff) AM_WRITENOP // simply a program patch to not write to two not existing video registers? -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::jcross_cpuB_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xd7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::sgladiat_cpuA_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("IN1") - AM_RANGE(0xa200, 0xa200) AM_READ_PORT("IN2") - AM_RANGE(0xa300, 0xa300) AM_WRITE(sgladiat_soundlatch_w) - AM_RANGE(0xa400, 0xa400) AM_READ_PORT("DSW1") - AM_RANGE(0xa500, 0xa500) AM_READ_PORT("DSW2") - AM_RANGE(0xa600, 0xa600) AM_WRITE(sgladiat_flipscreen_w) // flip screen, bg palette bank - AM_RANGE(0xa700, 0xa700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xd200, 0xd200) AM_WRITENOP // unknown - AM_RANGE(0xd300, 0xd300) AM_WRITE(sgladiat_scroll_msb_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xd500, 0xd500) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xd600, 0xd600) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xd700, 0xd700) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::sgladiat_cpuB_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xa600, 0xa600) AM_WRITE(sgladiat_flipscreen_w) // flip screen, bg palette bank - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xda00, 0xda00) AM_WRITENOP // unknown - AM_RANGE(0xdb00, 0xdb00) AM_WRITE(sgladiat_scroll_msb_w) - AM_RANGE(0xdc00, 0xdc00) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xdd00, 0xdd00) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xde00, 0xde00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xdf00, 0xdf00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::hal21_cpuA_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc300, 0xc300) AM_WRITE(sgladiat_soundlatch_w) - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW1") - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW2") - AM_RANGE(0xc600, 0xc600) AM_WRITE(hal21_flipscreen_w) // flip screen, bg tile and palette bank - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xd300, 0xd300) AM_WRITE(jcross_scroll_msb_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xd500, 0xd500) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xd600, 0xd600) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xd700, 0xd700) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xe800, 0xf7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::hal21_cpuB_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(snk_cpuB_nmi_ack_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::aso_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(aso_videoattrs_w) // flip screen, scroll msb - AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xca00, 0xca00) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xcb00, 0xcb00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xce00, 0xce00) AM_WRITENOP // always 05? - AM_RANGE(0xcf00, 0xcf00) AM_WRITE(aso_bg_bank_w) // tile and palette bank - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xe800, 0xf7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::aso_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xe7ff) AM_RAM_WRITE(marvins_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::tnk3_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") +void snk_state::madcrash_cpuA_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8000).portr("IN0"); + map(0x8100, 0x8100).portr("IN1"); + map(0x8200, 0x8200).portr("IN2"); + map(0x8300, 0x8300).w(this, FUNC(snk_state::marvins_soundlatch_w)); + map(0x8400, 0x8400).portr("DSW1"); + map(0x8500, 0x8500).portr("DSW2"); + map(0x8600, 0x8600).mirror(0xff).w(this, FUNC(snk_state::marvins_flipscreen_w)); + map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc000, 0xc7ff).ram().share("spriteram"); // + work ram + map(0xc800, 0xc800).mirror(0xff).w(this, FUNC(snk_state::marvins_palette_bank_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share3"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram"); + map(0xe800, 0xefff).ram().share("share5"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM + map(0xf800, 0xf800).mirror(0xff).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xf900, 0xf900).mirror(0xff).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xfa00, 0xfa00).mirror(0xff).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xfb00, 0xfb00).mirror(0xff).w(this, FUNC(snk_state::marvins_scroll_msb_w)); + map(0xfc00, 0xfc00).mirror(0xff).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xfd00, 0xfd00).mirror(0xff).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xfe00, 0xfe00).mirror(0xff).w(this, FUNC(snk_state::snk_fg_scrolly_w)); + map(0xff00, 0xff00).mirror(0xff).w(this, FUNC(snk_state::snk_fg_scrollx_w)); +} + +void snk_state::madcrash_cpuB_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0x8700, 0x8700).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w)); // vangrd2 + map(0xa000, 0xa000).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w)); // madcrash + map(0xc000, 0xc7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram"); + map(0xc800, 0xcfff).ram().share("share5"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); + map(0xd800, 0xd800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xd900, 0xd900).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xda00, 0xda00).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xdb00, 0xdb00).w(this, FUNC(snk_state::marvins_scroll_msb_w)); + map(0xdc00, 0xdc00).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xdd00, 0xdd00).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xde00, 0xde00).w(this, FUNC(snk_state::snk_fg_scrolly_w)); + map(0xdf00, 0xdf00).w(this, FUNC(snk_state::snk_fg_scrollx_w)); + map(0xe000, 0xe7ff).ram().share("spriteram"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xf800, 0xffff).ram().share("share3"); +} + +void snk_state::madcrush_cpuA_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8000).portr("IN0"); + map(0x8100, 0x8100).portr("IN1"); + map(0x8200, 0x8200).portr("IN2"); + map(0x8300, 0x8300).w(this, FUNC(snk_state::marvins_soundlatch_w)); + map(0x8400, 0x8400).portr("DSW1"); + map(0x8500, 0x8500).portr("DSW2"); + map(0x8600, 0x8600).mirror(0xff).w(this, FUNC(snk_state::marvins_flipscreen_w)); + map(0x8700, 0x8700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc000, 0xc7ff).ram().share("spriteram"); // + work ram + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram"); + map(0xc800, 0xc800).mirror(0xff).w(this, FUNC(snk_state::marvins_palette_bank_w)); + map(0xd800, 0xdfff).ram().share("share5"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram().share("share3"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); + map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w)); + map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w)); + map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w)); +} + +void snk_state::madcrush_cpuB_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc000, 0xc7ff).ram().share("spriteram"); // + work ram + map(0xc800, 0xcfff).ram().share("share5"); + map(0xc800, 0xc800).mirror(0xff).w(this, FUNC(snk_state::marvins_palette_bank_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_fg_videoram_w)).share("fg_videoram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); // ?? + map(0xe800, 0xefff).ram().share("share3"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); + map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xfa00, 0xfa00).w(this, FUNC(snk_state::snk_fg_scrolly_w)); + map(0xfb00, 0xfb00).w(this, FUNC(snk_state::snk_fg_scrollx_w)); + map(0xfc00, 0xfc00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xfd00, 0xfd00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xfe00, 0xfe00).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xff00, 0xff00).w(this, FUNC(snk_state::marvins_scroll_msb_w)); +} + + +void snk_state::jcross_cpuA_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa100, 0xa100).portr("IN1"); + map(0xa200, 0xa200).portr("IN2"); + map(0xa300, 0xa300).w(this, FUNC(snk_state::sgladiat_soundlatch_w)); + map(0xa400, 0xa400).portr("DSW1"); + map(0xa500, 0xa500).portr("DSW2"); + map(0xa600, 0xa600).w(this, FUNC(snk_state::sgladiat_flipscreen_w)); // flip screen, bg palette bank + map(0xa700, 0xa700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xd300, 0xd300).w(this, FUNC(snk_state::jcross_scroll_msb_w)); + map(0xd400, 0xd400).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xd500, 0xd500).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xd600, 0xd600).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xd700, 0xd700).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xd800, 0xdfff).ram().share("spriteram"); // + work ram + map(0xe000, 0xefff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM + map(0xffff, 0xffff).nopw(); // simply a program patch to not write to two not existing video registers? +} + +void snk_state::jcross_cpuB_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa700, 0xa700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc000, 0xc7ff).ram().share("spriteram"); + map(0xc800, 0xd7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::sgladiat_cpuA_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).portr("IN0"); + map(0xa100, 0xa100).portr("IN1"); + map(0xa200, 0xa200).portr("IN2"); + map(0xa300, 0xa300).w(this, FUNC(snk_state::sgladiat_soundlatch_w)); + map(0xa400, 0xa400).portr("DSW1"); + map(0xa500, 0xa500).portr("DSW2"); + map(0xa600, 0xa600).w(this, FUNC(snk_state::sgladiat_flipscreen_w)); // flip screen, bg palette bank + map(0xa700, 0xa700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xd200, 0xd200).nopw(); // unknown + map(0xd300, 0xd300).w(this, FUNC(snk_state::sgladiat_scroll_msb_w)); + map(0xd400, 0xd400).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xd500, 0xd500).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xd600, 0xd600).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xd700, 0xd700).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xd800, 0xdfff).ram().share("spriteram"); // + work ram + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram(); + map(0xf000, 0xf7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::sgladiat_cpuB_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xa600, 0xa600).w(this, FUNC(snk_state::sgladiat_flipscreen_w)); // flip screen, bg palette bank + map(0xc000, 0xc7ff).ram().share("spriteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xda00, 0xda00).nopw(); // unknown + map(0xdb00, 0xdb00).w(this, FUNC(snk_state::sgladiat_scroll_msb_w)); + map(0xdc00, 0xdc00).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xdd00, 0xdd00).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xde00, 0xde00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xdf00, 0xdf00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xe000, 0xe7ff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::hal21_cpuA_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc300, 0xc300).w(this, FUNC(snk_state::sgladiat_soundlatch_w)); + map(0xc400, 0xc400).portr("DSW1"); + map(0xc500, 0xc500).portr("DSW2"); + map(0xc600, 0xc600).w(this, FUNC(snk_state::hal21_flipscreen_w)); // flip screen, bg tile and palette bank + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xd300, 0xd300).w(this, FUNC(snk_state::jcross_scroll_msb_w)); + map(0xd400, 0xd400).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xd500, 0xd500).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xd600, 0xd600).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xd700, 0xd700).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xe000, 0xe7ff).ram().share("spriteram"); // + work ram + map(0xe800, 0xf7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::hal21_cpuB_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc000, 0xc7ff).ram().share("spriteram"); + map(0xd000, 0xdfff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::aso_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc500, 0xc500).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::aso_videoattrs_w)); // flip screen, scroll msb + map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xca00, 0xca00).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xcb00, 0xcb00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xcc00, 0xcc00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xce00, 0xce00).nopw(); // always 05? + map(0xcf00, 0xcf00).w(this, FUNC(snk_state::aso_bg_bank_w)); // tile and palette bank + map(0xd800, 0xdfff).ram().share("share1"); + map(0xe000, 0xe7ff).ram().share("spriteram"); // + work ram + map(0xe800, 0xf7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::aso_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xe7ff).ram().w(this, FUNC(snk_state::marvins_bg_videoram_w)).share("bg_videoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::tnk3_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); // c300 is an input in tnk3, output in athena/fitegolf (coin counter) // and in countryc (trackball select) (see DRIVER_INIT). - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(athena_coin_counter_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(tnk3_videoattrs_w) // flip screen, char bank, scroll msb - AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xca00, 0xca00) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xcb00, 0xcb00) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xcf00, 0xcf00) AM_WRITENOP // fitegolf/countryc only. Either 0 or 1. Video related? - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xd800, 0xf7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::tnk3_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // tnk3, athena - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // fitegolf - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xefff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::ikari_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w) // ikarijp doesn't use the coin counter - AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xc880, 0xc880) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xc900, 0xc900) AM_WRITE(ikari_bg_scroll_msb_w) - AM_RANGE(0xc980, 0xc980) AM_WRITE(ikari_unknown_video_w) - AM_RANGE(0xca00, 0xca00) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xca80, 0xca80) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xcb00, 0xcb00) AM_WRITE(snk_sp32_scrolly_w) - AM_RANGE(0xcb80, 0xcb80) AM_WRITE(snk_sp32_scrollx_w) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(hardflags_scrolly_w) - AM_RANGE(0xcc80, 0xcc80) AM_WRITE(hardflags_scrollx_w) - AM_RANGE(0xcd00, 0xcd00) AM_WRITE(ikari_sp_scroll_msb_w) - AM_RANGE(0xcd80, 0xcd80) AM_WRITE(hardflags_scroll_msb_w) - AM_RANGE(0xce00, 0xce00) AM_READ(hardflags1_r) - AM_RANGE(0xce20, 0xce20) AM_READ(hardflags2_r) - AM_RANGE(0xce40, 0xce40) AM_READ(hardflags3_r) - AM_RANGE(0xce60, 0xce60) AM_READ(hardflags4_r) - AM_RANGE(0xce80, 0xce80) AM_READ(hardflags5_r) - AM_RANGE(0xcea0, 0xcea0) AM_READ(hardflags6_r) - AM_RANGE(0xcee0, 0xcee0) AM_READ(hardflags7_r) + map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::athena_coin_counter_w)); + map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc500, 0xc500).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::tnk3_videoattrs_w)); // flip screen, char bank, scroll msb + map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xca00, 0xca00).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xcb00, 0xcb00).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xcc00, 0xcc00).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xcf00, 0xcf00).nopw(); // fitegolf/countryc only. Either 0 or 1. Video related? + map(0xd000, 0xd7ff).ram().share("spriteram"); // + work ram + map(0xd800, 0xf7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::tnk3_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // tnk3, athena + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // fitegolf + map(0xc800, 0xcfff).ram().share("spriteram"); + map(0xd000, 0xefff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::ikari_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w)); // ikarijp doesn't use the coin counter + map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc500, 0xc500).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xc880, 0xc880).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xc900, 0xc900).w(this, FUNC(snk_state::ikari_bg_scroll_msb_w)); + map(0xc980, 0xc980).w(this, FUNC(snk_state::ikari_unknown_video_w)); + map(0xca00, 0xca00).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xca80, 0xca80).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xcb00, 0xcb00).w(this, FUNC(snk_state::snk_sp32_scrolly_w)); + map(0xcb80, 0xcb80).w(this, FUNC(snk_state::snk_sp32_scrollx_w)); + map(0xcc00, 0xcc00).w(this, FUNC(snk_state::hardflags_scrolly_w)); + map(0xcc80, 0xcc80).w(this, FUNC(snk_state::hardflags_scrollx_w)); + map(0xcd00, 0xcd00).w(this, FUNC(snk_state::ikari_sp_scroll_msb_w)); + map(0xcd80, 0xcd80).w(this, FUNC(snk_state::hardflags_scroll_msb_w)); + map(0xce00, 0xce00).r(this, FUNC(snk_state::hardflags1_r)); + map(0xce20, 0xce20).r(this, FUNC(snk_state::hardflags2_r)); + map(0xce40, 0xce40).r(this, FUNC(snk_state::hardflags3_r)); + map(0xce60, 0xce60).r(this, FUNC(snk_state::hardflags4_r)); + map(0xce80, 0xce80).r(this, FUNC(snk_state::hardflags5_r)); + map(0xcea0, 0xcea0).r(this, FUNC(snk_state::hardflags6_r)); + map(0xcee0, 0xcee0).r(this, FUNC(snk_state::hardflags7_r)); // note the mirror. ikari and victroad use d800, ikarijp uses d000 - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_MIRROR(0x0800) AM_SHARE("bg_videoram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::ikari_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc980, 0xc980) AM_WRITE(ikari_unknown_video_w) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(hardflags_scrolly_w) - AM_RANGE(0xcc80, 0xcc80) AM_WRITE(hardflags_scrollx_w) - AM_RANGE(0xcd80, 0xcd80) AM_WRITE(hardflags_scroll_msb_w) - AM_RANGE(0xce00, 0xce00) AM_READ(hardflags1_r) - AM_RANGE(0xce20, 0xce20) AM_READ(hardflags2_r) - AM_RANGE(0xce40, 0xce40) AM_READ(hardflags3_r) - AM_RANGE(0xce60, 0xce60) AM_READ(hardflags4_r) - AM_RANGE(0xce80, 0xce80) AM_READ(hardflags5_r) - AM_RANGE(0xcea0, 0xcea0) AM_READ(hardflags6_r) - AM_RANGE(0xcee0, 0xcee0) AM_READ(hardflags7_r) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_MIRROR(0x0800) AM_SHARE("bg_videoram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::bermudat_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xc880, 0xc880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb - AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xc940, 0xc940) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w) - AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w) + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).mirror(0x0800).share("bg_videoram"); + map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::ikari_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc980, 0xc980).w(this, FUNC(snk_state::ikari_unknown_video_w)); + map(0xcc00, 0xcc00).w(this, FUNC(snk_state::hardflags_scrolly_w)); + map(0xcc80, 0xcc80).w(this, FUNC(snk_state::hardflags_scrollx_w)); + map(0xcd80, 0xcd80).w(this, FUNC(snk_state::hardflags_scroll_msb_w)); + map(0xce00, 0xce00).r(this, FUNC(snk_state::hardflags1_r)); + map(0xce20, 0xce20).r(this, FUNC(snk_state::hardflags2_r)); + map(0xce40, 0xce40).r(this, FUNC(snk_state::hardflags3_r)); + map(0xce60, 0xce60).r(this, FUNC(snk_state::hardflags4_r)); + map(0xce80, 0xce80).r(this, FUNC(snk_state::hardflags5_r)); + map(0xcea0, 0xcea0).r(this, FUNC(snk_state::hardflags6_r)); + map(0xcee0, 0xcee0).r(this, FUNC(snk_state::hardflags7_r)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).mirror(0x0800).share("bg_videoram"); + map(0xe000, 0xf7ff).ram().share("spriteram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::bermudat_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w)); + map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc500, 0xc500).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xc880, 0xc880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb + map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xc940, 0xc940).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w)); + map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w)); // the "turbo check" addresses are only used by bermudat/bermudaj, not bermudaa/worldwar or the other games - AM_RANGE(0xca00, 0xca00) AM_WRITE(turbocheck16_1_w) - AM_RANGE(0xca40, 0xca40) AM_WRITE(turbocheck16_2_w) - AM_RANGE(0xca80, 0xca80) AM_WRITE(gwara_sp_scroll_msb_w) - AM_RANGE(0xcac0, 0xcac0) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xcb00, 0xcb00) AM_READ(turbocheck16_1_r) - AM_RANGE(0xcb10, 0xcb10) AM_READ(turbocheck16_2_r) - AM_RANGE(0xcb20, 0xcb20) AM_READ(turbocheck16_3_r) - AM_RANGE(0xcb30, 0xcb30) AM_READ(turbocheck16_4_r) - AM_RANGE(0xcb40, 0xcb40) AM_READ(turbocheck16_5_r) - AM_RANGE(0xcb50, 0xcb50) AM_READ(turbocheck16_6_r) - AM_RANGE(0xcb60, 0xcb60) AM_READ(turbocheck16_7_r) - AM_RANGE(0xcb70, 0xcb70) AM_READ(turbocheck16_8_r) - AM_RANGE(0xcc00, 0xcc00) AM_WRITE(turbocheck32_1_w) - AM_RANGE(0xcc40, 0xcc40) AM_WRITE(turbocheck32_2_w) - AM_RANGE(0xcc80, 0xcc80) AM_WRITE(turbocheck_msb_w) - AM_RANGE(0xccc0, 0xccc0) AM_READ(turbocheck32_1_r) - AM_RANGE(0xccd0, 0xccd0) AM_READ(turbocheck32_2_r) - AM_RANGE(0xcce0, 0xcce0) AM_READ(turbocheck32_3_r) - AM_RANGE(0xccf0, 0xccf0) AM_READ(turbocheck32_4_r) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::bermudat_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xc880, 0xc880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb - AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xc940, 0xc940) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w) - AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w) - AM_RANGE(0xca80, 0xca80) AM_WRITE(gwara_sp_scroll_msb_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::gwar_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xc880, 0xc880) AM_WRITE(gwar_videoattrs_w) // flip screen, scroll msb - AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xc900, 0xc900) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xc940, 0xc940) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w) - AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w) - AM_RANGE(0xca00, 0xca00) AM_WRITENOP // always 0? - AM_RANGE(0xca40, 0xca40) AM_WRITENOP // always 0? - AM_RANGE(0xcac0, 0xcac0) AM_WRITE(snk_sprite_split_point_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::gwar_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::gwara_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN1") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN2") - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN3") AM_WRITE(ikari_coin_counter_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc500, 0xc500) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xf800, 0xf800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xf840, 0xf840) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xf880, 0xf880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb - AM_RANGE(0xf8c0, 0xf8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xf900, 0xf900) AM_WRITE(snk_sp16_scrolly_w) - AM_RANGE(0xf940, 0xf940) AM_WRITE(snk_sp16_scrollx_w) - AM_RANGE(0xf980, 0xf980) AM_WRITE(snk_sp32_scrolly_w) - AM_RANGE(0xf9c0, 0xf9c0) AM_WRITE(snk_sp32_scrollx_w) - AM_RANGE(0xfa80, 0xfa80) AM_WRITE(gwara_sp_scroll_msb_w) - AM_RANGE(0xfac0, 0xfac0) AM_WRITE(snk_sprite_split_point_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::gwara_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share3") - AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("spriteram") // + work ram - AM_RANGE(0xf8c0, 0xf8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::tdfever_cpuA_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("IN1") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("IN2") - AM_RANGE(0xc180, 0xc180) AM_READ_PORT("IN3") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN4") - AM_RANGE(0xc280, 0xc280) AM_READ_PORT("IN5") - AM_RANGE(0xc300, 0xc300) AM_READ_PORT("IN6") - AM_RANGE(0xc380, 0xc380) AM_READ_PORT("IN7") - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("IN8") - AM_RANGE(0xc480, 0xc480) AM_READ_PORT("IN9") - AM_RANGE(0xc500, 0xc500) AM_WRITE(snk_soundlatch_w) - AM_RANGE(0xc580, 0xc580) AM_READ_PORT("DSW1") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSW2") - AM_RANGE(0xc680, 0xc680) AM_WRITE(tdfever_coin_counter_w) - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuB_nmi_trigger_r, snk_cpuA_nmi_ack_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(snk_bg_scrolly_w) - AM_RANGE(0xc840, 0xc840) AM_WRITE(snk_bg_scrollx_w) - AM_RANGE(0xc880, 0xc880) AM_WRITE(gwara_videoattrs_w) // flip screen, scroll msb - AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xc900, 0xc900) AM_WRITE(tdfever_sp_scroll_msb_w) - AM_RANGE(0xc980, 0xc980) AM_WRITE(snk_sp32_scrolly_w) - AM_RANGE(0xc9c0, 0xc9c0) AM_WRITE(snk_sp32_scrollx_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(tdfever_spriteram_w) AM_SHARE("spriteram") // + work ram - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") // + work RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::tdfever_cpuB_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // tdfever, tdfever2 - AM_RANGE(0xc700, 0xc700) AM_READWRITE(snk_cpuA_nmi_trigger_r, snk_cpuB_nmi_ack_w) // fsoccer - AM_RANGE(0xc8c0, 0xc8c0) AM_WRITE(gwar_tx_bank_w) // char and palette bank - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(snk_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(tdfever_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(snk_tx_videoram_w) AM_SHARE("tx_videoram") -ADDRESS_MAP_END + map(0xca00, 0xca00).w(this, FUNC(snk_state::turbocheck16_1_w)); + map(0xca40, 0xca40).w(this, FUNC(snk_state::turbocheck16_2_w)); + map(0xca80, 0xca80).w(this, FUNC(snk_state::gwara_sp_scroll_msb_w)); + map(0xcac0, 0xcac0).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xcb00, 0xcb00).r(this, FUNC(snk_state::turbocheck16_1_r)); + map(0xcb10, 0xcb10).r(this, FUNC(snk_state::turbocheck16_2_r)); + map(0xcb20, 0xcb20).r(this, FUNC(snk_state::turbocheck16_3_r)); + map(0xcb30, 0xcb30).r(this, FUNC(snk_state::turbocheck16_4_r)); + map(0xcb40, 0xcb40).r(this, FUNC(snk_state::turbocheck16_5_r)); + map(0xcb50, 0xcb50).r(this, FUNC(snk_state::turbocheck16_6_r)); + map(0xcb60, 0xcb60).r(this, FUNC(snk_state::turbocheck16_7_r)); + map(0xcb70, 0xcb70).r(this, FUNC(snk_state::turbocheck16_8_r)); + map(0xcc00, 0xcc00).w(this, FUNC(snk_state::turbocheck32_1_w)); + map(0xcc40, 0xcc40).w(this, FUNC(snk_state::turbocheck32_2_w)); + map(0xcc80, 0xcc80).w(this, FUNC(snk_state::turbocheck_msb_w)); + map(0xccc0, 0xccc0).r(this, FUNC(snk_state::turbocheck32_1_r)); + map(0xccd0, 0xccd0).r(this, FUNC(snk_state::turbocheck32_2_r)); + map(0xcce0, 0xcce0).r(this, FUNC(snk_state::turbocheck32_3_r)); + map(0xccf0, 0xccf0).r(this, FUNC(snk_state::turbocheck32_4_r)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share2"); + map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::bermudat_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xc880, 0xc880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb + map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xc940, 0xc940).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w)); + map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w)); + map(0xca80, 0xca80).w(this, FUNC(snk_state::gwara_sp_scroll_msb_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share2"); + map(0xe000, 0xf7ff).ram().share("spriteram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::gwar_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w)); + map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc500, 0xc500).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xc880, 0xc880).w(this, FUNC(snk_state::gwar_videoattrs_w)); // flip screen, scroll msb + map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xc900, 0xc900).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xc940, 0xc940).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w)); + map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w)); + map(0xca00, 0xca00).nopw(); // always 0? + map(0xca40, 0xca40).nopw(); // always 0? + map(0xcac0, 0xcac0).w(this, FUNC(snk_state::snk_sprite_split_point_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share2"); + map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::gwar_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share2"); + map(0xe000, 0xf7ff).ram().share("spriteram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} + + +void snk_state::gwara_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc100, 0xc100).portr("IN1"); + map(0xc200, 0xc200).portr("IN2"); + map(0xc300, 0xc300).portr("IN3").w(this, FUNC(snk_state::ikari_coin_counter_w)); + map(0xc400, 0xc400).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc500, 0xc500).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xcfff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share3"); + map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram + map(0xf800, 0xf800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xf840, 0xf840).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xf880, 0xf880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb + map(0xf8c0, 0xf8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xf900, 0xf900).w(this, FUNC(snk_state::snk_sp16_scrolly_w)); + map(0xf940, 0xf940).w(this, FUNC(snk_state::snk_sp16_scrollx_w)); + map(0xf980, 0xf980).w(this, FUNC(snk_state::snk_sp32_scrolly_w)); + map(0xf9c0, 0xf9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w)); + map(0xfa80, 0xfa80).w(this, FUNC(snk_state::gwara_sp_scroll_msb_w)); + map(0xfac0, 0xfac0).w(this, FUNC(snk_state::snk_sprite_split_point_w)); +} + +void snk_state::gwara_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); + map(0xc800, 0xcfff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share3"); + map(0xe000, 0xf7ff).ram().share("spriteram"); // + work ram + map(0xf8c0, 0xf8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank +} + + +void snk_state::tdfever_cpuA_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).portr("IN0"); + map(0xc080, 0xc080).portr("IN1"); + map(0xc100, 0xc100).portr("IN2"); + map(0xc180, 0xc180).portr("IN3"); + map(0xc200, 0xc200).portr("IN4"); + map(0xc280, 0xc280).portr("IN5"); + map(0xc300, 0xc300).portr("IN6"); + map(0xc380, 0xc380).portr("IN7"); + map(0xc400, 0xc400).portr("IN8"); + map(0xc480, 0xc480).portr("IN9"); + map(0xc500, 0xc500).w(this, FUNC(snk_state::snk_soundlatch_w)); + map(0xc580, 0xc580).portr("DSW1"); + map(0xc600, 0xc600).portr("DSW2"); + map(0xc680, 0xc680).w(this, FUNC(snk_state::tdfever_coin_counter_w)); + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuB_nmi_trigger_r), FUNC(snk_state::snk_cpuA_nmi_ack_w)); + map(0xc800, 0xc800).w(this, FUNC(snk_state::snk_bg_scrolly_w)); + map(0xc840, 0xc840).w(this, FUNC(snk_state::snk_bg_scrollx_w)); + map(0xc880, 0xc880).w(this, FUNC(snk_state::gwara_videoattrs_w)); // flip screen, scroll msb + map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xc900, 0xc900).w(this, FUNC(snk_state::tdfever_sp_scroll_msb_w)); + map(0xc980, 0xc980).w(this, FUNC(snk_state::snk_sp32_scrolly_w)); + map(0xc9c0, 0xc9c0).w(this, FUNC(snk_state::snk_sp32_scrollx_w)); + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share2"); + map(0xe000, 0xf7ff).ram().w(this, FUNC(snk_state::tdfever_spriteram_w)).share("spriteram"); // + work ram + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); // + work RAM +} + +void snk_state::tdfever_cpuB_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc000).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // tdfever, tdfever2 + map(0xc700, 0xc700).rw(this, FUNC(snk_state::snk_cpuA_nmi_trigger_r), FUNC(snk_state::snk_cpuB_nmi_ack_w)); // fsoccer + map(0xc8c0, 0xc8c0).w(this, FUNC(snk_state::gwar_tx_bank_w)); // char and palette bank + map(0xd000, 0xd7ff).ram().w(this, FUNC(snk_state::snk_bg_videoram_w)).share("bg_videoram"); + map(0xd800, 0xdfff).ram().share("share2"); + map(0xe000, 0xf7ff).ram().w(this, FUNC(snk_state::tdfever_spriteram_w)).share("spriteram"); + map(0xf800, 0xffff).ram().w(this, FUNC(snk_state::snk_tx_videoram_w)).share("tx_videoram"); +} /***********************************************************************/ -ADDRESS_MAP_START(snk_state::marvins_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_READ(marvins_soundlatch_r) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8002, 0x8007) AM_DEVWRITE("wave", snkwave_device, snkwave_w) - AM_RANGE(0x8008, 0x8009) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xa000, 0xa000) AM_READ(marvins_sound_nmi_ack_r) - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::marvins_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READNOP // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::jcross_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(sgladiat_soundlatch_r) - AM_RANGE(0xc000, 0xc000) AM_READ(sgladiat_sound_nmi_ack_r) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xe002, 0xe003) AM_WRITENOP // ? always FFFF, snkwave leftover? - AM_RANGE(0xe004, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::jcross_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(sgladiat_sound_irq_ack_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::hal21_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(sgladiat_soundlatch_r) - AM_RANGE(0xc000, 0xc000) AM_READ(sgladiat_sound_nmi_ack_r) - AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) +void snk_state::marvins_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4000).r(this, FUNC(snk_state::marvins_soundlatch_r)); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8002, 0x8007).w("wave", FUNC(snkwave_device::snkwave_w)); + map(0x8008, 0x8009).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xa000, 0xa000).r(this, FUNC(snk_state::marvins_sound_nmi_ack_r)); + map(0xe000, 0xe7ff).ram(); +} + +void snk_state::marvins_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopr(); // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq +} + + +void snk_state::jcross_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r(this, FUNC(snk_state::sgladiat_soundlatch_r)); + map(0xc000, 0xc000).r(this, FUNC(snk_state::sgladiat_sound_nmi_ack_r)); + map(0xe000, 0xe001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xe002, 0xe003).nopw(); // ? always FFFF, snkwave leftover? + map(0xe004, 0xe005).w("ay2", FUNC(ay8910_device::address_data_w)); +} + +void snk_state::jcross_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(snk_state::sgladiat_sound_irq_ack_r)); +} + + +void snk_state::hal21_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r(this, FUNC(snk_state::sgladiat_soundlatch_r)); + map(0xc000, 0xc000).r(this, FUNC(snk_state::sgladiat_sound_nmi_ack_r)); + map(0xe000, 0xe001).w("ay1", FUNC(ay8910_device::address_data_w)); // AM_RANGE(0xe002, 0xe002) AM_WRITENOP // bitfielded(0-5) details unknown. Filter enable? - AM_RANGE(0xe008, 0xe009) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::hal21_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READNOP // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq -ADDRESS_MAP_END - - -ADDRESS_MAP_START(snk_state::tnk3_YM3526_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc000) AM_READ(tnk3_busy_clear_r) - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym3526_device, read, write) - AM_RANGE(0xe004, 0xe004) AM_READ(tnk3_cmdirq_ack_r) - AM_RANGE(0xe006, 0xe006) AM_READ(tnk3_ymirq_ack_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::aso_YM3526_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xe000) AM_READ(tnk3_busy_clear_r) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym3526_device, read, write) + map(0xe008, 0xe009).w("ay2", FUNC(ay8910_device::address_data_w)); +} + +void snk_state::hal21_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopr(); // read on startup, then the Z80 automatically pulls down the IORQ pin to ack irq +} + + +void snk_state::tnk3_YM3526_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc000).r(this, FUNC(snk_state::tnk3_busy_clear_r)); + map(0xe000, 0xe001).rw("ym1", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); + map(0xe004, 0xe004).r(this, FUNC(snk_state::tnk3_cmdirq_ack_r)); + map(0xe006, 0xe006).r(this, FUNC(snk_state::tnk3_ymirq_ack_r)); +} + +void snk_state::aso_YM3526_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe000, 0xe000).r(this, FUNC(snk_state::tnk3_busy_clear_r)); + map(0xf000, 0xf001).rw("ym1", FUNC(ym3526_device::read), FUNC(ym3526_device::write)); // AM_RANGE(0xf002, 0xf002) AM_READNOP unknown - AM_RANGE(0xf004, 0xf004) AM_READ(tnk3_cmdirq_ack_r) - AM_RANGE(0xf006, 0xf006) AM_READ(tnk3_ymirq_ack_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::YM3526_YM3526_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3526_device, status_port_r, control_port_w) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3526_device, write_port_w) - AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", ym3526_device, status_port_r, control_port_w) - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", ym3526_device, write_port_w) - AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::YM3812_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3812_device, write_port_w) - AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::YM3526_Y8950_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3526_device, status_port_r, control_port_w) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3526_device, write_port_w) - AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w) - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w) - AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::YM3812_Y8950_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3812_device, write_port_w) - AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w) - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w) - AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk_state::Y8950_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w) - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w) - AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w) -ADDRESS_MAP_END + map(0xf004, 0xf004).r(this, FUNC(snk_state::tnk3_cmdirq_ack_r)); + map(0xf006, 0xf006).r(this, FUNC(snk_state::tnk3_ymirq_ack_r)); +} + +void snk_state::YM3526_YM3526_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).rw("ym1", FUNC(ym3526_device::status_port_r), FUNC(ym3526_device::control_port_w)); + map(0xec00, 0xec00).w("ym1", FUNC(ym3526_device::write_port_w)); + map(0xf000, 0xf000).rw("ym2", FUNC(ym3526_device::status_port_r), FUNC(ym3526_device::control_port_w)); + map(0xf400, 0xf400).w("ym2", FUNC(ym3526_device::write_port_w)); + map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w)); +} + +void snk_state::YM3812_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).rw("ym1", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0xec00, 0xec00).w("ym1", FUNC(ym3812_device::write_port_w)); + map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w)); +} + +void snk_state::YM3526_Y8950_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).rw("ym1", FUNC(ym3526_device::status_port_r), FUNC(ym3526_device::control_port_w)); + map(0xec00, 0xec00).w("ym1", FUNC(ym3526_device::write_port_w)); + map(0xf000, 0xf000).rw("ym2", FUNC(y8950_device::status_port_r), FUNC(y8950_device::control_port_w)); + map(0xf400, 0xf400).w("ym2", FUNC(y8950_device::write_port_w)); + map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w)); +} + +void snk_state::YM3812_Y8950_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).rw("ym1", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0xec00, 0xec00).w("ym1", FUNC(ym3812_device::write_port_w)); + map(0xf000, 0xf000).rw("ym2", FUNC(y8950_device::status_port_r), FUNC(y8950_device::control_port_w)); + map(0xf400, 0xf400).w("ym2", FUNC(y8950_device::write_port_w)); + map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w)); +} + +void snk_state::Y8950_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf000).rw("ym2", FUNC(y8950_device::status_port_r), FUNC(y8950_device::control_port_w)); + map(0xf400, 0xf400).w("ym2", FUNC(y8950_device::write_port_w)); + map(0xf800, 0xf800).rw(this, FUNC(snk_state::snk_sound_status_r), FUNC(snk_state::snk_sound_status_w)); +} /*********************************************************************/ diff --git a/src/mame/drivers/snk6502.cpp b/src/mame/drivers/snk6502.cpp index 56070575241..f8a552f0ba2 100644 --- a/src/mame/drivers/snk6502.cpp +++ b/src/mame/drivers/snk6502.cpp @@ -347,105 +347,110 @@ CUSTOM_INPUT_MEMBER(snk6502_state::sasuke_count_r) * *************************************/ -ADDRESS_MAP_START(snk6502_state::sasuke_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x4000, 0x8fff) AM_ROM - AM_RANGE(0xb000, 0xb001) AM_DEVWRITE("snk6502", snk6502_sound_device, sasuke_sound_w) - AM_RANGE(0xb002, 0xb002) AM_WRITE(satansat_b002_w) /* flip screen & irq enable */ - AM_RANGE(0xb003, 0xb003) AM_WRITE(satansat_backcolor_w) - AM_RANGE(0xb004, 0xb004) AM_READ_PORT("IN0") - AM_RANGE(0xb005, 0xb005) AM_READ_PORT("IN1") - AM_RANGE(0xb006, 0xb006) AM_READ_PORT("DSW") - AM_RANGE(0xb007, 0xb007) AM_READ_PORT("IN2") - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk6502_state::satansat_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x4000, 0x9fff) AM_ROM - AM_RANGE(0xb000, 0xb001) AM_DEVWRITE("snk6502", snk6502_sound_device, satansat_sound_w) - AM_RANGE(0xb002, 0xb002) AM_WRITE(satansat_b002_w) /* flip screen & irq enable */ - AM_RANGE(0xb003, 0xb003) AM_WRITE(satansat_backcolor_w) - AM_RANGE(0xb004, 0xb004) AM_READ_PORT("IN0") - AM_RANGE(0xb005, 0xb005) AM_READ_PORT("IN1") - AM_RANGE(0xb006, 0xb006) AM_READ_PORT("DSW") - AM_RANGE(0xb007, 0xb007) AM_READ_PORT("IN2") - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk6502_state::vanguard_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x3001, 0x3001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x3100, 0x3102) AM_DEVWRITE("snk6502", snk6502_sound_device, vanguard_sound_w) - AM_RANGE(0x3103, 0x3103) AM_WRITE(flipscreen_w) - AM_RANGE(0x3104, 0x3104) AM_READ_PORT("IN0") - AM_RANGE(0x3105, 0x3105) AM_READ_PORT("IN1") - AM_RANGE(0x3106, 0x3106) AM_READ_PORT("DSW") - AM_RANGE(0x3107, 0x3107) AM_READ_PORT("IN2") - AM_RANGE(0x3200, 0x3200) AM_WRITE(scrollx_w) - AM_RANGE(0x3300, 0x3300) AM_WRITE(scrolly_w) - AM_RANGE(0x3400, 0x3400) AM_DEVWRITE("snk6502", snk6502_sound_device, vanguard_speech_w) // speech - AM_RANGE(0x4000, 0xbfff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM /* for the reset / interrupt vectors */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk6502_state::fantasy_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x2100, 0x2102) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w) - AM_RANGE(0x2103, 0x2103) AM_WRITE(fantasy_flipscreen_w) // affects both video and sound - AM_RANGE(0x2104, 0x2104) AM_READ_PORT("IN0") - AM_RANGE(0x2105, 0x2105) AM_READ_PORT("IN1") - AM_RANGE(0x2106, 0x2106) AM_READ_PORT("DSW") - AM_RANGE(0x2107, 0x2107) AM_READ_PORT("IN2") - AM_RANGE(0x2200, 0x2200) AM_WRITE(scrollx_w) - AM_RANGE(0x2300, 0x2300) AM_WRITE(scrolly_w) - AM_RANGE(0x2400, 0x2400) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_speech_w) // speech - AM_RANGE(0x3000, 0xbfff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk6502_state::pballoon_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x3000, 0x9fff) AM_ROM - AM_RANGE(0xb000, 0xb000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xb001, 0xb001) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0xb100, 0xb102) AM_DEVWRITE("snk6502", snk6502_sound_device, fantasy_sound_w) - AM_RANGE(0xb103, 0xb103) AM_WRITE(fantasy_flipscreen_w) // affects both video and sound - AM_RANGE(0xb104, 0xb104) AM_READ_PORT("IN0") - AM_RANGE(0xb105, 0xb105) AM_READ_PORT("IN1") - AM_RANGE(0xb106, 0xb106) AM_READ_PORT("DSW") - AM_RANGE(0xb107, 0xb107) AM_READ_PORT("IN2") - AM_RANGE(0xb200, 0xb200) AM_WRITE(scrollx_w) - AM_RANGE(0xb300, 0xb300) AM_WRITE(scrolly_w) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void snk6502_state::sasuke_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2"); + map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram"); + map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w)); + map(0x4000, 0x8fff).rom(); + map(0xb000, 0xb001).w(m_sound, FUNC(snk6502_sound_device::sasuke_sound_w)); + map(0xb002, 0xb002).w(this, FUNC(snk6502_state::satansat_b002_w)); /* flip screen & irq enable */ + map(0xb003, 0xb003).w(this, FUNC(snk6502_state::satansat_backcolor_w)); + map(0xb004, 0xb004).portr("IN0"); + map(0xb005, 0xb005).portr("IN1"); + map(0xb006, 0xb006).portr("DSW"); + map(0xb007, 0xb007).portr("IN2"); + map(0xf800, 0xffff).rom(); +} + +void snk6502_state::satansat_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2"); + map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram"); + map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w)); + map(0x4000, 0x9fff).rom(); + map(0xb000, 0xb001).w(m_sound, FUNC(snk6502_sound_device::satansat_sound_w)); + map(0xb002, 0xb002).w(this, FUNC(snk6502_state::satansat_b002_w)); /* flip screen & irq enable */ + map(0xb003, 0xb003).w(this, FUNC(snk6502_state::satansat_backcolor_w)); + map(0xb004, 0xb004).portr("IN0"); + map(0xb005, 0xb005).portr("IN1"); + map(0xb006, 0xb006).portr("DSW"); + map(0xb007, 0xb007).portr("IN2"); + map(0xf800, 0xffff).rom(); +} + +void snk6502_state::vanguard_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2"); + map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram"); + map(0x3000, 0x3000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x3001, 0x3001).w("crtc", FUNC(mc6845_device::register_w)); + map(0x3100, 0x3102).w(m_sound, FUNC(snk6502_sound_device::vanguard_sound_w)); + map(0x3103, 0x3103).w(this, FUNC(snk6502_state::flipscreen_w)); + map(0x3104, 0x3104).portr("IN0"); + map(0x3105, 0x3105).portr("IN1"); + map(0x3106, 0x3106).portr("DSW"); + map(0x3107, 0x3107).portr("IN2"); + map(0x3200, 0x3200).w(this, FUNC(snk6502_state::scrollx_w)); + map(0x3300, 0x3300).w(this, FUNC(snk6502_state::scrolly_w)); + map(0x3400, 0x3400).w(m_sound, FUNC(snk6502_sound_device::vanguard_speech_w)); // speech + map(0x4000, 0xbfff).rom(); + map(0xf000, 0xffff).rom(); /* for the reset / interrupt vectors */ +} + +void snk6502_state::fantasy_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2"); + map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram"); + map(0x2000, 0x2000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2001, 0x2001).w("crtc", FUNC(mc6845_device::register_w)); + map(0x2100, 0x2102).w(m_sound, FUNC(snk6502_sound_device::fantasy_sound_w)); + map(0x2103, 0x2103).w(this, FUNC(snk6502_state::fantasy_flipscreen_w)); // affects both video and sound + map(0x2104, 0x2104).portr("IN0"); + map(0x2105, 0x2105).portr("IN1"); + map(0x2106, 0x2106).portr("DSW"); + map(0x2107, 0x2107).portr("IN2"); + map(0x2200, 0x2200).w(this, FUNC(snk6502_state::scrollx_w)); + map(0x2300, 0x2300).w(this, FUNC(snk6502_state::scrolly_w)); + map(0x2400, 0x2400).w(m_sound, FUNC(snk6502_sound_device::fantasy_speech_w)); // speech + map(0x3000, 0xbfff).rom(); + map(0xf000, 0xffff).rom(); +} + +void snk6502_state::pballoon_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0400, 0x07ff).ram().w(this, FUNC(snk6502_state::videoram2_w)).share("videoram2"); + map(0x0800, 0x0bff).ram().w(this, FUNC(snk6502_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0fff).ram().w(this, FUNC(snk6502_state::colorram_w)).share("colorram"); + map(0x1000, 0x1fff).ram().w(this, FUNC(snk6502_state::charram_w)).share("charram"); + map(0x3000, 0x9fff).rom(); + map(0xb000, 0xb000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xb001, 0xb001).w("crtc", FUNC(mc6845_device::register_w)); + map(0xb100, 0xb102).w(m_sound, FUNC(snk6502_sound_device::fantasy_sound_w)); + map(0xb103, 0xb103).w(this, FUNC(snk6502_state::fantasy_flipscreen_w)); // affects both video and sound + map(0xb104, 0xb104).portr("IN0"); + map(0xb105, 0xb105).portr("IN1"); + map(0xb106, 0xb106).portr("DSW"); + map(0xb107, 0xb107).portr("IN2"); + map(0xb200, 0xb200).w(this, FUNC(snk6502_state::scrollx_w)); + map(0xb300, 0xb300).w(this, FUNC(snk6502_state::scrolly_w)); + map(0xf000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/snk68.cpp b/src/mame/drivers/snk68.cpp index 488ec234ef0..c312f5386ca 100644 --- a/src/mame/drivers/snk68.cpp +++ b/src/mame/drivers/snk68.cpp @@ -104,52 +104,55 @@ WRITE8_MEMBER(snk68_state::sound_w) /*******************************************************************************/ -ADDRESS_MAP_START(snk68_state::pow_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM - AM_RANGE(0x080000, 0x080001) AM_READ(control_1_r) - AM_RANGE(0x080000, 0x080001) AM_WRITE8(sound_w, 0xff00) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(pow_flipscreen_w) // + char bank - AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* Watchdog or IRQ ack */ - AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* Watchdog or IRQ ack */ - AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") - AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2") +void snk68_state::pow_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram(); + map(0x080000, 0x080001).r(this, FUNC(snk68_state::control_1_r)); + map(0x080000, 0x080000).w(this, FUNC(snk68_state::sound_w)); + map(0x0c0000, 0x0c0001).portr("SYSTEM"); + map(0x0c0000, 0x0c0001).w(this, FUNC(snk68_state::pow_flipscreen_w)); // + char bank + map(0x0e0000, 0x0e0001).nopr(); /* Watchdog or IRQ ack */ + map(0x0e8000, 0x0e8001).nopr(); /* Watchdog or IRQ ack */ + map(0x0f0000, 0x0f0001).portr("DSW1"); + map(0x0f0008, 0x0f0009).portr("DSW2"); // AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP /* ?? */ - AM_RANGE(0x100000, 0x100fff) AM_READWRITE(pow_fg_videoram_r, pow_fg_videoram_w) AM_MIRROR(0x1000) AM_SHARE("pow_fg_videoram") // 8-bit - AM_RANGE(0x200000, 0x207fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(snk68_state::searchar_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM - AM_RANGE(0x080000, 0x080005) AM_READ(protcontrols_r) /* Player 1 & 2 */ - AM_RANGE(0x080000, 0x080001) AM_WRITE8(sound_w, 0xff00) - AM_RANGE(0x080006, 0x080007) AM_WRITE(protection_w) /* top byte unknown, bottom is protection in ikari3 and streetsm */ - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(searchar_flipscreen_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ(rotary_1_r) /* Player 1 rotary */ - AM_RANGE(0x0c8000, 0x0c8001) AM_READ(rotary_2_r) /* Player 2 rotary */ - AM_RANGE(0x0d0000, 0x0d0001) AM_READ(rotary_lsb_r) /* Extra rotary bits */ - AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* Watchdog or IRQ ack */ - AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* Watchdog or IRQ ack */ + map(0x100000, 0x100fff).rw(this, FUNC(snk68_state::pow_fg_videoram_r), FUNC(snk68_state::pow_fg_videoram_w)).mirror(0x1000).share("pow_fg_videoram"); // 8-bit + map(0x200000, 0x207fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram"); // only partially populated + map(0x400000, 0x400fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); +} + +void snk68_state::searchar_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram(); + map(0x080000, 0x080005).r(this, FUNC(snk68_state::protcontrols_r)); /* Player 1 & 2 */ + map(0x080000, 0x080000).w(this, FUNC(snk68_state::sound_w)); + map(0x080006, 0x080007).w(this, FUNC(snk68_state::protection_w)); /* top byte unknown, bottom is protection in ikari3 and streetsm */ + map(0x0c0000, 0x0c0001).w(this, FUNC(snk68_state::searchar_flipscreen_w)); + map(0x0c0000, 0x0c0001).r(this, FUNC(snk68_state::rotary_1_r)); /* Player 1 rotary */ + map(0x0c8000, 0x0c8001).r(this, FUNC(snk68_state::rotary_2_r)); /* Player 2 rotary */ + map(0x0d0000, 0x0d0001).r(this, FUNC(snk68_state::rotary_lsb_r)); /* Extra rotary bits */ + map(0x0e0000, 0x0e0001).nopr(); /* Watchdog or IRQ ack */ + map(0x0e8000, 0x0e8001).nopr(); /* Watchdog or IRQ ack */ // AM_RANGE(0x0f0000, 0x0f0001) AM_WRITENOP /* ?? */ - AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") - AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2") - AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0xff00) - AM_RANGE(0x100000, 0x107fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated - AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(searchar_fg_videoram_w) AM_MIRROR(0x1000) AM_SHARE("pow_fg_videoram") /* Mirror is used by Ikari 3 */ - AM_RANGE(0x300000, 0x33ffff) AM_ROM AM_REGION("user1", 0) /* Extra code bank */ - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END + map(0x0f0000, 0x0f0001).portr("DSW1"); + map(0x0f0008, 0x0f0009).portr("DSW2"); + map(0x0f8000, 0x0f8000).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x100000, 0x107fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram"); // only partially populated + map(0x200000, 0x200fff).ram().w(this, FUNC(snk68_state::searchar_fg_videoram_w)).mirror(0x1000).share("pow_fg_videoram"); /* Mirror is used by Ikari 3 */ + map(0x300000, 0x33ffff).rom().region("user1", 0); /* Extra code bank */ + map(0x400000, 0x400fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); +} /******************************************************************************/ -ADDRESS_MAP_START(snk68_state::sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void snk68_state::sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} WRITE8_MEMBER(snk68_state::D7759_write_port_0_w) { @@ -163,13 +166,14 @@ WRITE8_MEMBER(snk68_state::D7759_upd_reset_w) m_upd7759->reset_w(data & 0x80); } -ADDRESS_MAP_START(snk68_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) - AM_RANGE(0x40, 0x40) AM_WRITE(D7759_write_port_0_w) - AM_RANGE(0x80, 0x80) AM_WRITE(D7759_upd_reset_w) -ADDRESS_MAP_END +void snk68_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x40, 0x40).w(this, FUNC(snk68_state::D7759_write_port_0_w)); + map(0x80, 0x80).w(this, FUNC(snk68_state::D7759_upd_reset_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/snookr10.cpp b/src/mame/drivers/snookr10.cpp index a9742820d4e..098d979dfa1 100644 --- a/src/mame/drivers/snookr10.cpp +++ b/src/mame/drivers/snookr10.cpp @@ -764,49 +764,52 @@ READ8_MEMBER(snookr10_state::port2000_8_r) * Memory map information * *************************/ -ADDRESS_MAP_START(snookr10_state::snookr10_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */ - AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("IN2") /* IN2 */ - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("SW1") /* DS1 */ - AM_RANGE(0x3004, 0x3004) AM_READ(dsw_port_1_r) /* complement of DS1, bit 7 */ - AM_RANGE(0x5000, 0x5000) AM_WRITE(output_port_0_w) /* OUT0 */ - AM_RANGE(0x5001, 0x5001) AM_WRITE(output_port_1_w) /* OUT1 */ - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snookr10_state::tenballs_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */ - AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x4001, 0x4001) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x4002, 0x4002) AM_READ_PORT("IN2") /* IN2 */ - AM_RANGE(0x4003, 0x4003) AM_READ_PORT("SW1") /* DS1 */ - AM_RANGE(0x5000, 0x5000) AM_WRITE(output_port_0_w) /* OUT0 */ - AM_RANGE(0x5001, 0x5001) AM_WRITE(output_port_1_w) /* OUT1 */ - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snookr10_state::crystalc_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed 6116 */ - AM_RANGE(0x1000, 0x1000) AM_WRITE(output_port_0_w) /* OUT0 */ - AM_RANGE(0x1001, 0x1001) AM_WRITE(output_port_1_w) /* OUT1 */ - AM_RANGE(0x2000, 0x2008) AM_READ(port2000_8_r) /* unknown... protection or data channels? */ - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") /* IN0 */ - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("IN1") /* IN1 */ - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("IN2") /* IN2 */ - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("SW1") /* DS1 */ - AM_RANGE(0x5000, 0x5000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(snookr10_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(snookr10_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void snookr10_state::snookr10_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed 6116 */ + map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x3000, 0x3000).portr("IN0"); /* IN0 */ + map(0x3001, 0x3001).portr("IN1"); /* IN1 */ + map(0x3002, 0x3002).portr("IN2"); /* IN2 */ + map(0x3003, 0x3003).portr("SW1"); /* DS1 */ + map(0x3004, 0x3004).r(this, FUNC(snookr10_state::dsw_port_1_r)); /* complement of DS1, bit 7 */ + map(0x5000, 0x5000).w(this, FUNC(snookr10_state::output_port_0_w)); /* OUT0 */ + map(0x5001, 0x5001).w(this, FUNC(snookr10_state::output_port_1_w)); /* OUT1 */ + map(0x6000, 0x6fff).ram().w(this, FUNC(snookr10_state::snookr10_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(snookr10_state::snookr10_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} + +void snookr10_state::tenballs_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed 6116 */ + map(0x1000, 0x1000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x4000, 0x4000).portr("IN0"); /* IN0 */ + map(0x4001, 0x4001).portr("IN1"); /* IN1 */ + map(0x4002, 0x4002).portr("IN2"); /* IN2 */ + map(0x4003, 0x4003).portr("SW1"); /* DS1 */ + map(0x5000, 0x5000).w(this, FUNC(snookr10_state::output_port_0_w)); /* OUT0 */ + map(0x5001, 0x5001).w(this, FUNC(snookr10_state::output_port_1_w)); /* OUT1 */ + map(0x6000, 0x6fff).ram().w(this, FUNC(snookr10_state::snookr10_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(snookr10_state::snookr10_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} + +void snookr10_state::crystalc_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); /* battery backed 6116 */ + map(0x1000, 0x1000).w(this, FUNC(snookr10_state::output_port_0_w)); /* OUT0 */ + map(0x1001, 0x1001).w(this, FUNC(snookr10_state::output_port_1_w)); /* OUT1 */ + map(0x2000, 0x2008).r(this, FUNC(snookr10_state::port2000_8_r)); /* unknown... protection or data channels? */ + map(0x3000, 0x3000).portr("IN0"); /* IN0 */ + map(0x3001, 0x3001).portr("IN1"); /* IN1 */ + map(0x3002, 0x3002).portr("IN2"); /* IN2 */ + map(0x3003, 0x3003).portr("SW1"); /* DS1 */ + map(0x5000, 0x5000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x6000, 0x6fff).ram().w(this, FUNC(snookr10_state::snookr10_videoram_w)).share("videoram"); + map(0x7000, 0x7fff).ram().w(this, FUNC(snookr10_state::snookr10_colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} /************************* diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp index b515d838e51..9a26b59ba45 100644 --- a/src/mame/drivers/snowbros.cpp +++ b/src/mame/drivers/snowbros.cpp @@ -191,34 +191,37 @@ READ16_MEMBER(snowbros_state::toto_read) /* Snow Bros Memory Map */ -ADDRESS_MAP_START(snowbros_state::snowbros_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x400000, 0x400001) AM_WRITE8(snowbros_flipscreen_w, 0xff00) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w) - AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(snowbros_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(snowbros_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // goes back to the main CPU, checked during boot -ADDRESS_MAP_END +void snowbros_state::snowbros_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300001, 0x300001).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x400000, 0x400000).w(this, FUNC(snowbros_state::snowbros_flipscreen_w)); + map(0x500000, 0x500001).portr("DSW1"); + map(0x500002, 0x500003).portr("DSW2"); + map(0x500004, 0x500005).portr("SYSTEM"); + map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); + map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} + +void snowbros_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); +} + +void snowbros_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x04).w("soundlatch2", FUNC(generic_latch_8_device::write)); // goes back to the main CPU, checked during boot +} /* Semicom AT89C52 MCU */ @@ -247,73 +250,78 @@ WRITE8_MEMBER(snowbros_state::prot_p2_w) /* Winter Bobble - bootleg GFX chip */ -ADDRESS_MAP_START(snowbros_state::wintbob_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram16b") - AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END +void snowbros_state::wintbob_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300001, 0x300001).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x400000, 0x400000).w(this, FUNC(snowbros_state::bootleg_flipscreen_w)); + map(0x500000, 0x500001).portr("DSW1"); + map(0x500002, 0x500003).portr("DSW2"); + map(0x500004, 0x500005).portr("SYSTEM"); + map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x701fff).ram().share("spriteram16b"); + map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} /* Honey Dolls */ -ADDRESS_MAP_START(snowbros_state::honeydol_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram") - AM_RANGE(0x200000, 0x200001) AM_WRITENOP /* ? */ - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x500000, 0x500001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0x600000, 0x600001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ - AM_RANGE(0x800000, 0x800001) AM_WRITENOP /* ? */ - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1") - AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2") - AM_RANGE(0x900004, 0x900005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa00000, 0xa007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb01fff) AM_RAM AM_SHARE("spriteram16b") -ADDRESS_MAP_END - -ADDRESS_MAP_START(snowbros_state::honeydol_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(snowbros_state::honeydol_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) // not connected? - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x04) AM_WRITENOP // still written but never actually read by the main CPU -ADDRESS_MAP_END +void snowbros_state::honeydol_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram().share("hyperpac_ram"); + map(0x200000, 0x200001).nopw(); /* ? */ + map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x400000, 0x400001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x500000, 0x500001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0x600000, 0x600001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ + map(0x800000, 0x800001).nopw(); /* ? */ + map(0x900000, 0x900001).portr("DSW1"); + map(0x900002, 0x900003).portr("DSW2"); + map(0x900004, 0x900005).portr("SYSTEM"); + map(0xa00000, 0xa007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xb00000, 0xb01fff).ram().share("spriteram16b"); +} + +void snowbros_state::honeydol_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xe010, 0xe010).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void snowbros_state::honeydol_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x03).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); // not connected? + map(0x04, 0x04).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x04).nopw(); // still written but never actually read by the main CPU +} /* Twin Adventure */ -ADDRESS_MAP_START(snowbros_state::twinadv_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00) - - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x701fff) AM_RAM AM_SHARE("spriteram16b") - AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END +void snowbros_state::twinadv_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300001, 0x300001).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x400000, 0x400000).w(this, FUNC(snowbros_state::bootleg_flipscreen_w)); + + map(0x500000, 0x500001).portr("DSW1"); + map(0x500002, 0x500003).portr("DSW2"); + map(0x500004, 0x500005).portr("SYSTEM"); + map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x701fff).ram().share("spriteram16b"); + map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} WRITE8_MEMBER(snowbros_state::twinadv_oki_bank_w) { @@ -324,13 +332,14 @@ WRITE8_MEMBER(snowbros_state::twinadv_oki_bank_w) m_oki->set_rom_bank(bank); } -ADDRESS_MAP_START(snowbros_state::twinadv_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // back to 68k? - AM_RANGE(0x04, 0x04) AM_WRITE(twinadv_oki_bank_w) // oki bank? - AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void snowbros_state::twinadv_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x02, 0x02).w("soundlatch2", FUNC(generic_latch_8_device::write)); // back to 68k? + map(0x04, 0x04).w(this, FUNC(snowbros_state::twinadv_oki_bank_w)); // oki bank? + map(0x06, 0x06).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} /* SemiCom Memory Map @@ -340,29 +349,31 @@ sound hardware is also different */ -ADDRESS_MAP_START(snowbros_state::hyperpac_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram") - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) +void snowbros_state::hyperpac_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram().share("hyperpac_ram"); + map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // AM_RANGE(0x400000, 0x400001) ??? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") - - AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w) - AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(snowbros_state::hyperpac_sound_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0x500000, 0x500001).portr("DSW1"); + map(0x500002, 0x500003).portr("DSW2"); + map(0x500004, 0x500005).portr("SYSTEM"); + + map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); + map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} + +void snowbros_state::hyperpac_sound_map(address_map &map) +{ + map(0x0000, 0xcfff).rom(); + map(0xd000, 0xd7ff).ram(); + map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /* Same volume used for all samples at the Moment, could be right, we have no way of knowing .. */ @@ -471,71 +482,74 @@ WRITE16_MEMBER(snowbros_state::sb3_sound_w) -ADDRESS_MAP_START(snowbros_state::snowbros3_map) - AM_RANGE( 0x000000, 0x03ffff) AM_ROM - AM_RANGE( 0x100000, 0x103fff) AM_RAM - AM_RANGE( 0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE( 0x300000, 0x300001) AM_READ(sb3_sound_r) // ? - AM_RANGE( 0x300000, 0x300001) AM_WRITE(sb3_sound_w) // ? - AM_RANGE( 0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00) - AM_RANGE( 0x500000, 0x500001) AM_READ_PORT("DSW1") - AM_RANGE( 0x500002, 0x500003) AM_READ_PORT("DSW2") - AM_RANGE( 0x500004, 0x500005) AM_READ_PORT("SYSTEM") - AM_RANGE( 0x600000, 0x6003ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE( 0x700000, 0x7021ff) AM_RAM AM_SHARE("spriteram16b") - AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END +void snowbros_state::snowbros3_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x200000, 0x200001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300000, 0x300001).r(this, FUNC(snowbros_state::sb3_sound_r)); // ? + map(0x300000, 0x300001).w(this, FUNC(snowbros_state::sb3_sound_w)); // ? + map(0x400000, 0x400000).w(this, FUNC(snowbros_state::bootleg_flipscreen_w)); + map(0x500000, 0x500001).portr("DSW1"); + map(0x500002, 0x500003).portr("DSW2"); + map(0x500004, 0x500005).portr("SYSTEM"); + map(0x600000, 0x6003ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x7021ff).ram().share("spriteram16b"); + map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} /* Final Tetris */ -ADDRESS_MAP_START(snowbros_state::finalttr_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("hyperpac_ram") - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) +void snowbros_state::finalttr_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x103fff).ram().share("hyperpac_ram"); + map(0x300001, 0x300001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // AM_RANGE(0x400000, 0x400001) ??? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") + map(0x500000, 0x500001).portr("DSW1"); + map(0x500002, 0x500003).portr("DSW2"); + map(0x500004, 0x500005).portr("SYSTEM"); - AM_RANGE(0x600000, 0x6001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w) - AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END + map(0x600000, 0x6001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x701fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); + map(0x800000, 0x800001).w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} -ADDRESS_MAP_START(snowbros_state::yutnori_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM +void snowbros_state::yutnori_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // 0x100000 clr.w on startup // 0x200000 could be the protection device, it makes several writes, then executes an entire subroutine of NOPs.. - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW1") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSW2") - AM_RANGE(0x300004, 0x300005) AM_READ_PORT("SYSTEM") + map(0x300000, 0x300001).portr("DSW1"); + map(0x300002, 0x300003).portr("DSW2"); + map(0x300004, 0x300005).portr("SYSTEM"); // could be one of the OKIs? but gets value to write from RAM, always seems to be 0? - AM_RANGE(0x30000c, 0x30000d) AM_WRITENOP - AM_RANGE(0x30000e, 0x30000f) AM_READNOP //AM_READ( yutnori_unk_r ) // ?? + map(0x30000c, 0x30000d).nopw(); + map(0x30000e, 0x30000f).nopr(); //AM_READ( yutnori_unk_r ) // ?? // AM_RANGE(0x400000, 0x400001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // maybe? - AM_RANGE(0x400000, 0x400001) AM_NOP + map(0x400000, 0x400001).noprw(); - AM_RANGE(0x500000, 0x5001ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x500000, 0x5001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w) + map(0x600000, 0x601fff).rw(m_pandora, FUNC(kaneko_pandora_device::spriteram_LSB_r), FUNC(kaneko_pandora_device::spriteram_LSB_w)); - AM_RANGE(0x700000, 0x70ffff) AM_RAM + map(0x700000, 0x70ffff).ram(); - AM_RANGE(0x800000, 0x800001) AM_READNOP AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ - AM_RANGE(0x900000, 0x900001) AM_READNOP AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ - AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ -ADDRESS_MAP_END + map(0x800000, 0x800001).nopr().w(this, FUNC(snowbros_state::snowbros_irq4_ack_w)); /* IRQ 4 acknowledge */ + map(0x900000, 0x900001).nopr().w(this, FUNC(snowbros_state::snowbros_irq3_ack_w)); /* IRQ 3 acknowledge */ + map(0xa00000, 0xa00001).nopr().w(this, FUNC(snowbros_state::snowbros_irq2_ack_w)); /* IRQ 2 acknowledge */ +} static INPUT_PORTS_START( snowbros ) PORT_START("DSW1") /* 500001 */ diff --git a/src/mame/drivers/socrates.cpp b/src/mame/drivers/socrates.cpp index 0c18333a0aa..70d57681b05 100644 --- a/src/mame/drivers/socrates.cpp +++ b/src/mame/drivers/socrates.cpp @@ -977,32 +977,36 @@ INPUT_CHANGED_MEMBER( iqunlimz_state::send_input ) Address Maps ******************************************************************************/ -ADDRESS_MAP_START(socrates_state::z80_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM /* system rom, bank 0 (fixed) */ - AM_RANGE(0x4000, 0x7fff) AM_DEVICE("rombank1", address_map_bank_device, amap8) /* banked rom space; system rom is banks 0 through F, cartridge rom is banks 10 onward, usually banks 10 through 17. area past the end of the cartridge, and the whole 10-ff area when no cartridge is inserted, reads as 0xF3 */ - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("rambank1", address_map_bank_device, amap8) /* banked ram 'window' 0 */ - AM_RANGE(0xc000, 0xffff) AM_DEVICE("rambank2", address_map_bank_device, amap8) /* banked ram 'window' 1 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(socrates_state::socrates_rombank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) AM_MIRROR(0xF00000) // xxxx 00** **** **** **** **** - AM_RANGE(0x040000, 0x07ffff) AM_READ(socrates_cart_r) AM_SELECT(0xF80000) // **** *1** **** **** **** **** - AM_RANGE(0x080000, 0x0bffff) AM_READ(read_f3) // xxxx 10** **** **** **** **** -ADDRESS_MAP_END - -ADDRESS_MAP_START(socrates_state::socrates_rambank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("vram", 0) AM_MIRROR(0x30000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(socrates_state::z80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(common_rom_bank_r, common_rom_bank_w) AM_MIRROR(0x7) /* rom bank select - RW - 8 bits */ - AM_RANGE(0x08, 0x08) AM_READWRITE(common_ram_bank_r, common_ram_bank_w) AM_MIRROR(0x7) /* ram banks select - RW - 4 low bits; Format: 0b****HHLL where LL controls whether window 0 points at ram area: 0b00: 0x0000-0x3fff; 0b01: 0x4000-0x7fff; 0b10: 0x8000-0xbfff; 0b11: 0xc000-0xffff. HH controls the same thing for window 1 */ - AM_RANGE(0x10, 0x17) AM_READWRITE(read_f3, socrates_sound_w) AM_MIRROR (0x8) /* sound section: +void socrates_state::z80_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); /* system rom, bank 0 (fixed) */ + map(0x4000, 0x7fff).m(m_rombank1, FUNC(address_map_bank_device::amap8)); /* banked rom space; system rom is banks 0 through F, cartridge rom is banks 10 onward, usually banks 10 through 17. area past the end of the cartridge, and the whole 10-ff area when no cartridge is inserted, reads as 0xF3 */ + map(0x8000, 0xbfff).m(m_rambank1, FUNC(address_map_bank_device::amap8)); /* banked ram 'window' 0 */ + map(0xc000, 0xffff).m(m_rambank2, FUNC(address_map_bank_device::amap8)); /* banked ram 'window' 1 */ +} + +void socrates_state::socrates_rombank_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom().region("maincpu", 0).mirror(0xF00000); // xxxx 00** **** **** **** **** + map(0x040000, 0x07ffff).r(this, FUNC(socrates_state::socrates_cart_r)).select(0xF80000); // **** *1** **** **** **** **** + map(0x080000, 0x0bffff).r(this, FUNC(socrates_state::read_f3)); // xxxx 10** **** **** **** **** +} + +void socrates_state::socrates_rambank_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).ram().region("vram", 0).mirror(0x30000); +} + +void socrates_state::z80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).rw(this, FUNC(socrates_state::common_rom_bank_r), FUNC(socrates_state::common_rom_bank_w)).mirror(0x7); /* rom bank select - RW - 8 bits */ + map(0x08, 0x08).rw(this, FUNC(socrates_state::common_ram_bank_r), FUNC(socrates_state::common_ram_bank_w)).mirror(0x7); /* ram banks select - RW - 4 low bits; Format: 0b****HHLL where LL controls whether window 0 points at ram area: 0b00: 0x0000-0x3fff; 0b01: 0x4000-0x7fff; 0b10: 0x8000-0xbfff; 0b11: 0xc000-0xffff. HH controls the same thing for window 1 */ + map(0x10, 0x17).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::socrates_sound_w)).mirror(0x8); /* sound section: 0x10 - W - frequency control for channel 1 (louder channel) - 01=high pitch, ff=low; time between 1->0/0->1 transitions = (XTAL(21'477'272)/(512+256) / (freq_reg+1)) (note that this is double the actual frequency since each full low and high squarewave pulse is two transitions) 0x11 - W - frequency control for channel 2 (softer channel) - 01=high pitch, ff=low; same equation as above 0x12 - W - 0b***EVVVV enable, volume control for channel 1 @@ -1014,51 +1018,55 @@ ADDRESS_MAP_START(socrates_state::z80_io) 0xC0 produces a DMC wave read from an unknown address at around 342hz <todo: test the others, maybe take samples?> */ - AM_RANGE(0x20, 0x21) AM_READWRITE(read_f3, socrates_scroll_w) AM_MIRROR(0xE) - AM_RANGE(0x30, 0x30) AM_READWRITE(read_f3, kbmcu_reset) AM_MIRROR(0xF) /* resets the keyboard IR decoder MCU */ - AM_RANGE(0x40, 0x40) AM_READWRITE(status_and_speech, speech_command ) AM_MIRROR(0xF) /* reads status register for vblank/hblank/speech, also reads and writes speech module */ - AM_RANGE(0x50, 0x51) AM_READWRITE(keyboard_buffer_read, keyboard_buffer_update) AM_MIRROR(0xE) /* Keyboard fifo read, pop fifo on write */ - AM_RANGE(0x60, 0x60) AM_READWRITE(read_f3, reset_speech) AM_MIRROR(0xF) /* reset the speech module, or perhaps fire an NMI? */ - AM_RANGE(0x70, 0xFF) AM_READ(read_f3) // nothing mapped here afaik -ADDRESS_MAP_END - -ADDRESS_MAP_START(iqunlimz_state::iqunlimz_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_DEVICE("rombank2", address_map_bank_device, amap8) - AM_RANGE(0x4000, 0x7fff) AM_DEVICE("rombank1", address_map_bank_device, amap8) - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("rambank1", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xffff) AM_DEVICE("rambank2", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(iqunlimz_state::iqunlimz_rombank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) AM_MIRROR(0xF00000) // xxxx 00** **** **** **** **** - AM_RANGE(0x040000, 0x07ffff) AM_READ(socrates_cart_r) AM_SELECT(0xF80000) // **** *1** **** **** **** **** - AM_RANGE(0x080000, 0x0bffff) AM_ROM AM_REGION("maincpu", 0x40000) AM_MIRROR(0xF00000)// xxxx 10** **** **** **** **** -ADDRESS_MAP_END - -ADDRESS_MAP_START(iqunlimz_state::iqunlimz_rambank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3ffff) AM_RAM AM_REGION("vram", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(iqunlimz_state::iqunlimz_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_READWRITE(common_rom_bank_r, common_rom_bank_w) AM_MIRROR(0x06) - AM_RANGE(0x08, 0x08) AM_READWRITE(common_ram_bank_r, common_ram_bank_w) AM_MIRROR(0x07) - AM_RANGE(0x10, 0x17) AM_WRITE(socrates_sound_w) AM_MIRROR(0x08) - AM_RANGE(0x20, 0x21) AM_WRITE(socrates_scroll_w) AM_MIRROR(0x0E) + map(0x20, 0x21).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::socrates_scroll_w)).mirror(0xE); + map(0x30, 0x30).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::kbmcu_reset)).mirror(0xF); /* resets the keyboard IR decoder MCU */ + map(0x40, 0x40).rw(this, FUNC(socrates_state::status_and_speech), FUNC(socrates_state::speech_command)).mirror(0xF); /* reads status register for vblank/hblank/speech, also reads and writes speech module */ + map(0x50, 0x51).rw(this, FUNC(socrates_state::keyboard_buffer_read), FUNC(socrates_state::keyboard_buffer_update)).mirror(0xE); /* Keyboard fifo read, pop fifo on write */ + map(0x60, 0x60).rw(this, FUNC(socrates_state::read_f3), FUNC(socrates_state::reset_speech)).mirror(0xF); /* reset the speech module, or perhaps fire an NMI? */ + map(0x70, 0xFF).r(this, FUNC(socrates_state::read_f3)); // nothing mapped here afaik +} + +void iqunlimz_state::iqunlimz_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).m(m_rombank2, FUNC(address_map_bank_device::amap8)); + map(0x4000, 0x7fff).m(m_rombank1, FUNC(address_map_bank_device::amap8)); + map(0x8000, 0xbfff).m(m_rambank1, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xffff).m(m_rambank2, FUNC(address_map_bank_device::amap8)); +} + +void iqunlimz_state::iqunlimz_rombank_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x03ffff).rom().region("maincpu", 0).mirror(0xF00000); // xxxx 00** **** **** **** **** + map(0x040000, 0x07ffff).r(this, FUNC(iqunlimz_state::socrates_cart_r)).select(0xF80000); // **** *1** **** **** **** **** + map(0x080000, 0x0bffff).rom().region("maincpu", 0x40000).mirror(0xF00000);// xxxx 10** **** **** **** **** +} + +void iqunlimz_state::iqunlimz_rambank_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3ffff).ram().region("vram", 0); +} + +void iqunlimz_state::iqunlimz_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).rw(this, FUNC(iqunlimz_state::common_rom_bank_r), FUNC(iqunlimz_state::common_rom_bank_w)).mirror(0x06); + map(0x08, 0x08).rw(this, FUNC(iqunlimz_state::common_ram_bank_r), FUNC(iqunlimz_state::common_ram_bank_w)).mirror(0x07); + map(0x10, 0x17).w(this, FUNC(iqunlimz_state::socrates_sound_w)).mirror(0x08); + map(0x20, 0x21).w(this, FUNC(iqunlimz_state::socrates_scroll_w)).mirror(0x0E); // 30: writes an incrementing value here, once per keypress? // 40: some sort of serial select/reset or enable, related to 0x60 - AM_RANGE(0x50, 0x51) AM_READWRITE(keyboard_buffer_read, keyboard_buffer_update) AM_MIRROR(0xE) + map(0x50, 0x51).rw(this, FUNC(iqunlimz_state::keyboard_buffer_read), FUNC(iqunlimz_state::keyboard_buffer_update)).mirror(0xE); // 60: some sort of serial read/write port, related to 0x40 - AM_RANGE(0x70, 0x73) AM_READWRITE(video_regs_r, video_regs_w) AM_MIRROR(0x0C) - AM_RANGE(0x80, 0x81) AM_WRITENOP // LCD - AM_RANGE(0xb1, 0xb1) AM_WRITENOP - AM_RANGE(0xa0, 0xa0) AM_READ(status_r) AM_MIRROR(0x0F) - AM_RANGE(0xe0, 0xe7) AM_WRITE(colors_w) AM_MIRROR(0x08) -ADDRESS_MAP_END + map(0x70, 0x73).rw(this, FUNC(iqunlimz_state::video_regs_r), FUNC(iqunlimz_state::video_regs_w)).mirror(0x0C); + map(0x80, 0x81).nopw(); // LCD + map(0xb1, 0xb1).nopw(); + map(0xa0, 0xa0).r(this, FUNC(iqunlimz_state::status_r)).mirror(0x0F); + map(0xe0, 0xe7).w(this, FUNC(iqunlimz_state::colors_w)).mirror(0x08); +} diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp index 4ec2dc79c40..6b5b7970931 100644 --- a/src/mame/drivers/softbox.cpp +++ b/src/mame/drivers/softbox.cpp @@ -123,25 +123,27 @@ WRITE8_MEMBER( softbox_state::dbrg_w ) // ADDRESS_MAP( softbox_mem ) //------------------------------------------------- -ADDRESS_MAP_START(softbox_state::softbox_mem) - AM_RANGE(0x0000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(Z80_TAG, 0) -ADDRESS_MAP_END +void softbox_state::softbox_mem(address_map &map) +{ + map(0x0000, 0xefff).ram(); + map(0xf000, 0xffff).rom().region(Z80_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( softbox_io ) //------------------------------------------------- -ADDRESS_MAP_START(softbox_state::softbox_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x09, 0x09) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE(dbrg_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE(I8255_0_TAG, i8255_device, read, write) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(I8255_1_TAG, i8255_device, read, write) - AM_RANGE(0x18, 0x18) AM_DEVREADWRITE(CORVUS_HDC_TAG, corvus_hdc_device, read, write) -ADDRESS_MAP_END +void softbox_state::softbox_io(address_map &map) +{ + map.global_mask(0xff); + map(0x08, 0x08).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x09, 0x09).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x0c, 0x0c).w(this, FUNC(softbox_state::dbrg_w)); + map(0x10, 0x13).rw(I8255_0_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x14, 0x17).rw(I8255_1_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x18, 0x18).rw(m_hdc, FUNC(corvus_hdc_device::read), FUNC(corvus_hdc_device::write)); +} diff --git a/src/mame/drivers/solomon.cpp b/src/mame/drivers/solomon.cpp index 63a4c4d275c..0a87bf46148 100644 --- a/src/mame/drivers/solomon.cpp +++ b/src/mame/drivers/solomon.cpp @@ -49,41 +49,44 @@ WRITE8_MEMBER(solomon_state::nmi_mask_w) m_nmi_mask = data & 1; } -ADDRESS_MAP_START(solomon_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(solomon_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(solomon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(solomon_colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(solomon_videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xe000, 0xe07f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe400, 0xe5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1") - AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2") - AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe603, 0xe603) AM_READ(solomon_0xe603_r) - AM_RANGE(0xe604, 0xe604) AM_READ_PORT("DSW1") - AM_RANGE(0xe605, 0xe605) AM_READ_PORT("DSW2") - AM_RANGE(0xe606, 0xe606) AM_READNOP /* watchdog? */ - AM_RANGE(0xe600, 0xe600) AM_WRITE(nmi_mask_w) - AM_RANGE(0xe604, 0xe604) AM_WRITE(solomon_flipscreen_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE(solomon_sh_command_w) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(solomon_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(solomon_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x30, 0x31) AM_DEVWRITE("ay3", ay8910_device, address_data_w) -ADDRESS_MAP_END +void solomon_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd3ff).ram().w(this, FUNC(solomon_state::solomon_colorram_w)).share("colorram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(solomon_state::solomon_videoram_w)).share("videoram"); + map(0xd800, 0xdbff).ram().w(this, FUNC(solomon_state::solomon_colorram2_w)).share("colorram2"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(solomon_state::solomon_videoram2_w)).share("videoram2"); + map(0xe000, 0xe07f).ram().share("spriteram"); + map(0xe400, 0xe5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe600, 0xe600).portr("P1"); + map(0xe601, 0xe601).portr("P2"); + map(0xe602, 0xe602).portr("SYSTEM"); + map(0xe603, 0xe603).r(this, FUNC(solomon_state::solomon_0xe603_r)); + map(0xe604, 0xe604).portr("DSW1"); + map(0xe605, 0xe605).portr("DSW2"); + map(0xe606, 0xe606).nopr(); /* watchdog? */ + map(0xe600, 0xe600).w(this, FUNC(solomon_state::nmi_mask_w)); + map(0xe604, 0xe604).w(this, FUNC(solomon_state::solomon_flipscreen_w)); + map(0xe800, 0xe800).w(this, FUNC(solomon_state::solomon_sh_command_w)); + map(0xf000, 0xffff).rom(); +} + +void solomon_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xffff, 0xffff).nopw(); /* watchdog? */ +} + +void solomon_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x20, 0x21).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x30, 0x31).w("ay3", FUNC(ay8910_device::address_data_w)); +} diff --git a/src/mame/drivers/sonson.cpp b/src/mame/drivers/sonson.cpp index 126d7fb8fd2..eb416d6d168 100644 --- a/src/mame/drivers/sonson.cpp +++ b/src/mame/drivers/sonson.cpp @@ -78,30 +78,32 @@ WRITE_LINE_MEMBER(sonson_state::coin2_counter_w) machine().bookkeeping().coin_counter_w(1, state); } -ADDRESS_MAP_START(sonson_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(sonson_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(sonson_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2020, 0x207f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x3000) AM_WRITE(sonson_scrollx_w) - AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1") - AM_RANGE(0x3003, 0x3003) AM_READ_PORT("P2") - AM_RANGE(0x3004, 0x3004) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3005, 0x3005) AM_READ_PORT("DSW1") - AM_RANGE(0x3006, 0x3006) AM_READ_PORT("DSW2") - AM_RANGE(0x3008, 0x3008) AM_WRITENOP // might be Y scroll, but the game always sets it to 0 - AM_RANGE(0x3010, 0x3010) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3018, 0x301f) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sonson_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void sonson_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x13ff).ram().w(this, FUNC(sonson_state::sonson_videoram_w)).share("videoram"); + map(0x1400, 0x17ff).ram().w(this, FUNC(sonson_state::sonson_colorram_w)).share("colorram"); + map(0x2020, 0x207f).ram().share("spriteram"); + map(0x3000, 0x3000).w(this, FUNC(sonson_state::sonson_scrollx_w)); + map(0x3002, 0x3002).portr("P1"); + map(0x3003, 0x3003).portr("P2"); + map(0x3004, 0x3004).portr("SYSTEM"); + map(0x3005, 0x3005).portr("DSW1"); + map(0x3006, 0x3006).portr("DSW2"); + map(0x3008, 0x3008).nopw(); // might be Y scroll, but the game always sets it to 0 + map(0x3010, 0x3010).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3018, 0x301f).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x4000, 0xffff).rom(); +} + +void sonson_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x4000, 0x4001).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xe000, 0xffff).rom(); +} diff --git a/src/mame/drivers/sorcerer.cpp b/src/mame/drivers/sorcerer.cpp index f1dfa212191..f3e8da751dd 100644 --- a/src/mame/drivers/sorcerer.cpp +++ b/src/mame/drivers/sorcerer.cpp @@ -168,39 +168,42 @@ NOTES (2016-06-06) #include "speaker.h" -ADDRESS_MAP_START(sorcerer_state::sorcerer_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") - AM_RANGE(0x0800, 0xbfff) AM_RAM +void sorcerer_state::sorcerer_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0xbfff).ram(); //AM_RANGE(0xc000, 0xdfff) // mapped by the cartslot - AM_RANGE(0xe000, 0xefff) AM_ROM /* rom pac and bios */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_REGION("maincpu", 0xf000) /* screen ram */ - AM_RANGE(0xf800, 0xfbff) AM_ROM /* char rom */ - AM_RANGE(0xfc00, 0xffff) AM_RAM AM_REGION("maincpu", 0xfc00) /* programmable chars */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(sorcerer_state::sorcererd_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot") - AM_RANGE(0x0800, 0xbbff) AM_RAM - AM_RANGE(0xbc00, 0xbcff) AM_ROM - AM_RANGE(0xbe00, 0xbe03) AM_DEVREADWRITE("fdc", micropolis_device, read, write) + map(0xe000, 0xefff).rom(); /* rom pac and bios */ + map(0xf000, 0xf7ff).ram().region("maincpu", 0xf000); /* screen ram */ + map(0xf800, 0xfbff).rom(); /* char rom */ + map(0xfc00, 0xffff).ram().region("maincpu", 0xfc00); /* programmable chars */ +} + +void sorcerer_state::sorcererd_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0xbbff).ram(); + map(0xbc00, 0xbcff).rom(); + map(0xbe00, 0xbe03).rw("fdc", FUNC(micropolis_device::read), FUNC(micropolis_device::write)); //AM_RANGE(0xc000, 0xdfff) // mapped by the cartslot - AM_RANGE(0xe000, 0xefff) AM_ROM /* rom pac and bios */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_REGION("maincpu", 0xf000) /* screen ram */ - AM_RANGE(0xf800, 0xfbff) AM_ROM /* char rom */ - AM_RANGE(0xfc00, 0xffff) AM_RAM AM_REGION("maincpu", 0xfc00) /* programmable chars */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(sorcerer_state::sorcerer_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xfc, 0xfc) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xfd, 0xfd) AM_READWRITE( sorcerer_fd_r, sorcerer_fd_w ) - AM_RANGE(0xfe, 0xfe) AM_READWRITE( sorcerer_fe_r, sorcerer_fe_w ) - AM_RANGE(0xff, 0xff) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0xff, 0xff) AM_WRITE( sorcerer_ff_w ) -ADDRESS_MAP_END + map(0xe000, 0xefff).rom(); /* rom pac and bios */ + map(0xf000, 0xf7ff).ram().region("maincpu", 0xf000); /* screen ram */ + map(0xf800, 0xfbff).rom(); /* char rom */ + map(0xfc00, 0xffff).ram().region("maincpu", 0xfc00); /* programmable chars */ +} + +void sorcerer_state::sorcerer_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xfc, 0xfc).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xfd, 0xfd).rw(this, FUNC(sorcerer_state::sorcerer_fd_r), FUNC(sorcerer_state::sorcerer_fd_w)); + map(0xfe, 0xfe).rw(this, FUNC(sorcerer_state::sorcerer_fe_r), FUNC(sorcerer_state::sorcerer_fe_w)); + map(0xff, 0xff).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0xff, 0xff).w(this, FUNC(sorcerer_state::sorcerer_ff_w)); +} static INPUT_PORTS_START(sorcerer) PORT_START("VS") diff --git a/src/mame/drivers/sothello.cpp b/src/mame/drivers/sothello.cpp index 76f111bdb52..18d11a2c99a 100644 --- a/src/mame/drivers/sothello.cpp +++ b/src/mame/drivers/sothello.cpp @@ -166,28 +166,30 @@ READ8_MEMBER(sothello_state::soundcpu_status_r) return m_soundcpu_busy; } -ADDRESS_MAP_START(sothello_state::maincpu_mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_MIRROR(0x1800) AM_SHARE("mainsub") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sothello_state::maincpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x0f) AM_READ_PORT("INPUT1") - AM_RANGE( 0x10, 0x1f) AM_READ_PORT("INPUT2") - AM_RANGE( 0x20, 0x2f) AM_READ_PORT("SYSTEM") - AM_RANGE( 0x30, 0x30) AM_READ(subcpu_halt_set) - AM_RANGE( 0x31, 0x31) AM_READ(subcpu_halt_clear) - AM_RANGE( 0x32, 0x32) AM_READ(subcpu_comm_status) - AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r) - AM_RANGE( 0x40, 0x4f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w) - AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) +void sothello_state::maincpu_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); + map(0x8000, 0xbfff).bankr("mainbank"); + map(0xc000, 0xc7ff).ram().mirror(0x1800).share("mainsub"); + map(0xe000, 0xffff).ram(); +} + +void sothello_state::maincpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).portr("INPUT1"); + map(0x10, 0x1f).portr("INPUT2"); + map(0x20, 0x2f).portr("SYSTEM"); + map(0x30, 0x30).r(this, FUNC(sothello_state::subcpu_halt_set)); + map(0x31, 0x31).r(this, FUNC(sothello_state::subcpu_halt_clear)); + map(0x32, 0x32).r(this, FUNC(sothello_state::subcpu_comm_status)); + map(0x33, 0x33).r(this, FUNC(sothello_state::soundcpu_status_r)); + map(0x40, 0x4f).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x50, 0x50).w(this, FUNC(sothello_state::bank_w)); + map(0x60, 0x61).mirror(0x02).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); /* not sure, but the A1 line is ignored, code @ $8b8 */ - AM_RANGE( 0x70, 0x73) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) -ADDRESS_MAP_END + map(0x70, 0x73).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); +} /* sound Z80 */ @@ -223,20 +225,22 @@ WRITE8_MEMBER(sothello_state::soundcpu_int_clear_w) m_soundcpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(sothello_state::soundcpu_mem_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM AM_REGION("soundcpu", 0) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sothello_state::soundcpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x01, 0x01) AM_WRITE(msm_data_w) - AM_RANGE(0x02, 0x02) AM_WRITE(msm_cfg_w) - AM_RANGE(0x03, 0x03) AM_WRITE(soundcpu_busyflag_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE(soundcpu_busyflag_reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(soundcpu_int_clear_w) -ADDRESS_MAP_END +void sothello_state::soundcpu_mem_map(address_map &map) +{ + map(0x0000, 0xdfff).rom().region("soundcpu", 0); + map(0xf800, 0xffff).ram(); +} + +void sothello_state::soundcpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x01, 0x01).w(this, FUNC(sothello_state::msm_data_w)); + map(0x02, 0x02).w(this, FUNC(sothello_state::msm_cfg_w)); + map(0x03, 0x03).w(this, FUNC(sothello_state::soundcpu_busyflag_set_w)); + map(0x04, 0x04).w(this, FUNC(sothello_state::soundcpu_busyflag_reset_w)); + map(0x05, 0x05).w(this, FUNC(sothello_state::soundcpu_int_clear_w)); +} /* sub 6809 */ @@ -263,12 +267,13 @@ READ8_MEMBER(sothello_state::subcpu_status_r) return 0; } -ADDRESS_MAP_START(sothello_state::subcpu_mem_map) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE(subcpu_status_r, subcpu_status_w) - AM_RANGE(0x2000, 0x77ff) AM_RAM - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("mainsub") /* upper 0x800 of 6264 is shared with main cpu */ - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("subcpu", 0) -ADDRESS_MAP_END +void sothello_state::subcpu_mem_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(this, FUNC(sothello_state::subcpu_status_r), FUNC(sothello_state::subcpu_status_w)); + map(0x2000, 0x77ff).ram(); + map(0x7800, 0x7fff).ram().share("mainsub"); /* upper 0x800 of 6264 is shared with main cpu */ + map(0x8000, 0xffff).rom().region("subcpu", 0); +} static INPUT_PORTS_START( sothello ) PORT_START("INPUT1") diff --git a/src/mame/drivers/spacefb.cpp b/src/mame/drivers/spacefb.cpp index 6e632704d01..785814b93aa 100644 --- a/src/mame/drivers/spacefb.cpp +++ b/src/mame/drivers/spacefb.cpp @@ -206,19 +206,21 @@ void spacefb_state::machine_reset() * *************************************/ -ADDRESS_MAP_START(spacefb_state::spacefb_main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x3c00) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_NOP -ADDRESS_MAP_END +void spacefb_state::spacefb_main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).noprw(); + map(0x8000, 0x83ff).mirror(0x3c00).ram().share("videoram"); + map(0xc000, 0xc7ff).mirror(0x3000).ram(); + map(0xc800, 0xcfff).mirror(0x3000).noprw(); +} -ADDRESS_MAP_START(spacefb_state::spacefb_audio_map) - ADDRESS_MAP_GLOBAL_MASK(0x3ff) - AM_RANGE(0x0000, 0x03ff) AM_ROM -ADDRESS_MAP_END +void spacefb_state::spacefb_audio_map(address_map &map) +{ + map.global_mask(0x3ff); + map(0x0000, 0x03ff).rom(); +} @@ -228,19 +230,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(spacefb_state::spacefb_main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") - AM_RANGE(0x04, 0x07) AM_READNOP /* yes, this is correct (1-of-8 decoder) */ - - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_WRITE(port_0_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_WRITE(port_1_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_WRITE(port_2_w) - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_WRITENOP -ADDRESS_MAP_END +void spacefb_state::spacefb_main_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).portr("P1"); + map(0x01, 0x01).portr("P2"); + map(0x02, 0x02).portr("SYSTEM"); + map(0x03, 0x03).portr("DSW"); + map(0x04, 0x07).nopr(); /* yes, this is correct (1-of-8 decoder) */ + + map(0x00, 0x00).mirror(0x04).w(this, FUNC(spacefb_state::port_0_w)); + map(0x01, 0x01).mirror(0x04).w(this, FUNC(spacefb_state::port_1_w)); + map(0x02, 0x02).mirror(0x04).w(this, FUNC(spacefb_state::port_2_w)); + map(0x03, 0x03).mirror(0x04).nopw(); +} diff --git a/src/mame/drivers/spaceg.cpp b/src/mame/drivers/spaceg.cpp index 75415c13ac5..fe2d5cf6f59 100644 --- a/src/mame/drivers/spaceg.cpp +++ b/src/mame/drivers/spaceg.cpp @@ -424,33 +424,34 @@ WRITE8_MEMBER(spaceg_state::sound3_w) * *************************************/ -ADDRESS_MAP_START(spaceg_state::spaceg_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3000, 0x3fff) AM_ROM - AM_RANGE(0x7000, 0x77ff) AM_RAM +void spaceg_state::spaceg_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x3fff).rom(); + map(0x7000, 0x77ff).ram(); - AM_RANGE(0xa000, 0xbfff) AM_RAM_READ(colorram_r) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(zvideoram_w) AM_SHARE("videoram") + map(0xa000, 0xbfff).ram().r(this, FUNC(spaceg_state::colorram_r)).share("colorram"); + map(0xc000, 0xdfff).ram().w(this, FUNC(spaceg_state::zvideoram_w)).share("videoram"); - AM_RANGE(0x9400, 0x9400) AM_WRITEONLY AM_SHARE("io9400") /* gfx ctrl */ - AM_RANGE(0x9401, 0x9401) AM_WRITEONLY AM_SHARE("io9401") /* gfx ctrl */ + map(0x9400, 0x9400).writeonly().share("io9400"); /* gfx ctrl */ + map(0x9401, 0x9401).writeonly().share("io9401"); /* gfx ctrl */ /* 9402 - bits 0 and 1 probably control the lamps under the player 1 and player 2 start buttons bit 2 - unknown - bit 3 is probably a flip screen bit 7 - unknown - set to 1 during the gameplay (coinlock ?) */ - AM_RANGE(0x9402, 0x9402) AM_WRITENOP - AM_RANGE(0x9405, 0x9405) AM_WRITE(sound1_w) - AM_RANGE(0x9406, 0x9406) AM_WRITE(sound2_w) - AM_RANGE(0x9407, 0x9407) AM_WRITE(sound3_w) - - AM_RANGE(0x9800, 0x9800) AM_READ_PORT("9800") - AM_RANGE(0x9801, 0x9801) AM_READ_PORT("9801") - AM_RANGE(0x9802, 0x9802) AM_READ_PORT("9802") - AM_RANGE(0x9805, 0x9805) AM_READ_PORT("9805") - AM_RANGE(0x9806, 0x9806) AM_READ_PORT("9806") -ADDRESS_MAP_END + map(0x9402, 0x9402).nopw(); + map(0x9405, 0x9405).w(this, FUNC(spaceg_state::sound1_w)); + map(0x9406, 0x9406).w(this, FUNC(spaceg_state::sound2_w)); + map(0x9407, 0x9407).w(this, FUNC(spaceg_state::sound3_w)); + + map(0x9800, 0x9800).portr("9800"); + map(0x9801, 0x9801).portr("9801"); + map(0x9802, 0x9802).portr("9802"); + map(0x9805, 0x9805).portr("9805"); + map(0x9806, 0x9806).portr("9806"); +} diff --git a/src/mame/drivers/spartanxtec.cpp b/src/mame/drivers/spartanxtec.cpp index c5915a83259..d8f3af2b7f4 100644 --- a/src/mame/drivers/spartanxtec.cpp +++ b/src/mame/drivers/spartanxtec.cpp @@ -177,29 +177,30 @@ WRITE8_MEMBER(spartanxtec_state::irq_ack) } -ADDRESS_MAP_START(spartanxtec_state::spartanxtec_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("spriteram") +void spartanxtec_state::spartanxtec_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc400, 0xc7ff).ram().share("spriteram"); - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + map(0x8000, 0x8000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0x8100, 0x8100) AM_READ_PORT("DSW1") - AM_RANGE(0x8101, 0x8101) AM_READ_PORT("DSW2") - AM_RANGE(0x8102, 0x8102) AM_READ_PORT("SYSTEM") - AM_RANGE(0x8103, 0x8103) AM_READ_PORT("P1") + map(0x8100, 0x8100).portr("DSW1"); + map(0x8101, 0x8101).portr("DSW2"); + map(0x8102, 0x8102).portr("SYSTEM"); + map(0x8103, 0x8103).portr("P1"); - AM_RANGE(0x8200, 0x8200) AM_WRITE(irq_ack) + map(0x8200, 0x8200).w(this, FUNC(spartanxtec_state::irq_ack)); - AM_RANGE(0xA801, 0xA801) AM_WRITE(a801_w) + map(0xA801, 0xA801).w(this, FUNC(spartanxtec_state::a801_w)); - AM_RANGE(0xa900, 0xa903) AM_RAM AM_SHARE("scroll_lo") - AM_RANGE(0xa980, 0xa983) AM_RAM AM_SHARE("scroll_hi") + map(0xa900, 0xa903).ram().share("scroll_lo"); + map(0xa980, 0xa983).ram().share("scroll_hi"); - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_SHARE("m62_tileram") + map(0xd000, 0xdfff).ram().w(this, FUNC(spartanxtec_state::kungfum_tileram_w)).share("m62_tileram"); - AM_RANGE(0xe000, 0xefff) AM_RAM + map(0xe000, 0xefff).ram(); -ADDRESS_MAP_END +} @@ -209,27 +210,29 @@ WRITE8_MEMBER(spartanxtec_state::sound_irq_ack) } -ADDRESS_MAP_START(spartanxtec_state::spartanxtec_sound_map) +void spartanxtec_state::spartanxtec_sound_map(address_map &map) +{ - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM + map(0x0000, 0x0fff).rom(); + map(0x8000, 0x83ff).ram(); - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} -ADDRESS_MAP_START(spartanxtec_state::spartanxtec_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_WRITE( sound_irq_ack ) +void spartanxtec_state::spartanxtec_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).w(this, FUNC(spartanxtec_state::sound_irq_ack)); - AM_RANGE(0x0012, 0x0013) AM_DEVWRITE("ay3", ay8912_device, address_data_w) - AM_RANGE(0x0012, 0x0012) AM_DEVREAD("ay3", ay8912_device, data_r) + map(0x0012, 0x0013).w("ay3", FUNC(ay8912_device::address_data_w)); + map(0x0012, 0x0012).r("ay3", FUNC(ay8912_device::data_r)); - AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8912_device, address_data_w) - AM_RANGE(0x0014, 0x0014) AM_DEVREAD("ay1", ay8912_device, data_r) + map(0x0014, 0x0015).w("ay1", FUNC(ay8912_device::address_data_w)); + map(0x0014, 0x0014).r("ay1", FUNC(ay8912_device::data_r)); - AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8912_device, address_data_w) - AM_RANGE(0x0018, 0x0018) AM_DEVREAD("ay2", ay8912_device, data_r) -ADDRESS_MAP_END + map(0x0018, 0x0019).w("ay2", FUNC(ay8912_device::address_data_w)); + map(0x0018, 0x0018).r("ay2", FUNC(ay8912_device::data_r)); +} diff --git a/src/mame/drivers/spbactn.cpp b/src/mame/drivers/spbactn.cpp index ae22ada2c5f..dd9df6c5603 100644 --- a/src/mame/drivers/spbactn.cpp +++ b/src/mame/drivers/spbactn.cpp @@ -146,97 +146,101 @@ WRITE16_MEMBER(spbactn_state::main_irq_ack_w) m_maincpu->set_input_line(M68K_IRQ_3, CLEAR_LINE); } -ADDRESS_MAP_START(spbactn_state::spbactn_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram - AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram") - AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x80000, 0x827ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0") - AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1") - AM_RANGE(0x90020, 0x90021) AM_READ_PORT("SYSTEM") - AM_RANGE(0x90030, 0x90031) AM_READ_PORT("DSW1") - AM_RANGE(0x90040, 0x90041) AM_READ_PORT("DSW2") +void spbactn_state::spbactn_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x40000, 0x43fff).ram(); // main ram + map(0x50000, 0x50fff).ram().share("spvideoram"); + map(0x60000, 0x67fff).ram().w(this, FUNC(spbactn_state::fg_videoram_w)).share("fgvideoram"); + map(0x70000, 0x77fff).ram().w(this, FUNC(spbactn_state::bg_videoram_w)).share("bgvideoram"); + map(0x80000, 0x827ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x90000, 0x90001).portr("IN0"); + map(0x90010, 0x90011).portr("IN1"); + map(0x90020, 0x90021).portr("SYSTEM"); + map(0x90030, 0x90031).portr("DSW1"); + map(0x90040, 0x90041).portr("DSW2"); /* this are an awful lot of unknowns */ - AM_RANGE(0x90000, 0x90001) AM_WRITENOP - AM_RANGE(0x90010, 0x90011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x90020, 0x90021) AM_WRITE(main_irq_ack_w) - AM_RANGE(0x90030, 0x90031) AM_WRITENOP - AM_RANGE(0x90050, 0x90051) AM_WRITENOP - - AM_RANGE(0x90080, 0x90081) AM_WRITENOP - AM_RANGE(0x90090, 0x90091) AM_WRITENOP - AM_RANGE(0x900a0, 0x900a1) AM_WRITENOP - AM_RANGE(0x900b0, 0x900b1) AM_WRITENOP - AM_RANGE(0x900c0, 0x900c1) AM_WRITENOP - AM_RANGE(0x900d0, 0x900d1) AM_WRITENOP - AM_RANGE(0x900e0, 0x900e1) AM_WRITENOP - AM_RANGE(0x900f0, 0x900f1) AM_WRITENOP - - AM_RANGE(0xa0000, 0xa0001) AM_WRITENOP - AM_RANGE(0xa0004, 0xa0005) AM_WRITENOP - AM_RANGE(0xa0008, 0xa0009) AM_WRITENOP - AM_RANGE(0xa000c, 0xa000d) AM_WRITENOP - AM_RANGE(0xa0010, 0xa0011) AM_WRITENOP - - AM_RANGE(0xa0100, 0xa0101) AM_WRITENOP - AM_RANGE(0xa0104, 0xa0105) AM_WRITENOP - AM_RANGE(0xa0108, 0xa0109) AM_WRITENOP - AM_RANGE(0xa010c, 0xa010d) AM_WRITENOP - AM_RANGE(0xa0110, 0xa0111) AM_WRITENOP - - AM_RANGE(0xa0200, 0xa0201) AM_WRITENOP - AM_RANGE(0xa0202, 0xa0203) AM_WRITENOP - AM_RANGE(0xa0204, 0xa0205) AM_WRITENOP - AM_RANGE(0xa0206, 0xa0207) AM_WRITENOP -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(spbactn_state::spbactnp_map) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x40000, 0x43fff) AM_RAM // main ram - AM_RANGE(0x50000, 0x50fff) AM_RAM AM_SHARE("spvideoram") - AM_RANGE(0x60000, 0x67fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0x70000, 0x77fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0x80000, 0x827ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // yes R and G are swapped vs. the released version - - AM_RANGE(0x90002, 0x90003) AM_WRITE(main_irq_ack_w) - AM_RANGE(0x90006, 0x90007) AM_WRITE(spbatnp_90006_w) - AM_RANGE(0x9000a, 0x9000b) AM_WRITE(spbatnp_9000a_w) - AM_RANGE(0x9000c, 0x9000d) AM_WRITE(spbatnp_9000c_w) - AM_RANGE(0x9000e, 0x9000f) AM_WRITE(spbatnp_9000e_w) - - AM_RANGE(0x90124, 0x90125) AM_WRITE(spbatnp_90124_w) // bg scroll - AM_RANGE(0x9012c, 0x9012d) AM_WRITE(spbatnp_9012c_w) // bg scroll - - - - AM_RANGE(0x90000, 0x900ff) AM_READ(temp_read_handler_r) // temp - -ADDRESS_MAP_END - -ADDRESS_MAP_START(spbactn_state::spbactn_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write) - - AM_RANGE(0xfc00, 0xfc00) AM_READNOP AM_WRITENOP /* irq ack ?? */ - AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(spbactn_state::spbactnp_extra_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("extraram2") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE( extraram_w ) AM_SHARE("extraram") - AM_RANGE(0xd200, 0xd200) AM_RAM -ADDRESS_MAP_END + map(0x90000, 0x90001).nopw(); + map(0x90011, 0x90011).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x90020, 0x90021).w(this, FUNC(spbactn_state::main_irq_ack_w)); + map(0x90030, 0x90031).nopw(); + map(0x90050, 0x90051).nopw(); + + map(0x90080, 0x90081).nopw(); + map(0x90090, 0x90091).nopw(); + map(0x900a0, 0x900a1).nopw(); + map(0x900b0, 0x900b1).nopw(); + map(0x900c0, 0x900c1).nopw(); + map(0x900d0, 0x900d1).nopw(); + map(0x900e0, 0x900e1).nopw(); + map(0x900f0, 0x900f1).nopw(); + + map(0xa0000, 0xa0001).nopw(); + map(0xa0004, 0xa0005).nopw(); + map(0xa0008, 0xa0009).nopw(); + map(0xa000c, 0xa000d).nopw(); + map(0xa0010, 0xa0011).nopw(); + + map(0xa0100, 0xa0101).nopw(); + map(0xa0104, 0xa0105).nopw(); + map(0xa0108, 0xa0109).nopw(); + map(0xa010c, 0xa010d).nopw(); + map(0xa0110, 0xa0111).nopw(); + + map(0xa0200, 0xa0201).nopw(); + map(0xa0202, 0xa0203).nopw(); + map(0xa0204, 0xa0205).nopw(); + map(0xa0206, 0xa0207).nopw(); +} + + + +void spbactn_state::spbactnp_map(address_map &map) +{ + map(0x00000, 0x3ffff).rom(); + map(0x40000, 0x43fff).ram(); // main ram + map(0x50000, 0x50fff).ram().share("spvideoram"); + map(0x60000, 0x67fff).ram().w(this, FUNC(spbactn_state::fg_videoram_w)).share("fgvideoram"); + map(0x70000, 0x77fff).ram().w(this, FUNC(spbactn_state::bg_videoram_w)).share("bgvideoram"); + map(0x80000, 0x827ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // yes R and G are swapped vs. the released version + + map(0x90002, 0x90003).w(this, FUNC(spbactn_state::main_irq_ack_w)); + map(0x90006, 0x90007).w(this, FUNC(spbactn_state::spbatnp_90006_w)); + map(0x9000a, 0x9000b).w(this, FUNC(spbactn_state::spbatnp_9000a_w)); + map(0x9000c, 0x9000d).w(this, FUNC(spbactn_state::spbatnp_9000c_w)); + map(0x9000e, 0x9000f).w(this, FUNC(spbactn_state::spbatnp_9000e_w)); + + map(0x90124, 0x90125).w(this, FUNC(spbactn_state::spbatnp_90124_w)); // bg scroll + map(0x9012c, 0x9012d).w(this, FUNC(spbactn_state::spbatnp_9012c_w)); // bg scroll + + + + map(0x90000, 0x900ff).r(this, FUNC(spbactn_state::temp_read_handler_r)); // temp + +} + +void spbactn_state::spbactn_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write)); + + map(0xfc00, 0xfc00).nopr().nopw(); /* irq ack ?? */ + map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + + + +void spbactn_state::spbactnp_extra_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram().share("extraram2"); + map(0xe000, 0xefff).ram(); + map(0xd000, 0xd1ff).ram().w(this, FUNC(spbactn_state::extraram_w)).share("extraram"); + map(0xd200, 0xd200).ram(); +} diff --git a/src/mame/drivers/spc1000.cpp b/src/mame/drivers/spc1000.cpp index 0949b141643..4a064b6de32 100644 --- a/src/mame/drivers/spc1000.cpp +++ b/src/mame/drivers/spc1000.cpp @@ -200,11 +200,12 @@ private: required_device<centronics_device> m_centronics; }; -ADDRESS_MAP_START(spc1000_state::spc1000_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank4") -ADDRESS_MAP_END +void spc1000_state::spc1000_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankr("bank1").bankw("bank2"); + map(0x8000, 0xffff).bankr("bank3").bankw("bank4"); +} WRITE8_MEMBER(spc1000_state::iplk_w) { @@ -264,17 +265,18 @@ READ8_MEMBER( spc1000_state::keyboard_r ) } -ADDRESS_MAP_START(spc1000_state::spc1000_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(gmode_r, gmode_w) - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0x4001, 0x4001) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, data_w) - AM_RANGE(0x6000, 0x6000) AM_WRITE(cass_w) - AM_RANGE(0x8000, 0x9fff) AM_READ(keyboard_r) - AM_RANGE(0xa000, 0xa000) AM_READWRITE(iplk_r, iplk_w) - AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("ext1", spc1000_exp_device, read, write) -ADDRESS_MAP_END +void spc1000_state::spc1000_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).ram().share("videoram"); + map(0x2000, 0x3fff).rw(this, FUNC(spc1000_state::gmode_r), FUNC(spc1000_state::gmode_w)); + map(0x4000, 0x4000).w("ay8910", FUNC(ay8910_device::address_w)); + map(0x4001, 0x4001).rw("ay8910", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x6000, 0x6000).w(this, FUNC(spc1000_state::cass_w)); + map(0x8000, 0x9fff).r(this, FUNC(spc1000_state::keyboard_r)); + map(0xa000, 0xa000).rw(this, FUNC(spc1000_state::iplk_r), FUNC(spc1000_state::iplk_w)); + map(0xc000, 0xdfff).rw("ext1", FUNC(spc1000_exp_device::read), FUNC(spc1000_exp_device::write)); +} /* Input ports */ static INPUT_PORTS_START( spc1000 ) diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp index 39d7a66077e..13ffd5659c9 100644 --- a/src/mame/drivers/spc1500.cpp +++ b/src/mame/drivers/spc1500.cpp @@ -679,12 +679,13 @@ READ8_MEMBER( spc1500_state::io_r) return 0xff; } -ADDRESS_MAP_START(spc1500_state::spc1500_double_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x2000, 0xffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0000, 0x17ff) AM_RAM AM_SHARE("pcgram") - AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, double_w) -ADDRESS_MAP_END +void spc1500_state::spc1500_double_io(address_map &map) +{ + map.unmap_value_high(); + map(0x2000, 0xffff).ram().share("videoram"); + map(0x0000, 0x17ff).ram().share("pcgram"); + map(0x0000, 0xffff).rw(this, FUNC(spc1500_state::io_r), FUNC(spc1500_state::double_w)); +} /* Input ports */ static INPUT_PORTS_START( spc1500 ) @@ -814,11 +815,12 @@ static INPUT_PORTS_START( spc1500 ) PORT_BIT(0x80, IP_ACTIVE_HIGH,IPT_UNUSED) // DIP SW3 for 200/400 line INPUT_PORTS_END -ADDRESS_MAP_START(spc1500_state::spc1500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_READWRITE_BANK("bank4") -ADDRESS_MAP_END +void spc1500_state::spc1500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).bankr("bank1").bankw("bank2"); + map(0x8000, 0xffff).bankrw("bank4"); +} void spc1500_state::machine_start() { diff --git a/src/mame/drivers/spcforce.cpp b/src/mame/drivers/spcforce.cpp index 2bce652320d..36c28564b0c 100644 --- a/src/mame/drivers/spcforce.cpp +++ b/src/mame/drivers/spcforce.cpp @@ -124,21 +124,23 @@ WRITE_LINE_MEMBER(spcforce_state::unknown_w) // written very frequently } -ADDRESS_MAP_START(spcforce_state::spcforce_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x7001, 0x7001) AM_READ_PORT("P1") AM_WRITE(soundtrigger_w) - AM_RANGE(0x7002, 0x7002) AM_READ_PORT("P2") AM_WRITE(misc_outputs_w) - AM_RANGE(0x7008, 0x700f) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x8000, 0x83ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("scrollram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(spcforce_state::spcforce_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM -ADDRESS_MAP_END +void spcforce_state::spcforce_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x7000, 0x7000).portr("DSW").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x7001, 0x7001).portr("P1").w(this, FUNC(spcforce_state::soundtrigger_w)); + map(0x7002, 0x7002).portr("P2").w(this, FUNC(spcforce_state::misc_outputs_w)); + map(0x7008, 0x700f).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x8000, 0x83ff).ram().share("videoram"); + map(0x9000, 0x93ff).ram().share("colorram"); + map(0xa000, 0xa3ff).ram().share("scrollram"); +} + +void spcforce_state::spcforce_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); +} static INPUT_PORTS_START( spcforce ) diff --git a/src/mame/drivers/spdodgeb.cpp b/src/mame/drivers/spdodgeb.cpp index bb091f32371..3dcbe6bd7b7 100644 --- a/src/mame/drivers/spdodgeb.cpp +++ b/src/mame/drivers/spdodgeb.cpp @@ -236,30 +236,32 @@ WRITE8_MEMBER(spdodgeb_state::mcu63701_w) -ADDRESS_MAP_START(spdodgeb_state::spdodgeb_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x10ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") //AM_WRITENOP - AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW") //AM_WRITENOP - AM_RANGE(0x3002, 0x3002) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) +void spdodgeb_state::spdodgeb_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x10ff).writeonly().share("spriteram"); + map(0x2000, 0x2fff).ram().w(this, FUNC(spdodgeb_state::videoram_w)).share("videoram"); + map(0x3000, 0x3000).portr("IN0"); //AM_WRITENOP + map(0x3001, 0x3001).portr("DSW"); //AM_WRITENOP + map(0x3002, 0x3002).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // AM_RANGE(0x3003, 0x3003) AM_WRITENOP - AM_RANGE(0x3004, 0x3004) AM_WRITE(scrollx_lo_w) + map(0x3004, 0x3004).w(this, FUNC(spdodgeb_state::scrollx_lo_w)); // AM_RANGE(0x3005, 0x3005) AM_WRITENOP /* mcu63701_output_w */ - AM_RANGE(0x3006, 0x3006) AM_WRITE(ctrl_w) /* scroll hi, flip screen, bank switch, palette select */ - AM_RANGE(0x3800, 0x3800) AM_WRITE(mcu63701_w) - AM_RANGE(0x3801, 0x3805) AM_READ(mcu63701_r) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(spdodgeb_state::spdodgeb_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END + map(0x3006, 0x3006).w(this, FUNC(spdodgeb_state::ctrl_w)); /* scroll hi, flip screen, bank switch, palette select */ + map(0x3800, 0x3800).w(this, FUNC(spdodgeb_state::mcu63701_w)); + map(0x3801, 0x3805).r(this, FUNC(spdodgeb_state::mcu63701_r)); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void spdodgeb_state::spdodgeb_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x2800, 0x2801).w("ymsnd", FUNC(ym3812_device::write)); + map(0x3800, 0x3807).w(this, FUNC(spdodgeb_state::spd_adpcm_w)); + map(0x8000, 0xffff).rom().region("audiocpu", 0); +} CUSTOM_INPUT_MEMBER(spdodgeb_state::mcu63705_busy_r) diff --git a/src/mame/drivers/spec128.cpp b/src/mame/drivers/spec128.cpp index 4c0d9c1f1a5..9e9a28de101 100644 --- a/src/mame/drivers/spec128.cpp +++ b/src/mame/drivers/spec128.cpp @@ -233,20 +233,22 @@ READ8_MEMBER( spectrum_state::spectrum_128_ula_r ) return vpos<193 ? m_screen_location[0x1800|(vpos&0xf8)<<2]:0xff; } -ADDRESS_MAP_START(spectrum_state::spectrum_128_io) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xfffe) - AM_RANGE(0x0001, 0x0001) AM_WRITE(spectrum_128_port_7ffd_w) AM_MIRROR(0x7ffc) // (A15 | A1) == 0, note: reading from this port does write to it by value from data bus - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd) - AM_RANGE(0x0001, 0x0001) AM_READ(spectrum_128_ula_r) AM_MIRROR(0xfffe) -ADDRESS_MAP_END - -ADDRESS_MAP_START(spectrum_state::spectrum_128_mem) - AM_RANGE( 0x0000, 0x3fff) AM_READWRITE(spectrum_128_bank1_r, spectrum_128_bank1_w) - AM_RANGE( 0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE( 0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE( 0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END +void spectrum_state::spectrum_128_io(address_map &map) +{ + map(0x0000, 0x0000).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe); + map(0x0001, 0x0001).w(this, FUNC(spectrum_state::spectrum_128_port_7ffd_w)).mirror(0x7ffc); // (A15 | A1) == 0, note: reading from this port does write to it by value from data bus + map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd); + map(0xc000, 0xc000).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3ffd); + map(0x0001, 0x0001).r(this, FUNC(spectrum_state::spectrum_128_ula_r)).mirror(0xfffe); +} + +void spectrum_state::spectrum_128_mem(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(spectrum_state::spectrum_128_bank1_r), FUNC(spectrum_state::spectrum_128_bank1_w)); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} MACHINE_RESET_MEMBER(spectrum_state,spectrum_128) { diff --git a/src/mame/drivers/special.cpp b/src/mame/drivers/special.cpp index 84afade68c7..b66dfcc44bb 100644 --- a/src/mame/drivers/special.cpp +++ b/src/mame/drivers/special.cpp @@ -19,53 +19,58 @@ /* Address maps */ -ADDRESS_MAP_START(special_state::specialist_mem) - AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x3000, 0x8fff ) AM_RAM // RAM - AM_RANGE( 0x9000, 0xbfff ) AM_RAM AM_SHARE("videoram") // Video RAM - AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM - AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(special_state::specialp_mem) - AM_RANGE( 0x0000, 0x2fff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x3000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0xbfff ) AM_RAM AM_SHARE("videoram") // Video RAM - AM_RANGE( 0xc000, 0xefff ) AM_ROM // System ROM - AM_RANGE( 0xf800, 0xf803 ) AM_MIRROR(0x7fc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(special_state::erik_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x4000, 0x8fff ) AM_RAMBANK("bank2") - AM_RANGE( 0x9000, 0xbfff ) AM_RAMBANK("bank3") - AM_RANGE( 0xc000, 0xefff ) AM_RAMBANK("bank4") - AM_RANGE( 0xf000, 0xf7ff ) AM_RAMBANK("bank5") - AM_RANGE( 0xf800, 0xffff ) AM_RAMBANK("bank6") -ADDRESS_MAP_END - -ADDRESS_MAP_START(special_state::erik_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf1, 0xf1) AM_READWRITE(erik_rr_reg_r, erik_rr_reg_w) - AM_RANGE(0xf2, 0xf2) AM_READWRITE(erik_rc_reg_r, erik_rc_reg_w) - AM_RANGE(0xf3, 0xf3) AM_READWRITE(erik_disk_reg_r, erik_disk_reg_w) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE("fd1793", fd1793_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(special_state::specimx_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x8fff ) AM_RAMBANK("bank1") - AM_RANGE( 0x9000, 0xbfff ) AM_RAMBANK("bank2") - AM_RANGE( 0xc000, 0xffbf ) AM_RAMBANK("bank3") - AM_RANGE( 0xffc0, 0xffdf ) AM_RAMBANK("bank4") - AM_RANGE( 0xffe0, 0xffe3 ) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE( 0xffe4, 0xffe7 ) AM_RAM //external 8255 - AM_RANGE( 0xffe8, 0xffeb ) AM_DEVREADWRITE("fd1793", fd1793_device, read, write) - AM_RANGE( 0xffec, 0xffef ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE( 0xfff0, 0xfff3 ) AM_READWRITE(specimx_disk_ctrl_r, specimx_disk_ctrl_w) - AM_RANGE( 0xfff8, 0xfffb ) AM_READWRITE(specimx_video_color_r,specimx_video_color_w) - AM_RANGE( 0xfffc, 0xffff ) AM_WRITE(specimx_select_bank) -ADDRESS_MAP_END +void special_state::specialist_mem(address_map &map) +{ + map(0x0000, 0x2fff).bankrw("bank1"); // First bank + map(0x3000, 0x8fff).ram(); // RAM + map(0x9000, 0xbfff).ram().share("videoram"); // Video RAM + map(0xc000, 0xefff).rom(); // System ROM + map(0xf800, 0xf803).mirror(0x7fc).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void special_state::specialp_mem(address_map &map) +{ + map(0x0000, 0x2fff).bankrw("bank1"); // First bank + map(0x3000, 0x7fff).ram(); // RAM + map(0x8000, 0xbfff).ram().share("videoram"); // Video RAM + map(0xc000, 0xefff).rom(); // System ROM + map(0xf800, 0xf803).mirror(0x7fc).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void special_state::erik_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x8fff).bankrw("bank2"); + map(0x9000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xefff).bankrw("bank4"); + map(0xf000, 0xf7ff).bankrw("bank5"); + map(0xf800, 0xffff).bankrw("bank6"); +} + +void special_state::erik_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xf1, 0xf1).rw(this, FUNC(special_state::erik_rr_reg_r), FUNC(special_state::erik_rr_reg_w)); + map(0xf2, 0xf2).rw(this, FUNC(special_state::erik_rc_reg_r), FUNC(special_state::erik_rc_reg_w)); + map(0xf3, 0xf3).rw(this, FUNC(special_state::erik_disk_reg_r), FUNC(special_state::erik_disk_reg_w)); + map(0xf4, 0xf7).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); +} + +void special_state::specimx_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x8fff).bankrw("bank1"); + map(0x9000, 0xbfff).bankrw("bank2"); + map(0xc000, 0xffbf).bankrw("bank3"); + map(0xffc0, 0xffdf).bankrw("bank4"); + map(0xffe0, 0xffe3).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xffe4, 0xffe7).ram(); //external 8255 + map(0xffe8, 0xffeb).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0xffec, 0xffef).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xfff0, 0xfff3).rw(this, FUNC(special_state::specimx_disk_ctrl_r), FUNC(special_state::specimx_disk_ctrl_w)); + map(0xfff8, 0xfffb).rw(this, FUNC(special_state::specimx_video_color_r), FUNC(special_state::specimx_video_color_w)); + map(0xfffc, 0xffff).w(this, FUNC(special_state::specimx_select_bank)); +} /* Input ports */ diff --git a/src/mame/drivers/specpls3.cpp b/src/mame/drivers/specpls3.cpp index 02363858cdd..139cecad237 100644 --- a/src/mame/drivers/specpls3.cpp +++ b/src/mame/drivers/specpls3.cpp @@ -305,23 +305,25 @@ WRITE8_MEMBER( spectrum_state::spectrum_plus3_port_1ffd_w ) /* ports are not decoded full. The function decodes the ports appropriately */ -ADDRESS_MAP_START(spectrum_state::spectrum_plus3_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0000) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xfffe) - AM_RANGE(0x4000, 0x4000) AM_WRITE(spectrum_plus3_port_7ffd_w) AM_MIRROR(0x3ffd) - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay8912", ay8910_device, data_w) AM_MIRROR(0x3ffd) - AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, address_w) AM_MIRROR(0x3ffd) - AM_RANGE(0x1000, 0x1000) AM_WRITE(spectrum_plus3_port_1ffd_w) AM_MIRROR(0x0ffd) - AM_RANGE(0x2000, 0x2000) AM_READ(spectrum_plus3_port_2ffd_r) AM_MIRROR(0x0ffd) - AM_RANGE(0x3000, 0x3000) AM_READWRITE(spectrum_plus3_port_3ffd_r,spectrum_plus3_port_3ffd_w) AM_MIRROR(0x0ffd) -ADDRESS_MAP_END - -ADDRESS_MAP_START(spectrum_state::spectrum_plus3_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END +void spectrum_state::spectrum_plus3_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0000).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe); + map(0x4000, 0x4000).w(this, FUNC(spectrum_state::spectrum_plus3_port_7ffd_w)).mirror(0x3ffd); + map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd); + map(0xc000, 0xc000).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)).mirror(0x3ffd); + map(0x1000, 0x1000).w(this, FUNC(spectrum_state::spectrum_plus3_port_1ffd_w)).mirror(0x0ffd); + map(0x2000, 0x2000).r(this, FUNC(spectrum_state::spectrum_plus3_port_2ffd_r)).mirror(0x0ffd); + map(0x3000, 0x3000).rw(this, FUNC(spectrum_state::spectrum_plus3_port_3ffd_r), FUNC(spectrum_state::spectrum_plus3_port_3ffd_w)).mirror(0x0ffd); +} + +void spectrum_state::spectrum_plus3_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} MACHINE_RESET_MEMBER(spectrum_state,spectrum_plus3) { diff --git a/src/mame/drivers/spectra.cpp b/src/mame/drivers/spectra.cpp index c03d07ba614..7564577c9da 100644 --- a/src/mame/drivers/spectra.cpp +++ b/src/mame/drivers/spectra.cpp @@ -77,14 +77,15 @@ private: }; -ADDRESS_MAP_START(spectra_state::spectra_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xfff) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("nvram") // battery backed, 2x 5101L - AM_RANGE(0x0100, 0x017f) AM_RAM // RIOT RAM - AM_RANGE(0x0180, 0x019f) AM_DEVREADWRITE("riot", riot6532_device, read, write) - AM_RANGE(0x0400, 0x0fff) AM_ROM -ADDRESS_MAP_END +void spectra_state::spectra_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xfff); + map(0x0000, 0x00ff).ram().share("nvram"); // battery backed, 2x 5101L + map(0x0100, 0x017f).ram(); // RIOT RAM + map(0x0180, 0x019f).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0400, 0x0fff).rom(); +} static INPUT_PORTS_START( spectra ) PORT_START("SWITCH.0") diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp index b88fcbcb47c..1dcc4337880 100644 --- a/src/mame/drivers/spectrum.cpp +++ b/src/mame/drivers/spectrum.cpp @@ -431,19 +431,21 @@ READ8_MEMBER(spectrum_state::spectrum_port_ula_r) /* Memory Maps */ -ADDRESS_MAP_START(spectrum_state::spectrum_mem) - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(spectrum_rom_r, spectrum_rom_w) - AM_RANGE(0x4000, 0x5aff) AM_RAM AM_SHARE("video_ram") +void spectrum_state::spectrum_mem(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(spectrum_state::spectrum_rom_r), FUNC(spectrum_state::spectrum_rom_w)); + map(0x4000, 0x5aff).ram().share("video_ram"); // AM_RANGE(0x5b00, 0x7fff) AM_RAM // AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +} /* ports are not decoded full. The function decodes the ports appropriately */ -ADDRESS_MAP_START(spectrum_state::spectrum_io) - AM_RANGE(0x00, 0x00) AM_READWRITE(spectrum_port_fe_r, spectrum_port_fe_w) AM_SELECT(0xfffe) - AM_RANGE(0x01, 0x01) AM_READ(spectrum_port_ula_r) AM_MIRROR(0xfffe) -ADDRESS_MAP_END +void spectrum_state::spectrum_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe); + map(0x01, 0x01).r(this, FUNC(spectrum_state::spectrum_port_ula_r)).mirror(0xfffe); +} /* Input ports */ diff --git a/src/mame/drivers/speedatk.cpp b/src/mame/drivers/speedatk.cpp index 7355b410ad3..d2ae9ee912f 100644 --- a/src/mame/drivers/speedatk.cpp +++ b/src/mame/drivers/speedatk.cpp @@ -181,24 +181,26 @@ WRITE8_MEMBER(speedatk_state::key_matrix_status_w) m_coin_settings = m_km_status & 0xf; } -ADDRESS_MAP_START(speedatk_state::speedatk_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_READWRITE(key_matrix_r,key_matrix_w) - AM_RANGE(0x8001, 0x8001) AM_READWRITE(key_matrix_status_r,key_matrix_status_w) - AM_RANGE(0x8800, 0x8fff) AM_RAM - AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xb000, 0xb3ff) AM_RAM AM_SHARE("colorram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(speedatk_state::speedatk_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE(m6845_w) //h46505 address / data routing - AM_RANGE(0x24, 0x24) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x40, 0x40) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) +void speedatk_state::speedatk_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8000).rw(this, FUNC(speedatk_state::key_matrix_r), FUNC(speedatk_state::key_matrix_w)); + map(0x8001, 0x8001).rw(this, FUNC(speedatk_state::key_matrix_status_r), FUNC(speedatk_state::key_matrix_status_w)); + map(0x8800, 0x8fff).ram(); + map(0xa000, 0xa3ff).ram().share("videoram"); + map(0xb000, 0xb3ff).ram().share("colorram"); +} + + +void speedatk_state::speedatk_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w(this, FUNC(speedatk_state::m6845_w)); //h46505 address / data routing + map(0x24, 0x24).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w)); //what's 60-6f for? Seems used only in attract mode and read back when a 2p play ends ... -ADDRESS_MAP_END +} static INPUT_PORTS_START( speedatk ) PORT_START("DSW") diff --git a/src/mame/drivers/speedbal.cpp b/src/mame/drivers/speedbal.cpp index b6c8f4081b2..e4ff4986169 100644 --- a/src/mame/drivers/speedbal.cpp +++ b/src/mame/drivers/speedbal.cpp @@ -54,36 +54,39 @@ WRITE8_MEMBER(speedbal_state::coincounter_w) /* unknown: (data & 0x10) and (data & 4) */ } -ADDRESS_MAP_START(speedbal_state::main_cpu_map) - AM_RANGE(0x0000, 0xdbff) AM_ROM - AM_RANGE(0xdc00, 0xdfff) AM_RAM AM_SHARE("share1") // shared with SOUND - AM_RANGE(0xe000, 0xe1ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(foreground_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0xf000, 0xf5ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf600, 0xfeff) AM_RAM - AM_RANGE(0xff00, 0xffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END +void speedbal_state::main_cpu_map(address_map &map) +{ + map(0x0000, 0xdbff).rom(); + map(0xdc00, 0xdfff).ram().share("share1"); // shared with SOUND + map(0xe000, 0xe1ff).ram().w(this, FUNC(speedbal_state::background_videoram_w)).share("bg_videoram"); + map(0xe800, 0xefff).ram().w(this, FUNC(speedbal_state::foreground_videoram_w)).share("fg_videoram"); + map(0xf000, 0xf5ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf600, 0xfeff).ram(); + map(0xff00, 0xffff).ram().share("spriteram"); +} WRITE8_MEMBER(speedbal_state::maincpu_50_w) { //logerror("%s: maincpu_50_w %02x\n", this->machine().describe_context(), data); } -ADDRESS_MAP_START(speedbal_state::main_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW2") - AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1") - AM_RANGE(0x20, 0x20) AM_READ_PORT("P1") - AM_RANGE(0x30, 0x30) AM_READ_PORT("P2") - AM_RANGE(0x40, 0x40) AM_WRITE(coincounter_w) - AM_RANGE(0x50, 0x50) AM_WRITE(maincpu_50_w) -ADDRESS_MAP_END +void speedbal_state::main_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW2"); + map(0x10, 0x10).portr("DSW1"); + map(0x20, 0x20).portr("P1"); + map(0x30, 0x30).portr("P2"); + map(0x40, 0x40).w(this, FUNC(speedbal_state::coincounter_w)); + map(0x50, 0x50).w(this, FUNC(speedbal_state::maincpu_50_w)); +} -ADDRESS_MAP_START(speedbal_state::sound_cpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xd800, 0xdbff) AM_RAM - AM_RANGE(0xdc00, 0xdfff) AM_RAM AM_SHARE("share1") // shared with MAIN CPU -ADDRESS_MAP_END +void speedbal_state::sound_cpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xd800, 0xdbff).ram(); + map(0xdc00, 0xdfff).ram().share("share1"); // shared with MAIN CPU +} @@ -117,14 +120,15 @@ WRITE8_MEMBER(speedbal_state::leds_shift_bit) -ADDRESS_MAP_START(speedbal_state::sound_cpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITE(leds_output_block) - AM_RANGE(0x80, 0x80) AM_WRITE(leds_start_block) - AM_RANGE(0x82, 0x82) AM_WRITENOP // ? - AM_RANGE(0xc1, 0xc1) AM_WRITE(leds_shift_bit) -ADDRESS_MAP_END +void speedbal_state::sound_cpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x40, 0x40).w(this, FUNC(speedbal_state::leds_output_block)); + map(0x80, 0x80).w(this, FUNC(speedbal_state::leds_start_block)); + map(0x82, 0x82).nopw(); // ? + map(0xc1, 0xc1).w(this, FUNC(speedbal_state::leds_shift_bit)); +} static INPUT_PORTS_START( speedbal ) diff --git a/src/mame/drivers/speedspn.cpp b/src/mame/drivers/speedspn.cpp index 7801e7cca14..c1a21af7df7 100644 --- a/src/mame/drivers/speedspn.cpp +++ b/src/mame/drivers/speedspn.cpp @@ -93,43 +93,47 @@ WRITE8_MEMBER(speedspn_state::okibank_w) /* main cpu */ -ADDRESS_MAP_START(speedspn_state::program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") /* RAM COLOUR */ - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(attram_w) AM_SHARE("attram") - AM_RANGE(0x9000, 0x9fff) AM_READWRITE(vidram_r, vidram_w) /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xa800, 0xafff) AM_RAM - AM_RANGE(0xb000, 0xbfff) AM_RAM /* RAM PROGRAM */ - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("prgbank") /* banked ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(speedspn_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x07, 0x07) AM_WRITE(display_disable_w) - AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM") - AM_RANGE(0x11, 0x11) AM_READ_PORT("P1") - AM_RANGE(0x12, 0x12) AM_READ_PORT("P2") AM_WRITE(rombank_w) - AM_RANGE(0x13, 0x13) AM_READ_PORT("DSW1") AM_WRITE(sound_w) - AM_RANGE(0x14, 0x14) AM_READ_PORT("DSW2") - AM_RANGE(0x16, 0x16) AM_READ(irq_ack_r) // @@@ could be watchdog, value is discarded - AM_RANGE(0x17, 0x17) AM_WRITE(vidram_bank_w) -ADDRESS_MAP_END +void speedspn_state::program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); /* RAM COLOUR */ + map(0x8800, 0x8fff).ram().w(this, FUNC(speedspn_state::attram_w)).share("attram"); + map(0x9000, 0x9fff).rw(this, FUNC(speedspn_state::vidram_r), FUNC(speedspn_state::vidram_w)); /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */ + map(0xa000, 0xa7ff).ram(); + map(0xa800, 0xafff).ram(); + map(0xb000, 0xbfff).ram(); /* RAM PROGRAM */ + map(0xc000, 0xffff).bankr("prgbank"); /* banked ROM */ +} + +void speedspn_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x07, 0x07).w(this, FUNC(speedspn_state::display_disable_w)); + map(0x10, 0x10).portr("SYSTEM"); + map(0x11, 0x11).portr("P1"); + map(0x12, 0x12).portr("P2").w(this, FUNC(speedspn_state::rombank_w)); + map(0x13, 0x13).portr("DSW1").w(this, FUNC(speedspn_state::sound_w)); + map(0x14, 0x14).portr("DSW2"); + map(0x16, 0x16).r(this, FUNC(speedspn_state::irq_ack_r)); // @@@ could be watchdog, value is discarded + map(0x17, 0x17).w(this, FUNC(speedspn_state::vidram_bank_w)); +} /* sound cpu */ -ADDRESS_MAP_START(speedspn_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(speedspn_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void speedspn_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(speedspn_state::okibank_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void speedspn_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} /*** INPUT PORT **************************************************************/ diff --git a/src/mame/drivers/speglsht.cpp b/src/mame/drivers/speglsht.cpp index 3dfebfe094a..6656f0ba033 100644 --- a/src/mame/drivers/speglsht.cpp +++ b/src/mame/drivers/speglsht.cpp @@ -157,18 +157,19 @@ public: }; -ADDRESS_MAP_START(speglsht_state::st0016_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("st0016_bank") +void speglsht_state::st0016_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("st0016_bank"); //AM_RANGE(0xc000, 0xcfff) AM_READ(st0016_sprite_ram_r) AM_WRITE(st0016_sprite_ram_w) //AM_RANGE(0xd000, 0xdfff) AM_READ(st0016_sprite2_ram_r) AM_WRITE(st0016_sprite2_ram_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xe87f) AM_RAM + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xe87f).ram(); //AM_RANGE(0xe900, 0xe9ff) // sound - internal //AM_RANGE(0xea00, 0xebff) AM_READ(st0016_palette_ram_r) AM_WRITE(st0016_palette_ram_w) //AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("shared") -ADDRESS_MAP_END + map(0xf000, 0xffff).ram().share("shared"); +} void speglsht_state::machine_start() { @@ -182,17 +183,18 @@ WRITE8_MEMBER(speglsht_state::st0016_rom_bank_w) } -ADDRESS_MAP_START(speglsht_state::st0016_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void speglsht_state::st0016_io(address_map &map) +{ + map.global_mask(0xff); //AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) - AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) + map(0xe1, 0xe1).w(this, FUNC(speglsht_state::st0016_rom_bank_w)); //AM_RANGE(0xe2, 0xe2) AM_WRITE(st0016_sprite_bank_w) //AM_RANGE(0xe3, 0xe4) AM_WRITE(st0016_character_bank_w) //AM_RANGE(0xe5, 0xe5) AM_WRITE(st0016_palette_bank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITENOP - AM_RANGE(0xe7, 0xe7) AM_WRITENOP + map(0xe6, 0xe6).nopw(); + map(0xe7, 0xe7).nopw(); //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r) -ADDRESS_MAP_END +} READ32_MEMBER(speglsht_state::shared_r) { @@ -261,21 +263,22 @@ READ32_MEMBER(speglsht_state::irq_ack_clear) return 0; } -ADDRESS_MAP_START(speglsht_state::speglsht_mem) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM - AM_RANGE(0x01000000, 0x01007fff) AM_RAM //tested - STATIC RAM - AM_RANGE(0x01600000, 0x0160004f) AM_READWRITE(cop_r, cop_w) AM_SHARE("cop_ram") - AM_RANGE(0x01800200, 0x01800203) AM_WRITE(videoreg_w) - AM_RANGE(0x01800300, 0x01800303) AM_READ_PORT("IN0") - AM_RANGE(0x01800400, 0x01800403) AM_READ_PORT("IN1") - AM_RANGE(0x01a00000, 0x01afffff) AM_RAM AM_SHARE("framebuffer") - AM_RANGE(0x01b00000, 0x01b07fff) AM_RAM //cleared ... video related ? - AM_RANGE(0x01c00000, 0x01dfffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE(shared_r, shared_w) - AM_RANGE(0x0fc00000, 0x0fdfffff) AM_ROM AM_MIRROR(0x10000000) AM_REGION("user1", 0) - AM_RANGE(0x1eff0000, 0x1eff001f) AM_RAM - AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear) -ADDRESS_MAP_END +void speglsht_state::speglsht_mem(address_map &map) +{ + map(0x00000000, 0x000fffff).ram(); + map(0x01000000, 0x01007fff).ram(); //tested - STATIC RAM + map(0x01600000, 0x0160004f).rw(this, FUNC(speglsht_state::cop_r), FUNC(speglsht_state::cop_w)).share("cop_ram"); + map(0x01800200, 0x01800203).w(this, FUNC(speglsht_state::videoreg_w)); + map(0x01800300, 0x01800303).portr("IN0"); + map(0x01800400, 0x01800403).portr("IN1"); + map(0x01a00000, 0x01afffff).ram().share("framebuffer"); + map(0x01b00000, 0x01b07fff).ram(); //cleared ... video related ? + map(0x01c00000, 0x01dfffff).rom().region("user2", 0); + map(0x0a000000, 0x0a003fff).rw(this, FUNC(speglsht_state::shared_r), FUNC(speglsht_state::shared_w)); + map(0x0fc00000, 0x0fdfffff).rom().mirror(0x10000000).region("user1", 0); + map(0x1eff0000, 0x1eff001f).ram(); + map(0x1eff003c, 0x1eff003f).r(this, FUNC(speglsht_state::irq_ack_clear)); +} static INPUT_PORTS_START( speglsht ) PORT_START("IN0") diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp index 2f4bcbe0ece..eb0b9d92e98 100644 --- a/src/mame/drivers/spiders.cpp +++ b/src/mame/drivers/spiders.cpp @@ -415,26 +415,28 @@ READ8_MEMBER(spiders_state::gfx_rom_r) * *************************************/ -ADDRESS_MAP_START(spiders_state::spiders_main_map) - AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xc020, 0xc027) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc044, 0xc047) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0xc048, 0xc04b) AM_DEVREADWRITE("pia2", pia6821_device, read_alt, write_alt) - AM_RANGE(0xc050, 0xc053) AM_DEVREADWRITE("pia3", pia6821_device, read, write) - AM_RANGE(0xc060, 0xc060) AM_READ_PORT("DSW1") - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("DSW2") - AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("DSW3") - AM_RANGE(0xc100, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(spiders_state::spiders_audio_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("pia4", pia6821_device, read, write) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void spiders_state::spiders_main_map(address_map &map) +{ + map(0x0000, 0xbfff).ram().share("ram"); + map(0xc000, 0xc000).w("crtc", FUNC(mc6845_device::address_w)); + map(0xc001, 0xc001).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xc020, 0xc027).ram().share("nvram"); + map(0xc044, 0xc047).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc048, 0xc04b).rw("pia2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xc050, 0xc053).rw("pia3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc060, 0xc060).portr("DSW1"); + map(0xc080, 0xc080).portr("DSW2"); + map(0xc0a0, 0xc0a0).portr("DSW3"); + map(0xc100, 0xffff).rom(); +} + + +void spiders_state::spiders_audio_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x0080, 0x0083).rw("pia4", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf800, 0xffff).rom(); +} diff --git a/src/mame/drivers/spinb.cpp b/src/mame/drivers/spinb.cpp index 17af5c2bc53..99c8746cae3 100644 --- a/src/mame/drivers/spinb.cpp +++ b/src/mame/drivers/spinb.cpp @@ -141,57 +141,63 @@ private: required_ioport_array<11> m_switches; }; -ADDRESS_MAP_START(spinb_state::spinb_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("nvram") // 6164, battery-backed - AM_RANGE(0x6000, 0x6003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write) - AM_RANGE(0x6400, 0x6403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write) - AM_RANGE(0x6800, 0x6803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write) - AM_RANGE(0x6c00, 0x6c03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write) - AM_RANGE(0x6c20, 0x6c3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w) - AM_RANGE(0x6c40, 0x6c45) AM_MIRROR(0x1300) AM_WRITE(lamp1_w) - AM_RANGE(0x6c60, 0x6c60) AM_MIRROR(0x1300) AM_WRITE(disp_w) - AM_RANGE(0x6ce0, 0x6ce0) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(spinb_state::vrnwrld_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram") // 6164, battery-backed - AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi60", i8255_device, read, write) - AM_RANGE(0xc400, 0xc403) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi64", i8255_device, read, write) - AM_RANGE(0xc800, 0xc803) AM_MIRROR(0x13fc) AM_DEVREADWRITE("ppi68", i8255_device, read, write) - AM_RANGE(0xcc00, 0xcc03) AM_MIRROR(0x131c) AM_DEVREADWRITE("ppi6c", i8255_device, read, write) - AM_RANGE(0xcc20, 0xcc3f) AM_MIRROR(0x1300) AM_WRITE(sndcmd_w) - AM_RANGE(0xcc40, 0xcc45) AM_MIRROR(0x1300) AM_WRITE(lamp1_w) - AM_RANGE(0xcc60, 0xcc60) AM_MIRROR(0x1300) AM_WRITE(disp_w) - AM_RANGE(0xcce0, 0xcce0) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(spinb_state::spinb_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM // 6164 - AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppia", i8255_device, read, write) - AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_a_w) - AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(spinb_state::spinb_music_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM // 6164 - AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppim", i8255_device, read, write) - AM_RANGE(0x6000, 0x6000) AM_WRITE(sndbank_m_w) - AM_RANGE(0x8000, 0x8000) AM_READ(sndcmd_r) - AM_RANGE(0xA000, 0xA000) AM_WRITE(volume_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(spinb_state::dmd_mem) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(spinb_state::dmd_io) - AM_RANGE(0x0000, 0x1fff) AM_WRITE(dmdram_w) - AM_RANGE(0x0000, 0xffff) AM_READ(dmdram_r) -ADDRESS_MAP_END +void spinb_state::spinb_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x5fff).ram().share("nvram"); // 6164, battery-backed + map(0x6000, 0x6003).mirror(0x13fc).rw("ppi60", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6400, 0x6403).mirror(0x13fc).rw("ppi64", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6800, 0x6803).mirror(0x13fc).rw("ppi68", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6c00, 0x6c03).mirror(0x131c).rw("ppi6c", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6c20, 0x6c3f).mirror(0x1300).w(this, FUNC(spinb_state::sndcmd_w)); + map(0x6c40, 0x6c45).mirror(0x1300).w(this, FUNC(spinb_state::lamp1_w)); + map(0x6c60, 0x6c60).mirror(0x1300).w(this, FUNC(spinb_state::disp_w)); + map(0x6ce0, 0x6ce0).nopw(); +} + +void spinb_state::vrnwrld_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram().share("nvram"); // 6164, battery-backed + map(0xc000, 0xc003).mirror(0x13fc).rw("ppi60", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc400, 0xc403).mirror(0x13fc).rw("ppi64", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc800, 0xc803).mirror(0x13fc).rw("ppi68", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xcc00, 0xcc03).mirror(0x131c).rw("ppi6c", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xcc20, 0xcc3f).mirror(0x1300).w(this, FUNC(spinb_state::sndcmd_w)); + map(0xcc40, 0xcc45).mirror(0x1300).w(this, FUNC(spinb_state::lamp1_w)); + map(0xcc60, 0xcc60).mirror(0x1300).w(this, FUNC(spinb_state::disp_w)); + map(0xcce0, 0xcce0).nopw(); +} + +void spinb_state::spinb_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram(); // 6164 + map(0x4000, 0x4003).mirror(0x1ffc).rw("ppia", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6000, 0x6000).w(this, FUNC(spinb_state::sndbank_a_w)); + map(0x8000, 0x8000).r(this, FUNC(spinb_state::sndcmd_r)); +} + +void spinb_state::spinb_music_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram(); // 6164 + map(0x4000, 0x4003).mirror(0x1ffc).rw("ppim", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6000, 0x6000).w(this, FUNC(spinb_state::sndbank_m_w)); + map(0x8000, 0x8000).r(this, FUNC(spinb_state::sndcmd_r)); + map(0xA000, 0xA000).w(this, FUNC(spinb_state::volume_w)); +} + +void spinb_state::dmd_mem(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} + +void spinb_state::dmd_io(address_map &map) +{ + map(0x0000, 0x1fff).w(this, FUNC(spinb_state::dmdram_w)); + map(0x0000, 0xffff).r(this, FUNC(spinb_state::dmdram_r)); +} static INPUT_PORTS_START( spinb ) PORT_START("SW.0") diff --git a/src/mame/drivers/spirit76.cpp b/src/mame/drivers/spirit76.cpp index e306884a2f5..642cec9f6d8 100644 --- a/src/mame/drivers/spirit76.cpp +++ b/src/mame/drivers/spirit76.cpp @@ -48,16 +48,17 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(spirit76_state::maincpu_map) - ADDRESS_MAP_UNMAP_HIGH +void spirit76_state::maincpu_map(address_map &map) +{ + map.unmap_value_high(); // ADDRESS_MAP_GLOBAL_MASK(0xfff) // this could most likely go in once the memory map is sorted - AM_RANGE(0x0000, 0x00ff) AM_RAM // 2x 2112 - AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia", pia6821_device, read, write) // 6820 - AM_RANGE(0x2400, 0x2400) AM_READ(unk_r) - AM_RANGE(0x2401, 0x2401) AM_WRITE(unk_w) - AM_RANGE(0x0600, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xfe00, 0xffff) AM_ROM AM_REGION("roms", 0x800) -ADDRESS_MAP_END + map(0x0000, 0x00ff).ram(); // 2x 2112 + map(0x2200, 0x2203).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // 6820 + map(0x2400, 0x2400).r(this, FUNC(spirit76_state::unk_r)); + map(0x2401, 0x2401).w(this, FUNC(spirit76_state::unk_w)); + map(0x0600, 0x0fff).rom().region("roms", 0); + map(0xfe00, 0xffff).rom().region("roms", 0x800); +} static INPUT_PORTS_START( spirit76 ) diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp index 852d40b9d09..3697ba43891 100644 --- a/src/mame/drivers/splash.cpp +++ b/src/mame/drivers/splash.cpp @@ -73,22 +73,26 @@ WRITE_LINE_MEMBER(splash_state::coin2_counter_w) machine().bookkeeping().coin_counter_w(1, state); } -ADDRESS_MAP_START(splash_state::splash_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM /* ROM */ - AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */ - AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1") - AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2") - AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1") - AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2") - ;map(0x84000a, 0x84000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0xff00); - AM_RANGE(0x84000e, 0x84000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */ - AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */ - AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */ - AM_RANGE(0x900000, 0x900fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END +void splash_state::splash_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); /* ROM */ + map(0x800000, 0x83ffff).ram().share("pixelram"); /* Pixel Layer */ + map(0x840000, 0x840001).portr("DSW1"); + map(0x840002, 0x840003).portr("DSW2"); + map(0x840004, 0x840005).portr("P1"); + map(0x840006, 0x840007).portr("P2"); + map(0x84000a, 0x84000a).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x84000f, 0x84000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x880000, 0x8817ff).ram().w(this, FUNC(splash_state::vram_w)).share("videoram"); /* Video RAM */ + map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */ + map(0x881804, 0x881fff).ram(); /* Work RAM */ + map(0x8c0000, 0x8c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette is xRRRRxGGGGxBBBBx */ + map(0x900000, 0x900fff).ram().share("spriteram"); /* Sprite RAM */ + map(0xffc000, 0xffffff).ram(); /* Work RAM */ +} WRITE8_MEMBER(splash_state::splash_adpcm_data_w) { @@ -106,14 +110,15 @@ WRITE_LINE_MEMBER(splash_state::splash_msm5205_int) m_adpcm_data = (m_adpcm_data << 4) & 0xf0; } -ADDRESS_MAP_START(splash_state::splash_sound_map) - AM_RANGE(0x0000, 0xd7ff) AM_ROM /* ROM */ - AM_RANGE(0xd800, 0xd800) AM_WRITE(splash_adpcm_data_w) /* ADPCM data for the MSM5205 chip */ - AM_RANGE(0xe000, 0xe000) AM_WRITE(splash_adpcm_control_w) - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* Sound latch */ - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) /* YM3812 */ - AM_RANGE(0xf800, 0xffff) AM_RAM /* RAM */ -ADDRESS_MAP_END +void splash_state::splash_sound_map(address_map &map) +{ + map(0x0000, 0xd7ff).rom(); /* ROM */ + map(0xd800, 0xd800).w(this, FUNC(splash_state::splash_adpcm_data_w)); /* ADPCM data for the MSM5205 chip */ + map(0xe000, 0xe000).w(this, FUNC(splash_state::splash_adpcm_control_w)); + map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* Sound latch */ + map(0xf000, 0xf001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); /* YM3812 */ + map(0xf800, 0xffff).ram(); /* RAM */ +} /* Return of Lady Frog Maps */ /* note, sprite ram has moved, extra protection ram, and extra write for the pixel layer */ @@ -149,32 +154,37 @@ WRITE_LINE_MEMBER(splash_state::ym_irq) roldfrog_update_irq(); } -ADDRESS_MAP_START(splash_state::roldfrog_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM /* ROM */ - AM_RANGE(0x400000, 0x407fff) AM_ROM AM_SHARE("protdata") /* Protection Data */ - AM_RANGE(0x408000, 0x4087ff) AM_RAM /* Extra Ram */ - AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */ - AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1") - AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2") - AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1") - AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2") - ;map(0x84000a, 0x84000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0xff00); - AM_RANGE(0x84000e, 0x84000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */ - AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */ - AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */ - AM_RANGE(0xa00000, 0xa00001) AM_READ(roldfrog_bombs_r) - AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0xe00000, 0xe00001) AM_WRITEONLY AM_SHARE("bitmap_mode") /* Bitmap Mode? */ - AM_RANGE(0xffc000, 0xffffff) AM_RAM /* Work RAM */ -ADDRESS_MAP_END +void splash_state::roldfrog_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); /* ROM */ + map(0x400000, 0x407fff).rom().share("protdata"); /* Protection Data */ + map(0x408000, 0x4087ff).ram(); /* Extra Ram */ + map(0x800000, 0x83ffff).ram().share("pixelram"); /* Pixel Layer */ + map(0x840000, 0x840001).portr("DSW1"); + map(0x840002, 0x840003).portr("DSW2"); + map(0x840004, 0x840005).portr("P1"); + map(0x840006, 0x840007).portr("P2"); + map(0x84000a, 0x84000a).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x84000f, 0x84000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x880000, 0x8817ff).ram().w(this, FUNC(splash_state::vram_w)).share("videoram"); /* Video RAM */ + map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */ + map(0x881804, 0x881fff).ram(); /* Work RAM */ + map(0x8c0000, 0x8c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette is xRRRRxGGGGxBBBBx */ + map(0xa00000, 0xa00001).r(this, FUNC(splash_state::roldfrog_bombs_r)); + map(0xd00000, 0xd00fff).ram().share("spriteram"); /* Sprite RAM */ + map(0xe00000, 0xe00001).writeonly().share("bitmap_mode"); /* Bitmap Mode? */ + map(0xffc000, 0xffffff).ram(); /* Work RAM */ +} -ADDRESS_MAP_START(splash_state::roldfrog_sound_map) - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM AM_ROMBANK("sound_bank") -ADDRESS_MAP_END +void splash_state::roldfrog_sound_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram(); + map(0x8000, 0xffff).rom().bankr("sound_bank"); +} READ8_MEMBER(splash_state::roldfrog_unk_r) { @@ -182,16 +192,17 @@ READ8_MEMBER(splash_state::roldfrog_unk_r) return 0xff; } -ADDRESS_MAP_START(splash_state::roldfrog_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x31, 0x31) AM_WRITE(sound_bank_w) - AM_RANGE(0x37, 0x37) AM_WRITE(roldfrog_vblank_ack_w ) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x70, 0x70) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - - AM_RANGE(0x20, 0x23) AM_READ(roldfrog_unk_r) -ADDRESS_MAP_END +void splash_state::roldfrog_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x31, 0x31).w(this, FUNC(splash_state::sound_bank_w)); + map(0x37, 0x37).w(this, FUNC(splash_state::roldfrog_vblank_ack_w)); + map(0x40, 0x40).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x70, 0x70).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + + map(0x20, 0x23).r(this, FUNC(splash_state::roldfrog_unk_r)); +} READ16_MEMBER(funystrp_state::spr_read) { @@ -211,24 +222,26 @@ WRITE8_MEMBER(funystrp_state::eeprom_w) m_eeprom->clk_write(BIT(data, 5)); } -ADDRESS_MAP_START(funystrp_state::funystrp_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x1fffff) AM_RAM /* protection? RAM */ - AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */ - AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1") - AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2") - AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1") - AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2") - AM_RANGE(0x840008, 0x840009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x84000a, 0x84000b) AM_WRITE8(eeprom_w, 0xff00) AM_READNOP - AM_RANGE(0x84000e, 0x84000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) - AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */ - AM_RANGE(0x881804, 0x881fff) AM_RAM - AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */ - AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(spr_read, spr_write) AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_MIRROR(0x10000) /* there's fe0000 <-> ff0000 compare */ /* Work RAM */ -ADDRESS_MAP_END +void funystrp_state::funystrp_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); /* ROM */ + map(0x100000, 0x1fffff).ram(); /* protection? RAM */ + map(0x800000, 0x83ffff).ram().share("pixelram"); /* Pixel Layer */ + map(0x840000, 0x840001).portr("DSW1"); + map(0x840002, 0x840003).portr("DSW2"); + map(0x840004, 0x840005).portr("P1"); + map(0x840006, 0x840007).portr("P2"); + map(0x840008, 0x840009).portr("SYSTEM"); + map(0x84000a, 0x84000b).nopr(); + map(0x84000a, 0x84000a).w(this, FUNC(funystrp_state::eeprom_w)); + map(0x84000e, 0x84000e).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x880000, 0x8817ff).ram().w(this, FUNC(funystrp_state::vram_w)).share("videoram"); /* Video RAM */ + map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */ + map(0x881804, 0x881fff).ram(); + map(0x8c0000, 0x8c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette is xRRRRxGGGGxBBBBx */ + map(0xd00000, 0xd01fff).rw(this, FUNC(funystrp_state::spr_read), FUNC(funystrp_state::spr_write)).share("spriteram"); /* Sprite RAM */ + map(0xfe0000, 0xfeffff).ram().mirror(0x10000); /* there's fe0000 <-> ff0000 compare */ /* Work RAM */ +} ADDRESS_MAP_START(splash_state::funystrp_sound_map) AM_RANGE(0x0000, 0x6fff) AM_ROM @@ -265,16 +278,17 @@ WRITE8_MEMBER(funystrp_state::msm2_data_w) m_msm_toggle2=0; } -ADDRESS_MAP_START(funystrp_state::funystrp_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(msm1_data_w) - AM_RANGE(0x01, 0x01) AM_WRITE(msm2_data_w) - AM_RANGE(0x02, 0x02) AM_WRITE(sound_bank_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x04, 0x04) AM_READ(int_source_r) - AM_RANGE(0x06, 0x06) AM_WRITE(msm1_interrupt_w) - AM_RANGE(0x07, 0x07) AM_WRITE(msm2_interrupt_w) -ADDRESS_MAP_END +void funystrp_state::funystrp_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(funystrp_state::msm1_data_w)); + map(0x01, 0x01).w(this, FUNC(funystrp_state::msm2_data_w)); + map(0x02, 0x02).w(this, FUNC(funystrp_state::sound_bank_w)); + map(0x03, 0x03).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x04, 0x04).r(this, FUNC(funystrp_state::int_source_r)); + map(0x06, 0x06).w(this, FUNC(funystrp_state::msm1_interrupt_w)); + map(0x07, 0x07).w(this, FUNC(funystrp_state::msm2_interrupt_w)); +} static INPUT_PORTS_START( splash ) diff --git a/src/mame/drivers/splus.cpp b/src/mame/drivers/splus.cpp index 18cbba91ea7..19fbeba80d8 100644 --- a/src/mame/drivers/splus.cpp +++ b/src/mame/drivers/splus.cpp @@ -589,39 +589,41 @@ DRIVER_INIT_MEMBER(splus_state,splus) * Memory map information * *************************/ -ADDRESS_MAP_START(splus_state::splus_map) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("prograram") -ADDRESS_MAP_END +void splus_state::splus_map(address_map &map) +{ + map(0x0000, 0xffff).rom().share("prograram"); +} -ADDRESS_MAP_START(splus_state::splus_iomap) +void splus_state::splus_iomap(address_map &map) +{ // Serial I/O - AM_RANGE(0x0000, 0x0000) AM_READ(splus_serial_r) AM_WRITE(splus_serial_w) + map(0x0000, 0x0000).r(this, FUNC(splus_state::splus_serial_r)).w(this, FUNC(splus_state::splus_serial_w)); // Battery-backed RAM (Lower 4K) 0x1500-0x16ff eeprom staging area - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("cmosl") + map(0x1000, 0x1fff).ram().share("cmosl"); // Watchdog, 7-segment Display - AM_RANGE(0x2000, 0x2000) AM_READWRITE(splus_watchdog_r, splus_7seg_w) + map(0x2000, 0x2000).rw(this, FUNC(splus_state::splus_watchdog_r), FUNC(splus_state::splus_7seg_w)); // DUART - AM_RANGE(0x3000, 0x300f) AM_READWRITE(splus_duart_r, splus_duart_w) + map(0x3000, 0x300f).rw(this, FUNC(splus_state::splus_duart_r), FUNC(splus_state::splus_duart_w)); // Dip Switches, Sound - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("SW1") AM_DEVWRITE("aysnd", ay8910_device, address_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("aysnd", ay8910_device, data_w) + map(0x4000, 0x4000).portr("SW1").w("aysnd", FUNC(ay8910_device::address_w)); + map(0x4001, 0x4001).w("aysnd", FUNC(ay8910_device::data_w)); // Reel Optics, EEPROM - AM_RANGE(0x5000, 0x5000) AM_READ(splus_reel_optics_r) AM_WRITE(i2c_nvram_w) + map(0x5000, 0x5000).r(this, FUNC(splus_state::splus_reel_optics_r)).w(this, FUNC(splus_state::i2c_nvram_w)); // Reset Registers in Realtime Clock, Serial I/O Load Pulse - AM_RANGE(0x6000, 0x6000) AM_READWRITE(splus_registers_r, splus_load_pulse_w) + map(0x6000, 0x6000).rw(this, FUNC(splus_state::splus_registers_r), FUNC(splus_state::splus_load_pulse_w)); // Battery-backed RAM (Upper 4K) - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("cmosh") + map(0x7000, 0x7fff).ram().share("cmosh"); // SSxxxx Reel Chip - AM_RANGE(0x8000, 0x9fff) AM_READ(splus_m_reel_ram_r) AM_SHARE("reel_ram") -ADDRESS_MAP_END + map(0x8000, 0x9fff).r(this, FUNC(splus_state::splus_m_reel_ram_r)).share("reel_ram"); +} /************************* * Input ports * diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp index 7e1ee0a91bc..359251a343a 100644 --- a/src/mame/drivers/spoker.cpp +++ b/src/mame/drivers/spoker.cpp @@ -263,52 +263,55 @@ READ8_MEMBER(spoker_state::magic_r) Memory Maps ***************************************************************************/ -ADDRESS_MAP_START(spoker_state::spoker_map) - AM_RANGE(0x00000, 0x0f3ff) AM_ROM - AM_RANGE(0x0f400, 0x0ffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(spoker_state::spoker_portmap) - AM_RANGE(0x0000, 0x003f) AM_RAM // Z180 internal regs - AM_RANGE(0x2000, 0x23ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2400, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram") - AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") - AM_RANGE(0x6480, 0x6483) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* NMI and coins (w), service (r), coins (r) */ - AM_RANGE(0x6490, 0x6493) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* buttons 1 (r), video and leds (w), leds (w) */ - AM_RANGE(0x64a0, 0x64a0) AM_READ_PORT( "BUTTONS2" ) - AM_RANGE(0x64b0, 0x64b1) AM_DEVWRITE("ymsnd", ym2413_device, write) - AM_RANGE(0x64c0, 0x64c0) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x64d0, 0x64d1) AM_READWRITE(magic_r, magic_w ) // DSW1-5 - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(spoker_state::_3super8_portmap) +void spoker_state::spoker_map(address_map &map) +{ + map(0x00000, 0x0f3ff).rom(); + map(0x0f400, 0x0ffff).ram().share("nvram"); +} + +void spoker_state::spoker_portmap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // Z180 internal regs + map(0x2000, 0x23ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2400, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x3000, 0x33ff).ram().w(this, FUNC(spoker_state::bg_tile_w)).share("bg_tile_ram"); + map(0x5000, 0x5fff).ram().w(this, FUNC(spoker_state::fg_tile_w)).share("fg_tile_ram"); + map(0x6480, 0x6483).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* NMI and coins (w), service (r), coins (r) */ + map(0x6490, 0x6493).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* buttons 1 (r), video and leds (w), leds (w) */ + map(0x64a0, 0x64a0).portr("BUTTONS2"); + map(0x64b0, 0x64b1).w("ymsnd", FUNC(ym2413_device::write)); + map(0x64c0, 0x64c0).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x64d0, 0x64d1).rw(this, FUNC(spoker_state::magic_r), FUNC(spoker_state::magic_w)); // DSW1-5 + map(0x7000, 0x7fff).ram().w(this, FUNC(spoker_state::fg_color_w)).share("fg_color_ram"); +} + +void spoker_state::_3super8_portmap(address_map &map) +{ // AM_RANGE(0x1000, 0x1fff) AM_WRITENOP - AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(bg_tile_w ) AM_SHARE("bg_tile_ram") - AM_RANGE(0x4000, 0x4000) AM_READ_PORT( "DSW1" ) - AM_RANGE(0x4001, 0x4001) AM_READ_PORT( "DSW2" ) - AM_RANGE(0x4002, 0x4002) AM_READ_PORT( "DSW3" ) - AM_RANGE(0x4003, 0x4003) AM_READ_PORT( "DSW4" ) - AM_RANGE(0x4004, 0x4004) AM_READ_PORT( "DSW5" ) + map(0x2000, 0x27ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x2800, 0x2fff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x3000, 0x33ff).ram().w(this, FUNC(spoker_state::bg_tile_w)).share("bg_tile_ram"); + map(0x4000, 0x4000).portr("DSW1"); + map(0x4001, 0x4001).portr("DSW2"); + map(0x4002, 0x4002).portr("DSW3"); + map(0x4003, 0x4003).portr("DSW4"); + map(0x4004, 0x4004).portr("DSW5"); // AM_RANGE(0x4000, 0x40ff) AM_WRITENOP - AM_RANGE(0x5000, 0x5fff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") + map(0x5000, 0x5fff).ram().w(this, FUNC(spoker_state::fg_tile_w)).share("fg_tile_ram"); // The following one (0x6480) should be output. At beginning of code, there is a PPI initialization // setting O-I-I for ports ABC. Except these routines are just a leftover from the original game, // and now the I/O is handled by a CPLD or FPGA (as seen in goldstar and gp98). - AM_RANGE(0x6480, 0x6480) AM_READ_PORT( "IN0" ) - AM_RANGE(0x6490, 0x6490) AM_READ_PORT( "IN1" ) - - AM_RANGE(0x6491, 0x6491) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x64a0, 0x64a0) AM_READ_PORT( "IN2" ) - AM_RANGE(0x64b0, 0x64b0) AM_WRITE(leds_w ) - AM_RANGE(0x64c0, 0x64c0) AM_READNOP //irq ack? - AM_RANGE(0x64f0, 0x64f0) AM_WRITE(nmi_and_coins_w ) - AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") -ADDRESS_MAP_END + map(0x6480, 0x6480).portr("IN0"); + map(0x6490, 0x6490).portr("IN1"); + + map(0x6491, 0x6491).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x64a0, 0x64a0).portr("IN2"); + map(0x64b0, 0x64b0).w(this, FUNC(spoker_state::leds_w)); + map(0x64c0, 0x64c0).nopr(); //irq ack? + map(0x64f0, 0x64f0).w(this, FUNC(spoker_state::nmi_and_coins_w)); + map(0x7000, 0x7fff).ram().w(this, FUNC(spoker_state::fg_color_w)).share("fg_color_ram"); +} /*************************************************************************** diff --git a/src/mame/drivers/spool99.cpp b/src/mame/drivers/spool99.cpp index 63b8161e697..27693209015 100644 --- a/src/mame/drivers/spool99.cpp +++ b/src/mame/drivers/spool99.cpp @@ -229,21 +229,22 @@ WRITE8_MEMBER(spool99_state::eeprom_dataline_w) m_eeprom->di_write(data & 0x01); } -ADDRESS_MAP_START(spool99_state::spool99_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0100, 0xaeff) AM_ROM AM_REGION("maincpu", 0x100) AM_WRITENOP - AM_RANGE(0xaf00, 0xafff) AM_READ(spool99_io_r) - AM_RANGE(0xafed, 0xafed) AM_WRITE(eeprom_resetline_w ) - AM_RANGE(0xafee, 0xafee) AM_WRITE(eeprom_clockline_w ) - AM_RANGE(0xafef, 0xafef) AM_WRITE(eeprom_dataline_w ) - AM_RANGE(0xaff8, 0xaff8) AM_DEVWRITE("oki", okim6295_device, write) - - AM_RANGE(0xb000, 0xb3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - - AM_RANGE(0xb800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(vram_w) AM_SHARE("vram") - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(cram_w) AM_SHARE("cram") -ADDRESS_MAP_END +void spool99_state::spool99_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().share("mainram"); + map(0x0100, 0xaeff).rom().region("maincpu", 0x100).nopw(); + map(0xaf00, 0xafff).r(this, FUNC(spool99_state::spool99_io_r)); + map(0xafed, 0xafed).w(this, FUNC(spool99_state::eeprom_resetline_w)); + map(0xafee, 0xafee).w(this, FUNC(spool99_state::eeprom_clockline_w)); + map(0xafef, 0xafef).w(this, FUNC(spool99_state::eeprom_dataline_w)); + map(0xaff8, 0xaff8).w(m_oki, FUNC(okim6295_device::write)); + + map(0xb000, 0xb3ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + + map(0xb800, 0xdfff).ram(); + map(0xe000, 0xefff).ram().w(this, FUNC(spool99_state::vram_w)).share("vram"); + map(0xf000, 0xffff).ram().w(this, FUNC(spool99_state::cram_w)).share("cram"); +} READ8_MEMBER(spool99_state::vcarn_io_r) { @@ -275,22 +276,23 @@ READ8_MEMBER(spool99_state::vcarn_io_r) return ROM[0xa700+offset]; } -ADDRESS_MAP_START(spool99_state::vcarn_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x0100, 0xa6ff) AM_ROM AM_REGION("maincpu", 0x100) AM_WRITENOP - AM_RANGE(0xa700, 0xa7ff) AM_READ(vcarn_io_r) - AM_RANGE(0xa745, 0xa745) AM_WRITE(eeprom_resetline_w ) - AM_RANGE(0xa746, 0xa746) AM_WRITE(eeprom_clockline_w ) - AM_RANGE(0xa747, 0xa747) AM_WRITE(eeprom_dataline_w ) - AM_RANGE(0xa780, 0xa780) AM_DEVWRITE("oki", okim6295_device, write) +void spool99_state::vcarn_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().share("mainram"); + map(0x0100, 0xa6ff).rom().region("maincpu", 0x100).nopw(); + map(0xa700, 0xa7ff).r(this, FUNC(spool99_state::vcarn_io_r)); + map(0xa745, 0xa745).w(this, FUNC(spool99_state::eeprom_resetline_w)); + map(0xa746, 0xa746).w(this, FUNC(spool99_state::eeprom_clockline_w)); + map(0xa747, 0xa747).w(this, FUNC(spool99_state::eeprom_dataline_w)); + map(0xa780, 0xa780).w(m_oki, FUNC(okim6295_device::write)); - AM_RANGE(0xa800, 0xabff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0xa800, 0xabff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); - AM_RANGE(0xb000, 0xdfff) AM_RAM + map(0xb000, 0xdfff).ram(); // AM_RANGE(0xdf00, 0xdfff) AM_READWRITE(vcarn_io_r,vcarn_io_w) AM_SHARE("vcarn_io") - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(vram_w) AM_SHARE("vram") - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(cram_w) AM_SHARE("cram") -ADDRESS_MAP_END + map(0xe000, 0xefff).ram().w(this, FUNC(spool99_state::vram_w)).share("vram"); + map(0xf000, 0xffff).ram().w(this, FUNC(spool99_state::cram_w)).share("cram"); +} diff --git a/src/mame/drivers/sprcros2.cpp b/src/mame/drivers/sprcros2.cpp index fb27551ef6d..d0c969e53df 100644 --- a/src/mame/drivers/sprcros2.cpp +++ b/src/mame/drivers/sprcros2.cpp @@ -243,41 +243,45 @@ WRITE8_MEMBER(sprcros2_state::bg_scrolly_w) m_bg_scrolly = data; } -ADDRESS_MAP_START(sprcros2_state::master_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("master", 0) - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("master_rombank") - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("fgvram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("fgattr") - AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("sprram") - AM_RANGE(0xe840, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sprcros2_state::master_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x02, 0x02) AM_READ_PORT("EXTRA") AM_DEVWRITE("sn3", sn76489_device, write) - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") - AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW2") - AM_RANGE(0x07, 0x07) AM_WRITE(master_output_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sprcros2_state::slave_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM AM_REGION("slave", 0) - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("slave_rombank") - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("bgvram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("bgattr") - AM_RANGE(0xe800, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sprcros2_state::slave_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(bg_scrollx_w) - AM_RANGE(0x01, 0x01) AM_WRITE(bg_scrolly_w) - AM_RANGE(0x03, 0x03) AM_WRITE(slave_output_w) -ADDRESS_MAP_END +void sprcros2_state::master_map(address_map &map) +{ + map(0x0000, 0xbfff).rom().region("master", 0); + map(0xc000, 0xdfff).bankr("master_rombank"); + map(0xe000, 0xe3ff).ram().share("fgvram"); + map(0xe400, 0xe7ff).ram().share("fgattr"); + map(0xe800, 0xe83f).ram().share("sprram"); + map(0xe840, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("shared_ram"); +} + +void sprcros2_state::master_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1").w("sn1", FUNC(sn76489_device::write)); + map(0x01, 0x01).portr("P2").w("sn2", FUNC(sn76489_device::write)); + map(0x02, 0x02).portr("EXTRA").w("sn3", FUNC(sn76489_device::write)); + map(0x04, 0x04).portr("DSW1"); + map(0x05, 0x05).portr("DSW2"); + map(0x07, 0x07).w(this, FUNC(sprcros2_state::master_output_w)); +} + +void sprcros2_state::slave_map(address_map &map) +{ + map(0x0000, 0xbfff).rom().region("slave", 0); + map(0xc000, 0xdfff).bankr("slave_rombank"); + map(0xe000, 0xe3ff).ram().share("bgvram"); + map(0xe400, 0xe7ff).ram().share("bgattr"); + map(0xe800, 0xf7ff).ram(); + map(0xf800, 0xffff).ram().share("shared_ram"); +} + +void sprcros2_state::slave_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(sprcros2_state::bg_scrollx_w)); + map(0x01, 0x01).w(this, FUNC(sprcros2_state::bg_scrolly_w)); + map(0x03, 0x03).w(this, FUNC(sprcros2_state::slave_output_w)); +} static INPUT_PORTS_START( sprcros2 ) PORT_START("P1") diff --git a/src/mame/drivers/sprint2.cpp b/src/mame/drivers/sprint2.cpp index 8975ab3704e..ff365b8639c 100644 --- a/src/mame/drivers/sprint2.cpp +++ b/src/mame/drivers/sprint2.cpp @@ -242,29 +242,30 @@ WRITE_LINE_MEMBER(sprint2_state::lamp4_w) output().set_led_value(3, state); } -ADDRESS_MAP_START(sprint2_state::sprint2_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x03ff) AM_READWRITE(sprint2_wram_r,sprint2_wram_w) - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sprint2_video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x0818, 0x081f) AM_READ(sprint2_input_A_r) - AM_RANGE(0x0828, 0x082f) AM_READ(sprint2_input_B_r) - AM_RANGE(0x0830, 0x0837) AM_READ(sprint2_dip_r) - AM_RANGE(0x0840, 0x087f) AM_READ_PORT("COIN") - AM_RANGE(0x0880, 0x08bf) AM_READ(sprint2_steering1_r) - AM_RANGE(0x08c0, 0x08ff) AM_READ(sprint2_steering2_r) - AM_RANGE(0x0c00, 0x0fff) AM_READ(sprint2_sync_r) - AM_RANGE(0x0c00, 0x0c7f) AM_WRITE(output_latch_w) - AM_RANGE(0x0c80, 0x0cff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0d00, 0x0d7f) AM_WRITE(sprint2_collision_reset1_w) - AM_RANGE(0x0d80, 0x0dff) AM_WRITE(sprint2_collision_reset2_w) - AM_RANGE(0x0e00, 0x0e7f) AM_WRITE(sprint2_steering_reset1_w) - AM_RANGE(0x0e80, 0x0eff) AM_WRITE(sprint2_steering_reset2_w) - AM_RANGE(0x0f00, 0x0f7f) AM_WRITE(sprint2_noise_reset_w) - AM_RANGE(0x1000, 0x13ff) AM_READ(sprint2_collision1_r) - AM_RANGE(0x1400, 0x17ff) AM_READ(sprint2_collision2_r) - AM_RANGE(0x1800, 0x1800) AM_READNOP /* debugger ROM location? */ - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void sprint2_state::sprint2_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x03ff).rw(this, FUNC(sprint2_state::sprint2_wram_r), FUNC(sprint2_state::sprint2_wram_w)); + map(0x0400, 0x07ff).ram().w(this, FUNC(sprint2_state::sprint2_video_ram_w)).share("video_ram"); + map(0x0818, 0x081f).r(this, FUNC(sprint2_state::sprint2_input_A_r)); + map(0x0828, 0x082f).r(this, FUNC(sprint2_state::sprint2_input_B_r)); + map(0x0830, 0x0837).r(this, FUNC(sprint2_state::sprint2_dip_r)); + map(0x0840, 0x087f).portr("COIN"); + map(0x0880, 0x08bf).r(this, FUNC(sprint2_state::sprint2_steering1_r)); + map(0x08c0, 0x08ff).r(this, FUNC(sprint2_state::sprint2_steering2_r)); + map(0x0c00, 0x0fff).r(this, FUNC(sprint2_state::sprint2_sync_r)); + map(0x0c00, 0x0c7f).w(this, FUNC(sprint2_state::output_latch_w)); + map(0x0c80, 0x0cff).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x0d00, 0x0d7f).w(this, FUNC(sprint2_state::sprint2_collision_reset1_w)); + map(0x0d80, 0x0dff).w(this, FUNC(sprint2_state::sprint2_collision_reset2_w)); + map(0x0e00, 0x0e7f).w(this, FUNC(sprint2_state::sprint2_steering_reset1_w)); + map(0x0e80, 0x0eff).w(this, FUNC(sprint2_state::sprint2_steering_reset2_w)); + map(0x0f00, 0x0f7f).w(this, FUNC(sprint2_state::sprint2_noise_reset_w)); + map(0x1000, 0x13ff).r(this, FUNC(sprint2_state::sprint2_collision1_r)); + map(0x1400, 0x17ff).r(this, FUNC(sprint2_state::sprint2_collision2_r)); + map(0x1800, 0x1800).nopr(); /* debugger ROM location? */ + map(0x2000, 0x3fff).rom(); +} static INPUT_PORTS_START( sprint2 ) diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp index 72dda617441..df5f5a3da90 100644 --- a/src/mame/drivers/sprint4.cpp +++ b/src/mame/drivers/sprint4.cpp @@ -237,32 +237,33 @@ WRITE8_MEMBER(sprint4_state::attract_w) } -ADDRESS_MAP_START(sprint4_state::sprint4_cpu_map) +void sprint4_state::sprint4_cpu_map(address_map &map) +{ - ADDRESS_MAP_GLOBAL_MASK(0x3fff) + map.global_mask(0x3fff); - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w) - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram") + map(0x0080, 0x00ff).mirror(0x700).rw(this, FUNC(sprint4_state::wram_r), FUNC(sprint4_state::wram_w)); + map(0x0800, 0x0bff).mirror(0x400).ram().w(this, FUNC(sprint4_state::video_ram_w)).share("videoram"); - AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(analog_r) - AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(coin_r) - AM_RANGE(0x0040, 0x0047) AM_MIRROR(0x718) AM_READ(collision_r) - AM_RANGE(0x0060, 0x0063) AM_MIRROR(0x71c) AM_READ(options_r) + map(0x0000, 0x0007).mirror(0x718).r(this, FUNC(sprint4_state::analog_r)); + map(0x0020, 0x0027).mirror(0x718).r(this, FUNC(sprint4_state::coin_r)); + map(0x0040, 0x0047).mirror(0x718).r(this, FUNC(sprint4_state::collision_r)); + map(0x0060, 0x0063).mirror(0x71c).r(this, FUNC(sprint4_state::options_r)); - AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0") - AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1") + map(0x1000, 0x17ff).portr("IN0"); + map(0x1800, 0x1fff).portr("IN1"); - AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x71f) AM_WRITE(attract_w) - AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w) - AM_RANGE(0x0040, 0x0041) AM_MIRROR(0x718) AM_WRITE(da_latch_w) - AM_RANGE(0x0042, 0x0043) AM_MIRROR(0x718) AM_WRITE(bang_w) - AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0060, 0x006f) AM_MIRROR(0x710) AM_DEVWRITE("latch", f9334_device, write_a0) + map(0x0000, 0x0000).mirror(0x71f).w(this, FUNC(sprint4_state::attract_w)); + map(0x0020, 0x0027).mirror(0x718).w(this, FUNC(sprint4_state::collision_reset_w)); + map(0x0040, 0x0041).mirror(0x718).w(this, FUNC(sprint4_state::da_latch_w)); + map(0x0042, 0x0043).mirror(0x718).w(this, FUNC(sprint4_state::bang_w)); + map(0x0044, 0x0045).mirror(0x718).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x0060, 0x006f).mirror(0x710).w("latch", FUNC(f9334_device::write_a0)); - AM_RANGE(0x2000, 0x27ff) AM_NOP /* diagnostic ROM */ - AM_RANGE(0x2800, 0x3fff) AM_ROM + map(0x2000, 0x27ff).noprw(); /* diagnostic ROM */ + map(0x2800, 0x3fff).rom(); -ADDRESS_MAP_END +} static INPUT_PORTS_START( sprint4 ) diff --git a/src/mame/drivers/sprint8.cpp b/src/mame/drivers/sprint8.cpp index e7f4b07ff9a..06dfb123d5c 100644 --- a/src/mame/drivers/sprint8.cpp +++ b/src/mame/drivers/sprint8.cpp @@ -109,24 +109,25 @@ WRITE_LINE_MEMBER(sprint8_state::team_w) } -ADDRESS_MAP_START(sprint8_state::sprint8_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1c00) AM_READ(collision_r) - AM_RANGE(0x1c01, 0x1c08) AM_READ(input_r) - AM_RANGE(0x1c09, 0x1c09) AM_READ_PORT("IN0") - AM_RANGE(0x1c0a, 0x1c0a) AM_READ_PORT("IN1") - AM_RANGE(0x1c0f, 0x1c0f) AM_READ_PORT("VBLANK") - AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("pos_h_ram") - AM_RANGE(0x1c10, 0x1c1f) AM_WRITEONLY AM_SHARE("pos_v_ram") - AM_RANGE(0x1c20, 0x1c2f) AM_WRITEONLY AM_SHARE("pos_d_ram") - AM_RANGE(0x1c30, 0x1c37) AM_WRITE(lockout_w) - AM_RANGE(0x1d00, 0x1d07) AM_DEVWRITE("latch", f9334_device, write_d0) - AM_RANGE(0x1e00, 0x1e07) AM_DEVWRITE("motor", f9334_device, write_d0) - AM_RANGE(0x1f00, 0x1f00) AM_WRITENOP /* probably a watchdog, disabled in service mode */ - AM_RANGE(0x2000, 0x3fff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void sprint8_state::sprint8_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x1800, 0x1bff).ram().w(this, FUNC(sprint8_state::video_ram_w)).share("video_ram"); + map(0x1c00, 0x1c00).r(this, FUNC(sprint8_state::collision_r)); + map(0x1c01, 0x1c08).r(this, FUNC(sprint8_state::input_r)); + map(0x1c09, 0x1c09).portr("IN0"); + map(0x1c0a, 0x1c0a).portr("IN1"); + map(0x1c0f, 0x1c0f).portr("VBLANK"); + map(0x1c00, 0x1c0f).writeonly().share("pos_h_ram"); + map(0x1c10, 0x1c1f).writeonly().share("pos_v_ram"); + map(0x1c20, 0x1c2f).writeonly().share("pos_d_ram"); + map(0x1c30, 0x1c37).w(this, FUNC(sprint8_state::lockout_w)); + map(0x1d00, 0x1d07).w("latch", FUNC(f9334_device::write_d0)); + map(0x1e00, 0x1e07).w("motor", FUNC(f9334_device::write_d0)); + map(0x1f00, 0x1f00).nopw(); /* probably a watchdog, disabled in service mode */ + map(0x2000, 0x3fff).rom(); + map(0xf800, 0xffff).rom(); +} static INPUT_PORTS_START( sprint8 ) diff --git a/src/mame/drivers/spy.cpp b/src/mame/drivers/spy.cpp index 0c074740bcf..496bb3af325 100644 --- a/src/mame/drivers/spy.cpp +++ b/src/mame/drivers/spy.cpp @@ -374,33 +374,35 @@ WRITE8_MEMBER(spy_state::k052109_051960_w) m_k051960->k051960_w(space, offset - 0x3c00, data); } -ADDRESS_MAP_START(spy_state::spy_map) - AM_RANGE(0x0000, 0x07ff) AM_READWRITE(spy_bankedram1_r, spy_bankedram1_w) AM_SHARE("ram") - AM_RANGE(0x0800, 0x1aff) AM_RAM - AM_RANGE(0x2000, 0x5fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) - AM_RANGE(0x3f80, 0x3f80) AM_WRITE(bankswitch_w) - AM_RANGE(0x3f90, 0x3f90) AM_WRITE(spy_3f90_w) - AM_RANGE(0x3fa0, 0x3fa0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3fb0, 0x3fb0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3fc0, 0x3fc0) AM_WRITE(spy_sh_irqtrigger_w) - AM_RANGE(0x3fd0, 0x3fd0) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3fd1, 0x3fd1) AM_READ_PORT("P1") - AM_RANGE(0x3fd2, 0x3fd2) AM_READ_PORT("P2") - AM_RANGE(0x3fd3, 0x3fd3) AM_READ_PORT("DSW1") - AM_RANGE(0x3fe0, 0x3fe0) AM_READ_PORT("DSW2") - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(spy_state::spy_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) - AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void spy_state::spy_map(address_map &map) +{ + map(0x0000, 0x07ff).rw(this, FUNC(spy_state::spy_bankedram1_r), FUNC(spy_state::spy_bankedram1_w)).share("ram"); + map(0x0800, 0x1aff).ram(); + map(0x2000, 0x5fff).rw(this, FUNC(spy_state::k052109_051960_r), FUNC(spy_state::k052109_051960_w)); + map(0x3f80, 0x3f80).w(this, FUNC(spy_state::bankswitch_w)); + map(0x3f90, 0x3f90).w(this, FUNC(spy_state::spy_3f90_w)); + map(0x3fa0, 0x3fa0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3fb0, 0x3fb0).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3fc0, 0x3fc0).w(this, FUNC(spy_state::spy_sh_irqtrigger_w)); + map(0x3fd0, 0x3fd0).portr("SYSTEM"); + map(0x3fd1, 0x3fd1).portr("P1"); + map(0x3fd2, 0x3fd2).portr("P2"); + map(0x3fd3, 0x3fd3).portr("DSW1"); + map(0x3fe0, 0x3fe0).portr("DSW2"); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + +void spy_state::spy_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(spy_state::sound_bank_w)); + map(0xa000, 0xa00d).rw(m_k007232_1, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xb000, 0xb00d).rw(m_k007232_2, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( spy ) diff --git a/src/mame/drivers/spyhuntertec.cpp b/src/mame/drivers/spyhuntertec.cpp index 3b1f0753645..0c8a2c42266 100644 --- a/src/mame/drivers/spyhuntertec.cpp +++ b/src/mame/drivers/spyhuntertec.cpp @@ -424,28 +424,29 @@ READ8_MEMBER(spyhuntertec_state::spyhuntertec_in3_r) return ret; } -ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_ROM +void spyhuntertec_state::spyhuntertec_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).rom(); - AM_RANGE(0xa800, 0xa8ff) AM_RAM // the ROM is a solid fill in these areas, and they get tested as RAM, I think they moved the 'real' scroll regs here - AM_RANGE(0xa900, 0xa9ff) AM_RAM + map(0xa800, 0xa8ff).ram(); // the ROM is a solid fill in these areas, and they get tested as RAM, I think they moved the 'real' scroll regs here + map(0xa900, 0xa9ff).ram(); - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(spyhunt_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xebff) AM_MIRROR(0x0400) AM_RAM_WRITE(spyhunt_alpharam_w) AM_SHARE("spyhunt_alpha") - AM_RANGE(0xf000, 0xf7ff) AM_RAM //AM_SHARE("nvram") - AM_RANGE(0xf800, 0xf9ff) AM_RAM AM_SHARE("spriteram") // origional spriteram - AM_RANGE(0xfa00, 0xfa7f) AM_MIRROR(0x0180) AM_RAM_WRITE(spyhuntertec_paletteram_w) AM_SHARE("paletteram") + map(0xe000, 0xe7ff).ram().w(this, FUNC(spyhuntertec_state::spyhunt_videoram_w)).share("videoram"); + map(0xe800, 0xebff).mirror(0x0400).ram().w(this, FUNC(spyhuntertec_state::spyhunt_alpharam_w)).share("spyhunt_alpha"); + map(0xf000, 0xf7ff).ram(); //AM_SHARE("nvram") + map(0xf800, 0xf9ff).ram().share("spriteram"); // origional spriteram + map(0xfa00, 0xfa7f).mirror(0x0180).ram().w(this, FUNC(spyhuntertec_state::spyhuntertec_paletteram_w)).share("paletteram"); - AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("DSW0") - AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("DSW1") - AM_RANGE(0xfc02, 0xfc02) AM_READ(spyhuntertec_in2_r) - AM_RANGE(0xfc03, 0xfc03) AM_READ(spyhuntertec_in3_r) + map(0xfc00, 0xfc00).portr("DSW0"); + map(0xfc01, 0xfc01).portr("DSW1"); + map(0xfc02, 0xfc02).r(this, FUNC(spyhuntertec_state::spyhuntertec_in2_r)); + map(0xfc03, 0xfc03).r(this, FUNC(spyhuntertec_state::spyhuntertec_in3_r)); - AM_RANGE(0xfd00, 0xfd00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + map(0xfd00, 0xfd00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram2") // actual spriteram for this hw?? -ADDRESS_MAP_END + map(0xfe00, 0xffff).ram().share("spriteram2"); // actual spriteram for this hw?? +} WRITE8_MEMBER(spyhuntertec_state::spyhuntertec_port04_w) { @@ -457,23 +458,25 @@ WRITE8_MEMBER(spyhuntertec_state::spyhuntertec_portf0_w) if ((data != 0x03) && (data != 0x08)) printf("spyhuntertec_portf0_w %02x\n", data); } -ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x04, 0x04) AM_WRITE(spyhuntertec_port04_w) - AM_RANGE(0x84, 0x86) AM_WRITE(spyhunt_scroll_value_w) - AM_RANGE(0xe0, 0xe0) AM_WRITENOP // was watchdog +void spyhuntertec_state::spyhuntertec_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x04, 0x04).w(this, FUNC(spyhuntertec_state::spyhuntertec_port04_w)); + map(0x84, 0x86).w(this, FUNC(spyhuntertec_state::spyhunt_scroll_value_w)); + map(0xe0, 0xe0).nopw(); // was watchdog // AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf0) AM_WRITE( spyhuntertec_portf0_w ) -ADDRESS_MAP_END + map(0xf0, 0xf0).w(this, FUNC(spyhuntertec_state::spyhuntertec_portf0_w)); +} -ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM +void spyhuntertec_state::spyhuntertec_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x83ff).ram(); - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} WRITE8_MEMBER(spyhuntertec_state::sound_irq_ack) @@ -481,22 +484,23 @@ WRITE8_MEMBER(spyhuntertec_state::sound_irq_ack) m_audiocpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); } -ADDRESS_MAP_START(spyhuntertec_state::spyhuntertec_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void spyhuntertec_state::spyhuntertec_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); - AM_RANGE(0x00, 0x00) AM_WRITE(sound_irq_ack) + map(0x00, 0x00).w(this, FUNC(spyhuntertec_state::sound_irq_ack)); - AM_RANGE(0x0012, 0x0013) AM_DEVWRITE("ay3", ay8912_device, address_data_w) - AM_RANGE(0x0012, 0x0012) AM_DEVREAD("ay3", ay8912_device, data_r) + map(0x0012, 0x0013).w("ay3", FUNC(ay8912_device::address_data_w)); + map(0x0012, 0x0012).r("ay3", FUNC(ay8912_device::data_r)); - AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8912_device, address_data_w) - AM_RANGE(0x0014, 0x0014) AM_DEVREAD("ay1", ay8912_device, data_r) + map(0x0014, 0x0015).w("ay1", FUNC(ay8912_device::address_data_w)); + map(0x0014, 0x0014).r("ay1", FUNC(ay8912_device::data_r)); - AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8912_device, address_data_w) // data written to port a - AM_RANGE(0x0018, 0x0018) AM_DEVREAD("ay2", ay8912_device, data_r) // actually read + map(0x0018, 0x0019).w("ay2", FUNC(ay8912_device::address_data_w)); // data written to port a + map(0x0018, 0x0018).r("ay2", FUNC(ay8912_device::data_r)); // actually read -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp index 380cad09962..8b84f145420 100644 --- a/src/mame/drivers/squale.cpp +++ b/src/mame/drivers/squale.cpp @@ -617,23 +617,24 @@ TIMER_DEVICE_CALLBACK_MEMBER( squale_state::squale_scanline ) m_ef9365->update_scanline((uint16_t)param); } -ADDRESS_MAP_START(squale_state::squale_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000,0xefff) AM_RAM - AM_RANGE(0xf000,0xf00f) AM_DEVREADWRITE("ef9365", ef9365_device, data_r, data_w) - AM_RANGE(0xf010,0xf01f) AM_WRITE( ctrl_w ) - AM_RANGE(0xf020,0xf02f) AM_READ( video_ram_read_reg1 ) - AM_RANGE(0xf030,0xf03f) AM_READ( video_ram_read_reg2 ) - AM_RANGE(0xf044,0xf047) AM_DEVREADWRITE("pia_u75", pia6821_device, read, write) - AM_RANGE(0xf048,0xf04b) AM_DEVREADWRITE("pia_u72", pia6821_device, read, write) - AM_RANGE(0xf050,0xf05f) AM_DEVREADWRITE("ef6850", acia6850_device, data_r, data_w) - AM_RANGE(0xf060,0xf06f) AM_DEVREADWRITE("ay8910", ay8910_device, data_r, address_data_w) - AM_RANGE(0xf080,0xf083) AM_DEVREADWRITE("wd1770", wd1770_device, read, write) - AM_RANGE(0xf08a,0xf08a) AM_READWRITE( fdc_sel0_r, fdc_sel0_w ) - AM_RANGE(0xf08b,0xf08b) AM_READWRITE( fdc_sel1_r, fdc_sel1_w ) - AM_RANGE(0xf100,0xffff) AM_ROMBANK("rom_bank"); - -ADDRESS_MAP_END +void squale_state::squale_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).ram(); + map(0xf000, 0xf00f).rw(m_ef9365, FUNC(ef9365_device::data_r), FUNC(ef9365_device::data_w)); + map(0xf010, 0xf01f).w(this, FUNC(squale_state::ctrl_w)); + map(0xf020, 0xf02f).r(this, FUNC(squale_state::video_ram_read_reg1)); + map(0xf030, 0xf03f).r(this, FUNC(squale_state::video_ram_read_reg2)); + map(0xf044, 0xf047).rw(m_pia_u75, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf048, 0xf04b).rw(m_pia_u72, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf050, 0xf05f).rw(m_acia, FUNC(acia6850_device::data_r), FUNC(acia6850_device::data_w)); + map(0xf060, 0xf06f).rw(m_ay8910, FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0xf080, 0xf083).rw(m_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); + map(0xf08a, 0xf08a).rw(this, FUNC(squale_state::fdc_sel0_r), FUNC(squale_state::fdc_sel0_w)); + map(0xf08b, 0xf08b).rw(this, FUNC(squale_state::fdc_sel1_r), FUNC(squale_state::fdc_sel1_w)); + map(0xf100, 0xffff).bankr("rom_bank"); + +} /* Input ports */ static INPUT_PORTS_START( squale ) diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp index 6018b9538c2..d6a2d8bcdde 100644 --- a/src/mame/drivers/srmp2.cpp +++ b/src/mame/drivers/srmp2.cpp @@ -392,26 +392,27 @@ WRITE8_MEMBER(srmp2_state::srmp2_irq4_ack_w) } -ADDRESS_MAP_START(srmp2_state::srmp2_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) /* Sprites Code + X + Attr */ - AM_RANGE(0x180000, 0x1805ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) /* Sprites Y */ - AM_RANGE(0x180600, 0x180607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP /* ??? */ - AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w) /* ADPCM bank, Color bank, etc. */ - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM") /* Coinage */ - AM_RANGE(0x900000, 0x900001) AM_WRITENOP /* ??? */ - AM_RANGE(0xa00000, 0xa00001) AM_READWRITE8(iox_mux_r, iox_command_w,0x00ff) /* key matrix | I/O */ - AM_RANGE(0xa00002, 0xa00003) AM_READWRITE8(iox_status_r,iox_data_w,0x00ff) - AM_RANGE(0xb00000, 0xb00001) AM_WRITE8(adpcm_code_w,0x00ff) /* ADPCM number */ - AM_RANGE(0xb00002, 0xb00003) AM_READ8(vox_status_r,0x00ff) /* ADPCM voice status */ - AM_RANGE(0xc00000, 0xc00001) AM_WRITE8(srmp2_irq2_ack_w,0x00ff) /* irq ack lv 2 */ - AM_RANGE(0xd00000, 0xd00001) AM_WRITE8(srmp2_irq4_ack_w,0x00ff) /* irq ack lv 4 */ - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP /* watchdog */ - AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) -ADDRESS_MAP_END +void srmp2_state::srmp2_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x0c0000, 0x0c3fff).ram().share("nvram"); + map(0x140000, 0x143fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); /* Sprites Code + X + Attr */ + map(0x180000, 0x1805ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); /* Sprites Y */ + map(0x180600, 0x180607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x1c0000, 0x1c0001).nopw(); /* ??? */ + map(0x800000, 0x800001).w(this, FUNC(srmp2_state::srmp2_flags_w)); /* ADPCM bank, Color bank, etc. */ + map(0x900000, 0x900001).portr("SYSTEM"); /* Coinage */ + map(0x900000, 0x900001).nopw(); /* ??? */ + map(0xa00001, 0xa00001).rw(this, FUNC(srmp2_state::iox_mux_r), FUNC(srmp2_state::iox_command_w)); /* key matrix | I/O */ + map(0xa00003, 0xa00003).rw(this, FUNC(srmp2_state::iox_status_r), FUNC(srmp2_state::iox_data_w)); + map(0xb00001, 0xb00001).w(this, FUNC(srmp2_state::adpcm_code_w)); /* ADPCM number */ + map(0xb00003, 0xb00003).r(this, FUNC(srmp2_state::vox_status_r)); /* ADPCM voice status */ + map(0xc00001, 0xc00001).w(this, FUNC(srmp2_state::srmp2_irq2_ack_w)); /* irq ack lv 2 */ + map(0xd00001, 0xd00001).w(this, FUNC(srmp2_state::srmp2_irq4_ack_w)); /* irq ack lv 4 */ + map(0xe00000, 0xe00001).nopw(); /* watchdog */ + map(0xf00001, 0xf00001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xf00000, 0xf00003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); +} READ8_MEMBER(srmp2_state::mjyuugi_irq2_ack_r) { @@ -425,32 +426,33 @@ READ8_MEMBER(srmp2_state::mjyuugi_irq4_ack_r) return 0xff; // value returned doesn't matter } -ADDRESS_MAP_START(srmp2_state::mjyuugi_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM") /* Coinage */ - AM_RANGE(0x100000, 0x100001) AM_WRITE(mjyuugi_flags_w) /* Coin Counter */ - AM_RANGE(0x100010, 0x100011) AM_READNOP /* ??? */ - AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w) /* ADPCM bank, GFX bank */ - AM_RANGE(0x200000, 0x200001) AM_READ8(mjyuugi_irq2_ack_r,0x00ff) /* irq ack lv 2? */ - AM_RANGE(0x300000, 0x300001) AM_READ8(mjyuugi_irq4_ack_r,0x00ff) /* irq ack lv 4? */ - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1") /* DSW 3-1 */ - AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2") /* DSW 3-2 */ - AM_RANGE(0x700000, 0x7003ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x800001) AM_READNOP /* ??? */ - AM_RANGE(0x900000, 0x900001) AM_READWRITE8(iox_mux_r, iox_command_w,0x00ff) /* key matrix | I/O */ - AM_RANGE(0x900002, 0x900003) AM_READWRITE8(iox_status_r,iox_data_w,0x00ff) - AM_RANGE(0xa00000, 0xa00001) AM_WRITE8(adpcm_code_w,0x00ff) /* ADPCM number */ - AM_RANGE(0xb00002, 0xb00003) AM_READ8(vox_status_r,0x00ff) /* ADPCM voice status */ - AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* ??? */ - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) /* Sprites Y */ - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0xd02000, 0xd023ff) AM_RAM /* ??? only writes $00fa */ - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) /* Sprites Code + X + Attr */ - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END +void srmp2_state::mjyuugi_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).portr("SYSTEM"); /* Coinage */ + map(0x100000, 0x100001).w(this, FUNC(srmp2_state::mjyuugi_flags_w)); /* Coin Counter */ + map(0x100010, 0x100011).nopr(); /* ??? */ + map(0x100010, 0x100011).w(this, FUNC(srmp2_state::mjyuugi_adpcm_bank_w)); /* ADPCM bank, GFX bank */ + map(0x200001, 0x200001).r(this, FUNC(srmp2_state::mjyuugi_irq2_ack_r)); /* irq ack lv 2? */ + map(0x300001, 0x300001).r(this, FUNC(srmp2_state::mjyuugi_irq4_ack_r)); /* irq ack lv 4? */ + map(0x500000, 0x500001).portr("DSW3-1"); /* DSW 3-1 */ + map(0x500010, 0x500011).portr("DSW3-2"); /* DSW 3-2 */ + map(0x700000, 0x7003ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x800001).nopr(); /* ??? */ + map(0x900001, 0x900001).rw(this, FUNC(srmp2_state::iox_mux_r), FUNC(srmp2_state::iox_command_w)); /* key matrix | I/O */ + map(0x900003, 0x900003).rw(this, FUNC(srmp2_state::iox_status_r), FUNC(srmp2_state::iox_data_w)); + map(0xa00001, 0xa00001).w(this, FUNC(srmp2_state::adpcm_code_w)); /* ADPCM number */ + map(0xb00003, 0xb00003).r(this, FUNC(srmp2_state::vox_status_r)); /* ADPCM voice status */ + map(0xb00001, 0xb00001).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xb00000, 0xb00003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0xc00000, 0xc00001).nopw(); /* ??? */ + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); /* Sprites Y */ + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0xd02000, 0xd023ff).ram(); /* ??? only writes $00fa */ + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); /* Sprites Code + X + Attr */ + map(0xffc000, 0xffffff).ram().share("nvram"); +} WRITE8_MEMBER(srmp2_state::srmp3_flags_w) { @@ -471,41 +473,44 @@ WRITE8_MEMBER(srmp2_state::srmp3_irq_ack_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(srmp2_state::srmp3_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* rom bank */ - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram") /* work ram */ - AM_RANGE(0xa800, 0xa800) AM_WRITENOP /* flag ? */ - AM_RANGE(0xb000, 0xb2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xb300, 0xb303) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r8, spritectrl_w8) - AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */ - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) /* Sprites Code + X + Attr */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(srmp2_state::srmp3_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x20) AM_WRITE(srmp3_irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM") AM_WRITE(srmp3_flags_w) /* coin, service | GFX bank, counter, lockout */ - AM_RANGE(0x60, 0x60) AM_WRITE(srmp3_rombank_w) /* ROM bank select */ - AM_RANGE(0xa0, 0xa0) AM_WRITE(adpcm_code_w) /* ADPCM number */ - AM_RANGE(0xa1, 0xa1) AM_READ(vox_status_r) /* ADPCM voice status */ - AM_RANGE(0xc0, 0xc0) AM_READWRITE(iox_mux_r, iox_command_w) /* key matrix | I/O */ - AM_RANGE(0xc1, 0xc1) AM_READWRITE(iox_status_r,iox_data_w) - AM_RANGE(0xe0, 0xe1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xe2, 0xe2) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(srmp2_state::rmgoldyh_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") /* rom bank */ - AM_RANGE(0xa000, 0xafff) AM_RAM AM_SHARE("nvram") /* work ram */ - AM_RANGE(0xb000, 0xb2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xb300, 0xb303) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r8, spritectrl_w8) - AM_RANGE(0xb800, 0xb800) AM_WRITENOP /* flag ? */ - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) /* Sprites Code + X + Attr */ - AM_RANGE(0xe000, 0xffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) -ADDRESS_MAP_END +void srmp2_state::srmp3_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); /* rom bank */ + map(0xa000, 0xa7ff).ram().share("nvram"); /* work ram */ + map(0xa800, 0xa800).nopw(); /* flag ? */ + map(0xb000, 0xb2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xb300, 0xb303).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r8), FUNC(seta001_device::spritectrl_w8)); + map(0xb800, 0xb800).nopw(); /* flag ? */ + map(0xc000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); /* Sprites Code + X + Attr */ + map(0xe000, 0xffff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); +} + +void srmp2_state::srmp3_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x20, 0x20).w(this, FUNC(srmp2_state::srmp3_irq_ack_w)); /* interrupt acknowledge */ + map(0x40, 0x40).portr("SYSTEM").w(this, FUNC(srmp2_state::srmp3_flags_w)); /* coin, service | GFX bank, counter, lockout */ + map(0x60, 0x60).w(this, FUNC(srmp2_state::srmp3_rombank_w)); /* ROM bank select */ + map(0xa0, 0xa0).w(this, FUNC(srmp2_state::adpcm_code_w)); /* ADPCM number */ + map(0xa1, 0xa1).r(this, FUNC(srmp2_state::vox_status_r)); /* ADPCM voice status */ + map(0xc0, 0xc0).rw(this, FUNC(srmp2_state::iox_mux_r), FUNC(srmp2_state::iox_command_w)); /* key matrix | I/O */ + map(0xc1, 0xc1).rw(this, FUNC(srmp2_state::iox_status_r), FUNC(srmp2_state::iox_data_w)); + map(0xe0, 0xe1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xe2, 0xe2).r("aysnd", FUNC(ay8910_device::data_r)); +} + +void srmp2_state::rmgoldyh_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("bank1"); /* rom bank */ + map(0xa000, 0xafff).ram().share("nvram"); /* work ram */ + map(0xb000, 0xb2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xb300, 0xb303).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r8), FUNC(seta001_device::spritectrl_w8)); + map(0xb800, 0xb800).nopw(); /* flag ? */ + map(0xc000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); /* Sprites Code + X + Attr */ + map(0xe000, 0xffff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); +} WRITE8_MEMBER(srmp2_state::rmgoldyh_rombank_w) { @@ -518,14 +523,15 @@ WRITE8_MEMBER(srmp2_state::rmgoldyh_rombank_w) membank("bank1")->set_entry(data & 0x1f); } -ADDRESS_MAP_START(srmp2_state::rmgoldyh_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_IMPORT_FROM(srmp3_io_map) - AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */ - AM_RANGE(0x60, 0x60) AM_WRITE(rmgoldyh_rombank_w) /* ROM bank select */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW4") - AM_RANGE(0x81, 0x81) AM_READ_PORT("DSW3") -ADDRESS_MAP_END +void srmp2_state::rmgoldyh_io_map(address_map &map) +{ + map.global_mask(0xff); + srmp3_io_map(map); + map(0x00, 0x00).nopw(); /* watchdog */ + map(0x60, 0x60).w(this, FUNC(srmp2_state::rmgoldyh_rombank_w)); /* ROM bank select */ + map(0x80, 0x80).portr("DSW4"); + map(0x81, 0x81).portr("DSW3"); +} /*************************************************************************** diff --git a/src/mame/drivers/srmp5.cpp b/src/mame/drivers/srmp5.cpp index cb67c18dd8a..5ca7aa3db9a 100644 --- a/src/mame/drivers/srmp5.cpp +++ b/src/mame/drivers/srmp5.cpp @@ -362,43 +362,45 @@ READ32_MEMBER(srmp5_state::irq_ack_clear) return 0; } -ADDRESS_MAP_START(srmp5_state::srmp5_mem) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM //maybe 0 - 2fffff ? - AM_RANGE(0x002f0000, 0x002f7fff) AM_RAM - AM_RANGE(0x01000000, 0x01000003) AM_WRITEONLY // 0xaa .. watchdog ? - AM_RANGE(0x01800000, 0x01800003) AM_RAM //?1 - AM_RANGE(0x01800004, 0x01800007) AM_READ_PORT("DSW1") - AM_RANGE(0x01800008, 0x0180000b) AM_READ_PORT("DSW2") - AM_RANGE(0x0180000c, 0x0180000f) AM_WRITE(bank_w) - AM_RANGE(0x01800010, 0x01800013) AM_READ(srmp5_inputs_r) //multiplexed controls (selected by writes to 1c) - AM_RANGE(0x01800014, 0x01800017) AM_READ_PORT("TEST") - AM_RANGE(0x0180001c, 0x0180001f) AM_WRITE(input_select_w)//c1 c2 c4 c8 => mahjong inputs (at $10) - bits 0-3 - AM_RANGE(0x01800200, 0x01800203) AM_RAM //sound related ? only few writes after boot - AM_RANGE(0x01802000, 0x01802003) AM_WRITE(cmd1_w) - AM_RANGE(0x01802004, 0x01802007) AM_WRITE(cmd2_w) - AM_RANGE(0x01802008, 0x0180200b) AM_READ(cmd_stat32_r) - AM_RANGE(0x01a00000, 0x01bfffff) AM_READ(chrrom_r) - AM_RANGE(0x01c00000, 0x01c00003) AM_READNOP // debug? 'Toru' - - AM_RANGE(0x0a000000, 0x0a0fffff) AM_READWRITE(spr_r, spr_w) - AM_RANGE(0x0a100000, 0x0a17ffff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") +void srmp5_state::srmp5_mem(address_map &map) +{ + map(0x00000000, 0x000fffff).ram(); //maybe 0 - 2fffff ? + map(0x002f0000, 0x002f7fff).ram(); + map(0x01000000, 0x01000003).writeonly(); // 0xaa .. watchdog ? + map(0x01800000, 0x01800003).ram(); //?1 + map(0x01800004, 0x01800007).portr("DSW1"); + map(0x01800008, 0x0180000b).portr("DSW2"); + map(0x0180000c, 0x0180000f).w(this, FUNC(srmp5_state::bank_w)); + map(0x01800010, 0x01800013).r(this, FUNC(srmp5_state::srmp5_inputs_r)); //multiplexed controls (selected by writes to 1c) + map(0x01800014, 0x01800017).portr("TEST"); + map(0x0180001c, 0x0180001f).w(this, FUNC(srmp5_state::input_select_w));//c1 c2 c4 c8 => mahjong inputs (at $10) - bits 0-3 + map(0x01800200, 0x01800203).ram(); //sound related ? only few writes after boot + map(0x01802000, 0x01802003).w(this, FUNC(srmp5_state::cmd1_w)); + map(0x01802004, 0x01802007).w(this, FUNC(srmp5_state::cmd2_w)); + map(0x01802008, 0x0180200b).r(this, FUNC(srmp5_state::cmd_stat32_r)); + map(0x01a00000, 0x01bfffff).r(this, FUNC(srmp5_state::chrrom_r)); + map(0x01c00000, 0x01c00003).nopr(); // debug? 'Toru' + + map(0x0a000000, 0x0a0fffff).rw(this, FUNC(srmp5_state::spr_r), FUNC(srmp5_state::spr_w)); + map(0x0a100000, 0x0a17ffff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); //0?N???A?????????i?????????? - AM_RANGE(0x0a180000, 0x0a18011f) AM_READWRITE(srmp5_vidregs_r, srmp5_vidregs_w) - AM_RANGE(0x0a180000, 0x0a180003) AM_READNOP // write 0x00000400 - AM_RANGE(0x0a200000, 0x0a3fffff) AM_READWRITE(tileram_r, tileram_w) - AM_RANGE(0x0fc00000, 0x0fdfffff) AM_MIRROR(0x10000000) AM_ROM AM_REGION("maincpu", 0) - - AM_RANGE(0x1eff0000, 0x1eff001f) AM_WRITEONLY - AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear) -ADDRESS_MAP_END - -ADDRESS_MAP_START(srmp5_state::st0016_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") + map(0x0a180000, 0x0a18011f).rw(this, FUNC(srmp5_state::srmp5_vidregs_r), FUNC(srmp5_state::srmp5_vidregs_w)); + map(0x0a180000, 0x0a180003).nopr(); // write 0x00000400 + map(0x0a200000, 0x0a3fffff).rw(this, FUNC(srmp5_state::tileram_r), FUNC(srmp5_state::tileram_w)); + map(0x0fc00000, 0x0fdfffff).mirror(0x10000000).rom().region("maincpu", 0); + + map(0x1eff0000, 0x1eff001f).writeonly(); + map(0x1eff003c, 0x1eff003f).r(this, FUNC(srmp5_state::irq_ack_clear)); +} + +void srmp5_state::st0016_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); //AM_RANGE(0xe900, 0xe9ff) // sound - internal //AM_RANGE(0xec00, 0xec1f) AM_READ(st0016_character_ram_r) AM_WRITE(st0016_character_ram_w) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xf000, 0xffff).ram(); +} READ8_MEMBER(srmp5_state::cmd1_r) { @@ -423,16 +425,17 @@ WRITE8_MEMBER(srmp5_state::st0016_rom_bank_w) } -ADDRESS_MAP_START(srmp5_state::st0016_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void srmp5_state::st0016_io(address_map &map) +{ + map.global_mask(0xff); //AM_RANGE(0x00, 0xbf) AM_READ(st0016_vregs_r) AM_WRITE(st0016_vregs_w) - AM_RANGE(0xc0, 0xc0) AM_READ(cmd1_r) - AM_RANGE(0xc1, 0xc1) AM_READ(cmd2_r) - AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat8_r) - AM_RANGE(0xe1, 0xe1) AM_WRITE(st0016_rom_bank_w) - AM_RANGE(0xe7, 0xe7) AM_WRITE(st0016_rom_bank_w) + map(0xc0, 0xc0).r(this, FUNC(srmp5_state::cmd1_r)); + map(0xc1, 0xc1).r(this, FUNC(srmp5_state::cmd2_r)); + map(0xc2, 0xc2).r(this, FUNC(srmp5_state::cmd_stat8_r)); + map(0xe1, 0xe1).w(this, FUNC(srmp5_state::st0016_rom_bank_w)); + map(0xe7, 0xe7).w(this, FUNC(srmp5_state::st0016_rom_bank_w)); //AM_RANGE(0xf0, 0xf0) AM_READ(st0016_dma_r) -ADDRESS_MAP_END +} static INPUT_PORTS_START( srmp5 ) diff --git a/src/mame/drivers/srmp6.cpp b/src/mame/drivers/srmp6.cpp index f1e44dbc2ca..186c26db0ff 100644 --- a/src/mame/drivers/srmp6.cpp +++ b/src/mame/drivers/srmp6.cpp @@ -553,33 +553,34 @@ READ16_MEMBER(srmp6_state::srmp6_irq_ack_r) return 0; // value read doesn't matter } -ADDRESS_MAP_START(srmp6_state::srmp6_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x23ffff) AM_RAM // work RAM - AM_RANGE(0x600000, 0x7fffff) AM_ROMBANK("bank1") // banked ROM (used by ROM check) - AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("user1", 0) +void srmp6_state::srmp6_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x23ffff).ram(); // work RAM + map(0x600000, 0x7fffff).bankr("bank1"); // banked ROM (used by ROM check) + map(0x800000, 0x9fffff).rom().region("user1", 0); - AM_RANGE(0x300000, 0x300005) AM_READWRITE(srmp6_inputs_r, srmp6_input_select_w) // inputs - AM_RANGE(0x480000, 0x480fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("palette") - AM_RANGE(0x4d0000, 0x4d0001) AM_READ(srmp6_irq_ack_r) + map(0x300000, 0x300005).rw(this, FUNC(srmp6_state::srmp6_inputs_r), FUNC(srmp6_state::srmp6_input_select_w)); // inputs + map(0x480000, 0x480fff).ram().w(this, FUNC(srmp6_state::paletteram_w)).share("palette"); + map(0x4d0000, 0x4d0001).r(this, FUNC(srmp6_state::srmp6_irq_ack_r)); // OBJ RAM: checked [$400000-$47dfff] - AM_RANGE(0x400000, 0x47ffff) AM_RAM AM_SHARE("sprram") + map(0x400000, 0x47ffff).ram().share("sprram"); // CHR RAM: checked [$500000-$5fffff] - AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(tileram_r,tileram_w) AM_SHARE("chrram") + map(0x500000, 0x5fffff).rw(this, FUNC(srmp6_state::tileram_r), FUNC(srmp6_state::tileram_w)).share("chrram"); //AM_RANGE(0x5fff00, 0x5fffff) AM_WRITE(dma_w) AM_SHARE("dmaram") - AM_RANGE(0x4c0000, 0x4c006f) AM_READWRITE(video_regs_r, video_regs_w) AM_SHARE("video_regs") // ? gfx regs ST-0026 NiLe - AM_RANGE(0x4e0000, 0x4e00ff) AM_DEVREADWRITE("nile", nile_device, nile_snd_r, nile_snd_w) - AM_RANGE(0x4e0100, 0x4e0101) AM_DEVREADWRITE("nile", nile_device, nile_sndctrl_r, nile_sndctrl_w) + map(0x4c0000, 0x4c006f).rw(this, FUNC(srmp6_state::video_regs_r), FUNC(srmp6_state::video_regs_w)).share("video_regs"); // ? gfx regs ST-0026 NiLe + map(0x4e0000, 0x4e00ff).rw("nile", FUNC(nile_device::nile_snd_r), FUNC(nile_device::nile_snd_w)); + map(0x4e0100, 0x4e0101).rw("nile", FUNC(nile_device::nile_sndctrl_r), FUNC(nile_device::nile_sndctrl_w)); //AM_RANGE(0x4e0110, 0x4e0111) AM_NOP // ? accessed once ($268dc, written $b.w) //AM_RANGE(0x5fff00, 0x5fff1f) AM_RAM // ? see routine $5ca8, video_regs related ??? //AM_RANGE(0xf00004, 0xf00005) AM_RAM // ? //AM_RANGE(0xf00006, 0xf00007) AM_RAM // ? -ADDRESS_MAP_END +} /*************************************************************************** diff --git a/src/mame/drivers/srumbler.cpp b/src/mame/drivers/srumbler.cpp index b92b611254e..58717afdd1c 100644 --- a/src/mame/drivers/srumbler.cpp +++ b/src/mame/drivers/srumbler.cpp @@ -81,39 +81,41 @@ to the page register. Ignore the warnings about writing to unmapped memory. */ -ADDRESS_MAP_START(srumbler_state::srumbler_map) - AM_RANGE(0x0000, 0x1dff) AM_RAM /* RAM (of 1 sort or another) */ - AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(background_w) AM_SHARE("backgroundram") - AM_RANGE(0x4008, 0x4008) AM_READ_PORT("SYSTEM") AM_WRITE(bankswitch_w) - AM_RANGE(0x4009, 0x4009) AM_READ_PORT("P1") AM_WRITE(_4009_w) - AM_RANGE(0x400a, 0x400a) AM_READ_PORT("P2") - AM_RANGE(0x400b, 0x400b) AM_READ_PORT("DSW1") - AM_RANGE(0x400c, 0x400c) AM_READ_PORT("DSW2") - AM_RANGE(0x400a, 0x400d) AM_WRITE(scroll_w) - AM_RANGE(0x400e, 0x400e) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x5000, 0x5fff) AM_ROMBANK("5000") AM_WRITE(foreground_w) AM_SHARE("foregroundram") /* Banked ROM */ - AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("6000") /* Banked ROM */ - AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* Video RAM 2 ??? (not used) */ - AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("7000") /* Banked ROM */ - AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("8000") /* Banked ROM */ - AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("9000") /* Banked ROM */ - AM_RANGE(0xa000, 0xafff) AM_ROMBANK("a000") /* Banked ROM */ - AM_RANGE(0xb000, 0xbfff) AM_ROMBANK("b000") /* Banked ROM */ - AM_RANGE(0xc000, 0xcfff) AM_ROMBANK("c000") /* Banked ROM */ - AM_RANGE(0xd000, 0xdfff) AM_ROMBANK("d000") /* Banked ROM */ - AM_RANGE(0xe000, 0xefff) AM_ROMBANK("e000") /* Banked ROM */ - AM_RANGE(0xf000, 0xffff) AM_ROMBANK("f000") /* Banked ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(srumbler_state::srumbler_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym2", ym2203_device, write) - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void srumbler_state::srumbler_map(address_map &map) +{ + map(0x0000, 0x1dff).ram(); /* RAM (of 1 sort or another) */ + map(0x1e00, 0x1fff).ram().share("spriteram"); + map(0x2000, 0x3fff).ram().w(this, FUNC(srumbler_state::background_w)).share("backgroundram"); + map(0x4008, 0x4008).portr("SYSTEM").w(this, FUNC(srumbler_state::bankswitch_w)); + map(0x4009, 0x4009).portr("P1").w(this, FUNC(srumbler_state::_4009_w)); + map(0x400a, 0x400a).portr("P2"); + map(0x400b, 0x400b).portr("DSW1"); + map(0x400c, 0x400c).portr("DSW2"); + map(0x400a, 0x400d).w(this, FUNC(srumbler_state::scroll_w)); + map(0x400e, 0x400e).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x5000, 0x5fff).bankr("5000").w(this, FUNC(srumbler_state::foreground_w)).share("foregroundram"); /* Banked ROM */ + map(0x6000, 0x6fff).bankr("6000"); /* Banked ROM */ + map(0x6000, 0x6fff).nopw(); /* Video RAM 2 ??? (not used) */ + map(0x7000, 0x7fff).bankr("7000"); /* Banked ROM */ + map(0x7000, 0x73ff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x8000, 0x8fff).bankr("8000"); /* Banked ROM */ + map(0x9000, 0x9fff).bankr("9000"); /* Banked ROM */ + map(0xa000, 0xafff).bankr("a000"); /* Banked ROM */ + map(0xb000, 0xbfff).bankr("b000"); /* Banked ROM */ + map(0xc000, 0xcfff).bankr("c000"); /* Banked ROM */ + map(0xd000, 0xdfff).bankr("d000"); /* Banked ROM */ + map(0xe000, 0xefff).bankr("e000"); /* Banked ROM */ + map(0xf000, 0xffff).bankr("f000"); /* Banked ROM */ +} + +void srumbler_state::srumbler_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8001).w("ym1", FUNC(ym2203_device::write)); + map(0xa000, 0xa001).w("ym2", FUNC(ym2203_device::write)); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( srumbler ) diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp index 3886d2cdafa..8e1ee311638 100644 --- a/src/mame/drivers/ssem.cpp +++ b/src/mame/drivers/ssem.cpp @@ -77,9 +77,10 @@ inline uint32_t ssem_state::reverse(uint32_t v) * Address map * \****************************************************/ -ADDRESS_MAP_START(ssem_state::ssem_map) - AM_RANGE(0x00, 0x7f) AM_RAM AM_SHARE("store")// Primary store -ADDRESS_MAP_END +void ssem_state::ssem_map(address_map &map) +{ + map(0x00, 0x7f).ram().share("store");// Primary store +} /****************************************************\ * Input ports and front panel handling * diff --git a/src/mame/drivers/ssfindo.cpp b/src/mame/drivers/ssfindo.cpp index 89fffd54122..57f7ba3529a 100644 --- a/src/mame/drivers/ssfindo.cpp +++ b/src/mame/drivers/ssfindo.cpp @@ -601,38 +601,40 @@ READ32_MEMBER(ssfindo_state::randomized_r) return machine().rand(); } -ADDRESS_MAP_START(ssfindo_state::ssfindo_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w) - AM_RANGE(0x03012e60, 0x03012e67) AM_NOP - AM_RANGE(0x03012fe0, 0x03012fe3) AM_WRITE(debug_w) - AM_RANGE(0x03012ff0, 0x03012ff3) AM_NOP - AM_RANGE(0x03012ff4, 0x03012ff7) AM_WRITENOP AM_READ(ff4_r) //status flag ? - AM_RANGE(0x03012ff8, 0x03012fff) AM_NOP - AM_RANGE(0x03240000, 0x03240003) AM_READ_PORT("IN0") AM_WRITENOP - AM_RANGE(0x03241000, 0x03241003) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x03242000, 0x03242003) AM_READ(io_r) AM_WRITE(io_w) - AM_RANGE(0x03243000, 0x03243003) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0x0324f000, 0x0324f003) AM_READ(SIMPLEIO_r) - AM_RANGE(0x03245000, 0x03245003) AM_WRITENOP /* sound ? */ - AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w) - AM_RANGE(0x10000000, 0x11ffffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ssfindo_state::ppcar_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w) - AM_RANGE(0x03012b00, 0x03012bff) AM_READ(randomized_r) AM_WRITENOP - AM_RANGE(0x03012e60, 0x03012e67) AM_WRITENOP - AM_RANGE(0x03012ff8, 0x03012ffb) AM_READ_PORT("IN0") AM_WRITENOP - AM_RANGE(0x032c0000, 0x032c0003) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x03340000, 0x03340007) AM_WRITENOP - AM_RANGE(0x03341000, 0x0334101f) AM_WRITENOP - AM_RANGE(0x033c0000, 0x033c0003) AM_READ(io_r) AM_WRITE(io_w) - AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w) - AM_RANGE(0x08000000, 0x08ffffff) AM_RAM - AM_RANGE(0x10000000, 0x10ffffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END +void ssfindo_state::ssfindo_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); + map(0x03200000, 0x032001ff).rw(this, FUNC(ssfindo_state::PS7500_IO_r), FUNC(ssfindo_state::PS7500_IO_w)); + map(0x03012e60, 0x03012e67).noprw(); + map(0x03012fe0, 0x03012fe3).w(this, FUNC(ssfindo_state::debug_w)); + map(0x03012ff0, 0x03012ff3).noprw(); + map(0x03012ff4, 0x03012ff7).nopw().r(this, FUNC(ssfindo_state::ff4_r)); //status flag ? + map(0x03012ff8, 0x03012fff).noprw(); + map(0x03240000, 0x03240003).portr("IN0").nopw(); + map(0x03241000, 0x03241003).portr("IN1").nopw(); + map(0x03242000, 0x03242003).r(this, FUNC(ssfindo_state::io_r)).w(this, FUNC(ssfindo_state::io_w)); + map(0x03243000, 0x03243003).portr("DSW").nopw(); + map(0x0324f000, 0x0324f003).r(this, FUNC(ssfindo_state::SIMPLEIO_r)); + map(0x03245000, 0x03245003).nopw(); /* sound ? */ + map(0x03400000, 0x03400003).w(this, FUNC(ssfindo_state::FIFO_w)); + map(0x10000000, 0x11ffffff).ram().share("vram"); +} + +void ssfindo_state::ppcar_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); + map(0x03200000, 0x032001ff).rw(this, FUNC(ssfindo_state::PS7500_IO_r), FUNC(ssfindo_state::PS7500_IO_w)); + map(0x03012b00, 0x03012bff).r(this, FUNC(ssfindo_state::randomized_r)).nopw(); + map(0x03012e60, 0x03012e67).nopw(); + map(0x03012ff8, 0x03012ffb).portr("IN0").nopw(); + map(0x032c0000, 0x032c0003).portr("IN1").nopw(); + map(0x03340000, 0x03340007).nopw(); + map(0x03341000, 0x0334101f).nopw(); + map(0x033c0000, 0x033c0003).r(this, FUNC(ssfindo_state::io_r)).w(this, FUNC(ssfindo_state::io_w)); + map(0x03400000, 0x03400003).w(this, FUNC(ssfindo_state::FIFO_w)); + map(0x08000000, 0x08ffffff).ram(); + map(0x10000000, 0x10ffffff).ram().share("vram"); +} READ32_MEMBER(ssfindo_state::tetfight_unk_r) { @@ -645,16 +647,17 @@ WRITE32_MEMBER(ssfindo_state::tetfight_unk_w) //sound latch ? } -ADDRESS_MAP_START(ssfindo_state::tetfight_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w) - AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w) - AM_RANGE(0x03240000, 0x03240003) AM_READ_PORT("IN0") - AM_RANGE(0x03240004, 0x03240007) AM_READ_PORT("IN1") - AM_RANGE(0x03240008, 0x0324000b) AM_READ_PORT("DSW2") - AM_RANGE(0x03240020, 0x03240023) AM_READWRITE(tetfight_unk_r, tetfight_unk_w) - AM_RANGE(0x10000000, 0x14ffffff) AM_RAM AM_SHARE("vram") -ADDRESS_MAP_END +void ssfindo_state::tetfight_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom(); + map(0x03200000, 0x032001ff).rw(this, FUNC(ssfindo_state::PS7500_IO_r), FUNC(ssfindo_state::PS7500_IO_w)); + map(0x03400000, 0x03400003).w(this, FUNC(ssfindo_state::FIFO_w)); + map(0x03240000, 0x03240003).portr("IN0"); + map(0x03240004, 0x03240007).portr("IN1"); + map(0x03240008, 0x0324000b).portr("DSW2"); + map(0x03240020, 0x03240023).rw(this, FUNC(ssfindo_state::tetfight_unk_r), FUNC(ssfindo_state::tetfight_unk_w)); + map(0x10000000, 0x14ffffff).ram().share("vram"); +} void ssfindo_state::machine_reset() { diff --git a/src/mame/drivers/sshangha.cpp b/src/mame/drivers/sshangha.cpp index abc8e48d36a..7e1e99c8aa4 100644 --- a/src/mame/drivers/sshangha.cpp +++ b/src/mame/drivers/sshangha.cpp @@ -168,65 +168,67 @@ WRITE16_MEMBER( sshangha_state::sshangha_protection_region_8_146_w ) } -ADDRESS_MAP_START(sshangha_state::sshangha_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10000f) AM_RAM AM_SHARE("sound_shared") - - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_SHARE("pf2_rowscroll") - AM_RANGE(0x206800, 0x207fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x320000, 0x320001) AM_WRITE(sshangha_video_w) - AM_RANGE(0x320002, 0x320005) AM_WRITENOP - AM_RANGE(0x320006, 0x320007) AM_READNOP //irq ack - - AM_RANGE(0x340000, 0x340fff) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x350000, 0x350001) AM_READ(deco_71_r) - AM_RANGE(0x350000, 0x350007) AM_WRITENOP - AM_RANGE(0x360000, 0x360fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x370000, 0x370001) AM_READ(deco_71_r) - AM_RANGE(0x370000, 0x370007) AM_WRITENOP - - AM_RANGE(0x380000, 0x3803ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites_w) AM_SHARE("sprite_palram") - AM_RANGE(0x380400, 0x3807ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilehigh_w) AM_SHARE("tile_palram2") - AM_RANGE(0x380800, 0x380bff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites2_w) AM_SHARE("sprite_palram2") - AM_RANGE(0x380c00, 0x380fff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilelow_w) AM_SHARE("tile_palram1") - AM_RANGE(0x381000, 0x383fff) AM_RAM // unused palette area - AM_RANGE(0x3e0000, 0x3e3fff) AM_READWRITE(sshangha_protection_region_8_146_r,sshangha_protection_region_8_146_w) - AM_RANGE(0x3ec000, 0x3f3fff) AM_RAM - AM_RANGE(0x3f4000, 0x3f7fff) AM_READWRITE(sshangha_protection_region_d_146_r,sshangha_protection_region_d_146_w) AM_SHARE("prot_data") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sshangha_state::sshanghb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x084000, 0x0847ff) AM_READ(sshanghb_protection16_r) - AM_RANGE(0x101000, 0x10100f) AM_RAM AM_SHARE("sound_shared") /* the bootleg writes here */ - - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_SHARE("pf2_rowscroll") - AM_RANGE(0x206800, 0x207fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x320000, 0x320001) AM_WRITE(sshangha_video_w) - AM_RANGE(0x320002, 0x320005) AM_WRITENOP - AM_RANGE(0x320006, 0x320007) AM_READNOP //irq ack - - AM_RANGE(0x340000, 0x340fff) AM_RAM // original spriteram - - AM_RANGE(0x380000, 0x3803ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites_w) AM_SHARE("sprite_palram") - AM_RANGE(0x380400, 0x3807ff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilehigh_w) AM_SHARE("tile_palram2") - AM_RANGE(0x380800, 0x380bff) AM_RAM_WRITE(paletteram16_xbgr_word_be_sprites2_w) AM_SHARE("sprite_palram2") - AM_RANGE(0x380c00, 0x380fff) AM_RAM_WRITE(paletteram16_xbgr_word_be_tilelow_w) AM_SHARE("tile_palram1") - AM_RANGE(0x381000, 0x383fff) AM_RAM // unused palette area - - AM_RANGE(0x3c0000, 0x3c0fff) AM_RAM AM_SHARE("spriteram") // bootleg spriteram - AM_RANGE(0xfec000, 0xff3fff) AM_RAM - AM_RANGE(0xff4000, 0xff47ff) AM_RAM -ADDRESS_MAP_END +void sshangha_state::sshangha_map(address_map &map) +{ + map.global_mask(0x3fffff); + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10000f).ram().share("sound_shared"); + + map(0x200000, 0x201fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x203fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x204000, 0x2047ff).ram().share("pf1_rowscroll"); + map(0x206000, 0x2067ff).ram().share("pf2_rowscroll"); + map(0x206800, 0x207fff).ram(); + map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x320000, 0x320001).w(this, FUNC(sshangha_state::sshangha_video_w)); + map(0x320002, 0x320005).nopw(); + map(0x320006, 0x320007).nopr(); //irq ack + + map(0x340000, 0x340fff).ram().share("spriteram2"); + map(0x350000, 0x350001).r(this, FUNC(sshangha_state::deco_71_r)); + map(0x350000, 0x350007).nopw(); + map(0x360000, 0x360fff).ram().share("spriteram"); + map(0x370000, 0x370001).r(this, FUNC(sshangha_state::deco_71_r)); + map(0x370000, 0x370007).nopw(); + + map(0x380000, 0x3803ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites_w)).share("sprite_palram"); + map(0x380400, 0x3807ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilehigh_w)).share("tile_palram2"); + map(0x380800, 0x380bff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites2_w)).share("sprite_palram2"); + map(0x380c00, 0x380fff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilelow_w)).share("tile_palram1"); + map(0x381000, 0x383fff).ram(); // unused palette area + map(0x3e0000, 0x3e3fff).rw(this, FUNC(sshangha_state::sshangha_protection_region_8_146_r), FUNC(sshangha_state::sshangha_protection_region_8_146_w)); + map(0x3ec000, 0x3f3fff).ram(); + map(0x3f4000, 0x3f7fff).rw(this, FUNC(sshangha_state::sshangha_protection_region_d_146_r), FUNC(sshangha_state::sshangha_protection_region_d_146_w)).share("prot_data"); +} + +void sshangha_state::sshanghb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x084000, 0x0847ff).r(this, FUNC(sshangha_state::sshanghb_protection16_r)); + map(0x101000, 0x10100f).ram().share("sound_shared"); /* the bootleg writes here */ + + map(0x200000, 0x201fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x203fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x204000, 0x2047ff).ram().share("pf1_rowscroll"); + map(0x206000, 0x2067ff).ram().share("pf2_rowscroll"); + map(0x206800, 0x207fff).ram(); + map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x320000, 0x320001).w(this, FUNC(sshangha_state::sshangha_video_w)); + map(0x320002, 0x320005).nopw(); + map(0x320006, 0x320007).nopr(); //irq ack + + map(0x340000, 0x340fff).ram(); // original spriteram + + map(0x380000, 0x3803ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites_w)).share("sprite_palram"); + map(0x380400, 0x3807ff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilehigh_w)).share("tile_palram2"); + map(0x380800, 0x380bff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_sprites2_w)).share("sprite_palram2"); + map(0x380c00, 0x380fff).ram().w(this, FUNC(sshangha_state::paletteram16_xbgr_word_be_tilelow_w)).share("tile_palram1"); + map(0x381000, 0x383fff).ram(); // unused palette area + + map(0x3c0000, 0x3c0fff).ram().share("spriteram"); // bootleg spriteram + map(0xfec000, 0xff3fff).ram(); + map(0xff4000, 0xff47ff).ram(); +} /******************************************************************************/ @@ -243,13 +245,14 @@ WRITE8_MEMBER(sshangha_state::sshangha_sound_shared_w) } /* Note: there's rom data after 0x8000 but the game never seem to call a rom bank, left-over? */ -ADDRESS_MAP_START(sshangha_state::sshangha_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xc200, 0xc201) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xf800, 0xf807) AM_READWRITE(sshangha_sound_shared_r,sshangha_sound_shared_w) - AM_RANGE(0xf808, 0xffff) AM_RAM -ADDRESS_MAP_END +void sshangha_state::sshangha_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc200, 0xc201).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xf800, 0xf807).rw(this, FUNC(sshangha_state::sshangha_sound_shared_r), FUNC(sshangha_state::sshangha_sound_shared_w)); + map(0xf808, 0xffff).ram(); +} /******************************************************************************/ diff --git a/src/mame/drivers/sshot.cpp b/src/mame/drivers/sshot.cpp index 12c6112fad2..2836f7cd0ae 100644 --- a/src/mame/drivers/sshot.cpp +++ b/src/mame/drivers/sshot.cpp @@ -268,17 +268,18 @@ WRITE8_MEMBER(supershot_state::supershot_output1_w) * *************************************/ -ADDRESS_MAP_START(supershot_state::supershot_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(supershot_vidram_w ) AM_SHARE("videoram") - AM_RANGE(0x4100, 0x41ff) AM_RAM - AM_RANGE(0x4200, 0x4200) AM_READ_PORT("GUNX") - AM_RANGE(0x4201, 0x4201) AM_READ_PORT("GUNY") - AM_RANGE(0x4202, 0x4202) AM_READ_PORT("IN0") - AM_RANGE(0x4203, 0x4203) AM_READ_PORT("DSW") - AM_RANGE(0x4206, 0x4206) AM_WRITE(supershot_output0_w) - AM_RANGE(0x4207, 0x4207) AM_WRITE(supershot_output1_w) -ADDRESS_MAP_END +void supershot_state::supershot_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram().w(this, FUNC(supershot_state::supershot_vidram_w)).share("videoram"); + map(0x4100, 0x41ff).ram(); + map(0x4200, 0x4200).portr("GUNX"); + map(0x4201, 0x4201).portr("GUNY"); + map(0x4202, 0x4202).portr("IN0"); + map(0x4203, 0x4203).portr("DSW"); + map(0x4206, 0x4206).w(this, FUNC(supershot_state::supershot_output0_w)); + map(0x4207, 0x4207).w(this, FUNC(supershot_state::supershot_output1_w)); +} /************************************* diff --git a/src/mame/drivers/ssingles.cpp b/src/mame/drivers/ssingles.cpp index 24389a8d1c2..1198a5a7da8 100644 --- a/src/mame/drivers/ssingles.cpp +++ b/src/mame/drivers/ssingles.cpp @@ -337,15 +337,16 @@ CUSTOM_INPUT_MEMBER(ssingles_state::controls_r) return data; } -ADDRESS_MAP_START(ssingles_state::ssingles_map) - AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w) - AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ(c000_r ) - AM_RANGE(0xc001, 0xc001) AM_READWRITE(c001_r, c001_w ) - AM_RANGE(0x6000, 0xbfff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void ssingles_state::ssingles_map(address_map &map) +{ + map(0x0000, 0x00ff).w(this, FUNC(ssingles_state::ssingles_videoram_w)); + map(0x0800, 0x08ff).w(this, FUNC(ssingles_state::ssingles_colorram_w)); + map(0x0000, 0x1fff).rom(); + map(0xc000, 0xc000).r(this, FUNC(ssingles_state::c000_r)); + map(0xc001, 0xc001).rw(this, FUNC(ssingles_state::c001_r), FUNC(ssingles_state::c001_w)); + map(0x6000, 0xbfff).rom(); + map(0xf800, 0xffff).ram(); +} READ8_MEMBER(ssingles_state::atamanot_prot_r) @@ -375,48 +376,51 @@ WRITE8_MEMBER(ssingles_state::atamanot_prot_w) } -ADDRESS_MAP_START(ssingles_state::atamanot_map) - AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w) - AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x60ff) AM_RAM //kanji tilemap? +void ssingles_state::atamanot_map(address_map &map) +{ + map(0x0000, 0x00ff).w(this, FUNC(ssingles_state::ssingles_videoram_w)); + map(0x0800, 0x08ff).w(this, FUNC(ssingles_state::ssingles_colorram_w)); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x60ff).ram(); //kanji tilemap? // AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_READ(atamanot_prot_r) + map(0x8000, 0x83ff).r(this, FUNC(ssingles_state::atamanot_prot_r)); // AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("question",0x10000) // AM_RANGE(0xc000, 0xc000) AM_READ(c000_r ) // AM_RANGE(0xc001, 0xc001) AM_READWRITE(c001_r, c001_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ssingles_state::ssingles_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x08, 0x08) AM_READNOP - AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x16, 0x16) AM_READ_PORT("DSW0") - AM_RANGE(0x18, 0x18) AM_READ_PORT("DSW1") - AM_RANGE(0x1c, 0x1c) AM_READ_PORT("INPUTS") +} + +void ssingles_state::ssingles_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("ay1", FUNC(ay8910_device::address_w)); + map(0x04, 0x04).w("ay1", FUNC(ay8910_device::data_w)); + map(0x06, 0x06).w("ay2", FUNC(ay8910_device::address_w)); + map(0x08, 0x08).nopr(); + map(0x0a, 0x0a).w("ay2", FUNC(ay8910_device::data_w)); + map(0x16, 0x16).portr("DSW0"); + map(0x18, 0x18).portr("DSW1"); + map(0x1c, 0x1c).portr("INPUTS"); // AM_RANGE(0x1a, 0x1a) AM_WRITENOP //video/crt related - AM_RANGE(0xfe, 0xfe) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xff, 0xff) AM_DEVWRITE("crtc", mc6845_device, register_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ssingles_state::atamanot_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x08, 0x08) AM_READNOP - AM_RANGE(0x0a, 0x0a) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x16, 0x16) AM_READ_PORT("DSW0") - AM_RANGE(0x18, 0x18) AM_READ_PORT("DSW1") AM_WRITE(atamanot_prot_w) - AM_RANGE(0x1c, 0x1c) AM_READ_PORT("INPUTS") + map(0xfe, 0xfe).w("crtc", FUNC(mc6845_device::address_w)); + map(0xff, 0xff).w("crtc", FUNC(mc6845_device::register_w)); +} + +void ssingles_state::atamanot_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("ay1", FUNC(ay8910_device::address_w)); + map(0x04, 0x04).w("ay1", FUNC(ay8910_device::data_w)); + map(0x06, 0x06).w("ay2", FUNC(ay8910_device::address_w)); + map(0x08, 0x08).nopr(); + map(0x0a, 0x0a).w("ay2", FUNC(ay8910_device::data_w)); + map(0x16, 0x16).portr("DSW0"); + map(0x18, 0x18).portr("DSW1").w(this, FUNC(ssingles_state::atamanot_prot_w)); + map(0x1c, 0x1c).portr("INPUTS"); // AM_RANGE(0x1a, 0x1a) AM_WRITENOP //video/crt related - AM_RANGE(0xfe, 0xfe) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0xff, 0xff) AM_DEVWRITE("crtc", mc6845_device, register_w) -ADDRESS_MAP_END + map(0xfe, 0xfe).w("crtc", FUNC(mc6845_device::address_w)); + map(0xff, 0xff).w("crtc", FUNC(mc6845_device::register_w)); +} static INPUT_PORTS_START( ssingles ) PORT_START("INPUTS") diff --git a/src/mame/drivers/sslam.cpp b/src/mame/drivers/sslam.cpp index 812403152c9..a7492a9b242 100644 --- a/src/mame/drivers/sslam.cpp +++ b/src/mame/drivers/sslam.cpp @@ -375,46 +375,48 @@ WRITE16_MEMBER(sslam_state::powerbls_sound_w) /* these will need verifying .. the game writes all over the place ... */ -ADDRESS_MAP_START(sslam_state::sslam_program_map) - AM_RANGE(0x000000, 0xffffff) AM_ROM /* I don't honestly know where the rom is mirrored .. so all unmapped reads / writes go to rom */ - - AM_RANGE(0x000400, 0x07ffff) AM_RAM - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(sslam_bg_tileram_w) AM_SHARE("bg_tileram") - AM_RANGE(0x104000, 0x107fff) AM_RAM_WRITE(sslam_md_tileram_w) AM_SHARE("md_tileram") - AM_RANGE(0x108000, 0x10ffff) AM_RAM_WRITE(sslam_tx_tileram_w) AM_SHARE("tx_tileram") - AM_RANGE(0x110000, 0x11000d) AM_RAM AM_SHARE("regs") - AM_RANGE(0x200000, 0x200001) AM_WRITENOP - AM_RANGE(0x280000, 0x280fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x304000, 0x304001) AM_WRITENOP - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("IN0") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("IN1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("IN2") - AM_RANGE(0x300016, 0x300017) AM_READ_PORT("IN3") - AM_RANGE(0x300018, 0x300019) AM_READ_PORT("IN4") - AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW2") - AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW1") - AM_RANGE(0x30001e, 0x30001f) AM_WRITE8(sslam_snd_w, 0x00ff) - AM_RANGE(0xf00000, 0xffffff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(sslam_state::powerbls_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(powerbls_bg_tileram_w) AM_SHARE("bg_tileram") - AM_RANGE(0x104000, 0x107fff) AM_RAM // not used - AM_RANGE(0x110000, 0x11000d) AM_RAM AM_SHARE("regs") - AM_RANGE(0x200000, 0x200001) AM_WRITENOP - AM_RANGE(0x201000, 0x201fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x280000, 0x2803ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300010, 0x300011) AM_READ_PORT("IN0") - AM_RANGE(0x300012, 0x300013) AM_READ_PORT("IN1") - AM_RANGE(0x300014, 0x300015) AM_READ_PORT("IN2") - AM_RANGE(0x30001a, 0x30001b) AM_READ_PORT("DSW1") - AM_RANGE(0x30001c, 0x30001d) AM_READ_PORT("DSW2") - AM_RANGE(0x30001e, 0x30001f) AM_WRITE(powerbls_sound_w) - AM_RANGE(0x304000, 0x304001) AM_WRITENOP - AM_RANGE(0xff0000, 0xffffff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END +void sslam_state::sslam_program_map(address_map &map) +{ + map(0x000000, 0xffffff).rom(); /* I don't honestly know where the rom is mirrored .. so all unmapped reads / writes go to rom */ + + map(0x000400, 0x07ffff).ram(); + map(0x100000, 0x103fff).ram().w(this, FUNC(sslam_state::sslam_bg_tileram_w)).share("bg_tileram"); + map(0x104000, 0x107fff).ram().w(this, FUNC(sslam_state::sslam_md_tileram_w)).share("md_tileram"); + map(0x108000, 0x10ffff).ram().w(this, FUNC(sslam_state::sslam_tx_tileram_w)).share("tx_tileram"); + map(0x110000, 0x11000d).ram().share("regs"); + map(0x200000, 0x200001).nopw(); + map(0x280000, 0x280fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x201000, 0x201fff).ram().share("spriteram"); + map(0x304000, 0x304001).nopw(); + map(0x300010, 0x300011).portr("IN0"); + map(0x300012, 0x300013).portr("IN1"); + map(0x300014, 0x300015).portr("IN2"); + map(0x300016, 0x300017).portr("IN3"); + map(0x300018, 0x300019).portr("IN4"); + map(0x30001a, 0x30001b).portr("DSW2"); + map(0x30001c, 0x30001d).portr("DSW1"); + map(0x30001f, 0x30001f).w(this, FUNC(sslam_state::sslam_snd_w)); + map(0xf00000, 0xffffff).ram(); /* Main RAM */ +} + +void sslam_state::powerbls_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().w(this, FUNC(sslam_state::powerbls_bg_tileram_w)).share("bg_tileram"); + map(0x104000, 0x107fff).ram(); // not used + map(0x110000, 0x11000d).ram().share("regs"); + map(0x200000, 0x200001).nopw(); + map(0x201000, 0x201fff).ram().share("spriteram"); + map(0x280000, 0x2803ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300010, 0x300011).portr("IN0"); + map(0x300012, 0x300013).portr("IN1"); + map(0x300014, 0x300015).portr("IN2"); + map(0x30001a, 0x30001b).portr("DSW1"); + map(0x30001c, 0x30001d).portr("DSW2"); + map(0x30001e, 0x30001f).w(this, FUNC(sslam_state::powerbls_sound_w)); + map(0x304000, 0x304001).nopw(); + map(0xff0000, 0xffffff).ram(); /* Main RAM */ +} /* diff --git a/src/mame/drivers/ssozumo.cpp b/src/mame/drivers/ssozumo.cpp index 2c8a2f32d42..45b4593c789 100644 --- a/src/mame/drivers/ssozumo.cpp +++ b/src/mame/drivers/ssozumo.cpp @@ -28,23 +28,24 @@ void ssozumo_state::machine_start() } -ADDRESS_MAP_START(ssozumo_state::ssozumo_map) - AM_RANGE(0x0000, 0x077f) AM_RAM - AM_RANGE(0x0780, 0x07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x3400, 0x35ff) AM_RAM - AM_RANGE(0x3600, 0x37ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(flipscreen_w) - AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(scroll_w) - AM_RANGE(0x4030, 0x4030) AM_READ_PORT("DSW1") +void ssozumo_state::ssozumo_map(address_map &map) +{ + map(0x0000, 0x077f).ram(); + map(0x0780, 0x07ff).ram().share("spriteram"); + map(0x2000, 0x23ff).ram().w(this, FUNC(ssozumo_state::videoram2_w)).share("videoram2"); + map(0x2400, 0x27ff).ram().w(this, FUNC(ssozumo_state::colorram2_w)).share("colorram2"); + map(0x3000, 0x31ff).ram().w(this, FUNC(ssozumo_state::videoram_w)).share("videoram"); + map(0x3200, 0x33ff).ram().w(this, FUNC(ssozumo_state::colorram_w)).share("colorram"); + map(0x3400, 0x35ff).ram(); + map(0x3600, 0x37ff).ram(); + map(0x4000, 0x4000).portr("P1").w(this, FUNC(ssozumo_state::flipscreen_w)); + map(0x4010, 0x4010).portr("P2").w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x4020, 0x4020).portr("DSW2").w(this, FUNC(ssozumo_state::scroll_w)); + map(0x4030, 0x4030).portr("DSW1"); // AM_RANGE(0x4030, 0x4030) AM_WRITEONLY - AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x4050, 0x407f).ram().w(this, FUNC(ssozumo_state::paletteram_w)).share("paletteram"); + map(0x6000, 0xffff).rom(); +} WRITE8_MEMBER(ssozumo_state::sound_nmi_mask_w) @@ -53,15 +54,16 @@ WRITE8_MEMBER(ssozumo_state::sound_nmi_mask_w) } /* Same as Tag Team */ -ADDRESS_MAP_START(ssozumo_state::ssozumo_sound_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w) - AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ssozumo_state::ssozumo_sound_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x2002, 0x2003).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x2004, 0x2004).w("dac", FUNC(dac_byte_interface::write)); + map(0x2005, 0x2005).w(this, FUNC(ssozumo_state::sound_nmi_mask_w)); + map(0x2007, 0x2007).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x4000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(ssozumo_state::coin_inserted) { diff --git a/src/mame/drivers/sspeedr.cpp b/src/mame/drivers/sspeedr.cpp index e3b9bca1138..56f7db48da8 100644 --- a/src/mame/drivers/sspeedr.cpp +++ b/src/mame/drivers/sspeedr.cpp @@ -81,37 +81,39 @@ WRITE8_MEMBER(sspeedr_state::sspeedr_sound_w) } -ADDRESS_MAP_START(sspeedr_state::sspeedr_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x21ff) AM_RAM - AM_RANGE(0x7f00, 0x7f17) AM_WRITE(sspeedr_score_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sspeedr_state::sspeedr_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x00, 0x01) AM_WRITE(sspeedr_sound_w) - AM_RANGE(0x02, 0x02) AM_WRITE(sspeedr_lamp_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") - AM_RANGE(0x04, 0x05) AM_WRITE(sspeedr_time_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x10, 0x10) AM_WRITE(sspeedr_driver_horz_w) - AM_RANGE(0x11, 0x11) AM_WRITE(sspeedr_driver_pic_w) - AM_RANGE(0x12, 0x12) AM_WRITE(sspeedr_driver_horz_2_w) - AM_RANGE(0x13, 0x13) AM_WRITE(sspeedr_drones_horz_w) - AM_RANGE(0x14, 0x14) AM_WRITE(sspeedr_drones_horz_2_w) - AM_RANGE(0x15, 0x15) AM_WRITE(sspeedr_drones_mask_w) - AM_RANGE(0x16, 0x16) AM_WRITE(sspeedr_driver_vert_w) - AM_RANGE(0x17, 0x18) AM_WRITE(sspeedr_track_vert_w) - AM_RANGE(0x19, 0x19) AM_WRITE(sspeedr_track_horz_w) - AM_RANGE(0x1a, 0x1a) AM_WRITE(sspeedr_track_horz_2_w) - AM_RANGE(0x1b, 0x1b) AM_WRITE(sspeedr_track_ice_w) - AM_RANGE(0x1c, 0x1e) AM_WRITE(sspeedr_drones_vert_w) - AM_RANGE(0x1f, 0x1f) AM_WRITE(sspeedr_int_ack_w) -ADDRESS_MAP_END +void sspeedr_state::sspeedr_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x21ff).ram(); + map(0x7f00, 0x7f17).w(this, FUNC(sspeedr_state::sspeedr_score_w)); +} + + +void sspeedr_state::sspeedr_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x00, 0x01).w(this, FUNC(sspeedr_state::sspeedr_sound_w)); + map(0x02, 0x02).w(this, FUNC(sspeedr_state::sspeedr_lamp_w)); + map(0x03, 0x03).portr("DSW"); + map(0x04, 0x04).portr("IN2"); + map(0x04, 0x05).w(this, FUNC(sspeedr_state::sspeedr_time_w)); + map(0x06, 0x06).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x10, 0x10).w(this, FUNC(sspeedr_state::sspeedr_driver_horz_w)); + map(0x11, 0x11).w(this, FUNC(sspeedr_state::sspeedr_driver_pic_w)); + map(0x12, 0x12).w(this, FUNC(sspeedr_state::sspeedr_driver_horz_2_w)); + map(0x13, 0x13).w(this, FUNC(sspeedr_state::sspeedr_drones_horz_w)); + map(0x14, 0x14).w(this, FUNC(sspeedr_state::sspeedr_drones_horz_2_w)); + map(0x15, 0x15).w(this, FUNC(sspeedr_state::sspeedr_drones_mask_w)); + map(0x16, 0x16).w(this, FUNC(sspeedr_state::sspeedr_driver_vert_w)); + map(0x17, 0x18).w(this, FUNC(sspeedr_state::sspeedr_track_vert_w)); + map(0x19, 0x19).w(this, FUNC(sspeedr_state::sspeedr_track_horz_w)); + map(0x1a, 0x1a).w(this, FUNC(sspeedr_state::sspeedr_track_horz_2_w)); + map(0x1b, 0x1b).w(this, FUNC(sspeedr_state::sspeedr_track_ice_w)); + map(0x1c, 0x1e).w(this, FUNC(sspeedr_state::sspeedr_drones_vert_w)); + map(0x1f, 0x1f).w(this, FUNC(sspeedr_state::sspeedr_int_ack_w)); +} static const ioport_value sspeedr_controller_table[] = diff --git a/src/mame/drivers/ssrj.cpp b/src/mame/drivers/ssrj.cpp index 2d84d16d97d..e11bce158b8 100644 --- a/src/mame/drivers/ssrj.cpp +++ b/src/mame/drivers/ssrj.cpp @@ -62,23 +62,24 @@ READ8_MEMBER(ssrj_state::wheel_r) return retval; } -ADDRESS_MAP_START(ssrj_state::ssrj_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("vram3") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(vram4_w) AM_SHARE("vram4") - AM_RANGE(0xe000, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("scrollram") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN0") - AM_RANGE(0xf001, 0xf001) AM_READ(wheel_r) - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN2") - AM_RANGE(0xf003, 0xf003) AM_WRITENOP /* unknown */ - AM_RANGE(0xf401, 0xf401) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xf400, 0xf401) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xf800, 0xf800) AM_WRITENOP /* wheel ? */ - AM_RANGE(0xfc00, 0xfc00) AM_WRITENOP /* unknown */ -ADDRESS_MAP_END +void ssrj_state::ssrj_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(ssrj_state::vram1_w)).share("vram1"); + map(0xc800, 0xcfff).ram().w(this, FUNC(ssrj_state::vram2_w)).share("vram2"); + map(0xd000, 0xd7ff).ram().share("vram3"); + map(0xd800, 0xdfff).ram().w(this, FUNC(ssrj_state::vram4_w)).share("vram4"); + map(0xe000, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().share("scrollram"); + map(0xf000, 0xf000).portr("IN0"); + map(0xf001, 0xf001).r(this, FUNC(ssrj_state::wheel_r)); + map(0xf002, 0xf002).portr("IN2"); + map(0xf003, 0xf003).nopw(); /* unknown */ + map(0xf401, 0xf401).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xf400, 0xf401).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xf800, 0xf800).nopw(); /* wheel ? */ + map(0xfc00, 0xfc00).nopw(); /* unknown */ +} static INPUT_PORTS_START( ssrj ) PORT_START("IN0") diff --git a/src/mame/drivers/sstrangr.cpp b/src/mame/drivers/sstrangr.cpp index 9d482bcd53a..f638ab66d02 100644 --- a/src/mame/drivers/sstrangr.cpp +++ b/src/mame/drivers/sstrangr.cpp @@ -136,19 +136,21 @@ WRITE8_MEMBER(sstrangr_state::port_w) -ADDRESS_MAP_START(sstrangr_state::sstrangr_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x6000, 0x63ff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sstrangr_state::sstrangr_io_map) - AM_RANGE(0x41, 0x41) AM_READ_PORT("DSW") - AM_RANGE(0x42, 0x42) AM_READ_PORT("INPUTS") - AM_RANGE(0x44, 0x44) AM_READ_PORT("EXT") AM_WRITE(port_w) -ADDRESS_MAP_END +void sstrangr_state::sstrangr_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).ram().share("ram"); + map(0x6000, 0x63ff).rom(); +} + + +void sstrangr_state::sstrangr_io_map(address_map &map) +{ + map(0x41, 0x41).portr("DSW"); + map(0x42, 0x42).portr("INPUTS"); + map(0x44, 0x44).portr("EXT").w(this, FUNC(sstrangr_state::port_w)); +} diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp index 7bac230bb38..c540671c408 100644 --- a/src/mame/drivers/ssv.cpp +++ b/src/mame/drivers/ssv.cpp @@ -332,13 +332,15 @@ void ssv_state::machine_reset() ***************************************************************************/ -ADDRESS_MAP_START(ssv_state::dsp_prg_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("dspprg", 0) -ADDRESS_MAP_END +void ssv_state::dsp_prg_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("dspprg", 0); +} -ADDRESS_MAP_START(ssv_state::dsp_data_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspdata", 0) -ADDRESS_MAP_END +void ssv_state::dsp_data_map(address_map &map) +{ + map(0x0000, 0x07ff).rom().region("dspdata", 0); +} READ16_MEMBER(ssv_state::dsp_dr_r) { @@ -397,26 +399,28 @@ WRITE16_MEMBER(ssv_state::dsp_w) READ16_MEMBER(ssv_state::fake_r){ return ssv_scroll[offset]; } #endif -#define SSV_MAP( _ROM ) \ - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram") /* RAM */ \ - AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_SHARE("spriteram") /* Sprites */ \ - AM_RANGE(0x140000, 0x15ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */\ - AM_RANGE(0x160000, 0x17ffff) AM_RAM /* */ \ - AM_RANGE(0x1c0000, 0x1c0001) AM_READ(vblank_r ) /* Vblank? */ \ -/**/AM_RANGE(0x1c0002, 0x1c007f) AM_READONLY /* Scroll */ \ - AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(scroll_w) AM_SHARE("scroll") /* Scroll */ \ - AM_RANGE(0x210002, 0x210003) AM_READ_PORT("DSW1") \ - AM_RANGE(0x210004, 0x210005) AM_READ_PORT("DSW2") \ - AM_RANGE(0x210008, 0x210009) AM_READ_PORT("P1") \ - AM_RANGE(0x21000a, 0x21000b) AM_READ_PORT("P2") \ - AM_RANGE(0x21000c, 0x21000d) AM_READ_PORT("SYSTEM") \ - AM_RANGE(0x21000e, 0x21000f) AM_READNOP AM_WRITE(lockout_w) /* Lockout */ \ - AM_RANGE(0x210010, 0x210011) AM_WRITENOP \ - AM_RANGE(0x230000, 0x230071) AM_WRITEONLY AM_SHARE("irq_vectors") /* IRQ Vec */ \ - AM_RANGE(0x240000, 0x240071) AM_WRITE(irq_ack_w ) /* IRQ Ack */ \ - AM_RANGE(0x260000, 0x260001) AM_WRITE(irq_enable_w) /* IRQ En */ \ - AM_RANGE(0x300000, 0x30007f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0x00ff) /* Sound */ \ - AM_RANGE(_ROM, 0xffffff) AM_ROM AM_REGION("maincpu", 0) /* ROM */ +void ssv_state::ssv_map(address_map &map, u32 rom) +{ + map(0x000000, 0x00ffff).ram().share("mainram"); /* RAM */ + map(0x100000, 0x13ffff).ram().share("spriteram"); /* Sprites */ + map(0x140000, 0x15ffff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x160000, 0x17ffff).ram(); /* */ + map(0x1c0000, 0x1c0001).r(this, FUNC(ssv_state::vblank_r)); /* Vblank? */ +/**/map(0x1c0002, 0x1c007f).readonly(); /* Scroll */ + map(0x1c0000, 0x1c007f).w(this, FUNC(ssv_state::scroll_w)).share("scroll"); /* Scroll */ + map(0x210002, 0x210003).portr("DSW1"); + map(0x210004, 0x210005).portr("DSW2"); + map(0x210008, 0x210009).portr("P1"); + map(0x21000a, 0x21000b).portr("P2"); + map(0x21000c, 0x21000d).portr("SYSTEM"); + map(0x21000e, 0x21000f).nopr().w(this, FUNC(ssv_state::lockout_w)); /* Lockout */ + map(0x210010, 0x210011).nopw(); + map(0x230000, 0x230071).writeonly().share("irq_vectors"); /* IRQ Vec */ + map(0x240000, 0x240071).w(this, FUNC(ssv_state::irq_ack_w)); /* IRQ Ack */ + map(0x260000, 0x260001).w(this, FUNC(ssv_state::irq_enable_w)); /* IRQ En */ + map(0x300000, 0x30007f).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write)).umask16(0x00ff); /* Sound */ + map(rom, 0xffffff).rom().region("maincpu", 0); /* ROM */ +} /*************************************************************************** Drift Out '94 @@ -427,18 +431,19 @@ READ16_MEMBER(ssv_state::drifto94_unknown_r) return machine().rand() & 0xffff; } -ADDRESS_MAP_START(ssv_state::drifto94_map) - SSV_MAP( 0xc00000 ) +void ssv_state::drifto94_map(address_map &map) +{ + ssv_map(map, 0xc00000); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start - AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ? - AM_RANGE(0x480000, 0x480001) AM_READWRITE(dsp_dr_r, dsp_dr_w) - AM_RANGE(0x482000, 0x482fff) AM_READWRITE(dsp_r, dsp_w) - AM_RANGE(0x483000, 0x485fff) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ?? - AM_RANGE(0x510000, 0x510001) AM_READ(drifto94_unknown_r) // ?? - AM_RANGE(0x520000, 0x520001) AM_READ(drifto94_unknown_r) // ?? - AM_RANGE(0x580000, 0x5807ff) AM_RAM AM_SHARE("nvram") // NVRAM -ADDRESS_MAP_END + map(0x400000, 0x47ffff).writeonly(); // ? + map(0x480000, 0x480001).rw(this, FUNC(ssv_state::dsp_dr_r), FUNC(ssv_state::dsp_dr_w)); + map(0x482000, 0x482fff).rw(this, FUNC(ssv_state::dsp_r), FUNC(ssv_state::dsp_w)); + map(0x483000, 0x485fff).nopw(); // ? + map(0x500000, 0x500001).nopw(); // ?? + map(0x510000, 0x510001).r(this, FUNC(ssv_state::drifto94_unknown_r)); // ?? + map(0x520000, 0x520001).r(this, FUNC(ssv_state::drifto94_unknown_r)); // ?? + map(0x580000, 0x5807ff).ram().share("nvram"); // NVRAM +} /*************************************************************************** @@ -477,18 +482,19 @@ WRITE16_MEMBER(ssv_state::gdfs_eeprom_w) } -ADDRESS_MAP_START(ssv_state::gdfs_map) - SSV_MAP( 0xc00000 ) - AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(gdfs_tmapram_w) AM_SHARE("gdfs_tmapram") - AM_RANGE(0x420000, 0x43ffff) AM_RAM - AM_RANGE(0x440000, 0x44003f) AM_RAM AM_SHARE("gdfs_tmapscroll") - AM_RANGE(0x500000, 0x500001) AM_WRITE(gdfs_eeprom_w) - AM_RANGE(0x540000, 0x540001) AM_READ(gdfs_eeprom_r) - AM_RANGE(0x600000, 0x600fff) AM_RAM - AM_RANGE(0x800000, 0x87ffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, sprram_r, sprram_w ); - AM_RANGE(0x8c0000, 0x8c00ff) AM_DEVREADWRITE( "st0020_spr", st0020_device, regs_r, regs_w ); - AM_RANGE(0x900000, 0x9fffff) AM_DEVREADWRITE( "st0020_spr", st0020_device, gfxram_r, gfxram_w ); -ADDRESS_MAP_END +void ssv_state::gdfs_map(address_map &map) +{ + ssv_map(map, 0xc00000); + map(0x400000, 0x41ffff).ram().w(this, FUNC(ssv_state::gdfs_tmapram_w)).share("gdfs_tmapram"); + map(0x420000, 0x43ffff).ram(); + map(0x440000, 0x44003f).ram().share("gdfs_tmapscroll"); + map(0x500000, 0x500001).w(this, FUNC(ssv_state::gdfs_eeprom_w)); + map(0x540000, 0x540001).r(this, FUNC(ssv_state::gdfs_eeprom_r)); + map(0x600000, 0x600fff).ram(); + map(0x800000, 0x87ffff).rw(m_gdfs_st0020, FUNC(st0020_device::sprram_r), FUNC(st0020_device::sprram_w)); + map(0x8c0000, 0x8c00ff).rw(m_gdfs_st0020, FUNC(st0020_device::regs_r), FUNC(st0020_device::regs_w)); + map(0x900000, 0x9fffff).rw(m_gdfs_st0020, FUNC(st0020_device::gfxram_r), FUNC(st0020_device::gfxram_w)); +} /*************************************************************************** @@ -515,33 +521,35 @@ READ16_MEMBER(ssv_state::hypreact_input_r) return 0xffff; } -ADDRESS_MAP_START(ssv_state::hypreact_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void ssv_state::hypreact_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines + map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines // AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used - AM_RANGE(0xc00000, 0xc00001) AM_READ(hypreact_input_r) // Inputs - AM_RANGE(0xc00006, 0xc00007) AM_RAM AM_SHARE("input_sel") // - AM_RANGE(0xc00008, 0xc00009) AM_NOP // -ADDRESS_MAP_END + map(0xc00000, 0xc00001).r(this, FUNC(ssv_state::hypreact_input_r)); // Inputs + map(0xc00006, 0xc00007).ram().share("input_sel"); // + map(0xc00008, 0xc00009).noprw(); // +} /*************************************************************************** Hyper Reaction 2 ***************************************************************************/ -ADDRESS_MAP_START(ssv_state::hypreac2_map) - SSV_MAP( 0xe00000 ) - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void ssv_state::hypreac2_map(address_map &map) +{ + ssv_map(map, 0xe00000); + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines + map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines // AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used - AM_RANGE(0x500000, 0x500001) AM_READ(hypreact_input_r) // Inputs - AM_RANGE(0x500002, 0x500003) AM_READ(hypreact_input_r) // (again?) - AM_RANGE(0x520000, 0x520001) AM_WRITEONLY AM_SHARE("input_sel") // Inputs + map(0x500000, 0x500001).r(this, FUNC(ssv_state::hypreact_input_r)); // Inputs + map(0x500002, 0x500003).r(this, FUNC(ssv_state::hypreact_input_r)); // (again?) + map(0x520000, 0x520001).writeonly().share("input_sel"); // Inputs // 0x540000, 0x540003 communication with other units -ADDRESS_MAP_END +} /*************************************************************************** @@ -550,41 +558,44 @@ ADDRESS_MAP_END -ADDRESS_MAP_START(ssv_state::janjans1_map) - SSV_MAP( 0xc00000 ) - AM_RANGE(0x210000, 0x210001) AM_WRITENOP // koikois2 but not janjans1 +void ssv_state::janjans1_map(address_map &map) +{ + ssv_map(map, 0xc00000); + map(0x210000, 0x210001).nopw(); // koikois2 but not janjans1 // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start - AM_RANGE(0x210006, 0x210007) AM_READNOP - AM_RANGE(0x800000, 0x800001) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x800002, 0x800003) AM_READ(srmp4_input_r) // Inputs -ADDRESS_MAP_END + map(0x210006, 0x210007).nopr(); + map(0x800000, 0x800001).writeonly().share("input_sel"); // Inputs + map(0x800002, 0x800003).r(this, FUNC(ssv_state::srmp4_input_r)); // Inputs +} /*************************************************************************** Keith & Lucy ***************************************************************************/ -ADDRESS_MAP_START(ssv_state::keithlcy_map) - SSV_MAP( 0xe00000 ) +void ssv_state::keithlcy_map(address_map &map) +{ + ssv_map(map, 0xe00000); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start - AM_RANGE(0x210010, 0x210011) AM_WRITENOP // - AM_RANGE(0x21000e, 0x21000f) AM_READNOP // - AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ? -ADDRESS_MAP_END + map(0x210010, 0x210011).nopw(); // + map(0x21000e, 0x21000f).nopr(); // + map(0x400000, 0x47ffff).writeonly(); // ? +} /*************************************************************************** Meosis Magic ***************************************************************************/ -ADDRESS_MAP_START(ssv_state::meosism_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void ssv_state::meosism_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start // AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read once, value not used // AM_RANGE(0x500004, 0x500005) AM_WRITENOP // ? 0,58,18 - AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_SHARE("nvram") // NVRAM -ADDRESS_MAP_END + map(0x580000, 0x58ffff).ram().share("nvram"); // NVRAM +} /*************************************************************************** Monster Slider @@ -602,24 +613,26 @@ WRITE16_MEMBER(ssv_state::mainram_w) COMBINE_DATA(&m_mainram[offset]); } -ADDRESS_MAP_START(ssv_state::mslider_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x010000, 0x01ffff) AM_READWRITE(mainram_r, mainram_w) // RAM Mirror +void ssv_state::mslider_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x010000, 0x01ffff).rw(this, FUNC(ssv_state::mainram_r), FUNC(ssv_state::mainram_w)); // RAM Mirror // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start - AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ? + map(0x400000, 0x47ffff).writeonly(); // ? // AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? ff at the start -ADDRESS_MAP_END +} /*************************************************************************** Gourmet Battle Quiz Ryohrioh CooKing ***************************************************************************/ -ADDRESS_MAP_START(ssv_state::ryorioh_map) - SSV_MAP( 0xc00000 ) - AM_RANGE(0x210000, 0x210001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) +void ssv_state::ryorioh_map(address_map &map) +{ + ssv_map(map, 0xc00000); + map(0x210000, 0x210001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start -ADDRESS_MAP_END +} /*************************************************************************** @@ -638,14 +651,15 @@ READ16_MEMBER(ssv_state::srmp4_input_r) return 0xffff; } -ADDRESS_MAP_START(ssv_state::srmp4_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void ssv_state::srmp4_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1,5 at the start - AM_RANGE(0xc0000a, 0xc0000b) AM_READ(srmp4_input_r) // Inputs - AM_RANGE(0xc0000e, 0xc0000f) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0xc00010, 0xc00011) AM_WRITENOP // -ADDRESS_MAP_END + map(0xc0000a, 0xc0000b).r(this, FUNC(ssv_state::srmp4_input_r)); // Inputs + map(0xc0000e, 0xc0000f).writeonly().share("input_sel"); // Inputs + map(0xc00010, 0xc00011).nopw(); // +} /*************************************************************************** @@ -685,35 +699,37 @@ READ16_MEMBER(ssv_state::srmp7_input_r) return 0xffff; } -ADDRESS_MAP_START(ssv_state::srmp7_map) - SSV_MAP( 0xc00000 ) - AM_RANGE(0x010000, 0x050faf) AM_RAM // More RAM - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void ssv_state::srmp7_map(address_map &map) +{ + ssv_map(map, 0xc00000); + map(0x010000, 0x050faf).ram(); // More RAM + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Coin Counters / Lockouts - AM_RANGE(0x300076, 0x300077) AM_READ(srmp7_irqv_r) // Sound + map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Coin Counters / Lockouts + map(0x300076, 0x300077).r(this, FUNC(ssv_state::srmp7_irqv_r)); // Sound // 0x540000, 0x540003, related to lev 5 irq? - AM_RANGE(0x580000, 0x580001) AM_WRITE(srmp7_sound_bank_w) // Sound Bank - AM_RANGE(0x600000, 0x600001) AM_READ(srmp7_input_r) // Inputs - AM_RANGE(0x680000, 0x680001) AM_WRITEONLY AM_SHARE("input_sel") // Inputs -ADDRESS_MAP_END + map(0x580000, 0x580001).w(this, FUNC(ssv_state::srmp7_sound_bank_w)); // Sound Bank + map(0x600000, 0x600001).r(this, FUNC(ssv_state::srmp7_input_r)); // Inputs + map(0x680000, 0x680001).writeonly().share("input_sel"); // Inputs +} /*************************************************************************** Survival Arts ***************************************************************************/ -ADDRESS_MAP_START(ssv_state::survarts_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) +void ssv_state::survarts_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start // AM_RANGE(0x290000, 0x290001) AM_READNOP // ? // AM_RANGE(0x2a0000, 0x2a0001) AM_READNOP // ? - AM_RANGE(0x400000, 0x43ffff) AM_RAM // dyna + map(0x400000, 0x43ffff).ram(); // dyna - AM_RANGE(0x500008, 0x500009) AM_READ_PORT("ADD_BUTTONS") // Extra Buttons -ADDRESS_MAP_END + map(0x500008, 0x500009).portr("ADD_BUTTONS"); // Extra Buttons +} /*************************************************************************** @@ -751,17 +767,18 @@ WRITE16_MEMBER(ssv_state::sxyreact_motor_w) // popmessage("%04X",data); // 8 = motor on; 0 = motor off } -ADDRESS_MAP_START(ssv_state::sxyreact_map) - SSV_MAP( 0xe00000 ) +void ssv_state::sxyreact_map(address_map &map) +{ + ssv_map(map, 0xe00000); // AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(mainram_r, mainram_w) // sxyreac2 reads / writes here, why? - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines - AM_RANGE(0x500002, 0x500003) AM_READ(sxyreact_ballswitch_r) // ? - AM_RANGE(0x500004, 0x500005) AM_READWRITE(sxyreact_dial_r, sxyreact_motor_w) // Dial Value (serial) - AM_RANGE(0x520000, 0x520001) AM_WRITE(sxyreact_dial_w) // Dial Value (advance 1 bit) - AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_SHARE("nvram") // NVRAM -ADDRESS_MAP_END + map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines + map(0x500002, 0x500003).r(this, FUNC(ssv_state::sxyreact_ballswitch_r)); // ? + map(0x500004, 0x500005).rw(this, FUNC(ssv_state::sxyreact_dial_r), FUNC(ssv_state::sxyreact_motor_w)); // Dial Value (serial) + map(0x520000, 0x520001).w(this, FUNC(ssv_state::sxyreact_dial_w)); // Dial Value (advance 1 bit) + map(0x580000, 0x58ffff).ram().share("nvram"); // NVRAM +} /*************************************************************************** @@ -770,13 +787,14 @@ ADDRESS_MAP_END /* comes as either a standalone board or a standard SSV rom board (verified) */ -ADDRESS_MAP_START(ssv_state::twineag2_map) - SSV_MAP( 0xe00000 ) - AM_RANGE(0x010000, 0x03ffff) AM_RAM // More RAM - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog (also value is cmp.b with mem 8) - AM_RANGE(0x480000, 0x480001) AM_READWRITE(dsp_dr_r, dsp_dr_w) - AM_RANGE(0x482000, 0x482fff) AM_READWRITE(dsp_r, dsp_w) -ADDRESS_MAP_END +void ssv_state::twineag2_map(address_map &map) +{ + ssv_map(map, 0xe00000); + map(0x010000, 0x03ffff).ram(); // More RAM + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog (also value is cmp.b with mem 8) + map(0x480000, 0x480001).rw(this, FUNC(ssv_state::dsp_dr_r), FUNC(ssv_state::dsp_dr_w)); + map(0x482000, 0x482fff).rw(this, FUNC(ssv_state::dsp_r), FUNC(ssv_state::dsp_w)); +} /*************************************************************************** @@ -785,12 +803,13 @@ ADDRESS_MAP_END /* standalone board based on SSV hardware */ -ADDRESS_MAP_START(ssv_state::ultrax_map) - SSV_MAP( 0xe00000 ) - AM_RANGE(0x010000, 0x03ffff) AM_RAM // More RAM - AM_RANGE(0x210000, 0x210001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog (also value is cmp.b with memory address 8) +void ssv_state::ultrax_map(address_map &map) +{ + ssv_map(map, 0xe00000); + map(0x010000, 0x03ffff).ram(); // More RAM + map(0x210000, 0x210001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog (also value is cmp.b with memory address 8) // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 2,6 at the start -ADDRESS_MAP_END +} /*************************************************************************** Joryuu Syougi Kyoushitsu @@ -828,22 +847,24 @@ WRITE16_MEMBER(ssv_state::latch16_w) machine().scheduler().synchronize(); } -ADDRESS_MAP_START(ssv_state::jsk_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x050000, 0x05ffff) AM_READWRITE(mainram_r, mainram_w) // RAM Mirror? - AM_RANGE(0x210000, 0x210001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x400000, 0x47ffff) AM_RAM // RAM? - AM_RANGE(0x900000, 0x900007) AM_READWRITE(latch16_r, latch16_w) -ADDRESS_MAP_END +void ssv_state::jsk_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x050000, 0x05ffff).rw(this, FUNC(ssv_state::mainram_r), FUNC(ssv_state::mainram_w)); // RAM Mirror? + map(0x210000, 0x210001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x400000, 0x47ffff).ram(); // RAM? + map(0x900000, 0x900007).rw(this, FUNC(ssv_state::latch16_r), FUNC(ssv_state::latch16_w)); +} -ADDRESS_MAP_START(ssv_state::jsk_v810_mem) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM - AM_RANGE(0x80000000, 0x8001ffff) AM_RAM - AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM - AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(latch32_r, latch32_w) - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("sub", 0) -ADDRESS_MAP_END +void ssv_state::jsk_v810_mem(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram(); + map(0x80000000, 0x8001ffff).ram(); + map(0xc0000000, 0xc001ffff).ram(); + map(0x40000000, 0x4000000f).rw(this, FUNC(ssv_state::latch32_r), FUNC(ssv_state::latch32_w)); + map(0xfff80000, 0xffffffff).rom().region("sub", 0); +} /*************************************************************************** @@ -881,18 +902,19 @@ WRITE16_MEMBER(ssv_state::eaglshot_gfxram_w) } -ADDRESS_MAP_START(ssv_state::eaglshot_map) - SSV_MAP( 0xf00000 ) - AM_RANGE(0x180000, 0x1bffff) AM_READWRITE(eaglshot_gfxram_r, eaglshot_gfxram_w) - AM_RANGE(0x210000, 0x210001) AM_READNOP /*AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)*/ // Watchdog +void ssv_state::eaglshot_map(address_map &map) +{ + ssv_map(map, 0xf00000); + map(0x180000, 0x1bffff).rw(this, FUNC(ssv_state::eaglshot_gfxram_r), FUNC(ssv_state::eaglshot_gfxram_w)); + map(0x210000, 0x210001).nopr(); /*AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)*/ // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE(lockout_inv_w) // Inverted lockout lines - AM_RANGE(0x800000, 0x800001) AM_WRITE8(eaglshot_gfxrom_bank_w, 0x00ff) - AM_RANGE(0x900000, 0x900001) AM_WRITE8(eaglshot_trackball_w, 0x00ff) - AM_RANGE(0xa00000, 0xbfffff) AM_ROMBANK("gfxrom") - AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("nvram") // NVRAM - AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD8("upd4701", upd4701_device, d_r, 0x00ff) -ADDRESS_MAP_END + map(0x21000e, 0x21000f).w(this, FUNC(ssv_state::lockout_inv_w)); // Inverted lockout lines + map(0x800000, 0x800000).w(this, FUNC(ssv_state::eaglshot_gfxrom_bank_w)); + map(0x900000, 0x900000).w(this, FUNC(ssv_state::eaglshot_trackball_w)); + map(0xa00000, 0xbfffff).bankr("gfxrom"); + map(0xc00000, 0xc007ff).ram().share("nvram"); // NVRAM + map(0xd00000, 0xd00000).r(m_upd4701, FUNC(upd4701_device::d_r)); +} diff --git a/src/mame/drivers/ssystem3.cpp b/src/mame/drivers/ssystem3.cpp index 7371e9dbc21..934d30a618b 100644 --- a/src/mame/drivers/ssystem3.cpp +++ b/src/mame/drivers/ssystem3.cpp @@ -219,8 +219,9 @@ DRIVER_INIT_MEMBER(ssystem3_state,ssystem3) ssystem3_lcd_reset(); } -ADDRESS_MAP_START(ssystem3_state::ssystem3_map) - AM_RANGE( 0x0000, 0x03ff) AM_RAM +void ssystem3_state::ssystem3_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); /* 67-de playfield ($40 means white, $80 black) */ @@ -229,10 +230,10 @@ ADDRESS_MAP_START(ssystem3_state::ssystem3_map) probably zusatzger??t memory (battery powered ram 256x4? at 0x4000) $40ff low nibble ram if playfield module (else init with normal playfield) */ - AM_RANGE( 0x6000, 0x600f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) - AM_RANGE( 0xc000, 0xdfff) AM_ROM - AM_RANGE( 0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x6000, 0x600f).rw(m_via6522_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xc000, 0xdfff).rom(); + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( ssystem3 ) /* diff --git a/src/mame/drivers/st17xx.cpp b/src/mame/drivers/st17xx.cpp index 1ad605a823c..043a49cc512 100644 --- a/src/mame/drivers/st17xx.cpp +++ b/src/mame/drivers/st17xx.cpp @@ -59,9 +59,10 @@ public: /* Memory Maps */ -ADDRESS_MAP_START(st17xx_state::cpu_map) - AM_RANGE(0x00000000, 0x000fffff) AM_ROM -ADDRESS_MAP_END +void st17xx_state::cpu_map(address_map &map) +{ + map(0x00000000, 0x000fffff).rom(); +} /* Input Ports */ diff --git a/src/mame/drivers/st_mp100.cpp b/src/mame/drivers/st_mp100.cpp index bae2b6a0eb0..bdef37e1c69 100644 --- a/src/mame/drivers/st_mp100.cpp +++ b/src/mame/drivers/st_mp100.cpp @@ -90,16 +90,17 @@ private: }; -ADDRESS_MAP_START(st_mp100_state::st_mp100_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) - AM_RANGE(0x00a0, 0x00a7) AM_WRITENOP // to sound board - AM_RANGE(0x00c0, 0x00c7) // to sound board - AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("roms", 0 ) -ADDRESS_MAP_END +void st_mp100_state::st_mp100_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x00a0, 0x00a7).nopw(); // to sound board + map(0x00c0, 0x00c7); // to sound board + map(0x0200, 0x02ff).ram().share("nvram"); + map(0x1000, 0x1fff).rom().region("roms", 0); +} static INPUT_PORTS_START( mp100 ) PORT_START("TEST") diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp index da0a7c3f231..281920d61af 100644 --- a/src/mame/drivers/st_mp200.cpp +++ b/src/mame/drivers/st_mp200.cpp @@ -104,16 +104,17 @@ private: }; -ADDRESS_MAP_START(st_mp200_state::st_mp200_map) +void st_mp200_state::st_mp200_map(address_map &map) +{ //ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0088, 0x008b) AM_DEVREADWRITE("pia_u10", pia6821_device, read, write) - AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("pia_u11", pia6821_device, read, write) - AM_RANGE(0x00a0, 0x00a7) AM_WRITENOP // to sound board - AM_RANGE(0x00c0, 0x00c7) // to sound board - AM_RANGE(0x0200, 0x02ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1000, 0xffff) AM_ROM //AM_REGION("roms", 0 ) -ADDRESS_MAP_END + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x00a0, 0x00a7).nopw(); // to sound board + map(0x00c0, 0x00c7); // to sound board + map(0x0200, 0x02ff).ram().share("nvram"); + map(0x1000, 0xffff).rom(); //AM_REGION("roms", 0 ) +} static INPUT_PORTS_START( mp200 ) PORT_START("TEST") diff --git a/src/mame/drivers/stactics.cpp b/src/mame/drivers/stactics.cpp index b377d514878..b8e94d5e5b7 100644 --- a/src/mame/drivers/stactics.cpp +++ b/src/mame/drivers/stactics.cpp @@ -178,32 +178,33 @@ INTERRUPT_GEN_MEMBER(stactics_state::interrupt) * *************************************/ -ADDRESS_MAP_START(stactics_state::main_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x40ff) AM_MIRROR(0x0700) AM_RAM - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x0fff) AM_READ_PORT("IN0") - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_READ_PORT("IN1") - AM_RANGE(0x6000, 0x6007) AM_MIRROR(0x0f08) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0x6010, 0x6017) AM_MIRROR(0x0f08) AM_DEVWRITE("audiolatch", ls259_device, write_d0) - AM_RANGE(0x6020, 0x6027) AM_MIRROR(0x0f08) AM_DEVWRITE("lamplatch", ls259_device, write_d0) - AM_RANGE(0x6030, 0x6030) AM_MIRROR(0x0f0f) AM_WRITE(speed_latch_w) - AM_RANGE(0x6040, 0x6040) AM_MIRROR(0x0f0f) AM_WRITE(shot_trigger_w) - AM_RANGE(0x6050, 0x6050) AM_MIRROR(0x0f0f) AM_WRITE(shot_flag_clear_w) - AM_RANGE(0x6060, 0x606f) AM_MIRROR(0x0f00) AM_WRITEONLY AM_SHARE("display_buffer") - AM_RANGE(0x6070, 0x609f) AM_MIRROR(0x0f00) AM_WRITENOP +void stactics_state::main_map(address_map &map) +{ + map(0x0000, 0x2fff).rom(); + map(0x4000, 0x40ff).mirror(0x0700).ram(); + map(0x5000, 0x5000).mirror(0x0fff).portr("IN0"); + map(0x6000, 0x6000).mirror(0x0fff).portr("IN1"); + map(0x6000, 0x6007).mirror(0x0f08).w(m_outlatch, FUNC(ls259_device::write_d0)); + map(0x6010, 0x6017).mirror(0x0f08).w("audiolatch", FUNC(ls259_device::write_d0)); + map(0x6020, 0x6027).mirror(0x0f08).w("lamplatch", FUNC(ls259_device::write_d0)); + map(0x6030, 0x6030).mirror(0x0f0f).w(this, FUNC(stactics_state::speed_latch_w)); + map(0x6040, 0x6040).mirror(0x0f0f).w(this, FUNC(stactics_state::shot_trigger_w)); + map(0x6050, 0x6050).mirror(0x0f0f).w(this, FUNC(stactics_state::shot_flag_clear_w)); + map(0x6060, 0x606f).mirror(0x0f00).writeonly().share("display_buffer"); + map(0x6070, 0x609f).mirror(0x0f00).nopw(); /* AM_RANGE(0x60a0, 0x60ef) AM_MIRROR(0x0f00) AM_WRITE(sound2_w) */ - AM_RANGE(0x60f0, 0x60ff) AM_MIRROR(0x0f00) AM_WRITENOP - AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_READ_PORT("IN2") - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_READ_PORT("IN3") - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_WRITE(scroll_ram_w) - AM_RANGE(0x9000, 0x9000) AM_MIRROR(0x0fff) AM_READ(vert_pos_r) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x0fff) AM_READ(horiz_pos_r) - AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("videoram_b") - AM_RANGE(0xc000, 0xcfff) AM_NOP - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram_d") - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("videoram_e") - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("videoram_f") -ADDRESS_MAP_END + map(0x60f0, 0x60ff).mirror(0x0f00).nopw(); + map(0x7000, 0x7000).mirror(0x0fff).portr("IN2"); + map(0x8000, 0x8000).mirror(0x0fff).portr("IN3"); + map(0x8000, 0x87ff).mirror(0x0800).w(this, FUNC(stactics_state::scroll_ram_w)); + map(0x9000, 0x9000).mirror(0x0fff).r(this, FUNC(stactics_state::vert_pos_r)); + map(0xa000, 0xa000).mirror(0x0fff).r(this, FUNC(stactics_state::horiz_pos_r)); + map(0xb000, 0xbfff).ram().share("videoram_b"); + map(0xc000, 0xcfff).noprw(); + map(0xd000, 0xdfff).ram().share("videoram_d"); + map(0xe000, 0xefff).ram().share("videoram_e"); + map(0xf000, 0xffff).ram().share("videoram_f"); +} diff --git a/src/mame/drivers/stadhero.cpp b/src/mame/drivers/stadhero.cpp index 9be53c637e2..2a21ae5e1d4 100644 --- a/src/mame/drivers/stadhero.cpp +++ b/src/mame/drivers/stadhero.cpp @@ -53,31 +53,33 @@ WRITE16_MEMBER(stadhero_state::stadhero_control_w) /******************************************************************************/ -ADDRESS_MAP_START(stadhero_state::main_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(stadhero_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_0_w) /* text layer */ - AM_RANGE(0x240010, 0x240017) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control_1_w) - AM_RANGE(0x260000, 0x261fff) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_data_r, pf_data_w) - AM_RANGE(0x30c000, 0x30c001) AM_READ_PORT("INPUTS") - AM_RANGE(0x30c002, 0x30c003) AM_READ_PORT("COIN") - AM_RANGE(0x30c004, 0x30c005) AM_READ_PORT("DSW") - AM_RANGE(0x30c000, 0x30c00b) AM_WRITE(stadhero_control_w) - AM_RANGE(0x310000, 0x3107ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* Main ram */ - AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x000800) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END +void stadhero_state::main_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x200000, 0x2007ff).ram().w(this, FUNC(stadhero_state::stadhero_pf1_data_w)).share("pf1_data"); + map(0x240000, 0x240007).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_0_w)); /* text layer */ + map(0x240010, 0x240017).w(m_tilegen1, FUNC(deco_bac06_device::pf_control_1_w)); + map(0x260000, 0x261fff).rw(m_tilegen1, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); + map(0x30c000, 0x30c001).portr("INPUTS"); + map(0x30c002, 0x30c003).portr("COIN"); + map(0x30c004, 0x30c005).portr("DSW"); + map(0x30c000, 0x30c00b).w(this, FUNC(stadhero_state::stadhero_control_w)); + map(0x310000, 0x3107ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xff8000, 0xffbfff).ram(); /* Main ram */ + map(0xffc000, 0xffc7ff).mirror(0x000800).ram().share("spriteram"); +} /******************************************************************************/ -ADDRESS_MAP_START(stadhero_state::audio_map) - AM_RANGE(0x0000, 0x05ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void stadhero_state::audio_map(address_map &map) +{ + map(0x0000, 0x05ff).ram(); + map(0x0800, 0x0801).w("ym1", FUNC(ym2203_device::write)); + map(0x1000, 0x1001).w("ym2", FUNC(ym3812_device::write)); + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x3800, 0x3800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).rom(); +} /******************************************************************************/ diff --git a/src/mame/drivers/starcrus.cpp b/src/mame/drivers/starcrus.cpp index eea560a28f5..b61ac8c6972 100644 --- a/src/mame/drivers/starcrus.cpp +++ b/src/mame/drivers/starcrus.cpp @@ -20,25 +20,27 @@ palazzol@home.com #include "speaker.h" -ADDRESS_MAP_START(starcrus_state::starcrus_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1000, 0x10ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(starcrus_state::starcrus_io_map) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_WRITE(s1_x_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_WRITE(s1_y_w) - AM_RANGE(0x02, 0x02) AM_READWRITE(coll_det_r, s2_x_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(s2_y_w) - AM_RANGE(0x04, 0x04) AM_WRITE(p1_x_w) - AM_RANGE(0x05, 0x05) AM_WRITE(p1_y_w) - AM_RANGE(0x06, 0x06) AM_WRITE(p2_x_w) - AM_RANGE(0x07, 0x07) AM_WRITE(p2_y_w) - AM_RANGE(0x08, 0x08) AM_WRITE(ship_parm_1_w) - AM_RANGE(0x09, 0x09) AM_WRITE(ship_parm_2_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(proj_parm_1_w) - AM_RANGE(0x0b, 0x0b) AM_WRITE(proj_parm_2_w) -ADDRESS_MAP_END +void starcrus_state::starcrus_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1000, 0x10ff).ram(); +} + +void starcrus_state::starcrus_io_map(address_map &map) +{ + map(0x00, 0x00).portr("P1").w(this, FUNC(starcrus_state::s1_x_w)); + map(0x01, 0x01).portr("P2").w(this, FUNC(starcrus_state::s1_y_w)); + map(0x02, 0x02).rw(this, FUNC(starcrus_state::coll_det_r), FUNC(starcrus_state::s2_x_w)); + map(0x03, 0x03).portr("DSW").w(this, FUNC(starcrus_state::s2_y_w)); + map(0x04, 0x04).w(this, FUNC(starcrus_state::p1_x_w)); + map(0x05, 0x05).w(this, FUNC(starcrus_state::p1_y_w)); + map(0x06, 0x06).w(this, FUNC(starcrus_state::p2_x_w)); + map(0x07, 0x07).w(this, FUNC(starcrus_state::p2_y_w)); + map(0x08, 0x08).w(this, FUNC(starcrus_state::ship_parm_1_w)); + map(0x09, 0x09).w(this, FUNC(starcrus_state::ship_parm_2_w)); + map(0x0a, 0x0a).w(this, FUNC(starcrus_state::proj_parm_1_w)); + map(0x0b, 0x0b).w(this, FUNC(starcrus_state::proj_parm_2_w)); +} static INPUT_PORTS_START( starcrus ) diff --git a/src/mame/drivers/starfire.cpp b/src/mame/drivers/starfire.cpp index b8f42454e77..4aac999675a 100644 --- a/src/mame/drivers/starfire.cpp +++ b/src/mame/drivers/starfire.cpp @@ -190,12 +190,13 @@ READ8_MEMBER(starfire_state::fireone_input_r) * *************************************/ -ADDRESS_MAP_START(starfire_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_READWRITE(starfire_scratch_r, starfire_scratch_w) - AM_RANGE(0xa000, 0xbfff) AM_READWRITE(starfire_colorram_r, starfire_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xffff) AM_READWRITE(starfire_videoram_r, starfire_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void starfire_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).rw(this, FUNC(starfire_state::starfire_scratch_r), FUNC(starfire_state::starfire_scratch_w)); + map(0xa000, 0xbfff).rw(this, FUNC(starfire_state::starfire_colorram_r), FUNC(starfire_state::starfire_colorram_w)).share("colorram"); + map(0xc000, 0xffff).rw(this, FUNC(starfire_state::starfire_videoram_r), FUNC(starfire_state::starfire_videoram_w)).share("videoram"); +} diff --git a/src/mame/drivers/stargame.cpp b/src/mame/drivers/stargame.cpp index 46a2ebd0f46..274540a2c82 100644 --- a/src/mame/drivers/stargame.cpp +++ b/src/mame/drivers/stargame.cpp @@ -43,39 +43,43 @@ private: required_device<z80ctc_device> m_ctc; }; -ADDRESS_MAP_START(stargame_state::maincpu_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x7800) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(stargame_state::maincpu_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x09) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // CSON - command to the sound cpu - NMI to sound cpu - AM_RANGE(0x10, 0x1f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x20, 0x2f) // CSW2 - input lines: P0 to D4; P1 to D5; DAPRI to D6; TEST to D7 - AM_RANGE(0x30, 0x3f) // CSW1 - input lines - AM_RANGE(0x40, 0x4f) // CDIG - score display - AM_RANGE(0x50, 0x5f) // CDRIV - AM_RANGE(0x60, 0x67) AM_DEVWRITE("mainlatch", ls259_device, write_d0) // CPOR - AM_RANGE(0x68, 0x69) AM_MIRROR(0x06) // CPOR : 68=CKPRI; 69=CKDIS - AM_RANGE(0x70, 0x73) AM_MIRROR(0x0c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(stargame_state::audiocpu_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x3ffe) AM_DEVREADWRITE("mea8000", mea8000_device, read, write) - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x3800) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_WRITE(rint_w) // RINT - turn off interrupt of the audiocpu - AM_RANGE(0xe000, 0xffff) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) // COMAND - acknowledge NMI and read the sound command -ADDRESS_MAP_END - -ADDRESS_MAP_START(stargame_state::audiocpu_io) - ADDRESS_MAP_GLOBAL_MASK(0x01) - AM_RANGE(0x00, 0x00) AM_DEVREAD("ay", ay8910_device, data_r) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay", ay8910_device, data_address_w) -ADDRESS_MAP_END +void stargame_state::maincpu_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0x87ff).mirror(0x7800).ram(); +} + +void stargame_state::maincpu_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x09).w("soundlatch", FUNC(generic_latch_8_device::write)); // CSON - command to the sound cpu - NMI to sound cpu + map(0x10, 0x1f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x20, 0x2f); // CSW2 - input lines: P0 to D4; P1 to D5; DAPRI to D6; TEST to D7 + map(0x30, 0x3f); // CSW1 - input lines + map(0x40, 0x4f); // CDIG - score display + map(0x50, 0x5f); // CDRIV + map(0x60, 0x67).w("mainlatch", FUNC(ls259_device::write_d0)); // CPOR + map(0x68, 0x69).mirror(0x06); // CPOR : 68=CKPRI; 69=CKDIS + map(0x70, 0x73).mirror(0x0c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} + +void stargame_state::audiocpu_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x4001).mirror(0x3ffe).rw("mea8000", FUNC(mea8000_device::read), FUNC(mea8000_device::write)); + map(0x8000, 0x87ff).mirror(0x3800).ram(); + map(0xc000, 0xdfff).w(this, FUNC(stargame_state::rint_w)); // RINT - turn off interrupt of the audiocpu + map(0xe000, 0xffff).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); // COMAND - acknowledge NMI and read the sound command +} + +void stargame_state::audiocpu_io(address_map &map) +{ + map.global_mask(0x01); + map(0x00, 0x00).r("ay", FUNC(ay8910_device::data_r)); + map(0x01, 0x01).w("ay", FUNC(ay8910_device::data_address_w)); +} static INPUT_PORTS_START( stargame ) INPUT_PORTS_END diff --git a/src/mame/drivers/starshp1.cpp b/src/mame/drivers/starshp1.cpp index 29b2fc5cd15..31072896202 100644 --- a/src/mame/drivers/starshp1.cpp +++ b/src/mame/drivers/starshp1.cpp @@ -155,26 +155,27 @@ WRITE_LINE_MEMBER(starshp1_state::led_w) } -ADDRESS_MAP_START(starshp1_state::starshp1_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100) - AM_RANGE(0x2c00, 0x3fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("VBLANK") - AM_RANGE(0xc300, 0xc3ff) AM_WRITE(starshp1_sspic_w) /* spaceship picture */ - AM_RANGE(0xc400, 0xc400) AM_READ_PORT("COINAGE") - AM_RANGE(0xc400, 0xc4ff) AM_WRITE(starshp1_ssadd_w) /* spaceship address */ - AM_RANGE(0xc800, 0xc9ff) AM_RAM_WRITE(starshp1_playfield_w) AM_SHARE("playfield_ram") - AM_RANGE(0xcc00, 0xcc0f) AM_WRITEONLY AM_SHARE("hpos_ram") - AM_RANGE(0xd000, 0xd00f) AM_WRITEONLY AM_SHARE("vpos_ram") - AM_RANGE(0xd400, 0xd40f) AM_WRITEONLY AM_SHARE("obj_ram") - AM_RANGE(0xd800, 0xd800) AM_READ(starshp1_rng_r) - AM_RANGE(0xd800, 0xd80f) AM_WRITE(starshp1_collision_reset_w) - AM_RANGE(0xdc00, 0xdc07) AM_MIRROR(0x0008) AM_DEVWRITE("misclatch", f9334_device, write_d0) - AM_RANGE(0xdd00, 0xdd0f) AM_WRITE(starshp1_analog_in_w) - AM_RANGE(0xde00, 0xde07) AM_MIRROR(0x0008) AM_DEVWRITE("audiolatch", f9334_device, write_d0) - AM_RANGE(0xdf00, 0xdf0f) AM_WRITE(starshp1_analog_out_w) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void starshp1_state::starshp1_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().mirror(0x100); + map(0x2c00, 0x3fff).rom(); + map(0xa000, 0xa000).portr("SYSTEM"); + map(0xb000, 0xb000).portr("VBLANK"); + map(0xc300, 0xc3ff).w(this, FUNC(starshp1_state::starshp1_sspic_w)); /* spaceship picture */ + map(0xc400, 0xc400).portr("COINAGE"); + map(0xc400, 0xc4ff).w(this, FUNC(starshp1_state::starshp1_ssadd_w)); /* spaceship address */ + map(0xc800, 0xc9ff).ram().w(this, FUNC(starshp1_state::starshp1_playfield_w)).share("playfield_ram"); + map(0xcc00, 0xcc0f).writeonly().share("hpos_ram"); + map(0xd000, 0xd00f).writeonly().share("vpos_ram"); + map(0xd400, 0xd40f).writeonly().share("obj_ram"); + map(0xd800, 0xd800).r(this, FUNC(starshp1_state::starshp1_rng_r)); + map(0xd800, 0xd80f).w(this, FUNC(starshp1_state::starshp1_collision_reset_w)); + map(0xdc00, 0xdc07).mirror(0x0008).w("misclatch", FUNC(f9334_device::write_d0)); + map(0xdd00, 0xdd0f).w(this, FUNC(starshp1_state::starshp1_analog_in_w)); + map(0xde00, 0xde07).mirror(0x0008).w("audiolatch", FUNC(f9334_device::write_d0)); + map(0xdf00, 0xdf0f).w(this, FUNC(starshp1_state::starshp1_analog_out_w)); + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( starshp1 ) diff --git a/src/mame/drivers/starwars.cpp b/src/mame/drivers/starwars.cpp index f1c0330dc5f..4588de69707 100644 --- a/src/mame/drivers/starwars.cpp +++ b/src/mame/drivers/starwars.cpp @@ -130,41 +130,43 @@ WRITE8_MEMBER(starwars_state::esb_slapstic_w) * *************************************/ -ADDRESS_MAP_START(starwars_state::main_map) - AM_RANGE(0x0000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0) - AM_RANGE(0x3000, 0x3fff) AM_ROM /* vector_rom */ - AM_RANGE(0x4300, 0x431f) AM_READ_PORT("IN0") - AM_RANGE(0x4320, 0x433f) AM_READ_PORT("IN1") - AM_RANGE(0x4340, 0x435f) AM_READ_PORT("DSW0") - AM_RANGE(0x4360, 0x437f) AM_READ_PORT("DSW1") - AM_RANGE(0x4380, 0x439f) AM_READ(starwars_adc_r) /* a-d control result */ - AM_RANGE(0x4400, 0x4400) AM_DEVREAD("mainlatch", generic_latch_8_device, read) - AM_RANGE(0x4400, 0x4400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x4401, 0x4401) AM_READ(starwars_main_ready_flag_r) - AM_RANGE(0x4500, 0x45ff) AM_DEVREADWRITE("x2212", x2212_device, read, write) - AM_RANGE(0x4600, 0x461f) AM_DEVWRITE("avg", avg_starwars_device, go_w) - AM_RANGE(0x4620, 0x463f) AM_DEVWRITE("avg", avg_starwars_device, reset_w) - AM_RANGE(0x4640, 0x465f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x4660, 0x467f) AM_WRITE(irq_ack_w) - AM_RANGE(0x4680, 0x4687) AM_READNOP AM_MIRROR(0x0018) AM_DEVWRITE("outlatch", ls259_device, write_d7) - AM_RANGE(0x46a0, 0x46bf) AM_WRITE(starwars_nstore_w) - AM_RANGE(0x46c0, 0x46c2) AM_WRITE(starwars_adc_select_w) - AM_RANGE(0x46e0, 0x46e0) AM_WRITE(starwars_soundrst_w) - AM_RANGE(0x4700, 0x4707) AM_WRITE(starwars_math_w) - AM_RANGE(0x4700, 0x4700) AM_READ(starwars_div_reh_r) - AM_RANGE(0x4701, 0x4701) AM_READ(starwars_div_rel_r) - AM_RANGE(0x4703, 0x4703) AM_READ(starwars_prng_r) /* pseudo random number generator */ - AM_RANGE(0x4800, 0x4fff) AM_RAM /* CPU and Math RAM */ - AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("mathram") /* CPU and Math RAM */ - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0x8000, 0xffff) AM_ROM /* rest of main_rom */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(starwars_state::esb_main_map) - AM_IMPORT_FROM(main_map) - AM_RANGE(0x8000, 0x9fff) AM_READWRITE(esb_slapstic_r, esb_slapstic_w) - AM_RANGE(0xa000, 0xffff) AM_ROMBANK("bank2") -ADDRESS_MAP_END +void starwars_state::main_map(address_map &map) +{ + map(0x0000, 0x2fff).ram().share("vectorram").region("maincpu", 0); + map(0x3000, 0x3fff).rom(); /* vector_rom */ + map(0x4300, 0x431f).portr("IN0"); + map(0x4320, 0x433f).portr("IN1"); + map(0x4340, 0x435f).portr("DSW0"); + map(0x4360, 0x437f).portr("DSW1"); + map(0x4380, 0x439f).r(this, FUNC(starwars_state::starwars_adc_r)); /* a-d control result */ + map(0x4400, 0x4400).r(m_mainlatch, FUNC(generic_latch_8_device::read)); + map(0x4400, 0x4400).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x4401, 0x4401).r(this, FUNC(starwars_state::starwars_main_ready_flag_r)); + map(0x4500, 0x45ff).rw("x2212", FUNC(x2212_device::read), FUNC(x2212_device::write)); + map(0x4600, 0x461f).w("avg", FUNC(avg_starwars_device::go_w)); + map(0x4620, 0x463f).w("avg", FUNC(avg_starwars_device::reset_w)); + map(0x4640, 0x465f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x4660, 0x467f).w(this, FUNC(starwars_state::irq_ack_w)); + map(0x4680, 0x4687).nopr().mirror(0x0018).w("outlatch", FUNC(ls259_device::write_d7)); + map(0x46a0, 0x46bf).w(this, FUNC(starwars_state::starwars_nstore_w)); + map(0x46c0, 0x46c2).w(this, FUNC(starwars_state::starwars_adc_select_w)); + map(0x46e0, 0x46e0).w(this, FUNC(starwars_state::starwars_soundrst_w)); + map(0x4700, 0x4707).w(this, FUNC(starwars_state::starwars_math_w)); + map(0x4700, 0x4700).r(this, FUNC(starwars_state::starwars_div_reh_r)); + map(0x4701, 0x4701).r(this, FUNC(starwars_state::starwars_div_rel_r)); + map(0x4703, 0x4703).r(this, FUNC(starwars_state::starwars_prng_r)); /* pseudo random number generator */ + map(0x4800, 0x4fff).ram(); /* CPU and Math RAM */ + map(0x5000, 0x5fff).ram().share("mathram"); /* CPU and Math RAM */ + map(0x6000, 0x7fff).bankr("bank1"); /* banked ROM */ + map(0x8000, 0xffff).rom(); /* rest of main_rom */ +} + +void starwars_state::esb_main_map(address_map &map) +{ + main_map(map); + map(0x8000, 0x9fff).rw(this, FUNC(starwars_state::esb_slapstic_r), FUNC(starwars_state::esb_slapstic_w)); + map(0xa000, 0xffff).bankr("bank2"); +} /************************************* @@ -173,16 +175,17 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(starwars_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_DEVWRITE("mainlatch", generic_latch_8_device, write) - AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* SIN Read */ - AM_RANGE(0x1000, 0x107f) AM_RAM /* 6532 ram */ - AM_RANGE(0x1080, 0x109f) AM_DEVREADWRITE("riot", riot6532_device, read, write) - AM_RANGE(0x1800, 0x183f) AM_WRITE(quad_pokeyn_w) - AM_RANGE(0x2000, 0x27ff) AM_RAM /* program RAM */ - AM_RANGE(0x4000, 0x7fff) AM_ROM /* sound roms */ - AM_RANGE(0xb000, 0xffff) AM_ROM /* more sound roms */ -ADDRESS_MAP_END +void starwars_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).w(m_mainlatch, FUNC(generic_latch_8_device::write)); + map(0x0800, 0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)); /* SIN Read */ + map(0x1000, 0x107f).ram(); /* 6532 ram */ + map(0x1080, 0x109f).rw(m_riot, FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x1800, 0x183f).w(this, FUNC(starwars_state::quad_pokeyn_w)); + map(0x2000, 0x27ff).ram(); /* program RAM */ + map(0x4000, 0x7fff).rom(); /* sound roms */ + map(0xb000, 0xffff).rom(); /* more sound roms */ +} diff --git a/src/mame/drivers/statriv2.cpp b/src/mame/drivers/statriv2.cpp index 29ea50afef1..4a0e82357a3 100644 --- a/src/mame/drivers/statriv2.cpp +++ b/src/mame/drivers/statriv2.cpp @@ -286,20 +286,22 @@ WRITE8_MEMBER(statriv2_state::ppi_portc_hi_w) * *************************************/ -ADDRESS_MAP_START(statriv2_state::statriv2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x48ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(statriv2_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(statriv2_state::statriv2_io_map) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x28, 0x2b) AM_READ(question_data_r) AM_WRITEONLY AM_SHARE("question_offset") - AM_RANGE(0xb0, 0xb1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xb1, 0xb1) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("tms", tms9927_device, read, write) -ADDRESS_MAP_END +void statriv2_state::statriv2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x4800, 0x48ff).ram().share("nvram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(statriv2_state::statriv2_videoram_w)).share("videoram"); +} + +void statriv2_state::statriv2_io_map(address_map &map) +{ + map(0x20, 0x23).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x28, 0x2b).r(this, FUNC(statriv2_state::question_data_r)).writeonly().share("question_offset"); + map(0xb0, 0xb1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xb1, 0xb1).r("aysnd", FUNC(ay8910_device::data_r)); + map(0xc0, 0xcf).rw(m_tms, FUNC(tms9927_device::read), FUNC(tms9927_device::write)); +} /************************************* diff --git a/src/mame/drivers/stellafr.cpp b/src/mame/drivers/stellafr.cpp index eda4cf49085..a5f05579b16 100644 --- a/src/mame/drivers/stellafr.cpp +++ b/src/mame/drivers/stellafr.cpp @@ -73,15 +73,16 @@ WRITE8_MEMBER(stellafr_state::ay8910_portb_w) -ADDRESS_MAP_START(stellafr_state::stellafr_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x8000c0, 0x8000c1) AM_WRITE8(write_8000c1, 0x00ff) - AM_RANGE(0x800100, 0x800101) AM_READWRITE8(read_800101, write_800101, 0x00ff) - AM_RANGE(0x800140, 0x800141) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, address_w, 0x00ff) - AM_RANGE(0x800142, 0x800143) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff) - AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void stellafr_state::stellafr_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x8000c1, 0x8000c1).w(this, FUNC(stellafr_state::write_8000c1)); + map(0x800101, 0x800101).rw(this, FUNC(stellafr_state::read_800101), FUNC(stellafr_state::write_800101)); + map(0x800141, 0x800141).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x800143, 0x800143).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x800180, 0x80019f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0xff0000, 0xffffff).ram(); +} static INPUT_PORTS_START( stellafr ) diff --git a/src/mame/drivers/stfight.cpp b/src/mame/drivers/stfight.cpp index 9a345552474..a1fea31addc 100644 --- a/src/mame/drivers/stfight.cpp +++ b/src/mame/drivers/stfight.cpp @@ -267,60 +267,65 @@ TODO: #include "speaker.h" -ADDRESS_MAP_START(stfight_state::cpu1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") /* sf02.bin */ - AM_RANGE(0xc000, 0xc0ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xc100, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xc200, 0xc200) AM_READ_PORT("P1") - AM_RANGE(0xc201, 0xc201) AM_READ_PORT("P2") - AM_RANGE(0xc202, 0xc202) AM_READ_PORT("START") - AM_RANGE(0xc203, 0xc203) AM_READ_PORT("DSW0") - AM_RANGE(0xc204, 0xc204) AM_READ_PORT("DSW1") - AM_RANGE(0xc205, 0xc205) AM_READ(stfight_coin_r) - AM_RANGE(0xc500, 0xc500) AM_WRITE(stfight_fm_w) - AM_RANGE(0xc600, 0xc600) AM_WRITE(stfight_mcu_w) - AM_RANGE(0xc700, 0xc700) AM_WRITE(stfight_coin_w) - AM_RANGE(0xc804, 0xc804) AM_WRITE(stfight_io_w) - AM_RANGE(0xc806, 0xc806) AM_WRITENOP /* TBD */ - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(stfight_state::stfight_cpu1_map) - AM_IMPORT_FROM(cpu1_map) - AM_RANGE(0xc807, 0xc807) AM_DEVWRITE("stfight_vid", stfight_video_device, stfight_sprite_bank_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("stfight_vid", stfight_video_device, stfight_text_char_w) AM_SHARE("txram") - AM_RANGE(0xd800, 0xd808) AM_RAM_DEVWRITE("stfight_vid", stfight_video_device, stfight_vh_latch_w) AM_SHARE("vregs") - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sprite_ram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(stfight_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(stfight_state::cshooter_cpu1_map) - AM_IMPORT_FROM(cpu1_map) - AM_RANGE(0xc801, 0xc801) AM_WRITE(stfight_bank_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, txram_w) AM_SHARE("txram") - AM_RANGE(0xd800, 0xd80f) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, vregs_w) AM_SHARE("vregs") // wrong? - AM_RANGE(0xe000, 0xfdff) AM_RAM - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram") -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(stfight_state::cpu2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_READNOP - AM_RANGE(0xd800, 0xd800) AM_WRITENOP - AM_RANGE(0xe800, 0xe800) AM_WRITENOP - AM_RANGE(0xf000, 0xf000) AM_READ(stfight_fm_r) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void stfight_state::cpu1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("mainbank"); /* sf02.bin */ + map(0xc000, 0xc0ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xc100, 0xc1ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xc200, 0xc200).portr("P1"); + map(0xc201, 0xc201).portr("P2"); + map(0xc202, 0xc202).portr("START"); + map(0xc203, 0xc203).portr("DSW0"); + map(0xc204, 0xc204).portr("DSW1"); + map(0xc205, 0xc205).r(this, FUNC(stfight_state::stfight_coin_r)); + map(0xc500, 0xc500).w(this, FUNC(stfight_state::stfight_fm_w)); + map(0xc600, 0xc600).w(this, FUNC(stfight_state::stfight_mcu_w)); + map(0xc700, 0xc700).w(this, FUNC(stfight_state::stfight_coin_w)); + map(0xc804, 0xc804).w(this, FUNC(stfight_state::stfight_io_w)); + map(0xc806, 0xc806).nopw(); /* TBD */ + map(0xe000, 0xefff).ram(); +} + +void stfight_state::stfight_cpu1_map(address_map &map) +{ + cpu1_map(map); + map(0xc807, 0xc807).w("stfight_vid", FUNC(stfight_video_device::stfight_sprite_bank_w)); + map(0xd000, 0xd7ff).ram().w("stfight_vid", FUNC(stfight_video_device::stfight_text_char_w)).share("txram"); + map(0xd800, 0xd808).ram().w("stfight_vid", FUNC(stfight_video_device::stfight_vh_latch_w)).share("vregs"); + map(0xf000, 0xffff).ram().share("sprite_ram"); +} + + +void stfight_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + + +void stfight_state::cshooter_cpu1_map(address_map &map) +{ + cpu1_map(map); + map(0xc801, 0xc801).w(this, FUNC(stfight_state::stfight_bank_w)); + map(0xd000, 0xd7ff).ram().w("airraid_vid", FUNC(airraid_video_device::txram_w)).share("txram"); + map(0xd800, 0xd80f).ram().w("airraid_vid", FUNC(airraid_video_device::vregs_w)).share("vregs"); // wrong? + map(0xe000, 0xfdff).ram(); + map(0xfe00, 0xffff).ram().share("sprite_ram"); +} + + + +void stfight_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc800, 0xc801).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xd000, 0xd000).nopr(); + map(0xd800, 0xd800).nopw(); + map(0xe800, 0xe800).nopw(); + map(0xf000, 0xf000).r(this, FUNC(stfight_state::stfight_fm_r)); + map(0xf800, 0xffff).ram(); +} static INPUT_PORTS_START( stfight ) diff --git a/src/mame/drivers/stlforce.cpp b/src/mame/drivers/stlforce.cpp index 81d5c26d02a..16ab4391e3d 100644 --- a/src/mame/drivers/stlforce.cpp +++ b/src/mame/drivers/stlforce.cpp @@ -92,33 +92,35 @@ WRITE8_MEMBER(stlforce_state::oki_bank_w) } } -ADDRESS_MAP_START(stlforce_state::stlforce_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(mlow_videoram_w) AM_SHARE("mlow_videoram") - AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(mhigh_videoram_w) AM_SHARE("mhigh_videoram") - AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x102800, 0x102fff) AM_RAM /* unknown / ram */ - AM_RANGE(0x103000, 0x1033ff) AM_RAM AM_SHARE("bg_scrollram") - AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_SHARE("mlow_scrollram") - AM_RANGE(0x103800, 0x103bff) AM_RAM AM_SHARE("mhigh_scrollram") - AM_RANGE(0x103c00, 0x103fff) AM_RAM AM_SHARE("vidattrram") - AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x105000, 0x107fff) AM_RAM /* unknown / ram */ - AM_RANGE(0x108000, 0x108fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x109000, 0x11ffff) AM_RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUT") - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x400010, 0x400011) AM_WRITE8(eeprom_w, 0x00ff) - AM_RANGE(0x400012, 0x400013) AM_WRITE8(oki_bank_w, 0xff00) - AM_RANGE(0x40001e, 0x40001f) AM_WRITENOP // sprites buffer commands - AM_RANGE(0x410000, 0x410001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(stlforce_state::twinbrat_oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void stlforce_state::stlforce_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x1007ff).ram().w(this, FUNC(stlforce_state::bg_videoram_w)).share("bg_videoram"); + map(0x100800, 0x100fff).ram().w(this, FUNC(stlforce_state::mlow_videoram_w)).share("mlow_videoram"); + map(0x101000, 0x1017ff).ram().w(this, FUNC(stlforce_state::mhigh_videoram_w)).share("mhigh_videoram"); + map(0x101800, 0x1027ff).ram().w(this, FUNC(stlforce_state::tx_videoram_w)).share("tx_videoram"); + map(0x102800, 0x102fff).ram(); /* unknown / ram */ + map(0x103000, 0x1033ff).ram().share("bg_scrollram"); + map(0x103400, 0x1037ff).ram().share("mlow_scrollram"); + map(0x103800, 0x103bff).ram().share("mhigh_scrollram"); + map(0x103c00, 0x103fff).ram().share("vidattrram"); + map(0x104000, 0x104fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x105000, 0x107fff).ram(); /* unknown / ram */ + map(0x108000, 0x108fff).ram().share("spriteram"); + map(0x109000, 0x11ffff).ram(); + map(0x400000, 0x400001).portr("INPUT"); + map(0x400002, 0x400003).portr("SYSTEM"); + map(0x400011, 0x400011).w(this, FUNC(stlforce_state::eeprom_w)); + map(0x400012, 0x400012).w(this, FUNC(stlforce_state::oki_bank_w)); + map(0x40001e, 0x40001f).nopw(); // sprites buffer commands + map(0x410001, 0x410001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} + +void stlforce_state::twinbrat_oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( stlforce ) PORT_START("INPUT") diff --git a/src/mame/drivers/stratos.cpp b/src/mame/drivers/stratos.cpp index 35dc8d9896a..ca23a2f360c 100644 --- a/src/mame/drivers/stratos.cpp +++ b/src/mame/drivers/stratos.cpp @@ -330,17 +330,18 @@ WRITE8_MEMBER(stratos_state::lcd_w) } } -ADDRESS_MAP_START(stratos_state::stratos_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2000) AM_WRITE(p2000_w) - AM_RANGE(0x2200, 0x2200) AM_READWRITE(p2200_r, p2200_w) - AM_RANGE(0x2400, 0x2400) AM_WRITE(p2400_w) - AM_RANGE(0x2600, 0x2600) AM_READWRITE(control_r, control_w) - AM_RANGE(0x2800, 0x37ff) AM_RAMBANK("nvram_bank") - AM_RANGE(0x3800, 0x3800) AM_READWRITE(lcd_r, lcd_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank_4000") - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank_8000") -ADDRESS_MAP_END +void stratos_state::stratos_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2000).w(this, FUNC(stratos_state::p2000_w)); + map(0x2200, 0x2200).rw(this, FUNC(stratos_state::p2200_r), FUNC(stratos_state::p2200_w)); + map(0x2400, 0x2400).w(this, FUNC(stratos_state::p2400_w)); + map(0x2600, 0x2600).rw(this, FUNC(stratos_state::control_r), FUNC(stratos_state::control_w)); + map(0x2800, 0x37ff).bankrw("nvram_bank"); + map(0x3800, 0x3800).rw(this, FUNC(stratos_state::lcd_r), FUNC(stratos_state::lcd_w)); + map(0x4000, 0x7fff).bankr("bank_4000"); + map(0x8000, 0xffff).bankr("bank_8000"); +} static INPUT_PORTS_START( stratos ) INPUT_PORTS_END diff --git a/src/mame/drivers/strkzn.cpp b/src/mame/drivers/strkzn.cpp index e9ae2c19fe1..59de3603653 100644 --- a/src/mame/drivers/strkzn.cpp +++ b/src/mame/drivers/strkzn.cpp @@ -32,23 +32,27 @@ private: required_device<cpu_device> m_lightcpu; }; -ADDRESS_MAP_START(strkzn_state::main_mem) - AM_RANGE(0x0000, 0xdfff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(strkzn_state::main_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(strkzn_state::light_mem) - AM_RANGE(0x00000, 0x00fff) AM_RAM - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("lightcpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(strkzn_state::light_io) - AM_RANGE(0x0007, 0x0007) AM_READNOP -ADDRESS_MAP_END +void strkzn_state::main_mem(address_map &map) +{ + map(0x0000, 0xdfff).rom().region("maincpu", 0); + map(0xe000, 0xffff).ram(); +} + +void strkzn_state::main_io(address_map &map) +{ + map.global_mask(0xff); +} + +void strkzn_state::light_mem(address_map &map) +{ + map(0x00000, 0x00fff).ram(); + map(0xf0000, 0xfffff).rom().region("lightcpu", 0); +} + +void strkzn_state::light_io(address_map &map) +{ + map(0x0007, 0x0007).nopr(); +} MACHINE_CONFIG_START(strkzn_state::strkzn) MCFG_CPU_ADD("maincpu", Z80, 4000000) diff --git a/src/mame/drivers/strnskil.cpp b/src/mame/drivers/strnskil.cpp index ae38b0c6726..85e2a11252c 100644 --- a/src/mame/drivers/strnskil.cpp +++ b/src/mame/drivers/strnskil.cpp @@ -98,33 +98,35 @@ WRITE8_MEMBER(strnskil_state::protection_w) /****************************************************************************/ -ADDRESS_MAP_START(strnskil_state::strnskil_map1) - AM_RANGE(0x0000, 0x9fff) AM_ROM - - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(strnskil_videoram_w) AM_SHARE("videoram") - - AM_RANGE(0xd800, 0xd800) AM_READ(strnskil_d800_r) - AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1") - AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2") - AM_RANGE(0xd803, 0xd803) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd804, 0xd804) AM_READ_PORT("P1") - AM_RANGE(0xd805, 0xd805) AM_READ_PORT("P2") - - AM_RANGE(0xd808, 0xd808) AM_WRITE(strnskil_scrl_ctrl_w) - AM_RANGE(0xd809, 0xd809) AM_WRITENOP /* coin counter? */ - AM_RANGE(0xd80a, 0xd80b) AM_WRITEONLY AM_SHARE("xscroll") -ADDRESS_MAP_END - -ADDRESS_MAP_START(strnskil_state::strnskil_map2) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - - AM_RANGE(0xd801, 0xd801) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0xd802, 0xd802) AM_DEVWRITE("sn2", sn76496_device, write) -ADDRESS_MAP_END +void strnskil_state::strnskil_map1(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(strnskil_state::strnskil_videoram_w)).share("videoram"); + + map(0xd800, 0xd800).r(this, FUNC(strnskil_state::strnskil_d800_r)); + map(0xd801, 0xd801).portr("DSW1"); + map(0xd802, 0xd802).portr("DSW2"); + map(0xd803, 0xd803).portr("SYSTEM"); + map(0xd804, 0xd804).portr("P1"); + map(0xd805, 0xd805).portr("P2"); + + map(0xd808, 0xd808).w(this, FUNC(strnskil_state::strnskil_scrl_ctrl_w)); + map(0xd809, 0xd809).nopw(); /* coin counter? */ + map(0xd80a, 0xd80b).writeonly().share("xscroll"); +} + +void strnskil_state::strnskil_map2(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0xc000, 0xc7ff).ram().share("spriteram"); + map(0xc800, 0xcfff).ram().share("share1"); + + map(0xd801, 0xd801).w("sn1", FUNC(sn76496_device::write)); + map(0xd802, 0xd802).w("sn2", FUNC(sn76496_device::write)); +} /****************************************************************************/ diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp index 5dceae1ad50..44c3e52292b 100644 --- a/src/mame/drivers/studio2.cpp +++ b/src/mame/drivers/studio2.cpp @@ -334,43 +334,49 @@ WRITE8_MEMBER( studio2_state::dispon_w ) /* Memory Maps */ -ADDRESS_MAP_START(studio2_state::studio2_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x09ff) AM_MIRROR(0xf400) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(studio2_state::studio2_io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x01, 0x01) AM_READ(dispon_r) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(visicom_state::visicom_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x0fff) AM_DEVREAD("cartslot", generic_slot_device, read_rom) - AM_RANGE(0x1000, 0x10ff) AM_RAM - AM_RANGE(0x1100, 0x11ff) AM_RAM AM_SHARE("color0_ram") - AM_RANGE(0x1300, 0x13ff) AM_RAM AM_SHARE("color1_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(visicom_state::visicom_io_map) - AM_RANGE(0x01, 0x01) AM_WRITE(dispon_w) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpt02_state::mpt02_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x09ff) AM_RAM - AM_RANGE(0x0b00, 0x0b3f) AM_RAM AM_SHARE("color_ram") - AM_RANGE(0x0c00, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(mpt02_state::mpt02_io_map) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispoff_r, tone_latch_w) -ADDRESS_MAP_END +void studio2_state::studio2_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x09ff).mirror(0xf400).ram(); +} + +void studio2_state::studio2_io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x01, 0x01).r(this, FUNC(studio2_state::dispon_r)); + map(0x02, 0x02).w(this, FUNC(studio2_state::keylatch_w)); +} + +void visicom_state::visicom_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x0fff).r(m_cart, FUNC(generic_slot_device::read_rom)); + map(0x1000, 0x10ff).ram(); + map(0x1100, 0x11ff).ram().share("color0_ram"); + map(0x1300, 0x13ff).ram().share("color1_ram"); +} + +void visicom_state::visicom_io_map(address_map &map) +{ + map(0x01, 0x01).w(this, FUNC(visicom_state::dispon_w)); + map(0x02, 0x02).w(this, FUNC(visicom_state::keylatch_w)); +} + +void mpt02_state::mpt02_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x09ff).ram(); + map(0x0b00, 0x0b3f).ram().share("color_ram"); + map(0x0c00, 0x0fff).rom(); +} + +void mpt02_state::mpt02_io_map(address_map &map) +{ + map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w)); + map(0x02, 0x02).w(this, FUNC(mpt02_state::keylatch_w)); + map(0x04, 0x04).rw(m_cti, FUNC(cdp1864_device::dispoff_r), FUNC(cdp1864_device::tone_latch_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp index df3a34bf4f9..01655667c8c 100644 --- a/src/mame/drivers/stuntair.cpp +++ b/src/mame/drivers/stuntair.cpp @@ -320,34 +320,37 @@ WRITE8_MEMBER(stuntair_state::stuntair_sound_w) } // main Z80 -ADDRESS_MAP_START(stuntair_state::stuntair_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(stuntair_bgattrram_w) AM_SHARE("bgattrram") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(stuntair_bgram_w) AM_SHARE("bgram") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("sprram") - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSWB") AM_WRITE(stuntair_coin_w) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA") AM_WRITE(stuntair_bgxscroll_w) - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN2") - AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN3") - AM_RANGE(0xf003, 0xf003) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xf000, 0xf007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(stuntair_fgram_w) AM_SHARE("fgram") - AM_RANGE(0xfc03, 0xfc03) AM_WRITE(stuntair_sound_w) -ADDRESS_MAP_END +void stuntair_state::stuntair_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc7ff).ram().share("nvram"); + map(0xc800, 0xcbff).ram().w(this, FUNC(stuntair_state::stuntair_bgattrram_w)).share("bgattrram"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(stuntair_state::stuntair_bgram_w)).share("bgram"); + map(0xd800, 0xdfff).ram().share("sprram"); + map(0xe000, 0xe000).portr("DSWB").w(this, FUNC(stuntair_state::stuntair_coin_w)); + map(0xe800, 0xe800).portr("DSWA").w(this, FUNC(stuntair_state::stuntair_bgxscroll_w)); + map(0xf000, 0xf000).portr("IN2"); + map(0xf002, 0xf002).portr("IN3"); + map(0xf003, 0xf003).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xf000, 0xf007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xf800, 0xfbff).ram().w(this, FUNC(stuntair_state::stuntair_fgram_w)).share("fgram"); + map(0xfc03, 0xfc03).w(this, FUNC(stuntair_state::stuntair_sound_w)); +} // sound Z80 -ADDRESS_MAP_START(stuntair_state::stuntair_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(stuntair_state::stuntair_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x07, 0x07) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x0c, 0x0d) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) -ADDRESS_MAP_END +void stuntair_state::stuntair_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); +} + +void stuntair_state::stuntair_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x03, 0x03).w("ay2", FUNC(ay8910_device::address_w)); + map(0x07, 0x07).w("ay2", FUNC(ay8910_device::data_w)); + map(0x0c, 0x0d).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); +} diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp index e183c0743fc..f09a57259c4 100644 --- a/src/mame/drivers/stv.cpp +++ b/src/mame/drivers/stv.cpp @@ -972,40 +972,43 @@ DRIVER_INIT_MEMBER(stv_state, hopper) m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::hop_ioga_w32),this)); } -ADDRESS_MAP_START(stv_state::stv_mem) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_MIRROR(0x20000000) AM_REGION("bios", 0) // bios - AM_RANGE(0x00100000, 0x0010007f) AM_DEVREADWRITE8("smpc", smpc_hle_device, read, write, 0xffffffff) - AM_RANGE(0x00180000, 0x0018ffff) AM_READWRITE8(saturn_backupram_r,saturn_backupram_w,0xffffffff) AM_SHARE("share1") - AM_RANGE(0x00200000, 0x002fffff) AM_RAM AM_MIRROR(0x20100000) AM_SHARE("workram_l") +void stv_state::stv_mem(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom().mirror(0x20000000).region("bios", 0); // bios + map(0x00100000, 0x0010007f).rw(m_smpc_hle, FUNC(smpc_hle_device::read), FUNC(smpc_hle_device::write)); + map(0x00180000, 0x0018ffff).rw(this, FUNC(stv_state::saturn_backupram_r), FUNC(stv_state::saturn_backupram_w)).share("share1"); + map(0x00200000, 0x002fffff).ram().mirror(0x20100000).share("workram_l"); // AM_RANGE(0x00400000, 0x0040001f) AM_READWRITE(stv_ioga_r32, stv_io_w32) AM_SHARE("ioga") AM_MIRROR(0x20) /* installed with per-game specific */ - AM_RANGE(0x01000000, 0x017fffff) AM_WRITE(minit_w) - AM_RANGE(0x01800000, 0x01ffffff) AM_WRITE(sinit_w) - AM_RANGE(0x02000000, 0x04ffffff) AM_ROM AM_MIRROR(0x20000000) AM_REGION("abus", 0) // cartridge + map(0x01000000, 0x017fffff).w(this, FUNC(stv_state::minit_w)); + map(0x01800000, 0x01ffffff).w(this, FUNC(stv_state::sinit_w)); + map(0x02000000, 0x04ffffff).rom().mirror(0x20000000).region("abus", 0); // cartridge /* Sound */ - AM_RANGE(0x05a00000, 0x05afffff) AM_READWRITE16(saturn_soundram_r, saturn_soundram_w,0xffffffff) - AM_RANGE(0x05b00000, 0x05b00fff) AM_DEVREADWRITE16("scsp", scsp_device, read, write, 0xffffffff) + map(0x05a00000, 0x05afffff).rw(this, FUNC(stv_state::saturn_soundram_r), FUNC(stv_state::saturn_soundram_w)); + map(0x05b00000, 0x05b00fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write)); /* VDP1 */ - AM_RANGE(0x05c00000, 0x05c7ffff) AM_READWRITE(saturn_vdp1_vram_r, saturn_vdp1_vram_w) - AM_RANGE(0x05c80000, 0x05cbffff) AM_READWRITE(saturn_vdp1_framebuffer0_r, saturn_vdp1_framebuffer0_w) - AM_RANGE(0x05d00000, 0x05d0001f) AM_READWRITE16(saturn_vdp1_regs_r, saturn_vdp1_regs_w,0xffffffff) - AM_RANGE(0x05e00000, 0x05e7ffff) AM_MIRROR(0x80000) AM_READWRITE(saturn_vdp2_vram_r, saturn_vdp2_vram_w) - AM_RANGE(0x05f00000, 0x05f7ffff) AM_READWRITE(saturn_vdp2_cram_r, saturn_vdp2_cram_w) - AM_RANGE(0x05f80000, 0x05fbffff) AM_READWRITE16(saturn_vdp2_regs_r, saturn_vdp2_regs_w,0xffffffff) - AM_RANGE(0x05fe0000, 0x05fe00cf) AM_DEVICE("scu", sega_scu_device, regs_map ) //AM_READWRITE(saturn_scu_r, saturn_scu_w) - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h") - AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP - AM_RANGE(0xc0000000, 0xc00007ff) AM_RAM // cache RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(stv_state::stvcd_mem) - AM_IMPORT_FROM(stv_mem) - AM_RANGE(0x05800000, 0x0589ffff) AM_DEVREADWRITE("stvcd", stvcd_device, stvcd_r, stvcd_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(stv_state::sound_mem) - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("sound_ram") - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp", scsp_device, read, write) -ADDRESS_MAP_END + map(0x05c00000, 0x05c7ffff).rw(this, FUNC(stv_state::saturn_vdp1_vram_r), FUNC(stv_state::saturn_vdp1_vram_w)); + map(0x05c80000, 0x05cbffff).rw(this, FUNC(stv_state::saturn_vdp1_framebuffer0_r), FUNC(stv_state::saturn_vdp1_framebuffer0_w)); + map(0x05d00000, 0x05d0001f).rw(this, FUNC(stv_state::saturn_vdp1_regs_r), FUNC(stv_state::saturn_vdp1_regs_w)); + map(0x05e00000, 0x05e7ffff).mirror(0x80000).rw(this, FUNC(stv_state::saturn_vdp2_vram_r), FUNC(stv_state::saturn_vdp2_vram_w)); + map(0x05f00000, 0x05f7ffff).rw(this, FUNC(stv_state::saturn_vdp2_cram_r), FUNC(stv_state::saturn_vdp2_cram_w)); + map(0x05f80000, 0x05fbffff).rw(this, FUNC(stv_state::saturn_vdp2_regs_r), FUNC(stv_state::saturn_vdp2_regs_w)); + map(0x05fe0000, 0x05fe00cf).m(m_scu, FUNC(sega_scu_device::regs_map)); //AM_READWRITE(saturn_scu_r, saturn_scu_w) + map(0x06000000, 0x060fffff).ram().mirror(0x21f00000).share("workram_h"); + map(0x60000000, 0x600003ff).nopw(); + map(0xc0000000, 0xc00007ff).ram(); // cache RAM +} + +void stv_state::stvcd_mem(address_map &map) +{ + stv_mem(map); + map(0x05800000, 0x0589ffff).rw("stvcd", FUNC(stvcd_device::stvcd_r), FUNC(stvcd_device::stvcd_w)); +} + +void stv_state::sound_mem(address_map &map) +{ + map(0x000000, 0x0fffff).ram().share("sound_ram"); + map(0x100000, 0x100fff).rw("scsp", FUNC(scsp_device::read), FUNC(scsp_device::write)); +} diff --git a/src/mame/drivers/su2000.cpp b/src/mame/drivers/su2000.cpp index 1b47f574587..1f8da514422 100644 --- a/src/mame/drivers/su2000.cpp +++ b/src/mame/drivers/su2000.cpp @@ -77,21 +77,23 @@ public: * *************************************/ -ADDRESS_MAP_START(su2000_state::pcat_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c7fff) AM_ROM - AM_RANGE(0x000f0000, 0x000fffff) AM_ROM - AM_RANGE(0x00100000, 0x003fffff) AM_RAM - AM_RANGE(0xffff0000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0x0f0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(su2000_state::pcat_io) - AM_IMPORT_FROM(pcat32_io_common) - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) -ADDRESS_MAP_END +void su2000_state::pcat_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000c0000, 0x000c7fff).rom(); + map(0x000f0000, 0x000fffff).rom(); + map(0x00100000, 0x003fffff).ram(); + map(0xffff0000, 0xffffffff).rom().region("maincpu", 0x0f0000); +} + +void su2000_state::pcat_io(address_map &map) +{ + pcat32_io_common(map); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); +} /************************************* diff --git a/src/mame/drivers/sub.cpp b/src/mame/drivers/sub.cpp index e4136cb5c0c..7f98040e5a8 100644 --- a/src/mame/drivers/sub.cpp +++ b/src/mame/drivers/sub.cpp @@ -261,23 +261,24 @@ WRITE_LINE_MEMBER(sub_state::int_mask_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(sub_state::subm_map) - AM_RANGE(0x0000, 0xafff) AM_ROM - AM_RANGE(0xb000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_SHARE("attr") - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("vid") - AM_RANGE(0xd000, 0xd03f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("scrolly") - - AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xe800, 0xe807) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW0") // DSW0? - AM_RANGE(0xf020, 0xf020) AM_READ_PORT("DSW1") // DSW1? - AM_RANGE(0xf040, 0xf040) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf060, 0xf060) AM_READ_PORT("IN0") -ADDRESS_MAP_END +void sub_state::subm_map(address_map &map) +{ + map(0x0000, 0xafff).rom(); + map(0xb000, 0xbfff).ram(); + map(0xc000, 0xc3ff).ram().share("attr"); + map(0xc400, 0xc7ff).ram().share("vid"); + map(0xd000, 0xd03f).ram().share("spriteram"); + map(0xd800, 0xd83f).ram().share("spriteram2"); + map(0xd840, 0xd85f).ram().share("scrolly"); + + map(0xe000, 0xe000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xe800, 0xe807).w("mainlatch", FUNC(ls259_device::write_d0)); + + map(0xf000, 0xf000).portr("DSW0"); // DSW0? + map(0xf020, 0xf020).portr("DSW1"); // DSW1? + map(0xf040, 0xf040).portr("SYSTEM"); + map(0xf060, 0xf060).portr("IN0"); +} WRITE8_MEMBER(sub_state::nmi_mask_w) { @@ -286,23 +287,26 @@ WRITE8_MEMBER(sub_state::nmi_mask_w) m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } -ADDRESS_MAP_START(sub_state::subm_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // to/from sound CPU -ADDRESS_MAP_END - -ADDRESS_MAP_START(sub_state::subm_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_WRITE(nmi_mask_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sub_state::subm_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // to/from main CPU - AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w) -ADDRESS_MAP_END +void sub_state::subm_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // to/from sound CPU +} + +void sub_state::subm_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).w(this, FUNC(sub_state::nmi_mask_w)); +} + +void sub_state::subm_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // to/from main CPU + map(0x40, 0x41).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x80, 0x81).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( sub ) diff --git a/src/mame/drivers/subhuntr.cpp b/src/mame/drivers/subhuntr.cpp index a59f426dd98..a3d08c043c9 100644 --- a/src/mame/drivers/subhuntr.cpp +++ b/src/mame/drivers/subhuntr.cpp @@ -76,18 +76,21 @@ void subhuntr_state::video_start() ***************************************************************************/ -ADDRESS_MAP_START(subhuntr_state::subhuntr_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x1c00, 0x1fff) AM_RAM -ADDRESS_MAP_END +void subhuntr_state::subhuntr_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x1c00, 0x1fff).ram(); +} -ADDRESS_MAP_START(subhuntr_state::subhuntr_io_map) -ADDRESS_MAP_END +void subhuntr_state::subhuntr_io_map(address_map &map) +{ +} -ADDRESS_MAP_START(subhuntr_state::subhuntr_data_map) +void subhuntr_state::subhuntr_data_map(address_map &map) +{ // AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE( , ) // AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE( , ) -ADDRESS_MAP_END +} /*************************************************************************** diff --git a/src/mame/drivers/subs.cpp b/src/mame/drivers/subs.cpp index 1d8374a3b20..32f8f98053c 100644 --- a/src/mame/drivers/subs.cpp +++ b/src/mame/drivers/subs.cpp @@ -51,20 +51,21 @@ PALETTE_INIT_MEMBER(subs_state, subs) * *************************************/ -ADDRESS_MAP_START(subs_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0000, 0x0000) AM_WRITE(noise_reset_w) - AM_RANGE(0x0000, 0x0007) AM_READ(control_r) - AM_RANGE(0x0020, 0x0020) AM_WRITE(steer_reset_w) - AM_RANGE(0x0020, 0x0027) AM_READ(coin_r) +void subs_state::main_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x01ff).ram(); + map(0x0000, 0x0000).w(this, FUNC(subs_state::noise_reset_w)); + map(0x0000, 0x0007).r(this, FUNC(subs_state::control_r)); + map(0x0020, 0x0020).w(this, FUNC(subs_state::steer_reset_w)); + map(0x0020, 0x0027).r(this, FUNC(subs_state::coin_r)); // AM_RANGE(0x0040, 0x0040) AM_WRITE(timer_reset_w) - AM_RANGE(0x0060, 0x0063) AM_READ(options_r) - AM_RANGE(0x0060, 0x006f) AM_DEVWRITE("latch", ls259_device, write_a0) - AM_RANGE(0x0090, 0x009f) AM_SHARE("spriteram") - AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END + map(0x0060, 0x0063).r(this, FUNC(subs_state::options_r)); + map(0x0060, 0x006f).w("latch", FUNC(ls259_device::write_a0)); + map(0x0090, 0x009f).share("spriteram"); + map(0x0800, 0x0bff).ram().share("videoram"); + map(0x2000, 0x3fff).rom(); +} diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp index 26d0f5b4299..7deb141c386 100644 --- a/src/mame/drivers/subsino.cpp +++ b/src/mame/drivers/subsino.cpp @@ -843,52 +843,54 @@ WRITE8_MEMBER(subsino_state::subsino_out_b_w) * Memory Maps * ***************************************************************************/ -ADDRESS_MAP_START(subsino_state::srider_map) - AM_RANGE( 0x00000, 0x0bfff ) AM_ROM +void subsino_state::srider_map(address_map &map) +{ + map(0x00000, 0x0bfff).rom(); - AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM + map(0x0c000, 0x0cfff).ram(); - AM_RANGE( 0x0d000, 0x0d002 ) AM_DEVREAD("ppi1", i8255_device, read) - AM_RANGE( 0x0d004, 0x0d006 ) AM_DEVREAD("ppi2", i8255_device, read) + map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read)); + map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read)); - AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE(subsino_out_b_w ) - AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE(subsino_out_a_w ) + map(0x0d009, 0x0d009).w(this, FUNC(subsino_state::subsino_out_b_w)); + map(0x0d00a, 0x0d00a).w(this, FUNC(subsino_state::subsino_out_a_w)); - AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) + map(0x0d00c, 0x0d00c).portr("INC"); - AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE("ymsnd", ym3812_device, write) + map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write)); - AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVWRITE("oki", okim6295_device, write) + map(0x0d018, 0x0d018).w("oki", FUNC(okim6295_device::write)); - AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE(subsino_tiles_offset_w ) + map(0x0d01b, 0x0d01b).w(this, FUNC(subsino_state::subsino_tiles_offset_w)); - AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") - AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") -ADDRESS_MAP_END + map(0x0e000, 0x0e7ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); + map(0x0e800, 0x0efff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); +} -ADDRESS_MAP_START(subsino_state::sharkpy_map) - AM_RANGE( 0x00000, 0x13fff ) AM_ROM //overlap unmapped regions - AM_RANGE( 0x09800, 0x09fff ) AM_RAM +void subsino_state::sharkpy_map(address_map &map) +{ + map(0x00000, 0x13fff).rom(); //overlap unmapped regions + map(0x09800, 0x09fff).ram(); - AM_RANGE( 0x09000, 0x09002 ) AM_DEVREAD("ppi1", i8255_device, read) - AM_RANGE( 0x09004, 0x09006 ) AM_DEVREAD("ppi2", i8255_device, read) + map(0x09000, 0x09002).r("ppi1", FUNC(i8255_device::read)); + map(0x09004, 0x09006).r("ppi2", FUNC(i8255_device::read)); - AM_RANGE( 0x09009, 0x09009 ) AM_WRITE(subsino_out_b_w ) - AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE(subsino_out_a_w ) + map(0x09009, 0x09009).w(this, FUNC(subsino_state::subsino_out_b_w)); + map(0x0900a, 0x0900a).w(this, FUNC(subsino_state::subsino_out_a_w)); - AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" ) + map(0x0900c, 0x0900c).portr("INC"); - AM_RANGE( 0x09016, 0x09017 ) AM_DEVWRITE("ymsnd", ym3812_device, write) + map(0x09016, 0x09017).w("ymsnd", FUNC(ym3812_device::write)); - AM_RANGE( 0x09018, 0x09018 ) AM_DEVWRITE("oki", okim6295_device, write) + map(0x09018, 0x09018).w("oki", FUNC(okim6295_device::write)); - AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE(subsino_tiles_offset_w ) + map(0x0901b, 0x0901b).w(this, FUNC(subsino_state::subsino_tiles_offset_w)); - AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") -ADDRESS_MAP_END + map(0x07800, 0x07fff).ram(); + map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); + map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); +} /* Victor 21 protection is absolutely trivial. At every number of presetted hands, there's an animation @@ -896,32 +898,33 @@ that announces to the player that the card deck changes. If the protection check this event makes the game to reset without any money in the bank. */ -ADDRESS_MAP_START(subsino_state::victor21_map) - AM_RANGE( 0x00000, 0x08fff ) AM_ROM //overlap unmapped regions +void subsino_state::victor21_map(address_map &map) +{ + map(0x00000, 0x08fff).rom(); //overlap unmapped regions - AM_RANGE( 0x09800, 0x09fff ) AM_RAM + map(0x09800, 0x09fff).ram(); - AM_RANGE( 0x09000, 0x09003 ) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INA" ) - AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INB" ) - AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "SW1" ) - AM_RANGE( 0x09007, 0x09007 ) AM_READ_PORT( "SW2" ) - AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW3" ) + map(0x09000, 0x09003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x09004, 0x09004).portr("INA"); + map(0x09005, 0x09005).portr("INB"); + map(0x09006, 0x09006).portr("SW1"); + map(0x09007, 0x09007).portr("SW2"); + map(0x09008, 0x09008).portr("SW3"); - AM_RANGE( 0x0900b, 0x0900b ) AM_RAM //protection + map(0x0900b, 0x0900b).ram(); //protection // AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE( 0x0900e, 0x0900f ) AM_DEVWRITE("ymsnd", ym2413_device, write) + map(0x0900e, 0x0900f).w("ymsnd", FUNC(ym2413_device::write)); - AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE(subsino_tiles_offset_w ) + map(0x0900d, 0x0900d).w(this, FUNC(subsino_state::subsino_tiles_offset_w)); - AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") + map(0x07800, 0x07fff).ram(); + map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); + map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); - AM_RANGE( 0x10000, 0x13fff ) AM_ROM -ADDRESS_MAP_END + map(0x10000, 0x13fff).rom(); +} /* @@ -975,11 +978,12 @@ WRITE8_MEMBER(subsino_state::flash_w) } } -ADDRESS_MAP_START(subsino_state::victor5_map) - AM_IMPORT_FROM( victor21_map ) - AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE(flash_r, flash_w ) - AM_RANGE( 0x0900b, 0x0900b ) AM_READNOP //"flash" status, bit 0 -ADDRESS_MAP_END +void subsino_state::victor5_map(address_map &map) +{ + victor21_map(map); + map(0x0900a, 0x0900a).rw(this, FUNC(subsino_state::flash_r), FUNC(subsino_state::flash_w)); + map(0x0900b, 0x0900b).nopr(); //"flash" status, bit 0 +} READ8_MEMBER(subsino_state::hwcheck_r) @@ -988,38 +992,39 @@ READ8_MEMBER(subsino_state::hwcheck_r) return 0x55; } -ADDRESS_MAP_START(subsino_state::crsbingo_map) - AM_RANGE( 0x00000, 0x8fff ) AM_ROM //overlap unmapped regions +void subsino_state::crsbingo_map(address_map &map) +{ + map(0x00000, 0x8fff).rom(); //overlap unmapped regions - AM_RANGE( 0x09800, 0x09fff ) AM_RAM + map(0x09800, 0x09fff).ram(); - AM_RANGE( 0x09000, 0x09000 ) AM_READ_PORT( "SW1" ) - AM_RANGE( 0x09001, 0x09001 ) AM_READ_PORT( "SW2" ) - AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "INA" ) - AM_RANGE( 0x09003, 0x09003 ) AM_READ_PORT( "INB" ) - AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INC" ) - AM_RANGE( 0x09005, 0x09005 ) AM_WRITE(subsino_out_a_w ) + map(0x09000, 0x09000).portr("SW1"); + map(0x09001, 0x09001).portr("SW2"); + map(0x09002, 0x09002).portr("INA"); + map(0x09003, 0x09003).portr("INB"); + map(0x09004, 0x09004).portr("INC"); + map(0x09005, 0x09005).w(this, FUNC(subsino_state::subsino_out_a_w)); - AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW4" ) - AM_RANGE( 0x09009, 0x09009 ) AM_READ_PORT( "SW3" ) // AM_WRITE(subsino_out_a_w ) - AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE(hwcheck_r, subsino_out_b_w ) + map(0x09008, 0x09008).portr("SW4"); + map(0x09009, 0x09009).portr("SW3"); // AM_WRITE(subsino_out_a_w ) + map(0x0900a, 0x0900a).rw(this, FUNC(subsino_state::hwcheck_r), FUNC(subsino_state::subsino_out_b_w)); - AM_RANGE( 0x09010, 0x09010 ) AM_READWRITE(flash_r, flash_w ) + map(0x09010, 0x09010).rw(this, FUNC(subsino_state::flash_r), FUNC(subsino_state::flash_w)); // AM_RANGE( 0x09011, 0x09011 ) //"flash" status, bit 0 // AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" ) - AM_RANGE( 0x0900c, 0x0900d ) AM_DEVWRITE("ymsnd", ym2413_device, write) + map(0x0900c, 0x0900d).w("ymsnd", FUNC(ym2413_device::write)); // AM_RANGE( 0x09018, 0x09018 ) AM_DEVWRITE("oki", okim6295_device, write) // AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE(subsino_tiles_offset_w ) - AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") + map(0x07800, 0x07fff).ram(); + map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); + map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); - AM_RANGE( 0x10000, 0x13fff ) AM_ROM //overlap unmapped regions + map(0x10000, 0x13fff).rom(); //overlap unmapped regions -ADDRESS_MAP_END +} WRITE8_MEMBER(subsino_state::subsino_out_c_w) { @@ -1036,45 +1041,47 @@ WRITE8_MEMBER(subsino_state::subsino_out_c_w) // popmessage("data %02x\n",data); } -ADDRESS_MAP_START(subsino_state::tisub_map) - AM_RANGE( 0x00000, 0x0bfff ) AM_ROM // overlap unmapped regions - AM_RANGE( 0x09800, 0x09fff ) AM_RAM +void subsino_state::tisub_map(address_map &map) +{ + map(0x00000, 0x0bfff).rom(); // overlap unmapped regions + map(0x09800, 0x09fff).ram(); - AM_RANGE( 0x09000, 0x09002 ) AM_DEVREAD("ppi1", i8255_device, read) - AM_RANGE( 0x09004, 0x09006 ) AM_DEVREAD("ppi2", i8255_device, read) + map(0x09000, 0x09002).r("ppi1", FUNC(i8255_device::read)); + map(0x09004, 0x09006).r("ppi2", FUNC(i8255_device::read)); /* 0x09008: is marked as OUTPUT C in the test mode. */ - AM_RANGE( 0x09008, 0x09008 ) AM_WRITE(subsino_out_c_w ) - AM_RANGE( 0x09009, 0x09009 ) AM_WRITE(subsino_out_b_w ) - AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE(subsino_out_a_w ) + map(0x09008, 0x09008).w(this, FUNC(subsino_state::subsino_out_c_w)); + map(0x09009, 0x09009).w(this, FUNC(subsino_state::subsino_out_b_w)); + map(0x0900a, 0x0900a).w(this, FUNC(subsino_state::subsino_out_a_w)); - AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" ) + map(0x0900c, 0x0900c).portr("INC"); - AM_RANGE( 0x09016, 0x09017 ) AM_DEVWRITE("ymsnd", ym3812_device, write) + map(0x09016, 0x09017).w("ymsnd", FUNC(ym3812_device::write)); // AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE(subsino_tiles_offset_w ) + map(0x0901b, 0x0901b).w(this, FUNC(subsino_state::subsino_tiles_offset_w)); - AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") + map(0x07800, 0x07fff).ram(); + map(0x08800, 0x08fff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); + map(0x08000, 0x087ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); - AM_RANGE( 0x10000, 0x13fff ) AM_ROM - AM_RANGE( 0x14000, 0x14fff ) AM_ROM // reads the card face data here (see rom copy in rom loading) + map(0x10000, 0x13fff).rom(); + map(0x14000, 0x14fff).rom(); // reads the card face data here (see rom copy in rom loading) - AM_RANGE( 0x150c0, 0x150ff ) AM_RAM AM_SHARE("reel3_scroll") - AM_RANGE( 0x15140, 0x1517f ) AM_RAM AM_SHARE("reel2_scroll") - AM_RANGE( 0x15180, 0x151bf ) AM_RAM AM_SHARE("reel1_scroll") + map(0x150c0, 0x150ff).ram().share("reel3_scroll"); + map(0x15140, 0x1517f).ram().share("reel2_scroll"); + map(0x15180, 0x151bf).ram().share("reel1_scroll"); - AM_RANGE( 0x15800, 0x159ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE( 0x15a00, 0x15bff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE( 0x15c00, 0x15dff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram") -ADDRESS_MAP_END + map(0x15800, 0x159ff).ram().w(this, FUNC(subsino_state::subsino_reel1_ram_w)).share("reel1_ram"); + map(0x15a00, 0x15bff).ram().w(this, FUNC(subsino_state::subsino_reel2_ram_w)).share("reel2_ram"); + map(0x15c00, 0x15dff).ram().w(this, FUNC(subsino_state::subsino_reel3_ram_w)).share("reel3_ram"); +} -ADDRESS_MAP_START(subsino_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void subsino_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} // this stuff is banked.. // not 100% sure on the bank bits.. other bits are also set @@ -1127,82 +1134,85 @@ READ8_MEMBER(subsino_state::reel_scrollattr_r) return m_reel1_attr[offset]; } -ADDRESS_MAP_START(subsino_state::stbsub_map) - AM_RANGE( 0x00000, 0x0bfff ) AM_ROM +void subsino_state::stbsub_map(address_map &map) +{ + map(0x00000, 0x0bfff).rom(); - AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM + map(0x0c000, 0x0cfff).ram(); - AM_RANGE( 0x0d000, 0x0d002 ) AM_DEVREAD("ppi1", i8255_device, read) - AM_RANGE( 0x0d004, 0x0d006 ) AM_DEVREAD("ppi2", i8255_device, read) + map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read)); + map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read)); - AM_RANGE( 0x0d008, 0x0d008 ) AM_RAM AM_SHARE("stbsub_out_c") + map(0x0d008, 0x0d008).ram().share("stbsub_out_c"); - AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE(subsino_out_b_w ) - AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE(subsino_out_a_w ) + map(0x0d009, 0x0d009).w(this, FUNC(subsino_state::subsino_out_b_w)); + map(0x0d00a, 0x0d00a).w(this, FUNC(subsino_state::subsino_out_a_w)); - AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) + map(0x0d00c, 0x0d00c).portr("INC"); - AM_RANGE( 0x0d010, 0x0d010 ) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE( 0x0d011, 0x0d011 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE( 0x0d012, 0x0d012 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x0d010, 0x0d010).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0d011, 0x0d011).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0d012, 0x0d012).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE("ymsnd", ym3812_device, write) + map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write)); // AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE(subsino_tiles_offset_w ) - AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") - AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") + map(0x0e000, 0x0e7ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); + map(0x0e800, 0x0efff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); - AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(reel_scrollattr_r, reel_scrollattr_w) + map(0xf000, 0xf7ff).rw(this, FUNC(subsino_state::reel_scrollattr_r), FUNC(subsino_state::reel_scrollattr_w)); - AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram") -ADDRESS_MAP_END + map(0xf800, 0xf9ff).ram().w(this, FUNC(subsino_state::subsino_reel1_ram_w)).share("reel1_ram"); + map(0xfa00, 0xfbff).ram().w(this, FUNC(subsino_state::subsino_reel2_ram_w)).share("reel2_ram"); + map(0xfc00, 0xfdff).ram().w(this, FUNC(subsino_state::subsino_reel3_ram_w)).share("reel3_ram"); +} /*************************************************************************** Magic Train (Clear NVRAM ROM?) ***************************************************************************/ -ADDRESS_MAP_START(subsino_state::mtrainnv_map) - AM_RANGE( 0x00000, 0x0bfff ) AM_ROM +void subsino_state::mtrainnv_map(address_map &map) +{ + map(0x00000, 0x0bfff).rom(); - AM_RANGE( 0x0c000, 0x0cfff ) AM_RAM + map(0x0c000, 0x0cfff).ram(); - AM_RANGE( 0x0d000, 0x0d002 ) AM_DEVREAD("ppi1", i8255_device, read) - AM_RANGE( 0x0d004, 0x0d006 ) AM_DEVREAD("ppi2", i8255_device, read) + map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read)); + map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read)); - AM_RANGE( 0x0d008, 0x0d008 ) AM_RAM AM_SHARE("stbsub_out_c") + map(0x0d008, 0x0d008).ram().share("stbsub_out_c"); // AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE // AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE // AM_RANGE( 0x0d00b, 0x0d00b ) AM_WRITE - AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) + map(0x0d00c, 0x0d00c).portr("INC"); - AM_RANGE( 0x0d010, 0x0d010 ) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE( 0x0d011, 0x0d011 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE( 0x0d012, 0x0d012 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x0d010, 0x0d010).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0d011, 0x0d011).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0d012, 0x0d012).w("ramdac", FUNC(ramdac_device::mask_w)); // AM_RANGE( 0x0d012, 0x0d012 ) AM_WRITE - AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE("ymsnd", ym3812_device, write) + map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write)); // AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_SHARE("colorram") - AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_SHARE("videoram") + map(0x0e000, 0x0e7ff).ram().w(this, FUNC(subsino_state::subsino_colorram_w)).share("colorram"); + map(0x0e800, 0x0efff).ram().w(this, FUNC(subsino_state::subsino_videoram_w)).share("videoram"); - AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(reel_scrollattr_r, reel_scrollattr_w) + map(0xf000, 0xf7ff).rw(this, FUNC(subsino_state::reel_scrollattr_r), FUNC(subsino_state::reel_scrollattr_w)); - AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_SHARE("reel1_ram") - AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_SHARE("reel2_ram") - AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_SHARE("reel3_ram") -ADDRESS_MAP_END + map(0xf800, 0xf9ff).ram().w(this, FUNC(subsino_state::subsino_reel1_ram_w)).share("reel1_ram"); + map(0xfa00, 0xfbff).ram().w(this, FUNC(subsino_state::subsino_reel2_ram_w)).share("reel2_ram"); + map(0xfc00, 0xfdff).ram().w(this, FUNC(subsino_state::subsino_reel3_ram_w)).share("reel3_ram"); +} -ADDRESS_MAP_START(subsino_state::subsino_iomap) - AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs -ADDRESS_MAP_END +void subsino_state::subsino_iomap(address_map &map) +{ + map(0x0000, 0x003f).ram(); // internal regs +} /*************************************************************************** diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp index 4cc39439f0e..e0822897695 100644 --- a/src/mame/drivers/subsino2.cpp +++ b/src/mame/drivers/subsino2.cpp @@ -920,58 +920,60 @@ WRITE16_MEMBER(subsino2_state::bishjan_outputs_w) } -ADDRESS_MAP_START(subsino2_state::bishjan_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) +void subsino2_state::bishjan_map(address_map &map) +{ + map.global_mask(0xffffff); - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0) + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x080000, 0x0fffff).rom().region("maincpu", 0); - AM_RANGE( 0x200000, 0x207fff ) AM_RAM AM_SHARE("nvram") // battery + map(0x200000, 0x207fff).ram().share("nvram"); // battery // read lo (L1) (only half tilemap?) - AM_RANGE( 0x412000, 0x412fff ) AM_READ8(ss9601_videoram_1_lo_r, 0xffff ) - AM_RANGE( 0x413000, 0x4131ff ) AM_READWRITE8(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w, 0xffff ) + map(0x412000, 0x412fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r)); + map(0x413000, 0x4131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w)); // read lo (REEL) - AM_RANGE( 0x416000, 0x416fff ) AM_READ8(ss9601_reelram_lo_r, 0xffff ) - AM_RANGE( 0x417000, 0x4171ff ) AM_READWRITE8(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w, 0xffff ) + map(0x416000, 0x416fff).r(this, FUNC(subsino2_state::ss9601_reelram_lo_r)); + map(0x417000, 0x4171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w)); // read hi (L1) - AM_RANGE( 0x422000, 0x422fff ) AM_READ8(ss9601_videoram_1_hi_r, 0xffff ) - AM_RANGE( 0x423000, 0x4231ff ) AM_READWRITE8(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w, 0xffff ) + map(0x422000, 0x422fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r)); + map(0x423000, 0x4231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w)); // read hi (REEL) - AM_RANGE( 0x426000, 0x426fff ) AM_READ8(ss9601_reelram_hi_r, 0xffff ) - AM_RANGE( 0x427000, 0x4271ff ) AM_READWRITE8(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w, 0xffff ) + map(0x426000, 0x426fff).r(this, FUNC(subsino2_state::ss9601_reelram_hi_r)); + map(0x427000, 0x4271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w)); // write both (L1) - AM_RANGE( 0x430000, 0x431fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff ) - AM_RANGE( 0x432000, 0x432fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff ) - AM_RANGE( 0x433000, 0x4331ff ) AM_WRITE8(ss9601_scrollram_1_hi_lo_w, 0xffff ) + map(0x430000, 0x431fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); + map(0x432000, 0x432fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); + map(0x433000, 0x4331ff).w(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_lo_w)); // write both (L0 & REEL) - AM_RANGE( 0x434000, 0x435fff ) AM_WRITE8(ss9601_videoram_0_hi_lo_w, 0xffff ) - AM_RANGE( 0x436000, 0x436fff ) AM_WRITE8(ss9601_reelram_hi_lo_w, 0xffff ) - AM_RANGE( 0x437000, 0x4371ff ) AM_WRITE8(ss9601_scrollram_0_hi_lo_w, 0xffff ) - - AM_RANGE( 0x600000, 0x600001 ) AM_READNOP AM_WRITE(bishjan_sound_w ) - AM_RANGE( 0x600040, 0x600041 ) AM_WRITE8(ss9601_scrollctrl_w, 0xff00 ) - AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00) - AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE( 0x600062, 0x600063 ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00) - AM_RANGE( 0x600080, 0x600081 ) AM_WRITE8(ss9601_tilesize_w, 0xff00 ) - AM_RANGE( 0x6000a0, 0x6000a1 ) AM_WRITE8(ss9601_byte_lo_w, 0xff00 ) - - AM_RANGE( 0xa0001e, 0xa0001f ) AM_WRITE8(ss9601_disable_w, 0x00ff ) - AM_RANGE( 0xa00020, 0xa00025 ) AM_WRITE8(ss9601_scroll_w, 0xffff ) - - AM_RANGE( 0xc00000, 0xc00001 ) AM_READ_PORT("DSW") // SW1 - AM_RANGE( 0xc00002, 0xc00003 ) AM_READ_PORT("JOY") AM_WRITE(bishjan_input_w ) // IN C - AM_RANGE( 0xc00004, 0xc00005 ) AM_READ(bishjan_input_r ) // IN A & B - AM_RANGE( 0xc00006, 0xc00007 ) AM_READ(bishjan_serial_r ) // IN D - AM_RANGE( 0xc00008, 0xc00009 ) AM_READ_PORT("RESET") AM_WRITE(bishjan_outputs_w ) AM_SHARE("outputs16") -ADDRESS_MAP_END - -ADDRESS_MAP_START(subsino2_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END + map(0x434000, 0x435fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w)); + map(0x436000, 0x436fff).w(this, FUNC(subsino2_state::ss9601_reelram_hi_lo_w)); + map(0x437000, 0x4371ff).w(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_lo_w)); + + map(0x600000, 0x600001).nopr().w(this, FUNC(subsino2_state::bishjan_sound_w)); + map(0x600040, 0x600040).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w)); + map(0x600060, 0x600060).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x600061, 0x600061).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x600062, 0x600062).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x600080, 0x600080).w(this, FUNC(subsino2_state::ss9601_tilesize_w)); + map(0x6000a0, 0x6000a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w)); + + map(0xa0001f, 0xa0001f).w(this, FUNC(subsino2_state::ss9601_disable_w)); + map(0xa00020, 0xa00025).w(this, FUNC(subsino2_state::ss9601_scroll_w)); + + map(0xc00000, 0xc00001).portr("DSW"); // SW1 + map(0xc00002, 0xc00003).portr("JOY").w(this, FUNC(subsino2_state::bishjan_input_w)); // IN C + map(0xc00004, 0xc00005).r(this, FUNC(subsino2_state::bishjan_input_r)); // IN A & B + map(0xc00006, 0xc00007).r(this, FUNC(subsino2_state::bishjan_serial_r)); // IN D + map(0xc00008, 0xc00009).portr("RESET").w(this, FUNC(subsino2_state::bishjan_outputs_w)).share("outputs16"); +} + +void subsino2_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} /*************************************************************************** New 2001 @@ -1008,63 +1010,65 @@ WRITE16_MEMBER(subsino2_state::new2001_outputs_w) } // Same as bishjan (except for i/o and lo2 usage like xplan) -ADDRESS_MAP_START(subsino2_state::new2001_base_map) - ADDRESS_MAP_GLOBAL_MASK(0xffffff) +void subsino2_state::new2001_base_map(address_map &map) +{ + map.global_mask(0xffffff); - AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION("maincpu", 0) + map(0x000000, 0x07ffff).rom().region("maincpu", 0); + map(0x080000, 0x0fffff).rom().region("maincpu", 0); - AM_RANGE( 0x200000, 0x207fff ) AM_RAM AM_SHARE("nvram") // battery + map(0x200000, 0x207fff).ram().share("nvram"); // battery // write both (L1, byte_lo2) - AM_RANGE( 0x410000, 0x411fff ) AM_WRITE8(ss9601_videoram_1_hi_lo2_w, 0xffff ) + map(0x410000, 0x411fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo2_w)); // read lo (L1) (only half tilemap?) - AM_RANGE( 0x412000, 0x412fff ) AM_READ8(ss9601_videoram_1_lo_r, 0xffff ) - AM_RANGE( 0x413000, 0x4131ff ) AM_READWRITE8(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w, 0xffff ) + map(0x412000, 0x412fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r)); + map(0x413000, 0x4131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w)); // write both (L0 & REEL, byte_lo2) - AM_RANGE( 0x414000, 0x415fff ) AM_WRITE8(ss9601_videoram_0_hi_lo2_w, 0xffff ) + map(0x414000, 0x415fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo2_w)); // read lo (REEL) - AM_RANGE( 0x416000, 0x416fff ) AM_READ8(ss9601_reelram_lo_r, 0xffff ) - AM_RANGE( 0x417000, 0x4171ff ) AM_READWRITE8(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w, 0xffff ) + map(0x416000, 0x416fff).r(this, FUNC(subsino2_state::ss9601_reelram_lo_r)); + map(0x417000, 0x4171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w)); // read hi (L1) - AM_RANGE( 0x422000, 0x422fff ) AM_READ8(ss9601_videoram_1_hi_r, 0xffff ) - AM_RANGE( 0x423000, 0x4231ff ) AM_READWRITE8(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w, 0xffff ) + map(0x422000, 0x422fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r)); + map(0x423000, 0x4231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w)); // read hi (REEL) - AM_RANGE( 0x426000, 0x426fff ) AM_READ8(ss9601_reelram_hi_r, 0xffff ) - AM_RANGE( 0x427000, 0x4271ff ) AM_READWRITE8(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w, 0xffff ) + map(0x426000, 0x426fff).r(this, FUNC(subsino2_state::ss9601_reelram_hi_r)); + map(0x427000, 0x4271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w)); // write both (L1, byte_lo) - AM_RANGE( 0x430000, 0x431fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff ) - AM_RANGE( 0x432000, 0x432fff ) AM_WRITE8(ss9601_videoram_1_hi_lo_w, 0xffff ) - AM_RANGE( 0x433000, 0x4331ff ) AM_WRITE8(ss9601_scrollram_1_hi_lo_w, 0xffff ) + map(0x430000, 0x431fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); + map(0x432000, 0x432fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); + map(0x433000, 0x4331ff).w(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_lo_w)); // write both (L0 & REEL, byte_lo) - AM_RANGE( 0x434000, 0x435fff ) AM_WRITE8(ss9601_videoram_0_hi_lo_w, 0xffff ) - AM_RANGE( 0x436000, 0x436fff ) AM_WRITE8(ss9601_reelram_hi_lo_w, 0xffff ) - AM_RANGE( 0x437000, 0x4371ff ) AM_WRITE8(ss9601_scrollram_0_hi_lo_w, 0xffff ) - - AM_RANGE( 0x600000, 0x600001 ) AM_READNOP AM_WRITE(bishjan_sound_w ) - AM_RANGE( 0x600020, 0x600021 ) AM_WRITE8(ss9601_byte_lo2_w, 0xff00 ) - AM_RANGE( 0x600040, 0x600041 ) AM_WRITE8(ss9601_scrollctrl_w, 0xff00 ) - AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00) - AM_RANGE( 0x600060, 0x600061 ) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE( 0x600062, 0x600063 ) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00) - AM_RANGE( 0x600080, 0x600081 ) AM_WRITE8(ss9601_tilesize_w, 0xff00 ) - AM_RANGE( 0x6000a0, 0x6000a1 ) AM_WRITE8(ss9601_byte_lo_w, 0xff00 ) - - AM_RANGE( 0xa0001e, 0xa0001f ) AM_WRITE8(ss9601_disable_w, 0x00ff ) - AM_RANGE( 0xa00020, 0xa00025 ) AM_WRITE8(ss9601_scroll_w, 0xffff ) - - AM_RANGE( 0xc00000, 0xc00001 ) AM_READ_PORT("DSW") - AM_RANGE( 0xc00002, 0xc00003 ) AM_READ_PORT("IN C") - AM_RANGE( 0xc00004, 0xc00005 ) AM_READ_PORT("IN A & B") - AM_RANGE( 0xc00006, 0xc00007 ) AM_READ(bishjan_serial_r ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(subsino2_state::new2001_map) - AM_IMPORT_FROM(new2001_base_map) - AM_RANGE( 0xc00008, 0xc00009 ) AM_WRITE(new2001_outputs_w ) AM_SHARE("outputs16") -ADDRESS_MAP_END + map(0x434000, 0x435fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w)); + map(0x436000, 0x436fff).w(this, FUNC(subsino2_state::ss9601_reelram_hi_lo_w)); + map(0x437000, 0x4371ff).w(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_lo_w)); + + map(0x600000, 0x600001).nopr().w(this, FUNC(subsino2_state::bishjan_sound_w)); + map(0x600020, 0x600020).w(this, FUNC(subsino2_state::ss9601_byte_lo2_w)); + map(0x600040, 0x600040).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w)); + map(0x600060, 0x600060).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x600061, 0x600061).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x600062, 0x600062).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x600080, 0x600080).w(this, FUNC(subsino2_state::ss9601_tilesize_w)); + map(0x6000a0, 0x6000a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w)); + + map(0xa0001f, 0xa0001f).w(this, FUNC(subsino2_state::ss9601_disable_w)); + map(0xa00020, 0xa00025).w(this, FUNC(subsino2_state::ss9601_scroll_w)); + + map(0xc00000, 0xc00001).portr("DSW"); + map(0xc00002, 0xc00003).portr("IN C"); + map(0xc00004, 0xc00005).portr("IN A & B"); + map(0xc00006, 0xc00007).r(this, FUNC(subsino2_state::bishjan_serial_r)); +} + +void subsino2_state::new2001_map(address_map &map) +{ + new2001_base_map(map); + map(0xc00008, 0xc00009).w(this, FUNC(subsino2_state::new2001_outputs_w)).share("outputs16"); +} /*************************************************************************** Humlan's Lyckohjul @@ -1097,10 +1101,11 @@ WRITE16_MEMBER(subsino2_state::humlan_outputs_w) // popmessage("0: %04x", m_outputs16[0]); } -ADDRESS_MAP_START(subsino2_state::humlan_map) - AM_IMPORT_FROM(new2001_base_map) - AM_RANGE( 0xc00008, 0xc00009 ) AM_WRITE(humlan_outputs_w ) AM_SHARE("outputs16") -ADDRESS_MAP_END +void subsino2_state::humlan_map(address_map &map) +{ + new2001_base_map(map); + map(0xc00008, 0xc00009).w(this, FUNC(subsino2_state::humlan_outputs_w)).share("outputs16"); +} /*************************************************************************** Express Card / Top Card @@ -1231,44 +1236,46 @@ READ8_MEMBER(subsino2_state::mtrain_prot_r) return "SUBSION"[offset]; } -ADDRESS_MAP_START(subsino2_state::mtrain_map) - AM_RANGE( 0x00000, 0x06fff ) AM_ROM +void subsino2_state::mtrain_map(address_map &map) +{ + map(0x00000, 0x06fff).rom(); - AM_RANGE( 0x07800, 0x07fff ) AM_RAM AM_SHARE("nvram") // battery + map(0x07800, 0x07fff).ram().share("nvram"); // battery - AM_RANGE( 0x08000, 0x08fff ) AM_WRITE(mtrain_videoram_w ) + map(0x08000, 0x08fff).w(this, FUNC(subsino2_state::mtrain_videoram_w)); - AM_RANGE( 0x0911f, 0x0911f ) AM_WRITE(ss9601_disable_w ) - AM_RANGE( 0x09120, 0x09125 ) AM_WRITE(ss9601_scroll_w ) + map(0x0911f, 0x0911f).w(this, FUNC(subsino2_state::ss9601_disable_w)); + map(0x09120, 0x09125).w(this, FUNC(subsino2_state::ss9601_scroll_w)); - AM_RANGE( 0x0912f, 0x0912f ) AM_WRITE(ss9601_byte_lo_w ) + map(0x0912f, 0x0912f).w(this, FUNC(subsino2_state::ss9601_byte_lo_w)); - AM_RANGE( 0x09140, 0x09142 ) AM_WRITE(mtrain_outputs_w ) AM_SHARE("outputs") - AM_RANGE( 0x09143, 0x09143 ) AM_READ_PORT( "IN D" ) // (not shown in system test) 0x40 serial out, 0x80 serial in - AM_RANGE( 0x09144, 0x09144 ) AM_READ_PORT( "IN A" ) // A - AM_RANGE( 0x09145, 0x09145 ) AM_READ_PORT( "IN B" ) // B - AM_RANGE( 0x09146, 0x09146 ) AM_READ_PORT( "IN C" ) // C - AM_RANGE( 0x09147, 0x09147 ) AM_READ(dsw_r ) - AM_RANGE( 0x09148, 0x09148 ) AM_WRITE(dsw_mask_w ) + map(0x09140, 0x09142).w(this, FUNC(subsino2_state::mtrain_outputs_w)).share("outputs"); + map(0x09143, 0x09143).portr("IN D"); // (not shown in system test) 0x40 serial out, 0x80 serial in + map(0x09144, 0x09144).portr("IN A"); // A + map(0x09145, 0x09145).portr("IN B"); // B + map(0x09146, 0x09146).portr("IN C"); // C + map(0x09147, 0x09147).r(this, FUNC(subsino2_state::dsw_r)); + map(0x09148, 0x09148).w(this, FUNC(subsino2_state::dsw_mask_w)); - AM_RANGE( 0x09152, 0x09152 ) AM_READ(vblank_bit2_r ) AM_WRITE(oki_bank_bit0_w ) + map(0x09152, 0x09152).r(this, FUNC(subsino2_state::vblank_bit2_r)).w(this, FUNC(subsino2_state::oki_bank_bit0_w)); - AM_RANGE( 0x09158, 0x0915e ) AM_READ(mtrain_prot_r ) + map(0x09158, 0x0915e).r(this, FUNC(subsino2_state::mtrain_prot_r)); - AM_RANGE( 0x09160, 0x09160 ) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE( 0x09161, 0x09161 ) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE( 0x09162, 0x09162 ) AM_DEVWRITE("ramdac", ramdac_device, mask_w) - AM_RANGE( 0x09164, 0x09164 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x09168, 0x09168 ) AM_WRITE(mtrain_tilesize_w ) + map(0x09160, 0x09160).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x09161, 0x09161).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x09162, 0x09162).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x09164, 0x09164).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x09168, 0x09168).w(this, FUNC(subsino2_state::mtrain_tilesize_w)); - AM_RANGE( 0x09800, 0x09fff ) AM_RAM + map(0x09800, 0x09fff).ram(); - AM_RANGE( 0x0a000, 0x0ffff ) AM_ROM -ADDRESS_MAP_END + map(0x0a000, 0x0ffff).rom(); +} -ADDRESS_MAP_START(subsino2_state::mtrain_io) - AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs -ADDRESS_MAP_END +void subsino2_state::mtrain_io(address_map &map) +{ + map(0x0000, 0x003f).ram(); // internal regs +} /*************************************************************************** Sakura Love - Ying Hua Lian @@ -1299,58 +1306,60 @@ WRITE8_MEMBER(subsino2_state::saklove_outputs_w) // popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", m_outputs[0], m_outputs[1], m_outputs[2], m_outputs[3]); } -ADDRESS_MAP_START(subsino2_state::saklove_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("nvram") // battery +void subsino2_state::saklove_map(address_map &map) +{ + map(0x00000, 0x07fff).ram().share("nvram"); // battery // read lo (L1) (only half tilemap?) - AM_RANGE(0x12000, 0x12fff) AM_READWRITE(ss9601_videoram_1_lo_r, ss9601_videoram_1_lo_w ) - AM_RANGE(0x13000, 0x131ff) AM_READWRITE(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w ) + map(0x12000, 0x12fff).rw(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r), FUNC(subsino2_state::ss9601_videoram_1_lo_w)); + map(0x13000, 0x131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w)); // read lo (L0) - AM_RANGE(0x16000, 0x16fff) AM_READWRITE(ss9601_videoram_0_lo_r, ss9601_videoram_0_lo_w ) - AM_RANGE(0x17000, 0x171ff) AM_READWRITE(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w ) + map(0x16000, 0x16fff).rw(this, FUNC(subsino2_state::ss9601_videoram_0_lo_r), FUNC(subsino2_state::ss9601_videoram_0_lo_w)); + map(0x17000, 0x171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w)); // read hi (L1) - AM_RANGE(0x22000, 0x22fff) AM_READWRITE(ss9601_videoram_1_hi_r, ss9601_videoram_1_hi_w ) - AM_RANGE(0x23000, 0x231ff) AM_READWRITE(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w ) + map(0x22000, 0x22fff).rw(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r), FUNC(subsino2_state::ss9601_videoram_1_hi_w)); + map(0x23000, 0x231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w)); // read hi (L0) - AM_RANGE(0x26000, 0x26fff) AM_READWRITE(ss9601_videoram_0_hi_r, ss9601_videoram_0_hi_w ) - AM_RANGE(0x27000, 0x271ff) AM_READWRITE(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w ) + map(0x26000, 0x26fff).rw(this, FUNC(subsino2_state::ss9601_videoram_0_hi_r), FUNC(subsino2_state::ss9601_videoram_0_hi_w)); + map(0x27000, 0x271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w)); // write both (L1) - AM_RANGE(0x30000, 0x31fff) AM_READWRITE(ss9601_videoram_1_hi_r, ss9601_videoram_1_hi_lo_w ) + map(0x30000, 0x31fff).rw(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r), FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); // write both (L0) - AM_RANGE(0x34000, 0x35fff) AM_READWRITE(ss9601_videoram_0_hi_r, ss9601_videoram_0_hi_lo_w ) + map(0x34000, 0x35fff).rw(this, FUNC(subsino2_state::ss9601_videoram_0_hi_r), FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w)); - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END + map(0xe0000, 0xfffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(subsino2_state::saklove_io) - AM_RANGE(0x0000, 0x0000) AM_WRITE(ss9601_scrollctrl_w ) +void subsino2_state::saklove_io(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w)); - AM_RANGE(0x0020, 0x0020) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x0040, 0x0041) AM_DEVWRITE("ymsnd", ym3812_device, write) + map(0x0020, 0x0020).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0040, 0x0041).w("ymsnd", FUNC(ym3812_device::write)); - AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0x0061, 0x0061) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE(0x0062, 0x0062) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x0060, 0x0060).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0061, 0x0061).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0062, 0x0062).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x0080, 0x0080) AM_WRITE(ss9601_tilesize_w ) - AM_RANGE(0x00a0, 0x00a0) AM_WRITE(ss9601_byte_lo_w ) - AM_RANGE(0x021f, 0x021f) AM_WRITE(ss9601_disable_w ) - AM_RANGE(0x0220, 0x0225) AM_WRITE(ss9601_scroll_w ) + map(0x0080, 0x0080).w(this, FUNC(subsino2_state::ss9601_tilesize_w)); + map(0x00a0, 0x00a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w)); + map(0x021f, 0x021f).w(this, FUNC(subsino2_state::ss9601_disable_w)); + map(0x0220, 0x0225).w(this, FUNC(subsino2_state::ss9601_scroll_w)); - AM_RANGE(0x0300, 0x0303) AM_WRITE(saklove_outputs_w ) AM_SHARE("outputs") - AM_RANGE(0x0303, 0x0303) AM_READ_PORT( "IN D" ) // 0x40 serial out, 0x80 serial in - AM_RANGE(0x0304, 0x0304) AM_READ_PORT( "IN A" ) - AM_RANGE(0x0305, 0x0305) AM_READ_PORT( "IN B" ) - AM_RANGE(0x0306, 0x0306) AM_READ_PORT( "IN C" ) + map(0x0300, 0x0303).w(this, FUNC(subsino2_state::saklove_outputs_w)).share("outputs"); + map(0x0303, 0x0303).portr("IN D"); // 0x40 serial out, 0x80 serial in + map(0x0304, 0x0304).portr("IN A"); + map(0x0305, 0x0305).portr("IN B"); + map(0x0306, 0x0306).portr("IN C"); - AM_RANGE(0x0307, 0x0307) AM_READ(dsw_r ) - AM_RANGE(0x0308, 0x0308) AM_WRITE(dsw_mask_w ) + map(0x0307, 0x0307).r(this, FUNC(subsino2_state::dsw_r)); + map(0x0308, 0x0308).w(this, FUNC(subsino2_state::dsw_mask_w)); - AM_RANGE(0x0312, 0x0312) AM_READ(vblank_bit2_r ) AM_WRITE(oki_bank_bit0_w ) + map(0x0312, 0x0312).r(this, FUNC(subsino2_state::vblank_bit2_r)).w(this, FUNC(subsino2_state::oki_bank_bit0_w)); -ADDRESS_MAP_END +} /*************************************************************************** X-Plan @@ -1389,70 +1398,72 @@ WRITE8_MEMBER(subsino2_state::xplan_outputs_w) // popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", m_outputs[0], m_outputs[1], m_outputs[2], m_outputs[3]); } -ADDRESS_MAP_START(subsino2_state::xplan_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM AM_SHARE("nvram") // battery +void subsino2_state::xplan_map(address_map &map) +{ + map(0x00000, 0x07fff).ram().share("nvram"); // battery // write both (L1, byte_lo2) - AM_RANGE( 0x10000, 0x11fff ) AM_WRITE(ss9601_videoram_1_hi_lo2_w ) + map(0x10000, 0x11fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo2_w)); // read lo (L1) (only half tilemap?) - AM_RANGE( 0x12000, 0x12fff ) AM_READ(ss9601_videoram_1_lo_r ) - AM_RANGE( 0x13000, 0x131ff ) AM_READWRITE(ss9601_scrollram_1_lo_r, ss9601_scrollram_1_lo_w ) + map(0x12000, 0x12fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_lo_r)); + map(0x13000, 0x131ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_lo_r), FUNC(subsino2_state::ss9601_scrollram_1_lo_w)); // write both (L0, byte_lo2) - AM_RANGE( 0x14000, 0x15fff ) AM_WRITE(ss9601_videoram_0_hi_lo2_w ) + map(0x14000, 0x15fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo2_w)); // read lo (REEL) - AM_RANGE( 0x16000, 0x16fff ) AM_READ(ss9601_reelram_lo_r ) - AM_RANGE( 0x17000, 0x171ff ) AM_READWRITE(ss9601_scrollram_0_lo_r, ss9601_scrollram_0_lo_w ) + map(0x16000, 0x16fff).r(this, FUNC(subsino2_state::ss9601_reelram_lo_r)); + map(0x17000, 0x171ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_lo_r), FUNC(subsino2_state::ss9601_scrollram_0_lo_w)); // read hi (L1) - AM_RANGE( 0x22000, 0x22fff ) AM_READ(ss9601_videoram_1_hi_r ) - AM_RANGE( 0x23000, 0x231ff ) AM_READWRITE(ss9601_scrollram_1_hi_r, ss9601_scrollram_1_hi_w ) + map(0x22000, 0x22fff).r(this, FUNC(subsino2_state::ss9601_videoram_1_hi_r)); + map(0x23000, 0x231ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_r), FUNC(subsino2_state::ss9601_scrollram_1_hi_w)); // read hi (REEL) - AM_RANGE( 0x26000, 0x26fff ) AM_READ(ss9601_reelram_hi_r ) - AM_RANGE( 0x27000, 0x271ff ) AM_READWRITE(ss9601_scrollram_0_hi_r, ss9601_scrollram_0_hi_w ) + map(0x26000, 0x26fff).r(this, FUNC(subsino2_state::ss9601_reelram_hi_r)); + map(0x27000, 0x271ff).rw(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_r), FUNC(subsino2_state::ss9601_scrollram_0_hi_w)); // write both (L1, byte_lo) - AM_RANGE( 0x30000, 0x31fff ) AM_WRITE(ss9601_videoram_1_hi_lo_w ) - AM_RANGE( 0x32000, 0x32fff ) AM_WRITE(ss9601_videoram_1_hi_lo_w ) - AM_RANGE( 0x33000, 0x331ff ) AM_WRITE(ss9601_scrollram_1_hi_lo_w ) + map(0x30000, 0x31fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); + map(0x32000, 0x32fff).w(this, FUNC(subsino2_state::ss9601_videoram_1_hi_lo_w)); + map(0x33000, 0x331ff).w(this, FUNC(subsino2_state::ss9601_scrollram_1_hi_lo_w)); // write both (L0 & REEL, byte_lo) - AM_RANGE( 0x34000, 0x35fff ) AM_WRITE(ss9601_videoram_0_hi_lo_w ) - AM_RANGE( 0x36000, 0x36fff ) AM_WRITE(ss9601_reelram_hi_lo_w ) - AM_RANGE( 0x37000, 0x371ff ) AM_WRITE(ss9601_scrollram_0_hi_lo_w ) + map(0x34000, 0x35fff).w(this, FUNC(subsino2_state::ss9601_videoram_0_hi_lo_w)); + map(0x36000, 0x36fff).w(this, FUNC(subsino2_state::ss9601_reelram_hi_lo_w)); + map(0x37000, 0x371ff).w(this, FUNC(subsino2_state::ss9601_scrollram_0_hi_lo_w)); - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END + map(0xc0000, 0xfffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(subsino2_state::xplan_io) - AM_RANGE(0x0000, 0x0000) AM_DEVREADWRITE("oki", okim6295_device, read, write) +void subsino2_state::xplan_io(address_map &map) +{ + map(0x0000, 0x0000).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x0020, 0x0020) AM_WRITE(ss9601_byte_lo2_w ) + map(0x0020, 0x0020).w(this, FUNC(subsino2_state::ss9601_byte_lo2_w)); - AM_RANGE(0x0040, 0x0040) AM_WRITE(ss9601_scrollctrl_w ) + map(0x0040, 0x0040).w(this, FUNC(subsino2_state::ss9601_scrollctrl_w)); - AM_RANGE(0x0060, 0x0060) AM_DEVWRITE("ramdac", ramdac_device, index_w) - AM_RANGE(0x0061, 0x0061) AM_DEVWRITE("ramdac", ramdac_device, pal_w) - AM_RANGE(0x0062, 0x0062) AM_DEVWRITE("ramdac", ramdac_device, mask_w) + map(0x0060, 0x0060).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0061, 0x0061).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x0062, 0x0062).w("ramdac", FUNC(ramdac_device::mask_w)); - AM_RANGE(0x0080, 0x0080) AM_WRITE(ss9601_tilesize_w ) - AM_RANGE(0x00a0, 0x00a0) AM_WRITE(ss9601_byte_lo_w ) + map(0x0080, 0x0080).w(this, FUNC(subsino2_state::ss9601_tilesize_w)); + map(0x00a0, 0x00a0).w(this, FUNC(subsino2_state::ss9601_byte_lo_w)); - AM_RANGE(0x021f, 0x021f) AM_WRITE(ss9601_disable_w ) - AM_RANGE(0x0220, 0x0225) AM_WRITE(ss9601_scroll_w ) + map(0x021f, 0x021f).w(this, FUNC(subsino2_state::ss9601_disable_w)); + map(0x0220, 0x0225).w(this, FUNC(subsino2_state::ss9601_scroll_w)); - AM_RANGE(0x0235, 0x0235) AM_NOP // INT0 Ack.? + map(0x0235, 0x0235).noprw(); // INT0 Ack.? - AM_RANGE(0x0300, 0x0300) AM_READ(vblank_bit6_r ) AM_WRITE(oki_bank_bit4_w ) - AM_RANGE(0x0301, 0x0301) AM_WRITE(dsw_mask_w ) - AM_RANGE(0x0302, 0x0302) AM_READ(dsw_r ) - AM_RANGE(0x0303, 0x0303) AM_READ_PORT( "IN C" ) - AM_RANGE(0x0304, 0x0304) AM_READ_PORT( "IN B" ) - AM_RANGE(0x0305, 0x0305) AM_READ_PORT( "IN A" ) - AM_RANGE(0x0306, 0x0306) AM_READ_PORT( "IN D" ) // 0x40 serial out, 0x80 serial in + map(0x0300, 0x0300).r(this, FUNC(subsino2_state::vblank_bit6_r)).w(this, FUNC(subsino2_state::oki_bank_bit4_w)); + map(0x0301, 0x0301).w(this, FUNC(subsino2_state::dsw_mask_w)); + map(0x0302, 0x0302).r(this, FUNC(subsino2_state::dsw_r)); + map(0x0303, 0x0303).portr("IN C"); + map(0x0304, 0x0304).portr("IN B"); + map(0x0305, 0x0305).portr("IN A"); + map(0x0306, 0x0306).portr("IN D"); // 0x40 serial out, 0x80 serial in // 306 = d, 307 = c, 308 = b, 309 = a - AM_RANGE(0x0306, 0x0309) AM_WRITE(xplan_outputs_w ) AM_SHARE("outputs") -ADDRESS_MAP_END + map(0x0306, 0x0309).w(this, FUNC(subsino2_state::xplan_outputs_w)).share("outputs"); +} /*************************************************************************** X-Train @@ -1492,19 +1503,21 @@ WRITE8_MEMBER(subsino2_state::xtrain_outputs_w) // popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", m_outputs[0], m_outputs[1], m_outputs[2], m_outputs[3]); } -ADDRESS_MAP_START(subsino2_state::expcard_io) - AM_IMPORT_FROM( xplan_io ) +void subsino2_state::expcard_io(address_map &map) +{ + xplan_io(map); // 306 = d, 307 = c, 308 = b, 309 = a - AM_RANGE(0x0306, 0x0309) AM_WRITE(expcard_outputs_w ) AM_SHARE("outputs") -ADDRESS_MAP_END + map(0x0306, 0x0309).w(this, FUNC(subsino2_state::expcard_outputs_w)).share("outputs"); +} -ADDRESS_MAP_START(subsino2_state::xtrain_io) - AM_IMPORT_FROM( xplan_io ) +void subsino2_state::xtrain_io(address_map &map) +{ + xplan_io(map); // 306 = d, 307 = c, 308 = b, 309 = a - AM_RANGE(0x0306, 0x0309) AM_WRITE(xtrain_outputs_w ) AM_SHARE("outputs") -ADDRESS_MAP_END + map(0x0306, 0x0309).w(this, FUNC(subsino2_state::xtrain_outputs_w)).share("outputs"); +} /*************************************************************************** diff --git a/src/mame/drivers/summit.cpp b/src/mame/drivers/summit.cpp index e8c20d92425..102a58bcee6 100644 --- a/src/mame/drivers/summit.cpp +++ b/src/mame/drivers/summit.cpp @@ -77,21 +77,22 @@ WRITE8_MEMBER(summit_state::out_w) } -ADDRESS_MAP_START(summit_state::mainmap) - AM_RANGE(0x0000, 0x17ff) AM_ROM +void summit_state::mainmap(address_map &map) +{ + map(0x0000, 0x17ff).rom(); - AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("attr") - AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("vram") + map(0x2000, 0x23ff).ram().share("attr"); + map(0x2800, 0x2bff).ram().share("vram"); - AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") + map(0x3800, 0x3800).portr("IN0"); // AM_RANGE(0x3880, 0x3880) AM_WRITE(out_w) - AM_RANGE(0x3900, 0x3900) AM_READ_PORT("IN1") AM_WRITE(out_w) // lamps + map(0x3900, 0x3900).portr("IN1").w(this, FUNC(summit_state::out_w)); // lamps // AM_RANGE(0x3980, 0x3980) AM_WRITE(out_w) - AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") //AM_WRITE(out_w) - AM_RANGE(0x3b00, 0x3b00) AM_READ_PORT("IN3") + map(0x3a00, 0x3a00).portr("IN2"); //AM_WRITE(out_w) + map(0x3b00, 0x3b00).portr("IN3"); - AM_RANGE(0x7000, 0x71ff) AM_RAM -ADDRESS_MAP_END + map(0x7000, 0x71ff).ram(); +} diff --git a/src/mame/drivers/sumt8035.cpp b/src/mame/drivers/sumt8035.cpp index 2f37c88a623..347b513eff4 100644 --- a/src/mame/drivers/sumt8035.cpp +++ b/src/mame/drivers/sumt8035.cpp @@ -34,13 +34,15 @@ protected: }; -ADDRESS_MAP_START(sumt8035_state::sumt_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +void sumt8035_state::sumt_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} -ADDRESS_MAP_START(sumt8035_state::sumt_portmap) -ADDRESS_MAP_END +void sumt8035_state::sumt_portmap(address_map &map) +{ +} static INPUT_PORTS_START( summit ) diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp index 2a167d8f6a0..3afc405d084 100644 --- a/src/mame/drivers/sun1.cpp +++ b/src/mame/drivers/sun1.cpp @@ -86,16 +86,17 @@ protected: }; -ADDRESS_MAP_START(sun1_state::sun1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot - AM_RANGE(0x00200000, 0x00203fff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0x00600000, 0x00600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("iouart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00) - AM_RANGE(0x00800000, 0x00800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("timer", am9513_device, read16, write16) - AM_RANGE(0x00a00000, 0x00bfffff) AM_UNMAP // page map - AM_RANGE(0x00c00000, 0x00dfffff) AM_UNMAP // segment map - AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // context register -ADDRESS_MAP_END +void sun1_state::sun1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x001fffff).ram().share("p_ram"); // 512 KB RAM / ROM at boot + map(0x00200000, 0x00203fff).rom().region("user1", 0); + map(0x00600000, 0x00600007).mirror(0x1ffff8).rw(m_iouart, FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)).umask16(0xff00); + map(0x00800000, 0x00800003).mirror(0x1ffffc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); + map(0x00a00000, 0x00bfffff).unmaprw(); // page map + map(0x00c00000, 0x00dfffff).unmaprw(); // segment map + map(0x00e00000, 0x00ffffff).unmaprw(); // context register +} /* Input ports */ static INPUT_PORTS_START( sun1 ) diff --git a/src/mame/drivers/sun2.cpp b/src/mame/drivers/sun2.cpp index 912a8bdc8c0..e47dbc82237 100644 --- a/src/mame/drivers/sun2.cpp +++ b/src/mame/drivers/sun2.cpp @@ -479,69 +479,78 @@ WRITE16_MEMBER( sun2_state::video_ctrl_w ) COMBINE_DATA(&m_bw2_ctrl); } -ADDRESS_MAP_START(sun2_state::sun2_mem) - AM_RANGE(0x000000, 0xffffff) AM_READWRITE( tl_mmu_r, tl_mmu_w ) -ADDRESS_MAP_END +void sun2_state::sun2_mem(address_map &map) +{ + map(0x000000, 0xffffff).rw(this, FUNC(sun2_state::tl_mmu_r), FUNC(sun2_state::tl_mmu_w)); +} // VME memory spaces // type 0 device space -ADDRESS_MAP_START(sun2_state::vmetype0space_map) - AM_RANGE(0x000000, 0x7fffff) AM_READWRITE(ram_r, ram_w) -ADDRESS_MAP_END +void sun2_state::vmetype0space_map(address_map &map) +{ + map(0x000000, 0x7fffff).rw(this, FUNC(sun2_state::ram_r), FUNC(sun2_state::ram_w)); +} // type 1 device space -ADDRESS_MAP_START(sun2_state::vmetype1space_map) - AM_RANGE(0x000000, 0x01ffff) AM_RAM AM_SHARE("bw2_vram") - AM_RANGE(0x020000, 0x020001) AM_READWRITE( video_ctrl_r, video_ctrl_w ) - AM_RANGE(0x7f0000, 0x7f07ff) AM_ROM AM_REGION("bootprom", 0) // uses MMU loophole to read 32k from a 2k window +void sun2_state::vmetype1space_map(address_map &map) +{ + map(0x000000, 0x01ffff).ram().share("bw2_vram"); + map(0x020000, 0x020001).rw(this, FUNC(sun2_state::video_ctrl_r), FUNC(sun2_state::video_ctrl_w)); + map(0x7f0000, 0x7f07ff).rom().region("bootprom", 0); // uses MMU loophole to read 32k from a 2k window // 7f0800-7f0fff: Ethernet interface // 7f1000-7f17ff: AM9518 encryption processor //AM_RANGE(0x7f1800, 0x7f1801) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, cb_r, cb_w, 0xff00) //AM_RANGE(0x7f1802, 0x7f1803) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, db_r, db_w, 0xff00) //AM_RANGE(0x7f1804, 0x7f1805) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ca_r, ca_w, 0xff00) //AM_RANGE(0x7f1806, 0x7f1807) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, da_r, da_w, 0xff00) - AM_RANGE(0x7f2000, 0x7f2001) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, cb_r, cb_w, 0xff00) - AM_RANGE(0x7f2002, 0x7f2003) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, db_r, db_w, 0xff00) - AM_RANGE(0x7f2004, 0x7f2005) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ca_r, ca_w, 0xff00) - AM_RANGE(0x7f2006, 0x7f2007) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, da_r, da_w, 0xff00) - AM_RANGE(0x7f2800, 0x7f2803) AM_MIRROR(0x7fc) AM_DEVREADWRITE("timer", am9513_device, read16, write16) -ADDRESS_MAP_END + map(0x7f2000, 0x7f2000).rw(SCC2_TAG, FUNC(z80scc_device::cb_r), FUNC(z80scc_device::cb_w)); + map(0x7f2002, 0x7f2002).rw(SCC2_TAG, FUNC(z80scc_device::db_r), FUNC(z80scc_device::db_w)); + map(0x7f2004, 0x7f2004).rw(SCC2_TAG, FUNC(z80scc_device::ca_r), FUNC(z80scc_device::ca_w)); + map(0x7f2006, 0x7f2006).rw(SCC2_TAG, FUNC(z80scc_device::da_r), FUNC(z80scc_device::da_w)); + map(0x7f2800, 0x7f2803).mirror(0x7fc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); +} // type 2 device space -ADDRESS_MAP_START(sun2_state::vmetype2space_map) -ADDRESS_MAP_END +void sun2_state::vmetype2space_map(address_map &map) +{ +} // type 3 device space -ADDRESS_MAP_START(sun2_state::vmetype3space_map) -ADDRESS_MAP_END +void sun2_state::vmetype3space_map(address_map &map) +{ +} // Multibus memory spaces // type 0 device space -ADDRESS_MAP_START(sun2_state::mbustype0space_map) - AM_RANGE(0x000000, 0x3fffff) AM_READWRITE(ram_r, ram_w) +void sun2_state::mbustype0space_map(address_map &map) +{ + map(0x000000, 0x3fffff).rw(this, FUNC(sun2_state::ram_r), FUNC(sun2_state::ram_w)); // 7f80000-7f807ff: Keyboard/mouse SCC8530 //AM_RANGE(0x7f8000, 0x7f8007) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00) - AM_RANGE(0x700000, 0x71ffff) AM_RAM AM_SHARE("bw2_vram") - AM_RANGE(0x781800, 0x781801) AM_READWRITE( video_ctrl_r, video_ctrl_w ) -ADDRESS_MAP_END + map(0x700000, 0x71ffff).ram().share("bw2_vram"); + map(0x781800, 0x781801).rw(this, FUNC(sun2_state::video_ctrl_r), FUNC(sun2_state::video_ctrl_w)); +} // type 1 device space -ADDRESS_MAP_START(sun2_state::mbustype1space_map) - AM_RANGE(0x000000, 0x0007ff) AM_ROM AM_REGION("bootprom", 0) // uses MMU loophole to read 32k from a 2k window +void sun2_state::mbustype1space_map(address_map &map) +{ + map(0x000000, 0x0007ff).rom().region("bootprom", 0); // uses MMU loophole to read 32k from a 2k window // 001000-0017ff: AM9518 encryption processor // 001800-001fff: Parallel port - AM_RANGE(0x002000, 0x0027ff) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00) - AM_RANGE(0x002800, 0x002803) AM_MIRROR(0x7fc) AM_DEVREADWRITE("timer", am9513_device, read16, write16) - AM_RANGE(0x003800, 0x00383f) AM_MIRROR(0x7c0) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0xff00) // 12 wait states generated by PAL16R6 (U415) -ADDRESS_MAP_END + map(0x002000, 0x0027ff).rw(SCC2_TAG, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask16(0xff00); + map(0x002800, 0x002803).mirror(0x7fc).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); + map(0x003800, 0x00383f).mirror(0x7c0).rw("rtc", FUNC(mm58167_device::read), FUNC(mm58167_device::write)).umask16(0xff00); // 12 wait states generated by PAL16R6 (U415) +} // type 2 device space (Multibus memory space) -ADDRESS_MAP_START(sun2_state::mbustype2space_map) -ADDRESS_MAP_END +void sun2_state::mbustype2space_map(address_map &map) +{ +} // type 3 device space (Multibus I/O space) -ADDRESS_MAP_START(sun2_state::mbustype3space_map) -ADDRESS_MAP_END +void sun2_state::mbustype3space_map(address_map &map) +{ +} uint32_t sun2_state::bw2_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { diff --git a/src/mame/drivers/sun3.cpp b/src/mame/drivers/sun3.cpp index 62dc2214ea4..b5d0216763b 100644 --- a/src/mame/drivers/sun3.cpp +++ b/src/mame/drivers/sun3.cpp @@ -719,41 +719,47 @@ WRITE32_MEMBER(sun3_state::parity_w) } } -ADDRESS_MAP_START(sun3_state::sun3_mem) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE( tl_mmu_r, tl_mmu_w ) -ADDRESS_MAP_END +void sun3_state::sun3_mem(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(sun3_state::tl_mmu_r), FUNC(sun3_state::tl_mmu_w)); +} // type 0 device space -ADDRESS_MAP_START(sun3_state::vmetype0space_map) - AM_RANGE(0x00000000, 0x08ffffff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM // not sure what's going on here (3/110) - AM_RANGE(0xff000000, 0xff03ffff) AM_RAM AM_SHARE("bw2_vram") -ADDRESS_MAP_END +void sun3_state::vmetype0space_map(address_map &map) +{ + map(0x00000000, 0x08ffffff).rw(this, FUNC(sun3_state::ram_r), FUNC(sun3_state::ram_w)); + map(0xfe400000, 0xfe41ffff).ram(); // not sure what's going on here (3/110) + map(0xff000000, 0xff03ffff).ram().share("bw2_vram"); +} // type 0 without VRAM (3/50) -ADDRESS_MAP_START(sun3_state::vmetype0space_novram_map) - AM_RANGE(0x00000000, 0x08ffffff) AM_READWRITE(ram_r, ram_w) -ADDRESS_MAP_END +void sun3_state::vmetype0space_novram_map(address_map &map) +{ + map(0x00000000, 0x08ffffff).rw(this, FUNC(sun3_state::ram_r), FUNC(sun3_state::ram_w)); +} // type 1 device space -ADDRESS_MAP_START(sun3_state::vmetype1space_map) - AM_RANGE(0x00000000, 0x0000000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x00020000, 0x0002000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x00040000, 0x000407ff) AM_RAM AM_SHARE("nvram") // type 2816 parallel EEPROM - AM_RANGE(0x00060000, 0x0006ffff) AM_READWRITE8(rtc7170_r, rtc7170_w, 0xffffffff) - AM_RANGE(0x00080000, 0x0008000f) AM_READWRITE(parity_r, parity_w) - AM_RANGE(0x000a0000, 0x000a0003) AM_READWRITE(irqctrl_r, irqctrl_w) - AM_RANGE(0x00100000, 0x0010ffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x001e0000, 0x001e00ff) AM_READWRITE(ecc_r, ecc_w) -ADDRESS_MAP_END +void sun3_state::vmetype1space_map(address_map &map) +{ + map(0x00000000, 0x0000000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x00020000, 0x0002000f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x00040000, 0x000407ff).ram().share("nvram"); // type 2816 parallel EEPROM + map(0x00060000, 0x0006ffff).rw(this, FUNC(sun3_state::rtc7170_r), FUNC(sun3_state::rtc7170_w)); + map(0x00080000, 0x0008000f).rw(this, FUNC(sun3_state::parity_r), FUNC(sun3_state::parity_w)); + map(0x000a0000, 0x000a0003).rw(this, FUNC(sun3_state::irqctrl_r), FUNC(sun3_state::irqctrl_w)); + map(0x00100000, 0x0010ffff).rom().region("user1", 0); + map(0x001e0000, 0x001e00ff).rw(this, FUNC(sun3_state::ecc_r), FUNC(sun3_state::ecc_w)); +} // type 2 device space -ADDRESS_MAP_START(sun3_state::vmetype2space_map) -ADDRESS_MAP_END +void sun3_state::vmetype2space_map(address_map &map) +{ +} // type 3 device space -ADDRESS_MAP_START(sun3_state::vmetype3space_map) -ADDRESS_MAP_END +void sun3_state::vmetype3space_map(address_map &map) +{ +} READ32_MEMBER(sun3_state::irqctrl_r) { diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp index 29c594bfc8a..95ed03e46fa 100644 --- a/src/mame/drivers/sun3x.cpp +++ b/src/mame/drivers/sun3x.cpp @@ -218,49 +218,51 @@ private: bool m_bInBusErr; }; -ADDRESS_MAP_START(sun3x_state::sun3_80_mem) - AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("p_ram") AM_WRITE(ramwrite_w) - AM_RANGE(0x40000000, 0x40000003) AM_READWRITE(cause_buserr_r, cause_buserr_w) - AM_RANGE(0x50300000, 0x50300003) AM_READ(p4id_r) - AM_RANGE(0x50400000, 0x504fffff) AM_RAM AM_SHARE("bw2_vram") - AM_RANGE(0x60000000, 0x60001fff) AM_READWRITE(iommu_r, iommu_w) - AM_RANGE(0x61000000, 0x61000003) AM_READWRITE(enable_r, enable_w) - AM_RANGE(0x61000400, 0x61000403) AM_READWRITE(buserr_r, buserr_w) - AM_RANGE(0x61000800, 0x61000803) AM_READWRITE(diag_r, diag_w) - AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w) - AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w) - AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w) - AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0x64000000, 0x640007ff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0xffffffff) - AM_RANGE(0x66000000, 0x6600003f) AM_DEVREADWRITE8(ESP_TAG, ncr539x_device, read, write, 0xff000000) - AM_RANGE(0x6e000000, 0x6e000007) AM_DEVICE8(FDC_TAG, n82077aa_device, map, 0xffffffff) - AM_RANGE(0x6e000400, 0x6e000403) AM_READWRITE(fdc_control_r, fdc_control_w) - AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w) - AM_RANGE(0xfefe0000, 0xfefeffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sun3x_state::sun3_460_mem) - AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("p_ram") AM_WRITE(ramwrite_w) - AM_RANGE(0x09000000, 0x09000003) AM_READWRITE(cause_buserr_r, cause_buserr_w) - AM_RANGE(0x50300000, 0x50300003) AM_READ(p4id_r) - AM_RANGE(0x50400000, 0x504fffff) AM_RAM AM_SHARE("bw2_vram") - AM_RANGE(0x5c000f14, 0x5c000f17) AM_READ(fpa_r) - AM_RANGE(0x60000000, 0x60001fff) AM_READWRITE(iommu_r, iommu_w) - AM_RANGE(0x61000000, 0x61000003) AM_READWRITE(enable_r, enable_w) - AM_RANGE(0x61000400, 0x61000403) AM_READWRITE(buserr_r, buserr_w) - AM_RANGE(0x61000800, 0x61000803) AM_READWRITE(diag_r, diag_w) - AM_RANGE(0x61001000, 0x61001003) AM_READWRITE(memreg_r, memreg_w) - AM_RANGE(0x61001004, 0x61001007) AM_READWRITE(memrerraddr_r, memrerraddr_w) - AM_RANGE(0x61001400, 0x61001403) AM_READWRITE(irqctrl_r, irqctrl_w) - AM_RANGE(0x62000000, 0x6200000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x62002000, 0x6200200f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x63000000, 0x6301ffff) AM_ROM AM_REGION("user1",0) - - AM_RANGE(0x6f00003c, 0x6f00003f) AM_READWRITE(printer_r, printer_w) - AM_RANGE(0xfefe0000, 0xfefeffff) AM_ROM AM_REGION("user1",0) -ADDRESS_MAP_END +void sun3x_state::sun3_80_mem(address_map &map) +{ + map(0x00000000, 0x03ffffff).ram().share("p_ram").w(this, FUNC(sun3x_state::ramwrite_w)); + map(0x40000000, 0x40000003).rw(this, FUNC(sun3x_state::cause_buserr_r), FUNC(sun3x_state::cause_buserr_w)); + map(0x50300000, 0x50300003).r(this, FUNC(sun3x_state::p4id_r)); + map(0x50400000, 0x504fffff).ram().share("bw2_vram"); + map(0x60000000, 0x60001fff).rw(this, FUNC(sun3x_state::iommu_r), FUNC(sun3x_state::iommu_w)); + map(0x61000000, 0x61000003).rw(this, FUNC(sun3x_state::enable_r), FUNC(sun3x_state::enable_w)); + map(0x61000400, 0x61000403).rw(this, FUNC(sun3x_state::buserr_r), FUNC(sun3x_state::buserr_w)); + map(0x61000800, 0x61000803).rw(this, FUNC(sun3x_state::diag_r), FUNC(sun3x_state::diag_w)); + map(0x61001000, 0x61001003).rw(this, FUNC(sun3x_state::memreg_r), FUNC(sun3x_state::memreg_w)); + map(0x61001004, 0x61001007).rw(this, FUNC(sun3x_state::memrerraddr_r), FUNC(sun3x_state::memrerraddr_w)); + map(0x61001400, 0x61001403).rw(this, FUNC(sun3x_state::irqctrl_r), FUNC(sun3x_state::irqctrl_w)); + map(0x62000000, 0x6200000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x62002000, 0x6200200f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x63000000, 0x6301ffff).rom().region("user1", 0); + map(0x64000000, 0x640007ff).rw(TIMEKEEPER_TAG, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); + map(0x66000000, 0x6600003f).rw(ESP_TAG, FUNC(ncr539x_device::read), FUNC(ncr539x_device::write)).umask32(0xff000000); + map(0x6e000000, 0x6e000007).m(m_fdc, FUNC(n82077aa_device::map)); + map(0x6e000400, 0x6e000403).rw(this, FUNC(sun3x_state::fdc_control_r), FUNC(sun3x_state::fdc_control_w)); + map(0x6f00003c, 0x6f00003f).rw(this, FUNC(sun3x_state::printer_r), FUNC(sun3x_state::printer_w)); + map(0xfefe0000, 0xfefeffff).rom().region("user1", 0); +} + +void sun3x_state::sun3_460_mem(address_map &map) +{ + map(0x00000000, 0x03ffffff).ram().share("p_ram").w(this, FUNC(sun3x_state::ramwrite_w)); + map(0x09000000, 0x09000003).rw(this, FUNC(sun3x_state::cause_buserr_r), FUNC(sun3x_state::cause_buserr_w)); + map(0x50300000, 0x50300003).r(this, FUNC(sun3x_state::p4id_r)); + map(0x50400000, 0x504fffff).ram().share("bw2_vram"); + map(0x5c000f14, 0x5c000f17).r(this, FUNC(sun3x_state::fpa_r)); + map(0x60000000, 0x60001fff).rw(this, FUNC(sun3x_state::iommu_r), FUNC(sun3x_state::iommu_w)); + map(0x61000000, 0x61000003).rw(this, FUNC(sun3x_state::enable_r), FUNC(sun3x_state::enable_w)); + map(0x61000400, 0x61000403).rw(this, FUNC(sun3x_state::buserr_r), FUNC(sun3x_state::buserr_w)); + map(0x61000800, 0x61000803).rw(this, FUNC(sun3x_state::diag_r), FUNC(sun3x_state::diag_w)); + map(0x61001000, 0x61001003).rw(this, FUNC(sun3x_state::memreg_r), FUNC(sun3x_state::memreg_w)); + map(0x61001004, 0x61001007).rw(this, FUNC(sun3x_state::memrerraddr_r), FUNC(sun3x_state::memrerraddr_w)); + map(0x61001400, 0x61001403).rw(this, FUNC(sun3x_state::irqctrl_r), FUNC(sun3x_state::irqctrl_w)); + map(0x62000000, 0x6200000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x62002000, 0x6200200f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x63000000, 0x6301ffff).rom().region("user1", 0); + + map(0x6f00003c, 0x6f00003f).rw(this, FUNC(sun3x_state::printer_r), FUNC(sun3x_state::printer_w)); + map(0xfefe0000, 0xfefeffff).rom().region("user1", 0); +} READ32_MEMBER( sun3x_state::p4id_r ) { diff --git a/src/mame/drivers/sun4.cpp b/src/mame/drivers/sun4.cpp index 837af9187cd..71e8fb492c5 100644 --- a/src/mame/drivers/sun4.cpp +++ b/src/mame/drivers/sun4.cpp @@ -1331,13 +1331,15 @@ void sun4_state::fcodes_command(int ref, const std::vector<std::string> ¶ms) #endif } -ADDRESS_MAP_START(sun4_state::sun4_mem) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE( sun4_mmu_r, sun4_mmu_w ) -ADDRESS_MAP_END +void sun4_state::sun4_mem(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(sun4_state::sun4_mmu_r), FUNC(sun4_state::sun4_mmu_w)); +} -ADDRESS_MAP_START(sun4_state::sun4c_mem) - AM_RANGE(0x00000000, 0xffffffff) AM_READWRITE( sun4c_mmu_r, sun4c_mmu_w ) -ADDRESS_MAP_END +void sun4_state::sun4c_mem(address_map &map) +{ + map(0x00000000, 0xffffffff).rw(this, FUNC(sun4_state::sun4c_mmu_r), FUNC(sun4_state::sun4c_mmu_w)); +} /* Input ports */ static INPUT_PORTS_START( sun4 ) @@ -1460,29 +1462,32 @@ WRITE32_MEMBER( sun4_state::ram_w ) } } -ADDRESS_MAP_START(sun4_state::type0space_map) - AM_RANGE(0x00000000, 0x03ffffff) AM_READWRITE(ram_r, ram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(sun4_state::type1space_map) - AM_RANGE(0x00000000, 0x0000000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x02000000, 0x020007ff) AM_DEVREADWRITE8(TIMEKEEPER_TAG, timekeeper_device, read, write, 0xffffffff) - AM_RANGE(0x03000000, 0x0300000f) AM_READWRITE(timer_r, timer_w) AM_MIRROR(0xfffff0) - AM_RANGE(0x05000000, 0x05000003) AM_READWRITE8(irq_r, irq_w, 0xffffffff) - AM_RANGE(0x06000000, 0x0607ffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x07200000, 0x07200003) AM_READWRITE8(fdc_r, fdc_w, 0xffffffff) - AM_RANGE(0x08000000, 0x08000003) AM_READ(ss1_sl0_id) // slot 0 contains SCSI/DMA/Ethernet - AM_RANGE(0x08400000, 0x0840000f) AM_READWRITE(dma_r, dma_w) - AM_RANGE(0x08800000, 0x0880001f) AM_DEVICE8("scsibus:7:ncr5390", ncr5390_device, map, 0xff000000) - AM_RANGE(0x0e000000, 0x0e000003) AM_READ(ss1_sl3_id) // slot 3 contains video board - AM_RANGE(0x0e800000, 0x0e8fffff) AM_RAM AM_SHARE("bw2_vram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(sun4_state::type1space_s4_map) - AM_RANGE(0x00000000, 0x0000000f) AM_DEVREADWRITE8(SCC1_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) - AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8(SCC2_TAG, z80scc_device, ba_cd_inv_r, ba_cd_inv_w, 0xff00ff00) -ADDRESS_MAP_END +void sun4_state::type0space_map(address_map &map) +{ + map(0x00000000, 0x03ffffff).rw(this, FUNC(sun4_state::ram_r), FUNC(sun4_state::ram_w)); +} + +void sun4_state::type1space_map(address_map &map) +{ + map(0x00000000, 0x0000000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x01000000, 0x0100000f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x02000000, 0x020007ff).rw(m_timekpr, FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); + map(0x03000000, 0x0300000f).rw(this, FUNC(sun4_state::timer_r), FUNC(sun4_state::timer_w)).mirror(0xfffff0); + map(0x05000000, 0x05000003).rw(this, FUNC(sun4_state::irq_r), FUNC(sun4_state::irq_w)); + map(0x06000000, 0x0607ffff).rom().region("user1", 0); + map(0x07200000, 0x07200003).rw(this, FUNC(sun4_state::fdc_r), FUNC(sun4_state::fdc_w)); + map(0x08000000, 0x08000003).r(this, FUNC(sun4_state::ss1_sl0_id)); // slot 0 contains SCSI/DMA/Ethernet + map(0x08400000, 0x0840000f).rw(this, FUNC(sun4_state::dma_r), FUNC(sun4_state::dma_w)); + map(0x08800000, 0x0880001f).m(m_scsi, FUNC(ncr5390_device::map)).umask32(0xff000000); + map(0x0e000000, 0x0e000003).r(this, FUNC(sun4_state::ss1_sl3_id)); // slot 3 contains video board + map(0x0e800000, 0x0e8fffff).ram().share("bw2_vram"); +} + +void sun4_state::type1space_s4_map(address_map &map) +{ + map(0x00000000, 0x0000000f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); + map(0x01000000, 0x0100000f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0xff00ff00); +} READ8_MEMBER( sun4_state::fdc_r ) { diff --git a/src/mame/drivers/suna16.cpp b/src/mame/drivers/suna16.cpp index 121c6d0da25..eb125547a6c 100644 --- a/src/mame/drivers/suna16.cpp +++ b/src/mame/drivers/suna16.cpp @@ -95,19 +95,20 @@ WRITE16_MEMBER(suna16_state::bestbest_coin_w) Back Street Soccer ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::bssoccer_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM // RAM - AM_RANGE(0x400000, 0x4001ff) AM_READWRITE(paletteram_r, paletteram_w) // Banked Palette - AM_RANGE(0x400200, 0x400fff) AM_RAM // - AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("P2") AM_WRITE(flipscreen_w) // Flip Screen - AM_RANGE(0xa00004, 0xa00005) AM_READ_PORT("P3") AM_WRITE(bssoccer_leds_w) // Leds - AM_RANGE(0xa00006, 0xa00007) AM_READ_PORT("P4") AM_WRITENOP // ? IRQ 1 Ack - AM_RANGE(0xa00008, 0xa00009) AM_READ_PORT("DSW1") AM_WRITENOP // ? IRQ 2 Ack - AM_RANGE(0xa0000a, 0xa0000b) AM_READ_PORT("DSW2") -ADDRESS_MAP_END +void suna16_state::bssoccer_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x200000, 0x203fff).ram(); // RAM + map(0x400000, 0x4001ff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); // Banked Palette + map(0x400200, 0x400fff).ram(); // + map(0x600000, 0x61ffff).ram().share("spriteram"); // Sprites + map(0xa00000, 0xa00001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU + map(0xa00002, 0xa00003).portr("P2").w(this, FUNC(suna16_state::flipscreen_w)); // Flip Screen + map(0xa00004, 0xa00005).portr("P3").w(this, FUNC(suna16_state::bssoccer_leds_w)); // Leds + map(0xa00006, 0xa00007).portr("P4").nopw(); // ? IRQ 1 Ack + map(0xa00008, 0xa00009).portr("DSW1").nopw(); // ? IRQ 2 Ack + map(0xa0000a, 0xa0000b).portr("DSW2"); +} /*************************************************************************** @@ -151,38 +152,40 @@ WRITE8_MEMBER(suna16_state::uballoon_prot_w) } } -ADDRESS_MAP_START(suna16_state::uballoon_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x800000, 0x803fff) AM_RAM // RAM - AM_RANGE(0x200000, 0x2001ff) AM_READWRITE(paletteram_r, paletteram_w) // Banked Palette - AM_RANGE(0x200200, 0x200fff) AM_RAM // - AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x1e0000) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") - AM_RANGE(0x600004, 0x600005) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) // Flip Screen - AM_RANGE(0x600006, 0x600007) AM_READ_PORT("DSW2") - AM_RANGE(0x600008, 0x600009) AM_WRITE(uballoon_leds_w) // Leds - AM_RANGE(0x60000c, 0x60000d) AM_WRITENOP // ? IRQ 1 Ack - AM_RANGE(0x600010, 0x600011) AM_WRITENOP // ? IRQ 1 Ack - AM_RANGE(0xa00000, 0xa0ffff) AM_READWRITE8(uballoon_prot_r, uballoon_prot_w, 0x00ff) // Protection -ADDRESS_MAP_END +void suna16_state::uballoon_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x800000, 0x803fff).ram(); // RAM + map(0x200000, 0x2001ff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); // Banked Palette + map(0x200200, 0x200fff).ram(); // + map(0x400000, 0x41ffff).mirror(0x1e0000).ram().share("spriteram"); // Sprites + map(0x600000, 0x600001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU + map(0x600002, 0x600003).portr("P2"); + map(0x600004, 0x600005).portr("DSW1").w(this, FUNC(suna16_state::flipscreen_w)); // Flip Screen + map(0x600006, 0x600007).portr("DSW2"); + map(0x600008, 0x600009).w(this, FUNC(suna16_state::uballoon_leds_w)); // Leds + map(0x60000c, 0x60000d).nopw(); // ? IRQ 1 Ack + map(0x600010, 0x600011).nopw(); // ? IRQ 1 Ack + map(0xa00000, 0xa0ffff).rw(this, FUNC(suna16_state::uballoon_prot_r), FUNC(suna16_state::uballoon_prot_w)).umask16(0x00ff); // Protection +} /*************************************************************************** Suna Quiz 6000 Academy ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::sunaq_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") AM_WRITE(flipscreen_w) // Flip Screen - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW1") - AM_RANGE(0x500006, 0x500007) AM_READ_PORT("DSW2") // (unused?) - AM_RANGE(0x540000, 0x5401ff) AM_READWRITE(paletteram_r, paletteram_w) - AM_RANGE(0x540200, 0x540fff) AM_RAM // RAM - AM_RANGE(0x580000, 0x583fff) AM_RAM // RAM - AM_RANGE(0x5c0000, 0x5dffff) AM_RAM AM_SHARE("spriteram") // Sprites -ADDRESS_MAP_END +void suna16_state::sunaq_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x500000, 0x500001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU + map(0x500002, 0x500003).portr("P2").w(this, FUNC(suna16_state::flipscreen_w)); // Flip Screen + map(0x500004, 0x500005).portr("DSW1"); + map(0x500006, 0x500007).portr("DSW2"); // (unused?) + map(0x540000, 0x5401ff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); + map(0x540200, 0x540fff).ram(); // RAM + map(0x580000, 0x583fff).ram(); // RAM + map(0x5c0000, 0x5dffff).ram().share("spriteram"); // Sprites +} /*************************************************************************** @@ -205,20 +208,21 @@ WRITE8_MEMBER(suna16_state::bestbest_prot_w) } } -ADDRESS_MAP_START(suna16_state::bestbest_map) - AM_RANGE( 0x000000, 0x03ffff ) AM_ROM AM_MIRROR(0xc0000) // ROM - AM_RANGE( 0x200000, 0x2fffff ) AM_ROM AM_REGION("user1", 0) // ROM - AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("P1") AM_WRITE(soundlatch_w) // To Sound CPU - AM_RANGE( 0x500002, 0x500003 ) AM_READ_PORT("P2") AM_WRITE(bestbest_flipscreen_w) // P2 + Coins, Flip Screen - AM_RANGE( 0x500004, 0x500005 ) AM_READ_PORT("DSW") AM_WRITE(bestbest_coin_w) // Coin Counter - AM_RANGE( 0x500008, 0x500009 ) AM_WRITE8(bestbest_prot_w, 0x00ff) // Protection - AM_RANGE( 0x500018, 0x500019 ) AM_READ8(bestbest_prot_r, 0x00ff) // " - AM_RANGE( 0x540000, 0x540fff ) AM_READWRITE(paletteram_r, paletteram_w ) // Banked(?) Palette - AM_RANGE( 0x541000, 0x54ffff ) AM_RAM // - AM_RANGE( 0x580000, 0x58ffff ) AM_RAM // RAM - AM_RANGE( 0x5c0000, 0x5dffff ) AM_RAM AM_SHARE("spriteram") // Sprites (Chip 1) - AM_RANGE( 0x5e0000, 0x5fffff ) AM_RAM AM_SHARE("spriteram2") // Sprites (Chip 2) -ADDRESS_MAP_END +void suna16_state::bestbest_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().mirror(0xc0000); // ROM + map(0x200000, 0x2fffff).rom().region("user1", 0); // ROM + map(0x500000, 0x500001).portr("P1").w(this, FUNC(suna16_state::soundlatch_w)); // To Sound CPU + map(0x500002, 0x500003).portr("P2").w(this, FUNC(suna16_state::bestbest_flipscreen_w)); // P2 + Coins, Flip Screen + map(0x500004, 0x500005).portr("DSW").w(this, FUNC(suna16_state::bestbest_coin_w)); // Coin Counter + map(0x500009, 0x500009).w(this, FUNC(suna16_state::bestbest_prot_w)); // Protection + map(0x500019, 0x500019).r(this, FUNC(suna16_state::bestbest_prot_r)); // " + map(0x540000, 0x540fff).rw(this, FUNC(suna16_state::paletteram_r), FUNC(suna16_state::paletteram_w)); // Banked(?) Palette + map(0x541000, 0x54ffff).ram(); // + map(0x580000, 0x58ffff).ram(); // RAM + map(0x5c0000, 0x5dffff).ram().share("spriteram"); // Sprites (Chip 1) + map(0x5e0000, 0x5fffff).ram().share("spriteram2"); // Sprites (Chip 2) +} MACHINE_START_MEMBER(suna16_state,bestbest) { @@ -241,49 +245,53 @@ MACHINE_START_MEMBER(suna16_state,bestbest) Back Street Soccer ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::bssoccer_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 - AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU - AM_RANGE(0xfd00, 0xfd00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80 #1 - AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) // To PCM Z80 #2 -ADDRESS_MAP_END +void suna16_state::bssoccer_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0xf000, 0xf7ff).ram(); // RAM + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151 + map(0xfc00, 0xfc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU + map(0xfd00, 0xfd00).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80 #1 + map(0xfe00, 0xfe00).w("soundlatch3", FUNC(generic_latch_8_device::write)); // To PCM Z80 #2 +} /*************************************************************************** Ultra Balloon ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::uballoon_sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM // ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 - AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80 -ADDRESS_MAP_END +void suna16_state::uballoon_sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); // ROM + map(0xf000, 0xf7ff).ram(); // RAM + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151 + map(0xfc00, 0xfc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80 +} /*************************************************************************** Suna Quiz 6000 Academy ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::sunaq_sound_map) - AM_RANGE(0x0000, 0xe82f) AM_ROM // ROM - AM_RANGE(0xe830, 0xf7ff) AM_RAM // RAM (writes to efxx, could be a program bug tho) - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151 - AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80 -ADDRESS_MAP_END +void suna16_state::sunaq_sound_map(address_map &map) +{ + map(0x0000, 0xe82f).rom(); // ROM + map(0xe830, 0xf7ff).ram(); // RAM (writes to efxx, could be a program bug tho) + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); // YM2151 + map(0xfc00, 0xfc00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80 +} /*************************************************************************** Best Of Best ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::bestbest_sound_map) - AM_RANGE( 0x0000, 0xbfff ) AM_ROM // ROM - AM_RANGE( 0xc000, 0xc001 ) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE( 0xc002, 0xc003 ) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) // AY8910 - AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // RAM - AM_RANGE( 0xf000, 0xf000 ) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80 - AM_RANGE( 0xf800, 0xf800 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void suna16_state::bestbest_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); // ROM + map(0xc000, 0xc001).w("ymsnd", FUNC(ym3526_device::write)); + map(0xc002, 0xc003).w("aysnd", FUNC(ay8910_device::address_data_w)); // AY8910 + map(0xe000, 0xe7ff).ram(); // RAM + map(0xf000, 0xf000).w("soundlatch2", FUNC(generic_latch_8_device::write)); // To PCM Z80 + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU +} /*************************************************************************** @@ -325,33 +333,37 @@ WRITE8_MEMBER(suna16_state::bssoccer_pcm_2_bankswitch_w) /* Memory maps: Yes, *no* RAM */ -ADDRESS_MAP_START(suna16_state::bssoccer_pcm_1_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM // ROM - AM_RANGE(0x1000, 0xffff) AM_ROMBANK("bank1") // Banked ROM -ADDRESS_MAP_END +void suna16_state::bssoccer_pcm_1_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); // ROM + map(0x1000, 0xffff).bankr("bank1"); // Banked ROM +} -ADDRESS_MAP_START(suna16_state::bssoccer_pcm_2_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM // ROM - AM_RANGE(0x1000, 0xffff) AM_ROMBANK("bank2") // Banked ROM -ADDRESS_MAP_END +void suna16_state::bssoccer_pcm_2_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); // ROM + map(0x1000, 0xffff).bankr("bank2"); // Banked ROM +} -ADDRESS_MAP_START(suna16_state::bssoccer_pcm_1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80 - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_WRITE(bssoccer_pcm_1_bankswitch_w) // Rom Bank -ADDRESS_MAP_END +void suna16_state::bssoccer_pcm_1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From The Sound Z80 + map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write)); + map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w(this, FUNC(suna16_state::bssoccer_pcm_1_bankswitch_w)); // Rom Bank +} -ADDRESS_MAP_START(suna16_state::bssoccer_pcm_2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) // From The Sound Z80 - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac2", dac_byte_interface, write) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac2", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_WRITE(bssoccer_pcm_2_bankswitch_w) // Rom Bank -ADDRESS_MAP_END +void suna16_state::bssoccer_pcm_2_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch3", FUNC(generic_latch_8_device::read)); // From The Sound Z80 + map(0x00, 0x00).w("ldac2", FUNC(dac_byte_interface::write)); + map(0x01, 0x01).w("rdac2", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w(this, FUNC(suna16_state::bssoccer_pcm_2_bankswitch_w)); // Rom Bank +} /*************************************************************************** @@ -369,18 +381,20 @@ WRITE8_MEMBER(suna16_state::uballoon_pcm_1_bankswitch_w) /* Memory maps: Yes, *no* RAM */ -ADDRESS_MAP_START(suna16_state::uballoon_pcm_1_map) - AM_RANGE(0x0000, 0x03ff) AM_ROM // ROM - AM_RANGE(0x0400, 0xffff) AM_ROMBANK("bank1") // Banked ROM -ADDRESS_MAP_END +void suna16_state::uballoon_pcm_1_map(address_map &map) +{ + map(0x0000, 0x03ff).rom(); // ROM + map(0x0400, 0xffff).bankr("bank1"); // Banked ROM +} -ADDRESS_MAP_START(suna16_state::uballoon_pcm_1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80 - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_WRITE(uballoon_pcm_1_bankswitch_w) // Rom Bank -ADDRESS_MAP_END +void suna16_state::uballoon_pcm_1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From The Sound Z80 + map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write)); + map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w(this, FUNC(suna16_state::uballoon_pcm_1_bankswitch_w)); // Rom Bank +} MACHINE_START_MEMBER(suna16_state,uballoon) { @@ -400,18 +414,20 @@ MACHINE_RESET_MEMBER(suna16_state,uballoon) Best Of Best ***************************************************************************/ -ADDRESS_MAP_START(suna16_state::bestbest_pcm_1_map) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(suna16_state::bestbest_pcm_1_iomap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80 - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("ldac2", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("rdac2", dac_byte_interface, write) -ADDRESS_MAP_END +void suna16_state::bestbest_pcm_1_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} + +void suna16_state::bestbest_pcm_1_iomap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From The Sound Z80 + map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write)); + map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write)); + map(0x02, 0x02).w("ldac2", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("rdac2", FUNC(dac_byte_interface::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/suna8.cpp b/src/mame/drivers/suna8.cpp index 153bbb7d4b2..cc3792ec72a 100644 --- a/src/mame/drivers/suna8.cpp +++ b/src/mame/drivers/suna8.cpp @@ -558,26 +558,28 @@ WRITE8_MEMBER(suna8_state::hardhead_flipscreen_w) machine().bookkeeping().coin_lockout_w(1, data & 0x10); } -ADDRESS_MAP_START(suna8_state::hardhead_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - AM_RANGE(0xc000, 0xd7ff) AM_RAM // RAM - AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette - AM_RANGE(0xda00, 0xda00) AM_RAM_READ(hardhead_ip_r) AM_SHARE("hardhead_ip") // Input Port Select - AM_RANGE(0xda80, 0xda80) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(hardhead_bankswitch_w ) // ROM Banking - AM_RANGE(0xdb00, 0xdb00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU - AM_RANGE(0xdb80, 0xdb80) AM_WRITE(hardhead_flipscreen_w ) // Flip Screen + Coin Lockout - AM_RANGE(0xdc00, 0xdc00) AM_NOP // <- R (after bank select) - AM_RANGE(0xdc80, 0xdc80) AM_NOP // <- R (after bank select) - AM_RANGE(0xdd00, 0xdd00) AM_NOP // <- R (after ip select) - AM_RANGE(0xdd80, 0xddff) AM_READWRITE(hardhead_protection_r, hardhead_protection_w ) // Protection - AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(suna8_spriteram_w) AM_SHARE("spriteram") // Sprites -ADDRESS_MAP_END - -ADDRESS_MAP_START(suna8_state::hardhead_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READNOP // ? IRQ Ack -ADDRESS_MAP_END +void suna8_state::hardhead_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + map(0xc000, 0xd7ff).ram(); // RAM + map(0xd800, 0xd9ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette + map(0xda00, 0xda00).ram().r(this, FUNC(suna8_state::hardhead_ip_r)).share("hardhead_ip"); // Input Port Select + map(0xda80, 0xda80).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(this, FUNC(suna8_state::hardhead_bankswitch_w)); // ROM Banking + map(0xdb00, 0xdb00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0xdb80, 0xdb80).w(this, FUNC(suna8_state::hardhead_flipscreen_w)); // Flip Screen + Coin Lockout + map(0xdc00, 0xdc00).noprw(); // <- R (after bank select) + map(0xdc80, 0xdc80).noprw(); // <- R (after bank select) + map(0xdd00, 0xdd00).noprw(); // <- R (after ip select) + map(0xdd80, 0xddff).rw(this, FUNC(suna8_state::hardhead_protection_r), FUNC(suna8_state::hardhead_protection_w)); // Protection + map(0xe000, 0xffff).ram().w(this, FUNC(suna8_state::suna8_spriteram_w)).share("spriteram"); // Sprites +} + +void suna8_state::hardhead_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopr(); // ? IRQ Ack +} /*************************************************************************** Rough Ranger @@ -625,28 +627,30 @@ WRITE8_MEMBER(suna8_state::sranger_prot_w) m_maincpu->space(AS_PROGRAM).write_byte(0xcd99,0xff); } -ADDRESS_MAP_START(suna8_state::rranger_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU - AM_RANGE(0xc002, 0xc002) AM_WRITE(rranger_bankswitch_w ) // ROM Banking - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1") // P1 (Inputs) - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xc004, 0xc004) AM_READ(rranger_soundstatus_r ) // Latch Status? - AM_RANGE(0xc200, 0xc200) AM_READNOP AM_WRITE(sranger_prot_w)// Protection? - AM_RANGE(0xc280, 0xc280) AM_WRITENOP // ? NMI Ack - AM_RANGE(0xc280, 0xc280) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0xc2c0, 0xc2c0) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette - AM_RANGE(0xc800, 0xdfff) AM_RAM // Work RAM - AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(suna8_spriteram_w) AM_SHARE("spriteram") // Sprites -ADDRESS_MAP_END - - -ADDRESS_MAP_START(suna8_state::rranger_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READNOP // ? IRQ Ack -ADDRESS_MAP_END +void suna8_state::rranger_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + map(0xc000, 0xc000).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0xc002, 0xc002).w(this, FUNC(suna8_state::rranger_bankswitch_w)); // ROM Banking + map(0xc002, 0xc002).portr("P1"); // P1 (Inputs) + map(0xc003, 0xc003).portr("P2"); // P2 + map(0xc004, 0xc004).r(this, FUNC(suna8_state::rranger_soundstatus_r)); // Latch Status? + map(0xc200, 0xc200).nopr().w(this, FUNC(suna8_state::sranger_prot_w));// Protection? + map(0xc280, 0xc280).nopw(); // ? NMI Ack + map(0xc280, 0xc280).portr("DSW1"); // DSW 1 + map(0xc2c0, 0xc2c0).portr("DSW2"); // DSW 2 + map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette + map(0xc800, 0xdfff).ram(); // Work RAM + map(0xe000, 0xffff).ram().w(this, FUNC(suna8_state::suna8_spriteram_w)).share("spriteram"); // Sprites +} + + +void suna8_state::rranger_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopr(); // ? IRQ Ack +} /*************************************************************************** Brick Zone @@ -732,30 +736,31 @@ WRITE8_MEMBER(suna8_state::brickzn_palbank_w) if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown palettebank bits: %02X\n",m_maincpu->pc(),data); } -ADDRESS_MAP_START(suna8_state::brickzn11_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - - AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU - AM_RANGE(0xc040, 0xc040) AM_WRITE(brickzn_sprbank_w ) // Sprite RAM Bank + Flip Screen + Protection - AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_rombank_w ) // ROM Bank - AM_RANGE(0xc080, 0xc080) AM_WRITE(brickzn_leds_w ) // Leds - AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE(brickzn_palbank_w ) // Palette RAM Bank +void suna8_state::brickzn11_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + + map(0xc000, 0xc000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0xc040, 0xc040).w(this, FUNC(suna8_state::brickzn_sprbank_w)); // Sprite RAM Bank + Flip Screen + Protection + map(0xc060, 0xc060).w(this, FUNC(suna8_state::brickzn_rombank_w)); // ROM Bank + map(0xc080, 0xc080).w(this, FUNC(suna8_state::brickzn_leds_w)); // Leds + map(0xc0a0, 0xc0a0).w(this, FUNC(suna8_state::brickzn_palbank_w)); // Palette RAM Bank // AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_prot2_w ) // Protection 2 - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("P1") // P1 (Buttons) - AM_RANGE(0xc101, 0xc101) AM_READ_PORT("P2") // P2 (Buttons) - AM_RANGE(0xc102, 0xc102) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0xc103, 0xc103) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc108, 0xc108) AM_READ_PORT("SPIN1") // P1 (Spinner) - AM_RANGE(0xc10c, 0xc10c) AM_READ_PORT("SPIN2") // P2 (Spinner) + map(0xc100, 0xc100).portr("P1"); // P1 (Buttons) + map(0xc101, 0xc101).portr("P2"); // P2 (Buttons) + map(0xc102, 0xc102).portr("DSW1"); // DSW 1 + map(0xc103, 0xc103).portr("DSW2"); // DSW 2 + map(0xc108, 0xc108).portr("SPIN1"); // P1 (Spinner) + map(0xc10c, 0xc10c).portr("SPIN2"); // P2 (Spinner) - AM_RANGE(0xc140, 0xc140) AM_READ(brickzn_cheats_r) // Cheats / Debugging Inputs + map(0xc140, 0xc140).r(this, FUNC(suna8_state::brickzn_cheats_r)); // Cheats / Debugging Inputs - AM_RANGE(0xc600, 0xc7ff) AM_READWRITE(banked_paletteram_r, brickzn_banked_paletteram_w) AM_SHARE("paletteram") // Palette (Banked) - AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("wram") // Work RAM - AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) -ADDRESS_MAP_END + map(0xc600, 0xc7ff).rw(this, FUNC(suna8_state::banked_paletteram_r), FUNC(suna8_state::brickzn_banked_paletteram_w)).share("paletteram"); // Palette (Banked) + map(0xc800, 0xdfff).ram().share("wram"); // Work RAM + map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked) +} /* (newer sets only) @@ -860,44 +865,47 @@ WRITE8_MEMBER(suna8_state::brickzn_disab_palram_w) m_paletteram_enab = 0; } -ADDRESS_MAP_START(suna8_state::brickzn_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM +void suna8_state::brickzn_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM // c000 writes before reading buttons // c010 writes? - AM_RANGE(0xc040, 0xc040) AM_WRITE(brickzn_rombank_w ) // ROM Bank - AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_sprbank_w ) // Sprite RAM Bank + Flip Screen + Protection + map(0xc040, 0xc040).w(this, FUNC(suna8_state::brickzn_rombank_w)); // ROM Bank + map(0xc060, 0xc060).w(this, FUNC(suna8_state::brickzn_sprbank_w)); // Sprite RAM Bank + Flip Screen + Protection // c080 writes? // c090 writes? - AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE(brickzn_multi_w ) // Palette RAM Bank / Sound Latch / ... - AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_prot2_w ) // Protection 2 + map(0xc0a0, 0xc0a0).w(this, FUNC(suna8_state::brickzn_multi_w)); // Palette RAM Bank / Sound Latch / ... + map(0xc0c0, 0xc0c0).w(this, FUNC(suna8_state::brickzn_prot2_w)); // Protection 2 - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("P1") // P1 (Buttons) - AM_RANGE(0xc101, 0xc101) AM_READ_PORT("P2") // P2 (Buttons) - AM_RANGE(0xc102, 0xc102) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0xc103, 0xc103) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc108, 0xc108) AM_READ_PORT("SPIN1") // P1 (Spinner) - AM_RANGE(0xc10c, 0xc10c) AM_READ_PORT("SPIN2") // P2 (Spinner) + map(0xc100, 0xc100).portr("P1"); // P1 (Buttons) + map(0xc101, 0xc101).portr("P2"); // P2 (Buttons) + map(0xc102, 0xc102).portr("DSW1"); // DSW 1 + map(0xc103, 0xc103).portr("DSW2"); // DSW 2 + map(0xc108, 0xc108).portr("SPIN1"); // P1 (Spinner) + map(0xc10c, 0xc10c).portr("SPIN2"); // P2 (Spinner) - AM_RANGE(0xc140, 0xc140) AM_READ(brickzn_cheats_r) // Cheats / Debugging Inputs + map(0xc140, 0xc140).r(this, FUNC(suna8_state::brickzn_cheats_r)); // Cheats / Debugging Inputs // c144 reads? // c14a reads? - AM_RANGE(0xc600, 0xc7ff) AM_READWRITE(banked_paletteram_r, brickzn_banked_paletteram_w) AM_SHARE("paletteram") // Palette (Banked) - AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("wram") // Work RAM - AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) -ADDRESS_MAP_END + map(0xc600, 0xc7ff).rw(this, FUNC(suna8_state::banked_paletteram_r), FUNC(suna8_state::brickzn_banked_paletteram_w)).share("paletteram"); // Palette (Banked) + map(0xc800, 0xdfff).ram().share("wram"); // Work RAM + map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked) +} -ADDRESS_MAP_START(suna8_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") -ADDRESS_MAP_END +void suna8_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); +} -ADDRESS_MAP_START(suna8_state::brickzn_io_map) - AM_RANGE(0x0000, 0x0000) AM_WRITE(brickzn_disab_palram_w ) // Disable Palette RAM - AM_RANGE(0x00a1, 0x00a1) AM_WRITE(brickzn_enab_palram_w ) // Enable Palette RAM -ADDRESS_MAP_END +void suna8_state::brickzn_io_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(suna8_state::brickzn_disab_palram_w)); // Disable Palette RAM + map(0x00a1, 0x00a1).w(this, FUNC(suna8_state::brickzn_enab_palram_w)); // Enable Palette RAM +} /*************************************************************************** Hard Head 2 @@ -974,45 +982,46 @@ WRITE8_MEMBER(suna8_state::hardhea2_rambank_1_w) } -ADDRESS_MAP_START(suna8_state::hardhea2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") // P1 (Inputs) - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2 - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("BUTTONS") // vblank? - AM_RANGE(0xc200, 0xc200) AM_WRITE(hardhea2_spritebank_w ) // Sprite RAM Bank - AM_RANGE(0xc280, 0xc280) AM_WRITE(hardhea2_rombank_w ) // ROM Bank (?mirrored up to c2ff?) +void suna8_state::hardhea2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + map(0xc000, 0xc000).portr("P1"); // P1 (Inputs) + map(0xc001, 0xc001).portr("P2"); // P2 + map(0xc002, 0xc002).portr("DSW1"); // DSW 1 + map(0xc003, 0xc003).portr("DSW2"); // DSW 2 + map(0xc080, 0xc080).portr("BUTTONS"); // vblank? + map(0xc200, 0xc200).w(this, FUNC(suna8_state::hardhea2_spritebank_w)); // Sprite RAM Bank + map(0xc280, 0xc280).w(this, FUNC(suna8_state::hardhea2_rombank_w)); // ROM Bank (?mirrored up to c2ff?) // *** Protection - AM_RANGE(0xc28c, 0xc28c) AM_WRITE(hardhea2_rombank_w ) + map(0xc28c, 0xc28c).w(this, FUNC(suna8_state::hardhea2_rombank_w)); // Protection *** - AM_RANGE(0xc300, 0xc300) AM_WRITE(hardhea2_flipscreen_w ) // Flip Screen - AM_RANGE(0xc380, 0xc380) AM_WRITE(hardhea2_nmi_w ) // ? NMI related ? - AM_RANGE(0xc400, 0xc400) AM_WRITE(hardhea2_leds_w ) // Leds + Coin Counter - AM_RANGE(0xc480, 0xc480) AM_WRITENOP // ~ROM Bank - AM_RANGE(0xc500, 0xc500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU + map(0xc300, 0xc300).w(this, FUNC(suna8_state::hardhea2_flipscreen_w)); // Flip Screen + map(0xc380, 0xc380).w(this, FUNC(suna8_state::hardhea2_nmi_w)); // ? NMI related ? + map(0xc400, 0xc400).w(this, FUNC(suna8_state::hardhea2_leds_w)); // Leds + Coin Counter + map(0xc480, 0xc480).nopw(); // ~ROM Bank + map(0xc500, 0xc500).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU // *** Protection - AM_RANGE(0xc50f, 0xc50f) AM_WRITE(hardhea2_spritebank_1_w ) - AM_RANGE(0xc508, 0xc508) AM_WRITE(hardhea2_spritebank_0_w ) + map(0xc50f, 0xc50f).w(this, FUNC(suna8_state::hardhea2_spritebank_1_w)); + map(0xc508, 0xc508).w(this, FUNC(suna8_state::hardhea2_spritebank_0_w)); - AM_RANGE(0xc507, 0xc507) AM_WRITE(hardhea2_rambank_1_w ) - AM_RANGE(0xc522, 0xc522) AM_WRITE(hardhea2_rambank_0_w ) + map(0xc507, 0xc507).w(this, FUNC(suna8_state::hardhea2_rambank_1_w)); + map(0xc522, 0xc522).w(this, FUNC(suna8_state::hardhea2_rambank_0_w)); - AM_RANGE(0xc556, 0xc556) AM_WRITE(hardhea2_rambank_1_w ) - AM_RANGE(0xc528, 0xc528) AM_WRITE(hardhea2_rambank_0_w ) + map(0xc556, 0xc556).w(this, FUNC(suna8_state::hardhea2_rambank_1_w)); + map(0xc528, 0xc528).w(this, FUNC(suna8_state::hardhea2_rambank_0_w)); - AM_RANGE(0xc560, 0xc560) AM_WRITE(hardhea2_rambank_1_w ) - AM_RANGE(0xc533, 0xc533) AM_WRITE(hardhea2_rambank_0_w ) + map(0xc560, 0xc560).w(this, FUNC(suna8_state::hardhea2_rambank_1_w)); + map(0xc533, 0xc533).w(this, FUNC(suna8_state::hardhea2_rambank_0_w)); // Protection *** - AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette - AM_RANGE(0xc800, 0xdfff) AM_RAMBANK("bank2") // Work RAM (Banked) - AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) -ADDRESS_MAP_END + map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette + map(0xc800, 0xdfff).bankrw("bank2"); // Work RAM (Banked) + map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked) +} /*************************************************************************** @@ -1094,29 +1103,30 @@ WRITE8_MEMBER(suna8_state::starfigh_leds_w) logerror("CPU #0 - PC %04X: rom bank = %02X\n",m_maincpu->pc(), m_rombank); } -ADDRESS_MAP_START(suna8_state::starfigh_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") // P1 (Inputs) - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2 - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc080, 0xc080) AM_READ(starfigh_cheats_r ) // Cheats? - - AM_RANGE(0xc200, 0xc200) AM_WRITE(starfigh_spritebank_w ) // Sprite RAM Bank - AM_RANGE(0xc280, 0xc2ff) AM_WRITE(starfigh_rombank_latch_w ) // ROM Bank Latch (?mirrored up to c2ff?) - AM_RANGE(0xc300, 0xc300) AM_WRITE(hardhea2_flipscreen_w ) // Flip Screen - AM_RANGE(0xc380, 0xc3ff) AM_WRITE(starfigh_spritebank_latch_w ) // Sprite RAM Bank Latch - AM_RANGE(0xc400, 0xc47f) AM_WRITE(starfigh_leds_w ) // Leds + Coin Counter + ROM Bank +void suna8_state::starfigh_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + + map(0xc000, 0xc000).portr("P1"); // P1 (Inputs) + map(0xc001, 0xc001).portr("P2"); // P2 + map(0xc002, 0xc002).portr("DSW1"); // DSW 1 + map(0xc003, 0xc003).portr("DSW2"); // DSW 2 + map(0xc080, 0xc080).r(this, FUNC(suna8_state::starfigh_cheats_r)); // Cheats? + + map(0xc200, 0xc200).w(this, FUNC(suna8_state::starfigh_spritebank_w)); // Sprite RAM Bank + map(0xc280, 0xc2ff).w(this, FUNC(suna8_state::starfigh_rombank_latch_w)); // ROM Bank Latch (?mirrored up to c2ff?) + map(0xc300, 0xc300).w(this, FUNC(suna8_state::hardhea2_flipscreen_w)); // Flip Screen + map(0xc380, 0xc3ff).w(this, FUNC(suna8_state::starfigh_spritebank_latch_w)); // Sprite RAM Bank Latch + map(0xc400, 0xc47f).w(this, FUNC(suna8_state::starfigh_leds_w)); // Leds + Coin Counter + ROM Bank // c480 write? - AM_RANGE(0xc500, 0xc500) AM_WRITE(starfigh_sound_latch_w ) // To Sound CPU (can be disabled) + map(0xc500, 0xc500).w(this, FUNC(suna8_state::starfigh_sound_latch_w)); // To Sound CPU (can be disabled) // (c522 + R & 0x1f) write? - AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette - AM_RANGE(0xc800, 0xdfff) AM_RAM // Work RAM - AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) -ADDRESS_MAP_END + map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette + map(0xc800, 0xdfff).ram(); // Work RAM + map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked) +} /*************************************************************************** @@ -1222,29 +1232,30 @@ READ8_MEMBER(suna8_state::sparkman_c0a3_r) return (m_screen->frame_number() & 1) ? 0x80 : 0; } -ADDRESS_MAP_START(suna8_state::sparkman_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1") // P1 (Inputs) - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2 - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc080, 0xc080) AM_READ_PORT("BUTTONS") // Buttons - AM_RANGE(0xc0a3, 0xc0a3) AM_READ(sparkman_c0a3_r ) // ??? - - AM_RANGE(0xc200, 0xc27f) AM_WRITE(sparkman_spritebank_w ) // Sprite RAM Bank - AM_RANGE(0xc280, 0xc2ff) AM_WRITE(sparkman_rombank_latch_w ) // ROM Bank Latch - AM_RANGE(0xc300, 0xc37f) AM_WRITE(sparkman_spritebank_latch_w ) // Sprite RAM Bank Latch (Invert) + Flip Screen - AM_RANGE(0xc380, 0xc3ff) AM_WRITE(sparkman_write_disable_w ) // Work RAM Writes Disable + NMI Enable - AM_RANGE(0xc400, 0xc47f) AM_WRITE(sparkman_rombank_w ) // ROM Bank + Leds - AM_RANGE(0xc480, 0xc480) AM_WRITE(sparkman_coin_counter_w ) // Coin Counter - AM_RANGE(0xc500, 0xc57f) AM_WRITE(starfigh_sound_latch_w ) // To Sound CPU (can be disabled) - - AM_RANGE(0xc600, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // Palette - AM_RANGE(0xc800, 0xdfff) AM_RAM_WRITE(suna8_wram_w) AM_SHARE("wram") // RAM - AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) -ADDRESS_MAP_END +void suna8_state::sparkman_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("bank1"); // Banked ROM + + map(0xc000, 0xc000).portr("P1"); // P1 (Inputs) + map(0xc001, 0xc001).portr("P2"); // P2 + map(0xc002, 0xc002).portr("DSW1"); // DSW 1 + map(0xc003, 0xc003).portr("DSW2"); // DSW 2 + map(0xc080, 0xc080).portr("BUTTONS"); // Buttons + map(0xc0a3, 0xc0a3).r(this, FUNC(suna8_state::sparkman_c0a3_r)); // ??? + + map(0xc200, 0xc27f).w(this, FUNC(suna8_state::sparkman_spritebank_w)); // Sprite RAM Bank + map(0xc280, 0xc2ff).w(this, FUNC(suna8_state::sparkman_rombank_latch_w)); // ROM Bank Latch + map(0xc300, 0xc37f).w(this, FUNC(suna8_state::sparkman_spritebank_latch_w)); // Sprite RAM Bank Latch (Invert) + Flip Screen + map(0xc380, 0xc3ff).w(this, FUNC(suna8_state::sparkman_write_disable_w)); // Work RAM Writes Disable + NMI Enable + map(0xc400, 0xc47f).w(this, FUNC(suna8_state::sparkman_rombank_w)); // ROM Bank + Leds + map(0xc480, 0xc480).w(this, FUNC(suna8_state::sparkman_coin_counter_w)); // Coin Counter + map(0xc500, 0xc57f).w(this, FUNC(suna8_state::starfigh_sound_latch_w)); // To Sound CPU (can be disabled) + + map(0xc600, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // Palette + map(0xc800, 0xdfff).ram().w(this, FUNC(suna8_state::suna8_wram_w)).share("wram"); // RAM + map(0xe000, 0xffff).rw(this, FUNC(suna8_state::suna8_banked_spriteram_r), FUNC(suna8_state::suna8_banked_spriteram_w)); // Sprites (Banked) +} /*************************************************************************** @@ -1259,66 +1270,72 @@ ADDRESS_MAP_END Hard Head ***************************************************************************/ -ADDRESS_MAP_START(suna8_state::hardhead_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM - AM_RANGE(0xc800, 0xc800) AM_DEVREAD("ymsnd", ym3812_device, status_port_r) // ? unsure - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void suna8_state::hardhead_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xa002, 0xa003).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xc000, 0xc7ff).ram(); // RAM + map(0xc800, 0xc800).r("ymsnd", FUNC(ym3812_device::status_port_r)); // ? unsure + map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); // + map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU +} -ADDRESS_MAP_START(suna8_state::hardhead_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_READNOP // ? IRQ Ack -ADDRESS_MAP_END +void suna8_state::hardhead_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).nopr(); // ? IRQ Ack +} /*************************************************************************** Rough Ranger ***************************************************************************/ -ADDRESS_MAP_START(suna8_state::rranger_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym1", ym2203_device, write) // Samples + Music - AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ym2", ym2203_device, write) // Music + FX - AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To Sound CPU - AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void suna8_state::rranger_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // ROM + map(0xa000, 0xa001).w("ym1", FUNC(ym2203_device::write)); // Samples + Music + map(0xa002, 0xa003).w("ym2", FUNC(ym2203_device::write)); // Music + FX + map(0xc000, 0xc7ff).ram(); // RAM + map(0xd000, 0xd000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0xd800, 0xd800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU +} /*************************************************************************** Brick Zone ***************************************************************************/ -ADDRESS_MAP_START(suna8_state::brickzn_sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM // ROM - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM // RAM - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM CPU - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void suna8_state::brickzn_sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); // ROM + map(0xc000, 0xc001).w("ymsnd", FUNC(ym3812_device::write)); + map(0xc002, 0xc003).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xe000, 0xe7ff).ram(); // RAM + map(0xf000, 0xf000).w(m_soundlatch2, FUNC(generic_latch_8_device::write)); // To PCM CPU + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU +} /* PCM Z80, 4 DACs (4 bits per sample), NO RAM !! */ -ADDRESS_MAP_START(suna8_state::brickzn_pcm_map) - AM_RANGE(0x0000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END +void suna8_state::brickzn_pcm_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); // ROM +} -ADDRESS_MAP_START(suna8_state::brickzn_pcm_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From Sound CPU - AM_RANGE(0x00, 0x00) AM_DEVWRITE("ldac", dac_byte_interface, write) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("rdac", dac_byte_interface, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("ldac2", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("rdac2", dac_byte_interface, write) -ADDRESS_MAP_END +void suna8_state::brickzn_pcm_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); // From Sound CPU + map(0x00, 0x00).w("ldac", FUNC(dac_byte_interface::write)); + map(0x01, 0x01).w("rdac", FUNC(dac_byte_interface::write)); + map(0x02, 0x02).w("ldac2", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("rdac2", FUNC(dac_byte_interface::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/supbtime.cpp b/src/mame/drivers/supbtime.cpp index dc2e688aaae..f80b715df58 100644 --- a/src/mame/drivers/supbtime.cpp +++ b/src/mame/drivers/supbtime.cpp @@ -116,78 +116,82 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(supbtime_state::supbtime_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x11ffff) AM_WRITENOP // Nothing there - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x120800, 0x13ffff) AM_WRITENOP // Nothing there - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW") - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x18000a, 0x18000b) AM_READ(vblank_ack_r) - AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP // ? - AM_RANGE(0x1a0000, 0x1a0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_r, pf_control_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("pf1_rowscroll") - AM_RANGE(0x342000, 0x3427ff) AM_RAM AM_SHARE("pf2_rowscroll") -ADDRESS_MAP_END - -ADDRESS_MAP_START(supbtime_state::chinatwn_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW") - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x18000a, 0x18000b) AM_READ(vblank_ack_r) - AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP // ? - AM_RANGE(0x1a0000, 0x1a3fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf_control_r, pf_control_w) - AM_RANGE(0x320000, 0x321fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x322000, 0x323fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_SHARE("pf1_rowscroll") // unused - AM_RANGE(0x342000, 0x3427ff) AM_RAM AM_SHARE("pf2_rowscroll") // unused -ADDRESS_MAP_END - -ADDRESS_MAP_START(supbtime_state::tumblep_map) +void supbtime_state::supbtime_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x11ffff).nopw(); // Nothing there + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x120800, 0x13ffff).nopw(); // Nothing there + map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x180001).portr("INPUTS"); + map(0x180002, 0x180003).portr("DSW"); + map(0x180008, 0x180009).portr("SYSTEM"); + map(0x18000a, 0x18000b).r(this, FUNC(supbtime_state::vblank_ack_r)); + map(0x18000a, 0x18000d).nopw(); // ? + map(0x1a0001, 0x1a0001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x300000, 0x30000f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_r), FUNC(deco16ic_device::pf_control_w)); + map(0x320000, 0x321fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x322000, 0x323fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x340000, 0x3407ff).ram().share("pf1_rowscroll"); + map(0x342000, 0x3427ff).ram().share("pf2_rowscroll"); +} + +void supbtime_state::chinatwn_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x180001).portr("INPUTS"); + map(0x180002, 0x180003).portr("DSW"); + map(0x180008, 0x180009).portr("SYSTEM"); + map(0x18000a, 0x18000b).r(this, FUNC(supbtime_state::vblank_ack_r)); + map(0x18000a, 0x18000d).nopw(); // ? + map(0x1a0000, 0x1a3fff).ram(); + map(0x300000, 0x30000f).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_r), FUNC(deco16ic_device::pf_control_w)); + map(0x320000, 0x321fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x322000, 0x323fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x340000, 0x3407ff).ram().share("pf1_rowscroll"); // unused + map(0x342000, 0x3427ff).ram().share("pf2_rowscroll"); // unused +} + +void supbtime_state::tumblep_map(address_map &map) +{ #if TUMBLEP_HACK - AM_RANGE(0x000000, 0x07ffff) AM_WRITEONLY // To write levels modifications + map(0x000000, 0x07ffff).writeonly(); // To write levels modifications #endif - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x120000, 0x123fff) AM_RAM - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW") - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x18000a, 0x18000b) AM_READ(vblank_ack_r) - AM_RANGE(0x18000a, 0x18000d) AM_WRITENOP // ? - AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300000, 0x30000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x320000, 0x320fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x322000, 0x322fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x340000, 0x3407ff) AM_WRITEONLY AM_SHARE("pf1_rowscroll") // unused - AM_RANGE(0x342000, 0x3427ff) AM_WRITEONLY AM_SHARE("pf2_rowscroll") // unused -ADDRESS_MAP_END + map(0x000000, 0x07ffff).rom(); + map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x120000, 0x123fff).ram(); + map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x180001).portr("INPUTS"); + map(0x180002, 0x180003).portr("DSW"); + map(0x180008, 0x180009).portr("SYSTEM"); + map(0x18000a, 0x18000b).r(this, FUNC(supbtime_state::vblank_ack_r)); + map(0x18000a, 0x18000d).nopw(); // ? + map(0x1a0000, 0x1a07ff).ram().share("spriteram"); + map(0x300000, 0x30000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x320000, 0x320fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x322000, 0x322fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x340000, 0x3407ff).writeonly().share("pf1_rowscroll"); // unused + map(0x342000, 0x3427ff).writeonly().share("pf2_rowscroll"); // unused +} // Physical memory map (21 bits) -ADDRESS_MAP_START(supbtime_state::sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_NOP // YM2203 - this board doesn't have one - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_NOP // This board only has 1 oki chip - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void supbtime_state::sound_map(address_map &map) +{ + map.global_mask(0x1fffff); + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).noprw(); // YM2203 - this board doesn't have one + map(0x110000, 0x110001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).noprw(); // This board only has 1 oki chip + map(0x140000, 0x140001).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); + map(0x1fec00, 0x1fec01).w("audiocpu", FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); +} //************************************************************************** diff --git a/src/mame/drivers/supdrapo.cpp b/src/mame/drivers/supdrapo.cpp index 1dafe649ce0..bd2d7458c61 100644 --- a/src/mame/drivers/supdrapo.cpp +++ b/src/mame/drivers/supdrapo.cpp @@ -277,27 +277,28 @@ void supdrapo_state::machine_reset() Memory Map **********************************************************************/ -ADDRESS_MAP_START(supdrapo_state::sdpoker_mem) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x5000, 0x50ff) AM_RAM AM_SHARE("col_line") - AM_RANGE(0x57ff, 0x57ff) AM_RAM AM_SHARE("col_line") - AM_RANGE(0x5800, 0x58ff) AM_RAM AM_SHARE("col_line") - AM_RANGE(0x6000, 0x67ff) AM_RAM //work ram - AM_RANGE(0x6800, 0x6bff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6c00, 0x6fff) AM_RAM AM_SHARE("char_bank") - AM_RANGE(0x7000, 0x7bff) AM_RAM //$7600 seems watchdog - AM_RANGE(0x7c00, 0x7c00) AM_WRITE(debug7c00_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN4") AM_WRITE(wdog8000_w) - AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN0") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1") AM_WRITE(payout_w) - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2") AM_WRITE(coinin_w) - AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN3") AM_WRITE(debug8004_w) - AM_RANGE(0x8005, 0x8005) AM_READ_PORT("SW1") - AM_RANGE(0x8006, 0x8006) AM_READ_PORT("SW2") - AM_RANGE(0x9000, 0x90ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9400, 0x9400) AM_READ(rng_r) - AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END +void supdrapo_state::sdpoker_mem(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x5000, 0x50ff).ram().share("col_line"); + map(0x57ff, 0x57ff).ram().share("col_line"); + map(0x5800, 0x58ff).ram().share("col_line"); + map(0x6000, 0x67ff).ram(); //work ram + map(0x6800, 0x6bff).ram().share("videoram"); + map(0x6c00, 0x6fff).ram().share("char_bank"); + map(0x7000, 0x7bff).ram(); //$7600 seems watchdog + map(0x7c00, 0x7c00).w(this, FUNC(supdrapo_state::debug7c00_w)); + map(0x8000, 0x8000).portr("IN4").w(this, FUNC(supdrapo_state::wdog8000_w)); + map(0x8001, 0x8001).portr("IN0"); + map(0x8002, 0x8002).portr("IN1").w(this, FUNC(supdrapo_state::payout_w)); + map(0x8003, 0x8003).portr("IN2").w(this, FUNC(supdrapo_state::coinin_w)); + map(0x8004, 0x8004).portr("IN3").w(this, FUNC(supdrapo_state::debug8004_w)); + map(0x8005, 0x8005).portr("SW1"); + map(0x8006, 0x8006).portr("SW2"); + map(0x9000, 0x90ff).ram().share("nvram"); + map(0x9400, 0x9400).r(this, FUNC(supdrapo_state::rng_r)); + map(0x9800, 0x9801).w("aysnd", FUNC(ay8910_device::data_address_w)); +} /********************************************************************* diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp index 03ccc19aa87..e416315a1d3 100644 --- a/src/mame/drivers/supduck.cpp +++ b/src/mame/drivers/supduck.cpp @@ -246,36 +246,39 @@ WRITE16_MEMBER(supduck_state::supduck_scroll_w) -ADDRESS_MAP_START(supduck_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_WRITENOP - AM_RANGE(0xfe0000, 0xfe1fff) AM_RAM AM_SHARE("spriteram") - - AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE( supduck_4000_w ) - AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE( supduck_4002_w ) - AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW") - - AM_RANGE(0xfe8000, 0xfe8007) AM_WRITE(supduck_scroll_w) - AM_RANGE(0xfe800e, 0xfe800f) AM_WRITENOP // watchdog or irqack - - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("textvideoram") - AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(back_videoram_w) AM_SHARE("backvideoram") - AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(fore_videoram_w) AM_SHARE("forevideoram") - AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffc000, 0xffffff) AM_RAM /* working RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(supduck_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(supduck_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void supduck_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().nopw(); + map(0xfe0000, 0xfe1fff).ram().share("spriteram"); + + map(0xfe4000, 0xfe4001).portr("P1_P2").w(this, FUNC(supduck_state::supduck_4000_w)); + map(0xfe4002, 0xfe4003).portr("SYSTEM").w(this, FUNC(supduck_state::supduck_4002_w)); + map(0xfe4004, 0xfe4005).portr("DSW"); + + map(0xfe8000, 0xfe8007).w(this, FUNC(supduck_state::supduck_scroll_w)); + map(0xfe800e, 0xfe800f).nopw(); // watchdog or irqack + + map(0xfec000, 0xfecfff).ram().w(this, FUNC(supduck_state::text_videoram_w)).share("textvideoram"); + map(0xff0000, 0xff3fff).ram().w(this, FUNC(supduck_state::back_videoram_w)).share("backvideoram"); + map(0xff4000, 0xff7fff).ram().w(this, FUNC(supduck_state::fore_videoram_w)).share("forevideoram"); + map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffc000, 0xffffff).ram(); /* working RAM */ +} + +void supduck_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(supduck_state::okibank_w)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void supduck_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} WRITE8_MEMBER(supduck_state::okibank_w) { diff --git a/src/mame/drivers/super6.cpp b/src/mame/drivers/super6.cpp index d51dd258589..75cbec4648e 100644 --- a/src/mame/drivers/super6.cpp +++ b/src/mame/drivers/super6.cpp @@ -277,29 +277,31 @@ WRITE8_MEMBER( super6_state::baud_w ) // ADDRESS_MAP( super6_mem ) //------------------------------------------------- -ADDRESS_MAP_START(super6_state::super6_mem) -ADDRESS_MAP_END +void super6_state::super6_mem(address_map &map) +{ +} //------------------------------------------------- // ADDRESS_MAP( super6_io ) //------------------------------------------------- -ADDRESS_MAP_START(super6_state::super6_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(WD2793_TAG, wd2793_device, read, write) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write) - AM_RANGE(0x14, 0x14) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0x15, 0x15) AM_READ_PORT("J7") AM_WRITE(s100_w) - AM_RANGE(0x16, 0x16) AM_WRITE(bank0_w) - AM_RANGE(0x17, 0x17) AM_WRITE(bank1_w) - AM_RANGE(0x18, 0x18) AM_MIRROR(0x03) AM_WRITE(baud_w) +void super6_state::super6_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x04, 0x07).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x08, 0x0b).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x0c, 0x0f).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); + map(0x10, 0x10).mirror(0x03).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x14, 0x14).rw(this, FUNC(super6_state::fdc_r), FUNC(super6_state::fdc_w)); + map(0x15, 0x15).portr("J7").w(this, FUNC(super6_state::s100_w)); + map(0x16, 0x16).w(this, FUNC(super6_state::bank0_w)); + map(0x17, 0x17).w(this, FUNC(super6_state::bank1_w)); + map(0x18, 0x18).mirror(0x03).w(this, FUNC(super6_state::baud_w)); // AM_RANGE(0x40, 0x40) ? // AM_RANGE(0xe0, 0xe7) HDC? -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp index 079fb187547..0d6e58fa42a 100644 --- a/src/mame/drivers/super80.cpp +++ b/src/mame/drivers/super80.cpp @@ -246,79 +246,86 @@ ToDo: This makes the H and E monitor commands show FF */ READ8_MEMBER( super80_state::super80_read_ff ) { return 0xff; } -ADDRESS_MAP_START(super80_state::super80_map) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("boot") AM_REGION("maincpu", 0x0000) - AM_RANGE(0x4000, 0xbfff) AM_RAM AM_REGION("maincpu", 0x4000) - AM_RANGE(0xc000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_READ(super80_read_ff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(super80_state::super80m_map) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("boot") AM_REGION("maincpu", 0x0000) - AM_RANGE(0x4000, 0xbfff) AM_RAM AM_REGION("maincpu", 0x4000) - AM_RANGE(0xc000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_REGION("maincpu", 0xf000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(super80_state::super80v_map) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("boot") - AM_RANGE(0x4000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(super80v_low_r, super80v_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(super80v_high_r, super80v_high_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(super80_state::super80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0xdc, 0xdc) AM_WRITE(super80_dc_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80_f0_w) - AM_RANGE(0xe1, 0xe1) AM_MIRROR(0x14) AM_WRITE(super80_f1_w) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r) - AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END - -ADDRESS_MAP_START(super80_state::super80e_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xbc, 0xbc) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0xbc, 0xbc) AM_WRITE(super80_dc_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80_f0_w) - AM_RANGE(0xe1, 0xe1) AM_MIRROR(0x14) AM_WRITE(super80_f1_w) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r) - AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END - -ADDRESS_MAP_START(super80_state::super80r_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x10, 0x10) AM_WRITE(super80v_10_w) - AM_RANGE(0x11, 0x11) AM_DEVREAD("crtc", mc6845_device, register_r) - AM_RANGE(0x11, 0x11) AM_WRITE(super80v_11_w) - AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("fdc", wd2793_device, read, write) - AM_RANGE(0x3e, 0x3e) AM_READ(port3e_r) - AM_RANGE(0x3f, 0x3f) AM_WRITE(port3f_w) - AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0xdc, 0xdc) AM_WRITE(super80_dc_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80r_f0_w) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r) - AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END - -ADDRESS_MAP_START(super80_state::super80v_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x10, 0x10) AM_WRITE(super80v_10_w) - AM_RANGE(0x11, 0x11) AM_DEVREAD("crtc", mc6845_device, register_r) - AM_RANGE(0x11, 0x11) AM_WRITE(super80v_11_w) - AM_RANGE(0xdc, 0xdc) AM_DEVREAD("cent_status_in", input_buffer_device, read) - AM_RANGE(0xdc, 0xdc) AM_WRITE(super80_dc_w) - AM_RANGE(0xe0, 0xe0) AM_MIRROR(0x14) AM_WRITE(super80_f0_w) - AM_RANGE(0xe2, 0xe2) AM_MIRROR(0x14) AM_READ(super80_f2_r) - AM_RANGE(0xf8, 0xfb) AM_MIRROR(0x04) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END +void super80_state::super80_map(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("boot").region("maincpu", 0x0000); + map(0x4000, 0xbfff).ram().region("maincpu", 0x4000); + map(0xc000, 0xefff).rom(); + map(0xf000, 0xffff).r(this, FUNC(super80_state::super80_read_ff)).nopw(); +} + +void super80_state::super80m_map(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("boot").region("maincpu", 0x0000); + map(0x4000, 0xbfff).ram().region("maincpu", 0x4000); + map(0xc000, 0xefff).rom(); + map(0xf000, 0xffff).ram().region("maincpu", 0xf000); +} + +void super80_state::super80v_map(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("boot"); + map(0x4000, 0xbfff).ram(); + map(0xc000, 0xefff).rom(); + map(0xf000, 0xf7ff).rw(this, FUNC(super80_state::super80v_low_r), FUNC(super80_state::super80v_low_w)); + map(0xf800, 0xffff).rw(this, FUNC(super80_state::super80v_high_r), FUNC(super80_state::super80v_high_w)); +} + +void super80_state::super80_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xdc, 0xdc).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0xdc, 0xdc).w(this, FUNC(super80_state::super80_dc_w)); + map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80_f0_w)); + map(0xe1, 0xe1).mirror(0x14).w(this, FUNC(super80_state::super80_f1_w)); + map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r)); + map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} + +void super80_state::super80e_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xbc, 0xbc).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0xbc, 0xbc).w(this, FUNC(super80_state::super80_dc_w)); + map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80_f0_w)); + map(0xe1, 0xe1).mirror(0x14).w(this, FUNC(super80_state::super80_f1_w)); + map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r)); + map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} + +void super80_state::super80r_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x10, 0x10).w(this, FUNC(super80_state::super80v_10_w)); + map(0x11, 0x11).r(m_crtc, FUNC(mc6845_device::register_r)); + map(0x11, 0x11).w(this, FUNC(super80_state::super80v_11_w)); + map(0x30, 0x30).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x38, 0x3b).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write)); + map(0x3e, 0x3e).r(this, FUNC(super80_state::port3e_r)); + map(0x3f, 0x3f).w(this, FUNC(super80_state::port3f_w)); + map(0xdc, 0xdc).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0xdc, 0xdc).w(this, FUNC(super80_state::super80_dc_w)); + map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80r_f0_w)); + map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r)); + map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} + +void super80_state::super80v_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x10, 0x10).w(this, FUNC(super80_state::super80v_10_w)); + map(0x11, 0x11).r(m_crtc, FUNC(mc6845_device::register_r)); + map(0x11, 0x11).w(this, FUNC(super80_state::super80v_11_w)); + map(0xdc, 0xdc).r("cent_status_in", FUNC(input_buffer_device::read)); + map(0xdc, 0xdc).w(this, FUNC(super80_state::super80_dc_w)); + map(0xe0, 0xe0).mirror(0x14).w(this, FUNC(super80_state::super80_f0_w)); + map(0xe2, 0xe2).mirror(0x14).r(this, FUNC(super80_state::super80_f2_r)); + map(0xf8, 0xfb).mirror(0x04).rw(m_pio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} /**************************** DIPSWITCHES, KEYBOARD, HARDWARE CONFIGURATION ****************************************/ diff --git a/src/mame/drivers/superchs.cpp b/src/mame/drivers/superchs.cpp index 4e80d9a643e..cbc6b5939e2 100644 --- a/src/mame/drivers/superchs.cpp +++ b/src/mame/drivers/superchs.cpp @@ -130,36 +130,39 @@ WRITE32_MEMBER(superchs_state::superchs_stick_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(superchs_state::superchs_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x140000, 0x141fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x180000, 0x18ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) - AM_RANGE(0x1b0000, 0x1b002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x240000, 0x240003) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x280000, 0x287fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x2c0000, 0x2c07ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) - AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff) - AM_RANGE(0x340000, 0x340003) AM_READWRITE(superchs_stick_r, superchs_stick_w) /* stick int request */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(superchs_state::superchs_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */ - AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w) - AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(superchs_state::chase3_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x400000, 0x40ffff) AM_RAM - AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */ - AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w) - AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */ -ADDRESS_MAP_END +void superchs_state::superchs_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x11ffff).ram().share("ram"); + map(0x140000, 0x141fff).ram().share("spriteram"); + map(0x180000, 0x18ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); + map(0x1b0000, 0x1b002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w)); + map(0x200000, 0x20ffff).ram().share("shared_ram"); + map(0x240000, 0x240003).w(this, FUNC(superchs_state::cpua_ctrl_w)); + map(0x280000, 0x287fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x2c0000, 0x2c07ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0x300000, 0x300007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); + map(0x340000, 0x340003).rw(this, FUNC(superchs_state::superchs_stick_r), FUNC(superchs_state::superchs_stick_w)); /* stick int request */ +} + +void superchs_state::superchs_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x600000, 0x60ffff).w(m_tc0480scp, FUNC(tc0480scp_device::word_w)); /* Only written upon errors */ + map(0x800000, 0x80ffff).rw(this, FUNC(superchs_state::shared_ram_r), FUNC(superchs_state::shared_ram_w)); + map(0xa00000, 0xa001ff).ram(); /* Extra road control?? */ +} + +void superchs_state::chase3_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x400000, 0x40ffff).ram(); + map(0x600000, 0x60ffff).w(m_tc0480scp, FUNC(tc0480scp_device::word_w)); /* Only written upon errors */ + map(0x800000, 0x80ffff).rw(this, FUNC(superchs_state::shared_ram_r), FUNC(superchs_state::shared_ram_w)); + map(0xa00000, 0xa001ff).ram(); /* Extra road control?? */ +} /***********************************************************/ diff --git a/src/mame/drivers/supercrd.cpp b/src/mame/drivers/supercrd.cpp index d4319884f5c..7ece5415fed 100644 --- a/src/mame/drivers/supercrd.cpp +++ b/src/mame/drivers/supercrd.cpp @@ -287,14 +287,15 @@ uint32_t supercrd_state::screen_update_supercrd(screen_device &screen, bitmap_in * Memory map information * *****************************/ -ADDRESS_MAP_START(supercrd_state::supercrd_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(supercrd_videoram_w) AM_SHARE("videoram") // wrong - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(supercrd_colorram_w) AM_SHARE("colorram") // wrong +void supercrd_state::supercrd_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram().w(this, FUNC(supercrd_state::supercrd_videoram_w)).share("videoram"); // wrong + map(0xd000, 0xdfff).ram().w(this, FUNC(supercrd_state::supercrd_colorram_w)).share("colorram"); // wrong // AM_RANGE(0x0000, 0x0000) AM_RAM AM_SHARE("nvram") // AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w) // AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END +} /***************************** diff --git a/src/mame/drivers/superdq.cpp b/src/mame/drivers/superdq.cpp index b3ac6070ecc..a5a1b1228b0 100644 --- a/src/mame/drivers/superdq.cpp +++ b/src/mame/drivers/superdq.cpp @@ -208,22 +208,24 @@ WRITE8_MEMBER(superdq_state::superdq_ld_w) * *************************************/ -ADDRESS_MAP_START(superdq_state::superdq_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x5c00, 0x5fff) AM_RAM_WRITE(superdq_videoram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(superdq_state::superdq_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(superdq_ld_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2") - AM_RANGE(0x04, 0x04) AM_READ(superdq_ld_r) AM_DEVWRITE("snsnd", sn76496_device, write) - AM_RANGE(0x08, 0x08) AM_WRITE(superdq_io_w) - AM_RANGE(0x0c, 0x0d) AM_NOP /* HD46505S */ -ADDRESS_MAP_END +void superdq_state::superdq_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x5c00, 0x5fff).ram().w(this, FUNC(superdq_state::superdq_videoram_w)).share("videoram"); +} + +void superdq_state::superdq_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w(this, FUNC(superdq_state::superdq_ld_w)); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("DSW1"); + map(0x03, 0x03).portr("DSW2"); + map(0x04, 0x04).r(this, FUNC(superdq_state::superdq_ld_r)).w("snsnd", FUNC(sn76496_device::write)); + map(0x08, 0x08).w(this, FUNC(superdq_state::superdq_io_w)); + map(0x0c, 0x0d).noprw(); /* HD46505S */ +} diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp index de465ca2d2b..ee0e14b9ced 100644 --- a/src/mame/drivers/superqix.cpp +++ b/src/mame/drivers/superqix.cpp @@ -989,38 +989,41 @@ ADDRESS_MAP_START(superqix_state_base::main_map) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -ADDRESS_MAP_START(hotsmash_state::pbillian_port_map) // used by both pbillian and hotsmash - AM_RANGE(0x0000, 0x01ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // 6116 sram near the jamma connector, "COLOR RAM" during POST +void hotsmash_state::pbillian_port_map(address_map &map) +{ // used by both pbillian and hotsmash + map(0x0000, 0x01ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // 6116 sram near the jamma connector, "COLOR RAM" during POST //AM_RANGE(0x0200, 0x03ff) AM_RAM // looks like leftover crap from a dev board which had double the color ram? zeroes written here, never read. - AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay1", ay8910_device, data_r) // ay i/o ports connect to "SYSTEM" and "BUTTONS" inputs which includes mcu semaphore flags - AM_RANGE(0x0402, 0x0403) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x0408, 0x0408) AM_READWRITE(hotsmash_Z80_mcu_r, hotsmash_Z80_mcu_w) - AM_RANGE(0x0410, 0x0410) AM_WRITE(pbillian_0410_w) /* Coin Counters, ROM bank, NMI enable, Flipscreen */ - AM_RANGE(0x0418, 0x0418) AM_READ(nmi_ack_r) - AM_RANGE(0x0419, 0x0419) AM_WRITENOP // ??? is this a watchdog, or something else? manual reset of mcu semaphores? manual nmi TRIGGER? used by prebillian - AM_RANGE(0x041a, 0x041a) AM_WRITE(pbillian_sample_trigger_w) - AM_RANGE(0x041b, 0x041b) AM_READNOP // input related? but probably not used, may be 'sample has stopped playing' flag? used by prebillian -ADDRESS_MAP_END + map(0x0401, 0x0401).r(m_ay1, FUNC(ay8910_device::data_r)); // ay i/o ports connect to "SYSTEM" and "BUTTONS" inputs which includes mcu semaphore flags + map(0x0402, 0x0403).w(m_ay1, FUNC(ay8910_device::data_address_w)); + map(0x0408, 0x0408).rw(this, FUNC(hotsmash_state::hotsmash_Z80_mcu_r), FUNC(hotsmash_state::hotsmash_Z80_mcu_w)); + map(0x0410, 0x0410).w(this, FUNC(hotsmash_state::pbillian_0410_w)); /* Coin Counters, ROM bank, NMI enable, Flipscreen */ + map(0x0418, 0x0418).r(this, FUNC(hotsmash_state::nmi_ack_r)); + map(0x0419, 0x0419).nopw(); // ??? is this a watchdog, or something else? manual reset of mcu semaphores? manual nmi TRIGGER? used by prebillian + map(0x041a, 0x041a).w(this, FUNC(hotsmash_state::pbillian_sample_trigger_w)); + map(0x041b, 0x041b).nopr(); // input related? but probably not used, may be 'sample has stopped playing' flag? used by prebillian +} -ADDRESS_MAP_START(superqix_state::sqix_port_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x0401, 0x0401) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x0402, 0x0402) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x0403, 0x0403) AM_WRITE(z80_ay1_sync_address_w) // sync on address write, so semaphores are accurately read - AM_RANGE(0x0405, 0x0405) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x0406, 0x0407) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x0408, 0x0408) AM_READ(z80_semaphore_assert_r) - AM_RANGE(0x0410, 0x0410) AM_WRITE(superqix_0410_w) /* ROM bank, NMI enable, tile bank, bitmap bank */ - AM_RANGE(0x0418, 0x0418) AM_READ(nmi_ack_r) +void superqix_state::sqix_port_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x0401, 0x0401).r(m_ay1, FUNC(ay8910_device::data_r)); + map(0x0402, 0x0402).w(m_ay1, FUNC(ay8910_device::data_w)); + map(0x0403, 0x0403).w(this, FUNC(superqix_state::z80_ay1_sync_address_w)); // sync on address write, so semaphores are accurately read + map(0x0405, 0x0405).r(m_ay2, FUNC(ay8910_device::data_r)); + map(0x0406, 0x0407).w(m_ay2, FUNC(ay8910_device::data_address_w)); + map(0x0408, 0x0408).r(this, FUNC(superqix_state::z80_semaphore_assert_r)); + map(0x0410, 0x0410).w(this, FUNC(superqix_state::superqix_0410_w)); /* ROM bank, NMI enable, tile bank, bitmap bank */ + map(0x0418, 0x0418).r(this, FUNC(superqix_state::nmi_ack_r)); // following two ranges are made of two 64kx4 4464 DRAM chips at 9L and 9M, "GRAPHICS RAM" or "GRP BIT" if there is an error in POST - AM_RANGE(0x0800, 0x77ff) AM_RAM_WRITE(superqix_bitmapram_w) AM_SHARE("bitmapram") - AM_RANGE(0x8800, 0xf7ff) AM_RAM_WRITE(superqix_bitmapram2_w) AM_SHARE("bitmapram2") + map(0x0800, 0x77ff).ram().w(this, FUNC(superqix_state::superqix_bitmapram_w)).share("bitmapram"); + map(0x8800, 0xf7ff).ram().w(this, FUNC(superqix_state::superqix_bitmapram2_w)).share("bitmapram2"); //AM_RANGE(0xf970, 0xfa6f) AM_RAM // this is probably a portion of the remainder of the chips at 9L and 9M which isn't used or tested for graphics ram -ADDRESS_MAP_END +} -ADDRESS_MAP_START(superqix_state::sqix_8031_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("mcu", 0) // external program ROM -ADDRESS_MAP_END +void superqix_state::sqix_8031_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("mcu", 0); // external program ROM +} diff --git a/src/mame/drivers/superslave.cpp b/src/mame/drivers/superslave.cpp index e14ac8286f9..b2e39d51012 100644 --- a/src/mame/drivers/superslave.cpp +++ b/src/mame/drivers/superslave.cpp @@ -257,27 +257,29 @@ WRITE8_MEMBER( superslave_state::cmd_w ) // ADDRESS_MAP( superslave_mem ) //------------------------------------------------- -ADDRESS_MAP_START(superslave_state::superslave_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void superslave_state::superslave_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(superslave_state::read), FUNC(superslave_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( superslave_io ) //------------------------------------------------- -ADDRESS_MAP_START(superslave_state::superslave_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(Z80DART_0_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80DART_1_TAG, z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_WRITE(baud_w) - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt) - AM_RANGE(0x18, 0x18) AM_MIRROR(0x02) AM_DEVREADWRITE(AM9519_TAG, am9519_device, data_r, data_w) - AM_RANGE(0x19, 0x19) AM_MIRROR(0x02) AM_DEVREADWRITE(AM9519_TAG, am9519_device, stat_r, cmd_w) - AM_RANGE(0x1d, 0x1d) AM_WRITE(memctrl_w) - AM_RANGE(0x1e, 0x1e) AM_NOP // master communications - AM_RANGE(0x1f, 0x1f) AM_READWRITE(status_r, cmd_w) -ADDRESS_MAP_END +void superslave_state::superslave_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw(Z80DART_0_TAG, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x0c, 0x0f).rw(Z80DART_1_TAG, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); + map(0x10, 0x10).mirror(0x03).w(this, FUNC(superslave_state::baud_w)); + map(0x14, 0x17).rw(Z80PIO_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x18, 0x18).mirror(0x02).rw(AM9519_TAG, FUNC(am9519_device::data_r), FUNC(am9519_device::data_w)); + map(0x19, 0x19).mirror(0x02).rw(AM9519_TAG, FUNC(am9519_device::stat_r), FUNC(am9519_device::cmd_w)); + map(0x1d, 0x1d).w(this, FUNC(superslave_state::memctrl_w)); + map(0x1e, 0x1e).noprw(); // master communications + map(0x1f, 0x1f).rw(this, FUNC(superslave_state::status_r), FUNC(superslave_state::cmd_w)); +} diff --git a/src/mame/drivers/supertnk.cpp b/src/mame/drivers/supertnk.cpp index 77216c33162..5914ab7c3f4 100644 --- a/src/mame/drivers/supertnk.cpp +++ b/src/mame/drivers/supertnk.cpp @@ -312,17 +312,18 @@ void supertnk_state::machine_reset() * *************************************/ -ADDRESS_MAP_START(supertnk_state::supertnk_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x17ff) AM_ROMBANK("bank1") - AM_RANGE(0x1800, 0x1bff) AM_RAM - AM_RANGE(0x1efc, 0x1efc) AM_READ_PORT("JOYS") - AM_RANGE(0x1efd, 0x1efd) AM_READ_PORT("INPUTS") - AM_RANGE(0x1efe, 0x1eff) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x1efe, 0x1efe) AM_READ_PORT("DSW") - AM_RANGE(0x1eff, 0x1eff) AM_READ_PORT("UNK") - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(supertnk_videoram_r, supertnk_videoram_w) -ADDRESS_MAP_END +void supertnk_state::supertnk_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x17ff).bankr("bank1"); + map(0x1800, 0x1bff).ram(); + map(0x1efc, 0x1efc).portr("JOYS"); + map(0x1efd, 0x1efd).portr("INPUTS"); + map(0x1efe, 0x1eff).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x1efe, 0x1efe).portr("DSW"); + map(0x1eff, 0x1eff).portr("UNK"); + map(0x2000, 0x3fff).rw(this, FUNC(supertnk_state::supertnk_videoram_r), FUNC(supertnk_state::supertnk_videoram_w)); +} @@ -332,15 +333,16 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(supertnk_state::supertnk_io_map) - AM_RANGE(0x0000, 0x0000) AM_WRITENOP - AM_RANGE(0x0400, 0x0400) AM_WRITE(supertnk_bitplane_select_0_w) - AM_RANGE(0x0401, 0x0401) AM_WRITE(supertnk_bitplane_select_1_w) - AM_RANGE(0x0402, 0x0402) AM_WRITE(supertnk_bankswitch_0_w) - AM_RANGE(0x0404, 0x0404) AM_WRITE(supertnk_bankswitch_1_w) - AM_RANGE(0x0406, 0x0406) AM_WRITE(supertnk_interrupt_ack_w) - AM_RANGE(0x0407, 0x0407) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void supertnk_state::supertnk_io_map(address_map &map) +{ + map(0x0000, 0x0000).nopw(); + map(0x0400, 0x0400).w(this, FUNC(supertnk_state::supertnk_bitplane_select_0_w)); + map(0x0401, 0x0401).w(this, FUNC(supertnk_state::supertnk_bitplane_select_1_w)); + map(0x0402, 0x0402).w(this, FUNC(supertnk_state::supertnk_bankswitch_0_w)); + map(0x0404, 0x0404).w(this, FUNC(supertnk_state::supertnk_bankswitch_1_w)); + map(0x0406, 0x0406).w(this, FUNC(supertnk_state::supertnk_interrupt_ack_w)); + map(0x0407, 0x0407).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} diff --git a/src/mame/drivers/superwng.cpp b/src/mame/drivers/superwng.cpp index 4a088d12157..3c7957be802 100644 --- a/src/mame/drivers/superwng.cpp +++ b/src/mame/drivers/superwng.cpp @@ -320,40 +320,42 @@ WRITE8_MEMBER(superwng_state::superwng_hopper_w) { } -ADDRESS_MAP_START(superwng_state::superwng_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x6fff) AM_ROMBANK("bank1") - AM_RANGE(0x7000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(superwng_bg_vram_w) AM_SHARE("videorabg") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(superwng_fg_vram_w) AM_SHARE("videorafg") - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(superwng_bg_cram_w) AM_SHARE("colorrabg") - AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(superwng_fg_cram_w) AM_SHARE("colorrafg") - AM_RANGE(0x9800, 0x99ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa000, 0xa000) AM_WRITE(superwng_hopper_w) - AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2") - AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW1") - AM_RANGE(0xa100, 0xa100) AM_WRITE(superwng_sound_interrupt_w) - AM_RANGE(0xa180, 0xa180) AM_READ_PORT("DSW2") - AM_RANGE(0xa180, 0xa180) AM_WRITENOP // watchdog? int ack? - AM_RANGE(0xa181, 0xa181) AM_WRITE(superwng_nmi_enable_w) - AM_RANGE(0xa182, 0xa182) AM_WRITE(superwng_tilebank_w) - AM_RANGE(0xa183, 0xa183) AM_WRITE(superwng_flip_screen_w) - AM_RANGE(0xa184, 0xa184) AM_WRITE(superwng_cointcnt1_w) - AM_RANGE(0xa185, 0xa185) AM_WRITE(superwng_unk_a185_w) // unknown, always(?) 0 - AM_RANGE(0xa186, 0xa186) AM_WRITE(superwng_cointcnt2_w) - AM_RANGE(0xa187, 0xa187) AM_WRITE(superwng_unk_a187_w) // unknown, always(?) 0 -ADDRESS_MAP_END - -ADDRESS_MAP_START(superwng_state::superwng_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_WRITE(superwng_sound_nmi_clear_w) - AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) - AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("ay2", ay8910_device, address_w) -ADDRESS_MAP_END +void superwng_state::superwng_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x6fff).bankr("bank1"); + map(0x7000, 0x7fff).ram(); + map(0x8000, 0x83ff).ram().w(this, FUNC(superwng_state::superwng_bg_vram_w)).share("videorabg"); + map(0x8400, 0x87ff).ram().w(this, FUNC(superwng_state::superwng_fg_vram_w)).share("videorafg"); + map(0x8800, 0x8bff).ram().w(this, FUNC(superwng_state::superwng_bg_cram_w)).share("colorrabg"); + map(0x8c00, 0x8fff).ram().w(this, FUNC(superwng_state::superwng_fg_cram_w)).share("colorrafg"); + map(0x9800, 0x99ff).ram(); + map(0xa000, 0xa000).portr("P1"); + map(0xa000, 0xa000).w(this, FUNC(superwng_state::superwng_hopper_w)); + map(0xa080, 0xa080).portr("P2"); + map(0xa100, 0xa100).portr("DSW1"); + map(0xa100, 0xa100).w(this, FUNC(superwng_state::superwng_sound_interrupt_w)); + map(0xa180, 0xa180).portr("DSW2"); + map(0xa180, 0xa180).nopw(); // watchdog? int ack? + map(0xa181, 0xa181).w(this, FUNC(superwng_state::superwng_nmi_enable_w)); + map(0xa182, 0xa182).w(this, FUNC(superwng_state::superwng_tilebank_w)); + map(0xa183, 0xa183).w(this, FUNC(superwng_state::superwng_flip_screen_w)); + map(0xa184, 0xa184).w(this, FUNC(superwng_state::superwng_cointcnt1_w)); + map(0xa185, 0xa185).w(this, FUNC(superwng_state::superwng_unk_a185_w)); // unknown, always(?) 0 + map(0xa186, 0xa186).w(this, FUNC(superwng_state::superwng_cointcnt2_w)); + map(0xa187, 0xa187).w(this, FUNC(superwng_state::superwng_unk_a187_w)); // unknown, always(?) 0 +} + +void superwng_state::superwng_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).w(this, FUNC(superwng_state::superwng_sound_nmi_clear_w)); + map(0x4000, 0x4000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x5000, 0x5000).w("ay1", FUNC(ay8910_device::address_w)); + map(0x6000, 0x6000).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x7000, 0x7000).w("ay2", FUNC(ay8910_device::address_w)); +} static INPUT_PORTS_START( superwng ) PORT_START("P1") diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp index 1425fde2e2d..32595bd6e50 100644 --- a/src/mame/drivers/supracan.cpp +++ b/src/mame/drivers/supracan.cpp @@ -1122,22 +1122,23 @@ WRITE16_MEMBER( supracan_state::vram_w ) } -ADDRESS_MAP_START(supracan_state::supracan_mem) +void supracan_state::supracan_mem(address_map &map) +{ //AM_RANGE( 0x000000, 0x3fffff ) // mapped by the cartslot - AM_RANGE( 0xe80000, 0xe8ffff ) AM_READWRITE(_68k_soundram_r, _68k_soundram_w) - AM_RANGE( 0xe80200, 0xe80201 ) AM_READ_PORT("P1") - AM_RANGE( 0xe80202, 0xe80203 ) AM_READ_PORT("P2") - AM_RANGE( 0xe80208, 0xe80209 ) AM_READ_PORT("P3") - AM_RANGE( 0xe8020c, 0xe8020d ) AM_READ_PORT("P4") - AM_RANGE( 0xe90000, 0xe9001f ) AM_READWRITE(sound_r, sound_w) - AM_RANGE( 0xe90020, 0xe9002f ) AM_WRITE(dma_channel0_w) - AM_RANGE( 0xe90030, 0xe9003f ) AM_WRITE(dma_channel1_w) - - AM_RANGE( 0xf00000, 0xf001ff ) AM_READWRITE(video_r, video_w) - AM_RANGE( 0xf00200, 0xf003ff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE( 0xf40000, 0xf5ffff ) AM_RAM_WRITE(vram_w) AM_SHARE("vram") - AM_RANGE( 0xfc0000, 0xfcffff ) AM_MIRROR(0x30000) AM_RAM /* System work ram */ -ADDRESS_MAP_END + map(0xe80000, 0xe8ffff).rw(this, FUNC(supracan_state::_68k_soundram_r), FUNC(supracan_state::_68k_soundram_w)); + map(0xe80200, 0xe80201).portr("P1"); + map(0xe80202, 0xe80203).portr("P2"); + map(0xe80208, 0xe80209).portr("P3"); + map(0xe8020c, 0xe8020d).portr("P4"); + map(0xe90000, 0xe9001f).rw(this, FUNC(supracan_state::sound_r), FUNC(supracan_state::sound_w)); + map(0xe90020, 0xe9002f).w(this, FUNC(supracan_state::dma_channel0_w)); + map(0xe90030, 0xe9003f).w(this, FUNC(supracan_state::dma_channel1_w)); + + map(0xf00000, 0xf001ff).rw(this, FUNC(supracan_state::video_r), FUNC(supracan_state::video_w)); + map(0xf00200, 0xf003ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xf40000, 0xf5ffff).ram().w(this, FUNC(supracan_state::vram_w)).share("vram"); + map(0xfc0000, 0xfcffff).mirror(0x30000).ram(); /* System work ram */ +} READ8_MEMBER( supracan_state::_6502_soundmem_r ) { @@ -1233,9 +1234,10 @@ WRITE8_MEMBER( supracan_state::_6502_soundmem_w ) } } -ADDRESS_MAP_START(supracan_state::supracan_sound_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(_6502_soundmem_r, _6502_soundmem_w) AM_SHARE("soundram") -ADDRESS_MAP_END +void supracan_state::supracan_sound_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(supracan_state::_6502_soundmem_r), FUNC(supracan_state::_6502_soundmem_w)).share("soundram"); +} static INPUT_PORTS_START( supracan ) PORT_START("P1") diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp index d24845eef1c..5c139dea41e 100644 --- a/src/mame/drivers/suprgolf.cpp +++ b/src/mame/drivers/suprgolf.cpp @@ -338,24 +338,26 @@ READ8_MEMBER(suprgolf_state::p2_r) return (ioport("P2")->read() & 0xf0) | ((ioport("P2_ANALOG")->read() & 0xf)); } -ADDRESS_MAP_START(suprgolf_state::suprgolf_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x4000) AM_WRITE(rom2_bank_select_w ) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(bg_vram_r, bg_vram_w ) // banked background vram - AM_RANGE(0xe000, 0xefff) AM_READWRITE(videoram_r, videoram_w ) AM_SHARE("videoram") //foreground vram + paletteram - AM_RANGE(0xf000, 0xf000) AM_WRITE(pen_w ) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(suprgolf_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0x08, 0x09) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x0c, 0x0c) AM_WRITE(adpcm_data_w) - ADDRESS_MAP_END +void suprgolf_state::suprgolf_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x4000, 0x4000).w(this, FUNC(suprgolf_state::rom2_bank_select_w)); + map(0x8000, 0xbfff).bankr("bank2"); + map(0xc000, 0xdfff).rw(this, FUNC(suprgolf_state::bg_vram_r), FUNC(suprgolf_state::bg_vram_w)); // banked background vram + map(0xe000, 0xefff).rw(this, FUNC(suprgolf_state::videoram_r), FUNC(suprgolf_state::videoram_w)).share("videoram"); //foreground vram + paletteram + map(0xf000, 0xf000).w(this, FUNC(suprgolf_state::pen_w)); + map(0xf800, 0xffff).ram(); +} + +void suprgolf_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x04, 0x07).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x09).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x0c, 0x0c).w(this, FUNC(suprgolf_state::adpcm_data_w)); + } static INPUT_PORTS_START( suprgolf ) PORT_START("P1") diff --git a/src/mame/drivers/suprloco.cpp b/src/mame/drivers/suprloco.cpp index c626495f7a7..6d4bbf0bc15 100644 --- a/src/mame/drivers/suprloco.cpp +++ b/src/mame/drivers/suprloco.cpp @@ -44,34 +44,37 @@ WRITE_LINE_MEMBER(suprloco_state::pc0_w) machine().output().set_lamp_value(0, state); // ??? } -ADDRESS_MAP_START(suprloco_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc200, 0xc7ff) AM_WRITENOP - AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") - AM_RANGE(0xd800, 0xd800) AM_READ_PORT("P2") - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1") - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2") - AM_RANGE(0xe800, 0xe803) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xf000, 0xf6ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xf700, 0xf7df) AM_RAM /* unused */ - AM_RANGE(0xf7e0, 0xf7ff) AM_RAM_WRITE(scrollram_w) AM_SHARE("scrollram") - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(suprloco_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("maincpu", 0x8000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(suprloco_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_DEVWRITE("sn1", sn76496_device, write) - AM_RANGE(0xc000, 0xc003) AM_DEVWRITE("sn2", sn76496_device, write) - AM_RANGE(0xe000, 0xe000) AM_READ(soundport_r) -ADDRESS_MAP_END +void suprloco_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc1ff).ram().share("spriteram"); + map(0xc200, 0xc7ff).nopw(); + map(0xc800, 0xc800).portr("SYSTEM"); + map(0xd000, 0xd000).portr("P1"); + map(0xd800, 0xd800).portr("P2"); + map(0xe000, 0xe000).portr("DSW1"); + map(0xe001, 0xe001).portr("DSW2"); + map(0xe800, 0xe803).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf6ff).ram().w(this, FUNC(suprloco_state::videoram_w)).share("videoram"); + map(0xf700, 0xf7df).ram(); /* unused */ + map(0xf7e0, 0xf7ff).ram().w(this, FUNC(suprloco_state::scrollram_w)).share("scrollram"); + map(0xf800, 0xffff).ram(); +} + +void suprloco_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).rom().region("maincpu", 0x8000); +} + +void suprloco_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa003).w("sn1", FUNC(sn76496_device::write)); + map(0xc000, 0xc003).w("sn2", FUNC(sn76496_device::write)); + map(0xe000, 0xe000).r(this, FUNC(suprloco_state::soundport_r)); +} diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp index 763487a4659..473aa744a47 100644 --- a/src/mame/drivers/suprnova.cpp +++ b/src/mame/drivers/suprnova.cpp @@ -722,31 +722,32 @@ WRITE32_MEMBER(skns_state::v3t_w) m_btiles[offset*4+3] = (data & 0x000000ff) >> 0; } -ADDRESS_MAP_START(skns_state::skns_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM /* BIOS ROM */ - AM_RANGE(0x00400000, 0x0040000f) AM_WRITE(io_w) /* I/O Write */ - AM_RANGE(0x00400000, 0x00400003) AM_READ_PORT("400000") - AM_RANGE(0x00400004, 0x00400007) AM_READ_PORT("400004") +void skns_state::skns_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); /* BIOS ROM */ + map(0x00400000, 0x0040000f).w(this, FUNC(skns_state::io_w)); /* I/O Write */ + map(0x00400000, 0x00400003).portr("400000"); + map(0x00400004, 0x00400007).portr("400004"); /* In between is write only */ - AM_RANGE(0x0040000c, 0x0040000f) AM_READ_PORT("40000c") - AM_RANGE(0x00800000, 0x00801fff) AM_RAM AM_SHARE("nvram") /* 'backup' RAM */ - AM_RANGE(0x00c00000, 0x00c00003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xffff0000) /* ymz280_w (sound) */ - AM_RANGE(0x01000000, 0x0100000f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0xffffffff) - AM_RANGE(0x01800000, 0x01800003) AM_WRITE(hit2_w) - AM_RANGE(0x02000000, 0x02003fff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0x02100000, 0x0210003f) AM_RAM AM_SHARE("spc_regs") /* sprite registers */ - AM_RANGE(0x02400000, 0x0240007f) AM_RAM_WRITE(v3_regs_w) AM_SHARE("v3_regs") /* tilemap registers */ - AM_RANGE(0x02500000, 0x02503fff) AM_RAM_WRITE(tilemapA_w) AM_SHARE("tilemapa_ram") /* tilemap A */ - AM_RANGE(0x02504000, 0x02507fff) AM_RAM_WRITE(tilemapB_w) AM_SHARE("tilemapb_ram") /* tilemap B */ - AM_RANGE(0x02600000, 0x02607fff) AM_RAM AM_SHARE("v3slc_ram") /* tilemap linescroll */ - AM_RANGE(0x02a00000, 0x02a0001f) AM_RAM_WRITE(pal_regs_w) AM_SHARE("pal_regs") - AM_RANGE(0x02a40000, 0x02a5ffff) AM_RAM_WRITE(palette_ram_w) AM_SHARE("palette_ram") - AM_RANGE(0x02f00000, 0x02f000ff) AM_READWRITE(hit_r, hit_w) - AM_RANGE(0x04000000, 0x041fffff) AM_ROMBANK("bank1") /* GAME ROM */ - AM_RANGE(0x04800000, 0x0483ffff) AM_RAM_WRITE(v3t_w) AM_SHARE("v3t_ram") /* tilemap b ram based tiles */ - AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM AM_SHARE("cache_ram") /* 'cache' RAM */ -ADDRESS_MAP_END + map(0x0040000c, 0x0040000f).portr("40000c"); + map(0x00800000, 0x00801fff).ram().share("nvram"); /* 'backup' RAM */ + map(0x00c00000, 0x00c00001).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); /* ymz280_w (sound) */ + map(0x01000000, 0x0100000f).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)); + map(0x01800000, 0x01800003).w(this, FUNC(skns_state::hit2_w)); + map(0x02000000, 0x02003fff).ram().share("spriteram"); /* sprite ram */ + map(0x02100000, 0x0210003f).ram().share("spc_regs"); /* sprite registers */ + map(0x02400000, 0x0240007f).ram().w(this, FUNC(skns_state::v3_regs_w)).share("v3_regs"); /* tilemap registers */ + map(0x02500000, 0x02503fff).ram().w(this, FUNC(skns_state::tilemapA_w)).share("tilemapa_ram"); /* tilemap A */ + map(0x02504000, 0x02507fff).ram().w(this, FUNC(skns_state::tilemapB_w)).share("tilemapb_ram"); /* tilemap B */ + map(0x02600000, 0x02607fff).ram().share("v3slc_ram"); /* tilemap linescroll */ + map(0x02a00000, 0x02a0001f).ram().w(this, FUNC(skns_state::pal_regs_w)).share("pal_regs"); + map(0x02a40000, 0x02a5ffff).ram().w(this, FUNC(skns_state::palette_ram_w)).share("palette_ram"); + map(0x02f00000, 0x02f000ff).rw(this, FUNC(skns_state::hit_r), FUNC(skns_state::hit_w)); + map(0x04000000, 0x041fffff).bankr("bank1"); /* GAME ROM */ + map(0x04800000, 0x0483ffff).ram().w(this, FUNC(skns_state::v3t_w)).share("v3t_ram"); /* tilemap b ram based tiles */ + map(0x06000000, 0x060fffff).ram().share("main_ram"); + map(0xc0000000, 0xc0000fff).ram().share("cache_ram"); /* 'cache' RAM */ +} /***** GFX DECODE *****/ diff --git a/src/mame/drivers/suprridr.cpp b/src/mame/drivers/suprridr.cpp index 27df0975849..26fced5b668 100644 --- a/src/mame/drivers/suprridr.cpp +++ b/src/mame/drivers/suprridr.cpp @@ -143,32 +143,34 @@ WRITE8_MEMBER(suprridr_state::coin_lock_w) * *************************************/ -ADDRESS_MAP_START(suprridr_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram") - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") - AM_RANGE(0x9800, 0x983f) AM_RAM - AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9880, 0x9bff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w) - AM_RANGE(0xb002, 0xb003) AM_WRITE(coin_lock_w) - AM_RANGE(0xb006, 0xb006) AM_WRITE(flipx_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(flipy_w) - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc801, 0xc801) AM_WRITE(fgdisable_w) - AM_RANGE(0xc802, 0xc802) AM_WRITE(fgscrolly_w) - AM_RANGE(0xc804, 0xc804) AM_WRITE(bgscrolly_w) - AM_RANGE(0xc000, 0xefff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(suprridr_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END +void suprridr_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).ram().w(this, FUNC(suprridr_state::bgram_w)).share("bgram"); + map(0x9000, 0x97ff).ram().w(this, FUNC(suprridr_state::fgram_w)).share("fgram"); + map(0x9800, 0x983f).ram(); + map(0x9840, 0x987f).ram().share("spriteram"); + map(0x9880, 0x9bff).ram(); + map(0xa000, 0xa000).portr("INPUTS"); + map(0xa800, 0xa800).portr("SYSTEM"); + map(0xb000, 0xb000).portr("DSW").w(this, FUNC(suprridr_state::nmi_enable_w)); + map(0xb002, 0xb003).w(this, FUNC(suprridr_state::coin_lock_w)); + map(0xb006, 0xb006).w(this, FUNC(suprridr_state::flipx_w)); + map(0xb007, 0xb007).w(this, FUNC(suprridr_state::flipy_w)); + map(0xb800, 0xb800).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc801, 0xc801).w(this, FUNC(suprridr_state::fgdisable_w)); + map(0xc802, 0xc802).w(this, FUNC(suprridr_state::fgscrolly_w)); + map(0xc804, 0xc804).w(this, FUNC(suprridr_state::bgscrolly_w)); + map(0xc000, 0xefff).rom(); +} + + +void suprridr_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} @@ -178,20 +180,22 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(suprridr_state::sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x3800, 0x3bff) AM_RAM -ADDRESS_MAP_END +void suprridr_state::sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x3800, 0x3bff).ram(); +} -ADDRESS_MAP_START(suprridr_state::sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8d, 0x8d) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay2", ay8910_device, data_r) -ADDRESS_MAP_END +void suprridr_state::sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x8c, 0x8d).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8d, 0x8d).r("ay1", FUNC(ay8910_device::data_r)); + map(0x8e, 0x8f).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8f, 0x8f).r("ay2", FUNC(ay8910_device::data_r)); +} diff --git a/src/mame/drivers/suprslam.cpp b/src/mame/drivers/suprslam.cpp index 78081a6573b..007490e278e 100644 --- a/src/mame/drivers/suprslam.cpp +++ b/src/mame/drivers/suprslam.cpp @@ -102,35 +102,38 @@ WRITE8_MEMBER(suprslam_state::suprslam_sh_bankswitch_w) /*** MEMORY MAPS *************************************************************/ -ADDRESS_MAP_START(suprslam_state::suprslam_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0xfb0000, 0xfb1fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfc0000, 0xfcffff) AM_RAM AM_SHARE("sp_videoram") - AM_RANGE(0xfd0000, 0xfdffff) AM_RAM - AM_RANGE(0xfe0000, 0xfe0fff) AM_RAM_WRITE(suprslam_screen_videoram_w) AM_SHARE("screen_videoram") - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(suprslam_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xff2000, 0xff203f) AM_RAM AM_SHARE("screen_vregs") - AM_RANGE(0xff3000, 0xff3001) AM_WRITENOP // sprite buffer trigger? - AM_RANGE(0xff8000, 0xff8fff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) - AM_RANGE(0xff9000, 0xff9001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xffa000, 0xffafff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffd000, 0xffd01f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) - AM_RANGE(0xffe000, 0xffe001) AM_WRITE(suprslam_bank_w) - AM_RANGE(0xfff000, 0xfff01f) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(suprslam_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(suprslam_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END +void suprslam_state::suprslam_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0xfb0000, 0xfb1fff).ram().share("spriteram"); + map(0xfc0000, 0xfcffff).ram().share("sp_videoram"); + map(0xfd0000, 0xfdffff).ram(); + map(0xfe0000, 0xfe0fff).ram().w(this, FUNC(suprslam_state::suprslam_screen_videoram_w)).share("screen_videoram"); + map(0xff0000, 0xff1fff).ram().w(this, FUNC(suprslam_state::suprslam_bg_videoram_w)).share("bg_videoram"); + map(0xff2000, 0xff203f).ram().share("screen_vregs"); + map(0xff3000, 0xff3001).nopw(); // sprite buffer trigger? + map(0xff8000, 0xff8fff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); + map(0xff9001, 0xff9001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xffa000, 0xffafff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffd000, 0xffd01f).w(m_k053936, FUNC(k053936_device::ctrl_w)); + map(0xffe000, 0xffe001).w(this, FUNC(suprslam_state::suprslam_bank_w)); + map(0xfff000, 0xfff01f).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff); +} + +void suprslam_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank1"); +} + +void suprslam_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(suprslam_state::suprslam_sh_bankswitch_w)); + map(0x04, 0x04).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} /*** INPUT PORTS *************************************************************/ diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp index f89f99f5240..c9384e1fbc0 100644 --- a/src/mame/drivers/supstarf.cpp +++ b/src/mame/drivers/supstarf.cpp @@ -57,24 +57,28 @@ private: bool m_latch_select; }; -ADDRESS_MAP_START(supstarf_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch1", i8212_device, read) AM_DEVWRITE("soundlatch2", i8212_device, strobe) - AM_RANGE(0xc000, 0xc7ff) AM_RAM // 5517 (2Kx8) at IC11 -ADDRESS_MAP_END - -ADDRESS_MAP_START(supstarf_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_WRITE(driver_clk_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(supstarf_state::sound_map) - AM_RANGE(0x000, 0xfff) AM_ROM // external EPROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(supstarf_state::sound_io_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(psg_latch_r, psg_latch_w) -ADDRESS_MAP_END +void supstarf_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x8000).r("soundlatch1", FUNC(i8212_device::read)).w("soundlatch2", FUNC(i8212_device::strobe)); + map(0xc000, 0xc7ff).ram(); // 5517 (2Kx8) at IC11 +} + +void supstarf_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).w(this, FUNC(supstarf_state::driver_clk_w)); +} + +void supstarf_state::sound_map(address_map &map) +{ + map(0x000, 0xfff).rom(); // external EPROM +} + +void supstarf_state::sound_io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(supstarf_state::psg_latch_r), FUNC(supstarf_state::psg_latch_w)); +} READ8_MEMBER(supstarf_state::psg_latch_r) { diff --git a/src/mame/drivers/surpratk.cpp b/src/mame/drivers/surpratk.cpp index d2221d3c425..e2f223970bb 100644 --- a/src/mame/drivers/surpratk.cpp +++ b/src/mame/drivers/surpratk.cpp @@ -58,29 +58,31 @@ WRITE8_MEMBER(surpratk_state::surpratk_5fc0_w) /********************************************/ -ADDRESS_MAP_START(surpratk_state::surpratk_map) - AM_RANGE(0x0000, 0x07ff) AM_DEVICE("bank0000", address_map_bank_device, amap8) - AM_RANGE(0x0800, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") /* banked ROM */ - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0x5f8c, 0x5f8c) AM_READ_PORT("P1") - AM_RANGE(0x5f8d, 0x5f8d) AM_READ_PORT("P2") - AM_RANGE(0x5f8e, 0x5f8e) AM_READ_PORT("DSW3") - AM_RANGE(0x5f8f, 0x5f8f) AM_READ_PORT("DSW1") - AM_RANGE(0x5f90, 0x5f90) AM_READ_PORT("DSW2") - AM_RANGE(0x5fa0, 0x5faf) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) - AM_RANGE(0x5fb0, 0x5fbf) AM_DEVWRITE("k053251", k053251_device, write) - AM_RANGE(0x5fc0, 0x5fc0) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(surpratk_5fc0_w) - AM_RANGE(0x5fd0, 0x5fd1) AM_DEVWRITE("ymsnd", ym2151_device, write) - AM_RANGE(0x5fc4, 0x5fc4) AM_WRITE(surpratk_videobank_w) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(surpratk_state::bank0000_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0fff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) - AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END +void surpratk_state::surpratk_map(address_map &map) +{ + map(0x0000, 0x07ff).m(m_bank0000, FUNC(address_map_bank_device::amap8)); + map(0x0800, 0x1fff).ram(); + map(0x2000, 0x3fff).bankr("bank1"); /* banked ROM */ + map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0x5f8c, 0x5f8c).portr("P1"); + map(0x5f8d, 0x5f8d).portr("P2"); + map(0x5f8e, 0x5f8e).portr("DSW3"); + map(0x5f8f, 0x5f8f).portr("DSW1"); + map(0x5f90, 0x5f90).portr("DSW2"); + map(0x5fa0, 0x5faf).rw(m_k053244, FUNC(k05324x_device::k053244_r), FUNC(k05324x_device::k053244_w)); + map(0x5fb0, 0x5fbf).w(m_k053251, FUNC(k053251_device::write)); + map(0x5fc0, 0x5fc0).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(surpratk_state::surpratk_5fc0_w)); + map(0x5fd0, 0x5fd1).w("ymsnd", FUNC(ym2151_device::write)); + map(0x5fc4, 0x5fc4).w(this, FUNC(surpratk_state::surpratk_videobank_w)); + map(0x8000, 0xffff).rom().region("maincpu", 0x38000); +} + +void surpratk_state::bank0000_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0fff).rw(m_k053244, FUNC(k05324x_device::k053245_r), FUNC(k05324x_device::k053245_w)); + map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} /*************************************************************************** diff --git a/src/mame/drivers/sv8000.cpp b/src/mame/drivers/sv8000.cpp index df31e3143c5..aeaa8614df3 100644 --- a/src/mame/drivers/sv8000.cpp +++ b/src/mame/drivers/sv8000.cpp @@ -99,21 +99,23 @@ private: }; -ADDRESS_MAP_START(sv8000_state::sv8000_mem) - ADDRESS_MAP_UNMAP_HIGH +void sv8000_state::sv8000_mem(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x0000, 0x0fff) // mapped by the cartslot - AM_RANGE( 0x8000, 0x83ff ) AM_RAM // Work RAM?? - AM_RANGE( 0xc000, 0xcbff ) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(sv8000_state::sv8000_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("i8255", i8255_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("ay8910", ay8910_device, data_w) // Not sure yet - AM_RANGE(0xc1, 0xc1) AM_DEVWRITE("ay8910", ay8910_device, address_w) // Not sure yet -ADDRESS_MAP_END + map(0x8000, 0x83ff).ram(); // Work RAM?? + map(0xc000, 0xcbff).ram().share("videoram"); +} + + +void sv8000_state::sv8000_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xc0, 0xc0).w("ay8910", FUNC(ay8910_device::data_w)); // Not sure yet + map(0xc1, 0xc1).w("ay8910", FUNC(ay8910_device::address_w)); // Not sure yet +} /* Input ports */ diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp index e067658a9ad..fabdb21f088 100644 --- a/src/mame/drivers/svi318.cpp +++ b/src/mame/drivers/svi318.cpp @@ -133,29 +133,32 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(svi3x8_state::svi3x8_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mreq_r, mreq_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(svi3x8_state::svi3x8_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_DEVICE("io", address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(svi3x8_state::svi3x8_io_bank) - AM_RANGE(0x000, 0x0ff) AM_DEVREADWRITE("exp", svi_expander_device, iorq_r, iorq_w) - AM_RANGE(0x100, 0x17f) AM_DEVREADWRITE("exp", svi_expander_device, iorq_r, iorq_w) - AM_RANGE(0x180, 0x180) AM_MIRROR(0x22) AM_DEVWRITE("vdp", tms9928a_device, vram_write) - AM_RANGE(0x181, 0x181) AM_MIRROR(0x22) AM_DEVWRITE("vdp", tms9928a_device, register_write) - AM_RANGE(0x184, 0x184) AM_MIRROR(0x22) AM_DEVREAD("vdp", tms9928a_device, vram_read) - AM_RANGE(0x185, 0x185) AM_MIRROR(0x22) AM_DEVREAD("vdp", tms9928a_device, register_read) - AM_RANGE(0x188, 0x188) AM_MIRROR(0x23) AM_DEVWRITE("psg", ay8910_device, address_w) - AM_RANGE(0x18c, 0x18c) AM_MIRROR(0x23) AM_DEVWRITE("psg", ay8910_device, data_w) - AM_RANGE(0x190, 0x190) AM_MIRROR(0x23) AM_DEVREAD("psg", ay8910_device, data_r) - AM_RANGE(0x194, 0x197) AM_DEVWRITE("ppi", i8255_device, write) - AM_RANGE(0x198, 0x19a) AM_DEVREAD("ppi", i8255_device, read) -ADDRESS_MAP_END +void svi3x8_state::svi3x8_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(svi3x8_state::mreq_r), FUNC(svi3x8_state::mreq_w)); +} + +void svi3x8_state::svi3x8_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).m(m_io, FUNC(address_map_bank_device::amap8)); +} + +void svi3x8_state::svi3x8_io_bank(address_map &map) +{ + map(0x000, 0x0ff).rw(m_expander, FUNC(svi_expander_device::iorq_r), FUNC(svi_expander_device::iorq_w)); + map(0x100, 0x17f).rw(m_expander, FUNC(svi_expander_device::iorq_r), FUNC(svi_expander_device::iorq_w)); + map(0x180, 0x180).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::vram_write)); + map(0x181, 0x181).mirror(0x22).w(m_vdp, FUNC(tms9928a_device::register_write)); + map(0x184, 0x184).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::vram_read)); + map(0x185, 0x185).mirror(0x22).r(m_vdp, FUNC(tms9928a_device::register_read)); + map(0x188, 0x188).mirror(0x23).w("psg", FUNC(ay8910_device::address_w)); + map(0x18c, 0x18c).mirror(0x23).w("psg", FUNC(ay8910_device::data_w)); + map(0x190, 0x190).mirror(0x23).r("psg", FUNC(ay8910_device::data_r)); + map(0x194, 0x197).w("ppi", FUNC(i8255_device::write)); + map(0x198, 0x19a).r("ppi", FUNC(i8255_device::read)); +} //************************************************************************** diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp index 00c1b8eb4a7..7b84b8d96e6 100644 --- a/src/mame/drivers/svision.cpp +++ b/src/mame/drivers/svision.cpp @@ -259,23 +259,25 @@ WRITE8_MEMBER(svision_state::tvlink_w) } } -ADDRESS_MAP_START(svision_state::svision_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(svision_r, svision_w) AM_SHARE("reg") - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(svision_state::tvlink_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_READWRITE(tvlink_r, tvlink_w) AM_SHARE("reg") - AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank2") -ADDRESS_MAP_END +void svision_state::svision_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).rw(this, FUNC(svision_state::svision_r), FUNC(svision_state::svision_w)).share("reg"); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x7fff).noprw(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).bankr("bank2"); +} + +void svision_state::tvlink_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x3fff).rw(this, FUNC(svision_state::tvlink_r), FUNC(svision_state::tvlink_w)).share("reg"); + map(0x4000, 0x5fff).ram().share("videoram"); + map(0x6000, 0x7fff).noprw(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xffff).bankr("bank2"); +} static INPUT_PORTS_START( svision ) PORT_START("JOY") diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp index 3ace27fdbbe..c5bc7402c06 100644 --- a/src/mame/drivers/svmu.cpp +++ b/src/mame/drivers/svmu.cpp @@ -125,15 +125,17 @@ READ8_MEMBER(svmu_state::p7_r) } -ADDRESS_MAP_START(svmu_state::svmu_mem) - AM_RANGE( 0x0000, 0xffff ) AM_READWRITE(prog_r, prog_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(svmu_state::svmu_io_mem) - AM_RANGE( LC8670_PORT1, LC8670_PORT1 ) AM_READWRITE(p1_r, p1_w) - AM_RANGE( LC8670_PORT3, LC8670_PORT3 ) AM_READ_PORT("P3") - AM_RANGE( LC8670_PORT7, LC8670_PORT7 ) AM_READ(p7_r) -ADDRESS_MAP_END +void svmu_state::svmu_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(svmu_state::prog_r), FUNC(svmu_state::prog_w)); +} + +void svmu_state::svmu_io_mem(address_map &map) +{ + map(LC8670_PORT1, LC8670_PORT1).rw(this, FUNC(svmu_state::p1_r), FUNC(svmu_state::p1_w)); + map(LC8670_PORT3, LC8670_PORT3).portr("P3"); + map(LC8670_PORT7, LC8670_PORT7).r(this, FUNC(svmu_state::p7_r)); +} /* Input ports */ static INPUT_PORTS_START( svmu ) diff --git a/src/mame/drivers/swtpc.cpp b/src/mame/drivers/swtpc.cpp index b007b51b3ae..529280062f4 100644 --- a/src/mame/drivers/swtpc.cpp +++ b/src/mame/drivers/swtpc.cpp @@ -67,19 +67,20 @@ private: required_device<mc14411_device> m_brg; }; -ADDRESS_MAP_START(swtpc_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io0", ss50_interface_port_device, read, write) - AM_RANGE(0x8004, 0x8007) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io1", ss50_interface_port_device, read, write) - AM_RANGE(0x8008, 0x800b) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io2", ss50_interface_port_device, read, write) - AM_RANGE(0x800c, 0x800f) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io3", ss50_interface_port_device, read, write) - AM_RANGE(0x8010, 0x8013) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io4", ss50_interface_port_device, read, write) - AM_RANGE(0x8014, 0x8017) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io5", ss50_interface_port_device, read, write) - AM_RANGE(0x8018, 0x801b) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io6", ss50_interface_port_device, read, write) - AM_RANGE(0x801c, 0x801f) AM_MIRROR(0x1fc0) AM_DEVREADWRITE("io7", ss50_interface_port_device, read, write) - AM_RANGE(0xa000, 0xa07f) AM_RAM // MCM6810 - AM_RANGE(0xe000, 0xe3ff) AM_MIRROR(0x1c00) AM_ROM AM_REGION("mcm6830", 0) -ADDRESS_MAP_END +void swtpc_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x8000, 0x8003).mirror(0x1fc0).rw("io0", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x8004, 0x8007).mirror(0x1fc0).rw("io1", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x8008, 0x800b).mirror(0x1fc0).rw("io2", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x800c, 0x800f).mirror(0x1fc0).rw("io3", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x8010, 0x8013).mirror(0x1fc0).rw("io4", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x8014, 0x8017).mirror(0x1fc0).rw("io5", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x8018, 0x801b).mirror(0x1fc0).rw("io6", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0x801c, 0x801f).mirror(0x1fc0).rw("io7", FUNC(ss50_interface_port_device::read), FUNC(ss50_interface_port_device::write)); + map(0xa000, 0xa07f).ram(); // MCM6810 + map(0xe000, 0xe3ff).mirror(0x1c00).rom().region("mcm6830", 0); +} /* Input ports */ static INPUT_PORTS_START( swtpc ) diff --git a/src/mame/drivers/swtpc09.cpp b/src/mame/drivers/swtpc09.cpp index 40a4946b743..fb7db1e60f8 100644 --- a/src/mame/drivers/swtpc09.cpp +++ b/src/mame/drivers/swtpc09.cpp @@ -60,77 +60,82 @@ /* Address map is dynamically setup when DAT memory is written to */ /* only ROM from FF00-FFFF and DAT memory at FFF0-FFFF (write only) is guaranteed always*/ -ADDRESS_MAP_START(swtpc09_state::mp09_mem) - AM_RANGE(0x0000, 0xfeff) AM_READWRITE(main_r, main_w) - AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("maincpu", 0xff00) - AM_RANGE(0xff00, 0xff0f) AM_MIRROR(0xf0) AM_WRITEONLY AM_SHARE("dat") -ADDRESS_MAP_END - -ADDRESS_MAP_START(swtpc09_state::flex_dmf2_mem) - AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated - AM_RANGE(0xe000, 0xe003) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe004, 0xe005) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xe0a0, 0xefff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w) - AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0xf024, 0xf03f) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_control_reg_r, dmf2_control_reg_w) +void swtpc09_state::mp09_mem(address_map &map) +{ + map(0x0000, 0xfeff).rw(this, FUNC(swtpc09_state::main_r), FUNC(swtpc09_state::main_w)); + map(0xff00, 0xffff).rom().region("maincpu", 0xff00); + map(0xff00, 0xff0f).mirror(0xf0).writeonly().share("dat"); +} + +void swtpc09_state::flex_dmf2_mem(address_map &map) +{ + map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated + map(0xe000, 0xe003).mirror(0xf0000).noprw(); + map(0xe004, 0xe005).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xe0a0, 0xefff).mirror(0xf0000).noprw(); + map(0xf000, 0xf01f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::m6844_r), FUNC(swtpc09_state::m6844_w)); + map(0xf020, 0xf023).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0xf024, 0xf03f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf2_control_reg_r), FUNC(swtpc09_state::dmf2_control_reg_w)); //AM_RANGE(0xf042, 0xf7ff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(swtpc09_state::flex_dc4_piaide_mem) - AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated - AM_RANGE(0xe000, 0xe003) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe004, 0xe005) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xe014, 0xe014) AM_MIRROR(0xf0000) AM_WRITE(dc4_control_reg_w) - AM_RANGE(0xe018, 0xe01b) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write) + map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800); +} + +void swtpc09_state::flex_dc4_piaide_mem(address_map &map) +{ + map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated + map(0xe000, 0xe003).mirror(0xf0000).noprw(); + map(0xe004, 0xe005).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe014, 0xe014).mirror(0xf0000).w(this, FUNC(swtpc09_state::dc4_control_reg_w)); + map(0xe018, 0xe01b).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); //AM_RANGE(0xe01c, 0xe05f) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe060, 0xe063) AM_MIRROR(0xf000c) AM_DEVREADWRITE("piaide", pia6821_device, read, write) + map(0xe060, 0xe063).mirror(0xf000c).rw(m_piaide, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //AM_RANGE(0xe070, 0xe07f) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) + map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); //AM_RANGE(0xe0a0, 0xe7ff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe800, 0xefff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xe800) //piaide rom + map(0xe800, 0xefff).mirror(0xf0000).rom().region("maincpu", 0xe800); //piaide rom //AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w) //AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write) //AM_RANGE(0xf024, 0xf03f) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_control_reg_r, dmf2_control_reg_w) //AM_RANGE(0xf040, 0xf041) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_dma_address_reg_r, dmf2_dma_address_reg_w) - AM_RANGE(0xf000, 0xf7ff) AM_MIRROR(0xf0000) AM_RAM AM_SHARE("s09ram") // 2k ram for piaide on s09 board - AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(swtpc09_state::uniflex_dmf2_mem) - AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated - AM_RANGE(0xe000, 0xe001) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xe002, 0xe07f) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xe0a0, 0xefff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w) - AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0xf024, 0xf03f) AM_MIRROR(0xf0000) AM_READWRITE(dmf2_control_reg_r, dmf2_control_reg_w) + map(0xf000, 0xf7ff).mirror(0xf0000).ram().share("s09ram"); // 2k ram for piaide on s09 board + map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800); +} + +void swtpc09_state::uniflex_dmf2_mem(address_map &map) +{ + map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated + map(0xe000, 0xe001).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe002, 0xe07f).mirror(0xf0000).noprw(); + map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xe0a0, 0xefff).mirror(0xf0000).noprw(); + map(0xf000, 0xf01f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::m6844_r), FUNC(swtpc09_state::m6844_w)); + map(0xf020, 0xf023).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0xf024, 0xf03f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf2_control_reg_r), FUNC(swtpc09_state::dmf2_control_reg_w)); //AM_RANGE(0xf042, 0xf7ff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(swtpc09_state::uniflex_dmf3_mem) - AM_RANGE(0x00000, 0xfffff) AM_RAM AM_SHARE("mainram") // by default everything is ram, 1MB ram emulated - AM_RANGE(0xe000, 0xe001) AM_MIRROR(0xf0000) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xe002, 0xe07f) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xe080, 0xe083) AM_MIRROR(0xf000c) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xe090, 0xe097) AM_MIRROR(0xf0008) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xe0a0, 0xefff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf000, 0xf01f) AM_MIRROR(0xf0000) AM_READWRITE(m6844_r, m6844_w) - AM_RANGE(0xf020, 0xf023) AM_MIRROR(0xf0000) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0xf024, 0xf024) AM_MIRROR(0xf0000) AM_READWRITE(dmf3_control_reg_r, dmf3_control_reg_w) - AM_RANGE(0xf025, 0xf025) AM_MIRROR(0xf0000) AM_READWRITE(dmf3_dma_address_reg_r, dmf3_dma_address_reg_w) + map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800); +} + +void swtpc09_state::uniflex_dmf3_mem(address_map &map) +{ + map(0x00000, 0xfffff).ram().share("mainram"); // by default everything is ram, 1MB ram emulated + map(0xe000, 0xe001).mirror(0xf0000).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xe002, 0xe07f).mirror(0xf0000).noprw(); + map(0xe080, 0xe083).mirror(0xf000c).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe090, 0xe097).mirror(0xf0008).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xe0a0, 0xefff).mirror(0xf0000).noprw(); + map(0xf000, 0xf01f).mirror(0xf0000).rw(this, FUNC(swtpc09_state::m6844_r), FUNC(swtpc09_state::m6844_w)); + map(0xf020, 0xf023).mirror(0xf0000).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0xf024, 0xf024).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf3_control_reg_r), FUNC(swtpc09_state::dmf3_control_reg_w)); + map(0xf025, 0xf025).mirror(0xf0000).rw(this, FUNC(swtpc09_state::dmf3_dma_address_reg_r), FUNC(swtpc09_state::dmf3_dma_address_reg_w)); //AM_RANGE(0xf030, 0xf03f) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf040, 0xf04f) AM_MIRROR(0xf0000) AM_DEVREADWRITE("via", via6522_device, read, write) + map(0xf040, 0xf04f).mirror(0xf0000).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); //AM_RANGE(0xf050, 0xf7ff) AM_MIRROR(0xf0000) AM_NOP - AM_RANGE(0xf800, 0xffff) AM_MIRROR(0xf0000) AM_ROM AM_REGION("maincpu", 0xf800) -ADDRESS_MAP_END + map(0xf800, 0xffff).mirror(0xf0000).rom().region("maincpu", 0xf800); +} /* Input ports */ diff --git a/src/mame/drivers/swyft.cpp b/src/mame/drivers/swyft.cpp index 78605d70189..be50c5138bc 100644 --- a/src/mame/drivers/swyft.cpp +++ b/src/mame/drivers/swyft.cpp @@ -570,16 +570,17 @@ x x x x 1 1 ?1? ?0? ? 1 0 0 x x * * * * x x */ -ADDRESS_MAP_START(swyft_state::swyft_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // 64 KB ROM - AM_RANGE(0x040000, 0x07ffff) AM_RAM AM_SHARE("p_swyft_vram") // 256 KB RAM - AM_RANGE(0x0d0000, 0x0d000f) AM_READ(swyft_d0000) // status of something? reads from d0000, d0004, d0008, d000a, d000e - AM_RANGE(0x0e1000, 0x0e1000) AM_DEVWRITE("acia6850", acia6850_device, control_w) // 6850 ACIA lives here - AM_RANGE(0x0e2000, 0x0e2fff) AM_READWRITE(swyft_via0_r, swyft_via0_w) // io area with selector on a9 a8 a7 a6? - AM_RANGE(0x0e4000, 0x0e4fff) AM_READWRITE(swyft_via1_r, swyft_via1_w) -ADDRESS_MAP_END +void swyft_state::swyft_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xfffff); + map(0x000000, 0x00ffff).rom(); // 64 KB ROM + map(0x040000, 0x07ffff).ram().share("p_swyft_vram"); // 256 KB RAM + map(0x0d0000, 0x0d000f).r(this, FUNC(swyft_state::swyft_d0000)); // status of something? reads from d0000, d0004, d0008, d000a, d000e + map(0x0e1000, 0x0e1000).w(m_acia6850, FUNC(acia6850_device::control_w)); // 6850 ACIA lives here + map(0x0e2000, 0x0e2fff).rw(this, FUNC(swyft_state::swyft_via0_r), FUNC(swyft_state::swyft_via0_w)); // io area with selector on a9 a8 a7 a6? + map(0x0e4000, 0x0e4fff).rw(this, FUNC(swyft_state::swyft_via1_r), FUNC(swyft_state::swyft_via1_w)); +} MACHINE_START_MEMBER(swyft_state,swyft) { diff --git a/src/mame/drivers/sym1.cpp b/src/mame/drivers/sym1.cpp index 5dd82d2e97a..48c79549919 100644 --- a/src/mame/drivers/sym1.cpp +++ b/src/mame/drivers/sym1.cpp @@ -300,19 +300,20 @@ void sym1_state::machine_reset() // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(sym1_state::sym1_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM // U12/U13 RAM - AM_RANGE(0x0400, 0x07ff) AM_RAMBANK("bank2") AM_SHARE("ram_1k") - AM_RANGE(0x0800, 0x0bff) AM_RAMBANK("bank3") AM_SHARE("ram_2k") - AM_RANGE(0x0c00, 0x0fff) AM_RAMBANK("bank4") AM_SHARE("ram_3k") - AM_RANGE(0x8000, 0x8fff) AM_ROM AM_SHARE("monitor") // U20 Monitor ROM - AM_RANGE(0xa000, 0xa00f) AM_DEVREADWRITE("via1", via6522_device, read, write) // U25 VIA #1 - AM_RANGE(0xa400, 0xa41f) AM_DEVICE("riot", mos6532_new_device, io_map) // U27 RIOT - AM_RANGE(0xa600, 0xa67f) AM_RAMBANK("bank5") AM_SHARE("riot_ram") // U27 RIOT RAM - AM_RANGE(0xa800, 0xa80f) AM_DEVREADWRITE("via2", via6522_device, read, write) // U28 VIA #2 - AM_RANGE(0xac00, 0xac0f) AM_DEVREADWRITE("via3", via6522_device, read, write) // U29 VIA #3 - AM_RANGE(0xb000, 0xefff) AM_ROM -ADDRESS_MAP_END +void sym1_state::sym1_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); // U12/U13 RAM + map(0x0400, 0x07ff).bankrw("bank2").share("ram_1k"); + map(0x0800, 0x0bff).bankrw("bank3").share("ram_2k"); + map(0x0c00, 0x0fff).bankrw("bank4").share("ram_3k"); + map(0x8000, 0x8fff).rom().share("monitor"); // U20 Monitor ROM + map(0xa000, 0xa00f).rw("via1", FUNC(via6522_device::read), FUNC(via6522_device::write)); // U25 VIA #1 + map(0xa400, 0xa41f).m("riot", FUNC(mos6532_new_device::io_map)); // U27 RIOT + map(0xa600, 0xa67f).bankrw("bank5").share("riot_ram"); // U27 RIOT RAM + map(0xa800, 0xa80f).rw("via2", FUNC(via6522_device::read), FUNC(via6522_device::write)); // U28 VIA #2 + map(0xac00, 0xac0f).rw("via3", FUNC(via6522_device::read), FUNC(via6522_device::write)); // U29 VIA #3 + map(0xb000, 0xefff).rom(); +} //************************************************************************** diff --git a/src/mame/drivers/symbolics.cpp b/src/mame/drivers/symbolics.cpp index 524b2b19915..f1109759638 100644 --- a/src/mame/drivers/symbolics.cpp +++ b/src/mame/drivers/symbolics.cpp @@ -245,14 +245,15 @@ currently dies at context switch code loaded to ram around 38EE0, see patent 488 */ -ADDRESS_MAP_START(symbolics_state::m68k_mem) - ADDRESS_MAP_UNMAP_HIGH +void symbolics_state::m68k_mem(address_map &map) +{ + map.unmap_value_high(); //AM_RANGE(0x000000, 0x01ffff) AM_ROM /* ROM lives here */ - AM_RANGE(0x000000, 0x00bfff) AM_ROM + map(0x000000, 0x00bfff).rom(); // 0x00c000-0x00ffff is open bus but decoded/auto-DTACKed, does not cause bus error - AM_RANGE(0x010000, 0x01bfff) AM_ROM + map(0x010000, 0x01bfff).rom(); // 0x01c000-0x01ffff is open bus but decoded/auto-DTACKed, does not cause bus error - AM_RANGE(0x020000, 0x03ffff) AM_RAM AM_REGION("fepdram", 0) /* Local FEP ram seems to be here? there are 18 mcm4164s on the pcb which probably map here, plus 2 parity bits? */ + map(0x020000, 0x03ffff).ram().region("fepdram", 0); /* Local FEP ram seems to be here? there are 18 mcm4164s on the pcb which probably map here, plus 2 parity bits? */ //AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(ram_parity_hack_r, ram_parity_hack_w) //AM_RANGE(0x020002, 0x03ffff) AM_RAM AM_REGION("fepdram", 0) /* Local FEP ram seems to be here? there are 18 mcm4164s on the pcb which probably map here, plus 2 parity bits? */ // 2x AM9128-10PC 2048x8 SRAMs @F7 and @G7 map somewhere @@ -260,12 +261,12 @@ ADDRESS_MAP_START(symbolics_state::m68k_mem) //AM_RANGE(0x040000, 0xffffff) AM_READ(buserror_r); //AM_RANGE(0x800000, 0xffffff) AM_RAM /* paged access to lispm ram? */ //FF00B0 is readable, may be to read the MC/SQ/DP/AU continuity lines? - AM_RANGE(0xff00b0, 0xff00b1) AM_READ(fep_paddle_id_prom_r) + map(0xff00b0, 0xff00b1).r(this, FUNC(symbolics_state::fep_paddle_id_prom_r)); //FF00E1 is writable, may control the LBUS_POWER_RESET line, see http://bitsavers.trailing-edge.com/pdf/symbolics/3600_series/Lisp_Machine_Hardware_Memos.pdf page 90 // or may be writing to FEP-LBUS-CONTROL bit 0x02 DOORBELL INT ENABLE ? // or may actually be setting LBUS_ID_REQ as the patent map shows //FF018A is writable, gets 0x5555 written to it -ADDRESS_MAP_END +} /****************************************************************************** Input Ports diff --git a/src/mame/drivers/sys2900.cpp b/src/mame/drivers/sys2900.cpp index 25049ac5321..cb18a3d8f7c 100644 --- a/src/mame/drivers/sys2900.cpp +++ b/src/mame/drivers/sys2900.cpp @@ -77,25 +77,27 @@ protected: }; -ADDRESS_MAP_START(sys2900_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("boot") - AM_RANGE( 0x0800, 0xefff ) AM_RAM - AM_RANGE( 0xf000, 0xf7ff ) AM_ROM - AM_RANGE( 0xf800, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(sys2900_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("sio1", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio2", z80sio_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x80, 0x83) // unknown device, disk related? - AM_RANGE(0xa0, 0xaf) // unknown device - AM_RANGE(0xc0, 0xc3) // unknown device -ADDRESS_MAP_END +void sys2900_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).bankrw("boot"); + map(0x0800, 0xefff).ram(); + map(0xf000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void sys2900_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x20, 0x23).rw("sio1", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x24, 0x27).rw("pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x28, 0x2b).rw("sio2", FUNC(z80sio_device::ba_cd_r), FUNC(z80sio_device::ba_cd_w)); + map(0x2c, 0x2f).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x80, 0x83); // unknown device, disk related? + map(0xa0, 0xaf); // unknown device + map(0xc0, 0xc3); // unknown device +} /* Input ports */ static INPUT_PORTS_START( sys2900 ) diff --git a/src/mame/drivers/sys9002.cpp b/src/mame/drivers/sys9002.cpp index 6c30d8296e5..d90851fe426 100644 --- a/src/mame/drivers/sys9002.cpp +++ b/src/mame/drivers/sys9002.cpp @@ -48,25 +48,27 @@ private: }; -ADDRESS_MAP_START(sys9002_state::sys9002_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM // 4 * 4K ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM // 4 * 2k RAM - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("videoram") // 2k RAM - AM_RANGE(0xc000, 0xc07f) AM_RAM // ?? -ADDRESS_MAP_END - -ADDRESS_MAP_START(sys9002_state::sys9002_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void sys9002_state::sys9002_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); // 4 * 4K ROM + map(0x8000, 0x9fff).ram(); // 4 * 2k RAM + map(0xa000, 0xa7ff).ram().share("videoram"); // 2k RAM + map(0xc000, 0xc07f).ram(); // ?? +} + +void sys9002_state::sys9002_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); //AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) // left commented out as mame freezes after about 2 seconds //AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x09, 0x09) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) // 7 bits even parity, x64 - AM_RANGE(0x11, 0x11) AM_READNOP // continuous read - AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0x1d, 0x1d) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) // enabled for transmit only, 8 bits odd parity, x64 -ADDRESS_MAP_END + map(0x08, 0x08).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x09, 0x09).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 7 bits even parity, x64 + map(0x11, 0x11).nopr(); // continuous read + map(0x1c, 0x1c).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x1d, 0x1d).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // enabled for transmit only, 8 bits odd parity, x64 +} /* Input ports */ static INPUT_PORTS_START( sys9002 ) diff --git a/src/mame/drivers/systec.cpp b/src/mame/drivers/systec.cpp index ce1eb5e1bdd..c27ba6c8ae3 100644 --- a/src/mame/drivers/systec.cpp +++ b/src/mame/drivers/systec.cpp @@ -56,17 +56,19 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(systec_state::systec_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(systec_state::systec_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x68, 0x6b) // fdc? - AM_RANGE(0x6c, 0x6c) // motor control? - AM_RANGE(0xc4, 0xc7) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) -ADDRESS_MAP_END +void systec_state::systec_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).ram().region("maincpu", 0); +} + +void systec_state::systec_io(address_map &map) +{ + map.global_mask(0xff); + map(0x68, 0x6b); // fdc? + map(0x6c, 0x6c); // motor control? + map(0xc4, 0xc7).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); +} /* Input ports */ static INPUT_PORTS_START( systec ) diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp index e49c27adcf1..f95684e8d29 100644 --- a/src/mame/drivers/system1.cpp +++ b/src/mame/drivers/system1.cpp @@ -758,72 +758,78 @@ WRITE8_MEMBER(system1_state::nobb_outport24_w) *************************************/ /* main memory map */ -ADDRESS_MAP_START(system1_state::system1_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xe000, 0xefff) AM_READWRITE(system1_videoram_r, system1_videoram_w) - AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(system1_mixer_collision_r, system1_mixer_collision_w) - AM_RANGE(0xf400, 0xf7ff) AM_WRITE(system1_mixer_collision_reset_w) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE(system1_sprite_collision_r, system1_sprite_collision_w) - AM_RANGE(0xfc00, 0xffff) AM_WRITE(system1_sprite_collision_reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(system1_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(system1_state::banked_decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d") - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d") - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_SHARE("ram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette") -ADDRESS_MAP_END +void system1_state::system1_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().share("ram"); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette"); + map(0xe000, 0xefff).rw(this, FUNC(system1_state::system1_videoram_r), FUNC(system1_state::system1_videoram_w)); + map(0xf000, 0xf3ff).rw(this, FUNC(system1_state::system1_mixer_collision_r), FUNC(system1_state::system1_mixer_collision_w)); + map(0xf400, 0xf7ff).w(this, FUNC(system1_state::system1_mixer_collision_reset_w)); + map(0xf800, 0xfbff).rw(this, FUNC(system1_state::system1_sprite_collision_r), FUNC(system1_state::system1_sprite_collision_w)); + map(0xfc00, 0xffff).w(this, FUNC(system1_state::system1_sprite_collision_reset_w)); +} + +void system1_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xcfff).ram().share("ram"); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette"); +} + +void system1_state::banked_decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).bankr("bank0d"); + map(0x8000, 0xbfff).bankr("bank1d"); + map(0xc000, 0xcfff).ram().share("ram"); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette"); +} /* same as normal System 1 except address map is shuffled (RAM/collision are swapped) */ -ADDRESS_MAP_START(system1_state::nobo_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc3ff) AM_READWRITE(system1_mixer_collision_r, system1_mixer_collision_w) - AM_RANGE(0xc400, 0xc7ff) AM_WRITE(system1_mixer_collision_reset_w) - AM_RANGE(0xc800, 0xcbff) AM_READWRITE(system1_sprite_collision_r, system1_sprite_collision_w) - AM_RANGE(0xcc00, 0xcfff) AM_WRITE(system1_sprite_collision_reset_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(system1_paletteram_w) AM_SHARE("palette") - AM_RANGE(0xe000, 0xefff) AM_READWRITE(system1_videoram_r, system1_videoram_w) - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END +void system1_state::nobo_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xc3ff).rw(this, FUNC(system1_state::system1_mixer_collision_r), FUNC(system1_state::system1_mixer_collision_w)); + map(0xc400, 0xc7ff).w(this, FUNC(system1_state::system1_mixer_collision_reset_w)); + map(0xc800, 0xcbff).rw(this, FUNC(system1_state::system1_sprite_collision_r), FUNC(system1_state::system1_sprite_collision_w)); + map(0xcc00, 0xcfff).w(this, FUNC(system1_state::system1_sprite_collision_reset_w)); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(system1_state::system1_paletteram_w)).share("palette"); + map(0xe000, 0xefff).rw(this, FUNC(system1_state::system1_videoram_r), FUNC(system1_state::system1_videoram_w)); + map(0xf000, 0xffff).ram().share("ram"); +} /* I/O map for systems with an 8255 PPI */ -ADDRESS_MAP_START(system1_state::system1_ppi_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("P1") - AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("P2") - AM_RANGE(0x08, 0x08) AM_MIRROR(0x03) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x02) AM_READ_PORT("SWA") /* DIP2 */ - AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x02) AM_READ_PORT("SWB") /* DIP1 some games read it from here... */ - AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_READ_PORT("SWB") /* DIP1 ... and some others from here but there are games which check BOTH! */ - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END +void system1_state::system1_ppi_io_map(address_map &map) +{ + map.global_mask(0x1f); + map(0x00, 0x00).mirror(0x03).portr("P1"); + map(0x04, 0x04).mirror(0x03).portr("P2"); + map(0x08, 0x08).mirror(0x03).portr("SYSTEM"); + map(0x0c, 0x0c).mirror(0x02).portr("SWA"); /* DIP2 */ + map(0x0d, 0x0d).mirror(0x02).portr("SWB"); /* DIP1 some games read it from here... */ + map(0x10, 0x10).mirror(0x03).portr("SWB"); /* DIP1 ... and some others from here but there are games which check BOTH! */ + map(0x14, 0x17).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* I/O map for systems with a Z80 PIO chip */ -ADDRESS_MAP_START(system1_state::system1_pio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("P1") - AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("P2") - AM_RANGE(0x08, 0x08) AM_MIRROR(0x03) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x02) AM_READ_PORT("SWA") /* DIP2 */ - AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x02) AM_READ_PORT("SWB") /* DIP1 some games read it from here... */ - AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_READ_PORT("SWB") /* DIP1 ... and some others from here but there are games which check BOTH! */ - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pio", z80pio_device, read, write) -ADDRESS_MAP_END +void system1_state::system1_pio_io_map(address_map &map) +{ + map.global_mask(0x1f); + map(0x00, 0x00).mirror(0x03).portr("P1"); + map(0x04, 0x04).mirror(0x03).portr("P2"); + map(0x08, 0x08).mirror(0x03).portr("SYSTEM"); + map(0x0c, 0x0c).mirror(0x02).portr("SWA"); /* DIP2 */ + map(0x0d, 0x0d).mirror(0x02).portr("SWB"); /* DIP1 some games read it from here... */ + map(0x10, 0x10).mirror(0x03).portr("SWB"); /* DIP1 ... and some others from here but there are games which check BOTH! */ + map(0x18, 0x1b).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} @@ -833,13 +839,14 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(system1_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn2", sn76489a_device, write) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_READ(sound_data_r) -ADDRESS_MAP_END +void system1_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).mirror(0x1800).ram(); + map(0xa000, 0xa000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::write)); + map(0xc000, 0xc000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::write)); + map(0xe000, 0xe000).mirror(0x1fff).r(this, FUNC(system1_state::sound_data_r)); +} @@ -849,9 +856,10 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(system1_state::mcu_io_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mcu_io_r, mcu_io_w) -ADDRESS_MAP_END +void system1_state::mcu_io_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(system1_state::mcu_io_r), FUNC(system1_state::mcu_io_w)); +} diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp index b7128791afc..3ee6a1bbc98 100644 --- a/src/mame/drivers/system16.cpp +++ b/src/mame/drivers/system16.cpp @@ -138,32 +138,33 @@ WRITE8_MEMBER(segas1x_bootleg_state::soundbank_msm_w) } -ADDRESS_MAP_START(segas1x_bootleg_state::shinobib_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // tilemap ram on the original, used as a buffer on the bootlegs - AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x411000, 0x411fff) AM_RAM AM_SHARE("bg0_tileram") - AM_RANGE(0x412000, 0x412fff) AM_RAM AM_SHARE("bg1_tileram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") +void segas1x_bootleg_state::shinobib_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x40ffff).ram(); // tilemap ram on the original, used as a buffer on the bootlegs + map(0x410000, 0x410fff).ram().share("textram"); + map(0x411000, 0x411fff).ram().share("bg0_tileram"); + map(0x412000, 0x412fff).ram().share("bg1_tileram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); // AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW1") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW2") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc43000, 0xc43001) AM_WRITENOP - AM_RANGE(0xc44000, 0xc44001) AM_NOP - AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w) - AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w) - AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w) - AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w) - AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w) - AM_RANGE(0xc60000, 0xc60001) AM_READNOP - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41006, 0xc41007).portr("P2"); + map(0xc42000, 0xc42001).portr("DSW1"); + map(0xc42002, 0xc42003).portr("DSW2"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc43000, 0xc43001).nopw(); + map(0xc44000, 0xc44001).noprw(); + map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w)); + map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w)); + map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w)); + map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w)); + map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w)); + map(0xc60000, 0xc60001).nopr(); + map(0xffc000, 0xffffff).ram(); // work ram +} /***************************************************************************/ @@ -183,31 +184,32 @@ WRITE16_MEMBER(segas1x_bootleg_state::sys16_coinctrl_w) } } -ADDRESS_MAP_START(segas1x_bootleg_state::passshtb_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - - AM_RANGE(0x400000, 0x407fff) AM_RAM // tilemap ram on original, buffer on bootleg - AM_RANGE(0x409000, 0x409fff) AM_RAM AM_SHARE("bg0_tileram") - AM_RANGE(0x40a000, 0x40afff) AM_RAM AM_SHARE("bg1_tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram") - - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w) - AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w) - AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w) - AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w) - AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w) - - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::passshtb_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + + map(0x400000, 0x407fff).ram(); // tilemap ram on original, buffer on bootleg + map(0x409000, 0x409fff).ram().share("bg0_tileram"); + map(0x40a000, 0x40afff).ram().share("bg1_tileram"); + map(0x410000, 0x410fff).ram().share("textram"); + + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42000, 0xc42001).portr("DSW2"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w)); + map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w)); + map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w)); + map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w)); + map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w)); + + map(0xffc000, 0xffffff).ram(); // work ram +} /***************************************************************************/ @@ -263,34 +265,35 @@ READ16_MEMBER(segas1x_bootleg_state::passht4b_io3_r) return m_passht4b_io3_val; } -ADDRESS_MAP_START(segas1x_bootleg_state::passht4b_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x400000, 0x407fff) AM_RAM // tilemap ram on original, buffer on bootleg - AM_RANGE(0x409000, 0x409fff) AM_RAM AM_SHARE("bg0_tileram") - AM_RANGE(0x40a000, 0x40afff) AM_RAM AM_SHARE("bg1_tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc41000, 0xc41001) AM_READ(passht4b_service_r) - AM_RANGE(0xc41002, 0xc41003) AM_READ(passht4b_io1_r) - AM_RANGE(0xc41004, 0xc41005) AM_READ(passht4b_io2_r) - AM_RANGE(0xc41006, 0xc41007) AM_READ(passht4b_io3_r) - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc43000, 0xc43001) AM_READ_PORT("P1") // test mode only - AM_RANGE(0xc43002, 0xc43003) AM_READ_PORT("P2") - AM_RANGE(0xc43004, 0xc43005) AM_READ_PORT("P3") - AM_RANGE(0xc43006, 0xc43007) AM_READ_PORT("P4") - AM_RANGE(0xc4600a, 0xc4600b) AM_WRITE(sys16_coinctrl_w) /* coin counter doesn't work */ - AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w) - AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w) - AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w) - AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w) - AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w) - - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::passht4b_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x400000, 0x407fff).ram(); // tilemap ram on original, buffer on bootleg + map(0x409000, 0x409fff).ram().share("bg0_tileram"); + map(0x40a000, 0x40afff).ram().share("bg1_tileram"); + map(0x410000, 0x410fff).ram().share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc41000, 0xc41001).r(this, FUNC(segas1x_bootleg_state::passht4b_service_r)); + map(0xc41002, 0xc41003).r(this, FUNC(segas1x_bootleg_state::passht4b_io1_r)); + map(0xc41004, 0xc41005).r(this, FUNC(segas1x_bootleg_state::passht4b_io2_r)); + map(0xc41006, 0xc41007).r(this, FUNC(segas1x_bootleg_state::passht4b_io3_r)); + map(0xc42000, 0xc42001).portr("DSW2"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc43000, 0xc43001).portr("P1"); // test mode only + map(0xc43002, 0xc43003).portr("P2"); + map(0xc43004, 0xc43005).portr("P3"); + map(0xc43006, 0xc43007).portr("P4"); + map(0xc4600a, 0xc4600b).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); /* coin counter doesn't work */ + map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w)); + map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w)); + map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w)); + map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w)); + map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w)); + + map(0xffc000, 0xffffff).ram(); // work ram +} /***************************************************************************/ @@ -310,30 +313,31 @@ WRITE16_MEMBER(segas1x_bootleg_state::sys16_tilebank_w) } } -ADDRESS_MAP_START(segas1x_bootleg_state::wb3bbl_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(sys16_tilebank_w) - AM_RANGE(0x400000, 0x407fff) AM_RAM // tilemap ram on the original, used as a buffer on the bootlegs - AM_RANGE(0x409000, 0x409fff) AM_RAM AM_SHARE("bg0_tileram") - AM_RANGE(0x40a000, 0x40afff) AM_RAM AM_SHARE("bg1_tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc44000, 0xc44001) AM_WRITENOP - AM_RANGE(0xc46000, 0xc46001) AM_WRITE(s16a_bootleg_bgscrolly_w) - AM_RANGE(0xc46002, 0xc46003) AM_WRITE(s16a_bootleg_bgscrollx_w) - AM_RANGE(0xc46004, 0xc46005) AM_WRITE(s16a_bootleg_fgscrolly_w) - AM_RANGE(0xc46006, 0xc46007) AM_WRITE(s16a_bootleg_fgscrollx_w) - AM_RANGE(0xc46008, 0xc46009) AM_WRITE(s16a_bootleg_tilemapselect_w) - AM_RANGE(0xff0000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::wb3bbl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x3f0000, 0x3fffff).w(this, FUNC(segas1x_bootleg_state::sys16_tilebank_w)); + map(0x400000, 0x407fff).ram(); // tilemap ram on the original, used as a buffer on the bootlegs + map(0x409000, 0x409fff).ram().share("bg0_tileram"); + map(0x40a000, 0x40afff).ram().share("bg1_tileram"); + map(0x410000, 0x410fff).ram().share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc42000, 0xc42001).portr("DSW2"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc44000, 0xc44001).nopw(); + map(0xc46000, 0xc46001).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrolly_w)); + map(0xc46002, 0xc46003).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_bgscrollx_w)); + map(0xc46004, 0xc46005).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrolly_w)); + map(0xc46006, 0xc46007).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_fgscrollx_w)); + map(0xc46008, 0xc46009).w(this, FUNC(segas1x_bootleg_state::s16a_bootleg_tilemapselect_w)); + map(0xff0000, 0xffffff).ram(); // work ram +} /*************************************************************************** @@ -418,34 +422,37 @@ WRITE8_MEMBER(segas1x_bootleg_state::tturfbl_soundbank_w) } } -ADDRESS_MAP_START(segas1x_bootleg_state::tturfbl_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_READ(tturfbl_soundbank_r) - AM_RANGE(0xe000, 0xe000) AM_WRITE(tturfbl_soundbank_w) - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf000, 0xf000) AM_WRITE(tturfbl_msm5205_data_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas1x_bootleg_state::tturfbl_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::tturfbl_soundbank_r)); + map(0xe000, 0xe000).w(this, FUNC(segas1x_bootleg_state::tturfbl_soundbank_w)); + map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf000, 0xf000).w(this, FUNC(segas1x_bootleg_state::tturfbl_msm5205_data_w)); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(segas1x_bootleg_state::tturfbl_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITENOP - AM_RANGE(0x80, 0x80) AM_NOP -ADDRESS_MAP_END +void segas1x_bootleg_state::tturfbl_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).nopw(); + map(0x80, 0x80).noprw(); +} /*******************************************************************************/ -ADDRESS_MAP_START(segas1x_bootleg_state::shinobi_datsu_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xe400, 0xe401) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xe800, 0xe800) AM_READ(sound_command_irq_r) - AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("adpcm_select", ls157_device, ba_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundbank_msm_w) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas1x_bootleg_state::shinobi_datsu_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); + map(0xe000, 0xe001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xe400, 0xe401).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xe800, 0xe800).r(this, FUNC(segas1x_bootleg_state::sound_command_irq_r)); + map(0xec00, 0xec00).w(m_adpcm_select, FUNC(ls157_device::ba_w)); + map(0xf000, 0xf000).w(this, FUNC(segas1x_bootleg_state::soundbank_msm_w)); + map(0xf800, 0xffff).ram(); +} WRITE_LINE_MEMBER(segas1x_bootleg_state::datsu_msm5205_callback) { @@ -459,26 +466,29 @@ WRITE_LINE_MEMBER(segas1x_bootleg_state::datsu_msm5205_callback) /*******************************************************************************/ -ADDRESS_MAP_START(segas1x_bootleg_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas1x_bootleg_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(segas1x_bootleg_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segas1x_bootleg_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} // 7759 -ADDRESS_MAP_START(segas1x_bootleg_state::sound_7759_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas1x_bootleg_state::sound_7759_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xdfff).bankr("bank1"); + map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf800, 0xffff).ram(); +} WRITE8_MEMBER(segas1x_bootleg_state::upd7759_bank_w)//* @@ -491,13 +501,14 @@ WRITE8_MEMBER(segas1x_bootleg_state::upd7759_bank_w)//* } -ADDRESS_MAP_START(segas1x_bootleg_state::sound_7759_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x40, 0x40) AM_WRITE(upd7759_bank_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("7759", upd7759_device, port_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segas1x_bootleg_state::sound_7759_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x40, 0x40).w(this, FUNC(segas1x_bootleg_state::upd7759_bank_w)); + map(0x80, 0x80).w(m_upd7759, FUNC(upd7759_device::port_w)); + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /***************************************************************************/ @@ -584,55 +595,58 @@ WRITE16_MEMBER(segas1x_bootleg_state::s16bl_bgscrolly_w) } -ADDRESS_MAP_START(segas1x_bootleg_state::goldnaxeb1_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x118000, 0x118001) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0x118008, 0x118009) AM_WRITE(s16bl_fgscrollx_bank_w) // and tile bank - AM_RANGE(0x118010, 0x118011) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0x118018, 0x118019) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0x118020, 0x118021) AM_WRITE(s16bl_fgpage_w) - AM_RANGE(0x118028, 0x118029) AM_WRITE(s16bl_bgpage_w) - AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2") - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc43000, 0xc43001) AM_WRITENOP - AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP - AM_RANGE(0xc80000, 0xc80001) AM_WRITENOP - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas1x_bootleg_state::bayrouteb1_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x500000, 0x503fff) AM_RAM // work ram - AM_RANGE(0x600000, 0x600fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x710000, 0x710fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x718000, 0x718001) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0x718008, 0x718009) AM_WRITE(s16bl_fgscrollx_bank_w) // and tile bank - AM_RANGE(0x718010, 0x718011) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0x718018, 0x718019) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0x718020, 0x718021) AM_WRITE(s16bl_fgpage_w) - AM_RANGE(0x718028, 0x718029) AM_WRITE(s16bl_bgpage_w) - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x901000, 0x901001) AM_READ_PORT("SERVICE") AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0x901002, 0x901003) AM_READ_PORT("P1") - AM_RANGE(0x901006, 0x901007) AM_READ_PORT("P2") - AM_RANGE(0x902000, 0x902001) AM_READ_PORT("DSW2") - AM_RANGE(0x902002, 0x902003) AM_READ_PORT("DSW1") - AM_RANGE(0x902006, 0x902007) AM_WRITE(sound_command_irq_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas1x_bootleg_state::decrypted_opcodes_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END +void segas1x_bootleg_state::goldnaxeb1_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x100000, 0x10ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x110000, 0x110fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x118000, 0x118001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0x118008, 0x118009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); // and tile bank + map(0x118010, 0x118011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0x118018, 0x118019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0x118020, 0x118021).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w)); + map(0x118028, 0x118029).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w)); + map(0x140000, 0x143fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0x200000, 0x200fff).ram().share("sprites"); + map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41006, 0xc41007).portr("P2"); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42000, 0xc42001).portr("DSW2"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc43000, 0xc43001).nopw(); + map(0xc43034, 0xc43035).nopw(); + map(0xc80000, 0xc80001).nopw(); + map(0xffc000, 0xffffff).ram(); // work ram +} + +void segas1x_bootleg_state::bayrouteb1_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x500000, 0x503fff).ram(); // work ram + map(0x600000, 0x600fff).ram().share("sprites"); + map(0x700000, 0x70ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x710000, 0x710fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x718000, 0x718001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0x718008, 0x718009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); // and tile bank + map(0x718010, 0x718011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0x718018, 0x718019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0x718020, 0x718021).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w)); + map(0x718028, 0x718029).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w)); + map(0x800000, 0x800fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0x901000, 0x901001).portr("SERVICE").w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0x901002, 0x901003).portr("P1"); + map(0x901006, 0x901007).portr("P2"); + map(0x902000, 0x902001).portr("DSW2"); + map(0x902002, 0x902003).portr("DSW1"); + map(0x902006, 0x902007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); +} + +void segas1x_bootleg_state::decrypted_opcodes_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom().share("decrypted_opcodes"); +} void segas1x_bootleg_state::datsu_set_pages( ) { @@ -678,56 +692,58 @@ WRITE16_MEMBER(segas1x_bootleg_state::datsu_page3_w) datsu_set_pages(); } -ADDRESS_MAP_START(segas1x_bootleg_state::bayrouteb2_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x500000, 0x503fff) AM_RAM // work ram - AM_RANGE(0x600000, 0x600fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x710000, 0x710fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x718000, 0x718001) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0x718008, 0x718009) AM_WRITE(s16bl_fgscrollx_bank_w) // and tile bank - AM_RANGE(0x718010, 0x718011) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0x718018, 0x718019) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0x718020, 0x718021) AM_WRITE(datsu_page0_w) - AM_RANGE(0x718022, 0x718023) AM_WRITE(datsu_page1_w) - AM_RANGE(0x718024, 0x718025) AM_WRITE(datsu_page2_w) - AM_RANGE(0x718026, 0x718027) AM_WRITE(datsu_page3_w) - - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1") - AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2") - AM_RANGE(0x900006, 0x900007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0x901000, 0x901001) AM_READ_PORT("SERVICE") AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0x901002, 0x901003) AM_READ_PORT("P1") - AM_RANGE(0x901006, 0x901007) AM_READ_PORT("P2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas1x_bootleg_state::dduxbl_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(sys16_tilebank_w) - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - - AM_RANGE(0xC46000, 0xC46001) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0xC46008, 0xC46009) AM_WRITE(s16bl_fgscrollx_w) - AM_RANGE(0xC46010, 0xC46011) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0xC46018, 0xC46019) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0xC46020, 0xC46021) AM_WRITE(datsu_page0_w) - AM_RANGE(0xC46022, 0xC46023) AM_WRITE(datsu_page1_w) - AM_RANGE(0xC46024, 0xC46025) AM_WRITE(datsu_page2_w) - AM_RANGE(0xC46026, 0xC46027) AM_WRITE(datsu_page3_w) - - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::bayrouteb2_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x500000, 0x503fff).ram(); // work ram + map(0x600000, 0x600fff).ram().share("sprites"); + map(0x700000, 0x70ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x710000, 0x710fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x718000, 0x718001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0x718008, 0x718009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); // and tile bank + map(0x718010, 0x718011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0x718018, 0x718019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0x718020, 0x718021).w(this, FUNC(segas1x_bootleg_state::datsu_page0_w)); + map(0x718022, 0x718023).w(this, FUNC(segas1x_bootleg_state::datsu_page1_w)); + map(0x718024, 0x718025).w(this, FUNC(segas1x_bootleg_state::datsu_page2_w)); + map(0x718026, 0x718027).w(this, FUNC(segas1x_bootleg_state::datsu_page3_w)); + + map(0x800000, 0x800fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0x900000, 0x900001).portr("DSW1"); + map(0x900002, 0x900003).portr("DSW2"); + map(0x900006, 0x900007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0x901000, 0x901001).portr("SERVICE").w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0x901002, 0x901003).portr("P1"); + map(0x901006, 0x901007).portr("P2"); +} + +void segas1x_bootleg_state::dduxbl_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x3f0000, 0x3fffff).w(this, FUNC(segas1x_bootleg_state::sys16_tilebank_w)); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc40006, 0xc40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42000, 0xc42001).portr("DSW2"); + + map(0xC46000, 0xC46001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0xC46008, 0xC46009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w)); + map(0xC46010, 0xC46011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0xC46018, 0xC46019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0xC46020, 0xC46021).w(this, FUNC(segas1x_bootleg_state::datsu_page0_w)); + map(0xC46022, 0xC46023).w(this, FUNC(segas1x_bootleg_state::datsu_page1_w)); + map(0xC46024, 0xC46025).w(this, FUNC(segas1x_bootleg_state::datsu_page2_w)); + map(0xC46026, 0xC46027).w(this, FUNC(segas1x_bootleg_state::datsu_page3_w)); + + map(0xffc000, 0xffffff).ram(); // work ram +} WRITE16_MEMBER(segas1x_bootleg_state::goldnaxeb2_fgscrollx_w) { @@ -795,29 +811,30 @@ WRITE16_MEMBER(segas1x_bootleg_state::goldnaxeb2_bgpage_w) set_bg_page(page ^ 0xffff); } -ADDRESS_MAP_START(segas1x_bootleg_state::goldnaxeb2_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("DSW2") AM_WRITENOP - AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1") - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc43000, 0xc43001) AM_WRITENOP - AM_RANGE(0xc44000, 0xc44001) AM_WRITE(goldnaxeb2_fgscrolly_w) - AM_RANGE(0xc44008, 0xc44009) AM_WRITE(goldnaxeb2_fgscrollx_w) // and tile bank - AM_RANGE(0xc44010, 0xc44011) AM_WRITE(goldnaxeb2_bgscrolly_w) - AM_RANGE(0xc44018, 0xc44019) AM_WRITE(goldnaxeb2_bgscrollx_w) - AM_RANGE(0xc44020, 0xc44027) AM_WRITE(goldnaxeb2_bgpage_w) AM_SHARE("gab2_bgpage") - AM_RANGE(0xc44060, 0xc44067) AM_WRITE(goldnaxeb2_fgpage_w) AM_SHARE("gab2_fgpage") - AM_RANGE(0xc46000, 0xc46001) AM_WRITENOP - AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP - AM_RANGE(0xfe0006, 0xfe0007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::goldnaxeb2_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x100000, 0x10ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x110000, 0x110fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x140000, 0x143fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0x200000, 0x200fff).ram().share("sprites"); + map(0xc40000, 0xc40001).portr("DSW2").nopw(); + map(0xc40002, 0xc40003).portr("DSW1"); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc43000, 0xc43001).nopw(); + map(0xc44000, 0xc44001).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrolly_w)); + map(0xc44008, 0xc44009).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrollx_w)); // and tile bank + map(0xc44010, 0xc44011).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrolly_w)); + map(0xc44018, 0xc44019).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrollx_w)); + map(0xc44020, 0xc44027).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgpage_w)).share("gab2_bgpage"); + map(0xc44060, 0xc44067).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgpage_w)).share("gab2_fgpage"); + map(0xc46000, 0xc46001).nopw(); + map(0xc43034, 0xc43035).nopw(); + map(0xfe0006, 0xfe0007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xffc000, 0xffffff).ram(); // work ram +} /***************************************************************************/ @@ -831,88 +848,91 @@ WRITE16_MEMBER(segas1x_bootleg_state::eswat_tilebank0_w) } } -ADDRESS_MAP_START(segas1x_bootleg_state::eswatbl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - - AM_RANGE(0x3e2000, 0x3e2001) AM_WRITE(eswat_tilebank0_w) // external tile bank ( > 0x4000 tiles ) - - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x418000, 0x418001) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0x418008, 0x418009) AM_WRITE(s16bl_bgscrollx_w) // and tile bank - AM_RANGE(0x418010, 0x418011) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0x418018, 0x418019) AM_WRITE(s16bl_fgscrollx_bank_w) - AM_RANGE(0x418020, 0x418021) AM_WRITE(s16bl_bgpage_w) - AM_RANGE(0x418028, 0x418029) AM_WRITE(s16bl_fgpage_w) - - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2") - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc80000, 0xc80001) AM_WRITENOP - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas1x_bootleg_state::eswatbl2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x123420, 0x12343f) AM_WRITENOP // written on boot only - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x4407ff) AM_WRITENOP // 0xffff, possibly old sprites ram location - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("DSW2") AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1") - AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") // test mode still reads them from here - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") // test mode still reads them from here - AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP - AM_RANGE(0xc44000, 0xc44001) AM_WRITE(goldnaxeb2_fgscrolly_w) - AM_RANGE(0xc44008, 0xc44009) AM_WRITE(goldnaxeb2_fgscrollx_w) // and tile bank - AM_RANGE(0xc44010, 0xc44011) AM_WRITE(goldnaxeb2_bgscrolly_w) - AM_RANGE(0xc44018, 0xc44019) AM_WRITE(goldnaxeb2_bgscrollx_w) - AM_RANGE(0xc44020, 0xc44027) AM_WRITE(goldnaxeb2_bgpage_w) AM_SHARE("gab2_bgpage") - AM_RANGE(0xc44028, 0xc44029) AM_WRITENOP - AM_RANGE(0xc44060, 0xc44067) AM_WRITE(goldnaxeb2_fgpage_w) AM_SHARE("gab2_fgpage") - AM_RANGE(0xc46000, 0xc46001) AM_NOP - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::eswatbl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + + map(0x3e2000, 0x3e2001).w(this, FUNC(segas1x_bootleg_state::eswat_tilebank0_w)); // external tile bank ( > 0x4000 tiles ) + + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x418000, 0x418001).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0x418008, 0x418009).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); // and tile bank + map(0x418010, 0x418011).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0x418018, 0x418019).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_bank_w)); + map(0x418020, 0x418021).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w)); + map(0x418028, 0x418029).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w)); + + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41006, 0xc41007).portr("P2"); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42000, 0xc42001).portr("DSW2"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc80000, 0xc80001).nopw(); + map(0xffc000, 0xffffff).ram(); // work ram +} + +void segas1x_bootleg_state::eswatbl2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x123420, 0x12343f).nopw(); // written on boot only + map(0x200000, 0x200fff).ram().share("sprites"); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x440000, 0x4407ff).nopw(); // 0xffff, possibly old sprites ram location + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc40001).portr("DSW2").w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc40002, 0xc40003).portr("DSW1"); + map(0xc40006, 0xc40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc42000, 0xc42001).portr("DSW2"); // test mode still reads them from here + map(0xc42002, 0xc42003).portr("DSW1"); // test mode still reads them from here + map(0xc43034, 0xc43035).nopw(); + map(0xc44000, 0xc44001).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrolly_w)); + map(0xc44008, 0xc44009).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgscrollx_w)); // and tile bank + map(0xc44010, 0xc44011).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrolly_w)); + map(0xc44018, 0xc44019).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgscrollx_w)); + map(0xc44020, 0xc44027).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_bgpage_w)).share("gab2_bgpage"); + map(0xc44028, 0xc44029).nopw(); + map(0xc44060, 0xc44067).w(this, FUNC(segas1x_bootleg_state::goldnaxeb2_fgpage_w)).share("gab2_fgpage"); + map(0xc46000, 0xc46001).noprw(); + map(0xffc000, 0xffffff).ram(); // work ram +} /***************************************************************************/ -ADDRESS_MAP_START(segas1x_bootleg_state::tetrisbl_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - - AM_RANGE(0x418000, 0x418001) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0x418008, 0x418009) AM_WRITE(s16bl_fgscrollx_w) - AM_RANGE(0x418010, 0x418011) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0x418018, 0x418019) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0x418020, 0x418021) AM_WRITE(s16bl_fgpage_w) - AM_RANGE(0x418028, 0x418029) AM_WRITE(s16bl_bgpage_w) - - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P2") - AM_RANGE(0xc42000, 0xc42001) AM_READ_PORT("DSW2") - AM_RANGE(0xc42002, 0xc42003) AM_READ_PORT("DSW1") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc43034, 0xc43035) AM_WRITENOP - AM_RANGE(0xc80000, 0xc80001) AM_NOP - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END +void segas1x_bootleg_state::tetrisbl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + + map(0x418000, 0x418001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0x418008, 0x418009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w)); + map(0x418010, 0x418011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0x418018, 0x418019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0x418020, 0x418021).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w)); + map(0x418028, 0x418029).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w)); + + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc40000, 0xc40001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41006, 0xc41007).portr("P2"); + map(0xc42000, 0xc42001).portr("DSW2"); + map(0xc42002, 0xc42003).portr("DSW1"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc43034, 0xc43035).nopw(); + map(0xc80000, 0xc80001).noprw(); + map(0xffc000, 0xffffff).ram(); // work ram +} READ16_MEMBER(segas1x_bootleg_state::beautyb_unkx_r) @@ -922,67 +942,69 @@ READ16_MEMBER(segas1x_bootleg_state::beautyb_unkx_r) return m_beautyb_unkx; } -ADDRESS_MAP_START(segas1x_bootleg_state::beautyb_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_WRITENOP - AM_RANGE(0x010000, 0x03ffff) AM_WRITENOP +void segas1x_bootleg_state::beautyb_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom().nopw(); + map(0x010000, 0x03ffff).nopw(); - AM_RANGE(0x0280D6, 0x0280D7) AM_READ(beautyb_unkx_r) - AM_RANGE(0x0280D8, 0x0280D9) AM_READ(beautyb_unkx_r) + map(0x0280D6, 0x0280D7).r(this, FUNC(segas1x_bootleg_state::beautyb_unkx_r)); + map(0x0280D8, 0x0280D9).r(this, FUNC(segas1x_bootleg_state::beautyb_unkx_r)); - AM_RANGE(0x3f0000, 0x3fffff) AM_WRITE(sys16_tilebank_w) + map(0x3f0000, 0x3fffff).w(this, FUNC(segas1x_bootleg_state::sys16_tilebank_w)); - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x413fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x413fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); - AM_RANGE(0x418000, 0x418001) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0x418008, 0x418009) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0x418010, 0x418011) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0x418018, 0x418019) AM_WRITE(s16bl_fgscrollx_w) - AM_RANGE(0x418020, 0x418021) AM_WRITE(s16bl_bgpage_w) - AM_RANGE(0x418028, 0x418029) AM_WRITE(s16bl_fgpage_w) + map(0x418000, 0x418001).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0x418008, 0x418009).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0x418010, 0x418011).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0x418018, 0x418019).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w)); + map(0x418020, 0x418021).w(this, FUNC(segas1x_bootleg_state::s16bl_bgpage_w)); + map(0x418028, 0x418029).w(this, FUNC(segas1x_bootleg_state::s16bl_fgpage_w)); - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc42006, 0xc42007) AM_WRITE(sound_command_irq_w) + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc42006, 0xc42007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); - AM_RANGE(0xc40000, 0xc40001) AM_WRITENOP - AM_RANGE(0xc80000, 0xc80001) AM_NOP // vblank irq ack + map(0xc40000, 0xc40001).nopw(); + map(0xc80000, 0xc80001).noprw(); // vblank irq ack - AM_RANGE(0xffc000, 0xffffff) AM_RAM // work ram -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram(); // work ram +} /***************************************************************************/ -ADDRESS_MAP_START(segas1x_bootleg_state::tturfbl_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM // work ram - AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x600000, 0x600001) AM_WRITE(sys16_coinctrl_w) - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW2") - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW1") - AM_RANGE(0x600006, 0x600007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0x601000, 0x601001) AM_READ_PORT("SERVICE") - AM_RANGE(0x601002, 0x601003) AM_READ_PORT("P1") - AM_RANGE(0x601004, 0x601005) AM_READ_PORT("P2") - AM_RANGE(0x602000, 0x602001) AM_READ_PORT("DSW2") - AM_RANGE(0x602002, 0x602003) AM_READ_PORT("DSW1") - AM_RANGE(0xc44000, 0xc44001) AM_WRITENOP - - AM_RANGE(0xC46000, 0xC46001) AM_WRITE(s16bl_fgscrolly_w) - AM_RANGE(0xC46008, 0xC46009) AM_WRITE(s16bl_fgscrollx_w) - AM_RANGE(0xC46010, 0xC46011) AM_WRITE(s16bl_bgscrolly_w) - AM_RANGE(0xC46018, 0xC46019) AM_WRITE(s16bl_bgscrollx_w) - AM_RANGE(0xC46020, 0xC46021) AM_WRITE(datsu_page0_w) - AM_RANGE(0xc46022, 0xc46023) AM_WRITE(datsu_page1_w) - AM_RANGE(0xC46024, 0xC46025) AM_WRITE(datsu_page2_w) - AM_RANGE(0xC46026, 0xC46027) AM_WRITE(datsu_page3_w) -ADDRESS_MAP_END +void segas1x_bootleg_state::tturfbl_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x203fff).ram(); // work ram + map(0x300000, 0x300fff).ram().share("sprites"); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x500000, 0x500fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0x600000, 0x600001).w(this, FUNC(segas1x_bootleg_state::sys16_coinctrl_w)); + map(0x600000, 0x600001).portr("DSW2"); + map(0x600002, 0x600003).portr("DSW1"); + map(0x600006, 0x600007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0x601000, 0x601001).portr("SERVICE"); + map(0x601002, 0x601003).portr("P1"); + map(0x601004, 0x601005).portr("P2"); + map(0x602000, 0x602001).portr("DSW2"); + map(0x602002, 0x602003).portr("DSW1"); + map(0xc44000, 0xc44001).nopw(); + + map(0xC46000, 0xC46001).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrolly_w)); + map(0xC46008, 0xC46009).w(this, FUNC(segas1x_bootleg_state::s16bl_fgscrollx_w)); + map(0xC46010, 0xC46011).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrolly_w)); + map(0xC46018, 0xC46019).w(this, FUNC(segas1x_bootleg_state::s16bl_bgscrollx_w)); + map(0xC46020, 0xC46021).w(this, FUNC(segas1x_bootleg_state::datsu_page0_w)); + map(0xc46022, 0xc46023).w(this, FUNC(segas1x_bootleg_state::datsu_page1_w)); + map(0xC46024, 0xC46025).w(this, FUNC(segas1x_bootleg_state::datsu_page2_w)); + map(0xC46026, 0xC46027).w(this, FUNC(segas1x_bootleg_state::datsu_page3_w)); +} /***************************************************************************/ @@ -1011,14 +1033,15 @@ READ8_MEMBER(segas1x_bootleg_state::system18_bank_r) return 0xff; } -ADDRESS_MAP_START(segas1x_bootleg_state::sound_18_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xbfff) AM_READ(system18_bank_r) +void segas1x_bootleg_state::sound_18_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::system18_bank_r)); /**** D/A register ****/ - AM_RANGE(0xc000, 0xc008) AM_DEVWRITE("5c68", rf5c68_device, rf5c68_w) - AM_RANGE(0xd000, 0xdfff) AM_DEVREADWRITE("5c68", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w) - AM_RANGE(0xe000, 0xffff) AM_RAM //?? -ADDRESS_MAP_END + map(0xc000, 0xc008).w("5c68", FUNC(rf5c68_device::rf5c68_w)); + map(0xd000, 0xdfff).rw("5c68", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); + map(0xe000, 0xffff).ram(); //?? +} WRITE8_MEMBER(segas1x_bootleg_state::sys18_soundbank_w) @@ -1035,13 +1058,14 @@ WRITE8_MEMBER(segas1x_bootleg_state::sys18_soundbank_w) m_sound_bank = nullptr; } -ADDRESS_MAP_START(segas1x_bootleg_state::sound_18_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("3438.0", ym3438_device, read, write) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("3438.1", ym3438_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_WRITE(sys18_soundbank_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void segas1x_bootleg_state::sound_18_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x83).rw("3438.0", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x90, 0x93).rw("3438.1", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xa0, 0xa0).w(this, FUNC(segas1x_bootleg_state::sys18_soundbank_w)); + map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*************************************************************************** @@ -1087,44 +1111,46 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(segas1x_bootleg_state::shdancbl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc00000, 0xc0ffff) AM_NOP - AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("COINAGE") - AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1") - AM_RANGE(0xc40006, 0xc40007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc44000, 0xc44001) AM_WRITENOP // only used via clr.w after tilebank set - - AM_RANGE(0xe40000, 0xe4ffff) AM_NOP - AM_RANGE(0xfe0020, 0xfe003f) AM_WRITENOP // config regs - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(segas1x_bootleg_state::shdancbla_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") +void segas1x_bootleg_state::shdancbl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0xc00000, 0xc0ffff).noprw(); + map(0xc40000, 0xc40001).portr("COINAGE"); + map(0xc40002, 0xc40003).portr("DSW1"); + map(0xc40006, 0xc40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc44000, 0xc44001).nopw(); // only used via clr.w after tilebank set + + map(0xe40000, 0xe4ffff).noprw(); + map(0xfe0020, 0xfe003f).nopw(); // config regs + map(0xffc000, 0xffffff).ram(); +} + +void segas1x_bootleg_state::shdancbla_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); // moved from C4xxxx to E4xxxx - AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("COINAGE") - AM_RANGE(0xe40002, 0xe40003) AM_READ_PORT("DSW1") - AM_RANGE(0xe40006, 0xe40007) AM_WRITE(sound_command_irq_w) - AM_RANGE(0xe41000, 0xe41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xe41002, 0xe41003) AM_READ_PORT("P1") - AM_RANGE(0xe41004, 0xe41005) AM_READ_PORT("P2") + map(0xe40000, 0xe40001).portr("COINAGE"); + map(0xe40002, 0xe40003).portr("DSW1"); + map(0xe40006, 0xe40007).w(this, FUNC(segas1x_bootleg_state::sound_command_irq_w)); + map(0xe41000, 0xe41001).portr("SERVICE"); + map(0xe41002, 0xe41003).portr("P1"); + map(0xe41004, 0xe41005).portr("P2"); //AM_RANGE(0xff8038, 0xff8039) AM_READ(shdancbla_ff8038_r) - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram(); +} /*************************************************************************** Sound hardware for Shadow Dancer (Datsu bootleg) @@ -1208,43 +1234,46 @@ WRITE8_MEMBER(segas1x_bootleg_state::shdancbl_bankctrl_w) } } -ADDRESS_MAP_START(segas1x_bootleg_state::shdancbl_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_READ(shdancbl_soundbank_r) - AM_RANGE(0xc000, 0xc00f) AM_WRITENOP - AM_RANGE(0xc400, 0xc400) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc800, 0xc800) AM_WRITE(shdancbl_msm5205_data_w) - AM_RANGE(0xcc00, 0xcc03) AM_DEVREADWRITE("3438.0", ym3438_device, read, write) - AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE("3438.1", ym3438_device, read, write) - AM_RANGE(0xd400, 0xd400) AM_WRITE(shdancbl_bankctrl_w) - AM_RANGE(0xdf00, 0xdfff) AM_NOP - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void segas1x_bootleg_state::shdancbl_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::shdancbl_soundbank_r)); + map(0xc000, 0xc00f).nopw(); + map(0xc400, 0xc400).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc800, 0xc800).w(this, FUNC(segas1x_bootleg_state::shdancbl_msm5205_data_w)); + map(0xcc00, 0xcc03).rw("3438.0", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xd000, 0xd003).rw("3438.1", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xd400, 0xd400).w(this, FUNC(segas1x_bootleg_state::shdancbl_bankctrl_w)); + map(0xdf00, 0xdfff).noprw(); + map(0xe000, 0xffff).ram(); +} -ADDRESS_MAP_START(segas1x_bootleg_state::shdancbl_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xa0, 0xbf) AM_WRITENOP - AM_RANGE(0xc0, 0xdf) AM_READNOP -ADDRESS_MAP_END +void segas1x_bootleg_state::shdancbl_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xa0, 0xbf).nopw(); + map(0xc0, 0xdf).nopr(); +} // shdancbla -ADDRESS_MAP_START(segas1x_bootleg_state::shdancbla_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_READ(shdancbl_soundbank_r) +void segas1x_bootleg_state::shdancbla_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).r(this, FUNC(segas1x_bootleg_state::shdancbl_soundbank_r)); - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("3438.0", ym3438_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc400, 0xc403) AM_DEVREADWRITE("3438.1", ym3438_device, read, write) + map(0xc000, 0xc003).rw("3438.0", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xc400, 0xc403).rw("3438.1", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); - AM_RANGE(0xd400, 0xd400) AM_WRITENOP - AM_RANGE(0xd800, 0xd800) AM_WRITENOP + map(0xd400, 0xd400).nopw(); + map(0xd800, 0xd800).nopw(); - AM_RANGE(0xdc00, 0xdc00) AM_WRITENOP + map(0xdc00, 0xdc00).nopw(); - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0xe000, 0xffff).ram(); +} /*************************************************************************** @@ -1252,12 +1281,13 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(segas1x_bootleg_state::mwalkbl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") +void segas1x_bootleg_state::mwalkbl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); /* bootleg video regs */ /*AM_RANGE(0xc00000, 0xc00001) AM_NOP @@ -1271,20 +1301,20 @@ ADDRESS_MAP_START(segas1x_bootleg_state::mwalkbl_map) AM_RANGE(0xc46500, 0xc465ff) AM_NOP // scroll? */ - AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("COINAGE") - AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("DSW1") - AM_RANGE(0xc40006, 0xc40007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("P1") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("P2") - AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P3") - AM_RANGE(0xc41008, 0xc41009) AM_READNOP // figure this out, extra input for 3p? - AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w) - AM_RANGE(0xc46800, 0xc46801) AM_WRITE(sys18_tilebank_w) + map(0xc40000, 0xc40001).portr("COINAGE"); + map(0xc40002, 0xc40003).portr("DSW1"); + map(0xc40007, 0xc40007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("P1"); + map(0xc41004, 0xc41005).portr("P2"); + map(0xc41006, 0xc41007).portr("P3"); + map(0xc41008, 0xc41009).nopr(); // figure this out, extra input for 3p? + map(0xc46600, 0xc46601).w(this, FUNC(segas1x_bootleg_state::sys18_refreshenable_w)); + map(0xc46800, 0xc46801).w(this, FUNC(segas1x_bootleg_state::sys18_tilebank_w)); - AM_RANGE(0xfe0020, 0xfe003f) AM_WRITENOP // config regs - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0xfe0020, 0xfe003f).nopw(); // config regs + map(0xffc000, 0xffffff).ram(); +} /*************************************************************************** @@ -1300,52 +1330,55 @@ WRITE8_MEMBER(segas1x_bootleg_state::sys18bl_okibank_w) // TODO: verify correctn } /* bootleg doesn't have real vdp or i/o */ -ADDRESS_MAP_START(segas1x_bootleg_state::astormbl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x200000, 0x200fff) AM_RAM AM_SHARE("sprites") - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("COINAGE") - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW1") - AM_RANGE(0xa00006, 0xa00007) AM_WRITE(sound_command_nmi_w) - AM_RANGE(0xa0000e, 0xa0000f) AM_WRITE(sys18_tilebank_w) - AM_RANGE(0xa01000, 0xa01001) AM_READ_PORT("SERVICE") - AM_RANGE(0xa01002, 0xa01003) AM_READ_PORT("P1") - AM_RANGE(0xa01004, 0xa01005) AM_READ_PORT("P2") - AM_RANGE(0xa01006, 0xa01007) AM_READ_PORT("P3") - AM_RANGE(0xa02100, 0xa02101) AM_NOP - AM_RANGE(0xa03000, 0xa03001) AM_NOP - AM_RANGE(0xa03034, 0xa03035) AM_NOP +void segas1x_bootleg_state::astormbl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x110000, 0x110fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x140000, 0x140fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); + map(0x200000, 0x200fff).ram().share("sprites"); + map(0xa00000, 0xa00001).portr("COINAGE"); + map(0xa00002, 0xa00003).portr("DSW1"); + map(0xa00006, 0xa00007).w(this, FUNC(segas1x_bootleg_state::sound_command_nmi_w)); + map(0xa0000e, 0xa0000f).w(this, FUNC(segas1x_bootleg_state::sys18_tilebank_w)); + map(0xa01000, 0xa01001).portr("SERVICE"); + map(0xa01002, 0xa01003).portr("P1"); + map(0xa01004, 0xa01005).portr("P2"); + map(0xa01006, 0xa01007).portr("P3"); + map(0xa02100, 0xa02101).noprw(); + map(0xa03000, 0xa03001).noprw(); + map(0xa03034, 0xa03035).noprw(); /* bootleg video regs */ - AM_RANGE(0xc00000, 0xc00001) AM_NOP - AM_RANGE(0xc00002, 0xc00003) AM_NOP - AM_RANGE(0xc00004, 0xc00005) AM_NOP // tile bank? - AM_RANGE(0xc00006, 0xc00007) AM_NOP - AM_RANGE(0xc44000, 0xc44001) AM_NOP - AM_RANGE(0xc46000, 0xc46001) AM_NOP - AM_RANGE(0xc46200, 0xc46201) AM_NOP - AM_RANGE(0xc46400, 0xc464ff) AM_NOP // scroll? - AM_RANGE(0xc46500, 0xc465ff) AM_NOP // scroll? + map(0xc00000, 0xc00001).noprw(); + map(0xc00002, 0xc00003).noprw(); + map(0xc00004, 0xc00005).noprw(); // tile bank? + map(0xc00006, 0xc00007).noprw(); + map(0xc44000, 0xc44001).noprw(); + map(0xc46000, 0xc46001).noprw(); + map(0xc46200, 0xc46201).noprw(); + map(0xc46400, 0xc464ff).noprw(); // scroll? + map(0xc46500, 0xc465ff).noprw(); // scroll? - AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w) - AM_RANGE(0xfe0020, 0xfe003f) AM_WRITENOP - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0xc46600, 0xc46601).w(this, FUNC(segas1x_bootleg_state::sys18_refreshenable_w)); + map(0xfe0020, 0xfe003f).nopw(); + map(0xffc000, 0xffffff).ram(); +} -ADDRESS_MAP_START(segas1x_bootleg_state::sys18bl_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x9000, 0x9000) AM_WRITE(sys18bl_okibank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END +void segas1x_bootleg_state::sys18bl_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x9000, 0x9000).w(this, FUNC(segas1x_bootleg_state::sys18bl_okibank_w)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x8000, 0x87ff).ram(); +} -ADDRESS_MAP_START(segas1x_bootleg_state::sys18bl_oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void segas1x_bootleg_state::sys18bl_oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} WRITE16_MEMBER(segas1x_bootleg_state::ddcrewbl_spritebank_w) { @@ -1364,48 +1397,49 @@ WRITE16_MEMBER(segas1x_bootleg_state::ddcrewbl_spritebank_w) // todo: this -ADDRESS_MAP_START(segas1x_bootleg_state::ddcrewbl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ok - AM_RANGE(0x200000, 0x27ffff) AM_ROM // ok +void segas1x_bootleg_state::ddcrewbl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ok + map(0x200000, 0x27ffff).rom(); // ok - AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(sys16_tileram_w) AM_SHARE("tileram") - AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(sys16_textram_w) AM_SHARE("textram") - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("sprites") // ok + map(0x400000, 0x40ffff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_tileram_w)).share("tileram"); + map(0x410000, 0x410fff).ram().w(this, FUNC(segas1x_bootleg_state::sys16_textram_w)).share("textram"); + map(0x440000, 0x440fff).ram().share("sprites"); // ok - AM_RANGE(0x840000, 0x840fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") // ok + map(0x840000, 0x840fff).ram().w(this, FUNC(segas1x_bootleg_state::paletteram_w)).share("paletteram"); // ok - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // vdp leftovers maybe? - AM_RANGE(0xc00004, 0xc00005) AM_WRITENOP - AM_RANGE(0xc00006, 0xc00007) AM_WRITENOP + map(0xc00000, 0xc00001).nopw(); // vdp leftovers maybe? + map(0xc00004, 0xc00005).nopw(); + map(0xc00006, 0xc00007).nopw(); - AM_RANGE(0xc40000, 0xc40001) AM_READ_PORT("P1") - AM_RANGE(0xc40002, 0xc40003) AM_READ_PORT("P2") - AM_RANGE(0xc41000, 0xc41001) AM_READ_PORT("SERVICE") - AM_RANGE(0xc41002, 0xc41003) AM_READ_PORT("COINAGE") - AM_RANGE(0xc41004, 0xc41005) AM_READ_PORT("DSW1") - AM_RANGE(0xc41006, 0xc41007) AM_READ_PORT("P3") + map(0xc40000, 0xc40001).portr("P1"); + map(0xc40002, 0xc40003).portr("P2"); + map(0xc41000, 0xc41001).portr("SERVICE"); + map(0xc41002, 0xc41003).portr("COINAGE"); + map(0xc41004, 0xc41005).portr("DSW1"); + map(0xc41006, 0xc41007).portr("P3"); - AM_RANGE(0xc44000, 0xc44001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0xc44001, 0xc44001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0xc46600, 0xc46601) AM_WRITE(sys18_refreshenable_w) + map(0xc46600, 0xc46601).w(this, FUNC(segas1x_bootleg_state::sys18_refreshenable_w)); - AM_RANGE(0xc46038, 0xc4603f) AM_WRITE(ddcrewbl_spritebank_w) // ok + map(0xc46038, 0xc4603f).w(this, FUNC(segas1x_bootleg_state::ddcrewbl_spritebank_w)); // ok - AM_RANGE(0xc46000, 0xc46001) AM_WRITENOP - AM_RANGE(0xc46010, 0xc46011) AM_WRITENOP - AM_RANGE(0xc46020, 0xc46021) AM_WRITENOP + map(0xc46000, 0xc46001).nopw(); + map(0xc46010, 0xc46011).nopw(); + map(0xc46020, 0xc46021).nopw(); - AM_RANGE(0xc46040, 0xc46041) AM_WRITENOP - AM_RANGE(0xc46050, 0xc46051) AM_WRITENOP + map(0xc46040, 0xc46041).nopw(); + map(0xc46050, 0xc46051).nopw(); - AM_RANGE(0xc46060, 0xc46061) AM_WRITENOP - AM_RANGE(0xc46062, 0xc46063) AM_WRITENOP - AM_RANGE(0xc46064, 0xc46065) AM_WRITENOP + map(0xc46060, 0xc46061).nopw(); + map(0xc46062, 0xc46063).nopw(); + map(0xc46064, 0xc46065).nopw(); - AM_RANGE(0xc46070, 0xc46071) AM_WRITENOP + map(0xc46070, 0xc46071).nopw(); - AM_RANGE(0xffc000, 0xffffff) AM_RAM // ok -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram(); // ok +} /************************************* * diff --git a/src/mame/drivers/tagteam.cpp b/src/mame/drivers/tagteam.cpp index 2811347c761..f357602d65f 100644 --- a/src/mame/drivers/tagteam.cpp +++ b/src/mame/drivers/tagteam.cpp @@ -47,19 +47,20 @@ WRITE8_MEMBER(tagteam_state::irq_clear_w) m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); } -ADDRESS_MAP_START(tagteam_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("P2") AM_WRITE(flipscreen_w) - AM_RANGE(0x2001, 0x2001) AM_READ_PORT("P1") AM_WRITE(control_w) - AM_RANGE(0x2002, 0x2002) AM_READ_PORT("DSW1") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x2003, 0x2003) AM_READ_PORT("DSW2") AM_WRITE(irq_clear_w) - AM_RANGE(0x4000, 0x43ff) AM_READWRITE(mirrorvideoram_r, mirrorvideoram_w) - AM_RANGE(0x4400, 0x47ff) AM_READWRITE(mirrorcolorram_r, mirrorcolorram_w) - AM_RANGE(0x4800, 0x4fff) AM_READONLY - AM_RANGE(0x4800, 0x4bff) AM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4c00, 0x4fff) AM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tagteam_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x2000).portr("P2").w(this, FUNC(tagteam_state::flipscreen_w)); + map(0x2001, 0x2001).portr("P1").w(this, FUNC(tagteam_state::control_w)); + map(0x2002, 0x2002).portr("DSW1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x2003, 0x2003).portr("DSW2").w(this, FUNC(tagteam_state::irq_clear_w)); + map(0x4000, 0x43ff).rw(this, FUNC(tagteam_state::mirrorvideoram_r), FUNC(tagteam_state::mirrorvideoram_w)); + map(0x4400, 0x47ff).rw(this, FUNC(tagteam_state::mirrorcolorram_r), FUNC(tagteam_state::mirrorcolorram_w)); + map(0x4800, 0x4fff).readonly(); + map(0x4800, 0x4bff).w(this, FUNC(tagteam_state::videoram_w)).share("videoram"); + map(0x4c00, 0x4fff).w(this, FUNC(tagteam_state::colorram_w)).share("colorram"); + map(0x8000, 0xffff).rom(); +} WRITE8_MEMBER(tagteam_state::sound_nmi_mask_w) { @@ -67,15 +68,16 @@ WRITE8_MEMBER(tagteam_state::sound_nmi_mask_w) } /* Same as Syusse Oozumou */ -ADDRESS_MAP_START(tagteam_state::sound_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) - AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w) - AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tagteam_state::sound_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x2000, 0x2001).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x2002, 0x2003).w("ay2", FUNC(ay8910_device::data_address_w)); + map(0x2004, 0x2004).w("dac", FUNC(dac_byte_interface::write)); + map(0x2005, 0x2005).w(this, FUNC(tagteam_state::sound_nmi_mask_w)); + map(0x2007, 0x2007).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(tagteam_state::coin_inserted) diff --git a/src/mame/drivers/tail2nos.cpp b/src/mame/drivers/tail2nos.cpp index 5eb7237b3aa..d5896f2dd5f 100644 --- a/src/mame/drivers/tail2nos.cpp +++ b/src/mame/drivers/tail2nos.cpp @@ -35,40 +35,44 @@ WRITE8_MEMBER(tail2nos_state::sound_bankswitch_w) membank("bank3")->set_entry(data & 0x01); } -ADDRESS_MAP_START(tail2nos_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("user1", 0) /* extra ROM */ - AM_RANGE(0x2c0000, 0x2dffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(tail2nos_zoomdata_w) AM_SHARE("k051316") - AM_RANGE(0x500000, 0x500fff) AM_DEVREADWRITE8("k051316", k051316_device, read, write, 0x00ff) - AM_RANGE(0x510000, 0x51001f) AM_DEVWRITE8("k051316", k051316_device, ctrl_w, 0x00ff) - AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */ - AM_RANGE(0xffc000, 0xffc2ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xffc300, 0xffcfff) AM_RAM - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(tail2nos_txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(tail2nos_gfxbank_w, 0x00ff) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") - AM_RANGE(0xfff008, 0xfff009) AM_READ8(sound_semaphore_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) - AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tail2nos_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tail2nos_state::sound_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) - AM_RANGE(0x08, 0x0b) AM_DEVWRITE("ymsnd", ym2608_device, write) +void tail2nos_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x27ffff).rom().region("user1", 0); /* extra ROM */ + map(0x2c0000, 0x2dffff).rom().region("user2", 0); + map(0x400000, 0x41ffff).ram().w(this, FUNC(tail2nos_state::tail2nos_zoomdata_w)).share("k051316"); + map(0x500000, 0x500fff).rw(m_k051316, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); + map(0x510000, 0x51001f).w(m_k051316, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); + map(0xff8000, 0xffbfff).ram(); /* work RAM */ + map(0xffc000, 0xffc2ff).ram().share("spriteram"); + map(0xffc300, 0xffcfff).ram(); + map(0xffd000, 0xffdfff).ram().w(this, FUNC(tail2nos_state::tail2nos_txvideoram_w)).share("txvideoram"); + map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff000, 0xfff001).portr("IN0"); + map(0xfff001, 0xfff001).w(this, FUNC(tail2nos_state::tail2nos_gfxbank_w)); + map(0xfff002, 0xfff003).portr("IN1"); + map(0xfff004, 0xfff005).portr("DSW"); + map(0xfff009, 0xfff009).r(this, FUNC(tail2nos_state::sound_semaphore_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff); + map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); + map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff); +} + +void tail2nos_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("bank3"); +} + +void tail2nos_state::sound_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x07, 0x07).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); + map(0x08, 0x0b).w("ymsnd", FUNC(ym2608_device::write)); #if 0 - AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_device, read) + map(0x18, 0x1b).r("ymsnd", FUNC(ym2608_device::read)); #endif -ADDRESS_MAP_END +} CUSTOM_INPUT_MEMBER(tail2nos_state::analog_in_r) { diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp index 5e5bb110bac..f923b6996e2 100644 --- a/src/mame/drivers/taito.cpp +++ b/src/mame/drivers/taito.cpp @@ -104,88 +104,94 @@ private: }; -ADDRESS_MAP_START(taito_state::taito_map) - AM_RANGE(0x0000, 0x27ff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x0080) AM_READ_PORT("X0") - AM_RANGE(0x2801, 0x2801) AM_MIRROR(0x0080) AM_READ_PORT("X1") - AM_RANGE(0x2802, 0x2802) AM_MIRROR(0x0080) AM_READ_PORT("X2") - AM_RANGE(0x2803, 0x2803) AM_MIRROR(0x0080) AM_READ_PORT("X3") - AM_RANGE(0x2804, 0x2804) AM_MIRROR(0x0080) AM_READ_PORT("X4") - AM_RANGE(0x2805, 0x2805) AM_MIRROR(0x0080) AM_READ_PORT("X5") - AM_RANGE(0x2806, 0x2806) AM_MIRROR(0x0080) AM_READ_PORT("X6") - AM_RANGE(0x2807, 0x2807) AM_MIRROR(0x0080) AM_READ_PORT("X7") - AM_RANGE(0x2808, 0x2808) AM_MIRROR(0x0080) AM_READ_PORT("X8") - AM_RANGE(0x2838, 0x2838) AM_MIRROR(0x0080) AM_READ_PORT("X0") - AM_RANGE(0x2839, 0x2839) AM_MIRROR(0x0080) AM_READ_PORT("X1") - AM_RANGE(0x283a, 0x283a) AM_MIRROR(0x0080) AM_READ_PORT("X2") - AM_RANGE(0x283b, 0x283b) AM_MIRROR(0x0080) AM_READ_PORT("X3") - AM_RANGE(0x283c, 0x283c) AM_MIRROR(0x0080) AM_READ_PORT("X4") - AM_RANGE(0x283d, 0x283d) AM_MIRROR(0x0080) AM_READ_PORT("X5") - AM_RANGE(0x283e, 0x283e) AM_MIRROR(0x0080) AM_READ_PORT("X6") - AM_RANGE(0x283f, 0x283f) AM_MIRROR(0x0080) AM_READ_PORT("X7") - AM_RANGE(0x4000, 0x407f) AM_RAM - AM_RANGE(0x4080, 0x408f) AM_RAM AM_SHARE("ram") - AM_RANGE(0x4090, 0x409f) AM_READWRITE(io_r,io_w) - AM_RANGE(0x40a0, 0x40ff) AM_RAM - AM_RANGE(0x4800, 0x48ff) AM_ROM AM_REGION("roms", 0x2000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taito_state::taito_sub_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x0800, 0x1fff) AM_ROM AM_REGION("cpu2", 0x0800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taito_state::taito_sub_map2) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x2000, 0x3fff) AM_ROM AM_REGION("cpu2", 0x2000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taito_state::taito_sub_map5) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("aysnd_0", ay8910_device, address_w) - AM_RANGE(0x1003, 0x1003) AM_DEVWRITE("aysnd_0", ay8910_device, address_w) - AM_RANGE(0x1007, 0x1007) AM_DEVREAD("aysnd_0", ay8910_device, data_r) - AM_RANGE(0x100c, 0x100c) AM_DEVWRITE("aysnd_1", ay8910_device, address_w) - AM_RANGE(0x100a, 0x100a) AM_DEVWRITE("aysnd_0", ay8910_device, data_w) - AM_RANGE(0x100b, 0x100b) AM_DEVWRITE("aysnd_0", ay8910_device, data_w) - AM_RANGE(0x100d, 0x100d) AM_DEVREAD("aysnd_1", ay8910_device, data_r) - AM_RANGE(0x100e, 0x100e) AM_DEVWRITE("aysnd_1", ay8910_device, data_w) - AM_RANGE(0x2000, 0x7fff) AM_ROM AM_REGION("cpu2", 0x2000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taito_state::shock_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x1000, 0x100f) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1010, 0x101f) AM_READWRITE(io_r,io_w) - AM_RANGE(0x1020, 0x10ff) AM_RAM - AM_RANGE(0x1400, 0x1400) AM_READ_PORT("X0") - AM_RANGE(0x1401, 0x1401) AM_READ_PORT("X1") - AM_RANGE(0x1402, 0x1402) AM_READ_PORT("X2") - AM_RANGE(0x1404, 0x1404) AM_READ_PORT("X4") - AM_RANGE(0x1405, 0x1405) AM_READ_PORT("X5") - AM_RANGE(0x1406, 0x1406) AM_READ_PORT("X6") - AM_RANGE(0x14d8, 0x14d8) AM_READ_PORT("X0") - AM_RANGE(0x14d9, 0x14d9) AM_READ_PORT("X1") - AM_RANGE(0x14da, 0x14da) AM_READ_PORT("X2") - AM_RANGE(0x14db, 0x14db) AM_READ_PORT("X3") - AM_RANGE(0x14dc, 0x14dc) AM_READ_PORT("X4") - AM_RANGE(0x14dd, 0x14dd) AM_READ_PORT("X5") - AM_RANGE(0x1800, 0x1bff) AM_ROM AM_REGION("roms", 0x1800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taito_state::shock_sub_map) - ADDRESS_MAP_GLOBAL_MASK(0x0fff) - AM_RANGE(0x0000, 0x007f) AM_RAM // internal to the cpu - AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("cpu2", 0) -ADDRESS_MAP_END +void taito_state::taito_map(address_map &map) +{ + map(0x0000, 0x27ff).rom().region("roms", 0); + map(0x2800, 0x2800).mirror(0x0080).portr("X0"); + map(0x2801, 0x2801).mirror(0x0080).portr("X1"); + map(0x2802, 0x2802).mirror(0x0080).portr("X2"); + map(0x2803, 0x2803).mirror(0x0080).portr("X3"); + map(0x2804, 0x2804).mirror(0x0080).portr("X4"); + map(0x2805, 0x2805).mirror(0x0080).portr("X5"); + map(0x2806, 0x2806).mirror(0x0080).portr("X6"); + map(0x2807, 0x2807).mirror(0x0080).portr("X7"); + map(0x2808, 0x2808).mirror(0x0080).portr("X8"); + map(0x2838, 0x2838).mirror(0x0080).portr("X0"); + map(0x2839, 0x2839).mirror(0x0080).portr("X1"); + map(0x283a, 0x283a).mirror(0x0080).portr("X2"); + map(0x283b, 0x283b).mirror(0x0080).portr("X3"); + map(0x283c, 0x283c).mirror(0x0080).portr("X4"); + map(0x283d, 0x283d).mirror(0x0080).portr("X5"); + map(0x283e, 0x283e).mirror(0x0080).portr("X6"); + map(0x283f, 0x283f).mirror(0x0080).portr("X7"); + map(0x4000, 0x407f).ram(); + map(0x4080, 0x408f).ram().share("ram"); + map(0x4090, 0x409f).rw(this, FUNC(taito_state::io_r), FUNC(taito_state::io_w)); + map(0x40a0, 0x40ff).ram(); + map(0x4800, 0x48ff).rom().region("roms", 0x2000); +} + +void taito_state::taito_sub_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0800, 0x1fff).rom().region("cpu2", 0x0800); +} + +void taito_state::taito_sub_map2(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x3fff).rom().region("cpu2", 0x2000); +} + +void taito_state::taito_sub_map5(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x1000).w("aysnd_0", FUNC(ay8910_device::address_w)); + map(0x1003, 0x1003).w("aysnd_0", FUNC(ay8910_device::address_w)); + map(0x1007, 0x1007).r("aysnd_0", FUNC(ay8910_device::data_r)); + map(0x100c, 0x100c).w("aysnd_1", FUNC(ay8910_device::address_w)); + map(0x100a, 0x100a).w("aysnd_0", FUNC(ay8910_device::data_w)); + map(0x100b, 0x100b).w("aysnd_0", FUNC(ay8910_device::data_w)); + map(0x100d, 0x100d).r("aysnd_1", FUNC(ay8910_device::data_r)); + map(0x100e, 0x100e).w("aysnd_1", FUNC(ay8910_device::data_w)); + map(0x2000, 0x7fff).rom().region("cpu2", 0x2000); +} + +void taito_state::shock_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x0fff).rom().region("roms", 0); + map(0x1000, 0x100f).ram().share("ram"); + map(0x1010, 0x101f).rw(this, FUNC(taito_state::io_r), FUNC(taito_state::io_w)); + map(0x1020, 0x10ff).ram(); + map(0x1400, 0x1400).portr("X0"); + map(0x1401, 0x1401).portr("X1"); + map(0x1402, 0x1402).portr("X2"); + map(0x1404, 0x1404).portr("X4"); + map(0x1405, 0x1405).portr("X5"); + map(0x1406, 0x1406).portr("X6"); + map(0x14d8, 0x14d8).portr("X0"); + map(0x14d9, 0x14d9).portr("X1"); + map(0x14da, 0x14da).portr("X2"); + map(0x14db, 0x14db).portr("X3"); + map(0x14dc, 0x14dc).portr("X4"); + map(0x14dd, 0x14dd).portr("X5"); + map(0x1800, 0x1bff).rom().region("roms", 0x1800); +} + +void taito_state::shock_sub_map(address_map &map) +{ + map.global_mask(0x0fff); + map(0x0000, 0x007f).ram(); // internal to the cpu + map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0800, 0x0fff).rom().region("cpu2", 0); +} static INPUT_PORTS_START( taito ) PORT_START("X0") diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp index cf7b56033b4..3d7367c7b04 100644 --- a/src/mame/drivers/taito_b.cpp +++ b/src/mame/drivers/taito_b.cpp @@ -457,272 +457,311 @@ WRITE16_MEMBER(taitob_state::realpunc_output_w) } -#define TC0180VCU_MEMRW( ADDR ) \ - AM_RANGE(ADDR+0x00000, ADDR+0x0ffff) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, word_r, word_w) \ - AM_RANGE(ADDR+0x10000, ADDR+0x1197f) AM_RAM AM_SHARE("spriteram") \ - AM_RANGE(ADDR+0x11980, ADDR+0x137ff) AM_RAM \ - AM_RANGE(ADDR+0x13800, ADDR+0x13fff) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, scroll_r, scroll_w) \ - AM_RANGE(ADDR+0x18000, ADDR+0x1801f) AM_DEVREADWRITE("tc0180vcu", tc0180vcu_device, ctrl_r, ctrl_w) \ - AM_RANGE(ADDR+0x40000, ADDR+0x7ffff) AM_READWRITE(tc0180vcu_framebuffer_word_r, tc0180vcu_framebuffer_word_w) - - -ADDRESS_MAP_START(taitob_state::rastsag2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x607fff) AM_RAM /* Main RAM */ /*ashura up to 603fff only*/ - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::crimec_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x600001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::tetrist_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0x800000, 0x807fff) AM_RAM /* Main RAM */ - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::tetrista_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x600003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0xff00) - AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */ - AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::hitice_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0x610000, 0x610001) AM_READ_PORT("P3_P4") - AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */ - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb7ffff) AM_RAM_WRITE(hitice_pixelram_w) AM_SHARE("pixelram") - AM_RANGE(0xbffff0, 0xbffff5) AM_WRITE(hitice_pixel_scroll_w) +void taitob_state::tc0180vcu_memrw(address_map &map, u32 addr) +{ + map(addr+0x00000, addr+0x0ffff).rw(m_tc0180vcu, FUNC(tc0180vcu_device::word_r), FUNC(tc0180vcu_device::word_w)); + map(addr+0x10000, addr+0x1197f).ram().share("spriteram"); + map(addr+0x11980, addr+0x137ff).ram(); + map(addr+0x13800, addr+0x13fff).rw(m_tc0180vcu, FUNC(tc0180vcu_device::scroll_r), FUNC(tc0180vcu_device::scroll_w)); + map(addr+0x18000, addr+0x1801f).rw(m_tc0180vcu, FUNC(tc0180vcu_device::ctrl_r), FUNC(tc0180vcu_device::ctrl_w)); + map(addr+0x40000, addr+0x7ffff).rw(this, FUNC(taitob_state::tc0180vcu_framebuffer_word_r), FUNC(taitob_state::tc0180vcu_framebuffer_word_w)); +} + +void taitob_state::rastsag2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x600000, 0x607fff).ram(); /* Main RAM */ /*ashura up to 603fff only*/ + tc0180vcu_memrw(map, 0x400000); + map(0x800000, 0x800001).nopr(); + map(0x800000, 0x800000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x800002, 0x800002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0xa00000, 0xa0000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); +} + + +void taitob_state::crimec_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x600001).nopr(); + map(0x600000, 0x600000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x600002, 0x600002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xa00000, 0xa0ffff).ram(); /* Main RAM */ +} + + +void taitob_state::tetrist_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x200001).nopr(); + map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x60000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0x800000, 0x807fff).ram(); /* Main RAM */ + map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void taitob_state::tetrista_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x600003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0xff00); + map(0x800000, 0x803fff).ram(); /* Main RAM */ + map(0xa00000, 0xa00001).nopr(); + map(0xa00000, 0xa00000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xa00002, 0xa00002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); +} + + +void taitob_state::hitice_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x60000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0x610000, 0x610001).portr("P3_P4"); + map(0x700000, 0x700001).nopr(); + map(0x700000, 0x700000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x700002, 0x700002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x800000, 0x803fff).ram(); /* Main RAM */ + map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xb00000, 0xb7ffff).ram().w(this, FUNC(taitob_state::hitice_pixelram_w)).share("pixelram"); + map(0xbffff0, 0xbffff5).w(this, FUNC(taitob_state::hitice_pixel_scroll_w)); // { 0xbffffa, 0xbffffb, ??? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::rambo3_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x60000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0x600010, 0x600011) AM_READ(tracky1_lo_r) /*player 1*/ - AM_RANGE(0x600012, 0x600013) AM_READ(tracky1_hi_r) - AM_RANGE(0x600014, 0x600015) AM_READ(trackx1_lo_r) - AM_RANGE(0x600016, 0x600017) AM_READ(trackx1_hi_r) - AM_RANGE(0x600018, 0x600019) AM_READ(tracky2_lo_r) /*player 2*/ - AM_RANGE(0x60001a, 0x60001b) AM_READ(tracky2_hi_r) - AM_RANGE(0x60001c, 0x60001d) AM_READ(trackx2_lo_r) - AM_RANGE(0x60001e, 0x60001f) AM_READ(trackx2_hi_r) - AM_RANGE(0x800000, 0x803fff) AM_RAM /* Main RAM */ - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::pbobble_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w) - AM_RANGE(0x500024, 0x500025) AM_READ_PORT("P3_P4_A") /* shown in service mode, game omits to read it */ - AM_RANGE(0x500026, 0x500027) AM_READWRITE(eep_latch_r, eeprom_w) - AM_RANGE(0x500028, 0x500029) AM_WRITE(player_34_coin_ctrl_w) /* simply locks coins 3&4 out */ - AM_RANGE(0x50002e, 0x50002f) AM_READ_PORT("P3_P4_B") /* shown in service mode, game omits to read it */ - AM_RANGE(0x600000, 0x600003) AM_WRITE(gain_control_w) - AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END +} + + +void taitob_state::rambo3_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x200001).nopr(); + map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x60000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0x600010, 0x600011).r(this, FUNC(taitob_state::tracky1_lo_r)); /*player 1*/ + map(0x600012, 0x600013).r(this, FUNC(taitob_state::tracky1_hi_r)); + map(0x600014, 0x600015).r(this, FUNC(taitob_state::trackx1_lo_r)); + map(0x600016, 0x600017).r(this, FUNC(taitob_state::trackx1_hi_r)); + map(0x600018, 0x600019).r(this, FUNC(taitob_state::tracky2_lo_r)); /*player 2*/ + map(0x60001a, 0x60001b).r(this, FUNC(taitob_state::tracky2_hi_r)); + map(0x60001c, 0x60001d).r(this, FUNC(taitob_state::trackx2_lo_r)); + map(0x60001e, 0x60001f).r(this, FUNC(taitob_state::trackx2_hi_r)); + map(0x800000, 0x803fff).ram(); /* Main RAM */ + map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + + +void taitob_state::pbobble_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + tc0180vcu_memrw(map, 0x400000); + map(0x500000, 0x50000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w)); + map(0x500024, 0x500025).portr("P3_P4_A"); /* shown in service mode, game omits to read it */ + map(0x500026, 0x500027).rw(this, FUNC(taitob_state::eep_latch_r), FUNC(taitob_state::eeprom_w)); + map(0x500028, 0x500029).w(this, FUNC(taitob_state::player_34_coin_ctrl_w)); /* simply locks coins 3&4 out */ + map(0x50002e, 0x50002f).portr("P3_P4_B"); /* shown in service mode, game omits to read it */ + map(0x600000, 0x600003).w(this, FUNC(taitob_state::gain_control_w)); + map(0x700000, 0x700001).nopr(); + map(0x700000, 0x700000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x700002, 0x700002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x900000, 0x90ffff).ram(); /* Main RAM */ +} /* identical to pbobble, above??? */ -ADDRESS_MAP_START(taitob_state::spacedx_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w) - AM_RANGE(0x500024, 0x500025) AM_READ_PORT("P3_P4_A") - AM_RANGE(0x500026, 0x500027) AM_READWRITE(eep_latch_r, eeprom_w) - AM_RANGE(0x500028, 0x500029) AM_WRITE(player_34_coin_ctrl_w) /* simply locks coins 3&4 out */ - AM_RANGE(0x50002e, 0x50002f) AM_READ_PORT("P3_P4_B") - AM_RANGE(0x600000, 0x600003) AM_WRITE(gain_control_w) - AM_RANGE(0x700000, 0x700001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x700002, 0x700003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::spacedxo_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x200000, 0x20000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_device, read, 0x00ff) - AM_RANGE(0x200000, 0x20000f) AM_WRITE(spacedxo_tc0220ioc_w) - AM_RANGE(0x210000, 0x210001) AM_READ_PORT("IN3") - AM_RANGE(0x220000, 0x220001) AM_READ_PORT("IN4") - AM_RANGE(0x230000, 0x230001) AM_READ_PORT("IN5") - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x302000, 0x303fff) AM_READONLY - AM_RANGE(0x400000, 0x40ffff) AM_RAM /* Main RAM */ - TC0180VCU_MEMRW( 0x500000 ) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::qzshowby_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0640fio", tc0640fio_device, halfword_byteswap_r, halfword_byteswap_w) - AM_RANGE(0x200024, 0x200025) AM_READ_PORT("P3_P4_A") /* player 3,4 start */ - AM_RANGE(0x200026, 0x200027) AM_WRITE(eeprom_w) - AM_RANGE(0x200028, 0x200029) AM_READWRITE(player_34_coin_ctrl_r, player_34_coin_ctrl_w) - AM_RANGE(0x20002e, 0x20002f) AM_READ_PORT("P3_P4_B") /* player 3,4 buttons */ - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x600001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x700000, 0x700003) AM_WRITE(gain_control_w) - AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x900000, 0x90ffff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::viofight_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0xa00000, 0xa03fff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::masterw_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM /* Main RAM */ - TC0180VCU_MEMRW( 0x400000 ) - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0xff00) - AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::silentd_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) -// AM_RANGE(0x10001a, 0x10001b) AM_READNOP // ??? read at $1e344 -// AM_RANGE(0x10001c, 0x10001d) AM_READNOP // ??? read at $1e356 - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x210000, 0x210001) AM_READ_PORT("IN3") - AM_RANGE(0x220000, 0x220001) AM_READ_PORT("IN4") - AM_RANGE(0x230000, 0x230001) AM_READ_PORT("IN5") - AM_RANGE(0x240000, 0x240001) AM_WRITENOP // ??? -// AM_RANGE(0x240000, 0x240001) AM_READNOP /* read 4 times at init */ - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x403fff) AM_RAM /* Main RAM */ - TC0180VCU_MEMRW( 0x500000 ) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::selfeena_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ - TC0180VCU_MEMRW( 0x200000 ) - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0x410000, 0x41000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) /* mirror address - seems to be only used for coin control */ - AM_RANGE(0x500000, 0x500001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitob_state::sbm_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Main RAM */ - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w) - AM_RANGE(0x320000, 0x320001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - TC0180VCU_MEMRW( 0x900000 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::realpunc_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x110000, 0x12ffff) AM_RAM - AM_RANGE(0x130000, 0x13ffff) AM_RAM // Check me - AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w) - AM_RANGE(0x184000, 0x184001) AM_WRITE(realpunc_video_ctrl_w) - AM_RANGE(0x188000, 0x188001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x188002, 0x188003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_comm_w, 0xff00) - AM_RANGE(0x18c000, 0x18c001) AM_WRITE(realpunc_output_w) - TC0180VCU_MEMRW( 0x200000 ) - AM_RANGE(0x280000, 0x281fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE("hd63484", hd63484_device, status16_r, address16_w) - AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE("hd63484", hd63484_device, data16_r, data16_w) -// AM_RANGE(0x320000, 0x320001) AM_NOP // ? - AM_RANGE(0x320002, 0x320003) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_comm_w, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::realpunc_hd63484_map) - AM_RANGE(0x00000, 0x7ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::masterw_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitob_state::viofight_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* yes, both addresses for the same chip */ - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) -ADDRESS_MAP_END +void taitob_state::spacedx_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + tc0180vcu_memrw(map, 0x400000); + map(0x500000, 0x50000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w)); + map(0x500024, 0x500025).portr("P3_P4_A"); + map(0x500026, 0x500027).rw(this, FUNC(taitob_state::eep_latch_r), FUNC(taitob_state::eeprom_w)); + map(0x500028, 0x500029).w(this, FUNC(taitob_state::player_34_coin_ctrl_w)); /* simply locks coins 3&4 out */ + map(0x50002e, 0x50002f).portr("P3_P4_B"); + map(0x600000, 0x600003).w(this, FUNC(taitob_state::gain_control_w)); + map(0x700000, 0x700001).nopr(); + map(0x700000, 0x700000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x700002, 0x700002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x900000, 0x90ffff).ram(); /* Main RAM */ +} + +void taitob_state::spacedxo_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).nopr(); + map(0x100000, 0x100000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x100002, 0x100002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x200000, 0x20000f).r(m_tc0220ioc, FUNC(tc0220ioc_device::read)).umask16(0x00ff); + map(0x200000, 0x20000f).w(this, FUNC(taitob_state::spacedxo_tc0220ioc_w)); + map(0x210000, 0x210001).portr("IN3"); + map(0x220000, 0x220001).portr("IN4"); + map(0x230000, 0x230001).portr("IN5"); + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x302000, 0x303fff).readonly(); + map(0x400000, 0x40ffff).ram(); /* Main RAM */ + tc0180vcu_memrw(map, 0x500000); +} + + +void taitob_state::qzshowby_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20000f).rw(m_tc0640fio, FUNC(tc0640fio_device::halfword_byteswap_r), FUNC(tc0640fio_device::halfword_byteswap_w)); + map(0x200024, 0x200025).portr("P3_P4_A"); /* player 3,4 start */ + map(0x200026, 0x200027).w(this, FUNC(taitob_state::eeprom_w)); + map(0x200028, 0x200029).rw(this, FUNC(taitob_state::player_34_coin_ctrl_r), FUNC(taitob_state::player_34_coin_ctrl_w)); + map(0x20002e, 0x20002f).portr("P3_P4_B"); /* player 3,4 buttons */ + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x600001).nopr(); + map(0x600000, 0x600000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x600002, 0x600002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x700000, 0x700003).w(this, FUNC(taitob_state::gain_control_w)); + map(0x800000, 0x801fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x900000, 0x90ffff).ram(); /* Main RAM */ +} + + +void taitob_state::viofight_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x200001).nopr(); + map(0x200000, 0x200000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x200002, 0x200002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0xa00000, 0xa03fff).ram(); /* Main RAM */ +} + + +void taitob_state::masterw_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x203fff).ram(); /* Main RAM */ + tc0180vcu_memrw(map, 0x400000); + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x800003).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0xff00); + map(0xa00000, 0xa00001).nopr(); + map(0xa00000, 0xa00000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xa00002, 0xa00002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); +} + + +void taitob_state::silentd_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).nopr(); + map(0x100000, 0x100000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x100002, 0x100002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); +// map(0x10001a, 0x10001b).nopr(); // ??? read at $1e344 +// map(0x10001c, 0x10001d).nopr(); // ??? read at $1e356 + map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x210000, 0x210001).portr("IN3"); + map(0x220000, 0x220001).portr("IN4"); + map(0x230000, 0x230001).portr("IN5"); + map(0x240000, 0x240001).nopw(); // ??? +// map(0x240000, 0x240001).nopr(); /* read 4 times at init */ + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x403fff).ram(); /* Main RAM */ + tc0180vcu_memrw(map, 0x500000); +} + + +void taitob_state::selfeena_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); /* Main RAM */ + tc0180vcu_memrw(map, 0x200000); + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0x410000, 0x41000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); /* mirror address - seems to be only used for coin control */ + map(0x500000, 0x500001).nopr(); + map(0x500000, 0x500000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x500002, 0x500002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); +} + + +void taitob_state::sbm_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); /* Main RAM */ + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w)); + map(0x320000, 0x320001).nopr(); + map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + tc0180vcu_memrw(map, 0x900000); +} + +void taitob_state::realpunc_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x110000, 0x12ffff).ram(); + map(0x130000, 0x13ffff).ram(); // Check me + map(0x180000, 0x18000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w)); + map(0x184000, 0x184001).w(this, FUNC(taitob_state::realpunc_video_ctrl_w)); + map(0x188000, 0x188001).nopr(); + map(0x188000, 0x188000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x188002, 0x188003).nopr(); + map(0x188002, 0x188002).w("tc0140syt", FUNC(tc0140syt_device::master_comm_w)); + map(0x18c000, 0x18c001).w(this, FUNC(taitob_state::realpunc_output_w)); + tc0180vcu_memrw(map, 0x200000); + map(0x280000, 0x281fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x300001).rw("hd63484", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x300002, 0x300003).rw("hd63484", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); +// map(0x320000, 0x320001).nop(); // ? + map(0x320002, 0x320003).nopr(); + map(0x320002, 0x320002).w("tc0140syt", FUNC(tc0140syt_device::master_comm_w)); +} + +void taitob_state::realpunc_hd63484_map(address_map &map) +{ + map(0x00000, 0x7ffff).ram(); +} + +void taitob_state::masterw_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); +} + +void taitob_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xe600, 0xe600).nopw(); /* ? */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitob_state::bankswitch_w)); +} + +void taitob_state::viofight_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xb000, 0xb001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* yes, both addresses for the same chip */ + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); +} /*********************************************************** diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp index ccd3b65e23c..7c7b26f01e0 100644 --- a/src/mame/drivers/taito_f2.cpp +++ b/src/mame/drivers/taito_f2.cpp @@ -619,516 +619,549 @@ WRITE16_MEMBER(taitof2_state::driveout_sound_command_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(taitof2_state::finalb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */ - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x810000, 0x81ffff) AM_WRITENOP /* error in game init code ? */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb00002, 0xb00003) AM_WRITENOP /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::dondokod_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_device, tc0280grd_word_r, tc0280grd_word_w) /* ROZ tilemap */ - AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_device, tc0280grd_ctrl_word_w) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::megab_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x120000, 0x12000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x180000, 0x1807ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff) - AM_RANGE(0x180800, 0x180fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff) - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x40001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ - AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x610000, 0x61ffff) AM_RAM /* unused? */ - AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::thundfox_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x101fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x220000, 0x220001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x220002, 0x220003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x300000, 0x30ffff) AM_RAM - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x800000, 0x80001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::cameltry_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x813fff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_device, tc0280grd_word_r, tc0280grd_word_w) /* ROZ tilemap */ - AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_device, tc0280grd_ctrl_word_w) - AM_RANGE(0xd00000, 0xd0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::cameltrya_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x300018, 0x30001f) AM_READ(cameltry_paddle_r) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0xff00) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x813fff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0280grd", tc0280grd_device, tc0280grd_word_r, tc0280grd_word_w) /* ROZ tilemap */ - AM_RANGE(0xa02000, 0xa0200f) AM_DEVWRITE("tc0280grd", tc0280grd_device, tc0280grd_ctrl_word_w) - AM_RANGE(0xd00000, 0xd0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::qtorimon_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */ - AM_RANGE(0x500000, 0x50000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x910000, 0x9120ff) AM_WRITENOP /* error in init code ? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::liquidk_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::quizhq_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */ - AM_RANGE(0x500004, 0x500005) AM_WRITE(growl_coin_word_w) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSWB") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN0") - AM_RANGE(0x580000, 0x580001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* ??? */ - AM_RANGE(0x580006, 0x580007) AM_WRITENOP /* ??? */ - AM_RANGE(0x580000, 0x580001) AM_READ_PORT("DSWA") - AM_RANGE(0x580002, 0x580003) AM_READ_PORT("IN1") - AM_RANGE(0x580004, 0x580005) AM_READ_PORT("IN2") - AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x600002, 0x600003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x680000, 0x680001) AM_WRITENOP /* ??? */ - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x810000, 0x81ffff) AM_WRITENOP /* error in init code ? */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::ssi_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) +void taitof2_state::finalb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */ + map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x320001, 0x320001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320003, 0x320003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x810000, 0x81ffff).nopw(); /* error in game init code ? */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xb00002, 0xb00003).nopw(); /* ?? */ +} + +void taitof2_state::dondokod_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa01fff).rw(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_word_r), FUNC(tc0280grd_device::tc0280grd_word_w)); /* ROZ tilemap */ + map(0xa02000, 0xa0200f).w(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_ctrl_word_w)); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::megab_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x100002, 0x100002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x120000, 0x12000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x180000, 0x1807ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff); + map(0x180800, 0x180fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x40001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ + map(0x600000, 0x60ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x610000, 0x61ffff).ram(); /* unused? */ + map(0x620000, 0x62000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x800000, 0x80ffff).ram().share("spriteram"); +} + +void taitof2_state::thundfox_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x101fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x220000, 0x220000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x220002, 0x220002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x300000, 0x30ffff).ram(); + map(0x400000, 0x40ffff).rw(m_tc0100scn_1, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x420000, 0x42000f).rw(m_tc0100scn_1, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x500000, 0x50ffff).rw(m_tc0100scn_2, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x520000, 0x52000f).rw(m_tc0100scn_2, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x600000, 0x60ffff).ram().share("spriteram"); + map(0x800000, 0x80001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); +} + +void taitof2_state::cameltry_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x300018, 0x30001f).r(this, FUNC(taitof2_state::cameltry_paddle_r)); + map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x813fff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa01fff).rw(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_word_r), FUNC(tc0280grd_device::tc0280grd_word_w)); /* ROZ tilemap */ + map(0xa02000, 0xa0200f).w(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_ctrl_word_w)); + map(0xd00000, 0xd0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::cameltrya_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x300018, 0x30001f).r(this, FUNC(taitof2_state::cameltry_paddle_r)); + map(0x320000, 0x320000).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x320002, 0x320002).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x800000, 0x813fff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa01fff).rw(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_word_r), FUNC(tc0280grd_device::tc0280grd_word_w)); /* ROZ tilemap */ + map(0xa02000, 0xa0200f).w(m_tc0280grd, FUNC(tc0280grd_device::tc0280grd_ctrl_word_w)); + map(0xd00000, 0xd0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::qtorimon_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */ + map(0x500000, 0x50000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x600000, 0x600000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x600002, 0x600002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0x910000, 0x9120ff).nopw(); /* error in init code ? */ +} + +void taitof2_state::liquidk_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x320001, 0x320001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320003, 0x320003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::quizhq_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */ + map(0x500004, 0x500005).w(this, FUNC(taitof2_state::growl_coin_word_w)); + map(0x500000, 0x500001).portr("DSWB"); + map(0x500002, 0x500003).portr("IN0"); + map(0x580000, 0x580001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* ??? */ + map(0x580006, 0x580007).nopw(); /* ??? */ + map(0x580000, 0x580001).portr("DSWA"); + map(0x580002, 0x580003).portr("IN1"); + map(0x580004, 0x580005).portr("IN2"); + map(0x600001, 0x600001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x600003, 0x600003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x680000, 0x680001).nopw(); /* ??? */ + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x810000, 0x81ffff).nopw(); /* error in init code ? */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); +} + +void taitof2_state::ssi_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); // AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* ?? */ - AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps (not used) */ - AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::gunfront_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") + map(0x600000, 0x60ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (not used) */ + map(0x620000, 0x62000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x800000, 0x80ffff).ram().share("spriteram"); /* sprite ram */ +} + +void taitof2_state::gunfront_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w)); + map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); // AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ?? */ - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::growl_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w) - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB") - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN0") - AM_RANGE(0x320002, 0x320003) AM_READ_PORT("IN1") - AM_RANGE(0x320004, 0x320005) AM_READ_PORT("IN2") - AM_RANGE(0x340000, 0x340001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w) - AM_RANGE(0x504000, 0x504001) AM_WRITENOP /* unknown... various values */ - AM_RANGE(0x508000, 0x50800f) AM_READ_PORT("IN3") - AM_RANGE(0x50c000, 0x50c00f) AM_READ_PORT("IN4") - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::mjnquest_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x110000, 0x11ffff) AM_RAM /* "sram" */ - AM_RANGE(0x120000, 0x12ffff) AM_RAM - AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, word_w) /* palette */ - AM_RANGE(0x300000, 0x30000f) AM_READ(mjnquest_dsw_r) - AM_RANGE(0x310000, 0x310001) AM_READ(mjnquest_input_r) - AM_RANGE(0x320000, 0x320001) AM_WRITE(mjnquest_inputselect_w) - AM_RANGE(0x330000, 0x330001) AM_WRITENOP /* watchdog ? */ - AM_RANGE(0x350000, 0x350001) AM_WRITENOP /* watchdog ? */ - AM_RANGE(0x360000, 0x360001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x360002, 0x360003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x380000, 0x380001) AM_DEVWRITE("tc0100scn", tc0100scn_device, gfxbank_w) /* scr gfx bank select */ - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x420000, 0x42000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x500000, 0x50ffff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::footchmp_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w) /* updated at $a6e, off irq5 */ - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* 500002 written like a watchdog?! */ - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE8("te7750", te7750_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) /* ??? */ - AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::koshien_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x320000, 0x320001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x320002, 0x320003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa20000, 0xa20001) AM_WRITE(koshien_spritebank_w) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::yuyugogo_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb10fff) AM_RAM /* deliberate writes to $b10xxx, I think */ - AM_RANGE(0xc00000, 0xc01fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext") - AM_RANGE(0xd00000, 0xdfffff) AM_ROM AM_REGION("extra", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::ninjak_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30001f) AM_DEVREADWRITE8("te7750", te7750_device, read, write, 0xff00) - AM_RANGE(0x380000, 0x380001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* ??? */ - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x600000, 0x60000f) AM_WRITE(taitof2_spritebank_w) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* b00002 written like a watchdog?! */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::solfigtr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x201fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300004, 0x300005) AM_WRITE(growl_coin_word_w) /* NOT VERIFIED */ - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSWA") - AM_RANGE(0x300002, 0x300003) AM_READ_PORT("DSWB") - AM_RANGE(0x320000, 0x320001) AM_READ_PORT("IN0") - AM_RANGE(0x320002, 0x320003) AM_READ_PORT("IN1") - AM_RANGE(0x320004, 0x320005) AM_READ_PORT("IN2") - AM_RANGE(0x340000, 0x340001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* NOT VERIFIED */ - AM_RANGE(0x400000, 0x400001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x500000, 0x50000f) AM_WRITE(taitof2_spritebank_w) - AM_RANGE(0x504000, 0x504001) AM_WRITENOP /* unknown... various values */ - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::qzquest_map) - AM_RANGE(0x000000, 0x17ffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x50ffff) AM_RAM - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::pulirula_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x300000, 0x30ffff) AM_RAM - AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */ - AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w) + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::growl_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300004, 0x300005).w(this, FUNC(taitof2_state::growl_coin_word_w)); + map(0x300000, 0x300001).portr("DSWA"); + map(0x300002, 0x300003).portr("DSWB"); + map(0x320000, 0x320001).portr("IN0"); + map(0x320002, 0x320003).portr("IN1"); + map(0x320004, 0x320005).portr("IN2"); + map(0x340000, 0x340001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x500000, 0x50000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w)); + map(0x504000, 0x504001).nopw(); /* unknown... various values */ + map(0x508000, 0x50800f).portr("IN3"); + map(0x50c000, 0x50c00f).portr("IN4"); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::mjnquest_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x110000, 0x11ffff).ram(); /* "sram" */ + map(0x120000, 0x12ffff).ram(); + map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::word_w)); /* palette */ + map(0x300000, 0x30000f).r(this, FUNC(taitof2_state::mjnquest_dsw_r)); + map(0x310000, 0x310001).r(this, FUNC(taitof2_state::mjnquest_input_r)); + map(0x320000, 0x320001).w(this, FUNC(taitof2_state::mjnquest_inputselect_w)); + map(0x330000, 0x330001).nopw(); /* watchdog ? */ + map(0x350000, 0x350001).nopw(); /* watchdog ? */ + map(0x360000, 0x360000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x360002, 0x360002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x380000, 0x380001).w(m_tc0100scn, FUNC(tc0100scn_device::gfxbank_w)); /* scr gfx bank select */ + map(0x400000, 0x40ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x420000, 0x42000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x500000, 0x50ffff).ram().share("spriteram"); +} + +void taitof2_state::footchmp_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x20ffff).ram().share("spriteram"); + map(0x300000, 0x30000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w)); /* updated at $a6e, off irq5 */ + map(0x400000, 0x40ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ + map(0x430000, 0x43002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0x500000, 0x50001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* 500002 written like a watchdog?! */ + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x70001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff); + map(0x800000, 0x800001).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); /* ??? */ + map(0xa00001, 0xa00001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0xa00003, 0xa00003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); +} + +void taitof2_state::koshien_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x320000, 0x320000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x320002, 0x320002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa20000, 0xa20001).w(this, FUNC(taitof2_state::koshien_spritebank_w)); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); +} + +void taitof2_state::yuyugogo_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x20000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa01fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xb00000, 0xb10fff).ram(); /* deliberate writes to $b10xxx, I think */ + map(0xc00000, 0xc01fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext"); + map(0xd00000, 0xdfffff).rom().region("extra", 0); +} + +void taitof2_state::ninjak_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0xff00); + map(0x380000, 0x380001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* ??? */ + map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x600000, 0x60000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w)); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* b00002 written like a watchdog?! */ +} + +void taitof2_state::solfigtr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x201fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300004, 0x300005).w(this, FUNC(taitof2_state::growl_coin_word_w)); /* NOT VERIFIED */ + map(0x300000, 0x300001).portr("DSWA"); + map(0x300002, 0x300003).portr("DSWB"); + map(0x320000, 0x320001).portr("IN0"); + map(0x320002, 0x320003).portr("IN1"); + map(0x320004, 0x320005).portr("IN2"); + map(0x340000, 0x340001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* NOT VERIFIED */ + map(0x400000, 0x400000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x400002, 0x400002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x500000, 0x50000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w)); + map(0x504000, 0x504001).nopw(); /* unknown... various values */ + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::qzquest_map(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); + map(0x200000, 0x20000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x400000, 0x401fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x50ffff).ram(); + map(0x600000, 0x60ffff).ram().share("spriteram"); + map(0x700000, 0x70ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x720000, 0x72000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} + +void taitof2_state::pulirula_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x300000, 0x30ffff).ram(); + map(0x400000, 0x401fff).rw(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_word_r), FUNC(tc0280grd_device::tc0430grw_word_w)); /* ROZ tilemap */ + map(0x402000, 0x40200f).w(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_ctrl_word_w)); // AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* ??? */ - AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext") - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::metalb_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("spriteram") + map(0x600000, 0x603fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext"); + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); + map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); +} + +void taitof2_state::metalb_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x300000, 0x30ffff).ram().share("spriteram"); // AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */ - AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x530000, 0x53002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) - AM_RANGE(0x700000, 0x703fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w) - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x900002, 0x900003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) + map(0x500000, 0x50ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ + map(0x530000, 0x53002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0x600000, 0x60001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); + map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w)); + map(0x900000, 0x900000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x900002, 0x900002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); // AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP /* ??? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::qzchikyu_map) - AM_RANGE(0x000000, 0x17ffff) AM_ROM - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x400000, 0x401fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x50ffff) AM_RAM - AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x700000, 0x70ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x720000, 0x72000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::yesnoj_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE8("rtc", tc8521_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x900002, 0x900003) AM_WRITENOP /* lots of similar writes */ - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("IN0") - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("IN1") - AM_RANGE(0xa00004, 0xa00005) AM_READ_PORT("IN2") - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("DSWA") - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP /* watchdog ?? */ - AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP /* lots of similar writes */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::deadconx_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x300000, 0x30000f) AM_WRITE(taitof2_spritebank_w) - AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ +} + +void taitof2_state::qzchikyu_map(address_map &map) +{ + map(0x000000, 0x17ffff).rom(); + map(0x200000, 0x20000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x400000, 0x401fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x50ffff).ram(); + map(0x600000, 0x60ffff).ram().share("spriteram"); + map(0x700000, 0x70ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x720000, 0x72000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} + +void taitof2_state::yesnoj_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x400000, 0x40ffff).ram().share("spriteram"); + map(0x500000, 0x50ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x520000, 0x52000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x70001f).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write)).umask16(0x00ff); + map(0x800000, 0x800000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x800002, 0x800002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x900002, 0x900003).nopw(); /* lots of similar writes */ + map(0xa00000, 0xa00001).portr("IN0"); + map(0xa00002, 0xa00003).portr("IN1"); + map(0xa00004, 0xa00005).portr("IN2"); + map(0xb00000, 0xb00001).portr("DSWA"); + map(0xc00000, 0xc00001).nopw(); /* watchdog ?? */ + map(0xd00000, 0xd00001).nopw(); /* lots of similar writes */ +} + +void taitof2_state::deadconx_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x20ffff).ram().share("spriteram"); + map(0x300000, 0x30000f).w(this, FUNC(taitof2_state::taitof2_spritebank_w)); + map(0x400000, 0x40ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ // AM_RANGE(0x42000c, 0x42000f) AM_WRITENOP /* zeroed */ - AM_RANGE(0x430000, 0x43002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x500000, 0x50001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* uses 500002 like a watchdog !? */ - AM_RANGE(0x600000, 0x601fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x70001f) AM_DEVREADWRITE8("te7750", te7750_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* ??? */ - AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::dinorex_map) - AM_RANGE(0x000000, 0x2fffff) AM_ROM - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x400000, 0x400fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext") - AM_RANGE(0x500000, 0x501fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x60ffff) AM_RAM - AM_RANGE(0x700000, 0x70001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0xb00000, 0xb00001) AM_WRITENOP /* watchdog? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::qjinsei_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x300000, 0x30ffff) AM_RAM - AM_RANGE(0x500000, 0x500001) AM_WRITENOP /* watchdog ? */ - AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext") - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::qcrayon_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM + map(0x430000, 0x43002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0x500000, 0x50001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* uses 500002 like a watchdog !? */ + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x70001f).rw("te7750", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff); + map(0x800000, 0x800001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* ??? */ + map(0xa00000, 0xa00000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0xa00002, 0xa00002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); +} + +void taitof2_state::dinorex_map(address_map &map) +{ + map(0x000000, 0x2fffff).rom(); + map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x400000, 0x400fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext"); + map(0x500000, 0x501fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x600000, 0x60ffff).ram(); + map(0x700000, 0x70001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ + map(0x800000, 0x80ffff).ram().share("spriteram"); + map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xa00000, 0xa00000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0xa00002, 0xa00002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0xb00000, 0xb00001).nopw(); /* watchdog? */ +} + +void taitof2_state::qjinsei_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x300000, 0x30ffff).ram(); + map(0x500000, 0x500001).nopw(); /* watchdog ? */ + map(0x600000, 0x603fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext"); + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ + map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); +} + +void taitof2_state::qcrayon_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); // AM_RANGE(0x200000, 0x200001) AM_WRITENOP /* unknown */ - AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("extra", 0) /* extra data rom */ - AM_RANGE(0x500000, 0x500001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x600000, 0x603fff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext") - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0xb00000, 0xb0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::qcrayon2_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x50ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x520000, 0x52000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("extra", 0) /* extra data rom */ - AM_RANGE(0x700000, 0x70000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0x900000, 0x90001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0x00ff) /* ?? */ - AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0xa00002, 0xa00003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0xb00000, 0xb017ff) AM_WRITE(taitof2_sprite_extension_w) AM_SHARE("sprite_ext") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitof2_state::driftout_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0xff00) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0xff00) - AM_RANGE(0x300000, 0x30ffff) AM_RAM - AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */ - AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w) - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0xb00018, 0xb00019) AM_READ_PORT("PADDLE1") - AM_RANGE(0xb0001a, 0xb0001b) AM_READ_PORT("PADDLE2") -ADDRESS_MAP_END + map(0x300000, 0x3fffff).rom().region("extra", 0); /* extra data rom */ + map(0x500000, 0x500000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x500002, 0x500002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x600000, 0x603fff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext"); + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80ffff).ram().share("spriteram"); + map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xa00000, 0xa0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0xb00000, 0xb0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ +} + +void taitof2_state::qcrayon2_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x301fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x40ffff).ram().share("spriteram"); + map(0x500000, 0x50ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x520000, 0x52000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x600000, 0x67ffff).rom().region("extra", 0); /* extra data rom */ + map(0x700000, 0x70000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0x900000, 0x90001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0x00ff); /* ?? */ + map(0xa00000, 0xa00000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0xa00002, 0xa00002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0xb00000, 0xb017ff).w(this, FUNC(taitof2_state::taitof2_sprite_extension_w)).share("sprite_ext"); +} + +void taitof2_state::driftout_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x200000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x200002, 0x200002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x300000, 0x30ffff).ram(); + map(0x400000, 0x401fff).rw(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_word_r), FUNC(tc0280grd_device::tc0430grw_word_w)); /* ROZ tilemap */ + map(0x402000, 0x40200f).w(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_ctrl_word_w)); + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); + map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0xb00018, 0xb00019).portr("PADDLE1"); + map(0xb0001a, 0xb0001b).portr("PADDLE2"); +} /* same as driftout, except for sound address 0x200000 */ -ADDRESS_MAP_START(taitof2_state::driveout_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x200003) AM_READNOP AM_WRITE(driveout_sound_command_w) - AM_RANGE(0x300000, 0x30ffff) AM_RAM - AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0430grw", tc0280grd_device, tc0430grw_word_r, tc0430grw_word_w) /* ROZ tilemap */ - AM_RANGE(0x402000, 0x40200f) AM_DEVWRITE("tc0430grw", tc0280grd_device, tc0430grw_ctrl_word_w) - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x820000, 0x82000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa0001f) AM_DEVWRITE8("tc0360pri", tc0360pri_device, write, 0xff00) - AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_r, halfword_w) - AM_RANGE(0xb00018, 0xb00019) AM_READ_PORT("PADDLE1") - AM_RANGE(0xb0001a, 0xb0001b) AM_READ_PORT("PADDLE2") -ADDRESS_MAP_END +void taitof2_state::driveout_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x200003).nopr().w(this, FUNC(taitof2_state::driveout_sound_command_w)); + map(0x300000, 0x30ffff).ram(); + map(0x400000, 0x401fff).rw(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_word_r), FUNC(tc0280grd_device::tc0430grw_word_w)); /* ROZ tilemap */ + map(0x402000, 0x40200f).w(m_tc0430grw, FUNC(tc0280grd_device::tc0430grw_ctrl_word_w)); + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x800000, 0x80ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x820000, 0x82000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x900000, 0x90ffff).ram().share("spriteram"); + map(0xa00000, 0xa0001f).w(m_tc0360pri, FUNC(tc0360pri_device::write)).umask16(0xff00); + map(0xb00000, 0xb0000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_r), FUNC(tc0510nio_device::halfword_w)); + map(0xb00018, 0xb00019).portr("PADDLE1"); + map(0xb0001a, 0xb0001b).portr("PADDLE2"); +} /***************************************************************************/ -ADDRESS_MAP_START(taitof2_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) /* ?? */ -ADDRESS_MAP_END +void taitof2_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank2"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitof2_state::sound_bankswitch_w)); /* ?? */ +} /* Alt version of Cameltry, YM2203 + M6925 sound */ -ADDRESS_MAP_START(taitof2_state::cameltrya_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // I can't see a bank control, but there ARE some bytes past 0x8000 - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) +void taitof2_state::cameltrya_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // I can't see a bank control, but there ARE some bytes past 0x8000 + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); // AM_RANGE(0xb000, 0xb000) AM_WRITE(unknown_w) // probably controlling sample player? - AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END + map(0xb000, 0xb001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} -ADDRESS_MAP_START(taitof2_state::driveout_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_bank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_READ(driveout_sound_command_r) -ADDRESS_MAP_END +void taitof2_state::driveout_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(taitof2_state::oki_bank_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(this, FUNC(taitof2_state::driveout_sound_command_r)); +} /*********************************************************** INPUT PORTS, DIPs diff --git a/src/mame/drivers/taito_f3.cpp b/src/mame/drivers/taito_f3.cpp index 3e6bab6092c..646149d05f0 100644 --- a/src/mame/drivers/taito_f3.cpp +++ b/src/mame/drivers/taito_f3.cpp @@ -184,44 +184,46 @@ WRITE16_MEMBER(taito_f3_state::f3_unk_w) /******************************************************************************/ -ADDRESS_MAP_START(taito_f3_state::f3_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x300000, 0x30007f) AM_WRITE(f3_sound_bankswitch_w) - AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x20000) AM_RAM AM_SHARE("f3_ram") - AM_RANGE(0x440000, 0x447fff) AM_RAM_WRITE(f3_palette_24bit_w) AM_SHARE("paletteram") - AM_RANGE(0x4a0000, 0x4a001f) AM_READWRITE(f3_control_r, f3_control_w) - AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE16(f3_unk_w,0xffffffff) - AM_RANGE(0x600000, 0x60ffff) AM_READWRITE16(f3_spriteram_r,f3_spriteram_w,0xffffffff) //AM_SHARE("spriteram") - AM_RANGE(0x610000, 0x61bfff) AM_READWRITE16(f3_pf_data_r,f3_pf_data_w,0xffffffff) //AM_SHARE("f3_pf_data") - AM_RANGE(0x61c000, 0x61dfff) AM_READWRITE16(f3_videoram_r,f3_videoram_w,0xffffffff) //AM_SHARE("videoram") - AM_RANGE(0x61e000, 0x61ffff) AM_READWRITE16(f3_vram_r,f3_vram_w,0xffffffff) //AM_SHARE("f3_vram") - AM_RANGE(0x620000, 0x62ffff) AM_READWRITE16(f3_lineram_r,f3_lineram_w,0xffffffff) //AM_SHARE("f3_line_ram") - AM_RANGE(0x630000, 0x63ffff) AM_READWRITE16(f3_pivot_r,f3_pivot_w,0xffffffff) //AM_SHARE("f3_pivot_ram") - AM_RANGE(0x660000, 0x66000f) AM_WRITE16(f3_control_0_w,0xffffffff) - AM_RANGE(0x660010, 0x66001f) AM_WRITE16(f3_control_1_w,0xffffffff) - AM_RANGE(0xc00000, 0xc007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) - AM_RANGE(0xc80000, 0xc80003) AM_WRITE(f3_sound_reset_0_w) - AM_RANGE(0xc80100, 0xc80103) AM_WRITE(f3_sound_reset_1_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taito_f3_state::bubsympb_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x300000, 0x30007f) AM_WRITE(f3_sound_bankswitch_w) - AM_RANGE(0x400000, 0x41ffff) AM_MIRROR(0x20000) AM_RAM AM_SHARE("f3_ram") - AM_RANGE(0x440000, 0x447fff) AM_RAM_WRITE(f3_palette_24bit_w) AM_SHARE("paletteram") - AM_RANGE(0x4a0000, 0x4a001b) AM_READWRITE(f3_control_r, f3_control_w) - AM_RANGE(0x4a001c, 0x4a001f) AM_READWRITE(bubsympb_oki_r, bubsympb_oki_w) - AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE16(f3_unk_w,0xffffffff) - AM_RANGE(0x600000, 0x60ffff) AM_READWRITE16(f3_spriteram_r,f3_spriteram_w,0xffffffff) //AM_SHARE("spriteram") - AM_RANGE(0x610000, 0x61bfff) AM_READWRITE16(f3_pf_data_r,f3_pf_data_w,0xffffffff) //AM_SHARE("f3_pf_data") - AM_RANGE(0x61c000, 0x61dfff) AM_READWRITE16(f3_videoram_r,f3_videoram_w,0xffffffff) //AM_SHARE("videoram") - AM_RANGE(0x61e000, 0x61ffff) AM_READWRITE16(f3_vram_r,f3_vram_w,0xffffffff) //AM_SHARE("f3_vram") - AM_RANGE(0x620000, 0x62ffff) AM_READWRITE16(f3_lineram_r,f3_lineram_w,0xffffffff) //AM_SHARE("f3_line_ram") - AM_RANGE(0x630000, 0x63ffff) AM_READWRITE16(f3_pivot_r,f3_pivot_w,0xffffffff) //AM_SHARE("f3_pivot_ram") - AM_RANGE(0x660000, 0x66000f) AM_WRITE16(f3_control_0_w,0xffffffff) - AM_RANGE(0x660010, 0x66001f) AM_WRITE16(f3_control_1_w,0xffffffff) - AM_RANGE(0xc00000, 0xc007ff) AM_RAM -ADDRESS_MAP_END +void taito_f3_state::f3_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x300000, 0x30007f).w(this, FUNC(taito_f3_state::f3_sound_bankswitch_w)); + map(0x400000, 0x41ffff).mirror(0x20000).ram().share("f3_ram"); + map(0x440000, 0x447fff).ram().w(this, FUNC(taito_f3_state::f3_palette_24bit_w)).share("paletteram"); + map(0x4a0000, 0x4a001f).rw(this, FUNC(taito_f3_state::f3_control_r), FUNC(taito_f3_state::f3_control_w)); + map(0x4c0000, 0x4c0003).w(this, FUNC(taito_f3_state::f3_unk_w)); + map(0x600000, 0x60ffff).rw(this, FUNC(taito_f3_state::f3_spriteram_r), FUNC(taito_f3_state::f3_spriteram_w)); //AM_SHARE("spriteram") + map(0x610000, 0x61bfff).rw(this, FUNC(taito_f3_state::f3_pf_data_r), FUNC(taito_f3_state::f3_pf_data_w)); //AM_SHARE("f3_pf_data") + map(0x61c000, 0x61dfff).rw(this, FUNC(taito_f3_state::f3_videoram_r), FUNC(taito_f3_state::f3_videoram_w)); //AM_SHARE("videoram") + map(0x61e000, 0x61ffff).rw(this, FUNC(taito_f3_state::f3_vram_r), FUNC(taito_f3_state::f3_vram_w)); //AM_SHARE("f3_vram") + map(0x620000, 0x62ffff).rw(this, FUNC(taito_f3_state::f3_lineram_r), FUNC(taito_f3_state::f3_lineram_w)); //AM_SHARE("f3_line_ram") + map(0x630000, 0x63ffff).rw(this, FUNC(taito_f3_state::f3_pivot_r), FUNC(taito_f3_state::f3_pivot_w)); //AM_SHARE("f3_pivot_ram") + map(0x660000, 0x66000f).w(this, FUNC(taito_f3_state::f3_control_0_w)); + map(0x660010, 0x66001f).w(this, FUNC(taito_f3_state::f3_control_1_w)); + map(0xc00000, 0xc007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0xc80000, 0xc80003).w(this, FUNC(taito_f3_state::f3_sound_reset_0_w)); + map(0xc80100, 0xc80103).w(this, FUNC(taito_f3_state::f3_sound_reset_1_w)); +} + +void taito_f3_state::bubsympb_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x300000, 0x30007f).w(this, FUNC(taito_f3_state::f3_sound_bankswitch_w)); + map(0x400000, 0x41ffff).mirror(0x20000).ram().share("f3_ram"); + map(0x440000, 0x447fff).ram().w(this, FUNC(taito_f3_state::f3_palette_24bit_w)).share("paletteram"); + map(0x4a0000, 0x4a001b).rw(this, FUNC(taito_f3_state::f3_control_r), FUNC(taito_f3_state::f3_control_w)); + map(0x4a001c, 0x4a001f).rw(this, FUNC(taito_f3_state::bubsympb_oki_r), FUNC(taito_f3_state::bubsympb_oki_w)); + map(0x4c0000, 0x4c0003).w(this, FUNC(taito_f3_state::f3_unk_w)); + map(0x600000, 0x60ffff).rw(this, FUNC(taito_f3_state::f3_spriteram_r), FUNC(taito_f3_state::f3_spriteram_w)); //AM_SHARE("spriteram") + map(0x610000, 0x61bfff).rw(this, FUNC(taito_f3_state::f3_pf_data_r), FUNC(taito_f3_state::f3_pf_data_w)); //AM_SHARE("f3_pf_data") + map(0x61c000, 0x61dfff).rw(this, FUNC(taito_f3_state::f3_videoram_r), FUNC(taito_f3_state::f3_videoram_w)); //AM_SHARE("videoram") + map(0x61e000, 0x61ffff).rw(this, FUNC(taito_f3_state::f3_vram_r), FUNC(taito_f3_state::f3_vram_w)); //AM_SHARE("f3_vram") + map(0x620000, 0x62ffff).rw(this, FUNC(taito_f3_state::f3_lineram_r), FUNC(taito_f3_state::f3_lineram_w)); //AM_SHARE("f3_line_ram") + map(0x630000, 0x63ffff).rw(this, FUNC(taito_f3_state::f3_pivot_r), FUNC(taito_f3_state::f3_pivot_w)); //AM_SHARE("f3_pivot_ram") + map(0x660000, 0x66000f).w(this, FUNC(taito_f3_state::f3_control_0_w)); + map(0x660010, 0x66001f).w(this, FUNC(taito_f3_state::f3_control_1_w)); + map(0xc00000, 0xc007ff).ram(); +} diff --git a/src/mame/drivers/taito_h.cpp b/src/mame/drivers/taito_h.cpp index ff8856535d2..a917251b1c6 100644 --- a/src/mame/drivers/taito_h.cpp +++ b/src/mame/drivers/taito_h.cpp @@ -235,62 +235,71 @@ WRITE8_MEMBER(taitoh_state::coin_control_w) ***************************************************************************/ -ADDRESS_MAP_START(taitoh_state::syvalion_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram") - AM_RANGE(0x200000, 0x200001) AM_READ8(syvalion_input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, port_r, port_w, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) - AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoh_state::recordbr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram") - AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) - AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoh_state::tetristh_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram") - AM_RANGE(0x200000, 0x200001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) - AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) - AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoh_state::dleague_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM AM_SHARE("m68000_mainram") - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x300001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x300002, 0x300003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) - AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* ?? writes zero once per frame */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoh_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan control */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void taitoh_state::syvalion_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram"); + map(0x200001, 0x200001).r(this, FUNC(taitoh_state::syvalion_input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff); + map(0x200003, 0x200003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::port_r), FUNC(tc0040ioc_device::port_w)); + map(0x300000, 0x300001).nopr(); + map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); + map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void taitoh_state::recordbr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram"); + map(0x200000, 0x200003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); + map(0x300000, 0x300001).nopr(); + map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); + map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void taitoh_state::tetristh_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram"); + map(0x200000, 0x200001).nopr(); + map(0x200001, 0x200001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x200003, 0x200003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x300000, 0x300003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); + map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); + map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void taitoh_state::dleague_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x100000, 0x10ffff).mirror(0x010000).ram().share("m68000_mainram"); + map(0x200000, 0x20000f).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x300000, 0x300001).nopr(); + map(0x300001, 0x300001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x300003, 0x300003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); + map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x600000, 0x600001).nopw(); /* ?? writes zero once per frame */ +} + + +void taitoh_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan control */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitoh_state::sound_bankswitch_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index e12b2e3cecc..11d1022c85a 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -377,68 +377,75 @@ WRITE8_MEMBER(champwr_state::msm5205_volume_w) } -ADDRESS_MAP_START(taitol_state::common_banks_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0xc000, 0xcfff) AM_DEVICE("rambank1", address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xdfff) AM_DEVICE("rambank2", address_map_bank_device, amap8) - AM_RANGE(0xe000, 0xefff) AM_DEVICE("rambank3", address_map_bank_device, amap8) - AM_RANGE(0xf000, 0xfdff) AM_DEVICE("rambank4", address_map_bank_device, amap8) - AM_RANGE(0xfe00, 0xfe03) AM_READWRITE(taitol_bankc_r, taitol_bankc_w) - AM_RANGE(0xfe04, 0xfe04) AM_READWRITE(taitol_control_r, taitol_control_w) - AM_RANGE(0xff00, 0xff02) AM_READWRITE(irq_adr_r, irq_adr_w) - AM_RANGE(0xff03, 0xff03) AM_READWRITE(irq_enable_r, irq_enable_w) - AM_RANGE(0xff04, 0xff07) AM_READWRITE(rambankswitch_r, rambankswitch_w) - AM_RANGE(0xff08, 0xff08) AM_READWRITE(rombankswitch_r, rombankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitol_state::tc0090lvc_map) - AM_RANGE(0x10000, 0x1ffff) AM_RAM_WRITE(vram_w) AM_SHARE("vram") - AM_RANGE(0x80000, 0x801ff) AM_MIRROR(0x00e00) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(fhawk_state::fhawk_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xa000, 0xbfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fhawk_state::fhawk_2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank") - AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w) - AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w) - AM_RANGE(0xc801, 0xc801) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w) - AM_RANGE(0xd000, 0xd007) AM_DEVREADWRITE("tc0220ioc", tc0220ioc_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fhawk_state::fhawk_3_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitol_2cpu_state::raimais_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x87ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w) - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("tc0040ioc", tc0040ioc_device, read, write) - AM_RANGE(0x8c00, 0x8c00) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, master_port_w) - AM_RANGE(0x8c01, 0x8c01) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w) - AM_RANGE(0xa000, 0xbfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitol_2cpu_state::raimais_2_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) -ADDRESS_MAP_END +void taitol_state::common_banks_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).bankr("mainbank"); + map(0xc000, 0xcfff).m("rambank1", FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xdfff).m("rambank2", FUNC(address_map_bank_device::amap8)); + map(0xe000, 0xefff).m("rambank3", FUNC(address_map_bank_device::amap8)); + map(0xf000, 0xfdff).m("rambank4", FUNC(address_map_bank_device::amap8)); + map(0xfe00, 0xfe03).rw(this, FUNC(taitol_state::taitol_bankc_r), FUNC(taitol_state::taitol_bankc_w)); + map(0xfe04, 0xfe04).rw(this, FUNC(taitol_state::taitol_control_r), FUNC(taitol_state::taitol_control_w)); + map(0xff00, 0xff02).rw(this, FUNC(taitol_state::irq_adr_r), FUNC(taitol_state::irq_adr_w)); + map(0xff03, 0xff03).rw(this, FUNC(taitol_state::irq_enable_r), FUNC(taitol_state::irq_enable_w)); + map(0xff04, 0xff07).rw(this, FUNC(taitol_state::rambankswitch_r), FUNC(taitol_state::rambankswitch_w)); + map(0xff08, 0xff08).rw(this, FUNC(taitol_state::rombankswitch_r), FUNC(taitol_state::rombankswitch_w)); +} + + +void taitol_state::tc0090lvc_map(address_map &map) +{ + map(0x10000, 0x1ffff).ram().w(this, FUNC(taitol_state::vram_w)).share("vram"); + map(0x80000, 0x801ff).mirror(0x00e00).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + + +void fhawk_state::fhawk_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram().share("share1"); + map(0xa000, 0xbfff).ram(); +} + +void fhawk_state::fhawk_2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("slavebank"); + map(0xc000, 0xc000).w(this, FUNC(fhawk_state::rombank2switch_w)); + map(0xc800, 0xc800).nopr().w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xc801, 0xc801).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xd000, 0xd007).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)); + map(0xe000, 0xffff).ram().share("share1"); +} + +void fhawk_state::fhawk_3_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("audiobank"); + map(0x8000, 0x9fff).ram(); + map(0xe000, 0xe000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xe001, 0xe001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} + + +void taitol_2cpu_state::raimais_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x87ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)); + map(0x8800, 0x8801).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)); + map(0x8c00, 0x8c00).nopr().w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x8c01, 0x8c01).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0xa000, 0xbfff).ram(); +} + +void taitol_2cpu_state::raimais_2_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); +} WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w) @@ -446,147 +453,164 @@ WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w) m_audio_bnk->set_entry(data & 0x03); } -ADDRESS_MAP_START(taitol_2cpu_state::raimais_3_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */ - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(champwr_state::champwr_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(champwr_state::champwr_2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe000, 0xe007) AM_DEVREADWRITE("tc0220ioc", tc0220ioc_device, read, write) - AM_RANGE(0xe008, 0xe00f) AM_READNOP - AM_RANGE(0xe800, 0xe800) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w) - AM_RANGE(0xe801, 0xe801) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w) - AM_RANGE(0xf000, 0xf000) AM_READWRITE(rombank2switch_r, rombank2switch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(champwr_state::champwr_3_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(msm5205_hi_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(msm5205_lo_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(msm5205_start_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(msm5205_stop_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(taitol_2cpu_state::kurikint_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w) - AM_RANGE(0xa800, 0xa801) AM_DEVREADWRITE("tc0040ioc", tc0040ioc_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitol_2cpu_state::kurikint_2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) - AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(taitol_1cpu_state::puzznic_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog - AM_RANGE(0xb800, 0xb800) AM_DEVREADWRITE("mcu", arkanoid_68705p3_device, data_r, data_w) - AM_RANGE(0xb801, 0xb801) AM_READWRITE(mcu_control_r, mcu_control_w) - AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // Control register, function unknown -ADDRESS_MAP_END +void taitol_2cpu_state::raimais_3_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("audiobank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xe600, 0xe600).nopw(); /* ? */ + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitol_2cpu_state::sound_bankswitch_w)); +} + + +void champwr_state::champwr_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).ram().share("share1"); +} + +void champwr_state::champwr_2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("slavebank"); + map(0xc000, 0xdfff).ram().share("share1"); + map(0xe000, 0xe007).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)); + map(0xe008, 0xe00f).nopr(); + map(0xe800, 0xe800).nopr().w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xe801, 0xe801).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xf000, 0xf000).rw(this, FUNC(champwr_state::rombank2switch_r), FUNC(champwr_state::rombank2switch_w)); +} + +void champwr_state::champwr_3_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("audiobank"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xb000).w(this, FUNC(champwr_state::msm5205_hi_w)); + map(0xc000, 0xc000).w(this, FUNC(champwr_state::msm5205_lo_w)); + map(0xd000, 0xd000).w(this, FUNC(champwr_state::msm5205_start_w)); + map(0xe000, 0xe000).w(this, FUNC(champwr_state::msm5205_stop_w)); +} + + + +void taitol_2cpu_state::kurikint_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)); + map(0xa800, 0xa801).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)); +} + +void taitol_2cpu_state::kurikint_2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0xe800, 0xe801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} + + + +void taitol_1cpu_state::puzznic_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write)); + map(0xa800, 0xa800).nopr(); // Watchdog + map(0xb800, 0xb800).rw("mcu", FUNC(arkanoid_68705p3_device::data_r), FUNC(arkanoid_68705p3_device::data_w)); + map(0xb801, 0xb801).rw(this, FUNC(taitol_1cpu_state::mcu_control_r), FUNC(taitol_1cpu_state::mcu_control_w)); + map(0xbc00, 0xbc00).nopw(); // Control register, function unknown +} /* bootleg, doesn't have the MCU */ -ADDRESS_MAP_START(taitol_1cpu_state::puzznici_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog - AM_RANGE(0xb801, 0xb801) AM_READ(mcu_control_r) +void taitol_1cpu_state::puzznici_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write)); + map(0xa800, 0xa800).nopr(); // Watchdog + map(0xb801, 0xb801).r(this, FUNC(taitol_1cpu_state::mcu_control_r)); // AM_RANGE(0xb801, 0xb801) AM_WRITE(mcu_control_w) - AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // Control register, function unknown -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitol_1cpu_state::plotting_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write) - AM_RANGE(0xa800, 0xa800) AM_WRITENOP // Watchdog or interrupt ack - AM_RANGE(0xb800, 0xb800) AM_WRITENOP // Control register, function unknown -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitol_1cpu_state::palamed_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_WRITENOP // Control register, function unknown (copy of 8822) - AM_RANGE(0xb001, 0xb001) AM_READNOP // Watchdog or interrupt ack -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitol_1cpu_state::cachat_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xb000, 0xb000) AM_WRITENOP // Control register, function unknown - AM_RANGE(0xb001, 0xb001) AM_READNOP // Watchdog or interrupt ack (value ignored) - AM_RANGE(0xfff8, 0xfff8) AM_READWRITE(rombankswitch_r, rombankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(horshoes_state::horshoes_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write) - ;map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_upd4701->read_xy(space, offset >> 2, mem_mask); }); - AM_RANGE(0xa802, 0xa802) AM_DEVREAD("upd4701", upd4701_device, reset_x) - AM_RANGE(0xa803, 0xa803) AM_DEVREAD("upd4701", upd4701_device, reset_y) - AM_RANGE(0xb801, 0xb801) AM_READNOP // Watchdog or interrupt ack - AM_RANGE(0xb802, 0xb802) AM_WRITE(bankg_w) - AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitol_2cpu_state::evilston_map) - AM_IMPORT_FROM(common_banks_map) - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w) - AM_RANGE(0xa800, 0xa807) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitol_2cpu_state::evilston_2_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) - AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audiobank") -ADDRESS_MAP_END + map(0xbc00, 0xbc00).nopw(); // Control register, function unknown +} + + +void taitol_1cpu_state::plotting_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write)); + map(0xa800, 0xa800).nopw(); // Watchdog or interrupt ack + map(0xb800, 0xb800).nopw(); // Control register, function unknown +} + + +void taitol_1cpu_state::palamed_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa003).rw(m_ymsnd, FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa800, 0xa803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb000, 0xb000).nopw(); // Control register, function unknown (copy of 8822) + map(0xb001, 0xb001).nopr(); // Watchdog or interrupt ack +} + + +void taitol_1cpu_state::cachat_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa003).rw(m_ymsnd, FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa800, 0xa803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb000, 0xb000).nopw(); // Control register, function unknown + map(0xb001, 0xb001).nopr(); // Watchdog or interrupt ack (value ignored) + map(0xfff8, 0xfff8).rw(this, FUNC(taitol_1cpu_state::rombankswitch_r), FUNC(taitol_1cpu_state::rombankswitch_w)); +} + + +void horshoes_state::horshoes_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa003).r(this, FUNC(horshoes_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write)); + map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r", + [this](address_space &space, offs_t offset, u8 mem_mask) { + return m_upd4701->read_xy(space, offset >> 2, mem_mask); + }); + map(0xa802, 0xa802).r(m_upd4701, FUNC(upd4701_device::reset_x)); + map(0xa803, 0xa803).r(m_upd4701, FUNC(upd4701_device::reset_y)); + map(0xb801, 0xb801).nopr(); // Watchdog or interrupt ack + map(0xb802, 0xb802).w(this, FUNC(horshoes_state::bankg_w)); + map(0xbc00, 0xbc00).nopw(); +} + +void taitol_2cpu_state::evilston_map(address_map &map) +{ + common_banks_map(map); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)); + map(0xa800, 0xa807).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); +} + +void taitol_2cpu_state::evilston_2_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0xe800, 0xe801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf000, 0xf7ff).bankr("audiobank"); +} diff --git a/src/mame/drivers/taito_o.cpp b/src/mame/drivers/taito_o.cpp index ec9ee0c7aa2..a58ed8abb80 100644 --- a/src/mame/drivers/taito_o.cpp +++ b/src/mame/drivers/taito_o.cpp @@ -65,14 +65,15 @@ READ16_MEMBER(taitoo_state::io_r) return retval; } -ADDRESS_MAP_START(taitoo_state::parentj_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM - AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */ - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff) - AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) - AM_RANGE(0x500800, 0x500fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END +void taitoo_state::parentj_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x100000, 0x10ffff).mirror(0x010000).ram(); + map(0x200000, 0x20000f).rw(this, FUNC(taitoo_state::io_r), FUNC(taitoo_state::io_w)); /* TC0220IOC ? */ + map(0x300000, 0x300003).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff); + map(0x400000, 0x420fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); + map(0x500800, 0x500fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} static INPUT_PORTS_START( parentj ) PORT_START("IN0") diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp index 87f24f43f4d..45206f523c2 100644 --- a/src/mame/drivers/taito_x.cpp +++ b/src/mame/drivers/taito_x.cpp @@ -417,98 +417,108 @@ WRITE8_MEMBER(taitox_state::sound_bankswitch_w) /**************************************************************************/ -ADDRESS_MAP_START(taitox_state::superman_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x300000, 0x300001) AM_WRITENOP /* written each frame at $3a9c, mostly 0x10 */ - AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* written each frame at $3aa2, mostly 0x10 */ - AM_RANGE(0x500000, 0x500007) AM_READ(superman_dsw_input_r) - AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* written each frame at $3ab0, mostly 0x10 */ - AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x900000, 0x9007ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff) - AM_RANGE(0x900800, 0x900fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff) - AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitox_state::daisenpu_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM -// AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* written each frame at $2ac, values change */ - AM_RANGE(0x500000, 0x50000f) AM_READ(superman_dsw_input_r) -// AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* written each frame at $2a2, values change */ - AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w) - AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitox_state::gigandes_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* 0x1 written each frame at $d42, watchdog? */ - AM_RANGE(0x500000, 0x500007) AM_READ(superman_dsw_input_r) - AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* 0x1 written each frame at $d3c, watchdog? */ - AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w) - AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitox_state::ballbros_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x400001) AM_WRITENOP /* 0x1 written each frame at $c56, watchdog? */ - AM_RANGE(0x500000, 0x50000f) AM_READ(superman_dsw_input_r) - AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* 0x1 written each frame at $c4e, watchdog? */ - AM_RANGE(0x800000, 0x800001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x900000, 0x90000f) AM_READWRITE(daisenpu_input_r, daisenpu_input_w) - AM_RANGE(0xb00000, 0xb00fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xf00000, 0xf03fff) AM_RAM /* Main RAM */ -ADDRESS_MAP_END +void taitox_state::superman_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x300000, 0x300001).nopw(); /* written each frame at $3a9c, mostly 0x10 */ + map(0x400000, 0x400001).nopw(); /* written each frame at $3aa2, mostly 0x10 */ + map(0x500000, 0x500007).r(this, FUNC(taitox_state::superman_dsw_input_r)); + map(0x600000, 0x600001).nopw(); /* written each frame at $3ab0, mostly 0x10 */ + map(0x800000, 0x800001).nopr(); + map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x900000, 0x9007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff); + map(0x900800, 0x900fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff); + map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xf00000, 0xf03fff).ram(); /* Main RAM */ +} + +void taitox_state::daisenpu_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); +// map(0x400000, 0x400001).nopw(); /* written each frame at $2ac, values change */ + map(0x500000, 0x50000f).r(this, FUNC(taitox_state::superman_dsw_input_r)); +// map(0x600000, 0x600001).nopw(); /* written each frame at $2a2, values change */ + map(0x800000, 0x800001).nopr(); + map(0x800001, 0x800001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x800003, 0x800003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x900000, 0x90000f).rw(this, FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w)); + map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xf00000, 0xf03fff).ram(); /* Main RAM */ +} + +void taitox_state::gigandes_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $d42, watchdog? */ + map(0x500000, 0x500007).r(this, FUNC(taitox_state::superman_dsw_input_r)); + map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $d3c, watchdog? */ + map(0x800000, 0x800001).nopr(); + map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x900000, 0x90000f).rw(this, FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w)); + map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xf00000, 0xf03fff).ram(); /* Main RAM */ +} + +void taitox_state::ballbros_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $c56, watchdog? */ + map(0x500000, 0x50000f).r(this, FUNC(taitox_state::superman_dsw_input_r)); + map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $c4e, watchdog? */ + map(0x800000, 0x800001).nopr(); + map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0x900000, 0x90000f).rw(this, FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w)); + map(0xb00000, 0xb00fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xf00000, 0xf03fff).ram(); /* Main RAM */ +} /**************************************************************************/ -ADDRESS_MAP_START(taitox_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitox_state::daisenpu_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void taitox_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitox_state::sound_bankswitch_w)); +} + +void taitox_state::daisenpu_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe200, 0xe200).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xe201, 0xe201).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); + map(0xf200, 0xf200).w(this, FUNC(taitox_state::sound_bankswitch_w)); +} /**************************************************************************/ diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp index 08b0554b042..dbf8e65cb52 100644 --- a/src/mame/drivers/taito_z.cpp +++ b/src/mame/drivers/taito_z.cpp @@ -1458,271 +1458,293 @@ WRITE8_MEMBER(taitoz_state::taitoz_pancontrol) ***********************************************************/ -ADDRESS_MAP_START(taitoz_state::contcirc_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x084000, 0x087fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x090000, 0x090001) AM_WRITE(contcirc_out_w) /* road palette bank, sub CPU reset, 3d glasses control */ - AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */ - AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) /* "root ram" */ - AM_RANGE(0x400000, 0x4006ff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::contcirc_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x084000, 0x087fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x100000, 0x100001) AM_READ8(contcirc_input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff) - AM_RANGE(0x100002, 0x100003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, watchdog_r, port_w, 0x00ff) - AM_RANGE(0x200000, 0x200003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::chasehq_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x10c000, 0x10ffff) AM_RAM - AM_RANGE(0x400000, 0x400001) AM_READ8(chasehq_input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff) - AM_RANGE(0x400002, 0x400003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, watchdog_r, port_w, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_WRITE(chasehq_cpua_ctrl_w) - AM_RANGE(0x820000, 0x820003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */ - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe00000, 0xe003ff) AM_READWRITE(chasehq_motor_r, chasehq_motor_w) /* motor cpu */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::chq_cpub_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::enforce_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // works without? - AM_RANGE(0x300000, 0x3006ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) /* "root ram" ??? */ - AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */ - AM_RANGE(0x600000, 0x60ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x620000, 0x62000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::enforce_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x200000, 0x200003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, read, write, 0x00ff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::bshark_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x800000, 0x800007) AM_READWRITE(bshark_stick_r, bshark_stick_w) - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc00fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::bsharkjjs_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x600000, 0x600001) AM_WRITE(cpua_ctrl_w) -// AM_RANGE(0x800000, 0x800007) AM_READWRITE(bshark_stick_r, bshark_stick_w) /* No analog stick, this is the Joystick version */ - AM_RANGE(0xa00000, 0xa01fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc00fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::bshark_cpub_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x108000, 0x10bfff) AM_RAM - AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x400000, 0x400007) AM_WRITE8(taitoz_pancontrol, 0x00ff) /* pan */ -// AM_RANGE(0x40000a, 0x40000b) AM_READ(taitoz_unknown_r) // ??? - AM_RANGE(0x600000, 0x600007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff) - AM_RANGE(0x60000c, 0x60000d) AM_NOP // interrupt controller? - AM_RANGE(0x60000e, 0x60000f) AM_NOP - AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::sci_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x107fff) AM_RAM - AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x10c000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x200010, 0x20001f) AM_READ(sci_steer_input_r) -// AM_RANGE(0x400000, 0x400001) AM_WRITE(cpua_ctrl_w) // ?? doesn't seem to fit what's written - AM_RANGE(0x420000, 0x420003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xa20000, 0xa2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc08000, 0xc08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::sci_cpub_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM - AM_RANGE(0x208000, 0x20bfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::nightstr_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x110000, 0x113fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x820000, 0x820003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0xa00000, 0xa00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */ - AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xd00000, 0xd007ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe00000, 0xe00011) AM_WRITE(nightstr_motor_w) /* Motor outputs */ - AM_RANGE(0xe40000, 0xe40007) AM_READWRITE(nightstr_stick_r, bshark_stick_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::nightstr_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::aquajack_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x200000, 0x200001) AM_WRITE(cpua_ctrl_w) // not needed, but it's probably like the others - AM_RANGE(0x300000, 0x300007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_word_w) /* palette */ - AM_RANGE(0x800000, 0x801fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) - AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xa20000, 0xa2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xc40000, 0xc403ff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::aquajack_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) - AM_RANGE(0x300000, 0x300003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0x800800, 0x80083f) AM_READ(aquajack_unknown_r) // Read regularly after write to 800800... -// AM_RANGE(0x800800, 0x800801) AM_WRITE(taitoz_unknown_w) -// AM_RANGE(0x900000, 0x900007) AM_READWRITE(taitoz_unknown_r, taitoz_unknown_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::spacegun_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x30c000, 0x30ffff) AM_RAM - AM_RANGE(0x310000, 0x31ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x500000, 0x5005ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xb00000, 0xb00007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_device, word_r, step1_rbswap_word_w) /* palette */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::spacegun_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x20c000, 0x20ffff) AM_RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("ymsnd", ym2610_device, read, write, 0x00ff) - AM_RANGE(0xc0000c, 0xc0000d) AM_NOP // interrupt controller? - AM_RANGE(0xc0000e, 0xc0000f) AM_NOP - AM_RANGE(0xc20000, 0xc20007) AM_WRITE8(taitoz_pancontrol, 0x00ff) /* pan */ - AM_RANGE(0xe00000, 0xe00001) AM_WRITE(spacegun_gun_output_w) /* gun outputs */ - AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(spacegun_lightgun_r, spacegun_lightgun_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::dblaxle_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x200000, 0x203fff) AM_RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w) - AM_RANGE(0x400010, 0x40001f) AM_READ(dblaxle_steer_input_r) - AM_RANGE(0x600000, 0x600001) AM_WRITE(dblaxle_cpua_ctrl_w) /* could this be causing int6 ? */ - AM_RANGE(0x620000, 0x620003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0x800000, 0x801fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemap mirror */ - AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0xa30000, 0xa3002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */ - AM_RANGE(0xc08000, 0xc08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) /* set in int6, seems to stay zero */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::dblaxle_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) - AM_RANGE(0x500000, 0x503fff) AM_RAM /* network ram ? (see Gunbustr) */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(taitoz_state::racingb_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, halfword_wordswap_r, halfword_wordswap_w) - AM_RANGE(0x300010, 0x30001f) AM_READ(dblaxle_steer_input_r) - AM_RANGE(0x500002, 0x500003) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x520000, 0x520003) AM_READWRITE(taitoz_sound_r, taitoz_sound_w) - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x930000, 0x93002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_SHARE("spriteram") /* mostly unused ? */ - AM_RANGE(0xb08000, 0xb08001) AM_READWRITE(sci_spriteframe_r, sci_spriteframe_w) /* alternates 0/0x100 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoz_state::racingb_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x403fff) AM_RAM - AM_RANGE(0x410000, 0x41ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("tc0150rod", tc0150rod_device, word_r, word_w) - AM_RANGE(0xd00000, 0xd03fff) AM_RAM /* network ram ? */ -ADDRESS_MAP_END +void taitoz_state::contcirc_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); + map(0x084000, 0x087fff).ram().share("share1"); + map(0x090000, 0x090001).w(this, FUNC(taitoz_state::contcirc_out_w)); /* road palette bank, sub CPU reset, 3d glasses control */ + map(0x100000, 0x100007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */ + map(0x200000, 0x20ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x220000, 0x22000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x300000, 0x301fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); /* "root ram" */ + map(0x400000, 0x4006ff).ram().share("spriteram"); +} + +void taitoz_state::contcirc_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); + map(0x084000, 0x087fff).ram().share("share1"); + map(0x100001, 0x100001).r(this, FUNC(taitoz_state::contcirc_input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff); + map(0x100003, 0x100003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::watchdog_r), FUNC(tc0040ioc_device::port_w)); + map(0x200000, 0x200003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); +} + + +void taitoz_state::chasehq_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x107fff).ram(); + map(0x108000, 0x10bfff).ram().share("share1"); + map(0x10c000, 0x10ffff).ram(); + map(0x400001, 0x400001).r(this, FUNC(taitoz_state::chasehq_input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff); + map(0x400003, 0x400003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::watchdog_r), FUNC(tc0040ioc_device::port_w)); + map(0x800000, 0x800001).w(this, FUNC(taitoz_state::chasehq_cpua_ctrl_w)); + map(0x820000, 0x820003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0xa00000, 0xa00007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette */ + map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xd00000, 0xd007ff).ram().share("spriteram"); + map(0xe00000, 0xe003ff).rw(this, FUNC(taitoz_state::chasehq_motor_r), FUNC(taitoz_state::chasehq_motor_w)); /* motor cpu */ +} + +void taitoz_state::chq_cpub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x108000, 0x10bfff).ram().share("share1"); + map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); +} + + +void taitoz_state::enforce_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x107fff).ram().share("share1"); + map(0x200000, 0x200001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); // works without? + map(0x300000, 0x3006ff).ram().share("spriteram"); + map(0x400000, 0x401fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); /* "root ram" ??? */ + map(0x500000, 0x500007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */ + map(0x600000, 0x60ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x620000, 0x62000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} + +void taitoz_state::enforce_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x107fff).ram().share("share1"); + map(0x200000, 0x200003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0x300000, 0x300003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write)).umask16(0x00ff); +} + + +void taitoz_state::bshark_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x110000, 0x113fff).ram().share("share1"); + map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x600000, 0x600001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); + map(0x800000, 0x800007).rw(this, FUNC(taitoz_state::bshark_stick_r), FUNC(taitoz_state::bshark_stick_w)); + map(0xa00000, 0xa01fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc00fff).ram().share("spriteram"); + map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} + +void taitoz_state::bsharkjjs_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x110000, 0x113fff).ram().share("share1"); + map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x600000, 0x600001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); +// map(0x800000, 0x800007).rw(this, FUNC(taitoz_state::bshark_stick_r), FUNC(taitoz_state::bshark_stick_w)); /* No analog stick, this is the Joystick version */ + map(0xa00000, 0xa01fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc00fff).ram().share("spriteram"); + map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); +} + +void taitoz_state::bshark_cpub_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x108000, 0x10bfff).ram(); + map(0x110000, 0x113fff).ram().share("share1"); + map(0x400000, 0x400007).w(this, FUNC(taitoz_state::taitoz_pancontrol)).umask16(0x00ff); /* pan */ +// map(0x40000a, 0x40000b).r(this, FUNC(taitoz_state::taitoz_unknown_r)); // ??? + map(0x600000, 0x600007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff); + map(0x60000c, 0x60000d).noprw(); // interrupt controller? + map(0x60000e, 0x60000f).noprw(); + map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); +} + + +void taitoz_state::sci_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x107fff).ram(); + map(0x108000, 0x10bfff).ram().share("share1"); + map(0x10c000, 0x10ffff).ram(); + map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x200010, 0x20001f).r(this, FUNC(taitoz_state::sci_steer_input_r)); +// map(0x400000, 0x400001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); // ?? doesn't seem to fit what's written + map(0x420000, 0x420003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0x800000, 0x801fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xa00000, 0xa0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xa20000, 0xa2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xc00000, 0xc03fff).ram().share("spriteram"); + map(0xc08000, 0xc08001).rw(this, FUNC(taitoz_state::sci_spriteframe_r), FUNC(taitoz_state::sci_spriteframe_w)); +} + +void taitoz_state::sci_cpub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x200000, 0x203fff).ram(); + map(0x208000, 0x20bfff).ram().share("share1"); + map(0xa00000, 0xa01fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); +} + + +void taitoz_state::nightstr_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x110000, 0x113fff).ram().share("share1"); + map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x800000, 0x800001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); + map(0x820000, 0x820003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0xa00000, 0xa00007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette */ + map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xd00000, 0xd007ff).ram().share("spriteram"); + map(0xe00000, 0xe00011).w(this, FUNC(taitoz_state::nightstr_motor_w)); /* Motor outputs */ + map(0xe40000, 0xe40007).rw(this, FUNC(taitoz_state::nightstr_stick_r), FUNC(taitoz_state::bshark_stick_w)); +} + +void taitoz_state::nightstr_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x107fff).ram().share("share1"); + map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); +} + + +void taitoz_state::aquajack_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x107fff).ram().share("share1"); + map(0x200000, 0x200001).w(this, FUNC(taitoz_state::cpua_ctrl_w)); // not needed, but it's probably like the others + map(0x300000, 0x300007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette */ + map(0x800000, 0x801fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); + map(0xa00000, 0xa0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0xa20000, 0xa2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xc40000, 0xc403ff).ram().share("spriteram"); +} + +void taitoz_state::aquajack_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x107fff).ram().share("share1"); + map(0x200000, 0x20000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); + map(0x300000, 0x300003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0x800800, 0x80083f).r(this, FUNC(taitoz_state::aquajack_unknown_r)); // Read regularly after write to 800800... +// map(0x800800, 0x800801).w(this, FUNC(taitoz_state::taitoz_unknown_w)); +// map(0x900000, 0x900007).rw(this, FUNC(taitoz_state::taitoz_unknown_r), FUNC(taitoz_state::taitoz_unknown_w)); +} + + +void taitoz_state::spacegun_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x30c000, 0x30ffff).ram(); + map(0x310000, 0x31ffff).ram().share("share1"); + map(0x500000, 0x5005ff).ram().share("spriteram"); + map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0xb00000, 0xb00007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_rbswap_word_w)); /* palette */ +} + +void taitoz_state::spacegun_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x20c000, 0x20ffff).ram(); + map(0x210000, 0x21ffff).ram().share("share1"); + map(0x800000, 0x80000f).rw(m_tc0510nio, FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0x00ff).cswidth(16); + map(0xc00000, 0xc00007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff); + map(0xc0000c, 0xc0000d).noprw(); // interrupt controller? + map(0xc0000e, 0xc0000f).noprw(); + map(0xc20000, 0xc20007).w(this, FUNC(taitoz_state::taitoz_pancontrol)).umask16(0x00ff); /* pan */ + map(0xe00000, 0xe00001).w(this, FUNC(taitoz_state::spacegun_gun_output_w)); /* gun outputs */ + map(0xf00000, 0xf00007).rw(this, FUNC(taitoz_state::spacegun_lightgun_r), FUNC(taitoz_state::spacegun_lightgun_w)); +} + + +void taitoz_state::dblaxle_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x200000, 0x203fff).ram(); + map(0x210000, 0x21ffff).ram().share("share1"); + map(0x400000, 0x40000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w)); + map(0x400010, 0x40001f).r(this, FUNC(taitoz_state::dblaxle_steer_input_r)); + map(0x600000, 0x600001).w(this, FUNC(taitoz_state::dblaxle_cpua_ctrl_w)); /* could this be causing int6 ? */ + map(0x620000, 0x620003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0x800000, 0x801fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x900000, 0x90ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemap mirror */ + map(0xa00000, 0xa0ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ + map(0xa30000, 0xa3002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0xc00000, 0xc03fff).ram().share("spriteram"); /* mostly unused ? */ + map(0xc08000, 0xc08001).rw(this, FUNC(taitoz_state::sci_spriteframe_r), FUNC(taitoz_state::sci_spriteframe_w)); /* set in int6, seems to stay zero */ +} + +void taitoz_state::dblaxle_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x110000, 0x11ffff).ram().share("share1"); + map(0x300000, 0x301fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); + map(0x500000, 0x503fff).ram(); /* network ram ? (see Gunbustr) */ +} + + +void taitoz_state::racingb_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x110000, 0x11ffff).ram().share("share1"); + map(0x300000, 0x30000f).rw(m_tc0510nio, FUNC(tc0510nio_device::halfword_wordswap_r), FUNC(tc0510nio_device::halfword_wordswap_w)); + map(0x300010, 0x30001f).r(this, FUNC(taitoz_state::dblaxle_steer_input_r)); + map(0x500002, 0x500003).w(this, FUNC(taitoz_state::cpua_ctrl_w)); + map(0x520000, 0x520003).rw(this, FUNC(taitoz_state::taitoz_sound_r), FUNC(taitoz_state::taitoz_sound_w)); + map(0x700000, 0x701fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x900000, 0x90ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::word_r), FUNC(tc0480scp_device::word_w)); /* tilemaps */ + map(0x930000, 0x93002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_word_r), FUNC(tc0480scp_device::ctrl_word_w)); + map(0xb00000, 0xb03fff).ram().share("spriteram"); /* mostly unused ? */ + map(0xb08000, 0xb08001).rw(this, FUNC(taitoz_state::sci_spriteframe_r), FUNC(taitoz_state::sci_spriteframe_w)); /* alternates 0/0x100 */ +} + +void taitoz_state::racingb_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x403fff).ram(); + map(0x410000, 0x41ffff).ram().share("share1"); + map(0xa00000, 0xa01fff).rw(m_tc0150rod, FUNC(tc0150rod_device::word_r), FUNC(tc0150rod_device::word_w)); + map(0xd00000, 0xd03fff).ram(); /* network ram ? */ +} /***************************************************************************/ -ADDRESS_MAP_START(taitoz_state::z80_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITE(taitoz_pancontrol) /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void taitoz_state::z80_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).w(this, FUNC(taitoz_state::taitoz_pancontrol)); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitoz_state::sound_bankswitch_w)); +} /*********************************************************** diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp index d8f9693edbb..81c2614f0ab 100644 --- a/src/mame/drivers/taitoair.cpp +++ b/src/mame/drivers/taitoair.cpp @@ -379,40 +379,43 @@ WRITE8_MEMBER(taitoair_state::coin_control_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(taitoair_state::airsys_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM AM_SHARE("m68000_mainram") - AM_RANGE(0x140000, 0x140001) AM_WRITE(system_control_w) /* Pause the TMS32025 */ - AM_RANGE(0x180000, 0x187fff) AM_RAM_WRITE(airsys_gradram_w) AM_SHARE("gradram") /* "gradiation ram (0/1)" */ - AM_RANGE(0x188000, 0x189fff) AM_MIRROR(0x2000) AM_RAM_WRITE(airsys_paletteram16_w) AM_SHARE("paletteram") - AM_RANGE(0x800000, 0x820fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_device, word_r, word_w) /* tilemaps, sprites */ - AM_RANGE(0x906000, 0x906007) AM_WRITE(dma_regs_w) // DMA? - AM_RANGE(0x908000, 0x90ffff) AM_RAM AM_SHARE("line_ram") /* "line ram" */ - AM_RANGE(0x910000, 0x91ffff) AM_RAM AM_SHARE("dsp_ram") /* "dsp common ram" (TMS320C25) */ - AM_RANGE(0x980000, 0x98000f) AM_RAM AM_SHARE("tc0430grw") /* TC0430GRW roz transform coefficients */ - AM_RANGE(0xa00000, 0xa00007) AM_READ(stick_input_r) - AM_RANGE(0xa00100, 0xa00107) AM_READ(stick2_input_r) - AM_RANGE(0xa00200, 0xa0020f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) /* other I/O */ - AM_RANGE(0xa80000, 0xa80001) AM_READNOP AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0xa80002, 0xa80003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xb00000, 0xb007ff) AM_RAM /* "power common ram" (mecha drive) */ -ADDRESS_MAP_END +void taitoair_state::airsys_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x0c0000, 0x0cffff).ram().share("m68000_mainram"); + map(0x140000, 0x140001).w(this, FUNC(taitoair_state::system_control_w)); /* Pause the TMS32025 */ + map(0x180000, 0x187fff).ram().w(this, FUNC(taitoair_state::airsys_gradram_w)).share("gradram"); /* "gradiation ram (0/1)" */ + map(0x188000, 0x189fff).mirror(0x2000).ram().w(this, FUNC(taitoair_state::airsys_paletteram16_w)).share("paletteram"); + map(0x800000, 0x820fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); /* tilemaps, sprites */ + map(0x906000, 0x906007).w(this, FUNC(taitoair_state::dma_regs_w)); // DMA? + map(0x908000, 0x90ffff).ram().share("line_ram"); /* "line ram" */ + map(0x910000, 0x91ffff).ram().share("dsp_ram"); /* "dsp common ram" (TMS320C25) */ + map(0x980000, 0x98000f).ram().share("tc0430grw"); /* TC0430GRW roz transform coefficients */ + map(0xa00000, 0xa00007).r(this, FUNC(taitoair_state::stick_input_r)); + map(0xa00100, 0xa00107).r(this, FUNC(taitoair_state::stick2_input_r)); + map(0xa00200, 0xa0020f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); /* other I/O */ + map(0xa80000, 0xa80001).nopr(); + map(0xa80001, 0xa80001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0xa80003, 0xa80003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); + map(0xb00000, 0xb007ff).ram(); /* "power common ram" (mecha drive) */ +} /************************** Z80 ****************************/ -ADDRESS_MAP_START(taitoair_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan control */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void taitoair_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan control */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(taitoair_state::sound_bankswitch_w)); +} /********************************** TMS32025 ********************************/ @@ -512,33 +515,35 @@ READ16_MEMBER(taitoair_state::dsp_muldiv_2_r) } -ADDRESS_MAP_START(taitoair_state::DSP_map_program) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitoair_state::DSP_map_data) - AM_RANGE(0x2003, 0x2003) AM_READNOP //bit 0 DMA status flag or vblank - AM_RANGE(0x3000, 0x3002) AM_WRITE(dsp_flags_w) - AM_RANGE(0x3404, 0x3404) AM_WRITE(dsp_muldiv_a_1_w) - AM_RANGE(0x3405, 0x3405) AM_WRITE(dsp_muldiv_b_1_w) - AM_RANGE(0x3406, 0x3406) AM_WRITE(dsp_muldiv_c_1_w) - AM_RANGE(0x3407, 0x3407) AM_READ(dsp_muldiv_1_r) - - AM_RANGE(0x3408, 0x3408) AM_WRITE(dsp_muldiv_a_2_w) - AM_RANGE(0x3409, 0x3409) AM_WRITE(dsp_muldiv_b_2_w) - AM_RANGE(0x340a, 0x340a) AM_WRITE(dsp_muldiv_c_2_w) - AM_RANGE(0x340b, 0x340b) AM_READ(dsp_muldiv_2_r) - - AM_RANGE(0x3418, 0x3418) AM_WRITE(dsp_test_x_w) - AM_RANGE(0x3419, 0x3419) AM_WRITE(dsp_test_y_w) - AM_RANGE(0x341a, 0x341a) AM_WRITE(dsp_test_z_w) - AM_RANGE(0x341b, 0x341b) AM_READWRITE(dsp_test_point_r, dsp_test_start_w) - AM_RANGE(0x341c, 0x341c) AM_READ(dsp_test_and_clip_r) - AM_RANGE(0x341d, 0x341d) AM_READ(dsp_test_or_clip_r) +void taitoair_state::DSP_map_program(address_map &map) +{ + map(0x0000, 0x1fff).rom(); +} - AM_RANGE(0x4000, 0x7fff) AM_READWRITE(lineram_r, lineram_w) - AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram_r, dspram_w) -ADDRESS_MAP_END +void taitoair_state::DSP_map_data(address_map &map) +{ + map(0x2003, 0x2003).nopr(); //bit 0 DMA status flag or vblank + map(0x3000, 0x3002).w(this, FUNC(taitoair_state::dsp_flags_w)); + map(0x3404, 0x3404).w(this, FUNC(taitoair_state::dsp_muldiv_a_1_w)); + map(0x3405, 0x3405).w(this, FUNC(taitoair_state::dsp_muldiv_b_1_w)); + map(0x3406, 0x3406).w(this, FUNC(taitoair_state::dsp_muldiv_c_1_w)); + map(0x3407, 0x3407).r(this, FUNC(taitoair_state::dsp_muldiv_1_r)); + + map(0x3408, 0x3408).w(this, FUNC(taitoair_state::dsp_muldiv_a_2_w)); + map(0x3409, 0x3409).w(this, FUNC(taitoair_state::dsp_muldiv_b_2_w)); + map(0x340a, 0x340a).w(this, FUNC(taitoair_state::dsp_muldiv_c_2_w)); + map(0x340b, 0x340b).r(this, FUNC(taitoair_state::dsp_muldiv_2_r)); + + map(0x3418, 0x3418).w(this, FUNC(taitoair_state::dsp_test_x_w)); + map(0x3419, 0x3419).w(this, FUNC(taitoair_state::dsp_test_y_w)); + map(0x341a, 0x341a).w(this, FUNC(taitoair_state::dsp_test_z_w)); + map(0x341b, 0x341b).rw(this, FUNC(taitoair_state::dsp_test_point_r), FUNC(taitoair_state::dsp_test_start_w)); + map(0x341c, 0x341c).r(this, FUNC(taitoair_state::dsp_test_and_clip_r)); + map(0x341d, 0x341d).r(this, FUNC(taitoair_state::dsp_test_or_clip_r)); + + map(0x4000, 0x7fff).rw(this, FUNC(taitoair_state::lineram_r), FUNC(taitoair_state::lineram_w)); + map(0x8000, 0xffff).rw(this, FUNC(taitoair_state::dspram_r), FUNC(taitoair_state::dspram_w)); +} /************************************************************ diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp index a8124297ae5..606fa93ccbd 100644 --- a/src/mame/drivers/taitogn.cpp +++ b/src/mame/drivers/taitogn.cpp @@ -635,53 +635,56 @@ DRIVER_INIT_MEMBER(taitogn_state,coh3002t_nz) m_has_zoom = false; } -ADDRESS_MAP_START(taitogn_state::taitogn_map) - AM_RANGE(0x1f000000, 0x1f7fffff) AM_DEVICE16("flashbank", address_map_bank_device, amap16, 0xffffffff) - AM_RANGE(0x1fa00000, 0x1fa00003) AM_READ_PORT("P1") - AM_RANGE(0x1fa00100, 0x1fa00103) AM_READ_PORT("P2") - AM_RANGE(0x1fa00200, 0x1fa00203) AM_READ_PORT("SERVICE") - AM_RANGE(0x1fa00300, 0x1fa00303) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1fa10000, 0x1fa10003) AM_READ_PORT("P3") - AM_RANGE(0x1fa10100, 0x1fa10103) AM_READ_PORT("P4") - AM_RANGE(0x1fa10200, 0x1fa10203) AM_READ8(boardconfig_r, 0x000000ff) - AM_RANGE(0x1fa10300, 0x1fa10303) AM_READWRITE8(znsecsel_r, znsecsel_w, 0x000000ff) - AM_RANGE(0x1fa20000, 0x1fa20003) AM_READWRITE8(coin_r, coin_w, 0x000000ff) - AM_RANGE(0x1fa30000, 0x1fa30003) AM_READWRITE8(control3_r, control3_w, 0x000000ff) - AM_RANGE(0x1fa51c00, 0x1fa51dff) AM_READNOP // systematic read at spu_address + 250000, result dropped, maybe other accesses - AM_RANGE(0x1fa60000, 0x1fa60003) AM_READ16(hack1_r, 0xffffffff) - AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */ - AM_RANGE(0x1fb00000, 0x1fb0ffff) AM_DEVREADWRITE16("rf5c296", rf5c296_device, io_r, io_w, 0xffffffff) - AM_RANGE(0x1fb40000, 0x1fb40003) AM_READWRITE8(control_r, control_w, 0x000000ff) - AM_RANGE(0x1fb60000, 0x1fb60003) AM_WRITE16(control2_w, 0x0000ffff) - AM_RANGE(0x1fb70000, 0x1fb70003) AM_READWRITE16(gn_1fb70000_r, gn_1fb70000_w, 0x0000ffff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_data_w, 0x0000ffff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_address_w, 0xffff0000) - AM_RANGE(0x1fba0000, 0x1fba0003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, sound_irq_w, 0x0000ffff) - AM_RANGE(0x1fbc0000, 0x1fbc0003) AM_DEVREAD16("taito_zoom", taito_zoom_device, sound_irq_r, 0x0000ffff) - AM_RANGE(0x1fbe0000, 0x1fbe01ff) AM_DEVREADWRITE8("taito_zoom", taito_zoom_device, shared_ram_r, shared_ram_w, 0x00ff00ff) // M66220FP for comms with the MN10200 -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitogn_state::flashbank_map) +void taitogn_state::taitogn_map(address_map &map) +{ + map(0x1f000000, 0x1f7fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16)); + map(0x1fa00000, 0x1fa00003).portr("P1"); + map(0x1fa00100, 0x1fa00103).portr("P2"); + map(0x1fa00200, 0x1fa00203).portr("SERVICE"); + map(0x1fa00300, 0x1fa00303).portr("SYSTEM"); + map(0x1fa10000, 0x1fa10003).portr("P3"); + map(0x1fa10100, 0x1fa10103).portr("P4"); + map(0x1fa10200, 0x1fa10200).r(this, FUNC(taitogn_state::boardconfig_r)); + map(0x1fa10300, 0x1fa10300).rw(this, FUNC(taitogn_state::znsecsel_r), FUNC(taitogn_state::znsecsel_w)); + map(0x1fa20000, 0x1fa20000).rw(this, FUNC(taitogn_state::coin_r), FUNC(taitogn_state::coin_w)); + map(0x1fa30000, 0x1fa30000).rw(this, FUNC(taitogn_state::control3_r), FUNC(taitogn_state::control3_w)); + map(0x1fa51c00, 0x1fa51dff).nopr(); // systematic read at spu_address + 250000, result dropped, maybe other accesses + map(0x1fa60000, 0x1fa60003).r(this, FUNC(taitogn_state::hack1_r)); + map(0x1faf0000, 0x1faf07ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)); /* eeprom */ + map(0x1fb00000, 0x1fb0ffff).rw("rf5c296", FUNC(rf5c296_device::io_r), FUNC(rf5c296_device::io_w)); + map(0x1fb40000, 0x1fb40000).rw(this, FUNC(taitogn_state::control_r), FUNC(taitogn_state::control_w)); + map(0x1fb60000, 0x1fb60001).w(this, FUNC(taitogn_state::control2_w)); + map(0x1fb70000, 0x1fb70001).rw(this, FUNC(taitogn_state::gn_1fb70000_r), FUNC(taitogn_state::gn_1fb70000_w)); + map(0x1fb80000, 0x1fb80001).w(m_zoom, FUNC(taito_zoom_device::reg_data_w)); + map(0x1fb80002, 0x1fb80003).w(m_zoom, FUNC(taito_zoom_device::reg_address_w)); + map(0x1fba0000, 0x1fba0001).w(m_zoom, FUNC(taito_zoom_device::sound_irq_w)); + map(0x1fbc0000, 0x1fbc0001).r(m_zoom, FUNC(taito_zoom_device::sound_irq_r)); + map(0x1fbe0000, 0x1fbe01ff).rw(m_zoom, FUNC(taito_zoom_device::shared_ram_r), FUNC(taito_zoom_device::shared_ram_w)).umask32(0x00ff00ff); // M66220FP for comms with the MN10200 +} + +void taitogn_state::flashbank_map(address_map &map) +{ // Bank 0 has access to the sub-bios, the mn102 flash and the rf5c296 mem zone - AM_RANGE(0x00000000, 0x001fffff) AM_DEVREADWRITE("biosflash", intelfsh16_device, read, write) - AM_RANGE(0x00200000, 0x002fffff) AM_DEVREADWRITE("rf5c296", rf5c296_device, mem_r, mem_w ) - AM_RANGE(0x00300000, 0x0037ffff) AM_DEVREADWRITE("pgmflash", intelfsh16_device, read, write) + map(0x00000000, 0x001fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0x00200000, 0x002fffff).rw("rf5c296", FUNC(rf5c296_device::mem_r), FUNC(rf5c296_device::mem_w)); + map(0x00300000, 0x0037ffff).rw(m_pgmflash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); // Bank 1 & 3 has access to the 3 samples flashes - AM_RANGE(0x08000000, 0x081fffff) AM_MIRROR(0x10000000) AM_DEVREADWRITE("sndflash0", intelfsh16_device, read, write) - AM_RANGE(0x08200000, 0x083fffff) AM_MIRROR(0x10000000) AM_DEVREADWRITE("sndflash1", intelfsh16_device, read, write) - AM_RANGE(0x08400000, 0x085fffff) AM_MIRROR(0x10000000) AM_DEVREADWRITE("sndflash2", intelfsh16_device, read, write) + map(0x08000000, 0x081fffff).mirror(0x10000000).rw(m_sndflash0, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0x08200000, 0x083fffff).mirror(0x10000000).rw(m_sndflash1, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0x08400000, 0x085fffff).mirror(0x10000000).rw(m_sndflash2, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); // Bank 2 has access to the sub-bios, the mn102 flash and the mask eprom - AM_RANGE(0x10000000, 0x100fffff) AM_ROM AM_REGION("bioseprom", 0) - AM_RANGE(0x10100000, 0x1017ffff) AM_MIRROR(0x80000) AM_DEVREADWRITE("pgmflash", intelfsh16_device, read, write) - AM_RANGE(0x10200000, 0x103fffff) AM_DEVREADWRITE("biosflash", intelfsh16_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitogn_state::taitogn_mp_map) - AM_IMPORT_FROM(taitogn_map) - AM_RANGE(0x1fa10100, 0x1fa10103) AM_READ8(gnet_mahjong_panel_r, 0x000000ff) -ADDRESS_MAP_END + map(0x10000000, 0x100fffff).rom().region("bioseprom", 0); + map(0x10100000, 0x1017ffff).mirror(0x80000).rw(m_pgmflash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); + map(0x10200000, 0x103fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); +} + +void taitogn_state::taitogn_mp_map(address_map &map) +{ + taitogn_map(map); + map(0x1fa10100, 0x1fa10100).r(this, FUNC(taitogn_state::gnet_mahjong_panel_r)); +} SLOT_INTERFACE_START(slot_ataflash) SLOT_INTERFACE("taitopccard1", TAITO_PCCARD1) diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index c6659cd4e3c..d25b3c3fb56 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -618,26 +618,27 @@ WRITE8_MEMBER(taitojc_state::jc_lan_w) } -ADDRESS_MAP_START(taitojc_state::taitojc_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_MIRROR(0x200000) - AM_RANGE(0x00400000, 0x01bfffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0x04000000, 0x040f7fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x040f8000, 0x040fbfff) AM_READWRITE(taitojc_tile_r, taitojc_tile_w) - AM_RANGE(0x040fc000, 0x040fefff) AM_READWRITE(taitojc_char_r, taitojc_char_w) - AM_RANGE(0x040ff000, 0x040fffff) AM_RAM AM_SHARE("objlist") - AM_RANGE(0x05800000, 0x0580003f) AM_READ8(jc_pcbid_r, 0xffffffff) - AM_RANGE(0x05900000, 0x05900007) AM_READWRITE8(mcu_comm_r, mcu_comm_w, 0xffffffff) - AM_RANGE(0x06400000, 0x0641ffff) AM_READWRITE(taitojc_palette_r, taitojc_palette_w) AM_SHARE("palette_ram") - AM_RANGE(0x06600000, 0x0660001f) AM_DEVREADWRITE8("tc0640fio", tc0640fio_device, read, write, 0xff000000) - AM_RANGE(0x0660004c, 0x0660004f) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x06800000, 0x06800003) AM_WRITE8(jc_irq_unk_w, 0x00ff0000) - AM_RANGE(0x06a00000, 0x06a01fff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xff000000) - AM_RANGE(0x06c00000, 0x06c0001f) AM_READWRITE8(jc_lan_r, jc_lan_w, 0x00ff0000) - AM_RANGE(0x08000000, 0x080fffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE16(dsp_shared_r, dsp_shared_w, 0xffff0000) - AM_RANGE(0x10001ff8, 0x10001ffb) AM_READ16(dsp_to_main_7fe_r, 0xffff0000) - AM_RANGE(0x10001ffc, 0x10001fff) AM_WRITE16(main_to_dsp_7ff_w, 0xffff0000) -ADDRESS_MAP_END +void taitojc_state::taitojc_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom().mirror(0x200000); + map(0x00400000, 0x01bfffff).rom().region("gfx1", 0); + map(0x04000000, 0x040f7fff).ram().share("vram"); + map(0x040f8000, 0x040fbfff).rw(this, FUNC(taitojc_state::taitojc_tile_r), FUNC(taitojc_state::taitojc_tile_w)); + map(0x040fc000, 0x040fefff).rw(this, FUNC(taitojc_state::taitojc_char_r), FUNC(taitojc_state::taitojc_char_w)); + map(0x040ff000, 0x040fffff).ram().share("objlist"); + map(0x05800000, 0x0580003f).r(this, FUNC(taitojc_state::jc_pcbid_r)); + map(0x05900000, 0x05900007).rw(this, FUNC(taitojc_state::mcu_comm_r), FUNC(taitojc_state::mcu_comm_w)); + map(0x06400000, 0x0641ffff).rw(this, FUNC(taitojc_state::taitojc_palette_r), FUNC(taitojc_state::taitojc_palette_w)).share("palette_ram"); + map(0x06600000, 0x0660001f).rw(m_tc0640fio, FUNC(tc0640fio_device::read), FUNC(tc0640fio_device::write)).umask32(0xff000000); + map(0x0660004c, 0x0660004f).portw("EEPROMOUT"); + map(0x06800001, 0x06800001).w(this, FUNC(taitojc_state::jc_irq_unk_w)); + map(0x06a00000, 0x06a01fff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)).umask32(0xff000000); + map(0x06c00000, 0x06c0001f).rw(this, FUNC(taitojc_state::jc_lan_r), FUNC(taitojc_state::jc_lan_w)).umask32(0x00ff0000); + map(0x08000000, 0x080fffff).ram().share("main_ram"); + map(0x10000000, 0x10001fff).rw(this, FUNC(taitojc_state::dsp_shared_r), FUNC(taitojc_state::dsp_shared_w)).umask32(0xffff0000); + map(0x10001ff8, 0x10001ff9).r(this, FUNC(taitojc_state::dsp_to_main_7fe_r)); + map(0x10001ffc, 0x10001ffd).w(this, FUNC(taitojc_state::main_to_dsp_7ff_w)); +} /* @@ -668,12 +669,13 @@ WRITE8_MEMBER(taitojc_state::dendego_brakemeter_w) } } -ADDRESS_MAP_START(taitojc_state::dendego_map) - AM_IMPORT_FROM( taitojc_map ) - AM_RANGE(0x06e00000, 0x06e00003) AM_WRITE8(dendego_speedmeter_w, 0x00ff0000) - AM_RANGE(0x06e00004, 0x06e00007) AM_WRITE8(dendego_brakemeter_w, 0x00ff0000) - AM_RANGE(0x06e0000c, 0x06e0000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000) -ADDRESS_MAP_END +void taitojc_state::dendego_map(address_map &map) +{ + taitojc_map(map); + map(0x06e00001, 0x06e00001).w(this, FUNC(taitojc_state::dendego_speedmeter_w)); + map(0x06e00005, 0x06e00005).w(this, FUNC(taitojc_state::dendego_brakemeter_w)); + map(0x06e0000d, 0x06e0000d).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} @@ -743,18 +745,20 @@ READ8_MEMBER(taitojc_state::hc11_analog_r) } -ADDRESS_MAP_START(taitojc_state::hc11_pgm_map) - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void taitojc_state::hc11_pgm_map(address_map &map) +{ + map(0x4000, 0x5fff).ram(); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(taitojc_state::hc11_io_map) - AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA ) AM_READNOP // ? - AM_RANGE(MC68HC11_IO_PORTG, MC68HC11_IO_PORTG ) AM_READWRITE(hc11_comm_r, hc11_comm_w) - AM_RANGE(MC68HC11_IO_PORTH, MC68HC11_IO_PORTH ) AM_READWRITE(hc11_output_r, hc11_output_w) - AM_RANGE(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA) AM_READWRITE(hc11_data_r, hc11_data_w) - AM_RANGE(MC68HC11_IO_AD0, MC68HC11_IO_AD7 ) AM_READ(hc11_analog_r) -ADDRESS_MAP_END +void taitojc_state::hc11_io_map(address_map &map) +{ + map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).nopr(); // ? + map(MC68HC11_IO_PORTG, MC68HC11_IO_PORTG).rw(this, FUNC(taitojc_state::hc11_comm_r), FUNC(taitojc_state::hc11_comm_w)); + map(MC68HC11_IO_PORTH, MC68HC11_IO_PORTH).rw(this, FUNC(taitojc_state::hc11_output_r), FUNC(taitojc_state::hc11_output_w)); + map(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA).rw(this, FUNC(taitojc_state::hc11_data_r), FUNC(taitojc_state::hc11_data_w)); + map(MC68HC11_IO_AD0, MC68HC11_IO_AD7).r(this, FUNC(taitojc_state::hc11_analog_r)); +} @@ -845,29 +849,31 @@ WRITE16_MEMBER(taitojc_state::dsp_rom_w) } } -ADDRESS_MAP_START(taitojc_state::tms_program_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_MIRROR(0x4000) - AM_RANGE(0x6000, 0x7fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitojc_state::tms_data_map) - AM_RANGE(0x6a01, 0x6a02) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, render_w) - AM_RANGE(0x6a11, 0x6a12) AM_NOP // same as 0x6a01..02 for the second renderer chip? - AM_RANGE(0x6b20, 0x6b20) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w) - AM_RANGE(0x6b22, 0x6b22) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w) - AM_RANGE(0x6b23, 0x6b23) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w) - AM_RANGE(0x6c00, 0x6c01) AM_READWRITE(dsp_rom_r, dsp_rom_w) - AM_RANGE(0x7000, 0x7002) AM_WRITE(dsp_math_projection_w) - AM_RANGE(0x7010, 0x7012) AM_WRITE(dsp_math_intersection_w) - AM_RANGE(0x7013, 0x7015) AM_WRITE(dsp_math_viewport_w) - AM_RANGE(0x701b, 0x701b) AM_READ(dsp_math_intersection_r) - AM_RANGE(0x701d, 0x701d) AM_READ(dsp_math_projection_y_r) - AM_RANGE(0x701f, 0x701f) AM_READ(dsp_math_projection_x_r) - AM_RANGE(0x7022, 0x7022) AM_READ(dsp_math_unk_r) - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("dsp_shared") - AM_RANGE(0x7ffe, 0x7ffe) AM_WRITE(dsp_to_main_7fe_w) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void taitojc_state::tms_program_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().mirror(0x4000); + map(0x6000, 0x7fff).ram(); +} + +void taitojc_state::tms_data_map(address_map &map) +{ + map(0x6a01, 0x6a02).w(m_tc0780fpa, FUNC(tc0780fpa_device::render_w)); + map(0x6a11, 0x6a12).noprw(); // same as 0x6a01..02 for the second renderer chip? + map(0x6b20, 0x6b20).w(m_tc0780fpa, FUNC(tc0780fpa_device::poly_fifo_w)); + map(0x6b22, 0x6b22).w(m_tc0780fpa, FUNC(tc0780fpa_device::tex_w)); + map(0x6b23, 0x6b23).rw(m_tc0780fpa, FUNC(tc0780fpa_device::tex_addr_r), FUNC(tc0780fpa_device::tex_addr_w)); + map(0x6c00, 0x6c01).rw(this, FUNC(taitojc_state::dsp_rom_r), FUNC(taitojc_state::dsp_rom_w)); + map(0x7000, 0x7002).w(this, FUNC(taitojc_state::dsp_math_projection_w)); + map(0x7010, 0x7012).w(this, FUNC(taitojc_state::dsp_math_intersection_w)); + map(0x7013, 0x7015).w(this, FUNC(taitojc_state::dsp_math_viewport_w)); + map(0x701b, 0x701b).r(this, FUNC(taitojc_state::dsp_math_intersection_r)); + map(0x701d, 0x701d).r(this, FUNC(taitojc_state::dsp_math_projection_y_r)); + map(0x701f, 0x701f).r(this, FUNC(taitojc_state::dsp_math_projection_x_r)); + map(0x7022, 0x7022).r(this, FUNC(taitojc_state::dsp_math_unk_r)); + map(0x7800, 0x7fff).ram().share("dsp_shared"); + map(0x7ffe, 0x7ffe).w(this, FUNC(taitojc_state::dsp_to_main_7fe_w)); + map(0x8000, 0xffff).ram(); +} diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp index b3607153b87..ffdd0b7c9c6 100644 --- a/src/mame/drivers/taitopjc.cpp +++ b/src/mame/drivers/taitopjc.cpp @@ -526,14 +526,15 @@ WRITE64_MEMBER(taitopjc_state::dsp_w) // DBAT2 U: 0xc0000003 L: 0xc0000022 (0xc0000000...0xc001ffff) // DBAT3 U: 0xfe0003ff L: 0xfe000022 (0xfe000000...0xffffffff) -ADDRESS_MAP_START(taitopjc_state::ppc603e_mem) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM // Work RAM - AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(video_r, video_w) - AM_RANGE(0x80000000, 0x80003fff) AM_READWRITE(dsp_r, dsp_w) - AM_RANGE(0xc0000000, 0xc0003fff) AM_READWRITE(ppc_common_r, ppc_common_w) - AM_RANGE(0xfe800000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void taitopjc_state::ppc603e_mem(address_map &map) +{ + map(0x00000000, 0x003fffff).ram(); // Work RAM + map(0x40000000, 0x4000000f).rw(this, FUNC(taitopjc_state::video_r), FUNC(taitopjc_state::video_w)); + map(0x80000000, 0x80003fff).rw(this, FUNC(taitopjc_state::dsp_r), FUNC(taitopjc_state::dsp_w)); + map(0xc0000000, 0xc0003fff).rw(this, FUNC(taitopjc_state::ppc_common_r), FUNC(taitopjc_state::ppc_common_w)); + map(0xfe800000, 0xff7fffff).rom().region("gfx1", 0); + map(0xffe00000, 0xffffffff).rom().region("user1", 0); +} @@ -625,18 +626,20 @@ WRITE16_MEMBER(taitopjc_state::tlcs_unk_w) // 0xfc0fb5: INTRX1 // 0xfc0f41: INTTX1 -ADDRESS_MAP_START(taitopjc_state::tlcs900h_mem) - AM_RANGE(0x010000, 0x02ffff) AM_RAM // Work RAM - AM_RANGE(0x040000, 0x0400ff) AM_READWRITE8(tlcs_sound_r, tlcs_sound_w, 0xffff) - AM_RANGE(0x044000, 0x045fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x060000, 0x061fff) AM_READWRITE8(tlcs_common_r, tlcs_common_w, 0xffff) - AM_RANGE(0x06c000, 0x06c00f) AM_WRITE(tlcs_unk_w) - AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0) -ADDRESS_MAP_END +void taitopjc_state::tlcs900h_mem(address_map &map) +{ + map(0x010000, 0x02ffff).ram(); // Work RAM + map(0x040000, 0x0400ff).rw(this, FUNC(taitopjc_state::tlcs_sound_r), FUNC(taitopjc_state::tlcs_sound_w)); + map(0x044000, 0x045fff).ram().share("nvram"); + map(0x060000, 0x061fff).rw(this, FUNC(taitopjc_state::tlcs_common_r), FUNC(taitopjc_state::tlcs_common_w)); + map(0x06c000, 0x06c00f).w(this, FUNC(taitopjc_state::tlcs_unk_w)); + map(0xfc0000, 0xffffff).rom().region("io_cpu", 0); +} -ADDRESS_MAP_START(taitopjc_state::mn10200_map) - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mn10200", 0) -ADDRESS_MAP_END +void taitopjc_state::mn10200_map(address_map &map) +{ + map(0x080000, 0x0fffff).rom().region("mn10200", 0); +} @@ -676,25 +679,28 @@ WRITE16_MEMBER(taitopjc_state::dsp_romh_w) } -ADDRESS_MAP_START(taitopjc_state::tms_program_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x4c00, 0xefff) AM_ROM AM_REGION("user2", 0x9800) -ADDRESS_MAP_END +void taitopjc_state::tms_program_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("user2", 0); + map(0x4c00, 0xefff).rom().region("user2", 0x9800); +} -ADDRESS_MAP_START(taitopjc_state::tms_data_map) - AM_RANGE(0x4000, 0x6fff) AM_ROM AM_REGION("user2", 0x8000) - AM_RANGE(0x7000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_READWRITE(tms_dspshare_r, tms_dspshare_w) -ADDRESS_MAP_END +void taitopjc_state::tms_data_map(address_map &map) +{ + map(0x4000, 0x6fff).rom().region("user2", 0x8000); + map(0x7000, 0xefff).ram(); + map(0xf000, 0xffff).rw(this, FUNC(taitopjc_state::tms_dspshare_r), FUNC(taitopjc_state::tms_dspshare_w)); +} -ADDRESS_MAP_START(taitopjc_state::tms_io_map) - AM_RANGE(0x0053, 0x0053) AM_WRITE(dsp_roml_w) - AM_RANGE(0x0057, 0x0057) AM_WRITE(dsp_romh_w) - AM_RANGE(0x0058, 0x0058) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w) - AM_RANGE(0x005a, 0x005a) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w) - AM_RANGE(0x005b, 0x005b) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w) - AM_RANGE(0x005f, 0x005f) AM_READ(dsp_rom_r) -ADDRESS_MAP_END +void taitopjc_state::tms_io_map(address_map &map) +{ + map(0x0053, 0x0053).w(this, FUNC(taitopjc_state::dsp_roml_w)); + map(0x0057, 0x0057).w(this, FUNC(taitopjc_state::dsp_romh_w)); + map(0x0058, 0x0058).w(m_tc0780fpa, FUNC(tc0780fpa_device::poly_fifo_w)); + map(0x005a, 0x005a).w(m_tc0780fpa, FUNC(tc0780fpa_device::tex_w)); + map(0x005b, 0x005b).rw(m_tc0780fpa, FUNC(tc0780fpa_device::tex_addr_r), FUNC(tc0780fpa_device::tex_addr_w)); + map(0x005f, 0x005f).r(this, FUNC(taitopjc_state::dsp_rom_r)); +} static INPUT_PORTS_START( taitopjc ) diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp index 275285baa36..194cf5fe6dd 100644 --- a/src/mame/drivers/taitosj.cpp +++ b/src/mame/drivers/taitosj.cpp @@ -202,51 +202,53 @@ CUSTOM_INPUT_MEMBER(taitosj_state::input_port_4_f0_r) } -ADDRESS_MAP_START(taitosj_state::taitosj_main_nomcu_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07fe) AM_READWRITE(taitosj_fake_data_r, taitosj_fake_data_w) - AM_RANGE(0x8801, 0x8801) AM_MIRROR(0x07fe) AM_READ(taitosj_fake_status_r) - AM_RANGE(0x9000, 0xbfff) AM_WRITE(taitosj_characterram_w) AM_SHARE("characterram") - AM_RANGE(0xc000, 0xc3ff) AM_RAM - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram_1") - AM_RANGE(0xc800, 0xcbff) AM_RAM AM_SHARE("videoram_2") - AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram_3") - AM_RANGE(0xd000, 0xd05f) AM_RAM AM_SHARE("colscrolly") - AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd200, 0xd27f) AM_MIRROR(0x0080) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0xd300, 0xd300) AM_MIRROR(0x00ff) AM_WRITEONLY AM_SHARE("video_priority") - AM_RANGE(0xd400, 0xd403) AM_MIRROR(0x00f0) AM_READONLY AM_SHARE("collision_reg") - AM_RANGE(0xd404, 0xd404) AM_MIRROR(0x00f3) AM_READ(taitosj_gfxrom_r) - AM_RANGE(0xd408, 0xd408) AM_MIRROR(0x00f0) AM_READ_PORT("IN0") - AM_RANGE(0xd409, 0xd409) AM_MIRROR(0x00f0) AM_READ_PORT("IN1") - AM_RANGE(0xd40a, 0xd40a) AM_MIRROR(0x00f0) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0xd40b, 0xd40b) AM_MIRROR(0x00f0) AM_READ_PORT("IN2") - AM_RANGE(0xd40c, 0xd40c) AM_MIRROR(0x00f0) AM_READ_PORT("IN3") /* Service */ - AM_RANGE(0xd40d, 0xd40d) AM_MIRROR(0x00f0) AM_READ_PORT("IN4") - AM_RANGE(0xd40e, 0xd40f) AM_MIRROR(0x00f0) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xd40f, 0xd40f) AM_MIRROR(0x00f0) AM_DEVREAD("ay1", ay8910_device, data_r) /* DSW2 and DSW3 */ - AM_RANGE(0xd500, 0xd505) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0xd506, 0xd507) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("colorbank") - AM_RANGE(0xd508, 0xd508) AM_MIRROR(0x00f0) AM_WRITE(taitosj_collision_reg_clear_w) - AM_RANGE(0xd509, 0xd50a) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("gfxpointer") - AM_RANGE(0xd50b, 0xd50b) AM_MIRROR(0x00f0) AM_WRITE(soundlatch_w) - AM_RANGE(0xd50c, 0xd50c) AM_MIRROR(0x00f0) AM_WRITE(sound_semaphore2_w) - AM_RANGE(0xd50d, 0xd50d) AM_MIRROR(0x00f0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd50e, 0xd50e) AM_MIRROR(0x00f0) AM_WRITE(taitosj_bankswitch_w) - AM_RANGE(0xd50f, 0xd50f) AM_MIRROR(0x00f0) AM_WRITENOP - AM_RANGE(0xd600, 0xd600) AM_MIRROR(0x00ff) AM_WRITEONLY AM_SHARE("video_mode") - AM_RANGE(0xd700, 0xdfff) AM_NOP - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void taitosj_state::taitosj_main_nomcu_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).mirror(0x07fe).rw(this, FUNC(taitosj_state::taitosj_fake_data_r), FUNC(taitosj_state::taitosj_fake_data_w)); + map(0x8801, 0x8801).mirror(0x07fe).r(this, FUNC(taitosj_state::taitosj_fake_status_r)); + map(0x9000, 0xbfff).w(this, FUNC(taitosj_state::taitosj_characterram_w)).share("characterram"); + map(0xc000, 0xc3ff).ram(); + map(0xc400, 0xc7ff).ram().share("videoram_1"); + map(0xc800, 0xcbff).ram().share("videoram_2"); + map(0xcc00, 0xcfff).ram().share("videoram_3"); + map(0xd000, 0xd05f).ram().share("colscrolly"); + map(0xd100, 0xd1ff).ram().share("spriteram"); + map(0xd200, 0xd27f).mirror(0x0080).ram().share("paletteram"); + map(0xd300, 0xd300).mirror(0x00ff).writeonly().share("video_priority"); + map(0xd400, 0xd403).mirror(0x00f0).readonly().share("collision_reg"); + map(0xd404, 0xd404).mirror(0x00f3).r(this, FUNC(taitosj_state::taitosj_gfxrom_r)); + map(0xd408, 0xd408).mirror(0x00f0).portr("IN0"); + map(0xd409, 0xd409).mirror(0x00f0).portr("IN1"); + map(0xd40a, 0xd40a).mirror(0x00f0).portr("DSW1"); /* DSW1 */ + map(0xd40b, 0xd40b).mirror(0x00f0).portr("IN2"); + map(0xd40c, 0xd40c).mirror(0x00f0).portr("IN3"); /* Service */ + map(0xd40d, 0xd40d).mirror(0x00f0).portr("IN4"); + map(0xd40e, 0xd40f).mirror(0x00f0).w(m_ay1, FUNC(ay8910_device::address_data_w)); + map(0xd40f, 0xd40f).mirror(0x00f0).r(m_ay1, FUNC(ay8910_device::data_r)); /* DSW2 and DSW3 */ + map(0xd500, 0xd505).mirror(0x00f0).writeonly().share("scroll"); + map(0xd506, 0xd507).mirror(0x00f0).writeonly().share("colorbank"); + map(0xd508, 0xd508).mirror(0x00f0).w(this, FUNC(taitosj_state::taitosj_collision_reg_clear_w)); + map(0xd509, 0xd50a).mirror(0x00f0).writeonly().share("gfxpointer"); + map(0xd50b, 0xd50b).mirror(0x00f0).w(this, FUNC(taitosj_state::soundlatch_w)); + map(0xd50c, 0xd50c).mirror(0x00f0).w(this, FUNC(taitosj_state::sound_semaphore2_w)); + map(0xd50d, 0xd50d).mirror(0x00f0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd50e, 0xd50e).mirror(0x00f0).w(this, FUNC(taitosj_state::taitosj_bankswitch_w)); + map(0xd50f, 0xd50f).mirror(0x00f0).nopw(); + map(0xd600, 0xd600).mirror(0x00ff).writeonly().share("video_mode"); + map(0xd700, 0xdfff).noprw(); + map(0xe000, 0xffff).rom(); +} /* only difference is taitosj_fake_ replaced with taitosj_mcu_ */ -ADDRESS_MAP_START(taitosj_state::taitosj_main_mcu_map) - AM_IMPORT_FROM( taitosj_main_nomcu_map ) - AM_RANGE(0x8800, 0x8801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("bmcu", taito_sj_security_mcu_device, data_r, data_w) -ADDRESS_MAP_END +void taitosj_state::taitosj_main_mcu_map(address_map &map) +{ + taitosj_main_nomcu_map(map); + map(0x8800, 0x8801).mirror(0x07fe).rw(m_mcu, FUNC(taito_sj_security_mcu_device::data_r), FUNC(taito_sj_security_mcu_device::data_w)); +} @@ -272,43 +274,44 @@ CUSTOM_INPUT_MEMBER(taitosj_state::kikstart_gear_r) } // TODO: merge with above -ADDRESS_MAP_START(taitosj_state::kikstart_main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("bmcu", taito_sj_security_mcu_device, data_r, data_w) - AM_RANGE(0x8802, 0x8802) AM_NOP - AM_RANGE(0x8a00, 0x8a5f) AM_WRITEONLY AM_SHARE("colscrolly") - AM_RANGE(0x9000, 0xbfff) AM_WRITE(taitosj_characterram_w) AM_SHARE("characterram") - AM_RANGE(0xc000, 0xc3ff) AM_RAM - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram_1") - AM_RANGE(0xc800, 0xcbff) AM_RAM AM_SHARE("videoram_2") - AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram_3") - AM_RANGE(0xd000, 0xd001) AM_WRITEONLY AM_SHARE("colorbank") - AM_RANGE(0xd002, 0xd007) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd200, 0xd27f) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0xd300, 0xd300) AM_WRITEONLY AM_SHARE("video_priority") - AM_RANGE(0xd400, 0xd403) AM_READONLY AM_SHARE("collision_reg") - AM_RANGE(0xd404, 0xd404) AM_READ(taitosj_gfxrom_r) - AM_RANGE(0xd408, 0xd408) AM_MIRROR(0x00f0) AM_READ_PORT("IN0") - AM_RANGE(0xd409, 0xd409) AM_MIRROR(0x00f0) AM_READ_PORT("IN1") - AM_RANGE(0xd40a, 0xd40a) AM_MIRROR(0x00f0) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0xd40b, 0xd40b) AM_MIRROR(0x00f0) AM_READ_PORT("IN2") - AM_RANGE(0xd40c, 0xd40c) AM_MIRROR(0x00f0) AM_READ_PORT("IN3") /* Service */ - AM_RANGE(0xd40d, 0xd40d) AM_MIRROR(0x00f0) AM_READ_PORT("IN4") - AM_RANGE(0xd40e, 0xd40f) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xd40f, 0xd40f) AM_DEVREAD("ay1", ay8910_device, data_r) /* DSW2 and DSW3 */ - AM_RANGE(0xd508, 0xd508) AM_WRITE(taitosj_collision_reg_clear_w) - AM_RANGE(0xd509, 0xd50a) AM_WRITEONLY AM_SHARE("gfxpointer") - AM_RANGE(0xd50b, 0xd50b) AM_WRITE(soundlatch_w) - AM_RANGE(0xd50c, 0xd50c) AM_WRITE(sound_semaphore2_w) - AM_RANGE(0xd50d, 0xd50d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd50e, 0xd50e) AM_WRITE(taitosj_bankswitch_w) - AM_RANGE(0xd600, 0xd600) AM_WRITEONLY AM_SHARE("video_mode") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("kikstart_scroll")// scroll ram + ??? - AM_RANGE(0xe000, 0xefff) AM_ROM -ADDRESS_MAP_END +void taitosj_state::kikstart_main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw(m_mcu, FUNC(taito_sj_security_mcu_device::data_r), FUNC(taito_sj_security_mcu_device::data_w)); + map(0x8802, 0x8802).noprw(); + map(0x8a00, 0x8a5f).writeonly().share("colscrolly"); + map(0x9000, 0xbfff).w(this, FUNC(taitosj_state::taitosj_characterram_w)).share("characterram"); + map(0xc000, 0xc3ff).ram(); + map(0xc400, 0xc7ff).ram().share("videoram_1"); + map(0xc800, 0xcbff).ram().share("videoram_2"); + map(0xcc00, 0xcfff).ram().share("videoram_3"); + map(0xd000, 0xd001).writeonly().share("colorbank"); + map(0xd002, 0xd007).writeonly().share("scroll"); + map(0xd100, 0xd1ff).ram().share("spriteram"); + map(0xd200, 0xd27f).ram().share("paletteram"); + map(0xd300, 0xd300).writeonly().share("video_priority"); + map(0xd400, 0xd403).readonly().share("collision_reg"); + map(0xd404, 0xd404).r(this, FUNC(taitosj_state::taitosj_gfxrom_r)); + map(0xd408, 0xd408).mirror(0x00f0).portr("IN0"); + map(0xd409, 0xd409).mirror(0x00f0).portr("IN1"); + map(0xd40a, 0xd40a).mirror(0x00f0).portr("DSW1"); /* DSW1 */ + map(0xd40b, 0xd40b).mirror(0x00f0).portr("IN2"); + map(0xd40c, 0xd40c).mirror(0x00f0).portr("IN3"); /* Service */ + map(0xd40d, 0xd40d).mirror(0x00f0).portr("IN4"); + map(0xd40e, 0xd40f).w(m_ay1, FUNC(ay8910_device::address_data_w)); + map(0xd40f, 0xd40f).r(m_ay1, FUNC(ay8910_device::data_r)); /* DSW2 and DSW3 */ + map(0xd508, 0xd508).w(this, FUNC(taitosj_state::taitosj_collision_reg_clear_w)); + map(0xd509, 0xd50a).writeonly().share("gfxpointer"); + map(0xd50b, 0xd50b).w(this, FUNC(taitosj_state::soundlatch_w)); + map(0xd50c, 0xd50c).w(this, FUNC(taitosj_state::sound_semaphore2_w)); + map(0xd50d, 0xd50d).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd50e, 0xd50e).w(this, FUNC(taitosj_state::taitosj_bankswitch_w)); + map(0xd600, 0xd600).writeonly().share("video_mode"); + map(0xd800, 0xdfff).ram().share("kikstart_scroll");// scroll ram + ??? + map(0xe000, 0xefff).rom(); +} TIMER_CALLBACK_MEMBER(taitosj_state::soundlatch_w_cb) { @@ -368,19 +371,20 @@ WRITE8_MEMBER(taitosj_state::sound_semaphore2_clear_w) } -ADDRESS_MAP_START(taitosj_state::taitosj_audio_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x4801) AM_MIRROR(0x07f8) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x4801, 0x4801) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x4802, 0x4803) AM_MIRROR(0x07f8) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay4", ay8910_device, address_data_w) - AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay4", ay8910_device, data_r) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x07fc) AM_READWRITE(soundlatch_r, soundlatch_clear7_w) - AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x07fc) AM_READWRITE(soundlatch_flags_r, sound_semaphore2_clear_w) - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM */ -ADDRESS_MAP_END +void taitosj_state::taitosj_audio_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x4800, 0x4801).mirror(0x07f8).w(m_ay2, FUNC(ay8910_device::address_data_w)); + map(0x4801, 0x4801).mirror(0x07f8).r(m_ay2, FUNC(ay8910_device::data_r)); + map(0x4802, 0x4803).mirror(0x07f8).w(m_ay3, FUNC(ay8910_device::address_data_w)); + map(0x4803, 0x4803).mirror(0x07f8).r(m_ay3, FUNC(ay8910_device::data_r)); + map(0x4804, 0x4805).mirror(0x07fa).w(m_ay4, FUNC(ay8910_device::address_data_w)); + map(0x4805, 0x4805).mirror(0x07fa).r(m_ay4, FUNC(ay8910_device::data_r)); + map(0x5000, 0x5000).mirror(0x07fc).rw(this, FUNC(taitosj_state::soundlatch_r), FUNC(taitosj_state::soundlatch_clear7_w)); + map(0x5001, 0x5001).mirror(0x07fc).rw(this, FUNC(taitosj_state::soundlatch_flags_r), FUNC(taitosj_state::sound_semaphore2_clear_w)); + map(0xe000, 0xefff).rom(); /* space for diagnostic ROM */ +} #define DSW2_PORT \ diff --git a/src/mame/drivers/taitotx.cpp b/src/mame/drivers/taitotx.cpp index 86d08588f2b..3ddfb66b0dc 100644 --- a/src/mame/drivers/taitotx.cpp +++ b/src/mame/drivers/taitotx.cpp @@ -151,9 +151,10 @@ uint32_t taito_type_x_state::screen_update_taito_type_x(screen_device &screen, b return 0; } -ADDRESS_MAP_START(taito_type_x_state::taito_type_x_map) - AM_RANGE(0x00, 0x0f) AM_ROM -ADDRESS_MAP_END +void taito_type_x_state::taito_type_x_map(address_map &map) +{ + map(0x00, 0x0f).rom(); +} static INPUT_PORTS_START( taito_type_x ) INPUT_PORTS_END diff --git a/src/mame/drivers/taitotz.cpp b/src/mame/drivers/taitotz.cpp index f3eab35d8d1..d58b0eaa25a 100644 --- a/src/mame/drivers/taitotz.cpp +++ b/src/mame/drivers/taitotz.cpp @@ -2062,15 +2062,16 @@ WRITE64_MEMBER(taitotz_state::ppc_common_w) // 0x40000000...0x400fffff: BIOS Work RAM // 0x40100000...0x40ffffff: User Work RAM -ADDRESS_MAP_START(taitotz_state::ppc603e_mem) - AM_RANGE(0x00000000, 0x0000001f) AM_READWRITE(video_chip_r, video_chip_w) - AM_RANGE(0x10000000, 0x1000001f) AM_READWRITE(video_fifo_r, video_fifo_w) - AM_RANGE(0x40000000, 0x40ffffff) AM_RAM AM_SHARE("work_ram") // Work RAM - AM_RANGE(0xa4000000, 0xa40000ff) AM_READWRITE(ieee1394_r, ieee1394_w) // IEEE1394 network - AM_RANGE(0xa8000000, 0xa8003fff) AM_READWRITE(ppc_common_r, ppc_common_w) // Common RAM (with TLCS-900) - AM_RANGE(0xac000000, 0xac0fffff) AM_ROM AM_REGION("user1", 0) // Apparently this should be flash ROM read/write access - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void taitotz_state::ppc603e_mem(address_map &map) +{ + map(0x00000000, 0x0000001f).rw(this, FUNC(taitotz_state::video_chip_r), FUNC(taitotz_state::video_chip_w)); + map(0x10000000, 0x1000001f).rw(this, FUNC(taitotz_state::video_fifo_r), FUNC(taitotz_state::video_fifo_w)); + map(0x40000000, 0x40ffffff).ram().share("work_ram"); // Work RAM + map(0xa4000000, 0xa40000ff).rw(this, FUNC(taitotz_state::ieee1394_r), FUNC(taitotz_state::ieee1394_w)); // IEEE1394 network + map(0xa8000000, 0xa8003fff).rw(this, FUNC(taitotz_state::ppc_common_r), FUNC(taitotz_state::ppc_common_w)); // Common RAM (with TLCS-900) + map(0xac000000, 0xac0fffff).rom().region("user1", 0); // Apparently this should be flash ROM read/write access + map(0xfff00000, 0xffffffff).rom().region("user1", 0); +} @@ -2222,27 +2223,29 @@ READ16_MEMBER(taitotz_state::tlcs_ide1_r) // 0xfc0d55: INTRX1 Serial 1 receive // 0xfc0ce1: INTTX1 Serial 1 transmit -ADDRESS_MAP_START(taitotz_state::tlcs900h_mem) - AM_RANGE(0x010000, 0x02ffff) AM_RAM // Work RAM - AM_RANGE(0x040000, 0x041fff) AM_RAM AM_SHARE("nvram") // Backup RAM - AM_RANGE(0x044000, 0x04400f) AM_READWRITE8(tlcs_rtc_r, tlcs_rtc_w, 0xffff) - AM_RANGE(0x060000, 0x061fff) AM_READWRITE8(tlcs_common_r, tlcs_common_w, 0xffff) - AM_RANGE(0x064000, 0x064fff) AM_RAM AM_SHARE("mbox_ram") // MBox - AM_RANGE(0x068000, 0x06800f) AM_DEVWRITE("ata", ata_interface_device, write_cs0) AM_READ(tlcs_ide0_r) - AM_RANGE(0x06c000, 0x06c00f) AM_DEVWRITE("ata", ata_interface_device, write_cs1) AM_READ(tlcs_ide1_r) - AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitotz_state::landhigh_tlcs900h_mem) - AM_RANGE(0x200000, 0x21ffff) AM_RAM // Work RAM - AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("nvram") // Backup RAM - AM_RANGE(0x404000, 0x40400f) AM_READWRITE8(tlcs_rtc_r, tlcs_rtc_w, 0xffff) - AM_RANGE(0x900000, 0x901fff) AM_READWRITE8(tlcs_common_r, tlcs_common_w, 0xffff) - AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("mbox_ram") // MBox - AM_RANGE(0x908000, 0x90800f) AM_DEVWRITE("ata", ata_interface_device, write_cs0) AM_READ(tlcs_ide0_r) - AM_RANGE(0x918000, 0x91800f) AM_DEVWRITE("ata", ata_interface_device, write_cs1) AM_READ(tlcs_ide1_r) - AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0) -ADDRESS_MAP_END +void taitotz_state::tlcs900h_mem(address_map &map) +{ + map(0x010000, 0x02ffff).ram(); // Work RAM + map(0x040000, 0x041fff).ram().share("nvram"); // Backup RAM + map(0x044000, 0x04400f).rw(this, FUNC(taitotz_state::tlcs_rtc_r), FUNC(taitotz_state::tlcs_rtc_w)); + map(0x060000, 0x061fff).rw(this, FUNC(taitotz_state::tlcs_common_r), FUNC(taitotz_state::tlcs_common_w)); + map(0x064000, 0x064fff).ram().share("mbox_ram"); // MBox + map(0x068000, 0x06800f).w(m_ata, FUNC(ata_interface_device::write_cs0)).r(this, FUNC(taitotz_state::tlcs_ide0_r)); + map(0x06c000, 0x06c00f).w(m_ata, FUNC(ata_interface_device::write_cs1)).r(this, FUNC(taitotz_state::tlcs_ide1_r)); + map(0xfc0000, 0xffffff).rom().region("io_cpu", 0); +} + +void taitotz_state::landhigh_tlcs900h_mem(address_map &map) +{ + map(0x200000, 0x21ffff).ram(); // Work RAM + map(0x400000, 0x401fff).ram().share("nvram"); // Backup RAM + map(0x404000, 0x40400f).rw(this, FUNC(taitotz_state::tlcs_rtc_r), FUNC(taitotz_state::tlcs_rtc_w)); + map(0x900000, 0x901fff).rw(this, FUNC(taitotz_state::tlcs_common_r), FUNC(taitotz_state::tlcs_common_w)); + map(0x910000, 0x910fff).ram().share("mbox_ram"); // MBox + map(0x908000, 0x90800f).w(m_ata, FUNC(ata_interface_device::write_cs0)).r(this, FUNC(taitotz_state::tlcs_ide0_r)); + map(0x918000, 0x91800f).w(m_ata, FUNC(ata_interface_device::write_cs1)).r(this, FUNC(taitotz_state::tlcs_ide1_r)); + map(0xfc0000, 0xffffff).rom().region("io_cpu", 0); +} diff --git a/src/mame/drivers/taitowlf.cpp b/src/mame/drivers/taitowlf.cpp index ea2fc075de4..9014573d659 100644 --- a/src/mame/drivers/taitowlf.cpp +++ b/src/mame/drivers/taitowlf.cpp @@ -276,41 +276,43 @@ WRITE32_MEMBER(taitowlf_state::bios_ram_w) } -ADDRESS_MAP_START(taitowlf_state::taitowlf_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM +void taitowlf_state::taitowlf_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); #if ENABLE_VGA - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); #else - AM_RANGE(0x000a0000, 0x000bffff) AM_RAM + map(0x000a0000, 0x000bffff).ram(); #endif #if ENABLE_VGA - AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0) + map(0x000c0000, 0x000c7fff).ram().region("video_bios", 0); #else - AM_RANGE(0x000c0000, 0x000c7fff) AM_NOP + map(0x000c0000, 0x000c7fff).noprw(); #endif - AM_RANGE(0x000e0000, 0x000effff) AM_RAM - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1") - AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x01ffffff) AM_RAM + map(0x000e0000, 0x000effff).ram(); + map(0x000f0000, 0x000fffff).bankr("bank1"); + map(0x000f0000, 0x000fffff).w(this, FUNC(taitowlf_state::bios_ram_w)); + map(0x00100000, 0x01ffffff).ram(); // AM_RANGE(0xf8000000, 0xf83fffff) AM_ROM AM_REGION("user3", 0) - AM_RANGE(0xfffc0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END + map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} -ADDRESS_MAP_START(taitowlf_state::taitowlf_io) - AM_IMPORT_FROM(pcat32_io_common) +void taitowlf_state::taitowlf_io(address_map &map) +{ + pcat32_io_common(map); - AM_RANGE(0x00e8, 0x00eb) AM_NOP - AM_RANGE(0x0300, 0x03af) AM_NOP - AM_RANGE(0x03b0, 0x03df) AM_NOP - AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w) + map(0x00e8, 0x00eb).noprw(); + map(0x0300, 0x03af).noprw(); + map(0x03b0, 0x03df).noprw(); + map(0x0278, 0x027b).w(this, FUNC(taitowlf_state::pnp_config_w)); #if ENABLE_VGA - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); #endif - AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END + map(0x0a78, 0x0a7b).w(this, FUNC(taitowlf_state::pnp_data_w)); + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp index b401b24ef22..c2545f9b193 100644 --- a/src/mame/drivers/tandy1t.cpp +++ b/src/mame/drivers/tandy1t.cpp @@ -548,66 +548,74 @@ static INPUT_PORTS_START( t1000_101key ) PORT_INCLUDE(at_keyboard) INPUT_PORTS_END -ADDRESS_MAP_START(tandy1000_state::tandy1000_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE("pcvideo_t1000:vram", address_map_bank_device, amap8) - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::tandy1000_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", t1000_mb_device, map) - AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r, tandy1000_pio_w) - AM_RANGE(0x00a0, 0x00a0) AM_WRITE(nmi_vram_bank_w) - AM_RANGE(0x00c0, 0x00c0) AM_DEVWRITE("sn76496", ncr7496_device, write) - AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE("pc_joy", pc_joy_device, joy_port_r, joy_port_w) - AM_RANGE(0x0378, 0x037f) AM_READWRITE(pc_t1t_p37x_r, pc_t1t_p37x_w) - AM_RANGE(0x03d0, 0x03df) AM_DEVREAD("pcvideo_t1000", pcvideo_t1000_device, read) AM_DEVWRITE("pcvideo_t1000", pcvideo_t1000_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::tandy1000_bank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff) - AM_RANGE(0xe0000, 0xeffff) AM_DEVICE("biosbank", address_map_bank_device, amap16) - AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION( "rom", 0x70000 ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::biosbank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80000, 0xfffff) AM_ROM AM_REGION("rom", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::tandy1000_16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE8("mb", t1000_mb_device, map, 0xffff) - AM_RANGE(0x0060, 0x0063) AM_READWRITE8(tandy1000_pio_r, tandy1000_pio_w, 0xffff) - AM_RANGE(0x0064, 0x0065) AM_WRITE8(devctrl_w, 0xff00) - AM_RANGE(0x00a0, 0x00a1) AM_READ8(unk_r, 0x00ff) - AM_RANGE(0x00c0, 0x00c1) AM_DEVWRITE8("sn76496", ncr7496_device, write, 0xffff) - AM_RANGE(0x0200, 0x0207) AM_DEVREADWRITE8("pc_joy", pc_joy_device, joy_port_r, joy_port_w, 0xffff) - AM_RANGE(0x0378, 0x037f) AM_READWRITE8(pc_t1t_p37x_r, pc_t1t_p37x_w, 0xffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREAD8("pcvideo_t1000", pcvideo_t1000_device, read, 0xffff) AM_DEVWRITE8("pcvideo_t1000", pcvideo_t1000_device, write, 0xffff) - AM_RANGE(0xffe8, 0xffe9) AM_WRITE8(vram_bank_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::tandy1000_bank_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(tandy1000_16_io) - AM_RANGE(0xffea, 0xffeb) AM_READWRITE8(tandy1000_bank_r, tandy1000_bank_w, 0xffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::tandy1000tx_io) - ADDRESS_MAP_UNMAP_HIGH - AM_IMPORT_FROM(tandy1000_16_io) - AM_RANGE(0x00a0, 0x00a1) AM_WRITE8(nmi_vram_bank_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy1000_state::tandy1000_286_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x000fffff) - AM_RANGE(0xb8000, 0xbffff) AM_DEVICE8("pcvideo_t1000:vram", address_map_bank_device, amap8, 0xffff) - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END +void tandy1000_state::tandy1000_map(address_map &map) +{ + map.unmap_value_high(); + map(0xb8000, 0xbffff).m("pcvideo_t1000:vram", FUNC(address_map_bank_device::amap8)); + map(0xe0000, 0xfffff).rom().region("bios", 0); +} + +void tandy1000_state::tandy1000_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(t1000_mb_device::map)); + map(0x0060, 0x0063).rw(this, FUNC(tandy1000_state::tandy1000_pio_r), FUNC(tandy1000_state::tandy1000_pio_w)); + map(0x00a0, 0x00a0).w(this, FUNC(tandy1000_state::nmi_vram_bank_w)); + map(0x00c0, 0x00c0).w("sn76496", FUNC(ncr7496_device::write)); + map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w)); + map(0x0378, 0x037f).rw(this, FUNC(tandy1000_state::pc_t1t_p37x_r), FUNC(tandy1000_state::pc_t1t_p37x_w)); + map(0x03d0, 0x03df).r(m_video, FUNC(pcvideo_t1000_device::read)).w(m_video, FUNC(pcvideo_t1000_device::write)); +} + +void tandy1000_state::tandy1000_bank_map(address_map &map) +{ + map.unmap_value_high(); + map(0xb8000, 0xbffff).m("pcvideo_t1000:vram", FUNC(address_map_bank_device::amap8)); + map(0xe0000, 0xeffff).m(m_biosbank, FUNC(address_map_bank_device::amap16)); + map(0xf0000, 0xfffff).rom().region("rom", 0x70000); +} + +void tandy1000_state::biosbank_map(address_map &map) +{ + map.unmap_value_high(); + map(0x80000, 0xfffff).rom().region("rom", 0); +} + +void tandy1000_state::tandy1000_16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m(m_mb, FUNC(t1000_mb_device::map)); + map(0x0060, 0x0063).rw(this, FUNC(tandy1000_state::tandy1000_pio_r), FUNC(tandy1000_state::tandy1000_pio_w)); + map(0x0065, 0x0065).w(this, FUNC(tandy1000_state::devctrl_w)); + map(0x00a0, 0x00a0).r(this, FUNC(tandy1000_state::unk_r)); + map(0x00c0, 0x00c1).w("sn76496", FUNC(ncr7496_device::write)); + map(0x0200, 0x0207).rw("pc_joy", FUNC(pc_joy_device::joy_port_r), FUNC(pc_joy_device::joy_port_w)); + map(0x0378, 0x037f).rw(this, FUNC(tandy1000_state::pc_t1t_p37x_r), FUNC(tandy1000_state::pc_t1t_p37x_w)); + map(0x03d0, 0x03df).r(m_video, FUNC(pcvideo_t1000_device::read)).w(m_video, FUNC(pcvideo_t1000_device::write)); + map(0xffe8, 0xffe8).w(this, FUNC(tandy1000_state::vram_bank_w)); +} + +void tandy1000_state::tandy1000_bank_io(address_map &map) +{ + map.unmap_value_high(); + tandy1000_16_io(map); + map(0xffea, 0xffeb).rw(this, FUNC(tandy1000_state::tandy1000_bank_r), FUNC(tandy1000_state::tandy1000_bank_w)); +} + +void tandy1000_state::tandy1000tx_io(address_map &map) +{ + map.unmap_value_high(); + tandy1000_16_io(map); + map(0x00a0, 0x00a0).w(this, FUNC(tandy1000_state::nmi_vram_bank_w)); +} + +void tandy1000_state::tandy1000_286_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x000fffff); + map(0xb8000, 0xbffff).m("pcvideo_t1000:vram", FUNC(address_map_bank_device::amap8)); + map(0xe0000, 0xfffff).rom().region("bios", 0); +} static const gfx_layout t1000_charlayout = { diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp index b5ad126df75..19d627b6d40 100644 --- a/src/mame/drivers/tandy2k.cpp +++ b/src/mame/drivers/tandy2k.cpp @@ -307,45 +307,49 @@ WRITE8_MEMBER( tandy2k_state::addr_ctrl_w ) // Memory Maps -ADDRESS_MAP_START(tandy2k_state::tandy2k_mem) - ADDRESS_MAP_UNMAP_HIGH +void tandy2k_state::tandy2k_mem(address_map &map) +{ + map.unmap_value_high(); // AM_RANGE(0x00000, 0xdffff) AM_RAM - AM_RANGE(0xe0000, 0xf7fff) AM_RAM AM_SHARE("hires_ram") - AM_RANGE(0xf8000, 0xfbfff) AM_READWRITE8(char_ram_r, char_ram_w, 0x00ff) - AM_RANGE(0xfc000, 0xfdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION(I80186_TAG, 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tandy2k_state::tandy2k_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x00001) AM_MIRROR(0x8) AM_READWRITE8(enable_r, enable_w, 0x00ff) - AM_RANGE(0x00002, 0x00003) AM_MIRROR(0x8) AM_WRITE8(dma_mux_w, 0x00ff) - AM_RANGE(0x00004, 0x00005) AM_MIRROR(0x8) AM_READWRITE8(fldtc_r, fldtc_w, 0x00ff) - AM_RANGE(0x00010, 0x00013) AM_MIRROR(0xc) AM_DEVREADWRITE8(I8251A_TAG, i8251_device, data_r, data_w, 0x00ff) - AM_RANGE(0x00030, 0x00033) AM_MIRROR(0xc) AM_DEVICE8(I8272A_TAG, i8272a_device, map, 0x00ff) - AM_RANGE(0x00040, 0x00047) AM_MIRROR(0x8) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0x00050, 0x00057) AM_MIRROR(0x8) AM_DEVREADWRITE8(I8255A_TAG, i8255_device, read, write, 0x00ff) - AM_RANGE(0x00052, 0x00053) AM_MIRROR(0x8) AM_READ8(kbint_clr_r, 0x00ff) - AM_RANGE(0x00060, 0x00063) AM_MIRROR(0xc) AM_DEVREADWRITE8(I8259A_0_TAG, pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00070, 0x00073) AM_MIRROR(0xc) AM_DEVREADWRITE8(I8259A_1_TAG, pic8259_device, read, write, 0x00ff) - AM_RANGE(0x00080, 0x00081) AM_MIRROR(0xe) AM_DEVREADWRITE8(I8272A_TAG, i8272a_device, mdma_r, mdma_w, 0x00ff) + map(0xe0000, 0xf7fff).ram().share("hires_ram"); + map(0xf8000, 0xfbfff).rw(this, FUNC(tandy2k_state::char_ram_r), FUNC(tandy2k_state::char_ram_w)).umask16(0x00ff); + map(0xfc000, 0xfdfff).mirror(0x2000).rom().region(I80186_TAG, 0); +} + +void tandy2k_state::tandy2k_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x00000).mirror(0x8).rw(this, FUNC(tandy2k_state::enable_r), FUNC(tandy2k_state::enable_w)); + map(0x00002, 0x00002).mirror(0x8).w(this, FUNC(tandy2k_state::dma_mux_w)); + map(0x00004, 0x00004).mirror(0x8).rw(this, FUNC(tandy2k_state::fldtc_r), FUNC(tandy2k_state::fldtc_w)); + map(0x00010, 0x00013).mirror(0xc).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)).umask16(0x00ff); + map(0x00030, 0x00033).mirror(0xc).m(m_fdc, FUNC(i8272a_device::map)).umask16(0x00ff); + map(0x00040, 0x00047).mirror(0x8).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x00050, 0x00057).mirror(0x8).rw(m_i8255a, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x00052, 0x00052).mirror(0x8).r(this, FUNC(tandy2k_state::kbint_clr_r)); + map(0x00060, 0x00063).mirror(0xc).rw(m_pic0, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00070, 0x00073).mirror(0xc).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x00080, 0x00080).mirror(0xe).rw(m_fdc, FUNC(i8272a_device::mdma_r), FUNC(i8272a_device::mdma_w)); // AM_RANGE(0x00100, 0x0017f) AM_DEVREADWRITE8(CRT9007_TAG, crt9007_t, read, write, 0x00ff) AM_WRITE8(addr_ctrl_w, 0xff00) - AM_RANGE(0x00100, 0x0017f) AM_READWRITE(vpac_r, vpac_w) + map(0x00100, 0x0017f).rw(this, FUNC(tandy2k_state::vpac_r), FUNC(tandy2k_state::vpac_w)); // AM_RANGE(0x00180, 0x00180) AM_READ8(hires_status_r, 0x00ff) // AM_RANGE(0x00180, 0x001bf) AM_WRITE(hires_palette_w) // AM_RANGE(0x001a0, 0x001a0) AM_READ8(hires_plane_w, 0x00ff) // AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE(i186_internal_port_r, i186_internal_port_w) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(tandy2k_state::tandy2k_hd_io) - AM_IMPORT_FROM(tandy2k_io) +void tandy2k_state::tandy2k_hd_io(address_map &map) +{ + tandy2k_io(map); // AM_RANGE(0x000e0, 0x000ff) AM_WRITE8(hdc_dack_w, 0x00ff) // AM_RANGE(0x0026c, 0x0026d) AM_DEVREADWRITE8(WD1010_TAG, wd1010_device, hdc_reset_r, hdc_reset_w, 0x00ff) // AM_RANGE(0x0026e, 0x0027f) AM_DEVREADWRITE8(WD1010_TAG, wd1010_device, wd1010_r, wd1010_w, 0x00ff) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(tandy2k_state::vpac_mem) - AM_RANGE(0x0000, 0x3fff) AM_READ(videoram_r) -ADDRESS_MAP_END +void tandy2k_state::vpac_mem(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(tandy2k_state::videoram_r)); +} // Input Ports diff --git a/src/mame/drivers/tank8.cpp b/src/mame/drivers/tank8.cpp index 0a6313f5f1c..8672031c5db 100644 --- a/src/mame/drivers/tank8.cpp +++ b/src/mame/drivers/tank8.cpp @@ -95,42 +95,43 @@ WRITE8_MEMBER(tank8_state::motor_w) m_discrete->write(space, NODE_RELATIVE(TANK8_MOTOR1_EN, offset), data); } -ADDRESS_MAP_START(tank8_state::tank8_cpu_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0400, 0x17ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_ROM - - AM_RANGE(0x1c00, 0x1c00) AM_READ(collision_r) - - AM_RANGE(0x1c01, 0x1c01) AM_READ_PORT("P1") - AM_RANGE(0x1c02, 0x1c02) AM_READ_PORT("P2") - AM_RANGE(0x1c03, 0x1c03) AM_READ_PORT("P3") - AM_RANGE(0x1c04, 0x1c04) AM_READ_PORT("P4") - AM_RANGE(0x1c05, 0x1c05) AM_READ_PORT("P5") - AM_RANGE(0x1c06, 0x1c06) AM_READ_PORT("P6") - AM_RANGE(0x1c07, 0x1c07) AM_READ_PORT("P7") - AM_RANGE(0x1c08, 0x1c08) AM_READ_PORT("P8") - AM_RANGE(0x1c09, 0x1c09) AM_READ_PORT("DSW1") - AM_RANGE(0x1c0a, 0x1c0a) AM_READ_PORT("DSW2") - AM_RANGE(0x1c0b, 0x1c0b) AM_READ_PORT("RC") - AM_RANGE(0x1c0f, 0x1c0f) AM_READ_PORT("VBLANK") - - AM_RANGE(0x1800, 0x1bff) AM_WRITE(video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_SHARE("pos_h_ram") - AM_RANGE(0x1c10, 0x1c1f) AM_WRITEONLY AM_SHARE("pos_v_ram") - AM_RANGE(0x1c20, 0x1c2f) AM_WRITEONLY AM_SHARE("pos_d_ram") - - AM_RANGE(0x1c30, 0x1c37) AM_WRITE(lockout_w) - AM_RANGE(0x1d00, 0x1d00) AM_WRITE(int_reset_w) - AM_RANGE(0x1d01, 0x1d01) AM_WRITE(crash_w) - AM_RANGE(0x1d02, 0x1d02) AM_WRITE(explosion_w) - AM_RANGE(0x1d03, 0x1d03) AM_WRITE(bugle_w) - AM_RANGE(0x1d04, 0x1d04) AM_WRITE(bug_w) - AM_RANGE(0x1d05, 0x1d05) AM_WRITEONLY AM_SHARE("team") - AM_RANGE(0x1d06, 0x1d06) AM_WRITE(attract_w) - AM_RANGE(0x1e00, 0x1e07) AM_WRITE(motor_w) - -ADDRESS_MAP_END +void tank8_state::tank8_cpu_map(address_map &map) +{ + map(0x0000, 0x00ff).ram(); + map(0x0400, 0x17ff).rom(); + map(0xf800, 0xffff).rom(); + + map(0x1c00, 0x1c00).r(this, FUNC(tank8_state::collision_r)); + + map(0x1c01, 0x1c01).portr("P1"); + map(0x1c02, 0x1c02).portr("P2"); + map(0x1c03, 0x1c03).portr("P3"); + map(0x1c04, 0x1c04).portr("P4"); + map(0x1c05, 0x1c05).portr("P5"); + map(0x1c06, 0x1c06).portr("P6"); + map(0x1c07, 0x1c07).portr("P7"); + map(0x1c08, 0x1c08).portr("P8"); + map(0x1c09, 0x1c09).portr("DSW1"); + map(0x1c0a, 0x1c0a).portr("DSW2"); + map(0x1c0b, 0x1c0b).portr("RC"); + map(0x1c0f, 0x1c0f).portr("VBLANK"); + + map(0x1800, 0x1bff).w(this, FUNC(tank8_state::video_ram_w)).share("video_ram"); + map(0x1c00, 0x1c0f).writeonly().share("pos_h_ram"); + map(0x1c10, 0x1c1f).writeonly().share("pos_v_ram"); + map(0x1c20, 0x1c2f).writeonly().share("pos_d_ram"); + + map(0x1c30, 0x1c37).w(this, FUNC(tank8_state::lockout_w)); + map(0x1d00, 0x1d00).w(this, FUNC(tank8_state::int_reset_w)); + map(0x1d01, 0x1d01).w(this, FUNC(tank8_state::crash_w)); + map(0x1d02, 0x1d02).w(this, FUNC(tank8_state::explosion_w)); + map(0x1d03, 0x1d03).w(this, FUNC(tank8_state::bugle_w)); + map(0x1d04, 0x1d04).w(this, FUNC(tank8_state::bug_w)); + map(0x1d05, 0x1d05).writeonly().share("team"); + map(0x1d06, 0x1d06).w(this, FUNC(tank8_state::attract_w)); + map(0x1e00, 0x1e07).w(this, FUNC(tank8_state::motor_w)); + +} static INPUT_PORTS_START( tank8 ) diff --git a/src/mame/drivers/tankbatt.cpp b/src/mame/drivers/tankbatt.cpp index 22da1c044b9..654cf18b126 100644 --- a/src/mame/drivers/tankbatt.cpp +++ b/src/mame/drivers/tankbatt.cpp @@ -167,21 +167,22 @@ WRITE_LINE_MEMBER(tankbatt_state::coinlockout_w) machine().bookkeeping().coin_lockout_w(1, state); } -ADDRESS_MAP_START(tankbatt_state::main_map) - AM_RANGE(0x0000, 0x000f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x0010, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x0c00, 0x0c07) AM_READ(in0_r) AM_DEVWRITE("outlatch", cd4099_device, write_d0) - AM_RANGE(0x0c08, 0x0c0f) AM_READ(in1_r) AM_DEVWRITE("mainlatch", cd4099_device, write_d0) - AM_RANGE(0x0c10, 0x0c10) AM_WRITE(irq_ack_w) - AM_RANGE(0x0c18, 0x0c1f) AM_READ(dsw_r) - AM_RANGE(0x0c18, 0x0c18) AM_WRITENOP /* watchdog ?? */ - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("maincpu",0) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu",0) //mirror for the reset/irq vectors - AM_RANGE(0x2000, 0x5fff) AM_READNOP //anything else might be left-over for a diagnostic ROM or something related to the discrete sound HW - AM_RANGE(0x8000, 0xdfff) AM_READNOP -ADDRESS_MAP_END +void tankbatt_state::main_map(address_map &map) +{ + map(0x0000, 0x000f).ram().share("bulletsram"); + map(0x0010, 0x01ff).ram(); + map(0x0200, 0x07ff).ram(); + map(0x0800, 0x0bff).ram().w(this, FUNC(tankbatt_state::videoram_w)).share("videoram"); + map(0x0c00, 0x0c07).r(this, FUNC(tankbatt_state::in0_r)).w("outlatch", FUNC(cd4099_device::write_d0)); + map(0x0c08, 0x0c0f).r(this, FUNC(tankbatt_state::in1_r)).w("mainlatch", FUNC(cd4099_device::write_d0)); + map(0x0c10, 0x0c10).w(this, FUNC(tankbatt_state::irq_ack_w)); + map(0x0c18, 0x0c1f).r(this, FUNC(tankbatt_state::dsw_r)); + map(0x0c18, 0x0c18).nopw(); /* watchdog ?? */ + map(0x6000, 0x7fff).rom().region("maincpu", 0); + map(0xe000, 0xffff).rom().region("maincpu", 0); //mirror for the reset/irq vectors + map(0x2000, 0x5fff).nopr(); //anything else might be left-over for a diagnostic ROM or something related to the discrete sound HW + map(0x8000, 0xdfff).nopr(); +} INTERRUPT_GEN_MEMBER(tankbatt_state::interrupt) { diff --git a/src/mame/drivers/tankbust.cpp b/src/mame/drivers/tankbust.cpp index 9fe3b3adda7..0556ece64f7 100644 --- a/src/mame/drivers/tankbust.cpp +++ b/src/mame/drivers/tankbust.cpp @@ -190,42 +190,45 @@ READ8_MEMBER(tankbust_state::some_changing_input) return m_variable_data; } -ADDRESS_MAP_START(tankbust_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(background_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txtram_w) AM_SHARE("txtram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xe007) AM_READWRITE(debug_output_area_r, e0xx_w) - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("INPUTS") AM_WRITE(yscroll_w) - AM_RANGE(0xe801, 0xe801) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSW") - AM_RANGE(0xe801, 0xe802) AM_WRITE(xscroll_w) - AM_RANGE(0xe803, 0xe803) AM_READWRITE(some_changing_input, soundlatch_w) /*unknown. Game expects this to change so this is not player input */ - AM_RANGE(0xe804, 0xe804) AM_WRITENOP /* watchdog ? ; written in long-lasting loops */ - AM_RANGE(0xf000, 0xf7ff) AM_RAM +void tankbust_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x9fff).bankr("bank1"); + map(0xa000, 0xbfff).bankr("bank2"); + map(0xc000, 0xc7ff).ram().w(this, FUNC(tankbust_state::background_videoram_w)).share("videoram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(tankbust_state::background_colorram_w)).share("colorram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(tankbust_state::txtram_w)).share("txtram"); + map(0xd800, 0xd8ff).ram().share("spriteram"); + map(0xe000, 0xe007).rw(this, FUNC(tankbust_state::debug_output_area_r), FUNC(tankbust_state::e0xx_w)); + map(0xe800, 0xe800).portr("INPUTS").w(this, FUNC(tankbust_state::yscroll_w)); + map(0xe801, 0xe801).portr("SYSTEM"); + map(0xe802, 0xe802).portr("DSW"); + map(0xe801, 0xe802).w(this, FUNC(tankbust_state::xscroll_w)); + map(0xe803, 0xe803).rw(this, FUNC(tankbust_state::some_changing_input), FUNC(tankbust_state::soundlatch_w)); /*unknown. Game expects this to change so this is not player input */ + map(0xe804, 0xe804).nopw(); /* watchdog ? ; written in long-lasting loops */ + map(0xf000, 0xf7ff).ram(); //AM_RANGE(0xf800, 0xffff) AM_READ(read_from_unmapped_memory) /* a bug in game code ? */ -ADDRESS_MAP_END +} -ADDRESS_MAP_START(tankbust_state::port_map_cpu2) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x10) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_w) -ADDRESS_MAP_END +void tankbust_state::port_map_cpu2(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).w("ay2", FUNC(ay8910_device::data_w)); + map(0x30, 0x30).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x40, 0x40).w("ay1", FUNC(ay8910_device::data_w)); + map(0xc0, 0xc0).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); +} -ADDRESS_MAP_START(tankbust_state::map_cpu2) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x3fff) AM_WRITENOP /* garbage, written in initialization loop */ +void tankbust_state::map_cpu2(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x3fff).nopw(); /* garbage, written in initialization loop */ //0x4000 and 0x4040-0x4045 seem to be used (referenced in the code) - AM_RANGE(0x4000, 0x7fff) AM_WRITENOP /* garbage, written in initialization loop */ - AM_RANGE(0x8000, 0x87ff) AM_READONLY - AM_RANGE(0x8000, 0x87ff) AM_WRITEONLY -ADDRESS_MAP_END + map(0x4000, 0x7fff).nopw(); /* garbage, written in initialization loop */ + map(0x8000, 0x87ff).readonly(); + map(0x8000, 0x87ff).writeonly(); +} static INPUT_PORTS_START( tankbust ) diff --git a/src/mame/drivers/taotaido.cpp b/src/mame/drivers/taotaido.cpp index c80d79e92c1..82c4a436742 100644 --- a/src/mame/drivers/taotaido.cpp +++ b/src/mame/drivers/taotaido.cpp @@ -96,23 +96,24 @@ WRITE8_MEMBER(taotaido_state::unknown_output_w) // Bits 5, 4 also used? } -ADDRESS_MAP_START(taotaido_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgram") // bg ram? - AM_RANGE(0xa00000, 0xa01fff) AM_RAM AM_SHARE("spriteram") // sprite ram - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_SHARE("spriteram2") // sprite tile lookup ram - AM_RANGE(0xfe0000, 0xfeffff) AM_RAM // main ram - AM_RANGE(0xffc000, 0xffcfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // palette ram - AM_RANGE(0xffe000, 0xffe3ff) AM_RAM AM_SHARE("scrollram") // rowscroll / rowselect / scroll ram - AM_RANGE(0xffff80, 0xffff9f) AM_DEVREADWRITE8("io1", vs9209_device, read, write, 0x00ff) - AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io2", vs9209_device, read, write, 0x00ff) - AM_RANGE(0xffff00, 0xffff0f) AM_WRITE(tileregs_w) - AM_RANGE(0xffff10, 0xffff11) AM_WRITENOP // unknown - AM_RANGE(0xffff20, 0xffff21) AM_WRITENOP // unknown - flip screen related - AM_RANGE(0xffff40, 0xffff47) AM_WRITE(sprite_character_bank_select_w) - AM_RANGE(0xffffc0, 0xffffc1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // seems right - AM_RANGE(0xffffe0, 0xffffe1) AM_READ(pending_command_r) // guess - seems to be needed for all the sounds to work -ADDRESS_MAP_END +void taotaido_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x800000, 0x803fff).ram().w(this, FUNC(taotaido_state::bgvideoram_w)).share("bgram"); // bg ram? + map(0xa00000, 0xa01fff).ram().share("spriteram"); // sprite ram + map(0xc00000, 0xc0ffff).ram().share("spriteram2"); // sprite tile lookup ram + map(0xfe0000, 0xfeffff).ram(); // main ram + map(0xffc000, 0xffcfff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); // palette ram + map(0xffe000, 0xffe3ff).ram().share("scrollram"); // rowscroll / rowselect / scroll ram + map(0xffff80, 0xffff9f).rw("io1", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff); + map(0xffffa0, 0xffffbf).rw("io2", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff); + map(0xffff00, 0xffff0f).w(this, FUNC(taotaido_state::tileregs_w)); + map(0xffff10, 0xffff11).nopw(); // unknown + map(0xffff20, 0xffff21).nopw(); // unknown - flip screen related + map(0xffff40, 0xffff47).w(this, FUNC(taotaido_state::sprite_character_bank_select_w)); + map(0xffffc1, 0xffffc1).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // seems right + map(0xffffe0, 0xffffe1).r(this, FUNC(taotaido_state::pending_command_r)); // guess - seems to be needed for all the sounds to work +} /* sound cpu - same as aerofgt */ @@ -122,19 +123,21 @@ WRITE8_MEMBER(taotaido_state::sh_bankswitch_w) membank("soundbank")->set_entry(data & 0x03); } -ADDRESS_MAP_START(taotaido_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taotaido_state::sound_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void taotaido_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("soundbank"); +} + +void taotaido_state::sound_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x04, 0x04).w(this, FUNC(taotaido_state::sh_bankswitch_w)); + map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( taotaido ) diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp index 0f807177b1d..09ecf71b679 100644 --- a/src/mame/drivers/tapatune.cpp +++ b/src/mame/drivers/tapatune.cpp @@ -280,41 +280,44 @@ READ8_MEMBER(tapatune_state::read_data_from_68k) * *************************************/ -ADDRESS_MAP_START(tapatune_state::video_map) - AM_RANGE(0x000000, 0x2fffff) AM_ROM - AM_RANGE(0x300000, 0x31ffff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x320000, 0x33ffff) AM_RAM - AM_RANGE(0x400000, 0x400003) AM_READWRITE(read_from_z80, write_to_z80) - AM_RANGE(0x400010, 0x400011) AM_NOP // Watchdog? - AM_RANGE(0x600000, 0x600005) AM_WRITE(palette_w) - AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0xff00) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tapatune_state::maincpu_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tapatune_state::maincpu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(bsmt_data_lo_w) - AM_RANGE(0x08, 0x08) AM_WRITE(bsmt_data_hi_w) - AM_RANGE(0x10, 0x10) AM_WRITE(bsmt_reg_w) - AM_RANGE(0x18, 0x18) AM_WRITE(controls_mux) - AM_RANGE(0x20, 0x20) AM_READ(sound_irq_clear) - AM_RANGE(0x28, 0x28) AM_READ(status_r) - AM_RANGE(0x30, 0x30) AM_READ(controls_r) - AM_RANGE(0x38, 0x38) AM_READ_PORT("COINS") - AM_RANGE(0x60, 0x60) AM_WRITE(write_index_to_68k) - AM_RANGE(0x61, 0x61) AM_WRITE(write_data_to_68k) - AM_RANGE(0x63, 0x63) AM_WRITE(lamps_w) - AM_RANGE(0x68, 0x68) AM_READ(read_index_from_68k) - AM_RANGE(0x69, 0x69) AM_READ(read_data_from_68k) - AM_RANGE(0x6b, 0x6b) AM_READ(special_r) -ADDRESS_MAP_END +void tapatune_state::video_map(address_map &map) +{ + map(0x000000, 0x2fffff).rom(); + map(0x300000, 0x31ffff).ram().share("videoram"); + map(0x320000, 0x33ffff).ram(); + map(0x400000, 0x400003).rw(this, FUNC(tapatune_state::read_from_z80), FUNC(tapatune_state::write_to_z80)); + map(0x400010, 0x400011).noprw(); // Watchdog? + map(0x600000, 0x600005).w(this, FUNC(tapatune_state::palette_w)); + map(0x800000, 0x800000).w("crtc", FUNC(mc6845_device::address_w)); + map(0x800002, 0x800002).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} + + +void tapatune_state::maincpu_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().nopw(); + map(0xe000, 0xffff).ram().share("nvram"); +} + + +void tapatune_state::maincpu_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(tapatune_state::bsmt_data_lo_w)); + map(0x08, 0x08).w(this, FUNC(tapatune_state::bsmt_data_hi_w)); + map(0x10, 0x10).w(this, FUNC(tapatune_state::bsmt_reg_w)); + map(0x18, 0x18).w(this, FUNC(tapatune_state::controls_mux)); + map(0x20, 0x20).r(this, FUNC(tapatune_state::sound_irq_clear)); + map(0x28, 0x28).r(this, FUNC(tapatune_state::status_r)); + map(0x30, 0x30).r(this, FUNC(tapatune_state::controls_r)); + map(0x38, 0x38).portr("COINS"); + map(0x60, 0x60).w(this, FUNC(tapatune_state::write_index_to_68k)); + map(0x61, 0x61).w(this, FUNC(tapatune_state::write_data_to_68k)); + map(0x63, 0x63).w(this, FUNC(tapatune_state::lamps_w)); + map(0x68, 0x68).r(this, FUNC(tapatune_state::read_index_from_68k)); + map(0x69, 0x69).r(this, FUNC(tapatune_state::read_data_from_68k)); + map(0x6b, 0x6b).r(this, FUNC(tapatune_state::special_r)); +} /************************************* diff --git a/src/mame/drivers/targeth.cpp b/src/mame/drivers/targeth.cpp index 9a4f0417c6c..3da07cfb23a 100644 --- a/src/mame/drivers/targeth.cpp +++ b/src/mame/drivers/targeth.cpp @@ -138,39 +138,42 @@ READ8_MEMBER(targeth_state::shareram_r) } -ADDRESS_MAP_START(targeth_state::mcu_hostmem_map) - AM_RANGE(0x8000, 0xffff) AM_READWRITE(shareram_r, shareram_w) // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(targeth_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x108000, 0x108001) AM_READ_PORT("GUNX1") - AM_RANGE(0x108002, 0x108003) AM_READ_PORT("GUNY1") - AM_RANGE(0x108004, 0x108005) AM_READ_PORT("GUNX2") - AM_RANGE(0x108006, 0x108007) AM_READ_PORT("GUNY2") - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR Video INT */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("SYSTEM") /* Coins, Start & Fire buttons */ - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SERVICE") /* Service & Guns Reload? */ - AM_RANGE(0x70000a, 0x70000b) AM_SELECT(0x000070) AM_WRITE(output_latch_w) - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */ - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status register */ - AM_RANGE(0x700010, 0x700011) AM_WRITENOP /* ??? Guns reload related? */ - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(targeth_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void targeth_state::mcu_hostmem_map(address_map &map) +{ + map(0x8000, 0xffff).rw(this, FUNC(targeth_state::shareram_r), FUNC(targeth_state::shareram_w)); // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM +} + +void targeth_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x103fff).ram().w(this, FUNC(targeth_state::vram_w)).share("videoram"); /* Video RAM */ + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ + map(0x108000, 0x108001).portr("GUNX1"); + map(0x108002, 0x108003).portr("GUNY1"); + map(0x108004, 0x108005).portr("GUNX2"); + map(0x108006, 0x108007).portr("GUNY2"); + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ + map(0x10800c, 0x10800d).nopw(); /* CLR Video INT */ + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW2"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700006, 0x700007).portr("SYSTEM"); /* Coins, Start & Fire buttons */ + map(0x700008, 0x700009).portr("SERVICE"); /* Service & Guns Reload? */ + map(0x70000a, 0x70000b).select(0x000070).w(this, FUNC(targeth_state::output_latch_w)); + map(0x70000c, 0x70000d).w(this, FUNC(targeth_state::OKIM6295_bankswitch_w)); /* OKI6295 bankswitch */ + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */ + map(0x700010, 0x700011).nopw(); /* ??? Guns reload related? */ + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */ +} + + +void targeth_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} void targeth_state::machine_start() { diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp index 2101853715c..a50c095dde5 100644 --- a/src/mame/drivers/tasman.cpp +++ b/src/mame/drivers/tasman.cpp @@ -208,71 +208,73 @@ WRITE8_MEMBER(kongambl_state::kongambl_ff_w) // printf("%02x\n",data); } -ADDRESS_MAP_START(kongambl_state::kongambl_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program - AM_RANGE(0x100000, 0x11ffff) AM_RAM // work RAM +void kongambl_state::kongambl_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // main program + map(0x100000, 0x11ffff).ram(); // work RAM - AM_RANGE(0x200000, 0x207fff) AM_RAM // backup RAM 24F + map(0x200000, 0x207fff).ram(); // backup RAM 24F - AM_RANGE(0x300000, 0x307fff) AM_RAM // backup RAM 24H + map(0x300000, 0x307fff).ram(); // backup RAM 24H // override konami chips with custom areas until that code is removed - AM_RANGE(0x400000, 0x401fff) AM_ROM AM_REGION("gfx1",0) - AM_RANGE(0x420000, 0x43ffff) AM_RAM AM_SHARE("vram") + map(0x400000, 0x401fff).rom().region("gfx1", 0); + map(0x420000, 0x43ffff).ram().share("vram"); //AM_RANGE(0x480000, 0x48003f) AM_RAM // vregs //0x400000 0x400001 "13M" even addresses //0x400002,0x400003 "13J" odd addresses // AM_RANGE(0x400000, 0x401fff) AM_DEVREAD("k056832", k056832_device, rom_long_r) // AM_RANGE(0x420000, 0x43ffff) AM_DEVREADWRITE("k056832", k056832_device, unpaged_ram_long_r, unpaged_ram_long_w) - AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device, long_w) + map(0x480000, 0x48003f).w(m_k056832, FUNC(k056832_device::long_w)); - AM_RANGE(0x440000, 0x443fff) AM_RAM // OBJ RAM + map(0x440000, 0x443fff).ram(); // OBJ RAM - AM_RANGE(0x460000, 0x47ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") + map(0x460000, 0x47ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); - AM_RANGE(0x4b0000, 0x4b001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0xff00ff00) + map(0x4b0000, 0x4b001f).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)).umask32(0xff00ff00); - AM_RANGE(0x4c0000, 0x4c0007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff) + map(0x4c0000, 0x4c0007).w(m_k055673, FUNC(k055673_device::k053246_word_w)); //AM_RANGE(0x4c4000, 0x4c4003) AM_WRITENOP //AM_RANGE(0x4c4004, 0x4c4007) AM_WRITENOP //AM_RANGE(0x4c801c, 0x4c801f) AM_WRITENOP //AM_RANGE(0x4cc01c, 0x4cc01f) AM_WRITENOP - AM_RANGE(0x4cc000, 0x4cc00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff) + map(0x4cc000, 0x4cc00f).r(m_k055673, FUNC(k055673_device::k055673_rom_word_r)); - AM_RANGE(0x4d0000, 0x4d0003) AM_WRITE8(kongambl_ff_w,0xff000000) + map(0x4d0000, 0x4d0000).w(this, FUNC(kongambl_state::kongambl_ff_w)); - AM_RANGE(0x500000, 0x5007ff) AM_RAM - AM_RANGE(0x500380, 0x500383) AM_READ(test_r) + map(0x500000, 0x5007ff).ram(); + map(0x500380, 0x500383).r(this, FUNC(kongambl_state::test_r)); // AM_RANGE(0x500400, 0x500403) AM_NOP //dual port? // AM_RANGE(0x500420, 0x500423) AM_NOP //dual port? // AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k? - AM_RANGE(0x580000, 0x580007) AM_READ(test_r) + map(0x580000, 0x580007).r(this, FUNC(kongambl_state::test_r)); - AM_RANGE(0x600000, 0x60000f) AM_READ(test_r) + map(0x600000, 0x60000f).r(this, FUNC(kongambl_state::test_r)); - AM_RANGE(0x700000, 0x700003) AM_READ(eeprom_r) - AM_RANGE(0x700004, 0x700007) AM_READ_PORT("IN1") - AM_RANGE(0x700008, 0x70000b) AM_READ_PORT("IN3") - AM_RANGE(0x780000, 0x780003) AM_WRITE8(eeprom_w,0xffffffff) + map(0x700000, 0x700003).r(this, FUNC(kongambl_state::eeprom_r)); + map(0x700004, 0x700007).portr("IN1"); + map(0x700008, 0x70000b).portr("IN3"); + map(0x780000, 0x780003).w(this, FUNC(kongambl_state::eeprom_w)); //AM_RANGE(0x780004, 0x780007) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(kongambl_state::kongamaud_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // main program (mirrored?) - AM_RANGE(0x100000, 0x10ffff) AM_RAM // work RAM - AM_RANGE(0x180000, 0x180001) AM_WRITENOP - AM_RANGE(0x190000, 0x190001) AM_WRITENOP - AM_RANGE(0x1a0000, 0x1a0001) AM_WRITENOP - AM_RANGE(0x1b0000, 0x1b0001) AM_READNOP - AM_RANGE(0x1c0000, 0x1c0001) AM_READNOP - AM_RANGE(0x200000, 0x2000ff) AM_RAM // unknown (YMZ280b? Shared with 68020?) - AM_RANGE(0x280000, 0x2800ff) AM_RAM - AM_RANGE(0x300000, 0x3007ff) AM_RAM -ADDRESS_MAP_END +} + +void kongambl_state::kongamaud_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); // main program (mirrored?) + map(0x100000, 0x10ffff).ram(); // work RAM + map(0x180000, 0x180001).nopw(); + map(0x190000, 0x190001).nopw(); + map(0x1a0000, 0x1a0001).nopw(); + map(0x1b0000, 0x1b0001).nopr(); + map(0x1c0000, 0x1c0001).nopr(); + map(0x200000, 0x2000ff).ram(); // unknown (YMZ280b? Shared with 68020?) + map(0x280000, 0x2800ff).ram(); + map(0x300000, 0x3007ff).ram(); +} diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp index f2b3603e58f..82438786cf3 100644 --- a/src/mame/drivers/tatsumi.cpp +++ b/src/mame/drivers/tatsumi.cpp @@ -192,178 +192,190 @@ WRITE16_MEMBER(cyclwarr_state::cyclwarr_sound_w) /***************************************************************************/ -ADDRESS_MAP_START(apache3_state::apache3_v30_map) - AM_RANGE(0x00000, 0x03fff) AM_RAM - AM_RANGE(0x04000, 0x07fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x08000, 0x08fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0c000, 0x0dfff) AM_RAM_WRITE(text_w) AM_SHARE("videoram") - AM_RANGE(0x0e800, 0x0e803) AM_WRITENOP // CRT - AM_RANGE(0x0f000, 0x0f001) AM_READ_PORT("DSW") - AM_RANGE(0x0f000, 0x0f001) AM_WRITENOP // todo - AM_RANGE(0x0f800, 0x0f801) AM_READWRITE(apache3_bank_r, apache3_bank_w) - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(apache3_v30_v20_r, apache3_v30_v20_w) - AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(tatsumi_v30_68000_r, tatsumi_v30_68000_w) - AM_RANGE(0xa0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(apache3_state::apache3_68000_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x80000, 0x83fff) AM_RAM AM_SHARE("68k_ram") - AM_RANGE(0x90000, 0x93fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9a000, 0x9a1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram") - AM_RANGE(0xa0000, 0xa0001) AM_WRITE(apache3_rotate_w) // /BNKCS - AM_RANGE(0xb0000, 0xb0001) AM_WRITE(apache3_z80_ctrl_w) - AM_RANGE(0xc0000, 0xc0001) AM_WRITE(apache3_road_z_w) // /LINCS - AM_RANGE(0xd0000, 0xdffff) AM_RAM AM_SHARE("apache3_g_ram") // /GRDCS - AM_RANGE(0xe0000, 0xe7fff) AM_READWRITE(apache3_z80_r, apache3_z80_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(apache3_state::apache3_v20_map) - AM_RANGE(0x00000, 0x01fff) AM_RAM - AM_RANGE(0x04000, 0x04003) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw - AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) - AM_RANGE(0x0a000, 0x0a000) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select - AM_RANGE(0xf0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(apache3_state::apache3_z80_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("apache3_z80_ram") - AM_RANGE(0x8000, 0xffff) AM_WRITE(apache3_road_x_w) -ADDRESS_MAP_END +void apache3_state::apache3_v30_map(address_map &map) +{ + map(0x00000, 0x03fff).ram(); + map(0x04000, 0x07fff).ram().share("nvram"); + map(0x08000, 0x08fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0c000, 0x0dfff).ram().w(this, FUNC(apache3_state::text_w)).share("videoram"); + map(0x0e800, 0x0e803).nopw(); // CRT + map(0x0f000, 0x0f001).portr("DSW"); + map(0x0f000, 0x0f001).nopw(); // todo + map(0x0f800, 0x0f801).rw(this, FUNC(apache3_state::apache3_bank_r), FUNC(apache3_state::apache3_bank_w)); + map(0x10000, 0x1ffff).rw(this, FUNC(apache3_state::apache3_v30_v20_r), FUNC(apache3_state::apache3_v30_v20_w)); + map(0x20000, 0x2ffff).rw(this, FUNC(apache3_state::tatsumi_v30_68000_r), FUNC(apache3_state::tatsumi_v30_68000_w)); + map(0xa0000, 0xfffff).rom(); +} + +void apache3_state::apache3_68000_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0x80000, 0x83fff).ram().share("68k_ram"); + map(0x90000, 0x93fff).ram().share("spriteram"); + map(0x9a000, 0x9a1ff).w(this, FUNC(apache3_state::tatsumi_sprite_control_w)).share("sprite_ctlram"); + map(0xa0000, 0xa0001).w(this, FUNC(apache3_state::apache3_rotate_w)); // /BNKCS + map(0xb0000, 0xb0001).w(this, FUNC(apache3_state::apache3_z80_ctrl_w)); + map(0xc0000, 0xc0001).w(this, FUNC(apache3_state::apache3_road_z_w)); // /LINCS + map(0xd0000, 0xdffff).ram().share("apache3_g_ram"); // /GRDCS + map(0xe0000, 0xe7fff).rw(this, FUNC(apache3_state::apache3_z80_r), FUNC(apache3_state::apache3_z80_w)); +} + +void apache3_state::apache3_v20_map(address_map &map) +{ + map(0x00000, 0x01fff).ram(); + map(0x04000, 0x04003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x06000, 0x06001).portr("IN0"); // esw + map(0x08000, 0x08001).r(this, FUNC(apache3_state::tatsumi_hack_ym2151_r)).w("ymsnd", FUNC(ym2151_device::write)); + map(0x0a000, 0x0a000).r(this, FUNC(apache3_state::tatsumi_hack_oki_r)).w(m_oki, FUNC(okim6295_device::write)); + map(0x0e000, 0x0e007).rw(this, FUNC(apache3_state::apache3_adc_r), FUNC(apache3_state::apache3_adc_w)); //adc select + map(0xf0000, 0xfffff).rom(); +} + +void apache3_state::apache3_z80_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("apache3_z80_ram"); + map(0x8000, 0xffff).w(this, FUNC(apache3_state::apache3_road_x_w)); +} /*****************************************************************/ -ADDRESS_MAP_START(roundup5_state::roundup5_v30_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM - AM_RANGE(0x08000, 0x0bfff) AM_RAM_WRITE(text_w) AM_SHARE("videoram") - AM_RANGE(0x0c000, 0x0c003) AM_WRITE(roundup5_crt_w) - AM_RANGE(0x0d000, 0x0d001) AM_READ_PORT("DSW") - AM_RANGE(0x0d400, 0x0d40f) AM_WRITEONLY AM_SHARE("ru5_unknown0") - AM_RANGE(0x0d800, 0x0d801) AM_WRITEONLY AM_SHARE("ru5_unknown1") // VRAM2 X scroll (todo) - AM_RANGE(0x0dc00, 0x0dc01) AM_WRITEONLY AM_SHARE("ru5_unknown2") // VRAM2 Y scroll (todo) - AM_RANGE(0x0e000, 0x0e001) AM_WRITE(roundup5_control_w) - AM_RANGE(0x0f000, 0x0ffff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(roundup_v30_z80_r, roundup_v30_z80_w) - AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(tatsumi_v30_68000_r, tatsumi_v30_68000_w) - AM_RANGE(0x30000, 0x3ffff) AM_READWRITE(roundup5_vram_r, roundup5_vram_w) - AM_RANGE(0x80000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(roundup5_state::roundup5_68000_map) - AM_RANGE(0x00000, 0x7ffff) AM_ROM - AM_RANGE(0x80000, 0x83fff) AM_RAM AM_SHARE("68k_ram") - AM_RANGE(0x90000, 0x93fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9a000, 0x9a1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram") - AM_RANGE(0xa0000, 0xa0fff) AM_RAM AM_SHARE("roundup_r_ram") // Road control data - AM_RANGE(0xb0000, 0xb0fff) AM_RAM AM_SHARE("roundup_p_ram") // Road pixel data - AM_RANGE(0xc0000, 0xc0fff) AM_RAM AM_SHARE("roundup_l_ram") // Road colour data - AM_RANGE(0xd0000, 0xd0003) AM_WRITE(roundup5_d0000_w) AM_SHARE("ru5_d0000_ram") - AM_RANGE(0xe0000, 0xe0001) AM_WRITE(roundup5_e0000_w) AM_SHARE("ru5_e0000_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(roundup5_state::roundup5_z80_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffef) AM_RAM - AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) - AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xfff8, 0xfffb) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xfffc, 0xfffc) AM_READ_PORT("STICKX") -ADDRESS_MAP_END +void roundup5_state::roundup5_v30_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x08000, 0x0bfff).ram().w(this, FUNC(roundup5_state::text_w)).share("videoram"); + map(0x0c000, 0x0c003).w(this, FUNC(roundup5_state::roundup5_crt_w)); + map(0x0d000, 0x0d001).portr("DSW"); + map(0x0d400, 0x0d40f).writeonly().share("ru5_unknown0"); + map(0x0d800, 0x0d801).writeonly().share("ru5_unknown1"); // VRAM2 X scroll (todo) + map(0x0dc00, 0x0dc01).writeonly().share("ru5_unknown2"); // VRAM2 Y scroll (todo) + map(0x0e000, 0x0e001).w(this, FUNC(roundup5_state::roundup5_control_w)); + map(0x0f000, 0x0ffff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x10000, 0x1ffff).rw(this, FUNC(roundup5_state::roundup_v30_z80_r), FUNC(roundup5_state::roundup_v30_z80_w)); + map(0x20000, 0x2ffff).rw(this, FUNC(roundup5_state::tatsumi_v30_68000_r), FUNC(roundup5_state::tatsumi_v30_68000_w)); + map(0x30000, 0x3ffff).rw(this, FUNC(roundup5_state::roundup5_vram_r), FUNC(roundup5_state::roundup5_vram_w)); + map(0x80000, 0xfffff).rom(); +} + +void roundup5_state::roundup5_68000_map(address_map &map) +{ + map(0x00000, 0x7ffff).rom(); + map(0x80000, 0x83fff).ram().share("68k_ram"); + map(0x90000, 0x93fff).ram().share("spriteram"); + map(0x9a000, 0x9a1ff).w(this, FUNC(roundup5_state::tatsumi_sprite_control_w)).share("sprite_ctlram"); + map(0xa0000, 0xa0fff).ram().share("roundup_r_ram"); // Road control data + map(0xb0000, 0xb0fff).ram().share("roundup_p_ram"); // Road pixel data + map(0xc0000, 0xc0fff).ram().share("roundup_l_ram"); // Road colour data + map(0xd0000, 0xd0003).w(this, FUNC(roundup5_state::roundup5_d0000_w)).share("ru5_d0000_ram"); + map(0xe0000, 0xe0001).w(this, FUNC(roundup5_state::roundup5_e0000_w)).share("ru5_e0000_ram"); +} + +void roundup5_state::roundup5_z80_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xffef).ram(); + map(0xfff0, 0xfff1).r(this, FUNC(roundup5_state::tatsumi_hack_ym2151_r)).w("ymsnd", FUNC(ym2151_device::write)); + map(0xfff4, 0xfff4).r(this, FUNC(roundup5_state::tatsumi_hack_oki_r)).w(m_oki, FUNC(okim6295_device::write)); + map(0xfff8, 0xfffb).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfffc, 0xfffc).portr("STICKX"); +} /******************************************************************************/ -ADDRESS_MAP_START(cyclwarr_state::cyclwarr_68000a_map) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpua_ram") - AM_RANGE(0x03e000, 0x03efff) AM_RAM - AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("cw_cpub_ram") - AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w) AM_SHARE("cw_videoram1") - AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w) AM_SHARE("cw_videoram0") - - AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w) - AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w) - AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) - - AM_RANGE(0x0b8000, 0x0b8001) AM_WRITE(cyclwarr_sound_w) - AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram") - AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram") - AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x1bffff) AM_ROMBANK("bank2") /* CPU B ROM */ - AM_RANGE(0x2c0000, 0x33ffff) AM_ROMBANK("bank1") /* CPU A ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cyclwarr_state::cyclwarr_68000b_map) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpub_ram") - - AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w) - AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w) - - AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w) - AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w) - AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) - - AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) - AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) - AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x1bffff) AM_ROMBANK("bank2") /* CPU B ROM */ - AM_RANGE(0x2c0000, 0x33ffff) AM_ROMBANK("bank1") /* CPU A ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cyclwarr_state::cyclwarr_z80_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffef) AM_RAM - AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) - AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE(0xfffc, 0xfffc) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP -ADDRESS_MAP_END +void cyclwarr_state::cyclwarr_68000a_map(address_map &map) +{ + map(0x000000, 0x00ffff).ram().share("cw_cpua_ram"); + map(0x03e000, 0x03efff).ram(); + map(0x040000, 0x04ffff).ram().share("cw_cpub_ram"); + map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w)).share("cw_videoram1"); + map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w)).share("cw_videoram0"); + + map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w)); + map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w)); + map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w)); + + map(0x0b8000, 0x0b8001).w(this, FUNC(cyclwarr_state::cyclwarr_sound_w)); + map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)).share("spriteram"); + map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w)).share("sprite_ctlram"); + map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x1bffff).bankr("bank2"); /* CPU B ROM */ + map(0x2c0000, 0x33ffff).bankr("bank1"); /* CPU A ROM */ +} + +void cyclwarr_state::cyclwarr_68000b_map(address_map &map) +{ + map(0x000000, 0x00ffff).ram().share("cw_cpub_ram"); + + map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w)); + map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w)); + + map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w)); + map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w)); + map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w)); + + map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)); + map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w)); + map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x1bffff).bankr("bank2"); /* CPU B ROM */ + map(0x2c0000, 0x33ffff).bankr("bank1"); /* CPU A ROM */ +} + +void cyclwarr_state::cyclwarr_z80_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xffef).ram(); + map(0xfff0, 0xfff1).r(this, FUNC(cyclwarr_state::tatsumi_hack_ym2151_r)).w("ymsnd", FUNC(ym2151_device::write)); + map(0xfff4, 0xfff4).r(this, FUNC(cyclwarr_state::tatsumi_hack_oki_r)).w(m_oki, FUNC(okim6295_device::write)); + map(0xfffc, 0xfffc).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xfffe, 0xfffe).nopw(); +} /******************************************************************************/ -ADDRESS_MAP_START(cyclwarr_state::bigfight_68000a_map) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpua_ram") - - AM_RANGE(0x03e000, 0x03efff) AM_RAM - AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_SHARE("cw_cpub_ram") - - AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w) AM_SHARE("cw_videoram1") - AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w) AM_SHARE("cw_videoram0") - - AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w) - AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w) - AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) - - AM_RANGE(0x0b8000, 0x0b8001) AM_WRITE(cyclwarr_sound_w) - AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) AM_SHARE("spriteram") - AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) AM_SHARE("sprite_ctlram") - AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("bank2") /* CPU A ROM */ - AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* CPU B ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(cyclwarr_state::bigfight_68000b_map) - AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("cw_cpub_ram") - AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(cyclwarr_videoram1_r, cyclwarr_videoram1_w) - AM_RANGE(0x090000, 0x09ffff) AM_READWRITE(cyclwarr_videoram0_r, cyclwarr_videoram0_w) - AM_RANGE(0x0a2000, 0x0a2007) AM_WRITE(bigfight_a20000_w) - AM_RANGE(0x0a4000, 0x0a4001) AM_WRITE(bigfight_a40000_w) - AM_RANGE(0x0a6000, 0x0a6001) AM_WRITE(bigfight_a60000_w) - - AM_RANGE(0x0b9000, 0x0b900f) AM_DEVREADWRITE8("io1", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0ba000, 0x0ba00f) AM_DEVREADWRITE8("io2", cxd1095_device, read, write, 0x00ff).cswidth(16) - AM_RANGE(0x0c0000, 0x0c3fff) AM_READWRITE(cyclwarr_sprite_r, cyclwarr_sprite_w) - AM_RANGE(0x0ca000, 0x0ca1ff) AM_WRITE(tatsumi_sprite_control_w) - AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("bank2") /* CPU A ROM */ - AM_RANGE(0x200000, 0x27ffff) AM_ROMBANK("bank1") /* CPU B ROM */ -ADDRESS_MAP_END +void cyclwarr_state::bigfight_68000a_map(address_map &map) +{ + map(0x000000, 0x00ffff).ram().share("cw_cpua_ram"); + + map(0x03e000, 0x03efff).ram(); + map(0x040000, 0x04ffff).ram().share("cw_cpub_ram"); + + map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w)).share("cw_videoram1"); + map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w)).share("cw_videoram0"); + + map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w)); + map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w)); + map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w)); + + map(0x0b8000, 0x0b8001).w(this, FUNC(cyclwarr_state::cyclwarr_sound_w)); + map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)).share("spriteram"); + map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w)).share("sprite_ctlram"); + map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x100000, 0x17ffff).bankr("bank2"); /* CPU A ROM */ + map(0x200000, 0x27ffff).bankr("bank1"); /* CPU B ROM */ +} + +void cyclwarr_state::bigfight_68000b_map(address_map &map) +{ + map(0x000000, 0x00ffff).ram().share("cw_cpub_ram"); + map(0x080000, 0x08ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram1_r), FUNC(cyclwarr_state::cyclwarr_videoram1_w)); + map(0x090000, 0x09ffff).rw(this, FUNC(cyclwarr_state::cyclwarr_videoram0_r), FUNC(cyclwarr_state::cyclwarr_videoram0_w)); + map(0x0a2000, 0x0a2007).w(this, FUNC(cyclwarr_state::bigfight_a20000_w)); + map(0x0a4000, 0x0a4001).w(this, FUNC(cyclwarr_state::bigfight_a40000_w)); + map(0x0a6000, 0x0a6001).w(this, FUNC(cyclwarr_state::bigfight_a60000_w)); + + map(0x0b9000, 0x0b900f).rw("io1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0ba000, 0x0ba00f).rw("io2", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff).cswidth(16); + map(0x0c0000, 0x0c3fff).rw(this, FUNC(cyclwarr_state::cyclwarr_sprite_r), FUNC(cyclwarr_state::cyclwarr_sprite_w)); + map(0x0ca000, 0x0ca1ff).w(this, FUNC(cyclwarr_state::tatsumi_sprite_control_w)); + map(0x0d0000, 0x0d3fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x100000, 0x17ffff).bankr("bank2"); /* CPU A ROM */ + map(0x200000, 0x27ffff).bankr("bank1"); /* CPU B ROM */ +} /******************************************************************************/ diff --git a/src/mame/drivers/tattack.cpp b/src/mame/drivers/tattack.cpp index 3948f60b36c..f355eb75e30 100644 --- a/src/mame/drivers/tattack.cpp +++ b/src/mame/drivers/tattack.cpp @@ -264,20 +264,21 @@ WRITE8_MEMBER(tattack_state::sound_w) } } -ADDRESS_MAP_START(tattack_state::tattack_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_READ_PORT("AN_PADDLE") // $315, checks again with same memory, loops if different (?) - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW2") - AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("colorram") // color map ? something else .. only bits 1-3 are used - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW1") // dsw ? something else ? - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("INPUTS") AM_WRITE(sound_w) // sound - AM_RANGE(0xc001, 0xc001) AM_WRITE(brick_dma_w) // bit 7 = strobe ($302) - AM_RANGE(0xc002, 0xc002) AM_WRITENOP // same as sound port, outputs? - AM_RANGE(0xc005, 0xc005) AM_WRITE(paddle_w) - AM_RANGE(0xc006, 0xc007) AM_WRITE(ball_w) - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END +void tattack_state::tattack_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x4000, 0x4000).portr("AN_PADDLE"); // $315, checks again with same memory, loops if different (?) + map(0x5000, 0x53ff).ram().share("videoram"); + map(0x6000, 0x6000).portr("DSW2"); + map(0x7000, 0x73ff).ram().share("colorram"); // color map ? something else .. only bits 1-3 are used + map(0xa000, 0xa000).portr("DSW1"); // dsw ? something else ? + map(0xc000, 0xc000).portr("INPUTS").w(this, FUNC(tattack_state::sound_w)); // sound + map(0xc001, 0xc001).w(this, FUNC(tattack_state::brick_dma_w)); // bit 7 = strobe ($302) + map(0xc002, 0xc002).nopw(); // same as sound port, outputs? + map(0xc005, 0xc005).w(this, FUNC(tattack_state::paddle_w)); + map(0xc006, 0xc007).w(this, FUNC(tattack_state::ball_w)); + map(0xe000, 0xe3ff).ram().share("ram"); +} static INPUT_PORTS_START( tattack ) PORT_START("INPUTS") diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp index 37916118257..b5ea7a9184c 100644 --- a/src/mame/drivers/tavernie.cpp +++ b/src/mame/drivers/tavernie.cpp @@ -116,30 +116,32 @@ private: }; -ADDRESS_MAP_START(tavernie_state::cpu09_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x1000, 0x1fff) AM_NOP - AM_RANGE(0xeb00, 0xeb03) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xeb04, 0xeb05) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xeb08, 0xeb0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xec00, 0xefff) AM_RAM // 1Kx8 RAM MK4118 - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tavernie_state::ivg09_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia_ivg", pia6821_device, read, write) - AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("fdc", fd1795_device, read, write) - AM_RANGE(0xe080, 0xe080) AM_WRITE(ds_w) - AM_RANGE(0xeb00, 0xeb03) AM_DEVREADWRITE("pia", pia6821_device, read, write) - AM_RANGE(0xeb04, 0xeb05) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0xeb08, 0xeb0f) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xec00, 0xefff) AM_RAM // 1Kx8 RAM MK4118 - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void tavernie_state::cpu09_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x1000, 0x1fff).noprw(); + map(0xeb00, 0xeb03).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xeb04, 0xeb05).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xeb08, 0xeb0f).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xec00, 0xefff).ram(); // 1Kx8 RAM MK4118 + map(0xf000, 0xffff).rom().region("roms", 0); +} + +void tavernie_state::ivg09_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x1000, 0x1fff).ram().share("videoram"); + map(0x2000, 0x2003).rw(m_pia_ivg, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2080, 0x2080).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0x2081, 0x2081).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xe000, 0xe003).rw(m_fdc, FUNC(fd1795_device::read), FUNC(fd1795_device::write)); + map(0xe080, 0xe080).w(this, FUNC(tavernie_state::ds_w)); + map(0xeb00, 0xeb03).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xeb04, 0xeb05).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0xeb08, 0xeb0f).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xec00, 0xefff).ram(); // 1Kx8 RAM MK4118 + map(0xf000, 0xffff).rom().region("roms", 0); +} /* Input ports */ diff --git a/src/mame/drivers/taxidriv.cpp b/src/mame/drivers/taxidriv.cpp index 808e0636cea..cdaed919d08 100644 --- a/src/mame/drivers/taxidriv.cpp +++ b/src/mame/drivers/taxidriv.cpp @@ -110,55 +110,59 @@ WRITE8_MEMBER(taxidriv_state::p8910_0b_w) m_s4 = data & 1; } -ADDRESS_MAP_START(taxidriv_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM /* ??? */ - AM_RANGE(0x9000, 0x9fff) AM_RAM /* ??? */ - AM_RANGE(0xa000, 0xafff) AM_RAM /* ??? */ - AM_RANGE(0xb000, 0xbfff) AM_RAM /* ??? */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("vram4") /* radar bitmap */ - AM_RANGE(0xc800, 0xcfff) AM_WRITEONLY AM_SHARE("vram5") /* "sprite1" bitmap */ - AM_RANGE(0xd000, 0xd7ff) AM_WRITEONLY AM_SHARE("vram6") /* "sprite2" bitmap */ - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("vram7") /* "sprite3" bitmap */ - AM_RANGE(0xe000, 0xf3ff) AM_READONLY - AM_RANGE(0xe000, 0xe3ff) AM_WRITEONLY AM_SHARE("vram1") /* car tilemap */ - AM_RANGE(0xe400, 0xebff) AM_WRITEONLY AM_SHARE("vram2") /* bg1 tilemap */ - AM_RANGE(0xec00, 0xefff) AM_WRITEONLY AM_SHARE("vram0") /* fg tilemap */ - AM_RANGE(0xf000, 0xf3ff) AM_WRITEONLY AM_SHARE("vram3") /* bg2 tilemap */ - AM_RANGE(0xf400, 0xf403) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0xf480, 0xf483) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* "sprite1" placement */ - AM_RANGE(0xf500, 0xf503) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* "sprite2" placement */ - AM_RANGE(0xf580, 0xf583) AM_DEVREADWRITE("ppi8255_4", i8255_device, read, write) /* "sprite3" placement */ +void taxidriv_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); /* ??? */ + map(0x9000, 0x9fff).ram(); /* ??? */ + map(0xa000, 0xafff).ram(); /* ??? */ + map(0xb000, 0xbfff).ram(); /* ??? */ + map(0xc000, 0xc7ff).ram().share("vram4"); /* radar bitmap */ + map(0xc800, 0xcfff).writeonly().share("vram5"); /* "sprite1" bitmap */ + map(0xd000, 0xd7ff).writeonly().share("vram6"); /* "sprite2" bitmap */ + map(0xd800, 0xdfff).ram().share("vram7"); /* "sprite3" bitmap */ + map(0xe000, 0xf3ff).readonly(); + map(0xe000, 0xe3ff).writeonly().share("vram1"); /* car tilemap */ + map(0xe400, 0xebff).writeonly().share("vram2"); /* bg1 tilemap */ + map(0xec00, 0xefff).writeonly().share("vram0"); /* fg tilemap */ + map(0xf000, 0xf3ff).writeonly().share("vram3"); /* bg2 tilemap */ + map(0xf400, 0xf403).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf480, 0xf483).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* "sprite1" placement */ + map(0xf500, 0xf503).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* "sprite2" placement */ + map(0xf580, 0xf583).rw("ppi8255_4", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* "sprite3" placement */ //AM_RANGE(0xf780, 0xf781) AM_WRITEONLY /* more scroll registers? */ - AM_RANGE(0xf782, 0xf787) AM_WRITEONLY AM_SHARE("scroll") /* bg scroll (three copies always identical) */ - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taxidriv_state::cpu2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW0") - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW2") - AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P1") - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("P2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(taxidriv_state::cpu3_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2000) AM_READNOP /* irq ack? */ - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taxidriv_state::cpu3_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x01, 0x01) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x03, 0x03) AM_DEVREAD("ay2", ay8910_device, data_r) -ADDRESS_MAP_END + map(0xf782, 0xf787).writeonly().share("scroll"); /* bg scroll (three copies always identical) */ + map(0xf800, 0xffff).ram(); +} + +void taxidriv_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x67ff).ram(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa003).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe000).portr("DSW0"); + map(0xe001, 0xe001).portr("DSW1"); + map(0xe002, 0xe002).portr("DSW2"); + map(0xe003, 0xe003).portr("P1"); + map(0xe004, 0xe004).portr("P2"); +} + +void taxidriv_state::cpu3_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x2000).nopr(); /* irq ack? */ + map(0xfc00, 0xffff).ram(); +} + +void taxidriv_state::cpu3_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x01, 0x01).r("ay1", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x03, 0x03).r("ay2", FUNC(ay8910_device::data_r)); +} static INPUT_PORTS_START( taxidriv ) diff --git a/src/mame/drivers/tbowl.cpp b/src/mame/drivers/tbowl.cpp index 9b8d5ae3d5a..f0441cfdd7b 100644 --- a/src/mame/drivers/tbowl.cpp +++ b/src/mame/drivers/tbowl.cpp @@ -57,39 +57,40 @@ WRITE8_MEMBER(tbowl_state::boardc_bankswitch_w) /* Board B */ -ADDRESS_MAP_START(tbowl_state::_6206B_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram") - AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") +void tbowl_state::_6206B_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).ram().w(this, FUNC(tbowl_state::bg2videoram_w)).share("bg2videoram"); + map(0xc000, 0xdfff).ram().w(this, FUNC(tbowl_state::bgvideoram_w)).share("bgvideoram"); + map(0xe000, 0xefff).ram().w(this, FUNC(tbowl_state::txvideoram_w)).share("txvideoram"); // AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown_write) * written during start-up, not again */ - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("mainbank") - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("shared_ram") /* check */ - AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1") AM_WRITE(boardb_bankswitch_w) - AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("P2") + map(0xf000, 0xf7ff).bankr("mainbank"); + map(0xf800, 0xfbff).ram().share("shared_ram"); /* check */ + map(0xfc00, 0xfc00).portr("P1").w(this, FUNC(tbowl_state::boardb_bankswitch_w)); + map(0xfc01, 0xfc01).portr("P2"); // AM_RANGE(0xfc01, 0xfc01) AM_WRITE(unknown_write) /* written during start-up, not again */ - AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P3") + map(0xfc02, 0xfc02).portr("P3"); // AM_RANGE(0xfc02, 0xfc02) AM_WRITE(unknown_write) /* written during start-up, not again */ - AM_RANGE(0xfc03, 0xfc03) AM_READ_PORT("P4") AM_WRITE(coincounter_w) + map(0xfc03, 0xfc03).portr("P4").w(this, FUNC(tbowl_state::coincounter_w)); // AM_RANGE(0xfc05, 0xfc05) AM_WRITE(unknown_write) /* no idea */ // AM_RANGE(0xfc06, 0xfc06) AM_READ(dummy_r) /* Read During NMI */ - AM_RANGE(0xfc07, 0xfc07) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfc08, 0xfc08) AM_READ_PORT("DSW1") + map(0xfc07, 0xfc07).portr("SYSTEM"); + map(0xfc08, 0xfc08).portr("DSW1"); // AM_RANGE(0xfc08, 0xfc08) AM_WRITE(unknown_write) /* hardly used .. */ - AM_RANGE(0xfc09, 0xfc09) AM_READ_PORT("DSW2") - AM_RANGE(0xfc0a, 0xfc0a) AM_READ_PORT("DSW3") + map(0xfc09, 0xfc09).portr("DSW2"); + map(0xfc0a, 0xfc0a).portr("DSW3"); // AM_RANGE(0xfc0a, 0xfc0a) AM_WRITE(unknown_write) /* hardly used .. */ - AM_RANGE(0xfc0d, 0xfc0d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xfc10, 0xfc10) AM_WRITE(bg2xscroll_lo) - AM_RANGE(0xfc11, 0xfc11) AM_WRITE(bg2xscroll_hi) - AM_RANGE(0xfc12, 0xfc12) AM_WRITE(bg2yscroll_lo) - AM_RANGE(0xfc13, 0xfc13) AM_WRITE(bg2yscroll_hi) - AM_RANGE(0xfc14, 0xfc14) AM_WRITE(bgxscroll_lo) - AM_RANGE(0xfc15, 0xfc15) AM_WRITE(bgxscroll_hi) - AM_RANGE(0xfc16, 0xfc16) AM_WRITE(bgyscroll_lo) - AM_RANGE(0xfc17, 0xfc17) AM_WRITE(bgyscroll_hi) -ADDRESS_MAP_END + map(0xfc0d, 0xfc0d).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xfc10, 0xfc10).w(this, FUNC(tbowl_state::bg2xscroll_lo)); + map(0xfc11, 0xfc11).w(this, FUNC(tbowl_state::bg2xscroll_hi)); + map(0xfc12, 0xfc12).w(this, FUNC(tbowl_state::bg2yscroll_lo)); + map(0xfc13, 0xfc13).w(this, FUNC(tbowl_state::bg2yscroll_hi)); + map(0xfc14, 0xfc14).w(this, FUNC(tbowl_state::bgxscroll_lo)); + map(0xfc15, 0xfc15).w(this, FUNC(tbowl_state::bgxscroll_hi)); + map(0xfc16, 0xfc16).w(this, FUNC(tbowl_state::bgyscroll_lo)); + map(0xfc17, 0xfc17).w(this, FUNC(tbowl_state::bgyscroll_hi)); +} /* Board C */ WRITE8_MEMBER(tbowl_state::trigger_nmi) @@ -98,20 +99,21 @@ WRITE8_MEMBER(tbowl_state::trigger_nmi) m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(tbowl_state::_6206C_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_READONLY - AM_RANGE(0xc000, 0xd7ff) AM_WRITEONLY - AM_RANGE(0xd800, 0xdfff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xe000, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") // 2x palettes, one for each monitor? - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("subbank") - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(boardc_bankswitch_w) - AM_RANGE(0xfc01, 0xfc01) AM_WRITENOP /* ? */ - AM_RANGE(0xfc02, 0xfc02) AM_WRITE(trigger_nmi) /* ? */ - AM_RANGE(0xfc03, 0xfc03) AM_WRITENOP /* ? */ - AM_RANGE(0xfc06, 0xfc06) AM_WRITENOP /* ? */ -ADDRESS_MAP_END +void tbowl_state::_6206C_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).readonly(); + map(0xc000, 0xd7ff).writeonly(); + map(0xd800, 0xdfff).writeonly().share("spriteram"); + map(0xe000, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); // 2x palettes, one for each monitor? + map(0xf000, 0xf7ff).bankr("subbank"); + map(0xf800, 0xfbff).ram().share("shared_ram"); + map(0xfc00, 0xfc00).w(this, FUNC(tbowl_state::boardc_bankswitch_w)); + map(0xfc01, 0xfc01).nopw(); /* ? */ + map(0xfc02, 0xfc02).w(this, FUNC(tbowl_state::trigger_nmi)); /* ? */ + map(0xfc03, 0xfc03).nopw(); /* ? */ + map(0xfc06, 0xfc06).nopw(); /* ? */ +} /* Board A */ @@ -162,18 +164,19 @@ WRITE_LINE_MEMBER(tbowl_state::adpcm_int_2) adpcm_int(m_msm2, 1); } -ADDRESS_MAP_START(tbowl_state::_6206A_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ym1", ym3812_device, write) - AM_RANGE(0xd800, 0xd801) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0xe000, 0xe001) AM_WRITE(adpcm_end_w) - AM_RANGE(0xe002, 0xe003) AM_WRITE(adpcm_start_w) - AM_RANGE(0xe004, 0xe005) AM_WRITE(adpcm_vol_w) - AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0xe007, 0xe007) AM_WRITENOP // sound watchdog - AM_RANGE(0xe010, 0xe010) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void tbowl_state::_6206A_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd001).w("ym1", FUNC(ym3812_device::write)); + map(0xd800, 0xd801).w("ym2", FUNC(ym3812_device::write)); + map(0xe000, 0xe001).w(this, FUNC(tbowl_state::adpcm_end_w)); + map(0xe002, 0xe003).w(this, FUNC(tbowl_state::adpcm_start_w)); + map(0xe004, 0xe005).w(this, FUNC(tbowl_state::adpcm_vol_w)); + map(0xe006, 0xe006).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0xe007, 0xe007).nopw(); // sound watchdog + map(0xe010, 0xe010).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*** Input Ports diff --git a/src/mame/drivers/tceptor.cpp b/src/mame/drivers/tceptor.cpp index 763ebc6a2b0..0a03fffce8c 100644 --- a/src/mame/drivers/tceptor.cpp +++ b/src/mame/drivers/tceptor.cpp @@ -145,84 +145,90 @@ READ8_MEMBER(tceptor_state::input1_r) /*******************************************************************/ -ADDRESS_MAP_START(tceptor_state::m6809_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(tceptor_tile_ram_w) AM_SHARE("tile_ram") - AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(tceptor_tile_attr_w) AM_SHARE("tile_attr") - AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(tceptor_bg_ram_w) AM_SHARE("bg_ram") // background (VIEW RAM) - AM_RANGE(0x4000, 0x43ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) - AM_RANGE(0x4800, 0x4800) AM_WRITE(tceptor2_shutter_w) - AM_RANGE(0x4f00, 0x4f00) AM_READNOP // unknown - AM_RANGE(0x4f01, 0x4f01) AM_READ_PORT("PEDAL") // analog input (accel) - AM_RANGE(0x4f02, 0x4f02) AM_READ_PORT("STICKX") // analog input (left/right) - AM_RANGE(0x4f03, 0x4f03) AM_READ_PORT("STICKY") // analog input (up/down) - AM_RANGE(0x4f00, 0x4f03) AM_WRITENOP // analog input control? - AM_RANGE(0x5000, 0x5006) AM_WRITE(tceptor_bg_scroll_w) // bg scroll - AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("m68k_shared_ram") // COM RAM - AM_RANGE(0x8000, 0x8000) AM_WRITE(m6809_irq_disable_w) - AM_RANGE(0x8800, 0x8800) AM_WRITE(m6809_irq_enable_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tceptor_state::m6502_a_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x0100, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x02ff) AM_RAM - AM_RANGE(0x0300, 0x030f) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x3000, 0x30ff) AM_RAM AM_SHARE("share3") - AM_RANGE(0x3c01, 0x3c01) AM_WRITEONLY - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tceptor_state::m6502_b_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x0100, 0x01ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x5000, 0x5000) AM_WRITEONLY // voice ctrl?? - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tceptor_state::m68k_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // M68K ERROR 1 - AM_RANGE(0x100000, 0x10ffff) AM_ROM // not sure - AM_RANGE(0x200000, 0x203fff) AM_RAM // M68K ERROR 0 - AM_RANGE(0x300000, 0x300001) AM_WRITEONLY - AM_RANGE(0x400000, 0x4001ff) AM_WRITEONLY AM_SHARE("sprite_ram") - AM_RANGE(0x500000, 0x51ffff) AM_DEVWRITE("c45_road", namco_c45_road_device, write) - AM_RANGE(0x600000, 0x600001) AM_WRITE(m68k_irq_enable_w) // not sure - AM_RANGE(0x700000, 0x703fff) AM_READWRITE8(m68k_shared_r, m68k_shared_w, 0x00ff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tceptor_state::mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) - AM_RANGE(0x1400, 0x154d) AM_RAM - AM_RANGE(0x17c0, 0x17ff) AM_RAM - AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("share3") - AM_RANGE(0x2100, 0x2100) AM_READ(dsw0_r) - AM_RANGE(0x2101, 0x2101) AM_READ(dsw1_r) - AM_RANGE(0x2200, 0x2200) AM_READ(input0_r) - AM_RANGE(0x2201, 0x2201) AM_READ(input1_r) - AM_RANGE(0x8000, 0x8000) AM_WRITE(mcu_irq_disable_w) - AM_RANGE(0x8800, 0x8800) AM_WRITE(mcu_irq_enable_w) - AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("nvram") // Battery Backup - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tceptor_state::mcu_io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_WRITENOP - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_WRITENOP -ADDRESS_MAP_END +void tceptor_state::m6809_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); + map(0x1800, 0x1bff).ram().w(this, FUNC(tceptor_state::tceptor_tile_ram_w)).share("tile_ram"); + map(0x1c00, 0x1fff).ram().w(this, FUNC(tceptor_state::tceptor_tile_attr_w)).share("tile_attr"); + map(0x2000, 0x3fff).ram().w(this, FUNC(tceptor_state::tceptor_bg_ram_w)).share("bg_ram"); // background (VIEW RAM) + map(0x4000, 0x43ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); + map(0x4800, 0x4800).w(this, FUNC(tceptor_state::tceptor2_shutter_w)); + map(0x4f00, 0x4f00).nopr(); // unknown + map(0x4f01, 0x4f01).portr("PEDAL"); // analog input (accel) + map(0x4f02, 0x4f02).portr("STICKX"); // analog input (left/right) + map(0x4f03, 0x4f03).portr("STICKY"); // analog input (up/down) + map(0x4f00, 0x4f03).nopw(); // analog input control? + map(0x5000, 0x5006).w(this, FUNC(tceptor_state::tceptor_bg_scroll_w)); // bg scroll + map(0x6000, 0x7fff).ram().share("m68k_shared_ram"); // COM RAM + map(0x8000, 0x8000).w(this, FUNC(tceptor_state::m6809_irq_disable_w)); + map(0x8800, 0x8800).w(this, FUNC(tceptor_state::m6809_irq_enable_w)); + map(0x8000, 0xffff).rom(); +} + + +void tceptor_state::m6502_a_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().share("share2"); + map(0x0100, 0x01ff).ram(); + map(0x0200, 0x02ff).ram(); + map(0x0300, 0x030f).ram(); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x3000, 0x30ff).ram().share("share3"); + map(0x3c01, 0x3c01).writeonly(); + map(0x8000, 0xffff).rom(); +} + + +void tceptor_state::m6502_b_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().share("share2"); + map(0x0100, 0x01ff).ram(); + map(0x4000, 0x4000).w("dac", FUNC(dac_byte_interface::write)); + map(0x5000, 0x5000).writeonly(); // voice ctrl?? + map(0x8000, 0xffff).rom(); +} + + +void tceptor_state::m68k_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); // M68K ERROR 1 + map(0x100000, 0x10ffff).rom(); // not sure + map(0x200000, 0x203fff).ram(); // M68K ERROR 0 + map(0x300000, 0x300001).writeonly(); + map(0x400000, 0x4001ff).writeonly().share("sprite_ram"); + map(0x500000, 0x51ffff).w(m_c45_road, FUNC(namco_c45_road_device::write)); + map(0x600000, 0x600001).w(this, FUNC(tceptor_state::m68k_irq_enable_w)); // not sure + map(0x700000, 0x703fff).rw(this, FUNC(tceptor_state::m68k_shared_r), FUNC(tceptor_state::m68k_shared_w)).umask16(0x00ff); +} + + +void tceptor_state::mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw("mcu", FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); + map(0x1000, 0x13ff).rw(m_cus30, FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)); + map(0x1400, 0x154d).ram(); + map(0x17c0, 0x17ff).ram(); + map(0x2000, 0x20ff).ram().share("share3"); + map(0x2100, 0x2100).r(this, FUNC(tceptor_state::dsw0_r)); + map(0x2101, 0x2101).r(this, FUNC(tceptor_state::dsw1_r)); + map(0x2200, 0x2200).r(this, FUNC(tceptor_state::input0_r)); + map(0x2201, 0x2201).r(this, FUNC(tceptor_state::input1_r)); + map(0x8000, 0x8000).w(this, FUNC(tceptor_state::mcu_irq_disable_w)); + map(0x8800, 0x8800).w(this, FUNC(tceptor_state::mcu_irq_enable_w)); + map(0x8000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xdfff).ram().share("nvram"); // Battery Backup + map(0xf000, 0xffff).rom(); +} + + +void tceptor_state::mcu_io_map(address_map &map) +{ + map.unmap_value_high(); + map(M6801_PORT1, M6801_PORT1).nopw(); + map(M6801_PORT2, M6801_PORT2).nopw(); +} diff --git a/src/mame/drivers/tcl.cpp b/src/mame/drivers/tcl.cpp index 5dcf8e10f64..644f6f5beb3 100644 --- a/src/mame/drivers/tcl.cpp +++ b/src/mame/drivers/tcl.cpp @@ -72,9 +72,10 @@ uint32_t tcl_state::screen_update_tcl(screen_device &screen, bitmap_ind16 &bitma return 0; } -ADDRESS_MAP_START(tcl_state::tcl_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* bfff ? */ -ADDRESS_MAP_END +void tcl_state::tcl_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* bfff ? */ +} static INPUT_PORTS_START( tcl ) diff --git a/src/mame/drivers/tdv2324.cpp b/src/mame/drivers/tdv2324.cpp index 7a4311fdae2..fd66194ebce 100644 --- a/src/mame/drivers/tdv2324.cpp +++ b/src/mame/drivers/tdv2324.cpp @@ -132,67 +132,72 @@ WRITE8_MEMBER( tdv2324_state::tdv2324_main_io_e2 ) // ADDRESS_MAP( tdv2324_mem ) //------------------------------------------------- -ADDRESS_MAP_START(tdv2324_state::tdv2324_mem) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_ROM AM_REGION(P8085AH_0_TAG, 0) +void tdv2324_state::tdv2324_mem(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x0800).rom().region(P8085AH_0_TAG, 0); /* when copying code to 4000 area it runs right off the end of rom; * I'm not sure if its supposed to mirror or read as open bus */ // AM_RANGE(0x4000, 0x5fff) AM_RAM // 0x4000 has the boot code copied to it, 5fff and down are the stack // AM_RANGE(0x6000, 0x6fff) AM_RAM // used by the relocated boot code; shared? - AM_RANGE(0x0800, 0xffff) AM_RAM -ADDRESS_MAP_END + map(0x0800, 0xffff).ram(); +} //------------------------------------------------- // ADDRESS_MAP( tdv2324_io ) //------------------------------------------------- -ADDRESS_MAP_START(tdv2324_state::tdv2324_io) +void tdv2324_state::tdv2324_io(address_map &map) +{ //ADDRESS_MAP_GLOBAL_MASK(0xff) /* 0x30 is read by main code and if high bit isn't set at some point it will never get anywhere */ /* e0, e2, e8, ea are written to */ /* 30, e6 and e2 are readable */ - AM_RANGE(0x30, 0x30) AM_READ(tdv2324_main_io_30) + map(0x30, 0x30).r(this, FUNC(tdv2324_state::tdv2324_main_io_30)); // AM_RANGE(0xe2, 0xe2) AM_WRITE(tdv2324_main_io_e2) console output - AM_RANGE(0xe6, 0xe6) AM_READ(tdv2324_main_io_e6) + map(0xe6, 0xe6).r(this, FUNC(tdv2324_state::tdv2324_main_io_e6)); // AM_RANGE(0x, 0x) AM_DEVREADWRITE(P8253_5_0_TAG, pit8253_device, read, write) // AM_RANGE(0x, 0x) AM_DEVREADWRITE(MK3887N4_TAG, z80dart_device, ba_cd_r, ba_cd_w) // AM_RANGE(0x, 0x) AM_DEVREADWRITE(P8259A_TAG, pic8259_device, read, write) -ADDRESS_MAP_END +} //------------------------------------------------- // ADDRESS_MAP( tdv2324_sub_mem ) //------------------------------------------------- -ADDRESS_MAP_START(tdv2324_state::tdv2324_sub_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION(P8085AH_1_TAG, 0) - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_RAM // EAROM - AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("video_ram") -ADDRESS_MAP_END +void tdv2324_state::tdv2324_sub_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom().region(P8085AH_1_TAG, 0); + map(0x4000, 0x47ff).ram(); + map(0x5000, 0x53ff).ram(); // EAROM + map(0x6000, 0x7fff).ram().share("video_ram"); +} //------------------------------------------------- // ADDRESS_MAP( tdv2324_sub_io ) //------------------------------------------------- -ADDRESS_MAP_START(tdv2324_state::tdv2324_sub_io) +void tdv2324_state::tdv2324_sub_io(address_map &map) +{ //ADDRESS_MAP_GLOBAL_MASK(0xff) /* 20, 23, 30-36, 38, 3a, 3c, 3e, 60, 70 are written to */ - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE(P8253_5_1_TAG, pit8253_device, read, write) - AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE(TMS9937NL_TAG, tms9927_device, read, write) // TODO: this is supposed to be a 9937, which is not quite the same as 9927 -ADDRESS_MAP_END + map(0x20, 0x23).rw(m_pit1, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x30, 0x3f).rw(m_tms, FUNC(tms9927_device::read), FUNC(tms9927_device::write)); // TODO: this is supposed to be a 9937, which is not quite the same as 9927 +} //------------------------------------------------- // ADDRESS_MAP( tdv2324_fdc_mem ) //------------------------------------------------- -ADDRESS_MAP_START(tdv2324_state::tdv2324_fdc_mem) +void tdv2324_state::tdv2324_fdc_mem(address_map &map) +{ // the following two are probably enabled/disabled via the JP2 jumper block next to the fdc cpu //AM_RANGE(0x0000, 0x001f) AM_RAM // on-6802-die ram (optionally battery backed) //AM_RANGE(0x0020, 0x007f) AM_RAM // on-6802-die ram - AM_RANGE(0x0000, 0x07ff) AM_RAM // TMM2016AP-12 @ U14, tested with A5,5A pattern + map(0x0000, 0x07ff).ram(); // TMM2016AP-12 @ U14, tested with A5,5A pattern //AM_RANGE(0x1000, 0x17ff) AM_RAM // TMM2016AP-12 @ U80, address is wrong // the 3xxx area appears to be closely involved in fdc or other i/o // in particular, reads from 30xx, 38xx, 3Cxx may be actually writes to certain fdc registers with data xx? @@ -201,8 +206,8 @@ ADDRESS_MAP_START(tdv2324_state::tdv2324_fdc_mem) // 0x8000 can also be written to // 0x6000 can also be read from and written to // Somewhere in here, the FDC chip and the hard disk interface live - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION(MC68B02P_TAG, 0) // rom "962014 // -4-" @U15 -ADDRESS_MAP_END + map(0xe000, 0xffff).rom().region(MC68B02P_TAG, 0); // rom "962014 // -4-" @U15 +} diff --git a/src/mame/drivers/tec1.cpp b/src/mame/drivers/tec1.cpp index c022c5bedd2..8a261532970 100644 --- a/src/mame/drivers/tec1.cpp +++ b/src/mame/drivers/tec1.cpp @@ -327,37 +327,41 @@ void tec1_state::machine_reset() ***************************************************************************/ -ADDRESS_MAP_START(tec1_state::tec1_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x0fff) AM_RAM // on main board - AM_RANGE(0x1000, 0x3fff) AM_RAM // expansion -ADDRESS_MAP_END - -ADDRESS_MAP_START(tec1_state::tec1_io) - ADDRESS_MAP_GLOBAL_MASK(0x07) - AM_RANGE(0x00, 0x00) AM_READ(tec1_kbd_r) - AM_RANGE(0x01, 0x01) AM_WRITE(tec1_digit_w) - AM_RANGE(0x02, 0x02) AM_WRITE(tec1_segment_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tec1_state::tecjmon_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x37ff) AM_RAM - AM_RANGE(0x3800, 0x3fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tec1_state::tecjmon_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(tec1_kbd_r) - AM_RANGE(0x01, 0x01) AM_WRITE(tecjmon_digit_w) - AM_RANGE(0x02, 0x02) AM_WRITE(tec1_segment_w) - AM_RANGE(0x03, 0x03) AM_READ(latch_r) +void tec1_state::tec1_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x0fff).ram(); // on main board + map(0x1000, 0x3fff).ram(); // expansion +} + +void tec1_state::tec1_io(address_map &map) +{ + map.global_mask(0x07); + map(0x00, 0x00).r(this, FUNC(tec1_state::tec1_kbd_r)); + map(0x01, 0x01).w(this, FUNC(tec1_state::tec1_digit_w)); + map(0x02, 0x02).w(this, FUNC(tec1_state::tec1_segment_w)); +} + + +void tec1_state::tecjmon_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x37ff).ram(); + map(0x3800, 0x3fff).rom(); +} + +void tec1_state::tecjmon_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(tec1_state::tec1_kbd_r)); + map(0x01, 0x01).w(this, FUNC(tec1_state::tecjmon_digit_w)); + map(0x02, 0x02).w(this, FUNC(tec1_state::tec1_segment_w)); + map(0x03, 0x03).r(this, FUNC(tec1_state::latch_r)); //AM_RANGE(0x04, 0x04) AM_WRITE(lcd_en_w) //AM_RANGE(0x84, 0x84) AM_WRITE(lcd_2nd_w) -ADDRESS_MAP_END +} /************************************************************************** diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp index 72be8dab968..c5b37c03a71 100644 --- a/src/mame/drivers/techno.cpp +++ b/src/mame/drivers/techno.cpp @@ -72,20 +72,21 @@ private: }; -ADDRESS_MAP_START(techno_state::techno_map) - ADDRESS_MAP_GLOBAL_MASK(0x1ffff) - AM_RANGE(0x00000, 0x03fff) AM_ROM - AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("nvram") // battery backed-up - AM_RANGE(0x06000, 0x0ffff) AM_ROM - AM_RANGE(0x14000, 0x147ff) AM_READWRITE(key_r,lamp1_w) - AM_RANGE(0x14800, 0x14fff) AM_READWRITE(sound_r,lamp2_w) - AM_RANGE(0x15000, 0x157ff) AM_READWRITE(rtrg_r,sol1_w) - AM_RANGE(0x15800, 0x15fff) AM_READNOP AM_WRITE(sol2_w) // reads from 15800, but shown as not connected - AM_RANGE(0x16000, 0x167ff) AM_WRITE(sound_w) - AM_RANGE(0x16800, 0x16fff) AM_WRITE(disp1_w) - AM_RANGE(0x17000, 0x177ff) AM_WRITE(disp2_w) - AM_RANGE(0x17800, 0x17fff) AM_WRITE(setout_w) -ADDRESS_MAP_END +void techno_state::techno_map(address_map &map) +{ + map.global_mask(0x1ffff); + map(0x00000, 0x03fff).rom(); + map(0x04000, 0x04fff).ram().share("nvram"); // battery backed-up + map(0x06000, 0x0ffff).rom(); + map(0x14000, 0x147ff).rw(this, FUNC(techno_state::key_r), FUNC(techno_state::lamp1_w)); + map(0x14800, 0x14fff).rw(this, FUNC(techno_state::sound_r), FUNC(techno_state::lamp2_w)); + map(0x15000, 0x157ff).rw(this, FUNC(techno_state::rtrg_r), FUNC(techno_state::sol1_w)); + map(0x15800, 0x15fff).nopr().w(this, FUNC(techno_state::sol2_w)); // reads from 15800, but shown as not connected + map(0x16000, 0x167ff).w(this, FUNC(techno_state::sound_w)); + map(0x16800, 0x16fff).w(this, FUNC(techno_state::disp1_w)); + map(0x17000, 0x177ff).w(this, FUNC(techno_state::disp2_w)); + map(0x17800, 0x17fff).w(this, FUNC(techno_state::setout_w)); +} ADDRESS_MAP_START(techno_state::techno_sub_map) // no ram here, must be internal to the cpu diff --git a/src/mame/drivers/tecmo.cpp b/src/mame/drivers/tecmo.cpp index 001bc1b08e8..86d584ea5a3 100644 --- a/src/mame/drivers/tecmo.cpp +++ b/src/mame/drivers/tecmo.cpp @@ -136,112 +136,117 @@ READ8_MEMBER(tecmo_state::dswb_h_r) } -ADDRESS_MAP_START(tecmo_state::rygar_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("JOY2") - AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") - AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) - AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) - AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) - AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) - AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") - AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) - AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) - AM_RANGE(0xf806, 0xf806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) - AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) - AM_RANGE(0xf80b, 0xf80b) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmo_state::gemini_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("JOY2") - AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") - AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) - AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) - AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) - AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) - AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") - AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) - AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) - AM_RANGE(0xf806, 0xf806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) - AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) - AM_RANGE(0xf80b, 0xf80b) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmo_state::silkworm_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("JOY1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("BUTTONS1") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("JOY2") - AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") - AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) - AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) - AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) - AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) - AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") - AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) - AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) - AM_RANGE(0xf806, 0xf806) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) - AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) - AM_RANGE(0xf809, 0xf809) AM_WRITENOP /* ? */ - AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP /* ? if mapped to watchdog like in the others, causes reset */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmo_state::rygar_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w) - AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmo_state::tecmo_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x2000, 0x207f) AM_RAM /* Silkworm set #2 has a custom CPU which */ +void tecmo_state::rygar_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().w(this, FUNC(tecmo_state::txvideoram_w)).share("txvideoram"); + map(0xd800, 0xdbff).ram().w(this, FUNC(tecmo_state::fgvideoram_w)).share("fgvideoram"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(tecmo_state::bgvideoram_w)).share("bgvideoram"); + map(0xe000, 0xe7ff).ram().share("spriteram"); + map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf7ff).bankr("bank1"); + map(0xf800, 0xf800).portr("JOY1"); + map(0xf801, 0xf801).portr("BUTTONS1"); + map(0xf802, 0xf802).portr("JOY2"); + map(0xf803, 0xf803).portr("BUTTONS2"); + map(0xf804, 0xf804).portr("SYS_0"); + map(0xf805, 0xf805).portr("SYS_1"); + map(0xf806, 0xf806).r(this, FUNC(tecmo_state::dswa_l_r)); + map(0xf807, 0xf807).r(this, FUNC(tecmo_state::dswa_h_r)); + map(0xf808, 0xf808).r(this, FUNC(tecmo_state::dswb_l_r)); + map(0xf809, 0xf809).r(this, FUNC(tecmo_state::dswb_h_r)); + map(0xf80f, 0xf80f).portr("SYS_2"); + map(0xf800, 0xf802).w(this, FUNC(tecmo_state::fgscroll_w)); + map(0xf803, 0xf805).w(this, FUNC(tecmo_state::bgscroll_w)); + map(0xf806, 0xf806).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf807, 0xf807).w(this, FUNC(tecmo_state::flipscreen_w)); + map(0xf808, 0xf808).w(this, FUNC(tecmo_state::bankswitch_w)); + map(0xf80b, 0xf80b).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} + +void tecmo_state::gemini_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().w(this, FUNC(tecmo_state::txvideoram_w)).share("txvideoram"); + map(0xd800, 0xdbff).ram().w(this, FUNC(tecmo_state::fgvideoram_w)).share("fgvideoram"); + map(0xdc00, 0xdfff).ram().w(this, FUNC(tecmo_state::bgvideoram_w)).share("bgvideoram"); + map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe800, 0xefff).ram().share("spriteram"); + map(0xf000, 0xf7ff).bankr("bank1"); + map(0xf800, 0xf800).portr("JOY1"); + map(0xf801, 0xf801).portr("BUTTONS1"); + map(0xf802, 0xf802).portr("JOY2"); + map(0xf803, 0xf803).portr("BUTTONS2"); + map(0xf804, 0xf804).portr("SYS_0"); + map(0xf805, 0xf805).portr("SYS_1"); + map(0xf806, 0xf806).r(this, FUNC(tecmo_state::dswa_l_r)); + map(0xf807, 0xf807).r(this, FUNC(tecmo_state::dswa_h_r)); + map(0xf808, 0xf808).r(this, FUNC(tecmo_state::dswb_l_r)); + map(0xf809, 0xf809).r(this, FUNC(tecmo_state::dswb_h_r)); + map(0xf80f, 0xf80f).portr("SYS_2"); + map(0xf800, 0xf802).w(this, FUNC(tecmo_state::fgscroll_w)); + map(0xf803, 0xf805).w(this, FUNC(tecmo_state::bgscroll_w)); + map(0xf806, 0xf806).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf807, 0xf807).w(this, FUNC(tecmo_state::flipscreen_w)); + map(0xf808, 0xf808).w(this, FUNC(tecmo_state::bankswitch_w)); + map(0xf80b, 0xf80b).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} + +void tecmo_state::silkworm_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc3ff).ram().w(this, FUNC(tecmo_state::bgvideoram_w)).share("bgvideoram"); + map(0xc400, 0xc7ff).ram().w(this, FUNC(tecmo_state::fgvideoram_w)).share("fgvideoram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(tecmo_state::txvideoram_w)).share("txvideoram"); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().share("spriteram"); + map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf7ff).bankr("bank1"); + map(0xf800, 0xf800).portr("JOY1"); + map(0xf801, 0xf801).portr("BUTTONS1"); + map(0xf802, 0xf802).portr("JOY2"); + map(0xf803, 0xf803).portr("BUTTONS2"); + map(0xf804, 0xf804).portr("SYS_0"); + map(0xf805, 0xf805).portr("SYS_1"); + map(0xf806, 0xf806).r(this, FUNC(tecmo_state::dswa_l_r)); + map(0xf807, 0xf807).r(this, FUNC(tecmo_state::dswa_h_r)); + map(0xf808, 0xf808).r(this, FUNC(tecmo_state::dswb_l_r)); + map(0xf809, 0xf809).r(this, FUNC(tecmo_state::dswb_h_r)); + map(0xf80f, 0xf80f).portr("SYS_2"); + map(0xf800, 0xf802).w(this, FUNC(tecmo_state::fgscroll_w)); + map(0xf803, 0xf805).w(this, FUNC(tecmo_state::bgscroll_w)); + map(0xf806, 0xf806).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf807, 0xf807).w(this, FUNC(tecmo_state::flipscreen_w)); + map(0xf808, 0xf808).w(this, FUNC(tecmo_state::bankswitch_w)); + map(0xf809, 0xf809).nopw(); /* ? */ + map(0xf80b, 0xf80b).nopw(); /* ? if mapped to watchdog like in the others, causes reset */ +} + +void tecmo_state::rygar_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8000, 0x8001).w("ymsnd", FUNC(ym3526_device::write)); + map(0xc000, 0xc000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(tecmo_state::adpcm_start_w)); + map(0xd000, 0xd000).w(this, FUNC(tecmo_state::adpcm_end_w)); + map(0xe000, 0xe000).w(this, FUNC(tecmo_state::adpcm_vol_w)); + map(0xf000, 0xf000).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); +} + +void tecmo_state::tecmo_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x2000, 0x207f).ram(); /* Silkworm set #2 has a custom CPU which */ /* writes code to this area */ - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w) - AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w) - AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w) - AM_RANGE(0xcc00, 0xcc00) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).w("ymsnd", FUNC(ym3812_device::write)); + map(0xc000, 0xc000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(tecmo_state::adpcm_start_w)); + map(0xc400, 0xc400).w(this, FUNC(tecmo_state::adpcm_end_w)); + map(0xc800, 0xc800).w(this, FUNC(tecmo_state::adpcm_vol_w)); + map(0xcc00, 0xcc00).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); +} diff --git a/src/mame/drivers/tecmo16.cpp b/src/mame/drivers/tecmo16.cpp index 5540216c42a..ce5f1b12354 100644 --- a/src/mame/drivers/tecmo16.cpp +++ b/src/mame/drivers/tecmo16.cpp @@ -38,63 +38,66 @@ Notes: /******************************************************************************/ -ADDRESS_MAP_START(tecmo16_state::fstarfrc_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */ - AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w) - AM_RANGE(0x150010, 0x150011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */ - AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1") - AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2") - AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w) - AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w) - AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w) - AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w) - AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmo16_state::ginkun_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") - AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */ - AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w) - AM_RANGE(0x150010, 0x150011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP /* ??? */ - AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */ - AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1") - AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2") - AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w) - AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w) - AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w) - AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w) - AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w) - AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmo16_state::sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xfbff) AM_RAM /* Sound RAM */ - AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xfc08, 0xfc08) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xfc0c, 0xfc0c) AM_NOP - AM_RANGE(0xfffe, 0xffff) AM_RAM -ADDRESS_MAP_END +void tecmo16_state::fstarfrc_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); /* Main RAM */ + map(0x110000, 0x110fff).ram().w(this, FUNC(tecmo16_state::charram_w)).share("charram"); + map(0x120000, 0x1207ff).ram().w(this, FUNC(tecmo16_state::videoram_w)).share("videoram"); + map(0x120800, 0x120fff).ram().w(this, FUNC(tecmo16_state::colorram_w)).share("colorram"); + map(0x121000, 0x1217ff).ram().w(this, FUNC(tecmo16_state::videoram2_w)).share("videoram2"); + map(0x121800, 0x121fff).ram().w(this, FUNC(tecmo16_state::colorram2_w)).share("colorram2"); + map(0x122000, 0x127fff).ram(); /* work area */ + map(0x130000, 0x130fff).ram().share("spriteram"); + map(0x140000, 0x141fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x150000, 0x150001).w(this, FUNC(tecmo16_state::flipscreen_w)); + map(0x150011, 0x150011).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x150030, 0x150031).portr("DSW2").nopw(); /* ??? */ + map(0x150040, 0x150041).portr("DSW1"); + map(0x150050, 0x150051).portr("P1_P2"); + map(0x160000, 0x160001).w(this, FUNC(tecmo16_state::scroll_char_x_w)); + map(0x16000c, 0x16000d).w(this, FUNC(tecmo16_state::scroll_x_w)); + map(0x160012, 0x160013).w(this, FUNC(tecmo16_state::scroll_y_w)); + map(0x160018, 0x160019).w(this, FUNC(tecmo16_state::scroll2_x_w)); + map(0x16001e, 0x16001f).w(this, FUNC(tecmo16_state::scroll2_y_w)); +} + +void tecmo16_state::ginkun_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); /* Main RAM */ + map(0x110000, 0x110fff).ram().w(this, FUNC(tecmo16_state::charram_w)).share("charram"); + map(0x120000, 0x120fff).ram().w(this, FUNC(tecmo16_state::videoram_w)).share("videoram"); + map(0x121000, 0x121fff).ram().w(this, FUNC(tecmo16_state::colorram_w)).share("colorram"); + map(0x122000, 0x122fff).ram().w(this, FUNC(tecmo16_state::videoram2_w)).share("videoram2"); + map(0x123000, 0x123fff).ram().w(this, FUNC(tecmo16_state::colorram2_w)).share("colorram2"); + map(0x124000, 0x124fff).ram(); /* extra RAM for Riot */ + map(0x130000, 0x130fff).ram().share("spriteram"); + map(0x140000, 0x141fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x150000, 0x150001).w(this, FUNC(tecmo16_state::flipscreen_w)); + map(0x150011, 0x150011).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x150020, 0x150021).portr("EXTRA").nopw(); /* ??? */ + map(0x150030, 0x150031).portr("DSW2").nopw(); /* ??? */ + map(0x150040, 0x150041).portr("DSW1"); + map(0x150050, 0x150051).portr("P1_P2"); + map(0x160000, 0x160001).w(this, FUNC(tecmo16_state::scroll_char_x_w)); + map(0x160006, 0x160007).w(this, FUNC(tecmo16_state::scroll_char_y_w)); + map(0x16000c, 0x16000d).w(this, FUNC(tecmo16_state::scroll_x_w)); + map(0x160012, 0x160013).w(this, FUNC(tecmo16_state::scroll_y_w)); + map(0x160018, 0x160019).w(this, FUNC(tecmo16_state::scroll2_x_w)); + map(0x16001e, 0x16001f).w(this, FUNC(tecmo16_state::scroll2_y_w)); +} + +void tecmo16_state::sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xfbff).ram(); /* Sound RAM */ + map(0xfc00, 0xfc00).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xfc04, 0xfc05).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfc08, 0xfc08).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xfc0c, 0xfc0c).noprw(); + map(0xfffe, 0xffff).ram(); +} /******************************************************************************/ diff --git a/src/mame/drivers/tecmosys.cpp b/src/mame/drivers/tecmosys.cpp index 834ffd9a7ba..61f3d050621 100644 --- a/src/mame/drivers/tecmosys.cpp +++ b/src/mame/drivers/tecmosys.cpp @@ -274,44 +274,45 @@ WRITE16_MEMBER(tecmosys_state::eeprom_w) } } -ADDRESS_MAP_START(tecmosys_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // work ram - AM_RANGE(0x210000, 0x210001) AM_READNOP // single byte overflow on stack defined as 0x210000 - AM_RANGE(0x300000, 0x300fff) AM_RAM_WRITE(bg0_tilemap_w) AM_SHARE("bg0tilemap_ram") // bg0 ram - AM_RANGE(0x301000, 0x3013ff) AM_RAM_WRITE(bg0_tilemap_lineram_w) AM_SHARE("bg0_lineram")// bg0 linescroll? (guess) +void tecmosys_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); // work ram + map(0x210000, 0x210001).nopr(); // single byte overflow on stack defined as 0x210000 + map(0x300000, 0x300fff).ram().w(this, FUNC(tecmosys_state::bg0_tilemap_w)).share("bg0tilemap_ram"); // bg0 ram + map(0x301000, 0x3013ff).ram().w(this, FUNC(tecmosys_state::bg0_tilemap_lineram_w)).share("bg0_lineram");// bg0 linescroll? (guess) - AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(bg1_tilemap_w) AM_SHARE("bg1tilemap_ram") // bg1 ram - AM_RANGE(0x401000, 0x4013ff) AM_RAM_WRITE(bg1_tilemap_lineram_w) AM_SHARE("bg1_lineram")// bg1 linescroll? (guess) + map(0x400000, 0x400fff).ram().w(this, FUNC(tecmosys_state::bg1_tilemap_w)).share("bg1tilemap_ram"); // bg1 ram + map(0x401000, 0x4013ff).ram().w(this, FUNC(tecmosys_state::bg1_tilemap_lineram_w)).share("bg1_lineram");// bg1 linescroll? (guess) - AM_RANGE(0x500000, 0x500fff) AM_RAM_WRITE(bg2_tilemap_w) AM_SHARE("bg2tilemap_ram") // bg2 ram - AM_RANGE(0x501000, 0x5013ff) AM_RAM_WRITE(bg2_tilemap_lineram_w) AM_SHARE("bg2_lineram") // bg2 linescroll? (guess) + map(0x500000, 0x500fff).ram().w(this, FUNC(tecmosys_state::bg2_tilemap_w)).share("bg2tilemap_ram"); // bg2 ram + map(0x501000, 0x5013ff).ram().w(this, FUNC(tecmosys_state::bg2_tilemap_lineram_w)).share("bg2_lineram"); // bg2 linescroll? (guess) - AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(fg_tilemap_w) AM_SHARE("fgtilemap_ram") // fix ram - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("spriteram") // obj ram - AM_RANGE(0x880000, 0x88000b) AM_READ(unk880000_r) - AM_RANGE(0x900000, 0x907fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // AM_WRITEONLY // obj pal + map(0x700000, 0x703fff).ram().w(this, FUNC(tecmosys_state::fg_tilemap_w)).share("fgtilemap_ram"); // fix ram + map(0x800000, 0x80ffff).ram().share("spriteram"); // obj ram + map(0x880000, 0x88000b).r(this, FUNC(tecmosys_state::unk880000_r)); + map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // AM_WRITEONLY // obj pal //AM_RANGE(0x980000, 0x9807ff) AM_WRITEONLY // bg pal //AM_RANGE(0x980800, 0x980fff) AM_WRITE(paletteram_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("paletteram") // fix pal // the two above are as tested by the game code, I've only rolled them into one below to get colours to show right. - AM_RANGE(0x980000, 0x980fff) AM_RAM_WRITE(tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_SHARE("tmap_palette") - - AM_RANGE(0x880000, 0x88002f) AM_WRITE(unk880000_w ) AM_SHARE("880000regs") // 10 byte dta@88000c, 880022=watchdog? - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(eeprom_w ) - AM_RANGE(0xa80000, 0xa80005) AM_WRITEONLY AM_SHARE("a80000regs") // a80000-3 scroll? a80004 inverted ? 3 : 0 - AM_RANGE(0xb00000, 0xb00005) AM_WRITEONLY AM_SHARE("b00000regs") // b00000-3 scrool?, b00004 inverted ? 3 : 0 - AM_RANGE(0xb80000, 0xb80001) AM_READWRITE(prot_status_r, prot_status_w) - AM_RANGE(0xc00000, 0xc00005) AM_WRITEONLY AM_SHARE("c00000regs") // c00000-3 scroll? c00004 inverted ? 13 : 10 - AM_RANGE(0xc80000, 0xc80005) AM_WRITEONLY AM_SHARE("c80000regs") // c80000-3 scrool? c80004 inverted ? 3 : 0 - AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("P1") - AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("P2") - AM_RANGE(0xd80000, 0xd80001) AM_READ(eeprom_r) - AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xe80000, 0xe80001) AM_WRITE(prot_data_w) - AM_RANGE(0xf00000, 0xf00001) AM_READ8(sound_command_pending_r, 0x00ff) - AM_RANGE(0xf80000, 0xf80001) AM_READ(prot_data_r) -ADDRESS_MAP_END + map(0x980000, 0x980fff).ram().w(this, FUNC(tecmosys_state::tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w)).share("tmap_palette"); + + map(0x880000, 0x88002f).w(this, FUNC(tecmosys_state::unk880000_w)).share("880000regs"); // 10 byte dta@88000c, 880022=watchdog? + map(0xa00000, 0xa00001).w(this, FUNC(tecmosys_state::eeprom_w)); + map(0xa80000, 0xa80005).writeonly().share("a80000regs"); // a80000-3 scroll? a80004 inverted ? 3 : 0 + map(0xb00000, 0xb00005).writeonly().share("b00000regs"); // b00000-3 scrool?, b00004 inverted ? 3 : 0 + map(0xb80000, 0xb80001).rw(this, FUNC(tecmosys_state::prot_status_r), FUNC(tecmosys_state::prot_status_w)); + map(0xc00000, 0xc00005).writeonly().share("c00000regs"); // c00000-3 scroll? c00004 inverted ? 13 : 10 + map(0xc80000, 0xc80005).writeonly().share("c80000regs"); // c80000-3 scrool? c80004 inverted ? 3 : 0 + map(0xd00000, 0xd00001).portr("P1"); + map(0xd00002, 0xd00003).portr("P2"); + map(0xd80000, 0xd80001).r(this, FUNC(tecmosys_state::eeprom_r)); + map(0xe00001, 0xe00001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xe80000, 0xe80001).w(this, FUNC(tecmosys_state::prot_data_w)); + map(0xf00001, 0xf00001).r(this, FUNC(tecmosys_state::sound_command_pending_r)); + map(0xf80000, 0xf80001).r(this, FUNC(tecmosys_state::prot_data_r)); +} WRITE8_MEMBER(tecmosys_state::z80_bank_w) @@ -329,22 +330,24 @@ WRITE8_MEMBER(tecmosys_state::oki_bank_w) memcpy( region+0x20000, region+0x80000 + upperbank * 0x20000, 0x20000 ); } -ADDRESS_MAP_START(tecmosys_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xf7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tecmosys_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymf", ymf262_device, read, write) - AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x20, 0x20) AM_WRITE(oki_bank_w) - AM_RANGE(0x30, 0x30) AM_WRITE(z80_bank_w) - AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x50, 0x50) AM_WRITE(sound_nmi_disable_w) - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) -ADDRESS_MAP_END +void tecmosys_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xe000, 0xf7ff).ram(); +} + +void tecmosys_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymf", FUNC(ymf262_device::read), FUNC(ymf262_device::write)); + map(0x10, 0x10).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x20, 0x20).w(this, FUNC(tecmosys_state::oki_bank_w)); + map(0x30, 0x30).w(this, FUNC(tecmosys_state::z80_bank_w)); + map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x50, 0x50).w(this, FUNC(tecmosys_state::sound_nmi_disable_w)); + map(0x60, 0x61).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); +} diff --git a/src/mame/drivers/tecnbras.cpp b/src/mame/drivers/tecnbras.cpp index 0c6fdc00785..0e33d5298db 100644 --- a/src/mame/drivers/tecnbras.cpp +++ b/src/mame/drivers/tecnbras.cpp @@ -58,16 +58,18 @@ private: char m_digit[14][7]; }; -ADDRESS_MAP_START(tecnbras_state::i80c31_prg) - AM_RANGE(0x0000, 0x7FFF) AM_ROM - AM_RANGE(0x8000, 0xFFFF) AM_RAM -ADDRESS_MAP_END +void tecnbras_state::i80c31_prg(address_map &map) +{ + map(0x0000, 0x7FFF).rom(); + map(0x8000, 0xFFFF).ram(); +} #define DMD_OFFSET 24 //This is a guess. We should verify the real hardware behaviour -ADDRESS_MAP_START(tecnbras_state::i80c31_io) - AM_RANGE(0x0100+DMD_OFFSET, 0x0145+DMD_OFFSET) AM_WRITE(set_x_position_w) - AM_RANGE(0x06B8, 0x06BC) AM_WRITE(print_column_w) -ADDRESS_MAP_END +void tecnbras_state::i80c31_io(address_map &map) +{ + map(0x0100+DMD_OFFSET, 0x0145+DMD_OFFSET).w(this, FUNC(tecnbras_state::set_x_position_w)); + map(0x06B8, 0x06BC).w(this, FUNC(tecnbras_state::print_column_w)); +} WRITE8_MEMBER(tecnbras_state::set_x_position_w) { diff --git a/src/mame/drivers/tehkanwc.cpp b/src/mame/drivers/tehkanwc.cpp index 4f88a38b07b..bcc0fe195db 100644 --- a/src/mame/drivers/tehkanwc.cpp +++ b/src/mame/drivers/tehkanwc.cpp @@ -229,63 +229,67 @@ WRITE_LINE_MEMBER(tehkanwc_state::adpcm_int) -ADDRESS_MAP_START(tehkanwc_state::main_mem) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(scroll_x_w) - AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(scroll_y_w) - AM_RANGE(0xf800, 0xf801) AM_READWRITE(track_0_r, track_0_reset_w) /* track 0 x/y */ - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(gridiron_led0_w) - AM_RANGE(0xf803, 0xf803) AM_READ_PORT("P1BUT") - AM_RANGE(0xf806, 0xf806) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf810, 0xf811) AM_READWRITE(track_1_r, track_1_reset_w) /* track 1 x/y */ - AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w) - AM_RANGE(0xf813, 0xf813) AM_READ_PORT("P2BUT") - AM_RANGE(0xf820, 0xf820) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(sound_command_w) /* answer from the sound CPU */ - AM_RANGE(0xf840, 0xf840) AM_READ_PORT("DSW2") AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xf850, 0xf850) AM_READ_PORT("DSW3") AM_WRITENOP /* ?? writes 0x00 or 0xff */ - AM_RANGE(0xf860, 0xf860) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(flipscreen_x_w) - AM_RANGE(0xf870, 0xf870) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_y_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tehkanwc_state::sub_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xd800, 0xddff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("share5") /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") - AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE("spriteram") /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_RAM_WRITE(scroll_x_w) - AM_RANGE(0xec02, 0xec02) AM_RAM_WRITE(scroll_y_w) - AM_RANGE(0xf860, 0xf860) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tehkanwc_state::sound_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x8001, 0x8001) AM_WRITE(msm_reset_w)/* MSM51xx reset */ - AM_RANGE(0x8002, 0x8002) AM_WRITENOP /* ?? written in the IRQ handler */ - AM_RANGE(0x8003, 0x8003) AM_WRITENOP /* ?? written in the NMI handler */ - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_answer_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tehkanwc_state::sound_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, data_address_w) -ADDRESS_MAP_END +void tehkanwc_state::main_mem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(tehkanwc_state::videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(tehkanwc_state::colorram_w)).share("colorram"); + map(0xd800, 0xddff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xde00, 0xdfff).ram().share("share5"); /* unused part of the palette RAM, I think? Gridiron uses it */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(tehkanwc_state::videoram2_w)).share("videoram2"); + map(0xe800, 0xebff).ram().share("spriteram"); /* sprites */ + map(0xec00, 0xec01).ram().w(this, FUNC(tehkanwc_state::scroll_x_w)); + map(0xec02, 0xec02).ram().w(this, FUNC(tehkanwc_state::scroll_y_w)); + map(0xf800, 0xf801).rw(this, FUNC(tehkanwc_state::track_0_r), FUNC(tehkanwc_state::track_0_reset_w)); /* track 0 x/y */ + map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tehkanwc_state::gridiron_led0_w)); + map(0xf803, 0xf803).portr("P1BUT"); + map(0xf806, 0xf806).portr("SYSTEM"); + map(0xf810, 0xf811).rw(this, FUNC(tehkanwc_state::track_1_r), FUNC(tehkanwc_state::track_1_reset_w)); /* track 1 x/y */ + map(0xf812, 0xf812).w(this, FUNC(tehkanwc_state::gridiron_led1_w)); + map(0xf813, 0xf813).portr("P2BUT"); + map(0xf820, 0xf820).r(m_soundlatch2, FUNC(generic_latch_8_device::read)).w(this, FUNC(tehkanwc_state::sound_command_w)); /* answer from the sound CPU */ + map(0xf840, 0xf840).portr("DSW2").w(this, FUNC(tehkanwc_state::sub_cpu_halt_w)); + map(0xf850, 0xf850).portr("DSW3").nopw(); /* ?? writes 0x00 or 0xff */ + map(0xf860, 0xf860).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(this, FUNC(tehkanwc_state::flipscreen_x_w)); + map(0xf870, 0xf870).portr("DSW1").w(this, FUNC(tehkanwc_state::flipscreen_y_w)); +} + +void tehkanwc_state::sub_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xc7ff).ram(); + map(0xc800, 0xcfff).ram().share("share1"); + map(0xd000, 0xd3ff).ram().w(this, FUNC(tehkanwc_state::videoram_w)).share("videoram"); + map(0xd400, 0xd7ff).ram().w(this, FUNC(tehkanwc_state::colorram_w)).share("colorram"); + map(0xd800, 0xddff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xde00, 0xdfff).ram().share("share5"); /* unused part of the palette RAM, I think? Gridiron uses it */ + map(0xe000, 0xe7ff).ram().w(this, FUNC(tehkanwc_state::videoram2_w)).share("videoram2"); + map(0xe800, 0xebff).ram().share("spriteram"); /* sprites */ + map(0xec00, 0xec01).ram().w(this, FUNC(tehkanwc_state::scroll_x_w)); + map(0xec02, 0xec02).ram().w(this, FUNC(tehkanwc_state::scroll_y_w)); + map(0xf860, 0xf860).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void tehkanwc_state::sound_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x8001, 0x8001).w(this, FUNC(tehkanwc_state::msm_reset_w));/* MSM51xx reset */ + map(0x8002, 0x8002).nopw(); /* ?? written in the IRQ handler */ + map(0x8003, 0x8003).nopw(); /* ?? written in the NMI handler */ + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(tehkanwc_state::sound_answer_w)); +} + +void tehkanwc_state::sound_port(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("ay1", FUNC(ay8910_device::data_r)); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w)); + map(0x02, 0x02).r("ay2", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::data_address_w)); +} diff --git a/src/mame/drivers/tek405x.cpp b/src/mame/drivers/tek405x.cpp index 1890f45a9ad..ab1861617b9 100644 --- a/src/mame/drivers/tek405x.cpp +++ b/src/mame/drivers/tek405x.cpp @@ -169,32 +169,34 @@ WRITE8_MEMBER( tek4051_state::lbs_w ) // ADDRESS_MAP( tek4051_mem ) //------------------------------------------------- -ADDRESS_MAP_START(tek4051_state::tek4051_mem) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x7fff) AM_RAM // optional RAM - AM_RANGE(0x8000, 0x877f) AM_ROM AM_REGION(MC6800_TAG, 0) - AM_RANGE(0x878c, 0x878f) AM_DEVREADWRITE(MC6820_Y_TAG, pia6821_device, read, write) - AM_RANGE(0x8794, 0x8797) AM_DEVREADWRITE(MC6820_X_TAG, pia6821_device, read, write) - AM_RANGE(0x8798, 0x879b) AM_DEVREADWRITE(MC6820_TAPE_TAG, pia6821_device, read, write) - AM_RANGE(0x87a8, 0x87ab) AM_DEVREADWRITE(MC6820_KB_TAG, pia6821_device, read, write) - AM_RANGE(0x87b0, 0x87b3) AM_DEVREADWRITE(MC6820_GPIB_TAG, pia6821_device, read, write) - AM_RANGE(0x87c0, 0x87c0) AM_MIRROR(0x03) AM_WRITE(lbs_w) +void tek4051_state::tek4051_mem(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x7fff).ram(); // optional RAM + map(0x8000, 0x877f).rom().region(MC6800_TAG, 0); + map(0x878c, 0x878f).rw(MC6820_Y_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8794, 0x8797).rw(MC6820_X_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8798, 0x879b).rw(MC6820_TAPE_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x87a8, 0x87ab).rw(MC6820_KB_TAG, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x87b0, 0x87b3).rw(m_gpib_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x87c0, 0x87c0).mirror(0x03).w(this, FUNC(tek4051_state::lbs_w)); // AM_RANGE(0x87c0, 0x87c3) AM_DEVREADWRITE(MC6820_COM_TAG, pia6821_device, read, write) // AM_RANGE(0x87c4, 0x87c5) AM_MIRROR(0x02) AM_DEVREADWRITE(MC6850_TAG, acia6850_device, read, write) // AM_RANGE(0x87c8, 0x87cb) XPC2 // AM_RANGE(0x87cc, 0x87cf) XPC3 // AM_RANGE(0x87d0, 0x87d3) XPC4 - AM_RANGE(0x8800, 0xa7ff) AM_ROM AM_REGION(MC6800_TAG, 0x800) - AM_RANGE(0xa800, 0xffff) AM_ROM AM_REGION(MC6800_TAG, 0x2800) -ADDRESS_MAP_END + map(0x8800, 0xa7ff).rom().region(MC6800_TAG, 0x800); + map(0xa800, 0xffff).rom().region(MC6800_TAG, 0x2800); +} //------------------------------------------------- // ADDRESS_MAP( tek4052_mem ) //------------------------------------------------- -ADDRESS_MAP_START(tek4052_state::tek4052_mem) -ADDRESS_MAP_END +void tek4052_state::tek4052_mem(address_map &map) +{ +} diff --git a/src/mame/drivers/tek410x.cpp b/src/mame/drivers/tek410x.cpp index cc9823090c7..25c454502d9 100644 --- a/src/mame/drivers/tek410x.cpp +++ b/src/mame/drivers/tek410x.cpp @@ -43,13 +43,15 @@ public: /* Memory Maps */ -ADDRESS_MAP_START(tek4107a_state::tek4107a_mem) - AM_RANGE(0x00000, 0xbffff) AM_RAM - AM_RANGE(0xc0000, 0xfffff) AM_ROM AM_REGION(I80188_TAG, 0) -ADDRESS_MAP_END +void tek4107a_state::tek4107a_mem(address_map &map) +{ + map(0x00000, 0xbffff).ram(); + map(0xc0000, 0xfffff).rom().region(I80188_TAG, 0); +} -ADDRESS_MAP_START(tek4107a_state::tek4107a_io) -ADDRESS_MAP_END +void tek4107a_state::tek4107a_io(address_map &map) +{ +} /* Input Ports */ diff --git a/src/mame/drivers/tek440x.cpp b/src/mame/drivers/tek440x.cpp index ef7518876a7..7d4648eaee9 100644 --- a/src/mame/drivers/tek440x.cpp +++ b/src/mame/drivers/tek440x.cpp @@ -147,31 +147,33 @@ uint32_t tek440x_state::screen_update(screen_device &screen, bitmap_ind16 &bitma * *************************************/ -ADDRESS_MAP_START(tek440x_state::maincpu_map) - AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x600000, 0x61ffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x740000, 0x747fff) AM_ROM AM_REGION("maincpu", 0) +void tek440x_state::maincpu_map(address_map &map) +{ + map(0x000000, 0x1fffff).ram().share("mainram"); + map(0x600000, 0x61ffff).ram().share("vram"); + map(0x740000, 0x747fff).rom().region("maincpu", 0); // 760000 - optional debug ROM - AM_RANGE(0x780000, 0x781fff) AM_RAM // map registers + map(0x780000, 0x781fff).ram(); // map registers // 782000-783fff: video address registers // 784000-785fff: video control registers - AM_RANGE(0x788000, 0x788001) AM_DEVWRITE8("snsnd", sn76496_device, write, 0xff00) + map(0x788000, 0x788000).w("snsnd", FUNC(sn76496_device::write)); // 78a000-78bfff: NS32081 FPU - AM_RANGE(0x78c000, 0x78c007) AM_DEVREADWRITE8("aica", mos6551_device, read, write, 0xff00) + map(0x78c000, 0x78c007).rw("aica", FUNC(mos6551_device::read), FUNC(mos6551_device::write)).umask16(0xff00); // 7b1000-7b2fff: diagnostic registers // 7b2000-7b3fff: Centronics printer data // 7b4000-7b5fff: 68681 DUART // 7b6000-7b7fff: Mouse - AM_RANGE(0x7b8000, 0x7b8003) AM_MIRROR(0x100) AM_DEVREADWRITE("timer", am9513_device, read16, write16) + map(0x7b8000, 0x7b8003).mirror(0x100).rw("timer", FUNC(am9513_device::read16), FUNC(am9513_device::write16)); // 7ba000-7bbfff: MC146818 RTC // 7bc000-7bdfff: SCSI bus address registers // 7be000-7bffff: SCSI (NCR 5385) -ADDRESS_MAP_END +} -ADDRESS_MAP_START(tek440x_state::fdccpu_map) - AM_RANGE(0x0000, 0x1000) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("fdccpu", 0) -ADDRESS_MAP_END +void tek440x_state::fdccpu_map(address_map &map) +{ + map(0x0000, 0x1000).ram(); + map(0xf000, 0xffff).rom().region("fdccpu", 0); +} /************************************* * diff --git a/src/mame/drivers/tekxp33x.cpp b/src/mame/drivers/tekxp33x.cpp index bdc7c856dee..0ec4ad04210 100644 --- a/src/mame/drivers/tekxp33x.cpp +++ b/src/mame/drivers/tekxp33x.cpp @@ -60,13 +60,15 @@ public: /* Memory Maps */ -ADDRESS_MAP_START(tekxp330_state::cpu_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM - AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void tekxp330_state::cpu_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram(); + map(0x1fc00000, 0x1fdfffff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(tekxp330_state::tms_map) -ADDRESS_MAP_END +void tekxp330_state::tms_map(address_map &map) +{ +} /* Input Ports */ diff --git a/src/mame/drivers/tempest.cpp b/src/mame/drivers/tempest.cpp index 5426037c77a..f9a759d72a0 100644 --- a/src/mame/drivers/tempest.cpp +++ b/src/mame/drivers/tempest.cpp @@ -445,31 +445,32 @@ READ8_MEMBER(tempest_state::rom_ae1f_r) } -ADDRESS_MAP_START(tempest_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x080f) AM_WRITEONLY AM_SHARE("colorram") - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("IN0") - AM_RANGE(0x0d00, 0x0d00) AM_READ_PORT("DSW1") - AM_RANGE(0x0e00, 0x0e00) AM_READ_PORT("DSW2") - AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x3000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_WRITE(tempest_coin_w) - AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("avg", avg_tempest_device, go_w) - AM_RANGE(0x5000, 0x5000) AM_WRITE(wdclr_w) - AM_RANGE(0x5800, 0x5800) AM_DEVWRITE("avg", avg_tempest_device, reset_w) - AM_RANGE(0x6000, 0x603f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x6040, 0x6040) AM_DEVREAD("mathbox", mathbox_device, status_r) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x6050, 0x6050) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x6060, 0x6060) AM_DEVREAD("mathbox", mathbox_device, lo_r) - AM_RANGE(0x6070, 0x6070) AM_DEVREAD("mathbox", mathbox_device, hi_r) - AM_RANGE(0x6080, 0x609f) AM_DEVWRITE("mathbox", mathbox_device, go_w) - AM_RANGE(0x60c0, 0x60cf) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x60d0, 0x60df) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x60e0, 0x60e0) AM_WRITE(tempest_led_w) - AM_RANGE(0x9000, 0xdfff) AM_ROM - AM_RANGE(0xae1f, 0xae1f) AM_READ(rom_ae1f_r) - AM_RANGE(0xf000, 0xffff) AM_ROM /* for the reset / interrupt vectors */ -ADDRESS_MAP_END +void tempest_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x080f).writeonly().share("colorram"); + map(0x0c00, 0x0c00).portr("IN0"); + map(0x0d00, 0x0d00).portr("DSW1"); + map(0x0e00, 0x0e00).portr("DSW2"); + map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x3000, 0x3fff).rom(); + map(0x4000, 0x4000).w(this, FUNC(tempest_state::tempest_coin_w)); + map(0x4800, 0x4800).w(m_avg, FUNC(avg_tempest_device::go_w)); + map(0x5000, 0x5000).w(this, FUNC(tempest_state::wdclr_w)); + map(0x5800, 0x5800).w(m_avg, FUNC(avg_tempest_device::reset_w)); + map(0x6000, 0x603f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x6040, 0x6040).r(m_mathbox, FUNC(mathbox_device::status_r)).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x6050, 0x6050).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x6060, 0x6060).r(m_mathbox, FUNC(mathbox_device::lo_r)); + map(0x6070, 0x6070).r(m_mathbox, FUNC(mathbox_device::hi_r)); + map(0x6080, 0x609f).w(m_mathbox, FUNC(mathbox_device::go_w)); + map(0x60c0, 0x60cf).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x60d0, 0x60df).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x60e0, 0x60e0).w(this, FUNC(tempest_state::tempest_led_w)); + map(0x9000, 0xdfff).rom(); + map(0xae1f, 0xae1f).r(this, FUNC(tempest_state::rom_ae1f_r)); + map(0xf000, 0xffff).rom(); /* for the reset / interrupt vectors */ +} /************************************* diff --git a/src/mame/drivers/terak.cpp b/src/mame/drivers/terak.cpp index 0917f65e756..edf8710c5f6 100644 --- a/src/mame/drivers/terak.cpp +++ b/src/mame/drivers/terak.cpp @@ -69,15 +69,16 @@ WRITE16_MEMBER( terak_state::terak_fdc_data_w ) logerror("terak_fdc_data_w %04x\n",data); } -ADDRESS_MAP_START(terak_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xf5ff ) AM_RAM // RAM +void terak_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xf5ff).ram(); // RAM // octal - AM_RANGE( 0173000, 0173177 ) AM_ROM // ROM - AM_RANGE( 0177000, 0177001 ) AM_READWRITE(terak_fdc_status_r,terak_fdc_command_w) - AM_RANGE( 0177002, 0177003 ) AM_READWRITE(terak_fdc_data_r,terak_fdc_data_w) -ADDRESS_MAP_END + map(0173000, 0173177).rom(); // ROM + map(0177000, 0177001).rw(this, FUNC(terak_state::terak_fdc_status_r), FUNC(terak_state::terak_fdc_command_w)); + map(0177002, 0177003).rw(this, FUNC(terak_state::terak_fdc_data_r), FUNC(terak_state::terak_fdc_data_w)); +} /* Input ports */ static INPUT_PORTS_START( terak ) diff --git a/src/mame/drivers/terco.cpp b/src/mame/drivers/terco.cpp index 74de2532a5a..28a44dd8a42 100644 --- a/src/mame/drivers/terco.cpp +++ b/src/mame/drivers/terco.cpp @@ -278,15 +278,16 @@ private: //required_device<ay3600_device> m_ay3600; }; -ADDRESS_MAP_START(t4490_state::t4490_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x3000, 0x3fff) AM_ROM AM_REGION("maincpu", 0x3000) - AM_RANGE(0x9500, 0x95ff) AM_RAM - AM_RANGE(0x9030, 0x9031) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0x9034, 0x9037) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x9038, 0x903b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) - AM_RANGE(0xa000, 0xffff) AM_ROM AM_REGION("maincpu", 0xa000) -ADDRESS_MAP_END +void t4490_state::t4490_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x3000, 0x3fff).rom().region("maincpu", 0x3000); + map(0x9500, 0x95ff).ram(); + map(0x9030, 0x9031).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x9034, 0x9037).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x9038, 0x903b).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xa000, 0xffff).rom().region("maincpu", 0xa000); +} /* Input ports */ static INPUT_PORTS_START( t4490 ) diff --git a/src/mame/drivers/terminals.cpp b/src/mame/drivers/terminals.cpp index ffc7c743115..7523d5c38a5 100644 --- a/src/mame/drivers/terminals.cpp +++ b/src/mame/drivers/terminals.cpp @@ -27,8 +27,9 @@ private: //required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(terminals_state::mem_map) -ADDRESS_MAP_END +void terminals_state::mem_map(address_map &map) +{ +} static INPUT_PORTS_START( terminals ) INPUT_PORTS_END diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp index 0d3cb8bbadb..091871f6154 100644 --- a/src/mame/drivers/terracre.cpp +++ b/src/mame/drivers/terracre.cpp @@ -231,71 +231,77 @@ MACHINE_START_MEMBER(terracre_state,amazon) save_item(NAME(m_mAmazonProtReg)); } -ADDRESS_MAP_START(terracre_state::terracre_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x0201ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x020200, 0x021fff) AM_RAM - AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram") - AM_RANGE(0x023000, 0x023fff) AM_RAM - AM_RANGE(0x024000, 0x024001) AM_READ_PORT("P1") - AM_RANGE(0x024002, 0x024003) AM_READ_PORT("P2") - AM_RANGE(0x024004, 0x024005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x024006, 0x024007) AM_READ_PORT("DSW") - AM_RANGE(0x026000, 0x026001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */ - AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w) - AM_RANGE(0x026004, 0x026005) AM_READNOP AM_WRITE(amazon_scrolly_w) - AM_RANGE(0x02600a, 0x02600b) AM_NOP // video related - AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w) - AM_RANGE(0x02600e, 0x02600f) AM_NOP // video related - AM_RANGE(0x028000, 0x0287ff) AM_RAM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::amazon_base_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x0401ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x040200, 0x040fff) AM_RAM - AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram") - AM_RANGE(0x044000, 0x044001) AM_READ_PORT("IN0") - AM_RANGE(0x044002, 0x044003) AM_READ_PORT("IN1") - AM_RANGE(0x044004, 0x044005) AM_READ_PORT("IN2") - AM_RANGE(0x044006, 0x044007) AM_READ_PORT("IN3") - AM_RANGE(0x046000, 0x046001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */ - AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w) - AM_RANGE(0x046004, 0x046005) AM_READNOP AM_WRITE(amazon_scrolly_w) - AM_RANGE(0x04600a, 0x04600b) AM_NOP // video related - AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w) - AM_RANGE(0x04600e, 0x04600f) AM_NOP // video related - AM_RANGE(0x050000, 0x050fff) AM_RAM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram") - AM_RANGE(0x070000, 0x070003) AM_NOP // protection (nop for bootlegs) -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::amazon_1412m2_map) - AM_IMPORT_FROM( amazon_base_map ) - AM_RANGE(0x070000, 0x070003) AM_READWRITE(amazon_protection_r, amazon_protection_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::sound_3526_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::sound_2203_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void terracre_state::terracre_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x020000, 0x0201ff).ram().share("spriteram"); + map(0x020200, 0x021fff).ram(); + map(0x022000, 0x022fff).w(this, FUNC(terracre_state::amazon_background_w)).share("bg_videoram"); + map(0x023000, 0x023fff).ram(); + map(0x024000, 0x024001).portr("P1"); + map(0x024002, 0x024003).portr("P2"); + map(0x024004, 0x024005).portr("SYSTEM"); + map(0x024006, 0x024007).portr("DSW"); + map(0x026000, 0x026001).w(this, FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */ + map(0x026002, 0x026003).w(this, FUNC(terracre_state::amazon_scrollx_w)); + map(0x026004, 0x026005).nopr().w(this, FUNC(terracre_state::amazon_scrolly_w)); + map(0x02600a, 0x02600b).noprw(); // video related + map(0x02600c, 0x02600d).w(this, FUNC(terracre_state::amazon_sound_w)); + map(0x02600e, 0x02600f).noprw(); // video related + map(0x028000, 0x0287ff).ram().w(this, FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram"); +} + +void terracre_state::amazon_base_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x0401ff).ram().share("spriteram"); + map(0x040200, 0x040fff).ram(); + map(0x042000, 0x042fff).w(this, FUNC(terracre_state::amazon_background_w)).share("bg_videoram"); + map(0x044000, 0x044001).portr("IN0"); + map(0x044002, 0x044003).portr("IN1"); + map(0x044004, 0x044005).portr("IN2"); + map(0x044006, 0x044007).portr("IN3"); + map(0x046000, 0x046001).w(this, FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */ + map(0x046002, 0x046003).w(this, FUNC(terracre_state::amazon_scrollx_w)); + map(0x046004, 0x046005).nopr().w(this, FUNC(terracre_state::amazon_scrolly_w)); + map(0x04600a, 0x04600b).noprw(); // video related + map(0x04600c, 0x04600d).w(this, FUNC(terracre_state::amazon_sound_w)); + map(0x04600e, 0x04600f).noprw(); // video related + map(0x050000, 0x050fff).ram().w(this, FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram"); + map(0x070000, 0x070003).noprw(); // protection (nop for bootlegs) +} + +void terracre_state::amazon_1412m2_map(address_map &map) +{ + amazon_base_map(map); + map(0x070000, 0x070003).rw(this, FUNC(terracre_state::amazon_protection_r), FUNC(terracre_state::amazon_protection_w)); +} + +void terracre_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); +} + +void terracre_state::sound_3526_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write)); + map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).r(this, FUNC(terracre_state::soundlatch_clear_r)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void terracre_state::sound_2203_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write)); + map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).r(this, FUNC(terracre_state::soundlatch_clear_r)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( terracre ) PORT_START("P1") diff --git a/src/mame/drivers/testconsole.cpp b/src/mame/drivers/testconsole.cpp index 41f65dba165..a7f3b1ce608 100644 --- a/src/mame/drivers/testconsole.cpp +++ b/src/mame/drivers/testconsole.cpp @@ -102,27 +102,29 @@ protected: }; -ADDRESS_MAP_START(whouse_testcons_state::program_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x2003) AM_DEVWRITE("dsp0", dl1416_device, bus_w) - AM_RANGE(0x2004, 0x2007) AM_DEVWRITE("dsp1", dl1416_device, bus_w) - AM_RANGE(0x2008, 0x200b) AM_DEVWRITE("dsp2", dl1416_device, bus_w) - AM_RANGE(0x200c, 0x200f) AM_DEVWRITE("dsp3", dl1416_device, bus_w) - AM_RANGE(0x2800, 0x28ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w) - AM_RANGE(0x3000, 0x3fff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("row0") - AM_RANGE(0x8801, 0x8801) AM_READ_PORT("row1") - AM_RANGE(0x8802, 0x8802) AM_READ_PORT("row2") - AM_RANGE(0x8803, 0x8803) AM_READ_PORT("row3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(whouse_testcons_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x80, 0x87) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w) - AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE("i8255", i8255_device, read, write) -ADDRESS_MAP_END +void whouse_testcons_state::program_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x2003).w("dsp0", FUNC(dl1416_device::bus_w)); + map(0x2004, 0x2007).w("dsp1", FUNC(dl1416_device::bus_w)); + map(0x2008, 0x200b).w("dsp2", FUNC(dl1416_device::bus_w)); + map(0x200c, 0x200f).w("dsp3", FUNC(dl1416_device::bus_w)); + map(0x2800, 0x28ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x3000, 0x3fff).ram(); + map(0x8800, 0x8800).portr("row0"); + map(0x8801, 0x8801).portr("row1"); + map(0x8802, 0x8802).portr("row2"); + map(0x8803, 0x8803).portr("row3"); +} + +void whouse_testcons_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x80, 0x87).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x88, 0x8b).rw("i8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} INPUT_PORTS_START(whousetc) diff --git a/src/mame/drivers/tetrisp2.cpp b/src/mame/drivers/tetrisp2.cpp index 6f62e39db0b..0a66c1f456f 100644 --- a/src/mame/drivers/tetrisp2.cpp +++ b/src/mame/drivers/tetrisp2.cpp @@ -301,35 +301,36 @@ WRITE16_MEMBER(tetrisp2_state::tetrisp2_coincounter_w) ***************************************************************************/ -ADDRESS_MAP_START(tetrisp2_state::tetrisp2_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w) - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground - AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background - AM_RANGE(0x408000, 0x409fff) AM_RAM // ??? - AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation - AM_RANGE(0x650000, 0x651fff) AM_RAM_WRITE(tetrisp2_vram_rot_w) // Rotation (mirror) - AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound - AM_RANGE(0x900000, 0x903fff) AM_READ(tetrisp2_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM - AM_RANGE(0x904000, 0x907fff) AM_READ(tetrisp2_nvram_r) AM_WRITE(tetrisp2_nvram_w) // NVRAM (mirror) - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter - AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ??? - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(tetrisp2_systemregs_w) // system param - AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") // Inputs - AM_RANGE(0xbe0004, 0xbe0005) AM_READ(tetrisp2_ip_1_word_r) // Inputs & protection - AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog -ADDRESS_MAP_END +void tetrisp2_state::tetrisp2_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM + map(0x104000, 0x107fff).ram(); // Spare Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w)); + map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette + map(0x400000, 0x403fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground + map(0x404000, 0x407fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background + map(0x408000, 0x409fff).ram(); // ??? + map(0x500000, 0x50ffff).ram(); // Line + map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation + map(0x650000, 0x651fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)); // Rotation (mirror) + map(0x800000, 0x800003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound + map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::tetrisp2_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM + map(0x904000, 0x907fff).r(this, FUNC(tetrisp2_state::tetrisp2_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)); // NVRAM (mirror) + map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter + map(0xb20000, 0xb20001).nopw(); // ??? + map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).nopw(); // scr_size + map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers + map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::tetrisp2_systemregs_w)); // system param + map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).portr("PLAYERS"); // Inputs + map(0xbe0004, 0xbe0005).r(this, FUNC(tetrisp2_state::tetrisp2_ip_1_word_r)); // Inputs & protection + map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog +} WRITE16_MEMBER(tetrisp2_state::nndmseal_coincounter_w) @@ -356,174 +357,179 @@ WRITE16_MEMBER(tetrisp2_state::nndmseal_b20000_w) // popmessage("%04x",data); } -ADDRESS_MAP_START(tetrisp2_state::nndmseal_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w) - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground - AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background - - AM_RANGE(0x408000, 0x409fff) AM_RAM // ??? - AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation - AM_RANGE(0x650000, 0x651fff) AM_RAM_WRITE(tetrisp2_vram_rot_w) // Rotation (mirror) - - AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) // Sound - - AM_RANGE(0x900000, 0x903fff) AM_READWRITE(tetrisp2_nvram_r, tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM - - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(nndmseal_coincounter_w) // Coin Counter - AM_RANGE(0xb20000, 0xb20001) AM_WRITE(nndmseal_b20000_w) // ??? - - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size - - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers - - AM_RANGE(0xb80000, 0xb80001) AM_WRITE(nndmseal_sound_bank_w) - - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w ) // system param - - AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("BUTTONS" ) // Inputs - AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("COINS" ) // "" - AM_RANGE(0xbe0006, 0xbe0007) AM_READ_PORT("PRINT" ) // "" - AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW" ) // "" - - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tetrisp2_state::rockn1_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w) - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground - AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background - AM_RANGE(0x408000, 0x409fff) AM_RAM // ??? - AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation - AM_RANGE(0x900000, 0x903fff) AM_READ(rockn_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM - AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume - AM_RANGE(0xa40000, 0xa40003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound - AM_RANGE(0xa44000, 0xa44001) AM_READWRITE(rockn_adpcmbank_r, rockn_adpcmbank_w) // Sound Bank - AM_RANGE(0xa48000, 0xa48001) AM_NOP // YMZ280 Reset - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter - AM_RANGE(0xb20000, 0xb20001) AM_NOP // ??? - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // system param - AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") // Inputs - AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("SYSTEM") // Inputs - AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tetrisp2_state::rockn2_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w) - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground - AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background - AM_RANGE(0x808000, 0x809fff) AM_RAM // ??? - AM_RANGE(0x900000, 0x903fff) AM_READ(rockn_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM - AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume - AM_RANGE(0xa40000, 0xa40003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound - AM_RANGE(0xa44000, 0xa44001) AM_READWRITE(rockn_adpcmbank_r, rockn2_adpcmbank_w) // Sound Bank - AM_RANGE(0xa48000, 0xa48001) AM_WRITENOP // YMZ280 Reset - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter - AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ??? - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // system param - AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") // Inputs - AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("SYSTEM") // Inputs - AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tetrisp2_state::rocknms_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w) - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette -// AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground - AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background -// AM_RANGE(0x808000, 0x809fff) AM_RAM // ??? - AM_RANGE(0x900000, 0x903fff) AM_READ(rockn_nvram_r) AM_WRITE(tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM - AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume - AM_RANGE(0xa40000, 0xa40003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) // Sound - AM_RANGE(0xa44000, 0xa44001) AM_READWRITE(rockn_adpcmbank_r, rockn_adpcmbank_w) // Sound Bank - AM_RANGE(0xa48000, 0xa48001) AM_WRITENOP // YMZ280 Reset - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(rocknms_main2sub_w) // MAIN -> SUB Communication - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(tetrisp2_coincounter_w) // Coin Counter - AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ??? - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // system param - AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("PLAYERS") - AM_RANGE(0xbe0004, 0xbe0005) AM_READ_PORT("SYSTEM") // Inputs - AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tetrisp2_state::rocknms_sub_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram2") // Object RAM - AM_RANGE(0x104000, 0x107fff) AM_RAM // Spare Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_RAM_WRITE(rocknms_sub_priority_w) AM_SHARE("sub_priority") // Priority - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(rocknms_sub_palette_w) AM_SHARE("sub_paletteram") // Palette -// AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(rocknms_sub_vram_rot_w) AM_SHARE("sub_vram_rot") // Rotation - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(rocknms_sub_vram_fg_w) AM_SHARE("sub_vram_fg") // Foreground - AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(rocknms_sub_vram_bg_w) AM_SHARE("sub_vram_bg") // Background -// AM_RANGE(0x808000, 0x809fff) AM_RAM // ??? - AM_RANGE(0x900000, 0x907fff) AM_RAM // NVRAM - AM_RANGE(0xa30000, 0xa30001) AM_WRITE(rockn_soundvolume_w) // Sound Volume - AM_RANGE(0xa40000, 0xa40003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // Sound - AM_RANGE(0xa44000, 0xa44001) AM_WRITE(rockn_adpcmbank_w) // Sound Bank - AM_RANGE(0xa48000, 0xa48001) AM_WRITENOP // YMZ280 Reset - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(rocknms_sub2main_w) // MAIN <- SUB Communication - AM_RANGE(0xb20000, 0xb20001) AM_WRITENOP // ??? - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("sub_scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("sub_scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_WRITENOP // scr_size - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("sub_rotregs") // Rotation Registers - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rocknms_sub_systemregs_w) // system param -// AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READWRITE(rocknms_main2sub_r, rocknms_sub2main_w) // MAIN <-> SUB Communication - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog -ADDRESS_MAP_END +void tetrisp2_state::nndmseal_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM + map(0x104000, 0x107fff).ram(); // Spare Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w)); + map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette + map(0x400000, 0x403fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground + map(0x404000, 0x407fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background + + map(0x408000, 0x409fff).ram(); // ??? + map(0x500000, 0x50ffff).ram(); // Line + + map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation + map(0x650000, 0x651fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)); // Rotation (mirror) + + map(0x800000, 0x800003).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); // Sound + + map(0x900000, 0x903fff).rw(this, FUNC(tetrisp2_state::tetrisp2_nvram_r), FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM + + map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::nndmseal_coincounter_w)); // Coin Counter + map(0xb20000, 0xb20001).w(this, FUNC(tetrisp2_state::nndmseal_b20000_w)); // ??? + + map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).nopw(); // scr_size + + map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers + + map(0xb80000, 0xb80001).w(this, FUNC(tetrisp2_state::nndmseal_sound_bank_w)); + + map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param + + map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).portr("BUTTONS"); // Inputs + map(0xbe0004, 0xbe0005).portr("COINS"); // "" + map(0xbe0006, 0xbe0007).portr("PRINT"); // "" + map(0xbe0008, 0xbe0009).portr("DSW"); // "" + + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); +} + + +void tetrisp2_state::rockn1_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM + map(0x104000, 0x107fff).ram(); // Spare Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w)); + map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette + map(0x400000, 0x403fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground + map(0x404000, 0x407fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background + map(0x408000, 0x409fff).ram(); // ??? + map(0x500000, 0x50ffff).ram(); // Line + map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation + map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::rockn_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM + map(0xa30000, 0xa30001).rw(this, FUNC(tetrisp2_state::rockn_soundvolume_r), FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume + map(0xa40000, 0xa40003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound + map(0xa44000, 0xa44001).rw(this, FUNC(tetrisp2_state::rockn_adpcmbank_r), FUNC(tetrisp2_state::rockn_adpcmbank_w)); // Sound Bank + map(0xa48000, 0xa48001).noprw(); // YMZ280 Reset + map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter + map(0xb20000, 0xb20001).noprw(); // ??? + map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).nopw(); // scr_size + map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers + map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param + map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).portr("PLAYERS"); // Inputs + map(0xbe0004, 0xbe0005).portr("SYSTEM"); // Inputs + map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog +} + + +void tetrisp2_state::rockn2_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM + map(0x104000, 0x107fff).ram(); // Spare Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w)); + map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette + map(0x500000, 0x50ffff).ram(); // Line + map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation + map(0x800000, 0x803fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground + map(0x804000, 0x807fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background + map(0x808000, 0x809fff).ram(); // ??? + map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::rockn_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM + map(0xa30000, 0xa30001).rw(this, FUNC(tetrisp2_state::rockn_soundvolume_r), FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume + map(0xa40000, 0xa40003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound + map(0xa44000, 0xa44001).rw(this, FUNC(tetrisp2_state::rockn_adpcmbank_r), FUNC(tetrisp2_state::rockn2_adpcmbank_w)); // Sound Bank + map(0xa48000, 0xa48001).nopw(); // YMZ280 Reset + map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter + map(0xb20000, 0xb20001).nopw(); // ??? + map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).nopw(); // scr_size + map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers + map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param + map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).portr("PLAYERS"); // Inputs + map(0xbe0004, 0xbe0005).portr("SYSTEM"); // Inputs + map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog +} + + +void tetrisp2_state::rocknms_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM + map(0x104000, 0x107fff).ram(); // Spare Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).rw(this, FUNC(tetrisp2_state::tetrisp2_priority_r), FUNC(tetrisp2_state::tetrisp2_priority_w)); + map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_palette_w)).share("paletteram"); // Palette +// map(0x500000, 0x50ffff).ram(); // Line + map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation + map(0x800000, 0x803fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground + map(0x804000, 0x807fff).ram().w(this, FUNC(tetrisp2_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background +// map(0x808000, 0x809fff).ram(); // ??? + map(0x900000, 0x903fff).r(this, FUNC(tetrisp2_state::rockn_nvram_r)).w(this, FUNC(tetrisp2_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM + map(0xa30000, 0xa30001).rw(this, FUNC(tetrisp2_state::rockn_soundvolume_r), FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume + map(0xa40000, 0xa40003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound + map(0xa44000, 0xa44001).rw(this, FUNC(tetrisp2_state::rockn_adpcmbank_r), FUNC(tetrisp2_state::rockn_adpcmbank_w)); // Sound Bank + map(0xa48000, 0xa48001).nopw(); // YMZ280 Reset + map(0xa00000, 0xa00001).w(this, FUNC(tetrisp2_state::rocknms_main2sub_w)); // MAIN -> SUB Communication + map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::tetrisp2_coincounter_w)); // Coin Counter + map(0xb20000, 0xb20001).nopw(); // ??? + map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).nopw(); // scr_size + map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers + map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rockn_systemregs_w)); // system param + map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).portr("PLAYERS"); + map(0xbe0004, 0xbe0005).portr("SYSTEM"); // Inputs + map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog +} + + +void tetrisp2_state::rocknms_sub_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x103fff).ram().share("spriteram2"); // Object RAM + map(0x104000, 0x107fff).ram(); // Spare Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_priority_w)).share("sub_priority"); // Priority + map(0x300000, 0x31ffff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_palette_w)).share("sub_paletteram"); // Palette +// map(0x500000, 0x50ffff).ram(); // Line + map(0x600000, 0x60ffff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_vram_rot_w)).share("sub_vram_rot"); // Rotation + map(0x800000, 0x803fff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_vram_fg_w)).share("sub_vram_fg"); // Foreground + map(0x804000, 0x807fff).ram().w(this, FUNC(tetrisp2_state::rocknms_sub_vram_bg_w)).share("sub_vram_bg"); // Background +// map(0x808000, 0x809fff).ram(); // ??? + map(0x900000, 0x907fff).ram(); // NVRAM + map(0xa30000, 0xa30001).w(this, FUNC(tetrisp2_state::rockn_soundvolume_w)); // Sound Volume + map(0xa40000, 0xa40003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound + map(0xa44000, 0xa44001).w(this, FUNC(tetrisp2_state::rockn_adpcmbank_w)); // Sound Bank + map(0xa48000, 0xa48001).nopw(); // YMZ280 Reset + map(0xb00000, 0xb00001).w(this, FUNC(tetrisp2_state::rocknms_sub2main_w)); // MAIN <- SUB Communication + map(0xb20000, 0xb20001).nopw(); // ??? + map(0xb40000, 0xb4000b).writeonly().share("sub_scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("sub_scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).nopw(); // scr_size + map(0xb60000, 0xb6002f).writeonly().share("sub_rotregs"); // Rotation Registers + map(0xba0000, 0xba001f).w(this, FUNC(tetrisp2_state::rocknms_sub_systemregs_w)); // system param +// map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).rw(this, FUNC(tetrisp2_state::rocknms_main2sub_r), FUNC(tetrisp2_state::rocknms_sub2main_w)); // MAIN <-> SUB Communication + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog +} /*************************************************************************** @@ -644,92 +650,95 @@ WRITE16_MEMBER(stepstag_state::stepstag_button_leds_w) // Main CPU -ADDRESS_MAP_START(stepstag_state::stepstag_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("spriteram") // Object RAM - AM_RANGE(0x108000, 0x10ffff) AM_RAM // Work RAM - AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(tetrisp2_priority_r, tetrisp2_priority_w) - AM_RANGE(0x300000, 0x31ffff) AM_RAM_WRITE(tetrisp2_palette_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(tetrisp2_vram_fg_w) AM_SHARE("vram_fg") // Foreground - AM_RANGE(0x404000, 0x407fff) AM_RAM_WRITE(tetrisp2_vram_bg_w) AM_SHARE("vram_bg") // Background -// AM_RANGE(0x408000, 0x409fff) AM_RAM // ??? - AM_RANGE(0x500000, 0x50ffff) AM_RAM // Line - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(tetrisp2_vram_rot_w) AM_SHARE("vram_rot") // Rotation - AM_RANGE(0x900000, 0x903fff) AM_READWRITE(rockn_nvram_r, tetrisp2_nvram_w) AM_SHARE("nvram") // NVRAM -// AM_RANGE(0x904000, 0x907fff) AM_READWRITE(rockn_nvram_r, tetrisp2_nvram_w) // NVRAM (mirror) - AM_RANGE(0xa00000, 0xa00001) AM_READNOP AM_WRITE(stepstag_neon_w) // Neon?? - AM_RANGE(0xa10000, 0xa10001) AM_READ_PORT("RHYTHM") AM_WRITE(stepstag_step_leds_w) // I/O - AM_RANGE(0xa20000, 0xa20001) AM_READNOP AM_WRITE(stepstag_button_leds_w) // I/O - AM_RANGE(0xa30000, 0xa30001) AM_READWRITE(rockn_soundvolume_r, rockn_soundvolume_w) // Sound Volume - AM_RANGE(0xa42000, 0xa42001) AM_READ( stepstag_pc2main_r ) - AM_RANGE(0xa44000, 0xa44001) AM_READNOP // watchdog - AM_RANGE(0xa48000, 0xa48001) AM_WRITE(stepstag_main2pc_w) // PC Comm -// AM_RANGE(0xa4c000, 0xa4c001) AM_WRITENOP // PC? - AM_RANGE(0xa50000, 0xa50001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_WRITE(stepstag_soundlatch_word_w) - AM_RANGE(0xa60000, 0xa60003) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x00ff) // Sound - - AM_RANGE(0xb00000, 0xb00001) AM_WRITE(stepstag_b00000_w) // init xilinx uploading?? - AM_RANGE(0xb20000, 0xb20001) AM_WRITE(stepstag_b20000_w) // 98343 interface board xilinx uploading? - AM_RANGE(0xb40000, 0xb4000b) AM_WRITEONLY AM_SHARE("scroll_fg") // Foreground Scrolling - AM_RANGE(0xb40010, 0xb4001b) AM_WRITEONLY AM_SHARE("scroll_bg") // Background Scrolling - AM_RANGE(0xb4003e, 0xb4003f) AM_RAM // scr_size - AM_RANGE(0xb60000, 0xb6002f) AM_WRITEONLY AM_SHARE("rotregs") // Rotation Registers - AM_RANGE(0xba0000, 0xba001f) AM_WRITE(rockn_systemregs_w) // System param - AM_RANGE(0xbe0000, 0xbe0001) AM_READNOP // INT-level1 dummy read - AM_RANGE(0xbe0002, 0xbe0003) AM_READ_PORT("BUTTONS") // Inputs - AM_RANGE(0xbe0004, 0xbe0005) AM_READ(stepstag_coins_r) // Inputs & protection - AM_RANGE(0xbe0008, 0xbe0009) AM_READ_PORT("DSW") // Inputs - AM_RANGE(0xbe000a, 0xbe000b) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) // Watchdog -ADDRESS_MAP_END +void stepstag_state::stepstag_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x103fff).ram().share("spriteram"); // Object RAM + map(0x108000, 0x10ffff).ram(); // Work RAM + map(0x200000, 0x23ffff).rw(this, FUNC(stepstag_state::tetrisp2_priority_r), FUNC(stepstag_state::tetrisp2_priority_w)); + map(0x300000, 0x31ffff).ram().w(this, FUNC(stepstag_state::tetrisp2_palette_w)).share("paletteram"); // Palette + map(0x400000, 0x403fff).ram().w(this, FUNC(stepstag_state::tetrisp2_vram_fg_w)).share("vram_fg"); // Foreground + map(0x404000, 0x407fff).ram().w(this, FUNC(stepstag_state::tetrisp2_vram_bg_w)).share("vram_bg"); // Background +// map(0x408000, 0x409fff).ram(); // ??? + map(0x500000, 0x50ffff).ram(); // Line + map(0x600000, 0x60ffff).ram().w(this, FUNC(stepstag_state::tetrisp2_vram_rot_w)).share("vram_rot"); // Rotation + map(0x900000, 0x903fff).rw(this, FUNC(stepstag_state::rockn_nvram_r), FUNC(stepstag_state::tetrisp2_nvram_w)).share("nvram"); // NVRAM +// map(0x904000, 0x907fff).rw(this, FUNC(stepstag_state::rockn_nvram_r), FUNC(stepstag_state::tetrisp2_nvram_w); // NVRAM (mirror) + map(0xa00000, 0xa00001).nopr().w(this, FUNC(stepstag_state::stepstag_neon_w)); // Neon?? + map(0xa10000, 0xa10001).portr("RHYTHM").w(this, FUNC(stepstag_state::stepstag_step_leds_w)); // I/O + map(0xa20000, 0xa20001).nopr().w(this, FUNC(stepstag_state::stepstag_button_leds_w)); // I/O + map(0xa30000, 0xa30001).rw(this, FUNC(stepstag_state::rockn_soundvolume_r), FUNC(stepstag_state::rockn_soundvolume_w)); // Sound Volume + map(0xa42000, 0xa42001).r(this, FUNC(stepstag_state::stepstag_pc2main_r)); + map(0xa44000, 0xa44001).nopr(); // watchdog + map(0xa48000, 0xa48001).w(this, FUNC(stepstag_state::stepstag_main2pc_w)); // PC Comm +// map(0xa4c000, 0xa4c001).nopw(); // PC? + map(0xa50000, 0xa50001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(this, FUNC(stepstag_state::stepstag_soundlatch_word_w)); + map(0xa60000, 0xa60003).w("ymz", FUNC(ymz280b_device::write)).umask16(0x00ff); // Sound + + map(0xb00000, 0xb00001).w(this, FUNC(stepstag_state::stepstag_b00000_w)); // init xilinx uploading?? + map(0xb20000, 0xb20001).w(this, FUNC(stepstag_state::stepstag_b20000_w)); // 98343 interface board xilinx uploading? + map(0xb40000, 0xb4000b).writeonly().share("scroll_fg"); // Foreground Scrolling + map(0xb40010, 0xb4001b).writeonly().share("scroll_bg"); // Background Scrolling + map(0xb4003e, 0xb4003f).ram(); // scr_size + map(0xb60000, 0xb6002f).writeonly().share("rotregs"); // Rotation Registers + map(0xba0000, 0xba001f).w(this, FUNC(stepstag_state::rockn_systemregs_w)); // System param + map(0xbe0000, 0xbe0001).nopr(); // INT-level1 dummy read + map(0xbe0002, 0xbe0003).portr("BUTTONS"); // Inputs + map(0xbe0004, 0xbe0005).r(this, FUNC(stepstag_state::stepstag_coins_r)); // Inputs & protection + map(0xbe0008, 0xbe0009).portr("DSW"); // Inputs + map(0xbe000a, 0xbe000b).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog +} // Sub CPU (sprites) -ADDRESS_MAP_START(stepstag_state::stepstag_sub_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM +void stepstag_state::stepstag_sub_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); // scrambled palettes? - AM_RANGE(0x300000, 0x33ffff) AM_RAM/*_WRITE(stepstag_palette_w)*/ AM_SHARE("paletteram1") + map(0x300000, 0x33ffff).ram() /* .w(this, FUNC(stepstag_sub_map::stepstag_palette_w))*/ .share("paletteram1"); - AM_RANGE(0x400000, 0x43ffff) AM_RAM/*_WRITE(stepstag_palette_w)*/ AM_SHARE("paletteram2") + map(0x400000, 0x43ffff).ram() /* .w(this, FUNC(stepstag_sub_map::stepstag_palette_w))*/ .share("paletteram2"); - AM_RANGE(0x500000, 0x53ffff) AM_RAM/*_WRITE(stepstag_palette_w)*/ AM_SHARE("paletteram3") + map(0x500000, 0x53ffff).ram() /* .w(this, FUNC(stepstag_sub_map::stepstag_palette_w))*/ .share("paletteram3"); // rgb brightness? - AM_RANGE(0x700000, 0x700001) AM_WRITENOP // 0-f - AM_RANGE(0x700002, 0x700003) AM_WRITENOP // 0-f - AM_RANGE(0x700004, 0x700005) AM_WRITENOP // 0-f - AM_RANGE(0x700006, 0x700007) AM_WRITENOP // 0-3f (high bits?) + map(0x700000, 0x700001).nopw(); // 0-f + map(0x700002, 0x700003).nopw(); // 0-f + map(0x700004, 0x700005).nopw(); // 0-f + map(0x700006, 0x700007).nopw(); // 0-3f (high bits?) // left screen sprites - AM_RANGE(0x800000, 0x803fff) AM_RAM AM_SHARE("spriteram1") // Object RAM - AM_RANGE(0x804000, 0x87ffff) AM_RAM - AM_RANGE(0x880000, 0x880001) AM_WRITENOP // cleared after writing this sprite list -// AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP // cleared at boot + map(0x800000, 0x803fff).ram().share("spriteram1"); // Object RAM + map(0x804000, 0x87ffff).ram(); + map(0x880000, 0x880001).nopw(); // cleared after writing this sprite list +// map(0x8c0000, 0x8c0001).nopw(); // cleared at boot // middle screen sprites - AM_RANGE(0x900000, 0x903fff) AM_RAM AM_SHARE("spriteram2") // Object RAM - AM_RANGE(0x904000, 0x97ffff) AM_RAM - AM_RANGE(0x980000, 0x980001) AM_WRITENOP // cleared after writing this sprite list -// AM_RANGE(0x9c0000, 0x9c0001) AM_WRITENOP // cleared at boot + map(0x900000, 0x903fff).ram().share("spriteram2"); // Object RAM + map(0x904000, 0x97ffff).ram(); + map(0x980000, 0x980001).nopw(); // cleared after writing this sprite list +// map(0x9c0000, 0x9c0001).nopw(); // cleared at boot // right screen sprites - AM_RANGE(0xa00000, 0xa03fff) AM_RAM AM_SHARE("spriteram3") // Object RAM - AM_RANGE(0xa04000, 0xa7ffff) AM_RAM - AM_RANGE(0xa80000, 0xa80001) AM_WRITENOP // cleared after writing this sprite list -// AM_RANGE(0xac0000, 0xac0001) AM_WRITENOP // cleared at boot + map(0xa00000, 0xa03fff).ram().share("spriteram3"); // Object RAM + map(0xa04000, 0xa7ffff).ram(); + map(0xa80000, 0xa80001).nopw(); // cleared after writing this sprite list +// map(0xac0000, 0xac0001).nopw(); // cleared at boot - AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE("soundlatch", generic_latch_16_device, read, write) + map(0xb00000, 0xb00001).rw(m_soundlatch, FUNC(generic_latch_16_device::read), FUNC(generic_latch_16_device::write)); - AM_RANGE(0xc00000, 0xc00001) AM_READ(unknown_read_0xc00000) AM_WRITENOP //?? - AM_RANGE(0xd00000, 0xd00001) AM_READNOP // watchdog - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP //?? - AM_RANGE(0xffff00, 0xffff01) AM_READ(unknown_read_0xffff00) -ADDRESS_MAP_END + map(0xc00000, 0xc00001).r(this, FUNC(stepstag_state::unknown_read_0xc00000)).nopw(); //?? + map(0xd00000, 0xd00001).nopr(); // watchdog + map(0xf00000, 0xf00001).nopw(); //?? + map(0xffff00, 0xffff01).r(this, FUNC(stepstag_state::unknown_read_0xffff00)); +} -ADDRESS_MAP_START(stepstag_state::vjdash_map) - AM_IMPORT_FROM(stepstag_map) -ADDRESS_MAP_END +void stepstag_state::vjdash_map(address_map &map) +{ + stepstag_map(map); +} /*************************************************************************** diff --git a/src/mame/drivers/tg100.cpp b/src/mame/drivers/tg100.cpp index 12bf5d83162..56818379047 100644 --- a/src/mame/drivers/tg100.cpp +++ b/src/mame/drivers/tg100.cpp @@ -52,21 +52,24 @@ public: }; /* all memory accesses are decoded by the gate array... */ -ADDRESS_MAP_START(tg100_state::tg100_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM /* gate array stuff */ - AM_RANGE(0x00080000, 0x0009ffff) AM_ROM AM_REGION("prgrom", 0x00000) -ADDRESS_MAP_END +void tg100_state::tg100_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).ram(); /* gate array stuff */ + map(0x00080000, 0x0009ffff).rom().region("prgrom", 0x00000); +} -ADDRESS_MAP_START(tg100_state::tg100_io_map) +void tg100_state::tg100_io_map(address_map &map) +{ // ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +} static INPUT_PORTS_START( tg100 ) INPUT_PORTS_END -ADDRESS_MAP_START(tg100_state::ymw258_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM -ADDRESS_MAP_END +void tg100_state::ymw258_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); +} MACHINE_CONFIG_START(tg100_state::tg100) /* basic machine hardware */ diff --git a/src/mame/drivers/tgtpanic.cpp b/src/mame/drivers/tgtpanic.cpp index 6bb7adabf56..6696e755814 100644 --- a/src/mame/drivers/tgtpanic.cpp +++ b/src/mame/drivers/tgtpanic.cpp @@ -102,16 +102,18 @@ WRITE8_MEMBER(tgtpanic_state::color_w) * *************************************/ -ADDRESS_MAP_START(tgtpanic_state::prg_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tgtpanic_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(color_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") -ADDRESS_MAP_END +void tgtpanic_state::prg_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).ram().share("ram"); +} + +void tgtpanic_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w(this, FUNC(tgtpanic_state::color_w)); + map(0x01, 0x01).portr("IN1"); +} /************************************* diff --git a/src/mame/drivers/thayers.cpp b/src/mame/drivers/thayers.cpp index 712e69bfc9e..d1e6018588f 100644 --- a/src/mame/drivers/thayers.cpp +++ b/src/mame/drivers/thayers.cpp @@ -617,29 +617,31 @@ READ8_MEMBER(thayers_state::ssi263_register_r) /* Memory Maps */ -ADDRESS_MAP_START(thayers_state::thayers_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(thayers_state::thayers_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_READWRITE(ssi263_register_r, ssi263_register_w) - AM_RANGE(0x20, 0x20) AM_WRITE(control_w) - AM_RANGE(0x40, 0x40) AM_READWRITE(irqstate_r, control2_w) - AM_RANGE(0x80, 0x80) AM_READWRITE(cop_data_r, cop_data_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(timer_int_ack_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(data_rdy_int_ack_w) - AM_RANGE(0xf0, 0xf0) AM_READ(laserdsc_data_r) - AM_RANGE(0xf1, 0xf1) AM_READ(dsw_b_r) - AM_RANGE(0xf2, 0xf2) AM_READ_PORT("DSWA") - AM_RANGE(0xf3, 0xf3) AM_WRITE(intrq_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(laserdsc_data_w) - AM_RANGE(0xf5, 0xf5) AM_WRITE(laserdsc_control_w) - AM_RANGE(0xf6, 0xf6) AM_WRITE(den1_w) - AM_RANGE(0xf7, 0xf7) AM_WRITE(den2_w) -ADDRESS_MAP_END +void thayers_state::thayers_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xdfff).rom(); +} + +void thayers_state::thayers_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x07).rw(this, FUNC(thayers_state::ssi263_register_r), FUNC(thayers_state::ssi263_register_w)); + map(0x20, 0x20).w(this, FUNC(thayers_state::control_w)); + map(0x40, 0x40).rw(this, FUNC(thayers_state::irqstate_r), FUNC(thayers_state::control2_w)); + map(0x80, 0x80).rw(this, FUNC(thayers_state::cop_data_r), FUNC(thayers_state::cop_data_w)); + map(0xa0, 0xa0).w(this, FUNC(thayers_state::timer_int_ack_w)); + map(0xc0, 0xc0).w(this, FUNC(thayers_state::data_rdy_int_ack_w)); + map(0xf0, 0xf0).r(this, FUNC(thayers_state::laserdsc_data_r)); + map(0xf1, 0xf1).r(this, FUNC(thayers_state::dsw_b_r)); + map(0xf2, 0xf2).portr("DSWA"); + map(0xf3, 0xf3).w(this, FUNC(thayers_state::intrq_w)); + map(0xf4, 0xf4).w(this, FUNC(thayers_state::laserdsc_data_w)); + map(0xf5, 0xf5).w(this, FUNC(thayers_state::laserdsc_control_w)); + map(0xf6, 0xf6).w(this, FUNC(thayers_state::den1_w)); + map(0xf7, 0xf7).w(this, FUNC(thayers_state::den2_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp index 898f84bc288..28e34a5f84e 100644 --- a/src/mame/drivers/thedealr.cpp +++ b/src/mame/drivers/thedealr.cpp @@ -273,33 +273,34 @@ WRITE8_MEMBER(thedealr_state::unk_w) // popmessage("UNK %02x", data); } -ADDRESS_MAP_START(thedealr_state::thedealr) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") +void thedealr_state::thedealr(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("nvram"); - AM_RANGE(0x2000, 0x2000) AM_RAM // w ff at boot (after clearing commram) + map(0x2000, 0x2000).ram(); // w ff at boot (after clearing commram) - AM_RANGE(0x2400, 0x2400) AM_READ(irq_ack_r) // r = irq ack. - AM_RANGE(0x2400, 0x2400) AM_WRITE(unk_w) // w = ? + map(0x2400, 0x2400).r(this, FUNC(thedealr_state::irq_ack_r)); // r = irq ack. + map(0x2400, 0x2400).w(this, FUNC(thedealr_state::unk_w)); // w = ? - AM_RANGE(0x2800, 0x2800) AM_READ_PORT("COINS") AM_WRITENOP // rw + map(0x2800, 0x2800).portr("COINS").nopw(); // rw - AM_RANGE(0x2801, 0x2801) AM_READ_PORT("DSW4") - AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("DSW3") + map(0x2801, 0x2801).portr("DSW4"); + map(0x2c00, 0x2c00).portr("DSW3"); - AM_RANGE(0x3400, 0x3400) AM_READWRITE(iox_r, iox_w) - AM_RANGE(0x3401, 0x3401) AM_READ(iox_status_r) + map(0x3400, 0x3400).rw(this, FUNC(thedealr_state::iox_r), FUNC(thedealr_state::iox_w)); + map(0x3401, 0x3401).r(this, FUNC(thedealr_state::iox_status_r)); - AM_RANGE(0x3000, 0x3000) AM_RAM // rw, comm in test mode - AM_RANGE(0x3001, 0x3001) AM_RAM // rw, "" + map(0x3000, 0x3000).ram(); // rw, comm in test mode + map(0x3001, 0x3001).ram(); // rw, "" - AM_RANGE(0x3800, 0x3bff) AM_RAM AM_SHARE("commram") + map(0x3800, 0x3bff).ram().share("commram"); - AM_RANGE(0x3c00, 0x3c00) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, address_w) - AM_RANGE(0x3c01, 0x3c01) AM_DEVWRITE ("aysnd", ay8910_device, data_w) + map(0x3c00, 0x3c00).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0x3c01, 0x3c01).w("aysnd", FUNC(ay8910_device::data_w)); - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END + map(0x8000, 0x8000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0xffff).rom().region("maincpu", 0); +} /*************************************************************************** @@ -307,25 +308,26 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(thedealr_state::thedealr_sub) +void thedealr_state::thedealr_sub(address_map &map) +{ // Work RAM - AM_RANGE(0x0000, 0x00ff) AM_RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM + map(0x0000, 0x00ff).ram(); + map(0x0100, 0x01ff).ram(); // Sprites - AM_RANGE(0x0800, 0x27ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0x2800, 0x3fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0x4000, 0x42ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0x4300, 0x4303) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) - AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) // enable / disable background transparency + map(0x0800, 0x27ff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0x2800, 0x3fff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); + map(0x4000, 0x42ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0x4300, 0x4303).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); + map(0x4800, 0x4800).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); // enable / disable background transparency // Comm RAM - AM_RANGE(0x5800, 0x5bff) AM_RAM AM_SHARE("commram") + map(0x5800, 0x5bff).ram().share("commram"); // ROM - AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("subcpu", 0x0000) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("subcpu", 0x8000) -ADDRESS_MAP_END + map(0x6000, 0x7fff).rom().region("subcpu", 0x0000); + map(0x8000, 0xffff).rom().region("subcpu", 0x8000); +} /*************************************************************************** diff --git a/src/mame/drivers/thedeep.cpp b/src/mame/drivers/thedeep.cpp index bfcb13d7832..92694707734 100644 --- a/src/mame/drivers/thedeep.cpp +++ b/src/mame/drivers/thedeep.cpp @@ -148,26 +148,27 @@ WRITE8_MEMBER(thedeep_state::e100_w) logerror("pc %04x: e100 = %02x\n", m_maincpu->pc(),data); } -ADDRESS_MAP_START(thedeep_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // ROM (banked) - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xdfff) AM_RAM // RAM (MCU data copied here) - AM_RANGE(0xe000, 0xe000) AM_READWRITE(protection_r, protection_w) // To MCU - AM_RANGE(0xe004, 0xe004) AM_READWRITE(e004_r, nmi_w) // - AM_RANGE(0xe008, 0xe008) AM_READ_PORT("e008") // P1 (Inputs) - AM_RANGE(0xe009, 0xe009) AM_READ_PORT("e009") // P2 - AM_RANGE(0xe00a, 0xe00a) AM_READ_PORT("e00a") // DSW1 - AM_RANGE(0xe00b, 0xe00b) AM_READ_PORT("e00b") // DSW2 - AM_RANGE(0xe00c, 0xe00c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU - AM_RANGE(0xe100, 0xe100) AM_WRITE(e100_w) // ? - AM_RANGE(0xe210, 0xe213) AM_WRITEONLY AM_SHARE("scroll") // Scroll - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Text Layer - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Background Layer - AM_RANGE(0xf800, 0xf83f) AM_RAM AM_SHARE("scroll2") // Column Scroll - AM_RANGE(0xf840, 0xffff) AM_RAM -ADDRESS_MAP_END +void thedeep_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); // ROM (banked) + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xdfff).ram(); // RAM (MCU data copied here) + map(0xe000, 0xe000).rw(this, FUNC(thedeep_state::protection_r), FUNC(thedeep_state::protection_w)); // To MCU + map(0xe004, 0xe004).rw(this, FUNC(thedeep_state::e004_r), FUNC(thedeep_state::nmi_w)); // + map(0xe008, 0xe008).portr("e008"); // P1 (Inputs) + map(0xe009, 0xe009).portr("e009"); // P2 + map(0xe00a, 0xe00a).portr("e00a"); // DSW1 + map(0xe00b, 0xe00b).portr("e00b"); // DSW2 + map(0xe00c, 0xe00c).w(m_soundlatch, FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0xe100, 0xe100).w(this, FUNC(thedeep_state::e100_w)); // ? + map(0xe210, 0xe213).writeonly().share("scroll"); // Scroll + map(0xe400, 0xe7ff).ram().share("spriteram"); // Sprites + map(0xe800, 0xefff).ram().w(this, FUNC(thedeep_state::vram_1_w)).share("vram_1"); // Text Layer + map(0xf000, 0xf7ff).ram().w(this, FUNC(thedeep_state::vram_0_w)).share("vram_0"); // Background Layer + map(0xf800, 0xf83f).ram().share("scroll2"); // Column Scroll + map(0xf840, 0xffff).ram(); +} /*************************************************************************** @@ -176,12 +177,13 @@ ADDRESS_MAP_END ***************************************************************************/ -ADDRESS_MAP_START(thedeep_state::audio_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ymsnd", ym2203_device, write) // - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void thedeep_state::audio_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x0801).w("ymsnd", FUNC(ym2203_device::write)); // + map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU + map(0x8000, 0xffff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/thepit.cpp b/src/mame/drivers/thepit.cpp index f014168a1ab..93b9794c79f 100644 --- a/src/mame/drivers/thepit.cpp +++ b/src/mame/drivers/thepit.cpp @@ -206,67 +206,72 @@ WRITE_LINE_MEMBER(thepit_state::nmi_mask_w) } -ADDRESS_MAP_START(thepit_state::thepit_main_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) AM_WRITENOP // Not hooked up according to the schematics - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(thepit_state::desertdan_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8bff) AM_MIRROR(0x0400) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) AM_WRITENOP // Not hooked up according to the schematics - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(thepit_state::intrepid_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8c00, 0x8fff) AM_READ(intrepid_colorram_mirror_r) AM_WRITE(colorram_w) /* mirror for intrepi2 */ - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0x9800, 0x983f) AM_MIRROR(0x0700) AM_RAM AM_SHARE("attributesram") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9860, 0x98ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(input_port_0_r) - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thepit_state::audio_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3800, 0x3bff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thepit_state::audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x8d, 0x8d) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r) -ADDRESS_MAP_END +void thepit_state::thepit_main_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).mirror(0x0400).ram().w(this, FUNC(thepit_state::colorram_w)).share("colorram"); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(thepit_state::videoram_w)).share("videoram"); + map(0x9800, 0x983f).mirror(0x0700).ram().share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x98ff).ram(); + map(0xa000, 0xa000).r(this, FUNC(thepit_state::input_port_0_r)).nopw(); // Not hooked up according to the schematics + map(0xa800, 0xa800).portr("IN1"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write)); +} + +void thepit_state::desertdan_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8bff).mirror(0x0400).ram().w(this, FUNC(thepit_state::colorram_w)).share("colorram"); + map(0x9000, 0x93ff).mirror(0x0400).ram().w(this, FUNC(thepit_state::videoram_w)).share("videoram"); + map(0x9800, 0x983f).mirror(0x0700).ram().share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x98ff).ram(); + map(0xa000, 0xa000).r(this, FUNC(thepit_state::input_port_0_r)).nopw(); // Not hooked up according to the schematics + map(0xa800, 0xa800).portr("IN1"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write)); +} + +void thepit_state::intrepid_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8c00, 0x8fff).r(this, FUNC(thepit_state::intrepid_colorram_mirror_r)).w(this, FUNC(thepit_state::colorram_w)); /* mirror for intrepi2 */ + map(0x9000, 0x93ff).ram().w(this, FUNC(thepit_state::videoram_w)).share("videoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(thepit_state::colorram_w)).share("colorram"); + map(0x9800, 0x983f).mirror(0x0700).ram().share("attributesram"); + map(0x9840, 0x985f).ram().share("spriteram"); + map(0x9860, 0x98ff).ram(); + map(0xa000, 0xa000).r(this, FUNC(thepit_state::input_port_0_r)); + map(0xa800, 0xa800).portr("IN1"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w("soundlatch", FUNC(generic_latch_8_device::write)); +} + + +void thepit_state::audio_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3800, 0x3bff).ram(); +} + + +void thepit_state::audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); + map(0x8c, 0x8d).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x8d, 0x8d).r("ay2", FUNC(ay8910_device::data_r)); + map(0x8e, 0x8f).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x8f, 0x8f).r("ay1", FUNC(ay8910_device::data_r)); +} static INPUT_PORTS_START( in0_real) diff --git a/src/mame/drivers/thief.cpp b/src/mame/drivers/thief.cpp index f8b0a22a279..63f3c55cb99 100644 --- a/src/mame/drivers/thief.cpp +++ b/src/mame/drivers/thief.cpp @@ -133,38 +133,41 @@ READ8_MEMBER( thief_state::thief_io_r ) return data; } -ADDRESS_MAP_START(thief_state::sharkatt_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM /* 2114 */ - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(thief_videoram_r, thief_videoram_w) /* 4116 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(thief_state::thief_main_map) - AM_RANGE(0x0000, 0x0000) AM_WRITE(thief_blit_w) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM /* 2114 */ - AM_RANGE(0xa000, 0xafff) AM_ROM /* NATO Defense diagnostic ROM */ - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(thief_videoram_r, thief_videoram_w) /* 4116 */ - AM_RANGE(0xe000, 0xe008) AM_READWRITE(thief_coprocessor_r, thief_coprocessor_w) - AM_RANGE(0xe010, 0xe02f) AM_ROM - AM_RANGE(0xe080, 0xe0bf) AM_READWRITE(thief_context_ram_r, thief_context_ram_w) - AM_RANGE(0xe0c0, 0xe0c0) AM_WRITE(thief_context_bank_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thief_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */ - AM_RANGE(0x10, 0x10) AM_WRITE(thief_video_control_w) - AM_RANGE(0x30, 0x33) AM_MIRROR(0x0c) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x41, 0x41) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x42, 0x43) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x43, 0x43) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x50, 0x50) AM_WRITE(thief_color_plane_w) - AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("tms", tms9927_device, read, write) - AM_RANGE(0x70, 0x7f) AM_WRITE(thief_color_map_w) -ADDRESS_MAP_END +void thief_state::sharkatt_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); /* 2114 */ + map(0xc000, 0xdfff).rw(this, FUNC(thief_state::thief_videoram_r), FUNC(thief_state::thief_videoram_w)); /* 4116 */ +} + +void thief_state::thief_main_map(address_map &map) +{ + map(0x0000, 0x0000).w(this, FUNC(thief_state::thief_blit_w)); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); /* 2114 */ + map(0xa000, 0xafff).rom(); /* NATO Defense diagnostic ROM */ + map(0xc000, 0xdfff).rw(this, FUNC(thief_state::thief_videoram_r), FUNC(thief_state::thief_videoram_w)); /* 4116 */ + map(0xe000, 0xe008).rw(this, FUNC(thief_state::thief_coprocessor_r), FUNC(thief_state::thief_coprocessor_w)); + map(0xe010, 0xe02f).rom(); + map(0xe080, 0xe0bf).rw(this, FUNC(thief_state::thief_context_ram_r), FUNC(thief_state::thief_context_ram_w)); + map(0xe0c0, 0xe0c0).w(this, FUNC(thief_state::thief_context_bank_w)); +} + + +void thief_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); /* watchdog */ + map(0x10, 0x10).w(this, FUNC(thief_state::thief_video_control_w)); + map(0x30, 0x33).mirror(0x0c).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x41).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x41, 0x41).r("ay1", FUNC(ay8910_device::data_r)); + map(0x42, 0x43).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x43, 0x43).r("ay2", FUNC(ay8910_device::data_r)); + map(0x50, 0x50).w(this, FUNC(thief_state::thief_color_plane_w)); + map(0x60, 0x6f).rw(m_tms, FUNC(tms9927_device::read), FUNC(tms9927_device::write)); + map(0x70, 0x7f).w(this, FUNC(thief_state::thief_color_map_w)); +} /**********************************************************/ diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp index 3f7e8e5fc9e..9f973423720 100644 --- a/src/mame/drivers/thomson.cpp +++ b/src/mame/drivers/thomson.cpp @@ -309,23 +309,24 @@ They can run the same software and accept the same devices and extensions. /* ------------ address maps ------------ */ -ADDRESS_MAP_START(thomson_state::to7) - - AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK ) AM_WRITE(to7_cartridge_w ) /* 4 * 16 KB */ - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK ) AM_WRITE(to7_vram_w ) - AM_RANGE ( 0x6000, 0x7fff ) AM_RAMBANK ( THOM_BASE_BANK ) /* 1 * 8 KB */ - AM_RANGE ( 0x8000, 0xdfff ) AM_RAMBANK ( THOM_RAM_BANK ) /* 16 or 24 KB (for extension) */ - AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) - AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write) - AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7d0, 0xe7df ) AM_READWRITE(to7_floppy_r, to7_floppy_w ) - AM_RANGE ( 0xe7e0, 0xe7e3 ) AM_DEVREADWRITE( "to7_io:pia_2", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) - AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w ) - AM_RANGE ( 0xe800, 0xffff ) AM_ROM /* system bios */ +void thomson_state::to7(address_map &map) +{ + + map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to7_cartridge_w)); /* 4 * 16 KB */ + map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to7_vram_w)); + map(0x6000, 0x7fff).bankrw(THOM_BASE_BANK); /* 1 * 8 KB */ + map(0x8000, 0xdfff).bankrw(THOM_RAM_BANK); /* 16 or 24 KB (for extension) */ + map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); + map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write)); + map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7d0, 0xe7df).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w)); + map(0xe7e0, 0xe7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w)); + map(0xe800, 0xffff).rom(); /* system bios */ /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x247ff: 18 KB floppy / network ROM controllers */ @@ -336,7 +337,7 @@ ADDRESS_MAP_START(thomson_state::to7) 0x6000 - 0x9fff: 16 KB extended RAM 0xa000 - 0xbfff: 8 KB more extended RAM */ -ADDRESS_MAP_END +} @@ -820,24 +821,25 @@ In arabic mode, Ctrl+E / Ctrl+X to start / stop typing in-line latin. **********************************************************************/ -ADDRESS_MAP_START(thomson_state::to770) - - AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(to7_cartridge_w ) /* 4 * 16 KB */ - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x6000, 0x9fff ) AM_RAMBANK ( THOM_BASE_BANK ) /* 16 KB */ - AM_RANGE ( 0xa000, 0xdfff ) AM_RAMBANK ( THOM_RAM_BANK ) /* 6 * 16 KB */ - AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) - AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write) - AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7d0, 0xe7df ) AM_READWRITE(to7_floppy_r, to7_floppy_w ) - AM_RANGE ( 0xe7e0, 0xe7e3 ) AM_DEVREADWRITE( "to7_io:pia_2", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to770_gatearray_r, to770_gatearray_w ) - AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) - AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w ) - AM_RANGE ( 0xe800, 0xffff ) AM_ROM /* system bios */ +void thomson_state::to770(address_map &map) +{ + + map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to7_cartridge_w)); /* 4 * 16 KB */ + map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x6000, 0x9fff).bankrw(THOM_BASE_BANK); /* 16 KB */ + map(0xa000, 0xdfff).bankrw(THOM_RAM_BANK); /* 6 * 16 KB */ + map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); + map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write)); + map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7d0, 0xe7df).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w)); + map(0xe7e0, 0xe7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to770_gatearray_r), FUNC(thomson_state::to770_gatearray_w)); + map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w)); + map(0xe800, 0xffff).rom(); /* system bios */ /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x247ff: 18 KB floppy / network ROM controllers */ @@ -848,7 +850,7 @@ ADDRESS_MAP_START(thomson_state::to770) 0x08000 - 0x1ffff: 6 * 16 KB banked extended RAM */ -ADDRESS_MAP_END +} @@ -1021,22 +1023,23 @@ Differences include: **********************************************************************/ -ADDRESS_MAP_START(thomson_state::mo5) - - AM_RANGE ( 0x0000, 0x1fff ) AM_READ_BANK ( THOM_VRAM_BANK ) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x2000, 0x9fff ) AM_RAMBANK ( THOM_BASE_BANK ) - AM_RANGE ( 0xa000, 0xa7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) - AM_RANGE ( 0xa7c0, 0xa7c3 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xa7cb, 0xa7cb ) AM_WRITE(mo5_ext_w ) - AM_RANGE ( 0xa7cc, 0xa7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xa7d0, 0xa7df ) AM_READWRITE(to7_floppy_r, to7_floppy_w ) - AM_RANGE ( 0xa7e0, 0xa7e3 ) AM_DEVREADWRITE( "to7_io:pia_2", pia6821_device, read_alt, write_alt ) - AM_RANGE ( 0xa7e4, 0xa7e7 ) AM_READWRITE(mo5_gatearray_r, mo5_gatearray_w ) - AM_RANGE ( 0xa7e8, 0xa7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) - AM_RANGE ( 0xa7f2, 0xa7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xa7fe, 0xa7ff ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write) - AM_RANGE ( 0xb000, 0xefff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(mo5_cartridge_w ) - AM_RANGE ( 0xf000, 0xffff ) AM_ROM /* system bios */ +void thomson_state::mo5(address_map &map) +{ + + map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x2000, 0x9fff).bankrw(THOM_BASE_BANK); + map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK); + map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7cb, 0xa7cb).w(this, FUNC(thomson_state::mo5_ext_w)); + map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7d0, 0xa7df).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w)); + map(0xa7e0, 0xa7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7e4, 0xa7e7).rw(this, FUNC(thomson_state::mo5_gatearray_r), FUNC(thomson_state::mo5_gatearray_w)); + map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xa7f2, 0xa7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write)); + map(0xb000, 0xefff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::mo5_cartridge_w)); + map(0xf000, 0xffff).rom(); /* system bios */ /* 0x10000 - 0x1ffff: 16 KB integrated BASIC / 64 KB external cartridge */ /* 0x20000 - 0x247ff: 18 KB floppy / network ROM controllers */ @@ -1047,7 +1050,7 @@ ADDRESS_MAP_START(thomson_state::mo5) 0x0c000 - 0x1bfff: 4 * 16 KB bank extended RAM */ -ADDRESS_MAP_END +} @@ -1244,26 +1247,27 @@ It was replaced quickly with the improved TO9+. **********************************************************************/ -ADDRESS_MAP_START(thomson_state::to9) - - AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK ) AM_WRITE(to9_cartridge_w )/* 4 * 16 KB */ - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK ) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x6000, 0x9fff ) AM_RAMBANK ( THOM_BASE_BANK ) /* 16 KB */ - AM_RANGE ( 0xa000, 0xdfff ) AM_RAMBANK ( THOM_RAM_BANK ) /* 10 * 16 KB */ - AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) - AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write) - AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7d0, 0xe7d9 ) AM_READWRITE(to9_floppy_r, to9_floppy_w ) - AM_RANGE ( 0xe7da, 0xe7dd ) AM_READWRITE(to9_vreg_r, to9_vreg_w ) - AM_RANGE ( 0xe7de, 0xe7df ) AM_READWRITE(to9_kbd_r, to9_kbd_w ) - AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to9_gatearray_r, to9_gatearray_w ) - AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) +void thomson_state::to9(address_map &map) +{ + + map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to9_cartridge_w));/* 4 * 16 KB */ + map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x6000, 0x9fff).bankrw(THOM_BASE_BANK); /* 16 KB */ + map(0xa000, 0xdfff).bankrw(THOM_RAM_BANK); /* 10 * 16 KB */ + map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); + map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write)); + map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7d0, 0xe7d9).rw(this, FUNC(thomson_state::to9_floppy_r), FUNC(thomson_state::to9_floppy_w)); + map(0xe7da, 0xe7dd).rw(this, FUNC(thomson_state::to9_vreg_r), FUNC(thomson_state::to9_vreg_w)); + map(0xe7de, 0xe7df).rw(this, FUNC(thomson_state::to9_kbd_r), FUNC(thomson_state::to9_kbd_w)); + map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to9_gatearray_r), FUNC(thomson_state::to9_gatearray_w)); + map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); /* AM_RANGE ( 0xe7f0, 0xe7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */ - AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w ) - AM_RANGE ( 0xe800, 0xffff ) AM_ROM /* system bios */ + map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w)); + map(0xe800, 0xffff).rom(); /* system bios */ /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x3ffff: 128 KB internal software ROM */ @@ -1275,7 +1279,7 @@ ADDRESS_MAP_START(thomson_state::to9) 0x08000 - 0x2ffff: 10 * 16 KB banked extended RAM */ -ADDRESS_MAP_END +} @@ -1573,27 +1577,28 @@ The TO8D is simply a TO8 with an integrated 3"1/2 floppy drive. **********************************************************************/ -ADDRESS_MAP_START(thomson_state::to8) - - AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(to8_cartridge_w ) /* 4 * 16 KB */ - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w ) - AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w ) - AM_RANGE ( 0xa000, 0xbfff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w ) - AM_RANGE ( 0xc000, 0xdfff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w ) - AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) /* 2 * 2 KB */ - AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write) - AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7d0, 0xe7d9 ) AM_READWRITE(to8_floppy_r, to8_floppy_w ) - AM_RANGE ( 0xe7da, 0xe7dd ) AM_READWRITE(to8_vreg_r, to8_vreg_w ) - AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to8_gatearray_r, to8_gatearray_w ) - AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) +void thomson_state::to8(address_map &map) +{ + + map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */ + map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w)); + map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w)); + map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w)); + map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w)); + map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); /* 2 * 2 KB */ + map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write)); + map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7d0, 0xe7d9).rw(this, FUNC(thomson_state::to8_floppy_r), FUNC(thomson_state::to8_floppy_w)); + map(0xe7da, 0xe7dd).rw(this, FUNC(thomson_state::to8_vreg_r), FUNC(thomson_state::to8_vreg_w)); + map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to8_gatearray_r), FUNC(thomson_state::to8_gatearray_w)); + map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); /* AM_RANGE ( 0xe7f0, 0xe7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */ - AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w ) - AM_RANGE ( 0xe800, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK ) /* 2 * 6 KB */ + map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w)); + map(0xe800, 0xffff).bankr(TO8_BIOS_BANK); /* 2 * 6 KB */ /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x2ffff: 64 KB internal software ROM */ @@ -1602,7 +1607,7 @@ ADDRESS_MAP_START(thomson_state::to8) /* RAM mapping: 512 KB flat (including video) */ -ADDRESS_MAP_END +} /* ------------ ROMS ------------ */ @@ -1786,28 +1791,29 @@ The differences with the TO8 are: **********************************************************************/ -ADDRESS_MAP_START(thomson_state::to9p) - - AM_RANGE ( 0x0000, 0x3fff ) AM_READ_BANK ( THOM_CART_BANK) AM_WRITE(to8_cartridge_w ) /* 4 * 16 KB */ - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w ) - AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w ) - AM_RANGE ( 0xa000, 0xbfff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w ) - AM_RANGE ( 0xc000, 0xdfff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w ) - AM_RANGE ( 0xe000, 0xe7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) /* 2 * 2 KB */ - AM_RANGE ( 0xe7c0, 0xe7c7 ) AM_DEVREADWRITE("mc6846", mc6846_device, read, write) - AM_RANGE ( 0xe7c8, 0xe7cb ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7cc, 0xe7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7d0, 0xe7d9 ) AM_READWRITE(to8_floppy_r, to8_floppy_w ) - AM_RANGE ( 0xe7da, 0xe7dd ) AM_READWRITE(to8_vreg_r, to8_vreg_w ) - AM_RANGE ( 0xe7de, 0xe7df ) AM_READWRITE(to9_kbd_r, to9_kbd_w ) - AM_RANGE ( 0xe7e4, 0xe7e7 ) AM_READWRITE(to8_gatearray_r, to8_gatearray_w ) - AM_RANGE ( 0xe7e8, 0xe7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) +void thomson_state::to9p(address_map &map) +{ + + map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(this, FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */ + map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w)); + map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w)); + map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w)); + map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w)); + map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); /* 2 * 2 KB */ + map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write)); + map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7d0, 0xe7d9).rw(this, FUNC(thomson_state::to8_floppy_r), FUNC(thomson_state::to8_floppy_w)); + map(0xe7da, 0xe7dd).rw(this, FUNC(thomson_state::to8_vreg_r), FUNC(thomson_state::to8_vreg_w)); + map(0xe7de, 0xe7df).rw(this, FUNC(thomson_state::to9_kbd_r), FUNC(thomson_state::to9_kbd_w)); + map(0xe7e4, 0xe7e7).rw(this, FUNC(thomson_state::to8_gatearray_r), FUNC(thomson_state::to8_gatearray_w)); + map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); /* AM_RANGE ( 0xe7f0, 0xe7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */ - AM_RANGE ( 0xe7f2, 0xe7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xe7f8, 0xe7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xe7fe, 0xe7ff ) AM_READWRITE(to7_modem_mea8000_r, to7_modem_mea8000_w ) - AM_RANGE ( 0xe800, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK ) /* 2 * 6 KB */ + map(0xe7f2, 0xe7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xe7fe, 0xe7ff).rw(this, FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w)); + map(0xe800, 0xffff).bankr(TO8_BIOS_BANK); /* 2 * 6 KB */ /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x2ffff: 64 KB internal software ROM */ @@ -1816,7 +1822,7 @@ ADDRESS_MAP_START(thomson_state::to9p) /* RAM mapping: 512 KB flat (including video) */ -ADDRESS_MAP_END +} /* ------------ ROMS ------------ */ @@ -1966,29 +1972,28 @@ a PC XT. **********************************************************************/ -ADDRESS_MAP_START(thomson_state::mo6) - - AM_RANGE ( 0x0000, 0x1fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x2000, 0x3fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w ) - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w ) - AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w ) - AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w ) - AM_RANGE ( 0xa000, 0xa7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) - AM_RANGE ( 0xa7c0, 0xa7c3 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xa7cb, 0xa7cb ) AM_WRITE(mo6_ext_w ) - AM_RANGE ( 0xa7cc, 0xa7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xa7d0, 0xa7d9 ) AM_READWRITE(to7_floppy_r, to7_floppy_w ) - AM_RANGE ( 0xa7da, 0xa7dd ) AM_READWRITE(mo6_vreg_r, mo6_vreg_w ) - AM_RANGE ( 0xa7e4, 0xa7e7 ) AM_READWRITE(mo6_gatearray_r, mo6_gatearray_w ) - AM_RANGE ( 0xa7e8, 0xa7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) -/* AM_RANGE ( 0xa7f0, 0xa7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w )*/ - AM_RANGE ( 0xa7f2, 0xa7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xa7fe, 0xa7ff ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write) - AM_RANGE ( 0xb000, 0xbfff ) AM_ROMBANK ( MO6_CART_LO ) - AM_WRITE ( mo6_cartridge_w ) - AM_RANGE ( 0xc000, 0xefff ) AM_ROMBANK ( MO6_CART_HI ) - AM_WRITE ( mo6_cartridge_w ) - AM_RANGE ( 0xf000, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK ) +void thomson_state::mo6(address_map &map) +{ + + map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w)); + map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w)); + map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w)); + map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w)); + map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK); + map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7cb, 0xa7cb).w(this, FUNC(thomson_state::mo6_ext_w)); + map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7d0, 0xa7d9).rw(this, FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w)); + map(0xa7da, 0xa7dd).rw(this, FUNC(thomson_state::mo6_vreg_r), FUNC(thomson_state::mo6_vreg_w)); + map(0xa7e4, 0xa7e7).rw(this, FUNC(thomson_state::mo6_gatearray_r), FUNC(thomson_state::mo6_gatearray_w)); + map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); +/* map(0xa7f0, 0xa7f7).rw(this, FUNC(thomson_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/ + map(0xa7f2, 0xa7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write)); + map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(this, FUNC(thomson_state::mo6_cartridge_w)); + map(0xc000, 0xefff).bankr(MO6_CART_HI).w(this, FUNC(thomson_state::mo6_cartridge_w)); + map(0xf000, 0xffff).bankr(TO8_BIOS_BANK); /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x2ffff: 64 KB BIOS ROM */ @@ -1996,7 +2001,7 @@ ADDRESS_MAP_START(thomson_state::mo6) /* RAM mapping: 128 KB flat (including video) */ -ADDRESS_MAP_END +} /* ------------ ROMS ------------ */ @@ -2321,33 +2326,32 @@ Here are the differences between the MO6 and MO5NR: **********************************************************************/ -ADDRESS_MAP_START(thomson_state::mo5nr) - - AM_RANGE ( 0x0000, 0x1fff ) AM_READ_BANK ( THOM_VRAM_BANK) AM_WRITE(to770_vram_w ) - AM_RANGE ( 0x2000, 0x3fff ) AM_READ_BANK ( TO8_SYS_LO) AM_WRITE(to8_sys_lo_w ) - AM_RANGE ( 0x4000, 0x5fff ) AM_READ_BANK ( TO8_SYS_HI) AM_WRITE(to8_sys_hi_w ) - AM_RANGE ( 0x6000, 0x7fff ) AM_READ_BANK ( TO8_DATA_LO) AM_WRITE(to8_data_lo_w ) - AM_RANGE ( 0x8000, 0x9fff ) AM_READ_BANK ( TO8_DATA_HI) AM_WRITE(to8_data_hi_w ) - AM_RANGE ( 0xa000, 0xa7bf ) AM_ROMBANK ( THOM_FLOP_BANK ) - AM_RANGE ( 0xa7c0, 0xa7c3 ) AM_DEVREADWRITE( "pia_0", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xa7cb, 0xa7cb ) AM_WRITE(mo6_ext_w ) - AM_RANGE ( 0xa7cc, 0xa7cf ) AM_DEVREADWRITE( "pia_1", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xa7d0, 0xa7d9 ) AM_READWRITE(mo5nr_net_r, mo5nr_net_w ) - AM_RANGE ( 0xa7da, 0xa7dd ) AM_READWRITE(mo6_vreg_r, mo6_vreg_w ) - AM_RANGE ( 0xa7e1, 0xa7e1 ) AM_DEVREAD("cent_data_in", input_buffer_device, read) - AM_RANGE ( 0xa7e1, 0xa7e1 ) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE ( 0xa7e3, 0xa7e3 ) AM_READWRITE(mo5nr_prn_r, mo5nr_prn_w ) - AM_RANGE ( 0xa7e4, 0xa7e7 ) AM_READWRITE(mo6_gatearray_r, mo6_gatearray_w ) - AM_RANGE ( 0xa7e8, 0xa7eb ) AM_DEVREADWRITE( "acia", mos6551_device, read, write ) -/* AM_RANGE ( 0xa7f0, 0xa7f7 ) AM_READWRITE(to9_ieee_r, to9_ieee_w ) */ - AM_RANGE ( 0xa7f2, 0xa7f3 ) AM_READWRITE(to7_midi_r, to7_midi_w ) - AM_RANGE ( 0xa7f8, 0xa7fb ) AM_DEVREADWRITE( "pia_3", pia6821_device, read_alt, write_alt) - AM_RANGE ( 0xa7fe, 0xa7ff ) AM_DEVREADWRITE("mea8000", mea8000_device, read, write) - AM_RANGE ( 0xb000, 0xbfff ) AM_ROMBANK ( MO6_CART_LO ) - AM_WRITE ( mo6_cartridge_w ) - AM_RANGE ( 0xc000, 0xefff ) AM_ROMBANK ( MO6_CART_HI ) - AM_WRITE ( mo6_cartridge_w ) - AM_RANGE ( 0xf000, 0xffff ) AM_ROMBANK ( TO8_BIOS_BANK ) +void thomson_state::mo5nr(address_map &map) +{ + + map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(this, FUNC(thomson_state::to770_vram_w)); + map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(this, FUNC(thomson_state::to8_sys_lo_w)); + map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(this, FUNC(thomson_state::to8_sys_hi_w)); + map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(this, FUNC(thomson_state::to8_data_lo_w)); + map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(this, FUNC(thomson_state::to8_data_hi_w)); + map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK); + map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7cb, 0xa7cb).w(this, FUNC(thomson_state::mo6_ext_w)); + map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7d0, 0xa7d9).rw(this, FUNC(thomson_state::mo5nr_net_r), FUNC(thomson_state::mo5nr_net_w)); + map(0xa7da, 0xa7dd).rw(this, FUNC(thomson_state::mo6_vreg_r), FUNC(thomson_state::mo6_vreg_w)); + map(0xa7e1, 0xa7e1).r("cent_data_in", FUNC(input_buffer_device::read)); + map(0xa7e1, 0xa7e1).w(m_cent_data_out, FUNC(output_latch_device::write)); + map(0xa7e3, 0xa7e3).rw(this, FUNC(thomson_state::mo5nr_prn_r), FUNC(thomson_state::mo5nr_prn_w)); + map(0xa7e4, 0xa7e7).rw(this, FUNC(thomson_state::mo6_gatearray_r), FUNC(thomson_state::mo6_gatearray_w)); + map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write)); +/* map(0xa7f0, 0xa7f7).rw(this, FUNC(thomson_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/ + map(0xa7f2, 0xa7f3).rw(this, FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w)); + map(0xa7f8, 0xa7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt)); + map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write)); + map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(this, FUNC(thomson_state::mo6_cartridge_w)); + map(0xc000, 0xefff).bankr(MO6_CART_HI).w(this, FUNC(thomson_state::mo6_cartridge_w)); + map(0xf000, 0xffff).bankr(TO8_BIOS_BANK); /* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */ /* 0x20000 - 0x2ffff: 64 KB BIOS ROM */ @@ -2355,7 +2359,7 @@ ADDRESS_MAP_START(thomson_state::mo5nr) /* RAM mapping: 128 KB flat (including video) */ -ADDRESS_MAP_END +} /* ------------ ROMS ------------ */ diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp index 9e62bd48cdb..eb02555da59 100644 --- a/src/mame/drivers/thoop2.cpp +++ b/src/mame/drivers/thoop2.cpp @@ -116,35 +116,41 @@ READ8_MEMBER(thoop2_state::shareram_r) } -ADDRESS_MAP_START(thoop2_state::mcu_hostmem_map) - AM_RANGE(0x8000, 0xffff) AM_READWRITE(shareram_r, shareram_w) // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thoop2_state::thoop2_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x10800c, 0x10800d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* INT 6 ACK/Watchdog timer */ - AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM") - ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff) /* OKI6295 bankswitch */ - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 data register */ - AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */ - AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thoop2_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void thoop2_state::mcu_hostmem_map(address_map &map) +{ + map(0x8000, 0xffff).rw(this, FUNC(thoop2_state::shareram_r), FUNC(thoop2_state::shareram_w)); // confirmed that 0x8000 - 0xffff is a window into 68k shared RAM +} + + +void thoop2_state::thoop2_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x100000, 0x101fff).ram().w(this, FUNC(thoop2_state::vram_w)).share("videoram"); /* Video RAM */ + map(0x108000, 0x108007).writeonly().share("vregs"); /* Video Registers */ + map(0x10800c, 0x10800d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* INT 6 ACK/Watchdog timer */ + map(0x200000, 0x2007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");/* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW2"); + map(0x700002, 0x700003).portr("DSW1"); + map(0x700004, 0x700005).portr("P1"); + map(0x700006, 0x700007).portr("P2"); + map(0x700008, 0x700009).portr("SYSTEM"); + map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x70000d, 0x70000d).w(this, FUNC(thoop2_state::OKIM6295_bankswitch_w)); /* OKI6295 bankswitch */ + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 data register */ + map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ + map(0xfe8000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with D5002FP) */ +} + + +void thoop2_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( thoop2 ) diff --git a/src/mame/drivers/thunderj.cpp b/src/mame/drivers/thunderj.cpp index 3765a7a5b41..feb189cff05 100644 --- a/src/mame/drivers/thunderj.cpp +++ b/src/mame/drivers/thunderj.cpp @@ -110,30 +110,31 @@ WRITE16_MEMBER(thunderj_state::latch_w) * *************************************/ -ADDRESS_MAP_START(thunderj_state::main_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM - AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000") - AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010") - AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r) - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff) - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x360010, 0x360011) AM_WRITE(latch_w) - AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff) - AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x3effc0, 0x3effff) AM_DEVREADWRITE("vad", atari_vad_device, control_read, control_write) - AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield2_latched_msb_w) AM_SHARE("vad:playfield2") - AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_latched_lsb_w) AM_SHARE("vad:playfield") - AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_DEVWRITE("vad", atari_vad_device, playfield_upper_w) AM_SHARE("vad:playfield_ext") - AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM AM_SHARE("vad:mob") - AM_RANGE(0x3f8000, 0x3f8eff) AM_RAM_DEVWRITE("vad", atari_vad_device, alpha_w) AM_SHARE("vad:alpha") - AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_SHARE("vad:eof") - AM_RANGE(0x3f8f80, 0x3f8fff) AM_RAM AM_SHARE("vad:mob:slip") - AM_RANGE(0x3f9000, 0x3fffff) AM_RAM -ADDRESS_MAP_END +void thunderj_state::main_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); + map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x160000, 0x16ffff).ram().share("share1"); + map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x26000f).portr("260000"); + map(0x260010, 0x260011).portr("260010"); + map(0x260012, 0x260013).r(this, FUNC(thunderj_state::special_port2_r)); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r)); + map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x360010, 0x360011).w(this, FUNC(thunderj_state::latch_w)); + map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w)); + map(0x3e0000, 0x3e0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x3effc0, 0x3effff).rw(m_vad, FUNC(atari_vad_device::control_read), FUNC(atari_vad_device::control_write)); + map(0x3f0000, 0x3f1fff).ram().w(m_vad, FUNC(atari_vad_device::playfield2_latched_msb_w)).share("vad:playfield2"); + map(0x3f2000, 0x3f3fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_latched_lsb_w)).share("vad:playfield"); + map(0x3f4000, 0x3f5fff).ram().w(m_vad, FUNC(atari_vad_device::playfield_upper_w)).share("vad:playfield_ext"); + map(0x3f6000, 0x3f7fff).ram().share("vad:mob"); + map(0x3f8000, 0x3f8eff).ram().w(m_vad, FUNC(atari_vad_device::alpha_w)).share("vad:alpha"); + map(0x3f8f00, 0x3f8f7f).ram().share("vad:eof"); + map(0x3f8f80, 0x3f8fff).ram().share("vad:mob:slip"); + map(0x3f9000, 0x3fffff).ram(); +} @@ -143,19 +144,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(thunderj_state::extra_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x060000, 0x07ffff) AM_ROM - AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000") - AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010") - AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r) - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0x00ff) - AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w) - AM_RANGE(0x360010, 0x360011) AM_WRITE(latch_w) - AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0x00ff) -ADDRESS_MAP_END +void thunderj_state::extra_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x060000, 0x07ffff).rom(); + map(0x160000, 0x16ffff).ram().share("share1"); + map(0x260000, 0x26000f).portr("260000"); + map(0x260010, 0x260011).portr("260010"); + map(0x260012, 0x260013).r(this, FUNC(thunderj_state::special_port2_r)); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_ii_device::main_response_r)); + map(0x360000, 0x360001).w(this, FUNC(thunderj_state::video_int_ack_w)); + map(0x360010, 0x360011).w(this, FUNC(thunderj_state::latch_w)); + map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_ii_device::main_command_w)); +} diff --git a/src/mame/drivers/thunderx.cpp b/src/mame/drivers/thunderx.cpp index 4b352ffea0c..741243b114c 100644 --- a/src/mame/drivers/thunderx.cpp +++ b/src/mame/drivers/thunderx.cpp @@ -402,63 +402,70 @@ WRITE8_MEMBER(thunderx_state::k052109_051960_w) /***************************************************************************/ -ADDRESS_MAP_START(thunderx_state::scontra_map) - AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) /* video RAM + sprite RAM */ - - AM_RANGE(0x1f80, 0x1f80) AM_WRITE(scontra_bankswitch_w) /* bankswitch control + coin counters */ - AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x1f8c, 0x1f8c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P1") - AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P2") - AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("DSW3") - AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW1") - AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("DSW2") - AM_RANGE(0x1f98, 0x1f98) AM_READWRITE(_1f98_r, scontra_1f98_w) - - AM_RANGE(0x4000, 0x57ff) AM_RAM - AM_RANGE(0x5800, 0x5fff) AM_DEVICE("bank5800", address_map_bank_device, amap8) /* palette + work RAM + PMC */ - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(thunderx_state::thunderx_map) - AM_IMPORT_FROM(scontra_map) - AM_RANGE(0x1f80, 0x1f80) AM_WRITE(thunderx_videobank_w) - AM_RANGE(0x1f98, 0x1f98) AM_READWRITE(_1f98_r, thunderx_1f98_w) /* registers */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(thunderx_state::gbusters_map) - AM_IMPORT_FROM(scontra_map) - AM_RANGE(0x1f80, 0x1f80) AM_WRITE(gbusters_videobank_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thunderx_state::scontra_bank5800_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x0800, 0x0fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(thunderx_state::thunderx_bank5800_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x0800, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_READWRITE(pmc_r, pmc_w) AM_SHARE("pmcram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(thunderx_state::thunderx_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(thunderx_state::scontra_sound_map) - AM_IMPORT_FROM(thunderx_sound_map) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_WRITE(k007232_bankswitch_w) -ADDRESS_MAP_END +void thunderx_state::scontra_map(address_map &map) +{ + map(0x0000, 0x3fff).rw(this, FUNC(thunderx_state::k052109_051960_r), FUNC(thunderx_state::k052109_051960_w)); /* video RAM + sprite RAM */ + + map(0x1f80, 0x1f80).w(this, FUNC(thunderx_state::scontra_bankswitch_w)); /* bankswitch control + coin counters */ + map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1f88, 0x1f88).w(this, FUNC(thunderx_state::sh_irqtrigger_w)); /* cause interrupt on audio CPU */ + map(0x1f8c, 0x1f8c).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1f90, 0x1f90).portr("SYSTEM"); + map(0x1f91, 0x1f91).portr("P1"); + map(0x1f92, 0x1f92).portr("P2"); + map(0x1f93, 0x1f93).portr("DSW3"); + map(0x1f94, 0x1f94).portr("DSW1"); + map(0x1f95, 0x1f95).portr("DSW2"); + map(0x1f98, 0x1f98).rw(this, FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::scontra_1f98_w)); + + map(0x4000, 0x57ff).ram(); + map(0x5800, 0x5fff).m(m_bank5800, FUNC(address_map_bank_device::amap8)); /* palette + work RAM + PMC */ + map(0x6000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom(); +} + +void thunderx_state::thunderx_map(address_map &map) +{ + scontra_map(map); + map(0x1f80, 0x1f80).w(this, FUNC(thunderx_state::thunderx_videobank_w)); + map(0x1f98, 0x1f98).rw(this, FUNC(thunderx_state::_1f98_r), FUNC(thunderx_state::thunderx_1f98_w)); /* registers */ +} + +void thunderx_state::gbusters_map(address_map &map) +{ + scontra_map(map); + map(0x1f80, 0x1f80).w(this, FUNC(thunderx_state::gbusters_videobank_w)); +} + + +void thunderx_state::scontra_bank5800_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x0800, 0x0fff).ram(); +} + +void thunderx_state::thunderx_bank5800_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x0800, 0x0fff).ram(); + map(0x1000, 0x17ff).rw(this, FUNC(thunderx_state::pmc_r), FUNC(thunderx_state::pmc_w)).share("pmcram"); +} + + +void thunderx_state::thunderx_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); +} + +void thunderx_state::scontra_sound_map(address_map &map) +{ + thunderx_sound_map(map); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xf000, 0xf000).w(this, FUNC(thunderx_state::k007232_bankswitch_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/ti630.cpp b/src/mame/drivers/ti630.cpp index 92d4a45e337..282f29a49e9 100644 --- a/src/mame/drivers/ti630.cpp +++ b/src/mame/drivers/ti630.cpp @@ -67,20 +67,22 @@ private: #define LOG_IO_PORTS 0 -ADDRESS_MAP_START(ti630_state::i80c31_prg) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void ti630_state::i80c31_prg(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} DRIVER_INIT_MEMBER( ti630_state, ti630 ) { } -ADDRESS_MAP_START(ti630_state::i80c31_io) - AM_RANGE(0x0000,0x0000) /*AM_MIRROR(?)*/ AM_DEVWRITE("hd44780", hd44780_device, control_write) - AM_RANGE(0x1000,0x1000) /*AM_MIRROR(?)*/ AM_DEVWRITE("hd44780", hd44780_device, data_write) - AM_RANGE(0x2000,0x2000) /*AM_MIRROR(?)*/ AM_DEVREAD("hd44780", hd44780_device, control_read) - AM_RANGE(0x8000,0xffff) AM_RAM /*TODO: verify the ammont of RAM and the correct address range to which it is mapped. This is just a first reasonable guess that apparently yields good results in the emulation */ -ADDRESS_MAP_END +void ti630_state::i80c31_io(address_map &map) +{ + map(0x0000, 0x0000) /*.mirror(?)*/ .w("hd44780", FUNC(hd44780_device::control_write)); + map(0x1000, 0x1000) /*.mirror(?)*/ .w("hd44780", FUNC(hd44780_device::data_write)); + map(0x2000, 0x2000) /*.mirror(?)*/ .r("hd44780", FUNC(hd44780_device::control_read)); + map(0x8000, 0xffff).ram(); /*TODO: verify the ammont of RAM and the correct address range to which it is mapped. This is just a first reasonable guess that apparently yields good results in the emulation */ +} void ti630_state::machine_start() { diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp index ddecc778809..49c52b93a52 100644 --- a/src/mame/drivers/ti74.cpp +++ b/src/mame/drivers/ti74.cpp @@ -266,13 +266,14 @@ WRITE8_MEMBER(ti74_state::bankswitch_w) // d3: N/C } -ADDRESS_MAP_START(ti74_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("sysram.ic3") +void ti74_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x1000, 0x1001).rw("hd44780", FUNC(hd44780_device::read), FUNC(hd44780_device::write)); + map(0x2000, 0x3fff).ram().share("sysram.ic3"); //AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot - AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("sysbank") -ADDRESS_MAP_END + map(0xc000, 0xdfff).bankr("sysbank"); +} diff --git a/src/mame/drivers/ti85.cpp b/src/mame/drivers/ti85.cpp index 299dacc005d..b6cf54c7cc0 100644 --- a/src/mame/drivers/ti85.cpp +++ b/src/mame/drivers/ti85.cpp @@ -212,159 +212,173 @@ TI-86 ports: /* port i/o functions */ -ADDRESS_MAP_START(ti85_state::ti81_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti85_port_0000_r, ti85_port_0000_w ) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti85_port_0002_r, ti85_port_0002_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w ) - AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti85_port_0005_r, ti85_port_0005_w ) - AM_RANGE(0x0007, 0x0007) AM_WRITE(ti81_port_0007_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti85_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti85_port_0000_r, ti85_port_0000_w ) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti85_port_0002_r, ti85_port_0002_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w ) - AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti85_port_0005_r, ti85_port_0005_w ) - AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti85_port_0006_r, ti85_port_0006_w ) - AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti8x_serial_r, ti8x_serial_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti82_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti8x_serial_r, ti8x_serial_w ) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti82_port_0002_r, ti82_port_0002_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w ) - AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write) - AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti81v2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti82_port_0002_r, ti82_port_0002_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w ) - AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write) - AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti83_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti83_port_0000_r, ti83_port_0000_w ) //TODO - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti83_port_0002_r, ti83_port_0002_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti83_port_0003_r, ti83_port_0003_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0004_r, ti85_port_0004_w ) - AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write) - AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write) - AM_RANGE(0x0014, 0x0014) AM_READ_PORT( "BATTERY" ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti83p_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti8x_plus_serial_r, ti8x_plus_serial_w) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READ(ti83p_port_0002_r) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti83_port_0003_r, ti83p_int_mask_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti83p_port_0004_r, ti83p_port_0004_w ) - AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti86_port_0005_r, ti83p_port_0006_w ) - AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti86_port_0006_r, ti83p_port_0007_w ) - AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write) - AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write) +void ti85_state::ti81_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti85_port_0000_r), FUNC(ti85_state::ti85_port_0000_w)); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti85_port_0002_r), FUNC(ti85_state::ti85_port_0002_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w)); + map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti85_port_0005_r), FUNC(ti85_state::ti85_port_0005_w)); + map(0x0007, 0x0007).w(this, FUNC(ti85_state::ti81_port_0007_w)); +} + +void ti85_state::ti85_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti85_port_0000_r), FUNC(ti85_state::ti85_port_0000_w)); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti85_port_0002_r), FUNC(ti85_state::ti85_port_0002_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w)); + map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti85_port_0005_r), FUNC(ti85_state::ti85_port_0005_w)); + map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti85_port_0006_r), FUNC(ti85_state::ti85_port_0006_w)); + map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti8x_serial_r), FUNC(ti85_state::ti8x_serial_w)); +} + +void ti85_state::ti82_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti8x_serial_r), FUNC(ti85_state::ti8x_serial_w)); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti82_port_0002_r), FUNC(ti85_state::ti82_port_0002_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w)); + map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write)); + map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write)); +} + +void ti85_state::ti81v2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti82_port_0002_r), FUNC(ti85_state::ti82_port_0002_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w)); + map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write)); + map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write)); +} + +void ti85_state::ti83_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti83_port_0000_r), FUNC(ti85_state::ti83_port_0000_w)); //TODO + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti83_port_0002_r), FUNC(ti85_state::ti83_port_0002_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti83_port_0003_r), FUNC(ti85_state::ti83_port_0003_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0004_r), FUNC(ti85_state::ti85_port_0004_w)); + map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write)); + map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write)); + map(0x0014, 0x0014).portr("BATTERY"); +} + +void ti85_state::ti83p_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti8x_plus_serial_r), FUNC(ti85_state::ti8x_plus_serial_w)); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).r(this, FUNC(ti85_state::ti83p_port_0002_r)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti83_port_0003_r), FUNC(ti85_state::ti83p_int_mask_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti83p_port_0004_r), FUNC(ti85_state::ti83p_port_0004_w)); + map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti86_port_0005_r), FUNC(ti85_state::ti83p_port_0006_w)); + map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti86_port_0006_r), FUNC(ti85_state::ti83p_port_0007_w)); + map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write)); + map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write)); // AM_RANGE(0x0014, 0x0014) AM_WRITE(ti83p_port_0014_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti83pse_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti8x_plus_serial_r, ti8x_plus_serial_w) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti83pse_port_0002_r, ti83pse_int_ack_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti83_port_0003_r, ti83p_int_mask_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti83p_port_0004_r, ti83pse_port_0004_w ) - AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti83pse_port_0005_r, ti83pse_port_0005_w ) - AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti86_port_0005_r, ti83pse_port_0006_w ) - AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti86_port_0006_r, ti83pse_port_0007_w ) - AM_RANGE(0x0009, 0x0009) AM_READ(ti83pse_port_0009_r) - AM_RANGE(0x0010, 0x0010) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write) - AM_RANGE(0x0011, 0x0011) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write) - AM_RANGE(0x0012, 0x0012) AM_DEVREADWRITE("t6a04", t6a04_device, control_read, control_write) - AM_RANGE(0x0013, 0x0013) AM_DEVREADWRITE("t6a04", t6a04_device, data_read, data_write) - AM_RANGE(0x0014, 0x0014) AM_WRITE(ti83p_port_0014_w ) - AM_RANGE(0x0015, 0x0015) AM_READ(ti83pse_port_0015_r) - AM_RANGE(0x0020, 0x0020) AM_READWRITE(ti83pse_port_0020_r, ti83pse_port_0020_w ) - AM_RANGE(0x0021, 0x0021) AM_READWRITE(ti83pse_port_0021_r, ti83pse_port_0021_w ) - - AM_RANGE(0x0030, 0x0030) AM_READWRITE(ti83pse_ctimer1_setup_r, ti83pse_ctimer1_setup_w ) - AM_RANGE(0x0031, 0x0031) AM_READWRITE(ti83pse_ctimer1_loop_r, ti83pse_ctimer1_loop_w ) - AM_RANGE(0x0032, 0x0032) AM_READWRITE(ti83pse_ctimer1_count_r, ti83pse_ctimer1_count_w ) - AM_RANGE(0x0033, 0x0033) AM_READWRITE(ti83pse_ctimer2_setup_r, ti83pse_ctimer2_setup_w ) - AM_RANGE(0x0034, 0x0034) AM_READWRITE(ti83pse_ctimer2_loop_r, ti83pse_ctimer2_loop_w ) - AM_RANGE(0x0035, 0x0035) AM_READWRITE(ti83pse_ctimer2_count_r, ti83pse_ctimer2_count_w ) - AM_RANGE(0x0036, 0x0036) AM_READWRITE(ti83pse_ctimer3_setup_r, ti83pse_ctimer3_setup_w ) - AM_RANGE(0x0037, 0x0037) AM_READWRITE(ti83pse_ctimer3_loop_r, ti83pse_ctimer3_loop_w ) - AM_RANGE(0x0038, 0x0038) AM_READWRITE(ti83pse_ctimer3_count_r, ti83pse_ctimer3_count_w ) - - AM_RANGE(0x0055, 0x0055) AM_READ(ti84pse_port_0055_r) - AM_RANGE(0x0056, 0x0056) AM_READ(ti84pse_port_0056_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti86_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(ti85_port_0000_r, ti85_port_0000_w ) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(ti8x_keypad_r, ti8x_keypad_w ) - AM_RANGE(0x0002, 0x0002) AM_READWRITE(ti85_port_0002_r, ti85_port_0002_w ) - AM_RANGE(0x0003, 0x0003) AM_READWRITE(ti85_port_0003_r, ti85_port_0003_w ) - AM_RANGE(0x0004, 0x0004) AM_READWRITE(ti85_port_0006_r, ti85_port_0006_w ) - AM_RANGE(0x0005, 0x0005) AM_READWRITE(ti86_port_0005_r, ti86_port_0005_w ) - AM_RANGE(0x0006, 0x0006) AM_READWRITE(ti86_port_0006_r, ti86_port_0006_w ) - AM_RANGE(0x0007, 0x0007) AM_READWRITE(ti8x_serial_r, ti8x_serial_w ) -ADDRESS_MAP_END +} + +void ti85_state::ti83pse_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti8x_plus_serial_r), FUNC(ti85_state::ti8x_plus_serial_w)); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti83pse_port_0002_r), FUNC(ti85_state::ti83pse_int_ack_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti83_port_0003_r), FUNC(ti85_state::ti83p_int_mask_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti83p_port_0004_r), FUNC(ti85_state::ti83pse_port_0004_w)); + map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti83pse_port_0005_r), FUNC(ti85_state::ti83pse_port_0005_w)); + map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti86_port_0005_r), FUNC(ti85_state::ti83pse_port_0006_w)); + map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti86_port_0006_r), FUNC(ti85_state::ti83pse_port_0007_w)); + map(0x0009, 0x0009).r(this, FUNC(ti85_state::ti83pse_port_0009_r)); + map(0x0010, 0x0010).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write)); + map(0x0011, 0x0011).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write)); + map(0x0012, 0x0012).rw("t6a04", FUNC(t6a04_device::control_read), FUNC(t6a04_device::control_write)); + map(0x0013, 0x0013).rw("t6a04", FUNC(t6a04_device::data_read), FUNC(t6a04_device::data_write)); + map(0x0014, 0x0014).w(this, FUNC(ti85_state::ti83p_port_0014_w)); + map(0x0015, 0x0015).r(this, FUNC(ti85_state::ti83pse_port_0015_r)); + map(0x0020, 0x0020).rw(this, FUNC(ti85_state::ti83pse_port_0020_r), FUNC(ti85_state::ti83pse_port_0020_w)); + map(0x0021, 0x0021).rw(this, FUNC(ti85_state::ti83pse_port_0021_r), FUNC(ti85_state::ti83pse_port_0021_w)); + + map(0x0030, 0x0030).rw(this, FUNC(ti85_state::ti83pse_ctimer1_setup_r), FUNC(ti85_state::ti83pse_ctimer1_setup_w)); + map(0x0031, 0x0031).rw(this, FUNC(ti85_state::ti83pse_ctimer1_loop_r), FUNC(ti85_state::ti83pse_ctimer1_loop_w)); + map(0x0032, 0x0032).rw(this, FUNC(ti85_state::ti83pse_ctimer1_count_r), FUNC(ti85_state::ti83pse_ctimer1_count_w)); + map(0x0033, 0x0033).rw(this, FUNC(ti85_state::ti83pse_ctimer2_setup_r), FUNC(ti85_state::ti83pse_ctimer2_setup_w)); + map(0x0034, 0x0034).rw(this, FUNC(ti85_state::ti83pse_ctimer2_loop_r), FUNC(ti85_state::ti83pse_ctimer2_loop_w)); + map(0x0035, 0x0035).rw(this, FUNC(ti85_state::ti83pse_ctimer2_count_r), FUNC(ti85_state::ti83pse_ctimer2_count_w)); + map(0x0036, 0x0036).rw(this, FUNC(ti85_state::ti83pse_ctimer3_setup_r), FUNC(ti85_state::ti83pse_ctimer3_setup_w)); + map(0x0037, 0x0037).rw(this, FUNC(ti85_state::ti83pse_ctimer3_loop_r), FUNC(ti85_state::ti83pse_ctimer3_loop_w)); + map(0x0038, 0x0038).rw(this, FUNC(ti85_state::ti83pse_ctimer3_count_r), FUNC(ti85_state::ti83pse_ctimer3_count_w)); + + map(0x0055, 0x0055).r(this, FUNC(ti85_state::ti84pse_port_0055_r)); + map(0x0056, 0x0056).r(this, FUNC(ti85_state::ti84pse_port_0056_r)); +} + +void ti85_state::ti86_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0000).rw(this, FUNC(ti85_state::ti85_port_0000_r), FUNC(ti85_state::ti85_port_0000_w)); + map(0x0001, 0x0001).rw(this, FUNC(ti85_state::ti8x_keypad_r), FUNC(ti85_state::ti8x_keypad_w)); + map(0x0002, 0x0002).rw(this, FUNC(ti85_state::ti85_port_0002_r), FUNC(ti85_state::ti85_port_0002_w)); + map(0x0003, 0x0003).rw(this, FUNC(ti85_state::ti85_port_0003_r), FUNC(ti85_state::ti85_port_0003_w)); + map(0x0004, 0x0004).rw(this, FUNC(ti85_state::ti85_port_0006_r), FUNC(ti85_state::ti85_port_0006_w)); + map(0x0005, 0x0005).rw(this, FUNC(ti85_state::ti86_port_0005_r), FUNC(ti85_state::ti86_port_0005_w)); + map(0x0006, 0x0006).rw(this, FUNC(ti85_state::ti86_port_0006_r), FUNC(ti85_state::ti86_port_0006_w)); + map(0x0007, 0x0007).rw(this, FUNC(ti85_state::ti8x_serial_r), FUNC(ti85_state::ti8x_serial_w)); +} /* memory w/r functions */ -ADDRESS_MAP_START(ti85_state::ti81_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti86_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti83pse_banked_mem) - AM_RANGE(0x0000, 0x1fffff) AM_DEVREADWRITE("flash", intelfsh8_device, read, write) - AM_RANGE(0x200000, 0x21BFFF) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ti85_state::ti84p_banked_mem) - AM_RANGE(0x0000, 0xfffff) AM_DEVREADWRITE("flash", intelfsh8_device, read, write) - AM_RANGE(0x200000, 0x21BFFF) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti83p_banked_mem) - AM_RANGE(0x00000, 0x7ffff) AM_DEVREADWRITE("flash", intelfsh8_device, read, write) - AM_RANGE(0x100000, 0x107fff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ti85_state::ti83p_asic_mem) - AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("membank1", address_map_bank_device, read8, write8) - AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("membank2", address_map_bank_device, write8) AM_READ(ti83p_membank2_r) - AM_RANGE(0x8000, 0xbfff) AM_DEVWRITE("membank3", address_map_bank_device, write8) AM_READ(ti83p_membank3_r) - AM_RANGE(0xc000, 0xffff) AM_DEVREADWRITE("membank4", address_map_bank_device, read8, write8) -ADDRESS_MAP_END +void ti85_state::ti81_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankr("bank2"); + map(0x8000, 0xffff).ram().share("nvram"); +} + +void ti85_state::ti86_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void ti85_state::ti83pse_banked_mem(address_map &map) +{ + map(0x0000, 0x1fffff).rw(m_flash, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x200000, 0x21BFFF).ram().share("nvram"); +} + + +void ti85_state::ti84p_banked_mem(address_map &map) +{ + map(0x0000, 0xfffff).rw(m_flash, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x200000, 0x21BFFF).ram().share("nvram"); +} + +void ti85_state::ti83p_banked_mem(address_map &map) +{ + map(0x00000, 0x7ffff).rw(m_flash, FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write)); + map(0x100000, 0x107fff).ram().share("nvram"); +} + +void ti85_state::ti83p_asic_mem(address_map &map) +{ + map(0x0000, 0x3fff).rw(m_membank1, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0x4000, 0x7fff).w(m_membank2, FUNC(address_map_bank_device::write8)).r(this, FUNC(ti85_state::ti83p_membank2_r)); + map(0x8000, 0xbfff).w(m_membank3, FUNC(address_map_bank_device::write8)).r(this, FUNC(ti85_state::ti83p_membank3_r)); + map(0xc000, 0xffff).rw(m_membank4, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); +} /* keyboard input */ diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp index 07840cfe46d..a98327eb8ff 100644 --- a/src/mame/drivers/ti89.cpp +++ b/src/mame/drivers/ti89.cpp @@ -196,51 +196,56 @@ TIMER_DEVICE_CALLBACK_MEMBER(ti68k_state::ti68k_timer_callback) } -ADDRESS_MAP_START(ti68k_state::ti92_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x200000, 0x5fffff) AM_UNMAP // ROM - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ti68k_state::ti89_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x200000, 0x3fffff) AM_READWRITE(flash_r, flash_w) - AM_RANGE(0x400000, 0x5fffff) AM_NOP - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w) - AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ti68k_state::ti92p_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x200000, 0x3fffff) AM_NOP - AM_RANGE(0x400000, 0x5fffff) AM_READWRITE(flash_r, flash_w) - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w) - AM_RANGE(0x700000, 0x7fffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ti68k_state::v200_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x200000, 0x5fffff) AM_READWRITE(flash_r, flash_w) - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w) - AM_RANGE(0x700000, 0x70ffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ti68k_state::ti89t_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_RAM AM_MIRROR(0x200000) AM_SHARE("nvram") - AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(ti68k_io_r, ti68k_io_w) - AM_RANGE(0x700000, 0x70ffff) AM_READWRITE(ti68k_io2_r, ti68k_io2_w) - AM_RANGE(0x800000, 0xbfffff) AM_READWRITE(flash_r, flash_w) - AM_RANGE(0xc00000, 0xffffff) AM_NOP -ADDRESS_MAP_END +void ti68k_state::ti92_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().share("nvram"); + map(0x200000, 0x5fffff).unmaprw(); // ROM + map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); +} + + +void ti68k_state::ti89_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().share("nvram"); + map(0x200000, 0x3fffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x400000, 0x5fffff).noprw(); + map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); + map(0x700000, 0x7fffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); +} + + +void ti68k_state::ti92p_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().share("nvram"); + map(0x200000, 0x3fffff).noprw(); + map(0x400000, 0x5fffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); + map(0x700000, 0x7fffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); +} + + +void ti68k_state::v200_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().share("nvram"); + map(0x200000, 0x5fffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); + map(0x700000, 0x70ffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); +} + + +void ti68k_state::ti89t_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).ram().mirror(0x200000).share("nvram"); + map(0x600000, 0x6fffff).rw(this, FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); + map(0x700000, 0x70ffff).rw(this, FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); + map(0x800000, 0xbfffff).rw(this, FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0xc00000, 0xffffff).noprw(); +} INPUT_CHANGED_MEMBER(ti68k_state::ti68k_on_key) diff --git a/src/mame/drivers/ti990_10.cpp b/src/mame/drivers/ti990_10.cpp index 6be8da03640..9cef52ba5f4 100644 --- a/src/mame/drivers/ti990_10.cpp +++ b/src/mame/drivers/ti990_10.cpp @@ -277,34 +277,36 @@ WRITE_LINE_MEMBER(ti990_10_state::key_interrupt) Memory map - see description above */ -ADDRESS_MAP_START(ti990_10_state::ti990_10_memmap) +void ti990_10_state::ti990_10_memmap(address_map &map) +{ - AM_RANGE(0x000000, 0x0fffff) AM_RAM /* let's say we have 1MB of RAM */ - AM_RANGE(0x100000, 0x1ff7ff) AM_NOP /* free TILINE space */ - AM_RANGE(0x1ff800, 0x1ff81f) AM_DEVREADWRITE("hdc", ti990_hdc_device, read, write) /* disk controller TPCS */ - AM_RANGE(0x1ff820, 0x1ff87f) AM_NOP /* free TPCS */ - AM_RANGE(0x1ff880, 0x1ff89f) AM_DEVREADWRITE("tpc", tap_990_device, read, write) /* tape controller TPCS */ - AM_RANGE(0x1ff8a0, 0x1ffbff) AM_NOP /* free TPCS */ - AM_RANGE(0x1ffc00, 0x1fffff) AM_ROM /* LOAD ROM */ + map(0x000000, 0x0fffff).ram(); /* let's say we have 1MB of RAM */ + map(0x100000, 0x1ff7ff).noprw(); /* free TILINE space */ + map(0x1ff800, 0x1ff81f).rw("hdc", FUNC(ti990_hdc_device::read), FUNC(ti990_hdc_device::write)); /* disk controller TPCS */ + map(0x1ff820, 0x1ff87f).noprw(); /* free TPCS */ + map(0x1ff880, 0x1ff89f).rw("tpc", FUNC(tap_990_device::read), FUNC(tap_990_device::write)); /* tape controller TPCS */ + map(0x1ff8a0, 0x1ffbff).noprw(); /* free TPCS */ + map(0x1ffc00, 0x1fffff).rom(); /* LOAD ROM */ -ADDRESS_MAP_END +} /* CRU map */ -ADDRESS_MAP_START(ti990_10_state::ti990_10_io) - AM_RANGE(0x10, 0x11) AM_DEVREAD("vdt911", vdt911_device, cru_r) - AM_RANGE(0x80, 0x8f) AM_DEVWRITE("vdt911", vdt911_device, cru_w) - AM_RANGE(0x1fa, 0x1fb) AM_NOP // AM_READ(ti990_10_mapper_cru_r) - AM_RANGE(0x1fc, 0x1fd) AM_NOP // AM_READ(ti990_10_eir_cru_r) - AM_RANGE(0x1fe, 0x1ff) AM_READ(ti990_panel_read) - AM_RANGE(0xfd0, 0xfdf) AM_NOP // AM_WRITE(ti990_10_mapper_cru_w) - AM_RANGE(0xfe0, 0xfef) AM_NOP // AM_WRITE(ti990_10_eir_cru_w) - AM_RANGE(0xff0, 0xfff) AM_WRITE(ti990_panel_write) - -ADDRESS_MAP_END +void ti990_10_state::ti990_10_io(address_map &map) +{ + map(0x10, 0x11).r("vdt911", FUNC(vdt911_device::cru_r)); + map(0x80, 0x8f).w("vdt911", FUNC(vdt911_device::cru_w)); + map(0x1fa, 0x1fb).noprw(); // AM_READ(ti990_10_mapper_cru_r) + map(0x1fc, 0x1fd).noprw(); // AM_READ(ti990_10_eir_cru_r) + map(0x1fe, 0x1ff).r(this, FUNC(ti990_10_state::ti990_panel_read)); + map(0xfd0, 0xfdf).noprw(); // AM_WRITE(ti990_10_mapper_cru_w) + map(0xfe0, 0xfef).noprw(); // AM_WRITE(ti990_10_eir_cru_w) + map(0xff0, 0xfff).w(this, FUNC(ti990_10_state::ti990_panel_write)); + +} /* Callback from the tape controller. diff --git a/src/mame/drivers/ti990_4.cpp b/src/mame/drivers/ti990_4.cpp index 769c2face14..a4c70d175ea 100644 --- a/src/mame/drivers/ti990_4.cpp +++ b/src/mame/drivers/ti990_4.cpp @@ -213,12 +213,13 @@ READ8_MEMBER( ti990_4_state::interrupt_level ) Memory map - see description above */ -ADDRESS_MAP_START(ti990_4_state::memmap) - AM_RANGE(0x0000, 0x7fff) AM_RAM /* dynamic RAM */ - AM_RANGE(0x8000, 0xf7ff) AM_NOP /* reserved for expansion */ - AM_RANGE(0xf800, 0xfbff) AM_RAM /* static RAM? */ - AM_RANGE(0xfc00, 0xffff) AM_ROM /* LOAD ROM */ -ADDRESS_MAP_END +void ti990_4_state::memmap(address_map &map) +{ + map(0x0000, 0x7fff).ram(); /* dynamic RAM */ + map(0x8000, 0xf7ff).noprw(); /* reserved for expansion */ + map(0xf800, 0xfbff).ram(); /* static RAM? */ + map(0xfc00, 0xffff).rom(); /* LOAD ROM */ +} /* @@ -243,27 +244,29 @@ ADDRESS_MAP_END 0x0a0-0x0bf: VDT3 (int ??? - wired to int 9, unused) */ -ADDRESS_MAP_START(ti990_4_state::cru_map) - AM_RANGE(0x00, 0x01) AM_DEVREAD("asr733", asr733_device, cru_r) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("asr733", asr733_device, cru_w) +void ti990_4_state::cru_map(address_map &map) +{ + map(0x00, 0x01).r("asr733", FUNC(asr733_device::cru_r)); + map(0x00, 0x0f).w("asr733", FUNC(asr733_device::cru_w)); - AM_RANGE(0x08, 0x0b) AM_DEVREAD( "fd800", fd800_legacy_device, cru_r ) - AM_RANGE(0x40, 0x5f) AM_DEVWRITE( "fd800", fd800_legacy_device, cru_w ) + map(0x08, 0x0b).r(m_fd800, FUNC(fd800_legacy_device::cru_r)); + map(0x40, 0x5f).w(m_fd800, FUNC(fd800_legacy_device::cru_w)); - AM_RANGE(0x1fe, 0x1ff) AM_READ( panel_read ) - AM_RANGE(0xff0, 0xfff) AM_WRITE( panel_write ) -ADDRESS_MAP_END + map(0x1fe, 0x1ff).r(this, FUNC(ti990_4_state::panel_read)); + map(0xff0, 0xfff).w(this, FUNC(ti990_4_state::panel_write)); +} -ADDRESS_MAP_START(ti990_4_state::cru_map_v) - AM_RANGE(0x10, 0x11) AM_DEVREAD("vdt911", vdt911_device, cru_r) - AM_RANGE(0x80, 0x8f) AM_DEVWRITE("vdt911", vdt911_device, cru_w) +void ti990_4_state::cru_map_v(address_map &map) +{ + map(0x10, 0x11).r("vdt911", FUNC(vdt911_device::cru_r)); + map(0x80, 0x8f).w("vdt911", FUNC(vdt911_device::cru_w)); - AM_RANGE(0x08, 0x0b) AM_DEVREAD( "fd800", fd800_legacy_device, cru_r ) - AM_RANGE(0x40, 0x5f) AM_DEVWRITE( "fd800", fd800_legacy_device, cru_w ) + map(0x08, 0x0b).r(m_fd800, FUNC(fd800_legacy_device::cru_r)); + map(0x40, 0x5f).w(m_fd800, FUNC(fd800_legacy_device::cru_w)); - AM_RANGE(0x1fe, 0x1ff) AM_READ( panel_read ) - AM_RANGE(0xff0, 0xfff) AM_WRITE( panel_write ) -ADDRESS_MAP_END + map(0x1fe, 0x1ff).r(this, FUNC(ti990_4_state::panel_read)); + map(0xff0, 0xfff).w(this, FUNC(ti990_4_state::panel_write)); +} /* static const floppy_interface ti990_4_floppy_interface = diff --git a/src/mame/drivers/ti99_2.cpp b/src/mame/drivers/ti99_2.cpp index 0257ad2f5cf..9a43dd681de 100644 --- a/src/mame/drivers/ti99_2.cpp +++ b/src/mame/drivers/ti99_2.cpp @@ -219,15 +219,16 @@ GFXDECODE_END Memory map - see description above */ -ADDRESS_MAP_START(ti99_2_state::ti99_2_memmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM /* system ROM */ - AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* system ROM, banked on 32kb ROMs protos */ - AM_RANGE(0x6000, 0xdfff) AM_NOP /* free for expansion */ - AM_RANGE(0xe000, 0xebff) AM_RAM /* system RAM */ - AM_RANGE(0xec00, 0xeeff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xef00, 0xefff) AM_RAM /* system RAM */ - AM_RANGE(0xf000, 0xffff) AM_NOP /* free for expansion (and internal processor RAM) */ -ADDRESS_MAP_END +void ti99_2_state::ti99_2_memmap(address_map &map) +{ + map(0x0000, 0x3fff).rom(); /* system ROM */ + map(0x4000, 0x5fff).bankr("bank1"); /* system ROM, banked on 32kb ROMs protos */ + map(0x6000, 0xdfff).noprw(); /* free for expansion */ + map(0xe000, 0xebff).ram(); /* system RAM */ + map(0xec00, 0xeeff).ram().share("videoram"); + map(0xef00, 0xefff).ram(); /* system RAM */ + map(0xf000, 0xffff).noprw(); /* free for expansion (and internal processor RAM) */ +} /* @@ -296,12 +297,13 @@ READ8_MEMBER(ti99_2_state::ti99_2_read_misc_cru) return 0; } -ADDRESS_MAP_START(ti99_2_state::ti99_2_io) - AM_RANGE(0x0E00, 0x0E7f) AM_READ(ti99_2_read_kbd) - AM_RANGE(0x0E80, 0x0Eff) AM_READ(ti99_2_read_misc_cru) - AM_RANGE(0x7000, 0x73ff) AM_WRITE(ti99_2_write_kbd) - AM_RANGE(0x7400, 0x77ff) AM_WRITE(ti99_2_write_misc_cru) -ADDRESS_MAP_END +void ti99_2_state::ti99_2_io(address_map &map) +{ + map(0x0E00, 0x0E7f).r(this, FUNC(ti99_2_state::ti99_2_read_kbd)); + map(0x0E80, 0x0Eff).r(this, FUNC(ti99_2_state::ti99_2_read_misc_cru)); + map(0x7000, 0x73ff).w(this, FUNC(ti99_2_state::ti99_2_write_kbd)); + map(0x7400, 0x77ff).w(this, FUNC(ti99_2_state::ti99_2_write_misc_cru)); +} /* ti99/2 : 54-key keyboard */ diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp index ae6bd4a6acd..97875ca843a 100644 --- a/src/mame/drivers/ti99_4p.cpp +++ b/src/mame/drivers/ti99_4p.cpp @@ -284,17 +284,19 @@ enum ROM6UBASE = 0xe000 }; -ADDRESS_MAP_START(ti99_4p_state::memmap) - AM_RANGE(0x0000, 0xffff) AM_READWRITE( memread, memwrite ) AM_SETOFFSET( setoffset ) -ADDRESS_MAP_END +void ti99_4p_state::memmap(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(ti99_4p_state::memread), FUNC(ti99_4p_state::memwrite)).setoffset(this, FUNC(ti99_4p_state::setoffset)); +} -ADDRESS_MAP_START(ti99_4p_state::cru_map) - AM_RANGE(0x0000, 0x01ff) AM_READ( cruread ) - AM_RANGE(0x0000, 0x003f) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read) +void ti99_4p_state::cru_map(address_map &map) +{ + map(0x0000, 0x01ff).r(this, FUNC(ti99_4p_state::cruread)); + map(0x0000, 0x003f).r(m_tms9901, FUNC(tms9901_device::read)); - AM_RANGE(0x0000, 0x0fff) AM_WRITE( cruwrite ) - AM_RANGE(0x0000, 0x01ff) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write) -ADDRESS_MAP_END + map(0x0000, 0x0fff).w(this, FUNC(ti99_4p_state::cruwrite)); + map(0x0000, 0x01ff).w(m_tms9901, FUNC(tms9901_device::write)); +} /* Input ports, used by machine code for TI keyboard and joystick emulation. diff --git a/src/mame/drivers/ti99_4x.cpp b/src/mame/drivers/ti99_4x.cpp index 7bb28249132..d2f4156605a 100644 --- a/src/mame/drivers/ti99_4x.cpp +++ b/src/mame/drivers/ti99_4x.cpp @@ -216,10 +216,11 @@ enum /* Memory map. All of the work is done in the datamux (see datamux.c). */ -ADDRESS_MAP_START(ti99_4x_state::memmap) - ADDRESS_MAP_GLOBAL_MASK(0xffff) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE(TI99_DATAMUX_TAG, bus::ti99::internal::datamux_device, read, write) AM_DEVSETOFFSET(TI99_DATAMUX_TAG, bus::ti99::internal::datamux_device, setoffset) -ADDRESS_MAP_END +void ti99_4x_state::memmap(address_map &map) +{ + map.global_mask(0xffff); + map(0x0000, 0xffff).rw(TI99_DATAMUX_TAG, FUNC(bus::ti99::internal::datamux_device::read), FUNC(bus::ti99::internal::datamux_device::write)).setoffset(TI99_DATAMUX_TAG, FUNC(bus::ti99::internal::datamux_device::setoffset)); +} /* CRU map @@ -241,13 +242,14 @@ ADDRESS_MAP_END Write:0000 - 01ff corresponds to bit 0 of base address 0000 - 03fe */ -ADDRESS_MAP_START(ti99_4x_state::cru_map) - AM_RANGE(0x0000, 0x01ff) AM_READ(cruread) - AM_RANGE(0x0000, 0x0003) AM_MIRROR(0x003c) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read) +void ti99_4x_state::cru_map(address_map &map) +{ + map(0x0000, 0x01ff).r(this, FUNC(ti99_4x_state::cruread)); + map(0x0000, 0x0003).mirror(0x003c).r(m_tms9901, FUNC(tms9901_device::read)); - AM_RANGE(0x0000, 0x0fff) AM_WRITE(cruwrite) - AM_RANGE(0x0000, 0x001f) AM_MIRROR(0x01e0) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write) -ADDRESS_MAP_END + map(0x0000, 0x0fff).w(this, FUNC(ti99_4x_state::cruwrite)); + map(0x0000, 0x001f).mirror(0x01e0).w(m_tms9901, FUNC(tms9901_device::write)); +} /***************************************************************************** diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp index 66cb6e44a0b..cc515c5ae1a 100644 --- a/src/mame/drivers/ti99_8.cpp +++ b/src/mame/drivers/ti99_8.cpp @@ -292,9 +292,10 @@ private: Memory map. We have a configurable mapper, so we need to delegate the job to the mapper completely. */ -ADDRESS_MAP_START(ti99_8_state::memmap) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE(TI998_MAINBOARD_TAG, bus::ti99::internal::mainboard8_device, read, write) AM_DEVSETOFFSET(TI998_MAINBOARD_TAG, bus::ti99::internal::mainboard8_device, setoffset) -ADDRESS_MAP_END +void ti99_8_state::memmap(address_map &map) +{ + map(0x0000, 0xffff).rw(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::read), FUNC(bus::ti99::internal::mainboard8_device::write)).setoffset(TI998_MAINBOARD_TAG, FUNC(bus::ti99::internal::mainboard8_device::setoffset)); +} /* CRU map - see description above @@ -303,13 +304,14 @@ ADDRESS_MAP_END (decoded by the "Vaquerro" chip, signal NNOICS*) */ -ADDRESS_MAP_START(ti99_8_state::crumap) - AM_RANGE(0x0000, 0x02ff) AM_READ(cruread) - AM_RANGE(0x0000, 0x0003) AM_DEVREAD(TI_TMS9901_TAG, tms9901_device, read) +void ti99_8_state::crumap(address_map &map) +{ + map(0x0000, 0x02ff).r(this, FUNC(ti99_8_state::cruread)); + map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read)); - AM_RANGE(0x0000, 0x17ff) AM_WRITE(cruwrite) - AM_RANGE(0x0000, 0x001f) AM_DEVWRITE(TI_TMS9901_TAG, tms9901_device, write) -ADDRESS_MAP_END + map(0x0000, 0x17ff).w(this, FUNC(ti99_8_state::cruwrite)); + map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write)); +} /* ti99/8 : 54-key keyboard */ static INPUT_PORTS_START(ti99_8) diff --git a/src/mame/drivers/tiamc1.cpp b/src/mame/drivers/tiamc1.cpp index be02841f019..da3c0553167 100644 --- a/src/mame/drivers/tiamc1.cpp +++ b/src/mame/drivers/tiamc1.cpp @@ -151,48 +151,52 @@ WRITE_LINE_MEMBER(tiamc1_state::pit8253_2_w) } -ADDRESS_MAP_START(tiamc1_state::tiamc1_map) - AM_RANGE(0xb000, 0xb7ff) AM_WRITE(tiamc1_videoram_w) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tiamc1_state::kotrybolov_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xf000, 0xf3ff) AM_WRITE(kot_videoram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tiamc1_state::tiamc1_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x4f) AM_WRITE(tiamc1_sprite_y_w) /* sprites Y */ - AM_RANGE(0x50, 0x5f) AM_WRITE(tiamc1_sprite_x_w) /* sprites X */ - AM_RANGE(0x60, 0x6f) AM_WRITE(tiamc1_sprite_n_w) /* sprites # */ - AM_RANGE(0x70, 0x7f) AM_WRITE(tiamc1_sprite_a_w) /* sprites attributes */ - AM_RANGE(0xa0, 0xaf) AM_WRITE(tiamc1_palette_w) /* color ram */ - AM_RANGE(0xbc, 0xbc) AM_WRITE(tiamc1_bg_vshift_w)/* background V scroll */ - AM_RANGE(0xbd, 0xbd) AM_WRITE(tiamc1_bg_hshift_w)/* background H scroll */ - AM_RANGE(0xbe, 0xbe) AM_WRITE(tiamc1_bankswitch_w) /* VRAM selector */ - AM_RANGE(0xbf, 0xbf) AM_WRITE(tiamc1_bg_bplctrl_w) /* charset control */ - AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer0_w) /* timer 0 */ - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("kr580vv55a", i8255_device, read, write) /* input ports + coin counters & lockout */ - AM_RANGE(0xd4, 0xd7) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer1_w) /* timer 1 */ - AM_RANGE(0xda, 0xda) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer1_gate_w) /* timer 1 gate control */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(tiamc1_state::kotrybolov_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_WRITE(tiamc1_sprite_y_w) // sprites Y - AM_RANGE(0x10, 0x1f) AM_WRITE(tiamc1_sprite_x_w) // sprites X - AM_RANGE(0x20, 0x2f) AM_WRITE(tiamc1_sprite_n_w) // sprites # - AM_RANGE(0x30, 0x3f) AM_WRITE(tiamc1_sprite_a_w) // sprites attributes - AM_RANGE(0xe0, 0xef) AM_WRITE(tiamc1_palette_w) // color ram - AM_RANGE(0xf0, 0xf0) AM_WRITE(tiamc1_bg_vshift_w) // background V scroll - AM_RANGE(0xf4, 0xf4) AM_WRITE(tiamc1_bg_hshift_w) // background H scroll - AM_RANGE(0xf8, 0xf8) AM_WRITE(kot_bankswitch_w) // character rom offset - AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("kr580vv55a", i8255_device, read, write) /* input ports + coin counters & lockout */ -ADDRESS_MAP_END +void tiamc1_state::tiamc1_map(address_map &map) +{ + map(0xb000, 0xb7ff).w(this, FUNC(tiamc1_state::tiamc1_videoram_w)); + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xffff).ram(); +} + +void tiamc1_state::kotrybolov_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xf000, 0xf3ff).w(this, FUNC(tiamc1_state::kot_videoram_w)); +} + +void tiamc1_state::tiamc1_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x4f).w(this, FUNC(tiamc1_state::tiamc1_sprite_y_w)); /* sprites Y */ + map(0x50, 0x5f).w(this, FUNC(tiamc1_state::tiamc1_sprite_x_w)); /* sprites X */ + map(0x60, 0x6f).w(this, FUNC(tiamc1_state::tiamc1_sprite_n_w)); /* sprites # */ + map(0x70, 0x7f).w(this, FUNC(tiamc1_state::tiamc1_sprite_a_w)); /* sprites attributes */ + map(0xa0, 0xaf).w(this, FUNC(tiamc1_state::tiamc1_palette_w)); /* color ram */ + map(0xbc, 0xbc).w(this, FUNC(tiamc1_state::tiamc1_bg_vshift_w));/* background V scroll */ + map(0xbd, 0xbd).w(this, FUNC(tiamc1_state::tiamc1_bg_hshift_w));/* background H scroll */ + map(0xbe, 0xbe).w(this, FUNC(tiamc1_state::tiamc1_bankswitch_w)); /* VRAM selector */ + map(0xbf, 0xbf).w(this, FUNC(tiamc1_state::tiamc1_bg_bplctrl_w)); /* charset control */ + map(0xc0, 0xc3).w("2x8253", FUNC(tiamc1_sound_device::tiamc1_timer0_w)); /* timer 0 */ + map(0xd0, 0xd3).rw("kr580vv55a", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* input ports + coin counters & lockout */ + map(0xd4, 0xd7).w("2x8253", FUNC(tiamc1_sound_device::tiamc1_timer1_w)); /* timer 1 */ + map(0xda, 0xda).w("2x8253", FUNC(tiamc1_sound_device::tiamc1_timer1_gate_w)); /* timer 1 gate control */ +} + +void tiamc1_state::kotrybolov_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).w(this, FUNC(tiamc1_state::tiamc1_sprite_y_w)); // sprites Y + map(0x10, 0x1f).w(this, FUNC(tiamc1_state::tiamc1_sprite_x_w)); // sprites X + map(0x20, 0x2f).w(this, FUNC(tiamc1_state::tiamc1_sprite_n_w)); // sprites # + map(0x30, 0x3f).w(this, FUNC(tiamc1_state::tiamc1_sprite_a_w)); // sprites attributes + map(0xe0, 0xef).w(this, FUNC(tiamc1_state::tiamc1_palette_w)); // color ram + map(0xf0, 0xf0).w(this, FUNC(tiamc1_state::tiamc1_bg_vshift_w)); // background V scroll + map(0xf4, 0xf4).w(this, FUNC(tiamc1_state::tiamc1_bg_hshift_w)); // background H scroll + map(0xf8, 0xf8).w(this, FUNC(tiamc1_state::kot_bankswitch_w)); // character rom offset + map(0xc0, 0xc3).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xd0, 0xd3).rw("kr580vv55a", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* input ports + coin counters & lockout */ +} static INPUT_PORTS_START( tiamc1 ) diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp index b0537830952..89dcf1165fd 100644 --- a/src/mame/drivers/tickee.cpp +++ b/src/mame/drivers/tickee.cpp @@ -53,7 +53,7 @@ public: m_vram(*this, "vram"), m_control(*this, "control") { } - required_device<cpu_device> m_maincpu; + required_device<tms34010_device> m_maincpu; optional_device<okim6295_device> m_oki; required_device<screen_device> m_screen; required_device<tlc34076_device> m_tlc34076; @@ -440,79 +440,83 @@ WRITE16_MEMBER(tickee_state::sound_bank_w) * *************************************/ -ADDRESS_MAP_START(tickee_state::tickee_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8("ym1", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x04200000, 0x0420001f) AM_DEVWRITE8("ym1", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x04200100, 0x0420010f) AM_DEVREAD8("ym2", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x04200100, 0x0420011f) AM_DEVWRITE8("ym2", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x04400000, 0x0440007f) AM_WRITE(tickee_control_w) AM_SHARE("control") - AM_RANGE(0x04400040, 0x0440004f) AM_READ_PORT("IN2") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */ - AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void tickee_state::tickee_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("vram"); + map(0x02000000, 0x02ffffff).rom().region("user1", 0); + map(0x04000000, 0x04003fff).ram().share("nvram"); + map(0x04100000, 0x041000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0x04200000, 0x0420000f).r("ym1", FUNC(ay8910_device::data_r)).umask16(0x00ff); + map(0x04200000, 0x0420001f).w("ym1", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x04200100, 0x0420010f).r("ym2", FUNC(ay8910_device::data_r)).umask16(0x00ff); + map(0x04200100, 0x0420011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x04400000, 0x0440007f).w(this, FUNC(tickee_state::tickee_control_w)).share("control"); + map(0x04400040, 0x0440004f).portr("IN2"); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */ + map(0xff000000, 0xffffffff).rom().region("user1", 0); +} /* addreses in the 04x range shifted slightly...*/ -ADDRESS_MAP_START(tickee_state::ghoshunt_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x04100000, 0x04103fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x04200000, 0x042000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0x04300000, 0x0430000f) AM_DEVREAD8("ym1", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x04300000, 0x0430001f) AM_DEVWRITE8("ym1", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x04300100, 0x0430010f) AM_DEVREAD8("ym2", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x04300100, 0x0430011f) AM_DEVWRITE8("ym2", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x04500000, 0x0450007f) AM_WRITE(tickee_control_w) AM_SHARE("control") - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */ - AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tickee_state::mouseatk_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8("ym", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x04200000, 0x0420000f) AM_DEVWRITE8("ym", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x04200100, 0x0420010f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x04400000, 0x0440007f) AM_WRITE(tickee_control_w) AM_SHARE("control") - AM_RANGE(0x04400040, 0x0440004f) AM_READ_PORT("IN2") // ? - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */ - AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void tickee_state::ghoshunt_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("vram"); + map(0x02000000, 0x02ffffff).rom().region("user1", 0); + map(0x04100000, 0x04103fff).ram().share("nvram"); + map(0x04200000, 0x042000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0x04300000, 0x0430000f).r("ym1", FUNC(ay8910_device::data_r)).umask16(0x00ff); + map(0x04300000, 0x0430001f).w("ym1", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x04300100, 0x0430010f).r("ym2", FUNC(ay8910_device::data_r)).umask16(0x00ff); + map(0x04300100, 0x0430011f).w("ym2", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x04500000, 0x0450007f).w(this, FUNC(tickee_state::tickee_control_w)).share("control"); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */ + map(0xff000000, 0xffffffff).rom().region("user1", 0); +} + + +void tickee_state::mouseatk_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("vram"); + map(0x02000000, 0x02ffffff).rom().region("user1", 0); + map(0x04000000, 0x04003fff).ram().share("nvram"); + map(0x04100000, 0x041000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0x04200000, 0x0420000f).r("ym", FUNC(ay8910_device::data_r)).umask16(0x00ff); + map(0x04200000, 0x0420000f).w("ym", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x04200100, 0x0420010f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0x04400000, 0x0440007f).w(this, FUNC(tickee_state::tickee_control_w)).share("control"); + map(0x04400040, 0x0440004f).portr("IN2"); // ? + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xc0000240, 0xc000025f).nopw(); /* seems to be a bug in their code */ + map(0xff000000, 0xffffffff).rom().region("user1", 0); +} /* newer hardware */ -ADDRESS_MAP_START(tickee_state::rapidfir_map) - AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x02000000, 0x027fffff) AM_READWRITE(rapidfir_transparent_r, rapidfir_transparent_w) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xfc000000, 0xfc00000f) AM_READ(rapidfir_gun1_r) - AM_RANGE(0xfc000100, 0xfc00010f) AM_READ(rapidfir_gun2_r) - AM_RANGE(0xfc000400, 0xfc00040f) AM_READ(ffff_r) - AM_RANGE(0xfc000500, 0xfc00050f) AM_NOP - AM_RANGE(0xfc000600, 0xfc00060f) AM_WRITE(rapidfir_control_w) - AM_RANGE(0xfc000700, 0xfc00070f) AM_WRITE(sound_bank_w) - AM_RANGE(0xfc000800, 0xfc00080f) AM_READ_PORT("IN0") - AM_RANGE(0xfc000900, 0xfc00090f) AM_READ_PORT("IN1") - AM_RANGE(0xfc000a00, 0xfc000a0f) AM_READ_PORT("IN2") - AM_RANGE(0xfc000b00, 0xfc000b0f) AM_READ_PORT("DSW0") - AM_RANGE(0xfc000c00, 0xfc000c1f) AM_READ_PORT("DSW1") - AM_RANGE(0xfc000e00, 0xfc000e1f) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0xfc100000, 0xfc1000ff) AM_MIRROR(0x80000) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xfc400010, 0xfc40001f) AM_READWRITE(ff7f_r, ff7f_w) - AM_RANGE(0xfe000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void tickee_state::rapidfir_map(address_map &map) +{ + map(0x00000000, 0x007fffff).ram().share("vram"); + map(0x02000000, 0x027fffff).rw(this, FUNC(tickee_state::rapidfir_transparent_r), FUNC(tickee_state::rapidfir_transparent_w)); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xfc000000, 0xfc00000f).r(this, FUNC(tickee_state::rapidfir_gun1_r)); + map(0xfc000100, 0xfc00010f).r(this, FUNC(tickee_state::rapidfir_gun2_r)); + map(0xfc000400, 0xfc00040f).r(this, FUNC(tickee_state::ffff_r)); + map(0xfc000500, 0xfc00050f).noprw(); + map(0xfc000600, 0xfc00060f).w(this, FUNC(tickee_state::rapidfir_control_w)); + map(0xfc000700, 0xfc00070f).w(this, FUNC(tickee_state::sound_bank_w)); + map(0xfc000800, 0xfc00080f).portr("IN0"); + map(0xfc000900, 0xfc00090f).portr("IN1"); + map(0xfc000a00, 0xfc000a0f).portr("IN2"); + map(0xfc000b00, 0xfc000b0f).portr("DSW0"); + map(0xfc000c00, 0xfc000c1f).portr("DSW1"); + map(0xfc000e00, 0xfc000e1f).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0xfc100000, 0xfc1000ff).mirror(0x80000).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0xfc200000, 0xfc207fff).ram().share("nvram"); + map(0xfc300000, 0xfc30000f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask16(0x00ff); + map(0xfc400010, 0xfc40001f).rw(this, FUNC(tickee_state::ff7f_r), FUNC(tickee_state::ff7f_w)); + map(0xfe000000, 0xffffffff).rom().region("user1", 0); +} diff --git a/src/mame/drivers/tigeroad.cpp b/src/mame/drivers/tigeroad.cpp index c81298ab9df..38a843c684b 100644 --- a/src/mame/drivers/tigeroad.cpp +++ b/src/mame/drivers/tigeroad.cpp @@ -70,84 +70,93 @@ WRITE8_MEMBER(tigeroad_state::msm5205_w) /***************************************************************************/ -ADDRESS_MAP_START(tigeroad_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - - AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xfe0d00, 0xfe1807) AM_RAM /* still part of OBJ RAM */ - AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE(tigeroad_videoctrl_w) /* char bank, coin counters, + ? */ - AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE(tigeroad_soundcmd_w) /* AM_WRITE(tigeroad_soundcmd_w) is replaced in init for for f1dream protection */ - AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW") - AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(tigeroad_scroll_w) - AM_RANGE(0xfe800e, 0xfe800f) AM_WRITEONLY /* fe800e = watchdog or IRQ acknowledge */ - AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_SHARE("videoram") - - AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("ram16") -ADDRESS_MAP_END - -ADDRESS_MAP_START(pushman_state::pushman_map) - AM_IMPORT_FROM(main_map) - - AM_RANGE(0x060000, 0x060007) AM_READ(mcu_comm_r) - AM_RANGE(0x060000, 0x060003) AM_WRITE(pushman_mcu_comm_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(pushman_state::bballs_map) - ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0x00000, 0x3ffff) AM_ROM - AM_RANGE(0x60000, 0x60007) AM_READ(mcu_comm_r) - AM_RANGE(0x60000, 0x60001) AM_WRITE(bballs_mcu_comm_w) +void tigeroad_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + + map(0xfe0800, 0xfe0cff).ram().share("spriteram"); + map(0xfe0d00, 0xfe1807).ram(); /* still part of OBJ RAM */ + map(0xfe4000, 0xfe4001).portr("P1_P2").w(this, FUNC(tigeroad_state::tigeroad_videoctrl_w)); /* char bank, coin counters, + ? */ + map(0xfe4002, 0xfe4003).portr("SYSTEM").w(this, FUNC(tigeroad_state::tigeroad_soundcmd_w)); /* AM_WRITE(tigeroad_soundcmd_w) is replaced in init for for f1dream protection */ + map(0xfe4004, 0xfe4005).portr("DSW"); + map(0xfe8000, 0xfe8003).w(this, FUNC(tigeroad_state::tigeroad_scroll_w)); + map(0xfe800e, 0xfe800f).writeonly(); /* fe800e = watchdog or IRQ acknowledge */ + map(0xfec000, 0xfec7ff).ram().w(this, FUNC(tigeroad_state::tigeroad_videoram_w)).share("videoram"); + + map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffc000, 0xffffff).ram().share("ram16"); +} + +void pushman_state::pushman_map(address_map &map) +{ + main_map(map); + + map(0x060000, 0x060007).r(this, FUNC(pushman_state::mcu_comm_r)); + map(0x060000, 0x060003).w(this, FUNC(pushman_state::pushman_mcu_comm_w)); +} + +void pushman_state::bballs_map(address_map &map) +{ + map.global_mask(0xfffff); + map(0x00000, 0x3ffff).rom(); + map(0x60000, 0x60007).r(this, FUNC(pushman_state::mcu_comm_r)); + map(0x60000, 0x60001).w(this, FUNC(pushman_state::bballs_mcu_comm_w)); // are these mirror addresses or does this PCB have a different addressing? - AM_RANGE(0xe0800, 0xe17ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe4000, 0xe4001) AM_READ_PORT("P1_P2") AM_WRITE(tigeroad_videoctrl_w) - AM_RANGE(0xe4002, 0xe4003) AM_READ_PORT("SYSTEM") AM_WRITE(tigeroad_soundcmd_w) - AM_RANGE(0xe4004, 0xe4005) AM_READ_PORT("DSW") - AM_RANGE(0xe8000, 0xe8003) AM_WRITE(tigeroad_scroll_w) - AM_RANGE(0xe800e, 0xe800f) AM_WRITENOP /* ? */ - AM_RANGE(0xec000, 0xec7ff) AM_RAM_WRITE(tigeroad_videoram_w) AM_SHARE("videoram") - - AM_RANGE(0xf8000, 0xf87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfc000, 0xfffff) AM_RAM AM_SHARE("ram16") -ADDRESS_MAP_END + map(0xe0800, 0xe17ff).ram().share("spriteram"); + map(0xe4000, 0xe4001).portr("P1_P2").w(this, FUNC(pushman_state::tigeroad_videoctrl_w)); + map(0xe4002, 0xe4003).portr("SYSTEM").w(this, FUNC(pushman_state::tigeroad_soundcmd_w)); + map(0xe4004, 0xe4005).portr("DSW"); + map(0xe8000, 0xe8003).w(this, FUNC(pushman_state::tigeroad_scroll_w)); + map(0xe800e, 0xe800f).nopw(); /* ? */ + map(0xec000, 0xec7ff).ram().w(this, FUNC(pushman_state::tigeroad_videoram_w)).share("videoram"); + + map(0xf8000, 0xf87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfc000, 0xfffff).ram().share("ram16"); +} /* Capcom games ONLY */ -ADDRESS_MAP_START(tigeroad_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tigeroad_state::sound_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) -ADDRESS_MAP_END +void tigeroad_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa001).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void tigeroad_state::sound_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).w("soundlatch2", FUNC(generic_latch_8_device::write)); +} /* toramich ONLY */ -ADDRESS_MAP_START(tigeroad_state::sample_map) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tigeroad_state::sample_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} -ADDRESS_MAP_START(tigeroad_state::sample_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w) -ADDRESS_MAP_END +void tigeroad_state::sample_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0x01, 0x01).w(this, FUNC(tigeroad_state::msm5205_w)); +} /* Pushman / Bouncing Balls */ -ADDRESS_MAP_START(tigeroad_state::comad_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tigeroad_state::comad_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ym2203_device, write) -ADDRESS_MAP_END +void tigeroad_state::comad_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void tigeroad_state::comad_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write)); + map(0x80, 0x81).w("ym2", FUNC(ym2203_device::write)); +} diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp index ea82836c2b8..05b2eccc0ea 100644 --- a/src/mame/drivers/tiki100.cpp +++ b/src/mame/drivers/tiki100.cpp @@ -293,15 +293,17 @@ WRITE8_MEMBER( tiki100_state::system_w ) /* Memory Maps */ -ADDRESS_MAP_START(tiki100_state::tiki100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mrq_r, mrq_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tiki100_state::tiki100_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(iorq_r, iorq_w) -ADDRESS_MAP_END +void tiki100_state::tiki100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(tiki100_state::mrq_r), FUNC(tiki100_state::mrq_w)); +} + +void tiki100_state::tiki100_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(tiki100_state::iorq_r), FUNC(tiki100_state::iorq_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/tim011.cpp b/src/mame/drivers/tim011.cpp index a7889a13901..fd025940f76 100644 --- a/src/mame/drivers/tim011.cpp +++ b/src/mame/drivers/tim011.cpp @@ -49,21 +49,23 @@ public: }; -ADDRESS_MAP_START(tim011_state::tim011_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x01fff) AM_ROM AM_MIRROR(0x3e000) - AM_RANGE(0x40000, 0x7ffff) AM_RAM // 256KB RAM 8 * 41256 DRAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tim011_state::tim011_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x007f) AM_RAM /* Z180 internal registers */ - AM_RANGE(0x0080, 0x009f) AM_DEVICE(FDC9266_TAG, upd765a_device, map) +void tim011_state::tim011_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x01fff).rom().mirror(0x3e000); + map(0x40000, 0x7ffff).ram(); // 256KB RAM 8 * 41256 DRAM +} + +void tim011_state::tim011_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x007f).ram(); /* Z180 internal registers */ + map(0x0080, 0x009f).m(m_fdc, FUNC(upd765a_device::map)); //AM_RANGE(0x00a0, 0x00a0) AM_MIRROR(0x001f) AM_WRITE(fdc_dma_w) //AM_RANGE(0x00c0, 0x00c1) AM_MIRROR(0x000e) AM_READWRITE(print_r,print_w) //AM_RANGE(0x00d0, 0x00d0) AM_MIRROR(0x000f) AM_READWRITE(scroll_r,scroll_w) - AM_RANGE(0x8000, 0xffff) AM_RAM // Video RAM 43256 SRAM (32KB) -ADDRESS_MAP_END + map(0x8000, 0xffff).ram(); // Video RAM 43256 SRAM (32KB) +} /* Input ports */ static INPUT_PORTS_START( tim011 ) diff --git a/src/mame/drivers/tim100.cpp b/src/mame/drivers/tim100.cpp index 2ad54a9ecf0..e7cfe6a057f 100644 --- a/src/mame/drivers/tim100.cpp +++ b/src/mame/drivers/tim100.cpp @@ -51,22 +51,24 @@ private: required_device<i8275_device> m_crtc; }; -ADDRESS_MAP_START(tim100_state::tim100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_ROM // 2764 at U16 - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("videoram") // 2KB static ram CDM6116A at U15 - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("uart_u17", i8251_device, data_r, data_w) - AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("uart_u17", i8251_device, status_r, control_w) - AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("uart_u18", i8251_device, data_r, data_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREADWRITE("uart_u18", i8251_device, status_r, control_w) - AM_RANGE(0xa000, 0xa000) AM_WRITENOP // continuously writes 00 here - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("crtc", i8275_device, read, write) // i8276 -ADDRESS_MAP_END - -ADDRESS_MAP_START(tim100_state::tim100_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void tim100_state::tim100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); // 2764 at U16 + map(0x2000, 0x27ff).ram().share("videoram"); // 2KB static ram CDM6116A at U15 + map(0x6000, 0x6000).rw("uart_u17", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x6001, 0x6001).rw("uart_u17", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x8000, 0x8000).rw("uart_u18", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x8001, 0x8001).rw("uart_u18", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xa000, 0xa000).nopw(); // continuously writes 00 here + map(0xc000, 0xc001).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); // i8276 +} + +void tim100_state::tim100_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} /* Input ports */ diff --git a/src/mame/drivers/timelimt.cpp b/src/mame/drivers/timelimt.cpp index 510fb48783b..8ae5f0aafe7 100644 --- a/src/mame/drivers/timelimt.cpp +++ b/src/mame/drivers/timelimt.cpp @@ -48,41 +48,45 @@ WRITE_LINE_MEMBER(timelimt_state::coin_lockout_w) /***************************************************************************/ -ADDRESS_MAP_START(timelimt_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM /* rom */ - AM_RANGE(0x8000, 0x87ff) AM_RAM /* ram */ - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") /* video ram */ - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")/* background ram */ - AM_RANGE(0x9800, 0x98ff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS") - AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") - AM_RANGE(0xb000, 0xb007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound write */ - AM_RANGE(0xb800, 0xb800) AM_READNOP /* NMI ack? */ - AM_RANGE(0xc800, 0xc800) AM_WRITE(scroll_x_lsb_w) - AM_RANGE(0xc801, 0xc801) AM_WRITE(scroll_x_msb_w) - AM_RANGE(0xc802, 0xc802) AM_WRITE(scroll_y_w) - AM_RANGE(0xc803, 0xc803) AM_WRITENOP /* ???? bit 0 used only */ - AM_RANGE(0xc804, 0xc804) AM_WRITENOP /* ???? not used */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(timelimt_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(timelimt_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3800, 0x3bff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(timelimt_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w) - AM_RANGE(0x8c, 0x8d) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) - AM_RANGE(0x8e, 0x8f) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w) -ADDRESS_MAP_END +void timelimt_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* rom */ + map(0x8000, 0x87ff).ram(); /* ram */ + map(0x8800, 0x8bff).ram().w(this, FUNC(timelimt_state::videoram_w)).share("videoram"); /* video ram */ + map(0x9000, 0x97ff).ram().w(this, FUNC(timelimt_state::bg_videoram_w)).share("bg_videoram");/* background ram */ + map(0x9800, 0x98ff).ram().share("spriteram"); /* sprite ram */ + map(0xa000, 0xa000).portr("INPUTS"); + map(0xa800, 0xa800).portr("SYSTEM"); + map(0xb000, 0xb000).portr("DSW"); + map(0xb000, 0xb007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xb800, 0xb800).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound write */ + map(0xb800, 0xb800).nopr(); /* NMI ack? */ + map(0xc800, 0xc800).w(this, FUNC(timelimt_state::scroll_x_lsb_w)); + map(0xc801, 0xc801).w(this, FUNC(timelimt_state::scroll_x_msb_w)); + map(0xc802, 0xc802).w(this, FUNC(timelimt_state::scroll_y_w)); + map(0xc803, 0xc803).nopw(); /* ???? bit 0 used only */ + map(0xc804, 0xc804).nopw(); /* ???? not used */ +} + +void timelimt_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("watchdog", FUNC(watchdog_timer_device::reset_r)); +} + +void timelimt_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3800, 0x3bff).ram(); +} + +void timelimt_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("soundlatch", FUNC(generic_latch_8_device::clear_w)); + map(0x8c, 0x8d).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0x8e, 0x8f).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); +} /***************************************************************************/ diff --git a/src/mame/drivers/timeplt.cpp b/src/mame/drivers/timeplt.cpp index fedaf34cbb7..b23570161b0 100644 --- a/src/mame/drivers/timeplt.cpp +++ b/src/mame/drivers/timeplt.cpp @@ -129,32 +129,38 @@ CUSTOM_INPUT_MEMBER(timeplt_state::chkun_hopper_status_r) * *************************************/ -ADDRESS_MAP_START(timeplt_state::timeplt_main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa800, 0xafff) AM_RAM - AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xb400, 0xb4ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(scanline_r) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w) - AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0c9f) AM_READ_PORT("IN0") - ;map(0xc300, 0xc30f).lw8("mainlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_mainlatch->write_d0(space, offset >> 1, data, mem_mask); }); - AM_RANGE(0xc320, 0xc320) AM_MIRROR(0x0c9f) AM_READ_PORT("IN1") - AM_RANGE(0xc340, 0xc340) AM_MIRROR(0x0c9f) AM_READ_PORT("IN2") - AM_RANGE(0xc360, 0xc360) AM_MIRROR(0x0c9f) AM_READ_PORT("DSW0") -ADDRESS_MAP_END - -ADDRESS_MAP_START(timeplt_state::psurge_main_map) - AM_IMPORT_FROM(timeplt_main_map) - AM_RANGE(0x6004, 0x6004) AM_READ(psurge_protection_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(timeplt_state::chkun_main_map) - AM_IMPORT_FROM(timeplt_main_map) - AM_RANGE(0x6000, 0x67ff) AM_RAM -ADDRESS_MAP_END +void timeplt_state::timeplt_main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5fff).rom(); + map(0xa000, 0xa3ff).ram().w(this, FUNC(timeplt_state::colorram_w)).share("colorram"); + map(0xa400, 0xa7ff).ram().w(this, FUNC(timeplt_state::videoram_w)).share("videoram"); + map(0xa800, 0xafff).ram(); + map(0xb000, 0xb0ff).mirror(0x0b00).ram().share("spriteram"); + map(0xb400, 0xb4ff).mirror(0x0b00).ram().share("spriteram2"); + map(0xc000, 0xc000).mirror(0x0cff).r(this, FUNC(timeplt_state::scanline_r)).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w)); + map(0xc200, 0xc200).mirror(0x0cff).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xc300, 0xc300).mirror(0x0c9f).portr("IN0"); + map(0xc300, 0xc30f).lw8("mainlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_mainlatch->write_d0(space, offset >> 1, data, mem_mask); + }); + map(0xc320, 0xc320).mirror(0x0c9f).portr("IN1"); + map(0xc340, 0xc340).mirror(0x0c9f).portr("IN2"); + map(0xc360, 0xc360).mirror(0x0c9f).portr("DSW0"); +} + +void timeplt_state::psurge_main_map(address_map &map) +{ + timeplt_main_map(map); + map(0x6004, 0x6004).r(this, FUNC(timeplt_state::psurge_protection_r)); +} + +void timeplt_state::chkun_main_map(address_map &map) +{ + timeplt_main_map(map); + map(0x6000, 0x67ff).ram(); +} diff --git a/src/mame/drivers/timetrv.cpp b/src/mame/drivers/timetrv.cpp index 03b62dafd9a..39fd71c5867 100644 --- a/src/mame/drivers/timetrv.cpp +++ b/src/mame/drivers/timetrv.cpp @@ -84,21 +84,23 @@ READ8_MEMBER(timetrv_state::in_r) return 0xff; } -ADDRESS_MAP_START(timetrv_state::timetrv_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM //irq vectors + work ram - AM_RANGE(0x10000, 0x107ff) AM_DEVREADWRITE("eeprom", eeprom_parallel_28xx_device, read, write) - AM_RANGE(0xc0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(timetrv_state::timetrv_io) - AM_RANGE(0x0122, 0x0123) AM_WRITENOP //eeprom write bits - AM_RANGE(0x1000, 0x1003) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0x1080, 0x1083) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0x1100, 0x1107) AM_DEVREADWRITE("uart", ins8250_device, ins8250_r, ins8250_w) - AM_RANGE(0x1180, 0x1187) AM_RAM AM_SHARE("led_vralo")//led string,part 1 - AM_RANGE(0x1200, 0x1207) AM_RAM AM_SHARE("led_vrahi")//led string,part 2 - AM_RANGE(0xff80, 0xffff) AM_RAM //am80188-em-like cpu internal regs? -ADDRESS_MAP_END +void timetrv_state::timetrv_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); //irq vectors + work ram + map(0x10000, 0x107ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); + map(0xc0000, 0xfffff).rom(); +} + +void timetrv_state::timetrv_io(address_map &map) +{ + map(0x0122, 0x0123).nopw(); //eeprom write bits + map(0x1000, 0x1003).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1080, 0x1083).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1100, 0x1107).rw("uart", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x1180, 0x1187).ram().share("led_vralo");//led string,part 1 + map(0x1200, 0x1207).ram().share("led_vrahi");//led string,part 2 + map(0xff80, 0xffff).ram(); //am80188-em-like cpu internal regs? +} static INPUT_PORTS_START( timetrv ) diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp index e563bf8043c..8f1416178b2 100644 --- a/src/mame/drivers/timex.cpp +++ b/src/mame/drivers/timex.cpp @@ -525,24 +525,26 @@ void spectrum_state::ts2068_update_memory() } } -ADDRESS_MAP_START(spectrum_state::ts2068_io) - AM_RANGE(0xf4, 0xf4) AM_READWRITE(ts2068_port_f4_r,ts2068_port_f4_w ) AM_MIRROR(0xff00) - AM_RANGE(0xf5, 0xf5) AM_DEVWRITE("ay8912", ay8910_device, address_w ) AM_MIRROR(0xff00) - AM_RANGE(0xf6, 0xf6) AM_DEVREADWRITE("ay8912", ay8910_device, data_r, data_w ) AM_MIRROR(0xff00) - AM_RANGE(0xfe, 0xfe) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w ) AM_SELECT(0xff00) - AM_RANGE(0xff, 0xff) AM_READWRITE(ts2068_port_ff_r,ts2068_port_ff_w ) AM_MIRROR(0xff00) -ADDRESS_MAP_END - -ADDRESS_MAP_START(spectrum_state::ts2068_mem) - AM_RANGE(0x0000, 0x1fff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank9") - AM_RANGE(0x2000, 0x3fff) AM_READ_BANK("bank2") AM_WRITE_BANK("bank10") - AM_RANGE(0x4000, 0x5fff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank11") - AM_RANGE(0x6000, 0x7fff) AM_READ_BANK("bank4") AM_WRITE_BANK("bank12") - AM_RANGE(0x8000, 0x9fff) AM_READ_BANK("bank5") AM_WRITE_BANK("bank13") - AM_RANGE(0xa000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank14") - AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE_BANK("bank15") - AM_RANGE(0xe000, 0xffff) AM_READ_BANK("bank8") AM_WRITE_BANK("bank16") -ADDRESS_MAP_END +void spectrum_state::ts2068_io(address_map &map) +{ + map(0xf4, 0xf4).rw(this, FUNC(spectrum_state::ts2068_port_f4_r), FUNC(spectrum_state::ts2068_port_f4_w)).mirror(0xff00); + map(0xf5, 0xf5).w("ay8912", FUNC(ay8910_device::address_w)).mirror(0xff00); + map(0xf6, 0xf6).rw("ay8912", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)).mirror(0xff00); + map(0xfe, 0xfe).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xff00); + map(0xff, 0xff).rw(this, FUNC(spectrum_state::ts2068_port_ff_r), FUNC(spectrum_state::ts2068_port_ff_w)).mirror(0xff00); +} + +void spectrum_state::ts2068_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bank1").bankw("bank9"); + map(0x2000, 0x3fff).bankr("bank2").bankw("bank10"); + map(0x4000, 0x5fff).bankr("bank3").bankw("bank11"); + map(0x6000, 0x7fff).bankr("bank4").bankw("bank12"); + map(0x8000, 0x9fff).bankr("bank5").bankw("bank13"); + map(0xa000, 0xbfff).bankr("bank6").bankw("bank14"); + map(0xc000, 0xdfff).bankr("bank7").bankw("bank15"); + map(0xe000, 0xffff).bankr("bank8").bankw("bank16"); +} MACHINE_RESET_MEMBER(spectrum_state,ts2068) @@ -569,15 +571,17 @@ WRITE8_MEMBER( spectrum_state::tc2048_port_ff_w ) logerror("Port %04x write %02x\n", offset, data); } -ADDRESS_MAP_START(spectrum_state::tc2048_io) - AM_RANGE(0x00, 0x00) AM_READWRITE(spectrum_port_fe_r,spectrum_port_fe_w) AM_SELECT(0xfffe) - AM_RANGE(0xff, 0xff) AM_READWRITE(ts2068_port_ff_r,tc2048_port_ff_w) AM_MIRROR(0xff00) -ADDRESS_MAP_END +void spectrum_state::tc2048_io(address_map &map) +{ + map(0x00, 0x00).rw(this, FUNC(spectrum_state::spectrum_port_fe_r), FUNC(spectrum_state::spectrum_port_fe_w)).select(0xfffe); + map(0xff, 0xff).rw(this, FUNC(spectrum_state::ts2068_port_ff_r), FUNC(spectrum_state::tc2048_port_ff_w)).mirror(0xff00); +} -ADDRESS_MAP_START(spectrum_state::tc2048_mem) - AM_RANGE( 0x0000, 0x3fff) AM_ROM - AM_RANGE( 0x4000, 0xffff) AM_READ_BANK("bank1") AM_WRITE_BANK("bank2") -ADDRESS_MAP_END +void spectrum_state::tc2048_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0xffff).bankr("bank1").bankw("bank2"); +} MACHINE_RESET_MEMBER(spectrum_state,tc2048) { diff --git a/src/mame/drivers/tk2000.cpp b/src/mame/drivers/tk2000.cpp index 567a5856e4c..e6a75db7ce0 100644 --- a/src/mame/drivers/tk2000.cpp +++ b/src/mame/drivers/tk2000.cpp @@ -453,17 +453,19 @@ WRITE8_MEMBER(tk2000_state::ram_w) } } -ADDRESS_MAP_START(tk2000_state::apple2_map) - AM_RANGE(0x0000, 0xbfff) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0xc000, 0xc07f) AM_READWRITE(c000_r, c000_w) - AM_RANGE(0xc080, 0xc0ff) AM_READWRITE(c080_r, c080_w) - AM_RANGE(0xc100, 0xffff) AM_DEVICE(A2_UPPERBANK_TAG, address_map_bank_device, amap8) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tk2000_state::inhbank_map) - AM_RANGE(0x0000, 0x3eff) AM_ROM AM_REGION("maincpu", 0x100) - AM_RANGE(0x4000, 0x7eff) AM_READWRITE(c100_r, c100_w) -ADDRESS_MAP_END +void tk2000_state::apple2_map(address_map &map) +{ + map(0x0000, 0xbfff).rw(this, FUNC(tk2000_state::ram_r), FUNC(tk2000_state::ram_w)); + map(0xc000, 0xc07f).rw(this, FUNC(tk2000_state::c000_r), FUNC(tk2000_state::c000_w)); + map(0xc080, 0xc0ff).rw(this, FUNC(tk2000_state::c080_r), FUNC(tk2000_state::c080_w)); + map(0xc100, 0xffff).m(m_upperbank, FUNC(address_map_bank_device::amap8)); +} + +void tk2000_state::inhbank_map(address_map &map) +{ + map(0x0000, 0x3eff).rom().region("maincpu", 0x100); + map(0x4000, 0x7eff).rw(this, FUNC(tk2000_state::c100_r), FUNC(tk2000_state::c100_w)); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/tk80.cpp b/src/mame/drivers/tk80.cpp index 0c2961c7cf9..1ed95effc2e 100644 --- a/src/mame/drivers/tk80.cpp +++ b/src/mame/drivers/tk80.cpp @@ -120,49 +120,55 @@ WRITE8_MEMBER( tk80_state::display_w ) m_digit[offset & 0x7] = data; } -ADDRESS_MAP_START(tk80_state::tk80_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x83ff) // A10-14 not connected - AM_RANGE(0x0000, 0x02ff) AM_ROM - AM_RANGE(0x0300, 0x03ff) AM_RAM // EEPROM - AM_RANGE(0x8000, 0x83f7) AM_RAM // RAM - AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tk80_state::tk85_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x87ff) // A10-14 not connected - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x8000, 0x83f7) AM_RAM - AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tk80_state::ics8080_mem) - ADDRESS_MAP_UNMAP_HIGH +void tk80_state::tk80_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x83ff); // A10-14 not connected + map(0x0000, 0x02ff).rom(); + map(0x0300, 0x03ff).ram(); // EEPROM + map(0x8000, 0x83f7).ram(); // RAM + map(0x83f8, 0x83ff).ram().rw(this, FUNC(tk80_state::display_r), FUNC(tk80_state::display_w)); +} + +void tk80_state::tk85_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x87ff); // A10-14 not connected + map(0x0000, 0x07ff).rom(); + map(0x8000, 0x83f7).ram(); + map(0x83f8, 0x83ff).ram().rw(this, FUNC(tk80_state::display_r), FUNC(tk80_state::display_w)); +} + +void tk80_state::ics8080_mem(address_map &map) +{ + map.unmap_value_high(); //ADDRESS_MAP_GLOBAL_MASK(0x87ff) // A10-14 not connected - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x8000, 0x83f7) AM_RAM - AM_RANGE(0x83f8, 0x83ff) AM_RAM AM_READWRITE(display_r,display_w) - AM_RANGE(0x8400, 0x8fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tk80_state::tk80_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tk80_state::mikrolab_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tk80_state::nd80z_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) -ADDRESS_MAP_END + map(0x0000, 0x1fff).rom(); + map(0x8000, 0x83f7).ram(); + map(0x83f8, 0x83ff).ram().rw(this, FUNC(tk80_state::display_r), FUNC(tk80_state::display_w)); + map(0x8400, 0x8fff).ram(); +} + +void tk80_state::tk80_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x03); + map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void tk80_state::mikrolab_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x03); + map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void tk80_state::nd80z_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x03); + map(0x00, 0x03).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input ports */ static INPUT_PORTS_START( tk80 ) diff --git a/src/mame/drivers/tk80bs.cpp b/src/mame/drivers/tk80bs.cpp index edf84e06a2e..1bb5c5c3f8e 100644 --- a/src/mame/drivers/tk80bs.cpp +++ b/src/mame/drivers/tk80bs.cpp @@ -108,17 +108,18 @@ WRITE8_MEMBER( tk80bs_state::ppi_custom_w ) } } -ADDRESS_MAP_START(tk80bs_state::tk80bs_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM +void tk80bs_state::tk80bs_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); // AM_RANGE(0x0c00, 0x7bff) AM_ROM // ext - AM_RANGE(0x7df8, 0x7df9) AM_NOP // i8251 sio - AM_RANGE(0x7dfc, 0x7dff) AM_READWRITE(ppi_custom_r,ppi_custom_w) - AM_RANGE(0x7e00, 0x7fff) AM_RAM AM_SHARE("videoram") // video ram - AM_RANGE(0x8000, 0xcfff) AM_RAM // RAM - AM_RANGE(0xd000, 0xefff) AM_ROM // BASIC - AM_RANGE(0xf000, 0xffff) AM_ROM // BSMON -ADDRESS_MAP_END + map(0x7df8, 0x7df9).noprw(); // i8251 sio + map(0x7dfc, 0x7dff).rw(this, FUNC(tk80bs_state::ppi_custom_r), FUNC(tk80bs_state::ppi_custom_w)); + map(0x7e00, 0x7fff).ram().share("videoram"); // video ram + map(0x8000, 0xcfff).ram(); // RAM + map(0xd000, 0xefff).rom(); // BASIC + map(0xf000, 0xffff).rom(); // BSMON +} /* Input ports */ diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp index 34aa497cfbd..b1693254fae 100644 --- a/src/mame/drivers/tm990189.cpp +++ b/src/mame/drivers/tm990189.cpp @@ -720,24 +720,26 @@ static const tms9901_interface sys9901reset_param = 0x3000-0x3fff: 4kb onboard ROM */ -ADDRESS_MAP_START(tm990189_state::tm990_189_memmap) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */ - AM_RANGE(0x0800, 0x0fff) AM_ROM /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */ - AM_RANGE(0x1000, 0x2fff) AM_NOP /* reserved for expansion (RAM and/or tms9918 video controller) */ - AM_RANGE(0x3000, 0x3fff) AM_ROM /* main ROM - unibug or university basic */ -ADDRESS_MAP_END +void tm990189_state::tm990_189_memmap(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* RAM */ + map(0x0800, 0x0fff).rom(); /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */ + map(0x1000, 0x2fff).noprw(); /* reserved for expansion (RAM and/or tms9918 video controller) */ + map(0x3000, 0x3fff).rom(); /* main ROM - unibug or university basic */ +} -ADDRESS_MAP_START(tm990189_state::tm990_189_v_memmap) - AM_RANGE(0x0000, 0x07ff) AM_RAM /* RAM */ - AM_RANGE(0x0800, 0x0fff) AM_ROM /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */ +void tm990189_state::tm990_189_v_memmap(address_map &map) +{ + map(0x0000, 0x07ff).ram(); /* RAM */ + map(0x0800, 0x0fff).rom(); /* extra ROM - application programs with unibug, remaining 2kb of program for university basic */ - AM_RANGE(0x1000, 0x17ff) AM_ROM AM_WRITENOP /* video board ROM 1 */ - AM_RANGE(0x1800, 0x1fff) AM_ROM AM_WRITE(video_joy_w) /* video board ROM 2 and joystick write port*/ - AM_RANGE(0x2000, 0x27ff) AM_READ(video_vdp_r) AM_WRITENOP /* video board tms9918 read ports (bogus) */ - AM_RANGE(0x2800, 0x2fff) AM_READWRITE(video_joy_r, video_vdp_w) /* video board joystick read port and tms9918 write ports */ + map(0x1000, 0x17ff).rom().nopw(); /* video board ROM 1 */ + map(0x1800, 0x1fff).rom().w(this, FUNC(tm990189_state::video_joy_w)); /* video board ROM 2 and joystick write port*/ + map(0x2000, 0x27ff).r(this, FUNC(tm990189_state::video_vdp_r)).nopw(); /* video board tms9918 read ports (bogus) */ + map(0x2800, 0x2fff).rw(this, FUNC(tm990189_state::video_joy_r), FUNC(tm990189_state::video_vdp_w)); /* video board joystick read port and tms9918 write ports */ - AM_RANGE(0x3000, 0x3fff) AM_ROM /* main ROM - unibug or university basic */ -ADDRESS_MAP_END + map(0x3000, 0x3fff).rom(); /* main ROM - unibug or university basic */ +} /* CRU map @@ -795,15 +797,16 @@ ADDRESS_MAP_END d */ -ADDRESS_MAP_START(tm990189_state::tm990_189_cru_map) - AM_RANGE(0x0000, 0x003f) AM_DEVREAD(TMS9901_0_TAG, tms9901_device, read) /* user I/O tms9901 */ - AM_RANGE(0x0040, 0x006f) AM_DEVREAD(TMS9901_1_TAG, tms9901_device, read) /* system I/O tms9901 */ - AM_RANGE(0x0080, 0x00cf) AM_DEVREAD("tms9902", tms9902_device, cruread) /* optional tms9902 */ +void tm990189_state::tm990_189_cru_map(address_map &map) +{ + map(0x0000, 0x003f).r(m_tms9901_usr, FUNC(tms9901_device::read)); /* user I/O tms9901 */ + map(0x0040, 0x006f).r(m_tms9901_sys, FUNC(tms9901_device::read)); /* system I/O tms9901 */ + map(0x0080, 0x00cf).r("tms9902", FUNC(tms9902_device::cruread)); /* optional tms9902 */ - AM_RANGE(0x0000, 0x01ff) AM_DEVWRITE(TMS9901_0_TAG, tms9901_device, write) /* user I/O tms9901 */ - AM_RANGE(0x0200, 0x03ff) AM_DEVWRITE(TMS9901_1_TAG, tms9901_device, write) /* system I/O tms9901 */ - AM_RANGE(0x0400, 0x05ff) AM_DEVWRITE("tms9902", tms9902_device, cruwrite) /* optional tms9902 */ -ADDRESS_MAP_END + map(0x0000, 0x01ff).w(m_tms9901_usr, FUNC(tms9901_device::write)); /* user I/O tms9901 */ + map(0x0200, 0x03ff).w(m_tms9901_sys, FUNC(tms9901_device::write)); /* system I/O tms9901 */ + map(0x0400, 0x05ff).w("tms9902", FUNC(tms9902_device::cruwrite)); /* optional tms9902 */ +} MACHINE_CONFIG_START(tm990189_state::tm990_189) /* basic machine hardware */ diff --git a/src/mame/drivers/tmaster.cpp b/src/mame/drivers/tmaster.cpp index 079f129a6bd..82c8a2c7e7c 100644 --- a/src/mame/drivers/tmaster.cpp +++ b/src/mame/drivers/tmaster.cpp @@ -257,31 +257,32 @@ READ_LINE_MEMBER(tmaster_state::read_rand) return machine().rand() & 1; } -ADDRESS_MAP_START(tmaster_state::tmaster_map) - AM_RANGE( 0x000000, 0x1fffff ) AM_ROM - AM_RANGE( 0x200000, 0x27ffff ) AM_RAM - AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE(rtc_r, rtc_w ) +void tmaster_state::tmaster_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x27ffff).ram(); + map(0x280000, 0x28ffef).ram().share("nvram"); + map(0x28fff0, 0x28ffff).rw(this, FUNC(tmaster_state::rtc_r), FUNC(tmaster_state::rtc_w)); - AM_RANGE( 0x300010, 0x300011 ) AM_READ_PORT("COIN") + map(0x300010, 0x300011).portr("COIN"); - AM_RANGE( 0x300020, 0x30003f ) AM_DEVREADWRITE8("duart68681", mc68681_device, read, write, 0xff ) + map(0x300020, 0x30003f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); - AM_RANGE( 0x300040, 0x300041 ) AM_WRITE_PORT("OUT") + map(0x300040, 0x300041).portw("OUT"); - AM_RANGE( 0x300070, 0x300071 ) AM_DEVWRITE("blitter", cesblit_device, addr_hi_w ) + map(0x300070, 0x300071).w(m_blitter, FUNC(cesblit_device::addr_hi_w)); - AM_RANGE( 0x500000, 0x500011 ) AM_DEVWRITE("blitter", cesblit_device, regs_w ) - AM_RANGE( 0x500010, 0x500011 ) AM_DEVREAD( "blitter", cesblit_device, status_r ) + map(0x500000, 0x500011).w(m_blitter, FUNC(cesblit_device::regs_w)); + map(0x500010, 0x500011).r(m_blitter, FUNC(cesblit_device::status_r)); - AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often + map(0x580000, 0x580001).nopw(); // often - AM_RANGE( 0x600000, 0x601fff ) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x600000, 0x601fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) + map(0x800001, 0x800001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE( 0x800010, 0x800011 ) AM_DEVWRITE("blitter", cesblit_device, color_w ) -ADDRESS_MAP_END + map(0x800010, 0x800011).w(m_blitter, FUNC(cesblit_device::color_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp index 795f9969896..22c218d0645 100644 --- a/src/mame/drivers/tmc1800.cpp +++ b/src/mame/drivers/tmc1800.cpp @@ -253,54 +253,62 @@ WRITE8_MEMBER( tmc1800_state::dispoff_w ) // Telmac 1800 -ADDRESS_MAP_START(tmc1800_state::tmc1800_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x7800) AM_RAM - AM_RANGE(0x8000, 0x81ff) AM_MIRROR(0x7e00) AM_ROM AM_REGION(CDP1802_TAG, 0) -ADDRESS_MAP_END +void tmc1800_state::tmc1800_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x7800).ram(); + map(0x8000, 0x81ff).mirror(0x7e00).rom().region(CDP1802_TAG, 0); +} -ADDRESS_MAP_START(tmc1800_state::tmc1800_io_map) - AM_RANGE(0x01, 0x01) AM_READWRITE(dispon_r, dispoff_w) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) -ADDRESS_MAP_END +void tmc1800_state::tmc1800_io_map(address_map &map) +{ + map(0x01, 0x01).rw(this, FUNC(tmc1800_state::dispon_r), FUNC(tmc1800_state::dispoff_w)); + map(0x02, 0x02).w(this, FUNC(tmc1800_state::keylatch_w)); +} // OSCOM 1000B -ADDRESS_MAP_START(osc1000b_state::osc1000b_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x7800) AM_RAM - AM_RANGE(0x8000, 0x81ff) AM_MIRROR(0x7e00) AM_ROM AM_REGION(CDP1802_TAG, 0) -ADDRESS_MAP_END +void osc1000b_state::osc1000b_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x7800).ram(); + map(0x8000, 0x81ff).mirror(0x7e00).rom().region(CDP1802_TAG, 0); +} -ADDRESS_MAP_START(osc1000b_state::osc1000b_io_map) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) -ADDRESS_MAP_END +void osc1000b_state::osc1000b_io_map(address_map &map) +{ + map(0x02, 0x02).w(this, FUNC(osc1000b_state::keylatch_w)); +} // Telmac 2000 -ADDRESS_MAP_START(tmc2000_state::tmc2000_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) // RAM / monitor ROM - AM_RANGE(0x8000, 0xffff) // color RAM / monitor ROM -ADDRESS_MAP_END +void tmc2000_state::tmc2000_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff); // RAM / monitor ROM + map(0x8000, 0xffff); // color RAM / monitor ROM +} -ADDRESS_MAP_START(tmc2000_state::tmc2000_io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) - AM_RANGE(0x04, 0x04) AM_DEVREAD(CDP1864_TAG, cdp1864_device, dispoff_r) AM_WRITE(bankswitch_w) -ADDRESS_MAP_END +void tmc2000_state::tmc2000_io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w)); + map(0x02, 0x02).w(this, FUNC(tmc2000_state::keylatch_w)); + map(0x04, 0x04).r(m_cti, FUNC(cdp1864_device::dispoff_r)).w(this, FUNC(tmc2000_state::bankswitch_w)); +} // OSCOM Nano -ADDRESS_MAP_START(nano_state::nano_map) - AM_RANGE(0x0000, 0x7fff) // RAM / monitor ROM - AM_RANGE(0x8000, 0x81ff) AM_MIRROR(0x7e00) AM_ROM AM_REGION(CDP1802_TAG, 0) -ADDRESS_MAP_END +void nano_state::nano_map(address_map &map) +{ + map(0x0000, 0x7fff); // RAM / monitor ROM + map(0x8000, 0x81ff).mirror(0x7e00).rom().region(CDP1802_TAG, 0); +} -ADDRESS_MAP_START(nano_state::nano_io_map) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w) - AM_RANGE(0x02, 0x02) AM_WRITE(keylatch_w) - AM_RANGE(0x04, 0x04) AM_DEVREAD(CDP1864_TAG, cdp1864_device, dispoff_r) AM_WRITE(bankswitch_w) -ADDRESS_MAP_END +void nano_state::nano_io_map(address_map &map) +{ + map(0x01, 0x01).rw(m_cti, FUNC(cdp1864_device::dispon_r), FUNC(cdp1864_device::step_bgcolor_w)); + map(0x02, 0x02).w(this, FUNC(nano_state::keylatch_w)); + map(0x04, 0x04).r(m_cti, FUNC(cdp1864_device::dispoff_r)).w(this, FUNC(nano_state::bankswitch_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/tmc2000e.cpp b/src/mame/drivers/tmc2000e.cpp index 3cc6a35eafd..95916d9070c 100644 --- a/src/mame/drivers/tmc2000e.cpp +++ b/src/mame/drivers/tmc2000e.cpp @@ -82,21 +82,23 @@ WRITE8_MEMBER( tmc2000e_state::keyboard_latch_w ) /* Memory Maps */ -ADDRESS_MAP_START(tmc2000e_state::tmc2000e_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_ROM - AM_RANGE(0xfc00, 0xffff) AM_WRITEONLY AM_SHARE("colorram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tmc2000e_state::tmc2000e_io_map) - AM_RANGE(0x01, 0x01) AM_DEVWRITE(CDP1864_TAG, cdp1864_device, tone_latch_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE(CDP1864_TAG, cdp1864_device, step_bgcolor_w) - AM_RANGE(0x03, 0x03) AM_READWRITE(ascii_keyboard_r, keyboard_latch_w) - AM_RANGE(0x04, 0x04) AM_READWRITE(io_r, io_w) - AM_RANGE(0x05, 0x05) AM_READWRITE(vismac_r, vismac_w) - AM_RANGE(0x06, 0x06) AM_READWRITE(floppy_r, floppy_w) - AM_RANGE(0x07, 0x07) AM_READ_PORT("DSW0") AM_WRITE(io_select_w) -ADDRESS_MAP_END +void tmc2000e_state::tmc2000e_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0xc000, 0xdfff).rom(); + map(0xfc00, 0xffff).writeonly().share("colorram"); +} + +void tmc2000e_state::tmc2000e_io_map(address_map &map) +{ + map(0x01, 0x01).w(m_cti, FUNC(cdp1864_device::tone_latch_w)); + map(0x02, 0x02).w(m_cti, FUNC(cdp1864_device::step_bgcolor_w)); + map(0x03, 0x03).rw(this, FUNC(tmc2000e_state::ascii_keyboard_r), FUNC(tmc2000e_state::keyboard_latch_w)); + map(0x04, 0x04).rw(this, FUNC(tmc2000e_state::io_r), FUNC(tmc2000e_state::io_w)); + map(0x05, 0x05).rw(this, FUNC(tmc2000e_state::vismac_r), FUNC(tmc2000e_state::vismac_w)); + map(0x06, 0x06).rw(this, FUNC(tmc2000e_state::floppy_r), FUNC(tmc2000e_state::floppy_w)); + map(0x07, 0x07).portr("DSW0").w(this, FUNC(tmc2000e_state::io_select_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/tmc600.cpp b/src/mame/drivers/tmc600.cpp index 213bb466539..26cbf690de0 100644 --- a/src/mame/drivers/tmc600.cpp +++ b/src/mame/drivers/tmc600.cpp @@ -121,20 +121,22 @@ WRITE8_MEMBER( tmc600_state::printer_w ) /* Memory Maps */ -ADDRESS_MAP_START(tmc600_state::tmc600_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_RAM - AM_RANGE(0xf400, 0xf7ff) AM_DEVICE(CDP1869_TAG, cdp1869_device, char_map) - AM_RANGE(0xf800, 0xffff) AM_DEVICE(CDP1869_TAG, cdp1869_device, page_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tmc600_state::tmc600_io_map) - AM_RANGE(0x03, 0x03) AM_DEVWRITE(CDP1852_KB_TAG, cdp1852_device, write) - AM_RANGE(0x04, 0x04) AM_DEVWRITE(CDP1852_TMC700_TAG, cdp1852_device, write) - AM_RANGE(0x05, 0x05) AM_READWRITE(rtc_r, vismac_data_w) +void tmc600_state::tmc600_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).ram(); + map(0xf400, 0xf7ff).m(m_vis, FUNC(cdp1869_device::char_map)); + map(0xf800, 0xffff).m(m_vis, FUNC(cdp1869_device::page_map)); +} + +void tmc600_state::tmc600_io_map(address_map &map) +{ + map(0x03, 0x03).w(m_bwio, FUNC(cdp1852_device::write)); + map(0x04, 0x04).w(CDP1852_TMC700_TAG, FUNC(cdp1852_device::write)); + map(0x05, 0x05).rw(this, FUNC(tmc600_state::rtc_r), FUNC(tmc600_state::vismac_data_w)); // AM_RANGE(0x06, 0x06) AM_WRITE(floppy_w) - AM_RANGE(0x07, 0x07) AM_WRITE(vismac_register_w) -ADDRESS_MAP_END + map(0x07, 0x07).w(this, FUNC(tmc600_state::vismac_register_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/tmmjprd.cpp b/src/mame/drivers/tmmjprd.cpp index 46fa504795a..486b141d204 100644 --- a/src/mame/drivers/tmmjprd.cpp +++ b/src/mame/drivers/tmmjprd.cpp @@ -692,37 +692,38 @@ WRITE32_MEMBER(tmmjprd_state::brt_2_w) } } -ADDRESS_MAP_START(tmmjprd_state::tmmjprd_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200010, 0x200013) AM_READ(randomtmmjprds) // gfx chip status? +void tmmjprd_state::tmmjprd_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200010, 0x200013).r(this, FUNC(tmmjprd_state::randomtmmjprds)); // gfx chip status? /* check these are used .. */ // AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_SHARE("viewregs0") - AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_SHARE("tilemap_regs.0" ) // tilemap regs1 - AM_RANGE(0x200120, 0x200137) AM_WRITEONLY AM_SHARE("tilemap_regs.1" ) // tilemap regs2 - AM_RANGE(0x200140, 0x200157) AM_WRITEONLY AM_SHARE("tilemap_regs.2" ) // tilemap regs3 - AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_SHARE("tilemap_regs.3" ) // tilemap regs4 - AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_SHARE("spriteregs" ) // sprregs? + map(0x200100, 0x200117).writeonly().share("tilemap_regs.0"); // tilemap regs1 + map(0x200120, 0x200137).writeonly().share("tilemap_regs.1"); // tilemap regs2 + map(0x200140, 0x200157).writeonly().share("tilemap_regs.2"); // tilemap regs3 + map(0x200160, 0x200177).writeonly().share("tilemap_regs.3"); // tilemap regs4 + map(0x200200, 0x20021b).writeonly().share("spriteregs"); // sprregs? // AM_RANGE(0x200300, 0x200303) AM_WRITE(rombank_w) // used during rom testing, rombank/area select + something else? - AM_RANGE(0x20040c, 0x20040f) AM_WRITE(brt_1_w) - AM_RANGE(0x200410, 0x200413) AM_WRITE(brt_2_w) + map(0x20040c, 0x20040f).w(this, FUNC(tmmjprd_state::brt_1_w)); + map(0x200410, 0x200413).w(this, FUNC(tmmjprd_state::brt_2_w)); // AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_SHARE("viewregs7") // AM_RANGE(0x200700, 0x20070f) AM_WRITE(blitter_w) AM_SHARE("blitterregs") // AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_SHARE("viewregs9") // never changes? - AM_RANGE(0x200900, 0x2009ff) AM_DEVREADWRITE16("i5000snd", i5000snd_device, read, write, 0xffffffff) + map(0x200900, 0x2009ff).rw("i5000snd", FUNC(i5000snd_device::read), FUNC(i5000snd_device::write)); /* hmm */ // AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("viewregs10") /* tilemaps */ - AM_RANGE(0x280000, 0x283fff) AM_READWRITE(tilemap0_r,tilemap0_w) - AM_RANGE(0x284000, 0x287fff) AM_READWRITE(tilemap1_r,tilemap1_w) - AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(tilemap2_r,tilemap2_w) - AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(tilemap3_r,tilemap3_w) + map(0x280000, 0x283fff).rw(this, FUNC(tmmjprd_state::tilemap0_r), FUNC(tmmjprd_state::tilemap0_w)); + map(0x284000, 0x287fff).rw(this, FUNC(tmmjprd_state::tilemap1_r), FUNC(tmmjprd_state::tilemap1_w)); + map(0x288000, 0x28bfff).rw(this, FUNC(tmmjprd_state::tilemap2_r), FUNC(tmmjprd_state::tilemap2_w)); + map(0x28c000, 0x28ffff).rw(this, FUNC(tmmjprd_state::tilemap3_r), FUNC(tmmjprd_state::tilemap3_w)); /* ?? is palette ram shared with sprites in this case or just a different map */ - AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x29c000, 0x29ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") + map(0x290000, 0x29bfff).ram().share("spriteram"); + map(0x29c000, 0x29ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); - AM_RANGE(0x400000, 0x400003) AM_READ(mux_r) AM_WRITE(eeprom_write) - AM_RANGE(0xf00000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x400000, 0x400003).r(this, FUNC(tmmjprd_state::mux_r)).w(this, FUNC(tmmjprd_state::eeprom_write)); + map(0xf00000, 0xffffff).ram(); +} diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp index ddeca3654a1..6418d096e3e 100644 --- a/src/mame/drivers/tmnt.cpp +++ b/src/mame/drivers/tmnt.cpp @@ -469,105 +469,110 @@ WRITE8_MEMBER(tmnt_state::cuebrick_nvbank_w) membank("nvrambank")->set_entry(data); } -ADDRESS_MAP_START(tmnt_state::cuebrick_main_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM /* main RAM */ - AM_RANGE(0x060000, 0x063fff) AM_RAM /* main RAM */ - AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w) - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1") - AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") - AM_RANGE(0x0b0000, 0x0b03ff) AM_RAMBANK("nvrambank") - AM_RANGE(0x0b0400, 0x0b0401) AM_WRITE8(cuebrick_nvbank_w, 0xff00) - AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0xff00) - AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) - AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff) - AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::mia_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM /* main RAM */ - AM_RANGE(0x060000, 0x063fff) AM_RAM /* main RAM */ - AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w) - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2") - AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") +void tmnt_state::cuebrick_main_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x043fff).ram(); /* main RAM */ + map(0x060000, 0x063fff).ram(); /* main RAM */ + map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0a0000, 0x0a0001).portr("COINS").w(this, FUNC(tmnt_state::tmnt_0a0000_w)); + map(0x0a0002, 0x0a0003).portr("P1"); + map(0x0a0004, 0x0a0005).portr("P2"); + map(0x0a0010, 0x0a0011).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0012, 0x0a0013).portr("DSW1"); + map(0x0a0018, 0x0a0019).portr("DSW3"); + map(0x0b0000, 0x0b03ff).bankrw("nvrambank"); + map(0x0b0400, 0x0b0400).w(this, FUNC(tmnt_state::cuebrick_nvbank_w)); + map(0x0c0000, 0x0c0003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0xff00); + map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); + map(0x140000, 0x140007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); + map(0x140400, 0x1407ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); +} + + +void tmnt_state::mia_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram(); /* main RAM */ + map(0x060000, 0x063fff).ram(); /* main RAM */ + map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0a0000, 0x0a0001).portr("COINS").w(this, FUNC(tmnt_state::tmnt_0a0000_w)); + map(0x0a0002, 0x0a0003).portr("P1"); + map(0x0a0004, 0x0a0005).portr("P2"); + map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0a0010, 0x0a0011).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0012, 0x0a0013).portr("DSW2"); + map(0x0a0018, 0x0a0019).portr("DSW3"); #if 0 - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(tmnt_priority_w) + map(0x0c0000, 0x0c0001).w(this, FUNC(tmnt_state::tmnt_priority_w)); #endif - AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) + map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); // AM_RANGE(0x10e800, 0x10e801) AM_WRITENOP ??? - AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff) - AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::tmnt_main_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x063fff) AM_RAM /* main RAM */ - AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w) - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P3") - AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2") - AM_RANGE(0x0a0014, 0x0a0015) AM_READ_PORT("P4") - AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(tmnt_priority_w) - AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) + map(0x140000, 0x140007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); + map(0x140400, 0x1407ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); +} + + +void tmnt_state::tmnt_main_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x063fff).ram(); /* main RAM */ + map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0a0000, 0x0a0001).portr("COINS").w(this, FUNC(tmnt_state::tmnt_0a0000_w)); + map(0x0a0002, 0x0a0003).portr("P1"); + map(0x0a0004, 0x0a0005).portr("P2"); + map(0x0a0006, 0x0a0007).portr("P3"); + map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0a0010, 0x0a0011).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0012, 0x0a0013).portr("DSW2"); + map(0x0a0014, 0x0a0015).portr("P4"); + map(0x0a0018, 0x0a0019).portr("DSW3"); + map(0x0c0000, 0x0c0001).w(this, FUNC(tmnt_state::tmnt_priority_w)); + map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); // AM_RANGE(0x10e800, 0x10e801) AM_WRITENOP ??? - AM_RANGE(0x140000, 0x140007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff) - AM_RANGE(0x140400, 0x1407ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::punkshot_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM /* main RAM */ - AM_RANGE(0x090000, 0x090fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("DSW1/DSW2") - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("COINS/DSW3") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P3/P4") - AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P1/P2") - AM_RANGE(0x0a0020, 0x0a0021) AM_WRITE(punkshot_0a0020_w) - AM_RANGE(0x0a0040, 0x0a0043) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x0a0060, 0x0a007f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x0a0080, 0x0a0081) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, punkshot_k052109_word_noA12_w) - AM_RANGE(0x110000, 0x110007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff) - AM_RANGE(0x110400, 0x1107ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff) - AM_RANGE(0xfffffc, 0xffffff) AM_READ(punkshot_kludge_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tmnt_state::lgtnfght_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x090000, 0x093fff) AM_RAM /*main RAM */ - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("DSW1") - AM_RANGE(0x0a0008, 0x0a0009) AM_READ_PORT("DSW2") - AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW3") - AM_RANGE(0x0a0018, 0x0a0019) AM_WRITE(lgtnfght_0a0018_w) - AM_RANGE(0x0a0020, 0x0a0023) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x0a0028, 0x0a0029) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0b0000, 0x0b3fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x0c0000, 0x0c001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w) - AM_RANGE(0x0e0000, 0x0e001f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x100000, 0x107fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) -ADDRESS_MAP_END + map(0x140000, 0x140007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); + map(0x140400, 0x1407ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); +} + + +void tmnt_state::punkshot_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); /* main RAM */ + map(0x090000, 0x090fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x0a0000, 0x0a0001).portr("DSW1/DSW2"); + map(0x0a0002, 0x0a0003).portr("COINS/DSW3"); + map(0x0a0004, 0x0a0005).portr("P3/P4"); + map(0x0a0006, 0x0a0007).portr("P1/P2"); + map(0x0a0020, 0x0a0021).w(this, FUNC(tmnt_state::punkshot_0a0020_w)); + map(0x0a0040, 0x0a0043).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x0a0060, 0x0a007f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x0a0080, 0x0a0081).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::punkshot_k052109_word_noA12_w)); + map(0x110000, 0x110007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); + map(0x110400, 0x1107ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); + map(0xfffffc, 0xffffff).r(this, FUNC(tmnt_state::punkshot_kludge_r)); +} + +void tmnt_state::lgtnfght_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x090000, 0x093fff).ram(); /*main RAM */ + map(0x0a0000, 0x0a0001).portr("COINS"); + map(0x0a0002, 0x0a0003).portr("P1"); + map(0x0a0004, 0x0a0005).portr("P2"); + map(0x0a0006, 0x0a0007).portr("DSW1"); + map(0x0a0008, 0x0a0009).portr("DSW2"); + map(0x0a0010, 0x0a0011).portr("DSW3"); + map(0x0a0018, 0x0a0019).w(this, FUNC(tmnt_state::lgtnfght_0a0018_w)); + map(0x0a0020, 0x0a0023).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x0a0028, 0x0a0029).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0b0000, 0x0b3fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); + map(0x0c0000, 0x0c001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w)); + map(0x0e0000, 0x0e001f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x100000, 0x107fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); +} WRITE16_MEMBER(tmnt_state::ssriders_soundkludge_w) { @@ -575,25 +580,26 @@ WRITE16_MEMBER(tmnt_state::ssriders_soundkludge_w) m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); } -ADDRESS_MAP_START(tmnt_state::blswhstl_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x180000, 0x183fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w) - AM_RANGE(0x204000, 0x207fff) AM_RAM /* main RAM */ - AM_RANGE(0x300000, 0x303fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w) - AM_RANGE(0x680000, 0x68001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w) - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2") - AM_RANGE(0x700004, 0x700005) AM_READ(blswhstl_coin_r) - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("EEPROM") - AM_RANGE(0x700200, 0x700201) AM_WRITE(blswhstl_eeprom_w) - AM_RANGE(0x700300, 0x700301) AM_WRITE(blswhstl_700300_w) - AM_RANGE(0x700400, 0x700401) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0x780600, 0x780603) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x780604, 0x780605) AM_WRITE(ssriders_soundkludge_w) - AM_RANGE(0x780700, 0x78071f) AM_DEVWRITE("k053251", k053251_device, lsb_w) -ADDRESS_MAP_END +void tmnt_state::blswhstl_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x180000, 0x183fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w)); + map(0x204000, 0x207fff).ram(); /* main RAM */ + map(0x300000, 0x303fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x50003f).rw(m_k054000, FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w)); + map(0x680000, 0x68001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w)); + map(0x700000, 0x700001).portr("P1"); + map(0x700002, 0x700003).portr("P2"); + map(0x700004, 0x700005).r(this, FUNC(tmnt_state::blswhstl_coin_r)); + map(0x700006, 0x700007).portr("EEPROM"); + map(0x700200, 0x700201).w(this, FUNC(tmnt_state::blswhstl_eeprom_w)); + map(0x700300, 0x700301).w(this, FUNC(tmnt_state::blswhstl_700300_w)); + map(0x700400, 0x700401).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0x780600, 0x780603).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x780604, 0x780605).w(this, FUNC(tmnt_state::ssriders_soundkludge_w)); + map(0x780700, 0x78071f).w(m_k053251, FUNC(k053251_device::lsb_w)); +} WRITE16_MEMBER(tmnt_state::k053251_glfgreat_w) { @@ -616,49 +622,51 @@ WRITE16_MEMBER(tmnt_state::k053251_glfgreat_w) } } -ADDRESS_MAP_START(tmnt_state::glfgreat_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */ - AM_RANGE(0x104000, 0x107fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x108000, 0x108fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) /* 053936? */ - AM_RANGE(0x110000, 0x11001f) AM_WRITE(k053244_word_noA1_w) /* duplicate! */ - AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k05324x_device, k053244_lsb_r, k053244_lsb_w) /* duplicate! */ - AM_RANGE(0x118000, 0x11801f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) - AM_RANGE(0x11c000, 0x11c01f) AM_DEVWRITE("k053251", k053251_device, msb_w) - AM_RANGE(0x120000, 0x120001) AM_READ_PORT("P1/P2") - AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P3/P4") - AM_RANGE(0x120004, 0x120005) AM_READ_PORT("COINS/DSW3") - AM_RANGE(0x120006, 0x120007) AM_READ_PORT("DSW1/DSW2") - AM_RANGE(0x121000, 0x121001) AM_READ(glfgreat_ball_r) /* returns the color of the center pixel of the roz layer */ - AM_RANGE(0x122000, 0x122001) AM_WRITE(glfgreat_122000_w) - AM_RANGE(0x124000, 0x124001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x125000, 0x125003) AM_DEVREAD8("k053260", k053260_device, main_read, 0xff00) AM_WRITE8(glfgreat_sound_w, 0xff00) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) - AM_RANGE(0x300000, 0x3fffff) AM_READ(glfgreat_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tmnt_state::prmrsocr_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */ - AM_RANGE(0x104000, 0x107fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x108000, 0x108fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x10c000, 0x10cfff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) - AM_RANGE(0x110000, 0x11001f) AM_WRITE(k053244_word_noA1_w) /* duplicate! */ - AM_RANGE(0x114000, 0x11401f) AM_DEVREADWRITE("k053245", k05324x_device, k053244_lsb_r, k053244_lsb_w) /* duplicate! */ - AM_RANGE(0x118000, 0x11801f) AM_DEVWRITE("k053936", k053936_device, ctrl_w) - AM_RANGE(0x11c000, 0x11c01f) AM_DEVWRITE("k053251", k053251_device, msb_w) - AM_RANGE(0x120000, 0x120001) AM_READ_PORT("P1/COINS") - AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P2/EEPROM") - AM_RANGE(0x12100c, 0x12100d) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x12100e, 0x12100f) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x121014, 0x121015) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x122000, 0x122001) AM_WRITE(prmrsocr_eeprom_w) /* EEPROM + video control */ - AM_RANGE(0x123000, 0x123001) AM_WRITE(prmrsocr_sound_irq_w) - AM_RANGE(0x200000, 0x207fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) - AM_RANGE(0x280000, 0x280001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x33ffff) AM_READ(prmrsocr_rom_r) -ADDRESS_MAP_END +void tmnt_state::glfgreat_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); /* main RAM */ + map(0x104000, 0x107fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); + map(0x108000, 0x108fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x10c000, 0x10cfff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); /* 053936? */ + map(0x110000, 0x11001f).w(this, FUNC(tmnt_state::k053244_word_noA1_w)); /* duplicate! */ + map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); /* duplicate! */ + map(0x118000, 0x11801f).w(m_k053936, FUNC(k053936_device::ctrl_w)); + map(0x11c000, 0x11c01f).w(m_k053251, FUNC(k053251_device::msb_w)); + map(0x120000, 0x120001).portr("P1/P2"); + map(0x120002, 0x120003).portr("P3/P4"); + map(0x120004, 0x120005).portr("COINS/DSW3"); + map(0x120006, 0x120007).portr("DSW1/DSW2"); + map(0x121000, 0x121001).r(this, FUNC(tmnt_state::glfgreat_ball_r)); /* returns the color of the center pixel of the roz layer */ + map(0x122000, 0x122001).w(this, FUNC(tmnt_state::glfgreat_122000_w)); + map(0x124000, 0x124001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x125000, 0x125003).r(m_k053260, FUNC(k053260_device::main_read)).umask16(0xff00).w(this, FUNC(tmnt_state::glfgreat_sound_w)).umask16(0xff00); + map(0x200000, 0x207fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); + map(0x300000, 0x3fffff).r(this, FUNC(tmnt_state::glfgreat_rom_r)); +} + +void tmnt_state::prmrsocr_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); /* main RAM */ + map(0x104000, 0x107fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); + map(0x108000, 0x108fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x10c000, 0x10cfff).rw(m_k053936, FUNC(k053936_device::linectrl_r), FUNC(k053936_device::linectrl_w)); + map(0x110000, 0x11001f).w(this, FUNC(tmnt_state::k053244_word_noA1_w)); /* duplicate! */ + map(0x114000, 0x11401f).rw(m_k053245, FUNC(k05324x_device::k053244_lsb_r), FUNC(k05324x_device::k053244_lsb_w)); /* duplicate! */ + map(0x118000, 0x11801f).w(m_k053936, FUNC(k053936_device::ctrl_w)); + map(0x11c000, 0x11c01f).w(m_k053251, FUNC(k053251_device::msb_w)); + map(0x120000, 0x120001).portr("P1/COINS"); + map(0x120002, 0x120003).portr("P2/EEPROM"); + map(0x12100d, 0x12100d).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x12100f, 0x12100f).w("soundlatch2", FUNC(generic_latch_8_device::write)); + map(0x121015, 0x121015).r("soundlatch3", FUNC(generic_latch_8_device::read)); + map(0x122000, 0x122001).w(this, FUNC(tmnt_state::prmrsocr_eeprom_w)); /* EEPROM + video control */ + map(0x123000, 0x123001).w(this, FUNC(tmnt_state::prmrsocr_sound_irq_w)); + map(0x200000, 0x207fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); + map(0x280000, 0x280001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300000, 0x33ffff).r(this, FUNC(tmnt_state::prmrsocr_rom_r)); +} #if 1 @@ -897,160 +905,171 @@ logerror("copy command %04x sprite %08x data %08x: %04x%04x %04x%04x modifiers } #endif -ADDRESS_MAP_START(tmnt_state::tmnt2_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_SHARE("tmnt2_rom") - AM_RANGE(0x104000, 0x107fff) AM_RAM AM_SHARE("sunset_104000") /* main RAM */ - AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x183fff) AM_RAM_WRITE(k053245_scattered_word_w) AM_SHARE("spriteram") // k053245_scattered_word_r - AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P1") - AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P2") - AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P3") - AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("P4") - AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("COINS") - AM_RANGE(0x1c0102, 0x1c0103) AM_READ(ssriders_eeprom_r) - AM_RANGE(0x1c0200, 0x1c0201) AM_WRITE(ssriders_eeprom_w) /* EEPROM and gfx control */ - AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w) - AM_RANGE(0x1c0400, 0x1c0401) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0x1c0500, 0x1c057f) AM_RAM /* TMNT2 only (1J) unknown, mostly MCU blit offsets */ +void tmnt_state::tmnt2_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom().share("tmnt2_rom"); + map(0x104000, 0x107fff).ram().share("sunset_104000"); /* main RAM */ + map(0x140000, 0x140fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x183fff).ram().w(this, FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); // k053245_scattered_word_r + map(0x1c0000, 0x1c0001).portr("P1"); + map(0x1c0002, 0x1c0003).portr("P2"); + map(0x1c0004, 0x1c0005).portr("P3"); + map(0x1c0006, 0x1c0007).portr("P4"); + map(0x1c0100, 0x1c0101).portr("COINS"); + map(0x1c0102, 0x1c0103).r(this, FUNC(tmnt_state::ssriders_eeprom_r)); + map(0x1c0200, 0x1c0201).w(this, FUNC(tmnt_state::ssriders_eeprom_w)); /* EEPROM and gfx control */ + map(0x1c0300, 0x1c0301).w(this, FUNC(tmnt_state::ssriders_1c0300_w)); + map(0x1c0400, 0x1c0401).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0x1c0500, 0x1c057f).ram(); /* TMNT2 only (1J) unknown, mostly MCU blit offsets */ // AM_RANGE(0x1c0800, 0x1c0801) AM_READ(ssriders_protection_r) /* protection device */ - AM_RANGE(0x1c0800, 0x1c081f) AM_WRITE(tmnt2_1c0800_w) AM_SHARE("tmnt2_1c0800") /* protection device */ - AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w) - AM_RANGE(0x5c0600, 0x5c0603) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w) - AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tmnt_state::ssriders_main_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */ - AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x183fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P1") - AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P2") - AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P3") - AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("P4") - AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("COINS") - AM_RANGE(0x1c0102, 0x1c0103) AM_READ(ssriders_eeprom_r) - AM_RANGE(0x1c0200, 0x1c0201) AM_WRITE(ssriders_eeprom_w) /* EEPROM and gfx control */ - AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w) - AM_RANGE(0x1c0400, 0x1c0401) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) - AM_RANGE(0x1c0500, 0x1c057f) AM_RAM /* TMNT2 only (1J) unknown */ - AM_RANGE(0x1c0800, 0x1c0801) AM_READ(ssriders_protection_r) - AM_RANGE(0x1c0800, 0x1c0803) AM_WRITE(ssriders_protection_w) - AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w) - AM_RANGE(0x5c0600, 0x5c0603) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x5c0604, 0x5c0605) AM_WRITE(ssriders_soundkludge_w) - AM_RANGE(0x5c0700, 0x5c071f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tmnt_state::sunsetbl_main_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM - AM_RANGE(0x104000, 0x107fff) AM_RAM /* main RAM */ - AM_RANGE(0x14c000, 0x14cfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x14e700, 0x14e71f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x180000, 0x183fff) AM_READWRITE(k053245_scattered_word_r, k053245_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x184000, 0x18ffff) AM_RAM - AM_RANGE(0x1c0300, 0x1c0301) AM_WRITE(ssriders_1c0300_w) - AM_RANGE(0x1c0400, 0x1c0401) AM_WRITENOP - AM_RANGE(0x5a0000, 0x5a001f) AM_READWRITE(k053244_word_noA1_r, k053244_word_noA1_w) - AM_RANGE(0x600000, 0x603fff) AM_DEVREADWRITE("k052109", k052109_device, word_r, word_w) - AM_RANGE(0x604020, 0x60402f) AM_WRITENOP /* written every frame */ - AM_RANGE(0x604200, 0x604201) AM_WRITENOP /* watchdog */ - AM_RANGE(0x6119e2, 0x6119e3) AM_WRITENOP /* written a lot in some test menus (PC=18204) */ - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("P1") - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P2") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("P3") - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("P4") - AM_RANGE(0xc00200, 0xc00201) AM_WRITE(ssriders_eeprom_w) /* EEPROM and gfx control */ - AM_RANGE(0xc00404, 0xc00405) AM_READ_PORT("COINS") - AM_RANGE(0xc00406, 0xc00407) AM_READ(sunsetbl_eeprom_r) - AM_RANGE(0xc00600, 0xc00601) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x75d288, 0x75d289) AM_READNOP // read repeatedly in some test menus (PC=181f2) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::thndrx2_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* main RAM */ - AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x300000, 0x30001f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("k053260", k053260_device, main_read, main_write, 0x00ff) - AM_RANGE(0x500000, 0x50003f) AM_DEVREADWRITE("k054000", k054000_device, lsb_r, lsb_w) - AM_RANGE(0x500100, 0x500101) AM_WRITE(thndrx2_eeprom_w) - AM_RANGE(0x500200, 0x500201) AM_READ_PORT("P1/COINS") - AM_RANGE(0x500202, 0x500203) AM_READ(thndrx2_eeprom_r) - AM_RANGE(0x500300, 0x500301) AM_WRITENOP /* watchdog reset? irq enable? */ - AM_RANGE(0x600000, 0x607fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) - AM_RANGE(0x700000, 0x700007) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0xffff) - AM_RANGE(0x700400, 0x7007ff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0xffff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::mia_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::tmnt_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w) /* title music & UPD7759C reset */ - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(tmnt_upd_start_w) - AM_RANGE(0xf000, 0xf000) AM_READ(tmnt_upd_busy_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::punkshot_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) - AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::lgtnfght_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xc02f) AM_DEVREADWRITE("k053260", k053260_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::glfgreat_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf82f) AM_DEVREADWRITE("k053260", k053260_device, read, write) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::ssriders_audio_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xfa00, 0xfa2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tmnt_state::thndrx2_audio_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x0010) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w) - AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) -ADDRESS_MAP_END + map(0x1c0800, 0x1c081f).w(this, FUNC(tmnt_state::tmnt2_1c0800_w)).share("tmnt2_1c0800"); /* protection device */ + map(0x5a0000, 0x5a001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w)); + map(0x5c0600, 0x5c0603).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x5c0604, 0x5c0605).w(this, FUNC(tmnt_state::ssriders_soundkludge_w)); + map(0x5c0700, 0x5c071f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x600000, 0x603fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w)); +} + +void tmnt_state::ssriders_main_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x104000, 0x107fff).ram(); /* main RAM */ + map(0x140000, 0x140fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x183fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); + map(0x1c0000, 0x1c0001).portr("P1"); + map(0x1c0002, 0x1c0003).portr("P2"); + map(0x1c0004, 0x1c0005).portr("P3"); + map(0x1c0006, 0x1c0007).portr("P4"); + map(0x1c0100, 0x1c0101).portr("COINS"); + map(0x1c0102, 0x1c0103).r(this, FUNC(tmnt_state::ssriders_eeprom_r)); + map(0x1c0200, 0x1c0201).w(this, FUNC(tmnt_state::ssriders_eeprom_w)); /* EEPROM and gfx control */ + map(0x1c0300, 0x1c0301).w(this, FUNC(tmnt_state::ssriders_1c0300_w)); + map(0x1c0400, 0x1c0401).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); + map(0x1c0500, 0x1c057f).ram(); /* TMNT2 only (1J) unknown */ + map(0x1c0800, 0x1c0801).r(this, FUNC(tmnt_state::ssriders_protection_r)); + map(0x1c0800, 0x1c0803).w(this, FUNC(tmnt_state::ssriders_protection_w)); + map(0x5a0000, 0x5a001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w)); + map(0x5c0600, 0x5c0603).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x5c0604, 0x5c0605).w(this, FUNC(tmnt_state::ssriders_soundkludge_w)); + map(0x5c0700, 0x5c071f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x600000, 0x603fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w)); +} + +void tmnt_state::sunsetbl_main_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); + map(0x104000, 0x107fff).ram(); /* main RAM */ + map(0x14c000, 0x14cfff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x14e700, 0x14e71f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x180000, 0x183fff).rw(this, FUNC(tmnt_state::k053245_scattered_word_r), FUNC(tmnt_state::k053245_scattered_word_w)).share("spriteram"); + map(0x184000, 0x18ffff).ram(); + map(0x1c0300, 0x1c0301).w(this, FUNC(tmnt_state::ssriders_1c0300_w)); + map(0x1c0400, 0x1c0401).nopw(); + map(0x5a0000, 0x5a001f).rw(this, FUNC(tmnt_state::k053244_word_noA1_r), FUNC(tmnt_state::k053244_word_noA1_w)); + map(0x600000, 0x603fff).rw(m_k052109, FUNC(k052109_device::word_r), FUNC(k052109_device::word_w)); + map(0x604020, 0x60402f).nopw(); /* written every frame */ + map(0x604200, 0x604201).nopw(); /* watchdog */ + map(0x6119e2, 0x6119e3).nopw(); /* written a lot in some test menus (PC=18204) */ + map(0xc00000, 0xc00001).portr("P1"); + map(0xc00002, 0xc00003).portr("P2"); + map(0xc00004, 0xc00005).portr("P3"); + map(0xc00006, 0xc00007).portr("P4"); + map(0xc00200, 0xc00201).w(this, FUNC(tmnt_state::ssriders_eeprom_w)); /* EEPROM and gfx control */ + map(0xc00404, 0xc00405).portr("COINS"); + map(0xc00406, 0xc00407).r(this, FUNC(tmnt_state::sunsetbl_eeprom_r)); + map(0xc00601, 0xc00601).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x75d288, 0x75d289).nopr(); // read repeatedly in some test menus (PC=181f2) +} + + +void tmnt_state::thndrx2_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); /* main RAM */ + map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x300000, 0x30001f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x400000, 0x400003).rw(m_k053260, FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)).umask16(0x00ff); + map(0x500000, 0x50003f).rw(m_k054000, FUNC(k054000_device::lsb_r), FUNC(k054000_device::lsb_w)); + map(0x500100, 0x500101).w(this, FUNC(tmnt_state::thndrx2_eeprom_w)); + map(0x500200, 0x500201).portr("P1/COINS"); + map(0x500202, 0x500203).r(this, FUNC(tmnt_state::thndrx2_eeprom_r)); + map(0x500300, 0x500301).nopw(); /* watchdog reset? irq enable? */ + map(0x600000, 0x607fff).rw(this, FUNC(tmnt_state::k052109_word_noA12_r), FUNC(tmnt_state::k052109_word_noA12_w)); + map(0x700000, 0x700007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); + map(0x700400, 0x7007ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); +} + + +void tmnt_state::mia_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); +} + + +void tmnt_state::tmnt_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).rw(this, FUNC(tmnt_state::tmnt_sres_r), FUNC(tmnt_state::tmnt_sres_w)); /* title music & UPD7759C reset */ + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd000, 0xd000).w(m_upd7759, FUNC(upd7759_device::port_w)); + map(0xe000, 0xe000).w(this, FUNC(tmnt_state::tmnt_upd_start_w)); + map(0xf000, 0xf000).r(this, FUNC(tmnt_state::tmnt_upd_busy_r)); +} + + +void tmnt_state::punkshot_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfa00, 0xfa00).w(this, FUNC(tmnt_state::sound_arm_nmi_w)); + map(0xfc00, 0xfc2f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write)); +} + + +void tmnt_state::lgtnfght_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc000, 0xc02f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write)); +} + + +void tmnt_state::glfgreat_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf82f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0xfa00, 0xfa00).w(this, FUNC(tmnt_state::sound_arm_nmi_w)); +} + + +void tmnt_state::ssriders_audio_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfa00, 0xfa2f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write)); + map(0xfc00, 0xfc00).w(this, FUNC(tmnt_state::sound_arm_nmi_w)); +} + + +void tmnt_state::thndrx2_audio_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf801).mirror(0x0010).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfa00, 0xfa00).w(this, FUNC(tmnt_state::sound_arm_nmi_w)); + map(0xfc00, 0xfc2f).rw(m_k053260, FUNC(k053260_device::read), FUNC(k053260_device::write)); +} READ8_MEMBER(tmnt_state::k054539_ctrl_r) @@ -1063,17 +1082,18 @@ WRITE8_MEMBER(tmnt_state::k054539_ctrl_w) m_k054539->write(space, 0x200 + offset, data, 0xff); } -ADDRESS_MAP_START(tmnt_state::prmrsocr_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xe100, 0xe12f) AM_READWRITE(k054539_ctrl_r, k054539_ctrl_w) - AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0xf800, 0xf800) AM_WRITE(prmrsocr_audio_bankswitch_w) -ADDRESS_MAP_END +void tmnt_state::prmrsocr_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe0ff).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe100, 0xe12f).rw(this, FUNC(tmnt_state::k054539_ctrl_r), FUNC(tmnt_state::k054539_ctrl_w)); + map(0xf000, 0xf000).w("soundlatch3", FUNC(generic_latch_8_device::write)); + map(0xf002, 0xf002).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xf003, 0xf003).r("soundlatch2", FUNC(generic_latch_8_device::read)); + map(0xf800, 0xf800).w(this, FUNC(tmnt_state::prmrsocr_audio_bankswitch_w)); +} static INPUT_PORTS_START( cuebrick ) diff --git a/src/mame/drivers/tmspoker.cpp b/src/mame/drivers/tmspoker.cpp index 1adcc453648..6aeb15315d2 100644 --- a/src/mame/drivers/tmspoker.cpp +++ b/src/mame/drivers/tmspoker.cpp @@ -326,15 +326,16 @@ void tmspoker_state::machine_reset() * Memory Map Information * *************************/ //59a -ADDRESS_MAP_START(tmspoker_state::tmspoker_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x0fff) AM_ROMBANK("bank1") - AM_RANGE(0x2800, 0x2800) AM_READNOP AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2801, 0x2801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(tmspoker_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x3fff) AM_RAM //NVRAM? - AM_RANGE(0x2000, 0x20ff) AM_RAM //color RAM? -ADDRESS_MAP_END +void tmspoker_state::tmspoker_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x0fff).bankr("bank1"); + map(0x2800, 0x2800).nopr().w("crtc", FUNC(mc6845_device::address_w)); + map(0x2801, 0x2801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x3000, 0x33ff).ram().w(this, FUNC(tmspoker_state::tmspoker_videoram_w)).share("videoram"); + map(0x3800, 0x3fff).ram(); //NVRAM? + map(0x2000, 0x20ff).ram(); //color RAM? +} READ8_MEMBER(tmspoker_state::unk_r) @@ -343,9 +344,10 @@ READ8_MEMBER(tmspoker_state::unk_r) return 0;//0xff;//mame_rand(machine); } -ADDRESS_MAP_START(tmspoker_state::tmspoker_cru_map) - AM_RANGE(0x0000, 0x07ff) AM_READ(unk_r) -ADDRESS_MAP_END +void tmspoker_state::tmspoker_cru_map(address_map &map) +{ + map(0x0000, 0x07ff).r(this, FUNC(tmspoker_state::unk_r)); +} /* I/O byte R/W diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp index 17b10691b3d..cc6b1ca8099 100644 --- a/src/mame/drivers/tnzs.cpp +++ b/src/mame/drivers/tnzs.cpp @@ -720,155 +720,172 @@ WRITE8_MEMBER(kageki_state::csport_w) } } -ADDRESS_MAP_START(tnzs_base_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf000, 0xf2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */ - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */ - AM_RANGE(0xf600, 0xf600) AM_READNOP AM_WRITE(ramrom_bankswitch_w) - AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(extrmatn_state::prompal_main_map) - AM_IMPORT_FROM(main_map) +void tnzs_base_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).m(m_mainbank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xcfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0xd000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); + map(0xe000, 0xefff).ram().share("share1"); + map(0xf000, 0xf2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xf300, 0xf303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */ + map(0xf400, 0xf400).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */ + map(0xf600, 0xf600).nopr().w(this, FUNC(tnzs_base_state::ramrom_bankswitch_w)); + map(0xf800, 0xfbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void extrmatn_state::prompal_main_map(address_map &map) +{ + main_map(map); /* arknoid2, extrmatn, plumppop and drtoppel have PROMs instead of RAM */ /* drtoppel writes here anyway! (maybe leftover from tests during development) */ - AM_RANGE(0xf800, 0xfbff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(tnzsb_state::tnzsb_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf000, 0xf2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */ - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */ - AM_RANGE(0xf600, 0xf600) AM_WRITE(ramrom_bankswitch_w) + map(0xf800, 0xfbff).nopw(); +} + +void tnzsb_state::tnzsb_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).m(m_mainbank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xcfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0xd000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); + map(0xe000, 0xefff).ram().share("share1"); + map(0xf000, 0xf2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xf300, 0xf303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */ + map(0xf400, 0xf400).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */ + map(0xf600, 0xf600).w(this, FUNC(tnzsb_state::ramrom_bankswitch_w)); /* kabukiz still writes here but it's not used (it's paletteram in type1 map) */ - AM_RANGE(0xf800, 0xfbff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(tnzs_base_state::base_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank") - AM_RANGE(0xa000, 0xa000) AM_WRITE(bankswitch1_w) - AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tnzs_mcu_state::tnzs_sub_map) - AM_IMPORT_FROM(base_sub_map) - AM_RANGE(0xc000, 0xc001) AM_READWRITE(mcu_r, mcu_w) /* not present in insectx */ - AM_RANGE(0xa000, 0xa000) AM_WRITE(bankswitch1_w) - AM_RANGE(0xf000, 0xf003) AM_READ(analog_r) /* paddles in arkanoid2/plumppop. The ports are */ + map(0xf800, 0xfbff).nopw(); +} + +void tnzs_base_state::base_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("subbank"); + map(0xa000, 0xa000).w(this, FUNC(tnzs_base_state::bankswitch1_w)); + map(0xb000, 0xb001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().share("share1"); +} + +void tnzs_mcu_state::tnzs_sub_map(address_map &map) +{ + base_sub_map(map); + map(0xc000, 0xc001).rw(this, FUNC(tnzs_mcu_state::mcu_r), FUNC(tnzs_mcu_state::mcu_w)); /* not present in insectx */ + map(0xa000, 0xa000).w(this, FUNC(tnzs_mcu_state::bankswitch1_w)); + map(0xf000, 0xf003).r(this, FUNC(tnzs_mcu_state::analog_r)); /* paddles in arkanoid2/plumppop. The ports are */ /* read but not used by the other games, and are not read at */ /* all by insectx. */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(arknoid2_state::arknoid2_sub_map) - AM_IMPORT_FROM(tnzs_sub_map) - AM_RANGE(0xc000, 0xc001) AM_READWRITE(mcu_r, mcu_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kageki_state::kageki_sub_map) - AM_IMPORT_FROM(base_sub_map) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(insectx_state::insectx_sub_map) - AM_IMPORT_FROM(base_sub_map) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") -ADDRESS_MAP_END +} + +void arknoid2_state::arknoid2_sub_map(address_map &map) +{ + tnzs_sub_map(map); + map(0xc000, 0xc001).rw(this, FUNC(arknoid2_state::mcu_r), FUNC(arknoid2_state::mcu_w)); +} + +void kageki_state::kageki_sub_map(address_map &map) +{ + base_sub_map(map); + map(0xc000, 0xc000).portr("IN0"); + map(0xc001, 0xc001).portr("IN1"); + map(0xc002, 0xc002).portr("IN2"); +} + +void insectx_state::insectx_sub_map(address_map &map) +{ + base_sub_map(map); + map(0xc000, 0xc000).portr("IN0"); + map(0xc001, 0xc001).portr("IN1"); + map(0xc002, 0xc002).portr("IN2"); +} /* the later board is different, it has a third CPU (and of course no mcu) */ -ADDRESS_MAP_START(tnzsb_state::tnzsb_base_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank") - AM_RANGE(0xa000, 0xa000) AM_WRITE(bankswitch1_w) - AM_RANGE(0xb002, 0xb002) AM_READ_PORT("DSWA") - AM_RANGE(0xb003, 0xb003) AM_READ_PORT("DSWB") - AM_RANGE(0xb004, 0xb004) AM_WRITE(sound_command_w) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tnzsb_state::tnzsb_sub_map) - AM_IMPORT_FROM(tnzsb_base_sub_map) - AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kabukiz_state::kabukiz_sub_map) - AM_IMPORT_FROM(tnzsb_base_sub_map) - AM_RANGE(0xf800, 0xfbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tnzsb_state::tnzsb_cpu2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kabukiz_state::kabukiz_cpu2_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tnzsb_state::tnzsb_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(jpopnics_state::jpopnics_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xcfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodelow_r8, spritecodelow_w8) - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") /* WORK RAM (shared by the 2 z80's) */ - AM_RANGE(0xf000, 0xf2ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r8, spriteylow_w8) - AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_DEVWRITE("spritegen", seta001_device, spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */ - AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("spritegen", seta001_device, spritebgflag_w8) /* enable / disable background transparency */ - AM_RANGE(0xf600, 0xf600) AM_READNOP AM_WRITE(ramrom_bankswitch_w) - AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(jpopnics_state::jpopnics_sub_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank") - - AM_RANGE(0xa000, 0xa000) AM_WRITE(subbankswitch_w) - AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN1") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN2") - AM_RANGE(0xc600, 0xc600) AM_READ_PORT("DSWA") - AM_RANGE(0xc601, 0xc601) AM_READ_PORT("DSWB") - - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1") - - AM_RANGE(0xf000, 0xf003) AM_DEVREAD("upd4701", upd4701_device, read_xy) -ADDRESS_MAP_END +void tnzsb_state::tnzsb_base_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("subbank"); + map(0xa000, 0xa000).w(this, FUNC(tnzsb_state::bankswitch1_w)); + map(0xb002, 0xb002).portr("DSWA"); + map(0xb003, 0xb003).portr("DSWB"); + map(0xb004, 0xb004).w(this, FUNC(tnzsb_state::sound_command_w)); + map(0xc000, 0xc000).portr("IN0"); + map(0xc001, 0xc001).portr("IN1"); + map(0xc002, 0xc002).portr("IN2"); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().share("share1"); +} + +void tnzsb_state::tnzsb_sub_map(address_map &map) +{ + tnzsb_base_sub_map(map); + map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void kabukiz_state::kabukiz_sub_map(address_map &map) +{ + tnzsb_base_sub_map(map); + map(0xf800, 0xfbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void tnzsb_state::tnzsb_cpu2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xdfff).ram(); +} + +void kabukiz_state::kabukiz_cpu2_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("audiobank"); + map(0xe000, 0xffff).ram(); +} + +void tnzsb_state::tnzsb_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x02, 0x02).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void jpopnics_state::jpopnics_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).m(m_mainbank, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xcfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodelow_r8), FUNC(seta001_device::spritecodelow_w8)); + map(0xd000, 0xdfff).ram().rw(m_seta001, FUNC(seta001_device::spritecodehigh_r8), FUNC(seta001_device::spritecodehigh_w8)); + map(0xe000, 0xefff).ram().share("share1"); /* WORK RAM (shared by the 2 z80's) */ + map(0xf000, 0xf2ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r8), FUNC(seta001_device::spriteylow_w8)); + map(0xf300, 0xf303).mirror(0xfc).w(m_seta001, FUNC(seta001_device::spritectrl_w8)); /* control registers (0x80 mirror used by Arkanoid 2) */ + map(0xf400, 0xf400).w(m_seta001, FUNC(seta001_device::spritebgflag_w8)); /* enable / disable background transparency */ + map(0xf600, 0xf600).nopr().w(this, FUNC(jpopnics_state::ramrom_bankswitch_w)); + map(0xf800, 0xffff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void jpopnics_state::jpopnics_sub_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).bankr("subbank"); + + map(0xa000, 0xa000).w(this, FUNC(jpopnics_state::subbankswitch_w)); + map(0xb000, 0xb001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc000, 0xc000).portr("IN1"); + map(0xc001, 0xc001).portr("IN2"); + map(0xc600, 0xc600).portr("DSWA"); + map(0xc601, 0xc601).portr("DSWB"); + + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().share("share1"); + + map(0xf000, 0xf003).r(m_upd4701, FUNC(upd4701_device::read_xy)); +} /* RAM/ROM bank that maps at 0x8000-0xbfff on maincpu */ -ADDRESS_MAP_START(tnzs_base_state::mainbank_map) - AM_RANGE(0x00000, 0x07fff) AM_RAM // instead of the first two banks of ROM being repeated redundantly the hardware maps RAM here - AM_RANGE(0x08000, 0x1ffff) AM_ROM AM_REGION(":maincpu", 0x8000) -ADDRESS_MAP_END +void tnzs_base_state::mainbank_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); // instead of the first two banks of ROM being repeated redundantly the hardware maps RAM here + map(0x08000, 0x1ffff).rom().region(":maincpu", 0x8000); +} MACHINE_CONFIG_START(tnzs_base_state::tnzs_mainbank) MCFG_DEVICE_ADD("mainbank", ADDRESS_MAP_BANK, 0) diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp index 4b0f58ab831..ffe0db02351 100644 --- a/src/mame/drivers/toaplan1.cpp +++ b/src/mame/drivers/toaplan1.cpp @@ -619,349 +619,369 @@ Stephh's and AWJ's notes (based on the games M68000 and Z80 code and some tests) /***************************** 68000 Memory Map *****************************/ -ADDRESS_MAP_START(toaplan1_rallybik_state::rallybik_main_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x100000, 0x100001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x100004, 0x100007) AM_READWRITE(rallybik_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x100010, 0x10001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x140000, 0x140001) AM_READ_PORT("VBLANK") +void toaplan1_rallybik_state::rallybik_main_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x07ffff).rom(); + map(0x080000, 0x083fff).ram(); + map(0x0c0000, 0x0c0fff).ram().share("spriteram"); + map(0x100000, 0x100001).w(this, FUNC(toaplan1_rallybik_state::toaplan1_bcu_flipscreen_w)); + map(0x100002, 0x100003).rw(this, FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram_offs_w)); + map(0x100004, 0x100007).rw(this, FUNC(toaplan1_rallybik_state::rallybik_tileram16_r), FUNC(toaplan1_rallybik_state::toaplan1_tileram16_w)); + map(0x100010, 0x10001f).rw(this, FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_r), FUNC(toaplan1_rallybik_state::toaplan1_scroll_regs_w)); + map(0x140000, 0x140001).portr("VBLANK"); // AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x140002, 0x140003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x140008, 0x14000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x144000, 0x1447ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x146000, 0x1467ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x180000, 0x180fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x1c0000, 0x1c0003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x1c8000, 0x1c8001) AM_WRITE(toaplan1_reset_sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::truxton_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0x0c0002, 0x0c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x0c0004, 0x0c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x0c0006, 0x0c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) - AM_RANGE(0x100000, 0x100001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x100004, 0x100007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x100010, 0x10001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x140000, 0x140001) AM_READ_PORT("VBLANK") + map(0x140002, 0x140003).w(this, FUNC(toaplan1_rallybik_state::toaplan1_intenable_w)); + map(0x140008, 0x14000f).w(this, FUNC(toaplan1_rallybik_state::toaplan1_bcu_control_w)); + map(0x144000, 0x1447ff).ram().w(this, FUNC(toaplan1_rallybik_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x146000, 0x1467ff).ram().w(this, FUNC(toaplan1_rallybik_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x180000, 0x180fff).rw(this, FUNC(toaplan1_rallybik_state::toaplan1_shared_r), FUNC(toaplan1_rallybik_state::toaplan1_shared_w)); + map(0x1c0000, 0x1c0003).w(this, FUNC(toaplan1_rallybik_state::toaplan1_tile_offsets_w)); + map(0x1c8000, 0x1c8001).w(this, FUNC(toaplan1_rallybik_state::toaplan1_reset_sound_w)); +} + +void toaplan1_state::truxton_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x083fff).ram(); + map(0x0c0000, 0x0c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0x0c0002, 0x0c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x0c0004, 0x0c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x0c0006, 0x0c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0x100000, 0x100001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x100002, 0x100003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x100004, 0x100007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x100010, 0x10001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x140000, 0x140001).portr("VBLANK"); // AM_RANGE(0x140000, 0x140001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x140002, 0x140003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x140008, 0x14000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x144000, 0x1447ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x146000, 0x1467ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x180000, 0x180fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x1c0000, 0x1c0003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x1c0006, 0x1c0007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(toaplan1_reset_sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::hellfire_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x047fff) AM_RAM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("VBLANK") + map(0x140002, 0x140003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x140008, 0x14000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x144000, 0x1447ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x146000, 0x1467ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x180000, 0x180fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); + map(0x1c0000, 0x1c0003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x1c0006, 0x1c0007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x1d0000, 0x1d0001).w(this, FUNC(toaplan1_state::toaplan1_reset_sound_w)); +} + +void toaplan1_state::hellfire_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x047fff).ram(); + map(0x080000, 0x080001).portr("VBLANK"); // AM_RANGE(0x080000, 0x080001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x080002, 0x080003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x080008, 0x08000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x084000, 0x0847ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x086000, 0x0867ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x0c0000, 0x0c0fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x100000, 0x100001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x100004, 0x100007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x100010, 0x10001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x140000, 0x140001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0x140002, 0x140003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x140004, 0x140005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x140006, 0x140007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) - AM_RANGE(0x180000, 0x180003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x180006, 0x180007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0x180008, 0x180009) AM_WRITE(toaplan1_reset_sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::zerowing_main_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x0c0006, 0x0c0007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK") + map(0x080002, 0x080003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x080008, 0x08000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x084000, 0x0847ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x086000, 0x0867ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x0c0000, 0x0c0fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); + map(0x100000, 0x100001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x100002, 0x100003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x100004, 0x100007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x100010, 0x10001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x140000, 0x140001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0x140002, 0x140003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x140004, 0x140005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x140006, 0x140007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0x180000, 0x180003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x180006, 0x180007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x180008, 0x180009).w(this, FUNC(toaplan1_state::toaplan1_reset_sound_w)); +} + +void toaplan1_state::zerowing_main_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x07ffff).rom(); + map(0x080000, 0x087fff).ram(); + map(0x0c0000, 0x0c0003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x0c0006, 0x0c0007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x400000, 0x400001).portr("VBLANK"); // AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x440000, 0x440fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x480000, 0x480001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x480002, 0x480003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x480004, 0x480007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x480010, 0x48001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x4c0000, 0x4c0001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0x4c0002, 0x4c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x4c0004, 0x4c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x4c0006, 0x4c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::demonwld_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK") + map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x440000, 0x440fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); + map(0x480000, 0x480001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x480002, 0x480003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x480004, 0x480007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x480010, 0x48001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x4c0000, 0x4c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0x4c0002, 0x4c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x4c0004, 0x4c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x4c0006, 0x4c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); +} + +void toaplan1_state::demonwld_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x400001).portr("VBLANK"); // AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x600000, 0x600fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x800000, 0x800001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x800002, 0x800003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x800004, 0x800007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x800010, 0x80001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0xa00000, 0xa00001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0xa00002, 0xa00003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0xa00004, 0xa00005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0xa00006, 0xa00007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM - AM_RANGE(0xe00000, 0xe00003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0xe00006, 0xe00007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0xe00008, 0xe00009) AM_WRITE(toaplan1_reset_sound_w) - AM_RANGE(0xe0000a, 0xe0000b) AM_WRITE(demonwld_dsp_ctrl_w) /* DSP Comms control */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::samesame_main_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x040000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x080006, 0x080007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM /* Frame done at $c1ada */ - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("VBLANK") + map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x600000, 0x600fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); + map(0x800000, 0x800001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x800002, 0x800003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x800004, 0x800007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x800010, 0x80001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0xa00000, 0xa00001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0xa00002, 0xa00003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0xa00004, 0xa00005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0xa00006, 0xa00007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0xc00000, 0xc03fff).ram(); + map(0xe00000, 0xe00003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0xe00006, 0xe00007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0xe00008, 0xe00009).w(this, FUNC(toaplan1_state::toaplan1_reset_sound_w)); + map(0xe0000a, 0xe0000b).w(this, FUNC(toaplan1_state::demonwld_dsp_ctrl_w)); /* DSP Comms control */ +} + +void toaplan1_state::samesame_main_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x040000, 0x07ffff).rom(); + map(0x080000, 0x080003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x080006, 0x080007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x0c0000, 0x0c3fff).ram(); /* Frame done at $c1ada */ + map(0x100000, 0x100001).portr("VBLANK"); // AM_RANGE(0x100000, 0x100001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x100002, 0x100003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x100008, 0x10000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x104000, 0x1047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x106000, 0x1067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x140000, 0x140001) AM_READ_PORT("P1") - AM_RANGE(0x140002, 0x140003) AM_READ_PORT("P2") - AM_RANGE(0x140004, 0x140005) AM_READ_PORT("DSWA") - AM_RANGE(0x140006, 0x140007) AM_READ_PORT("DSWB") - AM_RANGE(0x140008, 0x140009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x14000a, 0x14000b) AM_READ(samesame_port_6_word_r) /* Territory, and MCU ready */ - AM_RANGE(0x14000c, 0x14000d) AM_WRITE(samesame_coin_w) /* Coin counter/lockout */ - AM_RANGE(0x14000e, 0x14000f) AM_WRITE(samesame_mcu_w) /* Commands sent to HD647180 */ - AM_RANGE(0x180000, 0x180001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x180002, 0x180003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x180004, 0x180007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x180010, 0x18001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x1c0000, 0x1c0001) AM_READ(toaplan1_frame_done_r) + map(0x100002, 0x100003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x100008, 0x10000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x104000, 0x1047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x106000, 0x1067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x140000, 0x140001).portr("P1"); + map(0x140002, 0x140003).portr("P2"); + map(0x140004, 0x140005).portr("DSWA"); + map(0x140006, 0x140007).portr("DSWB"); + map(0x140008, 0x140009).portr("SYSTEM"); + map(0x14000a, 0x14000b).r(this, FUNC(toaplan1_state::samesame_port_6_word_r)); /* Territory, and MCU ready */ + map(0x14000c, 0x14000d).w(this, FUNC(toaplan1_state::samesame_coin_w)); /* Coin counter/lockout */ + map(0x14000e, 0x14000f).w(this, FUNC(toaplan1_state::samesame_mcu_w)); /* Commands sent to HD647180 */ + map(0x180000, 0x180001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x180002, 0x180003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x180004, 0x180007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x180010, 0x18001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x1c0000, 0x1c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); // AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(?? disable sprite refresh ??) - AM_RANGE(0x1c0002, 0x1c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x1c0004, 0x1c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x1c0006, 0x1c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::outzone_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0x100002, 0x100003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x100004, 0x100005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x100006, 0x100007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) - AM_RANGE(0x140000, 0x140fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x200000, 0x200001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x200002, 0x200003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x200004, 0x200007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x200010, 0x20001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x240000, 0x243fff) AM_RAM - AM_RANGE(0x300000, 0x300001) AM_READ_PORT("VBLANK") + map(0x1c0002, 0x1c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x1c0004, 0x1c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x1c0006, 0x1c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); +} + +void toaplan1_state::outzone_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0x100002, 0x100003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x100004, 0x100005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x100006, 0x100007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0x140000, 0x140fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); + map(0x200000, 0x200001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x200002, 0x200003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x200004, 0x200007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x200010, 0x20001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x240000, 0x243fff).ram(); + map(0x300000, 0x300001).portr("VBLANK"); // AM_RANGE(0x300000, 0x300001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x300002, 0x300003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x300008, 0x30000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x304000, 0x3047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x306000, 0x3067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x340000, 0x340003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x340006, 0x340007) AM_WRITE(toaplan1_fcu_flipscreen_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::outzonecv_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM + map(0x300002, 0x300003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x300008, 0x30000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x304000, 0x3047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x306000, 0x3067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x340000, 0x340003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x340006, 0x340007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); +} + +void toaplan1_state::outzonecv_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // AM_RANGE(0x040000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x087fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x0c0006, 0x0c0007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK") + map(0x080000, 0x087fff).ram(); + map(0x0c0000, 0x0c0003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x0c0006, 0x0c0007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x400000, 0x400001).portr("VBLANK"); // AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x440000, 0x440fff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) - AM_RANGE(0x480000, 0x480001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x480002, 0x480003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x480004, 0x480007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x480010, 0x48001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) - AM_RANGE(0x4c0000, 0x4c0001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0x4c0002, 0x4c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x4c0004, 0x4c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x4c0006, 0x4c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::vimana_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080003) AM_WRITE(toaplan1_tile_offsets_w) - AM_RANGE(0x080006, 0x080007) AM_WRITE(toaplan1_fcu_flipscreen_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ(toaplan1_frame_done_r) - AM_RANGE(0x0c0002, 0x0c0003) AM_READWRITE(toaplan1_spriteram_offs_r, toaplan1_spriteram_offs_w) - AM_RANGE(0x0c0004, 0x0c0005) AM_READWRITE(toaplan1_spriteram16_r, toaplan1_spriteram16_w) - AM_RANGE(0x0c0006, 0x0c0007) AM_READWRITE(toaplan1_spritesizeram16_r, toaplan1_spritesizeram16_w) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("VBLANK") + map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x440000, 0x440fff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); + map(0x480000, 0x480001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x480002, 0x480003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x480004, 0x480007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x480010, 0x48001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); + map(0x4c0000, 0x4c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0x4c0002, 0x4c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x4c0004, 0x4c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x4c0006, 0x4c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); +} + +void toaplan1_state::vimana_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080003).w(this, FUNC(toaplan1_state::toaplan1_tile_offsets_w)); + map(0x080006, 0x080007).w(this, FUNC(toaplan1_state::toaplan1_fcu_flipscreen_w)); + map(0x0c0000, 0x0c0001).r(this, FUNC(toaplan1_state::toaplan1_frame_done_r)); + map(0x0c0002, 0x0c0003).rw(this, FUNC(toaplan1_state::toaplan1_spriteram_offs_r), FUNC(toaplan1_state::toaplan1_spriteram_offs_w)); + map(0x0c0004, 0x0c0005).rw(this, FUNC(toaplan1_state::toaplan1_spriteram16_r), FUNC(toaplan1_state::toaplan1_spriteram16_w)); + map(0x0c0006, 0x0c0007).rw(this, FUNC(toaplan1_state::toaplan1_spritesizeram16_r), FUNC(toaplan1_state::toaplan1_spritesizeram16_w)); + map(0x400000, 0x400001).portr("VBLANK"); // AM_RANGE(0x400000, 0x400001) AM_WRITE(?? video frame related ??) - AM_RANGE(0x400002, 0x400003) AM_WRITE(toaplan1_intenable_w) - AM_RANGE(0x400008, 0x40000f) AM_WRITE(toaplan1_bcu_control_w) - AM_RANGE(0x404000, 0x4047ff) AM_RAM_WRITE(toaplan1_bgpalette_w) AM_SHARE("bgpalette") - AM_RANGE(0x406000, 0x4067ff) AM_RAM_WRITE(toaplan1_fgpalette_w) AM_SHARE("fgpalette") - AM_RANGE(0x440000, 0x4407ff) AM_READWRITE(toaplan1_shared_r, toaplan1_shared_w) /* inputs, coins and sound handled by 647180 MCU via this space */ - AM_RANGE(0x480000, 0x487fff) AM_RAM - AM_RANGE(0x4c0000, 0x4c0001) AM_WRITE(toaplan1_bcu_flipscreen_w) - AM_RANGE(0x4c0002, 0x4c0003) AM_READWRITE(toaplan1_tileram_offs_r, toaplan1_tileram_offs_w) - AM_RANGE(0x4c0004, 0x4c0007) AM_READWRITE(toaplan1_tileram16_r, toaplan1_tileram16_w) - AM_RANGE(0x4c0010, 0x4c001f) AM_READWRITE(toaplan1_scroll_regs_r, toaplan1_scroll_regs_w) -ADDRESS_MAP_END + map(0x400002, 0x400003).w(this, FUNC(toaplan1_state::toaplan1_intenable_w)); + map(0x400008, 0x40000f).w(this, FUNC(toaplan1_state::toaplan1_bcu_control_w)); + map(0x404000, 0x4047ff).ram().w(this, FUNC(toaplan1_state::toaplan1_bgpalette_w)).share("bgpalette"); + map(0x406000, 0x4067ff).ram().w(this, FUNC(toaplan1_state::toaplan1_fgpalette_w)).share("fgpalette"); + map(0x440000, 0x4407ff).rw(this, FUNC(toaplan1_state::toaplan1_shared_r), FUNC(toaplan1_state::toaplan1_shared_w)); /* inputs, coins and sound handled by 647180 MCU via this space */ + map(0x480000, 0x487fff).ram(); + map(0x4c0000, 0x4c0001).w(this, FUNC(toaplan1_state::toaplan1_bcu_flipscreen_w)); + map(0x4c0002, 0x4c0003).rw(this, FUNC(toaplan1_state::toaplan1_tileram_offs_r), FUNC(toaplan1_state::toaplan1_tileram_offs_w)); + map(0x4c0004, 0x4c0007).rw(this, FUNC(toaplan1_state::toaplan1_tileram16_r), FUNC(toaplan1_state::toaplan1_tileram16_w)); + map(0x4c0010, 0x4c001f).rw(this, FUNC(toaplan1_state::toaplan1_scroll_regs_r), FUNC(toaplan1_state::toaplan1_scroll_regs_w)); +} /***************************** Z80 Memory Map *******************************/ -ADDRESS_MAP_START(toaplan1_state::toaplan1_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_rallybik_state::rallybik_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x10, 0x10) AM_READ_PORT("P2") - AM_RANGE(0x20, 0x20) AM_READ_PORT("SYSTEM") - AM_RANGE(0x30, 0x30) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0) /* Coin counter/lockout */ - AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA") - AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB") - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::truxton_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x10, 0x10) AM_READ_PORT("P2") - AM_RANGE(0x20, 0x20) AM_READ_PORT("SYSTEM") - AM_RANGE(0x30, 0x30) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ - AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA") - AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB") - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x70, 0x70) AM_READ_PORT("TJUMP") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::hellfire_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") - AM_RANGE(0x10, 0x10) AM_READ_PORT("DSWB") - AM_RANGE(0x20, 0x20) AM_READ_PORT("TJUMP") - AM_RANGE(0x30, 0x30) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ - AM_RANGE(0x40, 0x40) AM_READ_PORT("P1") - AM_RANGE(0x50, 0x50) AM_READ_PORT("P2") - AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM") - AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::zerowing_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") - AM_RANGE(0x08, 0x08) AM_READ_PORT("P2") - AM_RANGE(0x20, 0x20) AM_READ_PORT("DSWA") - AM_RANGE(0x28, 0x28) AM_READ_PORT("DSWB") - AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM") - AM_RANGE(0x88, 0x88) AM_READ_PORT("TJUMP") - AM_RANGE(0xa0, 0xa0) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ - AM_RANGE(0xa8, 0xa9) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::demonwld_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x20, 0x20) AM_READ_PORT("TJUMP") - AM_RANGE(0x40, 0x40) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ - AM_RANGE(0x60, 0x60) AM_READ_PORT("SYSTEM") - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("DSWB") - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P2") - AM_RANGE(0xe0, 0xe0) AM_READ_PORT("DSWA") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan1_state::outzone_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x04, 0x04) AM_WRITE(toaplan1_coin_w) /* Coin counter/lockout */ - AM_RANGE(0x08, 0x08) AM_READ_PORT("DSWA") - AM_RANGE(0x0c, 0x0c) AM_READ_PORT("DSWB") - AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM") - AM_RANGE(0x14, 0x14) AM_READ_PORT("P1") - AM_RANGE(0x18, 0x18) AM_READ_PORT("P2") - AM_RANGE(0x1c, 0x1c) AM_READ_PORT("TJUMP") -ADDRESS_MAP_END +void toaplan1_state::toaplan1_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("sharedram"); +} + +void toaplan1_rallybik_state::rallybik_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x10, 0x10).portr("P2"); + map(0x20, 0x20).portr("SYSTEM"); + map(0x30, 0x30).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Coin counter/lockout */ + map(0x40, 0x40).portr("DSWA"); + map(0x50, 0x50).portr("DSWB"); + map(0x60, 0x61).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); +} + +void toaplan1_state::truxton_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x10, 0x10).portr("P2"); + map(0x20, 0x20).portr("SYSTEM"); + map(0x30, 0x30).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x40, 0x40).portr("DSWA"); + map(0x50, 0x50).portr("DSWB"); + map(0x60, 0x61).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x70, 0x70).portr("TJUMP"); +} + +void toaplan1_state::hellfire_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSWA"); + map(0x10, 0x10).portr("DSWB"); + map(0x20, 0x20).portr("TJUMP"); + map(0x30, 0x30).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x40, 0x40).portr("P1"); + map(0x50, 0x50).portr("P2"); + map(0x60, 0x60).portr("SYSTEM"); + map(0x70, 0x71).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); +} + +void toaplan1_state::zerowing_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("P1"); + map(0x08, 0x08).portr("P2"); + map(0x20, 0x20).portr("DSWA"); + map(0x28, 0x28).portr("DSWB"); + map(0x80, 0x80).portr("SYSTEM"); + map(0x88, 0x88).portr("TJUMP"); + map(0xa0, 0xa0).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0xa8, 0xa9).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); +} + +void toaplan1_state::demonwld_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x20, 0x20).portr("TJUMP"); + map(0x40, 0x40).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x60, 0x60).portr("SYSTEM"); + map(0x80, 0x80).portr("P1"); + map(0xa0, 0xa0).portr("DSWB"); + map(0xc0, 0xc0).portr("P2"); + map(0xe0, 0xe0).portr("DSWA"); +} + +void toaplan1_state::outzone_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x04, 0x04).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); /* Coin counter/lockout */ + map(0x08, 0x08).portr("DSWA"); + map(0x0c, 0x0c).portr("DSWB"); + map(0x10, 0x10).portr("SYSTEM"); + map(0x14, 0x14).portr("P1"); + map(0x18, 0x18).portr("P2"); + map(0x1c, 0x1c).portr("TJUMP"); +} /***************************** TMS32010 Memory Map **************************/ -ADDRESS_MAP_START(toaplan1_state::DSP_program_map) - AM_RANGE(0x000, 0x7ff) AM_ROM -ADDRESS_MAP_END +void toaplan1_state::DSP_program_map(address_map &map) +{ + map(0x000, 0x7ff).rom(); +} /* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */ -ADDRESS_MAP_START(toaplan1_state::DSP_io_map) - AM_RANGE(0, 0) AM_WRITE(demonwld_dsp_addrsel_w) - AM_RANGE(1, 1) AM_READWRITE(demonwld_dsp_r, demonwld_dsp_w) - AM_RANGE(3, 3) AM_WRITE(demonwld_dsp_bio_w) -ADDRESS_MAP_END +void toaplan1_state::DSP_io_map(address_map &map) +{ + map(0, 0).w(this, FUNC(toaplan1_state::demonwld_dsp_addrsel_w)); + map(1, 1).rw(this, FUNC(toaplan1_state::demonwld_dsp_r), FUNC(toaplan1_state::demonwld_dsp_w)); + map(3, 3).w(this, FUNC(toaplan1_state::demonwld_dsp_bio_w)); +} /***************************** HD647180 Memory Map **************************/ -ADDRESS_MAP_START(toaplan1_state::vimana_hd647180_mem_map) - AM_RANGE(0x00000, 0x03fff) AM_ROM /* Internal 16k byte ROM */ - AM_RANGE(0x08000, 0x087ff) AM_RAM AM_SHARE("sharedram") /* 2048 bytes of shared ram w/maincpu */ - AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 byte RAM */ -ADDRESS_MAP_END +void toaplan1_state::vimana_hd647180_mem_map(address_map &map) +{ + map(0x00000, 0x03fff).rom(); /* Internal 16k byte ROM */ + map(0x08000, 0x087ff).ram().share("sharedram"); /* 2048 bytes of shared ram w/maincpu */ + map(0x0fe00, 0x0ffff).ram(); /* Internal 512 byte RAM */ +} -ADDRESS_MAP_START(toaplan1_state::vimana_hd647180_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void toaplan1_state::vimana_hd647180_io_map(address_map &map) +{ + map.global_mask(0xff); // lots of low level 647180 peripherals are not emulated yet, ddr regs, timer regs etc, see comments below // also see http://bitsavers.trailing-edge.com/pdf/hitachi/_dataBooks/U94_HD647180X_8-Bit_Microcontroller_Hardware_Manual_Jan88.pdf particularly page 38 (pdf page 56) - AM_RANGE(0x32, 0x32) AM_WRITENOP // DMA WAIT/Control register - AM_RANGE(0x33, 0x33) AM_WRITENOP // IL (int vector low) register - AM_RANGE(0x36, 0x36) AM_WRITENOP // refresh control register for RFSH pin + map(0x32, 0x32).nopw(); // DMA WAIT/Control register + map(0x33, 0x33).nopw(); // IL (int vector low) register + map(0x36, 0x36).nopw(); // refresh control register for RFSH pin // 53: disable reg for port A - AM_RANGE(0x60, 0x60) AM_READ(vimana_dswb_invert_r) // read/write port A; note these inputs seem to be inverted, unlike the DSWA ones. + map(0x60, 0x60).r(this, FUNC(toaplan1_state::vimana_dswb_invert_r)); // read/write port A; note these inputs seem to be inverted, unlike the DSWA ones. // 61: read/write port B // 62: read/write port C // 63: read/write port D // 64: read/write port E // 65: read/write port F - AM_RANGE(0x66, 0x66) AM_READ(vimana_tjump_invert_r) // read/write port G, bits 7 and 6 ALWAYS read as 1 due to port G being just 6 bits; note these inputs seem to be inverted, unlike the DSWA ones. + map(0x66, 0x66).r(this, FUNC(toaplan1_state::vimana_tjump_invert_r)); // read/write port G, bits 7 and 6 ALWAYS read as 1 due to port G being just 6 bits; note these inputs seem to be inverted, unlike the DSWA ones. // 70: ddr for port A - AM_RANGE(0x71, 0x71) AM_WRITENOP // ddr for port B - AM_RANGE(0x72, 0x72) AM_WRITENOP // ddr for port C - AM_RANGE(0x73, 0x73) AM_WRITENOP // ddr for port D - AM_RANGE(0x74, 0x74) AM_WRITENOP // ddr for port E - AM_RANGE(0x75, 0x75) AM_WRITENOP // ddr for port F - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x82, 0x82) AM_READ_PORT("DSWA") - AM_RANGE(0x83, 0x83) AM_READ_PORT("SYSTEM") - AM_RANGE(0x84, 0x84) AM_WRITE(toaplan1_coin_w) // Coin counter/lockout // needs verify - AM_RANGE(0x87, 0x87) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x8f, 0x8f) AM_DEVREADWRITE("ymsnd", ym3812_device, read_port_r, write_port_w) -ADDRESS_MAP_END + map(0x71, 0x71).nopw(); // ddr for port B + map(0x72, 0x72).nopw(); // ddr for port C + map(0x73, 0x73).nopw(); // ddr for port D + map(0x74, 0x74).nopw(); // ddr for port E + map(0x75, 0x75).nopw(); // ddr for port F + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x82, 0x82).portr("DSWA"); + map(0x83, 0x83).portr("SYSTEM"); + map(0x84, 0x84).w(this, FUNC(toaplan1_state::toaplan1_coin_w)); // Coin counter/lockout // needs verify + map(0x87, 0x87).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x8f, 0x8f).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w)); +} READ8_MEMBER(toaplan1_state::vimana_dswb_invert_r) { @@ -996,21 +1016,23 @@ READ8_MEMBER(toaplan1_state::samesame_cmdavailable_r) else return 0x00; }; -ADDRESS_MAP_START(toaplan1_state::samesame_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 toaplan1_state::samesame_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(toaplan1_state::samesame_hd647180_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void toaplan1_state::samesame_hd647180_io_map(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE(0x63, 0x63) AM_READ( samesame_cmdavailable_r ) - AM_RANGE(0xa0, 0xa0) AM_READ( samesame_soundlatch_r ) - AM_RANGE(0xb0, 0xb0) AM_WRITE( samesame_sound_done_w ) + map(0x63, 0x63).r(this, FUNC(toaplan1_state::samesame_cmdavailable_r)); + map(0xa0, 0xa0).r(this, FUNC(toaplan1_state::samesame_soundlatch_r)); + map(0xb0, 0xb0).w(this, FUNC(toaplan1_state::samesame_sound_done_w)); - AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("ymsnd", ym3812_device, read_port_r, write_port_w) -ADDRESS_MAP_END + map(0x80, 0x80).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x81, 0x81).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w)); +} /***************************************************************************** Generic Input Port definitions 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 diff --git a/src/mame/drivers/toki.cpp b/src/mame/drivers/toki.cpp index 60070204004..6aa854c7cb7 100644 --- a/src/mame/drivers/toki.cpp +++ b/src/mame/drivers/toki.cpp @@ -142,106 +142,113 @@ WRITE8_MEMBER(toki_state::tokib_adpcm_data_w) /*****************************************************************************/ -ADDRESS_MAP_START(toki_state::toki_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x06d7ff) AM_RAM - AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(background1_videoram_w) AM_SHARE("bg1_vram") - AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(background2_videoram_w) AM_SHARE("bg2_vram") - AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(foreground_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x080000, 0x08000d) AM_DEVREADWRITE8("seibu_sound", seibu_sound_device, main_r, main_w, 0x00ff) - AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_SHARE("scrollram") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW") - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS") - AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END +void toki_state::toki_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x06d7ff).ram(); + map(0x06d800, 0x06dfff).ram().share("spriteram"); + map(0x06e000, 0x06e7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x06e800, 0x06efff).ram().w(this, FUNC(toki_state::background1_videoram_w)).share("bg1_vram"); + map(0x06f000, 0x06f7ff).ram().w(this, FUNC(toki_state::background2_videoram_w)).share("bg2_vram"); + map(0x06f800, 0x06ffff).ram().w(this, FUNC(toki_state::foreground_videoram_w)).share("videoram"); + map(0x080000, 0x08000d).rw(m_seibu_sound, FUNC(seibu_sound_device::main_r), FUNC(seibu_sound_device::main_w)).umask16(0x00ff); + map(0x0a0000, 0x0a005f).w(this, FUNC(toki_state::toki_control_w)).share("scrollram"); + map(0x0c0000, 0x0c0001).portr("DSW"); + map(0x0c0002, 0x0c0003).portr("INPUTS"); + map(0x0c0004, 0x0c0005).portr("SYSTEM"); +} /* In the bootleg, sound and sprites are remapped to 0x70000 */ -ADDRESS_MAP_START(toki_state::tokib_map) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x060000, 0x06dfff) AM_RAM - AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(background1_videoram_w) AM_SHARE("bg1_vram") - AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(background2_videoram_w) AM_SHARE("bg2_vram") - AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(foreground_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x071000, 0x071001) AM_WRITENOP /* sprite related? seems another scroll register */ +void toki_state::tokib_map(address_map &map) +{ + map(0x000000, 0x05ffff).rom(); + map(0x060000, 0x06dfff).ram(); + map(0x06e000, 0x06e7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x06e800, 0x06efff).ram().w(this, FUNC(toki_state::background1_videoram_w)).share("bg1_vram"); + map(0x06f000, 0x06f7ff).ram().w(this, FUNC(toki_state::background2_videoram_w)).share("bg2_vram"); + map(0x06f800, 0x06ffff).ram().w(this, FUNC(toki_state::foreground_videoram_w)).share("videoram"); + map(0x071000, 0x071001).nopw(); /* sprite related? seems another scroll register */ /* gets written the same value as 75000a (bg2 scrollx) */ - AM_RANGE(0x071804, 0x071807) AM_WRITENOP /* sprite related, always 01be0100 */ - AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x072000, 0x072001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) /* probably */ - AM_RANGE(0x075000, 0x075001) AM_WRITE(tokib_soundcommand_w) - AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_SHARE("scrollram") - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW") - AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS") - AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c000e, 0x0c000f) AM_READ(pip_r) /* sound related, if we return 0 the code writes */ + map(0x071804, 0x071807).nopw(); /* sprite related, always 01be0100 */ + map(0x07180e, 0x071e45).writeonly().share("spriteram"); + map(0x072000, 0x072001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); /* probably */ + map(0x075000, 0x075001).w(this, FUNC(toki_state::tokib_soundcommand_w)); + map(0x075004, 0x07500b).writeonly().share("scrollram"); + map(0x0c0000, 0x0c0001).portr("DSW"); + map(0x0c0002, 0x0c0003).portr("INPUTS"); + map(0x0c0004, 0x0c0005).portr("SYSTEM"); + map(0x0c000e, 0x0c000f).r(this, FUNC(toki_state::pip_r)); /* sound related, if we return 0 the code writes */ /* the sound command quickly followed by 0 and the */ /* sound CPU often misses the command. */ -ADDRESS_MAP_END +} /*****************************************************************************/ -ADDRESS_MAP_START(toki_state::toki_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, data_r) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toki_state::toki_audio_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("sei80bu", sei80bu_device, opcode_r) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toki_state::jujuba_audio_map) - AM_RANGE(0x0000, 0x1fff) AM_READ(jujuba_z80_data_decrypt) - AM_RANGE(0x2000, 0x27ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("seibu_sound", seibu_sound_device, pending_w) - AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("seibu_sound", seibu_sound_device, irq_clear_w) - AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst10_ack_w) - AM_RANGE(0x4003, 0x4003) AM_DEVWRITE("seibu_sound", seibu_sound_device, rst18_ack_w) - AM_RANGE(0x4007, 0x4007) AM_DEVWRITE("seibu_sound", seibu_sound_device, bank_w) - AM_RANGE(0x4008, 0x4009) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, ym_r, ym_w) - AM_RANGE(0x4010, 0x4011) AM_DEVREAD("seibu_sound", seibu_sound_device, soundlatch_r) - AM_RANGE(0x4012, 0x4012) AM_DEVREAD("seibu_sound", seibu_sound_device, main_data_pending_r) - AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") - AM_RANGE(0x4018, 0x4019) AM_DEVWRITE("seibu_sound", seibu_sound_device, main_data_w) - AM_RANGE(0x401b, 0x401b) AM_DEVWRITE("seibu_sound", seibu_sound_device, coin_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toki_state::jujuba_audio_opcodes_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("audiocpu", 0) - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("seibu_bank1") -ADDRESS_MAP_END +void toki_state::toki_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::data_r)); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} + +void toki_state::toki_audio_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).r("sei80bu", FUNC(sei80bu_device::opcode_r)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} + +void toki_state::jujuba_audio_map(address_map &map) +{ + map(0x0000, 0x1fff).r(this, FUNC(toki_state::jujuba_z80_data_decrypt)); + map(0x2000, 0x27ff).ram(); + map(0x4000, 0x4000).w(m_seibu_sound, FUNC(seibu_sound_device::pending_w)); + map(0x4001, 0x4001).w(m_seibu_sound, FUNC(seibu_sound_device::irq_clear_w)); + map(0x4002, 0x4002).w(m_seibu_sound, FUNC(seibu_sound_device::rst10_ack_w)); + map(0x4003, 0x4003).w(m_seibu_sound, FUNC(seibu_sound_device::rst18_ack_w)); + map(0x4007, 0x4007).w(m_seibu_sound, FUNC(seibu_sound_device::bank_w)); + map(0x4008, 0x4009).rw(m_seibu_sound, FUNC(seibu_sound_device::ym_r), FUNC(seibu_sound_device::ym_w)); + map(0x4010, 0x4011).r(m_seibu_sound, FUNC(seibu_sound_device::soundlatch_r)); + map(0x4012, 0x4012).r(m_seibu_sound, FUNC(seibu_sound_device::main_data_pending_r)); + map(0x4013, 0x4013).portr("COIN"); + map(0x4018, 0x4019).w(m_seibu_sound, FUNC(seibu_sound_device::main_data_w)); + map(0x401b, 0x401b).w(m_seibu_sound, FUNC(seibu_sound_device::coin_w)); + map(0x6000, 0x6000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} + +void toki_state::jujuba_audio_opcodes_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("audiocpu", 0); + map(0x8000, 0xffff).bankr("seibu_bank1"); +} READ8_MEMBER(toki_state::jujuba_z80_data_decrypt) { return m_audiocpu_rom[offset] ^ 0x55; } -ADDRESS_MAP_START(toki_state::tokib_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xe000) AM_WRITE(tokib_adpcm_control_w) /* MSM5205 + ROM bank */ - AM_RANGE(0xe400, 0xe400) AM_WRITE(tokib_adpcm_data_w) - AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void toki_state::tokib_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xe000, 0xe000).w(this, FUNC(toki_state::tokib_adpcm_control_w)); /* MSM5205 + ROM bank */ + map(0xe400, 0xe400).w(this, FUNC(toki_state::tokib_adpcm_data_w)); + map(0xec00, 0xec01).mirror(0x0008).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp index d7ccfcca97a..0a433512fc4 100644 --- a/src/mame/drivers/tomcat.cpp +++ b/src/mame/drivers/tomcat.cpp @@ -248,24 +248,26 @@ WRITE8_MEMBER(tomcat_state::tomcat_nvram_w) m_nvram[offset] = data; } -ADDRESS_MAP_START(tomcat_state::tomcat_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x402000, 0x402001) AM_READ(tomcat_adcread_r) AM_WRITE(tomcat_adcon_w) - AM_RANGE(0x404000, 0x404001) AM_READ(tomcat_inputs_r) AM_DEVWRITE("avg", avg_tomcat_device, go_word_w) - AM_RANGE(0x406000, 0x406001) AM_DEVWRITE("avg", avg_tomcat_device, reset_word_w) - AM_RANGE(0x408000, 0x408001) AM_READ(tomcat_inputs2_r) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x40a000, 0x40a001) AM_READWRITE(tomcat_320bio_r, tomcat_irqclr_w) - AM_RANGE(0x40e000, 0x40e01f) AM_WRITE(main_latch_w) - AM_RANGE(0x800000, 0x803fff) AM_RAM AM_SHARE("vectorram") - AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xffc000, 0xffcfff) AM_RAM - AM_RANGE(0xffd000, 0xffdfff) AM_DEVREADWRITE8("m48t02", timekeeper_device, read, write, 0xff00) - AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE8(tomcat_nvram_r, tomcat_nvram_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tomcat_state::dsp_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END +void tomcat_state::tomcat_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x402000, 0x402001).r(this, FUNC(tomcat_state::tomcat_adcread_r)).w(this, FUNC(tomcat_state::tomcat_adcon_w)); + map(0x404000, 0x404001).r(this, FUNC(tomcat_state::tomcat_inputs_r)).w("avg", FUNC(avg_tomcat_device::go_word_w)); + map(0x406000, 0x406001).w("avg", FUNC(avg_tomcat_device::reset_word_w)); + map(0x408000, 0x408001).r(this, FUNC(tomcat_state::tomcat_inputs2_r)).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x40a000, 0x40a001).rw(this, FUNC(tomcat_state::tomcat_320bio_r), FUNC(tomcat_state::tomcat_irqclr_w)); + map(0x40e000, 0x40e01f).w(this, FUNC(tomcat_state::main_latch_w)); + map(0x800000, 0x803fff).ram().share("vectorram"); + map(0xffa000, 0xffbfff).ram().share("shared_ram"); + map(0xffc000, 0xffcfff).ram(); + map(0xffd000, 0xffdfff).rw("m48t02", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00); + map(0xffd000, 0xffdfff).rw(this, FUNC(tomcat_state::tomcat_nvram_r), FUNC(tomcat_state::tomcat_nvram_w)).umask16(0x00ff); +} + +void tomcat_state::dsp_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("shared_ram"); +} WRITE8_MEMBER(tomcat_state::soundlatches_w) @@ -282,17 +284,18 @@ WRITE8_MEMBER(tomcat_state::soundlatches_w) } } -ADDRESS_MAP_START(tomcat_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w) - AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG - AM_RANGE(0x5000, 0x507f) AM_RAM // 6532 ram - AM_RANGE(0x5080, 0x509f) AM_DEVREADWRITE("riot", riot6532_device, read, write) - AM_RANGE(0x6000, 0x601f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x7000, 0x701f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x8000, 0xffff) AM_NOP // main sound program rom -ADDRESS_MAP_END +void tomcat_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x3000, 0x30df).w(this, FUNC(tomcat_state::soundlatches_w)); + map(0x30e0, 0x30e0).noprw(); // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG + map(0x5000, 0x507f).ram(); // 6532 ram + map(0x5080, 0x509f).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x6000, 0x601f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x7000, 0x701f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x8000, 0xffff).noprw(); // main sound program rom +} static INPUT_PORTS_START( tomcat ) PORT_START("IN0") /* INPUTS */ diff --git a/src/mame/drivers/tonton.cpp b/src/mame/drivers/tonton.cpp index e7b2d7c9198..41278f1858d 100644 --- a/src/mame/drivers/tonton.cpp +++ b/src/mame/drivers/tonton.cpp @@ -88,24 +88,26 @@ WRITE8_MEMBER(tonton_state::hopper_w) * Memory Map * *************************************************/ -ADDRESS_MAP_START(tonton_state::tonton_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tonton_state::tonton_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x00, 0x00) AM_WRITE(tonton_outport_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x01, 0x01) AM_WRITE(hopper_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2") - AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) - AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0xa2, 0xa2) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END +void tonton_state::tonton_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe3ff).ram().share("nvram"); + map(0xf000, 0xffff).ram(); +} + +void tonton_state::tonton_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x00, 0x00).w(this, FUNC(tonton_state::tonton_outport_w)); + map(0x01, 0x01).portr("IN1"); + map(0x01, 0x01).w(this, FUNC(tonton_state::hopper_w)); + map(0x02, 0x02).portr("DSW1"); + map(0x03, 0x03).portr("DSW2"); + map(0x88, 0x8b).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r)); +} /************************************************* diff --git a/src/mame/drivers/toobin.cpp b/src/mame/drivers/toobin.cpp index 2d15371f2f7..fb9ff722f55 100644 --- a/src/mame/drivers/toobin.cpp +++ b/src/mame/drivers/toobin.cpp @@ -75,30 +75,31 @@ WRITE16_MEMBER(toobin_state::interrupt_scan_w) *************************************/ /* full address map decoded from schematics */ -ADDRESS_MAP_START(toobin_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0xc7ffff) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xc00000, 0xc07fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_RAM AM_SHARE("mob") - AM_RANGE(0xc10000, 0xc107ff) AM_MIRROR(0x047800) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x826000, 0x826001) AM_MIRROR(0x4500fe) AM_READNOP /* who knows? read at controls time */ - AM_RANGE(0x828000, 0x828001) AM_MIRROR(0x4500fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x828100, 0x828101) AM_MIRROR(0x4500fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) - AM_RANGE(0x828300, 0x828301) AM_MIRROR(0x45003e) AM_WRITE(intensity_w) - AM_RANGE(0x828340, 0x828341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_SHARE("interrupt_scan") - AM_RANGE(0x828380, 0x828381) AM_MIRROR(0x45003e) AM_RAM_WRITE(slip_w) AM_SHARE("mob:slip") - AM_RANGE(0x8283c0, 0x8283c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0x828400, 0x828401) AM_MIRROR(0x4500fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) - AM_RANGE(0x828500, 0x828501) AM_MIRROR(0x4500fe) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x828600, 0x828601) AM_MIRROR(0x4500fe) AM_WRITE(xscroll_w) AM_SHARE("xscroll") - AM_RANGE(0x828700, 0x828701) AM_MIRROR(0x4500fe) AM_WRITE(yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0x828800, 0x828801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800") - AM_RANGE(0x829000, 0x829001) AM_MIRROR(0x4507fe) AM_READ_PORT("FF9000") - AM_RANGE(0x829800, 0x829801) AM_MIRROR(0x4507fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) - AM_RANGE(0x82a000, 0x82afff) AM_MIRROR(0x451000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x82c000, 0x82ffff) AM_MIRROR(0x450000) AM_RAM -ADDRESS_MAP_END +void toobin_state::main_map(address_map &map) +{ + map.global_mask(0xc7ffff); + map(0x000000, 0x07ffff).rom(); + map(0xc00000, 0xc07fff).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0xc08000, 0xc097ff).mirror(0x046000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0xc09800, 0xc09fff).mirror(0x046000).ram().share("mob"); + map(0xc10000, 0xc107ff).mirror(0x047800).ram().w(this, FUNC(toobin_state::paletteram_w)).share("paletteram"); + map(0x826000, 0x826001).mirror(0x4500fe).nopr(); /* who knows? read at controls time */ + map(0x828000, 0x828001).mirror(0x4500fe).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x828101, 0x828101).mirror(0x4500fe).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w)); + map(0x828300, 0x828301).mirror(0x45003e).w(this, FUNC(toobin_state::intensity_w)); + map(0x828340, 0x828341).mirror(0x45003e).w(this, FUNC(toobin_state::interrupt_scan_w)).share("interrupt_scan"); + map(0x828380, 0x828381).mirror(0x45003e).ram().w(this, FUNC(toobin_state::slip_w)).share("mob:slip"); + map(0x8283c0, 0x8283c1).mirror(0x45003e).w(this, FUNC(toobin_state::scanline_int_ack_w)); + map(0x828400, 0x828401).mirror(0x4500fe).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w)); + map(0x828500, 0x828501).mirror(0x4500fe).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x828600, 0x828601).mirror(0x4500fe).w(this, FUNC(toobin_state::xscroll_w)).share("xscroll"); + map(0x828700, 0x828701).mirror(0x4500fe).w(this, FUNC(toobin_state::yscroll_w)).share("yscroll"); + map(0x828800, 0x828801).mirror(0x4507fe).portr("FF8800"); + map(0x829000, 0x829001).mirror(0x4507fe).portr("FF9000"); + map(0x829801, 0x829801).mirror(0x4507fe).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r)); + map(0x82a000, 0x82afff).mirror(0x451000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x82c000, 0x82ffff).mirror(0x450000).ram(); +} diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp index 8fb71ca7edb..3ce9d47fc42 100644 --- a/src/mame/drivers/topspeed.cpp +++ b/src/mame/drivers/topspeed.cpp @@ -377,54 +377,59 @@ WRITE_LINE_MEMBER(topspeed_state::z80ctc_to0) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(topspeed_state::cpua_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600002, 0x600003) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x7e0000, 0x7e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x800000, 0x8003ff) AM_RAM AM_SHARE("raster_ctrl") - AM_RANGE(0x800400, 0x80ffff) AM_RAM - AM_RANGE(0x880000, 0x880007) AM_WRITENOP // Lamps/outputs? - AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("pc080sn_1", pc080sn_device, word_r, word_w) - AM_RANGE(0xa20000, 0xa20003) AM_DEVWRITE("pc080sn_1", pc080sn_device, yscroll_word_w) - AM_RANGE(0xa40000, 0xa40003) AM_DEVWRITE("pc080sn_1", pc080sn_device, xscroll_word_w) - AM_RANGE(0xa50000, 0xa50003) AM_DEVWRITE("pc080sn_1", pc080sn_device, ctrl_word_w) - AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("pc080sn_2", pc080sn_device, word_r, word_w) - AM_RANGE(0xb20000, 0xb20003) AM_DEVWRITE("pc080sn_2", pc080sn_device, yscroll_word_w) - AM_RANGE(0xb40000, 0xb40003) AM_DEVWRITE("pc080sn_2", pc080sn_device, xscroll_word_w) - AM_RANGE(0xb50000, 0xb50003) AM_DEVWRITE("pc080sn_2", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_SHARE("spritemap") -ADDRESS_MAP_END - -ADDRESS_MAP_START(topspeed_state::cpub_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x880000, 0x880001) AM_READ8(input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff) - AM_RANGE(0x880002, 0x880003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, port_r, port_w, 0x00ff) - AM_RANGE(0x900000, 0x9003ff) AM_READWRITE(motor_r, motor_w) -ADDRESS_MAP_END +void topspeed_state::cpua_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40ffff).ram().share("sharedram"); + map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x600002, 0x600003).w(this, FUNC(topspeed_state::cpua_ctrl_w)); + map(0x7e0000, 0x7e0001).nopr(); + map(0x7e0001, 0x7e0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x7e0003, 0x7e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x800000, 0x8003ff).ram().share("raster_ctrl"); + map(0x800400, 0x80ffff).ram(); + map(0x880000, 0x880007).nopw(); // Lamps/outputs? + map(0xa00000, 0xa0ffff).rw(m_pc080sn_1, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xa20000, 0xa20003).w(m_pc080sn_1, FUNC(pc080sn_device::yscroll_word_w)); + map(0xa40000, 0xa40003).w(m_pc080sn_1, FUNC(pc080sn_device::xscroll_word_w)); + map(0xa50000, 0xa50003).w(m_pc080sn_1, FUNC(pc080sn_device::ctrl_word_w)); + map(0xb00000, 0xb0ffff).rw(m_pc080sn_2, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xb20000, 0xb20003).w(m_pc080sn_2, FUNC(pc080sn_device::yscroll_word_w)); + map(0xb40000, 0xb40003).w(m_pc080sn_2, FUNC(pc080sn_device::xscroll_word_w)); + map(0xb50000, 0xb50003).w(m_pc080sn_2, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd00fff).ram().share("spriteram"); + map(0xe00000, 0xe0ffff).ram().share("spritemap"); +} + +void topspeed_state::cpub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x400000, 0x40ffff).ram().share("sharedram"); + map(0x880001, 0x880001).r(this, FUNC(topspeed_state::input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff); + map(0x880003, 0x880003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::port_r), FUNC(tc0040ioc_device::port_w)); + map(0x900000, 0x9003ff).rw(this, FUNC(topspeed_state::motor_r), FUNC(topspeed_state::motor_w)); +} /***************************************************************************/ -ADDRESS_MAP_START(topspeed_state::z80_prg) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("sndbank") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xcfff) AM_WRITE(msm5205_command_w) - AM_RANGE(0xd000, 0xdfff) AM_WRITE(volume_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(topspeed_state::z80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void topspeed_state::z80_prg(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("sndbank"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xcfff).w(this, FUNC(topspeed_state::msm5205_command_w)); + map(0xd000, 0xdfff).w(this, FUNC(topspeed_state::volume_w)); +} + +void topspeed_state::z80_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /*********************************************************** diff --git a/src/mame/drivers/toratora.cpp b/src/mame/drivers/toratora.cpp index e3665a0682c..07a60105f91 100644 --- a/src/mame/drivers/toratora.cpp +++ b/src/mame/drivers/toratora.cpp @@ -316,21 +316,22 @@ WRITE_LINE_MEMBER(toratora_state::sn2_ca2_u2_w) * *************************************/ -ADDRESS_MAP_START(toratora_state::main_map) - AM_RANGE(0x0000, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x7fff) AM_ROM /* not fully populated */ - AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xa000, 0xf047) AM_NOP - AM_RANGE(0xf048, 0xf049) AM_NOP - AM_RANGE(0xf04a, 0xf04a) AM_WRITE(clear_tv_w) /* the read is mark *LEDEN, but not used */ - AM_RANGE(0xf04b, 0xf04b) AM_READWRITE(timer_r, clear_timer_w) - AM_RANGE(0xf04c, 0xf09f) AM_NOP - AM_RANGE(0xf0a0, 0xf0a3) AM_DEVREADWRITE("pia_u1", pia6821_device, read, write) - AM_RANGE(0xf0a4, 0xf0a7) AM_DEVREADWRITE("pia_u2", pia6821_device, read, write) - AM_RANGE(0xf0a8, 0xf0ab) AM_DEVREADWRITE("pia_u3", pia6821_device, read, write) - AM_RANGE(0xf0ac, 0xf7ff) AM_NOP - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void toratora_state::main_map(address_map &map) +{ + map(0x0000, 0x0fff).ram(); + map(0x1000, 0x7fff).rom(); /* not fully populated */ + map(0x8000, 0x9fff).ram().share("videoram"); + map(0xa000, 0xf047).noprw(); + map(0xf048, 0xf049).noprw(); + map(0xf04a, 0xf04a).w(this, FUNC(toratora_state::clear_tv_w)); /* the read is mark *LEDEN, but not used */ + map(0xf04b, 0xf04b).rw(this, FUNC(toratora_state::timer_r), FUNC(toratora_state::clear_timer_w)); + map(0xf04c, 0xf09f).noprw(); + map(0xf0a0, 0xf0a3).rw(m_pia_u1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf0a4, 0xf0a7).rw(m_pia_u2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf0a8, 0xf0ab).rw(m_pia_u3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf0ac, 0xf7ff).noprw(); + map(0xf800, 0xffff).rom(); +} diff --git a/src/mame/drivers/tosh1000.cpp b/src/mame/drivers/tosh1000.cpp index d93bb180ba9..4937372c79c 100644 --- a/src/mame/drivers/tosh1000.cpp +++ b/src/mame/drivers/tosh1000.cpp @@ -216,30 +216,33 @@ READ8_MEMBER(tosh1000_state::bram_r) } -ADDRESS_MAP_START(tosh1000_state::tosh1000_romdos) - AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("romdos", 0) - AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("romdos", 0x10000) - AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("romdos", 0x20000) - AM_RANGE(0x30000, 0x3ffff) AM_ROM AM_REGION("romdos", 0x30000) - AM_RANGE(0x40000, 0x4ffff) AM_ROM AM_REGION("romdos", 0x40000) - AM_RANGE(0x50000, 0x5ffff) AM_ROM AM_REGION("romdos", 0x50000) - AM_RANGE(0x60000, 0x6ffff) AM_ROM AM_REGION("romdos", 0x60000) - AM_RANGE(0x70000, 0x7ffff) AM_ROM AM_REGION("romdos", 0x70000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tosh1000_state::tosh1000_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xa0000, 0xaffff) AM_DEVREADWRITE("bankdev", address_map_bank_device, read8, write8) - AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("bios", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tosh1000_state::tosh1000_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", ibm5160_mb_device, map) - AM_RANGE(0x00c0, 0x00c3) AM_READWRITE(bram_r, bram_w) - AM_RANGE(0x00c8, 0x00c8) AM_WRITE(romdos_bank_w) // ROM-DOS page select [p. B-15] - AM_RANGE(0x02c0, 0x02df) AM_DEVREADWRITE("rtc", tc8521_device, read, write) -ADDRESS_MAP_END +void tosh1000_state::tosh1000_romdos(address_map &map) +{ + map(0x00000, 0x0ffff).rom().region("romdos", 0); + map(0x10000, 0x1ffff).rom().region("romdos", 0x10000); + map(0x20000, 0x2ffff).rom().region("romdos", 0x20000); + map(0x30000, 0x3ffff).rom().region("romdos", 0x30000); + map(0x40000, 0x4ffff).rom().region("romdos", 0x40000); + map(0x50000, 0x5ffff).rom().region("romdos", 0x50000); + map(0x60000, 0x6ffff).rom().region("romdos", 0x60000); + map(0x70000, 0x7ffff).rom().region("romdos", 0x70000); +} + +void tosh1000_state::tosh1000_map(address_map &map) +{ + map.unmap_value_high(); + map(0xa0000, 0xaffff).rw(m_bankdev, FUNC(address_map_bank_device::read8), FUNC(address_map_bank_device::write8)); + map(0xf8000, 0xfffff).rom().region("bios", 0); +} + +void tosh1000_state::tosh1000_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x00ff).m("mb", FUNC(ibm5160_mb_device::map)); + map(0x00c0, 0x00c3).rw(this, FUNC(tosh1000_state::bram_r), FUNC(tosh1000_state::bram_w)); + map(0x00c8, 0x00c8).w(this, FUNC(tosh1000_state::romdos_bank_w)); // ROM-DOS page select [p. B-15] + map(0x02c0, 0x02df).rw("rtc", FUNC(tc8521_device::read), FUNC(tc8521_device::write)); +} void tosh1000_state::cfg_fdc_35(device_t *device) diff --git a/src/mame/drivers/tourtabl.cpp b/src/mame/drivers/tourtabl.cpp index e1a0a8c300a..9b61f13cb5b 100644 --- a/src/mame/drivers/tourtabl.cpp +++ b/src/mame/drivers/tourtabl.cpp @@ -66,15 +66,16 @@ READ8_MEMBER(tourtabl_state::tourtabl_get_databus_contents) } -ADDRESS_MAP_START(tourtabl_state::main_map) - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0100) AM_DEVREADWRITE("tia_video", tia_video_device, read, write) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0100) AM_RAM - AM_RANGE(0x0280, 0x029f) AM_DEVREADWRITE("riot1", riot6532_device, read, write) - AM_RANGE(0x0400, 0x047f) AM_RAM - AM_RANGE(0x0500, 0x051f) AM_DEVREADWRITE("riot2", riot6532_device, read, write) - AM_RANGE(0x0800, 0x1fff) AM_ROM - AM_RANGE(0xe800, 0xffff) AM_ROM -ADDRESS_MAP_END +void tourtabl_state::main_map(address_map &map) +{ + map(0x0000, 0x007f).mirror(0x0100).rw("tia_video", FUNC(tia_video_device::read), FUNC(tia_video_device::write)); + map(0x0080, 0x00ff).mirror(0x0100).ram(); + map(0x0280, 0x029f).rw("riot1", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0400, 0x047f).ram(); + map(0x0500, 0x051f).rw("riot2", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); + map(0x0800, 0x1fff).rom(); + map(0xe800, 0xffff).rom(); +} static INPUT_PORTS_START( tourtabl ) diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp index 8cfdbe99efc..1b8050708d1 100644 --- a/src/mame/drivers/tourvis.cpp +++ b/src/mame/drivers/tourvis.cpp @@ -333,38 +333,41 @@ static INPUT_PORTS_START( tourvision ) PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) // games slot status in bits 3 to 7 INPUT_PORTS_END -ADDRESS_MAP_START(tourvision_state::pce_mem) - AM_RANGE( 0x000000, 0x0FFFFF) AM_ROM - AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) - AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) - AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w ) - AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w ) - AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w ) - AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tourvision_state::pce_io) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) -ADDRESS_MAP_END +void tourvision_state::pce_mem(address_map &map) +{ + map(0x000000, 0x0FFFFF).rom(); + map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000); + map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); + map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w)); + map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1FF000, 0x1FF3FF).rw(this, FUNC(tourvision_state::pce_joystick_r), FUNC(tourvision_state::pce_joystick_w)); + map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); +} + +void tourvision_state::pce_io(address_map &map) +{ + map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); +} WRITE8_MEMBER(tourvision_state::tourvision_8085_d000_w) { //logerror( "D000 (8085) write %02x\n", data ); } -ADDRESS_MAP_START(tourvision_state::tourvision_8085_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x80ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w) - AM_RANGE(0x8100, 0x8107) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w) - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("DSW1") - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW2") - AM_RANGE(0xb000, 0xb000) AM_READNOP // unknown (must NOT be == 0x03 ? code at 0x1154) - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd000, 0xd000) AM_WRITE(tourvision_8085_d000_w ) - AM_RANGE(0xe000, 0xe1ff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_READNOP // protection or internal counter ? there is sometimes some data in BIOS0 which is replaced by 0xff in BIOS1 -ADDRESS_MAP_END +void tourvision_state::tourvision_8085_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x80ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x8100, 0x8107).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); + map(0x9000, 0x9000).portr("DSW1"); + map(0xa000, 0xa000).portr("DSW2"); + map(0xb000, 0xb000).nopr(); // unknown (must NOT be == 0x03 ? code at 0x1154) + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xd000, 0xd000).w(this, FUNC(tourvision_state::tourvision_8085_d000_w)); + map(0xe000, 0xe1ff).ram(); + map(0xf000, 0xf000).nopr(); // protection or internal counter ? there is sometimes some data in BIOS0 which is replaced by 0xff in BIOS1 +} WRITE8_MEMBER(tourvision_state::tourvision_i8155_a_w) { diff --git a/src/mame/drivers/toypop.cpp b/src/mame/drivers/toypop.cpp index 356ea6d2ccc..73718804111 100644 --- a/src/mame/drivers/toypop.cpp +++ b/src/mame/drivers/toypop.cpp @@ -355,51 +355,56 @@ WRITE8_MEMBER(namcos16_state::pal_bank_w) m_pal_bank = offset & 1; } -ADDRESS_MAP_START(namcos16_state::namcos16_master_base_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("fgvram") - AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("fgattr") - AM_RANGE(0x0800, 0x1fff) AM_RAM AM_SHARE("master_workram") - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("slave_sharedram") +void namcos16_state::namcos16_master_base_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("fgvram"); + map(0x0400, 0x07ff).ram().share("fgattr"); + map(0x0800, 0x1fff).ram().share("master_workram"); + map(0x2800, 0x2fff).ram().share("slave_sharedram"); // 0x6000 - 0x7fff i/o specific, guessing PAL controlled. - AM_RANGE(0x8000, 0x8fff) AM_WRITE(slave_halt_ctrl_w) - AM_RANGE(0x9000, 0x9fff) AM_WRITE(sound_halt_ctrl_w) - AM_RANGE(0xa000, 0xa001) AM_WRITE(pal_bank_w) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("master_rom",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos16_state::master_liblrabl_map) - AM_IMPORT_FROM( namcos16_master_base_map ) - AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) - AM_RANGE(0x6800, 0x680f) AM_DEVREADWRITE("58xx", namco58xx_device, read, write) - AM_RANGE(0x6810, 0x681f) AM_DEVREADWRITE("56xx_1", namco56xx_device, read, write) - AM_RANGE(0x6820, 0x682f) AM_DEVREADWRITE("56xx_2", namco56xx_device, read, write) - AM_RANGE(0x7000, 0x7fff) AM_READNOP AM_WRITE(irq_ctrl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos16_state::master_toypop_map) - AM_IMPORT_FROM( namcos16_master_base_map ) - AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("58xx", namco58xx_device, read, write) - AM_RANGE(0x6010, 0x601f) AM_DEVREADWRITE("56xx_1", namco56xx_device, read, write) - AM_RANGE(0x6020, 0x602f) AM_DEVREADWRITE("56xx_2", namco56xx_device, read, write) - AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) - AM_RANGE(0x7000, 0x7000) AM_READWRITE(irq_enable_r,irq_disable_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos16_state::slave_map) - AM_RANGE(0x000000, 0x007fff) AM_ROM AM_REGION("slave_rom", 0) - AM_RANGE(0x080000, 0x0bffff) AM_RAM - AM_RANGE(0x100000, 0x100fff) AM_READWRITE8(slave_shared_r,slave_shared_w,0x00ff) - AM_RANGE(0x180000, 0x187fff) AM_READWRITE8(bg_rmw_r,bg_rmw_w,0xffff) - AM_RANGE(0x190000, 0x1dffff) AM_RAM AM_SHARE("bgvram") - AM_RANGE(0x300000, 0x3fffff) AM_WRITE(slave_irq_enable_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos16_state::sound_map) - AM_RANGE(0x0000, 0x03ff) AM_DEVREADWRITE("namco", namco_15xx_device, sharedram_r, sharedram_w) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("sound_rom", 0) -ADDRESS_MAP_END + map(0x8000, 0x8fff).w(this, FUNC(namcos16_state::slave_halt_ctrl_w)); + map(0x9000, 0x9fff).w(this, FUNC(namcos16_state::sound_halt_ctrl_w)); + map(0xa000, 0xa001).w(this, FUNC(namcos16_state::pal_bank_w)); + map(0x8000, 0xffff).rom().region("master_rom", 0); +} + +void namcos16_state::master_liblrabl_map(address_map &map) +{ + namcos16_master_base_map(map); + map(0x6000, 0x63ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); + map(0x6800, 0x680f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write)); + map(0x6810, 0x681f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); + map(0x6820, 0x682f).rw(m_namco56xx_2, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); + map(0x7000, 0x7fff).nopr().w(this, FUNC(namcos16_state::irq_ctrl_w)); +} + +void namcos16_state::master_toypop_map(address_map &map) +{ + namcos16_master_base_map(map); + map(0x6000, 0x600f).rw(m_namco58xx, FUNC(namco58xx_device::read), FUNC(namco58xx_device::write)); + map(0x6010, 0x601f).rw(m_namco56xx_1, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); + map(0x6020, 0x602f).rw(m_namco56xx_2, FUNC(namco56xx_device::read), FUNC(namco56xx_device::write)); + map(0x6800, 0x6bff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); + map(0x7000, 0x7000).rw(this, FUNC(namcos16_state::irq_enable_r), FUNC(namcos16_state::irq_disable_w)); +} + +void namcos16_state::slave_map(address_map &map) +{ + map(0x000000, 0x007fff).rom().region("slave_rom", 0); + map(0x080000, 0x0bffff).ram(); + map(0x100000, 0x100fff).rw(this, FUNC(namcos16_state::slave_shared_r), FUNC(namcos16_state::slave_shared_w)).umask16(0x00ff); + map(0x180000, 0x187fff).rw(this, FUNC(namcos16_state::bg_rmw_r), FUNC(namcos16_state::bg_rmw_w)); + map(0x190000, 0x1dffff).ram().share("bgvram"); + map(0x300000, 0x3fffff).w(this, FUNC(namcos16_state::slave_irq_enable_w)); +} + +void namcos16_state::sound_map(address_map &map) +{ + map(0x0000, 0x03ff).rw(m_namco15xx, FUNC(namco_15xx_device::sharedram_r), FUNC(namco_15xx_device::sharedram_w)); + map(0xe000, 0xffff).rom().region("sound_rom", 0); +} diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp index 6ec33348cf2..3df862b27dd 100644 --- a/src/mame/drivers/tp84.cpp +++ b/src/mame/drivers/tp84.cpp @@ -170,45 +170,47 @@ WRITE8_MEMBER(tp84_state::tp84_sh_irqtrigger_w) -ADDRESS_MAP_START(tp84_state::tp84_cpu1_map) - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2800, 0x2800) AM_READ_PORT("SYSTEM") AM_WRITEONLY AM_SHARE("palette_bank") - AM_RANGE(0x2820, 0x2820) AM_READ_PORT("P1") - AM_RANGE(0x2840, 0x2840) AM_READ_PORT("P2") - AM_RANGE(0x2860, 0x2860) AM_READ_PORT("DSW1") - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2") - AM_RANGE(0x3000, 0x3007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x3800, 0x3800) AM_WRITE(tp84_sh_irqtrigger_w) - AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3c00, 0x3c00) AM_WRITEONLY AM_SHARE("scroll_x") - AM_RANGE(0x3e00, 0x3e00) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("bg_videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM AM_SHARE("fg_videoram") - AM_RANGE(0x4800, 0x4bff) AM_RAM AM_SHARE("bg_colorram") - AM_RANGE(0x4c00, 0x4fff) AM_RAM AM_SHARE("fg_colorram") - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tp84_state::tp84b_cpu1_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("bg_videoram") - AM_RANGE(0x0400, 0x07ff) AM_RAM AM_SHARE("fg_videoram") - AM_RANGE(0x0800, 0x0bff) AM_RAM AM_SHARE("bg_colorram") - AM_RANGE(0x0c00, 0x0fff) AM_RAM AM_SHARE("fg_colorram") - AM_RANGE(0x1000, 0x17ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("SYSTEM") AM_WRITEONLY AM_SHARE("palette_bank") - AM_RANGE(0x1a20, 0x1a20) AM_READ_PORT("P1") - AM_RANGE(0x1a40, 0x1a40) AM_READ_PORT("P2") - AM_RANGE(0x1a60, 0x1a60) AM_READ_PORT("DSW1") - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW2") - AM_RANGE(0x1c00, 0x1c07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x1e00, 0x1e00) AM_WRITE(tp84_sh_irqtrigger_w) - AM_RANGE(0x1e80, 0x1e80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1f00, 0x1f00) AM_WRITEONLY AM_SHARE("scroll_x") - AM_RANGE(0x1f80, 0x1f80) AM_WRITEONLY AM_SHARE("scroll_y") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tp84_state::tp84_cpu1_map(address_map &map) +{ + map(0x2000, 0x2000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x2800, 0x2800).portr("SYSTEM").writeonly().share("palette_bank"); + map(0x2820, 0x2820).portr("P1"); + map(0x2840, 0x2840).portr("P2"); + map(0x2860, 0x2860).portr("DSW1"); + map(0x3000, 0x3000).portr("DSW2"); + map(0x3000, 0x3007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x3800, 0x3800).w(this, FUNC(tp84_state::tp84_sh_irqtrigger_w)); + map(0x3a00, 0x3a00).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x3c00, 0x3c00).writeonly().share("scroll_x"); + map(0x3e00, 0x3e00).writeonly().share("scroll_y"); + map(0x4000, 0x43ff).ram().share("bg_videoram"); + map(0x4400, 0x47ff).ram().share("fg_videoram"); + map(0x4800, 0x4bff).ram().share("bg_colorram"); + map(0x4c00, 0x4fff).ram().share("fg_colorram"); + map(0x5000, 0x57ff).ram().share("share1"); + map(0x8000, 0xffff).rom(); +} + +void tp84_state::tp84b_cpu1_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("bg_videoram"); + map(0x0400, 0x07ff).ram().share("fg_videoram"); + map(0x0800, 0x0bff).ram().share("bg_colorram"); + map(0x0c00, 0x0fff).ram().share("fg_colorram"); + map(0x1000, 0x17ff).ram().share("share1"); + map(0x1800, 0x1800).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x1a00, 0x1a00).portr("SYSTEM").writeonly().share("palette_bank"); + map(0x1a20, 0x1a20).portr("P1"); + map(0x1a40, 0x1a40).portr("P2"); + map(0x1a60, 0x1a60).portr("DSW1"); + map(0x1c00, 0x1c00).portr("DSW2"); + map(0x1c00, 0x1c07).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x1e00, 0x1e00).w(this, FUNC(tp84_state::tp84_sh_irqtrigger_w)); + map(0x1e80, 0x1e80).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1f00, 0x1f00).writeonly().share("scroll_x"); + map(0x1f80, 0x1f80).writeonly().share("scroll_y"); + map(0x8000, 0xffff).rom(); +} WRITE8_MEMBER(tp84_state::sub_irq_mask_w) @@ -217,28 +219,30 @@ WRITE8_MEMBER(tp84_state::sub_irq_mask_w) } -ADDRESS_MAP_START(tp84_state::cpu2_map) +void tp84_state::cpu2_map(address_map &map) +{ // AM_RANGE(0x0000, 0x0000) AM_RAM /* Watch dog ?*/ - AM_RANGE(0x2000, 0x2000) AM_READ(tp84_scanline_r) /* beam position */ - AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_irq_mask_w) - AM_RANGE(0x6000, 0x679f) AM_RAM - AM_RANGE(0x67a0, 0x67ff) AM_RAM_WRITE(tp84_spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(tp84_state::audio_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8000) AM_READ(tp84_sh_timer_r) - AM_RANGE(0xa000, 0xa1ff) AM_WRITE(tp84_filter_w) - AM_RANGE(0xc000, 0xc000) AM_WRITENOP - AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("y2404_1", y2404_device, write) - AM_RANGE(0xc003, 0xc003) AM_DEVWRITE("y2404_2", y2404_device, write) - AM_RANGE(0xc004, 0xc004) AM_DEVWRITE("y2404_3", y2404_device, write) -ADDRESS_MAP_END + map(0x2000, 0x2000).r(this, FUNC(tp84_state::tp84_scanline_r)); /* beam position */ + map(0x4000, 0x4000).w(this, FUNC(tp84_state::sub_irq_mask_w)); + map(0x6000, 0x679f).ram(); + map(0x67a0, 0x67ff).ram().w(this, FUNC(tp84_state::tp84_spriteram_w)).share("spriteram"); + map(0x8000, 0x87ff).ram().share("share1"); + map(0xe000, 0xffff).rom(); +} + + +void tp84_state::audio_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8000).r(this, FUNC(tp84_state::tp84_sh_timer_r)); + map(0xa000, 0xa1ff).w(this, FUNC(tp84_state::tp84_filter_w)); + map(0xc000, 0xc000).nopw(); + map(0xc001, 0xc001).w("y2404_1", FUNC(y2404_device::write)); + map(0xc003, 0xc003).w("y2404_2", FUNC(y2404_device::write)); + map(0xc004, 0xc004).w("y2404_3", FUNC(y2404_device::write)); +} diff --git a/src/mame/drivers/tr175.cpp b/src/mame/drivers/tr175.cpp index 44ebbbbd2e9..b751d640407 100644 --- a/src/mame/drivers/tr175.cpp +++ b/src/mame/drivers/tr175.cpp @@ -49,34 +49,37 @@ READ8_MEMBER(tr175_state::fff400_r) return 0; } -ADDRESS_MAP_START(tr175_state::mem_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xfe8000, 0xfebfff) AM_RAM // 8-bit? - AM_RANGE(0xfefe00, 0xfefedd) AM_WRITENOP // 8-bit; cleared at startup - AM_RANGE(0xff8000, 0xffbfff) AM_RAM // main RAM - AM_RANGE(0xff0000, 0xff7fff) AM_RAM // video RAM? - AM_RANGE(0xffe000, 0xffe01f) AM_DEVREADWRITE8("duart", scn2681_device, read, write, 0xff00) - AM_RANGE(0xffe400, 0xffe40f) AM_DEVREADWRITE8("avdc", scn2674_device, read, write, 0xff00) - AM_RANGE(0xffe800, 0xffe805) AM_UNMAP //AM_DEVREADWRITE8("pai", um82c11_device, read, write, 0xff00) - AM_RANGE(0xffec00, 0xffec01) AM_WRITE8(ffec01_w, 0x00ff) - AM_RANGE(0xfff000, 0xfff001) AM_WRITE8(fff000_w, 0xff00) - AM_RANGE(0xfff400, 0xfff401) AM_READ8(fff400_r, 0xff00) - AM_RANGE(0xfffc00, 0xfffc01) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) - AM_RANGE(0xfffc02, 0xfffc03) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) - AM_RANGE(0xfffc04, 0xfffc05) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) -ADDRESS_MAP_END +void tr175_state::mem_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom().region("maincpu", 0); + map(0xfe8000, 0xfebfff).ram(); // 8-bit? + map(0xfefe00, 0xfefedd).nopw(); // 8-bit; cleared at startup + map(0xff8000, 0xffbfff).ram(); // main RAM + map(0xff0000, 0xff7fff).ram(); // video RAM? + map(0xffe000, 0xffe01f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask16(0xff00); + map(0xffe400, 0xffe40f).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0xff00); + map(0xffe800, 0xffe805).unmaprw(); //AM_DEVREADWRITE8("pai", um82c11_device, read, write, 0xff00) + map(0xffec01, 0xffec01).w(this, FUNC(tr175_state::ffec01_w)); + map(0xfff000, 0xfff000).w(this, FUNC(tr175_state::fff000_w)); + map(0xfff400, 0xfff400).r(this, FUNC(tr175_state::fff400_r)); + map(0xfffc01, 0xfffc01).w("ramdac", FUNC(ramdac_device::index_w)); + map(0xfffc03, 0xfffc03).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0xfffc05, 0xfffc05).w("ramdac", FUNC(ramdac_device::mask_w)); +} SCN2674_DRAW_CHARACTER_MEMBER(tr175_state::draw_character) { } -ADDRESS_MAP_START(tr175_state::vram_map) - AM_RANGE(0x0000, 0x3fff) AM_READNOP -ADDRESS_MAP_END +void tr175_state::vram_map(address_map &map) +{ + map(0x0000, 0x3fff).nopr(); +} -ADDRESS_MAP_START(tr175_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac", ramdac_device, ramdac_pal_r, ramdac_rgb666_w) -ADDRESS_MAP_END +void tr175_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} static INPUT_PORTS_START( tr175 ) INPUT_PORTS_END diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index 56b975a6d00..348eb13d665 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -235,27 +235,28 @@ WRITE_LINE_MEMBER(trackfld_state::irq_mask_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -ADDRESS_MAP_START(trackfld_state::main_map) - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* AFE */ - AM_RANGE(0x1080, 0x1087) AM_MIRROR(0x0078) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */ - AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2") - AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1281, 0x1281) AM_MIRROR(0x007c) AM_READ_PORT("IN0") - AM_RANGE(0x1282, 0x1282) AM_MIRROR(0x007c) AM_READ_PORT("IN1") - AM_RANGE(0x1283, 0x1283) AM_MIRROR(0x007c) AM_READ_PORT("DSW1") +void trackfld_state::main_map(address_map &map) +{ + map(0x1000, 0x1000).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* AFE */ + map(0x1080, 0x1087).mirror(0x0078).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x1100, 0x1100).mirror(0x007f).w("soundlatch", FUNC(generic_latch_8_device::write)); /* 32 */ + map(0x1200, 0x1200).mirror(0x007f).portr("DSW2"); + map(0x1280, 0x1280).mirror(0x007c).portr("SYSTEM"); + map(0x1281, 0x1281).mirror(0x007c).portr("IN0"); + map(0x1282, 0x1282).mirror(0x007c).portr("IN1"); + map(0x1283, 0x1283).mirror(0x007c).portr("DSW1"); /* not used according to schems: AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x007f) AM_READ_PORT("DSW3") */ - AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x1860, 0x1bff) AM_RAM - AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2") - AM_RANGE(0x1c60, 0x1fff) AM_RAM - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x1800, 0x183f).ram().share("spriteram2"); + map(0x1840, 0x185f).ram().share("scroll"); + map(0x1860, 0x1bff).ram(); + map(0x1c00, 0x1c3f).ram().share("spriteram"); + map(0x1c40, 0x1c5f).ram().share("scroll2"); + map(0x1c60, 0x1fff).ram(); + map(0x2800, 0x2fff).ram().share("nvram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram"); + map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram"); + map(0x6000, 0xffff).rom(); +} WRITE_LINE_MEMBER(trackfld_state::nmi_mask_w) { @@ -280,111 +281,116 @@ WRITE8_MEMBER(trackfld_state::trackfld_VLM5030_control_w) } -ADDRESS_MAP_START(trackfld_state::yieartf_map) - AM_RANGE(0x0000, 0x0000) AM_READ(trackfld_speech_r) AM_WRITE(konami_SN76496_latch_w) - AM_RANGE(0x0001, 0x0001) AM_WRITE(konami_SN76496_w) - AM_RANGE(0x0002, 0x0002) AM_WRITE(trackfld_VLM5030_control_w) - AM_RANGE(0x0003, 0x0003) AM_DEVWRITE("vlm", vlm5030_device, data_w) - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x007f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* AFE */ - AM_RANGE(0x1080, 0x1087) AM_MIRROR(0x0078) AM_DEVWRITE("mainlatch", ls259_device, write_d0) +void trackfld_state::yieartf_map(address_map &map) +{ + map(0x0000, 0x0000).r(this, FUNC(trackfld_state::trackfld_speech_r)).w(this, FUNC(trackfld_state::konami_SN76496_latch_w)); + map(0x0001, 0x0001).w(this, FUNC(trackfld_state::konami_SN76496_w)); + map(0x0002, 0x0002).w(this, FUNC(trackfld_state::trackfld_VLM5030_control_w)); + map(0x0003, 0x0003).w(m_vlm, FUNC(vlm5030_device::data_w)); + map(0x1000, 0x1000).mirror(0x007f).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* AFE */ + map(0x1080, 0x1087).mirror(0x0078).w("mainlatch", FUNC(ls259_device::write_d0)); // AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */ - AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2") - AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1281, 0x1281) AM_MIRROR(0x007c) AM_READ_PORT("IN0") - AM_RANGE(0x1282, 0x1282) AM_MIRROR(0x007c) AM_READ_PORT("IN1") - AM_RANGE(0x1283, 0x1283) AM_MIRROR(0x007c) AM_READ_PORT("DSW1") - AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x007f) AM_READ_PORT("DSW3") - AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x1860, 0x1bff) AM_RAM - AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2") - AM_RANGE(0x1c60, 0x1fff) AM_RAM - AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(trackfld_state::reaktor_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM + map(0x1200, 0x1200).mirror(0x007f).portr("DSW2"); + map(0x1280, 0x1280).mirror(0x007c).portr("SYSTEM"); + map(0x1281, 0x1281).mirror(0x007c).portr("IN0"); + map(0x1282, 0x1282).mirror(0x007c).portr("IN1"); + map(0x1283, 0x1283).mirror(0x007c).portr("DSW1"); + map(0x1300, 0x1300).mirror(0x007f).portr("DSW3"); + map(0x1800, 0x183f).ram().share("spriteram2"); + map(0x1840, 0x185f).ram().share("scroll"); + map(0x1860, 0x1bff).ram(); + map(0x1c00, 0x1c3f).ram().share("spriteram"); + map(0x1c40, 0x1c5f).ram().share("scroll2"); + map(0x1c60, 0x1fff).ram(); + map(0x2800, 0x2fff).ram().share("nvram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram"); + map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram"); + map(0x6000, 0xffff).rom(); +} + +void trackfld_state::reaktor_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); /* all usual addresses +0x8000 */ - AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x9080, 0x9087) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x9100, 0x9100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x9200, 0x9200) AM_READ_PORT("DSW2") - AM_RANGE(0x9280, 0x9280) AM_READ_PORT("SYSTEM") - AM_RANGE(0x9281, 0x9281) AM_READ_PORT("IN0") - AM_RANGE(0x9282, 0x9282) AM_READ_PORT("IN1") - AM_RANGE(0x9283, 0x9283) AM_READ_PORT("DSW1") - AM_RANGE(0x9800, 0x983f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x9840, 0x985f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x9860, 0x9bff) AM_RAM - AM_RANGE(0x9c00, 0x9c3f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9c40, 0x9c5f) AM_RAM AM_SHARE("scroll2") - AM_RANGE(0x9c60, 0x9fff) AM_RAM - AM_RANGE(0xa800, 0xabff) AM_RAM - AM_RANGE(0xac00, 0xafff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram") -ADDRESS_MAP_END + map(0x9000, 0x9000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x9080, 0x9087).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x9100, 0x9100).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x9200, 0x9200).portr("DSW2"); + map(0x9280, 0x9280).portr("SYSTEM"); + map(0x9281, 0x9281).portr("IN0"); + map(0x9282, 0x9282).portr("IN1"); + map(0x9283, 0x9283).portr("DSW1"); + map(0x9800, 0x983f).ram().share("spriteram2"); + map(0x9840, 0x985f).ram().share("scroll"); + map(0x9860, 0x9bff).ram(); + map(0x9c00, 0x9c3f).ram().share("spriteram"); + map(0x9c40, 0x9c5f).ram().share("scroll2"); + map(0x9c60, 0x9fff).ram(); + map(0xa800, 0xabff).ram(); + map(0xac00, 0xafff).ram().share("nvram"); + map(0xb000, 0xb7ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram"); + map(0xb800, 0xbfff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram"); +} /* Reaktor reads / writes some I/O ports, no idea what they're connected to, if anything */ -ADDRESS_MAP_START(trackfld_state::reaktor_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP - AM_RANGE(0x01, 0x01) AM_NOP - AM_RANGE(0x02, 0x02) AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(trackfld_state::mastkin_map) - AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x10b0, 0x10b7) AM_READNOP AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2") - AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1281, 0x1281) AM_READ_PORT("IN0") +void trackfld_state::reaktor_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); + map(0x01, 0x01).noprw(); + map(0x02, 0x02).nopw(); + map(0x03, 0x03).nopw(); +} + +void trackfld_state::mastkin_map(address_map &map) +{ + map(0x1000, 0x1000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x10b0, 0x10b7).nopr().w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x1100, 0x1100).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1200, 0x1200).portr("DSW2"); + map(0x1280, 0x1280).portr("SYSTEM"); + map(0x1281, 0x1281).portr("IN0"); // AM_RANGE(0x1282, 0x1282) AM_READ_PORT("IN1") /* unused */ - AM_RANGE(0x1283, 0x1283) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x1860, 0x1bff) AM_RAM - AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2") - AM_RANGE(0x1c60, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x27ff) AM_RAM // initialized at POST - AM_RANGE(0x2800, 0x2bff) AM_RAM - AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x6000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(trackfld_state::wizzquiz_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) - AM_RANGE(0x1080, 0x1087) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2") - AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1281, 0x1281) AM_READ_PORT("IN0") - AM_RANGE(0x1282, 0x1282) AM_READ_PORT("IN1") - AM_RANGE(0x1283, 0x1283) AM_READ_PORT("DSW1") - AM_RANGE(0x1800, 0x183f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x1840, 0x185f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x1860, 0x1bff) AM_RAM - AM_RANGE(0x1c00, 0x1c3f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c40, 0x1c5f) AM_RAM AM_SHARE("scroll2") - AM_RANGE(0x1c60, 0x1fff) AM_RAM - AM_RANGE(0x2800, 0x2bff) AM_RAM - AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(trackfld_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(trackfld_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xc000) AM_WRITE(questions_bank_w) - AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x1283, 0x1283).portr("DSW1"); + map(0x1800, 0x183f).ram().share("spriteram2"); + map(0x1840, 0x185f).ram().share("scroll"); + map(0x1860, 0x1bff).ram(); + map(0x1c00, 0x1c3f).ram().share("spriteram"); + map(0x1c40, 0x1c5f).ram().share("scroll2"); + map(0x1c60, 0x1fff).ram(); + map(0x2000, 0x27ff).ram(); // initialized at POST + map(0x2800, 0x2bff).ram(); + map(0x2c00, 0x2fff).ram().share("nvram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram"); + map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram"); + map(0x6000, 0xffff).rom(); +} + +void trackfld_state::wizzquiz_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x1000, 0x1000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); + map(0x1080, 0x1087).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x1100, 0x1100).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x1200, 0x1200).portr("DSW2"); + map(0x1280, 0x1280).portr("SYSTEM"); + map(0x1281, 0x1281).portr("IN0"); + map(0x1282, 0x1282).portr("IN1"); + map(0x1283, 0x1283).portr("DSW1"); + map(0x1800, 0x183f).ram().share("spriteram2"); + map(0x1840, 0x185f).ram().share("scroll"); + map(0x1860, 0x1bff).ram(); + map(0x1c00, 0x1c3f).ram().share("spriteram"); + map(0x1c40, 0x1c5f).ram().share("scroll2"); + map(0x1c60, 0x1fff).ram(); + map(0x2800, 0x2bff).ram(); + map(0x2c00, 0x2fff).ram().share("nvram"); + map(0x3000, 0x37ff).ram().w(this, FUNC(trackfld_state::trackfld_videoram_w)).share("videoram"); + map(0x3800, 0x3fff).ram().w(this, FUNC(trackfld_state::trackfld_colorram_w)).share("colorram"); + map(0xc000, 0xc000).w(this, FUNC(trackfld_state::questions_bank_w)); + map(0x6000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).rom(); +} READ8_MEMBER(trackfld_state::trackfld_SN76496_r) @@ -393,38 +399,41 @@ READ8_MEMBER(trackfld_state::trackfld_SN76496_r) return 0xff; // ? } -ADDRESS_MAP_START(trackfld_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_sh_timer_r) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP /* watch dog ?; reaktor reads here */ - AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_speech_r) - AM_RANGE(0xe003, 0xe003) AM_MIRROR(0x1c78) AM_SELECT(0x0380) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, trackfld_sound_w) - AM_RANGE(0xe004, 0xe004) AM_MIRROR(0x1ff8) AM_DEVWRITE("vlm", vlm5030_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trackfld_state::hyprolyb_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_sh_timer_r) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w) - AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1ff8) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x1ff8) AM_NOP /* watch dog ?; reaktor reads here */ - AM_RANGE(0xe002, 0xe002) AM_MIRROR(0x1ff8) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, busy_r) - AM_RANGE(0xe003, 0xe003) AM_MIRROR(0x1ff8) AM_WRITENOP - AM_RANGE(0xe004, 0xe004) AM_MIRROR(0x1ff8) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trackfld_state::vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void trackfld_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0x1c00).ram(); + map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8000).mirror(0x1fff).r("trackfld_audio", FUNC(trackfld_audio_device::trackfld_sh_timer_r)); + map(0xa000, 0xa000).mirror(0x1fff).w(this, FUNC(trackfld_state::konami_SN76496_latch_w)); + map(0xc000, 0xc000).mirror(0x1fff).r(this, FUNC(trackfld_state::trackfld_SN76496_r)).w(this, FUNC(trackfld_state::konami_SN76496_w)); + map(0xe000, 0xe000).mirror(0x1ff8).w("dac", FUNC(dac_byte_interface::write)); + map(0xe001, 0xe001).mirror(0x1ff8).noprw(); /* watch dog ?; reaktor reads here */ + map(0xe002, 0xe002).mirror(0x1ff8).r("trackfld_audio", FUNC(trackfld_audio_device::trackfld_speech_r)); + map(0xe003, 0xe003).mirror(0x1c78).select(0x0380).w("trackfld_audio", FUNC(trackfld_audio_device::trackfld_sound_w)); + map(0xe004, 0xe004).mirror(0x1ff8).w(m_vlm, FUNC(vlm5030_device::data_w)); +} + +void trackfld_state::hyprolyb_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).mirror(0x1c00).ram(); + map(0x6000, 0x6000).mirror(0x1fff).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8000).mirror(0x1fff).r("trackfld_audio", FUNC(trackfld_audio_device::trackfld_sh_timer_r)); + map(0xa000, 0xa000).mirror(0x1fff).w(this, FUNC(trackfld_state::konami_SN76496_latch_w)); + map(0xc000, 0xc000).mirror(0x1fff).r(this, FUNC(trackfld_state::trackfld_SN76496_r)).w(this, FUNC(trackfld_state::konami_SN76496_w)); + map(0xe000, 0xe000).mirror(0x1ff8).w("dac", FUNC(dac_byte_interface::write)); + map(0xe001, 0xe001).mirror(0x1ff8).noprw(); /* watch dog ?; reaktor reads here */ + map(0xe002, 0xe002).mirror(0x1ff8).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::busy_r)); + map(0xe003, 0xe003).mirror(0x1ff8).nopw(); + map(0xe004, 0xe004).mirror(0x1ff8).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::write)); +} + +void trackfld_state::vlm_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x1fff).rom(); +} static INPUT_PORTS_START( trackfld ) PORT_START("SYSTEM") @@ -1030,12 +1039,13 @@ MACHINE_CONFIG_START(trackfld_state::yieartf) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END -ADDRESS_MAP_START(trackfld_state::hyprolyb_adpcm_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, data_r) - AM_RANGE(0x1001, 0x1001) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, ready_r) - AM_RANGE(0x1002, 0x1002) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_data_w) - AM_RANGE(0x1003, 0x1003) AM_DEVREAD("hyprolyb_adpcm", hyprolyb_adpcm_device, msm_vck_r) +void trackfld_state::hyprolyb_adpcm_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x1000, 0x1000).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::data_r)); + map(0x1001, 0x1001).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::ready_r)); + map(0x1002, 0x1002).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_data_w)); + map(0x1003, 0x1003).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_vck_r)); // on init: // $1003 = $00 // $1002 = $FF @@ -1049,8 +1059,8 @@ ADDRESS_MAP_START(trackfld_state::hyprolyb_adpcm_map) // $1002 & $0f (out) = 5205 data // $1001 & $80 (in) = sound latch request // $1000 (in) = sound latch data - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x8000, 0xffff).rom(); +} /* same as the original, but uses ADPCM instead of VLM5030 */ /* also different memory handlers do handle that */ diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp index 62db4842a73..90a3d698804 100644 --- a/src/mame/drivers/travrusa.cpp +++ b/src/mame/drivers/travrusa.cpp @@ -58,21 +58,22 @@ and 2764 eprom (swapped D3/D4 and D5/D6 data lines) #include "screen.h" -ADDRESS_MAP_START(travrusa_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(travrusa_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9000) AM_WRITE(travrusa_scroll_x_low_w) - AM_RANGE(0xa000, 0xa000) AM_WRITE(travrusa_scroll_x_high_w) - AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_WRITE(travrusa_flipscreen_w) /* + coin counters - not written by shtrider */ - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("SYSTEM") /* IN0 */ - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P1") /* IN1 */ - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("P2") /* IN2 */ - AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2") /* DSW2 */ - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END +void travrusa_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(travrusa_state::travrusa_videoram_w)).share("videoram"); + map(0x9000, 0x9000).w(this, FUNC(travrusa_state::travrusa_scroll_x_low_w)); + map(0xa000, 0xa000).w(this, FUNC(travrusa_state::travrusa_scroll_x_high_w)); + map(0xc800, 0xc9ff).writeonly().share("spriteram"); + map(0xd000, 0xd000).w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).w(this, FUNC(travrusa_state::travrusa_flipscreen_w)); /* + coin counters - not written by shtrider */ + map(0xd000, 0xd000).portr("SYSTEM"); /* IN0 */ + map(0xd001, 0xd001).portr("P1"); /* IN1 */ + map(0xd002, 0xd002).portr("P2"); /* IN2 */ + map(0xd003, 0xd003).portr("DSW1"); /* DSW1 */ + map(0xd004, 0xd004).portr("DSW2"); /* DSW2 */ + map(0xe000, 0xefff).ram(); +} static INPUT_PORTS_START( travrusa ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/tricep.cpp b/src/mame/drivers/tricep.cpp index 183e92d4a4e..87f4de064ec 100644 --- a/src/mame/drivers/tricep.cpp +++ b/src/mame/drivers/tricep.cpp @@ -51,12 +51,13 @@ WRITE16_MEMBER( tricep_state::tricep_terminal_w ) m_terminal->write(space, 0, data >> 8); } -ADDRESS_MAP_START(tricep_state::tricep_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_SHARE("p_ram") - AM_RANGE(0x00fd0000, 0x00fd1fff) AM_ROM AM_REGION("user1",0) - AM_RANGE(0x00ff0028, 0x00ff0029) AM_READWRITE(tricep_terminal_r,tricep_terminal_w) -ADDRESS_MAP_END +void tricep_state::tricep_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000000, 0x0007ffff).ram().share("p_ram"); + map(0x00fd0000, 0x00fd1fff).rom().region("user1", 0); + map(0x00ff0028, 0x00ff0029).rw(this, FUNC(tricep_state::tricep_terminal_r), FUNC(tricep_state::tricep_terminal_w)); +} /* Input ports */ static INPUT_PORTS_START( tricep ) diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp index fb06de6ca6a..85b3c004cbb 100644 --- a/src/mame/drivers/triforce.cpp +++ b/src/mame/drivers/triforce.cpp @@ -484,12 +484,13 @@ WRITE64_MEMBER(triforce_state::gc_exi_w) { } -ADDRESS_MAP_START(triforce_state::gc_map) - AM_RANGE(0x00000000, 0x017fffff) AM_RAM - AM_RANGE(0x0c003000, 0x0c003fff) AM_READWRITE(gc_pi_r, gc_pi_w) - AM_RANGE(0x0c006800, 0x0c0068ff) AM_READWRITE(gc_exi_r, gc_exi_w) - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END +void triforce_state::gc_map(address_map &map) +{ + map(0x00000000, 0x017fffff).ram(); + map(0x0c003000, 0x0c003fff).rw(this, FUNC(triforce_state::gc_pi_r), FUNC(triforce_state::gc_pi_w)); + map(0x0c006800, 0x0c0068ff).rw(this, FUNC(triforce_state::gc_exi_r), FUNC(triforce_state::gc_exi_w)); + map(0xfff00000, 0xffffffff).rom().region("maincpu", 0).share("share2"); /* Program ROM */ +} void triforce_state::video_start() diff --git a/src/mame/drivers/triplhnt.cpp b/src/mame/drivers/triplhnt.cpp index ac40901a816..be1955f6246 100644 --- a/src/mame/drivers/triplhnt.cpp +++ b/src/mame/drivers/triplhnt.cpp @@ -114,26 +114,27 @@ READ8_MEMBER(triplhnt_state::da_latch_r) } -ADDRESS_MAP_START(triplhnt_state::triplhnt_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x300) - AM_RANGE(0x0400, 0x04ff) AM_WRITEONLY AM_SHARE("playfield_ram") - AM_RANGE(0x0800, 0x080f) AM_WRITEONLY AM_SHARE("vpos_ram") - AM_RANGE(0x0810, 0x081f) AM_WRITEONLY AM_SHARE("hpos_ram") - AM_RANGE(0x0820, 0x082f) AM_WRITEONLY AM_SHARE("orga_ram") - AM_RANGE(0x0830, 0x083f) AM_WRITEONLY AM_SHARE("code_ram") - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("0C00") - AM_RANGE(0x0c08, 0x0c08) AM_READ_PORT("0C08") - AM_RANGE(0x0c09, 0x0c09) AM_READ_PORT("0C09") - AM_RANGE(0x0c0a, 0x0c0a) AM_READ_PORT("0C0A") - AM_RANGE(0x0c0b, 0x0c0b) AM_READ(input_port_4_r) - AM_RANGE(0x0c10, 0x0c1f) AM_READ(da_latch_r) - AM_RANGE(0x0c20, 0x0c2f) AM_READ(cmos_r) AM_SHARE("nvram") - AM_RANGE(0x0c30, 0x0c3f) AM_READ(misc_r) AM_DEVWRITE("latch", f9334_device, write_a0) - AM_RANGE(0x0c40, 0x0c40) AM_READ_PORT("0C40") - AM_RANGE(0x0c48, 0x0c48) AM_READ_PORT("0C48") - AM_RANGE(0x7000, 0x7fff) AM_ROM /* program */ -ADDRESS_MAP_END +void triplhnt_state::triplhnt_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x00ff).ram().mirror(0x300); + map(0x0400, 0x04ff).writeonly().share("playfield_ram"); + map(0x0800, 0x080f).writeonly().share("vpos_ram"); + map(0x0810, 0x081f).writeonly().share("hpos_ram"); + map(0x0820, 0x082f).writeonly().share("orga_ram"); + map(0x0830, 0x083f).writeonly().share("code_ram"); + map(0x0c00, 0x0c00).portr("0C00"); + map(0x0c08, 0x0c08).portr("0C08"); + map(0x0c09, 0x0c09).portr("0C09"); + map(0x0c0a, 0x0c0a).portr("0C0A"); + map(0x0c0b, 0x0c0b).r(this, FUNC(triplhnt_state::input_port_4_r)); + map(0x0c10, 0x0c1f).r(this, FUNC(triplhnt_state::da_latch_r)); + map(0x0c20, 0x0c2f).r(this, FUNC(triplhnt_state::cmos_r)).share("nvram"); + map(0x0c30, 0x0c3f).r(this, FUNC(triplhnt_state::misc_r)).w(m_latch, FUNC(f9334_device::write_a0)); + map(0x0c40, 0x0c40).portr("0C40"); + map(0x0c48, 0x0c48).portr("0C48"); + map(0x7000, 0x7fff).rom(); /* program */ +} static INPUT_PORTS_START( triplhnt ) diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp index b39f3a72520..09a3c5775e1 100644 --- a/src/mame/drivers/trs80.cpp +++ b/src/mame/drivers/trs80.cpp @@ -145,183 +145,197 @@ There don't seem to be any JV1 boot disks for Model III/4. #include "formats/dmk_dsk.h" -ADDRESS_MAP_START(trs80_state::trs80_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x3800, 0x38ff) AM_READ(trs80_keyboard_r) - AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x7fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::trs80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::model1_map) - AM_RANGE(0x0000, 0x377f) AM_ROM // sys80,ht1080 needs up to 375F - AM_RANGE(0x37de, 0x37de) AM_READWRITE(sys80_f9_r, sys80_f8_w) - AM_RANGE(0x37df, 0x37df) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0x37e0, 0x37e3) AM_READWRITE(trs80_irq_status_r, trs80_motor_w) - AM_RANGE(0x37e4, 0x37e7) AM_WRITE(trs80_cassunit_w) - AM_RANGE(0x37e8, 0x37eb) AM_READWRITE(trs80_printer_r, trs80_printer_w) - AM_RANGE(0x37ec, 0x37ec) AM_READ(trs80_wd179x_r) - AM_RANGE(0x37ec, 0x37ec) AM_DEVWRITE("fdc", fd1793_device, cmd_w) - AM_RANGE(0x37ed, 0x37ed) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) - AM_RANGE(0x37ee, 0x37ee) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) - AM_RANGE(0x37ef, 0x37ef) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) - AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r) - AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::model1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::sys80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xf8, 0xf8) AM_DEVREAD("uart", ay31015_device, receive) AM_WRITE(sys80_f8_w) - AM_RANGE(0xf9, 0xf9) AM_READ(sys80_f9_r) AM_DEVWRITE("uart", ay31015_device, transmit) - AM_RANGE(0xfd, 0xfd) AM_READWRITE(trs80_printer_r, trs80_printer_w) - AM_RANGE(0xfe, 0xfe) AM_WRITE(sys80_fe_w) - AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::lnw80_map) - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::lnw80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w) - AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") - AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w) - AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xfe, 0xfe) AM_READWRITE(lnw80_fe_r, lnw80_fe_w) - AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::model3_map) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::model3_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w) - AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w) - AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w) - AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w) - AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w) - AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) - AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) - AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) - AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::model4_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x84, 0x87) AM_WRITE(trs80m4_84_w) - AM_RANGE(0x88, 0x89) AM_WRITE(trs80m4_88_w) - AM_RANGE(0x90, 0x93) AM_WRITE(trs80m4_90_w) - AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w) - AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w) - AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w) - AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w) - AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w) - AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) - AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) - AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) - AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::model4p_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x84, 0x87) AM_WRITE(trs80m4_84_w) - AM_RANGE(0x88, 0x89) AM_WRITE(trs80m4_88_w) - AM_RANGE(0x90, 0x93) AM_WRITE(trs80m4_90_w) - AM_RANGE(0x9c, 0x9f) AM_WRITE(trs80m4p_9c_w) - AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w) - AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w) - AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w) - AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w) - AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w) - AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) - AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) - AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) - AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::meritum_map) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0x3800, 0x38ff) AM_MIRROR(0x300) AM_READ(trs80_keyboard_r) - AM_RANGE(0x3c00, 0x3fff) AM_READWRITE(trs80_videoram_r, trs80_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::meritum_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH +void trs80_state::trs80_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x3800, 0x38ff).r(this, FUNC(trs80_state::trs80_keyboard_r)); + map(0x3c00, 0x3fff).rw(this, FUNC(trs80_state::trs80_videoram_r), FUNC(trs80_state::trs80_videoram_w)).share("videoram"); + map(0x4000, 0x7fff).ram(); +} + +void trs80_state::trs80_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w)); +} + +void trs80_state::model1_map(address_map &map) +{ + map(0x0000, 0x377f).rom(); // sys80,ht1080 needs up to 375F + map(0x37de, 0x37de).rw(this, FUNC(trs80_state::sys80_f9_r), FUNC(trs80_state::sys80_f8_w)); + map(0x37df, 0x37df).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0x37e0, 0x37e3).rw(this, FUNC(trs80_state::trs80_irq_status_r), FUNC(trs80_state::trs80_motor_w)); + map(0x37e4, 0x37e7).w(this, FUNC(trs80_state::trs80_cassunit_w)); + map(0x37e8, 0x37eb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); + map(0x37ec, 0x37ec).r(this, FUNC(trs80_state::trs80_wd179x_r)); + map(0x37ec, 0x37ec).w(m_fdc, FUNC(fd1793_device::cmd_w)); + map(0x37ed, 0x37ed).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w)); + map(0x37ee, 0x37ee).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w)); + map(0x37ef, 0x37ef).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w)); + map(0x3800, 0x38ff).mirror(0x300).r(this, FUNC(trs80_state::trs80_keyboard_r)); + map(0x3c00, 0x3fff).rw(this, FUNC(trs80_state::trs80_videoram_r), FUNC(trs80_state::trs80_videoram_w)).share("videoram"); + map(0x4000, 0xffff).ram(); +} + +void trs80_state::model1_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w)); +} + +void trs80_state::sys80_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xf8, 0xf8).r("uart", FUNC(ay31015_device::receive)).w(this, FUNC(trs80_state::sys80_f8_w)); + map(0xf9, 0xf9).r(this, FUNC(trs80_state::sys80_f9_r)).w("uart", FUNC(ay31015_device::transmit)); + map(0xfd, 0xfd).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); + map(0xfe, 0xfe).w(this, FUNC(trs80_state::sys80_fe_w)); + map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w)); +} + +void trs80_state::lnw80_map(address_map &map) +{ + map(0x4000, 0xffff).ram(); +} + +void trs80_state::lnw80_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w)); + map(0xe9, 0xe9).portr("E9"); + map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w)); + map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xfe, 0xfe).rw(this, FUNC(trs80_state::lnw80_fe_r), FUNC(trs80_state::lnw80_fe_w)); + map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w)); +} + +void trs80_state::model3_map(address_map &map) +{ +} + +void trs80_state::model3_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w)); + map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w)); + map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w)); + map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w)); + map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w)); + map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w)); + map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r)); + map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w)); + map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w)); + map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w)); + map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w)); + map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w)); + map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); + map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w)); +} + +void trs80_state::model4_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x84, 0x87).w(this, FUNC(trs80_state::trs80m4_84_w)); + map(0x88, 0x89).w(this, FUNC(trs80_state::trs80m4_88_w)); + map(0x90, 0x93).w(this, FUNC(trs80_state::trs80m4_90_w)); + map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w)); + map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w)); + map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w)); + map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w)); + map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w)); + map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w)); + map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r)); + map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w)); + map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w)); + map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w)); + map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w)); + map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w)); + map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); + map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w)); +} + +void trs80_state::model4p_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x84, 0x87).w(this, FUNC(trs80_state::trs80m4_84_w)); + map(0x88, 0x89).w(this, FUNC(trs80_state::trs80m4_88_w)); + map(0x90, 0x93).w(this, FUNC(trs80_state::trs80m4_90_w)); + map(0x9c, 0x9f).w(this, FUNC(trs80_state::trs80m4p_9c_w)); + map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w)); + map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w)); + map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w)); + map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w)); + map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w)); + map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w)); + map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r)); + map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w)); + map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w)); + map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w)); + map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w)); + map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w)); + map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); + map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w)); +} + +void trs80_state::meritum_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0x3800, 0x38ff).mirror(0x300).r(this, FUNC(trs80_state::trs80_keyboard_r)); + map(0x3c00, 0x3fff).rw(this, FUNC(trs80_state::trs80_videoram_r), FUNC(trs80_state::trs80_videoram_w)).share("videoram"); + map(0x4000, 0xffff).ram(); +} + +void trs80_state::meritum_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); // There are specific writes to ports 03, F3, F7, F8, FA, FB, FD // so perhaps this system uses devices at these locations. // The disk input expects values that are different to the usual, // eg. port F0 should be 5, port F2 should have bit 3 set. //AM_RANGE(0x03, 0x03) unknown - AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) - AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) + map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r)); + map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w)); + map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w)); + map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w)); + map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w)); + map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w)); + map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); //AM_RANGE(0xfc, 0xfd) unknown - AM_RANGE(0xff, 0xff) AM_READWRITE(trs80_ff_r, trs80_ff_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80_state::cp500_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xe0, 0xe3) AM_READWRITE(trs80m4_e0_r, trs80m4_e0_w) - AM_RANGE(0xe4, 0xe4) AM_READWRITE(trs80m4_e4_r, trs80m4_e4_w) - AM_RANGE(0xe8, 0xe8) AM_READWRITE(trs80m4_e8_r, trs80m4_e8_w) - AM_RANGE(0xe9, 0xe9) AM_READ_PORT("E9") AM_WRITE(trs80m4_e9_w) - AM_RANGE(0xea, 0xea) AM_READWRITE(trs80m4_ea_r, trs80m4_ea_w) - AM_RANGE(0xeb, 0xeb) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xec, 0xef) AM_READWRITE(trs80m4_ec_r, trs80m4_ec_w) - AM_RANGE(0xf0, 0xf0) AM_READ(trs80_wd179x_r) - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("fdc", fd1793_device, cmd_w) - AM_RANGE(0xf1, 0xf1) AM_DEVREADWRITE("fdc", fd1793_device, track_r, track_w) - AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("fdc", fd1793_device, sector_r, sector_w) - AM_RANGE(0xf3, 0xf3) AM_DEVREADWRITE("fdc", fd1793_device, data_r, data_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE(trs80m4_f4_w) - AM_RANGE(0xf4, 0xf7) AM_READ(cp500_a11_flipflop_toggle) - AM_RANGE(0xf8, 0xfb) AM_READWRITE(trs80_printer_r, trs80_printer_w) - AM_RANGE(0xfc, 0xff) AM_READWRITE(trs80m4_ff_r, trs80m4_ff_w) -ADDRESS_MAP_END + map(0xff, 0xff).rw(this, FUNC(trs80_state::trs80_ff_r), FUNC(trs80_state::trs80_ff_w)); +} + +void trs80_state::cp500_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0xe0, 0xe3).rw(this, FUNC(trs80_state::trs80m4_e0_r), FUNC(trs80_state::trs80m4_e0_w)); + map(0xe4, 0xe4).rw(this, FUNC(trs80_state::trs80m4_e4_r), FUNC(trs80_state::trs80m4_e4_w)); + map(0xe8, 0xe8).rw(this, FUNC(trs80_state::trs80m4_e8_r), FUNC(trs80_state::trs80m4_e8_w)); + map(0xe9, 0xe9).portr("E9").w(this, FUNC(trs80_state::trs80m4_e9_w)); + map(0xea, 0xea).rw(this, FUNC(trs80_state::trs80m4_ea_r), FUNC(trs80_state::trs80m4_ea_w)); + map(0xeb, 0xeb).rw("uart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xec, 0xef).rw(this, FUNC(trs80_state::trs80m4_ec_r), FUNC(trs80_state::trs80m4_ec_w)); + map(0xf0, 0xf0).r(this, FUNC(trs80_state::trs80_wd179x_r)); + map(0xf0, 0xf0).w(m_fdc, FUNC(fd1793_device::cmd_w)); + map(0xf1, 0xf1).rw(m_fdc, FUNC(fd1793_device::track_r), FUNC(fd1793_device::track_w)); + map(0xf2, 0xf2).rw(m_fdc, FUNC(fd1793_device::sector_r), FUNC(fd1793_device::sector_w)); + map(0xf3, 0xf3).rw(m_fdc, FUNC(fd1793_device::data_r), FUNC(fd1793_device::data_w)); + map(0xf4, 0xf4).w(this, FUNC(trs80_state::trs80m4_f4_w)); + map(0xf4, 0xf7).r(this, FUNC(trs80_state::cp500_a11_flipflop_toggle)); + map(0xf8, 0xfb).rw(this, FUNC(trs80_state::trs80_printer_r), FUNC(trs80_state::trs80_printer_w)); + map(0xfc, 0xff).rw(this, FUNC(trs80_state::trs80m4_ff_r), FUNC(trs80_state::trs80m4_ff_w)); +} /************************************************************************** w/o SHIFT with SHIFT diff --git a/src/mame/drivers/trs80dt1.cpp b/src/mame/drivers/trs80dt1.cpp index ea83fab4e9f..1977a415d4d 100644 --- a/src/mame/drivers/trs80dt1.cpp +++ b/src/mame/drivers/trs80dt1.cpp @@ -143,20 +143,22 @@ WRITE8_MEMBER( trs80dt1_state::port3_w ) m_beep->set_state(BIT(data, 4)); } -ADDRESS_MAP_START(trs80dt1_state::prg_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x2000, 0x27ff) AM_READ(dma_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(trs80dt1_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xbfff) // A14 not used - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xa800, 0xa83f) AM_MIRROR(0x3c0) AM_DEVREADWRITE("nvram", x2210_device, read, write) // X2210 - AM_RANGE(0xac00, 0xafff) AM_READ(key_r) - AM_RANGE(0xb000, 0xb3ff) AM_READ_PORT("X9") // also reads some RS232 inputs - AM_RANGE(0xb400, 0xb7ff) AM_WRITE(store_w) - AM_RANGE(0xbc00, 0xbc01) AM_MIRROR(0x3fe) AM_DEVREADWRITE("crtc", i8275_device, read, write) // i8276 -ADDRESS_MAP_END +void trs80dt1_state::prg_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x2000, 0x27ff).r(this, FUNC(trs80dt1_state::dma_r)); +} + +void trs80dt1_state::io_map(address_map &map) +{ + map.global_mask(0xbfff); // A14 not used + map(0xa000, 0xa7ff).ram().share("videoram"); + map(0xa800, 0xa83f).mirror(0x3c0).rw(m_nvram, FUNC(x2210_device::read), FUNC(x2210_device::write)); // X2210 + map(0xac00, 0xafff).r(this, FUNC(trs80dt1_state::key_r)); + map(0xb000, 0xb3ff).portr("X9"); // also reads some RS232 inputs + map(0xb400, 0xb7ff).w(this, FUNC(trs80dt1_state::store_w)); + map(0xbc00, 0xbc01).mirror(0x3fe).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); // i8276 +} /* Input ports */ static INPUT_PORTS_START( trs80dt1 ) diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp index 2d103a844fa..8d90f060809 100644 --- a/src/mame/drivers/trs80m2.cpp +++ b/src/mame/drivers/trs80m2.cpp @@ -319,40 +319,43 @@ WRITE8_MEMBER( trs80m16_state::ual_w ) // ADDRESS_MAP( z80_mem ) //------------------------------------------------- -ADDRESS_MAP_START(trs80m2_state::z80_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void trs80m2_state::z80_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(trs80m2_state::read), FUNC(trs80m2_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( z80_io ) //------------------------------------------------- -ADDRESS_MAP_START(trs80m2_state::z80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write) - AM_RANGE(0xe4, 0xe7) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0xef, 0xef) AM_WRITE(drvslt_w) - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, cd_ba_r, cd_ba_w) - AM_RANGE(0xf8, 0xf8) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write) - AM_RANGE(0xf9, 0xf9) AM_WRITE(rom_enable_w) - AM_RANGE(0xfc, 0xfc) AM_READ(keyboard_r) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) - AM_RANGE(0xfd, 0xfd) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w) - AM_RANGE(0xfe, 0xfe) AM_READ(rtc_r) - AM_RANGE(0xff, 0xff) AM_READWRITE(nmi_r, nmi_w) -ADDRESS_MAP_END +void trs80m2_state::z80_io(address_map &map) +{ + map.global_mask(0xff); + map(0xe0, 0xe3).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xe4, 0xe7).rw(this, FUNC(trs80m2_state::fdc_r), FUNC(trs80m2_state::fdc_w)); + map(0xef, 0xef).w(this, FUNC(trs80m2_state::drvslt_w)); + map(0xf0, 0xf3).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0xf4, 0xf7).rw(Z80SIO_TAG, FUNC(z80sio0_device::cd_ba_r), FUNC(z80sio0_device::cd_ba_w)); + map(0xf8, 0xf8).rw(m_dmac, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0xf9, 0xf9).w(this, FUNC(trs80m2_state::rom_enable_w)); + map(0xfc, 0xfc).r(this, FUNC(trs80m2_state::keyboard_r)).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0xfd, 0xfd).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xfe, 0xfe).r(this, FUNC(trs80m2_state::rtc_r)); + map(0xff, 0xff).rw(this, FUNC(trs80m2_state::nmi_r), FUNC(trs80m2_state::nmi_w)); +} //------------------------------------------------- // ADDRESS_MAP( m16_z80_io ) //------------------------------------------------- -ADDRESS_MAP_START(trs80m16_state::m16_z80_io) - AM_IMPORT_FROM(z80_io) - AM_RANGE(0xde, 0xde) AM_WRITE(tcl_w) - AM_RANGE(0xdf, 0xdf) AM_WRITE(ual_w) -ADDRESS_MAP_END +void trs80m16_state::m16_z80_io(address_map &map) +{ + z80_io(map); + map(0xde, 0xde).w(this, FUNC(trs80m16_state::tcl_w)); + map(0xdf, 0xdf).w(this, FUNC(trs80m16_state::ual_w)); +} //------------------------------------------------- diff --git a/src/mame/drivers/truco.cpp b/src/mame/drivers/truco.cpp index be5bc6f72c3..e98057f3f56 100644 --- a/src/mame/drivers/truco.cpp +++ b/src/mame/drivers/truco.cpp @@ -261,15 +261,16 @@ WRITE_LINE_MEMBER(truco_state::pia_irqb_w) * Memory Map * *******************************************/ -ADDRESS_MAP_START(truco_state::main_map) - AM_RANGE(0x0000, 0x17ff) AM_RAM /* General purpose RAM */ - AM_RANGE(0x1800, 0x7bff) AM_RAM AM_SHARE("videoram") /* Video RAM */ - AM_RANGE(0x7c00, 0x7fff) AM_RAM AM_SHARE("battery_ram") /* Battery backed RAM */ - AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x8004, 0x8004) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x8005, 0x8005) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x8008, 0xffff) AM_ROM -ADDRESS_MAP_END +void truco_state::main_map(address_map &map) +{ + map(0x0000, 0x17ff).ram(); /* General purpose RAM */ + map(0x1800, 0x7bff).ram().share("videoram"); /* Video RAM */ + map(0x7c00, 0x7fff).ram().share("battery_ram"); /* Battery backed RAM */ + map(0x8000, 0x8003).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x8004, 0x8004).w("crtc", FUNC(mc6845_device::address_w)); + map(0x8005, 0x8005).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x8008, 0xffff).rom(); +} /* CRTC: diff --git a/src/mame/drivers/trucocl.cpp b/src/mame/drivers/trucocl.cpp index 4b233a0690f..5d370dde5c2 100644 --- a/src/mame/drivers/trucocl.cpp +++ b/src/mame/drivers/trucocl.cpp @@ -92,17 +92,18 @@ WRITE8_MEMBER(trucocl_state::audio_dac_w) m_dac_irq_timer->adjust(attotime::from_hz( 16000 )); } -ADDRESS_MAP_START(trucocl_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(trucocl_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(trucocl_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x4c00, 0x4fff) AM_RAM - AM_RANGE(0x5000, 0x5000) AM_WRITE(irq_enable_w) - AM_RANGE(0x5000, 0x503f) AM_READ_PORT("IN0") - AM_RANGE(0x5080, 0x5080) AM_WRITE(audio_dac_w) - AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void trucocl_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram().w(this, FUNC(trucocl_state::trucocl_videoram_w)).share("videoram"); + map(0x4400, 0x47ff).ram().w(this, FUNC(trucocl_state::trucocl_colorram_w)).share("colorram"); + map(0x4c00, 0x4fff).ram(); + map(0x5000, 0x5000).w(this, FUNC(trucocl_state::irq_enable_w)); + map(0x5000, 0x503f).portr("IN0"); + map(0x5080, 0x5080).w(this, FUNC(trucocl_state::audio_dac_w)); + map(0x50c0, 0x50c0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x8000, 0xffff).rom(); +} static INPUT_PORTS_START( trucocl ) PORT_START("IN0") diff --git a/src/mame/drivers/trvmadns.cpp b/src/mame/drivers/trvmadns.cpp index 59f3e0398f3..11d3ae6b6dc 100644 --- a/src/mame/drivers/trvmadns.cpp +++ b/src/mame/drivers/trvmadns.cpp @@ -256,24 +256,26 @@ WRITE8_MEMBER(trvmadns_state::trvmadns_tileram_w) } -ADDRESS_MAP_START(trvmadns_state::cpu_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank1") - AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x6000, 0x7fff) AM_WRITE(trvmadns_gfxram_w) AM_SHARE("gfxram") - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(trvmadns_tileram_w) AM_SHARE("tileram") - AM_RANGE(0xc000, 0xc01f) AM_RAM_WRITE(trvmadns_palette_w) AM_SHARE("paletteram") - AM_RANGE(0xe000, 0xe000) AM_WRITE(w2)//NOP - AM_RANGE(0xe004, 0xe004) AM_WRITE(w3)//NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(trvmadns_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x80, 0x80) AM_WRITE(trvmadns_banking_w) -ADDRESS_MAP_END +void trvmadns_state::cpu_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).bankr("bank1"); + map(0x7000, 0x7fff).bankr("bank2"); + map(0x6000, 0x7fff).w(this, FUNC(trvmadns_state::trvmadns_gfxram_w)).share("gfxram"); + map(0x8000, 0x87ff).ram(); + map(0xa000, 0xa7ff).ram().w(this, FUNC(trvmadns_state::trvmadns_tileram_w)).share("tileram"); + map(0xc000, 0xc01f).ram().w(this, FUNC(trvmadns_state::trvmadns_palette_w)).share("paletteram"); + map(0xe000, 0xe000).w(this, FUNC(trvmadns_state::w2));//NOP + map(0xe004, 0xe004).w(this, FUNC(trvmadns_state::w3));//NOP +} + +void trvmadns_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).portr("IN0"); + map(0x80, 0x80).w(this, FUNC(trvmadns_state::trvmadns_banking_w)); +} static INPUT_PORTS_START( trvmadns ) PORT_START("IN0") diff --git a/src/mame/drivers/trvquest.cpp b/src/mame/drivers/trvquest.cpp index 48addfaf38b..70a8faaad89 100644 --- a/src/mame/drivers/trvquest.cpp +++ b/src/mame/drivers/trvquest.cpp @@ -61,20 +61,21 @@ WRITE_LINE_MEMBER(gameplan_state::trvquest_misc_w) // data & 1 -> led on/off ? } -ADDRESS_MAP_START(gameplan_state::cpu_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") // cmos ram - AM_RANGE(0x2000, 0x27ff) AM_RAM // main ram - AM_RANGE(0x3800, 0x380f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) - AM_RANGE(0x3810, 0x381f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) - AM_RANGE(0x3820, 0x382f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) - AM_RANGE(0x3830, 0x3831) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x3840, 0x3841) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x3850, 0x3850) AM_READNOP //watchdog_reset_r ? - AM_RANGE(0x8000, 0x9fff) AM_READ(trvquest_question_r) - AM_RANGE(0xa000, 0xa000) AM_WRITEONLY AM_SHARE("trvquest_q") - AM_RANGE(0xa000, 0xa000) AM_READNOP // bogus read from the game code when reads question roms - AM_RANGE(0xb000, 0xffff) AM_ROM -ADDRESS_MAP_END +void gameplan_state::cpu_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); // cmos ram + map(0x2000, 0x27ff).ram(); // main ram + map(0x3800, 0x380f).rw(m_via_1, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x3810, 0x381f).rw(m_via_2, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x3820, 0x382f).rw(m_via_0, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0x3830, 0x3831).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x3840, 0x3841).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x3850, 0x3850).nopr(); //watchdog_reset_r ? + map(0x8000, 0x9fff).r(this, FUNC(gameplan_state::trvquest_question_r)); + map(0xa000, 0xa000).writeonly().share("trvquest_q"); + map(0xa000, 0xa000).nopr(); // bogus read from the game code when reads question roms + map(0xb000, 0xffff).rom(); +} static INPUT_PORTS_START( trvquest ) PORT_START("IN0") diff --git a/src/mame/drivers/tryout.cpp b/src/mame/drivers/tryout.cpp index 74e5ffbe42e..bfb81950633 100644 --- a/src/mame/drivers/tryout.cpp +++ b/src/mame/drivers/tryout.cpp @@ -56,34 +56,36 @@ WRITE8_MEMBER(tryout_state::bankswitch_w) membank("bank1")->set_entry(data & 0x01); } -ADDRESS_MAP_START(tryout_state::main_cpu) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0xbfff) AM_ROM - AM_RANGE(0xc800, 0xc87f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vram_r, vram_w) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW") - AM_RANGE(0xe001, 0xe001) AM_READ_PORT("P1") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P2") - AM_RANGE(0xe003, 0xe003) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe301, 0xe301) AM_WRITE(flipscreen_w) - AM_RANGE(0xe302, 0xe302) AM_WRITE(bankswitch_w) - AM_RANGE(0xe401, 0xe401) AM_WRITE(vram_bankswitch_w) - AM_RANGE(0xe402, 0xe404) AM_WRITEONLY AM_SHARE("gfx_control") - AM_RANGE(0xe414, 0xe414) AM_WRITE(sound_w) - AM_RANGE(0xe417, 0xe417) AM_WRITE(nmi_ack_w) - AM_RANGE(0xfff0, 0xffff) AM_ROM AM_REGION("maincpu", 0xbff0) /* reset vectors */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(tryout_state::sound_cpu) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd000) AM_WRITE(sound_irq_ack_w) - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tryout_state::main_cpu(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x17ff).ram().w(this, FUNC(tryout_state::videoram_w)).share("videoram"); + map(0x2000, 0x3fff).bankr("bank1"); + map(0x4000, 0xbfff).rom(); + map(0xc800, 0xc87f).ram().share("spriteram"); + map(0xcc00, 0xcc7f).ram().share("spriteram2"); + map(0xd000, 0xd7ff).rw(this, FUNC(tryout_state::vram_r), FUNC(tryout_state::vram_w)); + map(0xe000, 0xe000).portr("DSW"); + map(0xe001, 0xe001).portr("P1"); + map(0xe002, 0xe002).portr("P2"); + map(0xe003, 0xe003).portr("SYSTEM"); + map(0xe301, 0xe301).w(this, FUNC(tryout_state::flipscreen_w)); + map(0xe302, 0xe302).w(this, FUNC(tryout_state::bankswitch_w)); + map(0xe401, 0xe401).w(this, FUNC(tryout_state::vram_bankswitch_w)); + map(0xe402, 0xe404).writeonly().share("gfx_control"); + map(0xe414, 0xe414).w(this, FUNC(tryout_state::sound_w)); + map(0xe417, 0xe417).w(this, FUNC(tryout_state::nmi_ack_w)); + map(0xfff0, 0xffff).rom().region("maincpu", 0xbff0); /* reset vectors */ +} + +void tryout_state::sound_cpu(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd000).w(this, FUNC(tryout_state::sound_irq_ack_w)); + map(0xc000, 0xffff).rom(); +} INPUT_CHANGED_MEMBER(tryout_state::coin_inserted) { diff --git a/src/mame/drivers/ts3000.cpp b/src/mame/drivers/ts3000.cpp index 399f375844e..75b18664f74 100644 --- a/src/mame/drivers/ts3000.cpp +++ b/src/mame/drivers/ts3000.cpp @@ -28,13 +28,15 @@ private: // required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(ts3000_state::mem_map) - AM_RANGE(0x00000,0x0ffff) AM_RAM - AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void ts3000_state::mem_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); + map(0xfc000, 0xfffff).rom().region("roms", 0); +} -ADDRESS_MAP_START(ts3000_state::io_map) -ADDRESS_MAP_END +void ts3000_state::io_map(address_map &map) +{ +} static INPUT_PORTS_START( ts3000 ) INPUT_PORTS_END diff --git a/src/mame/drivers/ts802.cpp b/src/mame/drivers/ts802.cpp index 16f082f598e..8166445d100 100644 --- a/src/mame/drivers/ts802.cpp +++ b/src/mame/drivers/ts802.cpp @@ -65,38 +65,40 @@ private: required_device<generic_terminal_device> m_terminal; }; -ADDRESS_MAP_START(ts802_state::ts802_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x1000, 0xffff) AM_RAM -ADDRESS_MAP_END +void ts802_state::ts802_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).bankr("bankr0").bankw("bankw0"); + map(0x1000, 0xffff).ram(); +} -ADDRESS_MAP_START(ts802_state::ts802_io) +void ts802_state::ts802_io(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_READ(port00_r) // DIP switches + map.global_mask(0xff); + map(0x00, 0x03).r(this, FUNC(ts802_state::port00_r)); // DIP switches // 04 - written once after OS boot to bank in RAM from 0000-3FFF instead of ROM. 4000-FFFF is always RAM. - AM_RANGE(0x04, 0x07) AM_WRITE(port04_w) + map(0x04, 0x07).w(this, FUNC(ts802_state::port04_w)); // 08-0B: Z80 CTC - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) + map(0x08, 0x0b).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // 0C-0F: Z80 SIO #1 //AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("dart1", z80dart_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x0c, 0x0c) AM_READ(port0c_r) - AM_RANGE(0x0d, 0x0d) AM_READ(port0d_r) AM_DEVWRITE("terminal", generic_terminal_device, write) - AM_RANGE(0x0e, 0x0e) AM_READ(port0e_r) - AM_RANGE(0x0f, 0x0f) AM_READ(port0f_r) + map(0x0c, 0x0c).r(this, FUNC(ts802_state::port0c_r)); + map(0x0d, 0x0d).r(this, FUNC(ts802_state::port0d_r)).w(m_terminal, FUNC(generic_terminal_device::write)); + map(0x0e, 0x0e).r(this, FUNC(ts802_state::port0e_r)); + map(0x0f, 0x0f).r(this, FUNC(ts802_state::port0f_r)); // 10: Z80 DMA - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("dma", z80dma_device, read, write) + map(0x10, 0x13).rw("dma", FUNC(z80dma_device::read), FUNC(z80dma_device::write)); // 14-17: WD 1793 - AM_RANGE(0x14, 0x17) AM_DEVREADWRITE("fdc", fd1793_device, read, write) + map(0x14, 0x17).rw("fdc", FUNC(fd1793_device::read), FUNC(fd1793_device::write)); // 18: floppy misc. - AM_RANGE(0x18, 0x1c) AM_WRITE(port18_w) + map(0x18, 0x1c).w(this, FUNC(ts802_state::port18_w)); // 20-23: Z80 SIO #2 - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("dart2", z80dart_device, ba_cd_r, ba_cd_w) + map(0x20, 0x23).rw("dart2", FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w)); // 48-4F: WD1000 harddisk controller // 80: LEDs - AM_RANGE(0x80, 0x80) AM_WRITE(port80_w) -ADDRESS_MAP_END + map(0x80, 0x80).w(this, FUNC(ts802_state::port80_w)); +} /* Input ports */ diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp index 5c6b936bdb0..20a2b33ae39 100644 --- a/src/mame/drivers/ts803.cpp +++ b/src/mame/drivers/ts803.cpp @@ -102,11 +102,12 @@ private: required_ioport m_io_dsw; }; -ADDRESS_MAP_START(ts803_state::ts803_mem) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x4000, 0xbfff) AM_RAMBANK("bank4") - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END +void ts803_state::ts803_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0"); + map(0x4000, 0xbfff).bankrw("bank4"); + map(0xc000, 0xffff).ram(); +} /* @@ -131,20 +132,21 @@ Winchester Disk Controller B0-BF (WDC CE) Graphics Controller C0-CF (GIO SEL) */ -ADDRESS_MAP_START(ts803_state::ts803_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x0f) AM_READ_PORT("DSW") - AM_RANGE(0x10, 0x1f) AM_READWRITE(port10_r, port10_w) - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("sti", z80sti_device, read, write) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("dart", z80dart_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0x90, 0x9f) AM_READWRITE(disk_0_control_r,disk_0_control_w) - AM_RANGE(0xa0, 0xbf) AM_READWRITE(porta0_r, porta0_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("crtc", sy6545_1_device, status_r, address_w) - AM_RANGE(0xc2, 0xc2) AM_DEVREADWRITE("crtc", sy6545_1_device, register_r, register_w) - AM_RANGE(0xc4, 0xc4) AM_WRITE(crtc_controlreg_w) -ADDRESS_MAP_END +void ts803_state::ts803_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x0f).portr("DSW"); + map(0x10, 0x1f).rw(this, FUNC(ts803_state::port10_r), FUNC(ts803_state::port10_w)); + map(0x20, 0x2f).rw("sti", FUNC(z80sti_device::read), FUNC(z80sti_device::write)); + map(0x30, 0x33).rw("dart", FUNC(z80dart_device::cd_ba_r), FUNC(z80dart_device::cd_ba_w)); + map(0x80, 0x83).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x90, 0x9f).rw(this, FUNC(ts803_state::disk_0_control_r), FUNC(ts803_state::disk_0_control_w)); + map(0xa0, 0xbf).rw(this, FUNC(ts803_state::porta0_r), FUNC(ts803_state::porta0_w)); + map(0xc0, 0xc0).rw("crtc", FUNC(sy6545_1_device::status_r), FUNC(sy6545_1_device::address_w)); + map(0xc2, 0xc2).rw("crtc", FUNC(sy6545_1_device::register_r), FUNC(sy6545_1_device::register_w)); + map(0xc4, 0xc4).w(this, FUNC(ts803_state::crtc_controlreg_w)); +} /* Input ports */ static INPUT_PORTS_START( ts803 ) diff --git a/src/mame/drivers/ts816.cpp b/src/mame/drivers/ts816.cpp index 4de66497282..88c9298501a 100644 --- a/src/mame/drivers/ts816.cpp +++ b/src/mame/drivers/ts816.cpp @@ -58,47 +58,49 @@ private: required_device<generic_terminal_device> m_terminal; }; -ADDRESS_MAP_START(ts816_state::ts816_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE(0x4000, 0xdfff ) AM_RAMBANK("bank1") - AM_RANGE(0xe000, 0xffff ) AM_RAMBANK("bank2") -ADDRESS_MAP_END - -ADDRESS_MAP_START(ts816_state::ts816_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) // Tape status byte 1 - AM_RANGE(0x01, 0x01) // Tape status byte 2 and diagnostics mode - AM_RANGE(0x02, 0x02) // Hard Disk status - AM_RANGE(0x03, 0x03) // Hard Disk output latch - AM_RANGE(0x04, 0x04) // Tape output latch byte 2 - AM_RANGE(0x05, 0x05) // Tape output latch byte 1 - AM_RANGE(0x07, 0x07) // Indicator load (LED) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("sio1", z80sio_device, cd_ba_r, cd_ba_w) // SIO 1 for user 1 & 2 - AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("sio5", z80sio_device, cd_ba_r, cd_ba_w) // SIO 5 for user 9 & 10 - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("sio2", z80sio_device, cd_ba_r, cd_ba_w) // SIO 2 for user 3 & 4 - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio6", z80sio_device, cd_ba_r, cd_ba_w) // SIO 6 for user 11 & 12 - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("sio3", z80sio_device, cd_ba_r, cd_ba_w) // SIO 3 for user 5 & 6 - AM_RANGE(0x38, 0x3b) AM_DEVREADWRITE("sio7", z80sio_device, cd_ba_r, cd_ba_w) // SIO 7 for user 13 & 14 - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("sio4", z80sio_device, cd_ba_r, cd_ba_w) // SIO 4 for user 7 & 8 - AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("sio8", z80sio_device, cd_ba_r, cd_ba_w) // SIO 8 for user 15 & 16 +void ts816_state::ts816_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0"); + map(0x4000, 0xdfff).bankrw("bank1"); + map(0xe000, 0xffff).bankrw("bank2"); +} + +void ts816_state::ts816_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00); // Tape status byte 1 + map(0x01, 0x01); // Tape status byte 2 and diagnostics mode + map(0x02, 0x02); // Hard Disk status + map(0x03, 0x03); // Hard Disk output latch + map(0x04, 0x04); // Tape output latch byte 2 + map(0x05, 0x05); // Tape output latch byte 1 + map(0x07, 0x07); // Indicator load (LED) + map(0x10, 0x13).rw("sio1", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 1 for user 1 & 2 + map(0x18, 0x1b).rw("sio5", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 5 for user 9 & 10 + map(0x20, 0x23).rw("sio2", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 2 for user 3 & 4 + map(0x28, 0x2b).rw("sio6", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 6 for user 11 & 12 + map(0x30, 0x33).rw("sio3", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 3 for user 5 & 6 + map(0x38, 0x3b).rw("sio7", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 7 for user 13 & 14 + map(0x40, 0x43).rw("sio4", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 4 for user 7 & 8 + map(0x48, 0x4b).rw("sio8", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 8 for user 15 & 16 //AM_RANGE(0x50, 0x53) // SIO 0 for RS232 1 and part of tape interface - AM_RANGE(0x50, 0x50) AM_READ(keyin_r) AM_DEVWRITE("terminal", generic_terminal_device, write) - AM_RANGE(0x52, 0x52) AM_READ(status_r) - AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("sio9", z80sio_device, cd_ba_r, cd_ba_w) // SIO 9 for RS232 2 & 3 - AM_RANGE(0x60, 0x60) AM_READ_PORT("DSW") - AM_RANGE(0x68, 0x68) AM_WRITE(port68_w) // set 2nd bank latch - AM_RANGE(0x70, 0x78) AM_WRITE(port78_w) // reset 2nd bank latch (manual can't decide between 70 and 78, so we take both) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ctc1", z80ctc_device, read, write) // CTC 1 (ch 0 baud A) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("dma", z80dma_device, read, write) // DMA - AM_RANGE(0xA0, 0xA0) // WDC status / command - AM_RANGE(0xA1, 0xA1) // WDC data - AM_RANGE(0xB0, 0xB0) AM_NOP // undocumented, written to at @0707 and @0710 - AM_RANGE(0xC0, 0xC3) AM_DEVREADWRITE("ctc2", z80ctc_device, read, write) // CTC 2 (ch 0 baud B, ch 1 baud C) - AM_RANGE(0xD0, 0xD3) AM_DEVREADWRITE("pio", z80pio_device, read, write) - AM_RANGE(0xE0, 0xE0) AM_WRITE(porte0_w) // set ENDRAM memory banking - AM_RANGE(0xF0, 0xF0) AM_WRITE(portf0_w) // reset ENDRAM memory banking -ADDRESS_MAP_END + map(0x50, 0x50).r(this, FUNC(ts816_state::keyin_r)).w(m_terminal, FUNC(generic_terminal_device::write)); + map(0x52, 0x52).r(this, FUNC(ts816_state::status_r)); + map(0x58, 0x5b).rw("sio9", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); // SIO 9 for RS232 2 & 3 + map(0x60, 0x60).portr("DSW"); + map(0x68, 0x68).w(this, FUNC(ts816_state::port68_w)); // set 2nd bank latch + map(0x70, 0x78).w(this, FUNC(ts816_state::port78_w)); // reset 2nd bank latch (manual can't decide between 70 and 78, so we take both) + map(0x80, 0x83).rw("ctc1", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // CTC 1 (ch 0 baud A) + map(0x90, 0x93).rw("dma", FUNC(z80dma_device::read), FUNC(z80dma_device::write)); // DMA + map(0xA0, 0xA0); // WDC status / command + map(0xA1, 0xA1); // WDC data + map(0xB0, 0xB0).noprw(); // undocumented, written to at @0707 and @0710 + map(0xC0, 0xC3).rw("ctc2", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); // CTC 2 (ch 0 baud B, ch 1 baud C) + map(0xD0, 0xD3).rw("pio", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0xE0, 0xE0).w(this, FUNC(ts816_state::porte0_w)); // set ENDRAM memory banking + map(0xF0, 0xF0).w(this, FUNC(ts816_state::portf0_w)); // reset ENDRAM memory banking +} /* Input ports */ diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp index 21bbdc4154b..24f67c7db49 100644 --- a/src/mame/drivers/tsamurai.cpp +++ b/src/mame/drivers/tsamurai.cpp @@ -143,83 +143,88 @@ WRITE_LINE_MEMBER(tsamurai_state::coin2_counter_w) } -ADDRESS_MAP_START(tsamurai_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM +void tsamurai_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); /* protection? - there are writes as well...*/ - AM_RANGE(0xd803, 0xd803) AM_READ(tsamurai_unknown_d803_r) - AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r) - AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r) - AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r) - - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe440, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram") - - AM_RANGE(0xf400, 0xf400) AM_WRITENOP - AM_RANGE(0xf401, 0xf401) AM_WRITE(sound_command1_w) - AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w) - - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w) - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w) - AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w) - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2") - - AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tsamurai_state::m660_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM + map(0xd803, 0xd803).r(this, FUNC(tsamurai_state::tsamurai_unknown_d803_r)); + map(0xd806, 0xd806).r(this, FUNC(tsamurai_state::unknown_d806_r)); + map(0xd900, 0xd900).r(this, FUNC(tsamurai_state::unknown_d900_r)); + map(0xd938, 0xd938).r(this, FUNC(tsamurai_state::unknown_d938_r)); + + map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram"); + map(0xe400, 0xe43f).ram().w(this, FUNC(tsamurai_state::fg_colorram_w)).share("colorram"); + map(0xe440, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().w(this, FUNC(tsamurai_state::bg_videoram_w)).share("bg_videoram"); + map(0xf000, 0xf3ff).ram().share("spriteram"); + + map(0xf400, 0xf400).nopw(); + map(0xf401, 0xf401).w(this, FUNC(tsamurai_state::sound_command1_w)); + map(0xf402, 0xf402).w(this, FUNC(tsamurai_state::sound_command2_w)); + + map(0xf800, 0xf800).portr("P1"); + map(0xf801, 0xf801).portr("P2").w(this, FUNC(tsamurai_state::bgcolor_w)); + map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tsamurai_state::scrolly_w)); + map(0xf803, 0xf803).w(this, FUNC(tsamurai_state::scrollx_w)); + map(0xf804, 0xf804).portr("DSW1"); + map(0xf805, 0xf805).portr("DSW2"); + + map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0)); +} + +void tsamurai_state::m660_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); /* protection? - there are writes as well...*/ - AM_RANGE(0xd803, 0xd803) AM_READ(m660_unknown_d803_r) - AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r) - AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r) - AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r) - - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe440, 0xe7ff) AM_RAM - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram") - - AM_RANGE(0xf400, 0xf400) AM_WRITENOP/* This is always written with F401, F402 & F403 data */ - AM_RANGE(0xf401, 0xf401) AM_WRITE(m660_sound_command3_w) - AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w) - AM_RANGE(0xf403, 0xf403) AM_WRITE(sound_command1_w) - - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w) - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w) - AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w) - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2") - - AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tsamurai_state::z80_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tsamurai_state::z80_m660_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITENOP /* ? */ - AM_RANGE(0x01, 0x01) AM_WRITENOP /* Written continuously. Increments with level. */ - AM_RANGE(0x02, 0x02) AM_WRITENOP /* Always follows above with 0x01 data */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(tsamurai_state::vsgongf_audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END + map(0xd803, 0xd803).r(this, FUNC(tsamurai_state::m660_unknown_d803_r)); + map(0xd806, 0xd806).r(this, FUNC(tsamurai_state::unknown_d806_r)); + map(0xd900, 0xd900).r(this, FUNC(tsamurai_state::unknown_d900_r)); + map(0xd938, 0xd938).r(this, FUNC(tsamurai_state::unknown_d938_r)); + + map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram"); + map(0xe400, 0xe43f).ram().w(this, FUNC(tsamurai_state::fg_colorram_w)).share("colorram"); + map(0xe440, 0xe7ff).ram(); + map(0xe800, 0xefff).ram().w(this, FUNC(tsamurai_state::bg_videoram_w)).share("bg_videoram"); + map(0xf000, 0xf3ff).ram().share("spriteram"); + + map(0xf400, 0xf400).nopw();/* This is always written with F401, F402 & F403 data */ + map(0xf401, 0xf401).w(this, FUNC(tsamurai_state::m660_sound_command3_w)); + map(0xf402, 0xf402).w(this, FUNC(tsamurai_state::sound_command2_w)); + map(0xf403, 0xf403).w(this, FUNC(tsamurai_state::sound_command1_w)); + + map(0xf800, 0xf800).portr("P1"); + map(0xf801, 0xf801).portr("P2").w(this, FUNC(tsamurai_state::bgcolor_w)); + map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tsamurai_state::scrolly_w)); + map(0xf803, 0xf803).w(this, FUNC(tsamurai_state::scrollx_w)); + map(0xf804, 0xf804).portr("DSW1"); + map(0xf805, 0xf805).portr("DSW2"); + + map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0)); +} + +void tsamurai_state::z80_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} + +void tsamurai_state::z80_m660_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).nopw(); /* ? */ + map(0x01, 0x01).nopw(); /* Written continuously. Increments with level. */ + map(0x02, 0x02).nopw(); /* Always follows above with 0x01 data */ +} + +void tsamurai_state::vsgongf_audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} READ8_MEMBER(tsamurai_state::sound_command1_r) { @@ -237,58 +242,64 @@ READ8_MEMBER(tsamurai_state::m660_sound_command3_r) } /*******************************************************************************/ -ADDRESS_MAP_START(tsamurai_state::sound1_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_READ(sound_command1_r) - AM_RANGE(0x6001, 0x6001) AM_WRITENOP /* ? - probably clear IRQ */ - AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x7f00, 0x7fff) AM_RAM -ADDRESS_MAP_END +void tsamurai_state::sound1_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x6000).r(this, FUNC(tsamurai_state::sound_command1_r)); + map(0x6001, 0x6001).nopw(); /* ? - probably clear IRQ */ + map(0x6002, 0x6002).w("dac1", FUNC(dac_byte_interface::write)); + map(0x7f00, 0x7fff).ram(); +} /*******************************************************************************/ -ADDRESS_MAP_START(tsamurai_state::sound2_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_READ(sound_command2_r) - AM_RANGE(0x6001, 0x6001) AM_WRITENOP /* ? - probably clear IRQ */ - AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x7f00, 0x7fff) AM_RAM -ADDRESS_MAP_END +void tsamurai_state::sound2_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x6000).r(this, FUNC(tsamurai_state::sound_command2_r)); + map(0x6001, 0x6001).nopw(); /* ? - probably clear IRQ */ + map(0x6002, 0x6002).w("dac2", FUNC(dac_byte_interface::write)); + map(0x7f00, 0x7fff).ram(); +} /*******************************************************************************/ -ADDRESS_MAP_START(tsamurai_state::sound1_m660_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ(sound_command1_r) - AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */ - AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END +void tsamurai_state::sound1_m660_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::sound_command1_r)); + map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */ + map(0xc002, 0xc002).w("dac1", FUNC(dac_byte_interface::write)); + map(0x8000, 0x87ff).ram(); +} /*******************************************************************************/ -ADDRESS_MAP_START(tsamurai_state::sound2_m660_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ(sound_command2_r) - AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */ - AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END +void tsamurai_state::sound2_m660_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::sound_command2_r)); + map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */ + map(0xc002, 0xc002).w("dac2", FUNC(dac_byte_interface::write)); + map(0x8000, 0x87ff).ram(); +} /*******************************************************************************/ -ADDRESS_MAP_START(tsamurai_state::sound3_m660_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ(m660_sound_command3_r) - AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */ - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xfffc, 0xffff) AM_RAM /* CPU writes here - music data */ -ADDRESS_MAP_END +void tsamurai_state::sound3_m660_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::m660_sound_command3_r)); + map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */ + map(0x8000, 0x87ff).ram(); + map(0xfffc, 0xffff).ram(); /* CPU writes here - music data */ +} -ADDRESS_MAP_START(tsamurai_state::sound3_m660_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void tsamurai_state::sound3_m660_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} /*******************************************************************************/ @@ -332,36 +343,38 @@ WRITE8_MEMBER(tsamurai_state::vsgongf_sound_command_w) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -ADDRESS_MAP_START(tsamurai_state::vsgongf_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa003, 0xa003) AM_READONLY - AM_RANGE(0xa006, 0xa006) AM_READ(vsgongf_a006_r) /* protection */ - AM_RANGE(0xa100, 0xa100) AM_READ(vsgongf_a100_r) /* protection */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM /* work ram */ - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe43f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe440, 0xe47b) AM_RAM - AM_RANGE(0xe800, 0xe800) AM_WRITE(vsgongf_sound_command_w) - AM_RANGE(0xec00, 0xec06) AM_WRITEONLY - AM_RANGE(0xf000, 0xf000) AM_WRITE(vsgongf_color_w) - AM_RANGE(0xf400, 0xf400) AM_WRITEONLY /* vreg? always 0 */ - AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1") - AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2") - AM_RANGE(0xf800, 0xf800) AM_WRITENOP - AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* vreg? always 0 */ - AM_RANGE(0xf803, 0xf803) AM_WRITENOP /* vreg? always 0 */ - AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tsamurai_state::sound_vsgongf_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_RAM /* work RAM */ - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(vsgongf_sound_nmi_enable_w) /* NMI enable */ - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("dac", dac_byte_interface, write) -ADDRESS_MAP_END +void tsamurai_state::vsgongf_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa003, 0xa003).readonly(); + map(0xa006, 0xa006).r(this, FUNC(tsamurai_state::vsgongf_a006_r)); /* protection */ + map(0xa100, 0xa100).r(this, FUNC(tsamurai_state::vsgongf_a100_r)); /* protection */ + map(0xc000, 0xc7ff).ram(); /* work ram */ + map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram"); + map(0xe400, 0xe43f).ram().share("spriteram"); + map(0xe440, 0xe47b).ram(); + map(0xe800, 0xe800).w(this, FUNC(tsamurai_state::vsgongf_sound_command_w)); + map(0xec00, 0xec06).writeonly(); + map(0xf000, 0xf000).w(this, FUNC(tsamurai_state::vsgongf_color_w)); + map(0xf400, 0xf400).writeonly(); /* vreg? always 0 */ + map(0xf800, 0xf800).portr("P1"); + map(0xf801, 0xf801).portr("P2"); + map(0xf802, 0xf802).portr("SYSTEM"); + map(0xf804, 0xf804).portr("DSW1"); + map(0xf805, 0xf805).portr("DSW2"); + map(0xf800, 0xf800).nopw(); + map(0xf801, 0xf801).nopw(); /* vreg? always 0 */ + map(0xf803, 0xf803).nopw(); /* vreg? always 0 */ + map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0)); +} + +void tsamurai_state::sound_vsgongf_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x6000, 0x63ff).ram(); /* work RAM */ + map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(tsamurai_state::vsgongf_sound_nmi_enable_w)); /* NMI enable */ + map(0xa000, 0xa000).w("dac", FUNC(dac_byte_interface::write)); +} /*******************************************************************************/ diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp index 31a429454ea..17fe7af5025 100644 --- a/src/mame/drivers/tsispch.cpp +++ b/src/mame/drivers/tsispch.cpp @@ -311,31 +311,35 @@ DRIVER_INIT_MEMBER(tsispch_state,prose2k) 1 1 0 * * * * * * * * * * * * * * * * s ROMs 2 and 3 1 1 1 * * * * * * * * * * * * * * * * s ROMs 0 and 1 */ -ADDRESS_MAP_START(tsispch_state::i8086_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x02FFF) AM_MIRROR(0x34000) AM_RAM // verified; 6264*2 sram, only first 3/4 used - AM_RANGE(0x03000, 0x03001) AM_MIRROR(0x341FC) AM_DEVREADWRITE8("i8251a_u15", i8251_device, data_r, data_w, 0x00FF) - AM_RANGE(0x03002, 0x03003) AM_MIRROR(0x341FC) AM_DEVREADWRITE8("i8251a_u15", i8251_device, status_r, control_w, 0x00FF) - AM_RANGE(0x03200, 0x03203) AM_MIRROR(0x341FC) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0x00FF) // AMD P8259 PIC @ U5 (reads as 04 and 7c, upper byte is open bus) - AM_RANGE(0x03400, 0x03401) AM_MIRROR(0x341FE) AM_READ8(dsw_r, 0x00FF) // verified, read from dipswitch s4 - AM_RANGE(0x03400, 0x03401) AM_MIRROR(0x341FE) AM_WRITE8(peripheral_w, 0xFF00) // verified, write to the 4 leds, plus 4 control bits - AM_RANGE(0x03600, 0x03601) AM_MIRROR(0x341FC) AM_READWRITE(dsp_data_r, dsp_data_w) // verified; UPD77P20 data reg r/w - AM_RANGE(0x03602, 0x03603) AM_MIRROR(0x341FC) AM_READWRITE(dsp_status_r, dsp_status_w) // verified; UPD77P20 status reg r - AM_RANGE(0xc0000, 0xfffff) AM_ROM // verified -ADDRESS_MAP_END +void tsispch_state::i8086_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x02FFF).mirror(0x34000).ram(); // verified; 6264*2 sram, only first 3/4 used + map(0x03000, 0x03000).mirror(0x341FC).rw("i8251a_u15", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x03002, 0x03002).mirror(0x341FC).rw("i8251a_u15", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x03200, 0x03203).mirror(0x341FC).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // AMD P8259 PIC @ U5 (reads as 04 and 7c, upper byte is open bus) + map(0x03400, 0x03400).mirror(0x341FE).r(this, FUNC(tsispch_state::dsw_r)); // verified, read from dipswitch s4 + map(0x03401, 0x03401).mirror(0x341FE).w(this, FUNC(tsispch_state::peripheral_w)); // verified, write to the 4 leds, plus 4 control bits + map(0x03600, 0x03601).mirror(0x341FC).rw(this, FUNC(tsispch_state::dsp_data_r), FUNC(tsispch_state::dsp_data_w)); // verified; UPD77P20 data reg r/w + map(0x03602, 0x03603).mirror(0x341FC).rw(this, FUNC(tsispch_state::dsp_status_r), FUNC(tsispch_state::dsp_status_w)); // verified; UPD77P20 status reg r + map(0xc0000, 0xfffff).rom(); // verified +} // Technically the IO line of the i8086 is completely ignored (it is running in 8086 MIN mode,I believe, which may ignore IO) -ADDRESS_MAP_START(tsispch_state::i8086_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void tsispch_state::i8086_io(address_map &map) +{ + map.unmap_value_high(); +} -ADDRESS_MAP_START(tsispch_state::dsp_prg_map) - AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION("dspprg", 0) -ADDRESS_MAP_END +void tsispch_state::dsp_prg_map(address_map &map) +{ + map(0x0000, 0x01ff).rom().region("dspprg", 0); +} -ADDRESS_MAP_START(tsispch_state::dsp_data_map) - AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION("dspdata", 0) -ADDRESS_MAP_END +void tsispch_state::dsp_data_map(address_map &map) +{ + map(0x0000, 0x01ff).rom().region("dspdata", 0); +} /****************************************************************************** diff --git a/src/mame/drivers/ttchamp.cpp b/src/mame/drivers/ttchamp.cpp index 7835218f4b6..9939a3910e4 100644 --- a/src/mame/drivers/ttchamp.cpp +++ b/src/mame/drivers/ttchamp.cpp @@ -502,9 +502,10 @@ WRITE16_MEMBER(ttchamp_state::mem_w) -ADDRESS_MAP_START(ttchamp_state::ttchamp_map) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mem_r, mem_w) -ADDRESS_MAP_END +void ttchamp_state::ttchamp_map(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(ttchamp_state::mem_r), FUNC(ttchamp_state::mem_w)); +} /* Re-use same parameters as before (one-shot) */ READ16_MEMBER(ttchamp_state::port1e_r) @@ -544,29 +545,30 @@ WRITE16_MEMBER(ttchamp_state::port62_w) m_rombank = 0; } -ADDRESS_MAP_START(ttchamp_state::ttchamp_io) - AM_RANGE(0x0000, 0x0001) AM_WRITENOP // startup only, nmi enable? +void ttchamp_state::ttchamp_io(address_map &map) +{ + map(0x0000, 0x0001).nopw(); // startup only, nmi enable? - AM_RANGE(0x0002, 0x0003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0004, 0x0005) AM_READ_PORT("P1_P2") + map(0x0002, 0x0003).portr("SYSTEM"); + map(0x0004, 0x0005).portr("P1_P2"); - AM_RANGE(0x0006, 0x0007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) + map(0x0006, 0x0006).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - AM_RANGE(0x0018, 0x0019) AM_READ(blit_start_r) // read before using bus write offset as blit parameters - AM_RANGE(0x001e, 0x001f) AM_READ(port1e_r) // read before some blit operations (but not all) + map(0x0018, 0x0019).r(this, FUNC(ttchamp_state::blit_start_r)); // read before using bus write offset as blit parameters + map(0x001e, 0x001f).r(this, FUNC(ttchamp_state::port1e_r)); // read before some blit operations (but not all) - AM_RANGE(0x0008, 0x0009) AM_WRITE(paldat_w) - AM_RANGE(0x000a, 0x000b) AM_WRITE(paloff_w) // bit 0x8000 sometimes gets set, why? + map(0x0008, 0x0009).w(this, FUNC(ttchamp_state::paldat_w)); + map(0x000a, 0x000b).w(this, FUNC(ttchamp_state::paloff_w)); // bit 0x8000 sometimes gets set, why? - AM_RANGE(0x0010, 0x0011) AM_WRITE(port10_w) + map(0x0010, 0x0011).w(this, FUNC(ttchamp_state::port10_w)); - AM_RANGE(0x0020, 0x0021) AM_WRITE(port20_w) + map(0x0020, 0x0021).w(this, FUNC(ttchamp_state::port20_w)); - AM_RANGE(0x0034, 0x0035) AM_READWRITE(pic_r, pic_w) + map(0x0034, 0x0035).rw(this, FUNC(ttchamp_state::pic_r), FUNC(ttchamp_state::pic_w)); - AM_RANGE(0x0062, 0x0063) AM_WRITE(port62_w) + map(0x0062, 0x0063).w(this, FUNC(ttchamp_state::port62_w)); -ADDRESS_MAP_END +} static INPUT_PORTS_START(ttchamp) diff --git a/src/mame/drivers/tti.cpp b/src/mame/drivers/tti.cpp index 754e46ba7cb..5f4e191778c 100644 --- a/src/mame/drivers/tti.cpp +++ b/src/mame/drivers/tti.cpp @@ -48,12 +48,13 @@ IRQ_CALLBACK_MEMBER(tti_state::intack) static INPUT_PORTS_START( tti ) INPUT_PORTS_END -ADDRESS_MAP_START(tti_state::prg_map) - AM_RANGE(0x00000, 0x07fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x7e000, 0x7ffff) AM_RAM - AM_RANGE(0x80000, 0x80017) AM_DEVREADWRITE("mfp", mc68901_device, read, write) - AM_RANGE(0x80070, 0x80077) AM_DEVWRITE("bitlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void tti_state::prg_map(address_map &map) +{ + map(0x00000, 0x07fff).rom().region("maincpu", 0); + map(0x7e000, 0x7ffff).ram(); + map(0x80000, 0x80017).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)); + map(0x80070, 0x80077).w("bitlatch", FUNC(ls259_device::write_d0)); +} MACHINE_CONFIG_START(tti_state::tti) MCFG_DEVICE_ADD("maincpu", M68008, XTAL(20'000'000) / 2) // guess diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp index 8df55f97e02..5f63d00b9c2 100644 --- a/src/mame/drivers/tubep.cpp +++ b/src/mame/drivers/tubep.cpp @@ -131,13 +131,14 @@ WRITE_LINE_MEMBER(tubep_state::coin2_counter_w) } -ADDRESS_MAP_START(tubep_state::tubep_main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(tubep_textram_w) AM_SHARE("textram") /* RAM on GFX PCB @B13 */ - AM_RANGE(0xe000, 0xe7ff) AM_WRITEONLY AM_SHARE("share1") - AM_RANGE(0xe800, 0xebff) AM_WRITEONLY AM_SHARE("backgroundram") /* row of 8 x 2147 RAMs on main PCB */ -ADDRESS_MAP_END +void tubep_state::tubep_main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa7ff).ram(); + map(0xc000, 0xc7ff).w(this, FUNC(tubep_state::tubep_textram_w)).share("textram"); /* RAM on GFX PCB @B13 */ + map(0xe000, 0xe7ff).writeonly().share("share1"); + map(0xe800, 0xebff).writeonly().share("backgroundram"); /* row of 8 x 2147 RAMs on main PCB */ +} WRITE8_MEMBER(tubep_state::main_cpu_irq_line_clear_w) @@ -153,20 +154,21 @@ WRITE8_MEMBER(tubep_state::tubep_soundlatch_w) m_sound_latch = (data&0x7f) | 0x80; } -ADDRESS_MAP_START(tubep_state::tubep_main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW1") - AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW2") - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("DSW3") - - AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P2") - AM_RANGE(0xd0, 0xd0) AM_READ_PORT("P1") - - AM_RANGE(0x80, 0x80) AM_WRITE(main_cpu_irq_line_clear_w) - AM_RANGE(0xb0, 0xb7) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xd0, 0xd0) AM_WRITE(tubep_soundlatch_w) -ADDRESS_MAP_END +void tubep_state::tubep_main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x80, 0x80).portr("DSW1"); + map(0x90, 0x90).portr("DSW2"); + map(0xa0, 0xa0).portr("DSW3"); + + map(0xb0, 0xb0).portr("SYSTEM"); + map(0xc0, 0xc0).portr("P2"); + map(0xd0, 0xd0).portr("P1"); + + map(0x80, 0x80).w(this, FUNC(tubep_state::main_cpu_irq_line_clear_w)); + map(0xb0, 0xb7).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xd0, 0xd0).w(this, FUNC(tubep_state::tubep_soundlatch_w)); +} @@ -184,21 +186,23 @@ WRITE8_MEMBER(tubep_state::second_cpu_irq_line_clear_w) } -ADDRESS_MAP_START(tubep_state::tubep_second_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_WRITE(tubep_background_a000_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(tubep_background_c000_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") /* 6116 #1 */ - AM_RANGE(0xe800, 0xebff) AM_WRITEONLY AM_SHARE("backgroundram") /* row of 8 x 2147 RAMs on main PCB */ - AM_RANGE(0xf000, 0xf3ff) AM_WRITEONLY AM_SHARE("sprite_color") /* sprites color lookup table */ - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share2") /* program copies here part of shared ram ?? */ -ADDRESS_MAP_END +void tubep_state::tubep_second_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa000).w(this, FUNC(tubep_state::tubep_background_a000_w)); + map(0xc000, 0xc000).w(this, FUNC(tubep_state::tubep_background_c000_w)); + map(0xe000, 0xe7ff).ram().share("share1"); /* 6116 #1 */ + map(0xe800, 0xebff).writeonly().share("backgroundram"); /* row of 8 x 2147 RAMs on main PCB */ + map(0xf000, 0xf3ff).writeonly().share("sprite_color"); /* sprites color lookup table */ + map(0xf800, 0xffff).ram().share("share2"); /* program copies here part of shared ram ?? */ +} -ADDRESS_MAP_START(tubep_state::tubep_second_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x7f, 0x7f) AM_WRITE(second_cpu_irq_line_clear_w) -ADDRESS_MAP_END +void tubep_state::tubep_second_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x7f, 0x7f).w(this, FUNC(tubep_state::second_cpu_irq_line_clear_w)); +} READ8_MEMBER(tubep_state::tubep_soundlatch_r) @@ -224,21 +228,23 @@ WRITE8_MEMBER(tubep_state::tubep_sound_unknown) } -ADDRESS_MAP_START(tubep_state::tubep_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xd000, 0xd000) AM_READ(tubep_sound_irq_ack) - AM_RANGE(0xe000, 0xe7ff) AM_RAM /* 6116 #3 */ -ADDRESS_MAP_END +void tubep_state::tubep_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xd000, 0xd000).r(this, FUNC(tubep_state::tubep_sound_irq_ack)); + map(0xe000, 0xe7ff).ram(); /* 6116 #3 */ +} -ADDRESS_MAP_START(tubep_state::tubep_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x06, 0x06) AM_READ(tubep_soundlatch_r) - AM_RANGE(0x07, 0x07) AM_WRITE(tubep_sound_unknown) -ADDRESS_MAP_END +void tubep_state::tubep_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x04, 0x05).w("ay3", FUNC(ay8910_device::address_data_w)); + map(0x06, 0x06).r(this, FUNC(tubep_state::tubep_soundlatch_r)); + map(0x07, 0x07).w(this, FUNC(tubep_state::tubep_sound_unknown)); +} void tubep_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) @@ -362,13 +368,14 @@ MACHINE_RESET_MEMBER(tubep_state,tubep) *************************************/ /* MS2010-A CPU (equivalent to NSC8105 with one new opcode: 0xec) on graphics PCB */ -ADDRESS_MAP_START(tubep_state::nsc_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("sprite_color") - AM_RANGE(0x0800, 0x0fff) AM_RAM AM_SHARE("share2") - AM_RANGE(0x2000, 0x2009) AM_WRITE(tubep_sprite_control_w) - AM_RANGE(0x200a, 0x200b) AM_WRITENOP /* not used by the games - perhaps designed for debugging */ - AM_RANGE(0xc000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tubep_state::nsc_map(address_map &map) +{ + map(0x0000, 0x03ff).ram().share("sprite_color"); + map(0x0800, 0x0fff).ram().share("share2"); + map(0x2000, 0x2009).w(this, FUNC(tubep_state::tubep_sprite_control_w)); + map(0x200a, 0x200b).nopw(); /* not used by the games - perhaps designed for debugging */ + map(0xc000, 0xffff).rom(); +} @@ -378,43 +385,47 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(tubep_state::rjammer_main_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM /* MB8416 SRAM on daughterboard on main PCB (there are two SRAMs, this is the one on the left) */ - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(tubep_textram_w) AM_SHARE("textram")/* RAM on GFX PCB @B13 */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") /* MB8416 SRAM on daughterboard (the one on the right) */ -ADDRESS_MAP_END - +void tubep_state::rjammer_main_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa7ff).ram(); /* MB8416 SRAM on daughterboard on main PCB (there are two SRAMs, this is the one on the left) */ + map(0xc000, 0xc7ff).w(this, FUNC(tubep_state::tubep_textram_w)).share("textram");/* RAM on GFX PCB @B13 */ + map(0xe000, 0xe7ff).ram().share("share1"); /* MB8416 SRAM on daughterboard (the one on the right) */ +} -ADDRESS_MAP_START(tubep_state::rjammer_main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW2") /* a bug in game code (during attract mode) */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW2") - AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW1") - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb0, 0xb0) AM_READ_PORT("P1") - AM_RANGE(0xc0, 0xc0) AM_READ_PORT("P2") - AM_RANGE(0xd0, 0xd7) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xe0, 0xe0) AM_WRITE(main_cpu_irq_line_clear_w) /* clear IRQ interrupt */ - AM_RANGE(0xf0, 0xf0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END +void tubep_state::rjammer_main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW2"); /* a bug in game code (during attract mode) */ + map(0x80, 0x80).portr("DSW2"); + map(0x90, 0x90).portr("DSW1"); + map(0xa0, 0xa0).portr("SYSTEM"); + map(0xb0, 0xb0).portr("P1"); + map(0xc0, 0xc0).portr("P2"); + + map(0xd0, 0xd7).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xe0, 0xe0).w(this, FUNC(tubep_state::main_cpu_irq_line_clear_w)); /* clear IRQ interrupt */ + map(0xf0, 0xf0).w("soundlatch", FUNC(generic_latch_8_device::write)); +} -ADDRESS_MAP_START(tubep_state::rjammer_second_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa7ff) AM_RAM /* M5M5117P @21G */ - AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1") /* MB8416 on daughterboard (the one on the right) */ - AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("rjammer_bgram")/* M5M5117P @19B (background) */ - AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE("share2") -ADDRESS_MAP_END +void tubep_state::rjammer_second_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xa000, 0xa7ff).ram(); /* M5M5117P @21G */ + map(0xe000, 0xe7ff).ram().share("share1"); /* MB8416 on daughterboard (the one on the right) */ + map(0xe800, 0xefff).ram().share("rjammer_bgram");/* M5M5117P @19B (background) */ + map(0xf800, 0xffff).ram().share("share2"); +} -ADDRESS_MAP_START(tubep_state::rjammer_second_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xb0, 0xb0) AM_WRITE(rjammer_background_page_w) - AM_RANGE(0xd0, 0xd0) AM_WRITE(rjammer_background_LS377_w) -ADDRESS_MAP_END +void tubep_state::rjammer_second_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0xb0, 0xb0).w(this, FUNC(tubep_state::rjammer_background_page_w)); + map(0xd0, 0xd0).w(this, FUNC(tubep_state::rjammer_background_LS377_w)); +} TIMER_CALLBACK_MEMBER(tubep_state::rjammer_scanline_callback) @@ -562,23 +573,25 @@ WRITE8_MEMBER(tubep_state::rjammer_voice_intensity_control_w) } -ADDRESS_MAP_START(tubep_state::rjammer_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM /* M5M5117P (M58125P @2C on schematics) */ -ADDRESS_MAP_END +void tubep_state::rjammer_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xe000, 0xe7ff).ram(); /* M5M5117P (M58125P @2C on schematics) */ +} -ADDRESS_MAP_START(tubep_state::rjammer_sound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x10, 0x10) AM_WRITE(rjammer_voice_startstop_w) - AM_RANGE(0x18, 0x18) AM_WRITE(rjammer_voice_frequency_select_w) - AM_RANGE(0x80, 0x80) AM_WRITE(rjammer_voice_input_w) - AM_RANGE(0x90, 0x91) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0x92, 0x93) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x94, 0x95) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x96, 0x96) AM_WRITE(rjammer_voice_intensity_control_w) -ADDRESS_MAP_END +void tubep_state::rjammer_sound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x10, 0x10).w(this, FUNC(tubep_state::rjammer_voice_startstop_w)); + map(0x18, 0x18).w(this, FUNC(tubep_state::rjammer_voice_frequency_select_w)); + map(0x80, 0x80).w(this, FUNC(tubep_state::rjammer_voice_input_w)); + map(0x90, 0x91).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0x92, 0x93).w("ay2", FUNC(ay8910_device::address_data_w)); + map(0x94, 0x95).w("ay3", FUNC(ay8910_device::address_data_w)); + map(0x96, 0x96).w(this, FUNC(tubep_state::rjammer_voice_intensity_control_w)); +} WRITE8_MEMBER(tubep_state::ay8910_portA_0_w) diff --git a/src/mame/drivers/tugboat.cpp b/src/mame/drivers/tugboat.cpp index b23cf5e52d2..d346d2a1234 100644 --- a/src/mame/drivers/tugboat.cpp +++ b/src/mame/drivers/tugboat.cpp @@ -233,19 +233,20 @@ void tugboat_state::machine_reset() } -ADDRESS_MAP_START(tugboat_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1060, 0x1061) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x10a0, 0x10a1) AM_WRITE(hd46505_0_w) /* scrolling is performed changing the start_addr register (0C/0D) */ - AM_RANGE(0x10c0, 0x10c1) AM_WRITE(hd46505_1_w) - AM_RANGE(0x11e4, 0x11e7) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x11e8, 0x11eb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) +void tugboat_state::main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x01ff).ram().share("ram"); + map(0x1060, 0x1061).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x10a0, 0x10a1).w(this, FUNC(tugboat_state::hd46505_0_w)); /* scrolling is performed changing the start_addr register (0C/0D) */ + map(0x10c0, 0x10c1).w(this, FUNC(tugboat_state::hd46505_1_w)); + map(0x11e4, 0x11e7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x11e8, 0x11eb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //AM_RANGE(0x1700, 0x1fff) AM_RAM - AM_RANGE(0x18e0, 0x18ef) AM_WRITE(score_w) - AM_RANGE(0x2000, 0x2fff) AM_RAM /* tilemap RAM */ - AM_RANGE(0x4000, 0x7fff) AM_ROM -ADDRESS_MAP_END + map(0x18e0, 0x18ef).w(this, FUNC(tugboat_state::score_w)); + map(0x2000, 0x2fff).ram(); /* tilemap RAM */ + map(0x4000, 0x7fff).rom(); +} static INPUT_PORTS_START( tugboat ) diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp index f6f2032e26c..3ff73f94e12 100644 --- a/src/mame/drivers/tumbleb.cpp +++ b/src/mame/drivers/tumbleb.cpp @@ -628,50 +628,52 @@ WRITE16_MEMBER(tumbleb_state::tumbleb2_soundmcu_w) /******************************************************************************/ -ADDRESS_MAP_START(tumbleb_state::tumblepopb_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM +void tumbleb_state::tumblepopb_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); #if TUMBLEP_HACK - AM_RANGE(0x000000, 0x07ffff) AM_WRITEONLY /* To write levels modifications */ + map(0x000000, 0x07ffff).writeonly(); /* To write levels modifications */ #endif - AM_RANGE(0x100000, 0x100001) AM_READWRITE(tumblepb_prot_r, tumblepb_oki_w) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */ - AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */ - AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) - AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP - AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data") - AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */ - AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */ - AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP - AM_RANGE(0x342400, 0x34247f) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(tumbleb_state::fncywld_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM + map(0x100000, 0x100001).rw(this, FUNC(tumbleb_state::tumblepb_prot_r), FUNC(tumbleb_state::tumblepb_oki_w)); + map(0x120000, 0x123fff).ram().share("mainram"); + map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); /* Bootleg sprite buffer */ + map(0x160800, 0x160807).writeonly(); /* writes past the end of spriteram */ + map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r)); + map(0x18000c, 0x18000d).nopw(); + map(0x1a0000, 0x1a07ff).ram(); + map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w)); + map(0x320000, 0x320fff).w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data"); + map(0x322000, 0x322fff).w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data"); + map(0x340000, 0x3401ff).nopw(); /* Unused row scroll */ + map(0x340400, 0x34047f).nopw(); /* Unused col scroll */ + map(0x342000, 0x3421ff).nopw(); + map(0x342400, 0x34247f).nopw(); +} + +void tumbleb_state::fncywld_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); #if FNCYWLD_HACK - AM_RANGE(0x000000, 0x0fffff) AM_WRITEONLY /* To write levels modifications */ + map(0x000000, 0x0fffff).writeonly(); /* To write levels modifications */ #endif - AM_RANGE(0x100000, 0x100003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x100004, 0x100005) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x140000, 0x140fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* sprites */ - AM_RANGE(0x160800, 0x16080f) AM_WRITEONLY /* goes slightly past the end of spriteram? */ - AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) - AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP - AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(fncywld_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fncywld_pf2_data_w) AM_SHARE("pf2_data") - AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */ - AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */ - AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP - AM_RANGE(0x342400, 0x34247f) AM_WRITENOP - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END + map(0x100000, 0x100003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x100005, 0x100005).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); /* sprites */ + map(0x160800, 0x16080f).writeonly(); /* goes slightly past the end of spriteram? */ + map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r)); + map(0x18000c, 0x18000d).nopw(); + map(0x1a0000, 0x1a07ff).ram(); + map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w)); + map(0x320000, 0x321fff).ram().w(this, FUNC(tumbleb_state::fncywld_pf1_data_w)).share("pf1_data"); + map(0x322000, 0x323fff).ram().w(this, FUNC(tumbleb_state::fncywld_pf2_data_w)).share("pf2_data"); + map(0x340000, 0x3401ff).nopw(); /* Unused row scroll */ + map(0x340400, 0x34047f).nopw(); /* Unused col scroll */ + map(0x342000, 0x3421ff).nopw(); + map(0x342400, 0x34247f).nopw(); + map(0xff0000, 0xffffff).ram(); +} READ16_MEMBER(tumbleb_state::semibase_unknown_r) @@ -679,23 +681,24 @@ READ16_MEMBER(tumbleb_state::semibase_unknown_r) return machine().rand(); } -ADDRESS_MAP_START(tumbleb_state::htchctch_main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10000f) AM_READ(semibase_unknown_r) - AM_RANGE(0x100000, 0x100001) AM_WRITE(semicom_soundcmd_w) - AM_RANGE(0x100002, 0x100003) AM_WRITE(bcstory_tilebank_w) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x160fff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */ - AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) - AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP - AM_RANGE(0x1a0000, 0x1a0fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x321fff) AM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data") - AM_RANGE(0x323000, 0x331fff) AM_NOP // metal saver writes there when clearing the above tilemaps, flaw in the program routine - AM_RANGE(0x341000, 0x342fff) AM_RAM // Extra ram? -ADDRESS_MAP_END +void tumbleb_state::htchctch_main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10000f).r(this, FUNC(tumbleb_state::semibase_unknown_r)); + map(0x100000, 0x100001).w(this, FUNC(tumbleb_state::semicom_soundcmd_w)); + map(0x100002, 0x100003).w(this, FUNC(tumbleb_state::bcstory_tilebank_w)); + map(0x120000, 0x123fff).ram().share("mainram"); + map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x160fff).ram().share("spriteram"); /* Bootleg sprite buffer */ + map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r)); + map(0x18000c, 0x18000d).nopw(); + map(0x1a0000, 0x1a0fff).ram(); + map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w)); + map(0x320000, 0x321fff).w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data"); + map(0x322000, 0x322fff).w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data"); + map(0x323000, 0x331fff).noprw(); // metal saver writes there when clearing the above tilemaps, flaw in the program routine + map(0x341000, 0x342fff).ram(); // Extra ram? +} @@ -705,32 +708,34 @@ WRITE16_MEMBER(tumbleb_state::jumpkids_sound_w) m_audiocpu->set_input_line(0, HOLD_LINE); } -ADDRESS_MAP_START(tumbleb_state::suprtrio_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x700000, 0x700fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xa00000, 0xa0000f) AM_RAM AM_SHARE("control") - AM_RANGE(0xa20000, 0xa20fff) AM_RAM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0xa22000, 0xa22fff) AM_RAM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data") - AM_RANGE(0xcf0000, 0xcf05ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("PLAYERS") AM_WRITE(suprtrio_tilebank_w) - AM_RANGE(0xe40000, 0xe40001) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe80002, 0xe80003) AM_READ_PORT("DSW") - AM_RANGE(0xec0000, 0xec0001) AM_WRITE(semicom_soundcmd_w) - AM_RANGE(0xf00000, 0xf07fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tumbleb_state::pangpang_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */ - AM_RANGE(0x160800, 0x160807) AM_WRITEONLY // writes past the end of spriteram - AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) - AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(pangpang_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0x340000, 0x341fff) AM_RAM_WRITE(pangpang_pf2_data_w) AM_SHARE("pf2_data") -ADDRESS_MAP_END +void tumbleb_state::suprtrio_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x700000, 0x700fff).ram().share("spriteram"); + map(0xa00000, 0xa0000f).ram().share("control"); + map(0xa20000, 0xa20fff).ram().w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data"); + map(0xa22000, 0xa22fff).ram().w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data"); + map(0xcf0000, 0xcf05ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xe00000, 0xe00001).portr("PLAYERS").w(this, FUNC(tumbleb_state::suprtrio_tilebank_w)); + map(0xe40000, 0xe40001).portr("SYSTEM"); + map(0xe80002, 0xe80003).portr("DSW"); + map(0xec0000, 0xec0001).w(this, FUNC(tumbleb_state::semicom_soundcmd_w)); + map(0xf00000, 0xf07fff).ram(); +} + +void tumbleb_state::pangpang_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x120000, 0x123fff).ram().share("mainram"); + map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); /* Bootleg sprite buffer */ + map(0x160800, 0x160807).writeonly(); // writes past the end of spriteram + map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r)); + map(0x1a0000, 0x1a07ff).ram(); + map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w)); + map(0x320000, 0x321fff).ram().w(this, FUNC(tumbleb_state::pangpang_pf1_data_w)).share("pf1_data"); + map(0x340000, 0x341fff).ram().w(this, FUNC(tumbleb_state::pangpang_pf2_data_w)).share("pf2_data"); +} /******************************************************************************/ @@ -753,45 +758,48 @@ WRITE8_MEMBER(tumbleb_state::oki_sound_bank_w) memcpy(&oki[0x30000], &oki[(data * 0x10000) + 0x40000], 0x10000); } -ADDRESS_MAP_START(tumbleb_state::semicom_sound_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) +void tumbleb_state::semicom_sound_map(address_map &map) +{ + map(0x0000, 0xcfff).rom(); + map(0xd000, 0xd7ff).ram(); + map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //AM_RANGE(0xf006, 0xf006) ?? - AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf00e, 0xf00e) AM_WRITE(oki_sound_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tumbleb_state::suprtrio_sound_map) - AM_RANGE(0x0000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM - AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) + map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf00e, 0xf00e).w(this, FUNC(tumbleb_state::oki_sound_bank_w)); +} + +void tumbleb_state::suprtrio_sound_map(address_map &map) +{ + map(0x0000, 0xcfff).rom(); + map(0xd000, 0xd7ff).ram(); + map(0xf002, 0xf002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); //AM_RANGE(0xf006, 0xf006) ?? - AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xf00e, 0xf00e) AM_WRITE(oki_sound_bank_w) -ADDRESS_MAP_END + map(0xf008, 0xf008).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xf00e, 0xf00e).w(this, FUNC(tumbleb_state::oki_sound_bank_w)); +} /* Jump Kids */ -ADDRESS_MAP_START(tumbleb_state::jumpkids_main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_WRITE(jumpkids_sound_w) - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") /* Bootleg sprite buffer */ - AM_RANGE(0x160800, 0x160807) AM_WRITEONLY /* writes past the end of spriteram */ - AM_RANGE(0x180000, 0x18000f) AM_READ(tumblepopb_controls_r) - AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP - AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_WRITE(tumblepb_control_0_w) - AM_RANGE(0x320000, 0x320fff) AM_WRITE(tumblepb_pf1_data_w) AM_SHARE("pf1_data") - AM_RANGE(0x322000, 0x322fff) AM_WRITE(tumblepb_pf2_data_w) AM_SHARE("pf2_data") - AM_RANGE(0x340000, 0x3401ff) AM_WRITENOP /* Unused row scroll */ - AM_RANGE(0x340400, 0x34047f) AM_WRITENOP /* Unused col scroll */ - AM_RANGE(0x342000, 0x3421ff) AM_WRITENOP - AM_RANGE(0x342400, 0x34247f) AM_WRITENOP -ADDRESS_MAP_END +void tumbleb_state::jumpkids_main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).w(this, FUNC(tumbleb_state::jumpkids_sound_w)); + map(0x120000, 0x123fff).ram().share("mainram"); + map(0x140000, 0x1407ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); /* Bootleg sprite buffer */ + map(0x160800, 0x160807).writeonly(); /* writes past the end of spriteram */ + map(0x180000, 0x18000f).r(this, FUNC(tumbleb_state::tumblepopb_controls_r)); + map(0x18000c, 0x18000d).nopw(); + map(0x1a0000, 0x1a07ff).ram(); + map(0x300000, 0x30000f).w(this, FUNC(tumbleb_state::tumblepb_control_0_w)); + map(0x320000, 0x320fff).w(this, FUNC(tumbleb_state::tumblepb_pf1_data_w)).share("pf1_data"); + map(0x322000, 0x322fff).w(this, FUNC(tumbleb_state::tumblepb_pf2_data_w)).share("pf2_data"); + map(0x340000, 0x3401ff).nopw(); /* Unused row scroll */ + map(0x340400, 0x34047f).nopw(); /* Unused col scroll */ + map(0x342000, 0x3421ff).nopw(); + map(0x342400, 0x34247f).nopw(); +} WRITE8_MEMBER(tumbleb_state::jumpkids_oki_bank_w) { @@ -802,13 +810,14 @@ WRITE8_MEMBER(tumbleb_state::jumpkids_oki_bank_w) memcpy(sound1 + 0x20000, sound2 + bank * 0x20000, 0x20000); } -ADDRESS_MAP_START(tumbleb_state::jumpkids_sound_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(jumpkids_oki_bank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void tumbleb_state::jumpkids_sound_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(tumbleb_state::jumpkids_oki_bank_w)); + map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /* Semicom AT89C52 MCU */ diff --git a/src/mame/drivers/tunhunt.cpp b/src/mame/drivers/tunhunt.cpp index 33ba35a2cce..bb91e646063 100644 --- a/src/mame/drivers/tunhunt.cpp +++ b/src/mame/drivers/tunhunt.cpp @@ -129,26 +129,27 @@ READ8_MEMBER(tunhunt_state::dsw2_4r) * *************************************/ -ADDRESS_MAP_START(tunhunt_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_RAM AM_SHARE("workram") /* Work RAM */ - AM_RANGE(0x1080, 0x10ff) AM_WRITEONLY - AM_RANGE(0x1200, 0x12ff) AM_WRITEONLY - AM_RANGE(0x1400, 0x14ff) AM_WRITEONLY - AM_RANGE(0x1600, 0x160f) AM_WRITEONLY AM_SHARE("paletteram") /* COLRAM (D7-D4 SHADE; D3-D0 COLOR) */ - AM_RANGE(0x1800, 0x1800) AM_WRITEONLY /* SHEL0H */ - AM_RANGE(0x1a00, 0x1a00) AM_WRITEONLY /* SHEL1H */ - AM_RANGE(0x1c00, 0x1c00) AM_WRITEONLY /* MOBJV */ - AM_RANGE(0x1e00, 0x1eff) AM_WRITE(videoram_w) AM_SHARE("videoram") /* ALPHA */ - AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* watchdog */ - AM_RANGE(0x2000, 0x2007) AM_READ(button_r) - AM_RANGE(0x2400, 0x2400) AM_WRITENOP /* INT ACK */ - AM_RANGE(0x2800, 0x2800) AM_WRITE(control_w) - AM_RANGE(0x2c00, 0x2fff) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0x3000, 0x300f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x5000, 0x7fff) AM_ROM -ADDRESS_MAP_END +void tunhunt_state::main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x03ff).ram().share("workram"); /* Work RAM */ + map(0x1080, 0x10ff).writeonly(); + map(0x1200, 0x12ff).writeonly(); + map(0x1400, 0x14ff).writeonly(); + map(0x1600, 0x160f).writeonly().share("paletteram"); /* COLRAM (D7-D4 SHADE; D3-D0 COLOR) */ + map(0x1800, 0x1800).writeonly(); /* SHEL0H */ + map(0x1a00, 0x1a00).writeonly(); /* SHEL1H */ + map(0x1c00, 0x1c00).writeonly(); /* MOBJV */ + map(0x1e00, 0x1eff).w(this, FUNC(tunhunt_state::videoram_w)).share("videoram"); /* ALPHA */ + map(0x2000, 0x2000).nopw(); /* watchdog */ + map(0x2000, 0x2007).r(this, FUNC(tunhunt_state::button_r)); + map(0x2400, 0x2400).nopw(); /* INT ACK */ + map(0x2800, 0x2800).w(this, FUNC(tunhunt_state::control_w)); + map(0x2c00, 0x2fff).writeonly().share("spriteram"); + map(0x3000, 0x300f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x4000, 0x400f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x5000, 0x7fff).rom(); +} /************************************* diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp index da8517c36bc..904bbcd5d8a 100644 --- a/src/mame/drivers/turbo.cpp +++ b/src/mame/drivers/turbo.cpp @@ -499,23 +499,24 @@ WRITE8_MEMBER(turbo_state::spriteram_w) * *************************************/ -ADDRESS_MAP_START(turbo_state::turbo_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x0700) AM_READWRITE(spriteram_r, spriteram_w) - AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("spritepos") - AM_RANGE(0xb800, 0xbfff) AM_WRITE(turbo_analog_reset_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xefff) AM_WRITE(turbo_collision_clear_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf803) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0xf900, 0xf903) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) - AM_RANGE(0xfa00, 0xfa03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_2", i8255_device, read, write) - AM_RANGE(0xfb00, 0xfb03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_3", i8255_device, read, write) - AM_RANGE(0xfc00, 0xfc01) AM_MIRROR(0x00fe) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0xfd00, 0xfdff) AM_READ_PORT("INPUT") - AM_RANGE(0xfe00, 0xfeff) AM_READ(turbo_collision_r) -ADDRESS_MAP_END +void turbo_state::turbo_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0xa000, 0xa0ff).mirror(0x0700).rw(this, FUNC(turbo_state::spriteram_r), FUNC(turbo_state::spriteram_w)); + map(0xa800, 0xa807).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xb000, 0xb3ff).mirror(0x0400).ram().share("spritepos"); + map(0xb800, 0xbfff).w(this, FUNC(turbo_state::turbo_analog_reset_w)); + map(0xe000, 0xe7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); + map(0xe800, 0xefff).w(this, FUNC(turbo_state::turbo_collision_clear_w)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf803).mirror(0x00fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf900, 0xf903).mirror(0x00fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfa00, 0xfa03).mirror(0x00fc).rw(m_i8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfb00, 0xfb03).mirror(0x00fc).rw(m_i8255_3, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfc00, 0xfc01).mirror(0x00fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xfd00, 0xfdff).portr("INPUT"); + map(0xfe00, 0xfeff).r(this, FUNC(turbo_state::turbo_collision_r)); +} @@ -525,21 +526,22 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(turbo_state::subroc3d_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("spritepos") // CONT RAM - AM_RANGE(0xa400, 0xa7ff) AM_RAM AM_SHARE("spriteram") // CONT RAM - AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07fc) AM_READ_PORT("IN0") // INPUT 253 - AM_RANGE(0xa801, 0xa801) AM_MIRROR(0x07fc) AM_READ_PORT("IN1") // INPUT 253 - AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x07fc) AM_READ_PORT("DSW2") // INPUT 253 - AM_RANGE(0xa803, 0xa803) AM_MIRROR(0x07fc) AM_READ_PORT("DSW3") // INPUT 253 - AM_RANGE(0xb000, 0xb7ff) AM_RAM // SCRATCH - AM_RANGE(0xb800, 0xbfff) // HANDLE CL - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") // FIX PAGE - AM_RANGE(0xe800, 0xe803) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0xf000, 0xf003) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) - AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("i8279", i8279_device, read, write) -ADDRESS_MAP_END +void turbo_state::subroc3d_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa3ff).ram().share("spritepos"); // CONT RAM + map(0xa400, 0xa7ff).ram().share("spriteram"); // CONT RAM + map(0xa800, 0xa800).mirror(0x07fc).portr("IN0"); // INPUT 253 + map(0xa801, 0xa801).mirror(0x07fc).portr("IN1"); // INPUT 253 + map(0xa802, 0xa802).mirror(0x07fc).portr("DSW2"); // INPUT 253 + map(0xa803, 0xa803).mirror(0x07fc).portr("DSW3"); // INPUT 253 + map(0xb000, 0xb7ff).ram(); // SCRATCH + map(0xb800, 0xbfff); // HANDLE CL + map(0xe000, 0xe7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE + map(0xe800, 0xe803).mirror(0x07fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf800, 0xf801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); +} @@ -549,37 +551,41 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(turbo_state::buckrog_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") // FIX PAGE - AM_RANGE(0xc800, 0xc803) AM_MIRROR(0x07fc) AM_DEVREAD("i8255_0", i8255_device, read) AM_WRITE(buckrog_i8255_0_w) // 8255 - AM_RANGE(0xd000, 0xd003) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) // 8255 - AM_RANGE(0xd800, 0xd801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("spritepos") // CONT RAM - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") // CONT RAM - AM_RANGE(0xe800, 0xe800) AM_MIRROR(0x07fc) AM_READ_PORT("IN0") // INPUT - AM_RANGE(0xe801, 0xe801) AM_MIRROR(0x07fc) AM_READ_PORT("IN1") - AM_RANGE(0xe802, 0xe802) AM_MIRROR(0x07fc) AM_READ(buckrog_port_2_r) - AM_RANGE(0xe803, 0xe803) AM_MIRROR(0x07fc) AM_READ(buckrog_port_3_r) - AM_RANGE(0xf000, 0xf000) - AM_RANGE(0xf800, 0xffff) AM_RAM // SCRATCH -ADDRESS_MAP_END - -ADDRESS_MAP_START(turbo_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(turbo_state::buckrog_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x0000, 0xdfff) AM_WRITE(buckrog_bitmap_w) - AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(turbo_state::buckrog_cpu2_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READ(buckrog_cpu2_command_r) -ADDRESS_MAP_END +void turbo_state::buckrog_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE + map(0xc800, 0xc803).mirror(0x07fc).r(m_i8255_0, FUNC(i8255_device::read)).w(this, FUNC(turbo_state::buckrog_i8255_0_w)); // 8255 + map(0xd000, 0xd003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); // 8255 + map(0xd800, 0xd801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xe000, 0xe3ff).ram().share("spritepos"); // CONT RAM + map(0xe400, 0xe7ff).ram().share("spriteram"); // CONT RAM + map(0xe800, 0xe800).mirror(0x07fc).portr("IN0"); // INPUT + map(0xe801, 0xe801).mirror(0x07fc).portr("IN1"); + map(0xe802, 0xe802).mirror(0x07fc).r(this, FUNC(turbo_state::buckrog_port_2_r)); + map(0xe803, 0xe803).mirror(0x07fc).r(this, FUNC(turbo_state::buckrog_port_3_r)); + map(0xf000, 0xf000); + map(0xf800, 0xffff).ram(); // SCRATCH +} + +void turbo_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + +void turbo_state::buckrog_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x0000, 0xdfff).w(this, FUNC(turbo_state::buckrog_bitmap_w)); + map(0xe000, 0xe7ff).mirror(0x1800).ram(); +} + + +void turbo_state::buckrog_cpu2_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).r(this, FUNC(turbo_state::buckrog_cpu2_command_r)); +} diff --git a/src/mame/drivers/turrett.cpp b/src/mame/drivers/turrett.cpp index eb54eac40e6..1c877e3f620 100644 --- a/src/mame/drivers/turrett.cpp +++ b/src/mame/drivers/turrett.cpp @@ -85,26 +85,28 @@ void turrett_state::machine_reset() * *************************************/ -ADDRESS_MAP_START(turrett_state::cpu_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_RAM - AM_RANGE(0x02000010, 0x02000013) AM_RAM - AM_RANGE(0x02000040, 0x02000043) AM_RAM - AM_RANGE(0x02000050, 0x02000053) AM_RAM - AM_RANGE(0x02000060, 0x02000063) AM_RAM - AM_RANGE(0x02000070, 0x02000073) AM_RAM // TODO: What are these? - AM_RANGE(0x04000000, 0x0400000f) AM_WRITE(dma_w) - AM_RANGE(0x04000100, 0x04000103) AM_READWRITE(int_r, int_w) - AM_RANGE(0x04000200, 0x040003ff) AM_DEVREADWRITE("ttsound", turrett_device, read, write) - AM_RANGE(0x08000000, 0x0800000f) AM_READWRITE(video_r, video_w) - AM_RANGE(0x08000200, 0x080003ff) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(turrett_state::turrett_sound_map) - AM_RANGE(0x0000000, 0x7ffffff) AM_RAM AM_SHARE("bank_a") - AM_RANGE(0x8000000, 0xfffffff) AM_RAM AM_SHARE("bank_b") -ADDRESS_MAP_END +void turrett_state::cpu_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).ram(); + map(0x02000010, 0x02000013).ram(); + map(0x02000040, 0x02000043).ram(); + map(0x02000050, 0x02000053).ram(); + map(0x02000060, 0x02000063).ram(); + map(0x02000070, 0x02000073).ram(); // TODO: What are these? + map(0x04000000, 0x0400000f).w(this, FUNC(turrett_state::dma_w)); + map(0x04000100, 0x04000103).rw(this, FUNC(turrett_state::int_r), FUNC(turrett_state::int_w)); + map(0x04000200, 0x040003ff).rw("ttsound", FUNC(turrett_device::read), FUNC(turrett_device::write)); + map(0x08000000, 0x0800000f).rw(this, FUNC(turrett_state::video_r), FUNC(turrett_state::video_w)); + map(0x08000200, 0x080003ff).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); + map(0x1fc00000, 0x1fdfffff).rom().region("maincpu", 0); +} + + +void turrett_state::turrett_sound_map(address_map &map) +{ + map(0x0000000, 0x7ffffff).ram().share("bank_a"); + map(0x8000000, 0xfffffff).ram().share("bank_b"); +} diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp index 8ad4891e72a..1b834115eb5 100644 --- a/src/mame/drivers/tutankhm.cpp +++ b/src/mame/drivers/tutankhm.cpp @@ -127,24 +127,25 @@ WRITE8_MEMBER(tutankhm_state::sound_on_w) * *************************************/ -ADDRESS_MAP_START(tutankhm_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x8000, 0x800f) AM_MIRROR(0x00f0) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x8100, 0x8100) AM_MIRROR(0x000f) AM_RAM AM_SHARE("scroll") - AM_RANGE(0x8120, 0x8120) AM_MIRROR(0x000f) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8160, 0x8160) AM_MIRROR(0x000f) AM_READ_PORT("DSW2") /* DSW2 (inverted bits) */ - AM_RANGE(0x8180, 0x8180) AM_MIRROR(0x000f) AM_READ_PORT("IN0") /* IN0 I/O: Coin slots, service, 1P/2P buttons */ - AM_RANGE(0x81a0, 0x81a0) AM_MIRROR(0x000f) AM_READ_PORT("IN1") /* IN1: Player 1 I/O */ - AM_RANGE(0x81c0, 0x81c0) AM_MIRROR(0x000f) AM_READ_PORT("IN2") /* IN2: Player 2 I/O */ - AM_RANGE(0x81e0, 0x81e0) AM_MIRROR(0x000f) AM_READ_PORT("DSW1") /* DSW1 (inverted bits) */ - AM_RANGE(0x8200, 0x8207) AM_MIRROR(0x00f8) AM_READNOP AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x8300, 0x8300) AM_MIRROR(0x00ff) AM_WRITE(tutankhm_bankselect_w) - AM_RANGE(0x8600, 0x8600) AM_MIRROR(0x00ff) AM_WRITE(sound_on_w) - AM_RANGE(0x8700, 0x8700) AM_MIRROR(0x00ff) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sound_data_w) - AM_RANGE(0x8800, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END +void tutankhm_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).ram().share("videoram"); + map(0x8000, 0x800f).mirror(0x00f0).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x8100, 0x8100).mirror(0x000f).ram().share("scroll"); + map(0x8120, 0x8120).mirror(0x000f).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8160, 0x8160).mirror(0x000f).portr("DSW2"); /* DSW2 (inverted bits) */ + map(0x8180, 0x8180).mirror(0x000f).portr("IN0"); /* IN0 I/O: Coin slots, service, 1P/2P buttons */ + map(0x81a0, 0x81a0).mirror(0x000f).portr("IN1"); /* IN1: Player 1 I/O */ + map(0x81c0, 0x81c0).mirror(0x000f).portr("IN2"); /* IN2: Player 2 I/O */ + map(0x81e0, 0x81e0).mirror(0x000f).portr("DSW1"); /* DSW1 (inverted bits) */ + map(0x8200, 0x8207).mirror(0x00f8).nopr().w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x8300, 0x8300).mirror(0x00ff).w(this, FUNC(tutankhm_state::tutankhm_bankselect_w)); + map(0x8600, 0x8600).mirror(0x00ff).w(this, FUNC(tutankhm_state::sound_on_w)); + map(0x8700, 0x8700).mirror(0x00ff).w(m_timeplt_audio, FUNC(timeplt_audio_device::sound_data_w)); + map(0x8800, 0x8fff).ram(); + map(0x9000, 0x9fff).bankr("bank1"); + map(0xa000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp index 539434e6d66..db5581b2d37 100644 --- a/src/mame/drivers/tutor.cpp +++ b/src/mame/drivers/tutor.cpp @@ -550,39 +550,41 @@ WRITE8_MEMBER( tutor_state::test_w ) } #endif -ADDRESS_MAP_START(tutor_state::tutor_memmap) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_WRITENOP - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") AM_WRITENOP - AM_RANGE(0xc000, 0xdfff) AM_NOP /*free for expansion, or cartridge ROM?*/ - - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) /*VDP data*/ - AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)/*VDP status*/ - AM_RANGE(0xe100, 0xe1ff) AM_READWRITE(tutor_mapper_r, tutor_mapper_w) /*cartridge mapper*/ - AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("sn76489a", sn76489a_device, write) /*sound chip*/ - AM_RANGE(0xe800, 0xe8ff) AM_READWRITE(tutor_printer_r, tutor_printer_w) /*printer*/ - AM_RANGE(0xee00, 0xeeff) AM_READNOP AM_WRITE( tutor_cassette_w) /*cassette interface*/ - - AM_RANGE(0xf000, 0xffff) AM_READ(tutor_highmem_r) AM_WRITENOP /*free for expansion (and internal processor RAM)*/ -ADDRESS_MAP_END - -ADDRESS_MAP_START(tutor_state::pyuutajr_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_WRITENOP - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") AM_WRITENOP - AM_RANGE(0xc000, 0xdfff) AM_NOP /*free for expansion, or cartridge ROM?*/ - - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("tms9928a", tms9928a_device, vram_read, vram_write) /*VDP data*/ - AM_RANGE(0xe002, 0xe002) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write)/*VDP status*/ - AM_RANGE(0xe100, 0xe1ff) AM_READWRITE(tutor_mapper_r, tutor_mapper_w) /*cartridge mapper*/ - AM_RANGE(0xe200, 0xe200) AM_DEVWRITE("sn76489a", sn76489a_device, write) /*sound chip*/ - AM_RANGE(0xe800, 0xe800) AM_READ_PORT("LINE0") - AM_RANGE(0xea00, 0xea00) AM_READ_PORT("LINE1") - AM_RANGE(0xec00, 0xec00) AM_READ_PORT("LINE2") - AM_RANGE(0xee00, 0xee00) AM_READ_PORT("LINE3") - - AM_RANGE(0xf000, 0xffff) AM_READ(tutor_highmem_r) AM_WRITENOP /*free for expansion (and internal processor RAM)*/ -ADDRESS_MAP_END +void tutor_state::tutor_memmap(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1").nopw(); + map(0x8000, 0xbfff).bankr("bank2").nopw(); + map(0xc000, 0xdfff).noprw(); /*free for expansion, or cartridge ROM?*/ + + map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); /*VDP data*/ + map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));/*VDP status*/ + map(0xe100, 0xe1ff).rw(this, FUNC(tutor_state::tutor_mapper_r), FUNC(tutor_state::tutor_mapper_w)); /*cartridge mapper*/ + map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::write)); /*sound chip*/ + map(0xe800, 0xe8ff).rw(this, FUNC(tutor_state::tutor_printer_r), FUNC(tutor_state::tutor_printer_w)); /*printer*/ + map(0xee00, 0xeeff).nopr().w(this, FUNC(tutor_state::tutor_cassette_w)); /*cassette interface*/ + + map(0xf000, 0xffff).r(this, FUNC(tutor_state::tutor_highmem_r)).nopw(); /*free for expansion (and internal processor RAM)*/ +} + +void tutor_state::pyuutajr_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1").nopw(); + map(0x8000, 0xbfff).bankr("bank2").nopw(); + map(0xc000, 0xdfff).noprw(); /*free for expansion, or cartridge ROM?*/ + + map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); /*VDP data*/ + map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));/*VDP status*/ + map(0xe100, 0xe1ff).rw(this, FUNC(tutor_state::tutor_mapper_r), FUNC(tutor_state::tutor_mapper_w)); /*cartridge mapper*/ + map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::write)); /*sound chip*/ + map(0xe800, 0xe800).portr("LINE0"); + map(0xea00, 0xea00).portr("LINE1"); + map(0xec00, 0xec00).portr("LINE2"); + map(0xee00, 0xee00).portr("LINE3"); + + map(0xf000, 0xffff).r(this, FUNC(tutor_state::tutor_highmem_r)).nopw(); /*free for expansion (and internal processor RAM)*/ +} /* CRU map summary: @@ -594,10 +596,11 @@ ADDRESS_MAP_END >ed00(r): tape input */ -ADDRESS_MAP_START(tutor_state::tutor_io) - AM_RANGE(0xec0, 0xec7) AM_READ(key_r) /*keyboard interface*/ - AM_RANGE(0xed0, 0xed0) AM_READ(tutor_cassette_r) /*cassette interface*/ -ADDRESS_MAP_END +void tutor_state::tutor_io(address_map &map) +{ + map(0xec0, 0xec7).r(this, FUNC(tutor_state::key_r)); /*keyboard interface*/ + map(0xed0, 0xed0).r(this, FUNC(tutor_state::tutor_cassette_r)); /*cassette interface*/ +} /* tutor keyboard: 56 keys diff --git a/src/mame/drivers/tv910.cpp b/src/mame/drivers/tv910.cpp index 902063754de..a0dadea416c 100644 --- a/src/mame/drivers/tv910.cpp +++ b/src/mame/drivers/tv910.cpp @@ -103,23 +103,24 @@ private: uint8_t m_control; }; -ADDRESS_MAP_START(tv910_state::tv910_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vram") // VRAM - AM_RANGE(0x8010, 0x801f) AM_READ(charset_r) - AM_RANGE(0x8020, 0x8020) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, status_r, address_w) - AM_RANGE(0x8021, 0x8021) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, register_r, register_w) - AM_RANGE(0x8030, 0x8033) AM_DEVREADWRITE(ACIA_TAG, mos6551_device, read, write) - AM_RANGE(0x8040, 0x804f) AM_WRITE(vbl_ack_w) - AM_RANGE(0x8050, 0x805f) AM_WRITE(nmi_ack_w) - AM_RANGE(0x8060, 0x806f) AM_READ(kbd_ascii_r) - AM_RANGE(0x8070, 0x807f) AM_READ(kbd_flags_r) - AM_RANGE(0x9000, 0x9000) AM_WRITE(control_w) - AM_RANGE(0x9001, 0x9001) AM_READ_PORT("DSW1") - AM_RANGE(0x9002, 0x9002) AM_READ_PORT("DSW2") - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void tv910_state::tv910_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).ram(); + map(0x4000, 0x47ff).ram().share("vram"); // VRAM + map(0x8010, 0x801f).r(this, FUNC(tv910_state::charset_r)); + map(0x8020, 0x8020).rw(m_crtc, FUNC(r6545_1_device::status_r), FUNC(r6545_1_device::address_w)); + map(0x8021, 0x8021).rw(m_crtc, FUNC(r6545_1_device::register_r), FUNC(r6545_1_device::register_w)); + map(0x8030, 0x8033).rw(ACIA_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x8040, 0x804f).w(this, FUNC(tv910_state::vbl_ack_w)); + map(0x8050, 0x805f).w(this, FUNC(tv910_state::nmi_ack_w)); + map(0x8060, 0x806f).r(this, FUNC(tv910_state::kbd_ascii_r)); + map(0x8070, 0x807f).r(this, FUNC(tv910_state::kbd_flags_r)); + map(0x9000, 0x9000).w(this, FUNC(tv910_state::control_w)); + map(0x9001, 0x9001).portr("DSW1"); + map(0x9002, 0x9002).portr("DSW2"); + map(0xf000, 0xffff).rom().region("maincpu", 0); +} WRITE8_MEMBER(tv910_state::control_w) { diff --git a/src/mame/drivers/tv912.cpp b/src/mame/drivers/tv912.cpp index 17830f6be63..23712d030a8 100644 --- a/src/mame/drivers/tv912.cpp +++ b/src/mame/drivers/tv912.cpp @@ -352,24 +352,27 @@ void tv912_state::machine_reset() m_uart->write_cs(1); } -ADDRESS_MAP_START(tv912_state::prog_map) - AM_RANGE(0x000, 0xfff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void tv912_state::prog_map(address_map &map) +{ + map(0x000, 0xfff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(tv912_state::io_map) - AM_RANGE(0x00, 0xff) AM_DEVICE("bankdev", address_map_bank_device, amap8) -ADDRESS_MAP_END +void tv912_state::io_map(address_map &map) +{ + map(0x00, 0xff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} -ADDRESS_MAP_START(tv912_state::bank_map) - AM_RANGE(0x000, 0x0ff) AM_MIRROR(0x300) AM_RAM - AM_RANGE(0x400, 0x403) AM_MIRROR(0x3c0) AM_SELECT(0x030) AM_READWRITE(crtc_r, crtc_w) - AM_RANGE(0x404, 0x404) AM_MIRROR(0x3f3) AM_DEVREAD("uart", ay51013_device, receive) - AM_RANGE(0x408, 0x40b) AM_MIRROR(0x3f0) AM_READ(uart_status_r) - AM_RANGE(0x408, 0x408) AM_MIRROR(0x3f3) AM_DEVWRITE("uart", ay51013_device, transmit) - AM_RANGE(0x40c, 0x40f) AM_MIRROR(0x3f0) AM_READ(keyboard_r) - AM_RANGE(0x40c, 0x40c) AM_MIRROR(0x3f3) AM_WRITE(output_40c) - AM_RANGE(0x800, 0xfff) AM_RAMBANK("dispram") -ADDRESS_MAP_END +void tv912_state::bank_map(address_map &map) +{ + map(0x000, 0x0ff).mirror(0x300).ram(); + map(0x400, 0x403).mirror(0x3c0).select(0x030).rw(this, FUNC(tv912_state::crtc_r), FUNC(tv912_state::crtc_w)); + map(0x404, 0x404).mirror(0x3f3).r(m_uart, FUNC(ay51013_device::receive)); + map(0x408, 0x40b).mirror(0x3f0).r(this, FUNC(tv912_state::uart_status_r)); + map(0x408, 0x408).mirror(0x3f3).w(m_uart, FUNC(ay51013_device::transmit)); + map(0x40c, 0x40f).mirror(0x3f0).r(this, FUNC(tv912_state::keyboard_r)); + map(0x40c, 0x40c).mirror(0x3f3).w(this, FUNC(tv912_state::output_40c)); + map(0x800, 0xfff).bankrw("dispram"); +} INPUT_CHANGED_MEMBER(tv912_state::uart_settings_changed) { diff --git a/src/mame/drivers/tv950.cpp b/src/mame/drivers/tv950.cpp index 825e0bd66fc..5882163affd 100644 --- a/src/mame/drivers/tv950.cpp +++ b/src/mame/drivers/tv950.cpp @@ -92,19 +92,20 @@ private: int m_row; }; -ADDRESS_MAP_START(tv950_state::tv950_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x3fff) AM_RAM AM_SHARE("vram") // VRAM - AM_RANGE(0x8100, 0x8100) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, status_r, address_w) - AM_RANGE(0x8101, 0x8101) AM_DEVREADWRITE(CRTC_TAG, r6545_1_device, register_r, register_w) - AM_RANGE(0x9000, 0x9000) AM_WRITE(row_addr_w) - AM_RANGE(0x9300, 0x9303) AM_DEVREADWRITE(ACIA1_TAG, mos6551_device, read, write) - AM_RANGE(0x9500, 0x9503) AM_DEVREADWRITE(ACIA2_TAG, mos6551_device, read, write) - AM_RANGE(0x9900, 0x9903) AM_DEVREADWRITE(ACIA3_TAG, mos6551_device, read, write) - AM_RANGE(0xb100, 0xb10f) AM_DEVREADWRITE(VIA_TAG, via6522_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void tv950_state::tv950_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x3fff).ram().share("vram"); // VRAM + map(0x8100, 0x8100).rw(m_crtc, FUNC(r6545_1_device::status_r), FUNC(r6545_1_device::address_w)); + map(0x8101, 0x8101).rw(m_crtc, FUNC(r6545_1_device::register_r), FUNC(r6545_1_device::register_w)); + map(0x9000, 0x9000).w(this, FUNC(tv950_state::row_addr_w)); + map(0x9300, 0x9303).rw(ACIA1_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x9500, 0x9503).rw(ACIA2_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0x9900, 0x9903).rw(ACIA3_TAG, FUNC(mos6551_device::read), FUNC(mos6551_device::write)); + map(0xb100, 0xb10f).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe000, 0xffff).rom().region("maincpu", 0); +} /* Input ports */ diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp index edda41f49aa..8d66b73b2b6 100644 --- a/src/mame/drivers/tv990.cpp +++ b/src/mame/drivers/tv990.cpp @@ -310,17 +310,18 @@ WRITE8_MEMBER(tv990_state::kbdc_w) m_kbdc->data_w(space, 0, data); } -ADDRESS_MAP_START(tv990_state::tv990_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x060000, 0x06ffff) AM_RAM AM_SHARE("vram") // character/attribute RAM - AM_RANGE(0x080000, 0x087fff) AM_RAM AM_SHARE("fontram") // font RAM - AM_RANGE(0x090000, 0x0900ff) AM_READWRITE(tvi1111_r, tvi1111_w) - AM_RANGE(0x0a0000, 0x0a000f) AM_DEVREADWRITE8(UART0_TAG, ns16450_device, ins8250_r, ins8250_w, 0x00ff) - AM_RANGE(0x0a0010, 0x0a001f) AM_DEVREADWRITE8(UART1_TAG, ns16450_device, ins8250_r, ins8250_w, 0x00ff) - AM_RANGE(0x0a0028, 0x0a002d) AM_DEVREADWRITE8(LPT_TAG, pc_lpt_device, read, write, 0x00ff) - AM_RANGE(0x0b0000, 0x0b0003) AM_READWRITE8(kbdc_r, kbdc_w, 0x00ff) - AM_RANGE(0x0c0000, 0x0c7fff) AM_RAM AM_SHARE("nvram")// work RAM -ADDRESS_MAP_END +void tv990_state::tv990_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom().region("maincpu", 0); + map(0x060000, 0x06ffff).ram().share("vram"); // character/attribute RAM + map(0x080000, 0x087fff).ram().share("fontram"); // font RAM + map(0x090000, 0x0900ff).rw(this, FUNC(tv990_state::tvi1111_r), FUNC(tv990_state::tvi1111_w)); + map(0x0a0000, 0x0a000f).rw(m_uart0, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff); + map(0x0a0010, 0x0a001f).rw(UART1_TAG, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff); + map(0x0a0028, 0x0a002d).rw(LPT_TAG, FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask16(0x00ff); + map(0x0b0000, 0x0b0003).rw(this, FUNC(tv990_state::kbdc_r), FUNC(tv990_state::kbdc_w)).umask16(0x00ff); + map(0x0c0000, 0x0c7fff).ram().share("nvram");// work RAM +} /* Input ports */ static INPUT_PORTS_START( tv990 ) diff --git a/src/mame/drivers/tvboy.cpp b/src/mame/drivers/tvboy.cpp index d0fb7f2b7f3..0c7c62da27c 100644 --- a/src/mame/drivers/tvboy.cpp +++ b/src/mame/drivers/tvboy.cpp @@ -62,17 +62,18 @@ WRITE8_MEMBER(tvboy_state::bank_write) m_crom->set_entry(data); } -ADDRESS_MAP_START(tvboy_state::tvboy_mem) // 6507 has 13-bit address space, 0x0000 - 0x1fff - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0f00) AM_DEVREADWRITE("tia_video", tia_video_device, read, write) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0d00) AM_RAM AM_SHARE("riot_ram") +void tvboy_state::tvboy_mem(address_map &map) +{ // 6507 has 13-bit address space, 0x0000 - 0x1fff + map(0x0000, 0x007f).mirror(0x0f00).rw("tia_video", FUNC(tia_video_device::read), FUNC(tia_video_device::write)); + map(0x0080, 0x00ff).mirror(0x0d00).ram().share("riot_ram"); #if USE_NEW_RIOT - AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVICE("riot", mos6532_t, io_map) + map(0x0280, 0x029f).mirror(0x0d00).m("riot", FUNC(mos6532_t::io_map)); #else - AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVREADWRITE("riot", riot6532_device, read, write) + map(0x0280, 0x029f).mirror(0x0d00).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); #endif - AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_write) - AM_RANGE(0x1000, 0x1fff) AM_ROMBANK("crom") -ADDRESS_MAP_END + map(0x1000, 0x1fff).w(this, FUNC(tvboy_state::bank_write)); + map(0x1000, 0x1fff).bankr("crom"); +} #define MASTER_CLOCK_PAL 3546894 diff --git a/src/mame/drivers/tvc.cpp b/src/mame/drivers/tvc.cpp index 5c52d9e345d..64875a8a08c 100644 --- a/src/mame/drivers/tvc.cpp +++ b/src/mame/drivers/tvc.cpp @@ -352,37 +352,39 @@ WRITE8_MEMBER(tvc_state::cassette_w) m_cassette->output(m_cassette_ff ? +1 : -1); } -ADDRESS_MAP_START(tvc_state::tvc_mem) - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tvc_state::tvc_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(border_color_w) - AM_RANGE(0x01, 0x01) AM_DEVWRITE("cent_data_out", output_latch_device, write) - AM_RANGE(0x02, 0x02) AM_WRITE(bank_w) - AM_RANGE(0x03, 0x03) AM_WRITE(keyboard_w) - AM_RANGE(0x04, 0x06) AM_WRITE(sound_w) - AM_RANGE(0x07, 0x07) AM_WRITE(flipflop_w) - AM_RANGE(0x0f, 0x0f) AM_WRITE(vram_bank_w) - AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("exp1", tvcexp_slot_device, io_read, io_write) - AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("exp2", tvcexp_slot_device, io_read, io_write) - AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE("exp3", tvcexp_slot_device, io_read, io_write) - AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("exp4", tvcexp_slot_device, io_read, io_write) - AM_RANGE(0x50, 0x50) AM_WRITE(cassette_w) - AM_RANGE(0x58, 0x58) AM_READ(keyboard_r) - AM_RANGE(0x59, 0x59) AM_READ(int_state_r) - AM_RANGE(0x5a, 0x5a) AM_READ(exp_id_r) - AM_RANGE(0x5b, 0x5b) AM_READ(_5b_r) - AM_RANGE(0x58, 0x5b) AM_WRITE(expint_ack_w) - AM_RANGE(0x60, 0x63) AM_WRITE(palette_w) - AM_RANGE(0x70, 0x70) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x71, 0x71) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) -ADDRESS_MAP_END +void tvc_state::tvc_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void tvc_state::tvc_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(tvc_state::border_color_w)); + map(0x01, 0x01).w("cent_data_out", FUNC(output_latch_device::write)); + map(0x02, 0x02).w(this, FUNC(tvc_state::bank_w)); + map(0x03, 0x03).w(this, FUNC(tvc_state::keyboard_w)); + map(0x04, 0x06).w(this, FUNC(tvc_state::sound_w)); + map(0x07, 0x07).w(this, FUNC(tvc_state::flipflop_w)); + map(0x0f, 0x0f).w(this, FUNC(tvc_state::vram_bank_w)); + map(0x10, 0x1f).rw("exp1", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write)); + map(0x20, 0x2f).rw("exp2", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write)); + map(0x30, 0x3f).rw("exp3", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write)); + map(0x40, 0x4f).rw("exp4", FUNC(tvcexp_slot_device::io_read), FUNC(tvcexp_slot_device::io_write)); + map(0x50, 0x50).w(this, FUNC(tvc_state::cassette_w)); + map(0x58, 0x58).r(this, FUNC(tvc_state::keyboard_r)); + map(0x59, 0x59).r(this, FUNC(tvc_state::int_state_r)); + map(0x5a, 0x5a).r(this, FUNC(tvc_state::exp_id_r)); + map(0x5b, 0x5b).r(this, FUNC(tvc_state::_5b_r)); + map(0x58, 0x5b).w(this, FUNC(tvc_state::expint_ack_w)); + map(0x60, 0x63).w(this, FUNC(tvc_state::palette_w)); + map(0x70, 0x70).w("crtc", FUNC(mc6845_device::address_w)); + map(0x71, 0x71).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); +} /* Input ports */ static INPUT_PORTS_START( tvc ) diff --git a/src/mame/drivers/tvcapcom.cpp b/src/mame/drivers/tvcapcom.cpp index 655b7b218e2..1e55af9bdbb 100644 --- a/src/mame/drivers/tvcapcom.cpp +++ b/src/mame/drivers/tvcapcom.cpp @@ -29,8 +29,9 @@ public: void gc_map(address_map &map); }; -ADDRESS_MAP_START(tvcapcom_state::gc_map) -ADDRESS_MAP_END +void tvcapcom_state::gc_map(address_map &map) +{ +} void tvcapcom_state::machine_start() diff --git a/src/mame/drivers/tvgame.cpp b/src/mame/drivers/tvgame.cpp index 5a76fb844c6..6b89c78935e 100644 --- a/src/mame/drivers/tvgame.cpp +++ b/src/mame/drivers/tvgame.cpp @@ -39,18 +39,20 @@ private: required_shared_ptr<uint8_t> m_p_videoram; }; -ADDRESS_MAP_START(tvgame_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0xbfff ) AM_RAM - AM_RANGE( 0xc000, 0xdfff ) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(tvgame_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(3) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x0003) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END +void tvgame_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xdfff).ram().share("videoram"); +} + +void tvgame_state::io_map(address_map &map) +{ + map.global_mask(3); + map.unmap_value_high(); + map(0x0000, 0x0003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input ports */ INPUT_PORTS_START( tvgame ) diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp index 5e66aed7c84..74a423c1328 100644 --- a/src/mame/drivers/twin16.cpp +++ b/src/mame/drivers/twin16.cpp @@ -164,80 +164,84 @@ WRITE8_MEMBER(twin16_state::upd_start_w) /* Memory Maps */ -ADDRESS_MAP_START(twin16_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(upd_reset_w) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(upd_start_w) - AM_RANGE(0xf000, 0xf000) AM_READ(upd_busy_r) // miaj writes 0 to it - ADDRESS_MAP_END - -ADDRESS_MAP_START(twin16_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("comram") +void twin16_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(twin16_state::upd_reset_w)); + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write)); + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd000, 0xd000).w(m_upd7759, FUNC(upd7759_device::port_w)); + map(0xe000, 0xe000).w(this, FUNC(twin16_state::upd_start_w)); + map(0xf000, 0xf000).r(this, FUNC(twin16_state::upd_busy_r)); // miaj writes 0 to it + } + +void twin16_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram().share("comram"); // AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x081000, 0x081fff) AM_WRITENOP - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("SYSTEM") AM_WRITE(CPUA_register_w) - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P3") - AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1") - AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(video_register_w) - AM_RANGE(0x0c000e, 0x0c000f) AM_READ(sprite_status_r) - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixram") + map(0x060000, 0x063fff).ram(); + map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x081000, 0x081fff).nopw(); + map(0x0a0000, 0x0a0001).portr("SYSTEM").w(this, FUNC(twin16_state::CPUA_register_w)); + map(0x0a0002, 0x0a0003).portr("P1"); + map(0x0a0004, 0x0a0005).portr("P2"); + map(0x0a0006, 0x0a0007).portr("P3"); + map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0a0010, 0x0a0011).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0012, 0x0a0013).portr("DSW1"); + map(0x0a0018, 0x0a0019).portr("DSW3"); + map(0x0c0000, 0x0c000f).w(this, FUNC(twin16_state::video_register_w)); + map(0x0c000e, 0x0c000f).r(this, FUNC(twin16_state::sprite_status_r)); + map(0x100000, 0x103fff).ram().w(this, FUNC(twin16_state::fixram_w)).share("fixram"); // AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj - AM_RANGE(0x120000, 0x121fff) AM_RAM_WRITE(videoram0_w) AM_SHARE("videoram.0") - AM_RANGE(0x122000, 0x123fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram.1") - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("spriteram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(twin16_state::sub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("comram") + map(0x120000, 0x121fff).ram().w(this, FUNC(twin16_state::videoram0_w)).share("videoram.0"); + map(0x122000, 0x123fff).ram().w(this, FUNC(twin16_state::videoram1_w)).share("videoram.1"); + map(0x140000, 0x143fff).ram().share("spriteram"); +} + +void twin16_state::sub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram().share("comram"); // AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x080000, 0x09ffff) AM_ROM AM_REGION("data", 0) - AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(CPUB_register_w) - AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x480000, 0x481fff) AM_RAM_WRITE(videoram0_w) AM_SHARE("videoram.0") - AM_RANGE(0x482000, 0x483fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram.1") - AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(zipram_w) AM_SHARE("zipram") - AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gfxrom", 0) - AM_RANGE(0x700000, 0x77ffff) AM_ROMBANK("gfxrombank") - AM_RANGE(0x780000, 0x79ffff) AM_RAM AM_SHARE("sprite_gfx_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(fround_state::fround_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("comram") - AM_RANGE(0x060000, 0x063fff) AM_RAM - AM_RANGE(0x080000, 0x080fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette") - AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("SYSTEM") AM_WRITE(fround_CPU_register_w) - AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") - AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1") - AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(video_register_w) - AM_RANGE(0x0c000e, 0x0c000f) AM_READ(sprite_status_r) - AM_RANGE(0x0e0000, 0x0e0001) AM_WRITE(gfx_bank_w) - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixram") - AM_RANGE(0x120000, 0x121fff) AM_RAM_WRITE(videoram0_w) AM_SHARE("videoram.0") - AM_RANGE(0x122000, 0x123fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram.1") - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x500000, 0x5fffff) AM_ROM AM_REGION("tiles", 0) - AM_RANGE(0x600000, 0x6fffff) AM_ROM AM_REGION("gfxrom", 0) -ADDRESS_MAP_END + map(0x060000, 0x063fff).ram(); + map(0x080000, 0x09ffff).rom().region("data", 0); + map(0x0a0000, 0x0a0001).w(this, FUNC(twin16_state::CPUB_register_w)); + map(0x400000, 0x403fff).ram().share("spriteram"); + map(0x480000, 0x481fff).ram().w(this, FUNC(twin16_state::videoram0_w)).share("videoram.0"); + map(0x482000, 0x483fff).ram().w(this, FUNC(twin16_state::videoram1_w)).share("videoram.1"); + map(0x500000, 0x53ffff).ram().w(this, FUNC(twin16_state::zipram_w)).share("zipram"); + map(0x600000, 0x6fffff).rom().region("gfxrom", 0); + map(0x700000, 0x77ffff).bankr("gfxrombank"); + map(0x780000, 0x79ffff).ram().share("sprite_gfx_ram"); +} + +void fround_state::fround_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x043fff).ram().share("comram"); + map(0x060000, 0x063fff).ram(); + map(0x080000, 0x080fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette"); + map(0x0a0000, 0x0a0001).portr("SYSTEM").w(this, FUNC(fround_state::fround_CPU_register_w)); + map(0x0a0002, 0x0a0003).portr("P1"); + map(0x0a0004, 0x0a0005).portr("P2"); + map(0x0a0009, 0x0a0009).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x0a0010, 0x0a0011).portr("DSW2").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x0a0012, 0x0a0013).portr("DSW1"); + map(0x0a0018, 0x0a0019).portr("DSW3"); + map(0x0c0000, 0x0c000f).w(this, FUNC(fround_state::video_register_w)); + map(0x0c000e, 0x0c000f).r(this, FUNC(fround_state::sprite_status_r)); + map(0x0e0000, 0x0e0001).w(this, FUNC(fround_state::gfx_bank_w)); + map(0x100000, 0x103fff).ram().w(this, FUNC(fround_state::fixram_w)).share("fixram"); + map(0x120000, 0x121fff).ram().w(this, FUNC(fround_state::videoram0_w)).share("videoram.0"); + map(0x122000, 0x123fff).ram().w(this, FUNC(fround_state::videoram1_w)).share("videoram.1"); + map(0x140000, 0x143fff).ram().share("spriteram"); + map(0x500000, 0x5fffff).rom().region("tiles", 0); + map(0x600000, 0x6fffff).rom().region("gfxrom", 0); +} /* Input Ports */ diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp index e7bd1c44342..276870da5cb 100644 --- a/src/mame/drivers/twincobr.cpp +++ b/src/mame/drivers/twincobr.cpp @@ -393,65 +393,70 @@ Shark Zame /***************************** 68000 Memory Map *****************************/ -ADDRESS_MAP_START(twincobr_state::main_program_map) - AM_RANGE(0x000000, 0x02ffff) AM_ROM - AM_RANGE(0x030000, 0x033fff) AM_RAM /* 68K and DSP shared RAM */ - AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("spriteram16") - AM_RANGE(0x050000, 0x050dff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x060000, 0x060001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0x00ff) - AM_RANGE(0x060002, 0x060003) AM_DEVWRITE8("crtc", mc6845_device, register_w, 0x00ff) - AM_RANGE(0x070000, 0x070003) AM_WRITE(twincobr_txscroll_w) /* text layer scroll */ - AM_RANGE(0x070004, 0x070005) AM_WRITE(twincobr_txoffs_w) /* offset in text video RAM */ - AM_RANGE(0x072000, 0x072003) AM_WRITE(twincobr_bgscroll_w) /* bg layer scroll */ - AM_RANGE(0x072004, 0x072005) AM_WRITE(twincobr_bgoffs_w) /* offset in bg video RAM */ - AM_RANGE(0x074000, 0x074003) AM_WRITE(twincobr_fgscroll_w) /* fg layer scroll */ - AM_RANGE(0x074004, 0x074005) AM_WRITE(twincobr_fgoffs_w) /* offset in fg video RAM */ - AM_RANGE(0x076000, 0x076003) AM_WRITE(twincobr_exscroll_w) /* Spare layer scroll */ - AM_RANGE(0x078000, 0x078001) AM_READ_PORT("DSWA") - AM_RANGE(0x078002, 0x078003) AM_READ_PORT("DSWB") - AM_RANGE(0x078004, 0x078005) AM_READ_PORT("P1") - AM_RANGE(0x078006, 0x078007) AM_READ_PORT("P2") - AM_RANGE(0x078008, 0x078009) AM_READ_PORT("VBLANK") /* V-Blank & FShark Coin/Start */ - AM_RANGE(0x07800a, 0x07800b) AM_DEVWRITE8("coinlatch", ls259_device, write_nibble_d0, 0x00ff) /* Flying Shark DSP Comms & coin stuff */ - AM_RANGE(0x07800c, 0x07800d) AM_DEVWRITE8("mainlatch", ls259_device, write_nibble_d0, 0x00ff) /* Twin Cobra DSP Comms & system control */ - AM_RANGE(0x07a000, 0x07afff) AM_READWRITE(twincobr_sharedram_r, twincobr_sharedram_w) /* 16-bit on 68000 side, 8-bit on Z80 side */ - AM_RANGE(0x07e000, 0x07e001) AM_READWRITE(twincobr_txram_r, twincobr_txram_w) /* data for text video RAM */ - AM_RANGE(0x07e002, 0x07e003) AM_READWRITE(twincobr_bgram_r, twincobr_bgram_w) /* data for bg video RAM */ - AM_RANGE(0x07e004, 0x07e005) AM_READWRITE(twincobr_fgram_r, twincobr_fgram_w) /* data for fg video RAM */ -ADDRESS_MAP_END +void twincobr_state::main_program_map(address_map &map) +{ + map(0x000000, 0x02ffff).rom(); + map(0x030000, 0x033fff).ram(); /* 68K and DSP shared RAM */ + map(0x040000, 0x040fff).ram().share("spriteram16"); + map(0x050000, 0x050dff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x060001, 0x060001).w("crtc", FUNC(mc6845_device::address_w)); + map(0x060003, 0x060003).w("crtc", FUNC(mc6845_device::register_w)); + map(0x070000, 0x070003).w(this, FUNC(twincobr_state::twincobr_txscroll_w)); /* text layer scroll */ + map(0x070004, 0x070005).w(this, FUNC(twincobr_state::twincobr_txoffs_w)); /* offset in text video RAM */ + map(0x072000, 0x072003).w(this, FUNC(twincobr_state::twincobr_bgscroll_w)); /* bg layer scroll */ + map(0x072004, 0x072005).w(this, FUNC(twincobr_state::twincobr_bgoffs_w)); /* offset in bg video RAM */ + map(0x074000, 0x074003).w(this, FUNC(twincobr_state::twincobr_fgscroll_w)); /* fg layer scroll */ + map(0x074004, 0x074005).w(this, FUNC(twincobr_state::twincobr_fgoffs_w)); /* offset in fg video RAM */ + map(0x076000, 0x076003).w(this, FUNC(twincobr_state::twincobr_exscroll_w)); /* Spare layer scroll */ + map(0x078000, 0x078001).portr("DSWA"); + map(0x078002, 0x078003).portr("DSWB"); + map(0x078004, 0x078005).portr("P1"); + map(0x078006, 0x078007).portr("P2"); + map(0x078008, 0x078009).portr("VBLANK"); /* V-Blank & FShark Coin/Start */ + map(0x07800b, 0x07800b).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Flying Shark DSP Comms & coin stuff */ + map(0x07800d, 0x07800d).w("mainlatch", FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra DSP Comms & system control */ + map(0x07a000, 0x07afff).rw(this, FUNC(twincobr_state::twincobr_sharedram_r), FUNC(twincobr_state::twincobr_sharedram_w)); /* 16-bit on 68000 side, 8-bit on Z80 side */ + map(0x07e000, 0x07e001).rw(this, FUNC(twincobr_state::twincobr_txram_r), FUNC(twincobr_state::twincobr_txram_w)); /* data for text video RAM */ + map(0x07e002, 0x07e003).rw(this, FUNC(twincobr_state::twincobr_bgram_r), FUNC(twincobr_state::twincobr_bgram_w)); /* data for bg video RAM */ + map(0x07e004, 0x07e005).rw(this, FUNC(twincobr_state::twincobr_fgram_r), FUNC(twincobr_state::twincobr_fgram_w)); /* data for fg video RAM */ +} /***************************** Z80 Memory Map *******************************/ -ADDRESS_MAP_START(twincobr_state::sound_program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END +void twincobr_state::sound_program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("sharedram"); +} -ADDRESS_MAP_START(twincobr_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM") /* Twin Cobra - Coin/Start */ - AM_RANGE(0x20, 0x20) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0) /* Twin Cobra coin count-lockout */ - AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA") - AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB") -ADDRESS_MAP_END +void twincobr_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x10, 0x10).portr("SYSTEM"); /* Twin Cobra - Coin/Start */ + map(0x20, 0x20).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra coin count-lockout */ + map(0x40, 0x40).portr("DSWA"); + map(0x50, 0x50).portr("DSWB"); +} /***************************** TMS32010 Memory Map **************************/ -ADDRESS_MAP_START(twincobr_state::DSP_program_map) - AM_RANGE(0x000, 0x7ff) AM_ROM -ADDRESS_MAP_END +void twincobr_state::DSP_program_map(address_map &map) +{ + map(0x000, 0x7ff).rom(); +} /* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */ -ADDRESS_MAP_START(twincobr_state::DSP_io_map) - AM_RANGE(0, 0) AM_WRITE(twincobr_dsp_addrsel_w) - AM_RANGE(1, 1) AM_READWRITE(twincobr_dsp_r, twincobr_dsp_w) - AM_RANGE(2, 2) AM_READWRITE(fsharkbt_dsp_r, fsharkbt_dsp_w) - AM_RANGE(3, 3) AM_WRITE(twincobr_dsp_bio_w) -ADDRESS_MAP_END +void twincobr_state::DSP_io_map(address_map &map) +{ + map(0, 0).w(this, FUNC(twincobr_state::twincobr_dsp_addrsel_w)); + map(1, 1).rw(this, FUNC(twincobr_state::twincobr_dsp_r), FUNC(twincobr_state::twincobr_dsp_w)); + map(2, 2).rw(this, FUNC(twincobr_state::fsharkbt_dsp_r), FUNC(twincobr_state::fsharkbt_dsp_w)); + map(3, 3).w(this, FUNC(twincobr_state::twincobr_dsp_bio_w)); +} /***************************************************************************** diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp index cb5fa5c04d1..71815fbe78e 100644 --- a/src/mame/drivers/twinkle.cpp +++ b/src/mame/drivers/twinkle.cpp @@ -814,24 +814,25 @@ READ8_MEMBER(twinkle_state::shared_psx_r) return result; } -ADDRESS_MAP_START(twinkle_state::main_map) - AM_RANGE(0x1f000000, 0x1f0007ff) AM_READWRITE8(shared_psx_r, shared_psx_w, 0x00ff00ff) - AM_RANGE(0x1f200000, 0x1f20001f) AM_DEVREADWRITE8("am53cf96", am53cf96_device, read, write, 0x00ff00ff) - AM_RANGE(0x1f20a01c, 0x1f20a01f) AM_WRITENOP /* scsi? */ - AM_RANGE(0x1f210000, 0x1f2107ff) AM_DEVREADWRITE8("fdc37c665gt", fdc37c665gt_device, read, write, 0x00ff00ff) - AM_RANGE(0x1f218000, 0x1f218003) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x000000ff) /* LTC1232 */ - AM_RANGE(0x1f220000, 0x1f220003) AM_WRITE8(twinkle_io_w, 0x00ff00ff) - AM_RANGE(0x1f220004, 0x1f220007) AM_READ8(twinkle_io_r, 0x00ff00ff) - AM_RANGE(0x1f230000, 0x1f230003) AM_WRITE16(led_w, 0x0000ffff) - AM_RANGE(0x1f240000, 0x1f240003) AM_READ_PORT("IN6") - AM_RANGE(0x1f250000, 0x1f250003) AM_WRITE16(key_led_w, 0x0000ffff) - AM_RANGE(0x1f260000, 0x1f260003) AM_WRITE16(serial_w, 0x0000ffff) - AM_RANGE(0x1f270000, 0x1f270003) AM_WRITE_PORT("OUTSEC") - AM_RANGE(0x1f280000, 0x1f280003) AM_READ_PORT("INSEC") - AM_RANGE(0x1f290000, 0x1f29007f) AM_DEVREADWRITE8("rtc", rtc65271_device, rtc_r, rtc_w, 0x00ff00ff) - AM_RANGE(0x1f2a0000, 0x1f2a007f) AM_DEVREADWRITE8("rtc", rtc65271_device, xram_r, xram_w, 0x00ff00ff) - AM_RANGE(0x1f2b0000, 0x1f2b00ff) AM_WRITE16(twinkle_output_w, 0xffffffff) -ADDRESS_MAP_END +void twinkle_state::main_map(address_map &map) +{ + map(0x1f000000, 0x1f0007ff).rw(this, FUNC(twinkle_state::shared_psx_r), FUNC(twinkle_state::shared_psx_w)).umask32(0x00ff00ff); + map(0x1f200000, 0x1f20001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff); + map(0x1f20a01c, 0x1f20a01f).nopw(); /* scsi? */ + map(0x1f210000, 0x1f2107ff).rw("fdc37c665gt", FUNC(fdc37c665gt_device::read), FUNC(fdc37c665gt_device::write)).umask32(0x00ff00ff); + map(0x1f218000, 0x1f218000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* LTC1232 */ + map(0x1f220000, 0x1f220003).w(this, FUNC(twinkle_state::twinkle_io_w)).umask32(0x00ff00ff); + map(0x1f220004, 0x1f220007).r(this, FUNC(twinkle_state::twinkle_io_r)).umask32(0x00ff00ff); + map(0x1f230000, 0x1f230001).w(this, FUNC(twinkle_state::led_w)); + map(0x1f240000, 0x1f240003).portr("IN6"); + map(0x1f250000, 0x1f250001).w(this, FUNC(twinkle_state::key_led_w)); + map(0x1f260000, 0x1f260001).w(this, FUNC(twinkle_state::serial_w)); + map(0x1f270000, 0x1f270003).portw("OUTSEC"); + map(0x1f280000, 0x1f280003).portr("INSEC"); + map(0x1f290000, 0x1f29007f).rw("rtc", FUNC(rtc65271_device::rtc_r), FUNC(rtc65271_device::rtc_w)).umask32(0x00ff00ff); + map(0x1f2a0000, 0x1f2a007f).rw("rtc", FUNC(rtc65271_device::xram_r), FUNC(rtc65271_device::xram_w)).umask32(0x00ff00ff); + map(0x1f2b0000, 0x1f2b00ff).w(this, FUNC(twinkle_state::twinkle_output_w)); +} /* SPU board */ @@ -963,26 +964,28 @@ WRITE16_MEMBER(twinkle_state::spu_led_w) m_spu_leds[7] = BIT(~data, 7); } -ADDRESS_MAP_START(twinkle_state::sound_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x13ffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("SPU_DSW") - AM_RANGE(0x220000, 0x220001) AM_WRITE(spu_led_w) - AM_RANGE(0x230000, 0x230003) AM_WRITE(twinkle_spu_ctrl_w) - AM_RANGE(0x240000, 0x240003) AM_WRITE(spu_ata_dma_low_w) AM_READNOP - AM_RANGE(0x250000, 0x250003) AM_WRITE(spu_ata_dma_high_w) AM_READNOP - AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_wavebank_w) AM_READNOP - AM_RANGE(0x280000, 0x280fff) AM_READWRITE(shared_68k_r, shared_68k_w) - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) +void twinkle_state::sound_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x13ffff).ram(); + map(0x200000, 0x200001).portr("SPU_DSW"); + map(0x220000, 0x220001).w(this, FUNC(twinkle_state::spu_led_w)); + map(0x230000, 0x230003).w(this, FUNC(twinkle_state::twinkle_spu_ctrl_w)); + map(0x240000, 0x240003).w(this, FUNC(twinkle_state::spu_ata_dma_low_w)).nopr(); + map(0x250000, 0x250003).w(this, FUNC(twinkle_state::spu_ata_dma_high_w)).nopr(); + map(0x260000, 0x260001).w(this, FUNC(twinkle_state::spu_wavebank_w)).nopr(); + map(0x280000, 0x280fff).rw(this, FUNC(twinkle_state::shared_68k_r), FUNC(twinkle_state::shared_68k_w)); + map(0x300000, 0x30000f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); // 34000E = ??? - AM_RANGE(0x34000e, 0x34000f) AM_WRITENOP - AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) - AM_RANGE(0x800000, 0xffffff) AM_READWRITE(twinkle_waveram_r, twinkle_waveram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(twinkle_state::rf5c400_map) - AM_RANGE(0x0000000, 0x1ffffff) AM_RAM AM_SHARE("rfsnd") -ADDRESS_MAP_END + map(0x34000e, 0x34000f).nopw(); + map(0x400000, 0x400fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w)); + map(0x800000, 0xffffff).rw(this, FUNC(twinkle_state::twinkle_waveram_r), FUNC(twinkle_state::twinkle_waveram_w)); +} + +void twinkle_state::rf5c400_map(address_map &map) +{ + map(0x0000000, 0x1ffffff).ram().share("rfsnd"); +} /* SCSI */ diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp index 524ca02f10d..76a73f1a050 100644 --- a/src/mame/drivers/twins.cpp +++ b/src/mame/drivers/twins.cpp @@ -282,17 +282,19 @@ WRITE16_MEMBER(twins_state::spider_blitter_w) } -ADDRESS_MAP_START(twins_state::twins_map) - AM_RANGE(0x00000, 0xfffff) AM_READWRITE(spider_blitter_r, spider_blitter_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(twins_state::twins_io) - AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w) - AM_RANGE(0x0006, 0x0007) AM_WRITE(twins_pal_w) AM_SHARE("paletteram") - AM_RANGE(0x000e, 0x000f) AM_WRITE(porte_paloff0_w) -ADDRESS_MAP_END +void twins_state::twins_map(address_map &map) +{ + map(0x00000, 0xfffff).rw(this, FUNC(twins_state::spider_blitter_r), FUNC(twins_state::spider_blitter_w)); +} + +void twins_state::twins_io(address_map &map) +{ + map(0x0000, 0x0003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x0002, 0x0002).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x0004, 0x0005).rw(this, FUNC(twins_state::twins_port4_r), FUNC(twins_state::twins_port4_w)); + map(0x0006, 0x0007).w(this, FUNC(twins_state::twins_pal_w)).share("paletteram"); + map(0x000e, 0x000f).w(this, FUNC(twins_state::porte_paloff0_w)); +} void twins_state::video_start() { @@ -420,19 +422,21 @@ MACHINE_CONFIG_END -ADDRESS_MAP_START(twins_state::twinsa_io) - AM_RANGE(0x0000, 0x0001) AM_DEVWRITE8("ramdac",ramdac_device,index_w,0x00ff) - AM_RANGE(0x0002, 0x0003) AM_DEVWRITE8("ramdac",ramdac_device,mask_w,0x00ff) - AM_RANGE(0x0004, 0x0005) AM_DEVREADWRITE8("ramdac",ramdac_device,pal_r,pal_w,0x00ff) - AM_RANGE(0x0008, 0x0009) AM_DEVWRITE8("aysnd", ay8910_device, address_w, 0x00ff) - AM_RANGE(0x0010, 0x0011) AM_DEVREADWRITE8("aysnd", ay8910_device, data_r, data_w, 0x00ff) - AM_RANGE(0x0018, 0x0019) AM_READ(twins_port4_r) AM_WRITE(twins_port4_w) -ADDRESS_MAP_END +void twins_state::twinsa_io(address_map &map) +{ + map(0x0000, 0x0000).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x0002, 0x0002).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x0004, 0x0004).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w)); + map(0x0008, 0x0008).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x0010, 0x0010).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x0018, 0x0019).r(this, FUNC(twins_state::twins_port4_r)).w(this, FUNC(twins_state::twins_port4_w)); +} -ADDRESS_MAP_START(twins_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void twins_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} MACHINE_CONFIG_START(twins_state::twinsa) @@ -545,20 +549,21 @@ READ16_MEMBER(twins_state::spider_port_1e_r) } -ADDRESS_MAP_START(twins_state::spider_io) - AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) - AM_RANGE(0x0002, 0x0003) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w) - AM_RANGE(0x0008, 0x0009) AM_WRITE(spider_pal_w) AM_SHARE("paletteram") - AM_RANGE(0x0010, 0x0011) AM_WRITE(spider_paloff0_w) +void twins_state::spider_io(address_map &map) +{ + map(0x0000, 0x0003).w("aysnd", FUNC(ay8910_device::address_data_w)).umask16(0x00ff); + map(0x0002, 0x0002).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x0004, 0x0005).rw(this, FUNC(twins_state::twins_port4_r), FUNC(twins_state::twins_port4_w)); + map(0x0008, 0x0009).w(this, FUNC(twins_state::spider_pal_w)).share("paletteram"); + map(0x0010, 0x0011).w(this, FUNC(twins_state::spider_paloff0_w)); - AM_RANGE(0x0018, 0x0019) AM_READ(spider_port_18_r) - AM_RANGE(0x001a, 0x001b) AM_WRITE(spider_port_1a_w) - AM_RANGE(0x001c, 0x001d) AM_WRITE(spider_port_1c_w) - AM_RANGE(0x001e, 0x001f) AM_READ(spider_port_1e_r) + map(0x0018, 0x0019).r(this, FUNC(twins_state::spider_port_18_r)); + map(0x001a, 0x001b).w(this, FUNC(twins_state::spider_port_1a_w)); + map(0x001c, 0x001d).w(this, FUNC(twins_state::spider_port_1c_w)); + map(0x001e, 0x001f).r(this, FUNC(twins_state::spider_port_1e_r)); -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/tx0.cpp b/src/mame/drivers/tx0.cpp index 514e9aa8775..ccc1ff44400 100644 --- a/src/mame/drivers/tx0.cpp +++ b/src/mame/drivers/tx0.cpp @@ -80,14 +80,16 @@ DRIVER_INIT_MEMBER(tx0_state,tx0) } -ADDRESS_MAP_START(tx0_state::tx0_64kw_map) - AM_RANGE(0x0000, 0xffff) AM_RAM -ADDRESS_MAP_END +void tx0_state::tx0_64kw_map(address_map &map) +{ + map(0x0000, 0xffff).ram(); +} -ADDRESS_MAP_START(tx0_state::tx0_8kw_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM -ADDRESS_MAP_END +void tx0_state::tx0_8kw_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); +} static INPUT_PORTS_START( tx0 ) diff --git a/src/mame/drivers/tx1.cpp b/src/mame/drivers/tx1.cpp index 0a334e8cbc5..aaddeba89e1 100644 --- a/src/mame/drivers/tx1.cpp +++ b/src/mame/drivers/tx1.cpp @@ -478,49 +478,53 @@ READ8_MEMBER(tx1_state::bbjr_analog_r) * *************************************/ -ADDRESS_MAP_START(tx1_state::tx1_main) - AM_RANGE(0x00000, 0x00fff) AM_MIRROR(0x1000) AM_RAM - AM_RANGE(0x02000, 0x02fff) AM_MIRROR(0x1000) AM_RAM - AM_RANGE(0x04000, 0x04fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x06000, 0x06fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w) - AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("rcram") - AM_RANGE(0x0b000, 0x0b001) AM_READWRITE(dipswitches_r, z80_busreq_w) - AM_RANGE(0x0c000, 0x0c001) AM_WRITE(tx1_scolst_w) - AM_RANGE(0x0d000, 0x0d003) AM_WRITE(tx1_slincs_w) - AM_RANGE(0x0e000, 0x0e001) AM_WRITE(tx1_slock_w) - AM_RANGE(0x0f000, 0x0f001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) AM_WRITE(resume_math_w) - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(z80_shared_r, z80_shared_w) - AM_RANGE(0x20000, 0x2ffff) AM_MIRROR(0xd0000) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tx1_state::tx1_math) - AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("math_ram") - AM_RANGE(0x00800, 0x00fff) AM_READWRITE(tx1_spcs_ram_r, tx1_spcs_ram_w) - AM_RANGE(0x01000, 0x01fff) AM_RAM AM_SHARE("rcram") - AM_RANGE(0x02000, 0x022ff) AM_RAM AM_SHARE("objram") - AM_RANGE(0x02400, 0x027ff) AM_WRITE(tx1_bankcs_w) - AM_RANGE(0x02800, 0x02bff) AM_WRITE(halt_math_w) - AM_RANGE(0x02C00, 0x02fff) AM_WRITE(tx1_flgcs_w) - AM_RANGE(0x03000, 0x03fff) AM_READWRITE(tx1_math_r, tx1_math_w) - AM_RANGE(0x04000, 0x07fff) AM_MIRROR(0xf8000) AM_ROM - AM_RANGE(0x05000, 0x07fff) AM_READ(tx1_spcs_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tx1_state::tx1_sound_prg) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_MIRROR(0x800) AM_SHARE("z80_ram") - AM_RANGE(0x4000, 0x4000) AM_WRITE(z80_intreq_w) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("tx1", tx1_sound_device, pit8253_r, pit8253_w) - AM_RANGE(0x7000, 0x7fff) AM_WRITE(tx1_ppi_latch_w) - AM_RANGE(0xb000, 0xbfff) AM_READWRITE(ts_r, ts_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(tx1_state::tx1_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) -ADDRESS_MAP_END +void tx1_state::tx1_main(address_map &map) +{ + map(0x00000, 0x00fff).mirror(0x1000).ram(); + map(0x02000, 0x02fff).mirror(0x1000).ram(); + map(0x04000, 0x04fff).mirror(0x1000).ram().share("nvram"); + map(0x06000, 0x06fff).rw(this, FUNC(tx1_state::tx1_crtc_r), FUNC(tx1_state::tx1_crtc_w)); + map(0x08000, 0x09fff).ram().share("vram"); + map(0x0a000, 0x0afff).ram().share("rcram"); + map(0x0b000, 0x0b001).rw(this, FUNC(tx1_state::dipswitches_r), FUNC(tx1_state::z80_busreq_w)); + map(0x0c000, 0x0c001).w(this, FUNC(tx1_state::tx1_scolst_w)); + map(0x0d000, 0x0d003).w(this, FUNC(tx1_state::tx1_slincs_w)); + map(0x0e000, 0x0e001).w(this, FUNC(tx1_state::tx1_slock_w)); + map(0x0f000, 0x0f001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)).w(this, FUNC(tx1_state::resume_math_w)); + map(0x10000, 0x1ffff).rw(this, FUNC(tx1_state::z80_shared_r), FUNC(tx1_state::z80_shared_w)); + map(0x20000, 0x2ffff).mirror(0xd0000).rom(); +} + +void tx1_state::tx1_math(address_map &map) +{ + map(0x00000, 0x007ff).ram().share("math_ram"); + map(0x00800, 0x00fff).rw(this, FUNC(tx1_state::tx1_spcs_ram_r), FUNC(tx1_state::tx1_spcs_ram_w)); + map(0x01000, 0x01fff).ram().share("rcram"); + map(0x02000, 0x022ff).ram().share("objram"); + map(0x02400, 0x027ff).w(this, FUNC(tx1_state::tx1_bankcs_w)); + map(0x02800, 0x02bff).w(this, FUNC(tx1_state::halt_math_w)); + map(0x02C00, 0x02fff).w(this, FUNC(tx1_state::tx1_flgcs_w)); + map(0x03000, 0x03fff).rw(this, FUNC(tx1_state::tx1_math_r), FUNC(tx1_state::tx1_math_w)); + map(0x04000, 0x07fff).mirror(0xf8000).rom(); + map(0x05000, 0x07fff).r(this, FUNC(tx1_state::tx1_spcs_rom_r)); +} + +void tx1_state::tx1_sound_prg(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x3000, 0x37ff).ram().mirror(0x800).share("z80_ram"); + map(0x4000, 0x4000).w(this, FUNC(tx1_state::z80_intreq_w)); + map(0x5000, 0x5003).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6000, 0x6003).rw("tx1", FUNC(tx1_sound_device::pit8253_r), FUNC(tx1_sound_device::pit8253_w)); + map(0x7000, 0x7fff).w(this, FUNC(tx1_state::tx1_ppi_latch_w)); + map(0xb000, 0xbfff).rw(this, FUNC(tx1_state::ts_r), FUNC(tx1_state::ts_w)); +} + +void tx1_state::tx1_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::data_address_w)); +} /************************************* @@ -529,76 +533,82 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(tx1_state::buggyboy_main) - AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x04000, 0x04fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w) - AM_RANGE(0x08000, 0x09fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("rcram") - AM_RANGE(0x0b000, 0x0b001) AM_READWRITE(dipswitches_r, z80_busreq_w) - AM_RANGE(0x0c000, 0x0c001) AM_WRITE(buggyboy_scolst_w) - AM_RANGE(0x0d000, 0x0d003) AM_WRITE(tx1_slincs_w) - AM_RANGE(0x0e000, 0x0e001) AM_WRITE(buggyboy_sky_w) - AM_RANGE(0x0f000, 0x0f003) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) AM_WRITE(resume_math_w) - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(z80_shared_r, z80_shared_w) - AM_RANGE(0x20000, 0x2ffff) AM_ROM - AM_RANGE(0xf0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tx1_state::buggybjr_main) - AM_RANGE(0x00000, 0x03fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x04000, 0x04fff) AM_READWRITE(tx1_crtc_r, tx1_crtc_w) - AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("rcram") - AM_RANGE(0x0b000, 0x0b001) AM_READWRITE(dipswitches_r, z80_busreq_w) - AM_RANGE(0x0c000, 0x0c001) AM_WRITE(buggyboy_scolst_w) - AM_RANGE(0x0d000, 0x0d003) AM_WRITE(tx1_slincs_w) - AM_RANGE(0x0e000, 0x0e001) AM_WRITE(buggyboy_sky_w) - AM_RANGE(0x0f000, 0x0f003) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) AM_WRITE(resume_math_w) - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(z80_shared_r, z80_shared_w) - AM_RANGE(0x20000, 0x2ffff) AM_ROM - AM_RANGE(0xf0000, 0xfffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(tx1_state::buggyboy_math) - AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("math_ram") - AM_RANGE(0x00800, 0x00fff) AM_READWRITE(buggyboy_spcs_ram_r, buggyboy_spcs_ram_w) - AM_RANGE(0x01000, 0x01fff) AM_RAM AM_SHARE("rcram") - AM_RANGE(0x02000, 0x022ff) AM_RAM AM_SHARE("objram") - AM_RANGE(0x02400, 0x024ff) AM_WRITE(buggyboy_gas_w) - AM_RANGE(0x03000, 0x03fff) AM_READWRITE(buggyboy_math_r, buggyboy_math_w) - AM_RANGE(0x04000, 0x07fff) AM_MIRROR(0xf8000) AM_ROM - AM_RANGE(0x05000, 0x07fff) AM_READ(buggyboy_spcs_rom_r) -ADDRESS_MAP_END +void tx1_state::buggyboy_main(address_map &map) +{ + map(0x00000, 0x03fff).ram().share("nvram"); + map(0x04000, 0x04fff).rw(this, FUNC(tx1_state::tx1_crtc_r), FUNC(tx1_state::tx1_crtc_w)); + map(0x08000, 0x09fff).ram().share("vram"); + map(0x0a000, 0x0afff).ram().share("rcram"); + map(0x0b000, 0x0b001).rw(this, FUNC(tx1_state::dipswitches_r), FUNC(tx1_state::z80_busreq_w)); + map(0x0c000, 0x0c001).w(this, FUNC(tx1_state::buggyboy_scolst_w)); + map(0x0d000, 0x0d003).w(this, FUNC(tx1_state::tx1_slincs_w)); + map(0x0e000, 0x0e001).w(this, FUNC(tx1_state::buggyboy_sky_w)); + map(0x0f000, 0x0f003).r("watchdog", FUNC(watchdog_timer_device::reset16_r)).w(this, FUNC(tx1_state::resume_math_w)); + map(0x10000, 0x1ffff).rw(this, FUNC(tx1_state::z80_shared_r), FUNC(tx1_state::z80_shared_w)); + map(0x20000, 0x2ffff).rom(); + map(0xf0000, 0xfffff).rom(); +} + +void tx1_state::buggybjr_main(address_map &map) +{ + map(0x00000, 0x03fff).ram().share("nvram"); + map(0x04000, 0x04fff).rw(this, FUNC(tx1_state::tx1_crtc_r), FUNC(tx1_state::tx1_crtc_w)); + map(0x08000, 0x08fff).ram().share("vram"); + map(0x0a000, 0x0afff).ram().share("rcram"); + map(0x0b000, 0x0b001).rw(this, FUNC(tx1_state::dipswitches_r), FUNC(tx1_state::z80_busreq_w)); + map(0x0c000, 0x0c001).w(this, FUNC(tx1_state::buggyboy_scolst_w)); + map(0x0d000, 0x0d003).w(this, FUNC(tx1_state::tx1_slincs_w)); + map(0x0e000, 0x0e001).w(this, FUNC(tx1_state::buggyboy_sky_w)); + map(0x0f000, 0x0f003).r("watchdog", FUNC(watchdog_timer_device::reset16_r)).w(this, FUNC(tx1_state::resume_math_w)); + map(0x10000, 0x1ffff).rw(this, FUNC(tx1_state::z80_shared_r), FUNC(tx1_state::z80_shared_w)); + map(0x20000, 0x2ffff).rom(); + map(0xf0000, 0xfffff).rom(); +} + +void tx1_state::buggyboy_math(address_map &map) +{ + map(0x00000, 0x007ff).ram().share("math_ram"); + map(0x00800, 0x00fff).rw(this, FUNC(tx1_state::buggyboy_spcs_ram_r), FUNC(tx1_state::buggyboy_spcs_ram_w)); + map(0x01000, 0x01fff).ram().share("rcram"); + map(0x02000, 0x022ff).ram().share("objram"); + map(0x02400, 0x024ff).w(this, FUNC(tx1_state::buggyboy_gas_w)); + map(0x03000, 0x03fff).rw(this, FUNC(tx1_state::buggyboy_math_r), FUNC(tx1_state::buggyboy_math_w)); + map(0x04000, 0x07fff).mirror(0xf8000).rom(); + map(0x05000, 0x07fff).r(this, FUNC(tx1_state::buggyboy_spcs_rom_r)); +} /* Buggy Boy Sound PCB TC033A */ -ADDRESS_MAP_START(tx1_state::buggyboy_sound_prg) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("z80_ram") - AM_RANGE(0x6000, 0x6001) AM_READ(bb_analog_r) - AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE("buggyboy", buggyboy_sound_device, pit8253_r, pit8253_w) - AM_RANGE(0x7800, 0x7800) AM_WRITE(z80_intreq_w) - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(ts_r, ts_w) -ADDRESS_MAP_END +void tx1_state::buggyboy_sound_prg(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("z80_ram"); + map(0x6000, 0x6001).r(this, FUNC(tx1_state::bb_analog_r)); + map(0x6800, 0x6803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7000, 0x7003).rw("buggyboy", FUNC(buggyboy_sound_device::pit8253_r), FUNC(buggyboy_sound_device::pit8253_w)); + map(0x7800, 0x7800).w(this, FUNC(tx1_state::z80_intreq_w)); + map(0xc000, 0xc7ff).rw(this, FUNC(tx1_state::ts_r), FUNC(tx1_state::ts_w)); +} /* Buggy Boy Jr Sound PCB TC043 */ -ADDRESS_MAP_START(tx1_state::buggybjr_sound_prg) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("z80_ram") - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("buggyboy", buggyboy_sound_device, pit8253_r, pit8253_w) - AM_RANGE(0x6000, 0x6001) AM_READ(bbjr_analog_r) - AM_RANGE(0x7000, 0x7000) AM_WRITE(z80_intreq_w) - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(ts_r, ts_w) -ADDRESS_MAP_END +void tx1_state::buggybjr_sound_prg(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("z80_ram"); + map(0x5000, 0x5003).rw("buggyboy", FUNC(buggyboy_sound_device::pit8253_r), FUNC(buggyboy_sound_device::pit8253_w)); + map(0x6000, 0x6001).r(this, FUNC(tx1_state::bbjr_analog_r)); + map(0x7000, 0x7000).w(this, FUNC(tx1_state::z80_intreq_w)); + map(0xc000, 0xc7ff).rw(this, FUNC(tx1_state::ts_r), FUNC(tx1_state::ts_w)); +} /* Common */ -ADDRESS_MAP_START(tx1_state::buggyboy_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVREAD("ym1", ay8910_device, data_r) - AM_RANGE(0x40, 0x41) AM_DEVWRITE("ym1", ay8910_device, data_address_w) - AM_RANGE(0x80, 0x80) AM_DEVREAD("ym2", ay8910_device, data_r) - AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ay8910_device, data_address_w) -ADDRESS_MAP_END +void tx1_state::buggyboy_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).r("ym1", FUNC(ay8910_device::data_r)); + map(0x40, 0x41).w("ym1", FUNC(ay8910_device::data_address_w)); + map(0x80, 0x80).r("ym2", FUNC(ay8910_device::data_r)); + map(0x80, 0x81).w("ym2", FUNC(ay8910_device::data_address_w)); +} /************************************* * diff --git a/src/mame/drivers/uapce.cpp b/src/mame/drivers/uapce.cpp index d79666573fa..957135cd496 100644 --- a/src/mame/drivers/uapce.cpp +++ b/src/mame/drivers/uapce.cpp @@ -243,14 +243,15 @@ void uapce_state::machine_reset() m_jamma_if_control_latch = 0; } -ADDRESS_MAP_START(uapce_state::z80_map) - AM_RANGE( 0x0000, 0x07FF) AM_ROM - AM_RANGE( 0x0800, 0x0FFF) AM_RAM - AM_RANGE( 0x1000, 0x17FF) AM_WRITE(jamma_if_control_latch_w ) - AM_RANGE( 0x1800, 0x1FFF) AM_READ(jamma_if_read_dsw ) - AM_RANGE( 0x2000, 0x27FF) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x2800, 0x2FFF) AM_READ(jamma_if_control_latch_r ) -ADDRESS_MAP_END +void uapce_state::z80_map(address_map &map) +{ + map(0x0000, 0x07FF).rom(); + map(0x0800, 0x0FFF).ram(); + map(0x1000, 0x17FF).w(this, FUNC(uapce_state::jamma_if_control_latch_w)); + map(0x1800, 0x1FFF).r(this, FUNC(uapce_state::jamma_if_read_dsw)); + map(0x2000, 0x27FF).portr("COIN"); + map(0x2800, 0x2FFF).r(this, FUNC(uapce_state::jamma_if_control_latch_r)); +} static INPUT_PORTS_START( uapce ) @@ -286,20 +287,22 @@ static INPUT_PORTS_START( uapce ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) INPUT_PORTS_END -ADDRESS_MAP_START(uapce_state::pce_mem) - AM_RANGE( 0x000000, 0x09FFFF) AM_ROM - AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) - AM_RANGE( 0x1FE000, 0x1FE3FF) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) - AM_RANGE( 0x1FE400, 0x1FE7FF) AM_DEVREADWRITE( "huc6260", huc6260_device, read, write ) - AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE("c6280", c6280_device, c6280_r, c6280_w ) - AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_DEVREADWRITE("maincpu", h6280_device, timer_r, timer_w ) - AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE(pce_joystick_r, pce_joystick_w ) - AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE("maincpu", h6280_device, irq_status_r, irq_status_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(uapce_state::pce_io) - AM_RANGE( 0x00, 0x03) AM_DEVREADWRITE( "huc6270", huc6270_device, read, write ) -ADDRESS_MAP_END +void uapce_state::pce_mem(address_map &map) +{ + map(0x000000, 0x09FFFF).rom(); + map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000); + map(0x1FE000, 0x1FE3FF).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); + map(0x1FE400, 0x1FE7FF).rw(m_huc6260, FUNC(huc6260_device::read), FUNC(huc6260_device::write)); + map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w)); + map(0x1FEC00, 0x1FEFFF).rw(m_maincpu, FUNC(h6280_device::timer_r), FUNC(h6280_device::timer_w)); + map(0x1FF000, 0x1FF3FF).rw(this, FUNC(uapce_state::pce_joystick_r), FUNC(uapce_state::pce_joystick_w)); + map(0x1FF400, 0x1FF7FF).rw(m_maincpu, FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w)); +} + +void uapce_state::pce_io(address_map &map) +{ + map(0x00, 0x03).rw("huc6270", FUNC(huc6270_device::read), FUNC(huc6270_device::write)); +} MACHINE_CONFIG_START(uapce_state::uapce) diff --git a/src/mame/drivers/uknc.cpp b/src/mame/drivers/uknc.cpp index 45f07b80426..88f918f382a 100644 --- a/src/mame/drivers/uknc.cpp +++ b/src/mame/drivers/uknc.cpp @@ -30,17 +30,19 @@ public: }; -ADDRESS_MAP_START(uknc_state::uknc_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROM // ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(uknc_state::uknc_sub_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROM // ROM -ADDRESS_MAP_END +void uknc_state::uknc_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram(); // RAM + map(0x8000, 0xffff).rom(); // ROM +} + +void uknc_state::uknc_sub_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).ram(); // RAM + map(0x8000, 0xffff).rom(); // ROM +} /* Input ports */ static INPUT_PORTS_START( uknc ) diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp index 6f4ba3918cb..f9859d1eae0 100644 --- a/src/mame/drivers/ultraman.cpp +++ b/src/mame/drivers/ultraman.cpp @@ -28,42 +28,45 @@ WRITE8_MEMBER(ultraman_state::sound_nmi_enable_w) } -ADDRESS_MAP_START(ultraman_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM - AM_RANGE(0x180000, 0x183fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")/* Palette */ - AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1c0002, 0x1c0003) AM_READ_PORT("P1") - AM_RANGE(0x1c0004, 0x1c0005) AM_READ_PORT("P2") - AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("DSW1") - AM_RANGE(0x1c0008, 0x1c0009) AM_READ_PORT("DSW2") - AM_RANGE(0x1c0018, 0x1c0019) AM_WRITE(ultraman_gfxctrl_w) /* counters + gfx ctrl */ - AM_RANGE(0x1c0020, 0x1c0021) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x1c0028, 0x1c0029) AM_DEVWRITE8("soundnmi", input_merger_device, in_set<0>, 0x00ff) - AM_RANGE(0x1c0030, 0x1c0031) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x204000, 0x204fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0x00ff) /* K051316 #0 RAM */ - AM_RANGE(0x205000, 0x205fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0x00ff) /* K051316 #1 RAM */ - AM_RANGE(0x206000, 0x206fff) AM_DEVREADWRITE8("k051316_3", k051316_device, read, write, 0x00ff) /* K051316 #2 RAM */ - AM_RANGE(0x207f80, 0x207f9f) AM_DEVWRITE8("k051316_1", k051316_device, ctrl_w, 0x00ff) /* K051316 #0 registers */ - AM_RANGE(0x207fa0, 0x207fbf) AM_DEVWRITE8("k051316_2", k051316_device, ctrl_w, 0x00ff) /* K051316 #1 registers */ - AM_RANGE(0x207fc0, 0x207fdf) AM_DEVWRITE8("k051316_3", k051316_device, ctrl_w, 0x00ff) /* K051316 #2 registers */ - AM_RANGE(0x304000, 0x30400f) AM_DEVREADWRITE8("k051960", k051960_device, k051937_r, k051937_w, 0x00ff) /* Sprite control */ - AM_RANGE(0x304800, 0x304fff) AM_DEVREADWRITE8("k051960", k051960_device, k051960_r, k051960_w, 0x00ff) /* Sprite RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ultraman_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xd000, 0xd000) AM_WRITE(sound_nmi_enable_w) - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* M6295 */ - AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ultraman_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>) -ADDRESS_MAP_END +void ultraman_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x08ffff).ram(); + map(0x180000, 0x183fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");/* Palette */ + map(0x1c0000, 0x1c0001).portr("SYSTEM"); + map(0x1c0002, 0x1c0003).portr("P1"); + map(0x1c0004, 0x1c0005).portr("P2"); + map(0x1c0006, 0x1c0007).portr("DSW1"); + map(0x1c0008, 0x1c0009).portr("DSW2"); + map(0x1c0018, 0x1c0019).w(this, FUNC(ultraman_state::ultraman_gfxctrl_w)); /* counters + gfx ctrl */ + map(0x1c0021, 0x1c0021).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1c0029, 0x1c0029).w(m_soundnmi, FUNC(input_merger_device::in_set<0>)); + map(0x1c0030, 0x1c0031).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x204000, 0x204fff).rw(m_k051316_1, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); /* K051316 #0 RAM */ + map(0x205000, 0x205fff).rw(m_k051316_2, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); /* K051316 #1 RAM */ + map(0x206000, 0x206fff).rw(m_k051316_3, FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); /* K051316 #2 RAM */ + map(0x207f80, 0x207f9f).w(m_k051316_1, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); /* K051316 #0 registers */ + map(0x207fa0, 0x207fbf).w(m_k051316_2, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); /* K051316 #1 registers */ + map(0x207fc0, 0x207fdf).w(m_k051316_3, FUNC(k051316_device::ctrl_w)).umask16(0x00ff); /* K051316 #2 registers */ + map(0x304000, 0x30400f).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)).umask16(0x00ff); /* Sprite control */ + map(0x304800, 0x304fff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)).umask16(0x00ff); /* Sprite RAM */ +} + +void ultraman_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).ram(); + map(0xc000, 0xc000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xd000, 0xd000).w(this, FUNC(ultraman_state::sound_nmi_enable_w)); + map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* M6295 */ + map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */ +} + +void ultraman_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(m_soundnmi, FUNC(input_merger_device::in_clear<0>)); +} static INPUT_PORTS_START( ultraman ) diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp index ddc996441a2..98d0b09c524 100644 --- a/src/mame/drivers/ultratnk.cpp +++ b/src/mame/drivers/ultratnk.cpp @@ -161,33 +161,34 @@ WRITE8_MEMBER(ultratnk_state::explosion_w) } -ADDRESS_MAP_START(ultratnk_state::ultratnk_cpu_map) +void ultratnk_state::ultratnk_cpu_map(address_map &map) +{ - ADDRESS_MAP_GLOBAL_MASK(0x3fff) + map.global_mask(0x3fff); - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x700) AM_RAM - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w) - AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram") + map(0x0000, 0x007f).mirror(0x700).ram(); + map(0x0080, 0x00ff).mirror(0x700).rw(this, FUNC(ultratnk_state::wram_r), FUNC(ultratnk_state::wram_w)); + map(0x0800, 0x0bff).mirror(0x400).ram().w(this, FUNC(ultratnk_state::video_ram_w)).share("videoram"); - AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0") - AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1") + map(0x1000, 0x17ff).portr("IN0"); + map(0x1800, 0x1fff).portr("IN1"); - AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x718) AM_READ(analog_r) - AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_READ(coin_r) - AM_RANGE(0x2040, 0x2047) AM_MIRROR(0x718) AM_READ(collision_r) - AM_RANGE(0x2060, 0x2063) AM_MIRROR(0x71c) AM_READ(options_r) + map(0x2000, 0x2007).mirror(0x718).r(this, FUNC(ultratnk_state::analog_r)); + map(0x2020, 0x2027).mirror(0x718).r(this, FUNC(ultratnk_state::coin_r)); + map(0x2040, 0x2047).mirror(0x718).r(this, FUNC(ultratnk_state::collision_r)); + map(0x2060, 0x2063).mirror(0x71c).r(this, FUNC(ultratnk_state::options_r)); - AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x71f) AM_WRITE(attract_w) - AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w) - AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(da_latch_w) - AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(explosion_w) - AM_RANGE(0x2044, 0x2045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2060, 0x206f) AM_MIRROR(0x710) AM_DEVWRITE("latch", f9334_device, write_a0) + map(0x2000, 0x2000).mirror(0x71f).w(this, FUNC(ultratnk_state::attract_w)); + map(0x2020, 0x2027).mirror(0x718).w(this, FUNC(ultratnk_state::collision_reset_w)); + map(0x2040, 0x2041).mirror(0x718).w(this, FUNC(ultratnk_state::da_latch_w)); + map(0x2042, 0x2043).mirror(0x718).w(this, FUNC(ultratnk_state::explosion_w)); + map(0x2044, 0x2045).mirror(0x718).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x2060, 0x206f).mirror(0x710).w("latch", FUNC(f9334_device::write_a0)); - AM_RANGE(0x2800, 0x2fff) AM_NOP /* diagnostic ROM */ - AM_RANGE(0x3000, 0x3fff) AM_ROM + map(0x2800, 0x2fff).noprw(); /* diagnostic ROM */ + map(0x3000, 0x3fff).rom(); -ADDRESS_MAP_END +} static INPUT_PORTS_START( ultratnk ) diff --git a/src/mame/drivers/ultrsprt.cpp b/src/mame/drivers/ultrsprt.cpp index 8ae6b10c297..3c8cc7b7bbb 100644 --- a/src/mame/drivers/ultrsprt.cpp +++ b/src/mame/drivers/ultrsprt.cpp @@ -148,28 +148,30 @@ READ16_MEMBER(ultrsprt_state::upd2_r) /*****************************************************************************/ -ADDRESS_MAP_START(ultrsprt_state::ultrsprt_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_RAMBANK("vram") - AM_RANGE(0x70000000, 0x70000003) AM_READWRITE8(eeprom_r, eeprom_w, 0xff000000) - AM_RANGE(0x70000020, 0x70000023) AM_READ16(upd1_r, 0xffffffff) - AM_RANGE(0x70000040, 0x70000043) AM_READ16(upd2_r, 0xffffffff) - AM_RANGE(0x70000080, 0x7000008f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x700000c0, 0x700000cf) AM_WRITENOP // Written following DMA interrupt - unused int ack? - AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE(int_ack_w) - AM_RANGE(0x7f000000, 0x7f01ffff) AM_RAM AM_SHARE("workram") - AM_RANGE(0x7f700000, 0x7f703fff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x7f800000, 0x7f9fffff) AM_MIRROR(0x00600000) AM_ROM AM_REGION("program", 0) -ADDRESS_MAP_END +void ultrsprt_state::ultrsprt_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).bankrw("vram"); + map(0x70000000, 0x70000000).rw(this, FUNC(ultrsprt_state::eeprom_r), FUNC(ultrsprt_state::eeprom_w)); + map(0x70000020, 0x70000023).r(this, FUNC(ultrsprt_state::upd1_r)); + map(0x70000040, 0x70000043).r(this, FUNC(ultrsprt_state::upd2_r)); + map(0x70000080, 0x7000008f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x700000c0, 0x700000cf).nopw(); // Written following DMA interrupt - unused int ack? + map(0x700000e0, 0x700000e3).w(this, FUNC(ultrsprt_state::int_ack_w)); + map(0x7f000000, 0x7f01ffff).ram().share("workram"); + map(0x7f700000, 0x7f703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x7f800000, 0x7f9fffff).mirror(0x00600000).rom().region("program", 0); +} /*****************************************************************************/ -ADDRESS_MAP_START(ultrsprt_state::sound_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM - AM_RANGE(0x00100000, 0x00101fff) AM_RAM - AM_RANGE(0x00200000, 0x0020000f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0xffff) - AM_RANGE(0x00400000, 0x004002ff) AM_DEVREADWRITE8("k054539", k054539_device, read, write, 0xffff) -ADDRESS_MAP_END +void ultrsprt_state::sound_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); + map(0x00100000, 0x00101fff).ram(); + map(0x00200000, 0x0020000f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)); + map(0x00400000, 0x004002ff).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/umipoker.cpp b/src/mame/drivers/umipoker.cpp index 91cc5211003..e65d31bae03 100644 --- a/src/mame/drivers/umipoker.cpp +++ b/src/mame/drivers/umipoker.cpp @@ -315,42 +315,45 @@ WRITE16_MEMBER(umipoker_state::saiyu_counters_w) } -ADDRESS_MAP_START(umipoker_state::umipoker_map) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(umipoker_vram_0_w) AM_SHARE("vra0") - AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(umipoker_vram_1_w) AM_SHARE("vra1") - AM_RANGE(0x804000, 0x805fff) AM_RAM_WRITE(umipoker_vram_2_w) AM_SHARE("vra2") - AM_RANGE(0x806000, 0x807fff) AM_RAM_WRITE(umipoker_vram_3_w) AM_SHARE("vra3") - AM_RANGE(0xc00000, 0xc0ffff) AM_READ8(z80_rom_readback_r,0x00ff) - AM_RANGE(0xc1f000, 0xc1ffff) AM_READWRITE8(z80_shared_ram_r,z80_shared_ram_w,0x00ff) - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("IN0") - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN1") // unused? - AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") +void umipoker_state::umipoker_map(address_map &map) +{ + map.unmap_value_low(); + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x403fff).ram().share("nvram"); + map(0x600000, 0x6007ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x800000, 0x801fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_0_w)).share("vra0"); + map(0x802000, 0x803fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_1_w)).share("vra1"); + map(0x804000, 0x805fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_2_w)).share("vra2"); + map(0x806000, 0x807fff).ram().w(this, FUNC(umipoker_state::umipoker_vram_3_w)).share("vra3"); + map(0xc00000, 0xc0ffff).r(this, FUNC(umipoker_state::z80_rom_readback_r)).umask16(0x00ff); + map(0xc1f000, 0xc1ffff).rw(this, FUNC(umipoker_state::z80_shared_ram_r), FUNC(umipoker_state::z80_shared_ram_w)).umask16(0x00ff); + map(0xe00000, 0xe00001).portr("IN0"); + map(0xe00004, 0xe00005).portr("IN1"); // unused? + map(0xe00008, 0xe00009).portr("IN2"); // AM_RANGE(0xe0000c, 0xe0000d) AM_WRITE(lamps_w) -----> lamps only for saiyukip. // AM_RANGE(0xe00010, 0xe00011) AM_WRITE(counters_w) --> coin counters for both games. - AM_RANGE(0xe00014, 0xe00015) AM_READ_PORT("DSW1-2") - AM_RANGE(0xe00018, 0xe00019) AM_READ_PORT("DSW3-4") - AM_RANGE(0xe00020, 0xe00021) AM_WRITE(umipoker_scrolly_0_w) - AM_RANGE(0xe00022, 0xe00023) AM_WRITE(umipoker_irq_ack_w) - AM_RANGE(0xe00026, 0xe00027) AM_WRITE(umipoker_scrolly_2_w) - AM_RANGE(0xe0002a, 0xe0002b) AM_WRITE(umipoker_scrolly_1_w) - AM_RANGE(0xe0002c, 0xe0002d) AM_WRITENOP // unknown meaning, bit 0 goes from 0 -> 1 on IRQ service routine - AM_RANGE(0xe0002e, 0xe0002f) AM_WRITE(umipoker_scrolly_3_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(umipoker_state::umipoker_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_READWRITE(z80_shared_ram_r,z80_shared_ram_w) AM_SHARE("z80_wram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(umipoker_state::umipoker_audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ym", ym3812_device, read, write) -ADDRESS_MAP_END + map(0xe00014, 0xe00015).portr("DSW1-2"); + map(0xe00018, 0xe00019).portr("DSW3-4"); + map(0xe00020, 0xe00021).w(this, FUNC(umipoker_state::umipoker_scrolly_0_w)); + map(0xe00022, 0xe00023).w(this, FUNC(umipoker_state::umipoker_irq_ack_w)); + map(0xe00026, 0xe00027).w(this, FUNC(umipoker_state::umipoker_scrolly_2_w)); + map(0xe0002a, 0xe0002b).w(this, FUNC(umipoker_state::umipoker_scrolly_1_w)); + map(0xe0002c, 0xe0002d).nopw(); // unknown meaning, bit 0 goes from 0 -> 1 on IRQ service routine + map(0xe0002e, 0xe0002f).w(this, FUNC(umipoker_state::umipoker_scrolly_3_w)); +} + +void umipoker_state::umipoker_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xf800, 0xffff).rw(this, FUNC(umipoker_state::z80_shared_ram_r), FUNC(umipoker_state::z80_shared_ram_w)).share("z80_wram"); +} + +void umipoker_state::umipoker_audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x10, 0x11).rw("ym", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); +} static INPUT_PORTS_START( common ) diff --git a/src/mame/drivers/undrfire.cpp b/src/mame/drivers/undrfire.cpp index cb10ea8f41a..862c8924527 100644 --- a/src/mame/drivers/undrfire.cpp +++ b/src/mame/drivers/undrfire.cpp @@ -399,53 +399,56 @@ WRITE8_MEMBER(undrfire_state::cbombers_adc_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(undrfire_state::undrfire_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram") +void undrfire_state::undrfire_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x21ffff).ram().share("ram"); + map(0x300000, 0x303fff).ram().share("spriteram"); // AM_RANGE(0x304000, 0x304003) AM_RAM // debugging - doesn't change ??? // AM_RANGE(0x304400, 0x304403) AM_RAM // debugging - doesn't change ??? - AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w) /* gun vibration */ - AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff) - AM_RANGE(0x600000, 0x600007) AM_READWRITE(unknown_hardware_r, unknown_int_req_w) /* int request for unknown hardware */ - AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */ - AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb003ff) AM_RAM /* single bytes, blending ??? */ - AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w) /* perhaps port based rotate control? */ - AM_RANGE(0xf00000, 0xf00007) AM_READ(undrfire_lightgun_r) /* stick coords read at $11b2-bc */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(undrfire_state::cbombers_cpua_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x21ffff) AM_RAM - AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x400000, 0x400003) AM_WRITE(cbombers_cpua_ctrl_w) - AM_RANGE(0x500000, 0x500007) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0xffffffff) - AM_RANGE(0x600000, 0x600007) AM_READ(cbombers_adc_r) AM_WRITE8(cbombers_adc_w,0xffffffff) - AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xffffffff) - AM_RANGE(0x800000, 0x80ffff) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, long_r, long_w) /* tilemaps */ - AM_RANGE(0x830000, 0x83002f) AM_DEVREADWRITE("tc0480scp", tc0480scp_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0x900000, 0x90ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, long_r, long_w) /* 6bpp tilemaps */ - AM_RANGE(0x920000, 0x92000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_long_r, ctrl_long_w) - AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xb00000, 0xb0000f) AM_RAM /* ? */ - AM_RANGE(0xc00000, 0xc00007) AM_RAM /* LAN controller? */ - AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w) /* perhaps port based rotate control? */ - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(undrfire_state::cbombers_cpub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM /* local ram */ + map(0x400000, 0x400003).w(this, FUNC(undrfire_state::motor_control_w)); /* gun vibration */ + map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); + map(0x600000, 0x600007).rw(this, FUNC(undrfire_state::unknown_hardware_r), FUNC(undrfire_state::unknown_int_req_w)); /* int request for unknown hardware */ + map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); /* tilemaps */ + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w)); + map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* 6bpp tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w)); + map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xb00000, 0xb003ff).ram(); /* single bytes, blending ??? */ + map(0xd00000, 0xd00003).w(this, FUNC(undrfire_state::rotate_control_w)); /* perhaps port based rotate control? */ + map(0xf00000, 0xf00007).r(this, FUNC(undrfire_state::undrfire_lightgun_r)); /* stick coords read at $11b2-bc */ +} + + +void undrfire_state::cbombers_cpua_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x21ffff).ram(); + map(0x300000, 0x303fff).ram().share("spriteram"); + map(0x400000, 0x400003).w(this, FUNC(undrfire_state::cbombers_cpua_ctrl_w)); + map(0x500000, 0x500007).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)); + map(0x600000, 0x600007).r(this, FUNC(undrfire_state::cbombers_adc_r)).w(this, FUNC(undrfire_state::cbombers_adc_w)); + map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); + map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::long_r), FUNC(tc0480scp_device::long_w)); /* tilemaps */ + map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_long_r), FUNC(tc0480scp_device::ctrl_long_w)); + map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::long_r), FUNC(tc0100scn_device::long_w)); /* 6bpp tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_long_r), FUNC(tc0100scn_device::ctrl_long_w)); + map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xb00000, 0xb0000f).ram(); /* ? */ + map(0xc00000, 0xc00007).ram(); /* LAN controller? */ + map(0xd00000, 0xd00003).w(this, FUNC(undrfire_state::rotate_control_w)); /* perhaps port based rotate control? */ + map(0xe00000, 0xe0ffff).ram().share("shared_ram"); +} + +void undrfire_state::cbombers_cpub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x400000, 0x40ffff).ram(); /* local ram */ // AM_RANGE(0x600000, 0x60ffff) AM_DEVWRITE("tc0480scp", tc0480scp_device, word_w) /* Only written upon errors */ - AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(shared_ram_r, shared_ram_w) + map(0x800000, 0x80ffff).rw(this, FUNC(undrfire_state::shared_ram_r), FUNC(undrfire_state::shared_ram_w)); // AM_RANGE(0xa00000, 0xa001ff) AM_RAM /* Extra road control?? */ -ADDRESS_MAP_END +} /*********************************************************** diff --git a/src/mame/drivers/unianapc.cpp b/src/mame/drivers/unianapc.cpp index 5a96394791e..2119015442a 100644 --- a/src/mame/drivers/unianapc.cpp +++ b/src/mame/drivers/unianapc.cpp @@ -54,8 +54,9 @@ uint32_t unianapc_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm return 0; } -ADDRESS_MAP_START(unianapc_state::unianapc_map) -ADDRESS_MAP_END +void unianapc_state::unianapc_map(address_map &map) +{ +} static INPUT_PORTS_START( unianapc ) INPUT_PORTS_END diff --git a/src/mame/drivers/unichamp.cpp b/src/mame/drivers/unichamp.cpp index 4d288407f7e..d25f2bedd36 100644 --- a/src/mame/drivers/unichamp.cpp +++ b/src/mame/drivers/unichamp.cpp @@ -106,12 +106,13 @@ PALETTE_INIT_MEMBER(unichamp_state, unichamp) } -ADDRESS_MAP_START(unichamp_state::unichamp_mem) - ADDRESS_MAP_GLOBAL_MASK(0x1FFF) //B13/B14/B15 are grounded! - AM_RANGE(0x0000, 0x00FF) AM_READWRITE8(unichamp_gicram_r, unichamp_gicram_w, 0x00ff) - AM_RANGE(0x0100, 0x07FF) AM_READWRITE(unichamp_trapl_r, unichamp_trapl_w) - AM_RANGE(0x0800, 0x0FFF) AM_ROM AM_REGION("maincpu", 0) // Carts and EXE ROM, 10-bits wide -ADDRESS_MAP_END +void unichamp_state::unichamp_mem(address_map &map) +{ + map.global_mask(0x1FFF); //B13/B14/B15 are grounded! + map(0x0000, 0x00FF).rw(this, FUNC(unichamp_state::unichamp_gicram_r), FUNC(unichamp_state::unichamp_gicram_w)).umask16(0x00ff); + map(0x0100, 0x07FF).rw(this, FUNC(unichamp_state::unichamp_trapl_r), FUNC(unichamp_state::unichamp_trapl_w)); + map(0x0800, 0x0FFF).rom().region("maincpu", 0); // Carts and EXE ROM, 10-bits wide +} static INPUT_PORTS_START( unichamp ) diff --git a/src/mame/drivers/unico.cpp b/src/mame/drivers/unico.cpp index 2ab3a68e4a5..966464f79f4 100644 --- a/src/mame/drivers/unico.cpp +++ b/src/mame/drivers/unico.cpp @@ -56,25 +56,26 @@ WRITE16_MEMBER(unico_state::burglarx_sound_bank_w) } } -ADDRESS_MAP_START(unico_state::burglarx_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("INPUTS") - AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM") - AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1") - AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2") - AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? 0 - AM_RANGE(0x80010c, 0x800121) AM_READWRITE(unico_scroll_r, unico_scroll_w) // Scroll - AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_device, write_port_w, 0xff00) - AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_device, status_port_r, control_port_w, 0xff00) - AM_RANGE(0x80018e, 0x80018f) AM_WRITE(burglarx_sound_bank_w) // - AM_RANGE(0x8001e0, 0x8001e1) AM_WRITENOP // IRQ Ack - AM_RANGE(0x904000, 0x90ffff) AM_READWRITE(unico_vram_r, unico_vram_w) // Layers 1, 2, 0 - AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0 - AM_RANGE(0x930000, 0x9307ff) AM_READWRITE(unico_spriteram_r, unico_spriteram_w) // Sprites - AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette_w) AM_SHARE("paletteram") // Palette -ADDRESS_MAP_END +void unico_state::burglarx_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0xff0000, 0xffffff).ram(); // RAM + map(0x800000, 0x800001).portr("INPUTS"); + map(0x800018, 0x800019).portr("SYSTEM"); + map(0x80001a, 0x80001b).portr("DSW1"); + map(0x80001c, 0x80001d).portr("DSW2"); + map(0x800030, 0x800031).nopw(); // ? 0 + map(0x80010c, 0x800121).rw(this, FUNC(unico_state::unico_scroll_r), FUNC(unico_state::unico_scroll_w)); // Scroll + map(0x800189, 0x800189).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x80018a, 0x80018a).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x80018c, 0x80018c).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x80018e, 0x80018f).w(this, FUNC(unico_state::burglarx_sound_bank_w)); // + map(0x8001e0, 0x8001e1).nopw(); // IRQ Ack + map(0x904000, 0x90ffff).rw(this, FUNC(unico_state::unico_vram_r), FUNC(unico_state::unico_vram_w)); // Layers 1, 2, 0 + map(0x920000, 0x923fff).ram(); // ? 0 + map(0x930000, 0x9307ff).rw(this, FUNC(unico_state::unico_spriteram_r), FUNC(unico_state::unico_spriteram_w)); // Sprites + map(0x940000, 0x947fff).ram().w(this, FUNC(unico_state::unico_palette_w)).share("paletteram"); // Palette +} @@ -141,28 +142,29 @@ READ16_MEMBER(zeropnt_state::unico_guny_1_msb_r) return ((y&0xff) ^ (m_screen->frame_number()&1))<<8; } -ADDRESS_MAP_START(zeropnt_state::zeropnt_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0xef0000, 0xefffff) AM_RAM // RAM - AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? 0 - AM_RANGE(0x800018, 0x800019) AM_READ_PORT("INPUTS") - AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1") - AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2") - AM_RANGE(0x80010c, 0x800121) AM_READWRITE( unico_scroll_r, unico_scroll_w ) // Scroll - AM_RANGE(0x800170, 0x800171) AM_READ(unico_guny_0_msb_r) // Light Guns - AM_RANGE(0x800174, 0x800175) AM_READ(unico_gunx_0_msb_r) // - AM_RANGE(0x800178, 0x800179) AM_READ(unico_guny_1_msb_r) // - AM_RANGE(0x80017c, 0x80017d) AM_READ(unico_gunx_1_msb_r) // - AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) // Sound - AM_RANGE(0x80018a, 0x80018b) AM_DEVWRITE8("ymsnd", ym3812_device, write_port_w, 0xff00) - AM_RANGE(0x80018c, 0x80018d) AM_DEVREADWRITE8("ymsnd", ym3812_device, status_port_r, control_port_w, 0xff00) - AM_RANGE(0x80018e, 0x80018f) AM_WRITE(zeropnt_sound_bank_w) // - AM_RANGE(0x8001e0, 0x8001e1) AM_WRITEONLY // ? IRQ Ack - AM_RANGE(0x904000, 0x90ffff) AM_READWRITE( unico_vram_r, unico_vram_w ) // Layers 1, 2, 0 - AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0 - AM_RANGE(0x930000, 0x9307ff) AM_READWRITE( unico_spriteram_r, unico_spriteram_w ) // Sprites - AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette_w) AM_SHARE("paletteram") // Palette -ADDRESS_MAP_END +void zeropnt_state::zeropnt_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0xef0000, 0xefffff).ram(); // RAM + map(0x800030, 0x800031).nopw(); // ? 0 + map(0x800018, 0x800019).portr("INPUTS"); + map(0x80001a, 0x80001b).portr("DSW1"); + map(0x80001c, 0x80001d).portr("DSW2"); + map(0x80010c, 0x800121).rw(this, FUNC(zeropnt_state::unico_scroll_r), FUNC(zeropnt_state::unico_scroll_w)); // Scroll + map(0x800170, 0x800171).r(this, FUNC(zeropnt_state::unico_guny_0_msb_r)); // Light Guns + map(0x800174, 0x800175).r(this, FUNC(zeropnt_state::unico_gunx_0_msb_r)); // + map(0x800178, 0x800179).r(this, FUNC(zeropnt_state::unico_guny_1_msb_r)); // + map(0x80017c, 0x80017d).r(this, FUNC(zeropnt_state::unico_gunx_1_msb_r)); // + map(0x800189, 0x800189).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x80018a, 0x80018a).w("ymsnd", FUNC(ym3812_device::write_port_w)); + map(0x80018c, 0x80018c).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x80018e, 0x80018f).w(this, FUNC(zeropnt_state::zeropnt_sound_bank_w)); // + map(0x8001e0, 0x8001e1).writeonly(); // ? IRQ Ack + map(0x904000, 0x90ffff).rw(this, FUNC(zeropnt_state::unico_vram_r), FUNC(zeropnt_state::unico_vram_w)); // Layers 1, 2, 0 + map(0x920000, 0x923fff).ram(); // ? 0 + map(0x930000, 0x9307ff).rw(this, FUNC(zeropnt_state::unico_spriteram_r), FUNC(zeropnt_state::unico_spriteram_w)); // Sprites + map(0x940000, 0x947fff).ram().w(this, FUNC(zeropnt_state::unico_palette_w)).share("paletteram"); // Palette +} /*************************************************************************** @@ -213,30 +215,31 @@ WRITE32_MEMBER(zeropnt2_state::zeropnt2_eeprom_w) } } -ADDRESS_MAP_START(zeropnt2_state::zeropnt2_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x800018, 0x80001b) AM_READ_PORT("SYSTEM") - AM_RANGE(0x800024, 0x800027) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff0000) // Sound - AM_RANGE(0x800028, 0x80002f) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff0000) // - AM_RANGE(0x800030, 0x800033) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff0000) // - AM_RANGE(0x800034, 0x800037) AM_WRITE(zeropnt2_sound_bank_w) // - AM_RANGE(0x800038, 0x80003b) AM_WRITE(zeropnt2_leds_w) // ? - AM_RANGE(0x80010c, 0x800123) AM_READWRITE16(unico_scroll_r, unico_scroll_w, 0xffffffff) // Scroll - AM_RANGE(0x800140, 0x800143) AM_READ(zeropnt2_guny_0_msb_r) // Light Guns - AM_RANGE(0x800144, 0x800147) AM_READ(zeropnt2_gunx_0_msb_r) // - AM_RANGE(0x800148, 0x80014b) AM_READ(zeropnt2_guny_1_msb_r) // - AM_RANGE(0x80014c, 0x80014f) AM_READ(zeropnt2_gunx_1_msb_r) // - AM_RANGE(0x800150, 0x800153) AM_READ_PORT("DSW1") - AM_RANGE(0x800154, 0x800157) AM_READ_PORT("DSW2") - AM_RANGE(0x80015c, 0x80015f) AM_READ_PORT("BUTTONS") - AM_RANGE(0x8001e0, 0x8001e3) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x8001f0, 0x8001f3) AM_WRITE(zeropnt2_eeprom_w) // EEPROM - AM_RANGE(0x904000, 0x90ffff) AM_READWRITE16(unico_vram_r, unico_vram_w, 0xffffffff) // Layers 1, 2, 0 - AM_RANGE(0x920000, 0x923fff) AM_RAM // ? 0 - AM_RANGE(0x930000, 0x9307ff) AM_READWRITE16(unico_spriteram_r, unico_spriteram_w, 0xffffffff) // Sprites - AM_RANGE(0x940000, 0x947fff) AM_RAM_WRITE(unico_palette32_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0xfe0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END +void zeropnt2_state::zeropnt2_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM + map(0x800018, 0x80001b).portr("SYSTEM"); + map(0x800025, 0x800025).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x800028, 0x80002f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x00ff0000); // + map(0x800031, 0x800031).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // + map(0x800034, 0x800037).w(this, FUNC(zeropnt2_state::zeropnt2_sound_bank_w)); // + map(0x800038, 0x80003b).w(this, FUNC(zeropnt2_state::zeropnt2_leds_w)); // ? + map(0x80010c, 0x800123).rw(this, FUNC(zeropnt2_state::unico_scroll_r), FUNC(zeropnt2_state::unico_scroll_w)); // Scroll + map(0x800140, 0x800143).r(this, FUNC(zeropnt2_state::zeropnt2_guny_0_msb_r)); // Light Guns + map(0x800144, 0x800147).r(this, FUNC(zeropnt2_state::zeropnt2_gunx_0_msb_r)); // + map(0x800148, 0x80014b).r(this, FUNC(zeropnt2_state::zeropnt2_guny_1_msb_r)); // + map(0x80014c, 0x80014f).r(this, FUNC(zeropnt2_state::zeropnt2_gunx_1_msb_r)); // + map(0x800150, 0x800153).portr("DSW1"); + map(0x800154, 0x800157).portr("DSW2"); + map(0x80015c, 0x80015f).portr("BUTTONS"); + map(0x8001e0, 0x8001e3).nopw(); // ? IRQ Ack + map(0x8001f0, 0x8001f3).w(this, FUNC(zeropnt2_state::zeropnt2_eeprom_w)); // EEPROM + map(0x904000, 0x90ffff).rw(this, FUNC(zeropnt2_state::unico_vram_r), FUNC(zeropnt2_state::unico_vram_w)); // Layers 1, 2, 0 + map(0x920000, 0x923fff).ram(); // ? 0 + map(0x930000, 0x9307ff).rw(this, FUNC(zeropnt2_state::unico_spriteram_r), FUNC(zeropnt2_state::unico_spriteram_w)); // Sprites + map(0x940000, 0x947fff).ram().w(this, FUNC(zeropnt2_state::unico_palette32_w)).share("paletteram"); // Palette + map(0xfe0000, 0xffffff).ram(); // RAM +} /*************************************************************************** diff --git a/src/mame/drivers/unior.cpp b/src/mame/drivers/unior.cpp index a5316a103a0..9b83a23b713 100644 --- a/src/mame/drivers/unior.cpp +++ b/src/mame/drivers/unior.cpp @@ -90,24 +90,26 @@ private: required_region_ptr<u8> m_p_vram; }; -ADDRESS_MAP_START(unior_state::unior_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xffff) AM_ROM AM_WRITE(vram_w) // main video -ADDRESS_MAP_END - -ADDRESS_MAP_START(unior_state::unior_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x30, 0x38) AM_DEVREADWRITE("dma", i8257_device, read, write) // dma data - AM_RANGE(0x3c, 0x3f) AM_DEVREADWRITE("ppi0", i8255_device, read, write) // cassette player control - AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0x50, 0x50) AM_WRITE(scroll_w) - AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("crtc", i8275_device, read, write) - AM_RANGE(0xdc, 0xdf) AM_DEVREADWRITE("pit", pit8253_device, read, write ) - AM_RANGE(0xec, 0xec) AM_DEVREADWRITE("uart",i8251_device, data_r, data_w) - AM_RANGE(0xed, 0xed) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void unior_state::unior_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xf7ff).ram(); + map(0xf800, 0xffff).rom().w(this, FUNC(unior_state::vram_w)); // main video +} + +void unior_state::unior_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x30, 0x38).rw(m_dma, FUNC(i8257_device::read), FUNC(i8257_device::write)); // dma data + map(0x3c, 0x3f).rw("ppi0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // cassette player control + map(0x4c, 0x4f).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x50, 0x50).w(this, FUNC(unior_state::scroll_w)); + map(0x60, 0x61).rw("crtc", FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0xdc, 0xdf).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xec, 0xec).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xed, 0xed).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ static INPUT_PORTS_START( unior ) diff --git a/src/mame/drivers/unistar.cpp b/src/mame/drivers/unistar.cpp index b9903f5e95e..9ba207b4360 100644 --- a/src/mame/drivers/unistar.cpp +++ b/src/mame/drivers/unistar.cpp @@ -39,20 +39,22 @@ private: }; -ADDRESS_MAP_START(unistar_state::unistar_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM -ADDRESS_MAP_END +void unistar_state::unistar_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x2fff).rom(); + map(0x8000, 0x8fff).ram(); +} -ADDRESS_MAP_START(unistar_state::unistar_io) +void unistar_state::unistar_io(address_map &map) +{ //ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x8c, 0x8d) AM_DEVREADWRITE("stc", am9513_device, read8, write8) - AM_RANGE(0x94, 0x97) AM_DEVREADWRITE("ppi", i8255_device, read, write) + map.global_mask(0xff); + map(0x8c, 0x8d).rw("stc", FUNC(am9513_device::read8), FUNC(am9513_device::write8)); + map(0x94, 0x97).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ports used: 00,02,03(W),08(RW),09,0A,0B,0D,0F(W),80,81(R),82,83(W),84(R),8C,8D(W),94(R),97,98(W),99(RW) // if nonzero returned from port 94, it goes into test mode. -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( unistar ) diff --git a/src/mame/drivers/univac.cpp b/src/mame/drivers/univac.cpp index 88f836e95d0..fd5b5139970 100644 --- a/src/mame/drivers/univac.cpp +++ b/src/mame/drivers/univac.cpp @@ -188,23 +188,25 @@ WRITE8_MEMBER( univac_state::porte6_w ) } -ADDRESS_MAP_START(univac_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x4fff ) AM_ROM AM_REGION("roms", 0) - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(bank_r, bank_w) - AM_RANGE( 0xc000, 0xffff ) AM_RAM_WRITE(ram_w) AM_SHARE("videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(univac_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("uart", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x43, 0x43) AM_WRITE(port43_w) - AM_RANGE(0x80, 0xbf) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") - AM_RANGE(0xc4, 0xc4) AM_WRITE(portc4_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE(porte6_w) -ADDRESS_MAP_END +void univac_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x4fff).rom().region("roms", 0); + map(0x8000, 0xbfff).rw(this, FUNC(univac_state::bank_r), FUNC(univac_state::bank_w)); + map(0xc000, 0xffff).ram().w(this, FUNC(univac_state::ram_w)).share("videoram"); +} + +void univac_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); + map(0x00, 0x03).rw(m_uart, FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x20, 0x23).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x43, 0x43).w(this, FUNC(univac_state::port43_w)); + map(0x80, 0xbf).ram().w(this, FUNC(univac_state::nvram_w)).share("nvram"); + map(0xc4, 0xc4).w(this, FUNC(univac_state::portc4_w)); + map(0xe6, 0xe6).w(this, FUNC(univac_state::porte6_w)); +} /* Input ports */ static INPUT_PORTS_START( uts20 ) diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp index a52392e00af..3a56d232efe 100644 --- a/src/mame/drivers/unixpc.cpp +++ b/src/mame/drivers/unixpc.cpp @@ -278,30 +278,32 @@ uint32_t unixpc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(unixpc_state::unixpc_mem) - AM_RANGE(0x000000, 0x3fffff) AM_DEVICE("ramrombank", address_map_bank_device, amap16) - AM_RANGE(0x400000, 0x4007ff) AM_RAM AM_SHARE("mapram") - AM_RANGE(0x420000, 0x427fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x460000, 0x460001) AM_READWRITE(diskdma_size_r, diskdma_size_w) - AM_RANGE(0x470000, 0x470001) AM_READ(line_printer_r) - AM_RANGE(0x480000, 0x480001) AM_WRITE(rtc_w) - AM_RANGE(0x4a0000, 0x4a0001) AM_WRITE(misc_control_w) - AM_RANGE(0x4d0000, 0x4d7fff) AM_WRITE(diskdma_ptr_w) - AM_RANGE(0x4e0000, 0x4e0001) AM_WRITE(disk_control_w) - AM_RANGE(0xe10000, 0xe10007) AM_DEVREADWRITE8("wd2797", wd_fdc_device_base, read, write, 0x00ff) - AM_RANGE(0xe30000, 0xe30001) AM_READ(rtc_r) - AM_RANGE(0xe40000, 0xe40001) AM_WRITE(error_enable_w) - AM_RANGE(0xe41000, 0xe41001) AM_WRITE(parity_enable_w) - AM_RANGE(0xe42000, 0xe42001) AM_WRITE(bpplus_w) - AM_RANGE(0xe43000, 0xe43001) AM_WRITE(romlmap_w) - AM_RANGE(0x800000, 0x803fff) AM_MIRROR(0x7fc000) AM_ROM AM_REGION("bootrom", 0) +void unixpc_state::unixpc_mem(address_map &map) +{ + map(0x000000, 0x3fffff).m(m_ramrombank, FUNC(address_map_bank_device::amap16)); + map(0x400000, 0x4007ff).ram().share("mapram"); + map(0x420000, 0x427fff).ram().share("videoram"); + map(0x460000, 0x460001).rw(this, FUNC(unixpc_state::diskdma_size_r), FUNC(unixpc_state::diskdma_size_w)); + map(0x470000, 0x470001).r(this, FUNC(unixpc_state::line_printer_r)); + map(0x480000, 0x480001).w(this, FUNC(unixpc_state::rtc_w)); + map(0x4a0000, 0x4a0001).w(this, FUNC(unixpc_state::misc_control_w)); + map(0x4d0000, 0x4d7fff).w(this, FUNC(unixpc_state::diskdma_ptr_w)); + map(0x4e0000, 0x4e0001).w(this, FUNC(unixpc_state::disk_control_w)); + map(0xe10000, 0xe10007).rw(m_wd2797, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)).umask16(0x00ff); + map(0xe30000, 0xe30001).r(this, FUNC(unixpc_state::rtc_r)); + map(0xe40000, 0xe40001).w(this, FUNC(unixpc_state::error_enable_w)); + map(0xe41000, 0xe41001).w(this, FUNC(unixpc_state::parity_enable_w)); + map(0xe42000, 0xe42001).w(this, FUNC(unixpc_state::bpplus_w)); + map(0xe43000, 0xe43001).w(this, FUNC(unixpc_state::romlmap_w)); + map(0x800000, 0x803fff).mirror(0x7fc000).rom().region("bootrom", 0); // e70000 / e70002 = keyboard 6850 status/control and Rx data / Tx data -ADDRESS_MAP_END +} -ADDRESS_MAP_START(unixpc_state::ramrombank_map) - AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_REGION("bootrom", 0) - AM_RANGE(0x400000, 0x7fffff) AM_READWRITE(ram_mmu_r, ram_mmu_w) -ADDRESS_MAP_END +void unixpc_state::ramrombank_map(address_map &map) +{ + map(0x000000, 0x3fffff).rom().region("bootrom", 0); + map(0x400000, 0x7fffff).rw(this, FUNC(unixpc_state::ram_mmu_r), FUNC(unixpc_state::ram_mmu_w)); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/unkhorse.cpp b/src/mame/drivers/unkhorse.cpp index 1204c6eb629..ab6603c6eeb 100644 --- a/src/mame/drivers/unkhorse.cpp +++ b/src/mame/drivers/unkhorse.cpp @@ -99,16 +99,18 @@ uint32_t horse_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, ***************************************************************************/ -ADDRESS_MAP_START(horse_state::horse_map) - AM_RANGE(0x0000, 0x37ff) AM_ROM - AM_RANGE(0x4000, 0x40ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w) - AM_RANGE(0x6000, 0x7fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x0800) AM_READWRITE(colorram_r, colorram_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(horse_state::horse_io_map) - AM_RANGE(0x40, 0x47) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w) -ADDRESS_MAP_END +void horse_state::horse_map(address_map &map) +{ + map(0x0000, 0x37ff).rom(); + map(0x4000, 0x40ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); + map(0x6000, 0x7fff).ram().share("vram"); + map(0x8000, 0x87ff).mirror(0x0800).rw(this, FUNC(horse_state::colorram_r), FUNC(horse_state::colorram_w)); +} + +void horse_state::horse_io_map(address_map &map) +{ + map(0x40, 0x47).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); +} READ8_MEMBER(horse_state::input_r) diff --git a/src/mame/drivers/upscope.cpp b/src/mame/drivers/upscope.cpp index 5c0089ccf78..6a6ea53f5ac 100644 --- a/src/mame/drivers/upscope.cpp +++ b/src/mame/drivers/upscope.cpp @@ -207,29 +207,32 @@ WRITE8_MEMBER( upscope_state::coin_counter_w ) * *************************************/ -ADDRESS_MAP_START(upscope_state::overlay_512kb_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(upscope_state::a500_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16) - AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w) - AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xd80000, 0xddffff) AM_NOP - AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r) - AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices) - AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(upscope_state::main_map) - AM_IMPORT_FROM(a500_mem) - AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0) -ADDRESS_MAP_END +void upscope_state::overlay_512kb_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram"); + map(0x200000, 0x27ffff).rom().region("kickstart", 0); +} + +void upscope_state::a500_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x1fffff).m(m_overlay, FUNC(address_map_bank_device::amap16)); + map(0xa00000, 0xbfffff).rw(this, FUNC(upscope_state::cia_r), FUNC(upscope_state::cia_w)); + map(0xc00000, 0xd7ffff).rw(this, FUNC(upscope_state::custom_chip_r), FUNC(upscope_state::custom_chip_w)); + map(0xd80000, 0xddffff).noprw(); + map(0xde0000, 0xdeffff).rw(this, FUNC(upscope_state::custom_chip_r), FUNC(upscope_state::custom_chip_w)); + map(0xdf0000, 0xdfffff).rw(this, FUNC(upscope_state::custom_chip_r), FUNC(upscope_state::custom_chip_w)); + map(0xe00000, 0xe7ffff).nopw().r(this, FUNC(upscope_state::rom_mirror_r)); + map(0xe80000, 0xefffff).noprw(); // autoconfig space (installed by devices) + map(0xf80000, 0xffffff).rom().region("kickstart", 0); +} + +void upscope_state::main_map(address_map &map) +{ + a500_mem(map); + map(0xf00000, 0xf7ffff).rom().region("user2", 0); +} diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp index 919038be4f4..e6a2df3a9ca 100644 --- a/src/mame/drivers/usgames.cpp +++ b/src/mame/drivers/usgames.cpp @@ -64,42 +64,44 @@ WRITE8_MEMBER(usgames_state::lamps2_w) } -ADDRESS_MAP_START(usgames_state::usgames_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW") - AM_RANGE(0x2010, 0x2010) AM_READ_PORT("INPUTS") - AM_RANGE(0x2020, 0x2020) AM_WRITE(lamps1_w) - AM_RANGE(0x2030, 0x2030) AM_WRITE(lamps2_w) - AM_RANGE(0x2040, 0x2040) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2041, 0x2041) AM_READ_PORT("UNK1") - AM_RANGE(0x2041, 0x2041) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x2060, 0x2060) AM_WRITE(rombank_w) - AM_RANGE(0x2070, 0x2070) AM_READ_PORT("UNK2") - AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("aysnd", ay8912_device, address_data_w) - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(usgames_state::usg185_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("aysnd", ay8912_device, address_data_w) - AM_RANGE(0x2400, 0x2400) AM_READ_PORT("DSW") - AM_RANGE(0x2410, 0x2410) AM_READ_PORT("INPUTS") - AM_RANGE(0x2420, 0x2420) AM_WRITE(lamps1_w) - AM_RANGE(0x2430, 0x2430) AM_WRITE(lamps2_w) - AM_RANGE(0x2440, 0x2440) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x2441, 0x2441) AM_READ_PORT("UNK1") - AM_RANGE(0x2441, 0x2441) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x2460, 0x2460) AM_WRITE(rombank_w) - AM_RANGE(0x2470, 0x2470) AM_READ_PORT("UNK2") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void usgames_state::usgames_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x2000).portr("DSW"); + map(0x2010, 0x2010).portr("INPUTS"); + map(0x2020, 0x2020).w(this, FUNC(usgames_state::lamps1_w)); + map(0x2030, 0x2030).w(this, FUNC(usgames_state::lamps2_w)); + map(0x2040, 0x2040).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2041, 0x2041).portr("UNK1"); + map(0x2041, 0x2041).w("crtc", FUNC(mc6845_device::register_w)); + map(0x2060, 0x2060).w(this, FUNC(usgames_state::rombank_w)); + map(0x2070, 0x2070).portr("UNK2"); + map(0x2400, 0x2401).w("aysnd", FUNC(ay8912_device::address_data_w)); + map(0x2800, 0x2fff).ram().w(this, FUNC(usgames_state::charram_w)).share("charram"); + map(0x3000, 0x3fff).ram().w(this, FUNC(usgames_state::videoram_w)).share("videoram"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + + +void usgames_state::usg185_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("nvram"); + map(0x2000, 0x2001).w("aysnd", FUNC(ay8912_device::address_data_w)); + map(0x2400, 0x2400).portr("DSW"); + map(0x2410, 0x2410).portr("INPUTS"); + map(0x2420, 0x2420).w(this, FUNC(usgames_state::lamps1_w)); + map(0x2430, 0x2430).w(this, FUNC(usgames_state::lamps2_w)); + map(0x2440, 0x2440).w("crtc", FUNC(mc6845_device::address_w)); + map(0x2441, 0x2441).portr("UNK1"); + map(0x2441, 0x2441).w("crtc", FUNC(mc6845_device::register_w)); + map(0x2460, 0x2460).w(this, FUNC(usgames_state::rombank_w)); + map(0x2470, 0x2470).portr("UNK2"); + map(0x2800, 0x2fff).ram().w(this, FUNC(usgames_state::charram_w)).share("charram"); + map(0x3000, 0x3fff).ram().w(this, FUNC(usgames_state::videoram_w)).share("videoram"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} static INPUT_PORTS_START( usg32 ) diff --git a/src/mame/drivers/ut88.cpp b/src/mame/drivers/ut88.cpp index 3eabca2aa25..5d54df9693a 100644 --- a/src/mame/drivers/ut88.cpp +++ b/src/mame/drivers/ut88.cpp @@ -38,31 +38,35 @@ static GFXDECODE_START( ut88 ) GFXDECODE_END /* Address maps */ -ADDRESS_MAP_START(ut88_state::ut88mini_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x03ff ) AM_ROM // System ROM - AM_RANGE( 0xc000, 0xc3ff ) AM_RAM // RAM - AM_RANGE( 0x9000, 0x9fff ) AM_WRITE(ut88mini_write_led) // 7seg LED -ADDRESS_MAP_END - -ADDRESS_MAP_START(ut88_state::ut88_mem) - AM_RANGE( 0x0000, 0x07ff ) AM_RAMBANK("bank1") // First bank - AM_RANGE( 0x0800, 0xdfff ) AM_RAM // RAM - AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // Video RAM (not used) - AM_RANGE( 0xe800, 0xefff ) AM_RAM AM_SHARE("videoram") // Video RAM - AM_RANGE( 0xf400, 0xf7ff ) AM_RAM // System RAM - AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ut88_state::ut88mini_io) - AM_RANGE( 0xA0, 0xA0) AM_READ(ut88mini_keyboard_r) - AM_RANGE( 0xA1, 0xA1) AM_READ(ut88_tape_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(ut88_state::ut88_io) - AM_RANGE( 0x04, 0x07) AM_READWRITE(ut88_keyboard_r, ut88_keyboard_w) - AM_RANGE( 0xA1, 0xA1) AM_READWRITE(ut88_tape_r, ut88_sound_w) -ADDRESS_MAP_END +void ut88_state::ut88mini_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).rom(); // System ROM + map(0xc000, 0xc3ff).ram(); // RAM + map(0x9000, 0x9fff).w(this, FUNC(ut88_state::ut88mini_write_led)); // 7seg LED +} + +void ut88_state::ut88_mem(address_map &map) +{ + map(0x0000, 0x07ff).bankrw("bank1"); // First bank + map(0x0800, 0xdfff).ram(); // RAM + map(0xe000, 0xe7ff).ram(); // Video RAM (not used) + map(0xe800, 0xefff).ram().share("videoram"); // Video RAM + map(0xf400, 0xf7ff).ram(); // System RAM + map(0xf800, 0xffff).rom(); // System ROM +} + +void ut88_state::ut88mini_io(address_map &map) +{ + map(0xA0, 0xA0).r(this, FUNC(ut88_state::ut88mini_keyboard_r)); + map(0xA1, 0xA1).r(this, FUNC(ut88_state::ut88_tape_r)); +} + +void ut88_state::ut88_io(address_map &map) +{ + map(0x04, 0x07).rw(this, FUNC(ut88_state::ut88_keyboard_r), FUNC(ut88_state::ut88_keyboard_w)); + map(0xA1, 0xA1).rw(this, FUNC(ut88_state::ut88_tape_r), FUNC(ut88_state::ut88_sound_w)); +} /* Input ports */ static INPUT_PORTS_START( ut88 ) diff --git a/src/mame/drivers/uzebox.cpp b/src/mame/drivers/uzebox.cpp index d76ffed64b2..8a7a4674d77 100644 --- a/src/mame/drivers/uzebox.cpp +++ b/src/mame/drivers/uzebox.cpp @@ -199,20 +199,23 @@ READ8_MEMBER(uzebox_state::port_d_r) * Address maps * \****************************************************/ -ADDRESS_MAP_START(uzebox_state::uzebox_prg_map) - AM_RANGE(0x0000, 0xffff) AM_ROM // 64 KB internal eprom ATmega644 -ADDRESS_MAP_END - -ADDRESS_MAP_START(uzebox_state::uzebox_data_map) - AM_RANGE(0x0100, 0x10ff) AM_RAM // 4KB RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(uzebox_state::uzebox_io_map) - AM_RANGE(AVR8_REG_A, AVR8_REG_A) AM_READWRITE( port_a_r, port_a_w ) - AM_RANGE(AVR8_REG_B, AVR8_REG_B) AM_READWRITE( port_b_r, port_b_w ) - AM_RANGE(AVR8_REG_C, AVR8_REG_C) AM_READWRITE( port_c_r, port_c_w ) - AM_RANGE(AVR8_REG_D, AVR8_REG_D) AM_READWRITE( port_d_r, port_d_w ) -ADDRESS_MAP_END +void uzebox_state::uzebox_prg_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); // 64 KB internal eprom ATmega644 +} + +void uzebox_state::uzebox_data_map(address_map &map) +{ + map(0x0100, 0x10ff).ram(); // 4KB RAM +} + +void uzebox_state::uzebox_io_map(address_map &map) +{ + map(AVR8_REG_A, AVR8_REG_A).rw(this, FUNC(uzebox_state::port_a_r), FUNC(uzebox_state::port_a_w)); + map(AVR8_REG_B, AVR8_REG_B).rw(this, FUNC(uzebox_state::port_b_r), FUNC(uzebox_state::port_b_w)); + map(AVR8_REG_C, AVR8_REG_C).rw(this, FUNC(uzebox_state::port_c_r), FUNC(uzebox_state::port_c_w)); + map(AVR8_REG_D, AVR8_REG_D).rw(this, FUNC(uzebox_state::port_d_r), FUNC(uzebox_state::port_d_w)); +} /****************************************************\ * Input ports * diff --git a/src/mame/drivers/v100.cpp b/src/mame/drivers/v100.cpp index dde5ff1965c..3350b2de521 100644 --- a/src/mame/drivers/v100.cpp +++ b/src/mame/drivers/v100.cpp @@ -227,28 +227,30 @@ WRITE8_MEMBER(v100_state::ppi_porta_w) //logerror("Writing %02X to PPI port A\n", data); } -ADDRESS_MAP_START(v100_state::mem_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x4000, 0x4fff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x5000, 0x5fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(v100_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x0f) AM_DEVWRITE("vtac", crt5037_device, write) - AM_RANGE(0x10, 0x10) AM_WRITE(brg_w<0>) - AM_RANGE(0x12, 0x12) AM_DEVREADWRITE("usart1", i8251_device, data_r, data_w) - AM_RANGE(0x13, 0x13) AM_DEVREADWRITE("usart1", i8251_device, status_r, control_w) - AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("usart2", i8251_device, data_r, data_w) - AM_RANGE(0x15, 0x15) AM_DEVREADWRITE("usart2", i8251_device, status_r, control_w) - AM_RANGE(0x16, 0x16) AM_WRITE(brg_w<1>) - AM_RANGE(0x20, 0x20) AM_READ(earom_r) - AM_RANGE(0x30, 0x30) AM_WRITE(port30_w) - AM_RANGE(0x40, 0x40) AM_READWRITE(keyboard_r, key_row_w) - AM_RANGE(0x48, 0x48) AM_WRITE(port48_w) - AM_RANGE(0x60, 0x60) AM_WRITE(picu_w) - AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi", i8255_device, read, write) -ADDRESS_MAP_END +void v100_state::mem_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("maincpu", 0); + map(0x4000, 0x4fff).ram().share("videoram"); + map(0x5000, 0x5fff).ram(); +} + +void v100_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x0f).w(m_vtac, FUNC(crt5037_device::write)); + map(0x10, 0x10).w(this, FUNC(v100_state::brg_w<0>)); + map(0x12, 0x12).rw("usart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x13, 0x13).rw("usart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x14, 0x14).rw("usart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x15, 0x15).rw("usart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x16, 0x16).w(this, FUNC(v100_state::brg_w<1>)); + map(0x20, 0x20).r(this, FUNC(v100_state::earom_r)); + map(0x30, 0x30).w(this, FUNC(v100_state::port30_w)); + map(0x40, 0x40).rw(this, FUNC(v100_state::keyboard_r), FUNC(v100_state::key_row_w)); + map(0x48, 0x48).w(this, FUNC(v100_state::port48_w)); + map(0x60, 0x60).w(this, FUNC(v100_state::picu_w)); + map(0x70, 0x73).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} static INPUT_PORTS_START( v100 ) diff --git a/src/mame/drivers/v102.cpp b/src/mame/drivers/v102.cpp index 03943feee47..05be661af58 100644 --- a/src/mame/drivers/v102.cpp +++ b/src/mame/drivers/v102.cpp @@ -46,29 +46,32 @@ u32 v102_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const } -ADDRESS_MAP_START(v102_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0xa000, 0xafff) AM_RAM - AM_RANGE(0xb800, 0xb9ff) AM_DEVREADWRITE("eeprom", eeprom_parallel_28xx_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(v102_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void v102_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom().region("maincpu", 0); + map(0x8000, 0x8fff).ram(); + map(0xa000, 0xafff).ram(); + map(0xb800, 0xb9ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); +} + +void v102_state::io_map(address_map &map) +{ + map.global_mask(0xff); //AM_RANGE(0x00, 0x3f) AM_DEVREADWRITE("vpac", crt9007_device, read, write) - AM_RANGE(0x18, 0x19) AM_WRITENOP - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("mpsc", upd7201_new_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w) - AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w) - AM_RANGE(0x80, 0x83) AM_DEVWRITE("pit", pit8253_device, write) - AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("ppi", i8255_device, read, write) + map(0x18, 0x19).nopw(); + map(0x40, 0x43).rw("mpsc", FUNC(upd7201_new_device::ba_cd_r), FUNC(upd7201_new_device::ba_cd_w)); + map(0x60, 0x60).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x61, 0x61).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x80, 0x83).w("pit", FUNC(pit8253_device::write)); + map(0xa0, 0xa3).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); //AM_RANGE(0xbf, 0xbf) ??? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(v102_state::kbd_map) - AM_RANGE(0x000, 0x7ff) AM_ROM AM_REGION("keyboard", 0) -ADDRESS_MAP_END +void v102_state::kbd_map(address_map &map) +{ + map(0x000, 0x7ff).rom().region("keyboard", 0); +} static INPUT_PORTS_START( v102 ) INPUT_PORTS_END diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp index ba65f8db471..4b93fbc93aa 100644 --- a/src/mame/drivers/v1050.cpp +++ b/src/mame/drivers/v1050.cpp @@ -466,46 +466,49 @@ WRITE8_MEMBER( v1050_state::sasi_ctrl_w ) // Memory Maps -ADDRESS_MAP_START(v1050_state::v1050_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x1fff) AM_RAMBANK("bank1") - AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("bank2") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank3") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank4") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(v1050_state::v1050_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x84, 0x87) AM_DEVREADWRITE(I8255A_DISP_TAG, i8255_device, read, write) +void v1050_state::v1050_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x3fff).bankrw("bank2"); + map(0x4000, 0x7fff).bankrw("bank3"); + map(0x8000, 0xbfff).bankrw("bank4"); + map(0xc000, 0xffff).bankrw("bank5"); +} + +void v1050_state::v1050_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x84, 0x87).rw(m_ppi_disp, FUNC(i8255_device::read), FUNC(i8255_device::write)); // AM_RANGE(0x88, 0x88) AM_DEVREADWRITE(I8251A_KB_TAG, i8251_device, data_r, data_w) // AM_RANGE(0x89, 0x89) AM_DEVREADWRITE(I8251A_KB_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x88, 0x88) AM_READ(kb_data_r) AM_DEVWRITE(I8251A_KB_TAG, i8251_device, data_w) - AM_RANGE(0x89, 0x89) AM_READ(kb_status_r) AM_DEVWRITE(I8251A_KB_TAG, i8251_device, control_w) - AM_RANGE(0x8c, 0x8c) AM_DEVREADWRITE(I8251A_SIO_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x8d, 0x8d) AM_DEVREADWRITE(I8251A_SIO_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE(I8255A_MISC_TAG, i8255_device, read, write) - AM_RANGE(0x94, 0x97) AM_DEVREADWRITE(MB8877_TAG, mb8877_device, read, write) - AM_RANGE(0x9c, 0x9f) AM_DEVREADWRITE(I8255A_RTC_TAG, i8255_device, read, write) - AM_RANGE(0xa0, 0xa0) AM_READWRITE(vint_clr_r, vint_clr_w) - AM_RANGE(0xb0, 0xb0) AM_READWRITE(dint_clr_r, dint_clr_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(v1050_i8214_w) - AM_RANGE(0xd0, 0xd0) AM_WRITE(bank_w) - AM_RANGE(0xe0, 0xe0) AM_WRITE(sasi_data_w) AM_DEVREAD("scsi_data_in", input_buffer_device, read) - AM_RANGE(0xe1, 0xe1) AM_DEVREAD("scsi_ctrl_in", input_buffer_device, read) AM_WRITE(sasi_ctrl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(v1050_state::v1050_crt_mem) - AM_RANGE(0x0000, 0x7fff) AM_READWRITE(videoram_r, videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x8000, 0x8000) AM_DEVWRITE(H46505_TAG, mc6845_device, address_w) - AM_RANGE(0x8001, 0x8001) AM_DEVREADWRITE(H46505_TAG, mc6845_device, register_r, register_w) - AM_RANGE(0x9000, 0x9003) AM_DEVREADWRITE(I8255A_M6502_TAG, i8255_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_READWRITE(attr_r, attr_w) - AM_RANGE(0xb000, 0xb000) AM_WRITE(dint_w) - AM_RANGE(0xc000, 0xc000) AM_WRITE(dvint_clr_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x88, 0x88).r(this, FUNC(v1050_state::kb_data_r)).w(m_uart_kb, FUNC(i8251_device::data_w)); + map(0x89, 0x89).r(this, FUNC(v1050_state::kb_status_r)).w(m_uart_kb, FUNC(i8251_device::control_w)); + map(0x8c, 0x8c).rw(m_uart_sio, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x8d, 0x8d).rw(m_uart_sio, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x90, 0x93).rw(I8255A_MISC_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x94, 0x97).rw(m_fdc, FUNC(mb8877_device::read), FUNC(mb8877_device::write)); + map(0x9c, 0x9f).rw(I8255A_RTC_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa0, 0xa0).rw(this, FUNC(v1050_state::vint_clr_r), FUNC(v1050_state::vint_clr_w)); + map(0xb0, 0xb0).rw(this, FUNC(v1050_state::dint_clr_r), FUNC(v1050_state::dint_clr_w)); + map(0xc0, 0xc0).w(this, FUNC(v1050_state::v1050_i8214_w)); + map(0xd0, 0xd0).w(this, FUNC(v1050_state::bank_w)); + map(0xe0, 0xe0).w(this, FUNC(v1050_state::sasi_data_w)).r(m_sasi_data_in, FUNC(input_buffer_device::read)); + map(0xe1, 0xe1).r(m_sasi_ctrl_in, FUNC(input_buffer_device::read)).w(this, FUNC(v1050_state::sasi_ctrl_w)); +} + +void v1050_state::v1050_crt_mem(address_map &map) +{ + map(0x0000, 0x7fff).rw(this, FUNC(v1050_state::videoram_r), FUNC(v1050_state::videoram_w)).share("video_ram"); + map(0x8000, 0x8000).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x8001, 0x8001).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x9000, 0x9003).rw(m_ppi_6502, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa000, 0xa000).rw(this, FUNC(v1050_state::attr_r), FUNC(v1050_state::attr_w)); + map(0xb000, 0xb000).w(this, FUNC(v1050_state::dint_w)); + map(0xc000, 0xc000).w(this, FUNC(v1050_state::dvint_clr_w)); + map(0xe000, 0xffff).rom(); +} // Input Ports diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp index a7130a479c7..4b30ac80bd3 100644 --- a/src/mame/drivers/v6809.cpp +++ b/src/mame/drivers/v6809.cpp @@ -113,21 +113,22 @@ private: }; -ADDRESS_MAP_START(v6809_state::v6809_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_MIRROR(0xfe) AM_DEVREAD("crtc", mc6845_device, status_r) AM_WRITE(v6809_address_w) - AM_RANGE(0xf001, 0xf001) AM_MIRROR(0xfe) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(v6809_register_w) - AM_RANGE(0xf200, 0xf200) AM_MIRROR(0xff) AM_WRITE(videoram_w) - AM_RANGE(0xf500, 0xf501) AM_MIRROR(0x36) AM_DEVREADWRITE("acia0", acia6850_device, read, write) // modem - AM_RANGE(0xf508, 0xf509) AM_MIRROR(0x36) AM_DEVREADWRITE("acia1", acia6850_device, read, write) // printer - AM_RANGE(0xf600, 0xf603) AM_MIRROR(0x3c) AM_DEVREADWRITE("fdc", mb8876_device, read, write) - AM_RANGE(0xf640, 0xf64f) AM_MIRROR(0x30) AM_DEVREADWRITE("rtc", mm58274c_device, read, write) - AM_RANGE(0xf680, 0xf683) AM_MIRROR(0x3c) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0xf6c0, 0xf6c7) AM_MIRROR(0x08) AM_DEVREADWRITE("ptm", ptm6840_device, read, write) - AM_RANGE(0xf6d0, 0xf6d3) AM_MIRROR(0x0c) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0xf800, 0xffff) AM_ROM -ADDRESS_MAP_END +void v6809_state::v6809_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).ram(); + map(0xf000, 0xf000).mirror(0xfe).r(m_crtc, FUNC(mc6845_device::status_r)).w(this, FUNC(v6809_state::v6809_address_w)); + map(0xf001, 0xf001).mirror(0xfe).r(m_crtc, FUNC(mc6845_device::register_r)).w(this, FUNC(v6809_state::v6809_register_w)); + map(0xf200, 0xf200).mirror(0xff).w(this, FUNC(v6809_state::videoram_w)); + map(0xf500, 0xf501).mirror(0x36).rw("acia0", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // modem + map(0xf508, 0xf509).mirror(0x36).rw("acia1", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // printer + map(0xf600, 0xf603).mirror(0x3c).rw(m_fdc, FUNC(mb8876_device::read), FUNC(mb8876_device::write)); + map(0xf640, 0xf64f).mirror(0x30).rw("rtc", FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)); + map(0xf680, 0xf683).mirror(0x3c).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf6c0, 0xf6c7).mirror(0x08).rw("ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0xf6d0, 0xf6d3).mirror(0x0c).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xf800, 0xffff).rom(); +} /* Input ports */ diff --git a/src/mame/drivers/vamphalf.cpp b/src/mame/drivers/vamphalf.cpp index b8148c71fee..96529999c67 100644 --- a/src/mame/drivers/vamphalf.cpp +++ b/src/mame/drivers/vamphalf.cpp @@ -443,183 +443,201 @@ WRITE8_MEMBER( vamphalf_state::qs1000_p3_w ) } -ADDRESS_MAP_START(vamphalf_state::common_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram") - AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles") - AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::common_32bit_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32") - AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32") - AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::yorijori_32bit_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32") - AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32") - AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::vamphalf_io) - AM_RANGE(0x0c0, 0x0c1) AM_NOP // return 0, when oki chip is read / written - AM_RANGE(0x0c2, 0x0c3) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x140, 0x143) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) - AM_RANGE(0x146, 0x147) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) - AM_RANGE(0x1c0, 0x1c3) AM_READ(eeprom_r) - AM_RANGE(0x240, 0x243) AM_WRITE(flipscreen_w) - AM_RANGE(0x600, 0x603) AM_READ_PORT("SYSTEM") - AM_RANGE(0x604, 0x607) AM_READ_PORT("P1_P2") - AM_RANGE(0x608, 0x60b) AM_WRITE(eeprom_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::misncrft_io) - AM_RANGE(0x100, 0x103) AM_WRITE(flipscreen_w) - AM_RANGE(0x200, 0x203) AM_READ_PORT("P1_P2") - AM_RANGE(0x240, 0x243) AM_READ_PORT("SYSTEM") - AM_RANGE(0x3c0, 0x3c3) AM_WRITE(eeprom_w) - AM_RANGE(0x400, 0x403) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16) - AM_RANGE(0x580, 0x583) AM_READ(eeprom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::coolmini_io) - AM_RANGE(0x200, 0x203) AM_WRITE(flipscreen_w) - AM_RANGE(0x300, 0x303) AM_READ_PORT("SYSTEM") - AM_RANGE(0x304, 0x307) AM_READ_PORT("P1_P2") - AM_RANGE(0x308, 0x30b) AM_WRITE(eeprom_w) - AM_RANGE(0x4c0, 0x4c1) AM_NOP // return 0, when oki chip is read / written - AM_RANGE(0x4c2, 0x4c3) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x540, 0x543) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) - AM_RANGE(0x544, 0x547) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) - AM_RANGE(0x7c0, 0x7c3) AM_READ(eeprom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::mrkicker_io) - AM_RANGE(0x002, 0x003) AM_WRITE(mrkicker_oki_bank_w) - AM_IMPORT_FROM(coolmini_io) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::suplup_io) - AM_RANGE(0x020, 0x023) AM_WRITE(eeprom_w) - AM_RANGE(0x040, 0x043) AM_READ_PORT("P1_P2") - AM_RANGE(0x060, 0x063) AM_READ_PORT("SYSTEM") - AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written - AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) - AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) - AM_RANGE(0x100, 0x103) AM_READ(eeprom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::wyvernwg_io) - AM_RANGE(0x1800, 0x1803) AM_READWRITE(wyvernwg_prot_r, wyvernwg_prot_w) - AM_RANGE(0x2000, 0x2003) AM_WRITE(flipscreen32_w) - AM_RANGE(0x2800, 0x2803) AM_READ_PORT("P1_P2") - AM_RANGE(0x3000, 0x3003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x5400, 0x5403) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32) - AM_RANGE(0x7000, 0x7003) AM_WRITE(eeprom32_w) - AM_RANGE(0x7c00, 0x7c03) AM_READ(eeprom32_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::finalgdr_io) - AM_RANGE(0x2400, 0x2403) AM_READ(finalgdr_prot_r) - AM_RANGE(0x2800, 0x2803) AM_WRITE(finalgdr_backupram_bank_w) - AM_RANGE(0x2c00, 0x2dff) AM_READWRITE(finalgdr_backupram_r, finalgdr_backupram_w) - AM_RANGE(0x3000, 0x3007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00) - AM_RANGE(0x3800, 0x3803) AM_READ_PORT("P1_P2") - AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x0000ff00) - AM_RANGE(0x3c00, 0x3c03) AM_READ_PORT("SYSTEM") - AM_RANGE(0x4400, 0x4403) AM_READ(eeprom32_r) - AM_RANGE(0x6000, 0x6003) AM_READNOP //? - AM_RANGE(0x6000, 0x6003) AM_WRITE(finalgdr_eeprom_w) - AM_RANGE(0x6040, 0x6043) AM_WRITE(finalgdr_prot_w) +void vamphalf_state::common_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("wram"); + map(0x40000000, 0x4003ffff).ram().share("tiles"); + map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xfff00000, 0xffffffff).rom().region("maincpu", 0); +} + +void vamphalf_state::common_32bit_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("wram32"); + map(0x40000000, 0x4003ffff).ram().share("tiles32"); + map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xfff00000, 0xffffffff).rom().region("maincpu", 0); +} + +void vamphalf_state::yorijori_32bit_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().share("wram32"); + map(0x40000000, 0x4003ffff).ram().share("tiles32"); + map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0xffe00000, 0xffffffff).rom().region("maincpu", 0); +} + +void vamphalf_state::vamphalf_io(address_map &map) +{ + map(0x0c0, 0x0c1).noprw(); // return 0, when oki chip is read / written + map(0x0c3, 0x0c3).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140, 0x143).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff); + map(0x147, 0x147).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)); + map(0x1c0, 0x1c3).r(this, FUNC(vamphalf_state::eeprom_r)); + map(0x240, 0x243).w(this, FUNC(vamphalf_state::flipscreen_w)); + map(0x600, 0x603).portr("SYSTEM"); + map(0x604, 0x607).portr("P1_P2"); + map(0x608, 0x60b).w(this, FUNC(vamphalf_state::eeprom_w)); +} + +void vamphalf_state::misncrft_io(address_map &map) +{ + map(0x100, 0x103).w(this, FUNC(vamphalf_state::flipscreen_w)); + map(0x200, 0x203).portr("P1_P2"); + map(0x240, 0x243).portr("SYSTEM"); + map(0x3c0, 0x3c3).w(this, FUNC(vamphalf_state::eeprom_w)); + map(0x400, 0x403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16); + map(0x580, 0x583).r(this, FUNC(vamphalf_state::eeprom_r)); +} + +void vamphalf_state::coolmini_io(address_map &map) +{ + map(0x200, 0x203).w(this, FUNC(vamphalf_state::flipscreen_w)); + map(0x300, 0x303).portr("SYSTEM"); + map(0x304, 0x307).portr("P1_P2"); + map(0x308, 0x30b).w(this, FUNC(vamphalf_state::eeprom_w)); + map(0x4c0, 0x4c1).noprw(); // return 0, when oki chip is read / written + map(0x4c3, 0x4c3).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x540, 0x543).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff); + map(0x544, 0x547).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff); + map(0x7c0, 0x7c3).r(this, FUNC(vamphalf_state::eeprom_r)); +} + +void vamphalf_state::mrkicker_io(address_map &map) +{ + map(0x002, 0x003).w(this, FUNC(vamphalf_state::mrkicker_oki_bank_w)); + coolmini_io(map); +} + +void vamphalf_state::suplup_io(address_map &map) +{ + map(0x020, 0x023).w(this, FUNC(vamphalf_state::eeprom_w)); + map(0x040, 0x043).portr("P1_P2"); + map(0x060, 0x063).portr("SYSTEM"); + map(0x080, 0x081).noprw(); // return 0, when oki chip is read / written + map(0x083, 0x083).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0c0, 0x0c3).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff); + map(0x0c4, 0x0c7).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff); + map(0x100, 0x103).r(this, FUNC(vamphalf_state::eeprom_r)); +} + +void vamphalf_state::wyvernwg_io(address_map &map) +{ + map(0x1800, 0x1803).rw(this, FUNC(vamphalf_state::wyvernwg_prot_r), FUNC(vamphalf_state::wyvernwg_prot_w)); + map(0x2000, 0x2003).w(this, FUNC(vamphalf_state::flipscreen32_w)); + map(0x2800, 0x2803).portr("P1_P2"); + map(0x3000, 0x3003).portr("SYSTEM"); + map(0x5400, 0x5403).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32); + map(0x7000, 0x7003).w(this, FUNC(vamphalf_state::eeprom32_w)); + map(0x7c00, 0x7c03).r(this, FUNC(vamphalf_state::eeprom32_r)); +} + +void vamphalf_state::finalgdr_io(address_map &map) +{ + map(0x2400, 0x2403).r(this, FUNC(vamphalf_state::finalgdr_prot_r)); + map(0x2800, 0x2803).w(this, FUNC(vamphalf_state::finalgdr_backupram_bank_w)); + map(0x2c00, 0x2dff).rw(this, FUNC(vamphalf_state::finalgdr_backupram_r), FUNC(vamphalf_state::finalgdr_backupram_w)); + map(0x3000, 0x3007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00); + map(0x3800, 0x3803).portr("P1_P2"); + map(0x3402, 0x3402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x3c00, 0x3c03).portr("SYSTEM"); + map(0x4400, 0x4403).r(this, FUNC(vamphalf_state::eeprom32_r)); + map(0x6000, 0x6003).nopr(); //? + map(0x6000, 0x6003).w(this, FUNC(vamphalf_state::finalgdr_eeprom_w)); + map(0x6040, 0x6043).w(this, FUNC(vamphalf_state::finalgdr_prot_w)); //AM_RANGE(0x6080, 0x6083) AM_WRITE(flipscreen32_w) //? - AM_RANGE(0x6060, 0x6063) AM_WRITE(finalgdr_prize_w) - AM_RANGE(0x60a0, 0x60a3) AM_WRITE(finalgdr_oki_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::mrkickera_io) - AM_RANGE(0x2400, 0x2403) AM_READ(eeprom32_r) - AM_RANGE(0x4000, 0x4003) AM_READNOP //? - AM_RANGE(0x4000, 0x4003) AM_WRITE(finalgdr_eeprom_w) - AM_RANGE(0x4040, 0x4043) AM_WRITE(finalgdr_prot_w) - AM_RANGE(0x4084, 0x4087) AM_WRITENOP //? - AM_RANGE(0x40a0, 0x40a3) AM_WRITE(finalgdr_oki_bank_w) - AM_RANGE(0x6400, 0x6403) AM_READ(finalgdr_prot_r) - AM_RANGE(0x7000, 0x7007) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00) - AM_RANGE(0x7400, 0x7403) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x0000ff00) - AM_RANGE(0x7800, 0x7803) AM_READ_PORT("P1_P2") - AM_RANGE(0x7c00, 0x7c03) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(vamphalf_state::jmpbreak_io) - AM_RANGE(0x0c0, 0x0c3) AM_NOP // ? - AM_RANGE(0x100, 0x103) AM_WRITENOP // ? - AM_RANGE(0x240, 0x243) AM_READ_PORT("P1_P2") - AM_RANGE(0x280, 0x283) AM_WRITE(eeprom_w) - AM_RANGE(0x2c0, 0x2c3) AM_READ(eeprom_r) - AM_RANGE(0x440, 0x441) AM_NOP // return 0, when oki chip is read / written - AM_RANGE(0x442, 0x443) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x540, 0x543) AM_READ_PORT("SYSTEM") - AM_RANGE(0x680, 0x683) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) - AM_RANGE(0x684, 0x687) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::mrdig_io) - AM_RANGE(0x500, 0x503) AM_READ_PORT("P1_P2") - AM_RANGE(0x3c0, 0x3c3) AM_WRITE(eeprom_w) - AM_RANGE(0x180, 0x183) AM_READ(eeprom_r) - AM_RANGE(0x080, 0x081) AM_NOP // return 0, when oki chip is read / written - AM_RANGE(0x082, 0x083) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x280, 0x283) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0c0, 0x0c3) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) - AM_RANGE(0x0c4, 0x0c7) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::aoh_map) - AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("wram32") - AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32") - AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write32) AM_SHARE("palette") - AM_RANGE(0x80210000, 0x80210003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x80220000, 0x80220003) AM_READ_PORT("P1_P2") - AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("maincpu",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::aoh_io) - AM_RANGE(0x0480, 0x0483) AM_WRITE(eeprom32_w) - AM_RANGE(0x0620, 0x0623) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x0000ff00) - AM_RANGE(0x0660, 0x0663) AM_DEVREADWRITE8("oki_1", okim6295_device, read, write, 0x0000ff00) - AM_RANGE(0x0640, 0x0647) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x0000ff00) - AM_RANGE(0x0680, 0x0683) AM_WRITE(aoh_oki_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::boonggab_io) - AM_RANGE(0x0c0, 0x0c3) AM_READ(eeprom_r) - AM_RANGE(0x200, 0x203) AM_NOP // seems unused - AM_RANGE(0x300, 0x303) AM_WRITE(flipscreen_w) - AM_RANGE(0x400, 0x403) AM_READ_PORT("SYSTEM") - AM_RANGE(0x404, 0x407) AM_READ_PORT("P1_P2") - AM_RANGE(0x408, 0x40b) AM_WRITE(eeprom_w) - AM_RANGE(0x410, 0x413) AM_WRITE(boonggab_prize_w) - AM_RANGE(0x414, 0x41b) AM_WRITE(boonggab_lamps_w) - AM_RANGE(0x600, 0x603) AM_WRITE(boonggab_oki_bank_w) - AM_RANGE(0x700, 0x701) AM_NOP // return 0, when oki chip is read / written - AM_RANGE(0x702, 0x703) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x740, 0x743) AM_DEVWRITE8("ymsnd", ym2151_device, register_w, 0x00ff) - AM_RANGE(0x744, 0x747) AM_DEVREADWRITE8("ymsnd", ym2151_device, status_r, data_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::yorijori_io) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vamphalf_state::banked_oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END + map(0x6060, 0x6063).w(this, FUNC(vamphalf_state::finalgdr_prize_w)); + map(0x60a0, 0x60a3).w(this, FUNC(vamphalf_state::finalgdr_oki_bank_w)); +} + +void vamphalf_state::mrkickera_io(address_map &map) +{ + map(0x2400, 0x2403).r(this, FUNC(vamphalf_state::eeprom32_r)); + map(0x4000, 0x4003).nopr(); //? + map(0x4000, 0x4003).w(this, FUNC(vamphalf_state::finalgdr_eeprom_w)); + map(0x4040, 0x4043).w(this, FUNC(vamphalf_state::finalgdr_prot_w)); + map(0x4084, 0x4087).nopw(); //? + map(0x40a0, 0x40a3).w(this, FUNC(vamphalf_state::finalgdr_oki_bank_w)); + map(0x6400, 0x6403).r(this, FUNC(vamphalf_state::finalgdr_prot_r)); + map(0x7000, 0x7007).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00); + map(0x7402, 0x7402).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x7800, 0x7803).portr("P1_P2"); + map(0x7c00, 0x7c03).portr("SYSTEM"); +} + + + +void vamphalf_state::jmpbreak_io(address_map &map) +{ + map(0x0c0, 0x0c3).noprw(); // ? + map(0x100, 0x103).nopw(); // ? + map(0x240, 0x243).portr("P1_P2"); + map(0x280, 0x283).w(this, FUNC(vamphalf_state::eeprom_w)); + map(0x2c0, 0x2c3).r(this, FUNC(vamphalf_state::eeprom_r)); + map(0x440, 0x441).noprw(); // return 0, when oki chip is read / written + map(0x443, 0x443).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x540, 0x543).portr("SYSTEM"); + map(0x680, 0x683).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff); + map(0x684, 0x687).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff); +} + +void vamphalf_state::mrdig_io(address_map &map) +{ + map(0x500, 0x503).portr("P1_P2"); + map(0x3c0, 0x3c3).w(this, FUNC(vamphalf_state::eeprom_w)); + map(0x180, 0x183).r(this, FUNC(vamphalf_state::eeprom_r)); + map(0x080, 0x081).noprw(); // return 0, when oki chip is read / written + map(0x083, 0x083).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x280, 0x283).portr("SYSTEM"); + map(0x0c0, 0x0c3).w("ymsnd", FUNC(ym2151_device::register_w)).umask16(0x00ff); + map(0x0c4, 0x0c7).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)).umask16(0x00ff); +} + +void vamphalf_state::aoh_map(address_map &map) +{ + map(0x00000000, 0x003fffff).ram().share("wram32"); + map(0x40000000, 0x4003ffff).ram().share("tiles32"); + map(0x80000000, 0x8000ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); + map(0x80210000, 0x80210003).portr("SYSTEM"); + map(0x80220000, 0x80220003).portr("P1_P2"); + map(0xffc00000, 0xffffffff).rom().region("maincpu", 0); +} + +void vamphalf_state::aoh_io(address_map &map) +{ + map(0x0480, 0x0483).w(this, FUNC(vamphalf_state::eeprom32_w)); + map(0x0622, 0x0622).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0662, 0x0662).rw("oki_1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x0640, 0x0647).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x0000ff00); + map(0x0680, 0x0683).w(this, FUNC(vamphalf_state::aoh_oki_bank_w)); +} + +void vamphalf_state::boonggab_io(address_map &map) +{ + map(0x0c0, 0x0c3).r(this, FUNC(vamphalf_state::eeprom_r)); + map(0x200, 0x203).noprw(); // seems unused + map(0x300, 0x303).w(this, FUNC(vamphalf_state::flipscreen_w)); + map(0x400, 0x403).portr("SYSTEM"); + map(0x404, 0x407).portr("P1_P2"); + map(0x408, 0x40b).w(this, FUNC(vamphalf_state::eeprom_w)); + map(0x410, 0x413).w(this, FUNC(vamphalf_state::boonggab_prize_w)); + map(0x414, 0x41b).w(this, FUNC(vamphalf_state::boonggab_lamps_w)); + map(0x600, 0x603).w(this, FUNC(vamphalf_state::boonggab_oki_bank_w)); + map(0x700, 0x701).noprw(); // return 0, when oki chip is read / written + map(0x702, 0x703).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)).umask32(0x000000ff); + map(0x743, 0x743).w("ymsnd", FUNC(ym2151_device::register_w)); + map(0x747, 0x747).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::data_w)); +} + +void vamphalf_state::yorijori_io(address_map &map) +{ +} + +void vamphalf_state::banked_oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} /* Sprite list: diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp index 9671a913645..37c9cbd00fd 100644 --- a/src/mame/drivers/vaportra.cpp +++ b/src/mame/drivers/vaportra.cpp @@ -20,7 +20,6 @@ #include "includes/vaportra.h" #include "cpu/m68000/m68000.h" -#include "cpu/h6280/h6280.h" #include "sound/2203intf.h" #include "sound/ym2151.h" #include "sound/okim6295.h" @@ -44,41 +43,43 @@ WRITE8_MEMBER(vaportra_state::irq6_ack_w) /******************************************************************************/ -ADDRESS_MAP_START(vaportra_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("PLAYERS") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("COINS") - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW") - AM_RANGE(0x100000, 0x100003) AM_WRITE(vaportra_priority_w) - AM_RANGE(0x100006, 0x100007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x240000, 0x24000f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) - AM_RANGE(0x280000, 0x281fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) - AM_RANGE(0x282000, 0x283fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) - AM_RANGE(0x2c0000, 0x2c000f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) - AM_RANGE(0x300000, 0x3009ff) AM_RAM_WRITE(vaportra_palette_24bit_rg_w) AM_SHARE("paletteram") - AM_RANGE(0x304000, 0x3049ff) AM_RAM_WRITE(vaportra_palette_24bit_b_w) AM_SHARE("paletteram2") - AM_RANGE(0x308000, 0x308001) AM_READWRITE8(irq6_ack_r, irq6_ack_w, 0x00ff) - AM_RANGE(0x30c000, 0x30c001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x318000, 0x3187ff) AM_MIRROR(0xce0000) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void vaportra_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x100001).portr("PLAYERS"); + map(0x100002, 0x100003).portr("COINS"); + map(0x100004, 0x100005).portr("DSW"); + map(0x100000, 0x100003).w(this, FUNC(vaportra_state::vaportra_priority_w)); + map(0x100007, 0x100007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x200000, 0x201fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x202000, 0x203fff).rw(m_deco_tilegen2, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x240000, 0x24000f).w(m_deco_tilegen2, FUNC(deco16ic_device::pf_control_w)); + map(0x280000, 0x281fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); + map(0x282000, 0x283fff).rw(m_deco_tilegen1, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); + map(0x2c0000, 0x2c000f).w(m_deco_tilegen1, FUNC(deco16ic_device::pf_control_w)); + map(0x300000, 0x3009ff).ram().w(this, FUNC(vaportra_state::vaportra_palette_24bit_rg_w)).share("paletteram"); + map(0x304000, 0x3049ff).ram().w(this, FUNC(vaportra_state::vaportra_palette_24bit_b_w)).share("paletteram2"); + map(0x308001, 0x308001).rw(this, FUNC(vaportra_state::irq6_ack_r), FUNC(vaportra_state::irq6_ack_w)); + map(0x30c000, 0x30c001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x318000, 0x3187ff).mirror(0xce0000).ram().share("spriteram"); + map(0xffc000, 0xffffff).ram(); +} /******************************************************************************/ -ADDRESS_MAP_START(vaportra_state::sound_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_device, read, write) - AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") /* ??? LOOKUP ??? */ - AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) - AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) -ADDRESS_MAP_END +void vaportra_state::sound_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x100001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x110000, 0x110001).rw("ym2", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x120000, 0x120001).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x130000, 0x130001).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x140000, 0x140001).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1f0000, 0x1f1fff).bankrw("bank8"); /* ??? LOOKUP ??? */ + map(0x1fec00, 0x1fec01).w(m_audiocpu, FUNC(h6280_device::timer_w)); + map(0x1ff400, 0x1ff403).w(m_audiocpu, FUNC(h6280_device::irq_status_w)); +} /******************************************************************************/ diff --git a/src/mame/drivers/vastar.cpp b/src/mame/drivers/vastar.cpp index fcffdf37afa..33908279968 100644 --- a/src/mame/drivers/vastar.cpp +++ b/src/mame/drivers/vastar.cpp @@ -140,35 +140,39 @@ WRITE_LINE_MEMBER(vastar_state::nmi_mask_w) } -ADDRESS_MAP_START(vastar_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(bg2videoram_w) AM_SHARE("bg2videoram") AM_MIRROR(0x2000) - AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(bg1videoram_w) AM_SHARE("bg1videoram") AM_MIRROR(0x2000) - AM_RANGE(0xc000, 0xc000) AM_WRITEONLY AM_SHARE("sprite_priority") /* sprite/BG priority */ - AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") // fg videoram + sprites - AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset_r, reset_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("sharedram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(vastar_state::main_port_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x00, 0x07) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(vastar_state::cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P2") - AM_RANGE(0x8040, 0x8040) AM_READ_PORT("P1") - AM_RANGE(0x8080, 0x8080) AM_READ_PORT("SYSTEM") -ADDRESS_MAP_END - -ADDRESS_MAP_START(vastar_state::cpu2_port_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) - AM_RANGE(0x02, 0x02) AM_DEVREAD("aysnd", ay8910_device, data_r) -ADDRESS_MAP_END +void vastar_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram().w(this, FUNC(vastar_state::bg2videoram_w)).share("bg2videoram").mirror(0x2000); + map(0x9000, 0x9fff).ram().w(this, FUNC(vastar_state::bg1videoram_w)).share("bg1videoram").mirror(0x2000); + map(0xc000, 0xc000).writeonly().share("sprite_priority"); /* sprite/BG priority */ + map(0xc400, 0xcfff).ram().w(this, FUNC(vastar_state::fgvideoram_w)).share("fgvideoram"); // fg videoram + sprites + map(0xe000, 0xe000).rw("watchdog", FUNC(watchdog_timer_device::reset_r), FUNC(watchdog_timer_device::reset_w)); + map(0xf000, 0xf7ff).ram().share("sharedram"); +} + +void vastar_state::main_port_map(address_map &map) +{ + map.global_mask(0x0f); + map(0x00, 0x07).w("mainlatch", FUNC(ls259_device::write_d0)); +} + + +void vastar_state::cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram().share("sharedram"); + map(0x8000, 0x8000).portr("P2"); + map(0x8040, 0x8040).portr("P1"); + map(0x8080, 0x8080).portr("SYSTEM"); +} + +void vastar_state::cpu2_port_map(address_map &map) +{ + map.global_mask(0x0f); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); + map(0x02, 0x02).r("aysnd", FUNC(ay8910_device::data_r)); +} static INPUT_PORTS_START( vastar ) diff --git a/src/mame/drivers/vax11.cpp b/src/mame/drivers/vax11.cpp index af30b8493d5..97003bf6f81 100644 --- a/src/mame/drivers/vax11.cpp +++ b/src/mame/drivers/vax11.cpp @@ -116,18 +116,19 @@ READ16_MEMBER(vax11_state::term_rx_status_r) return m_term_status; } -ADDRESS_MAP_START(vax11_state::vax11_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xbfff ) AM_RAM // RAM - AM_RANGE( 0xc000, 0xd7ff ) AM_ROM - - AM_RANGE( 0xfe78, 0xfe7b ) AM_DEVREADWRITE("rx01", rx01_device, read, write) - - AM_RANGE( 0xff70, 0xff71 ) AM_READ(term_rx_status_r) - AM_RANGE( 0xff72, 0xff73 ) AM_READ(term_r) - AM_RANGE( 0xff74, 0xff75 ) AM_READ(term_tx_status_r) - AM_RANGE( 0xff76, 0xff77 ) AM_WRITE(term_w) -ADDRESS_MAP_END +void vax11_state::vax11_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xbfff).ram(); // RAM + map(0xc000, 0xd7ff).rom(); + + map(0xfe78, 0xfe7b).rw("rx01", FUNC(rx01_device::read), FUNC(rx01_device::write)); + + map(0xff70, 0xff71).r(this, FUNC(vax11_state::term_rx_status_r)); + map(0xff72, 0xff73).r(this, FUNC(vax11_state::term_r)); + map(0xff74, 0xff75).r(this, FUNC(vax11_state::term_tx_status_r)); + map(0xff76, 0xff77).w(this, FUNC(vax11_state::term_w)); +} /* Input ports */ static INPUT_PORTS_START( vax11 ) diff --git a/src/mame/drivers/vball.cpp b/src/mame/drivers/vball.cpp index 38abc99d6aa..16c24551058 100644 --- a/src/mame/drivers/vball.cpp +++ b/src/mame/drivers/vball.cpp @@ -197,35 +197,37 @@ WRITE8_MEMBER(vball_state::scrollx_lo_w) //Cheaters note: Scores are stored in ram @ 0x57-0x58 (though the space is used for other things between matches) -ADDRESS_MAP_START(vball_state::main_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x08ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW1") - AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2") - AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3") - AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4") - AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w) - AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w) - AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w) /* is there a scanline counter here? */ - AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w) - AM_RANGE(0x100d, 0x100d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo") - AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vball_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void vball_state::main_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x08ff).ram().share("spriteram"); + map(0x1000, 0x1000).portr("P1"); + map(0x1001, 0x1001).portr("P2"); + map(0x1002, 0x1002).portr("SYSTEM"); + map(0x1003, 0x1003).portr("DSW1"); + map(0x1004, 0x1004).portr("DSW2"); + map(0x1005, 0x1005).portr("P3"); + map(0x1006, 0x1006).portr("P4"); + map(0x1008, 0x1008).w(this, FUNC(vball_state::scrollx_hi_w)); + map(0x1009, 0x1009).w(this, FUNC(vball_state::bankswitch_w)); + map(0x100a, 0x100b).w(this, FUNC(vball_state::irq_ack_w)); /* is there a scanline counter here? */ + map(0x100c, 0x100c).w(this, FUNC(vball_state::scrollx_lo_w)); + map(0x100d, 0x100d).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x100e, 0x100e).writeonly().share("scrolly_lo"); + map(0x2000, 0x2fff).w(this, FUNC(vball_state::videoram_w)).share("videoram"); + map(0x3000, 0x3fff).w(this, FUNC(vball_state::attrib_w)).share("attribram"); + map(0x4000, 0x7fff).bankr("mainbank"); + map(0x8000, 0xffff).rom(); +} + +void vball_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9803).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( vball ) diff --git a/src/mame/drivers/vboy.cpp b/src/mame/drivers/vboy.cpp index 0161a248069..2db0706d211 100644 --- a/src/mame/drivers/vboy.cpp +++ b/src/mame/drivers/vboy.cpp @@ -1094,63 +1094,65 @@ WRITE8_MEMBER( vboy_state::rfb0_w ) { m_r_frame_0[offset] = data; } WRITE8_MEMBER( vboy_state::rfb1_w ) { m_r_frame_1[offset] = data; } -ADDRESS_MAP_START(vboy_state::vboy_mem) - ADDRESS_MAP_GLOBAL_MASK(0x07ffffff) - AM_RANGE( 0x00000000, 0x00005fff ) AM_READWRITE8(lfb0_r, lfb0_w,0xffffffff) // L frame buffer 0 - AM_RANGE( 0x00006000, 0x00007fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511 - AM_RANGE( 0x00008000, 0x0000dfff ) AM_READWRITE8(lfb1_r, lfb1_w,0xffffffff) // L frame buffer 1 - AM_RANGE( 0x0000e000, 0x0000ffff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023 - AM_RANGE( 0x00010000, 0x00015fff ) AM_READWRITE8(rfb0_r, rfb0_w,0xffffffff) // R frame buffer 0 - AM_RANGE( 0x00016000, 0x00017fff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535 - AM_RANGE( 0x00018000, 0x0001dfff ) AM_READWRITE8(rfb1_r, rfb1_w,0xffffffff) // R frame buffer 1 - AM_RANGE( 0x0001e000, 0x0001ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047 - - AM_RANGE( 0x00020000, 0x0003ffff ) AM_READWRITE16(vboy_bgmap_r,vboy_bgmap_w, 0xffffffff) // VIPC memory +void vboy_state::vboy_mem(address_map &map) +{ + map.global_mask(0x07ffffff); + map(0x00000000, 0x00005fff).rw(this, FUNC(vboy_state::lfb0_r), FUNC(vboy_state::lfb0_w)); // L frame buffer 0 + map(0x00006000, 0x00007fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511 + map(0x00008000, 0x0000dfff).rw(this, FUNC(vboy_state::lfb1_r), FUNC(vboy_state::lfb1_w)); // L frame buffer 1 + map(0x0000e000, 0x0000ffff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023 + map(0x00010000, 0x00015fff).rw(this, FUNC(vboy_state::rfb0_r), FUNC(vboy_state::rfb0_w)); // R frame buffer 0 + map(0x00016000, 0x00017fff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535 + map(0x00018000, 0x0001dfff).rw(this, FUNC(vboy_state::rfb1_r), FUNC(vboy_state::rfb1_w)); // R frame buffer 1 + map(0x0001e000, 0x0001ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047 + + map(0x00020000, 0x0003ffff).rw(this, FUNC(vboy_state::vboy_bgmap_r), FUNC(vboy_state::vboy_bgmap_w)); // VIPC memory //AM_RANGE( 0x00040000, 0x0005ffff ) AM_RAM // VIPC - AM_RANGE( 0x0005f800, 0x0005f87f ) AM_READWRITE16(vip_r, vip_w, 0xffffffff) + map(0x0005f800, 0x0005f87f).rw(this, FUNC(vboy_state::vip_r), FUNC(vboy_state::vip_w)); - AM_RANGE( 0x00078000, 0x00079fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511 mirror - AM_RANGE( 0x0007a000, 0x0007bfff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023 mirror - AM_RANGE( 0x0007c000, 0x0007dfff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535 mirror - AM_RANGE( 0x0007e000, 0x0007ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047 mirror + map(0x00078000, 0x00079fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511 mirror + map(0x0007a000, 0x0007bfff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023 mirror + map(0x0007c000, 0x0007dfff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535 mirror + map(0x0007e000, 0x0007ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047 mirror - AM_RANGE( 0x01000000, 0x010005ff ) AM_DEVREADWRITE8("vbsnd", vboysnd_device, read, write, 0xffffffff) - AM_RANGE( 0x02000000, 0x0200002b ) AM_MIRROR(0x0ffff00) AM_READWRITE(io_r, io_w) // Hardware control registers mask 0xff + map(0x01000000, 0x010005ff).rw("vbsnd", FUNC(vboysnd_device::read), FUNC(vboysnd_device::write)); + map(0x02000000, 0x0200002b).mirror(0x0ffff00).rw(this, FUNC(vboy_state::io_r), FUNC(vboy_state::io_w)); // Hardware control registers mask 0xff //AM_RANGE( 0x04000000, 0x04ffffff ) // Expansion area - AM_RANGE( 0x05000000, 0x0500ffff ) AM_MIRROR(0x0ff0000) AM_RAM AM_SHARE("wram")// Main RAM - 64K mask 0xffff - AM_RANGE( 0x06000000, 0x06003fff ) AM_DEVREADWRITE("cartslot", vboy_cart_slot_device, read_eeprom, write_eeprom) // Cart RAM - 8K NVRAM + map(0x05000000, 0x0500ffff).mirror(0x0ff0000).ram().share("wram");// Main RAM - 64K mask 0xffff + map(0x06000000, 0x06003fff).rw(m_cart, FUNC(vboy_cart_slot_device::read_eeprom), FUNC(vboy_cart_slot_device::write_eeprom)); // Cart RAM - 8K NVRAM // AM_RANGE( 0x07000000, 0x071fffff ) AM_MIRROR(0x0e00000) AM_DEVREAD("cartslot", vboy_cart_slot_device, read_cart) /* ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(vboy_state::vboy_io) - ADDRESS_MAP_GLOBAL_MASK(0x07ffffff) - AM_RANGE( 0x00000000, 0x00005fff ) AM_RAM AM_SHARE("l_frame_0") // L frame buffer 0 - AM_RANGE( 0x00006000, 0x00007fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511 - AM_RANGE( 0x00008000, 0x0000dfff ) AM_RAM AM_SHARE("l_frame_1") // L frame buffer 1 - AM_RANGE( 0x0000e000, 0x0000ffff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023 - AM_RANGE( 0x00010000, 0x00015fff ) AM_RAM AM_SHARE("r_frame_0") // R frame buffer 0 - AM_RANGE( 0x00016000, 0x00017fff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535 - AM_RANGE( 0x00018000, 0x0001dfff ) AM_RAM AM_SHARE("r_frame_1") // R frame buffer 1 - AM_RANGE( 0x0001e000, 0x0001ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047 +} - AM_RANGE( 0x00020000, 0x0003ffff ) AM_READWRITE16(vboy_bgmap_r,vboy_bgmap_w, 0xffffffff) // VIPC memory +void vboy_state::vboy_io(address_map &map) +{ + map.global_mask(0x07ffffff); + map(0x00000000, 0x00005fff).ram().share("l_frame_0"); // L frame buffer 0 + map(0x00006000, 0x00007fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511 + map(0x00008000, 0x0000dfff).ram().share("l_frame_1"); // L frame buffer 1 + map(0x0000e000, 0x0000ffff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023 + map(0x00010000, 0x00015fff).ram().share("r_frame_0"); // R frame buffer 0 + map(0x00016000, 0x00017fff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535 + map(0x00018000, 0x0001dfff).ram().share("r_frame_1"); // R frame buffer 1 + map(0x0001e000, 0x0001ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047 + + map(0x00020000, 0x0003ffff).rw(this, FUNC(vboy_state::vboy_bgmap_r), FUNC(vboy_state::vboy_bgmap_w)); // VIPC memory //AM_RANGE( 0x00040000, 0x0005ffff ) AM_RAM // VIPC - AM_RANGE( 0x0005f800, 0x0005f87f ) AM_READWRITE16(vip_r, vip_w, 0xffffffff) + map(0x0005f800, 0x0005f87f).rw(this, FUNC(vboy_state::vip_r), FUNC(vboy_state::vip_w)); - AM_RANGE( 0x00078000, 0x00079fff ) AM_READWRITE16(font0_r, font0_w, 0xffffffff) // Font 0-511 mirror - AM_RANGE( 0x0007a000, 0x0007bfff ) AM_READWRITE16(font1_r, font1_w, 0xffffffff) // Font 512-1023 mirror - AM_RANGE( 0x0007c000, 0x0007dfff ) AM_READWRITE16(font2_r, font2_w, 0xffffffff) // Font 1024-1535 mirror - AM_RANGE( 0x0007e000, 0x0007ffff ) AM_READWRITE16(font3_r, font3_w, 0xffffffff) // Font 1536-2047 mirror + map(0x00078000, 0x00079fff).rw(this, FUNC(vboy_state::font0_r), FUNC(vboy_state::font0_w)); // Font 0-511 mirror + map(0x0007a000, 0x0007bfff).rw(this, FUNC(vboy_state::font1_r), FUNC(vboy_state::font1_w)); // Font 512-1023 mirror + map(0x0007c000, 0x0007dfff).rw(this, FUNC(vboy_state::font2_r), FUNC(vboy_state::font2_w)); // Font 1024-1535 mirror + map(0x0007e000, 0x0007ffff).rw(this, FUNC(vboy_state::font3_r), FUNC(vboy_state::font3_w)); // Font 1536-2047 mirror - AM_RANGE( 0x01000000, 0x010005ff ) AM_DEVREADWRITE8("vbsnd", vboysnd_device, read, write, 0xffffffff) - AM_RANGE( 0x02000000, 0x0200002b ) AM_MIRROR(0x0ffff00) AM_READWRITE(io_r, io_w) // Hardware control registers mask 0xff + map(0x01000000, 0x010005ff).rw("vbsnd", FUNC(vboysnd_device::read), FUNC(vboysnd_device::write)); + map(0x02000000, 0x0200002b).mirror(0x0ffff00).rw(this, FUNC(vboy_state::io_r), FUNC(vboy_state::io_w)); // Hardware control registers mask 0xff // AM_RANGE( 0x04000000, 0x04ffffff ) // Expansion area - AM_RANGE( 0x05000000, 0x0500ffff ) AM_MIRROR(0x0ff0000) AM_RAM AM_SHARE("wram") // Main RAM - 64K mask 0xffff - AM_RANGE( 0x06000000, 0x06003fff ) AM_NOP // Cart RAM - 8K NVRAM ? + map(0x05000000, 0x0500ffff).mirror(0x0ff0000).ram().share("wram"); // Main RAM - 64K mask 0xffff + map(0x06000000, 0x06003fff).noprw(); // Cart RAM - 8K NVRAM ? // AM_RANGE( 0x07000000, 0x071fffff ) AM_MIRROR(0x0e00000) AM_DEVREAD("cartslot", vboy_cart_slot_device, read_cart) /* ROM */ -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( vboy ) diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp index 09703716919..11fdaaaec9b 100644 --- a/src/mame/drivers/vc4000.cpp +++ b/src/mame/drivers/vc4000.cpp @@ -184,23 +184,25 @@ READ8_MEMBER( vc4000_state::elektor_cass_r ) return (m_cassette->input() > 0.03) ? 0xff : 0x7f; } -ADDRESS_MAP_START(vc4000_state::vc4000_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x1680, 0x16ff) AM_READWRITE(vc4000_key_r, vc4000_sound_ctl) AM_MIRROR(0x0800) - AM_RANGE(0x1700, 0x17ff) AM_READWRITE(vc4000_video_r, vc4000_video_w) AM_MIRROR(0x0800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vc4000_state::elektor_mem) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x15ff) AM_RAM - AM_RANGE(0x1980, 0x19ff) AM_MIRROR(0x400) AM_READWRITE(elektor_cass_r,elektor_cass_w) - AM_RANGE(0x1680, 0x168f) AM_MIRROR(0x800) AM_READWRITE(vc4000_key_r,vc4000_sound_ctl) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x800) AM_READWRITE(vc4000_video_r, vc4000_video_w) -ADDRESS_MAP_END +void vc4000_state::vc4000_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fff); + map(0x0000, 0x07ff).rom(); + map(0x1680, 0x16ff).rw(this, FUNC(vc4000_state::vc4000_key_r), FUNC(vc4000_state::vc4000_sound_ctl)).mirror(0x0800); + map(0x1700, 0x17ff).rw(this, FUNC(vc4000_state::vc4000_video_r), FUNC(vc4000_state::vc4000_video_w)).mirror(0x0800); +} + +void vc4000_state::elektor_mem(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x1fff); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x15ff).ram(); + map(0x1980, 0x19ff).mirror(0x400).rw(this, FUNC(vc4000_state::elektor_cass_r), FUNC(vc4000_state::elektor_cass_w)); + map(0x1680, 0x168f).mirror(0x800).rw(this, FUNC(vc4000_state::vc4000_key_r), FUNC(vc4000_state::vc4000_sound_ctl)); + map(0x1700, 0x17ff).mirror(0x800).rw(this, FUNC(vc4000_state::vc4000_video_r), FUNC(vc4000_state::vc4000_video_w)); +} static INPUT_PORTS_START( vc4000 ) PORT_START("PANEL") diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp index f9a1432d416..12663eb6fe5 100644 --- a/src/mame/drivers/vcombat.cpp +++ b/src/mame/drivers/vcombat.cpp @@ -355,72 +355,76 @@ WRITE16_MEMBER(vcombat_state::vcombat_dac_w) fprintf(stderr, "dac overflow %04x\n", data & 0x801f); } -ADDRESS_MAP_START(vcombat_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x30ffff) AM_WRITE(main_video_write) - - AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("vid_0_ram") /* First i860 shared RAM */ - AM_RANGE(0x440000, 0x440003) AM_RAM AM_SHARE("share6") /* M0->P0 i860 #1 com 1 */ - AM_RANGE(0x480000, 0x480003) AM_RAM AM_SHARE("share7") /* M0<-P0 i860 #1 com 2 */ - AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE(wiggle_i860p0_pins_w) /* i860 #1 stop/start/reset */ - - AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("vid_1_ram") /* Second i860 shared RAM */ - AM_RANGE(0x540000, 0x540003) AM_RAM AM_SHARE("share8") /* M0->P1 i860 #2 com 1 */ - AM_RANGE(0x580000, 0x580003) AM_RAM AM_SHARE("share9") /* M0<-P1 i860 #2 com 2 */ - AM_RANGE(0x5c0000, 0x5c0003) AM_WRITE(wiggle_i860p1_pins_w) /* i860 #2 stop/start/reset */ - - AM_RANGE(0x600000, 0x600001) AM_READ(control_1_r) /* IN0 port */ - AM_RANGE(0x600004, 0x600005) AM_RAM AM_SHARE("share5") /* M0<-M1 */ - AM_RANGE(0x600008, 0x600009) AM_READ(control_2_r) /* IN1 port */ - AM_RANGE(0x60001c, 0x60001d) AM_NOP - - AM_RANGE(0x60000c, 0x60000d) AM_WRITE(crtc_w) - AM_RANGE(0x600010, 0x600011) AM_RAM AM_SHARE("fb_control") - AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x701000, 0x701001) AM_READ(main_irqiack_r) - AM_RANGE(0x702000, 0x702001) AM_READ(control_3_r) - AM_RANGE(0x705000, 0x705001) AM_RAM AM_SHARE("share4") /* M1->M0 */ +void vcombat_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x300000, 0x30ffff).w(this, FUNC(vcombat_state::main_video_write)); + + map(0x400000, 0x43ffff).ram().share("vid_0_ram"); /* First i860 shared RAM */ + map(0x440000, 0x440003).ram().share("share6"); /* M0->P0 i860 #1 com 1 */ + map(0x480000, 0x480003).ram().share("share7"); /* M0<-P0 i860 #1 com 2 */ + map(0x4c0000, 0x4c0003).w(this, FUNC(vcombat_state::wiggle_i860p0_pins_w)); /* i860 #1 stop/start/reset */ + + map(0x500000, 0x53ffff).ram().share("vid_1_ram"); /* Second i860 shared RAM */ + map(0x540000, 0x540003).ram().share("share8"); /* M0->P1 i860 #2 com 1 */ + map(0x580000, 0x580003).ram().share("share9"); /* M0<-P1 i860 #2 com 2 */ + map(0x5c0000, 0x5c0003).w(this, FUNC(vcombat_state::wiggle_i860p1_pins_w)); /* i860 #2 stop/start/reset */ + + map(0x600000, 0x600001).r(this, FUNC(vcombat_state::control_1_r)); /* IN0 port */ + map(0x600004, 0x600005).ram().share("share5"); /* M0<-M1 */ + map(0x600008, 0x600009).r(this, FUNC(vcombat_state::control_2_r)); /* IN1 port */ + map(0x60001c, 0x60001d).noprw(); + + map(0x60000c, 0x60000d).w(this, FUNC(vcombat_state::crtc_w)); + map(0x600010, 0x600011).ram().share("fb_control"); + map(0x700000, 0x7007ff).ram().share("nvram"); + map(0x701000, 0x701001).r(this, FUNC(vcombat_state::main_irqiack_r)); + map(0x702000, 0x702001).r(this, FUNC(vcombat_state::control_3_r)); + map(0x705000, 0x705001).ram().share("share4"); /* M1->M0 */ //AM_RANGE(0x703000, 0x703001) /* Headset rotation axis? */ //AM_RANGE(0x704000, 0x704001) /* Headset rotation axis? */ - AM_RANGE(0x706000, 0x70601f) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) -ADDRESS_MAP_END + map(0x706000, 0x70601f).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); +} /* The first i860 - middle board */ -ADDRESS_MAP_START(vcombat_state::vid_0_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v0_fb_w) /* Shared framebuffer - half of the bits lost to 32-bit bus */ - AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share6") /* M0<-P0 com 1 (0x440000 in 68k-land) */ - AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0) - AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share7") /* M0->P0 com 2 (0x480000 in 68k-land) */ - AM_RANGE(0xc0000000, 0xc0000fff) AM_NOP /* Dummy D$ flush page. */ - AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE("vid_0_ram") /* Shared RAM with main */ -ADDRESS_MAP_END +void vcombat_state::vid_0_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram().w(this, FUNC(vcombat_state::v0_fb_w)); /* Shared framebuffer - half of the bits lost to 32-bit bus */ + map(0x20000000, 0x20000007).ram().share("share6"); /* M0<-P0 com 1 (0x440000 in 68k-land) */ + map(0x40000000, 0x401fffff).rom().region("gfx", 0); + map(0x80000000, 0x80000007).ram().share("share7"); /* M0->P0 com 2 (0x480000 in 68k-land) */ + map(0xc0000000, 0xc0000fff).noprw(); /* Dummy D$ flush page. */ + map(0xfffc0000, 0xffffffff).ram().share("vid_0_ram"); /* Shared RAM with main */ +} /* The second i860 - top board */ -ADDRESS_MAP_START(vcombat_state::vid_1_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v1_fb_w) /* Half of the bits lost to 32-bit bus */ - AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share8") /* M0->P1 com 1 (0x540000 in 68k-land) */ - AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0) - AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share9") /* M0<-P1 com 2 (0x580000 in 68k-land) */ - AM_RANGE(0xc0000000, 0xc0000fff) AM_NOP /* Dummy D$ flush page. */ - AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE("vid_1_ram") /* Shared RAM with main */ -ADDRESS_MAP_END +void vcombat_state::vid_1_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram().w(this, FUNC(vcombat_state::v1_fb_w)); /* Half of the bits lost to 32-bit bus */ + map(0x20000000, 0x20000007).ram().share("share8"); /* M0->P1 com 1 (0x540000 in 68k-land) */ + map(0x40000000, 0x401fffff).rom().region("gfx", 0); + map(0x80000000, 0x80000007).ram().share("share9"); /* M0<-P1 com 2 (0x580000 in 68k-land) */ + map(0xc0000000, 0xc0000fff).noprw(); /* Dummy D$ flush page. */ + map(0xfffc0000, 0xffffffff).ram().share("vid_1_ram"); /* Shared RAM with main */ +} /* Sound CPU */ -ADDRESS_MAP_START(vcombat_state::sound_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(vcombat_dac_w) - AM_RANGE(0x140000, 0x140001) AM_READ(sound_resetmain_r) /* Ping M0's reset line */ - AM_RANGE(0x180000, 0x180001) AM_RAM AM_SHARE("share4") /* M1<-M0 */ - AM_RANGE(0x1c0000, 0x1c0001) AM_RAM AM_SHARE("share5") /* M1->M0 */ - AM_RANGE(0x200000, 0x37ffff) AM_ROM AM_REGION("samples", 0) -ADDRESS_MAP_END +void vcombat_state::sound_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x08ffff).ram(); + map(0x0c0000, 0x0c0001).w(this, FUNC(vcombat_state::vcombat_dac_w)); + map(0x140000, 0x140001).r(this, FUNC(vcombat_state::sound_resetmain_r)); /* Ping M0's reset line */ + map(0x180000, 0x180001).ram().share("share4"); /* M1<-M0 */ + map(0x1c0000, 0x1c0001).ram().share("share5"); /* M1->M0 */ + map(0x200000, 0x37ffff).rom().region("samples", 0); +} MACHINE_RESET_MEMBER(vcombat_state,vcombat) diff --git a/src/mame/drivers/vcs80.cpp b/src/mame/drivers/vcs80.cpp index 6a7e27515e6..30f0afe2c5b 100644 --- a/src/mame/drivers/vcs80.cpp +++ b/src/mame/drivers/vcs80.cpp @@ -65,19 +65,22 @@ WRITE8_MEMBER( vcs80_state::pio_w ) /* Memory Maps */ -ADDRESS_MAP_START(vcs80_state::vcs80_bd_mem) - AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION(Z80_TAG, 0) - AM_RANGE(0x0400, 0x07ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vcs80_state::vcs80_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vcs80_state::vcs80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void vcs80_state::vcs80_bd_mem(address_map &map) +{ + map(0x0000, 0x01ff).rom().region(Z80_TAG, 0); + map(0x0400, 0x07ff).ram(); +} + +void vcs80_state::vcs80_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(vcs80_state::mem_r), FUNC(vcs80_state::mem_w)); +} + +void vcs80_state::vcs80_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(vcs80_state::io_r), FUNC(vcs80_state::io_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/vd.cpp b/src/mame/drivers/vd.cpp index 14e2e81edb3..587934dfed5 100644 --- a/src/mame/drivers/vd.cpp +++ b/src/mame/drivers/vd.cpp @@ -61,32 +61,34 @@ READ8_MEMBER(vd_state::ack_r) return 0; // this value is not used } -ADDRESS_MAP_START(vd_state::vd_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x62ff) AM_RAM - AM_RANGE(0x6700, 0x67ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vd_state::vd_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("X0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("X1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("X2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("X3") - AM_RANGE(0x04, 0x04) AM_READ_PORT("X4") - AM_RANGE(0x05, 0x05) AM_READ_PORT("X5") - AM_RANGE(0x20, 0x27) AM_WRITE(lamp_w) - AM_RANGE(0x28, 0x28) AM_WRITE(sol_w) - AM_RANGE(0x40, 0x44) AM_WRITE(disp_w) - AM_RANGE(0x60, 0x60) AM_DEVWRITE("ay1", ay8910_device, address_w) - AM_RANGE(0x61, 0x61) AM_DEVREAD("ay1", ay8910_device, data_r) - AM_RANGE(0x62, 0x62) AM_DEVWRITE("ay1", ay8910_device, data_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("ay2", ay8910_device, address_w) - AM_RANGE(0x81, 0x81) AM_DEVREAD("ay2", ay8910_device, data_r) // probably never read - AM_RANGE(0x82, 0x82) AM_DEVWRITE("ay2", ay8910_device, data_w) - AM_RANGE(0xa0, 0xa0) AM_READ(ack_r) - AM_RANGE(0xc0, 0xc0) AM_WRITE(col_w) -ADDRESS_MAP_END +void vd_state::vd_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x62ff).ram(); + map(0x6700, 0x67ff).ram(); +} + +void vd_state::vd_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("X0"); + map(0x01, 0x01).portr("X1"); + map(0x02, 0x02).portr("X2"); + map(0x03, 0x03).portr("X3"); + map(0x04, 0x04).portr("X4"); + map(0x05, 0x05).portr("X5"); + map(0x20, 0x27).w(this, FUNC(vd_state::lamp_w)); + map(0x28, 0x28).w(this, FUNC(vd_state::sol_w)); + map(0x40, 0x44).w(this, FUNC(vd_state::disp_w)); + map(0x60, 0x60).w("ay1", FUNC(ay8910_device::address_w)); + map(0x61, 0x61).r("ay1", FUNC(ay8910_device::data_r)); + map(0x62, 0x62).w("ay1", FUNC(ay8910_device::data_w)); + map(0x80, 0x80).w("ay2", FUNC(ay8910_device::address_w)); + map(0x81, 0x81).r("ay2", FUNC(ay8910_device::data_r)); // probably never read + map(0x82, 0x82).w("ay2", FUNC(ay8910_device::data_w)); + map(0xa0, 0xa0).r(this, FUNC(vd_state::ack_r)); + map(0xc0, 0xc0).w(this, FUNC(vd_state::col_w)); +} static INPUT_PORTS_START( break86 ) PORT_START("DSW1") // "Micro Swicher Nº 1" diff --git a/src/mame/drivers/vector06.cpp b/src/mame/drivers/vector06.cpp index 99dcfc48e63..40d9c779a20 100644 --- a/src/mame/drivers/vector06.cpp +++ b/src/mame/drivers/vector06.cpp @@ -33,28 +33,30 @@ TODO: #include "speaker.h" /* Address maps */ -ADDRESS_MAP_START(vector06_state::vector06_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE_BANK("bank1") - AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank2") - AM_RANGE(0xa000, 0xdfff) AM_READWRITE_BANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(vector06_state::vector06_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH +void vector06_state::vector06_mem(address_map &map) +{ + map(0x0000, 0xffff).bankrw("bank1"); + map(0x0000, 0x7fff).bankr("bank2"); + map(0xa000, 0xdfff).bankrw("bank3"); +} + +void vector06_state::vector06_io(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); ; map(0x00, 0x03).lrw8("ppi8255_rw", [this](address_space &space, offs_t offset, u8 mem_mask) -> u8 { return m_ppi8255->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ppi8255->write(space, offset^3, data, mem_mask); }); map(0x04, 0x07).lrw8("ppi8255_2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) -> u8 { return m_ppi8255_2->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_ppi8255_2->write(space, offset^3, data, mem_mask); }); map(0x08, 0x0b).lrw8("pit8253_rw", [this](address_space &space, offs_t offset, u8 mem_mask) -> u8 { return m_pit8253->read(space, offset^3, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pit8253->write(space, offset^3, data, mem_mask); }); - AM_RANGE(0x0c, 0x0c) AM_WRITE(vector06_color_set) - AM_RANGE(0x10, 0x10) AM_WRITE(vector06_ramdisk_w) - AM_RANGE(0x14, 0x15) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_address_w) - AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("wd1793", kr1818vg93_device, data_r, data_w) - AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("wd1793", kr1818vg93_device, sector_r, sector_w) - AM_RANGE(0x1a, 0x1a) AM_DEVREADWRITE("wd1793", kr1818vg93_device, track_r, track_w) - AM_RANGE(0x1b, 0x1b) AM_DEVREADWRITE("wd1793", kr1818vg93_device, status_r, cmd_w) - AM_RANGE(0x1c, 0x1c) AM_WRITE(vector06_disc_w) -ADDRESS_MAP_END + map(0x0c, 0x0c).w(this, FUNC(vector06_state::vector06_color_set)); + map(0x10, 0x10).w(this, FUNC(vector06_state::vector06_ramdisk_w)); + map(0x14, 0x15).rw(m_ay, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w)); + map(0x18, 0x18).rw(m_fdc, FUNC(kr1818vg93_device::data_r), FUNC(kr1818vg93_device::data_w)); + map(0x19, 0x19).rw(m_fdc, FUNC(kr1818vg93_device::sector_r), FUNC(kr1818vg93_device::sector_w)); + map(0x1a, 0x1a).rw(m_fdc, FUNC(kr1818vg93_device::track_r), FUNC(kr1818vg93_device::track_w)); + map(0x1b, 0x1b).rw(m_fdc, FUNC(kr1818vg93_device::status_r), FUNC(kr1818vg93_device::cmd_w)); + map(0x1c, 0x1c).w(this, FUNC(vector06_state::vector06_disc_w)); +} /* Input ports */ static INPUT_PORTS_START( vector06 ) diff --git a/src/mame/drivers/vector4.cpp b/src/mame/drivers/vector4.cpp index 382458ae40d..ccbbefb563a 100644 --- a/src/mame/drivers/vector4.cpp +++ b/src/mame/drivers/vector4.cpp @@ -33,25 +33,27 @@ private: }; -ADDRESS_MAP_START(vector4_state::vector4_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf8ff) AM_ROM - AM_RANGE(0xfc00, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vector4_state::vector4_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) - AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("uart3", i8251_device, data_r, data_w) - AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("uart3", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void vector4_state::vector4_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xdfff).ram(); + map(0xe000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf8ff).rom(); + map(0xfc00, 0xffff).ram(); +} + +void vector4_state::vector4_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x02, 0x02).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x03, 0x03).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x04, 0x04).rw("uart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x05, 0x05).rw("uart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x06, 0x06).rw("uart3", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x07, 0x07).rw("uart3", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} /* Input ports */ static INPUT_PORTS_START( vector4 ) diff --git a/src/mame/drivers/vectrex.cpp b/src/mame/drivers/vectrex.cpp index 2da98c59f89..77c2d3f011f 100644 --- a/src/mame/drivers/vectrex.cpp +++ b/src/mame/drivers/vectrex.cpp @@ -24,12 +24,13 @@ Bruce Tomlin (hardware info) #include "speaker.h" -ADDRESS_MAP_START(vectrex_state::vectrex_map) - AM_RANGE(0x0000, 0x7fff) AM_NOP // cart area, handled at machine_start - AM_RANGE(0xc800, 0xcbff) AM_RAM AM_MIRROR(0x0400) AM_SHARE("gce_vectorram") - AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vectrex_via_r, vectrex_via_w) - AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void vectrex_state::vectrex_map(address_map &map) +{ + map(0x0000, 0x7fff).noprw(); // cart area, handled at machine_start + map(0xc800, 0xcbff).ram().mirror(0x0400).share("gce_vectorram"); + map(0xd000, 0xd7ff).rw(this, FUNC(vectrex_state::vectrex_via_r), FUNC(vectrex_state::vectrex_via_w)); + map(0xe000, 0xffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START(vectrex) PORT_START("CONTR1X") @@ -193,14 +194,15 @@ ROM_END *****************************************************************/ -ADDRESS_MAP_START(raaspec_state::raaspec_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xa000) AM_WRITE(raaspec_led_w) - AM_RANGE(0xc800, 0xcbff) AM_RAM AM_MIRROR(0x0400) AM_SHARE("gce_vectorram") - AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(vectrex_via_r, vectrex_via_w) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void raaspec_state::raaspec_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("nvram"); + map(0xa000, 0xa000).w(this, FUNC(raaspec_state::raaspec_led_w)); + map(0xc800, 0xcbff).ram().mirror(0x0400).share("gce_vectorram"); + map(0xd000, 0xd7ff).rw(this, FUNC(raaspec_state::vectrex_via_r), FUNC(raaspec_state::vectrex_via_w)); + map(0xe000, 0xffff).rom(); +} static INPUT_PORTS_START(raaspec) PORT_START("LPENCONF") diff --git a/src/mame/drivers/vectrix.cpp b/src/mame/drivers/vectrix.cpp index fc4fb33e93b..d3dc9bfc80c 100644 --- a/src/mame/drivers/vectrix.cpp +++ b/src/mame/drivers/vectrix.cpp @@ -33,16 +33,18 @@ private: // required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(vectrix_state::mem_map) - AM_RANGE(0x00000,0x07fff) AM_RAM - AM_RANGE(0x0c000,0x0ffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("roms", 0) -ADDRESS_MAP_END +void vectrix_state::mem_map(address_map &map) +{ + map(0x00000, 0x07fff).ram(); + map(0x0c000, 0x0ffff).rom().region("roms", 0); + map(0xfc000, 0xfffff).rom().region("roms", 0); +} -ADDRESS_MAP_START(vectrix_state::io_map) - AM_RANGE(0x3000, 0x3000) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x3001, 0x3001) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) -ADDRESS_MAP_END +void vectrix_state::io_map(address_map &map) +{ + map(0x3000, 0x3000).rw("uart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x3001, 0x3001).rw("uart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); +} static INPUT_PORTS_START( vectrix ) INPUT_PORTS_END diff --git a/src/mame/drivers/vega.cpp b/src/mame/drivers/vega.cpp index 90662bcb5d3..7f2e0f6f0aa 100644 --- a/src/mame/drivers/vega.cpp +++ b/src/mame/drivers/vega.cpp @@ -388,14 +388,16 @@ WRITE8_MEMBER(vega_state::rombank_w) membank("bank1")->set_entry(data >>7); } -ADDRESS_MAP_START(vega_state::vega_map) - AM_RANGE(0x000, 0x7ff) AM_ROMBANK("bank1") - AM_RANGE(0x800, 0xfff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vega_state::vega_io_map) - AM_RANGE(0x00, 0xff) AM_READWRITE(extern_r, extern_w) -ADDRESS_MAP_END +void vega_state::vega_map(address_map &map) +{ + map(0x000, 0x7ff).bankr("bank1"); + map(0x800, 0xfff).rom(); +} + +void vega_state::vega_io_map(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(vega_state::extern_r), FUNC(vega_state::extern_w)); +} static INPUT_PORTS_START( vega ) diff --git a/src/mame/drivers/vegaeo.cpp b/src/mame/drivers/vegaeo.cpp index d6fbdd0e0e3..82ee30d0d7b 100644 --- a/src/mame/drivers/vegaeo.cpp +++ b/src/mame/drivers/vegaeo.cpp @@ -102,19 +102,20 @@ READ32_MEMBER(vegaeo_state::vegaeo_custom_read) } -ADDRESS_MAP_START(vegaeo_state::vega_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM - AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE8(vram_r, vram_w, 0xffffffff) - AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x000000ff) - AM_RANGE(0xfc200000, 0xfc2003ff) AM_DEVREADWRITE16("palette", palette_device, read16, write16, 0x0000ffff) AM_SHARE("palette") - AM_RANGE(0xfc400000, 0xfc40005b) AM_WRITENOP // crt registers ? - AM_RANGE(0xfc600000, 0xfc600003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff).cswidth(32) - AM_RANGE(0xfca00000, 0xfca00003) AM_WRITE(vega_misc_w) - AM_RANGE(0xfcc00000, 0xfcc00003) AM_READ(vegaeo_custom_read) - AM_RANGE(0xfce00000, 0xfce00003) AM_READ_PORT("P1_P2") - AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("maindata", 0) - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void vegaeo_state::vega_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram(); + map(0x80000000, 0x80013fff).rw(this, FUNC(vegaeo_state::vram_r), FUNC(vegaeo_state::vram_w)); + map(0xfc000000, 0xfc0000ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x000000ff); + map(0xfc200000, 0xfc2003ff).rw("palette", FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); + map(0xfc400000, 0xfc40005b).nopw(); // crt registers ? + map(0xfc600000, 0xfc600003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask32(0x000000ff).cswidth(32); + map(0xfca00000, 0xfca00003).w(this, FUNC(vegaeo_state::vega_misc_w)); + map(0xfcc00000, 0xfcc00003).r(this, FUNC(vegaeo_state::vegaeo_custom_read)); + map(0xfce00000, 0xfce00003).portr("P1_P2"); + map(0xfd000000, 0xfeffffff).rom().region("maindata", 0); + map(0xfff80000, 0xffffffff).rom().region("maincpu", 0); +} static INPUT_PORTS_START( crazywar ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/vendetta.cpp b/src/mame/drivers/vendetta.cpp index ddd02a919ff..e060f7cdec2 100644 --- a/src/mame/drivers/vendetta.cpp +++ b/src/mame/drivers/vendetta.cpp @@ -199,77 +199,82 @@ READ8_MEMBER(vendetta_state::z80_irq_r) /********************************************/ -ADDRESS_MAP_START(vendetta_state::main_map) - AM_RANGE(0x0000, 0x1fff) AM_ROMBANK("bank1") - AM_RANGE(0x2000, 0x3fff) AM_RAM +void vendetta_state::main_map(address_map &map) +{ + map(0x0000, 0x1fff).bankr("bank1"); + map(0x2000, 0x3fff).ram(); /* what is the desired effect of overlapping these memory regions anyway? */ - AM_RANGE(0x4000, 0x7fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - - AM_RANGE(0x4000, 0x4fff) AM_DEVICE("videobank0", address_map_bank_device, amap8) - AM_RANGE(0x5f80, 0x5f9f) AM_DEVREADWRITE("k054000", k054000_device, read, write) - AM_RANGE(0x5fa0, 0x5faf) AM_DEVWRITE("k053251", k053251_device, write) - AM_RANGE(0x5fb0, 0x5fb7) AM_DEVWRITE("k053246", k053247_device, k053246_w) - AM_RANGE(0x5fc0, 0x5fc0) AM_READ_PORT("P1") - AM_RANGE(0x5fc1, 0x5fc1) AM_READ_PORT("P2") - AM_RANGE(0x5fc2, 0x5fc2) AM_READ_PORT("P3") - AM_RANGE(0x5fc3, 0x5fc3) AM_READ_PORT("P4") - AM_RANGE(0x5fd0, 0x5fd0) AM_READ_PORT("EEPROM") - AM_RANGE(0x5fd1, 0x5fd1) AM_READ_PORT("SERVICE") - AM_RANGE(0x5fe0, 0x5fe0) AM_WRITE(_5fe0_w) - AM_RANGE(0x5fe2, 0x5fe2) AM_WRITE(eeprom_w) - AM_RANGE(0x5fe4, 0x5fe4) AM_READWRITE(z80_irq_r, z80_irq_w) - AM_RANGE(0x5fe6, 0x5fe7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write) - AM_RANGE(0x5fe8, 0x5fe9) AM_DEVREAD("k053246", k053247_device, k053246_r) - AM_RANGE(0x5fea, 0x5fea) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x6000, 0x6fff) AM_DEVICE("videobank1", address_map_bank_device, amap8) - - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vendetta_state::esckids_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM // 053248 64K SRAM + map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + + map(0x4000, 0x4fff).m(m_videobank0, FUNC(address_map_bank_device::amap8)); + map(0x5f80, 0x5f9f).rw(m_k054000, FUNC(k054000_device::read), FUNC(k054000_device::write)); + map(0x5fa0, 0x5faf).w(m_k053251, FUNC(k053251_device::write)); + map(0x5fb0, 0x5fb7).w(m_k053246, FUNC(k053247_device::k053246_w)); + map(0x5fc0, 0x5fc0).portr("P1"); + map(0x5fc1, 0x5fc1).portr("P2"); + map(0x5fc2, 0x5fc2).portr("P3"); + map(0x5fc3, 0x5fc3).portr("P4"); + map(0x5fd0, 0x5fd0).portr("EEPROM"); + map(0x5fd1, 0x5fd1).portr("SERVICE"); + map(0x5fe0, 0x5fe0).w(this, FUNC(vendetta_state::_5fe0_w)); + map(0x5fe2, 0x5fe2).w(this, FUNC(vendetta_state::eeprom_w)); + map(0x5fe4, 0x5fe4).rw(this, FUNC(vendetta_state::z80_irq_r), FUNC(vendetta_state::z80_irq_w)); + map(0x5fe6, 0x5fe7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); + map(0x5fe8, 0x5fe9).r(m_k053246, FUNC(k053247_device::k053246_r)); + map(0x5fea, 0x5fea).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x6000, 0x6fff).m(m_videobank1, FUNC(address_map_bank_device::amap8)); + + map(0x8000, 0xffff).rom().region("maincpu", 0x38000); +} + +void vendetta_state::esckids_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); // 053248 64K SRAM /* what is the desired effect of overlapping these memory regions anyway? */ - AM_RANGE(0x2000, 0x5fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) // 052109 (Tilemap) - - AM_RANGE(0x2000, 0x2fff) AM_DEVICE("videobank0", address_map_bank_device, amap8) // 052109 (Tilemap) 0x0000-0x0fff - 052109 (Tilemap) - AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("P1") - AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P2") - AM_RANGE(0x3f82, 0x3f82) AM_READ_PORT("P3") // ??? (But not used) - AM_RANGE(0x3f83, 0x3f83) AM_READ_PORT("P4") // ??? (But not used) - AM_RANGE(0x3f92, 0x3f92) AM_READ_PORT("EEPROM") - AM_RANGE(0x3f93, 0x3f93) AM_READ_PORT("SERVICE") - AM_RANGE(0x3fa0, 0x3fa7) AM_DEVWRITE("k053246", k053247_device, k053246_w) // 053246 (Sprite) - AM_RANGE(0x3fb0, 0x3fbf) AM_DEVWRITE("k053251", k053251_device, write) // 053251 (Priority Encoder) - AM_RANGE(0x3fc0, 0x3fcf) AM_DEVREADWRITE("k053252", k053252_device, read, write) // Not Emulated (053252 ???) - AM_RANGE(0x3fd0, 0x3fd0) AM_WRITE(_5fe0_w) // Coin Counter, 052109 RMRD, 053246 OBJCHA - AM_RANGE(0x3fd2, 0x3fd2) AM_WRITE(eeprom_w) // EEPROM, Video banking - AM_RANGE(0x3fd4, 0x3fd4) AM_READWRITE(z80_irq_r, z80_irq_w) // Sound - AM_RANGE(0x3fd6, 0x3fd7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write) // Sound - AM_RANGE(0x3fd8, 0x3fd9) AM_DEVREAD("k053246", k053247_device, k053246_r) // 053246 (Sprite) - AM_RANGE(0x3fda, 0x3fda) AM_WRITENOP // Not Emulated (Watchdog ???) - AM_RANGE(0x4000, 0x4fff) AM_DEVICE("videobank1", address_map_bank_device, amap8) // 0x2000-0x3fff, Tilemap MASK-ROM bank selector (MASK-ROM Test) - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") // 053248 '975r01' 1M ROM (Banked) - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x18000) // 053248 '975r01' 1M ROM (0x18000-0x1ffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vendetta_state::videobank0_map) - AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("k052109", k052109_device, read, write) - AM_RANGE(0x1000, 0x1fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_r, k053247_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vendetta_state::videobank1_map) - AM_RANGE(0x0000, 0x0fff) AM_READWRITE(K052109_r, K052109_w) - AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(vendetta_state::sound_map) - AM_RANGE(0x0000, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w) - AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write) -ADDRESS_MAP_END + map(0x2000, 0x5fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); // 052109 (Tilemap) + + map(0x2000, 0x2fff).m(m_videobank0, FUNC(address_map_bank_device::amap8)); // 052109 (Tilemap) 0x0000-0x0fff - 052109 (Tilemap) + map(0x3f80, 0x3f80).portr("P1"); + map(0x3f81, 0x3f81).portr("P2"); + map(0x3f82, 0x3f82).portr("P3"); // ??? (But not used) + map(0x3f83, 0x3f83).portr("P4"); // ??? (But not used) + map(0x3f92, 0x3f92).portr("EEPROM"); + map(0x3f93, 0x3f93).portr("SERVICE"); + map(0x3fa0, 0x3fa7).w(m_k053246, FUNC(k053247_device::k053246_w)); // 053246 (Sprite) + map(0x3fb0, 0x3fbf).w(m_k053251, FUNC(k053251_device::write)); // 053251 (Priority Encoder) + map(0x3fc0, 0x3fcf).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write)); // Not Emulated (053252 ???) + map(0x3fd0, 0x3fd0).w(this, FUNC(vendetta_state::_5fe0_w)); // Coin Counter, 052109 RMRD, 053246 OBJCHA + map(0x3fd2, 0x3fd2).w(this, FUNC(vendetta_state::eeprom_w)); // EEPROM, Video banking + map(0x3fd4, 0x3fd4).rw(this, FUNC(vendetta_state::z80_irq_r), FUNC(vendetta_state::z80_irq_w)); // Sound + map(0x3fd6, 0x3fd7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); // Sound + map(0x3fd8, 0x3fd9).r(m_k053246, FUNC(k053247_device::k053246_r)); // 053246 (Sprite) + map(0x3fda, 0x3fda).nopw(); // Not Emulated (Watchdog ???) + map(0x4000, 0x4fff).m(m_videobank1, FUNC(address_map_bank_device::amap8)); // 0x2000-0x3fff, Tilemap MASK-ROM bank selector (MASK-ROM Test) + map(0x6000, 0x7fff).bankr("bank1"); // 053248 '975r01' 1M ROM (Banked) + map(0x8000, 0xffff).rom().region("maincpu", 0x18000); // 053248 '975r01' 1M ROM (0x18000-0x1ffff) +} + +void vendetta_state::videobank0_map(address_map &map) +{ + map(0x0000, 0x0fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)); + map(0x1000, 0x1fff).rw(m_k053246, FUNC(k053247_device::k053247_r), FUNC(k053247_device::k053247_w)); +} + +void vendetta_state::videobank1_map(address_map &map) +{ + map(0x0000, 0x0fff).rw(this, FUNC(vendetta_state::K052109_r), FUNC(vendetta_state::K052109_w)); + map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); +} + +void vendetta_state::sound_map(address_map &map) +{ + map(0x0000, 0xefff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xfa00, 0xfa00).w(this, FUNC(vendetta_state::z80_arm_nmi_w)); + map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write)); +} /*************************************************************************** diff --git a/src/mame/drivers/vertigo.cpp b/src/mame/drivers/vertigo.cpp index 47339d6106a..d0ca658f4b7 100644 --- a/src/mame/drivers/vertigo.cpp +++ b/src/mame/drivers/vertigo.cpp @@ -35,36 +35,38 @@ * *************************************/ -ADDRESS_MAP_START(vertigo_state::vertigo_map) - AM_RANGE(0x000000, 0x000007) AM_ROM - AM_RANGE(0x000008, 0x001fff) AM_RAM AM_MIRROR(0x010000) - AM_RANGE(0x002000, 0x003fff) AM_RAM AM_SHARE("vectorram") - AM_RANGE(0x004000, 0x00400f) AM_READ(vertigo_io_convert) AM_MIRROR(0x001000) - AM_RANGE(0x004010, 0x00401f) AM_READ(vertigo_io_adc) AM_MIRROR(0x001000) - AM_RANGE(0x004020, 0x00402f) AM_READ(vertigo_coin_r) AM_MIRROR(0x001000) - AM_RANGE(0x004030, 0x00403f) AM_READ_PORT("GIO") AM_MIRROR(0x001000) - AM_RANGE(0x004040, 0x00404f) AM_READ(vertigo_sio_r) AM_MIRROR(0x001000) - AM_RANGE(0x004050, 0x00405f) AM_WRITE(vertigo_audio_w) AM_MIRROR(0x001000) - AM_RANGE(0x004060, 0x00406f) AM_WRITE(vertigo_motor_w) AM_MIRROR(0x001000) - AM_RANGE(0x004070, 0x00407f) AM_WRITE(vertigo_wsot_w) AM_MIRROR(0x001000) - AM_RANGE(0x006000, 0x006007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0x007000, 0x0073ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x800000, 0x81ffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vertigo_state::exidy440_audio_map) - AM_RANGE(0x0000, 0x7fff) AM_NOP - AM_RANGE(0x8000, 0x801f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("custom", exidy440_sound_device, m6844_r, m6844_w) - AM_RANGE(0x8400, 0x840f) AM_MIRROR(0x03f0) AM_DEVREADWRITE("custom", exidy440_sound_device, sound_volume_r, sound_volume_w) - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_DEVREAD("custom", exidy440_sound_device, sound_command_r) AM_WRITENOP - AM_RANGE(0x8c00, 0x93ff) AM_NOP - AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x03fc) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_banks_w) - AM_RANGE(0x9800, 0x9800) AM_MIRROR(0x03ff) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_interrupt_clear_w) - AM_RANGE(0x9c00, 0x9fff) AM_NOP - AM_RANGE(0xa000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xdfff) AM_NOP - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void vertigo_state::vertigo_map(address_map &map) +{ + map(0x000000, 0x000007).rom(); + map(0x000008, 0x001fff).ram().mirror(0x010000); + map(0x002000, 0x003fff).ram().share("vectorram"); + map(0x004000, 0x00400f).r(this, FUNC(vertigo_state::vertigo_io_convert)).mirror(0x001000); + map(0x004010, 0x00401f).r(this, FUNC(vertigo_state::vertigo_io_adc)).mirror(0x001000); + map(0x004020, 0x00402f).r(this, FUNC(vertigo_state::vertigo_coin_r)).mirror(0x001000); + map(0x004030, 0x00403f).portr("GIO").mirror(0x001000); + map(0x004040, 0x00404f).r(this, FUNC(vertigo_state::vertigo_sio_r)).mirror(0x001000); + map(0x004050, 0x00405f).w(this, FUNC(vertigo_state::vertigo_audio_w)).mirror(0x001000); + map(0x004060, 0x00406f).w(this, FUNC(vertigo_state::vertigo_motor_w)).mirror(0x001000); + map(0x004070, 0x00407f).w(this, FUNC(vertigo_state::vertigo_wsot_w)).mirror(0x001000); + map(0x006000, 0x006007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0x007000, 0x0073ff).ram().share("nvram"); + map(0x800000, 0x81ffff).rom(); +} + +void vertigo_state::exidy440_audio_map(address_map &map) +{ + map(0x0000, 0x7fff).noprw(); + map(0x8000, 0x801f).mirror(0x03e0).rw(m_custom, FUNC(exidy440_sound_device::m6844_r), FUNC(exidy440_sound_device::m6844_w)); + map(0x8400, 0x840f).mirror(0x03f0).rw(m_custom, FUNC(exidy440_sound_device::sound_volume_r), FUNC(exidy440_sound_device::sound_volume_w)); + map(0x8800, 0x8800).mirror(0x03ff).r(m_custom, FUNC(exidy440_sound_device::sound_command_r)).nopw(); + map(0x8c00, 0x93ff).noprw(); + map(0x9400, 0x9403).mirror(0x03fc).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_banks_w)); + map(0x9800, 0x9800).mirror(0x03ff).nopr().w(m_custom, FUNC(exidy440_sound_device::sound_interrupt_clear_w)); + map(0x9c00, 0x9fff).noprw(); + map(0xa000, 0xbfff).ram(); + map(0xc000, 0xdfff).noprw(); + map(0xe000, 0xffff).rom(); +} /************************************* diff --git a/src/mame/drivers/vg5k.cpp b/src/mame/drivers/vg5k.cpp index 74bb0dae6e4..416caa68ffe 100644 --- a/src/mame/drivers/vg5k.cpp +++ b/src/mame/drivers/vg5k.cpp @@ -159,42 +159,44 @@ WRITE8_MEMBER ( vg5k_state::cassette_w ) } -ADDRESS_MAP_START(vg5k_state::vg5k_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_NOP /* messram expansion memory */ -ADDRESS_MAP_END +void vg5k_state::vg5k_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0xffff).noprw(); /* messram expansion memory */ +} -ADDRESS_MAP_START(vg5k_state::vg5k_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK (0xff) +void vg5k_state::vg5k_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); /* joystick */ - AM_RANGE( 0x07, 0x07 ) AM_READ_PORT("JOY0") - AM_RANGE( 0x08, 0x08 ) AM_READ_PORT("JOY1") + map(0x07, 0x07).portr("JOY0"); + map(0x08, 0x08).portr("JOY1"); /* printer */ - AM_RANGE( 0x10, 0x10 ) AM_READ(printer_r) - AM_RANGE( 0x11, 0x11 ) AM_WRITE(printer_w) + map(0x10, 0x10).r(this, FUNC(vg5k_state::printer_r)); + map(0x11, 0x11).w(this, FUNC(vg5k_state::printer_w)); /* keyboard */ - AM_RANGE( 0x80, 0x80 ) AM_READ_PORT("ROW1") - AM_RANGE( 0x81, 0x81 ) AM_READ_PORT("ROW2") - AM_RANGE( 0x82, 0x82 ) AM_READ_PORT("ROW3") - AM_RANGE( 0x83, 0x83 ) AM_READ_PORT("ROW4") - AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("ROW5") - AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("ROW6") - AM_RANGE( 0x86, 0x86 ) AM_READ_PORT("ROW7") - AM_RANGE( 0x87, 0x87 ) AM_READ_PORT("ROW8") + map(0x80, 0x80).portr("ROW1"); + map(0x81, 0x81).portr("ROW2"); + map(0x82, 0x82).portr("ROW3"); + map(0x83, 0x83).portr("ROW4"); + map(0x84, 0x84).portr("ROW5"); + map(0x85, 0x85).portr("ROW6"); + map(0x86, 0x86).portr("ROW7"); + map(0x87, 0x87).portr("ROW8"); /* EF9345 */ - AM_RANGE( 0x8f, 0x8f ) AM_WRITE(ef9345_offset_w) - AM_RANGE( 0xcf, 0xcf ) AM_READWRITE(ef9345_io_r, ef9345_io_w) + map(0x8f, 0x8f).w(this, FUNC(vg5k_state::ef9345_offset_w)); + map(0xcf, 0xcf).rw(this, FUNC(vg5k_state::ef9345_io_r), FUNC(vg5k_state::ef9345_io_w)); /* cassette */ - AM_RANGE( 0xaf,0xaf ) AM_READWRITE(cassette_r, cassette_w) -ADDRESS_MAP_END + map(0xaf, 0xaf).rw(this, FUNC(vg5k_state::cassette_r), FUNC(vg5k_state::cassette_w)); +} /* Input ports */ static INPUT_PORTS_START( vg5k ) diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp index 4befce870df..43607e47968 100644 --- a/src/mame/drivers/vgmplay.cpp +++ b/src/mame/drivers/vgmplay.cpp @@ -1476,124 +1476,142 @@ WRITE8_MEMBER(vgmplay_state::scc_w) static INPUT_PORTS_START( vgmplay ) INPUT_PORTS_END -ADDRESS_MAP_START(vgmplay_state::file_map) - AM_RANGE(0x00000000, 0xffffffff) AM_READ(file_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::soundchips16_map) - AM_RANGE(vgmplay_device::A_C352, vgmplay_device::A_C352+0x7fff) AM_DEVWRITE ("c352", c352_device, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::soundchips_map) - AM_RANGE(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3) AM_READ(file_size_r) - AM_RANGE(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3) AM_DEVWRITE ("ym2612", ym2612_device, write) - AM_RANGE(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1) AM_DEVWRITE ("ym2151", ym2151_device, write) - AM_RANGE(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1) AM_DEVWRITE ("ym2413", ym2413_device, write) - AM_RANGE(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1) AM_DEVWRITE ("ym2203a", ym2203_device, write) - AM_RANGE(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1) AM_DEVWRITE ("ym2203b", ym2203_device, write) - AM_RANGE(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1) AM_DEVWRITE ("ym3526", ym3526_device, write) - AM_RANGE(vgmplay_device::A_YM3812, vgmplay_device::A_YM3812+1) AM_DEVWRITE ("ym3812", ym3812_device, write) - AM_RANGE(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A) AM_DEVWRITE ("ay8910a", ay8910_device, data_w) - AM_RANGE(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1) AM_DEVWRITE ("ay8910a", ay8910_device, address_w) - AM_RANGE(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B) AM_DEVWRITE ("ay8910b", ay8910_device, data_w) - AM_RANGE(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1) AM_DEVWRITE ("ay8910b", ay8910_device, address_w) +void vgmplay_state::file_map(address_map &map) +{ + map(0x00000000, 0xffffffff).r(this, FUNC(vgmplay_state::file_r)); +} + +void vgmplay_state::soundchips16_map(address_map &map) +{ + map(vgmplay_device::A_C352, vgmplay_device::A_C352+0x7fff).w(m_c352, FUNC(c352_device::write)); +} + +void vgmplay_state::soundchips_map(address_map &map) +{ + map(vgmplay_device::REG_SIZE, vgmplay_device::REG_SIZE+3).r(this, FUNC(vgmplay_state::file_size_r)); + map(vgmplay_device::A_YM2612, vgmplay_device::A_YM2612+3).w(m_ym2612, FUNC(ym2612_device::write)); + map(vgmplay_device::A_YM2151, vgmplay_device::A_YM2151+1).w(m_ym2151, FUNC(ym2151_device::write)); + map(vgmplay_device::A_YM2413, vgmplay_device::A_YM2413+1).w(m_ym2413, FUNC(ym2413_device::write)); + map(vgmplay_device::A_YM2203A, vgmplay_device::A_YM2203A+1).w("ym2203a", FUNC(ym2203_device::write)); + map(vgmplay_device::A_YM2203B, vgmplay_device::A_YM2203B+1).w("ym2203b", FUNC(ym2203_device::write)); + map(vgmplay_device::A_YM3526, vgmplay_device::A_YM3526+1).w(m_ym3526, FUNC(ym3526_device::write)); + map(vgmplay_device::A_YM3812, vgmplay_device::A_YM3812+1).w(m_ym3812, FUNC(ym3812_device::write)); + map(vgmplay_device::A_AY8910A, vgmplay_device::A_AY8910A).w("ay8910a", FUNC(ay8910_device::data_w)); + map(vgmplay_device::A_AY8910A+1, vgmplay_device::A_AY8910A+1).w("ay8910a", FUNC(ay8910_device::address_w)); + map(vgmplay_device::A_AY8910B, vgmplay_device::A_AY8910B).w("ay8910b", FUNC(ay8910_device::data_w)); + map(vgmplay_device::A_AY8910B+1, vgmplay_device::A_AY8910B+1).w("ay8910b", FUNC(ay8910_device::address_w)); // AM_RANGE(vgmplay_device::A_SN76496+0, vgmplay_device::A_SN76496+0) AM_DEVWRITE ("sn76496", sn76496_device, stereo_w) - AM_RANGE(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1) AM_DEVWRITE ("sn76496", sn76496_device, write) - AM_RANGE(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f) AM_DEVWRITE ("k053260", k053260_device, write) - AM_RANGE(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf) AM_DEVWRITE ("c6280", c6280_device, c6280_w) - AM_RANGE(vgmplay_device::A_OKIM6295A, vgmplay_device::A_OKIM6295A) AM_DEVWRITE ("okim6295a", okim6295_device, write) - AM_RANGE(vgmplay_device::A_OKIM6295A+0x8, vgmplay_device::A_OKIM6295A+0xb) AM_WRITE (okim6295_clock_w<0>) - AM_RANGE(vgmplay_device::A_OKIM6295A+0xc, vgmplay_device::A_OKIM6295A+0xc) AM_WRITE (okim6295_pin7_w<0>) - AM_RANGE(vgmplay_device::A_OKIM6295A+0xe, vgmplay_device::A_OKIM6295A+0xe) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_enable_w<0>) - AM_RANGE(vgmplay_device::A_OKIM6295A+0xf, vgmplay_device::A_OKIM6295A+0xf) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_bank_w<0>) - AM_RANGE(vgmplay_device::A_OKIM6295A+0x10, vgmplay_device::A_OKIM6295A+0x13) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_bank_w<0>) - AM_RANGE(vgmplay_device::A_OKIM6295B, vgmplay_device::A_OKIM6295B) AM_DEVWRITE ("okim6295b", okim6295_device, write) - AM_RANGE(vgmplay_device::A_OKIM6295B+0x8, vgmplay_device::A_OKIM6295B+0xb) AM_WRITE (okim6295_clock_w<1>) - AM_RANGE(vgmplay_device::A_OKIM6295B+0xc, vgmplay_device::A_OKIM6295B+0xc) AM_WRITE (okim6295_pin7_w<1>) - AM_RANGE(vgmplay_device::A_OKIM6295B+0xe, vgmplay_device::A_OKIM6295B+0xe) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_enable_w<1>) - AM_RANGE(vgmplay_device::A_OKIM6295B+0xf, vgmplay_device::A_OKIM6295B+0xf) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_bank_w<1>) - AM_RANGE(vgmplay_device::A_OKIM6295B+0x10, vgmplay_device::A_OKIM6295B+0x13) AM_DEVWRITE ("vgmplay", vgmplay_device, okim6295_nmk112_bank_w<1>) - AM_RANGE(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff) AM_DEVWRITE ("segapcm", segapcm_device, sega_pcm_w) - AM_RANGE(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16) AM_DEVWRITE ("dmg", gameboy_sound_device, sound_w) - AM_RANGE(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f) AM_DEVWRITE ("dmg", gameboy_sound_device, wave_w) - AM_RANGE(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f) AM_DEVWRITE ("nescpu:nesapu", nesapu_device, write) - AM_RANGE(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff) AM_RAM AM_SHARE("nesapu_ram") - AM_RANGE(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3) AM_DEVWRITE ("multipcma", multipcm_device, write) - AM_RANGE(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_w<0>) - AM_RANGE(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_w<0>) - AM_RANGE(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3) AM_DEVWRITE ("multipcmb", multipcm_device, write) - AM_RANGE(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_hi_w<1>) - AM_RANGE(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11) AM_DEVWRITE ("vgmplay", vgmplay_device, multipcm_bank_lo_w<1>) - AM_RANGE(vgmplay_device::A_POKEYA, vgmplay_device::A_POKEYA+0xf) AM_DEVWRITE ("pokeya", pokey_device, write) - AM_RANGE(vgmplay_device::A_POKEYB, vgmplay_device::A_POKEYB+0xf) AM_DEVWRITE ("pokeyb", pokey_device, write) - AM_RANGE(vgmplay_device::A_YMF271, vgmplay_device::A_YMF271+0xf) AM_DEVWRITE ("ymf271", ymf271_device, write) - AM_RANGE(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1) AM_DEVWRITE ("ymz280b", ymz280b_device, write) - AM_RANGE(vgmplay_device::A_YM2608, vgmplay_device::A_YM2608+0x3) AM_DEVWRITE ("ym2608", ym2608_device, write) - AM_RANGE(vgmplay_device::A_K054539A, vgmplay_device::A_K054539A+0x22f) AM_DEVWRITE ("k054539a", k054539_device, write) - AM_RANGE(vgmplay_device::A_K054539B, vgmplay_device::A_K054539B+0x22f) AM_DEVWRITE ("k054539b", k054539_device, write) - AM_RANGE(vgmplay_device::A_QSOUND, vgmplay_device::A_QSOUND+0x2) AM_DEVWRITE ("qsound", qsound_device, qsound_w) - AM_RANGE(vgmplay_device::A_K051649, vgmplay_device::A_K051649+0xf) AM_WRITE (scc_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::segapcm_map) - AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, segapcm_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::multipcma_map) - AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcm_rom_r<0>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::multipcmb_map) - AM_RANGE(0, 0x3fffff) AM_DEVREAD("vgmplay", vgmplay_device, multipcm_rom_r<1>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::k053260_map) - AM_RANGE(0, 0x1fffff) AM_DEVREAD("vgmplay", vgmplay_device, k053260_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::okim6295a_map) - AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295_rom_r<0>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::okim6295b_map) - AM_RANGE(0, 0x3ffff) AM_DEVREAD("vgmplay", vgmplay_device, okim6295_rom_r<1>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::k054539a_map) - AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, k054539_rom_r<0>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::k054539b_map) - AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, k054539_rom_r<1>) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::c352_map) - AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, c352_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::qsound_map) - AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, qsound_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::ymf271_map) - AM_RANGE(0, 0x7fffff) AM_DEVREAD("vgmplay", vgmplay_device, ymf271_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::ymz280b_map) - AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, ymz280b_rom_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::nescpu_map) - AM_RANGE(0, 0xffff) AM_RAM AM_SHARE("nesapu_ram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::h6280_map) - AM_RANGE(0, 0xffff) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(vgmplay_state::h6280_io_map) - AM_RANGE(0, 3) AM_NOP -ADDRESS_MAP_END + map(vgmplay_device::A_SN76496+1, vgmplay_device::A_SN76496+1).w(m_sn76496, FUNC(sn76496_device::write)); + map(vgmplay_device::A_K053260, vgmplay_device::A_K053260+0x2f).w(m_k053260, FUNC(k053260_device::write)); + map(vgmplay_device::A_C6280, vgmplay_device::A_C6280+0xf).w(m_c6280, FUNC(c6280_device::c6280_w)); + map(vgmplay_device::A_OKIM6295A, vgmplay_device::A_OKIM6295A).w("okim6295a", FUNC(okim6295_device::write)); + map(vgmplay_device::A_OKIM6295A+0x8, vgmplay_device::A_OKIM6295A+0xb).w(this, FUNC(vgmplay_state::okim6295_clock_w<0>)); + map(vgmplay_device::A_OKIM6295A+0xc, vgmplay_device::A_OKIM6295A+0xc).w(this, FUNC(vgmplay_state::okim6295_pin7_w<0>)); + map(vgmplay_device::A_OKIM6295A+0xe, vgmplay_device::A_OKIM6295A+0xe).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_enable_w<0>)); + map(vgmplay_device::A_OKIM6295A+0xf, vgmplay_device::A_OKIM6295A+0xf).w("vgmplay", FUNC(vgmplay_device::okim6295_bank_w<0>)); + map(vgmplay_device::A_OKIM6295A+0x10, vgmplay_device::A_OKIM6295A+0x13).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_bank_w<0>)); + map(vgmplay_device::A_OKIM6295B, vgmplay_device::A_OKIM6295B).w("okim6295b", FUNC(okim6295_device::write)); + map(vgmplay_device::A_OKIM6295B+0x8, vgmplay_device::A_OKIM6295B+0xb).w(this, FUNC(vgmplay_state::okim6295_clock_w<1>)); + map(vgmplay_device::A_OKIM6295B+0xc, vgmplay_device::A_OKIM6295B+0xc).w(this, FUNC(vgmplay_state::okim6295_pin7_w<1>)); + map(vgmplay_device::A_OKIM6295B+0xe, vgmplay_device::A_OKIM6295B+0xe).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_enable_w<1>)); + map(vgmplay_device::A_OKIM6295B+0xf, vgmplay_device::A_OKIM6295B+0xf).w("vgmplay", FUNC(vgmplay_device::okim6295_bank_w<1>)); + map(vgmplay_device::A_OKIM6295B+0x10, vgmplay_device::A_OKIM6295B+0x13).w("vgmplay", FUNC(vgmplay_device::okim6295_nmk112_bank_w<1>)); + map(vgmplay_device::A_SEGAPCM, vgmplay_device::A_SEGAPCM+0x7ff).w(m_segapcm, FUNC(segapcm_device::sega_pcm_w)); + map(vgmplay_device::A_GAMEBOY, vgmplay_device::A_GAMEBOY+0x16).w(m_dmg, FUNC(gameboy_sound_device::sound_w)); + map(vgmplay_device::A_GAMEBOY+0x20, vgmplay_device::A_GAMEBOY+0x2f).w(m_dmg, FUNC(gameboy_sound_device::wave_w)); + map(vgmplay_device::A_NESAPU, vgmplay_device::A_NESAPU+0x1f).w("nescpu:nesapu", FUNC(nesapu_device::write)); + map(vgmplay_device::A_NESRAM, vgmplay_device::A_NESRAM+0xffff).ram().share("nesapu_ram"); + map(vgmplay_device::A_MULTIPCMA, vgmplay_device::A_MULTIPCMA+3).w("multipcma", FUNC(multipcm_device::write)); + map(vgmplay_device::A_MULTIPCMA+4, vgmplay_device::A_MULTIPCMA+7).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_hi_w<0>)); + map(vgmplay_device::A_MULTIPCMA+8, vgmplay_device::A_MULTIPCMA+11).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_lo_w<0>)); + map(vgmplay_device::A_MULTIPCMB, vgmplay_device::A_MULTIPCMB+3).w("multipcmb", FUNC(multipcm_device::write)); + map(vgmplay_device::A_MULTIPCMB+4, vgmplay_device::A_MULTIPCMB+7).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_hi_w<1>)); + map(vgmplay_device::A_MULTIPCMB+8, vgmplay_device::A_MULTIPCMB+11).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_lo_w<1>)); + map(vgmplay_device::A_POKEYA, vgmplay_device::A_POKEYA+0xf).w("pokeya", FUNC(pokey_device::write)); + map(vgmplay_device::A_POKEYB, vgmplay_device::A_POKEYB+0xf).w("pokeyb", FUNC(pokey_device::write)); + map(vgmplay_device::A_YMF271, vgmplay_device::A_YMF271+0xf).w(m_ymf271, FUNC(ymf271_device::write)); + map(vgmplay_device::A_YMZ280B, vgmplay_device::A_YMZ280B+0x1).w(m_ymz280b, FUNC(ymz280b_device::write)); + map(vgmplay_device::A_YM2608, vgmplay_device::A_YM2608+0x3).w(m_ym2608, FUNC(ym2608_device::write)); + map(vgmplay_device::A_K054539A, vgmplay_device::A_K054539A+0x22f).w("k054539a", FUNC(k054539_device::write)); + map(vgmplay_device::A_K054539B, vgmplay_device::A_K054539B+0x22f).w("k054539b", FUNC(k054539_device::write)); + map(vgmplay_device::A_QSOUND, vgmplay_device::A_QSOUND+0x2).w(m_qsound, FUNC(qsound_device::qsound_w)); + map(vgmplay_device::A_K051649, vgmplay_device::A_K051649+0xf).w(this, FUNC(vgmplay_state::scc_w)); +} + +void vgmplay_state::segapcm_map(address_map &map) +{ + map(0, 0x1fffff).r("vgmplay", FUNC(vgmplay_device::segapcm_rom_r)); +} + +void vgmplay_state::multipcma_map(address_map &map) +{ + map(0, 0x3fffff).r("vgmplay", FUNC(vgmplay_device::multipcm_rom_r<0>)); +} + +void vgmplay_state::multipcmb_map(address_map &map) +{ + map(0, 0x3fffff).r("vgmplay", FUNC(vgmplay_device::multipcm_rom_r<1>)); +} + +void vgmplay_state::k053260_map(address_map &map) +{ + map(0, 0x1fffff).r("vgmplay", FUNC(vgmplay_device::k053260_rom_r)); +} + +void vgmplay_state::okim6295a_map(address_map &map) +{ + map(0, 0x3ffff).r("vgmplay", FUNC(vgmplay_device::okim6295_rom_r<0>)); +} + +void vgmplay_state::okim6295b_map(address_map &map) +{ + map(0, 0x3ffff).r("vgmplay", FUNC(vgmplay_device::okim6295_rom_r<1>)); +} + +void vgmplay_state::k054539a_map(address_map &map) +{ + map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::k054539_rom_r<0>)); +} + +void vgmplay_state::k054539b_map(address_map &map) +{ + map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::k054539_rom_r<1>)); +} + +void vgmplay_state::c352_map(address_map &map) +{ + map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::c352_rom_r)); +} + +void vgmplay_state::qsound_map(address_map &map) +{ + map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::qsound_rom_r)); +} + +void vgmplay_state::ymf271_map(address_map &map) +{ + map(0, 0x7fffff).r("vgmplay", FUNC(vgmplay_device::ymf271_rom_r)); +} + +void vgmplay_state::ymz280b_map(address_map &map) +{ + map(0, 0xffffff).r("vgmplay", FUNC(vgmplay_device::ymz280b_rom_r)); +} + +void vgmplay_state::nescpu_map(address_map &map) +{ + map(0, 0xffff).ram().share("nesapu_ram"); +} + +void vgmplay_state::h6280_map(address_map &map) +{ + map(0, 0xffff).noprw(); +} + +void vgmplay_state::h6280_io_map(address_map &map) +{ + map(0, 3).noprw(); +} MACHINE_CONFIG_START(vgmplay_state::vgmplay) MCFG_CPU_ADD("vgmplay", VGMPLAY, 44100) diff --git a/src/mame/drivers/vic10.cpp b/src/mame/drivers/vic10.cpp index a081cf28d52..c85b375d683 100644 --- a/src/mame/drivers/vic10.cpp +++ b/src/mame/drivers/vic10.cpp @@ -245,27 +245,30 @@ READ8_MEMBER( vic10_state::vic_colorram_r ) // ADDRESS_MAP( vic10_mem ) //------------------------------------------------- -ADDRESS_MAP_START(vic10_state::vic10_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void vic10_state::vic10_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(vic10_state::read), FUNC(vic10_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(vic10_state::vic_videoram_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) -ADDRESS_MAP_END +void vic10_state::vic_videoram_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(vic10_state::vic_videoram_r)); +} //------------------------------------------------- // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -ADDRESS_MAP_START(vic10_state::vic_colorram_map) - AM_RANGE(0x000, 0x3ff) AM_READ(vic_colorram_r) -ADDRESS_MAP_END +void vic10_state::vic_colorram_map(address_map &map) +{ + map(0x000, 0x3ff).r(this, FUNC(vic10_state::vic_colorram_r)); +} diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp index 6511ad43f5b..5bd39d91024 100644 --- a/src/mame/drivers/vic20.cpp +++ b/src/mame/drivers/vic20.cpp @@ -359,27 +359,30 @@ READ8_MEMBER( vic20_state::vic_videoram_r ) // ADDRESS_MAP( vic20_mem ) //------------------------------------------------- -ADDRESS_MAP_START(vic20_state::vic20_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void vic20_state::vic20_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(vic20_state::read), FUNC(vic20_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( vic_videoram_map ) //------------------------------------------------- -ADDRESS_MAP_START(vic20_state::vic_videoram_map) - AM_RANGE(0x0000, 0x3fff) AM_READ(vic_videoram_r) -ADDRESS_MAP_END +void vic20_state::vic_videoram_map(address_map &map) +{ + map(0x0000, 0x3fff).r(this, FUNC(vic20_state::vic_videoram_r)); +} //------------------------------------------------- // ADDRESS_MAP( vic_colorram_map ) //------------------------------------------------- -ADDRESS_MAP_START(vic20_state::vic_colorram_map) - AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("color_ram") -ADDRESS_MAP_END +void vic20_state::vic_colorram_map(address_map &map) +{ + map(0x000, 0x3ff).ram().share("color_ram"); +} diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp index 2c886d044b3..ae7b67b01f6 100644 --- a/src/mame/drivers/vicdual.cpp +++ b/src/mame/drivers/vicdual.cpp @@ -288,21 +288,23 @@ WRITE8_MEMBER(vicdual_state::depthch_io_w) } -ADDRESS_MAP_START(vicdual_state::depthch_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::depthch_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0x8400, 0x87ff).mirror(0x7000).ram(); + map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::depthch_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::depthch_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(depthch_io_r, depthch_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(vicdual_state::depthch_io_r), FUNC(vicdual_state::depthch_io_w)); +} static INPUT_PORTS_START( depthch ) @@ -370,23 +372,25 @@ WRITE8_MEMBER(vicdual_state::safari_io_w) } -ADDRESS_MAP_START(vicdual_state::safari_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_NOP /* unused */ - AM_RANGE(0x8000, 0x8fff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::safari_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).noprw(); /* unused */ + map(0x8000, 0x8fff).mirror(0x3000).ram(); + map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0xc400, 0xc7ff).mirror(0x3000).ram(); + map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::safari_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::safari_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(safari_io_r, safari_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(vicdual_state::safari_io_r), FUNC(vicdual_state::safari_io_w)); +} static INPUT_PORTS_START( safari ) @@ -454,21 +458,23 @@ WRITE8_MEMBER(vicdual_state::frogs_io_w) } -ADDRESS_MAP_START(vicdual_state::frogs_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::frogs_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0x8400, 0x87ff).mirror(0x7000).ram(); + map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::frogs_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::frogs_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(frogs_io_r, frogs_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(vicdual_state::frogs_io_r), FUNC(vicdual_state::frogs_io_w)); +} static INPUT_PORTS_START( frogs ) @@ -579,31 +585,34 @@ WRITE8_MEMBER(vicdual_state::headon_io_w) } -ADDRESS_MAP_START(vicdual_state::headon_map) - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */ - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::headon_map(address_map &map) +{ + map(0x0000, 0x1fff).mirror(0x6000).rom(); + map(0x8000, 0xbfff).noprw(); /* unused */ + map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0xc400, 0xc7ff).mirror(0x3000).ram(); + map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::headon_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::headon_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(headon_io_r, headon_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(vicdual_state::headon_io_r), FUNC(vicdual_state::headon_io_w)); +} -ADDRESS_MAP_START(vicdual_state::sspaceat_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::sspaceat_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(sspaceat_io_r, headon_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(vicdual_state::sspaceat_io_r), FUNC(vicdual_state::headon_io_w)); +} static INPUT_PORTS_START( headon ) @@ -848,28 +857,31 @@ WRITE8_MEMBER(vicdual_state::digger_io_w) } -ADDRESS_MAP_START(vicdual_state::headon2_map) - AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x6000) AM_ROM +void vicdual_state::headon2_map(address_map &map) +{ + map(0x0000, 0x1fff).mirror(0x6000).rom(); /* AM_RANGE(0x8000, 0x80ff) AM_MIRROR(0x3f00) */ /* schematics show this as battery backed RAM, but doesn't appear to be used */ - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END + map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0xc400, 0xc7ff).mirror(0x3000).ram(); + map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::headon2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0x00, 0x1f) AM_READWRITE(headon2_io_r, headon2_io_w) -ADDRESS_MAP_END +void vicdual_state::headon2_io_map(address_map &map) +{ + map.global_mask(0x1f); + map(0x00, 0x1f).rw(this, FUNC(vicdual_state::headon2_io_r), FUNC(vicdual_state::headon2_io_w)); +} -ADDRESS_MAP_START(vicdual_state::digger_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x1f) +void vicdual_state::digger_io_map(address_map &map) +{ + map.global_mask(0x1f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x1f) AM_READWRITE(headon2_io_r, digger_io_w) -ADDRESS_MAP_END + map(0x00, 0x1f).rw(this, FUNC(vicdual_state::headon2_io_r), FUNC(vicdual_state::digger_io_w)); +} static INPUT_PORTS_START( headon2 ) @@ -1158,184 +1170,198 @@ WRITE8_MEMBER(vicdual_state::headonn_io_w) } -ADDRESS_MAP_START(vicdual_state::vicdual_dualgame_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::vicdual_dualgame_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0x8400, 0x87ff).mirror(0x7000).ram(); + map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::carhntds_dualgame_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM // also has part of a rom mapped at 0x4000 - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::carhntds_dualgame_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); // also has part of a rom mapped at 0x4000 + map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0x8400, 0x87ff).mirror(0x7000).ram(); + map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::invho2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::invho2_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(invho2_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::invho2_io_w)); +} -ADDRESS_MAP_START(vicdual_state::invds_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::invds_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(invds_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::invds_io_w)); +} -ADDRESS_MAP_START(vicdual_state::carhntds_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::carhntds_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(carhntds_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::carhntds_io_w)); +} -ADDRESS_MAP_START(vicdual_state::sspacaho_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::sspacaho_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(sspacaho_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::sspacaho_io_w)); +} -ADDRESS_MAP_START(vicdual_state::tranqgun_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::tranqgun_io_map(address_map &map) +{ + map.global_mask(0x0f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x0c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x0c).portr("IN0"); + map(0x01, 0x01).mirror(0x0c).portr("IN1"); + map(0x02, 0x02).mirror(0x0c).portr("IN2"); + map(0x03, 0x03).mirror(0x0c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_WRITE(tranqgun_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).w(this, FUNC(vicdual_state::tranqgun_io_w)); +} -ADDRESS_MAP_START(vicdual_state::spacetrk_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::spacetrk_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(spacetrk_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::spacetrk_io_w)); +} -ADDRESS_MAP_START(vicdual_state::carnival_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::carnival_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(carnival_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::carnival_io_w)); +} -ADDRESS_MAP_START(vicdual_state::brdrline_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::brdrline_io_map(address_map &map) +{ + map.global_mask(0x0f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x0c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x0c).portr("IN0"); + map(0x01, 0x01).mirror(0x0c).portr("IN1"); + map(0x02, 0x02).mirror(0x0c).portr("IN2"); + map(0x03, 0x03).mirror(0x0c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_WRITE(brdrline_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).w(this, FUNC(vicdual_state::brdrline_io_w)); +} -ADDRESS_MAP_START(vicdual_state::pulsar_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::pulsar_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(pulsar_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::pulsar_io_w)); +} -ADDRESS_MAP_START(vicdual_state::heiankyo_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::heiankyo_io_map(address_map &map) +{ + map.global_mask(0x0f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x0c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x0c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x0c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x0c).portr("IN0"); + map(0x01, 0x01).mirror(0x0c).portr("IN1"); + map(0x02, 0x02).mirror(0x0c).portr("IN2"); + map(0x03, 0x03).mirror(0x0c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_WRITE(heiankyo_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).w(this, FUNC(vicdual_state::heiankyo_io_w)); +} -ADDRESS_MAP_START(vicdual_state::alphaho_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::alphaho_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(alphaho_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::alphaho_io_w)); +} -ADDRESS_MAP_START(vicdual_state::headonn_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::headonn_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(headonn_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::headonn_io_w)); +} /* several of the games' lives DIPs are spread across two input ports */ @@ -2247,26 +2273,28 @@ WRITE8_MEMBER(vicdual_state::samurai_io_w) /* dual game hardware */ -ADDRESS_MAP_START(vicdual_state::samurai_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM AM_WRITE(samurai_protection_w) - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::samurai_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom().w(this, FUNC(vicdual_state::samurai_protection_w)); + map(0x8000, 0x83ff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0x8400, 0x87ff).mirror(0x7000).ram(); + map(0x8800, 0x8fff).mirror(0x7000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::samurai_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7f) +void vicdual_state::samurai_io_map(address_map &map) +{ + map.global_mask(0x7f); - AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") + map(0x00, 0x00).mirror(0x7c).portr("IN0"); + map(0x01, 0x01).mirror(0x7c).portr("IN1"); + map(0x02, 0x02).mirror(0x7c).portr("IN2"); + map(0x03, 0x03).mirror(0x7c).portr("IN3"); /* no decoder, just logic gates, so in theory the game can write to multiple locations at once */ - AM_RANGE(0x00, 0x7f) AM_WRITE(samurai_io_w) -ADDRESS_MAP_END + map(0x00, 0x7f).w(this, FUNC(vicdual_state::samurai_io_w)); +} static INPUT_PORTS_START( samurai ) @@ -2377,22 +2405,24 @@ WRITE8_MEMBER(nsub_state::nsub_io_w) } -ADDRESS_MAP_START(nsub_state::nsub_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */ - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void nsub_state::nsub_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0xbfff).noprw(); /* unused */ + map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(nsub_state::videoram_w)).share("videoram"); + map(0xc400, 0xc7ff).mirror(0x3000).ram(); + map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(nsub_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(nsub_state::nsub_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void nsub_state::nsub_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(nsub_io_r, nsub_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(nsub_state::nsub_io_r), FUNC(nsub_state::nsub_io_w)); +} // coinage is handled by extra hardware on a daughterboard, put before the coin-in pin on the main logic board @@ -2564,22 +2594,24 @@ WRITE8_MEMBER(vicdual_state::invinco_io_w) } -ADDRESS_MAP_START(vicdual_state::invinco_map) - AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_NOP /* unused */ - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x3000) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xc400, 0xc7ff) AM_MIRROR(0x3000) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_MIRROR(0x3000) AM_RAM_WRITE(characterram_w) AM_SHARE("characterram") -ADDRESS_MAP_END +void vicdual_state::invinco_map(address_map &map) +{ + map(0x0000, 0x3fff).mirror(0x4000).rom(); + map(0x8000, 0xbfff).noprw(); /* unused */ + map(0xc000, 0xc3ff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::videoram_w)).share("videoram"); + map(0xc400, 0xc7ff).mirror(0x3000).ram(); + map(0xc800, 0xcfff).mirror(0x3000).ram().w(this, FUNC(vicdual_state::characterram_w)).share("characterram"); +} -ADDRESS_MAP_START(vicdual_state::invinco_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x0f) +void vicdual_state::invinco_io_map(address_map &map) +{ + map.global_mask(0x0f); /* no decoder, just logic gates, so in theory the game can read/write from multiple locations at once */ - AM_RANGE(0x00, 0x0f) AM_READWRITE(invinco_io_r, invinco_io_w) -ADDRESS_MAP_END + map(0x00, 0x0f).rw(this, FUNC(vicdual_state::invinco_io_r), FUNC(vicdual_state::invinco_io_w)); +} static INPUT_PORTS_START( invinco ) diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp index 82d858be2cf..71298463a79 100644 --- a/src/mame/drivers/victor9k.cpp +++ b/src/mame/drivers/victor9k.cpp @@ -191,24 +191,25 @@ public: // ADDRESS_MAP( victor9k_mem ) //------------------------------------------------- -ADDRESS_MAP_START(victor9k_state::victor9k_mem) - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0x20000, 0xdffff) AM_NOP - AM_RANGE(0xe0000, 0xe0001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(I8259A_TAG, pic8259_device, read, write) - AM_RANGE(0xe0020, 0xe0023) AM_MIRROR(0x7f00) AM_DEVREADWRITE(I8253_TAG, pit8253_device, read, write) - AM_RANGE(0xe0040, 0xe0043) AM_MIRROR(0x7f00) AM_DEVREADWRITE(UPD7201_TAG, upd7201_device, cd_ba_r, cd_ba_w) - AM_RANGE(0xe8000, 0xe8000) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, status_r, address_w) - AM_RANGE(0xe8001, 0xe8001) AM_MIRROR(0x7f00) AM_DEVREADWRITE(HD46505S_TAG, mc6845_device, register_r, register_w) - AM_RANGE(0xe8020, 0xe802f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write) - AM_RANGE(0xe8040, 0xe804f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_2_TAG, via6522_device, read, write) - AM_RANGE(0xe8060, 0xe8061) AM_MIRROR(0x7f00) AM_DEVREADWRITE(MC6852_TAG, mc6852_device, read, write) - AM_RANGE(0xe8080, 0xe808f) AM_MIRROR(0x7f00) AM_DEVREADWRITE(M6522_3_TAG, via6522_device, read, write) - AM_RANGE(0xe80a0, 0xe80af) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs5_r, cs5_w) - AM_RANGE(0xe80c0, 0xe80cf) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs6_r, cs6_w) - AM_RANGE(0xe80e0, 0xe80ef) AM_MIRROR(0x7f00) AM_DEVREADWRITE(FDC_TAG, victor_9000_fdc_device, cs7_r, cs7_w) - AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0x1000) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xf8000, 0xf9fff) AM_MIRROR(0x6000) AM_ROM AM_REGION(I8088_TAG, 0) -ADDRESS_MAP_END +void victor9k_state::victor9k_mem(address_map &map) +{ + map(0x00000, 0x1ffff).ram(); + map(0x20000, 0xdffff).noprw(); + map(0xe0000, 0xe0001).mirror(0x7f00).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xe0020, 0xe0023).mirror(0x7f00).rw(I8253_TAG, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xe0040, 0xe0043).mirror(0x7f00).rw(m_upd7201, FUNC(upd7201_device::cd_ba_r), FUNC(upd7201_device::cd_ba_w)); + map(0xe8000, 0xe8000).mirror(0x7f00).rw(m_crtc, FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map(0xe8001, 0xe8001).mirror(0x7f00).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0xe8020, 0xe802f).mirror(0x7f00).rw(m_via1, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe8040, 0xe804f).mirror(0x7f00).rw(m_via2, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe8060, 0xe8061).mirror(0x7f00).rw(m_ssda, FUNC(mc6852_device::read), FUNC(mc6852_device::write)); + map(0xe8080, 0xe808f).mirror(0x7f00).rw(m_via3, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xe80a0, 0xe80af).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs5_r), FUNC(victor_9000_fdc_device::cs5_w)); + map(0xe80c0, 0xe80cf).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs6_r), FUNC(victor_9000_fdc_device::cs6_w)); + map(0xe80e0, 0xe80ef).mirror(0x7f00).rw(m_fdc, FUNC(victor_9000_fdc_device::cs7_r), FUNC(victor_9000_fdc_device::cs7_w)); + map(0xf0000, 0xf0fff).mirror(0x1000).ram().share("video_ram"); + map(0xf8000, 0xf9fff).mirror(0x6000).rom().region(I8088_TAG, 0); +} diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp index d8fe9277f59..f27544c7c01 100644 --- a/src/mame/drivers/victory.cpp +++ b/src/mame/drivers/victory.cpp @@ -126,29 +126,31 @@ WRITE8_MEMBER(victory_state::lamp_control_w) * *************************************/ -ADDRESS_MAP_START(victory_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc0ff) AM_READ(video_control_r) - AM_RANGE(0xc100, 0xc1ff) AM_WRITE(video_control_w) - AM_RANGE(0xc200, 0xc3ff) AM_WRITE(paletteram_w) - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc800, 0xdfff) AM_RAM AM_SHARE("charram") - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf800, 0xf800) AM_MIRROR(0x07fc) AM_DEVREADWRITE("custom", victory_sound_device, response_r, command_w) - AM_RANGE(0xf801, 0xf801) AM_MIRROR(0x07fc) AM_DEVREAD("custom", victory_sound_device, status_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(victory_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x03) AM_READ_PORT("SW2") - AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READ_PORT("SW1") - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio1", z80pio_device, read_alt, write_alt) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio2", z80pio_device, read_alt, write_alt) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_WRITE(lamp_control_w) - AM_RANGE(0x14, 0xff) AM_NOP -ADDRESS_MAP_END +void victory_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc0ff).r(this, FUNC(victory_state::video_control_r)); + map(0xc100, 0xc1ff).w(this, FUNC(victory_state::video_control_w)); + map(0xc200, 0xc3ff).w(this, FUNC(victory_state::paletteram_w)); + map(0xc400, 0xc7ff).ram().share("videoram"); + map(0xc800, 0xdfff).ram().share("charram"); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xf7ff).ram().share("nvram"); + map(0xf800, 0xf800).mirror(0x07fc).rw("custom", FUNC(victory_sound_device::response_r), FUNC(victory_sound_device::command_w)); + map(0xf801, 0xf801).mirror(0x07fc).r("custom", FUNC(victory_sound_device::status_r)); +} + + +void victory_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x03).portr("SW2"); + map(0x04, 0x04).mirror(0x03).portr("SW1"); + map(0x08, 0x0b).rw("pio1", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0c, 0x0f).rw("pio2", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x10, 0x10).mirror(0x03).w(this, FUNC(victory_state::lamp_control_w)); + map(0x14, 0xff).noprw(); +} diff --git a/src/mame/drivers/vidbrain.cpp b/src/mame/drivers/vidbrain.cpp index ec946198d24..e4962f226a7 100644 --- a/src/mame/drivers/vidbrain.cpp +++ b/src/mame/drivers/vidbrain.cpp @@ -226,28 +226,30 @@ WRITE8_MEMBER( vidbrain_state::f3853_w ) // ADDRESS_MAP( vidbrain_mem ) //------------------------------------------------- -ADDRESS_MAP_START(vidbrain_state::vidbrain_mem) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("res1", 0) - AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x2300) AM_DEVREADWRITE(UV201_TAG, uv201_device, read, write) - AM_RANGE(0x0c00, 0x0fff) AM_MIRROR(0x2000) AM_RAM - AM_RANGE(0x1000, 0x17ff) AM_DEVREADWRITE(VIDEOBRAIN_EXPANSION_SLOT_TAG, videobrain_expansion_slot_device, cs1_r, cs1_w) - AM_RANGE(0x1800, 0x1fff) AM_DEVREADWRITE(VIDEOBRAIN_EXPANSION_SLOT_TAG, videobrain_expansion_slot_device, cs2_r, cs2_w) - AM_RANGE(0x2000, 0x27ff) AM_ROM AM_REGION("res2", 0) - AM_RANGE(0x3000, 0x3fff) AM_DEVREADWRITE(VIDEOBRAIN_EXPANSION_SLOT_TAG, videobrain_expansion_slot_device, unmap_r, unmap_w) -ADDRESS_MAP_END +void vidbrain_state::vidbrain_mem(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x07ff).rom().region("res1", 0); + map(0x0800, 0x08ff).mirror(0x2300).rw(m_uv, FUNC(uv201_device::read), FUNC(uv201_device::write)); + map(0x0c00, 0x0fff).mirror(0x2000).ram(); + map(0x1000, 0x17ff).rw(m_exp, FUNC(videobrain_expansion_slot_device::cs1_r), FUNC(videobrain_expansion_slot_device::cs1_w)); + map(0x1800, 0x1fff).rw(m_exp, FUNC(videobrain_expansion_slot_device::cs2_r), FUNC(videobrain_expansion_slot_device::cs2_w)); + map(0x2000, 0x27ff).rom().region("res2", 0); + map(0x3000, 0x3fff).rw(m_exp, FUNC(videobrain_expansion_slot_device::unmap_r), FUNC(videobrain_expansion_slot_device::unmap_w)); +} //------------------------------------------------- // ADDRESS_MAP( vidbrain_io ) //------------------------------------------------- -ADDRESS_MAP_START(vidbrain_state::vidbrain_io) - AM_RANGE(0x00, 0x00) AM_WRITE(keyboard_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(keyboard_r, sound_w) - AM_RANGE(0x0c, 0x0f) AM_WRITE(f3853_w) +void vidbrain_state::vidbrain_io(address_map &map) +{ + map(0x00, 0x00).w(this, FUNC(vidbrain_state::keyboard_w)); + map(0x01, 0x01).rw(this, FUNC(vidbrain_state::keyboard_r), FUNC(vidbrain_state::sound_w)); + map(0x0c, 0x0f).w(this, FUNC(vidbrain_state::f3853_w)); // AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(F3853_TAG, f3853_device, read, write) -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/videopin.cpp b/src/mame/drivers/videopin.cpp index 34e2d7a92b0..1fdcb2bfe37 100644 --- a/src/mame/drivers/videopin.cpp +++ b/src/mame/drivers/videopin.cpp @@ -218,20 +218,21 @@ WRITE8_MEMBER(videopin_state::note_dvsr_w) * *************************************/ -ADDRESS_MAP_START(videopin_state::main_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM - AM_RANGE(0x0200, 0x07ff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram") - AM_RANGE(0x0800, 0x0800) AM_READ(misc_r) AM_WRITE(note_dvsr_w) - AM_RANGE(0x0801, 0x0801) AM_WRITE(led_w) - AM_RANGE(0x0802, 0x0802) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x0804, 0x0804) AM_WRITE(ball_w) - AM_RANGE(0x0805, 0x0805) AM_WRITE(out1_w) - AM_RANGE(0x0806, 0x0806) AM_WRITE(out2_w) - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN0") - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW") - AM_RANGE(0x2000, 0x3fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM /* mirror for 6502 vectors */ -ADDRESS_MAP_END +void videopin_state::main_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); + map(0x0200, 0x07ff).ram().w(this, FUNC(videopin_state::video_ram_w)).share("video_ram"); + map(0x0800, 0x0800).r(this, FUNC(videopin_state::misc_r)).w(this, FUNC(videopin_state::note_dvsr_w)); + map(0x0801, 0x0801).w(this, FUNC(videopin_state::led_w)); + map(0x0802, 0x0802).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x0804, 0x0804).w(this, FUNC(videopin_state::ball_w)); + map(0x0805, 0x0805).w(this, FUNC(videopin_state::out1_w)); + map(0x0806, 0x0806).w(this, FUNC(videopin_state::out2_w)); + map(0x1000, 0x1000).portr("IN0"); + map(0x1800, 0x1800).portr("DSW"); + map(0x2000, 0x3fff).rom(); + map(0xe000, 0xffff).rom(); /* mirror for 6502 vectors */ +} /************************************* diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp index e3d6b6f6670..b09187a9c4c 100644 --- a/src/mame/drivers/videopkr.cpp +++ b/src/mame/drivers/videopkr.cpp @@ -974,43 +974,51 @@ TIMER_DEVICE_CALLBACK_MEMBER(videopkr_state::sound_t1_callback) * Memory Map Information * *************************/ -ADDRESS_MAP_START(videopkr_state::i8039_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(videopkr_state::i8039_io_port) - AM_RANGE(0x00, 0xff) AM_READWRITE(videopkr_io_r, videopkr_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(videopkr_state::i8751_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(videopkr_state::i8751_io_port) - AM_RANGE(0x0000, 0x0fff) AM_RAM // NVRAM? - AM_RANGE(0x8000, 0x8000) AM_NOP // ??? - AM_RANGE(0x9000, 0x9000) AM_WRITEONLY // ??? - AM_RANGE(0xa000, 0xbfff) AM_RAM // video RAM? - AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_WRITEONLY // ??? -ADDRESS_MAP_END - -ADDRESS_MAP_START(videopkr_state::i8039_sound_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(videopkr_state::i8039_sound_port) - AM_RANGE(0x00, 0xff) AM_READWRITE(sound_io_r, sound_io_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(videopkr_state::i8051_sound_mem) - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(videopkr_state::i8051_sound_port) - AM_RANGE(0x0000, 0x1ff) AM_RAM -ADDRESS_MAP_END +void videopkr_state::i8039_map(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void videopkr_state::i8039_io_port(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(videopkr_state::videopkr_io_r), FUNC(videopkr_state::videopkr_io_w)); +} + +void videopkr_state::i8751_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} + +void videopkr_state::i8751_io_port(address_map &map) +{ + map(0x0000, 0x0fff).ram(); // NVRAM? + map(0x8000, 0x8000).noprw(); // ??? + map(0x9000, 0x9000).writeonly(); // ??? + map(0xa000, 0xbfff).ram(); // video RAM? + map(0xc000, 0xc003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf000).writeonly(); // ??? +} + +void videopkr_state::i8039_sound_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void videopkr_state::i8039_sound_port(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(videopkr_state::sound_io_r), FUNC(videopkr_state::sound_io_w)); +} + + +void videopkr_state::i8051_sound_mem(address_map &map) +{ + map(0x0000, 0x0fff).rom(); +} + +void videopkr_state::i8051_sound_port(address_map &map) +{ + map(0x0000, 0x1ff).ram(); +} /************************ diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp index 2dea471ef4c..5b34a31efef 100644 --- a/src/mame/drivers/vigilant.cpp +++ b/src/mame/drivers/vigilant.cpp @@ -74,71 +74,78 @@ WRITE8_MEMBER(vigilant_state::kikcubic_coin_w) -ADDRESS_MAP_START(vigilant_state::vigilant_map) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* Fallthrough */ - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc020, 0xc0df) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vigilant_state::vigilant_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* SD */ - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(vigilant_out2_w) /* OUT2 */ - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_WRITE(bank_select_w) /* PBANK */ - AM_RANGE(0x80, 0x81) AM_WRITE(vigilant_horiz_scroll_w) /* HSPL, HSPH */ - AM_RANGE(0x82, 0x83) AM_WRITE(vigilant_rear_horiz_scroll_w) /* RHSPL, RHSPH */ - AM_RANGE(0x84, 0x84) AM_WRITE(vigilant_rear_color_w) /* RCOD */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(vigilant_state::kikcubic_map) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* Fallthrough */ - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vigilant_state::kikcubic_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(kikcubic_coin_w) /* also flip screen, and...? */ - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(bank_select_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) +void vigilant_state::vigilant_map(address_map &map) +{ + map(0x8000, 0xbfff).bankr("bank1"); /* Fallthrough */ + map(0x0000, 0x7fff).rom(); + map(0xc020, 0xc0df).ram().share("spriteram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(vigilant_state::paletteram_w)).share("paletteram"); + map(0xd000, 0xdfff).ram().share("videoram"); + map(0xe000, 0xefff).ram(); +} + +void vigilant_state::vigilant_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0").w("soundlatch", FUNC(generic_latch_8_device::write)); /* SD */ + map(0x01, 0x01).portr("IN1").w(this, FUNC(vigilant_state::vigilant_out2_w)); /* OUT2 */ + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2").w(this, FUNC(vigilant_state::bank_select_w)); /* PBANK */ + map(0x80, 0x81).w(this, FUNC(vigilant_state::vigilant_horiz_scroll_w)); /* HSPL, HSPH */ + map(0x82, 0x83).w(this, FUNC(vigilant_state::vigilant_rear_horiz_scroll_w)); /* RHSPL, RHSPH */ + map(0x84, 0x84).w(this, FUNC(vigilant_state::vigilant_rear_color_w)); /* RCOD */ +} + +void vigilant_state::kikcubic_map(address_map &map) +{ + map(0x8000, 0xbfff).bankr("bank1"); /* Fallthrough */ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc0ff).ram().share("spriteram"); + map(0xc800, 0xcaff).ram().w(this, FUNC(vigilant_state::paletteram_w)).share("paletteram"); + map(0xd000, 0xdfff).ram().share("videoram"); + map(0xe000, 0xffff).ram(); +} + +void vigilant_state::kikcubic_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("DSW1").w(this, FUNC(vigilant_state::kikcubic_coin_w)); /* also flip screen, and...? */ + map(0x01, 0x01).portr("DSW2"); + map(0x02, 0x02).portr("IN0"); + map(0x03, 0x03).portr("IN1"); + map(0x04, 0x04).portr("IN2").w(this, FUNC(vigilant_state::bank_select_w)); + map(0x06, 0x06).w("soundlatch", FUNC(generic_latch_8_device::write)); // AM_RANGE(0x07, 0x07) AM_WRITENOP /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(vigilant_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vigilant_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80, 0x81) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */ - AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */ - AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) /* IRQ clear */ - AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(vigilant_state::buccanrs_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* SDRE */ - AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */ - AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */ - AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) /* IRQ clear */ - AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */ -ADDRESS_MAP_END +} + +void vigilant_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xf000, 0xffff).ram(); +} + +void vigilant_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80, 0x81).r("soundlatch", FUNC(generic_latch_8_device::read)).w(m_audio, FUNC(m72_audio_device::vigilant_sample_addr_w)); /* STL / STH */ + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); /* COUNT UP */ + map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); /* IRQ clear */ + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); /* S ROM C */ +} + +void vigilant_state::buccanrs_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x02, 0x03).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x80, 0x80).r("soundlatch", FUNC(generic_latch_8_device::read)); /* SDRE */ + map(0x80, 0x81).w(m_audio, FUNC(m72_audio_device::vigilant_sample_addr_w)); /* STL / STH */ + map(0x82, 0x82).w(m_audio, FUNC(m72_audio_device::sample_w)); /* COUNT UP */ + map(0x83, 0x83).w("soundlatch", FUNC(generic_latch_8_device::acknowledge_w)); /* IRQ clear */ + map(0x84, 0x84).r(m_audio, FUNC(m72_audio_device::sample_r)); /* S ROM C */ +} static INPUT_PORTS_START( vigilant ) diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 7ce8a1013ba..7c301ef9158 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -1010,17 +1010,18 @@ WRITE16_MEMBER( spg2xx_game_state::spriteram_w ) } */ -ADDRESS_MAP_START(spg2xx_game_state::vii_mem) - AM_RANGE( 0x000000, 0x3fffff ) AM_ROMBANK("cart") - - AM_RANGE( 0x000000, 0x0027ff ) AM_RAM AM_SHARE("p_ram") - AM_RANGE( 0x002800, 0x0028ff ) AM_READWRITE(video_r, video_w) - AM_RANGE( 0x002900, 0x002aff ) AM_RAM AM_SHARE("p_rowscroll") - AM_RANGE( 0x002b00, 0x002bff ) AM_RAM AM_SHARE("p_palette") - AM_RANGE( 0x002c00, 0x002fff ) AM_RAM AM_SHARE("p_spriteram") - AM_RANGE( 0x003000, 0x0037ff ) AM_READWRITE(audio_r, audio_w) - AM_RANGE( 0x003d00, 0x003eff ) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void spg2xx_game_state::vii_mem(address_map &map) +{ + map(0x000000, 0x3fffff).bankr("cart"); + + map(0x000000, 0x0027ff).ram().share("p_ram"); + map(0x002800, 0x0028ff).rw(this, FUNC(spg2xx_game_state::video_r), FUNC(spg2xx_game_state::video_w)); + map(0x002900, 0x002aff).ram().share("p_rowscroll"); + map(0x002b00, 0x002bff).ram().share("p_palette"); + map(0x002c00, 0x002fff).ram().share("p_spriteram"); + map(0x003000, 0x0037ff).rw(this, FUNC(spg2xx_game_state::audio_r), FUNC(spg2xx_game_state::audio_w)); + map(0x003d00, 0x003eff).rw(this, FUNC(spg2xx_game_state::io_r), FUNC(spg2xx_game_state::io_w)); +} static INPUT_PORTS_START( vii ) PORT_START("P1") diff --git a/src/mame/drivers/vindictr.cpp b/src/mame/drivers/vindictr.cpp index 822774feafc..bf2bdc0c83a 100644 --- a/src/mame/drivers/vindictr.cpp +++ b/src/mame/drivers/vindictr.cpp @@ -71,28 +71,29 @@ READ16_MEMBER(vindictr_state::port1_r) * *************************************/ -ADDRESS_MAP_START(vindictr_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0x3fffff) - AM_RANGE(0x000000, 0x05ffff) AM_ROM - AM_RANGE(0x0e0000, 0x0e0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x1f0000, 0x1fffff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000") - AM_RANGE(0x260010, 0x26001f) AM_READ(port1_r) - AM_RANGE(0x260020, 0x26002f) AM_READ_PORT("260020") - AM_RANGE(0x260030, 0x260031) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) - AM_RANGE(0x2e0000, 0x2e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0x360010, 0x360011) AM_WRITENOP - AM_RANGE(0x360020, 0x360021) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) - AM_RANGE(0x360030, 0x360031) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) - AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE(vindictr_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("mob") - AM_RANGE(0x3f4000, 0x3f4f7f) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0x3f4f80, 0x3f4fff) AM_MIRROR(0x8000) AM_RAM AM_SHARE("mob:slip") - AM_RANGE(0x3f5000, 0x3f7fff) AM_MIRROR(0x8000) AM_RAM -ADDRESS_MAP_END +void vindictr_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x3fffff); + map(0x000000, 0x05ffff).rom(); + map(0x0e0000, 0x0e0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x1f0000, 0x1fffff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x260000, 0x26000f).portr("260000"); + map(0x260010, 0x26001f).r(this, FUNC(vindictr_state::port1_r)); + map(0x260020, 0x26002f).portr("260020"); + map(0x260031, 0x260031).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r)); + map(0x2e0000, 0x2e0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x360000, 0x360001).w(this, FUNC(vindictr_state::scanline_int_ack_w)); + map(0x360010, 0x360011).nopw(); + map(0x360020, 0x360021).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w)); + map(0x360031, 0x360031).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w)); + map(0x3e0000, 0x3e0fff).ram().w(this, FUNC(vindictr_state::vindictr_paletteram_w)).share("paletteram"); + map(0x3f0000, 0x3f1fff).mirror(0x8000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x3f2000, 0x3f3fff).mirror(0x8000).ram().share("mob"); + map(0x3f4000, 0x3f4f7f).mirror(0x8000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0x3f4f80, 0x3f4fff).mirror(0x8000).ram().share("mob:slip"); + map(0x3f5000, 0x3f7fff).mirror(0x8000).ram(); +} diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp index a97f3fe7c09..e2e1fde661e 100644 --- a/src/mame/drivers/vip.cpp +++ b/src/mame/drivers/vip.cpp @@ -372,20 +372,22 @@ WRITE8_MEMBER( vip_state::io_w ) // ADDRESS_MAP( vip_mem ) //------------------------------------------------- -ADDRESS_MAP_START(vip_state::vip_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write) -ADDRESS_MAP_END +void vip_state::vip_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(vip_state::read), FUNC(vip_state::write)); +} //------------------------------------------------- // ADDRESS_MAP( vip_io ) //------------------------------------------------- -ADDRESS_MAP_START(vip_state::vip_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x07) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void vip_state::vip_io(address_map &map) +{ + map.unmap_value_high(); + map(0x00, 0x07).rw(this, FUNC(vip_state::io_r), FUNC(vip_state::io_w)); +} diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp index e617ec261e4..5c6dc36d082 100644 --- a/src/mame/drivers/viper.cpp +++ b/src/mame/drivers/viper.cpp @@ -2073,35 +2073,36 @@ WRITE64_MEMBER(viper_state::unk_serial_w) /*****************************************************************************/ -ADDRESS_MAP_START(viper_state::viper_map) +void viper_state::viper_map(address_map &map) +{ // ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram") - AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU) - AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w) - AM_RANGE(0x84000000, 0x85ffffff) AM_READWRITE(voodoo3_lfb_r, voodoo3_lfb_w) - AM_RANGE(0xfe800000, 0xfe8000ff) AM_READWRITE(voodoo3_io_r, voodoo3_io_w) - AM_RANGE(0xfec00000, 0xfedfffff) AM_READWRITE(pci_config_addr_r, pci_config_addr_w) - AM_RANGE(0xfee00000, 0xfeefffff) AM_READWRITE(pci_config_data_r, pci_config_data_w) + map(0x00000000, 0x00ffffff).mirror(0x1000000).ram().share("workram"); + map(0x80000000, 0x800fffff).rw(this, FUNC(viper_state::epic_r), FUNC(viper_state::epic_w)); + map(0x82000000, 0x83ffffff).rw(this, FUNC(viper_state::voodoo3_r), FUNC(viper_state::voodoo3_w)); + map(0x84000000, 0x85ffffff).rw(this, FUNC(viper_state::voodoo3_lfb_r), FUNC(viper_state::voodoo3_lfb_w)); + map(0xfe800000, 0xfe8000ff).rw(this, FUNC(viper_state::voodoo3_io_r), FUNC(viper_state::voodoo3_io_w)); + map(0xfec00000, 0xfedfffff).rw(this, FUNC(viper_state::pci_config_addr_r), FUNC(viper_state::pci_config_addr_w)); + map(0xfee00000, 0xfeefffff).rw(this, FUNC(viper_state::pci_config_data_r), FUNC(viper_state::pci_config_data_w)); // 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf)) // 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf)) // 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd)) // AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device - AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r) - AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w) - AM_RANGE(0xffe08000, 0xffe08007) AM_NOP - AM_RANGE(0xffe10000, 0xffe10007) AM_READ8(input_r, 0xffffffffffffffffU) - AM_RANGE(0xffe28000, 0xffe28007) AM_WRITENOP // ppp2nd lamps - AM_RANGE(0xffe30000, 0xffe31fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffffffffffffU) - AM_RANGE(0xffe40000, 0xffe4000f) AM_NOP - AM_RANGE(0xffe50000, 0xffe50007) AM_WRITE(unk2_w) - AM_RANGE(0xffe60000, 0xffe60007) AM_NOP - AM_RANGE(0xffe70000, 0xffe7000f) AM_READWRITE(e70000_r, e70000_w) - AM_RANGE(0xffe80000, 0xffe80007) AM_WRITE(unk1a_w) - AM_RANGE(0xffe88000, 0xffe88007) AM_WRITE(unk1b_w) - AM_RANGE(0xffe98000, 0xffe98007) AM_NOP - AM_RANGE(0xffe9a000, 0xffe9bfff) AM_RAM // World Combat uses this - AM_RANGE(0xfff00000, 0xfff3ffff) AM_ROM AM_REGION("user1", 0) // Boot ROM -ADDRESS_MAP_END + map(0xffe00000, 0xffe00007).r(this, FUNC(viper_state::e00000_r)); + map(0xffe00008, 0xffe0000f).rw(this, FUNC(viper_state::e00008_r), FUNC(viper_state::e00008_w)); + map(0xffe08000, 0xffe08007).noprw(); + map(0xffe10000, 0xffe10007).r(this, FUNC(viper_state::input_r)); + map(0xffe28000, 0xffe28007).nopw(); // ppp2nd lamps + map(0xffe30000, 0xffe31fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); + map(0xffe40000, 0xffe4000f).noprw(); + map(0xffe50000, 0xffe50007).w(this, FUNC(viper_state::unk2_w)); + map(0xffe60000, 0xffe60007).noprw(); + map(0xffe70000, 0xffe7000f).rw(this, FUNC(viper_state::e70000_r), FUNC(viper_state::e70000_w)); + map(0xffe80000, 0xffe80007).w(this, FUNC(viper_state::unk1a_w)); + map(0xffe88000, 0xffe88007).w(this, FUNC(viper_state::unk1b_w)); + map(0xffe98000, 0xffe98007).noprw(); + map(0xffe9a000, 0xffe9bfff).ram(); // World Combat uses this + map(0xfff00000, 0xfff3ffff).rom().region("user1", 0); // Boot ROM +} /*****************************************************************************/ diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp index 3ecbc006231..25e2ecf486d 100644 --- a/src/mame/drivers/vis.cpp +++ b/src/mame/drivers/vis.cpp @@ -830,32 +830,34 @@ WRITE8_MEMBER(vis_state::sysctl_w) m_sysctl = data; } -ADDRESS_MAP_START(vis_state::at16_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x09ffff) AM_RAM - AM_RANGE(0x0d8000, 0x0fffff) AM_ROM AM_REGION("bios", 0xd8000) - AM_RANGE(0x100000, 0x15ffff) AM_RAM - AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("bios", 0) - AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("bios", 0xf0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vis_state::at16_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("mb:dma8237_1", am9517a_device, read, write, 0xffff) - AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("mb:pic8259_master", pic8259_device, read, write, 0xffff) - AM_RANGE(0x0026, 0x0027) AM_READWRITE8(unk_r, unk_w, 0xffff) - AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("mb:pit8254", pit8254_device, read, write, 0xffff) - AM_RANGE(0x0060, 0x0065) AM_DEVREADWRITE8("kbdc", kbdc8042_device, data_r, data_w, 0xffff) - AM_RANGE(0x006a, 0x006b) AM_READ8(unk2_r, 0x00ff) - AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE8("mb", at_mb_device, page8_r, page8_w, 0xffff) - AM_RANGE(0x0092, 0x0093) AM_READWRITE8(sysctl_r, sysctl_w, 0x00ff) - AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("mb:pic8259_slave", pic8259_device, read, write, 0xffff) - AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE8("mb:dma8237_2", am9517a_device, read, write, 0x00ff) - AM_RANGE(0x00e0, 0x00e1) AM_NOP - AM_RANGE(0x023c, 0x023f) AM_READWRITE8(unk1_r, unk1_w, 0xffff) - AM_RANGE(0x0268, 0x026f) AM_READWRITE(pad_r, pad_w) - AM_RANGE(0x031a, 0x031b) AM_READ8(unk3_r, 0x00ff) -ADDRESS_MAP_END +void vis_state::at16_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x09ffff).ram(); + map(0x0d8000, 0x0fffff).rom().region("bios", 0xd8000); + map(0x100000, 0x15ffff).ram(); + map(0x300000, 0x3fffff).rom().region("bios", 0); + map(0xff0000, 0xffffff).rom().region("bios", 0xf0000); +} + +void vis_state::at16_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); + map(0x0020, 0x003f).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0026, 0x0027).rw(this, FUNC(vis_state::unk_r), FUNC(vis_state::unk_w)); + map(0x0040, 0x005f).rw("mb:pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write)); + map(0x0060, 0x0065).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w)); + map(0x006a, 0x006a).r(this, FUNC(vis_state::unk2_r)); + map(0x0080, 0x009f).rw("mb", FUNC(at_mb_device::page8_r), FUNC(at_mb_device::page8_w)); + map(0x0092, 0x0092).rw(this, FUNC(vis_state::sysctl_r), FUNC(vis_state::sysctl_w)); + map(0x00a0, 0x00bf).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x00c0, 0x00df).rw("mb:dma8237_2", FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff); + map(0x00e0, 0x00e1).noprw(); + map(0x023c, 0x023f).rw(this, FUNC(vis_state::unk1_r), FUNC(vis_state::unk1_w)); + map(0x0268, 0x026f).rw(this, FUNC(vis_state::pad_r), FUNC(vis_state::pad_w)); + map(0x031a, 0x031a).r(this, FUNC(vis_state::unk3_r)); +} static SLOT_INTERFACE_START(vis_cards) SLOT_INTERFACE("visaudio", VIS_AUDIO) diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp index 01b1e74ba02..8e8ee570d74 100644 --- a/src/mame/drivers/vixen.cpp +++ b/src/mame/drivers/vixen.cpp @@ -260,40 +260,43 @@ READ8_MEMBER( vixen_state::port3_r ) //------------------------------------------------- // when M1 is inactive: read and write of data -ADDRESS_MAP_START(vixen_state::vixen_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_READ_BANK("bank3") AM_WRITE_BANK("bank4") AM_SHARE("video_ram") -ADDRESS_MAP_END +void vixen_state::vixen_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).ram(); + map(0xf000, 0xffff).bankr("bank3").bankw("bank4").share("video_ram"); +} // when M1 is active: read opcodes -ADDRESS_MAP_START(vixen_state::bios_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xefff) AM_READ(opram_r) - AM_RANGE(0xf000, 0xffff) AM_READ(oprom_r) -ADDRESS_MAP_END +void vixen_state::bios_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xefff).r(this, FUNC(vixen_state::opram_r)); + map(0xf000, 0xffff).r(this, FUNC(vixen_state::oprom_r)); +} //------------------------------------------------- // ADDRESS_MAP( vixen_io ) //------------------------------------------------- -ADDRESS_MAP_START(vixen_state::vixen_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE(FDC1797_TAG, fd1797_device, read, write) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x03) AM_READWRITE(status_r, cmd_w) - AM_RANGE(0x08, 0x08) AM_MIRROR(0x01) AM_DEVREADWRITE(P8155H_TAG, i8155_device, read, write) - AM_RANGE(0x0c, 0x0d) AM_DEVWRITE(P8155H_TAG, i8155_device, ale_w) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x07) AM_DEVREAD(IEEE488_TAG, ieee488_device, dio_r) - AM_RANGE(0x18, 0x18) AM_MIRROR(0x07) AM_READ(ieee488_r) - AM_RANGE(0x20, 0x21) AM_MIRROR(0x04) AM_DEVWRITE(P8155H_IO_TAG, i8155_device, ale_w) - AM_RANGE(0x28, 0x28) AM_MIRROR(0x05) AM_DEVREADWRITE(P8155H_IO_TAG, i8155_device, read, write) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x06) AM_DEVREADWRITE(P8251A_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREADWRITE(P8251A_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x38, 0x38) AM_MIRROR(0x07) AM_READ(port3_r) +void vixen_state::vixen_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x03).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)); + map(0x04, 0x04).mirror(0x03).rw(this, FUNC(vixen_state::status_r), FUNC(vixen_state::cmd_w)); + map(0x08, 0x08).mirror(0x01).rw(P8155H_TAG, FUNC(i8155_device::read), FUNC(i8155_device::write)); + map(0x0c, 0x0d).w(P8155H_TAG, FUNC(i8155_device::ale_w)); + map(0x10, 0x10).mirror(0x07).r(m_ieee488, FUNC(ieee488_device::dio_r)); + map(0x18, 0x18).mirror(0x07).r(this, FUNC(vixen_state::ieee488_r)); + map(0x20, 0x21).mirror(0x04).w(m_io_i8155, FUNC(i8155_device::ale_w)); + map(0x28, 0x28).mirror(0x05).rw(m_io_i8155, FUNC(i8155_device::read), FUNC(i8155_device::write)); + map(0x30, 0x30).mirror(0x06).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x31, 0x31).mirror(0x06).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x38, 0x38).mirror(0x07).r(this, FUNC(vixen_state::port3_r)); // AM_RANGE(0xf0, 0xff) Hard Disk? -ADDRESS_MAP_END +} diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp index 6e57f728e90..ee95c27928f 100644 --- a/src/mame/drivers/vk100.cpp +++ b/src/mame/drivers/vk100.cpp @@ -687,12 +687,13 @@ READ8_MEMBER(vk100_state::vk100_keyboard_column_r) return code; } -ADDRESS_MAP_START(vk100_state::vk100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x6fff ) AM_ROM - AM_RANGE( 0x7000, 0x700f ) AM_MIRROR(0x0ff0) AM_READ(vk100_keyboard_column_r) - AM_RANGE( 0x8000, 0xbfff ) AM_RAM -ADDRESS_MAP_END +void vk100_state::vk100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x700f).mirror(0x0ff0).r(this, FUNC(vk100_state::vk100_keyboard_column_r)); + map(0x8000, 0xbfff).ram(); +} /* * 8085 IO address map (x = ignored; * = selects address within this range; ? = not sure; ** = subparts check this bit) @@ -735,37 +736,38 @@ ADDRESS_MAP_END x 1 1 1 1 0 x x W unused x 1 1 1 1 1 x x W unused */ -ADDRESS_MAP_START(vk100_state::vk100_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) // guess, probably correct - AM_RANGE(0x00, 0x00) AM_MIRROR(0xBE) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x01, 0x01) AM_MIRROR(0xBE) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) +void vk100_state::vk100_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // guess, probably correct + map(0x00, 0x00).mirror(0xBE).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x01, 0x01).mirror(0xBE).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // Comments are from page 118 (5-14) of http://web.archive.org/web/20091015205827/http://www.computer.museum.uq.edu.au/pdf/EK-VK100-TM-001%20VK100%20Technical%20Manual.pdf - AM_RANGE (0x40, 0x41) AM_MIRROR(0x98) AM_WRITE(vgLD_X) //LD X LO + HI 12 bits - AM_RANGE (0x42, 0x43) AM_MIRROR(0x98) AM_WRITE(vgLD_Y) //LD Y LO + HI 12 bits - AM_RANGE (0x44, 0x44) AM_MIRROR(0x98) AM_WRITE(vgERR) //LD ERR ('error' in bresenham algorithm) - AM_RANGE (0x45, 0x45) AM_MIRROR(0x98) AM_WRITE(vgSOPS) //LD SOPS (screen options (plus uart dest)) - AM_RANGE (0x46, 0x46) AM_MIRROR(0x98) AM_WRITE(vgPAT) //LD PAT (pattern register) - AM_RANGE (0x47, 0x47) AM_MIRROR(0x98) AM_WRITE(vgPMUL) //LD PMUL (pattern multiplier) - AM_RANGE (0x60, 0x63) AM_MIRROR(0x80) AM_WRITE(vgREG) //LD DU, DVM, DIR, WOPS (register file) - AM_RANGE (0x64, 0x67) AM_MIRROR(0x80) AM_WRITE(vgEX) //EX MOV, DOT, VEC, ER - AM_RANGE (0x68, 0x68) AM_MIRROR(0x83) AM_WRITE(KBDW) //KBDW (probably AM_MIRROR(0x03)) - AM_RANGE (0x6C, 0x6C) AM_MIRROR(0x83) AM_WRITE(BAUD) //LD BAUD (baud rate clock divider setting for i8251 tx and rx clocks) (probably AM_MIRROR(0x03)) - AM_RANGE (0x70, 0x70) AM_MIRROR(0x82) AM_DEVWRITE("i8251", i8251_device, data_w) //LD COMD (i8251 data reg) - AM_RANGE (0x71, 0x71) AM_MIRROR(0x82) AM_DEVWRITE("i8251", i8251_device, control_w) //LD COM (i8251 control reg) + map(0x40, 0x41).mirror(0x98).w(this, FUNC(vk100_state::vgLD_X)); //LD X LO + HI 12 bits + map(0x42, 0x43).mirror(0x98).w(this, FUNC(vk100_state::vgLD_Y)); //LD Y LO + HI 12 bits + map(0x44, 0x44).mirror(0x98).w(this, FUNC(vk100_state::vgERR)); //LD ERR ('error' in bresenham algorithm) + map(0x45, 0x45).mirror(0x98).w(this, FUNC(vk100_state::vgSOPS)); //LD SOPS (screen options (plus uart dest)) + map(0x46, 0x46).mirror(0x98).w(this, FUNC(vk100_state::vgPAT)); //LD PAT (pattern register) + map(0x47, 0x47).mirror(0x98).w(this, FUNC(vk100_state::vgPMUL)); //LD PMUL (pattern multiplier) + map(0x60, 0x63).mirror(0x80).w(this, FUNC(vk100_state::vgREG)); //LD DU, DVM, DIR, WOPS (register file) + map(0x64, 0x67).mirror(0x80).w(this, FUNC(vk100_state::vgEX)); //EX MOV, DOT, VEC, ER + map(0x68, 0x68).mirror(0x83).w(this, FUNC(vk100_state::KBDW)); //KBDW (probably AM_MIRROR(0x03)) + map(0x6C, 0x6C).mirror(0x83).w(this, FUNC(vk100_state::BAUD)); //LD BAUD (baud rate clock divider setting for i8251 tx and rx clocks) (probably AM_MIRROR(0x03)) + map(0x70, 0x70).mirror(0x82).w(m_uart, FUNC(i8251_device::data_w)); //LD COMD (i8251 data reg) + map(0x71, 0x71).mirror(0x82).w(m_uart, FUNC(i8251_device::control_w)); //LD COM (i8251 control reg) //AM_RANGE (0x74, 0x74) AM_MIRROR(0x83) AM_WRITE(unknown_74) //AM_RANGE (0x78, 0x78) AM_MIRROR(0x83) AM_WRITE(kbdw) //KBDW ?(mirror?) //AM_RANGE (0x7C, 0x7C) AM_MIRROR(0x83) AM_WRITE(unknown_7C) - AM_RANGE (0x40, 0x47) AM_MIRROR(0x80) AM_READ(SYSTAT_A) // SYSTAT A (state machine done and last 4 bits of vram, as well as dipswitches) - AM_RANGE (0x48, 0x48) AM_MIRROR(0x87/*0x80*/) AM_READ(SYSTAT_B) // SYSTAT B (uart stuff) - AM_RANGE (0x50, 0x50) AM_MIRROR(0x86) AM_DEVREAD("i8251", i8251_device, data_r) // UART O - AM_RANGE (0x51, 0x51) AM_MIRROR(0x86) AM_DEVREAD("i8251", i8251_device, status_r) // UAR + map(0x40, 0x47).mirror(0x80).r(this, FUNC(vk100_state::SYSTAT_A)); // SYSTAT A (state machine done and last 4 bits of vram, as well as dipswitches) + map(0x48, 0x48).mirror(0x87/*0x80*/).r(this, FUNC(vk100_state::SYSTAT_B)); // SYSTAT B (uart stuff) + map(0x50, 0x50).mirror(0x86).r(m_uart, FUNC(i8251_device::data_r)); // UART O + map(0x51, 0x51).mirror(0x86).r(m_uart, FUNC(i8251_device::status_r)); // UAR //AM_RANGE (0x58, 0x58) AM_MIRROR(0x87) AM_READ(unknown_58) //AM_RANGE (0x60, 0x60) AM_MIRROR(0x87) AM_READ(unknown_60) //AM_RANGE (0x68, 0x68) AM_MIRROR(0x87) AM_READ(unknown_68) // NOT USED //AM_RANGE (0x70, 0x70) AM_MIRROR(0x87) AM_READ(unknown_70) //AM_RANGE (0x78, 0x7f) AM_MIRROR(0x87) AM_READ(unknown_78) -ADDRESS_MAP_END +} /* Input ports */ static INPUT_PORTS_START( vk100 ) diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp index d8d7fa170c6..a2dcec825aa 100644 --- a/src/mame/drivers/vlc.cpp +++ b/src/mame/drivers/vlc.cpp @@ -512,25 +512,26 @@ U40 MC68681 Pin27 OP4 JCM Bill Acceptor (J4-6, J4-7 Control) 00E000x0 68681 CS UART U18 RS1..RS4 REGISTER (A4..A7 ON RS1..RS4) Data bus on D15..D8 */ /***************************************************************************/ -ADDRESS_MAP_START(nevada_state::nevada_map) - AM_RANGE(0x00000000, 0x0000ffff) AM_RAM AM_SHARE("ram62256") - AM_RANGE(0x00010000, 0x00021fff) AM_RAM AM_SHARE("backup") - AM_RANGE(0x00900000, 0x00900001) AM_DEVWRITE8("crtc",mc6845_device, address_w,0x00ff ) - AM_RANGE(0x00908000, 0x00908001) AM_DEVWRITE8("crtc",mc6845_device,register_w,0x00ff ) - AM_RANGE(0x00a00000, 0x00a00001) AM_READWRITE(io_board_r,io_board_w) - AM_RANGE(0x00a08000, 0x00a08001) AM_WRITE(io_board_x) - AM_RANGE(0x00a10000, 0x00a10001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x00a20000, 0x00a20001) AM_DEVWRITE8("aysnd", ay8910_device, address_w, 0x00ff) - AM_RANGE(0x00a28000, 0x00a28001) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff) - AM_RANGE(0x00a30000, 0x00A300ff) AM_DEVREADWRITE8("rtc",msm6242_device, read, write, 0x00ff) - AM_RANGE(0x00a40000, 0x00A40001) AM_READWRITE( nevada_sec_r, nevada_sec_w) - AM_RANGE(0x00b00000, 0x00b03fff) AM_RAM_WRITE(vram_w) AM_SHARE("vram") - AM_RANGE(0x00b10000, 0x00b100ff) AM_DEVREADWRITE8( "duart40_68681", mc68681_device, read, write, 0x00ff ) // Lower byte - AM_RANGE(0x00b20000, 0x00b200ff) AM_DEVREADWRITE8( "duart39_68681", mc68681_device, read, write, 0x00ff ) // Lower byte - AM_RANGE(0x00e00000, 0x00e000ff) AM_DEVREADWRITE8( "duart18_68681", mc68681_device, read, write, 0xff00 ) // Upper byte - AM_RANGE(0x00fa0000, 0x00fbffff) AM_RAM // not used - AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM // ROM ext + ROM boot -ADDRESS_MAP_END +void nevada_state::nevada_map(address_map &map) +{ + map(0x00000000, 0x0000ffff).ram().share("ram62256"); + map(0x00010000, 0x00021fff).ram().share("backup"); + map(0x00900001, 0x00900001).w("crtc", FUNC(mc6845_device::address_w)); + map(0x00908001, 0x00908001).w("crtc", FUNC(mc6845_device::register_w)); + map(0x00a00000, 0x00a00001).rw(this, FUNC(nevada_state::io_board_r), FUNC(nevada_state::io_board_w)); + map(0x00a08000, 0x00a08001).w(this, FUNC(nevada_state::io_board_x)); + map(0x00a10000, 0x00a10001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x00a20001, 0x00a20001).w("aysnd", FUNC(ay8910_device::address_w)); + map(0x00a28001, 0x00a28001).w("aysnd", FUNC(ay8910_device::data_w)); + map(0x00a30000, 0x00A300ff).rw("rtc", FUNC(msm6242_device::read), FUNC(msm6242_device::write)).umask16(0x00ff); + map(0x00a40000, 0x00A40001).rw(this, FUNC(nevada_state::nevada_sec_r), FUNC(nevada_state::nevada_sec_w)); + map(0x00b00000, 0x00b03fff).ram().w(this, FUNC(nevada_state::vram_w)).share("vram"); + map(0x00b10000, 0x00b100ff).rw(m_duart40_68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); // Lower byte + map(0x00b20000, 0x00b200ff).rw(m_duart39_68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); // Lower byte + map(0x00e00000, 0x00e000ff).rw(m_duart18_68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0xff00); // Upper byte + map(0x00fa0000, 0x00fbffff).ram(); // not used + map(0x00fc0000, 0x00ffffff).rom(); // ROM ext + ROM boot +} /***************************************************************************/ diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp index bc612b40c61..77b0013642f 100644 --- a/src/mame/drivers/volfied.cpp +++ b/src/mame/drivers/volfied.cpp @@ -66,30 +66,32 @@ Stephh's notes (based on the game M68000 code and some tests) : MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(volfied_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM /* program */ - AM_RANGE(0x080000, 0x0fffff) AM_ROM /* tiles */ - AM_RANGE(0x100000, 0x103fff) AM_RAM /* main */ - AM_RANGE(0x200000, 0x203fff) AM_DEVREADWRITE("pc090oj", pc090oj_device, word_r, word_w) - AM_RANGE(0x400000, 0x47ffff) AM_READWRITE(video_ram_r, video_ram_w) - AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x600001) AM_WRITE(video_mask_w) - AM_RANGE(0x700000, 0x700001) AM_WRITE(sprite_ctrl_w) - AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(video_ctrl_r, video_ctrl_w) - AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0xe00002, 0xe00003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0xf00000, 0xf007ff) AM_DEVREADWRITE8("cchip", taito_cchip_device, mem68_r, mem68_w, 0x00ff) - AM_RANGE(0xf00800, 0xf00fff) AM_DEVREADWRITE8("cchip", taito_cchip_device, asic_r, asic68_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(volfied_state::z80_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0x8801, 0x8801) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_WRITENOP /* ? */ -ADDRESS_MAP_END +void volfied_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); /* program */ + map(0x080000, 0x0fffff).rom(); /* tiles */ + map(0x100000, 0x103fff).ram(); /* main */ + map(0x200000, 0x203fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); + map(0x400000, 0x47ffff).rw(this, FUNC(volfied_state::video_ram_r), FUNC(volfied_state::video_ram_w)); + map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x600000, 0x600001).w(this, FUNC(volfied_state::video_mask_w)); + map(0x700000, 0x700001).w(this, FUNC(volfied_state::sprite_ctrl_w)); + map(0xd00000, 0xd00001).rw(this, FUNC(volfied_state::video_ctrl_r), FUNC(volfied_state::video_ctrl_w)); + map(0xe00001, 0xe00001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0xe00003, 0xe00003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0xf00000, 0xf007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff); + map(0xf00800, 0xf00fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff); +} + +void volfied_state::z80_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0x8801, 0x8801).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x9800, 0x9800).nopw(); /* ? */ +} /*********************************************************** diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp index ee2bb5fb289..afab1535aa0 100644 --- a/src/mame/drivers/votrpss.cpp +++ b/src/mame/drivers/votrpss.cpp @@ -119,25 +119,27 @@ private: Address Maps ******************************************************************************/ -ADDRESS_MAP_START(votrpss_state::votrpss_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM /* main roms (in potted module) */ - AM_RANGE(0x4000, 0x7fff) AM_NOP /* open bus/space for expansion rom (reads as 0xFF) */ - AM_RANGE(0x8000, 0x8fff) AM_RAM /* onboard memory (2x 6116) */ - AM_RANGE(0x9000, 0xbfff) AM_NOP /* open bus (space for memory expansion, checked by main roms, will be used if found)*/ - AM_RANGE(0xc000, 0xdfff) AM_ROM /* 'personality rom', containing self-test code and optional user code */ - AM_RANGE(0xe000, 0xffff) AM_NOP /* open bus (space for more personality rom, not normally used) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(votrpss_state::votrpss_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x3c) AM_DEVREADWRITE("ppi", i8255_device, read, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x3e) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) - AM_RANGE(0x41, 0x41) AM_MIRROR(0x3e) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x3c) AM_DEVREADWRITE("pit", pit8253_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3e) AM_DEVREADWRITE("ay", ay8910_device, data_r, address_w) - AM_RANGE(0xc1, 0xc1) AM_MIRROR(0x3e) AM_DEVREADWRITE("ay", ay8910_device, data_r, data_w) -ADDRESS_MAP_END +void votrpss_state::votrpss_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom(); /* main roms (in potted module) */ + map(0x4000, 0x7fff).noprw(); /* open bus/space for expansion rom (reads as 0xFF) */ + map(0x8000, 0x8fff).ram(); /* onboard memory (2x 6116) */ + map(0x9000, 0xbfff).noprw(); /* open bus (space for memory expansion, checked by main roms, will be used if found)*/ + map(0xc000, 0xdfff).rom(); /* 'personality rom', containing self-test code and optional user code */ + map(0xe000, 0xffff).noprw(); /* open bus (space for more personality rom, not normally used) */ +} + +void votrpss_state::votrpss_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).mirror(0x3c).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x40, 0x40).mirror(0x3e).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x41, 0x41).mirror(0x3e).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x80, 0x83).mirror(0x3c).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0xc0, 0xc0).mirror(0x3e).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0xc1, 0xc1).mirror(0x3e).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); +} /****************************************************************************** diff --git a/src/mame/drivers/votrtnt.cpp b/src/mame/drivers/votrtnt.cpp index d83a2e7a385..fc091edc8e4 100644 --- a/src/mame/drivers/votrtnt.cpp +++ b/src/mame/drivers/votrtnt.cpp @@ -80,13 +80,14 @@ private: x 1 1 x * * * * * * * * * * * * R ROM (2332 4kx8 Mask ROM, inside potted brick) */ -ADDRESS_MAP_START(votrtnt_state::_6802_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x9c00) AM_RAM /* RAM, 2114*2 (0x400 bytes) mirrored 4x */ - AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x9ffe) AM_DEVREADWRITE("acia", acia6850_device, read, write) - AM_RANGE(0x4000, 0x4000) AM_MIRROR(0x9fff) AM_DEVWRITE("votrax", votrax_sc01_device, write) - AM_RANGE(0x6000, 0x6fff) AM_MIRROR(0x9000) AM_ROM /* ROM in potted block */ -ADDRESS_MAP_END +void votrtnt_state::_6802_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x03ff).mirror(0x9c00).ram(); /* RAM, 2114*2 (0x400 bytes) mirrored 4x */ + map(0x2000, 0x2001).mirror(0x9ffe).rw("acia", FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x4000, 0x4000).mirror(0x9fff).w(m_votrax, FUNC(votrax_sc01_device::write)); + map(0x6000, 0x6fff).mirror(0x9000).rom(); /* ROM in potted block */ +} /****************************************************************************** diff --git a/src/mame/drivers/voyager.cpp b/src/mame/drivers/voyager.cpp index ee4fbb30282..4b2ba7c8e5d 100644 --- a/src/mame/drivers/voyager.cpp +++ b/src/mame/drivers/voyager.cpp @@ -240,23 +240,24 @@ WRITE32_MEMBER(voyager_state::bios_ram_w) } } -ADDRESS_MAP_START(voyager_state::voyager_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", trident_vga_device, mem_r, mem_w, 0xffffffff) // VGA VRAM - AM_RANGE(0x000c0000, 0x000c7fff) AM_RAM AM_REGION("video_bios", 0) - AM_RANGE(0x000c8000, 0x000cffff) AM_NOP +void voyager_state::voyager_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(trident_vga_device::mem_r), FUNC(trident_vga_device::mem_w)); // VGA VRAM + map(0x000c0000, 0x000c7fff).ram().region("video_bios", 0); + map(0x000c8000, 0x000cffff).noprw(); //AM_RANGE(0x000d0000, 0x000d0003) AM_RAM // XYLINX - Sincronus serial communication - AM_RANGE(0x000d0008, 0x000d000b) AM_WRITENOP // ??? - AM_RANGE(0x000d0800, 0x000d0fff) AM_ROM AM_REGION("nvram",0) // + map(0x000d0008, 0x000d000b).nopw(); // ??? + map(0x000d0800, 0x000d0fff).rom().region("nvram", 0); // // AM_RANGE(0x000d0800, 0x000d0fff) AM_RAM // GAME_CMOS //GRULL AM_RANGE(0x000e0000, 0x000effff) AM_RAM //GRULL-AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1") //GRULL AM_RANGE(0x000f0000, 0x000fffff) AM_WRITE(bios_ram_w) - AM_RANGE(0x000e0000, 0x000fffff) AM_ROMBANK("bank1") - AM_RANGE(0x000e0000, 0x000fffff) AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x03ffffff) AM_RAM // 64MB - AM_RANGE(0x04000000, 0x28ffffff) AM_NOP + map(0x000e0000, 0x000fffff).bankr("bank1"); + map(0x000e0000, 0x000fffff).w(this, FUNC(voyager_state::bios_ram_w)); + map(0x00100000, 0x03ffffff).ram(); // 64MB + map(0x04000000, 0x28ffffff).noprw(); //AM_RANGE(0x04000000, 0x040001ff) AM_RAM //AM_RANGE(0x08000000, 0x080001ff) AM_RAM //AM_RANGE(0x0c000000, 0x0c0001ff) AM_RAM @@ -265,45 +266,46 @@ ADDRESS_MAP_START(voyager_state::voyager_map) //AM_RANGE(0x18000000, 0x180001ff) AM_RAM //AM_RANGE(0x20000000, 0x200001ff) AM_RAM //AM_RANGE(0x28000000, 0x280001ff) AM_RAM - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} -ADDRESS_MAP_START(voyager_state::voyager_io) - AM_IMPORT_FROM(pcat32_io_common) +void voyager_state::voyager_io(address_map &map) +{ + pcat32_io_common(map); //AM_RANGE(0x00e8, 0x00eb) AM_NOP - AM_RANGE(0x00e8, 0x00ef) AM_NOP //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY - AM_RANGE(0x0170, 0x0177) AM_NOP //To debug - AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x0200, 0x021f) AM_NOP //To debug - AM_RANGE(0x0260, 0x026f) AM_NOP //To debug - AM_RANGE(0x0278, 0x027b) AM_WRITENOP//AM_WRITE(pnp_config_w) - AM_RANGE(0x0280, 0x0287) AM_NOP //To debug - AM_RANGE(0x02a0, 0x02a7) AM_NOP //To debug - AM_RANGE(0x02c0, 0x02c7) AM_NOP //To debug - AM_RANGE(0x02e0, 0x02ef) AM_NOP //To debug - AM_RANGE(0x02f8, 0x02ff) AM_NOP //To debug - AM_RANGE(0x0320, 0x038f) AM_NOP //To debug - AM_RANGE(0x03a0, 0x03a7) AM_NOP //To debug - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", trident_vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", trident_vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - AM_RANGE(0x03e0, 0x03ef) AM_NOP //To debug - AM_RANGE(0x0378, 0x037f) AM_NOP //To debug + map(0x00e8, 0x00ef).noprw(); //AMI BIOS write to this ports as delays between I/O ports operations sending al value -> NEWIODELAY + map(0x0170, 0x0177).noprw(); //To debug + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::read_cs0), FUNC(ide_controller_device::write_cs0)); + map(0x0200, 0x021f).noprw(); //To debug + map(0x0260, 0x026f).noprw(); //To debug + map(0x0278, 0x027b).nopw();//AM_WRITE(pnp_config_w) + map(0x0280, 0x0287).noprw(); //To debug + map(0x02a0, 0x02a7).noprw(); //To debug + map(0x02c0, 0x02c7).noprw(); //To debug + map(0x02e0, 0x02ef).noprw(); //To debug + map(0x02f8, 0x02ff).noprw(); //To debug + map(0x0320, 0x038f).noprw(); //To debug + map(0x03a0, 0x03a7).noprw(); //To debug + map(0x03b0, 0x03bf).rw("vga", FUNC(trident_vga_device::port_03b0_r), FUNC(trident_vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(trident_vga_device::port_03c0_r), FUNC(trident_vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(trident_vga_device::port_03d0_r), FUNC(trident_vga_device::port_03d0_w)); + map(0x03e0, 0x03ef).noprw(); //To debug + map(0x0378, 0x037f).noprw(); //To debug // AM_RANGE(0x0300, 0x03af) AM_NOP // AM_RANGE(0x03b0, 0x03df) AM_NOP - AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs1, write_cs1, 0xffffffff) - AM_RANGE(0x03f8, 0x03ff) AM_NOP // To debug Serial Port COM1: - AM_RANGE(0x0a78, 0x0a7b) AM_WRITENOP//AM_WRITE(pnp_data_w) - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) - AM_RANGE(0x42e8, 0x43ef) AM_NOP //To debug - AM_RANGE(0x43c0, 0x43cf) AM_RAM AM_SHARE("share1") - AM_RANGE(0x46e8, 0x46ef) AM_NOP //To debug - AM_RANGE(0x4ae8, 0x4aef) AM_NOP //To debug - AM_RANGE(0x83c0, 0x83cf) AM_RAM AM_SHARE("share1") - AM_RANGE(0x92e8, 0x92ef) AM_NOP //To debug - -ADDRESS_MAP_END + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::read_cs1), FUNC(ide_controller_device::write_cs1)); + map(0x03f8, 0x03ff).noprw(); // To debug Serial Port COM1: + map(0x0a78, 0x0a7b).nopw();//AM_WRITE(pnp_data_w) + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); + map(0x42e8, 0x43ef).noprw(); //To debug + map(0x43c0, 0x43cf).ram().share("share1"); + map(0x46e8, 0x46ef).noprw(); //To debug + map(0x4ae8, 0x4aef).noprw(); //To debug + map(0x83c0, 0x83cf).ram().share("share1"); + map(0x92e8, 0x92ef).noprw(); //To debug + +} #define AT_KEYB_HELPER(bit, text, key1) \ PORT_BIT( bit, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(text) PORT_CODE(key1) diff --git a/src/mame/drivers/vp101.cpp b/src/mame/drivers/vp101.cpp index c8bdf61cd55..919ebff2591 100644 --- a/src/mame/drivers/vp101.cpp +++ b/src/mame/drivers/vp101.cpp @@ -311,39 +311,41 @@ WRITE32_MEMBER(vp10x_state::tty_w) // set breakpoint at bfc01430 to catch when // printf("%c", data); } -ADDRESS_MAP_START(vp10x_state::main_map) - AM_RANGE(0x00000000, 0x07ffffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x14000000, 0x14000003) AM_READ(test_r) - AM_RANGE(0x1c000000, 0x1c000003) AM_WRITE(tty_w) // RSS OS code uses this one - AM_RANGE(0x1c000014, 0x1c000017) AM_READ(tty_ready_r) - AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one - AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r) - AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0") - AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff - AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP - AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address - AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff) - AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff) - AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w) - AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vp10x_state::vp50_map) - AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) - AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) - AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download? - AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) +void vp10x_state::main_map(address_map &map) +{ + map(0x00000000, 0x07ffffff).ram().share("mainram"); + map(0x14000000, 0x14000003).r(this, FUNC(vp10x_state::test_r)); + map(0x1c000000, 0x1c000003).w(this, FUNC(vp10x_state::tty_w)); // RSS OS code uses this one + map(0x1c000014, 0x1c000017).r(this, FUNC(vp10x_state::tty_ready_r)); + map(0x1c400000, 0x1c400003).w(this, FUNC(vp10x_state::tty_w)); // boot ROM code uses this one + map(0x1c400014, 0x1c400017).r(this, FUNC(vp10x_state::tty_ready_r)); + map(0x1ca0000c, 0x1ca0000f).portr("IN0"); + map(0x1ca00010, 0x1ca00013).r(this, FUNC(vp10x_state::test_r)); // bits here cause various test mode stuff + map(0x1cf00000, 0x1cf00003).noprw().nopr(); + map(0x1d000030, 0x1d000033).w(this, FUNC(vp10x_state::dmaaddr_w)); // ATA DMA destination address + map(0x1d000040, 0x1d00005f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)).umask32(0x0000ffff); + map(0x1d000060, 0x1d00007f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)).umask32(0x0000ffff); + map(0x1f200000, 0x1f200003).rw(this, FUNC(vp10x_state::pic_r), FUNC(vp10x_state::pic_w)); + map(0x1f807000, 0x1f807fff).ram().share("nvram"); + map(0x1fc00000, 0x1fffffff).rom().region("maincpu", 0); +} + +void vp10x_state::vp50_map(address_map &map) +{ + map(0x00000000, 0x03ffffff).ram().share("mainram"); + map(0x1f000010, 0x1f00001f).rw(m_ata, FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); + map(0x1f000020, 0x1f00002f).rw(m_ata, FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); + map(0x1f400000, 0x1f400003).noprw(); // FPGA bitstream download? + map(0x1f400800, 0x1f400bff).ram().share("nvram"); + map(0x1fc00000, 0x1fffffff).rom().region("maincpu", 0); // TX4925 peripherals - AM_RANGE(0xff1ff40c, 0xff1ff40f) AM_READ(tty_4925_rdy_r) - AM_RANGE(0xff1ff41c, 0xff1ff41f) AM_WRITE(tty_w) - AM_RANGE(0xff1ff500, 0xff1ff503) AM_NOP - AM_RANGE(0xff1ff814, 0xff1ff817) AM_READ(spi_status_r) - AM_RANGE(0xff1ff818, 0xff1ff81b) AM_READWRITE(spi_r, spi_w) -ADDRESS_MAP_END + map(0xff1ff40c, 0xff1ff40f).r(this, FUNC(vp10x_state::tty_4925_rdy_r)); + map(0xff1ff41c, 0xff1ff41f).w(this, FUNC(vp10x_state::tty_w)); + map(0xff1ff500, 0xff1ff503).noprw(); + map(0xff1ff814, 0xff1ff817).r(this, FUNC(vp10x_state::spi_status_r)); + map(0xff1ff818, 0xff1ff81b).rw(this, FUNC(vp10x_state::spi_r), FUNC(vp10x_state::spi_w)); +} static INPUT_PORTS_START( vp101 ) PORT_START("IN0") diff --git a/src/mame/drivers/vp122.cpp b/src/mame/drivers/vp122.cpp index 620a64f492b..20c7884ff36 100644 --- a/src/mame/drivers/vp122.cpp +++ b/src/mame/drivers/vp122.cpp @@ -37,31 +37,34 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(vp122_state::mem_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xe7ff) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(vp122_state::io_map) - AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("avdc", scn2674_device, read, write) - AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("duart", scn2681_device, read, write) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("usart", i8251_device, data_r, data_w) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("usart", i8251_device, status_r, control_w) - AM_RANGE(0x50, 0x50) AM_WRITENOP - AM_RANGE(0x60, 0x60) AM_WRITENOP - AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("pit", pit8253_device, read, write) -ADDRESS_MAP_END +void vp122_state::mem_map(address_map &map) +{ + map(0x0000, 0x9fff).rom().region("maincpu", 0); + map(0xa000, 0xa7ff).ram().share("nvram"); + map(0xe000, 0xe7ff).noprw(); +} + +void vp122_state::io_map(address_map &map) +{ + map(0x00, 0x07).rw("avdc", FUNC(scn2674_device::read), FUNC(scn2674_device::write)); + map(0x10, 0x1f).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); + map(0x20, 0x20).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x21, 0x21).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x50, 0x50).nopw(); + map(0x60, 0x60).nopw(); + map(0x70, 0x73).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); +} SCN2674_DRAW_CHARACTER_MEMBER(vp122_state::draw_character) { } -ADDRESS_MAP_START(vp122_state::vram_map) - AM_RANGE(0x0000, 0x07ff) AM_NOP - AM_RANGE(0x1800, 0x2fff) AM_NOP -ADDRESS_MAP_END +void vp122_state::vram_map(address_map &map) +{ + map(0x0000, 0x07ff).noprw(); + map(0x1800, 0x2fff).noprw(); +} static INPUT_PORTS_START( vp122 ) diff --git a/src/mame/drivers/vp60.cpp b/src/mame/drivers/vp60.cpp index 92689f58a1c..14345928c55 100644 --- a/src/mame/drivers/vp60.cpp +++ b/src/mame/drivers/vp60.cpp @@ -39,17 +39,20 @@ u32 vp60_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const return 0; } -ADDRESS_MAP_START(vp60_state::mem_map) - AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END +void vp60_state::mem_map(address_map &map) +{ + map(0x0000, 0x2fff).rom().region("maincpu", 0); +} -ADDRESS_MAP_START(vp60_state::io_map) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END +void vp60_state::io_map(address_map &map) +{ + map(0x8000, 0x87ff).ram(); +} -ADDRESS_MAP_START(vp60_state::kbd_map) - AM_RANGE(0x000, 0x3ff) AM_ROM AM_REGION("keyboard", 0) -ADDRESS_MAP_END +void vp60_state::kbd_map(address_map &map) +{ + map(0x000, 0x3ff).rom().region("keyboard", 0); +} static INPUT_PORTS_START( vp60 ) INPUT_PORTS_END diff --git a/src/mame/drivers/vpoker.cpp b/src/mame/drivers/vpoker.cpp index c2f21614c49..938bca83805 100644 --- a/src/mame/drivers/vpoker.cpp +++ b/src/mame/drivers/vpoker.cpp @@ -182,13 +182,14 @@ WRITE8_MEMBER(vpoker_state::blitter_w) } } -ADDRESS_MAP_START(vpoker_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x3fff) - AM_RANGE(0x0000, 0x01ff) AM_RAM /* vpoker has 0x100, 5acespkr has 0x200 */ - AM_RANGE(0x0400, 0x0407) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write) - AM_RANGE(0x0800, 0x0807) AM_READ(blitter_r) AM_WRITE(blitter_w) - AM_RANGE(0x2000, 0x3fff) AM_ROM -ADDRESS_MAP_END +void vpoker_state::main_map(address_map &map) +{ + map.global_mask(0x3fff); + map(0x0000, 0x01ff).ram(); /* vpoker has 0x100, 5acespkr has 0x200 */ + map(0x0400, 0x0407).rw("6840ptm", FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); + map(0x0800, 0x0807).r(this, FUNC(vpoker_state::blitter_r)).w(this, FUNC(vpoker_state::blitter_w)); + map(0x2000, 0x3fff).rom(); +} static INPUT_PORTS_START( vpoker ) diff --git a/src/mame/drivers/vroulet.cpp b/src/mame/drivers/vroulet.cpp index 849ba2271fc..e045df879ee 100644 --- a/src/mame/drivers/vroulet.cpp +++ b/src/mame/drivers/vroulet.cpp @@ -150,24 +150,26 @@ uint32_t vroulet_state::screen_update(screen_device &screen, bitmap_ind16 &bitma /* Memory Maps */ -ADDRESS_MAP_START(vroulet_state::vroulet_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8000, 0x8000) AM_NOP - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") - AM_RANGE(0xa000, 0xa001) AM_RAM AM_SHARE("ball") - AM_RANGE(0xb000, 0xb0ff) AM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xc000, 0xc000) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(vroulet_state::vroulet_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) -ADDRESS_MAP_END +void vroulet_state::vroulet_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x67ff).ram().share("nvram"); + map(0x8000, 0x8000).noprw(); + map(0x9000, 0x93ff).ram().w(this, FUNC(vroulet_state::videoram_w)).share("videoram"); + map(0x9400, 0x97ff).ram().w(this, FUNC(vroulet_state::colorram_w)).share("colorram"); + map(0xa000, 0xa001).ram().share("ball"); + map(0xb000, 0xb0ff).w(this, FUNC(vroulet_state::paletteram_w)).share("paletteram"); + map(0xc000, 0xc000).noprw(); +} + +void vroulet_state::vroulet_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x13).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x80, 0x83).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} /* Input Ports */ diff --git a/src/mame/drivers/vsmilepro.cpp b/src/mame/drivers/vsmilepro.cpp index 1bb911cfb1b..1e7e39e50d0 100644 --- a/src/mame/drivers/vsmilepro.cpp +++ b/src/mame/drivers/vsmilepro.cpp @@ -40,9 +40,10 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(vsmilpro_state::vsmilpro_map) - AM_RANGE(0x00000000, 0x0007ffff) AM_ROM -ADDRESS_MAP_END +void vsmilpro_state::vsmilpro_map(address_map &map) +{ + map(0x00000000, 0x0007ffff).rom(); +} /* Input ports */ diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp index 371cc6a761b..1e72d26fdb2 100644 --- a/src/mame/drivers/vsnes.cpp +++ b/src/mame/drivers/vsnes.cpp @@ -195,27 +195,29 @@ WRITE8_MEMBER(vsnes_state::vsnes_coin_counter_1_w) /******************************************************************************/ -ADDRESS_MAP_START(vsnes_state::vsnes_cpu1_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram") - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu1", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_0_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w) - AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w) - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vsnes_state::vsnes_cpu2_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram_1") - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu2", ppu2c0x_device, read, write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_1_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_1_r, vsnes_in0_1_w) - AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x4020, 0x4020) AM_WRITE(vsnes_coin_counter_1_w) - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra2") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void vsnes_state::vsnes_cpu1_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram"); + map(0x2000, 0x3fff).rw(m_ppu1, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_0_w)); + map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_r), FUNC(vsnes_state::vsnes_in0_w)); + map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x4020, 0x4020).rw(this, FUNC(vsnes_state::vsnes_coin_counter_r), FUNC(vsnes_state::vsnes_coin_counter_w)); + map(0x6000, 0x7fff).bankrw("extra1"); + map(0x8000, 0xffff).rom(); +} + +void vsnes_state::vsnes_cpu2_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram_1"); + map(0x2000, 0x3fff).rw(m_ppu2, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_1_w)); + map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_1_r), FUNC(vsnes_state::vsnes_in0_1_w)); + map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x4020, 0x4020).w(this, FUNC(vsnes_state::vsnes_coin_counter_1_w)); + map(0x6000, 0x7fff).bankrw("extra2"); + map(0x8000, 0xffff).rom(); +} @@ -244,38 +246,40 @@ READ8_MEMBER(vsnes_state::vsnes_bootleg_z80_data_r) // the bootleg still makes writes to the PSG addresses, it seems the Z80 should interpret them to play the sounds -ADDRESS_MAP_START(vsnes_state::vsnes_cpu1_bootleg_map) - AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram") - AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu1", ppu2c0x_device, read, write) - AM_RANGE(0x4000, 0x4017) AM_WRITE(bootleg_sound_write) - AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_0_w) - AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w) - AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) /* IN1 - input port 2 / PSG second control register */ - AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w) - AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void vsnes_state::vsnes_cpu1_bootleg_map(address_map &map) +{ + map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram"); + map(0x2000, 0x3fff).rw(m_ppu1, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write)); + map(0x4000, 0x4017).w(this, FUNC(vsnes_state::bootleg_sound_write)); + map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_0_w)); + map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_r), FUNC(vsnes_state::vsnes_in0_w)); + map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_r)); /* IN1 - input port 2 / PSG second control register */ + map(0x4020, 0x4020).rw(this, FUNC(vsnes_state::vsnes_coin_counter_r), FUNC(vsnes_state::vsnes_coin_counter_w)); + map(0x6000, 0x7fff).bankrw("extra1"); + map(0x8000, 0xffff).rom(); +} READ8_MEMBER( vsnes_state::vsnes_bootleg_z80_latch_r ) { return 0x00; } -ADDRESS_MAP_START(vsnes_state::vsnes_bootleg_z80_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM +void vsnes_state::vsnes_bootleg_z80_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); - AM_RANGE(0x4000, 0x4000) AM_READ( vsnes_bootleg_z80_data_r ) // read in IRQ & NMI + map(0x4000, 0x4000).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_data_r)); // read in IRQ & NMI - AM_RANGE(0x6000, 0x6000) AM_READ( vsnes_bootleg_z80_latch_r ) // read in NMI, not explicitly stored (purpose? maybe clear IRQ ?) - AM_RANGE(0x6001, 0x6001) AM_READ( vsnes_bootleg_z80_address_r ) // ^ + map(0x6000, 0x6000).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_latch_r)); // read in NMI, not explicitly stored (purpose? maybe clear IRQ ?) + map(0x6001, 0x6001).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_address_r)); // ^ - AM_RANGE(0x60FA, 0x60FA) AM_DEVWRITE("sn1", sn76489_device, write) - AM_RANGE(0x60F9, 0x60F9) AM_DEVWRITE("sn2", sn76489_device, write) - AM_RANGE(0x60FF, 0x60FF) AM_DEVWRITE("sn3", sn76489_device, write) + map(0x60FA, 0x60FA).w("sn1", FUNC(sn76489_device::write)); + map(0x60F9, 0x60F9).w("sn2", FUNC(sn76489_device::write)); + map(0x60FF, 0x60FF).w("sn3", FUNC(sn76489_device::write)); -ADDRESS_MAP_END +} /******************************************************************************/ diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp index 9d6fd03e59d..a8f568f4680 100644 --- a/src/mame/drivers/vt100.cpp +++ b/src/mame/drivers/vt100.cpp @@ -116,28 +116,31 @@ public: -ADDRESS_MAP_START(vt100_state::vt100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x1fff ) AM_ROM // ROM ( 4 * 2K) - AM_RANGE( 0x2000, 0x2bff ) AM_RAM AM_SHARE("p_ram") // Screen and scratch RAM - AM_RANGE( 0x2c00, 0x2fff ) AM_RAM // AVO Screen RAM - AM_RANGE( 0x3000, 0x3fff ) AM_RAM // AVO Attribute RAM (4 bits wide) +void vt100_state::vt100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); // ROM ( 4 * 2K) + map(0x2000, 0x2bff).ram().share("p_ram"); // Screen and scratch RAM + map(0x2c00, 0x2fff).ram(); // AVO Screen RAM + map(0x3000, 0x3fff).ram(); // AVO Attribute RAM (4 bits wide) // 0x4000, 0x7fff is unassigned - AM_RANGE( 0x8000, 0x9fff ) AM_ROM // Program memory expansion ROM (4 * 2K) - AM_RANGE( 0xa000, 0xbfff ) AM_ROM // Program memory expansion ROM (1 * 8K) + map(0x8000, 0x9fff).rom(); // Program memory expansion ROM (4 * 2K) + map(0xa000, 0xbfff).rom(); // Program memory expansion ROM (1 * 8K) // 0xc000, 0xffff is unassigned -ADDRESS_MAP_END +} -ADDRESS_MAP_START(vt100_state::vt180_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x1fff ) AM_ROM - AM_RANGE( 0x2000, 0xffff ) AM_RAM -ADDRESS_MAP_END +void vt100_state::vt180_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0xffff).ram(); +} -ADDRESS_MAP_START(vt100_state::vt180_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void vt100_state::vt180_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); +} // 0 - XMIT flag H // 1 - Advance Video L @@ -187,31 +190,32 @@ WRITE8_MEMBER(vt100_state::nvr_latch_w) m_nvr->data_w(BIT(data, 2) ? 0 : !BIT(data, 0)); } -ADDRESS_MAP_START(vt100_state::vt100_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void vt100_state::vt100_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // 0x00, 0x01 PUSART (Intel 8251) - AM_RANGE (0x00, 0x00) AM_DEVREADWRITE("pusart", i8251_device, data_r, data_w) - AM_RANGE (0x01, 0x01) AM_DEVREADWRITE("pusart", i8251_device, status_r, control_w) + map(0x00, 0x00).rw("pusart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw("pusart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); // 0x02 Baud rate generator - AM_RANGE (0x02, 0x02) AM_WRITE(baud_rate_w) + map(0x02, 0x02).w(this, FUNC(vt100_state::baud_rate_w)); // 0x22 Modem buffer - AM_RANGE (0x22, 0x22) AM_READ(modem_r) + map(0x22, 0x22).r(this, FUNC(vt100_state::modem_r)); // 0x42 Flags buffer - AM_RANGE (0x42, 0x42) AM_READ(flags_r) + map(0x42, 0x42).r(this, FUNC(vt100_state::flags_r)); // 0x42 Brightness D/A latch - AM_RANGE (0x42, 0x42) AM_DEVWRITE("vt100_video", vt100_video_device, brightness_w) + map(0x42, 0x42).w(m_crtc, FUNC(vt100_video_device::brightness_w)); // 0x62 NVR latch - AM_RANGE (0x62, 0x62) AM_WRITE(nvr_latch_w) + map(0x62, 0x62).w(this, FUNC(vt100_state::nvr_latch_w)); // 0x82 Keyboard UART data - AM_RANGE (0x82, 0x82) AM_DEVREADWRITE("kbduart", ay31015_device, receive, transmit) + map(0x82, 0x82).rw("kbduart", FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); // 0xA2 Video processor DC012 - AM_RANGE (0xa2, 0xa2) AM_DEVWRITE("vt100_video", vt100_video_device, dc012_w) + map(0xa2, 0xa2).w(m_crtc, FUNC(vt100_video_device::dc012_w)); // 0xC2 Video processor DC011 - AM_RANGE (0xc2, 0xc2) AM_DEVWRITE("vt100_video", vt100_video_device, dc011_w) + map(0xc2, 0xc2).w(m_crtc, FUNC(vt100_video_device::dc011_w)); // 0xE2 Graphics port // AM_RANGE (0xe2, 0xe2) -ADDRESS_MAP_END +} READ8_MEMBER(vt100_state::printer_r) { diff --git a/src/mame/drivers/vt220.cpp b/src/mame/drivers/vt220.cpp index b45b2ead7ea..1e8475e69cf 100644 --- a/src/mame/drivers/vt220.cpp +++ b/src/mame/drivers/vt220.cpp @@ -62,23 +62,27 @@ public: }; -ADDRESS_MAP_START(vt220_state::vt220_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vt220_state::vt220a_mem) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vt220_state::vt220_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x2000, 0x2fff) AM_MIRROR(0xc000) AM_RAM - AM_RANGE(0x3800, 0x380f) AM_MIRROR(0xc7f0) AM_DEVREADWRITE("duart", scn2681_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vt220_state::vt220a_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void vt220_state::vt220_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("maincpu", 0); +} + +void vt220_state::vt220a_mem(address_map &map) +{ + map(0x0000, 0xffff).rom().region("maincpu", 0); +} + +void vt220_state::vt220_io(address_map &map) +{ + map.unmap_value_high(); + map(0x2000, 0x2fff).mirror(0xc000).ram(); + map(0x3800, 0x380f).mirror(0xc7f0).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); +} + +void vt220_state::vt220a_io(address_map &map) +{ + map.unmap_value_high(); +} /* Input ports */ static INPUT_PORTS_START( vt220 ) diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index 5045a6a78c1..d576850a41c 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -542,70 +542,75 @@ WRITE8_MEMBER(vt240_state::hbscrl_w) m_scrl = (m_scrl & 0xff) | ((data & 0x3f) << 8); } -ADDRESS_MAP_START(vt240_state::bank_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x80000, 0x87fff) AM_RAM -ADDRESS_MAP_END +void vt240_state::bank_map(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).rom().region("maincpu", 0); + map(0x80000, 0x87fff).ram(); +} // PDF page 78 (4-25) -ADDRESS_MAP_START(vt240_state::vt240_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE (0000000, 0167777) AM_READWRITE(mem_r, mem_w) - AM_RANGE (0170000, 0170037) AM_READWRITE8(mem_map_cs_r, mem_map_cs_w, 0x00ff) - AM_RANGE (0170040, 0170041) AM_WRITE8(mem_map_sel_w, 0x00ff) - AM_RANGE (0170100, 0170101) AM_READ8(ctrl_r, 0x00ff) - AM_RANGE (0170140, 0170141) AM_READWRITE8(nvr_store_r, nvr_store_w, 0x00ff) - AM_RANGE (0171000, 0171003) AM_DEVREADWRITE8("i8251", i8251_device, data_r, data_w, 0x00ff) - AM_RANGE (0171004, 0171007) AM_DEVREADWRITE8("i8251", i8251_device, status_r, control_w, 0x00ff) - AM_RANGE (0172000, 0172077) AM_READWRITE8(duart_r, duart_w, 0x00ff) - AM_RANGE (0173000, 0173003) AM_DEVREAD8("upd7220", upd7220_device, read, 0x00ff) - AM_RANGE (0173040, 0173077) AM_READ8(vom_r, 0x00ff) - AM_RANGE (0173140, 0173141) AM_READ8(char_buf_r, 0x00ff) - AM_RANGE (0174000, 0174003) AM_DEVWRITE8("upd7220", upd7220_device, write, 0x00ff) - AM_RANGE (0174040, 0174077) AM_WRITE8(vom_w, 0x00ff) - AM_RANGE (0174140, 0174141) AM_WRITE8(char_buf_w, 0x00ff) - AM_RANGE (0174400, 0174401) AM_WRITE8(patmult_w, 0x00ff) - AM_RANGE (0174440, 0174441) AM_WRITE8(mask_w, 0x00ff) - AM_RANGE (0174500, 0174501) AM_WRITE8(vpat_w, 0x00ff) - AM_RANGE (0174540, 0174541) AM_WRITE8(lu_w, 0x00ff) - AM_RANGE (0174600, 0174601) AM_WRITE8(reg0_w, 0x00ff) - AM_RANGE (0174640, 0174641) AM_WRITE8(reg1_w, 0x00ff) - AM_RANGE (0174700, 0174701) AM_WRITE8(hbscrl_w, 0x00ff) - AM_RANGE (0174740, 0174741) AM_WRITE8(lbscrl_w, 0x00ff) - AM_RANGE (0175000, 0175005) AM_READWRITE8(i8085_comm_r, i8085_comm_w, 0x00ff) - AM_RANGE (0176000, 0176777) AM_DEVREADWRITE8("x2212", x2212_device, read, write, 0x00ff) +void vt240_state::vt240_mem(address_map &map) +{ + map.unmap_value_high(); + map(0000000, 0167777).rw(this, FUNC(vt240_state::mem_r), FUNC(vt240_state::mem_w)); + map(0170000, 0170037).rw(this, FUNC(vt240_state::mem_map_cs_r), FUNC(vt240_state::mem_map_cs_w)).umask16(0x00ff); + map(0170040, 0170040).w(this, FUNC(vt240_state::mem_map_sel_w)); + map(0170100, 0170100).r(this, FUNC(vt240_state::ctrl_r)); + map(0170140, 0170140).rw(this, FUNC(vt240_state::nvr_store_r), FUNC(vt240_state::nvr_store_w)); + map(0171000, 0171003).rw(m_i8251, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)).umask16(0x00ff); + map(0171004, 0171007).rw(m_i8251, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)).umask16(0x00ff); + map(0172000, 0172077).rw(this, FUNC(vt240_state::duart_r), FUNC(vt240_state::duart_w)).umask16(0x00ff); + map(0173000, 0173003).r(m_hgdc, FUNC(upd7220_device::read)).umask16(0x00ff); + map(0173040, 0173077).r(this, FUNC(vt240_state::vom_r)).umask16(0x00ff); + map(0173140, 0173140).r(this, FUNC(vt240_state::char_buf_r)); + map(0174000, 0174003).w(m_hgdc, FUNC(upd7220_device::write)).umask16(0x00ff); + map(0174040, 0174077).w(this, FUNC(vt240_state::vom_w)).umask16(0x00ff); + map(0174140, 0174140).w(this, FUNC(vt240_state::char_buf_w)); + map(0174400, 0174400).w(this, FUNC(vt240_state::patmult_w)); + map(0174440, 0174440).w(this, FUNC(vt240_state::mask_w)); + map(0174500, 0174500).w(this, FUNC(vt240_state::vpat_w)); + map(0174540, 0174540).w(this, FUNC(vt240_state::lu_w)); + map(0174600, 0174600).w(this, FUNC(vt240_state::reg0_w)); + map(0174640, 0174640).w(this, FUNC(vt240_state::reg1_w)); + map(0174700, 0174700).w(this, FUNC(vt240_state::hbscrl_w)); + map(0174740, 0174740).w(this, FUNC(vt240_state::lbscrl_w)); + map(0175000, 0175005).rw(this, FUNC(vt240_state::i8085_comm_r), FUNC(vt240_state::i8085_comm_w)).umask16(0x00ff); + map(0176000, 0176777).rw(m_nvram, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff); // 017700x System comm logic -ADDRESS_MAP_END +} // PDF page 134 (6-9) -ADDRESS_MAP_START(vt240_state::vt240_char_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("charcpu", 0) - AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("charcpu", 0x8000) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vt240_state::vt240_char_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) - AM_RANGE(0x10, 0x1f) AM_READWRITE(vom_r, vom_w) - AM_RANGE(0x20, 0x20) AM_READWRITE(t11_comm_r, t11_comm_w) - AM_RANGE(0x30, 0x30) AM_READWRITE(char_buf_r, char_buf_w) - AM_RANGE(0x80, 0x80) AM_WRITE(patmult_w) - AM_RANGE(0x90, 0x90) AM_WRITE(mask_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE(vpat_w) - AM_RANGE(0xb0, 0xb0) AM_WRITE(lu_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE(reg0_w) - AM_RANGE(0xd0, 0xd0) AM_WRITE(reg1_w) - AM_RANGE(0xe0, 0xe0) AM_WRITE(hbscrl_w) - AM_RANGE(0xf0, 0xf0) AM_WRITE(lbscrl_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vt240_state::upd7220_map) - AM_RANGE(0x00000, 0x3ffff) AM_READWRITE(vram_r, vram_w) AM_SHARE("vram") -ADDRESS_MAP_END +void vt240_state::vt240_char_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).rom().region("charcpu", 0); + map(0x4000, 0x5fff).rom().region("charcpu", 0x8000); + map(0x8000, 0x87ff).ram(); +} + +void vt240_state::vt240_char_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).rw(m_hgdc, FUNC(upd7220_device::read), FUNC(upd7220_device::write)); + map(0x10, 0x1f).rw(this, FUNC(vt240_state::vom_r), FUNC(vt240_state::vom_w)); + map(0x20, 0x20).rw(this, FUNC(vt240_state::t11_comm_r), FUNC(vt240_state::t11_comm_w)); + map(0x30, 0x30).rw(this, FUNC(vt240_state::char_buf_r), FUNC(vt240_state::char_buf_w)); + map(0x80, 0x80).w(this, FUNC(vt240_state::patmult_w)); + map(0x90, 0x90).w(this, FUNC(vt240_state::mask_w)); + map(0xa0, 0xa0).w(this, FUNC(vt240_state::vpat_w)); + map(0xb0, 0xb0).w(this, FUNC(vt240_state::lu_w)); + map(0xc0, 0xc0).w(this, FUNC(vt240_state::reg0_w)); + map(0xd0, 0xd0).w(this, FUNC(vt240_state::reg1_w)); + map(0xe0, 0xe0).w(this, FUNC(vt240_state::hbscrl_w)); + map(0xf0, 0xf0).w(this, FUNC(vt240_state::lbscrl_w)); +} + +void vt240_state::upd7220_map(address_map &map) +{ + map(0x00000, 0x3ffff).rw(this, FUNC(vt240_state::vram_r), FUNC(vt240_state::vram_w)).share("vram"); +} void vt240_state::machine_reset() diff --git a/src/mame/drivers/vt320.cpp b/src/mame/drivers/vt320.cpp index d7796cae164..99226d3cec2 100644 --- a/src/mame/drivers/vt320.cpp +++ b/src/mame/drivers/vt320.cpp @@ -61,12 +61,14 @@ Texas Inst. 749X 75146 Signetics? 74LS373N 8-bit D-type latch. This has eight inputs and eight outputs. */ -ADDRESS_MAP_START(vt320_state::vt320_mem) - AM_RANGE(0x0000, 0xffff) AM_ROM -ADDRESS_MAP_END +void vt320_state::vt320_mem(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} -ADDRESS_MAP_START(vt320_state::vt320_io) -ADDRESS_MAP_END +void vt320_state::vt320_io(address_map &map) +{ +} /* Input ports */ static INPUT_PORTS_START( vt320 ) diff --git a/src/mame/drivers/vt520.cpp b/src/mame/drivers/vt520.cpp index b834c38f910..8a3c96842ad 100644 --- a/src/mame/drivers/vt520.cpp +++ b/src/mame/drivers/vt520.cpp @@ -36,9 +36,10 @@ public: }; -ADDRESS_MAP_START(vt520_state::vt520_mem) - AM_RANGE(0x0000, 0xffff) AM_RAMBANK("bank1") -ADDRESS_MAP_END +void vt520_state::vt520_mem(address_map &map) +{ + map(0x0000, 0xffff).bankrw("bank1"); +} /* On the board there is TC160G41AF (1222) custom chip @@ -53,10 +54,11 @@ READ8_MEMBER( vt520_state::vt520_some_r ) return 0x40; } -ADDRESS_MAP_START(vt520_state::vt520_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x7ffb, 0x7ffb) AM_READ(vt520_some_r) -ADDRESS_MAP_END +void vt520_state::vt520_io(address_map &map) +{ + map.unmap_value_high(); + map(0x7ffb, 0x7ffb).r(this, FUNC(vt520_state::vt520_some_r)); +} /* Input ports */ static INPUT_PORTS_START( vt520 ) diff --git a/src/mame/drivers/vta2000.cpp b/src/mame/drivers/vta2000.cpp index da34f8f3b72..dfad5117d14 100644 --- a/src/mame/drivers/vta2000.cpp +++ b/src/mame/drivers/vta2000.cpp @@ -46,17 +46,19 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(vta2000_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_REGION("roms", 0) - AM_RANGE( 0x8000, 0xc7ff ) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0xc800, 0xc8ff ) AM_ROM AM_REGION("roms", 0x5000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vta2000_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END +void vta2000_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x5fff).rom().region("roms", 0); + map(0x8000, 0xc7ff).ram().share("videoram"); + map(0xc800, 0xc8ff).rom().region("roms", 0x5000); +} + +void vta2000_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map.unmap_value_high(); +} /* Input ports */ static INPUT_PORTS_START( vta2000 ) diff --git a/src/mame/drivers/vtech1.cpp b/src/mame/drivers/vtech1.cpp index 907866fea3b..8f08c7dae40 100644 --- a/src/mame/drivers/vtech1.cpp +++ b/src/mame/drivers/vtech1.cpp @@ -303,36 +303,41 @@ DRIVER_INIT_MEMBER( vtech1_state, vtech1h ) ADDRESS MAPS ***************************************************************************/ -ADDRESS_MAP_START(vtech1_state::laser110_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM // basic rom - AM_RANGE(0x6800, 0x6fff) AM_READWRITE(vtech1_keyboard_r, vtech1_latch_w) - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("videoram") // 6847 - AM_RANGE(0x7800, 0x7fff) AM_RAM // 2k user ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(vtech1_state::laser210_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM // basic rom - AM_RANGE(0x6800, 0x6fff) AM_READWRITE(vtech1_keyboard_r, vtech1_latch_w) - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("videoram") // 6847 - AM_RANGE(0x7800, 0x8fff) AM_RAM // 6k user ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(vtech1_state::laser310_mem) - AM_RANGE(0x0000, 0x3fff) AM_ROM // basic rom - AM_RANGE(0x6800, 0x6fff) AM_READWRITE(vtech1_keyboard_r, vtech1_latch_w) - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("videoram") // 6847 - AM_RANGE(0x7800, 0xb7ff) AM_RAM // 16k user ram -ADDRESS_MAP_END - -ADDRESS_MAP_START(vtech1_state::vtech1_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x4f) AM_READ(vtech1_lightpen_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(vtech1_state::vtech1_shrg_io) - AM_IMPORT_FROM(vtech1_io) - AM_RANGE(0xd0, 0xdf) AM_WRITE(vtech1_video_bank_w) -ADDRESS_MAP_END +void vtech1_state::laser110_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // basic rom + map(0x6800, 0x6fff).rw(this, FUNC(vtech1_state::vtech1_keyboard_r), FUNC(vtech1_state::vtech1_latch_w)); + map(0x7000, 0x77ff).ram().share("videoram"); // 6847 + map(0x7800, 0x7fff).ram(); // 2k user ram +} + +void vtech1_state::laser210_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // basic rom + map(0x6800, 0x6fff).rw(this, FUNC(vtech1_state::vtech1_keyboard_r), FUNC(vtech1_state::vtech1_latch_w)); + map(0x7000, 0x77ff).ram().share("videoram"); // 6847 + map(0x7800, 0x8fff).ram(); // 6k user ram +} + +void vtech1_state::laser310_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); // basic rom + map(0x6800, 0x6fff).rw(this, FUNC(vtech1_state::vtech1_keyboard_r), FUNC(vtech1_state::vtech1_latch_w)); + map(0x7000, 0x77ff).ram().share("videoram"); // 6847 + map(0x7800, 0xb7ff).ram(); // 16k user ram +} + +void vtech1_state::vtech1_io(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x4f).r(this, FUNC(vtech1_state::vtech1_lightpen_r)); +} + +void vtech1_state::vtech1_shrg_io(address_map &map) +{ + vtech1_io(map); + map(0xd0, 0xdf).w(this, FUNC(vtech1_state::vtech1_video_bank_w)); +} /*************************************************************************** diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp index bfa6030d575..51641e8dfcc 100644 --- a/src/mame/drivers/vtech2.cpp +++ b/src/mame/drivers/vtech2.cpp @@ -78,21 +78,23 @@ #include "formats/vt_cas.h" -ADDRESS_MAP_START(vtech2_state::vtech2_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x3fff) AM_RAMBANK("bank1") - AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank2") - AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank3") - AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank4") -ADDRESS_MAP_END - -ADDRESS_MAP_START(vtech2_state::vtech2_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x1f) AM_READWRITE(laser_fdc_r, laser_fdc_w) - AM_RANGE(0x40, 0x43) AM_WRITE(laser_bank_select_w) - AM_RANGE(0x44, 0x44) AM_WRITE(laser_bg_mode_w) - AM_RANGE(0x45, 0x45) AM_WRITE(laser_two_color_w) -ADDRESS_MAP_END +void vtech2_state::vtech2_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x3fff).bankrw("bank1"); + map(0x4000, 0x7fff).bankrw("bank2"); + map(0x8000, 0xbfff).bankrw("bank3"); + map(0xc000, 0xffff).bankrw("bank4"); +} + +void vtech2_state::vtech2_io(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x1f).rw(this, FUNC(vtech2_state::laser_fdc_r), FUNC(vtech2_state::laser_fdc_w)); + map(0x40, 0x43).w(this, FUNC(vtech2_state::laser_bank_select_w)); + map(0x44, 0x44).w(this, FUNC(vtech2_state::laser_bg_mode_w)); + map(0x45, 0x45).w(this, FUNC(vtech2_state::laser_two_color_w)); +} /* 2008-05 FP: Small note about natural keyboard: currently, diff --git a/src/mame/drivers/vulgus.cpp b/src/mame/drivers/vulgus.cpp index eb959b3b3ba..2d0447cfbe5 100644 --- a/src/mame/drivers/vulgus.cpp +++ b/src/mame/drivers/vulgus.cpp @@ -58,32 +58,34 @@ INTERRUPT_GEN_MEMBER(vulgus_state::vblank_irq) device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* RST 10h - vblank */ } -ADDRESS_MAP_START(vulgus_state::main_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1") - AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2") - AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1") - AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2") - AM_RANGE(0xc800, 0xc800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xc801, 0xc801) AM_WRITENOP // ? - AM_RANGE(0xc802, 0xc803) AM_RAM AM_SHARE("scroll_low") - AM_RANGE(0xc804, 0xc804) AM_WRITE(c804_w) - AM_RANGE(0xc805, 0xc805) AM_WRITE(palette_bank_w) - AM_RANGE(0xc902, 0xc903) AM_RAM AM_SHARE("scroll_high") - AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xe000, 0xefff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(vulgus_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) -ADDRESS_MAP_END +void vulgus_state::main_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xc000, 0xc000).portr("SYSTEM"); + map(0xc001, 0xc001).portr("P1"); + map(0xc002, 0xc002).portr("P2"); + map(0xc003, 0xc003).portr("DSW1"); + map(0xc004, 0xc004).portr("DSW2"); + map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xc801, 0xc801).nopw(); // ? + map(0xc802, 0xc803).ram().share("scroll_low"); + map(0xc804, 0xc804).w(this, FUNC(vulgus_state::c804_w)); + map(0xc805, 0xc805).w(this, FUNC(vulgus_state::palette_bank_w)); + map(0xc902, 0xc903).ram().share("scroll_high"); + map(0xcc00, 0xcc7f).ram().share("spriteram"); + map(0xd000, 0xd7ff).ram().w(this, FUNC(vulgus_state::fgvideoram_w)).share("fgvideoram"); + map(0xd800, 0xdfff).ram().w(this, FUNC(vulgus_state::bgvideoram_w)).share("bgvideoram"); + map(0xe000, 0xefff).ram(); +} + +void vulgus_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).ram(); + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w)); + map(0xc000, 0xc001).w("ay2", FUNC(ay8910_device::address_data_w)); +} static INPUT_PORTS_START( vulgus ) diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp index 7837ba110fa..467df58ba99 100644 --- a/src/mame/drivers/wacky_gator.cpp +++ b/src/mame/drivers/wacky_gator.cpp @@ -261,27 +261,28 @@ WRITE_LINE_MEMBER(wackygtr_state::adpcm_int) } } -ADDRESS_MAP_START(wackygtr_state::program_map) - AM_RANGE(0x0200, 0x0200) AM_READNOP AM_WRITE(irq_ack_w) - AM_RANGE(0x0400, 0x0400) AM_READNOP AM_WRITE(firq_ack_w) - AM_RANGE(0x0600, 0x0600) AM_WRITE(disp_w<0>) - AM_RANGE(0x0800, 0x0800) AM_WRITE(disp_w<1>) - AM_RANGE(0x0a00, 0x0a00) AM_WRITE(disp_w<2>) - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(disp_w<3>) - AM_RANGE(0x0e00, 0x0e00) AM_WRITE(sample_ctrl_w) - - AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ymsnd", ym2413_device, write) - - AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pit8253_0", pit8253_device, read, write) - AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pit8253_1", pit8253_device, read, write) - - AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) - AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("i8255_2", i8255_device, read, write) - - AM_RANGE(0x7000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void wackygtr_state::program_map(address_map &map) +{ + map(0x0200, 0x0200).nopr().w(this, FUNC(wackygtr_state::irq_ack_w)); + map(0x0400, 0x0400).nopr().w(this, FUNC(wackygtr_state::firq_ack_w)); + map(0x0600, 0x0600).w(this, FUNC(wackygtr_state::disp_w<0>)); + map(0x0800, 0x0800).w(this, FUNC(wackygtr_state::disp_w<1>)); + map(0x0a00, 0x0a00).w(this, FUNC(wackygtr_state::disp_w<2>)); + map(0x0c00, 0x0c00).w(this, FUNC(wackygtr_state::disp_w<3>)); + map(0x0e00, 0x0e00).w(this, FUNC(wackygtr_state::sample_ctrl_w)); + + map(0x1000, 0x1001).w("ymsnd", FUNC(ym2413_device::write)); + + map(0x2000, 0x2003).rw(m_pit8253_0, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x3000, 0x3003).rw(m_pit8253_1, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + + map(0x4000, 0x4003).rw("i8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x5000, 0x5003).rw("i8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x6000, 0x6003).rw("i8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + + map(0x7000, 0x7fff).ram(); + map(0x8000, 0xffff).rom(); +} MACHINE_CONFIG_START(wackygtr_state::wackygtr) diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp index 76417032c61..6a07beff412 100644 --- a/src/mame/drivers/wallc.cpp +++ b/src/mame/drivers/wallc.cpp @@ -264,40 +264,42 @@ WRITE8_MEMBER(wallc_state::unkitpkr_out2_w) { } -ADDRESS_MAP_START(wallc_state::wallc_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(videoram_w) AM_MIRROR(0xc00) AM_SHARE("videoram") /* 2114, 2114 */ - AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */ - - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1") - AM_RANGE(0xb200, 0xb200) AM_READ_PORT("SYSTEM") - AM_RANGE(0xb400, 0xb400) AM_READ_PORT("DIAL") - AM_RANGE(0xb600, 0xb600) AM_READ_PORT("DSW2") - - AM_RANGE(0xb000, 0xb000) AM_WRITENOP - AM_RANGE(0xb100, 0xb100) AM_WRITE(wallc_coin_counter_w) - AM_RANGE(0xb200, 0xb200) AM_WRITENOP - AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("aysnd", ay8912_device, address_w) - AM_RANGE(0xb600, 0xb600) AM_DEVWRITE("aysnd", ay8912_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wallc_state::unkitpkr_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(videoram_w) AM_MIRROR(0xc00) AM_SHARE("videoram") /* 2114, 2114 */ - AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */ - - AM_RANGE(0xb000, 0xb000) AM_READ_PORT("IN0") - AM_RANGE(0xb100, 0xb100) AM_READ_PORT("IN1") - AM_RANGE(0xb200, 0xb200) AM_READ_PORT("IN2") - AM_RANGE(0xb300, 0xb300) AM_READ_PORT("IN3") - AM_RANGE(0xb500, 0xb5ff) AM_READNOP // read by memory test routine. left over from some other game - - AM_RANGE(0xb000, 0xb000) AM_WRITE(unkitpkr_out0_w) - AM_RANGE(0xb100, 0xb100) AM_WRITE(unkitpkr_out1_w) - AM_RANGE(0xb200, 0xb200) AM_WRITE(unkitpkr_out2_w) - AM_RANGE(0xb500, 0xb500) AM_DEVWRITE("aysnd", ay8912_device, address_w) - AM_RANGE(0xb600, 0xb600) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) // Port A = DSW -ADDRESS_MAP_END +void wallc_state::wallc_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(wallc_state::videoram_w)).mirror(0xc00).share("videoram"); /* 2114, 2114 */ + map(0xa000, 0xa3ff).ram(); /* 2114, 2114 */ + + map(0xb000, 0xb000).portr("DSW1"); + map(0xb200, 0xb200).portr("SYSTEM"); + map(0xb400, 0xb400).portr("DIAL"); + map(0xb600, 0xb600).portr("DSW2"); + + map(0xb000, 0xb000).nopw(); + map(0xb100, 0xb100).w(this, FUNC(wallc_state::wallc_coin_counter_w)); + map(0xb200, 0xb200).nopw(); + map(0xb500, 0xb500).w("aysnd", FUNC(ay8912_device::address_w)); + map(0xb600, 0xb600).w("aysnd", FUNC(ay8912_device::data_w)); +} + +void wallc_state::unkitpkr_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(wallc_state::videoram_w)).mirror(0xc00).share("videoram"); /* 2114, 2114 */ + map(0xa000, 0xa3ff).ram(); /* 2114, 2114 */ + + map(0xb000, 0xb000).portr("IN0"); + map(0xb100, 0xb100).portr("IN1"); + map(0xb200, 0xb200).portr("IN2"); + map(0xb300, 0xb300).portr("IN3"); + map(0xb500, 0xb5ff).nopr(); // read by memory test routine. left over from some other game + + map(0xb000, 0xb000).w(this, FUNC(wallc_state::unkitpkr_out0_w)); + map(0xb100, 0xb100).w(this, FUNC(wallc_state::unkitpkr_out1_w)); + map(0xb200, 0xb200).w(this, FUNC(wallc_state::unkitpkr_out2_w)); + map(0xb500, 0xb500).w("aysnd", FUNC(ay8912_device::address_w)); + map(0xb600, 0xb600).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // Port A = DSW +} static INPUT_PORTS_START( wallc ) diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp index ad2cc9b8f5a..8a9f101045b 100644 --- a/src/mame/drivers/wangpc.cpp +++ b/src/mame/drivers/wangpc.cpp @@ -730,51 +730,53 @@ READ8_MEMBER( wangpc_state::option_id_r ) // ADDRESS_MAP( wangpc_mem ) //------------------------------------------------- -ADDRESS_MAP_START(wangpc_state::wangpc_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000, 0x1ffff) AM_RAM - AM_RANGE(0x40000, 0xf3fff) AM_DEVREADWRITE(WANGPC_BUS_TAG, wangpcbus_device, mrdc_r, amwc_w) - AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0) -ADDRESS_MAP_END +void wangpc_state::wangpc_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x1ffff).ram(); + map(0x40000, 0xf3fff).rw(m_bus, FUNC(wangpcbus_device::mrdc_r), FUNC(wangpcbus_device::amwc_w)); + map(0xfc000, 0xfffff).rom().region(I8086_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( wangpc_io ) //------------------------------------------------- -ADDRESS_MAP_START(wangpc_state::wangpc_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x1000, 0x1001) AM_WRITE8(fdc_ctrl_w, 0x00ff) - AM_RANGE(0x1004, 0x1005) AM_READWRITE8(deselect_drive1_r, deselect_drive1_w, 0x00ff) - AM_RANGE(0x1006, 0x1007) AM_READWRITE8(select_drive1_r, select_drive1_w, 0x00ff) - AM_RANGE(0x1008, 0x1009) AM_READWRITE8(deselect_drive2_r, deselect_drive2_w, 0x00ff) - AM_RANGE(0x100a, 0x100b) AM_READWRITE8(select_drive2_r, select_drive2_w, 0x00ff) - AM_RANGE(0x100c, 0x100d) AM_READWRITE8(motor1_off_r, motor1_off_w, 0x00ff) - AM_RANGE(0x100e, 0x100f) AM_READWRITE8(motor1_on_r, motor1_on_w, 0x00ff) - AM_RANGE(0x1010, 0x1011) AM_READWRITE8(motor2_off_r, motor2_off_w, 0x00ff) - AM_RANGE(0x1012, 0x1013) AM_READWRITE8(motor2_on_r, motor2_on_w, 0x00ff) - AM_RANGE(0x1014, 0x1017) AM_DEVICE8(UPD765_TAG, upd765a_device, map, 0x00ff) - AM_RANGE(0x1018, 0x1019) AM_MIRROR(0x0002) AM_READWRITE8(fdc_reset_r, fdc_reset_w, 0x00ff) - AM_RANGE(0x101c, 0x101d) AM_MIRROR(0x0002) AM_READWRITE8(fdc_tc_r, fdc_tc_w, 0x00ff) - AM_RANGE(0x1020, 0x1027) AM_DEVREADWRITE8(I8255A_TAG, i8255_device, read, write, 0x00ff) - AM_RANGE(0x1028, 0x1029) //AM_WRITE(?) - AM_RANGE(0x1040, 0x1047) AM_DEVREADWRITE8(I8253_TAG, pit8253_device, read, write, 0x00ff) - AM_RANGE(0x1060, 0x1063) AM_DEVREADWRITE8(I8259A_TAG, pic8259_device, read, write, 0x00ff) - AM_RANGE(0x1080, 0x1087) AM_DEVREAD8(SCN2661_TAG, mc2661_device, read, 0x00ff) - AM_RANGE(0x1088, 0x108f) AM_DEVWRITE8(SCN2661_TAG, mc2661_device, write, 0x00ff) - AM_RANGE(0x10a0, 0x10bf) AM_DEVREADWRITE8(AM9517A_TAG, am9517a_device, read, write, 0x00ff) - AM_RANGE(0x10c2, 0x10c7) AM_WRITE8(dma_page_w, 0x00ff) - AM_RANGE(0x10e0, 0x10e1) AM_READWRITE8(status_r, timer0_irq_clr_w, 0x00ff) - AM_RANGE(0x10e2, 0x10e3) AM_READWRITE8(timer2_irq_clr_r, nmi_mask_w, 0x00ff) - AM_RANGE(0x10e4, 0x10e5) AM_READWRITE8(led_on_r, fpu_mask_w, 0x00ff) - AM_RANGE(0x10e6, 0x10e7) AM_READWRITE8(dma_eop_clr_r, uart_tbre_clr_w, 0x00ff) - AM_RANGE(0x10e8, 0x10e9) AM_READWRITE8(uart_r, uart_w, 0x00ff) - AM_RANGE(0x10ea, 0x10eb) AM_READWRITE8(centronics_r, centronics_w, 0x00ff) - AM_RANGE(0x10ec, 0x10ed) AM_READWRITE8(busy_clr_r, acknlg_clr_w, 0x00ff) - AM_RANGE(0x10ee, 0x10ef) AM_READWRITE8(led_off_r, parity_nmi_clr_w, 0x00ff) - AM_RANGE(0x10fe, 0x10ff) AM_READ8(option_id_r, 0x00ff) - AM_RANGE(0x1100, 0x1fff) AM_DEVREADWRITE(WANGPC_BUS_TAG, wangpcbus_device, sad_r, sad_w) -ADDRESS_MAP_END +void wangpc_state::wangpc_io(address_map &map) +{ + map.unmap_value_high(); + map(0x1000, 0x1000).w(this, FUNC(wangpc_state::fdc_ctrl_w)); + map(0x1004, 0x1004).rw(this, FUNC(wangpc_state::deselect_drive1_r), FUNC(wangpc_state::deselect_drive1_w)); + map(0x1006, 0x1006).rw(this, FUNC(wangpc_state::select_drive1_r), FUNC(wangpc_state::select_drive1_w)); + map(0x1008, 0x1008).rw(this, FUNC(wangpc_state::deselect_drive2_r), FUNC(wangpc_state::deselect_drive2_w)); + map(0x100a, 0x100a).rw(this, FUNC(wangpc_state::select_drive2_r), FUNC(wangpc_state::select_drive2_w)); + map(0x100c, 0x100c).rw(this, FUNC(wangpc_state::motor1_off_r), FUNC(wangpc_state::motor1_off_w)); + map(0x100e, 0x100e).rw(this, FUNC(wangpc_state::motor1_on_r), FUNC(wangpc_state::motor1_on_w)); + map(0x1010, 0x1010).rw(this, FUNC(wangpc_state::motor2_off_r), FUNC(wangpc_state::motor2_off_w)); + map(0x1012, 0x1012).rw(this, FUNC(wangpc_state::motor2_on_r), FUNC(wangpc_state::motor2_on_w)); + map(0x1014, 0x1017).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); + map(0x1018, 0x1018).mirror(0x0002).rw(this, FUNC(wangpc_state::fdc_reset_r), FUNC(wangpc_state::fdc_reset_w)); + map(0x101c, 0x101c).mirror(0x0002).rw(this, FUNC(wangpc_state::fdc_tc_r), FUNC(wangpc_state::fdc_tc_w)); + map(0x1020, 0x1027).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff); + map(0x1028, 0x1029); //AM_WRITE(?) + map(0x1040, 0x1047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); + map(0x1060, 0x1063).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); + map(0x1080, 0x1087).r(m_epci, FUNC(mc2661_device::read)).umask16(0x00ff); + map(0x1088, 0x108f).w(m_epci, FUNC(mc2661_device::write)).umask16(0x00ff); + map(0x10a0, 0x10bf).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff); + map(0x10c2, 0x10c7).w(this, FUNC(wangpc_state::dma_page_w)).umask16(0x00ff); + map(0x10e0, 0x10e0).rw(this, FUNC(wangpc_state::status_r), FUNC(wangpc_state::timer0_irq_clr_w)); + map(0x10e2, 0x10e2).rw(this, FUNC(wangpc_state::timer2_irq_clr_r), FUNC(wangpc_state::nmi_mask_w)); + map(0x10e4, 0x10e4).rw(this, FUNC(wangpc_state::led_on_r), FUNC(wangpc_state::fpu_mask_w)); + map(0x10e6, 0x10e6).rw(this, FUNC(wangpc_state::dma_eop_clr_r), FUNC(wangpc_state::uart_tbre_clr_w)); + map(0x10e8, 0x10e8).rw(this, FUNC(wangpc_state::uart_r), FUNC(wangpc_state::uart_w)); + map(0x10ea, 0x10ea).rw(this, FUNC(wangpc_state::centronics_r), FUNC(wangpc_state::centronics_w)); + map(0x10ec, 0x10ec).rw(this, FUNC(wangpc_state::busy_clr_r), FUNC(wangpc_state::acknlg_clr_w)); + map(0x10ee, 0x10ee).rw(this, FUNC(wangpc_state::led_off_r), FUNC(wangpc_state::parity_nmi_clr_w)); + map(0x10fe, 0x10fe).r(this, FUNC(wangpc_state::option_id_r)); + map(0x1100, 0x1fff).rw(m_bus, FUNC(wangpcbus_device::sad_r), FUNC(wangpcbus_device::sad_w)); +} diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp index 0ea5fcc56d0..2f0bd26d82e 100644 --- a/src/mame/drivers/wardner.cpp +++ b/src/mame/drivers/wardner.cpp @@ -173,77 +173,84 @@ WRITE8_MEMBER(wardner_state::wardner_bank_w) m_membank->set_bank(data & 7); } -ADDRESS_MAP_START(wardner_state::main_program_map) - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x7000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x8fff) AM_WRITE(wardner_sprite_w) // AM_SHARE("spriteram8") - AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("palette", palette_device, write8) // AM_SHARE("palette") - AM_RANGE(0xc000, 0xc7ff) AM_WRITEONLY AM_SHARE("sharedram") - AM_RANGE(0x8000, 0xffff) AM_DEVREAD("membank", address_map_bank_device, read8) -ADDRESS_MAP_END +void wardner_state::main_program_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x7000, 0x7fff).ram(); + map(0x8000, 0x8fff).w(this, FUNC(wardner_state::wardner_sprite_w)); // AM_SHARE("spriteram8") + map(0xa000, 0xafff).w(m_palette, FUNC(palette_device::write8)); // AM_SHARE("palette") + map(0xc000, 0xc7ff).writeonly().share("sharedram"); + map(0x8000, 0xffff).r(m_membank, FUNC(address_map_bank_device::read8)); +} // Overlapped RAM/Banked ROM // Can't use AM_RANGE(0x00000, 0x3ffff) for ROM because the shared pointers get messed up somehow -ADDRESS_MAP_START(wardner_state::main_bank_map) - AM_RANGE(0x00000, 0x00fff) AM_READ(wardner_sprite_r) AM_SHARE("spriteram8") - AM_RANGE(0x01000, 0x01fff) AM_ROM AM_REGION("maincpu", 0x1000) - AM_RANGE(0x02000, 0x02fff) AM_READONLY AM_SHARE("palette") - AM_RANGE(0x03000, 0x03fff) AM_ROM AM_REGION("maincpu", 0x3000) - AM_RANGE(0x04000, 0x047ff) AM_READONLY AM_SHARE("sharedram") - AM_RANGE(0x04800, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x4800) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wardner_state::main_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x10, 0x13) AM_WRITE(wardner_txscroll_w) /* scroll text layer */ - AM_RANGE(0x14, 0x15) AM_WRITE(wardner_txlayer_w) /* offset in text video RAM */ - AM_RANGE(0x20, 0x23) AM_WRITE(wardner_bgscroll_w) /* scroll bg layer */ - AM_RANGE(0x24, 0x25) AM_WRITE(wardner_bglayer_w) /* offset in bg video RAM */ - AM_RANGE(0x30, 0x33) AM_WRITE(wardner_fgscroll_w) /* scroll fg layer */ - AM_RANGE(0x34, 0x35) AM_WRITE(wardner_fglayer_w) /* offset in fg video RAM */ - AM_RANGE(0x40, 0x43) AM_WRITE(wardner_exscroll_w) /* scroll extra layer (not used) */ - AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWA") - AM_RANGE(0x52, 0x52) AM_READ_PORT("DSWB") - AM_RANGE(0x54, 0x54) AM_READ_PORT("P1") - AM_RANGE(0x56, 0x56) AM_READ_PORT("P2") - AM_RANGE(0x58, 0x58) AM_READ_PORT("SYSTEM") - AM_RANGE(0x5a, 0x5a) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0) - AM_RANGE(0x5c, 0x5c) AM_DEVWRITE("mainlatch", ls259_device, write_nibble_d0) - AM_RANGE(0x60, 0x65) AM_READWRITE(wardner_videoram_r, wardner_videoram_w) - AM_RANGE(0x70, 0x70) AM_WRITE(wardner_bank_w) -ADDRESS_MAP_END +void wardner_state::main_bank_map(address_map &map) +{ + map(0x00000, 0x00fff).r(this, FUNC(wardner_state::wardner_sprite_r)).share("spriteram8"); + map(0x01000, 0x01fff).rom().region("maincpu", 0x1000); + map(0x02000, 0x02fff).readonly().share("palette"); + map(0x03000, 0x03fff).rom().region("maincpu", 0x3000); + map(0x04000, 0x047ff).readonly().share("sharedram"); + map(0x04800, 0x3ffff).rom().region("maincpu", 0x4800); +} + +void wardner_state::main_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w("crtc", FUNC(mc6845_device::address_w)); + map(0x02, 0x02).w("crtc", FUNC(mc6845_device::register_w)); + map(0x10, 0x13).w(this, FUNC(wardner_state::wardner_txscroll_w)); /* scroll text layer */ + map(0x14, 0x15).w(this, FUNC(wardner_state::wardner_txlayer_w)); /* offset in text video RAM */ + map(0x20, 0x23).w(this, FUNC(wardner_state::wardner_bgscroll_w)); /* scroll bg layer */ + map(0x24, 0x25).w(this, FUNC(wardner_state::wardner_bglayer_w)); /* offset in bg video RAM */ + map(0x30, 0x33).w(this, FUNC(wardner_state::wardner_fgscroll_w)); /* scroll fg layer */ + map(0x34, 0x35).w(this, FUNC(wardner_state::wardner_fglayer_w)); /* offset in fg video RAM */ + map(0x40, 0x43).w(this, FUNC(wardner_state::wardner_exscroll_w)); /* scroll extra layer (not used) */ + map(0x50, 0x50).portr("DSWA"); + map(0x52, 0x52).portr("DSWB"); + map(0x54, 0x54).portr("P1"); + map(0x56, 0x56).portr("P2"); + map(0x58, 0x58).portr("SYSTEM"); + map(0x5a, 0x5a).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); + map(0x5c, 0x5c).w("mainlatch", FUNC(ls259_device::write_nibble_d0)); + map(0x60, 0x65).rw(this, FUNC(wardner_state::wardner_videoram_r), FUNC(wardner_state::wardner_videoram_w)); + map(0x70, 0x70).w(this, FUNC(wardner_state::wardner_bank_w)); +} /***************************** Z80 Sound Memory Map *************************/ -ADDRESS_MAP_START(wardner_state::sound_program_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x807f) AM_RAM - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xc800, 0xcfff) AM_RAM -ADDRESS_MAP_END +void wardner_state::sound_program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x807f).ram(); + map(0xc000, 0xc7ff).ram().share("sharedram"); + map(0xc800, 0xcfff).ram(); +} -ADDRESS_MAP_START(wardner_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) -ADDRESS_MAP_END +void wardner_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); +} /***************************** TMS32010 Memory Map **************************/ -ADDRESS_MAP_START(wardner_state::DSP_program_map) - AM_RANGE(0x000, 0x5ff) AM_ROM -ADDRESS_MAP_END +void wardner_state::DSP_program_map(address_map &map) +{ + map(0x000, 0x5ff).rom(); +} /* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */ -ADDRESS_MAP_START(wardner_state::DSP_io_map) - AM_RANGE(0x00, 0x00) AM_WRITE(wardner_dsp_addrsel_w) - AM_RANGE(0x01, 0x01) AM_READWRITE(wardner_dsp_r, wardner_dsp_w) - AM_RANGE(0x03, 0x03) AM_WRITE(twincobr_dsp_bio_w) -ADDRESS_MAP_END +void wardner_state::DSP_io_map(address_map &map) +{ + map(0x00, 0x00).w(this, FUNC(wardner_state::wardner_dsp_addrsel_w)); + map(0x01, 0x01).rw(this, FUNC(wardner_state::wardner_dsp_r), FUNC(wardner_state::wardner_dsp_w)); + map(0x03, 0x03).w(this, FUNC(wardner_state::twincobr_dsp_bio_w)); +} /***************************************************************************** diff --git a/src/mame/drivers/warpsped.cpp b/src/mame/drivers/warpsped.cpp index 3ac351519ff..5bb75367d5f 100644 --- a/src/mame/drivers/warpsped.cpp +++ b/src/mame/drivers/warpsped.cpp @@ -233,20 +233,22 @@ uint32_t warpspeed_state::screen_update(screen_device &screen, bitmap_ind16 &bit return 0; } -ADDRESS_MAP_START(warpspeed_state::warpspeed_map) - AM_RANGE(0x0000, 0x0dff) AM_ROM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(vidram_w ) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1cff) AM_RAM AM_SHARE("workram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(warpspeed_state::warpspeed_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW") - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN2") - AM_RANGE(0x00, 0x27) AM_WRITE(hardware_w ) -ADDRESS_MAP_END +void warpspeed_state::warpspeed_map(address_map &map) +{ + map(0x0000, 0x0dff).rom(); + map(0x1800, 0x1bff).ram().w(this, FUNC(warpspeed_state::vidram_w)).share("videoram"); + map(0x1c00, 0x1cff).ram().share("workram"); +} + +void warpspeed_state::warpspeed_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("DSW"); + map(0x03, 0x03).portr("IN2"); + map(0x00, 0x27).w(this, FUNC(warpspeed_state::hardware_w)); +} static INPUT_PORTS_START( warpspeed ) PORT_START("IN0") diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp index 8c6200c6663..9eab2a885b8 100644 --- a/src/mame/drivers/warpwarp.cpp +++ b/src/mame/drivers/warpwarp.cpp @@ -290,44 +290,48 @@ WRITE8_MEMBER(warpwarp_state::warpwarp_out0_w) -ADDRESS_MAP_START(warpwarp_state::geebee_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_MIRROR(0x400) AM_RAM_WRITE(geebee_videoram_w) AM_SHARE("geebee_videoram") // mirror used by kaitei due to a bug - AM_RANGE(0x3000, 0x37ff) AM_ROM AM_REGION("gfx1", 0) // 3000-33ff in geebee - AM_RANGE(0x4000, 0x40ff) AM_RAM - AM_RANGE(0x5000, 0x53ff) AM_READ(geebee_in_r) - AM_RANGE(0x6000, 0x6fff) AM_WRITE(geebee_out6_w) - AM_RANGE(0x7000, 0x7007) AM_MIRROR(0x0ff8) AM_DEVWRITE("latch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(warpwarp_state::geebee_port_map) - AM_RANGE(0x50, 0x53) AM_READ(geebee_in_r) - AM_RANGE(0x60, 0x6f) AM_WRITE(geebee_out6_w) - AM_RANGE(0x70, 0x77) AM_MIRROR(0x08) AM_DEVWRITE("latch", ls259_device, write_d0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(warpwarp_state::bombbee_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(warpwarp_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4fff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0x6000, 0x600f) AM_READWRITE(warpwarp_sw_r, warpwarp_out0_w) - AM_RANGE(0x6010, 0x601f) AM_READ(warpwarp_vol_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music1_w) - AM_RANGE(0x6020, 0x602f) AM_READ(warpwarp_dsw1_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music2_w) - AM_RANGE(0x6030, 0x6037) AM_MIRROR(0x0008) AM_DEVWRITE("latch", ls259_device, write_d0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(warpwarp_state::warpwarp_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x4000, 0x47ff) AM_RAM_WRITE(warpwarp_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x4800, 0x4fff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0xc000, 0xc00f) AM_READWRITE(warpwarp_sw_r, warpwarp_out0_w) - AM_RANGE(0xc010, 0xc01f) AM_READ(warpwarp_vol_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music1_w) - AM_RANGE(0xc020, 0xc02f) AM_READ(warpwarp_dsw1_r) AM_DEVWRITE("warpwarp_custom", warpwarp_sound_device, music2_w) - AM_RANGE(0xc030, 0xc037) AM_MIRROR(0x0008) AM_DEVWRITE("latch", ls259_device, write_d0) -ADDRESS_MAP_END +void warpwarp_state::geebee_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).mirror(0x400).ram().w(this, FUNC(warpwarp_state::geebee_videoram_w)).share("geebee_videoram"); // mirror used by kaitei due to a bug + map(0x3000, 0x37ff).rom().region("gfx1", 0); // 3000-33ff in geebee + map(0x4000, 0x40ff).ram(); + map(0x5000, 0x53ff).r(this, FUNC(warpwarp_state::geebee_in_r)); + map(0x6000, 0x6fff).w(this, FUNC(warpwarp_state::geebee_out6_w)); + map(0x7000, 0x7007).mirror(0x0ff8).w("latch", FUNC(ls259_device::write_d0)); +} + +void warpwarp_state::geebee_port_map(address_map &map) +{ + map(0x50, 0x53).r(this, FUNC(warpwarp_state::geebee_in_r)); + map(0x60, 0x6f).w(this, FUNC(warpwarp_state::geebee_out6_w)); + map(0x70, 0x77).mirror(0x08).w("latch", FUNC(ls259_device::write_d0)); +} + + +void warpwarp_state::bombbee_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x47ff).ram().w(this, FUNC(warpwarp_state::warpwarp_videoram_w)).share("videoram"); + map(0x4800, 0x4fff).rom().region("gfx1", 0); + map(0x6000, 0x600f).rw(this, FUNC(warpwarp_state::warpwarp_sw_r), FUNC(warpwarp_state::warpwarp_out0_w)); + map(0x6010, 0x601f).r(this, FUNC(warpwarp_state::warpwarp_vol_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music1_w)); + map(0x6020, 0x602f).r(this, FUNC(warpwarp_state::warpwarp_dsw1_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music2_w)); + map(0x6030, 0x6037).mirror(0x0008).w("latch", FUNC(ls259_device::write_d0)); +} + +void warpwarp_state::warpwarp_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x4000, 0x47ff).ram().w(this, FUNC(warpwarp_state::warpwarp_videoram_w)).share("videoram"); + map(0x4800, 0x4fff).rom().region("gfx1", 0); + map(0xc000, 0xc00f).rw(this, FUNC(warpwarp_state::warpwarp_sw_r), FUNC(warpwarp_state::warpwarp_out0_w)); + map(0xc010, 0xc01f).r(this, FUNC(warpwarp_state::warpwarp_vol_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music1_w)); + map(0xc020, 0xc02f).r(this, FUNC(warpwarp_state::warpwarp_dsw1_r)).w(m_warpwarp_sound, FUNC(warpwarp_sound_device::music2_w)); + map(0xc030, 0xc037).mirror(0x0008).w("latch", FUNC(ls259_device::write_d0)); +} diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp index c8e63829079..f065cfbe817 100644 --- a/src/mame/drivers/warriorb.cpp +++ b/src/mame/drivers/warriorb.cpp @@ -223,52 +223,55 @@ WRITE16_MEMBER(warriorb_state::tc0100scn_dual_screen_w) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(warriorb_state::darius2d_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main ram */ - AM_RANGE(0x200000, 0x213fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_dual_screen_w) /* tilemaps (all screens) */ - AM_RANGE(0x214000, 0x2141ff) AM_WRITENOP /* error in screen clearing code ? */ - AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x240000, 0x253fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */ - AM_RANGE(0x260000, 0x26000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */ - AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */ - AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0x00ff) +void warriorb_state::darius2d_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); /* main ram */ + map(0x200000, 0x213fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(warriorb_state::tc0100scn_dual_screen_w)); /* tilemaps (all screens) */ + map(0x214000, 0x2141ff).nopw(); /* error in screen clearing code ? */ + map(0x220000, 0x22000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x240000, 0x253fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */ + map(0x260000, 0x26000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x400000, 0x400007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */ + map(0x420000, 0x420007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */ + map(0x600000, 0x6013ff).ram().share("spriteram"); + map(0x800000, 0x80000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); // AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ??? - AM_RANGE(0x830000, 0x830003) AM_READWRITE(sound_r, sound_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(warriorb_state::warriorb_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200000, 0x213fff) AM_RAM - AM_RANGE(0x300000, 0x313fff) AM_DEVREAD("tc0100scn_1", tc0100scn_device, word_r) AM_WRITE(tc0100scn_dual_screen_w) /* tilemaps (all screens) */ - AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x340000, 0x353fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, word_r, word_w) /* tilemaps (2nd screen) */ - AM_RANGE(0x360000, 0x36000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_device, word_r, step1_word_w) /* palette (1st screen) */ - AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_device, word_r, step1_word_w) /* palette (2nd screen) */ - AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0510nio", tc0510nio_device, read, write, 0x00ff) + map(0x830000, 0x830003).rw(this, FUNC(warriorb_state::sound_r), FUNC(warriorb_state::sound_w)); +} + +void warriorb_state::warriorb_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); + map(0x200000, 0x213fff).ram(); + map(0x300000, 0x313fff).r("tc0100scn_1", FUNC(tc0100scn_device::word_r)).w(this, FUNC(warriorb_state::tc0100scn_dual_screen_w)); /* tilemaps (all screens) */ + map(0x320000, 0x32000f).rw("tc0100scn_1", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x340000, 0x353fff).rw("tc0100scn_2", FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps (2nd screen) */ + map(0x360000, 0x36000f).rw("tc0100scn_2", FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x400000, 0x400007).rw("tc0110pcr_1", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (1st screen) */ + map(0x420000, 0x420007).rw("tc0110pcr_2", FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w)); /* palette (2nd screen) */ + map(0x600000, 0x6013ff).ram().share("spriteram"); + map(0x800000, 0x80000f).rw(m_tc0510nio, FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0x00ff); // AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ? uses bits 0,2,3 - AM_RANGE(0x830000, 0x830003) AM_READWRITE(sound_r, sound_w) -ADDRESS_MAP_END + map(0x830000, 0x830003).rw(this, FUNC(warriorb_state::sound_r), FUNC(warriorb_state::sound_w)); +} /***************************************************************************/ -ADDRESS_MAP_START(warriorb_state::z80_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITE(pancontrol_w) /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void warriorb_state::z80_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).w(this, FUNC(warriorb_state::pancontrol_w)); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(warriorb_state::sound_bankswitch_w)); +} /*********************************************************** diff --git a/src/mame/drivers/wc90.cpp b/src/mame/drivers/wc90.cpp index f2c44228d3a..95f342e5052 100644 --- a/src/mame/drivers/wc90.cpp +++ b/src/mame/drivers/wc90.cpp @@ -75,57 +75,60 @@ WRITE8_MEMBER(wc90_state::bankswitch1_w) -ADDRESS_MAP_START(wc90_state::wc90_map_1) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM /* Main RAM */ - AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* fg video ram */ - AM_RANGE(0xb000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") /* tx video ram */ - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("mainbank") - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1") - AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P2") - AM_RANGE(0xfc05, 0xfc05) AM_READ_PORT("SYSTEM") - AM_RANGE(0xfc06, 0xfc06) AM_READ_PORT("DSW1") - AM_RANGE(0xfc07, 0xfc07) AM_READ_PORT("DSW2") - AM_RANGE(0xfc02, 0xfc02) AM_WRITEONLY AM_SHARE("scroll0ylo") - AM_RANGE(0xfc03, 0xfc03) AM_WRITEONLY AM_SHARE("scroll0yhi") - AM_RANGE(0xfc06, 0xfc06) AM_WRITEONLY AM_SHARE("scroll0xlo") - AM_RANGE(0xfc07, 0xfc07) AM_WRITEONLY AM_SHARE("scroll0xhi") - AM_RANGE(0xfc22, 0xfc22) AM_WRITEONLY AM_SHARE("scroll1ylo") - AM_RANGE(0xfc23, 0xfc23) AM_WRITEONLY AM_SHARE("scroll1yhi") - AM_RANGE(0xfc26, 0xfc26) AM_WRITEONLY AM_SHARE("scroll1xlo") - AM_RANGE(0xfc27, 0xfc27) AM_WRITEONLY AM_SHARE("scroll1xhi") - AM_RANGE(0xfc42, 0xfc42) AM_WRITEONLY AM_SHARE("scroll2ylo") - AM_RANGE(0xfc43, 0xfc43) AM_WRITEONLY AM_SHARE("scroll2yhi") - AM_RANGE(0xfc46, 0xfc46) AM_WRITEONLY AM_SHARE("scroll2xlo") - AM_RANGE(0xfc47, 0xfc47) AM_WRITEONLY AM_SHARE("scroll2xhi") - AM_RANGE(0xfcc0, 0xfcc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xfcd0, 0xfcd0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xfce0, 0xfce0) AM_WRITE(bankswitch_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wc90_state::wc90_map_2) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("subbank") - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch1_w) - AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wc90_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_NOP // IRQ acknowledge? (data read and immediately written back) - AM_RANGE(0xfc10, 0xfc10) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void wc90_state::wc90_map_1(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); /* Main RAM */ + map(0xa000, 0xafff).ram().w(this, FUNC(wc90_state::fgvideoram_w)).share("fgvideoram"); /* fg video ram */ + map(0xb000, 0xbfff).ram(); + map(0xc000, 0xcfff).ram().w(this, FUNC(wc90_state::bgvideoram_w)).share("bgvideoram"); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xefff).ram().w(this, FUNC(wc90_state::txvideoram_w)).share("txvideoram"); /* tx video ram */ + map(0xf000, 0xf7ff).bankr("mainbank"); + map(0xf800, 0xfbff).ram().share("share1"); + map(0xfc00, 0xfc00).portr("P1"); + map(0xfc02, 0xfc02).portr("P2"); + map(0xfc05, 0xfc05).portr("SYSTEM"); + map(0xfc06, 0xfc06).portr("DSW1"); + map(0xfc07, 0xfc07).portr("DSW2"); + map(0xfc02, 0xfc02).writeonly().share("scroll0ylo"); + map(0xfc03, 0xfc03).writeonly().share("scroll0yhi"); + map(0xfc06, 0xfc06).writeonly().share("scroll0xlo"); + map(0xfc07, 0xfc07).writeonly().share("scroll0xhi"); + map(0xfc22, 0xfc22).writeonly().share("scroll1ylo"); + map(0xfc23, 0xfc23).writeonly().share("scroll1yhi"); + map(0xfc26, 0xfc26).writeonly().share("scroll1xlo"); + map(0xfc27, 0xfc27).writeonly().share("scroll1xhi"); + map(0xfc42, 0xfc42).writeonly().share("scroll2ylo"); + map(0xfc43, 0xfc43).writeonly().share("scroll2yhi"); + map(0xfc46, 0xfc46).writeonly().share("scroll2xlo"); + map(0xfc47, 0xfc47).writeonly().share("scroll2xhi"); + map(0xfcc0, 0xfcc0).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xfcd0, 0xfcd0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xfce0, 0xfce0).w(this, FUNC(wc90_state::bankswitch_w)); +} + +void wc90_state::wc90_map_2(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf7ff).bankr("subbank"); + map(0xf800, 0xfbff).ram().share("share1"); + map(0xfc00, 0xfc00).w(this, FUNC(wc90_state::bankswitch1_w)); + map(0xfc01, 0xfc01).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} + +void wc90_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf803).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write)); + map(0xfc00, 0xfc00).noprw(); // IRQ acknowledge? (data read and immediately written back) + map(0xfc10, 0xfc10).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( wc90 ) diff --git a/src/mame/drivers/wc90b.cpp b/src/mame/drivers/wc90b.cpp index 12bfc75443a..504f466f2c8 100644 --- a/src/mame/drivers/wc90b.cpp +++ b/src/mame/drivers/wc90b.cpp @@ -140,51 +140,54 @@ WRITE8_MEMBER(wc90b_state::slave_irq_ack_w) } -ADDRESS_MAP_START(wc90b_state::wc90b_map1) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x9fff) AM_RAM /* Main RAM */ - AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") - AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("mainbank") - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch_w) - AM_RANGE(0xfd00, 0xfd00) AM_WRITE(sound_command_w) - AM_RANGE(0xfd04, 0xfd04) AM_WRITEONLY AM_SHARE("scroll1y") - AM_RANGE(0xfd06, 0xfd06) AM_WRITEONLY AM_SHARE("scroll1x") - AM_RANGE(0xfd08, 0xfd08) AM_WRITEONLY AM_SHARE("scroll2y") - AM_RANGE(0xfd0a, 0xfd0a) AM_WRITEONLY AM_SHARE("scroll2x") - AM_RANGE(0xfd0e, 0xfd0e) AM_WRITEONLY AM_SHARE("scroll_x_lo") - AM_RANGE(0xfd00, 0xfd00) AM_READ_PORT("P1") - AM_RANGE(0xfd02, 0xfd02) AM_READ_PORT("P2") - AM_RANGE(0xfd06, 0xfd06) AM_READ_PORT("DSW1") - AM_RANGE(0xfd08, 0xfd08) AM_READ_PORT("DSW2") - AM_RANGE(0xfd0c, 0xfd0c) AM_READ(master_irq_ack_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wc90b_state::wc90b_map2) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe800, 0xefff) AM_ROM - AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("subbank") - AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(bankswitch1_w) - AM_RANGE(0xfd0c, 0xfd0c) AM_WRITE(slave_irq_ack_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wc90b_state::sound_cpu) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audiobank") - AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_control_w) - AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w) - AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd1", ym2203_device, read, write) - AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd2", ym2203_device, read, write) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void wc90b_state::wc90b_map1(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x9fff).ram(); /* Main RAM */ + map(0xa000, 0xafff).ram().w(this, FUNC(wc90b_state::fgvideoram_w)).share("fgvideoram"); + map(0xc000, 0xcfff).ram().w(this, FUNC(wc90b_state::bgvideoram_w)).share("bgvideoram"); + map(0xe000, 0xefff).ram().w(this, FUNC(wc90b_state::txvideoram_w)).share("txvideoram"); + map(0xf000, 0xf7ff).bankr("mainbank"); + map(0xf800, 0xfbff).ram().share("share1"); + map(0xfc00, 0xfc00).w(this, FUNC(wc90b_state::bankswitch_w)); + map(0xfd00, 0xfd00).w(this, FUNC(wc90b_state::sound_command_w)); + map(0xfd04, 0xfd04).writeonly().share("scroll1y"); + map(0xfd06, 0xfd06).writeonly().share("scroll1x"); + map(0xfd08, 0xfd08).writeonly().share("scroll2y"); + map(0xfd0a, 0xfd0a).writeonly().share("scroll2x"); + map(0xfd0e, 0xfd0e).writeonly().share("scroll_x_lo"); + map(0xfd00, 0xfd00).portr("P1"); + map(0xfd02, 0xfd02).portr("P2"); + map(0xfd06, 0xfd06).portr("DSW1"); + map(0xfd08, 0xfd08).portr("DSW2"); + map(0xfd0c, 0xfd0c).r(this, FUNC(wc90b_state::master_irq_ack_r)); +} + +void wc90b_state::wc90b_map2(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); + map(0xd000, 0xd7ff).ram().share("spriteram"); + map(0xd800, 0xdfff).ram(); + map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe800, 0xefff).rom(); + map(0xf000, 0xf7ff).bankr("subbank"); + map(0xf800, 0xfbff).ram().share("share1"); + map(0xfc00, 0xfc00).w(this, FUNC(wc90b_state::bankswitch1_w)); + map(0xfd0c, 0xfd0c).w(this, FUNC(wc90b_state::slave_irq_ack_w)); +} + +void wc90b_state::sound_cpu(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("audiobank"); + map(0xe000, 0xe000).w(this, FUNC(wc90b_state::adpcm_control_w)); + map(0xe400, 0xe400).w(this, FUNC(wc90b_state::adpcm_data_w)); + map(0xe800, 0xe801).rw("ymsnd1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xec00, 0xec01).rw("ymsnd2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp index c060c0c336e..4a3435b60e3 100644 --- a/src/mame/drivers/wecleman.cpp +++ b/src/mame/drivers/wecleman.cpp @@ -509,30 +509,31 @@ WRITE16_MEMBER(wecleman_state::blitter_w) WEC Le Mans 24 Main CPU Handlers ***************************************************************************/ -ADDRESS_MAP_START(wecleman_state::wecleman_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM (03c000-03ffff used as RAM sometimes!) - AM_RANGE(0x040000, 0x043fff) AM_RAM // RAM - AM_RANGE(0x040494, 0x040495) AM_WRITE(wecleman_videostatus_w) AM_SHARE("videostatus") // cloud blending control (HACK) - AM_RANGE(0x060000, 0x060005) AM_WRITE(wecleman_protection_w) AM_SHARE("protection_ram") - AM_RANGE(0x060006, 0x060007) AM_READ(wecleman_protection_r) // MCU read - AM_RANGE(0x080000, 0x080011) AM_RAM_WRITE(blitter_w) AM_SHARE("blitter_regs") // Blitter - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(wecleman_pageram_w) AM_SHARE("pageram") // Background Layers - AM_RANGE(0x108000, 0x108fff) AM_RAM_WRITE(wecleman_txtram_w) AM_SHARE("txtram") // Text Layer - AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w) AM_SHARE("paletteram") - AM_RANGE(0x124000, 0x127fff) AM_RAM AM_SHARE("share1") // Shared with main CPU - AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x140000, 0x140001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To sound CPU - AM_RANGE(0x140002, 0x140003) AM_WRITE(selected_ip_w) // Selects accelerator / wheel / .. - AM_RANGE(0x140004, 0x140005) AM_WRITE(irqctrl_w) // Main CPU controls the other CPUs - AM_RANGE(0x140006, 0x140007) AM_WRITENOP // Watchdog reset - AM_RANGE(0x140010, 0x140011) AM_READ_PORT("IN0") // Coins + brake + gear - AM_RANGE(0x140012, 0x140013) AM_READ_PORT("IN1") // ?? - AM_RANGE(0x140014, 0x140015) AM_READ_PORT("DSWA") // DSW 2 - AM_RANGE(0x140016, 0x140017) AM_READ_PORT("DSWB") // DSW 1 - AM_RANGE(0x140020, 0x140021) AM_WRITEONLY // Paired with writes to $140003 - AM_RANGE(0x140020, 0x140021) AM_READ(selected_ip_r) // Accelerator or Wheel or .. - AM_RANGE(0x140030, 0x140031) AM_WRITENOP // toggles between 0 & 1 on hitting bumps and crashes (vibration?) -ADDRESS_MAP_END +void wecleman_state::wecleman_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM (03c000-03ffff used as RAM sometimes!) + map(0x040000, 0x043fff).ram(); // RAM + map(0x040494, 0x040495).w(this, FUNC(wecleman_state::wecleman_videostatus_w)).share("videostatus"); // cloud blending control (HACK) + map(0x060000, 0x060005).w(this, FUNC(wecleman_state::wecleman_protection_w)).share("protection_ram"); + map(0x060006, 0x060007).r(this, FUNC(wecleman_state::wecleman_protection_r)); // MCU read + map(0x080000, 0x080011).ram().w(this, FUNC(wecleman_state::blitter_w)).share("blitter_regs"); // Blitter + map(0x100000, 0x103fff).ram().w(this, FUNC(wecleman_state::wecleman_pageram_w)).share("pageram"); // Background Layers + map(0x108000, 0x108fff).ram().w(this, FUNC(wecleman_state::wecleman_txtram_w)).share("txtram"); // Text Layer + map(0x110000, 0x110fff).ram().w(this, FUNC(wecleman_state::wecleman_paletteram16_SSSSBBBBGGGGRRRR_word_w)).share("paletteram"); + map(0x124000, 0x127fff).ram().share("share1"); // Shared with main CPU + map(0x130000, 0x130fff).ram().share("spriteram"); // Sprites + map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write)); // To sound CPU + map(0x140002, 0x140003).w(this, FUNC(wecleman_state::selected_ip_w)); // Selects accelerator / wheel / .. + map(0x140004, 0x140005).w(this, FUNC(wecleman_state::irqctrl_w)); // Main CPU controls the other CPUs + map(0x140006, 0x140007).nopw(); // Watchdog reset + map(0x140010, 0x140011).portr("IN0"); // Coins + brake + gear + map(0x140012, 0x140013).portr("IN1"); // ?? + map(0x140014, 0x140015).portr("DSWA"); // DSW 2 + map(0x140016, 0x140017).portr("DSWB"); // DSW 1 + map(0x140020, 0x140021).writeonly(); // Paired with writes to $140003 + map(0x140020, 0x140021).r(this, FUNC(wecleman_state::selected_ip_r)); // Accelerator or Wheel or .. + map(0x140030, 0x140031).nopw(); // toggles between 0 & 1 on hitting bumps and crashes (vibration?) +} /*************************************************************************** @@ -541,54 +542,57 @@ ADDRESS_MAP_END -ADDRESS_MAP_START(wecleman_state::hotchase_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x041fff) AM_RAM // RAM - AM_RANGE(0x060000, 0x063fff) AM_RAM // RAM - AM_RANGE(0x080000, 0x080011) AM_RAM_WRITE(blitter_w) AM_SHARE("blitter_regs") // Blitter - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0x00ff) // Background - AM_RANGE(0x101000, 0x10101f) AM_DEVWRITE8("k051316_1", k051316_device, ctrl_w, 0x00ff) // Background Ctrl - AM_RANGE(0x102000, 0x102fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0x00ff) // Foreground - AM_RANGE(0x103000, 0x10301f) AM_DEVWRITE8("k051316_2", k051316_device, ctrl_w, 0x00ff) // Foreground Ctrl - AM_RANGE(0x110000, 0x111fff) AM_RAM_WRITE(hotchase_paletteram16_SBGRBBBBGGGGRRRR_word_w) AM_SHARE("paletteram") - AM_RANGE(0x120000, 0x123fff) AM_RAM AM_SHARE("share1") // Shared with sub CPU - AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x140000, 0x140001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // To sound CPU - AM_RANGE(0x140002, 0x140003) AM_WRITE(selected_ip_w) // Selects accelerator / wheel / - AM_RANGE(0x140004, 0x140005) AM_WRITE(irqctrl_w) // Main CPU controls the other CPUs - AM_RANGE(0x140006, 0x140007) AM_READNOP // Watchdog reset - AM_RANGE(0x140010, 0x140011) AM_READ_PORT("IN0") // Coins + brake + gear - AM_RANGE(0x140012, 0x140013) AM_READ_PORT("IN1") // ?? bit 4 from sound cpu - AM_RANGE(0x140014, 0x140015) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0x140016, 0x140017) AM_READ_PORT("DSW1") // DSW 1 - AM_RANGE(0x140020, 0x140021) AM_READ(selected_ip_r) AM_WRITENOP // Paired with writes to $140003 - AM_RANGE(0x140022, 0x140023) AM_READNOP // read and written at $601c0, unknown purpose - AM_RANGE(0x140030, 0x140031) AM_WRITENOP // signal to cabinet vibration motors? -ADDRESS_MAP_END +void wecleman_state::hotchase_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x041fff).ram(); // RAM + map(0x060000, 0x063fff).ram(); // RAM + map(0x080000, 0x080011).ram().w(this, FUNC(wecleman_state::blitter_w)).share("blitter_regs"); // Blitter + map(0x100000, 0x100fff).rw("k051316_1", FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); // Background + map(0x101000, 0x10101f).w("k051316_1", FUNC(k051316_device::ctrl_w)).umask16(0x00ff); // Background Ctrl + map(0x102000, 0x102fff).rw("k051316_2", FUNC(k051316_device::read), FUNC(k051316_device::write)).umask16(0x00ff); // Foreground + map(0x103000, 0x10301f).w("k051316_2", FUNC(k051316_device::ctrl_w)).umask16(0x00ff); // Foreground Ctrl + map(0x110000, 0x111fff).ram().w(this, FUNC(wecleman_state::hotchase_paletteram16_SBGRBBBBGGGGRRRR_word_w)).share("paletteram"); + map(0x120000, 0x123fff).ram().share("share1"); // Shared with sub CPU + map(0x130000, 0x130fff).ram().share("spriteram"); // Sprites + map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write)); // To sound CPU + map(0x140002, 0x140003).w(this, FUNC(wecleman_state::selected_ip_w)); // Selects accelerator / wheel / + map(0x140004, 0x140005).w(this, FUNC(wecleman_state::irqctrl_w)); // Main CPU controls the other CPUs + map(0x140006, 0x140007).nopr(); // Watchdog reset + map(0x140010, 0x140011).portr("IN0"); // Coins + brake + gear + map(0x140012, 0x140013).portr("IN1"); // ?? bit 4 from sound cpu + map(0x140014, 0x140015).portr("DSW2"); // DSW 2 + map(0x140016, 0x140017).portr("DSW1"); // DSW 1 + map(0x140020, 0x140021).r(this, FUNC(wecleman_state::selected_ip_r)).nopw(); // Paired with writes to $140003 + map(0x140022, 0x140023).nopr(); // read and written at $601c0, unknown purpose + map(0x140030, 0x140031).nopw(); // signal to cabinet vibration motors? +} /*************************************************************************** WEC Le Mans 24 Sub CPU Handlers ***************************************************************************/ -ADDRESS_MAP_START(wecleman_state::wecleman_sub_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM - AM_RANGE(0x060000, 0x060fff) AM_RAM AM_SHARE("roadram") // Road - AM_RANGE(0x070000, 0x073fff) AM_RAM AM_SHARE("share1") // RAM (Shared with main CPU) -ADDRESS_MAP_END +void wecleman_state::wecleman_sub_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); // ROM + map(0x060000, 0x060fff).ram().share("roadram"); // Road + map(0x070000, 0x073fff).ram().share("share1"); // RAM (Shared with main CPU) +} /*************************************************************************** Hot Chase Sub CPU Handlers ***************************************************************************/ -ADDRESS_MAP_START(wecleman_state::hotchase_sub_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // ROM - AM_RANGE(0x020000, 0x020fff) AM_RAM AM_SHARE("roadram") // Road - AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("share1") // Shared with main CPU - AM_RANGE(0x060000, 0x060fff) AM_RAM // a table, presumably road related - AM_RANGE(0x061000, 0x06101f) AM_RAM // road vregs? -ADDRESS_MAP_END +void wecleman_state::hotchase_sub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); // ROM + map(0x020000, 0x020fff).ram().share("roadram"); // Road + map(0x040000, 0x043fff).ram().share("share1"); // Shared with main CPU + map(0x060000, 0x060fff).ram(); // a table, presumably road related + map(0x061000, 0x06101f).ram(); // road vregs? +} /*************************************************************************** @@ -633,18 +637,19 @@ WRITE8_MEMBER(wecleman_state::wecleman_K00723216_bank_w) m_k007232[0]->set_bank(0, ~data&1 ); //* (wecleman062gre) } -ADDRESS_MAP_START(wecleman_state::wecleman_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0x8500, 0x8500) AM_WRITENOP // increased with speed (global volume)? - AM_RANGE(0x9000, 0x9000) AM_READ(multiply_r) // 007452: Protection - AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w) // 007452: Protection - AM_RANGE(0x9006, 0x9006) AM_WRITENOP // 007452: ? - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From main CPU - AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) // K007232 (Reading offset 5/b triggers the sample) - AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_WRITE(wecleman_K00723216_bank_w) // Samples banking -ADDRESS_MAP_END +void wecleman_state::wecleman_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x83ff).ram(); + map(0x8500, 0x8500).nopw(); // increased with speed (global volume)? + map(0x9000, 0x9000).r(this, FUNC(wecleman_state::multiply_r)); // 007452: Protection + map(0x9000, 0x9001).w(this, FUNC(wecleman_state::multiply_w)); // 007452: Protection + map(0x9006, 0x9006).nopw(); // 007452: ? + map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read)); // From main CPU + map(0xb000, 0xb00d).rw("k007232_1", FUNC(k007232_device::read), FUNC(k007232_device::write)); // K007232 (Reading offset 5/b triggers the sample) + map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf000, 0xf000).w(this, FUNC(wecleman_state::wecleman_K00723216_bank_w)); // Samples banking +} /*************************************************************************** @@ -717,17 +722,18 @@ WRITE8_MEMBER(wecleman_state::hotchase_k007232_w) m_k007232[Chip]->write(space, offset ^ 1, data); } -ADDRESS_MAP_START(wecleman_state::hotchase_sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x100d) AM_READWRITE(hotchase_k007232_r<0>, hotchase_k007232_w<0>) // 3 x K007232 - AM_RANGE(0x2000, 0x200d) AM_READWRITE(hotchase_k007232_r<1>, hotchase_k007232_w<1>) - AM_RANGE(0x3000, 0x300d) AM_READWRITE(hotchase_k007232_r<2>, hotchase_k007232_w<2>) - AM_RANGE(0x4000, 0x4007) AM_WRITE(hotchase_sound_control_w) // Sound volume, banking, etc. - AM_RANGE(0x5000, 0x5000) AM_WRITENOP // 0 at start of IRQ service, 1 at end (irq mask?) - AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From main CPU (Read on IRQ) - AM_RANGE(0x7000, 0x7000) AM_WRITE(hotchase_sound_hs_w) // ACK signal to main CPU - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void wecleman_state::hotchase_sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x100d).rw(this, FUNC(wecleman_state::hotchase_k007232_r<0>), FUNC(wecleman_state::hotchase_k007232_w<0>)); // 3 x K007232 + map(0x2000, 0x200d).rw(this, FUNC(wecleman_state::hotchase_k007232_r<1>), FUNC(wecleman_state::hotchase_k007232_w<1>)); + map(0x3000, 0x300d).rw(this, FUNC(wecleman_state::hotchase_k007232_r<2>), FUNC(wecleman_state::hotchase_k007232_w<2>)); + map(0x4000, 0x4007).w(this, FUNC(wecleman_state::hotchase_sound_control_w)); // Sound volume, banking, etc. + map(0x5000, 0x5000).nopw(); // 0 at start of IRQ service, 1 at end (irq mask?) + map(0x6000, 0x6000).r("soundlatch", FUNC(generic_latch_8_device::read)); // From main CPU (Read on IRQ) + map(0x7000, 0x7000).w(this, FUNC(wecleman_state::hotchase_sound_hs_w)); // ACK signal to main CPU + map(0x8000, 0xffff).rom(); +} /*************************************************************************** diff --git a/src/mame/drivers/welltris.cpp b/src/mame/drivers/welltris.cpp index 1d0319f5d62..06651ed9539 100644 --- a/src/mame/drivers/welltris.cpp +++ b/src/mame/drivers/welltris.cpp @@ -332,42 +332,45 @@ WRITE8_MEMBER(welltris_state::sound_bankswitch_w) } -ADDRESS_MAP_START(welltris_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM - AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_SHARE("pixelram") /* Graph_1 & 2*/ - AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work */ - AM_RANGE(0xffc000, 0xffc3ff) AM_RAM AM_SHARE("spriteram") /* Sprite */ - AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(charvideoram_w) AM_SHARE("charvideoram") /* Char */ - AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") /* Bottom Controls */ - AM_RANGE(0xfff000, 0xfff001) AM_WRITE(palette_bank_w) - AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2") /* Top Controls */ - AM_RANGE(0xfff002, 0xfff003) AM_WRITE(gfxbank_w) - AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("P3") /* Left Side Ctrls */ - AM_RANGE(0xfff004, 0xfff007) AM_WRITE(scrollreg_w) - AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("P4") /* Right Side Ctrls */ - AM_RANGE(0xfff008, 0xfff009) AM_READ_PORT("SYSTEM") /* Bit 5 Tested at start of irq 1 */ - AM_RANGE(0xfff008, 0xfff009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("EXTRA") /* P3+P4 Coin + Start Buttons */ - AM_RANGE(0xfff00c, 0xfff00d) AM_READ_PORT("DSW1") - AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("DSW2") - AM_RANGE(0xfff00c, 0xfff00f) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(welltris_state::sound_map) - AM_RANGE(0x0000, 0x77ff) AM_ROM - AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") -ADDRESS_MAP_END - -ADDRESS_MAP_START(welltris_state::sound_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0x10, 0x10) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) -ADDRESS_MAP_END +void welltris_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x17ffff).rom(); + map(0x800000, 0x81ffff).ram().share("pixelram"); /* Graph_1 & 2*/ + map(0xff8000, 0xffbfff).ram(); /* work */ + map(0xffc000, 0xffc3ff).ram().share("spriteram"); /* Sprite */ + map(0xffd000, 0xffdfff).ram().w(this, FUNC(welltris_state::charvideoram_w)).share("charvideoram"); /* Char */ + map(0xffe000, 0xffefff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0xfff000, 0xfff001).portr("P1"); /* Bottom Controls */ + map(0xfff000, 0xfff001).w(this, FUNC(welltris_state::palette_bank_w)); + map(0xfff002, 0xfff003).portr("P2"); /* Top Controls */ + map(0xfff002, 0xfff003).w(this, FUNC(welltris_state::gfxbank_w)); + map(0xfff004, 0xfff005).portr("P3"); /* Left Side Ctrls */ + map(0xfff004, 0xfff007).w(this, FUNC(welltris_state::scrollreg_w)); + map(0xfff006, 0xfff007).portr("P4"); /* Right Side Ctrls */ + map(0xfff008, 0xfff009).portr("SYSTEM"); /* Bit 5 Tested at start of irq 1 */ + map(0xfff009, 0xfff009).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xfff00a, 0xfff00b).portr("EXTRA"); /* P3+P4 Coin + Start Buttons */ + map(0xfff00c, 0xfff00d).portr("DSW1"); + map(0xfff00e, 0xfff00f).portr("DSW2"); + map(0xfff00c, 0xfff00f).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); +} + +void welltris_state::sound_map(address_map &map) +{ + map(0x0000, 0x77ff).rom(); + map(0x7800, 0x7fff).ram(); + map(0x8000, 0xffff).bankr("soundbank"); +} + +void welltris_state::sound_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(welltris_state::sound_bankswitch_w)); + map(0x08, 0x0b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0x10, 0x10).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x18, 0x18).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); +} static INPUT_PORTS_START( welltris ) PORT_START("SYSTEM") diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp index d12739b038e..be0e4f3d272 100644 --- a/src/mame/drivers/wgp.cpp +++ b/src/mame/drivers/wgp.cpp @@ -609,54 +609,57 @@ WRITE8_MEMBER(wgp_state::sound_bankswitch_w) MEMORY STRUCTURES *****************************************************************/ -ADDRESS_MAP_START(wgp_state::main_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main CPUA ram */ - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_device, read, write, 0xff00) - AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x200000, 0x20000f) AM_READWRITE(adinput_r, adinput_w) - AM_RANGE(0x300000, 0x30ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, word_r, word_w) /* tilemaps */ - AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_device, ctrl_word_r, ctrl_word_w) - AM_RANGE(0x400000, 0x40bfff) AM_RAM AM_SHARE("spritemap") /* sprite tilemaps */ - AM_RANGE(0x40c000, 0x40dfff) AM_RAM AM_SHARE("spriteram") /* sprite ram */ - AM_RANGE(0x40fff0, 0x40fff1) AM_WRITENOP /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */ - AM_RANGE(0x500000, 0x501fff) AM_RAM /* unknown/unused */ - AM_RANGE(0x502000, 0x517fff) AM_RAM_WRITE(pivram_word_w) AM_SHARE("pivram") /* piv tilemaps */ - AM_RANGE(0x520000, 0x52001f) AM_RAM_WRITE(piv_ctrl_word_w) AM_SHARE("piv_ctrlram") - AM_RANGE(0x600000, 0x600003) AM_WRITE(rotate_port_w) /* rotation control ? */ - AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - -ADDRESS_MAP_START(wgp_state::cpu2_map) /* LAN areas not mapped... */ - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x200000, 0x200001) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x00ff) - AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff) +void wgp_state::main_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); /* main CPUA ram */ + map(0x140000, 0x143fff).ram().share("sharedram"); + map(0x180000, 0x18000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0xff00); + map(0x1c0000, 0x1c0001).w(this, FUNC(wgp_state::cpua_ctrl_w)); + map(0x200000, 0x20000f).rw(this, FUNC(wgp_state::adinput_r), FUNC(wgp_state::adinput_w)); + map(0x300000, 0x30ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::word_r), FUNC(tc0100scn_device::word_w)); /* tilemaps */ + map(0x320000, 0x32000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_word_r), FUNC(tc0100scn_device::ctrl_word_w)); + map(0x400000, 0x40bfff).ram().share("spritemap"); /* sprite tilemaps */ + map(0x40c000, 0x40dfff).ram().share("spriteram"); /* sprite ram */ + map(0x40fff0, 0x40fff1).nopw(); /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */ + map(0x500000, 0x501fff).ram(); /* unknown/unused */ + map(0x502000, 0x517fff).ram().w(this, FUNC(wgp_state::pivram_word_w)).share("pivram"); /* piv tilemaps */ + map(0x520000, 0x52001f).ram().w(this, FUNC(wgp_state::piv_ctrl_word_w)).share("piv_ctrlram"); + map(0x600000, 0x600003).w(this, FUNC(wgp_state::rotate_port_w)); /* rotation control ? */ + map(0x700000, 0x701fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + +void wgp_state::cpu2_map(address_map &map) +{ /* LAN areas not mapped... */ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x140000, 0x143fff).ram().share("sharedram"); + map(0x200001, 0x200001).w(m_tc0140syt, FUNC(tc0140syt_device::master_port_w)); + map(0x200003, 0x200003).rw(m_tc0140syt, FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); // AM_RANGE(0x380000, 0x383fff) AM_READONLY // LAN RAM // AM_RANGE(0x380000, 0x383fff) AM_WRITEONLY // LAN RAM - AM_RANGE(0x380000, 0x380001) AM_READ(lan_status_r) // ?? + map(0x380000, 0x380001).r(this, FUNC(wgp_state::lan_status_r)); // ?? // a lan input area is read somewhere above the status // (make the status return 0 and log)... -ADDRESS_MAP_END +} /***************************************************************************/ -ADDRESS_MAP_START(wgp_state::z80_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xea00, 0xea00) AM_READNOP - AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void wgp_state::z80_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w(m_tc0140syt, FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw(m_tc0140syt, FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xea00, 0xea00).nopr(); + map(0xee00, 0xee00).nopw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(wgp_state::sound_bankswitch_w)); +} /*********************************************************** diff --git a/src/mame/drivers/wheelfir.cpp b/src/mame/drivers/wheelfir.cpp index 96477b66f21..6598b677845 100644 --- a/src/mame/drivers/wheelfir.cpp +++ b/src/mame/drivers/wheelfir.cpp @@ -609,36 +609,38 @@ WRITE16_MEMBER(wheelfir_state::coin_cnt_w) machine().bookkeeping().coin_counter_w(1, data & 0x02); } -ADDRESS_MAP_START(wheelfir_state::wheelfir_main) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - - AM_RANGE(0x700000, 0x70001f) AM_WRITE(wheelfir_blit_w) - AM_RANGE(0x720000, 0x720001) AM_DEVWRITE8("ramdac",ramdac_device, index_w, 0x00ff ) - AM_RANGE(0x720002, 0x720003) AM_DEVWRITE8("ramdac",ramdac_device, pal_w, 0x00ff ) - AM_RANGE(0x720004, 0x720005) AM_DEVWRITE8("ramdac",ramdac_device, mask_w, 0x00ff ) // word write? - AM_RANGE(0x740000, 0x740001) AM_DEVWRITE("soundlatch", generic_latch_16_device, write) - AM_RANGE(0x760000, 0x760001) AM_WRITE(coin_cnt_w) - AM_RANGE(0x780000, 0x780005) AM_WRITENOP // Start ADC0808 conversion - AM_RANGE(0x780000, 0x780001) AM_READ_PORT("STEERING") - AM_RANGE(0x780002, 0x780003) AM_READ_PORT("ACCELERATOR") - AM_RANGE(0x780004, 0x780005) AM_READ_PORT("BRAKE") - AM_RANGE(0x7a0000, 0x7a0001) AM_WRITE(wheelfir_scanline_cnt_w) - AM_RANGE(0x7c0000, 0x7c0001) AM_READWRITE(wheelfir_7c0000_r, wheelfir_7c0000_w) - AM_RANGE(0x7e0000, 0x7e0001) AM_READ_PORT("P1") - AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(wheelfir_state::wheelfir_sub) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - - AM_RANGE(0x780000, 0x780001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) - - AM_RANGE(0x700000, 0x700001) AM_DEVWRITE("ldac", dac_word_interface, write) - AM_RANGE(0x740000, 0x740001) AM_DEVWRITE("rdac", dac_word_interface, write) -ADDRESS_MAP_END +void wheelfir_state::wheelfir_main(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + + map(0x700000, 0x70001f).w(this, FUNC(wheelfir_state::wheelfir_blit_w)); + map(0x720001, 0x720001).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x720003, 0x720003).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x720005, 0x720005).w("ramdac", FUNC(ramdac_device::mask_w)); // word write? + map(0x740000, 0x740001).w("soundlatch", FUNC(generic_latch_16_device::write)); + map(0x760000, 0x760001).w(this, FUNC(wheelfir_state::coin_cnt_w)); + map(0x780000, 0x780005).nopw(); // Start ADC0808 conversion + map(0x780000, 0x780001).portr("STEERING"); + map(0x780002, 0x780003).portr("ACCELERATOR"); + map(0x780004, 0x780005).portr("BRAKE"); + map(0x7a0000, 0x7a0001).w(this, FUNC(wheelfir_state::wheelfir_scanline_cnt_w)); + map(0x7c0000, 0x7c0001).rw(this, FUNC(wheelfir_state::wheelfir_7c0000_r), FUNC(wheelfir_state::wheelfir_7c0000_w)); + map(0x7e0000, 0x7e0001).portr("P1"); + map(0x7e0002, 0x7e0003).portr("P2"); +} + + +void wheelfir_state::wheelfir_sub(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + + map(0x780000, 0x780001).r("soundlatch", FUNC(generic_latch_16_device::read)); + + map(0x700000, 0x700001).w("ldac", FUNC(dac_word_interface::write)); + map(0x740000, 0x740001).w("rdac", FUNC(dac_word_interface::write)); +} static INPUT_PORTS_START( wheelfir ) @@ -747,9 +749,10 @@ void wheelfir_state::machine_start() } } -ADDRESS_MAP_START(wheelfir_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w) -ADDRESS_MAP_END +void wheelfir_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb888_w)); +} MACHINE_CONFIG_START(wheelfir_state::wheelfir) diff --git a/src/mame/drivers/white_mod.cpp b/src/mame/drivers/white_mod.cpp index 4cb4e61f28e..be641c81839 100644 --- a/src/mame/drivers/white_mod.cpp +++ b/src/mame/drivers/white_mod.cpp @@ -30,9 +30,10 @@ public: }; -ADDRESS_MAP_START(whitestar_mod_state::whitestar_mod_map) - AM_RANGE(0x0000, 0xffff) AM_NOP -ADDRESS_MAP_END +void whitestar_mod_state::whitestar_mod_map(address_map &map) +{ + map(0x0000, 0xffff).noprw(); +} static INPUT_PORTS_START( whitestar_mod ) INPUT_PORTS_END diff --git a/src/mame/drivers/whitestar.cpp b/src/mame/drivers/whitestar.cpp index 78c35824531..babdd01fcd5 100644 --- a/src/mame/drivers/whitestar.cpp +++ b/src/mame/drivers/whitestar.cpp @@ -67,20 +67,21 @@ static INPUT_PORTS_START( whitestar ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -ADDRESS_MAP_START(whitestar_state::whitestar_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DEDICATED") - AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW0") - AM_RANGE(0x3200, 0x3200) AM_WRITE(bank_w) - AM_RANGE(0x3300, 0x3300) AM_WRITE(switch_w) - AM_RANGE(0x3400, 0x3400) AM_READ(switch_r) - AM_RANGE(0x3600, 0x3600) AM_WRITE(dmddata_w) - AM_RANGE(0x3601, 0x3601) AM_DEVREADWRITE("decodmd",decodmd_type2_device,ctrl_r, ctrl_w) - AM_RANGE(0x3700, 0x3700) AM_DEVREAD("decodmd",decodmd_type2_device,busy_r) - AM_RANGE(0x3800, 0x3800) AM_DEVWRITE(DECOBSMT_TAG, decobsmt_device, bsmt_comms_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0x18000) -ADDRESS_MAP_END +void whitestar_state::whitestar_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x3000, 0x3000).portr("DEDICATED"); + map(0x3100, 0x3100).portr("DSW0"); + map(0x3200, 0x3200).w(this, FUNC(whitestar_state::bank_w)); + map(0x3300, 0x3300).w(this, FUNC(whitestar_state::switch_w)); + map(0x3400, 0x3400).r(this, FUNC(whitestar_state::switch_r)); + map(0x3600, 0x3600).w(this, FUNC(whitestar_state::dmddata_w)); + map(0x3601, 0x3601).rw(m_decodmd, FUNC(decodmd_type2_device::ctrl_r), FUNC(decodmd_type2_device::ctrl_w)); + map(0x3700, 0x3700).r(m_decodmd, FUNC(decodmd_type2_device::busy_r)); + map(0x3800, 0x3800).w(DECOBSMT_TAG, FUNC(decobsmt_device::bsmt_comms_w)); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom().region("user1", 0x18000); +} READ8_MEMBER(whitestar_state::switch_r) { diff --git a/src/mame/drivers/wicat.cpp b/src/mame/drivers/wicat.cpp index 494d8d5163a..4c7fcba9b83 100644 --- a/src/mame/drivers/wicat.cpp +++ b/src/mame/drivers/wicat.cpp @@ -160,62 +160,67 @@ private: }; -ADDRESS_MAP_START(wicat_state::wicat_mem) - ADDRESS_MAP_UNMAP_LOW - ADDRESS_MAP_GLOBAL_MASK(0xffffff) - AM_RANGE(0x000000, 0x001fff) AM_ROM AM_REGION("c2", 0x0000) - AM_RANGE(0x020000, 0x1fffff) AM_RAM - AM_RANGE(0x200000, 0x2fffff) AM_RAM - AM_RANGE(0x300000, 0xdfffff) AM_READWRITE(invalid_r,invalid_w) - AM_RANGE(0xeff800, 0xeffbff) AM_RAM // memory mapping SRAM, used during boot sequence for storing various data (TODO) - AM_RANGE(0xeffc00, 0xeffc01) AM_READWRITE(memmap_r,memmap_w) - AM_RANGE(0xf00000, 0xf00007) AM_DEVREADWRITE8("uart0",mc2661_device,read,write,0xff00) // UARTs - AM_RANGE(0xf00008, 0xf0000f) AM_DEVREADWRITE8("uart1",mc2661_device,read,write,0xff00) - AM_RANGE(0xf00010, 0xf00017) AM_DEVREADWRITE8("uart2",mc2661_device,read,write,0xff00) - AM_RANGE(0xf00018, 0xf0001f) AM_DEVREADWRITE8("uart3",mc2661_device,read,write,0xff00) - AM_RANGE(0xf00020, 0xf00027) AM_DEVREADWRITE8("uart4",mc2661_device,read,write,0xff00) - AM_RANGE(0xf00028, 0xf0002f) AM_DEVREADWRITE8("uart5",mc2661_device,read,write,0xff00) - AM_RANGE(0xf00030, 0xf00037) AM_DEVREADWRITE8("uart6",mc2661_device,read,write,0xff00) - AM_RANGE(0xf00040, 0xf0005f) AM_READWRITE(via_r, via_w) - AM_RANGE(0xf00060, 0xf0007f) AM_DEVREADWRITE8("rtc",mm58274c_device,read,write,0xff00) - AM_RANGE(0xf000d0, 0xf000d1) AM_WRITE(parallel_led_w) - AM_RANGE(0xf00180, 0xf0018f) AM_READWRITE8(hdc_r,hdc_w,0xffff) // WD1000 - AM_RANGE(0xf00190, 0xf0019f) AM_READWRITE8(fdc_r,fdc_w,0xffff) // FD1795 - AM_RANGE(0xf00f00, 0xf00fff) AM_READWRITE(invalid_r,invalid_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wicat_state::wicat_video_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("g1", 0x0000) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(wicat_state::wicat_video_io) +void wicat_state::wicat_mem(address_map &map) +{ + map.unmap_value_low(); + map.global_mask(0xffffff); + map(0x000000, 0x001fff).rom().region("c2", 0x0000); + map(0x020000, 0x1fffff).ram(); + map(0x200000, 0x2fffff).ram(); + map(0x300000, 0xdfffff).rw(this, FUNC(wicat_state::invalid_r), FUNC(wicat_state::invalid_w)); + map(0xeff800, 0xeffbff).ram(); // memory mapping SRAM, used during boot sequence for storing various data (TODO) + map(0xeffc00, 0xeffc01).rw(this, FUNC(wicat_state::memmap_r), FUNC(wicat_state::memmap_w)); + map(0xf00000, 0xf00007).rw(m_uart0, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); // UARTs + map(0xf00008, 0xf0000f).rw(m_uart1, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00010, 0xf00017).rw(m_uart2, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00018, 0xf0001f).rw(m_uart3, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00020, 0xf00027).rw(m_uart4, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00028, 0xf0002f).rw(m_uart5, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00030, 0xf00037).rw(m_uart6, FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00040, 0xf0005f).rw(this, FUNC(wicat_state::via_r), FUNC(wicat_state::via_w)); + map(0xf00060, 0xf0007f).rw(m_rtc, FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)).umask16(0xff00); + map(0xf000d0, 0xf000d1).w(this, FUNC(wicat_state::parallel_led_w)); + map(0xf00180, 0xf0018f).rw(this, FUNC(wicat_state::hdc_r), FUNC(wicat_state::hdc_w)); // WD1000 + map(0xf00190, 0xf0019f).rw(this, FUNC(wicat_state::fdc_r), FUNC(wicat_state::fdc_w)); // FD1795 + map(0xf00f00, 0xf00fff).rw(this, FUNC(wicat_state::invalid_r), FUNC(wicat_state::invalid_w)); +} + +void wicat_state::wicat_video_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("g1", 0x0000); + map(0x8000, 0xffff).ram(); +} + +void wicat_state::wicat_video_io(address_map &map) +{ // these are largely wild guesses... - AM_RANGE(0x0000,0x0003) AM_READWRITE(video_timer_r,video_timer_w) // some sort of timer? - AM_RANGE(0x0100,0x0107) AM_READWRITE(video_uart0_r,video_uart0_w) // INS2651 UART #1 - AM_RANGE(0x0200,0x0207) AM_READWRITE(video_uart1_r,video_uart1_w) // INS2651 UART #2 - AM_RANGE(0x0304,0x0304) AM_READ(video_status_r) - AM_RANGE(0x0400,0x047f) AM_READWRITE(videosram_r,videosram_w) // XD2210 4-bit NOVRAM - AM_RANGE(0x0500,0x0500) AM_WRITE(videosram_recall_w) - AM_RANGE(0x0600,0x0600) AM_WRITE(videosram_store_w) - AM_RANGE(0x0800,0x080f) AM_READWRITE(video_ctrl_r,video_ctrl_w) - AM_RANGE(0x0a00,0x0a1f) AM_READWRITE(video_dma_r,video_dma_w) // AM9517A DMA - AM_RANGE(0x0b00,0x0b03) AM_READWRITE(video_r,video_w) // i8275 CRTC - AM_RANGE(0x0e00,0x0eff) AM_RAM - AM_RANGE(0x4000,0x5fff) AM_RAM AM_SHARE("vram") // video RAM? - AM_RANGE(0x8000,0x8fff) AM_ROM AM_REGION("g2char",0x0000) - AM_RANGE(0x9000,0x9fff) AM_ROM AM_REGION("g2char",0x0000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wicat_state::wicat_wd1000_mem) - AM_RANGE(0x0000, 0x17ff) AM_ROM AM_REGION("wd3", 0x0000) - AM_RANGE(0x1800, 0x1fff) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(wicat_state::wicat_wd1000_io) - AM_RANGE(0x0000, 0x00ff) AM_RAM // left bank - RAM - AM_RANGE(0x0100, 0x01ff) AM_RAM // right bank - I/O ports (TODO) -ADDRESS_MAP_END + map(0x0000, 0x0003).rw(this, FUNC(wicat_state::video_timer_r), FUNC(wicat_state::video_timer_w)); // some sort of timer? + map(0x0100, 0x0107).rw(this, FUNC(wicat_state::video_uart0_r), FUNC(wicat_state::video_uart0_w)); // INS2651 UART #1 + map(0x0200, 0x0207).rw(this, FUNC(wicat_state::video_uart1_r), FUNC(wicat_state::video_uart1_w)); // INS2651 UART #2 + map(0x0304, 0x0304).r(this, FUNC(wicat_state::video_status_r)); + map(0x0400, 0x047f).rw(this, FUNC(wicat_state::videosram_r), FUNC(wicat_state::videosram_w)); // XD2210 4-bit NOVRAM + map(0x0500, 0x0500).w(this, FUNC(wicat_state::videosram_recall_w)); + map(0x0600, 0x0600).w(this, FUNC(wicat_state::videosram_store_w)); + map(0x0800, 0x080f).rw(this, FUNC(wicat_state::video_ctrl_r), FUNC(wicat_state::video_ctrl_w)); + map(0x0a00, 0x0a1f).rw(this, FUNC(wicat_state::video_dma_r), FUNC(wicat_state::video_dma_w)); // AM9517A DMA + map(0x0b00, 0x0b03).rw(this, FUNC(wicat_state::video_r), FUNC(wicat_state::video_w)); // i8275 CRTC + map(0x0e00, 0x0eff).ram(); + map(0x4000, 0x5fff).ram().share("vram"); // video RAM? + map(0x8000, 0x8fff).rom().region("g2char", 0x0000); + map(0x9000, 0x9fff).rom().region("g2char", 0x0000); +} + +void wicat_state::wicat_wd1000_mem(address_map &map) +{ + map(0x0000, 0x17ff).rom().region("wd3", 0x0000); + map(0x1800, 0x1fff).noprw(); +} + +void wicat_state::wicat_wd1000_io(address_map &map) +{ + map(0x0000, 0x00ff).ram(); // left bank - RAM + map(0x0100, 0x01ff).ram(); // right bank - I/O ports (TODO) +} /* Input ports */ diff --git a/src/mame/drivers/wico.cpp b/src/mame/drivers/wico.cpp index 4c2403a9589..c6cb04da6f3 100644 --- a/src/mame/drivers/wico.cpp +++ b/src/mame/drivers/wico.cpp @@ -87,50 +87,52 @@ private: }; // housekeeping cpu -ADDRESS_MAP_START(wico_state::hcpu_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x1fe0, 0x1fe0) AM_WRITE(muxld_w) +void wico_state::hcpu_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("sharedram"); + map(0x1fe0, 0x1fe0).w(this, FUNC(wico_state::muxld_w)); //AM_RANGE(0x1fe1, 0x1fe1) AM_WRITE(store_w) - AM_RANGE(0x1fe2, 0x1fe2) AM_WRITE(muxen_w) + map(0x1fe2, 0x1fe2).w(this, FUNC(wico_state::muxen_w)); //AM_RANGE(0x1fe3, 0x1fe3) AM_WRITE(csols_w) - AM_RANGE(0x1fe4, 0x1fe4) AM_NOP - AM_RANGE(0x1fe5, 0x1fe5) AM_DEVWRITE("sn76494", sn76494_device, write) - AM_RANGE(0x1fe6, 0x1fe6) AM_WRITE(wdogcl_w) - AM_RANGE(0x1fe7, 0x1fe7) AM_WRITE(zcres_w) - AM_RANGE(0x1fe8, 0x1fe8) AM_WRITE(dled0_w) - AM_RANGE(0x1fe9, 0x1fe9) AM_WRITE(dled1_w) - AM_RANGE(0x1fea, 0x1fea) AM_READ(gentmrcl_r) - AM_RANGE(0x1feb, 0x1feb) AM_READ(lampst_r) + map(0x1fe4, 0x1fe4).noprw(); + map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::write)); + map(0x1fe6, 0x1fe6).w(this, FUNC(wico_state::wdogcl_w)); + map(0x1fe7, 0x1fe7).w(this, FUNC(wico_state::zcres_w)); + map(0x1fe8, 0x1fe8).w(this, FUNC(wico_state::dled0_w)); + map(0x1fe9, 0x1fe9).w(this, FUNC(wico_state::dled1_w)); + map(0x1fea, 0x1fea).r(this, FUNC(wico_state::gentmrcl_r)); + map(0x1feb, 0x1feb).r(this, FUNC(wico_state::lampst_r)); //AM_RANGE(0x1fec, 0x1fec) AM_READ(sast_r) //AM_RANGE(0x1fed, 0x1fed) AM_READ(solst1_r) //AM_RANGE(0x1fee, 0x1fee) AM_READ(solst0_r) - AM_RANGE(0x1fef, 0x1fef) AM_READ(switch_r) - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x1fef, 0x1fef).r(this, FUNC(wico_state::switch_r)); + map(0xf000, 0xffff).rom(); +} // command cpu -ADDRESS_MAP_START(wico_state::ccpu_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram") // 2128 2k RAM +void wico_state::ccpu_map(address_map &map) +{ + map(0x0000, 0x07ff).ram().share("sharedram"); // 2128 2k RAM //AM_RANGE(0x1fe0, 0x1fe0) AM_WRITE(muxld_w) // to display module //AM_RANGE(0x1fe1, 0x1fe1) AM_WRITE(store_w) // enable save to nvram - AM_RANGE(0x1fe2, 0x1fe2) AM_WRITE(muxen_w) // digit to display on diagnostic LED; d0=L will disable main displays - AM_RANGE(0x1fe3, 0x1fe3) AM_WRITE(csols_w) // solenoid column - AM_RANGE(0x1fe4, 0x1fe4) AM_WRITE(msols_w) // solenoid row - AM_RANGE(0x1fe5, 0x1fe5) AM_DEVWRITE("sn76494", sn76494_device, write) - AM_RANGE(0x1fe6, 0x1fe6) AM_WRITE(wdogcl_w) // watchdog clear - AM_RANGE(0x1fe7, 0x1fe7) AM_WRITE(zcres_w) // enable IRQ on hcpu - AM_RANGE(0x1fe8, 0x1fe8) AM_WRITE(dled0_w) // turn off diagnostic LED - AM_RANGE(0x1fe9, 0x1fe9) AM_WRITE(dled1_w) // turn on diagnostic LED - AM_RANGE(0x1fea, 0x1fea) AM_READ(gentmrcl_r) // enable IRQ on ccpu + map(0x1fe2, 0x1fe2).w(this, FUNC(wico_state::muxen_w)); // digit to display on diagnostic LED; d0=L will disable main displays + map(0x1fe3, 0x1fe3).w(this, FUNC(wico_state::csols_w)); // solenoid column + map(0x1fe4, 0x1fe4).w(this, FUNC(wico_state::msols_w)); // solenoid row + map(0x1fe5, 0x1fe5).w("sn76494", FUNC(sn76494_device::write)); + map(0x1fe6, 0x1fe6).w(this, FUNC(wico_state::wdogcl_w)); // watchdog clear + map(0x1fe7, 0x1fe7).w(this, FUNC(wico_state::zcres_w)); // enable IRQ on hcpu + map(0x1fe8, 0x1fe8).w(this, FUNC(wico_state::dled0_w)); // turn off diagnostic LED + map(0x1fe9, 0x1fe9).w(this, FUNC(wico_state::dled1_w)); // turn on diagnostic LED + map(0x1fea, 0x1fea).r(this, FUNC(wico_state::gentmrcl_r)); // enable IRQ on ccpu //AM_RANGE(0x1feb, 0x1feb) AM_READ(lampst_r) // lamps? //AM_RANGE(0x1fec, 0x1fec) AM_READ(sast_r) // a pwron pulse to d0 L->H //AM_RANGE(0x1fed, 0x1fed) AM_READ(solst1_r) // switches //AM_RANGE(0x1fee, 0x1fee) AM_READ(solst0_r) // switches //AM_RANGE(0x1fef, 0x1fef) AM_READ(switch_r) // switches - AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram") // X2212 4bit x 256 NVRAM, stores only when store_w is active - AM_RANGE(0x8000, 0x9fff) AM_ROM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END + map(0x4000, 0x40ff).ram().share("nvram"); // X2212 4bit x 256 NVRAM, stores only when store_w is active + map(0x8000, 0x9fff).rom(); + map(0xe000, 0xffff).rom(); +} static INPUT_PORTS_START( wico ) PORT_START("X0") diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp index 3c2aa2e9bfd..fac8dfcbda0 100644 --- a/src/mame/drivers/wildpkr.cpp +++ b/src/mame/drivers/wildpkr.cpp @@ -306,47 +306,50 @@ WRITE16_MEMBER(wildpkr_state::unknown_trigger_w) * Memory Map * *************************/ -ADDRESS_MAP_START(wildpkr_state::wildpkr_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x113fff) AM_RAM - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) - AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) - AM_RANGE(0x800080, 0x80009f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x800180, 0x800181) AM_READ8(unknown_read8, 0xff00) - AM_RANGE(0x800180, 0x800181) AM_WRITE8(unknown_write8, 0x00ff) - AM_RANGE(0x800200, 0x800201) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0xff00) - AM_RANGE(0x800202, 0x800203) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0xff00) - AM_RANGE(0x800204, 0x800205) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0xff00) - AM_RANGE(0x800280, 0x800281) AM_DEVWRITE8("aysnd", ay8930_device, data_w, 0xff00) - AM_RANGE(0x800282, 0x800283) AM_DEVWRITE8("aysnd", ay8930_device, address_w, 0xff00) - AM_RANGE(0x800284, 0x800285) AM_DEVREAD8("aysnd", ay8930_device, data_r, 0x00ff) // (odd!) - AM_RANGE(0x800286, 0x800289) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(wildpkr_state::tabpkr_map) - AM_RANGE(0x000000, 0x2fffff) AM_ROM - AM_RANGE(0x300000, 0x303fff) AM_RAM - AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(nvram_w) AM_SHARE("nvram") - AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE("acrtc", hd63484_device, status16_r, address16_w) - AM_RANGE(0x500002, 0x500003) AM_DEVREADWRITE("acrtc", hd63484_device, data16_r, data16_w) - AM_RANGE(0x500020, 0x500021) AM_DEVREADWRITE8("ramdac", ramdac_device, index_r, index_w, 0x00ff) - AM_RANGE(0x500022, 0x500023) AM_DEVREADWRITE8("ramdac", ramdac_device, pal_r, pal_w, 0x00ff) - AM_RANGE(0x500024, 0x500025) AM_DEVREADWRITE8("ramdac", ramdac_device, mask_r, mask_w, 0x00ff) - AM_RANGE(0x500040, 0x50005f) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0x00ff) - AM_RANGE(0x500060, 0x500061) AM_READWRITE(id_serial_r, id_serial_w) - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("IN0") AM_WRITE(out0_w) - AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1") AM_WRITE(out1_w) - AM_RANGE(0x600004, 0x600005) AM_READ_PORT("IN2") - AM_RANGE(0x600004, 0x600005) AM_WRITE8(dac_w, 0xff00) - AM_RANGE(0x700000, 0x700001) AM_WRITE(clock_start_w) - AM_RANGE(0x700002, 0x700003) AM_WRITE(clock_rate_w) - AM_RANGE(0x700004, 0x700007) AM_WRITE(unknown_trigger_w) - AM_RANGE(0x70000a, 0x70000b) AM_WRITENOP // only writes 0 at POST -ADDRESS_MAP_END - -ADDRESS_MAP_START(wildpkr_state::hd63484_map) - AM_RANGE(0x00000, 0x3ffff) AM_RAM -ADDRESS_MAP_END +void wildpkr_state::wildpkr_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x113fff).ram(); + map(0x800000, 0x800001).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x800002, 0x800003).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x800080, 0x80009f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x800180, 0x800180).r(this, FUNC(wildpkr_state::unknown_read8)); + map(0x800181, 0x800181).w(this, FUNC(wildpkr_state::unknown_write8)); + map(0x800200, 0x800200).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x800202, 0x800202).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x800204, 0x800204).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x800280, 0x800280).w("aysnd", FUNC(ay8930_device::data_w)); + map(0x800282, 0x800282).w("aysnd", FUNC(ay8930_device::address_w)); + map(0x800285, 0x800285).r("aysnd", FUNC(ay8930_device::data_r)); // (odd!) + map(0x800286, 0x800289).nopw(); +} + +void wildpkr_state::tabpkr_map(address_map &map) +{ + map(0x000000, 0x2fffff).rom(); + map(0x300000, 0x303fff).ram(); + map(0x400000, 0x400fff).ram().w(this, FUNC(wildpkr_state::nvram_w)).share("nvram"); + map(0x500000, 0x500001).rw("acrtc", FUNC(hd63484_device::status16_r), FUNC(hd63484_device::address16_w)); + map(0x500002, 0x500003).rw("acrtc", FUNC(hd63484_device::data16_r), FUNC(hd63484_device::data16_w)); + map(0x500021, 0x500021).rw("ramdac", FUNC(ramdac_device::index_r), FUNC(ramdac_device::index_w)); + map(0x500023, 0x500023).rw("ramdac", FUNC(ramdac_device::pal_r), FUNC(ramdac_device::pal_w)); + map(0x500025, 0x500025).rw("ramdac", FUNC(ramdac_device::mask_r), FUNC(ramdac_device::mask_w)); + map(0x500040, 0x50005f).rw(m_duart, FUNC(mc68681_device::read), FUNC(mc68681_device::write)).umask16(0x00ff); + map(0x500060, 0x500061).rw(this, FUNC(wildpkr_state::id_serial_r), FUNC(wildpkr_state::id_serial_w)); + map(0x600000, 0x600001).portr("IN0").w(this, FUNC(wildpkr_state::out0_w)); + map(0x600002, 0x600003).portr("IN1").w(this, FUNC(wildpkr_state::out1_w)); + map(0x600004, 0x600005).portr("IN2"); + map(0x600004, 0x600004).w(this, FUNC(wildpkr_state::dac_w)); + map(0x700000, 0x700001).w(this, FUNC(wildpkr_state::clock_start_w)); + map(0x700002, 0x700003).w(this, FUNC(wildpkr_state::clock_rate_w)); + map(0x700004, 0x700007).w(this, FUNC(wildpkr_state::unknown_trigger_w)); + map(0x70000a, 0x70000b).nopw(); // only writes 0 at POST +} + +void wildpkr_state::hd63484_map(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); +} /* Unknown R/W: @@ -436,9 +439,10 @@ void wildpkr_state::machine_start() } -ADDRESS_MAP_START(wildpkr_state::ramdac_map) - AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w) -ADDRESS_MAP_END +void wildpkr_state::ramdac_map(address_map &map) +{ + map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} IRQ_CALLBACK_MEMBER(wildpkr_state::tabpkr_irq_ack) diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp index 3497177fe9b..2abc3e65ffd 100644 --- a/src/mame/drivers/williams.cpp +++ b/src/mame/drivers/williams.cpp @@ -521,25 +521,27 @@ Reference video: https://www.youtube.com/watch?v=R5OeC6Wc_yI * *************************************/ -ADDRESS_MAP_START(williams_state::defender_map) - AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xc000, 0xcfff) AM_DEVICE("bankc000", address_map_bank_device, amap8) - AM_RANGE(0xd000, 0xdfff) AM_WRITE(defender_bank_select_w) - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams_state::defender_map(address_map &map) +{ + map(0x0000, 0xbfff).ram().share("videoram"); + map(0xc000, 0xcfff).m(m_bankc000, FUNC(address_map_bank_device::amap8)); + map(0xd000, 0xdfff).w(this, FUNC(williams_state::defender_bank_select_w)); + map(0xd000, 0xffff).rom(); +} -ADDRESS_MAP_START(williams_state::defender_bankc000_map) - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x03e0) AM_WRITEONLY AM_SHARE("paletteram") - AM_RANGE(0x03ff, 0x03ff) AM_WRITE(williams_watchdog_reset_w) - AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x03e0) AM_WRITE(defender_video_control_w) - AM_RANGE(0x0400, 0x04ff) AM_MIRROR(0x0300) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram") - AM_RANGE(0x0800, 0x0bff) AM_READ(williams_video_counter_r) - AM_RANGE(0x0c00, 0x0c03) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0x0c04, 0x0c07) AM_MIRROR(0x03e0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) - AM_RANGE(0x1000, 0x9fff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0xa000, 0xffff) AM_NOP -ADDRESS_MAP_END +void williams_state::defender_bankc000_map(address_map &map) +{ + map(0x0000, 0x000f).mirror(0x03e0).writeonly().share("paletteram"); + map(0x03ff, 0x03ff).w(this, FUNC(williams_state::williams_watchdog_reset_w)); + map(0x0010, 0x001f).mirror(0x03e0).w(this, FUNC(williams_state::defender_video_control_w)); + map(0x0400, 0x04ff).mirror(0x0300).ram().w(this, FUNC(williams_state::williams_cmos_w)).share("nvram"); + map(0x0800, 0x0bff).r(this, FUNC(williams_state::williams_video_counter_r)); + map(0x0c00, 0x0c03).mirror(0x03e0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0c04, 0x0c07).mirror(0x03e0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x9fff).rom().region("maincpu", 0x10000); + map(0xa000, 0xffff).noprw(); +} @@ -549,19 +551,20 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(williams_state::williams_map) - AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram") - AM_RANGE(0x9000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram") - AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) - AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0xc900, 0xc9ff) AM_WRITE(williams_vram_select_w) - AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w) - AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r) - AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w) - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram") - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams_state::williams_map(address_map &map) +{ + map(0x0000, 0x8fff).bankr("bank1").writeonly().share("videoram"); + map(0x9000, 0xbfff).ram(); + map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram"); + map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc900, 0xc9ff).w(this, FUNC(williams_state::williams_vram_select_w)); + map(0xca00, 0xca07).mirror(0x00f8).w(this, FUNC(williams_state::williams_blitter_w)); + map(0xcb00, 0xcbff).r(this, FUNC(williams_state::williams_video_counter_r)); + map(0xcbff, 0xcbff).w(this, FUNC(williams_state::williams_watchdog_reset_w)); + map(0xcc00, 0xcfff).ram().w(this, FUNC(williams_state::williams_cmos_w)).share("nvram"); + map(0xd000, 0xffff).rom(); +} @@ -571,20 +574,21 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(williams_state::sinistar_map) - AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram") - AM_RANGE(0x9000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram") - AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) - AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0xc900, 0xc9ff) AM_WRITE(sinistar_vram_select_w) - AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w) - AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r) - AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w) - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram") - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams_state::sinistar_map(address_map &map) +{ + map(0x0000, 0x8fff).bankr("bank1").writeonly().share("videoram"); + map(0x9000, 0xbfff).ram(); + map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram"); + map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc900, 0xc9ff).w(this, FUNC(williams_state::sinistar_vram_select_w)); + map(0xca00, 0xca07).mirror(0x00f8).w(this, FUNC(williams_state::williams_blitter_w)); + map(0xcb00, 0xcbff).r(this, FUNC(williams_state::williams_video_counter_r)); + map(0xcbff, 0xcbff).w(this, FUNC(williams_state::williams_watchdog_reset_w)); + map(0xcc00, 0xcfff).ram().w(this, FUNC(williams_state::williams_cmos_w)).share("nvram"); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xffff).rom(); +} @@ -594,26 +598,27 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(blaster_state::blaster_map) - AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram") - AM_RANGE(0x4000, 0x8fff) AM_READ_BANK("bank2") AM_WRITEONLY - AM_RANGE(0x9000, 0xbaff) AM_RAM - AM_RANGE(0xbb00, 0xbbff) AM_RAM AM_SHARE("blaster_pal0") - AM_RANGE(0xbc00, 0xbcff) AM_RAM AM_SHARE("blaster_scan") - AM_RANGE(0xbd00, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram") - AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) - AM_RANGE(0xc80c, 0xc80f) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0xc900, 0xc93f) AM_WRITE(blaster_vram_select_w) - AM_RANGE(0xc940, 0xc97f) AM_WRITE(blaster_remap_select_w) - AM_RANGE(0xc980, 0xc9bf) AM_WRITE(blaster_bank_select_w) - AM_RANGE(0xc9c0, 0xc9ff) AM_WRITE(blaster_video_control_w) - AM_RANGE(0xca00, 0xca07) AM_MIRROR(0x00f8) AM_WRITE(williams_blitter_w) - AM_RANGE(0xcb00, 0xcbff) AM_READ(williams_video_counter_r) - AM_RANGE(0xcbff, 0xcbff) AM_WRITE(williams_watchdog_reset_w) - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram") - AM_RANGE(0xd000, 0xffff) AM_ROM -ADDRESS_MAP_END +void blaster_state::blaster_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bank1").writeonly().share("videoram"); + map(0x4000, 0x8fff).bankr("bank2").writeonly(); + map(0x9000, 0xbaff).ram(); + map(0xbb00, 0xbbff).ram().share("blaster_pal0"); + map(0xbc00, 0xbcff).ram().share("blaster_scan"); + map(0xbd00, 0xbfff).ram(); + map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram"); + map(0xc804, 0xc807).mirror(0x00f0).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc80c, 0xc80f).mirror(0x00f0).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc900, 0xc93f).w(this, FUNC(blaster_state::blaster_vram_select_w)); + map(0xc940, 0xc97f).w(this, FUNC(blaster_state::blaster_remap_select_w)); + map(0xc980, 0xc9bf).w(this, FUNC(blaster_state::blaster_bank_select_w)); + map(0xc9c0, 0xc9ff).w(this, FUNC(blaster_state::blaster_video_control_w)); + map(0xca00, 0xca07).mirror(0x00f8).w(this, FUNC(blaster_state::williams_blitter_w)); + map(0xcb00, 0xcbff).r(this, FUNC(blaster_state::williams_video_counter_r)); + map(0xcbff, 0xcbff).w(this, FUNC(blaster_state::williams_watchdog_reset_w)); + map(0xcc00, 0xcfff).ram().w(this, FUNC(blaster_state::williams_cmos_w)).share("nvram"); + map(0xd000, 0xffff).rom(); +} @@ -623,39 +628,42 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(williams2_state::williams2_common_map) - AM_RANGE(0x0000, 0xbfff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x0000, 0x7fff) AM_READ_BANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_DEVICE("bank8000", address_map_bank_device, amap8) - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(williams2_tileram_w) AM_SHARE("williams2_tile") - AM_RANGE(0xc800, 0xc87f) AM_WRITE(williams2_bank_select_w) - AM_RANGE(0xc880, 0xc887) AM_MIRROR(0x0078) AM_WRITE(williams_blitter_w) - AM_RANGE(0xc900, 0xc97f) AM_WRITE(williams2_watchdog_reset_w) - AM_RANGE(0xc980, 0xc983) AM_MIRROR(0x0070) AM_DEVREADWRITE("pia_1", pia6821_device, read, write) - AM_RANGE(0xc984, 0xc987) AM_MIRROR(0x0070) AM_DEVREADWRITE("pia_0", pia6821_device, read, write) - AM_RANGE(0xc98c, 0xc98f) AM_MIRROR(0x0070) AM_WRITE(williams2_7segment_w) - AM_RANGE(0xcb00, 0xcb1f) AM_WRITE(williams2_fg_select_w) - AM_RANGE(0xcb20, 0xcb3f) AM_WRITE(williams2_bg_select_w) - AM_RANGE(0xcb40, 0xcb5f) AM_WRITE(williams2_xscroll_low_w) - AM_RANGE(0xcb60, 0xcb7f) AM_WRITE(williams2_xscroll_high_w) - AM_RANGE(0xcb80, 0xcb9f) AM_WRITE(defender_video_control_w) - AM_RANGE(0xcba0, 0xcbbf) AM_WRITE(williams2_blit_window_enable_w) - AM_RANGE(0xcbe0, 0xcbef) AM_READ(williams_video_counter_r) - AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(williams_cmos_w) AM_SHARE("nvram") -ADDRESS_MAP_END +void williams2_state::williams2_common_map(address_map &map) +{ + map(0x0000, 0xbfff).ram().share("videoram"); + map(0x0000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).m(m_bank8000, FUNC(address_map_bank_device::amap8)); + map(0xc000, 0xc7ff).ram().w(this, FUNC(williams2_state::williams2_tileram_w)).share("williams2_tile"); + map(0xc800, 0xc87f).w(this, FUNC(williams2_state::williams2_bank_select_w)); + map(0xc880, 0xc887).mirror(0x0078).w(this, FUNC(williams2_state::williams_blitter_w)); + map(0xc900, 0xc97f).w(this, FUNC(williams2_state::williams2_watchdog_reset_w)); + map(0xc980, 0xc983).mirror(0x0070).rw(m_pia_1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc984, 0xc987).mirror(0x0070).rw(m_pia_0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xc98c, 0xc98f).mirror(0x0070).w(this, FUNC(williams2_state::williams2_7segment_w)); + map(0xcb00, 0xcb1f).w(this, FUNC(williams2_state::williams2_fg_select_w)); + map(0xcb20, 0xcb3f).w(this, FUNC(williams2_state::williams2_bg_select_w)); + map(0xcb40, 0xcb5f).w(this, FUNC(williams2_state::williams2_xscroll_low_w)); + map(0xcb60, 0xcb7f).w(this, FUNC(williams2_state::williams2_xscroll_high_w)); + map(0xcb80, 0xcb9f).w(this, FUNC(williams2_state::defender_video_control_w)); + map(0xcba0, 0xcbbf).w(this, FUNC(williams2_state::williams2_blit_window_enable_w)); + map(0xcbe0, 0xcbef).r(this, FUNC(williams2_state::williams_video_counter_r)); + map(0xcc00, 0xcfff).ram().w(this, FUNC(williams2_state::williams_cmos_w)).share("nvram"); +} -ADDRESS_MAP_START(williams2_state::williams2_bank8000_map) - AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("vram8000") - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(williams2_paletteram_w) AM_SHARE("paletteram") -ADDRESS_MAP_END +void williams2_state::williams2_bank8000_map(address_map &map) +{ + map(0x0000, 0x07ff).bankrw("vram8000"); + map(0x0800, 0x0fff).ram().w(this, FUNC(williams2_state::williams2_paletteram_w)).share("paletteram"); +} /* mysticm and inferno: D000-DFFF is RAM */ -ADDRESS_MAP_START(williams2_state::williams2_d000_ram_map) - AM_IMPORT_FROM(williams2_common_map) - AM_RANGE(0xd000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams2_state::williams2_d000_ram_map(address_map &map) +{ + williams2_common_map(map); + map(0xd000, 0xdfff).ram(); + map(0xe000, 0xffff).rom(); +} /* tshoot and joust2: D000-DFFF is ROM */ @@ -672,27 +680,30 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(williams_state::defender_sound_map) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2", pia6821_device, read, write) - AM_RANGE(0xb000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams_state::defender_sound_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xb000, 0xffff).rom(); +} -ADDRESS_MAP_START(williams_state::sound_map) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */ - AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2", pia6821_device, read, write) - AM_RANGE(0xb000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams_state::sound_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0080, 0x00ff).ram(); /* MC6810 RAM */ + map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xb000, 0xffff).rom(); +} /* Same as above, but for second sound board */ -ADDRESS_MAP_START(blaster_state::sound_map_b) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */ - AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2b", pia6821_device, read, write) - AM_RANGE(0xb000, 0xffff) AM_ROM -ADDRESS_MAP_END +void blaster_state::sound_map_b(address_map &map) +{ + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0080, 0x00ff).ram(); /* MC6810 RAM */ + map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2b, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xb000, 0xffff).rom(); +} @@ -702,12 +713,13 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(williams2_state::williams2_sound_map) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */ - AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia_2", pia6821_device, read, write) - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void williams2_state::williams2_sound_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0080, 0x00ff).ram(); /* MC6810 RAM */ + map(0x2000, 0x2003).mirror(0x1ffc).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0xe000, 0xffff).rom(); +} diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp index 6aa368ff2ca..ea4118c66ca 100644 --- a/src/mame/drivers/wink.cpp +++ b/src/mame/drivers/wink.cpp @@ -137,12 +137,13 @@ WRITE8_MEMBER(wink_state::sound_irq_w) //machine().scheduler().synchronize(); } -ADDRESS_MAP_START(wink_state::wink_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(bgram_w) AM_SHARE("videoram") -ADDRESS_MAP_END +void wink_state::wink_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x97ff).ram().share("nvram"); + map(0xa000, 0xa3ff).ram().w(this, FUNC(wink_state::bgram_w)).share("videoram"); +} READ8_MEMBER(wink_state::prot_r) @@ -170,40 +171,43 @@ WRITE8_MEMBER(wink_state::prot_w) //take a9-a15 and stuff them in a variable for later use. } -ADDRESS_MAP_START(wink_state::wink_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x1f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") //0x10-0x1f is likely to be something else +void wink_state::wink_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x1f).ram().w("palette", FUNC(palette_device::write8)).share("palette"); //0x10-0x1f is likely to be something else // AM_RANGE(0x20, 0x20) AM_WRITENOP //??? seems unused.. - AM_RANGE(0x21, 0x21) AM_WRITE(player_mux_w) //??? no mux on the pcb. - AM_RANGE(0x22, 0x22) AM_WRITE(tile_banking_w) + map(0x21, 0x21).w(this, FUNC(wink_state::player_mux_w)); //??? no mux on the pcb. + map(0x22, 0x22).w(this, FUNC(wink_state::tile_banking_w)); // AM_RANGE(0x23, 0x23) AM_WRITENOP //? // AM_RANGE(0x24, 0x24) AM_WRITENOP //cab Knocker like in q-bert! - AM_RANGE(0x25, 0x27) AM_WRITE(wink_coin_counter_w) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x60, 0x60) AM_WRITE(sound_irq_w) - AM_RANGE(0x80, 0x80) AM_READ(analog_port_r) - AM_RANGE(0xa0, 0xa0) AM_READ(player_inputs_r) - AM_RANGE(0xa4, 0xa4) AM_READ_PORT("DSW1") //dipswitch bank2 - AM_RANGE(0xa8, 0xa8) AM_READ_PORT("DSW2") //dipswitch bank1 + map(0x25, 0x27).w(this, FUNC(wink_state::wink_coin_counter_w)); + map(0x40, 0x40).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x60, 0x60).w(this, FUNC(wink_state::sound_irq_w)); + map(0x80, 0x80).r(this, FUNC(wink_state::analog_port_r)); + map(0xa0, 0xa0).r(this, FUNC(wink_state::player_inputs_r)); + map(0xa4, 0xa4).portr("DSW1"); //dipswitch bank2 + map(0xa8, 0xa8).portr("DSW2"); //dipswitch bank1 // AM_RANGE(0xac, 0xac) AM_WRITENOP //protection - loads video xor unit (written only once at startup) - AM_RANGE(0xb0, 0xb0) AM_READ_PORT("DSW3") //unused inputs - AM_RANGE(0xb4, 0xb4) AM_READ_PORT("DSW4") //dipswitch bank3 - AM_RANGE(0xc0, 0xdf) AM_WRITE(prot_w) //load load protection-buffer from upper address bus - AM_RANGE(0xc3, 0xc3) AM_READNOP //watchdog? - AM_RANGE(0xe0, 0xff) AM_READ(prot_r) //load math unit from buffer & lower address-bus -ADDRESS_MAP_END - -ADDRESS_MAP_START(wink_state::wink_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wink_state::wink_sound_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) - AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w) -ADDRESS_MAP_END + map(0xb0, 0xb0).portr("DSW3"); //unused inputs + map(0xb4, 0xb4).portr("DSW4"); //dipswitch bank3 + map(0xc0, 0xdf).w(this, FUNC(wink_state::prot_w)); //load load protection-buffer from upper address bus + map(0xc3, 0xc3).nopr(); //watchdog? + map(0xe0, 0xff).r(this, FUNC(wink_state::prot_r)); //load math unit from buffer & lower address-bus +} + +void wink_state::wink_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x8000, 0x8000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} + +void wink_state::wink_sound_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w)); +} static INPUT_PORTS_START( wink ) PORT_START("DIAL1") diff --git a/src/mame/drivers/wiping.cpp b/src/mame/drivers/wiping.cpp index 2e7265c2bf8..cdb48258630 100644 --- a/src/mame/drivers/wiping.cpp +++ b/src/mame/drivers/wiping.cpp @@ -78,27 +78,29 @@ WRITE_LINE_MEMBER(wiping_state::sound_irq_mask_w) m_sound_irq_mask = state; } -ADDRESS_MAP_START(wiping_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x88ff) AM_SHARE("spriteram") - AM_RANGE(0x8000, 0x8bff) AM_RAM - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0xa800, 0xa807) AM_READ(ports_r) - AM_RANGE(0xb000, 0xb7ff) AM_RAM - AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wiping_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_DEVWRITE("wiping", wiping_sound_device, sound_w) - AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("share2") - AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) -ADDRESS_MAP_END +void wiping_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x8000, 0x83ff).share("videoram"); + map(0x8400, 0x87ff).share("colorram"); + map(0x8800, 0x88ff).share("spriteram"); + map(0x8000, 0x8bff).ram(); + map(0x9000, 0x93ff).ram().share("share1"); + map(0x9800, 0x9bff).ram().share("share2"); + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0xa800, 0xa807).r(this, FUNC(wiping_state::ports_r)); + map(0xb000, 0xb7ff).ram(); + map(0xb800, 0xb800).w("watchdog", FUNC(watchdog_timer_device::reset_w)); +} + +void wiping_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x7fff).w("wiping", FUNC(wiping_sound_device::sound_w)); + map(0x9000, 0x93ff).ram().share("share1"); + map(0x9800, 0x9bff).ram().share("share2"); + map(0xa000, 0xa007).w("mainlatch", FUNC(ls259_device::write_d0)); +} static INPUT_PORTS_START( wiping ) diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp index 0267e54e7f9..7422844bbee 100644 --- a/src/mame/drivers/witch.cpp +++ b/src/mame/drivers/witch.cpp @@ -483,41 +483,43 @@ WRITE8_MEMBER(witch_state::yscroll_w) m_scrolly=data; } -ADDRESS_MAP_START(witch_state::map_main) - AM_RANGE(0x0000, UNBANKED_SIZE-1) AM_ROM - AM_RANGE(UNBANKED_SIZE, 0x7fff) AM_ROMBANK("mainbank") - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0xa004, 0xa007) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0xa008, 0xa008) AM_WRITE(main_write_a008) - AM_RANGE(0xa00c, 0xa00c) AM_READ_PORT("SERVICE") // stats / reset - AM_RANGE(0xa00e, 0xa00e) AM_READ_PORT("COINS") // coins/attendant keys - AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_WRITE(gfx0_vram_w) AM_SHARE("gfx0_vram") - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_WRITE(gfx0_cram_w) AM_SHARE("gfx0_cram") - AM_RANGE(0xc800, 0xcbff) AM_READWRITE(gfx1_vram_r, gfx1_vram_w) AM_SHARE("gfx1_vram") - AM_RANGE(0xcc00, 0xcfff) AM_READWRITE(gfx1_cram_r, gfx1_cram_w) AM_SHARE("gfx1_cram") - AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sprite_ram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf100, 0xf1ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf200, 0xffff) AM_RAM AM_SHARE("share2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(witch_state::map_sub) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0x8010, 0x8016) AM_DEVREADWRITE("essnd", es8712_device, read, write) - AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0xa004, 0xa007) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0xa008, 0xa008) AM_WRITE(sub_write_a008) - AM_RANGE(0xa00c, 0xa00c) AM_READ_PORT("SERVICE") // stats / reset - AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xf200, 0xffff) AM_RAM AM_SHARE("share2") -ADDRESS_MAP_END +void witch_state::map_main(address_map &map) +{ + map(0x0000, UNBANKED_SIZE-1).rom(); + map(UNBANKED_SIZE, 0x7fff).bankr("mainbank"); + map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8008, 0x8009).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0xa000, 0xa003).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa004, 0xa007).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa008, 0xa008).w(this, FUNC(witch_state::main_write_a008)); + map(0xa00c, 0xa00c).portr("SERVICE"); // stats / reset + map(0xa00e, 0xa00e).portr("COINS"); // coins/attendant keys + map(0xc000, 0xc3ff).ram().w(this, FUNC(witch_state::gfx0_vram_w)).share("gfx0_vram"); + map(0xc400, 0xc7ff).ram().w(this, FUNC(witch_state::gfx0_cram_w)).share("gfx0_cram"); + map(0xc800, 0xcbff).rw(this, FUNC(witch_state::gfx1_vram_r), FUNC(witch_state::gfx1_vram_w)).share("gfx1_vram"); + map(0xcc00, 0xcfff).rw(this, FUNC(witch_state::gfx1_cram_r), FUNC(witch_state::gfx1_cram_w)).share("gfx1_cram"); + map(0xd000, 0xdfff).ram().share("sprite_ram"); + map(0xe000, 0xe7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0xe800, 0xefff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0xf000, 0xf0ff).ram().share("share1"); + map(0xf100, 0xf1ff).ram().share("nvram"); + map(0xf200, 0xffff).ram().share("share2"); +} + + +void witch_state::map_sub(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8008, 0x8009).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8010, 0x8016).rw("essnd", FUNC(es8712_device::read), FUNC(es8712_device::write)); + map(0xa000, 0xa003).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa004, 0xa007).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa008, 0xa008).w(this, FUNC(witch_state::sub_write_a008)); + map(0xa00c, 0xa00c).portr("SERVICE"); // stats / reset + map(0xf000, 0xf0ff).ram().share("share1"); + map(0xf200, 0xffff).ram().share("share2"); +} static INPUT_PORTS_START( witch ) PORT_START("SERVICE") diff --git a/src/mame/drivers/wiz.cpp b/src/mame/drivers/wiz.cpp index a0b047eb0e2..e13e546f340 100644 --- a/src/mame/drivers/wiz.cpp +++ b/src/mame/drivers/wiz.cpp @@ -309,48 +309,52 @@ WRITE8_MEMBER(wiz_state::wiz_main_nmi_mask_w) } -ADDRESS_MAP_START(wiz_state::kungfut_main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE("videoram2") - AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE("colorram2") - AM_RANGE(0xd800, 0xd83f) AM_RAM AM_SHARE("attrram2") - AM_RANGE(0xd840, 0xd85f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram") - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("colorram") - AM_RANGE(0xe800, 0xe83f) AM_RAM AM_SHARE("attrram") - AM_RANGE(0xe840, 0xe85f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW0") - AM_RANGE(0xf001, 0xf001) AM_WRITE(wiz_main_nmi_mask_w) - AM_RANGE(0xf002, 0xf003) AM_WRITE(wiz_palette_bank_w) - AM_RANGE(0xf004, 0xf005) AM_WRITE(wiz_char_bank_w) - AM_RANGE(0xf006, 0xf006) AM_WRITE(wiz_flipx_w) - AM_RANGE(0xf007, 0xf007) AM_WRITE(wiz_flipy_w) - AM_RANGE(0xf008, 0xf008) AM_READ_PORT("DSW1") - AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0") - AM_RANGE(0xf018, 0xf018) AM_READ_PORT("IN1") - AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xf818, 0xf818) AM_WRITE(wiz_bgcolor_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wiz_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(wiz_state::wiz_main_map) - AM_IMPORT_FROM( kungfut_main_map ) - AM_RANGE(0xc800, 0xc801) AM_WRITE(wiz_coin_counter_w) - AM_RANGE(0xd400, 0xd400) AM_READ(wiz_protection_r) - AM_RANGE(0xf000, 0xf000) AM_WRITE(wiz_sprite_bank_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wiz_state::stinger_main_map) - AM_IMPORT_FROM( kungfut_main_map ) +void wiz_state::kungfut_main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xd000, 0xd3ff).ram().share("videoram2"); + map(0xd400, 0xd7ff).ram().share("colorram2"); + map(0xd800, 0xd83f).ram().share("attrram2"); + map(0xd840, 0xd85f).ram().share("spriteram2"); + map(0xe000, 0xe3ff).ram().share("videoram"); + map(0xe400, 0xe7ff).ram().share("colorram"); + map(0xe800, 0xe83f).ram().share("attrram"); + map(0xe840, 0xe85f).ram().share("spriteram"); + map(0xf000, 0xf000).portr("DSW0"); + map(0xf001, 0xf001).w(this, FUNC(wiz_state::wiz_main_nmi_mask_w)); + map(0xf002, 0xf003).w(this, FUNC(wiz_state::wiz_palette_bank_w)); + map(0xf004, 0xf005).w(this, FUNC(wiz_state::wiz_char_bank_w)); + map(0xf006, 0xf006).w(this, FUNC(wiz_state::wiz_flipx_w)); + map(0xf007, 0xf007).w(this, FUNC(wiz_state::wiz_flipy_w)); + map(0xf008, 0xf008).portr("DSW1"); + map(0xf010, 0xf010).portr("IN0"); + map(0xf018, 0xf018).portr("IN1"); + map(0xf800, 0xf800).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0xf818, 0xf818).w(this, FUNC(wiz_state::wiz_bgcolor_w)); +} + +void wiz_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0xbfff).rom().share("decrypted_opcodes"); +} + +void wiz_state::wiz_main_map(address_map &map) +{ + kungfut_main_map(map); + map(0xc800, 0xc801).w(this, FUNC(wiz_state::wiz_coin_counter_w)); + map(0xd400, 0xd400).r(this, FUNC(wiz_state::wiz_protection_r)); + map(0xf000, 0xf000).w(this, FUNC(wiz_state::wiz_sprite_bank_w)); +} + +void wiz_state::stinger_main_map(address_map &map) +{ + kungfut_main_map(map); // AM_RANGE(0xf008, 0xf00f) AM_WRITENOP // ? - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0xf808, 0xf808) AM_WRITE(stinger_explosion_w) - AM_RANGE(0xf80a, 0xf80a) AM_WRITE(stinger_shot_w) -ADDRESS_MAP_END + map(0xf800, 0xf800).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0xf808, 0xf808).w(this, FUNC(wiz_state::stinger_explosion_w)); + map(0xf80a, 0xf80a).w(this, FUNC(wiz_state::stinger_shot_w)); +} /**************************************************************************/ @@ -361,26 +365,28 @@ WRITE8_MEMBER(wiz_state::wiz_sound_nmi_mask_w) } -ADDRESS_MAP_START(wiz_state::kungfut_sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("8910.3", ay8910_device, address_data_w) - AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("8910.1", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("8910.2", ay8910_device, address_data_w) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(wiz_sound_nmi_mask_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wiz_state::stinger_sound_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(wiz_sound_nmi_mask_w) - AM_RANGE(0x4000, 0x4000) AM_WRITENOP // ? - AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("8910.1", ay8910_device, address_data_w) - AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("8910.2", ay8910_device, address_data_w) - AM_RANGE(0x5000, 0x7fff) AM_READNOP // prevent error.log spam, cpu jumps here by accident -ADDRESS_MAP_END +void wiz_state::kungfut_sound_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x4001).w("8910.3", FUNC(ay8910_device::address_data_w)); + map(0x5000, 0x5001).w("8910.1", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).w("8910.2", FUNC(ay8910_device::address_data_w)); + map(0x7000, 0x7000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(wiz_state::wiz_sound_nmi_mask_w)); +} + +void wiz_state::stinger_sound_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x3000, 0x3000).r("soundlatch", FUNC(generic_latch_8_device::read)).w(this, FUNC(wiz_state::wiz_sound_nmi_mask_w)); + map(0x4000, 0x4000).nopw(); // ? + map(0x5000, 0x5001).w("8910.1", FUNC(ay8910_device::address_data_w)); + map(0x6000, 0x6001).w("8910.2", FUNC(ay8910_device::address_data_w)); + map(0x5000, 0x7fff).nopr(); // prevent error.log spam, cpu jumps here by accident +} diff --git a/src/mame/drivers/wmg.cpp b/src/mame/drivers/wmg.cpp index ac7982eba5f..3b4f9fa65ff 100644 --- a/src/mame/drivers/wmg.cpp +++ b/src/mame/drivers/wmg.cpp @@ -122,23 +122,25 @@ private: * Address Map * *************************************/ -ADDRESS_MAP_START(wmg_state::wmg_cpu1) - AM_RANGE(0x0000, 0x8fff) AM_READ_BANK("bank1") AM_WRITEONLY AM_SHARE("videoram") - AM_RANGE(0x9000, 0xbfff) AM_RAM - AM_RANGE(0xc000, 0xcfff) AM_ROMBANK("bank7") - AM_RANGE(0xd000, 0xffff) AM_ROMBANK("bank5") - AM_RANGE(0xd000, 0xd000) AM_WRITE(wmg_d000_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(wmg_state::wmg_cpu2) - AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */ - AM_RANGE(0x0080, 0x00ff) AM_RAM /* MC6810 RAM */ - AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia_2", pia6821_device, read, write) +void wmg_state::wmg_cpu1(address_map &map) +{ + map(0x0000, 0x8fff).bankr("bank1").writeonly().share("videoram"); + map(0x9000, 0xbfff).ram(); + map(0xc000, 0xcfff).bankr("bank7"); + map(0xd000, 0xffff).bankr("bank5"); + map(0xd000, 0xd000).w(this, FUNC(wmg_state::wmg_d000_w)); +} + +void wmg_state::wmg_cpu2(address_map &map) +{ + map(0x0000, 0x007f).ram(); /* internal RAM */ + map(0x0080, 0x00ff).ram(); /* MC6810 RAM */ + map(0x0400, 0x0403).mirror(0x8000).rw(m_pia_2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* These next 2 are actually banked in CPU 1, but its not something Mame can handle very well. Placed here instead. */ - AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITEONLY AM_SHARE("paletteram") - AM_RANGE(0xd000, 0xefff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xffff) AM_ROMBANK("bank6") -ADDRESS_MAP_END + map(0xc000, 0xc00f).mirror(0x03f0).writeonly().share("paletteram"); + map(0xd000, 0xefff).ram().share("nvram"); + map(0xf000, 0xffff).bankr("bank6"); +} /*************************************************************** * diff --git a/src/mame/drivers/wms.cpp b/src/mame/drivers/wms.cpp index 0484c351d58..dae417907c9 100644 --- a/src/mame/drivers/wms.cpp +++ b/src/mame/drivers/wms.cpp @@ -123,26 +123,30 @@ uint32_t wms_state::screen_update_wms(screen_device &screen, bitmap_ind16 &bitma * Memory Map Information * *********************************************/ -ADDRESS_MAP_START(wms_state::wms_map) - AM_RANGE(0x00000, 0x0ffff) AM_RAM - AM_RANGE(0x60000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x60000) // TODO: fix me -ADDRESS_MAP_END +void wms_state::wms_map(address_map &map) +{ + map(0x00000, 0x0ffff).ram(); + map(0x60000, 0xfffff).rom().region("maincpu", 0x60000); // TODO: fix me +} READ8_MEMBER(wms_state::test_r) { return 1; } -ADDRESS_MAP_START(wms_state::wms_io) - AM_RANGE(0x1207, 0x1207) AM_READ(test_r) -ADDRESS_MAP_END +void wms_state::wms_io(address_map &map) +{ + map(0x1207, 0x1207).r(this, FUNC(wms_state::test_r)); +} -ADDRESS_MAP_START(wms_state::adsp_program_map) -ADDRESS_MAP_END +void wms_state::adsp_program_map(address_map &map) +{ +} -ADDRESS_MAP_START(wms_state::adsp_data_map) -ADDRESS_MAP_END +void wms_state::adsp_data_map(address_map &map) +{ +} /********************************************* diff --git a/src/mame/drivers/wolfpack.cpp b/src/mame/drivers/wolfpack.cpp index 9967a8193b6..8ccce6375c4 100644 --- a/src/mame/drivers/wolfpack.cpp +++ b/src/mame/drivers/wolfpack.cpp @@ -127,44 +127,45 @@ WRITE8_MEMBER(wolfpack_state::coldetres_w) } -ADDRESS_MAP_START(wolfpack_state::main_map) - AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100) - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("INPUTS") - AM_RANGE(0x1000, 0x10ff) AM_WRITEONLY AM_SHARE("alpha_num_ram") - AM_RANGE(0x2000, 0x2000) AM_READ(misc_r) - AM_RANGE(0x2000, 0x2000) AM_WRITE(high_explo_w) - AM_RANGE(0x2001, 0x2001) AM_WRITE(sonar_ping_w) - AM_RANGE(0x2002, 0x2002) AM_WRITE(sirlat_w) - AM_RANGE(0x2003, 0x2003) AM_WRITE(pt_sound_w) - AM_RANGE(0x2004, 0x2004) AM_WRITE(start_speech_w) - AM_RANGE(0x2005, 0x2005) AM_WRITE(launch_torpedo_w) - AM_RANGE(0x2006, 0x2006) AM_WRITE(low_explo_w) - AM_RANGE(0x2007, 0x2007) AM_WRITE(screw_cont_w) - AM_RANGE(0x2008, 0x2008) AM_WRITE(video_invert_w) - AM_RANGE(0x2009, 0x2009) AM_WRITE(ship_reflect_w) - AM_RANGE(0x200a, 0x200a) AM_WRITE(lamp_flash_w) - AM_RANGE(0x200c, 0x200c) AM_WRITE(credit_w) - AM_RANGE(0x200d, 0x200d) AM_WRITE(attract_w) - AM_RANGE(0x200e, 0x200e) AM_WRITE(pt_pos_select_w) - AM_RANGE(0x200f, 0x200f) AM_WRITE(warning_light_w) - AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW") - AM_RANGE(0x3000, 0x3000) AM_WRITE(audamp_w) - AM_RANGE(0x3001, 0x3001) AM_WRITE(pt_horz_w) - AM_RANGE(0x3003, 0x3003) AM_WRITE(pt_pic_w) - AM_RANGE(0x3004, 0x3004) AM_WRITE(word_w) - AM_RANGE(0x3007, 0x3007) AM_WRITE(coldetres_w) - AM_RANGE(0x4000, 0x4000) AM_WRITE(ship_h_w) - AM_RANGE(0x4001, 0x4001) AM_WRITE(torpedo_pic_w) - AM_RANGE(0x4002, 0x4002) AM_WRITE(ship_size_w) - AM_RANGE(0x4003, 0x4003) AM_WRITE(ship_h_precess_w) - AM_RANGE(0x4004, 0x4004) AM_WRITE(ship_pic_w) - AM_RANGE(0x4005, 0x4005) AM_WRITE(torpedo_h_w) - AM_RANGE(0x4006, 0x4006) AM_WRITE(torpedo_v_w) - AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x7000, 0x7fff) AM_ROM - AM_RANGE(0x9000, 0x9000) AM_READNOP /* debugger ROM location? */ - AM_RANGE(0xf000, 0xffff) AM_ROM -ADDRESS_MAP_END +void wolfpack_state::main_map(address_map &map) +{ + map(0x0000, 0x00ff).ram().mirror(0x100); + map(0x1000, 0x1000).portr("INPUTS"); + map(0x1000, 0x10ff).writeonly().share("alpha_num_ram"); + map(0x2000, 0x2000).r(this, FUNC(wolfpack_state::misc_r)); + map(0x2000, 0x2000).w(this, FUNC(wolfpack_state::high_explo_w)); + map(0x2001, 0x2001).w(this, FUNC(wolfpack_state::sonar_ping_w)); + map(0x2002, 0x2002).w(this, FUNC(wolfpack_state::sirlat_w)); + map(0x2003, 0x2003).w(this, FUNC(wolfpack_state::pt_sound_w)); + map(0x2004, 0x2004).w(this, FUNC(wolfpack_state::start_speech_w)); + map(0x2005, 0x2005).w(this, FUNC(wolfpack_state::launch_torpedo_w)); + map(0x2006, 0x2006).w(this, FUNC(wolfpack_state::low_explo_w)); + map(0x2007, 0x2007).w(this, FUNC(wolfpack_state::screw_cont_w)); + map(0x2008, 0x2008).w(this, FUNC(wolfpack_state::video_invert_w)); + map(0x2009, 0x2009).w(this, FUNC(wolfpack_state::ship_reflect_w)); + map(0x200a, 0x200a).w(this, FUNC(wolfpack_state::lamp_flash_w)); + map(0x200c, 0x200c).w(this, FUNC(wolfpack_state::credit_w)); + map(0x200d, 0x200d).w(this, FUNC(wolfpack_state::attract_w)); + map(0x200e, 0x200e).w(this, FUNC(wolfpack_state::pt_pos_select_w)); + map(0x200f, 0x200f).w(this, FUNC(wolfpack_state::warning_light_w)); + map(0x3000, 0x3000).portr("DSW"); + map(0x3000, 0x3000).w(this, FUNC(wolfpack_state::audamp_w)); + map(0x3001, 0x3001).w(this, FUNC(wolfpack_state::pt_horz_w)); + map(0x3003, 0x3003).w(this, FUNC(wolfpack_state::pt_pic_w)); + map(0x3004, 0x3004).w(this, FUNC(wolfpack_state::word_w)); + map(0x3007, 0x3007).w(this, FUNC(wolfpack_state::coldetres_w)); + map(0x4000, 0x4000).w(this, FUNC(wolfpack_state::ship_h_w)); + map(0x4001, 0x4001).w(this, FUNC(wolfpack_state::torpedo_pic_w)); + map(0x4002, 0x4002).w(this, FUNC(wolfpack_state::ship_size_w)); + map(0x4003, 0x4003).w(this, FUNC(wolfpack_state::ship_h_precess_w)); + map(0x4004, 0x4004).w(this, FUNC(wolfpack_state::ship_pic_w)); + map(0x4005, 0x4005).w(this, FUNC(wolfpack_state::torpedo_h_w)); + map(0x4006, 0x4006).w(this, FUNC(wolfpack_state::torpedo_v_w)); + map(0x5000, 0x5fff).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x7000, 0x7fff).rom(); + map(0x9000, 0x9000).nopr(); /* debugger ROM location? */ + map(0xf000, 0xffff).rom(); +} static INPUT_PORTS_START( wolfpack ) diff --git a/src/mame/drivers/wpc_95.cpp b/src/mame/drivers/wpc_95.cpp index 962b057ce6b..d8325ac856d 100644 --- a/src/mame/drivers/wpc_95.cpp +++ b/src/mame/drivers/wpc_95.cpp @@ -119,44 +119,45 @@ private: bool sc_aux_lamps_handler(int sid, bool state); }; -ADDRESS_MAP_START(wpc_95_state::wpc_95_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("mainram") - - AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmd0") - AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmd2") - AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmd4") - AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmd6") - AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmd8") - AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmda") - - AM_RANGE(0x3fb8, 0x3fbf) AM_DEVICE("dmd", wpc_dmd_device, registers) - - AM_RANGE(0x3fdc, 0x3fdc) AM_READWRITE(dcs_data_r, dcs_data_w) - AM_RANGE(0x3fdd, 0x3fdd) AM_READWRITE(dcs_ctrl_r, dcs_reset_w) - - AM_RANGE(0x3fe0, 0x3fe3) AM_DEVWRITE("out", wpc_out_device, out_w) - AM_RANGE(0x3fe4, 0x3fe4) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, row_w) - AM_RANGE(0x3fe5, 0x3fe5) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, col_w) - AM_RANGE(0x3fe6, 0x3fe6) AM_DEVWRITE("out", wpc_out_device, gi_w) - AM_RANGE(0x3fe7, 0x3fe7) AM_READ_PORT("DSW") - AM_RANGE(0x3fe8, 0x3fe8) AM_READ_PORT("DOOR") - AM_RANGE(0x3fe9, 0x3fe9) AM_DEVREAD("pic", wpc_pic_device, read) - AM_RANGE(0x3fea, 0x3fea) AM_DEVWRITE("pic", wpc_pic_device, write) - - AM_RANGE(0x3fee, 0x3fee) AM_DEVWRITE("out", wpc_out_device, out4_w) - AM_RANGE(0x3fef, 0x3fef) AM_READ_PORT("FLIPPERS") - - AM_RANGE(0x3ff2, 0x3ff2) AM_DEVWRITE("out", wpc_out_device, led_w) - AM_RANGE(0x3ff3, 0x3ff3) AM_READNOP AM_WRITE(irq_ack_w) - AM_RANGE(0x3ff4, 0x3ff7) AM_DEVICE("shift", wpc_shift_device, registers) - AM_RANGE(0x3ff8, 0x3ff8) AM_READ(firq_src_r) AM_WRITENOP // ack? - AM_RANGE(0x3ffa, 0x3ffb) AM_READ(rtc_r) - AM_RANGE(0x3ffc, 0x3ffc) AM_WRITE(bank_w) - AM_RANGE(0x3ffd, 0x3ffe) AM_NOP // memory protection stuff? - AM_RANGE(0x3fff, 0x3fff) AM_READWRITE(zc_r, watchdog_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0xf8000) -ADDRESS_MAP_END +void wpc_95_state::wpc_95_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("mainram"); + + map(0x3000, 0x31ff).bankrw("dmd0"); + map(0x3200, 0x33ff).bankrw("dmd2"); + map(0x3400, 0x35ff).bankrw("dmd4"); + map(0x3600, 0x37ff).bankrw("dmd6"); + map(0x3800, 0x39ff).bankrw("dmd8"); + map(0x3a00, 0x3bff).bankrw("dmda"); + + map(0x3fb8, 0x3fbf).m("dmd", FUNC(wpc_dmd_device::registers)); + + map(0x3fdc, 0x3fdc).rw(this, FUNC(wpc_95_state::dcs_data_r), FUNC(wpc_95_state::dcs_data_w)); + map(0x3fdd, 0x3fdd).rw(this, FUNC(wpc_95_state::dcs_ctrl_r), FUNC(wpc_95_state::dcs_reset_w)); + + map(0x3fe0, 0x3fe3).w(out, FUNC(wpc_out_device::out_w)); + map(0x3fe4, 0x3fe4).nopr().w(lamp, FUNC(wpc_lamp_device::row_w)); + map(0x3fe5, 0x3fe5).nopr().w(lamp, FUNC(wpc_lamp_device::col_w)); + map(0x3fe6, 0x3fe6).w(out, FUNC(wpc_out_device::gi_w)); + map(0x3fe7, 0x3fe7).portr("DSW"); + map(0x3fe8, 0x3fe8).portr("DOOR"); + map(0x3fe9, 0x3fe9).r(pic, FUNC(wpc_pic_device::read)); + map(0x3fea, 0x3fea).w(pic, FUNC(wpc_pic_device::write)); + + map(0x3fee, 0x3fee).w(out, FUNC(wpc_out_device::out4_w)); + map(0x3fef, 0x3fef).portr("FLIPPERS"); + + map(0x3ff2, 0x3ff2).w(out, FUNC(wpc_out_device::led_w)); + map(0x3ff3, 0x3ff3).nopr().w(this, FUNC(wpc_95_state::irq_ack_w)); + map(0x3ff4, 0x3ff7).m("shift", FUNC(wpc_shift_device::registers)); + map(0x3ff8, 0x3ff8).r(this, FUNC(wpc_95_state::firq_src_r)).nopw(); // ack? + map(0x3ffa, 0x3ffb).r(this, FUNC(wpc_95_state::rtc_r)); + map(0x3ffc, 0x3ffc).w(this, FUNC(wpc_95_state::bank_w)); + map(0x3ffd, 0x3ffe).noprw(); // memory protection stuff? + map(0x3fff, 0x3fff).rw(this, FUNC(wpc_95_state::zc_r), FUNC(wpc_95_state::watchdog_w)); + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom().region("maincpu", 0xf8000); +} READ8_MEMBER(wpc_95_state::dcs_data_r) { diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp index 1f773246ba2..dbc33ccfc15 100644 --- a/src/mame/drivers/wpc_an.cpp +++ b/src/mame/drivers/wpc_an.cpp @@ -71,13 +71,14 @@ private: }; -ADDRESS_MAP_START(wpc_an_state::wpc_an_map) - AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w) - AM_RANGE(0x3000, 0x3faf) AM_RAM - AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("fixed",0) -ADDRESS_MAP_END +void wpc_an_state::wpc_an_map(address_map &map) +{ + map(0x0000, 0x2fff).rw(this, FUNC(wpc_an_state::ram_r), FUNC(wpc_an_state::ram_w)); + map(0x3000, 0x3faf).ram(); + map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device + map(0x4000, 0x7fff).bankr("cpubank"); + map(0x8000, 0xffff).rom().region("fixed", 0); +} static INPUT_PORTS_START( wpc_an ) PORT_START("INP0") diff --git a/src/mame/drivers/wpc_dcs.cpp b/src/mame/drivers/wpc_dcs.cpp index fbf595d7f7d..63073bd7fda 100644 --- a/src/mame/drivers/wpc_dcs.cpp +++ b/src/mame/drivers/wpc_dcs.cpp @@ -73,43 +73,44 @@ private: uint16_t rtc_base_day; }; -ADDRESS_MAP_START(wpc_dcs_state::wpc_dcs_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("mainram") - - AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmd0") - AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmd2") - AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmd4") - AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmd6") - AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmd8") - AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmda") - - AM_RANGE(0x3fb8, 0x3fbf) AM_DEVICE("dmd", wpc_dmd_device, registers) - - AM_RANGE(0x3fd4, 0x3fd4) AM_READ_PORT("FLIPPERS") AM_DEVWRITE("out", wpc_out_device, out4_w) - - AM_RANGE(0x3fdc, 0x3fdc) AM_READWRITE(dcs_data_r, dcs_data_w) - AM_RANGE(0x3fdd, 0x3fdd) AM_READWRITE(dcs_ctrl_r, dcs_reset_w) - - AM_RANGE(0x3fe0, 0x3fe3) AM_DEVWRITE("out", wpc_out_device, out_w) - AM_RANGE(0x3fe4, 0x3fe4) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, row_w) - AM_RANGE(0x3fe5, 0x3fe5) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, col_w) - AM_RANGE(0x3fe6, 0x3fe6) AM_DEVWRITE("out", wpc_out_device, gi_w) - AM_RANGE(0x3fe7, 0x3fe7) AM_READ_PORT("DSW") - AM_RANGE(0x3fe8, 0x3fe8) AM_READ_PORT("DOOR") - AM_RANGE(0x3fe9, 0x3fe9) AM_READ(switches_r) - AM_RANGE(0x3fea, 0x3fea) AM_WRITE(switches_w) - - AM_RANGE(0x3ff2, 0x3ff2) AM_DEVWRITE("out", wpc_out_device, led_w) - AM_RANGE(0x3ff3, 0x3ff3) AM_READNOP AM_WRITE(irq_ack_w) - AM_RANGE(0x3ff4, 0x3ff7) AM_DEVICE("shift", wpc_shift_device, registers) - AM_RANGE(0x3ff8, 0x3ff8) AM_READ(firq_src_r) AM_WRITENOP // ack? - AM_RANGE(0x3ffa, 0x3ffb) AM_READ(rtc_r) - AM_RANGE(0x3ffc, 0x3ffc) AM_WRITE(bank_w) - AM_RANGE(0x3ffd, 0x3ffe) AM_NOP // memory protection stuff? - AM_RANGE(0x3fff, 0x3fff) AM_READWRITE(zc_r, watchdog_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000) -ADDRESS_MAP_END +void wpc_dcs_state::wpc_dcs_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("mainram"); + + map(0x3000, 0x31ff).bankrw("dmd0"); + map(0x3200, 0x33ff).bankrw("dmd2"); + map(0x3400, 0x35ff).bankrw("dmd4"); + map(0x3600, 0x37ff).bankrw("dmd6"); + map(0x3800, 0x39ff).bankrw("dmd8"); + map(0x3a00, 0x3bff).bankrw("dmda"); + + map(0x3fb8, 0x3fbf).m("dmd", FUNC(wpc_dmd_device::registers)); + + map(0x3fd4, 0x3fd4).portr("FLIPPERS").w(out, FUNC(wpc_out_device::out4_w)); + + map(0x3fdc, 0x3fdc).rw(this, FUNC(wpc_dcs_state::dcs_data_r), FUNC(wpc_dcs_state::dcs_data_w)); + map(0x3fdd, 0x3fdd).rw(this, FUNC(wpc_dcs_state::dcs_ctrl_r), FUNC(wpc_dcs_state::dcs_reset_w)); + + map(0x3fe0, 0x3fe3).w(out, FUNC(wpc_out_device::out_w)); + map(0x3fe4, 0x3fe4).nopr().w(lamp, FUNC(wpc_lamp_device::row_w)); + map(0x3fe5, 0x3fe5).nopr().w(lamp, FUNC(wpc_lamp_device::col_w)); + map(0x3fe6, 0x3fe6).w(out, FUNC(wpc_out_device::gi_w)); + map(0x3fe7, 0x3fe7).portr("DSW"); + map(0x3fe8, 0x3fe8).portr("DOOR"); + map(0x3fe9, 0x3fe9).r(this, FUNC(wpc_dcs_state::switches_r)); + map(0x3fea, 0x3fea).w(this, FUNC(wpc_dcs_state::switches_w)); + + map(0x3ff2, 0x3ff2).w(out, FUNC(wpc_out_device::led_w)); + map(0x3ff3, 0x3ff3).nopr().w(this, FUNC(wpc_dcs_state::irq_ack_w)); + map(0x3ff4, 0x3ff7).m("shift", FUNC(wpc_shift_device::registers)); + map(0x3ff8, 0x3ff8).r(this, FUNC(wpc_dcs_state::firq_src_r)).nopw(); // ack? + map(0x3ffa, 0x3ffb).r(this, FUNC(wpc_dcs_state::rtc_r)); + map(0x3ffc, 0x3ffc).w(this, FUNC(wpc_dcs_state::bank_w)); + map(0x3ffd, 0x3ffe).noprw(); // memory protection stuff? + map(0x3fff, 0x3fff).rw(this, FUNC(wpc_dcs_state::zc_r), FUNC(wpc_dcs_state::watchdog_w)); + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom().region("maincpu", 0x78000); +} READ8_MEMBER(wpc_dcs_state::dcs_data_r) { diff --git a/src/mame/drivers/wpc_dot.cpp b/src/mame/drivers/wpc_dot.cpp index 7d4b046e972..9e7879dc3b8 100644 --- a/src/mame/drivers/wpc_dot.cpp +++ b/src/mame/drivers/wpc_dot.cpp @@ -9,19 +9,20 @@ #include "speaker.h" -ADDRESS_MAP_START(wpc_dot_state::wpc_dot_map) - AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w) - AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1") - AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2") - AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3") - AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4") - AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5") - AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6") - AM_RANGE(0x3c00, 0x3faf) AM_RAM - AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank") - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank") -ADDRESS_MAP_END +void wpc_dot_state::wpc_dot_map(address_map &map) +{ + map(0x0000, 0x2fff).rw(this, FUNC(wpc_dot_state::ram_r), FUNC(wpc_dot_state::ram_w)); + map(0x3000, 0x31ff).bankrw("dmdbank1"); + map(0x3200, 0x33ff).bankrw("dmdbank2"); + map(0x3400, 0x35ff).bankrw("dmdbank3"); + map(0x3600, 0x37ff).bankrw("dmdbank4"); + map(0x3800, 0x39ff).bankrw("dmdbank5"); + map(0x3a00, 0x3bff).bankrw("dmdbank6"); + map(0x3c00, 0x3faf).ram(); + map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device + map(0x4000, 0x7fff).bankr("cpubank"); + map(0x8000, 0xffff).bankr("fixedbank"); +} static INPUT_PORTS_START( wpc_dot ) PORT_START("INP0") diff --git a/src/mame/drivers/wpc_flip1.cpp b/src/mame/drivers/wpc_flip1.cpp index 81ea8a18dfa..8bb7bf1d17e 100644 --- a/src/mame/drivers/wpc_flip1.cpp +++ b/src/mame/drivers/wpc_flip1.cpp @@ -9,19 +9,20 @@ #include "speaker.h" -ADDRESS_MAP_START(wpc_flip1_state::wpc_flip1_map) - AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w) - AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1") - AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2") - AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3") - AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4") - AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5") - AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6") - AM_RANGE(0x3c00, 0x3faf) AM_RAM - AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank") - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank") -ADDRESS_MAP_END +void wpc_flip1_state::wpc_flip1_map(address_map &map) +{ + map(0x0000, 0x2fff).rw(this, FUNC(wpc_flip1_state::ram_r), FUNC(wpc_flip1_state::ram_w)); + map(0x3000, 0x31ff).bankrw("dmdbank1"); + map(0x3200, 0x33ff).bankrw("dmdbank2"); + map(0x3400, 0x35ff).bankrw("dmdbank3"); + map(0x3600, 0x37ff).bankrw("dmdbank4"); + map(0x3800, 0x39ff).bankrw("dmdbank5"); + map(0x3a00, 0x3bff).bankrw("dmdbank6"); + map(0x3c00, 0x3faf).ram(); + map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device + map(0x4000, 0x7fff).bankr("cpubank"); + map(0x8000, 0xffff).bankr("fixedbank"); +} static INPUT_PORTS_START( wpc_flip1 ) PORT_START("INP0") diff --git a/src/mame/drivers/wpc_flip2.cpp b/src/mame/drivers/wpc_flip2.cpp index ecd513bedf1..2ccd0564864 100644 --- a/src/mame/drivers/wpc_flip2.cpp +++ b/src/mame/drivers/wpc_flip2.cpp @@ -9,19 +9,20 @@ #include "speaker.h" -ADDRESS_MAP_START(wpc_flip2_state::wpc_flip2_map) - AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w) - AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmdbank1") - AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmdbank2") - AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmdbank3") - AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmdbank4") - AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmdbank5") - AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmdbank6") - AM_RANGE(0x3c00, 0x3faf) AM_RAM - AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank") - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("fixedbank") -ADDRESS_MAP_END +void wpc_flip2_state::wpc_flip2_map(address_map &map) +{ + map(0x0000, 0x2fff).rw(this, FUNC(wpc_flip2_state::ram_r), FUNC(wpc_flip2_state::ram_w)); + map(0x3000, 0x31ff).bankrw("dmdbank1"); + map(0x3200, 0x33ff).bankrw("dmdbank2"); + map(0x3400, 0x35ff).bankrw("dmdbank3"); + map(0x3600, 0x37ff).bankrw("dmdbank4"); + map(0x3800, 0x39ff).bankrw("dmdbank5"); + map(0x3a00, 0x3bff).bankrw("dmdbank6"); + map(0x3c00, 0x3faf).ram(); + map(0x3fb0, 0x3fff).rw(m_wpc, FUNC(wpc_device::read), FUNC(wpc_device::write)); // WPC device + map(0x4000, 0x7fff).bankr("cpubank"); + map(0x8000, 0xffff).bankr("fixedbank"); +} static INPUT_PORTS_START( wpc_flip2 ) PORT_START("INP0") diff --git a/src/mame/drivers/wpc_s.cpp b/src/mame/drivers/wpc_s.cpp index 852e559af01..f0bea8e25e6 100644 --- a/src/mame/drivers/wpc_s.cpp +++ b/src/mame/drivers/wpc_s.cpp @@ -100,43 +100,44 @@ private: uint16_t rtc_base_day; }; -ADDRESS_MAP_START(wpc_s_state::wpc_s_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0x3000, 0x31ff) AM_RAMBANK("dmd0") - AM_RANGE(0x3200, 0x33ff) AM_RAMBANK("dmd2") - AM_RANGE(0x3400, 0x35ff) AM_RAMBANK("dmd4") - AM_RANGE(0x3600, 0x37ff) AM_RAMBANK("dmd6") - AM_RANGE(0x3800, 0x39ff) AM_RAMBANK("dmd8") - AM_RANGE(0x3a00, 0x3bff) AM_RAMBANK("dmda") - - AM_RANGE(0x3fb8, 0x3fbf) AM_DEVICE("dmd", wpc_dmd_device, registers) - - AM_RANGE(0x3fd4, 0x3fd4) AM_READ_PORT("FLIPPERS") AM_DEVWRITE("out", wpc_out_device, out4_w) - - AM_RANGE(0x3fdc, 0x3fdc) AM_READWRITE(dcs_data_r, dcs_data_w) - AM_RANGE(0x3fdd, 0x3fdd) AM_READWRITE(dcs_ctrl_r, dcs_reset_w) - - AM_RANGE(0x3fe0, 0x3fe3) AM_DEVWRITE("out", wpc_out_device, out_w) - AM_RANGE(0x3fe4, 0x3fe4) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, row_w) - AM_RANGE(0x3fe5, 0x3fe5) AM_READNOP AM_DEVWRITE("lamp", wpc_lamp_device, col_w) - AM_RANGE(0x3fe6, 0x3fe6) AM_DEVWRITE("out", wpc_out_device, gi_w) - AM_RANGE(0x3fe7, 0x3fe7) AM_READ_PORT("DSW") - AM_RANGE(0x3fe8, 0x3fe8) AM_READ_PORT("DOOR") - AM_RANGE(0x3fe9, 0x3fe9) AM_DEVREAD("pic", wpc_pic_device, read) - AM_RANGE(0x3fea, 0x3fea) AM_DEVWRITE("pic", wpc_pic_device, write) - - AM_RANGE(0x3ff2, 0x3ff2) AM_DEVWRITE("out", wpc_out_device, led_w) - AM_RANGE(0x3ff3, 0x3ff3) AM_READNOP AM_WRITE(irq_ack_w) - AM_RANGE(0x3ff4, 0x3ff7) AM_DEVICE("shift", wpc_shift_device, registers) - AM_RANGE(0x3ff8, 0x3ff8) AM_READ(firq_src_r) AM_WRITENOP // ack? - AM_RANGE(0x3ffa, 0x3ffb) AM_READ(rtc_r) - AM_RANGE(0x3ffc, 0x3ffc) AM_WRITE(bank_w) - AM_RANGE(0x3ffd, 0x3ffe) AM_NOP // memory protection stuff? - AM_RANGE(0x3fff, 0x3fff) AM_READWRITE(zc_r, watchdog_w) - - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") - AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000) -ADDRESS_MAP_END +void wpc_s_state::wpc_s_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("mainram"); + map(0x3000, 0x31ff).bankrw("dmd0"); + map(0x3200, 0x33ff).bankrw("dmd2"); + map(0x3400, 0x35ff).bankrw("dmd4"); + map(0x3600, 0x37ff).bankrw("dmd6"); + map(0x3800, 0x39ff).bankrw("dmd8"); + map(0x3a00, 0x3bff).bankrw("dmda"); + + map(0x3fb8, 0x3fbf).m("dmd", FUNC(wpc_dmd_device::registers)); + + map(0x3fd4, 0x3fd4).portr("FLIPPERS").w(out, FUNC(wpc_out_device::out4_w)); + + map(0x3fdc, 0x3fdc).rw(this, FUNC(wpc_s_state::dcs_data_r), FUNC(wpc_s_state::dcs_data_w)); + map(0x3fdd, 0x3fdd).rw(this, FUNC(wpc_s_state::dcs_ctrl_r), FUNC(wpc_s_state::dcs_reset_w)); + + map(0x3fe0, 0x3fe3).w(out, FUNC(wpc_out_device::out_w)); + map(0x3fe4, 0x3fe4).nopr().w(lamp, FUNC(wpc_lamp_device::row_w)); + map(0x3fe5, 0x3fe5).nopr().w(lamp, FUNC(wpc_lamp_device::col_w)); + map(0x3fe6, 0x3fe6).w(out, FUNC(wpc_out_device::gi_w)); + map(0x3fe7, 0x3fe7).portr("DSW"); + map(0x3fe8, 0x3fe8).portr("DOOR"); + map(0x3fe9, 0x3fe9).r(pic, FUNC(wpc_pic_device::read)); + map(0x3fea, 0x3fea).w(pic, FUNC(wpc_pic_device::write)); + + map(0x3ff2, 0x3ff2).w(out, FUNC(wpc_out_device::led_w)); + map(0x3ff3, 0x3ff3).nopr().w(this, FUNC(wpc_s_state::irq_ack_w)); + map(0x3ff4, 0x3ff7).m("shift", FUNC(wpc_shift_device::registers)); + map(0x3ff8, 0x3ff8).r(this, FUNC(wpc_s_state::firq_src_r)).nopw(); // ack? + map(0x3ffa, 0x3ffb).r(this, FUNC(wpc_s_state::rtc_r)); + map(0x3ffc, 0x3ffc).w(this, FUNC(wpc_s_state::bank_w)); + map(0x3ffd, 0x3ffe).noprw(); // memory protection stuff? + map(0x3fff, 0x3fff).rw(this, FUNC(wpc_s_state::zc_r), FUNC(wpc_s_state::watchdog_w)); + + map(0x4000, 0x7fff).bankr("rombank"); + map(0x8000, 0xffff).rom().region("maincpu", 0x78000); +} READ8_MEMBER(wpc_s_state::dcs_data_r) { diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp index 77b4d3be621..b9773a1f6da 100644 --- a/src/mame/drivers/wrally.cpp +++ b/src/mame/drivers/wrally.cpp @@ -138,34 +138,40 @@ The PCB has a layout that can either use the 4 rom set of I7, I9, I11 & I13 or l #include "speaker.h" -ADDRESS_MAP_START(wrally_state::mcu_hostmem_map) - AM_RANGE(0x0000, 0xffff) AM_MASK(0x3fff) AM_READWRITE(shareram_r, shareram_w) // shared RAM with the main CPU -ADDRESS_MAP_END - - -ADDRESS_MAP_START(wrally_state::wrally_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ - AM_RANGE(0x108000, 0x108007) AM_RAM AM_SHARE("vregs") /* Video Registers */ - AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR INT Video */ - AM_RANGE(0x200000, 0x203fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette */ - AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */ - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("WHEEL") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM") - ;map(0x70000a, 0x70000b).select(0x000070).lw8("outlatch_w", [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_outlatch->write_d0(space, offset >> 3, data, mem_mask); }).umask16(0x00ff); - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okim6295_bankswitch_w) /* OKI6295 bankswitch */ - AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status/data register */ - AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with DS5002FP) */ -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(wrally_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void wrally_state::mcu_hostmem_map(address_map &map) +{ + map(0x0000, 0xffff).mask(0x3fff).rw(this, FUNC(wrally_state::shareram_r), FUNC(wrally_state::shareram_w)); // shared RAM with the main CPU +} + + +void wrally_state::wrally_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); /* ROM */ + map(0x100000, 0x103fff).ram().w(this, FUNC(wrally_state::vram_w)).share("videoram"); /* encrypted Video RAM */ + map(0x108000, 0x108007).ram().share("vregs"); /* Video Registers */ + map(0x10800c, 0x10800d).nopw(); /* CLR INT Video */ + map(0x200000, 0x203fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette */ + map(0x440000, 0x440fff).ram().share("spriteram"); /* Sprite RAM */ + map(0x700000, 0x700001).portr("DSW"); + map(0x700002, 0x700003).portr("P1_P2"); + map(0x700004, 0x700005).portr("WHEEL"); + map(0x700008, 0x700009).portr("SYSTEM"); + map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", + [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { + m_outlatch->write_d0(space, offset >> 3, data, mem_mask); + }); + map(0x70000c, 0x70000d).w(this, FUNC(wrally_state::okim6295_bankswitch_w)); /* OKI6295 bankswitch */ + map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status/data register */ + map(0xfec000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with DS5002FP) */ +} + + + +void wrally_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} static INPUT_PORTS_START( wrally ) PORT_START("DSW") diff --git a/src/mame/drivers/wswan.cpp b/src/mame/drivers/wswan.cpp index d60205c3ae1..d3b6d556e56 100644 --- a/src/mame/drivers/wswan.cpp +++ b/src/mame/drivers/wswan.cpp @@ -42,22 +42,25 @@ #include "wswan.lh" -ADDRESS_MAP_START(wswan_state::wswan_mem) - AM_RANGE(0x00000, 0x03fff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w) // 16kb RAM / 4 colour tiles - AM_RANGE(0x04000, 0x0ffff) AM_NOP // nothing +void wswan_state::wswan_mem(address_map &map) +{ + map(0x00000, 0x03fff).rw(m_vdp, FUNC(wswan_video_device::vram_r), FUNC(wswan_video_device::vram_w)); // 16kb RAM / 4 colour tiles + map(0x04000, 0x0ffff).noprw(); // nothing //AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start - AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r) -ADDRESS_MAP_END + map(0xf0000, 0xfffff).r(this, FUNC(wswan_state::bios_r)); +} -ADDRESS_MAP_START(wscolor_state::wscolor_mem) - AM_RANGE(0x00000, 0x0ffff) AM_DEVREADWRITE("vdp", wswan_video_device, vram_r, vram_w) // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes +void wscolor_state::wscolor_mem(address_map &map) +{ + map(0x00000, 0x0ffff).rw("vdp", FUNC(wswan_video_device::vram_r), FUNC(wswan_video_device::vram_w)); // 16kb RAM / 4 colour tiles, 16 colour tiles + palettes //AM_RANGE(0x10000, 0xeffff) // cart range, setup at machine_start - AM_RANGE(0xf0000, 0xfffff) AM_READ(bios_r) -ADDRESS_MAP_END + map(0xf0000, 0xfffff).r(this, FUNC(wscolor_state::bios_r)); +} -ADDRESS_MAP_START(wswan_state::wswan_io) - AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w) // I/O ports -ADDRESS_MAP_END +void wswan_state::wswan_io(address_map &map) +{ + map(0x00, 0xff).rw(this, FUNC(wswan_state::port_r), FUNC(wswan_state::port_w)); // I/O ports +} static INPUT_PORTS_START( wswan ) PORT_START("CURSX") diff --git a/src/mame/drivers/wwfsstar.cpp b/src/mame/drivers/wwfsstar.cpp index 7efdf31a5b3..09a746ca51c 100644 --- a/src/mame/drivers/wwfsstar.cpp +++ b/src/mame/drivers/wwfsstar.cpp @@ -174,31 +174,33 @@ static constexpr XTAL PIXEL_CLOCK = MASTER_CLOCK / 4; Pretty Straightforward *******************************************************************************/ -ADDRESS_MAP_START(wwfsstar_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram */ - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_WRITE(bg0_videoram_w) AM_SHARE("bg0_videoram") /* BG0 Ram */ - AM_RANGE(0x100000, 0x1003ff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */ - AM_RANGE(0x140000, 0x140fff) AM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x180000, 0x180003) AM_WRITE(irqack_w) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW1") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW2") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("P1") - AM_RANGE(0x180004, 0x180007) AM_WRITE(scroll_w) - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("P2") - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x180008, 0x180009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x18000a, 0x18000b) AM_WRITE(flipscreen_w) - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(wwfsstar_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void wwfsstar_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(wwfsstar_state::fg0_videoram_w)).share("fg0_videoram"); /* FG0 Ram */ + map(0x0c0000, 0x0c0fff).ram().w(this, FUNC(wwfsstar_state::bg0_videoram_w)).share("bg0_videoram"); /* BG0 Ram */ + map(0x100000, 0x1003ff).ram().share("spriteram"); /* SPR Ram */ + map(0x140000, 0x140fff).w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x180000, 0x180003).w(this, FUNC(wwfsstar_state::irqack_w)); + map(0x180000, 0x180001).portr("DSW1"); + map(0x180002, 0x180003).portr("DSW2"); + map(0x180004, 0x180005).portr("P1"); + map(0x180004, 0x180007).w(this, FUNC(wwfsstar_state::scroll_w)); + map(0x180006, 0x180007).portr("P2"); + map(0x180008, 0x180009).portr("SYSTEM"); + map(0x180009, 0x180009).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x18000a, 0x18000b).w(this, FUNC(wwfsstar_state::flipscreen_w)); + map(0x1c0000, 0x1c3fff).ram(); /* Work Ram */ +} + +void wwfsstar_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} /******************************************************************************* diff --git a/src/mame/drivers/wyse.cpp b/src/mame/drivers/wyse.cpp index 66c21fce1b9..7d28a70596f 100644 --- a/src/mame/drivers/wyse.cpp +++ b/src/mame/drivers/wyse.cpp @@ -46,13 +46,15 @@ private: // required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(wyse_state::mem_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("videoram") -ADDRESS_MAP_END +void wyse_state::mem_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0xc000, 0xffff).ram().share("videoram"); +} -ADDRESS_MAP_START(wyse_state::io_map) -ADDRESS_MAP_END +void wyse_state::io_map(address_map &map) +{ +} static INPUT_PORTS_START( wyse ) INPUT_PORTS_END diff --git a/src/mame/drivers/wyvernf0.cpp b/src/mame/drivers/wyvernf0.cpp index 0a59e4331e2..47e1eff2461 100644 --- a/src/mame/drivers/wyvernf0.cpp +++ b/src/mame/drivers/wyvernf0.cpp @@ -385,60 +385,62 @@ WRITE8_MEMBER(wyvernf0_state::nmi_enable_w) } } -ADDRESS_MAP_START(wyvernf0_state::wyvernf0_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM +void wyvernf0_state::wyvernf0_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); - AM_RANGE(0x9000, 0x9fff) AM_RAMBANK("rambank") + map(0x9000, 0x9fff).bankrw("rambank"); - AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("rombank") + map(0xa000, 0xbfff).bankr("rombank"); - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram") + map(0xc000, 0xc7ff).ram().w(this, FUNC(wyvernf0_state::fgram_w)).share("fgram"); + map(0xc800, 0xcfff).ram().w(this, FUNC(wyvernf0_state::bgram_w)).share("bgram"); - AM_RANGE(0xd000, 0xd000) AM_WRITENOP // d000 write (02) - AM_RANGE(0xd100, 0xd100) AM_WRITE(rambank_w) - AM_RANGE(0xd200, 0xd200) AM_WRITE(rombank_w) + map(0xd000, 0xd000).nopw(); // d000 write (02) + map(0xd100, 0xd100).w(this, FUNC(wyvernf0_state::rambank_w)); + map(0xd200, 0xd200).w(this, FUNC(wyvernf0_state::rombank_w)); - AM_RANGE(0xd300, 0xd303) AM_RAM AM_SHARE("scrollram") + map(0xd300, 0xd303).ram().share("scrollram"); - AM_RANGE(0xd400, 0xd400) AM_READWRITE(fake_mcu_r, fake_mcu_w) - AM_RANGE(0xd401, 0xd401) AM_READ(fake_status_r) + map(0xd400, 0xd400).rw(this, FUNC(wyvernf0_state::fake_mcu_r), FUNC(wyvernf0_state::fake_mcu_w)); + map(0xd401, 0xd401).r(this, FUNC(wyvernf0_state::fake_status_r)); - AM_RANGE(0xd500, 0xd5ff) AM_RAM AM_SHARE("spriteram") + map(0xd500, 0xd5ff).ram().share("spriteram"); - AM_RANGE(0xd600, 0xd600) AM_READ_PORT("DSW1") - AM_RANGE(0xd601, 0xd601) AM_READ_PORT("DSW2") - AM_RANGE(0xd602, 0xd602) AM_READ_PORT("DSW3") - AM_RANGE(0xd603, 0xd603) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd604, 0xd604) AM_READ_PORT("JOY1") - AM_RANGE(0xd605, 0xd605) AM_READ_PORT("FIRE1") - AM_RANGE(0xd606, 0xd606) AM_READ_PORT("JOY2") - AM_RANGE(0xd607, 0xd607) AM_READ_PORT("FIRE2") + map(0xd600, 0xd600).portr("DSW1"); + map(0xd601, 0xd601).portr("DSW2"); + map(0xd602, 0xd602).portr("DSW3"); + map(0xd603, 0xd603).portr("SYSTEM"); + map(0xd604, 0xd604).portr("JOY1"); + map(0xd605, 0xd605).portr("FIRE1"); + map(0xd606, 0xd606).portr("JOY2"); + map(0xd607, 0xd607).portr("FIRE2"); - AM_RANGE(0xd610, 0xd610) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_command_w) + map(0xd610, 0xd610).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(wyvernf0_state::sound_command_w)); // d613 write (FF -> 00 at boot) - AM_RANGE(0xd800, 0xdbff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0xd800, 0xdbff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE(0xdc00, 0xdc00) AM_WRITENOP // irq ack? -ADDRESS_MAP_END + map(0xdc00, 0xdc00).nopw(); // irq ack? +} -ADDRESS_MAP_START(wyvernf0_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay1", ym2149_device, address_data_w) - AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay2", ym2149_device, address_data_w) - AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_device, write) +void wyvernf0_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).w("ay1", FUNC(ym2149_device::address_data_w)); + map(0xc802, 0xc803).w("ay2", FUNC(ym2149_device::address_data_w)); + map(0xc900, 0xc90d).w("msm", FUNC(msm5232_device::write)); // ca00 write // cb00 write // cc00 write - AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) - AM_RANGE(0xd200, 0xd200) AM_WRITE(nmi_enable_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w) - AM_RANGE(0xd600, 0xd600) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostics ROM -ADDRESS_MAP_END + map(0xd000, 0xd000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); + map(0xd200, 0xd200).w(this, FUNC(wyvernf0_state::nmi_enable_w)); + map(0xd400, 0xd400).w(this, FUNC(wyvernf0_state::nmi_disable_w)); + map(0xd600, 0xd600).w("dac", FUNC(dac_byte_interface::write)); + map(0xe000, 0xefff).rom(); // space for diagnostics ROM +} /*************************************************************************** diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp index 6bdd855c928..9e0e512f8d0 100644 --- a/src/mame/drivers/x07.cpp +++ b/src/mame/drivers/x07.cpp @@ -1220,21 +1220,23 @@ WRITE8_MEMBER( x07_state::x07_io_w ) } } -ADDRESS_MAP_START(x07_state::x07_mem) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(0x0000, 0x1fff) AM_NOP //RAM installed at runtime - AM_RANGE(0x2000, 0x7fff) AM_NOP //Memory Card RAM/ROM - AM_RANGE(0x8000, 0x97ff) AM_RAM //TV VRAM - AM_RANGE(0x9800, 0x9fff) AM_UNMAP //unused/unknown - AM_RANGE(0xa000, 0xafff) AM_ROM AM_REGION("x720", 0) //TV ROM - AM_RANGE(0xb000, 0xffff) AM_ROM AM_REGION("basic", 0) //BASIC ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(x07_state::x07_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK (0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE(x07_io_r, x07_io_w) -ADDRESS_MAP_END +void x07_state::x07_mem(address_map &map) +{ + map.unmap_value_low(); + map(0x0000, 0x1fff).noprw(); //RAM installed at runtime + map(0x2000, 0x7fff).noprw(); //Memory Card RAM/ROM + map(0x8000, 0x97ff).ram(); //TV VRAM + map(0x9800, 0x9fff).unmaprw(); //unused/unknown + map(0xa000, 0xafff).rom().region("x720", 0); //TV ROM + map(0xb000, 0xffff).rom().region("basic", 0); //BASIC ROM +} + +void x07_state::x07_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0xff).rw(this, FUNC(x07_state::x07_io_r), FUNC(x07_state::x07_io_w)); +} /* Input ports */ static INPUT_PORTS_START( x07 ) diff --git a/src/mame/drivers/x1.cpp b/src/mame/drivers/x1.cpp index aecac65c520..904186c23ec 100644 --- a/src/mame/drivers/x1.cpp +++ b/src/mame/drivers/x1.cpp @@ -1319,106 +1319,112 @@ WRITE8_MEMBER( x1_state::x1turbo_mem_w ) * *************************************/ -ADDRESS_MAP_START(x1_state::x1_io_banks_common) - ADDRESS_MAP_UNMAP_HIGH +void x1_state::x1_io_banks_common(address_map &map) +{ + map.unmap_value_high(); - AM_RANGE(0x0e00, 0x0e02) AM_WRITE(x1_rom_w) - AM_RANGE(0x0e03, 0x0e03) AM_READ(x1_rom_r) + map(0x0e00, 0x0e02).w(this, FUNC(x1_state::x1_rom_w)); + map(0x0e03, 0x0e03).r(this, FUNC(x1_state::x1_rom_r)); - AM_RANGE(0x0ff8, 0x0fff) AM_READWRITE(x1_fdc_r, x1_fdc_w) + map(0x0ff8, 0x0fff).rw(this, FUNC(x1_state::x1_fdc_r), FUNC(x1_state::x1_fdc_w)); - AM_RANGE(0x1300, 0x1300) AM_MIRROR(0x00ff) AM_WRITE(x1_pri_w) - AM_RANGE(0x1400, 0x17ff) AM_READWRITE(x1_pcg_r, x1_pcg_w) + map(0x1300, 0x1300).mirror(0x00ff).w(this, FUNC(x1_state::x1_pri_w)); + map(0x1400, 0x17ff).rw(this, FUNC(x1_state::x1_pcg_r), FUNC(x1_state::x1_pcg_w)); - AM_RANGE(0x1800, 0x1801) AM_WRITE(x1_6845_w) + map(0x1800, 0x1801).w(this, FUNC(x1_state::x1_6845_w)); - AM_RANGE(0x1900, 0x1900) AM_MIRROR(0x00ff) AM_READWRITE(x1_sub_io_r, x1_sub_io_w) - AM_RANGE(0x1a00, 0x1a03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) - AM_RANGE(0x1b00, 0x1b00) AM_MIRROR(0x00ff) AM_DEVREADWRITE("ay", ay8910_device, data_r, data_w) - AM_RANGE(0x1c00, 0x1c00) AM_MIRROR(0x00ff) AM_DEVWRITE("ay", ay8910_device, address_w) - AM_RANGE(0x1d00, 0x1d00) AM_MIRROR(0x00ff) AM_WRITE(x1_rom_bank_1_w) - AM_RANGE(0x1e00, 0x1e00) AM_MIRROR(0x00ff) AM_WRITE(x1_rom_bank_0_w) + map(0x1900, 0x1900).mirror(0x00ff).rw(this, FUNC(x1_state::x1_sub_io_r), FUNC(x1_state::x1_sub_io_w)); + map(0x1a00, 0x1a03).mirror(0x00fc).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x1b00, 0x1b00).mirror(0x00ff).rw("ay", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); + map(0x1c00, 0x1c00).mirror(0x00ff).w("ay", FUNC(ay8910_device::address_w)); + map(0x1d00, 0x1d00).mirror(0x00ff).w(this, FUNC(x1_state::x1_rom_bank_1_w)); + map(0x1e00, 0x1e00).mirror(0x00ff).w(this, FUNC(x1_state::x1_rom_bank_0_w)); - AM_RANGE(0x1fa0, 0x1fa3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x1fa8, 0x1fab) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) + map(0x1fa0, 0x1fa3).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x1fa8, 0x1fab).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); - AM_RANGE(0x2000, 0x27ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("avram") + map(0x2000, 0x27ff).mirror(0x0800).ram().share("avram"); - AM_RANGE(0x4000, 0xffff) AM_READWRITE_BANK("bitmapbank") + map(0x4000, 0xffff).bankrw("bitmapbank"); - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(x1_ex_gfxram_r, x1_ex_gfxram_w) -ADDRESS_MAP_END + map(0x10000, 0x1ffff).rw(this, FUNC(x1_state::x1_ex_gfxram_r), FUNC(x1_state::x1_ex_gfxram_w)); +} -ADDRESS_MAP_START(x1_state::x1_io_banks) - AM_IMPORT_FROM(x1_io_banks_common) +void x1_state::x1_io_banks(address_map &map) +{ + x1_io_banks_common(map); // AM_RANGE(0x0700, 0x0701) TODO: user could install ym2151 on plain X1 too - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x00ff) AM_WRITE(x1_pal_b_w) - AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x00ff) AM_WRITE(x1_pal_r_w) - AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x00ff) AM_WRITE(x1_pal_g_w) + map(0x1000, 0x1000).mirror(0x00ff).w(this, FUNC(x1_state::x1_pal_b_w)); + map(0x1100, 0x1100).mirror(0x00ff).w(this, FUNC(x1_state::x1_pal_r_w)); + map(0x1200, 0x1200).mirror(0x00ff).w(this, FUNC(x1_state::x1_pal_g_w)); - AM_RANGE(0x3000, 0x37ff) AM_MIRROR(0x0800) AM_RAM AM_SHARE("tvram") // Ys checks if it's a x1/x1turbo machine by checking if this area is a mirror -ADDRESS_MAP_END + map(0x3000, 0x37ff).mirror(0x0800).ram().share("tvram"); // Ys checks if it's a x1/x1turbo machine by checking if this area is a mirror +} -ADDRESS_MAP_START(x1_state::x1turbo_io_banks) - AM_IMPORT_FROM(x1_io_banks_common) +void x1_state::x1turbo_io_banks(address_map &map) +{ + x1_io_banks_common(map); // a * at the end states devices used on plain X1 too - AM_RANGE(0x0700, 0x0701) AM_READ(ym_r) AM_DEVWRITE("ym", ym2151_device, write) + map(0x0700, 0x0701).r(this, FUNC(x1_state::ym_r)).w("ym", FUNC(ym2151_device::write)); // 0x704 is FM sound detection port on X1 turboZ - AM_RANGE(0x0704, 0x0707) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - - AM_RANGE(0x0800, 0x0800) AM_WRITE(color_board_w) // * - AM_RANGE(0x0801, 0x0801) AM_READ(color_board_r) // * - AM_RANGE(0x0802, 0x0802) AM_WRITE(color_board_2_w) // * - AM_RANGE(0x0803, 0x0803) AM_READ(color_board_2_r) // * - AM_RANGE(0x0a00, 0x0a07) AM_READWRITE(stereo_board_r, stereo_board_w) // * - AM_RANGE(0x0b00, 0x0b00) AM_READWRITE(x1turbo_bank_r, x1turbo_bank_w) - AM_RANGE(0x0c00, 0x0cff) AM_READWRITE(rs232_r, rs232_w) // * - AM_RANGE(0x0d00, 0x0dff) AM_READWRITE(x1_emm_r, x1_emm_w) // * - AM_RANGE(0x0e80, 0x0e81) AM_READ(x1_kanji_r) - AM_RANGE(0x0e80, 0x0e83) AM_WRITE(x1_kanji_w) - AM_RANGE(0x0fd0, 0x0fd3) AM_READWRITE(sasi_r, sasi_w) // * - AM_RANGE(0x0fe8, 0x0fef) AM_READWRITE(fdd8_r, fdd8_w) // * - - AM_RANGE(0x1000, 0x12ff) AM_WRITE(x1turboz_4096_palette_w) - - AM_RANGE(0x1f80, 0x1f80) AM_MIRROR(0x000f) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x1f90, 0x1f93) AM_DEVREADWRITE("sio", z80sio0_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x1f98, 0x1f9f) AM_READWRITE(ext_sio_ctc_r, ext_sio_ctc_w) - AM_RANGE(0x1fb0, 0x1fb0) AM_READWRITE(x1turbo_pal_r, x1turbo_pal_w) // Z only! - AM_RANGE(0x1fb8, 0x1fbf) AM_READWRITE(x1turbo_txpal_r, x1turbo_txpal_w) // Z only! - AM_RANGE(0x1fc0, 0x1fc0) AM_READWRITE(x1turbo_txdisp_r, x1turbo_txdisp_w) // Z only! - AM_RANGE(0x1fc1, 0x1fc1) AM_WRITE(z_img_cap_w) // Z only! - AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(z_mosaic_w) // Z only! - AM_RANGE(0x1fc3, 0x1fc3) AM_WRITE(z_chroma_key_w) // Z only! - AM_RANGE(0x1fc4, 0x1fc4) AM_WRITE(z_extra_scroll_w) // Z only! - AM_RANGE(0x1fc5, 0x1fc5) AM_READWRITE(x1turbo_gfxpal_r, x1turbo_gfxpal_w) // Z only! + map(0x0704, 0x0707).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + + map(0x0800, 0x0800).w(this, FUNC(x1_state::color_board_w)); // * + map(0x0801, 0x0801).r(this, FUNC(x1_state::color_board_r)); // * + map(0x0802, 0x0802).w(this, FUNC(x1_state::color_board_2_w)); // * + map(0x0803, 0x0803).r(this, FUNC(x1_state::color_board_2_r)); // * + map(0x0a00, 0x0a07).rw(this, FUNC(x1_state::stereo_board_r), FUNC(x1_state::stereo_board_w)); // * + map(0x0b00, 0x0b00).rw(this, FUNC(x1_state::x1turbo_bank_r), FUNC(x1_state::x1turbo_bank_w)); + map(0x0c00, 0x0cff).rw(this, FUNC(x1_state::rs232_r), FUNC(x1_state::rs232_w)); // * + map(0x0d00, 0x0dff).rw(this, FUNC(x1_state::x1_emm_r), FUNC(x1_state::x1_emm_w)); // * + map(0x0e80, 0x0e81).r(this, FUNC(x1_state::x1_kanji_r)); + map(0x0e80, 0x0e83).w(this, FUNC(x1_state::x1_kanji_w)); + map(0x0fd0, 0x0fd3).rw(this, FUNC(x1_state::sasi_r), FUNC(x1_state::sasi_w)); // * + map(0x0fe8, 0x0fef).rw(this, FUNC(x1_state::fdd8_r), FUNC(x1_state::fdd8_w)); // * + + map(0x1000, 0x12ff).w(this, FUNC(x1_state::x1turboz_4096_palette_w)); + + map(0x1f80, 0x1f80).mirror(0x000f).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x1f90, 0x1f93).rw("sio", FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w)); + map(0x1f98, 0x1f9f).rw(this, FUNC(x1_state::ext_sio_ctc_r), FUNC(x1_state::ext_sio_ctc_w)); + map(0x1fb0, 0x1fb0).rw(this, FUNC(x1_state::x1turbo_pal_r), FUNC(x1_state::x1turbo_pal_w)); // Z only! + map(0x1fb8, 0x1fbf).rw(this, FUNC(x1_state::x1turbo_txpal_r), FUNC(x1_state::x1turbo_txpal_w)); // Z only! + map(0x1fc0, 0x1fc0).rw(this, FUNC(x1_state::x1turbo_txdisp_r), FUNC(x1_state::x1turbo_txdisp_w)); // Z only! + map(0x1fc1, 0x1fc1).w(this, FUNC(x1_state::z_img_cap_w)); // Z only! + map(0x1fc2, 0x1fc2).w(this, FUNC(x1_state::z_mosaic_w)); // Z only! + map(0x1fc3, 0x1fc3).w(this, FUNC(x1_state::z_chroma_key_w)); // Z only! + map(0x1fc4, 0x1fc4).w(this, FUNC(x1_state::z_extra_scroll_w)); // Z only! + map(0x1fc5, 0x1fc5).rw(this, FUNC(x1_state::x1turbo_gfxpal_r), FUNC(x1_state::x1turbo_gfxpal_w)); // Z only! // AM_RANGE(0x1fd0, 0x1fdf) AM_READ(x1_scrn_r) // Z only! - AM_RANGE(0x1fd0, 0x1fd0) AM_MIRROR(0x000f) AM_WRITE(x1_scrn_w) - AM_RANGE(0x1fe0, 0x1fe0) AM_READWRITE(x1turboz_blackclip_r, x1turbo_blackclip_w) - AM_RANGE(0x1ff0, 0x1ff0) AM_READ_PORT("X1TURBO_DSW") + map(0x1fd0, 0x1fd0).mirror(0x000f).w(this, FUNC(x1_state::x1_scrn_w)); + map(0x1fe0, 0x1fe0).rw(this, FUNC(x1_state::x1turboz_blackclip_r), FUNC(x1_state::x1turbo_blackclip_w)); + map(0x1ff0, 0x1ff0).portr("X1TURBO_DSW"); - AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE("tvram") - AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("kvram") -ADDRESS_MAP_END + map(0x3000, 0x37ff).ram().share("tvram"); + map(0x3800, 0x3fff).ram().share("kvram"); +} -ADDRESS_MAP_START(x1_state::x1_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(x1_mem_r,x1_mem_w) -ADDRESS_MAP_END +void x1_state::x1_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(x1_state::x1_mem_r), FUNC(x1_state::x1_mem_w)); +} -ADDRESS_MAP_START(x1_state::x1turbo_mem) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(x1turbo_mem_r,x1turbo_mem_w) -ADDRESS_MAP_END +void x1_state::x1turbo_mem(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(x1_state::x1turbo_mem_r), FUNC(x1_state::x1turbo_mem_w)); +} -ADDRESS_MAP_START(x1_state::x1_io) - AM_RANGE(0x0000, 0xffff) AM_DEVICE("iobank", address_map_bank_device, amap8) -ADDRESS_MAP_END +void x1_state::x1_io(address_map &map) +{ + map(0x0000, 0xffff).m(m_iobank, FUNC(address_map_bank_device::amap8)); +} /************************************* * diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp index 730a9175aab..5f0e3f2af72 100644 --- a/src/mame/drivers/x1twin.cpp +++ b/src/mame/drivers/x1twin.cpp @@ -52,15 +52,17 @@ uint32_t x1twin_state::screen_update_x1pce(screen_device &screen, bitmap_rgb32 & return 0; } -ADDRESS_MAP_START(x1twin_state::x1_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(x1_mem_r,x1_mem_w) -ADDRESS_MAP_END +void x1twin_state::x1_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).rw(this, FUNC(x1twin_state::x1_mem_r), FUNC(x1twin_state::x1_mem_w)); +} -ADDRESS_MAP_START(x1twin_state::x1_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_DEVICE("iobank", address_map_bank_device, amap8) -ADDRESS_MAP_END +void x1twin_state::x1_io(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).m(m_iobank, FUNC(address_map_bank_device::amap8)); +} #if 0 ADDRESS_MAP_START(x1twin_state::pce_mem) diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp index 4cc0950fc44..a6d0a7aa4e8 100644 --- a/src/mame/drivers/x68k.cpp +++ b/src/mame/drivers/x68k.cpp @@ -1129,121 +1129,124 @@ WRITE_LINE_MEMBER(x68k_state::x68k_scsi_drq) // TODO } -ADDRESS_MAP_START(x68k_state::x68k_map) - AM_RANGE(0x000000, 0xbffffb) AM_READWRITE(x68k_emptyram_r, x68k_emptyram_w) - AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(x68k_gvram_r, x68k_gvram_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE(x68k_tvram_r, x68k_tvram_w) - AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE(x68k_crtc_r, x68k_crtc_w) - AM_RANGE(0xe82000, 0xe821ff) AM_DEVREADWRITE("gfxpalette", palette_device, read16, write16) AM_SHARE("gfxpalette") - AM_RANGE(0xe82200, 0xe823ff) AM_DEVREADWRITE("pcgpalette", palette_device, read16, write16) AM_SHARE("pcgpalette") - AM_RANGE(0xe82400, 0xe83fff) AM_READWRITE(x68k_vid_r, x68k_vid_w) - AM_RANGE(0xe84000, 0xe85fff) AM_DEVREADWRITE("hd63450", hd63450_device, read, write) - AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE(x68k_areaset_r, x68k_areaset_w) - AM_RANGE(0xe88000, 0xe89fff) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff) - AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff) +void x68k_state::x68k_map(address_map &map) +{ + map(0x000000, 0xbffffb).rw(this, FUNC(x68k_state::x68k_emptyram_r), FUNC(x68k_state::x68k_emptyram_w)); + map(0xbffffc, 0xbfffff).rw(this, FUNC(x68k_state::x68k_rom0_r), FUNC(x68k_state::x68k_rom0_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(x68k_state::x68k_gvram_r), FUNC(x68k_state::x68k_gvram_w)); + map(0xe00000, 0xe7ffff).rw(this, FUNC(x68k_state::x68k_tvram_r), FUNC(x68k_state::x68k_tvram_w)); + map(0xe80000, 0xe81fff).rw(this, FUNC(x68k_state::x68k_crtc_r), FUNC(x68k_state::x68k_crtc_w)); + map(0xe82000, 0xe821ff).rw(m_gfxpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("gfxpalette"); + map(0xe82200, 0xe823ff).rw(m_pcgpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("pcgpalette"); + map(0xe82400, 0xe83fff).rw(this, FUNC(x68k_state::x68k_vid_r), FUNC(x68k_state::x68k_vid_w)); + map(0xe84000, 0xe85fff).rw(m_hd63450, FUNC(hd63450_device::read), FUNC(hd63450_device::write)); + map(0xe86000, 0xe87fff).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_areaset_w)); + map(0xe88000, 0xe89fff).rw(m_mfpdev, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff); + map(0xe8a000, 0xe8bfff).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff); // AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w) - AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w) - AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, ctrl_w, 0x00ff) - AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, data_w, 0x00ff) - AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff) - AM_RANGE(0xe94004, 0xe94007) AM_READWRITE(x68k_fdc_r, x68k_fdc_w) - AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w) - AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE(x68k_scc_r, x68k_scc_w) - AM_RANGE(0xe9a000, 0xe9bfff) AM_READWRITE(x68k_ppi_r, x68k_ppi_w) - AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE(x68k_ioc_r, x68k_ioc_w) - AM_RANGE(0xe9e000, 0xe9e3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // FPU (Optional) - AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // external SCSI ROM and controller - AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE(x68k_exp_r, x68k_exp_w) - AM_RANGE(0xeafa80, 0xeafa89) AM_READWRITE(x68k_areaset_r, x68k_enh_areaset_w) - AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE(x68k_spritereg_r, x68k_spritereg_w) - AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE(x68k_spriteram_r, x68k_spriteram_w) - AM_RANGE(0xece000, 0xece3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // User I/O - AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE(x68k_sram_r, x68k_sram_w) - AM_RANGE(0xed4000, 0xefffff) AM_NOP - AM_RANGE(0xf00000, 0xfbffff) AM_ROM - AM_RANGE(0xfc0000, 0xfdffff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // internal SCSI ROM - AM_RANGE(0xfe0000, 0xffffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(x68k_state::x68kxvi_map) - AM_RANGE(0x000000, 0xbffffb) AM_READWRITE(x68k_emptyram_r, x68k_emptyram_w) - AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE(x68k_rom0_r, x68k_rom0_w) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(x68k_gvram_r, x68k_gvram_w) - AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE(x68k_tvram_r, x68k_tvram_w) - AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE(x68k_crtc_r, x68k_crtc_w) - AM_RANGE(0xe82000, 0xe821ff) AM_DEVREADWRITE("gfxpalette", palette_device, read16, write16) AM_SHARE("gfxpalette") - AM_RANGE(0xe82200, 0xe823ff) AM_DEVREADWRITE("pcgpalette", palette_device, read16, write16) AM_SHARE("pcgpalette") - AM_RANGE(0xe82400, 0xe83fff) AM_READWRITE(x68k_vid_r, x68k_vid_w) - AM_RANGE(0xe84000, 0xe85fff) AM_DEVREADWRITE("hd63450", hd63450_device, read, write) - AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE(x68k_areaset_r, x68k_areaset_w) - AM_RANGE(0xe88000, 0xe89fff) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff) - AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff) + map(0xe8e000, 0xe8ffff).rw(this, FUNC(x68k_state::x68k_sysport_r), FUNC(x68k_state::x68k_sysport_w)); + map(0xe90000, 0xe91fff).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0xe92001, 0xe92001).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::ctrl_w)); + map(0xe92003, 0xe92003).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::data_w)); + map(0xe94000, 0xe94003).m(m_upd72065, FUNC(upd72065_device::map)).umask16(0x00ff); + map(0xe94004, 0xe94007).rw(this, FUNC(x68k_state::x68k_fdc_r), FUNC(x68k_state::x68k_fdc_w)); + map(0xe96000, 0xe9601f).rw("x68k_hdc", FUNC(x68k_hdc_image_device::hdc_r), FUNC(x68k_hdc_image_device::hdc_w)); + map(0xe98000, 0xe99fff).rw(this, FUNC(x68k_state::x68k_scc_r), FUNC(x68k_state::x68k_scc_w)); + map(0xe9a000, 0xe9bfff).rw(this, FUNC(x68k_state::x68k_ppi_r), FUNC(x68k_state::x68k_ppi_w)); + map(0xe9c000, 0xe9dfff).rw(this, FUNC(x68k_state::x68k_ioc_r), FUNC(x68k_state::x68k_ioc_w)); + map(0xe9e000, 0xe9e3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // FPU (Optional) + map(0xea0000, 0xea1fff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // external SCSI ROM and controller + map(0xeafa00, 0xeafa1f).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); + map(0xeafa80, 0xeafa89).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_enh_areaset_w)); + map(0xeb0000, 0xeb7fff).rw(this, FUNC(x68k_state::x68k_spritereg_r), FUNC(x68k_state::x68k_spritereg_w)); + map(0xeb8000, 0xebffff).rw(this, FUNC(x68k_state::x68k_spriteram_r), FUNC(x68k_state::x68k_spriteram_w)); + map(0xece000, 0xece3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // User I/O + map(0xed0000, 0xed3fff).rw(this, FUNC(x68k_state::x68k_sram_r), FUNC(x68k_state::x68k_sram_w)); + map(0xed4000, 0xefffff).noprw(); + map(0xf00000, 0xfbffff).rom(); + map(0xfc0000, 0xfdffff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // internal SCSI ROM + map(0xfe0000, 0xffffff).rom(); +} + +void x68k_state::x68kxvi_map(address_map &map) +{ + map(0x000000, 0xbffffb).rw(this, FUNC(x68k_state::x68k_emptyram_r), FUNC(x68k_state::x68k_emptyram_w)); + map(0xbffffc, 0xbfffff).rw(this, FUNC(x68k_state::x68k_rom0_r), FUNC(x68k_state::x68k_rom0_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(x68k_state::x68k_gvram_r), FUNC(x68k_state::x68k_gvram_w)); + map(0xe00000, 0xe7ffff).rw(this, FUNC(x68k_state::x68k_tvram_r), FUNC(x68k_state::x68k_tvram_w)); + map(0xe80000, 0xe81fff).rw(this, FUNC(x68k_state::x68k_crtc_r), FUNC(x68k_state::x68k_crtc_w)); + map(0xe82000, 0xe821ff).rw(m_gfxpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("gfxpalette"); + map(0xe82200, 0xe823ff).rw(m_pcgpalette, FUNC(palette_device::read16), FUNC(palette_device::write16)).share("pcgpalette"); + map(0xe82400, 0xe83fff).rw(this, FUNC(x68k_state::x68k_vid_r), FUNC(x68k_state::x68k_vid_w)); + map(0xe84000, 0xe85fff).rw(m_hd63450, FUNC(hd63450_device::read), FUNC(hd63450_device::write)); + map(0xe86000, 0xe87fff).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_areaset_w)); + map(0xe88000, 0xe89fff).rw(m_mfpdev, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff); + map(0xe8a000, 0xe8bfff).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff); // AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w) - AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE(x68k_sysport_r, x68k_sysport_w) - AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff) - AM_RANGE(0xe92000, 0xe92001) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, ctrl_w, 0x00ff) - AM_RANGE(0xe92002, 0xe92003) AM_DEVREADWRITE8("okim6258", okim6258_device, status_r, data_w, 0x00ff) - AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff) - AM_RANGE(0xe94004, 0xe94007) AM_READWRITE(x68k_fdc_r, x68k_fdc_w) + map(0xe8e000, 0xe8ffff).rw(this, FUNC(x68k_state::x68k_sysport_r), FUNC(x68k_state::x68k_sysport_w)); + map(0xe90000, 0xe91fff).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0xe92001, 0xe92001).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::ctrl_w)); + map(0xe92003, 0xe92003).rw(m_okim6258, FUNC(okim6258_device::status_r), FUNC(okim6258_device::data_w)); + map(0xe94000, 0xe94003).m(m_upd72065, FUNC(upd72065_device::map)).umask16(0x00ff); + map(0xe94004, 0xe94007).rw(this, FUNC(x68k_state::x68k_fdc_r), FUNC(x68k_state::x68k_fdc_w)); // AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w) - AM_RANGE(0xe96020, 0xe9603f) AM_DEVREADWRITE8("mb89352",mb89352_device,mb89352_r,mb89352_w,0x00ff) - AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE(x68k_scc_r, x68k_scc_w) - AM_RANGE(0xe9a000, 0xe9bfff) AM_READWRITE(x68k_ppi_r, x68k_ppi_w) - AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE(x68k_ioc_r, x68k_ioc_w) - AM_RANGE(0xe9e000, 0xe9e3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // FPU (Optional) - AM_RANGE(0xea0000, 0xea1fff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // external SCSI ROM and controller - AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE(x68k_exp_r, x68k_exp_w) - AM_RANGE(0xeafa80, 0xeafa89) AM_READWRITE(x68k_areaset_r, x68k_enh_areaset_w) - AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE(x68k_spritereg_r, x68k_spritereg_w) - AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE(x68k_spriteram_r, x68k_spriteram_w) - AM_RANGE(0xece000, 0xece3ff) AM_READWRITE(x68k_exp_r, x68k_exp_w) // User I/O - AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE(x68k_sram_r, x68k_sram_w) - AM_RANGE(0xed4000, 0xefffff) AM_NOP - AM_RANGE(0xf00000, 0xfbffff) AM_ROM - AM_RANGE(0xfc0000, 0xfdffff) AM_ROM // internal SCSI ROM - AM_RANGE(0xfe0000, 0xffffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(x68k_state::x68030_map) - ADDRESS_MAP_GLOBAL_MASK(0x00ffffff) // Still only has 24-bit address space - AM_RANGE(0x000000, 0xbffffb) AM_READWRITE16(x68k_emptyram_r, x68k_emptyram_w,0xffffffff) - AM_RANGE(0xbffffc, 0xbfffff) AM_READWRITE16(x68k_rom0_r, x68k_rom0_w,0xffffffff) - AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(x68k_gvram_r, x68k_gvram_w, 0xffffffff) - AM_RANGE(0xe00000, 0xe7ffff) AM_READWRITE16(x68k_tvram_r, x68k_tvram_w, 0xffffffff) - AM_RANGE(0xe80000, 0xe81fff) AM_READWRITE16(x68k_crtc_r, x68k_crtc_w,0xffffffff) - AM_RANGE(0xe82000, 0xe821ff) AM_DEVREADWRITE("gfxpalette", palette_device, read32, write32) AM_SHARE("gfxpalette") - AM_RANGE(0xe82200, 0xe823ff) AM_DEVREADWRITE("pcgpalette", palette_device, read32, write32) AM_SHARE("pcgpalette") - AM_RANGE(0xe82400, 0xe83fff) AM_READWRITE16(x68k_vid_r, x68k_vid_w,0xffffffff) - AM_RANGE(0xe84000, 0xe85fff) AM_DEVREADWRITE16("hd63450", hd63450_device, read, write, 0xffffffff) - AM_RANGE(0xe86000, 0xe87fff) AM_READWRITE16(x68k_areaset_r, x68k_areaset_w,0xffffffff) - AM_RANGE(0xe88000, 0xe89fff) AM_DEVREADWRITE8(MC68901_TAG, mc68901_device, read, write, 0x00ff00ff) - AM_RANGE(0xe8a000, 0xe8bfff) AM_DEVREADWRITE8(RP5C15_TAG, rp5c15_device, read, write, 0x00ff00ff) + map(0xe96020, 0xe9603f).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask16(0x00ff); + map(0xe98000, 0xe99fff).rw(this, FUNC(x68k_state::x68k_scc_r), FUNC(x68k_state::x68k_scc_w)); + map(0xe9a000, 0xe9bfff).rw(this, FUNC(x68k_state::x68k_ppi_r), FUNC(x68k_state::x68k_ppi_w)); + map(0xe9c000, 0xe9dfff).rw(this, FUNC(x68k_state::x68k_ioc_r), FUNC(x68k_state::x68k_ioc_w)); + map(0xe9e000, 0xe9e3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // FPU (Optional) + map(0xea0000, 0xea1fff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // external SCSI ROM and controller + map(0xeafa00, 0xeafa1f).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); + map(0xeafa80, 0xeafa89).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_enh_areaset_w)); + map(0xeb0000, 0xeb7fff).rw(this, FUNC(x68k_state::x68k_spritereg_r), FUNC(x68k_state::x68k_spritereg_w)); + map(0xeb8000, 0xebffff).rw(this, FUNC(x68k_state::x68k_spriteram_r), FUNC(x68k_state::x68k_spriteram_w)); + map(0xece000, 0xece3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // User I/O + map(0xed0000, 0xed3fff).rw(this, FUNC(x68k_state::x68k_sram_r), FUNC(x68k_state::x68k_sram_w)); + map(0xed4000, 0xefffff).noprw(); + map(0xf00000, 0xfbffff).rom(); + map(0xfc0000, 0xfdffff).rom(); // internal SCSI ROM + map(0xfe0000, 0xffffff).rom(); +} + +void x68k_state::x68030_map(address_map &map) +{ + map.global_mask(0x00ffffff); // Still only has 24-bit address space + map(0x000000, 0xbffffb).rw(this, FUNC(x68k_state::x68k_emptyram_r), FUNC(x68k_state::x68k_emptyram_w)); + map(0xbffffc, 0xbfffff).rw(this, FUNC(x68k_state::x68k_rom0_r), FUNC(x68k_state::x68k_rom0_w)); + map(0xc00000, 0xdfffff).rw(this, FUNC(x68k_state::x68k_gvram_r), FUNC(x68k_state::x68k_gvram_w)); + map(0xe00000, 0xe7ffff).rw(this, FUNC(x68k_state::x68k_tvram_r), FUNC(x68k_state::x68k_tvram_w)); + map(0xe80000, 0xe81fff).rw(this, FUNC(x68k_state::x68k_crtc_r), FUNC(x68k_state::x68k_crtc_w)); + map(0xe82000, 0xe821ff).rw(m_gfxpalette, FUNC(palette_device::read32), FUNC(palette_device::write32)).share("gfxpalette"); + map(0xe82200, 0xe823ff).rw(m_pcgpalette, FUNC(palette_device::read32), FUNC(palette_device::write32)).share("pcgpalette"); + map(0xe82400, 0xe83fff).rw(this, FUNC(x68k_state::x68k_vid_r), FUNC(x68k_state::x68k_vid_w)); + map(0xe84000, 0xe85fff).rw(m_hd63450, FUNC(hd63450_device::read), FUNC(hd63450_device::write)); + map(0xe86000, 0xe87fff).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_areaset_w)); + map(0xe88000, 0xe89fff).rw(m_mfpdev, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask32(0x00ff00ff); + map(0xe8a000, 0xe8bfff).rw(m_rtc, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask32(0x00ff00ff); // AM_RANGE(0xe8c000, 0xe8dfff) AM_READWRITE(x68k_printer_r, x68k_printer_w) - AM_RANGE(0xe8e000, 0xe8ffff) AM_READWRITE16(x68k_sysport_r, x68k_sysport_w,0xffffffff) - AM_RANGE(0xe90000, 0xe91fff) AM_DEVREADWRITE8("ym2151", ym2151_device, read, write, 0x00ff00ff) - AM_RANGE(0xe92000, 0xe92003) AM_DEVREAD8("okim6258", okim6258_device, status_r, 0x00ff00ff) AM_WRITE8(x68030_adpcm_w, 0x00ff00ff) - AM_RANGE(0xe94000, 0xe94003) AM_DEVICE8("upd72065", upd72065_device, map, 0x00ff00ff) - AM_RANGE(0xe94004, 0xe94007) AM_READWRITE16(x68k_fdc_r, x68k_fdc_w,0xffffffff) + map(0xe8e000, 0xe8ffff).rw(this, FUNC(x68k_state::x68k_sysport_r), FUNC(x68k_state::x68k_sysport_w)); + map(0xe90000, 0xe91fff).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask32(0x00ff00ff); + map(0xe92000, 0xe92003).r(m_okim6258, FUNC(okim6258_device::status_r)).umask32(0x00ff00ff).w(this, FUNC(x68k_state::x68030_adpcm_w)).umask32(0x00ff00ff); + map(0xe94000, 0xe94003).m(m_upd72065, FUNC(upd72065_device::map)).umask32(0x00ff00ff); + map(0xe94004, 0xe94007).rw(this, FUNC(x68k_state::x68k_fdc_r), FUNC(x68k_state::x68k_fdc_w)); // AM_RANGE(0xe96000, 0xe9601f) AM_DEVREADWRITE16("x68k_hdc", x68k_hdc_image_device, hdc_r, hdc_w, 0xffffffff) - AM_RANGE(0xe96020, 0xe9603f) AM_DEVREADWRITE8("mb89352",mb89352_device,mb89352_r,mb89352_w,0x00ff00ff) - AM_RANGE(0xe98000, 0xe99fff) AM_READWRITE16(x68k_scc_r, x68k_scc_w,0xffffffff) - AM_RANGE(0xe9a000, 0xe9bfff) AM_READWRITE16(x68k_ppi_r, x68k_ppi_w,0xffffffff) - AM_RANGE(0xe9c000, 0xe9dfff) AM_READWRITE16(x68k_ioc_r, x68k_ioc_w,0xffffffff) - AM_RANGE(0xe9e000, 0xe9e3ff) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // FPU (Optional) - AM_RANGE(0xea0000, 0xea1fff) AM_NOP//AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // external SCSI ROM and controller - AM_RANGE(0xeafa00, 0xeafa1f) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) - AM_RANGE(0xeafa80, 0xeafa8b) AM_READWRITE16(x68k_areaset_r, x68k_enh_areaset_w,0xffffffff) - AM_RANGE(0xeb0000, 0xeb7fff) AM_READWRITE16(x68k_spritereg_r, x68k_spritereg_w,0xffffffff) - AM_RANGE(0xeb8000, 0xebffff) AM_READWRITE16(x68k_spriteram_r, x68k_spriteram_w,0xffffffff) - AM_RANGE(0xece000, 0xece3ff) AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // User I/O - AM_RANGE(0xed0000, 0xed3fff) AM_READWRITE16(x68k_sram_r, x68k_sram_w, 0xffffffff) - AM_RANGE(0xed4000, 0xefffff) AM_NOP - AM_RANGE(0xf00000, 0xfbffff) AM_ROM - AM_RANGE(0xfc0000, 0xfdffff) AM_ROM // internal SCSI ROM - AM_RANGE(0xfe0000, 0xffffff) AM_ROM -ADDRESS_MAP_END + map(0xe96020, 0xe9603f).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask32(0x00ff00ff); + map(0xe98000, 0xe99fff).rw(this, FUNC(x68k_state::x68k_scc_r), FUNC(x68k_state::x68k_scc_w)); + map(0xe9a000, 0xe9bfff).rw(this, FUNC(x68k_state::x68k_ppi_r), FUNC(x68k_state::x68k_ppi_w)); + map(0xe9c000, 0xe9dfff).rw(this, FUNC(x68k_state::x68k_ioc_r), FUNC(x68k_state::x68k_ioc_w)); + map(0xe9e000, 0xe9e3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // FPU (Optional) + map(0xea0000, 0xea1fff).noprw();//AM_READWRITE16(x68k_exp_r, x68k_exp_w,0xffffffff) // external SCSI ROM and controller + map(0xeafa00, 0xeafa1f).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); + map(0xeafa80, 0xeafa8b).rw(this, FUNC(x68k_state::x68k_areaset_r), FUNC(x68k_state::x68k_enh_areaset_w)); + map(0xeb0000, 0xeb7fff).rw(this, FUNC(x68k_state::x68k_spritereg_r), FUNC(x68k_state::x68k_spritereg_w)); + map(0xeb8000, 0xebffff).rw(this, FUNC(x68k_state::x68k_spriteram_r), FUNC(x68k_state::x68k_spriteram_w)); + map(0xece000, 0xece3ff).rw(this, FUNC(x68k_state::x68k_exp_r), FUNC(x68k_state::x68k_exp_w)); // User I/O + map(0xed0000, 0xed3fff).rw(this, FUNC(x68k_state::x68k_sram_r), FUNC(x68k_state::x68k_sram_w)); + map(0xed4000, 0xefffff).noprw(); + map(0xf00000, 0xfbffff).rom(); + map(0xfc0000, 0xfdffff).rom(); // internal SCSI ROM + map(0xfe0000, 0xffffff).rom(); +} static INPUT_PORTS_START( x68000 ) PORT_START("ctrltype") diff --git a/src/mame/drivers/xain.cpp b/src/mame/drivers/xain.cpp index d201dc194e5..4a443931547 100644 --- a/src/mame/drivers/xain.cpp +++ b/src/mame/drivers/xain.cpp @@ -282,54 +282,58 @@ READ8_MEMBER(xain_state::mcu_comm_reset_r) } -ADDRESS_MAP_START(xain_state::bootleg_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") - AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(bgram1_w) AM_SHARE("bgram1") - AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(bgram0_w) AM_SHARE("bgram0") - AM_RANGE(0x3800, 0x397f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("P1") - AM_RANGE(0x3a00, 0x3a01) AM_WRITE(scrollxP1_w) - AM_RANGE(0x3a01, 0x3a01) AM_READ_PORT("P2") - AM_RANGE(0x3a02, 0x3a02) AM_READ_PORT("DSW0") - AM_RANGE(0x3a02, 0x3a03) AM_WRITE(scrollyP1_w) - AM_RANGE(0x3a03, 0x3a03) AM_READ_PORT("DSW1") - AM_RANGE(0x3a04, 0x3a05) AM_WRITE(scrollxP0_w) - AM_RANGE(0x3a05, 0x3a05) AM_READ_PORT("VBLANK") - AM_RANGE(0x3a06, 0x3a07) AM_WRITE(scrollyP0_w) - AM_RANGE(0x3a08, 0x3a08) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x3a09, 0x3a0c) AM_WRITE(main_irq_w) - AM_RANGE(0x3a0d, 0x3a0d) AM_WRITE(flipscreen_w) - AM_RANGE(0x3a0f, 0x3a0f) AM_WRITE(cpuA_bankswitch_w) - AM_RANGE(0x3c00, 0x3dff) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") - AM_RANGE(0x3e00, 0x3fff) AM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext") - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(xain_state::main_map) - AM_IMPORT_FROM(bootleg_map) - AM_RANGE(0x3a04, 0x3a04) AM_DEVREAD("mcu", taito68705_mcu_device, data_r) - AM_RANGE(0x3a06, 0x3a06) AM_READ(mcu_comm_reset_r) - AM_RANGE(0x3a0e, 0x3a0e) AM_DEVWRITE("mcu", taito68705_mcu_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xain_state::cpu_map_B) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x2000, 0x2000) AM_WRITE(irqA_assert_w) - AM_RANGE(0x2800, 0x2800) AM_WRITE(irqB_clear_w) - AM_RANGE(0x3000, 0x3000) AM_WRITE(cpuB_bankswitch_w) - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(xain_state::sound_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym2203_device, write) - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void xain_state::bootleg_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("share1"); + map(0x2000, 0x27ff).ram().w(this, FUNC(xain_state::charram_w)).share("charram"); + map(0x2800, 0x2fff).ram().w(this, FUNC(xain_state::bgram1_w)).share("bgram1"); + map(0x3000, 0x37ff).ram().w(this, FUNC(xain_state::bgram0_w)).share("bgram0"); + map(0x3800, 0x397f).ram().share("spriteram"); + map(0x3a00, 0x3a00).portr("P1"); + map(0x3a00, 0x3a01).w(this, FUNC(xain_state::scrollxP1_w)); + map(0x3a01, 0x3a01).portr("P2"); + map(0x3a02, 0x3a02).portr("DSW0"); + map(0x3a02, 0x3a03).w(this, FUNC(xain_state::scrollyP1_w)); + map(0x3a03, 0x3a03).portr("DSW1"); + map(0x3a04, 0x3a05).w(this, FUNC(xain_state::scrollxP0_w)); + map(0x3a05, 0x3a05).portr("VBLANK"); + map(0x3a06, 0x3a07).w(this, FUNC(xain_state::scrollyP0_w)); + map(0x3a08, 0x3a08).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x3a09, 0x3a0c).w(this, FUNC(xain_state::main_irq_w)); + map(0x3a0d, 0x3a0d).w(this, FUNC(xain_state::flipscreen_w)); + map(0x3a0f, 0x3a0f).w(this, FUNC(xain_state::cpuA_bankswitch_w)); + map(0x3c00, 0x3dff).w(m_palette, FUNC(palette_device::write8)).share("palette"); + map(0x3e00, 0x3fff).w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext"); + map(0x4000, 0x7fff).bankr("bank1"); + map(0x8000, 0xffff).rom(); +} + +void xain_state::main_map(address_map &map) +{ + bootleg_map(map); + map(0x3a04, 0x3a04).r(m_mcu, FUNC(taito68705_mcu_device::data_r)); + map(0x3a06, 0x3a06).r(this, FUNC(xain_state::mcu_comm_reset_r)); + map(0x3a0e, 0x3a0e).w(m_mcu, FUNC(taito68705_mcu_device::data_w)); +} + +void xain_state::cpu_map_B(address_map &map) +{ + map(0x0000, 0x1fff).ram().share("share1"); + map(0x2000, 0x2000).w(this, FUNC(xain_state::irqA_assert_w)); + map(0x2800, 0x2800).w(this, FUNC(xain_state::irqB_clear_w)); + map(0x3000, 0x3000).w(this, FUNC(xain_state::cpuB_bankswitch_w)); + map(0x4000, 0x7fff).bankr("bank2"); + map(0x8000, 0xffff).rom(); +} + +void xain_state::sound_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x1000, 0x1000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x2800, 0x2801).w("ym1", FUNC(ym2203_device::write)); + map(0x3000, 0x3001).w("ym2", FUNC(ym2203_device::write)); + map(0x4000, 0xffff).rom(); +} static INPUT_PORTS_START( xsleena ) diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index 9175c1f16df..f752f187c12 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -1530,75 +1530,76 @@ WRITE8_MEMBER(xavix_state::irq_source_w) // DATA reads from 0x8000-0xffff are banked by byte 0xff of 'ram' (this is handled in the CPU core) -ADDRESS_MAP_START(xavix_state::xavix_map) - AM_RANGE(0x000000, 0x0001ff) AM_RAM - AM_RANGE(0x000200, 0x003fff) AM_RAM AM_SHARE("mainram") +void xavix_state::xavix_map(address_map &map) +{ + map(0x000000, 0x0001ff).ram(); + map(0x000200, 0x003fff).ram().share("mainram"); // this might not be a real area, the tilemap base register gets set to 0x40 in monster truck service mode, and expects a fixed layout. // As that would point at this address maybe said layout is being read from here, or maybe it's just a magic tilemap register value that doesn't read address space at all. - AM_RANGE(0x004000, 0x0041ff) AM_READ(xavix_4000_r) + map(0x004000, 0x0041ff).r(this, FUNC(xavix_state::xavix_4000_r)); // 6xxx ranges are the video hardware // appears to be 256 sprites (shares will be renamed once their purpose is known) - AM_RANGE(0x006000, 0x0060ff) AM_RAM AM_SHARE("spr_attr0") - AM_RANGE(0x006100, 0x0061ff) AM_RAM AM_SHARE("spr_attr1") - AM_RANGE(0x006200, 0x0062ff) AM_RAM AM_SHARE("spr_ypos") // cleared to 0x80 by both games, maybe enable registers? - AM_RANGE(0x006300, 0x0063ff) AM_RAM AM_SHARE("spr_xpos") - AM_RANGE(0x006400, 0x0064ff) AM_RAM // 6400 range gets populated in some cases, but it seems to be more like work ram, data doesn't matter and must be ignored? - AM_RANGE(0x006500, 0x0065ff) AM_RAM AM_SHARE("spr_addr_lo") - AM_RANGE(0x006600, 0x0066ff) AM_RAM AM_SHARE("spr_addr_md") - AM_RANGE(0x006700, 0x0067ff) AM_RAM AM_SHARE("spr_addr_hi") - AM_RANGE(0x006800, 0x0068ff) AM_RAM AM_SHARE("palram1") // written with 6900 - AM_RANGE(0x006900, 0x0069ff) AM_RAM AM_SHARE("palram2") // startup (taitons1) - AM_RANGE(0x006a00, 0x006a1f) AM_RAM AM_SHARE("spr_attra") // test mode, pass flag 0x20 + map(0x006000, 0x0060ff).ram().share("spr_attr0"); + map(0x006100, 0x0061ff).ram().share("spr_attr1"); + map(0x006200, 0x0062ff).ram().share("spr_ypos"); // cleared to 0x80 by both games, maybe enable registers? + map(0x006300, 0x0063ff).ram().share("spr_xpos"); + map(0x006400, 0x0064ff).ram(); // 6400 range gets populated in some cases, but it seems to be more like work ram, data doesn't matter and must be ignored? + map(0x006500, 0x0065ff).ram().share("spr_addr_lo"); + map(0x006600, 0x0066ff).ram().share("spr_addr_md"); + map(0x006700, 0x0067ff).ram().share("spr_addr_hi"); + map(0x006800, 0x0068ff).ram().share("palram1"); // written with 6900 + map(0x006900, 0x0069ff).ram().share("palram2"); // startup (taitons1) + map(0x006a00, 0x006a1f).ram().share("spr_attra"); // test mode, pass flag 0x20 - AM_RANGE(0x006fc0, 0x006fc0) AM_WRITE(xavix_6fc0_w) // startup (maybe this is a mirror of tmap1_regs_w) + map(0x006fc0, 0x006fc0).w(this, FUNC(xavix_state::xavix_6fc0_w)); // startup (maybe this is a mirror of tmap1_regs_w) - AM_RANGE(0x006fc8, 0x006fcf) AM_WRITE(tmap1_regs_w) // video registers + map(0x006fc8, 0x006fcf).w(this, FUNC(xavix_state::tmap1_regs_w)); // video registers - AM_RANGE(0x006fd0, 0x006fd7) AM_READWRITE(tmap2_regs_r, tmap2_regs_w) - AM_RANGE(0x006fd8, 0x006fd8) AM_WRITE(xavix_6fd8_w) // startup (mirror of tmap2_regs_w?) + map(0x006fd0, 0x006fd7).rw(this, FUNC(xavix_state::tmap2_regs_r), FUNC(xavix_state::tmap2_regs_w)); + map(0x006fd8, 0x006fd8).w(this, FUNC(xavix_state::xavix_6fd8_w)); // startup (mirror of tmap2_regs_w?) - AM_RANGE(0x006fe0, 0x006fe0) AM_READWRITE(vid_dma_trigger_r, vid_dma_trigger_w) // after writing to 6fe1/6fe2 and 6fe5/6fe6 rad_mtrk writes 0x43/0x44 here then polls on 0x40 (see function call at c273) write values are hardcoded, similar code at 18401 - AM_RANGE(0x006fe1, 0x006fe2) AM_WRITE(vid_dma_params_1_w) - AM_RANGE(0x006fe5, 0x006fe6) AM_WRITE(vid_dma_params_2_w) + map(0x006fe0, 0x006fe0).rw(this, FUNC(xavix_state::vid_dma_trigger_r), FUNC(xavix_state::vid_dma_trigger_w)); // after writing to 6fe1/6fe2 and 6fe5/6fe6 rad_mtrk writes 0x43/0x44 here then polls on 0x40 (see function call at c273) write values are hardcoded, similar code at 18401 + map(0x006fe1, 0x006fe2).w(this, FUNC(xavix_state::vid_dma_params_1_w)); + map(0x006fe5, 0x006fe6).w(this, FUNC(xavix_state::vid_dma_params_2_w)); // function in rad_mtrk at 0184b7 uses this - AM_RANGE(0x006fe8, 0x006fe8) AM_RAM // r/w tested - AM_RANGE(0x006fe9, 0x006fe9) AM_RAM // r/w tested + map(0x006fe8, 0x006fe8).ram(); // r/w tested + map(0x006fe9, 0x006fe9).ram(); // r/w tested //AM_RANGE(0x006fea, 0x006fea) AM_WRITENOP - AM_RANGE(0x006ff0, 0x006ff0) AM_READWRITE(xavix_6ff0_r, xavix_6ff0_w) // r/w tested + map(0x006ff0, 0x006ff0).rw(this, FUNC(xavix_state::xavix_6ff0_r), FUNC(xavix_state::xavix_6ff0_w)); // r/w tested //AM_RANGE(0x006ff1, 0x006ff1) AM_WRITENOP // startup - cleared in interrupt 0 //AM_RANGE(0x006ff2, 0x006ff2) AM_WRITENOP // set to 07 after clearing above things in interrupt 0 - AM_RANGE(0x006ff8, 0x006ff8) AM_READWRITE(xavix_6ff8_r, xavix_6ff8_w) // always seems to be a read/store or read/modify/store - AM_RANGE(0x006ff9, 0x006ff9) AM_READ(pal_ntsc_r) + map(0x006ff8, 0x006ff8).rw(this, FUNC(xavix_state::xavix_6ff8_r), FUNC(xavix_state::xavix_6ff8_w)); // always seems to be a read/store or read/modify/store + map(0x006ff9, 0x006ff9).r(this, FUNC(xavix_state::pal_ntsc_r)); // 7xxx ranges system controller? - AM_RANGE(0x0075f0, 0x0075f0) AM_READWRITE(xavix_75f0_r, xavix_75f0_w) // r/w tested read/written 8 times in a row - AM_RANGE(0x0075f1, 0x0075f1) AM_READWRITE(xavix_75f1_r, xavix_75f1_w) // r/w tested read/written 8 times in a row - AM_RANGE(0x0075f3, 0x0075f3) AM_RAM - AM_RANGE(0x0075f4, 0x0075f4) AM_READ(xavix_75f4_r) // related to 75f0 (read after writing there - rad_mtrk) - AM_RANGE(0x0075f5, 0x0075f5) AM_READ(xavix_75f5_r) // related to 75f1 (read after writing there - rad_mtrk) + map(0x0075f0, 0x0075f0).rw(this, FUNC(xavix_state::xavix_75f0_r), FUNC(xavix_state::xavix_75f0_w)); // r/w tested read/written 8 times in a row + map(0x0075f1, 0x0075f1).rw(this, FUNC(xavix_state::xavix_75f1_r), FUNC(xavix_state::xavix_75f1_w)); // r/w tested read/written 8 times in a row + map(0x0075f3, 0x0075f3).ram(); + map(0x0075f4, 0x0075f4).r(this, FUNC(xavix_state::xavix_75f4_r)); // related to 75f0 (read after writing there - rad_mtrk) + map(0x0075f5, 0x0075f5).r(this, FUNC(xavix_state::xavix_75f5_r)); // related to 75f1 (read after writing there - rad_mtrk) // taitons1 after 75f7/75f8 - AM_RANGE(0x0075f6, 0x0075f6) AM_READWRITE(xavix_75f6_r, xavix_75f6_w) // r/w tested + map(0x0075f6, 0x0075f6).rw(this, FUNC(xavix_state::xavix_75f6_r), FUNC(xavix_state::xavix_75f6_w)); // r/w tested // taitons1 written as a pair - AM_RANGE(0x0075f7, 0x0075f7) AM_WRITE(xavix_75f7_w) - AM_RANGE(0x0075f8, 0x0075f8) AM_READWRITE(xavix_75f8_r, xavix_75f8_w) // r/w tested + map(0x0075f7, 0x0075f7).w(this, FUNC(xavix_state::xavix_75f7_w)); + map(0x0075f8, 0x0075f8).rw(this, FUNC(xavix_state::xavix_75f8_r), FUNC(xavix_state::xavix_75f8_w)); // r/w tested // taitons1 written after 75f6, then read - AM_RANGE(0x0075f9, 0x0075f9) AM_READWRITE(xavix_75f9_r, xavix_75f9_w) + map(0x0075f9, 0x0075f9).rw(this, FUNC(xavix_state::xavix_75f9_r), FUNC(xavix_state::xavix_75f9_w)); // at another time - AM_RANGE(0x0075fa, 0x0075fa) AM_READWRITE(xavix_75fa_r, xavix_75fa_w) // r/w tested - AM_RANGE(0x0075fb, 0x0075fb) AM_READWRITE(xavix_75fb_r, xavix_75fb_w) // r/w tested - AM_RANGE(0x0075fc, 0x0075fc) AM_READWRITE(xavix_75fc_r, xavix_75fc_w) // r/w tested - AM_RANGE(0x0075fd, 0x0075fd) AM_READWRITE(xavix_75fd_r, xavix_75fd_w) // r/w tested - AM_RANGE(0x0075fe, 0x0075fe) AM_WRITE(xavix_75fe_w) + map(0x0075fa, 0x0075fa).rw(this, FUNC(xavix_state::xavix_75fa_r), FUNC(xavix_state::xavix_75fa_w)); // r/w tested + map(0x0075fb, 0x0075fb).rw(this, FUNC(xavix_state::xavix_75fb_r), FUNC(xavix_state::xavix_75fb_w)); // r/w tested + map(0x0075fc, 0x0075fc).rw(this, FUNC(xavix_state::xavix_75fc_r), FUNC(xavix_state::xavix_75fc_w)); // r/w tested + map(0x0075fd, 0x0075fd).rw(this, FUNC(xavix_state::xavix_75fd_r), FUNC(xavix_state::xavix_75fd_w)); // r/w tested + map(0x0075fe, 0x0075fe).w(this, FUNC(xavix_state::xavix_75fe_w)); // taitons1 written other 75xx operations - AM_RANGE(0x0075ff, 0x0075ff) AM_WRITE(xavix_75ff_w) + map(0x0075ff, 0x0075ff).w(this, FUNC(xavix_state::xavix_75ff_w)); //AM_RANGE(0x007810, 0x007810) AM_WRITENOP // startup @@ -1606,21 +1607,21 @@ ADDRESS_MAP_START(xavix_state::xavix_map) //AM_RANGE(0x007902, 0x007902) AM_WRITENOP // startup // DMA trigger for below (written after the others) waits on status of bit 1 in a loop - AM_RANGE(0x007980, 0x007980) AM_READWRITE(dma_trigger_r, dma_trigger_w) + map(0x007980, 0x007980).rw(this, FUNC(xavix_state::dma_trigger_r), FUNC(xavix_state::dma_trigger_w)); // DMA source - AM_RANGE(0x007981, 0x007981) AM_WRITE(rom_dmasrc_lo_w) - AM_RANGE(0x007982, 0x007982) AM_WRITE(rom_dmasrc_md_w) - AM_RANGE(0x007983, 0x007983) AM_WRITE(rom_dmasrc_hi_w) + map(0x007981, 0x007981).w(this, FUNC(xavix_state::rom_dmasrc_lo_w)); + map(0x007982, 0x007982).w(this, FUNC(xavix_state::rom_dmasrc_md_w)); + map(0x007983, 0x007983).w(this, FUNC(xavix_state::rom_dmasrc_hi_w)); // DMA dest - AM_RANGE(0x007984, 0x007984) AM_WRITE(rom_dmadst_lo_w) - AM_RANGE(0x007985, 0x007985) AM_WRITE(rom_dmadst_hi_w) + map(0x007984, 0x007984).w(this, FUNC(xavix_state::rom_dmadst_lo_w)); + map(0x007985, 0x007985).w(this, FUNC(xavix_state::rom_dmadst_hi_w)); // DMA length - AM_RANGE(0x007986, 0x007986) AM_WRITE(rom_dmalen_lo_w) - AM_RANGE(0x007987, 0x007987) AM_WRITE(rom_dmalen_hi_w) + map(0x007986, 0x007986).w(this, FUNC(xavix_state::rom_dmalen_lo_w)); + map(0x007987, 0x007987).w(this, FUNC(xavix_state::rom_dmalen_hi_w)); // GPIO stuff - AM_RANGE(0x007a00, 0x007a00) AM_READ(xavix_io_0_r) - AM_RANGE(0x007a01, 0x007a01) AM_READ(xavix_io_1_r) //AM_WRITENOP // startup (taitons1) + map(0x007a00, 0x007a00).r(this, FUNC(xavix_state::xavix_io_0_r)); + map(0x007a01, 0x007a01).r(this, FUNC(xavix_state::xavix_io_1_r)); //AM_WRITENOP // startup (taitons1) //AM_RANGE(0x007a02, 0x007a02) AM_WRITENOP // startup, gets set to 20, 7a00 is then also written with 20 //AM_RANGE(0x007a03, 0x007a03) AM_READNOP AM_WRITENOP // startup (gets set to 84 which is the same as the bits checked on 7a01, possible port direction register?) @@ -1634,24 +1635,24 @@ ADDRESS_MAP_START(xavix_state::xavix_map) //AM_RANGE(0x007c02, 0x007c02) AM_WRITENOP // once // this is a multiplication chip - AM_RANGE(0x007ff2, 0x007ff4) AM_WRITE(mult_param_w) - AM_RANGE(0x007ff5, 0x007ff6) AM_READ(mult_r) + map(0x007ff2, 0x007ff4).w(this, FUNC(xavix_state::mult_param_w)); + map(0x007ff5, 0x007ff6).r(this, FUNC(xavix_state::mult_r)); // maybe irq enable, written after below - AM_RANGE(0x007ff9, 0x007ff9) AM_WRITE(irq_enable_w) // interrupt related, but probalby not a simple 'enable' otherwise interrupts happen before we're ready for them. + map(0x007ff9, 0x007ff9).w(this, FUNC(xavix_state::irq_enable_w)); // interrupt related, but probalby not a simple 'enable' otherwise interrupts happen before we're ready for them. // an IRQ vector (nmi?) - AM_RANGE(0x007ffa, 0x007ffa) AM_WRITE(irq_vector0_lo_w) - AM_RANGE(0x007ffb, 0x007ffb) AM_WRITE(irq_vector0_hi_w) + map(0x007ffa, 0x007ffa).w(this, FUNC(xavix_state::irq_vector0_lo_w)); + map(0x007ffb, 0x007ffb).w(this, FUNC(xavix_state::irq_vector0_hi_w)); - AM_RANGE(0x007ffc, 0x007ffc) AM_READWRITE(irq_source_r, irq_source_w) + map(0x007ffc, 0x007ffc).rw(this, FUNC(xavix_state::irq_source_r), FUNC(xavix_state::irq_source_w)); // an IRQ vector (irq?) - AM_RANGE(0x007ffe, 0x007ffe) AM_WRITE(irq_vector1_lo_w) - AM_RANGE(0x007fff, 0x007fff) AM_WRITE(irq_vector1_hi_w) + map(0x007ffe, 0x007ffe).w(this, FUNC(xavix_state::irq_vector1_lo_w)); + map(0x007fff, 0x007fff).w(this, FUNC(xavix_state::irq_vector1_hi_w)); // rom is installed in init due to different rom sizes and mirroring required // AM_RANGE(0x008000, 0x7fffff) AM_ROM AM_REGION("bios", 0x008000) AM_MIRROR(0x800000) // rad_mtrk relies on rom mirroring -ADDRESS_MAP_END +} static INPUT_PORTS_START( xavix ) PORT_START("IN0") diff --git a/src/mame/drivers/xbox.cpp b/src/mame/drivers/xbox.cpp index cf404468b0c..df2587fbaa9 100644 --- a/src/mame/drivers/xbox.cpp +++ b/src/mame/drivers/xbox.cpp @@ -55,14 +55,16 @@ void xbox_state::video_start() { } -ADDRESS_MAP_START(xbox_state::xbox_map) - AM_IMPORT_FROM(xbox_base_map) - AM_RANGE(0xff000000, 0xff0fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f00000) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xbox_state::xbox_map_io) - AM_IMPORT_FROM(xbox_base_map_io) -ADDRESS_MAP_END +void xbox_state::xbox_map(address_map &map) +{ + xbox_base_map(map); + map(0xff000000, 0xff0fffff).rom().region("bios", 0).mirror(0x00f00000); +} + +void xbox_state::xbox_map_io(address_map &map) +{ + xbox_base_map_io(map); +} static INPUT_PORTS_START( xbox ) /* dummy active high structure */ diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp index 5de55077cf3..340ff5a3afc 100644 --- a/src/mame/drivers/xerox820.cpp +++ b/src/mame/drivers/xerox820.cpp @@ -165,49 +165,55 @@ WRITE8_MEMBER( xerox820ii_state::sync_w ) /* Memory Maps */ -ADDRESS_MAP_START(xerox820_state::xerox820_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(xerox820_state::xerox820_io) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff03) AM_DEVWRITE(COM8116_TAG, com8116_device, str_w) - AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80SIO_TAG, z80sio0_device, ba_cd_r, ba_cd_w) - AM_RANGE(0x08, 0x0b) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80PIO_GP_TAG, z80pio_device, read_alt, write_alt) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff03) AM_DEVWRITE(COM8116_TAG, com8116_device, stt_w) - AM_RANGE(0x10, 0x13) AM_MIRROR(0xff00) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0x14, 0x14) AM_MIRROR(0x0003) AM_SELECT(0xff00) AM_WRITE(scroll_w) - AM_RANGE(0x18, 0x1b) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xff00) AM_DEVREADWRITE(Z80PIO_KB_TAG, z80pio_device, read_alt, write_alt) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xerox820ii_state::xerox820ii_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(xerox820ii_state::xerox820ii_io) - AM_IMPORT_FROM(xerox820_io) - AM_RANGE(0x28, 0x29) AM_MIRROR(0xff00) AM_WRITE(bell_w) - AM_RANGE(0x30, 0x31) AM_MIRROR(0xff00) AM_WRITE(slden_w) - AM_RANGE(0x34, 0x35) AM_MIRROR(0xff00) AM_WRITE(chrom_w) - AM_RANGE(0x36, 0x36) AM_MIRROR(0xff00) AM_WRITE(lowlite_w) - AM_RANGE(0x68, 0x69) AM_MIRROR(0xff00) AM_WRITE(sync_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xerox820ii_state::xerox168_mem) - AM_RANGE(0x00000, 0x3ffff) AM_RAM - AM_RANGE(0xff000, 0xfffff) AM_ROM AM_REGION(I8086_TAG, 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xerox820_state::mk83_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x3000, 0x6fff) AM_RAM - AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void xerox820_state::xerox820_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x3000, 0x3fff).ram().share("video_ram"); + map(0x4000, 0xffff).ram(); +} + +void xerox820_state::xerox820_io(address_map &map) +{ + map(0x00, 0x00).mirror(0xff03).w(COM8116_TAG, FUNC(com8116_device::str_w)); + map(0x04, 0x07).mirror(0xff00).rw(m_sio, FUNC(z80sio0_device::ba_cd_r), FUNC(z80sio0_device::ba_cd_w)); + map(0x08, 0x0b).mirror(0xff00).rw(Z80PIO_GP_TAG, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x0c, 0x0c).mirror(0xff03).w(COM8116_TAG, FUNC(com8116_device::stt_w)); + map(0x10, 0x13).mirror(0xff00).rw(this, FUNC(xerox820_state::fdc_r), FUNC(xerox820_state::fdc_w)); + map(0x14, 0x14).mirror(0x0003).select(0xff00).w(this, FUNC(xerox820_state::scroll_w)); + map(0x18, 0x1b).mirror(0xff00).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x1c, 0x1f).mirror(0xff00).rw(m_kbpio, FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); +} + +void xerox820ii_state::xerox820ii_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x3000, 0x3fff).ram().share("video_ram"); + map(0xc000, 0xffff).ram(); +} + +void xerox820ii_state::xerox820ii_io(address_map &map) +{ + xerox820_io(map); + map(0x28, 0x29).mirror(0xff00).w(this, FUNC(xerox820ii_state::bell_w)); + map(0x30, 0x31).mirror(0xff00).w(this, FUNC(xerox820ii_state::slden_w)); + map(0x34, 0x35).mirror(0xff00).w(this, FUNC(xerox820ii_state::chrom_w)); + map(0x36, 0x36).mirror(0xff00).w(this, FUNC(xerox820ii_state::lowlite_w)); + map(0x68, 0x69).mirror(0xff00).w(this, FUNC(xerox820ii_state::sync_w)); +} + +void xerox820ii_state::xerox168_mem(address_map &map) +{ + map(0x00000, 0x3ffff).ram(); + map(0xff000, 0xfffff).rom().region(I8086_TAG, 0); +} + +void xerox820_state::mk83_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x3000, 0x6fff).ram(); + map(0x7000, 0x7fff).ram().share("video_ram"); + map(0x8000, 0xffff).ram(); +} /* Input Ports */ diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp index 0f9e81c6d56..f2e24ba08d5 100644 --- a/src/mame/drivers/xexex.cpp +++ b/src/mame/drivers/xexex.cpp @@ -334,59 +334,61 @@ TIMER_DEVICE_CALLBACK_MEMBER(xexex_state::xexex_interrupt) } -ADDRESS_MAP_START(xexex_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("workram") // work RAM +void xexex_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram().share("workram"); // work RAM #if XE_SKIPIDLE - AM_RANGE(0x080014, 0x080015) AM_READ(xexex_waitskip_r) // helps sound CPU by giving back control as early as possible + map(0x080014, 0x080015).r(this, FUNC(xexex_state::xexex_waitskip_r)); // helps sound CPU by giving back control as early as possible #endif - AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("spriteram") // K053247 sprite RAM - AM_RANGE(0x098000, 0x09ffff) AM_READWRITE(spriteram_mirror_r, spriteram_mirror_w) // K053247 sprite RAM mirror read - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w) // VACSET (K054157) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) // OBJSET1 - AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) // Passthrough to sprite roms - AM_RANGE(0x0c6000, 0x0c7fff) AM_DEVREADWRITE("k053250", k053250_device, ram_r, ram_w) // K053250 "road" RAM - AM_RANGE(0x0c8000, 0x0c800f) AM_DEVREADWRITE("k053250", k053250_device, reg_r, reg_w) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) // priority encoder + map(0x090000, 0x097fff).ram().share("spriteram"); // K053247 sprite RAM + map(0x098000, 0x09ffff).rw(this, FUNC(xexex_state::spriteram_mirror_r), FUNC(xexex_state::spriteram_mirror_w)); // K053247 sprite RAM mirror read + map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET (K054157) + map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); // OBJSET1 + map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); // Passthrough to sprite roms + map(0x0c6000, 0x0c7fff).rw(m_k053250, FUNC(k053250_device::ram_r), FUNC(k053250_device::ram_w)); // K053250 "road" RAM + map(0x0c8000, 0x0c800f).rw(m_k053250, FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w)); + map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC + map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); // priority encoder // AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU - AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS regs - AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1") - AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2") - AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("EEPROM") - AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w) - AM_RANGE(0x100000, 0x17ffff) AM_ROM - AM_RANGE(0x180000, 0x181fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) // Passthrough to tile roms - AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREAD("k053250", k053250_device, rom_r) - AM_RANGE(0x1b0000, 0x1b1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x0d4000, 0x0d4001).w(this, FUNC(xexex_state::sound_irq_w)); + map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS regs + map(0x0da000, 0x0da001).portr("P1"); + map(0x0da002, 0x0da003).portr("P2"); + map(0x0dc000, 0x0dc001).portr("SYSTEM"); + map(0x0dc002, 0x0dc003).portr("EEPROM"); + map(0x0de000, 0x0de001).rw(this, FUNC(xexex_state::control2_r), FUNC(xexex_state::control2_w)); + map(0x100000, 0x17ffff).rom(); + map(0x180000, 0x181fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x182000, 0x183fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x190000, 0x191fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); // Passthrough to tile roms + map(0x1a0000, 0x1a1fff).r(m_k053250, FUNC(k053250_device::rom_r)); + map(0x1b0000, 0x1b1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); #if XE_DEBUG - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r) + map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r)); + map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r)); + map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r)); + map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r)); + map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r)); #endif -ADDRESS_MAP_END +} -ADDRESS_MAP_START(xexex_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END +void xexex_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xec00, 0xec01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(xexex_state::sound_bankswitch_w)); +} static INPUT_PORTS_START( xexex ) diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp index ea32ba47552..825f4944f3b 100644 --- a/src/mame/drivers/xmen.cpp +++ b/src/mame/drivers/xmen.cpp @@ -77,57 +77,60 @@ WRITE8_MEMBER(xmen_state::sound_bankswitch_w) } -ADDRESS_MAP_START(xmen_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) - AM_RANGE(0x101000, 0x101fff) AM_RAM - AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w) - AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3") - AM_RANGE(0x10a004, 0x10a005) AM_READ_PORT("EEPROM") - AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */ - AM_RANGE(0x18c000, 0x197fff) AM_DEVREADWRITE("k052109", k052109_device, lsb_r, lsb_w) - AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xmen_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(xmen_state::_6p_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteramleft") /* sprites (screen 1) */ - AM_RANGE(0x101000, 0x101fff) AM_RAM - AM_RANGE(0x102000, 0x102fff) AM_RAM AM_SHARE("spriteramright") /* sprites (screen 2) */ - AM_RANGE(0x103000, 0x103fff) AM_RAM /* 6p - a buffer? */ - AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w) - AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) /* sprites */ - AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3") - AM_RANGE(0x10a004, 0x10a005) AM_READ_PORT("EEPROM") - AM_RANGE(0x10a006, 0x10a007) AM_READ_PORT("P5_P6") - AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053247_device, k053246_word_r) /* sprites */ - AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */ +void xmen_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x0fffff).rom(); + map(0x100000, 0x100fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w)); + map(0x101000, 0x101fff).ram(); + map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x108000, 0x108001).w(this, FUNC(xmen_state::eeprom_w)); + map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x10a002, 0x10a003).portr("P1_P3"); + map(0x10a004, 0x10a005).portr("EEPROM"); + map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x110000, 0x113fff).ram(); /* main RAM */ + map(0x18c000, 0x197fff).rw(m_k052109, FUNC(k052109_device::lsb_r), FUNC(k052109_device::lsb_w)); + map(0x18fa00, 0x18fa01).w(this, FUNC(xmen_state::xmen_18fa00_w)); +} + +void xmen_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe800, 0xe801).mirror(0x0400).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(xmen_state::sound_bankswitch_w)); +} + + +void xmen_state::_6p_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x0fffff).rom(); + map(0x100000, 0x100fff).ram().share("spriteramleft"); /* sprites (screen 1) */ + map(0x101000, 0x101fff).ram(); + map(0x102000, 0x102fff).ram().share("spriteramright"); /* sprites (screen 2) */ + map(0x103000, 0x103fff).ram(); /* 6p - a buffer? */ + map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x108000, 0x108001).w(this, FUNC(xmen_state::eeprom_w)); + map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_word_w)); /* sprites */ + map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x10a002, 0x10a003).portr("P1_P3"); + map(0x10a004, 0x10a005).portr("EEPROM"); + map(0x10a006, 0x10a007).portr("P5_P6"); + map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r)); /* sprites */ + map(0x110000, 0x113fff).ram(); /* main RAM */ /* AM_RANGE(0x18c000, 0x197fff) AM_DEVWRITE("k052109", k052109_device, lsb_w) AM_SHARE("tilemapleft") */ - AM_RANGE(0x18c000, 0x197fff) AM_RAM AM_SHARE("tilemapleft") /* left tilemap (p1,p2,p3 counters) */ - AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w) + map(0x18c000, 0x197fff).ram().share("tilemapleft"); /* left tilemap (p1,p2,p3 counters) */ + map(0x18fa00, 0x18fa01).w(this, FUNC(xmen_state::xmen_18fa00_w)); /* AM_RANGE(0x1ac000, 0x1af7ff) AM_READONLY AM_RANGE(0x1ac000, 0x1af7ff) AM_WRITEONLY @@ -138,7 +141,7 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map) AM_RANGE(0x1b4000, 0x1b77ff) AM_READONLY AM_RANGE(0x1b4000, 0x1b77ff) AM_WRITEONLY */ - AM_RANGE(0x1ac000, 0x1b7fff) AM_RAM AM_SHARE("tilemapright") /* right tilemap */ + map(0x1ac000, 0x1b7fff).ram().share("tilemapright"); /* right tilemap */ /* what are the regions below buffers? (used by hw or software?) */ /* @@ -148,7 +151,7 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map) AM_RANGE(0x1d0000, 0x1d37ff) AM_READONLY AM_RANGE(0x1d0000, 0x1d37ff) AM_WRITEONLY */ - AM_RANGE(0x1cc000, 0x1d7fff) AM_RAM /* tilemap ? */ + map(0x1cc000, 0x1d7fff).ram(); /* tilemap ? */ /* whats the stuff below, buffers? */ /* @@ -159,8 +162,8 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map) AM_RANGE(0x1f4000, 0x1f77ff) AM_READONLY AM_RANGE(0x1f4000, 0x1f77ff) AM_WRITEONLY */ - AM_RANGE(0x1ec000, 0x1f7fff) AM_RAM /* tilemap ? */ -ADDRESS_MAP_END + map(0x1ec000, 0x1f7fff).ram(); /* tilemap ? */ +} static INPUT_PORTS_START( xmen ) diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp index aa75582599e..1d57b537130 100644 --- a/src/mame/drivers/xor100.cpp +++ b/src/mame/drivers/xor100.cpp @@ -262,28 +262,30 @@ WRITE8_MEMBER( xor100_state::fdc_dsel_w ) /* Memory Maps */ -ADDRESS_MAP_START(xor100_state::xor100_mem) - AM_RANGE(0x0000, 0xffff) AM_WRITE_BANK("bank1") - AM_RANGE(0x0000, 0xf7ff) AM_READ_BANK("bank2") - AM_RANGE(0xf800, 0xffff) AM_READ_BANK("bank3") -ADDRESS_MAP_END - -ADDRESS_MAP_START(xor100_state::xor100_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE(I8251_A_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(I8251_A_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE(I8251_B_TAG, i8251_device, data_r, data_w) - AM_RANGE(0x03, 0x03) AM_DEVREADWRITE(I8251_B_TAG, i8251_device, status_r, control_w) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) - AM_RANGE(0x08, 0x08) AM_WRITE(mmu_w) - AM_RANGE(0x09, 0x09) AM_WRITE(prom_toggle_w) - AM_RANGE(0x0a, 0x0a) AM_READ(prom_disable_r) - AM_RANGE(0x0b, 0x0b) AM_READ_PORT("DSW0") AM_WRITE(baud_w) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) - AM_RANGE(0xf8, 0xfb) AM_READWRITE(fdc_r, fdc_w) - AM_RANGE(0xfc, 0xfc) AM_READWRITE(fdc_wait_r, fdc_dcont_w) - AM_RANGE(0xfd, 0xfd) AM_WRITE(fdc_dsel_w) -ADDRESS_MAP_END +void xor100_state::xor100_mem(address_map &map) +{ + map(0x0000, 0xffff).bankw("bank1"); + map(0x0000, 0xf7ff).bankr("bank2"); + map(0xf800, 0xffff).bankr("bank3"); +} + +void xor100_state::xor100_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw(m_uart_a, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw(m_uart_a, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x02, 0x02).rw(m_uart_b, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x03, 0x03).rw(m_uart_b, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x04, 0x07).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x08).w(this, FUNC(xor100_state::mmu_w)); + map(0x09, 0x09).w(this, FUNC(xor100_state::prom_toggle_w)); + map(0x0a, 0x0a).r(this, FUNC(xor100_state::prom_disable_r)); + map(0x0b, 0x0b).portr("DSW0").w(this, FUNC(xor100_state::baud_w)); + map(0x0c, 0x0f).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0xf8, 0xfb).rw(this, FUNC(xor100_state::fdc_r), FUNC(xor100_state::fdc_w)); + map(0xfc, 0xfc).rw(this, FUNC(xor100_state::fdc_wait_r), FUNC(xor100_state::fdc_dcont_w)); + map(0xfd, 0xfd).w(this, FUNC(xor100_state::fdc_dsel_w)); +} /* Input Ports */ diff --git a/src/mame/drivers/xorworld.cpp b/src/mame/drivers/xorworld.cpp index 894e2cc3fd9..570406d2df3 100644 --- a/src/mame/drivers/xorworld.cpp +++ b/src/mame/drivers/xorworld.cpp @@ -61,19 +61,20 @@ WRITE16_MEMBER(xorworld_state::irq6_ack_w) m_maincpu->set_input_line(6, CLEAR_LINE); } -ADDRESS_MAP_START(xorworld_state::xorworld_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1") - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P2") - AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW") - AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("saa", saa1099_device, write, 0x00ff) - AM_RANGE(0xa00000, 0xa0000f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) - AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xffc880, 0xffc881) AM_WRITE(irq2_ack_w) AM_READNOP - AM_RANGE(0xffc882, 0xffc883) AM_WRITE(irq6_ack_w) AM_READNOP - AM_RANGE(0xffc884, 0xffffff) AM_RAM -ADDRESS_MAP_END +void xorworld_state::xorworld_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x200000, 0x200001).portr("P1"); + map(0x400000, 0x400001).portr("P2"); + map(0x600000, 0x600001).portr("DSW"); + map(0x800000, 0x800003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff); + map(0xa00000, 0xa0000f).w("mainlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0xffc000, 0xffc7ff).ram().w(this, FUNC(xorworld_state::videoram_w)).share("videoram"); + map(0xffc800, 0xffc87f).ram().share("spriteram"); + map(0xffc880, 0xffc881).w(this, FUNC(xorworld_state::irq2_ack_w)).nopr(); + map(0xffc882, 0xffc883).w(this, FUNC(xorworld_state::irq6_ack_w)).nopr(); + map(0xffc884, 0xffffff).ram(); +} static INPUT_PORTS_START( xorworld ) diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp index 231411cfae5..e1c00624c15 100644 --- a/src/mame/drivers/xtheball.cpp +++ b/src/mame/drivers/xtheball.cpp @@ -35,7 +35,7 @@ public: m_analog_x(*this, "ANALOGX"), m_analog_y(*this, "ANALOGY") { } - required_device<cpu_device> m_maincpu; + required_device<tms34010_device> m_maincpu; required_device<watchdog_timer_device> m_watchdog; required_device<tlc34076_device> m_tlc34076; required_device<ticket_dispenser_device> m_ticket; @@ -191,29 +191,30 @@ READ16_MEMBER(xtheball_state::analogy_watchdog_r) * *************************************/ -ADDRESS_MAP_START(xtheball_state::main_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_SHARE("vrabg") - AM_RANGE(0x02000000, 0x020fffff) AM_RAM AM_SHARE("vrafg") - AM_RANGE(0x03000000, 0x030000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff) - AM_RANGE(0x03020000, 0x0302005f) AM_UNMAP // looks like a CRTC of some sort - AM_RANGE(0x03040000, 0x0304007f) AM_DEVWRITE8("latch1", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x03040080, 0x0304008f) AM_READ_PORT("DSW") - AM_RANGE(0x03040080, 0x030400ff) AM_DEVWRITE8("latch2", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x03040100, 0x0304010f) AM_READ(analogx_r) - AM_RANGE(0x03040110, 0x0304011f) AM_READ_PORT("COIN1") - AM_RANGE(0x03040130, 0x0304013f) AM_READ_PORT("SERVICE2") - AM_RANGE(0x03040140, 0x0304014f) AM_READ_PORT("COIN3") - AM_RANGE(0x03040150, 0x0304015f) AM_READ_PORT("BUTTON1") - AM_RANGE(0x03040160, 0x0304016f) AM_READ_PORT("SERVICE") - AM_RANGE(0x03040170, 0x0304017f) AM_READ_PORT("SERVICE1") - AM_RANGE(0x03040100, 0x0304017f) AM_DEVWRITE8("latch3", ls259_device, write_d0, 0x00ff) - AM_RANGE(0x03040180, 0x0304018f) AM_READ(analogy_watchdog_r) AM_WRITENOP - AM_RANGE(0x03060000, 0x0306000f) AM_DEVWRITE8("dac", dac_byte_interface, write, 0xff00) - AM_RANGE(0x04000000, 0x057fffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0xc0000000, 0xc00001ff) AM_DEVREADWRITE("maincpu", tms34010_device, io_register_r, io_register_w) - AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END +void xtheball_state::main_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).ram().share("nvram"); + map(0x01000000, 0x010fffff).ram().share("vrabg"); + map(0x02000000, 0x020fffff).ram().share("vrafg"); + map(0x03000000, 0x030000ff).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff); + map(0x03020000, 0x0302005f).unmaprw(); // looks like a CRTC of some sort + map(0x03040000, 0x0304007f).w("latch1", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x03040080, 0x0304008f).portr("DSW"); + map(0x03040080, 0x030400ff).w("latch2", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x03040100, 0x0304010f).r(this, FUNC(xtheball_state::analogx_r)); + map(0x03040110, 0x0304011f).portr("COIN1"); + map(0x03040130, 0x0304013f).portr("SERVICE2"); + map(0x03040140, 0x0304014f).portr("COIN3"); + map(0x03040150, 0x0304015f).portr("BUTTON1"); + map(0x03040160, 0x0304016f).portr("SERVICE"); + map(0x03040170, 0x0304017f).portr("SERVICE1"); + map(0x03040100, 0x0304017f).w("latch3", FUNC(ls259_device::write_d0)).umask16(0x00ff); + map(0x03040180, 0x0304018f).r(this, FUNC(xtheball_state::analogy_watchdog_r)).nopw(); + map(0x03060000, 0x0306000f).w("dac", FUNC(dac_byte_interface::write)).umask16(0xff00); + map(0x04000000, 0x057fffff).rom().region("user2", 0); + map(0xc0000000, 0xc00001ff).rw(m_maincpu, FUNC(tms34010_device::io_register_r), FUNC(tms34010_device::io_register_w)); + map(0xfff80000, 0xffffffff).rom().region("user1", 0); +} diff --git a/src/mame/drivers/xtom3d.cpp b/src/mame/drivers/xtom3d.cpp index 9599c7dfe88..8ec5817ac35 100644 --- a/src/mame/drivers/xtom3d.cpp +++ b/src/mame/drivers/xtom3d.cpp @@ -351,31 +351,33 @@ WRITE32_MEMBER(xtom3d_state::bios_ram_w) } } -ADDRESS_MAP_START(xtom3d_state::xtom3d_map) - AM_RANGE(0x00000000, 0x0009ffff) AM_RAM - AM_RANGE(0x000a0000, 0x000bffff) AM_DEVREADWRITE8("vga", vga_device, mem_r, mem_w, 0xffffffff) - AM_RANGE(0x000c0000, 0x000c3fff) AM_ROMBANK("video_bank1") AM_WRITE(isa_ram1_w) - AM_RANGE(0x000c4000, 0x000c7fff) AM_ROMBANK("video_bank2") AM_WRITE(isa_ram2_w) - AM_RANGE(0x000e0000, 0x000e3fff) AM_ROMBANK("bios_ext1") AM_WRITE(bios_ext1_ram_w) - AM_RANGE(0x000e4000, 0x000e7fff) AM_ROMBANK("bios_ext2") AM_WRITE(bios_ext2_ram_w) - AM_RANGE(0x000e8000, 0x000ebfff) AM_ROMBANK("bios_ext3") AM_WRITE(bios_ext3_ram_w) - AM_RANGE(0x000ec000, 0x000effff) AM_ROMBANK("bios_ext4") AM_WRITE(bios_ext4_ram_w) - AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bios_bank") AM_WRITE(bios_ram_w) - AM_RANGE(0x00100000, 0x01ffffff) AM_RAM - AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("bios", 0) /* System BIOS */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(xtom3d_state::xtom3d_io) - AM_IMPORT_FROM(pcat32_io_common) - - AM_RANGE(0x00e8, 0x00ef) AM_NOP - - AM_RANGE(0x03b0, 0x03bf) AM_DEVREADWRITE8("vga", vga_device, port_03b0_r, port_03b0_w, 0xffffffff) - AM_RANGE(0x03c0, 0x03cf) AM_DEVREADWRITE8("vga", vga_device, port_03c0_r, port_03c0_w, 0xffffffff) - AM_RANGE(0x03d0, 0x03df) AM_DEVREADWRITE8("vga", vga_device, port_03d0_r, port_03d0_w, 0xffffffff) - - AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write) -ADDRESS_MAP_END +void xtom3d_state::xtom3d_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); + map(0x000c0000, 0x000c3fff).bankr("video_bank1").w(this, FUNC(xtom3d_state::isa_ram1_w)); + map(0x000c4000, 0x000c7fff).bankr("video_bank2").w(this, FUNC(xtom3d_state::isa_ram2_w)); + map(0x000e0000, 0x000e3fff).bankr("bios_ext1").w(this, FUNC(xtom3d_state::bios_ext1_ram_w)); + map(0x000e4000, 0x000e7fff).bankr("bios_ext2").w(this, FUNC(xtom3d_state::bios_ext2_ram_w)); + map(0x000e8000, 0x000ebfff).bankr("bios_ext3").w(this, FUNC(xtom3d_state::bios_ext3_ram_w)); + map(0x000ec000, 0x000effff).bankr("bios_ext4").w(this, FUNC(xtom3d_state::bios_ext4_ram_w)); + map(0x000f0000, 0x000fffff).bankr("bios_bank").w(this, FUNC(xtom3d_state::bios_ram_w)); + map(0x00100000, 0x01ffffff).ram(); + map(0xfffe0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ +} + +void xtom3d_state::xtom3d_io(address_map &map) +{ + pcat32_io_common(map); + + map(0x00e8, 0x00ef).noprw(); + + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + + map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_legacy_device::read), FUNC(pci_bus_legacy_device::write)); +} void xtom3d_state::machine_start() diff --git a/src/mame/drivers/xxmissio.cpp b/src/mame/drivers/xxmissio.cpp index 05107c3b413..c0be4a065a4 100644 --- a/src/mame/drivers/xxmissio.cpp +++ b/src/mame/drivers/xxmissio.cpp @@ -90,52 +90,54 @@ void xxmissio_state::machine_start() /****************************************************************************/ -ADDRESS_MAP_START(xxmissio_state::map1) - AM_RANGE(0x0000, 0x7fff) AM_ROM +void xxmissio_state::map1(address_map &map) +{ + map(0x0000, 0x7fff).rom(); - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x8002, 0x8003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) + map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8002, 0x8003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("STATUS") - AM_RANGE(0xa002, 0xa002) AM_WRITE(status_m_w) - AM_RANGE(0xa003, 0xa003) AM_WRITE(flipscreen_w) + map(0xa000, 0xa000).portr("P1"); + map(0xa001, 0xa001).portr("P2"); + map(0xa002, 0xa002).portr("STATUS"); + map(0xa002, 0xa002).w(this, FUNC(xxmissio_state::status_m_w)); + map(0xa003, 0xa003).w(this, FUNC(xxmissio_state::flipscreen_w)); - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("fgram") - AM_RANGE(0xc800, 0xcfff) AM_READWRITE(bgram_r, bgram_w) AM_SHARE("bgram") - AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram") + map(0xc000, 0xc7ff).ram().share("fgram"); + map(0xc800, 0xcfff).rw(this, FUNC(xxmissio_state::bgram_r), FUNC(xxmissio_state::bgram_w)).share("bgram"); + map(0xd000, 0xd7ff).ram().share("spriteram"); - AM_RANGE(0xd800, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0xd800, 0xdaff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE(0xe000, 0xefff) AM_SHARE("share5") AM_RAM - AM_RANGE(0xf000, 0xffff) AM_SHARE("share6") AM_RAM -ADDRESS_MAP_END + map(0xe000, 0xefff).share("share5").ram(); + map(0xf000, 0xffff).share("share6").ram(); +} -ADDRESS_MAP_START(xxmissio_state::map2) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") +void xxmissio_state::map2(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("bank1"); - AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x8002, 0x8003) AM_DEVREADWRITE("ym2", ym2203_device, read, write) - AM_RANGE(0x8006, 0x8006) AM_WRITE(bank_sel_w) + map(0x8000, 0x8001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8002, 0x8003).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x8006, 0x8006).w(this, FUNC(xxmissio_state::bank_sel_w)); - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") - AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P2") - AM_RANGE(0xa002, 0xa002) AM_READ_PORT("STATUS") - AM_RANGE(0xa002, 0xa002) AM_WRITE(status_s_w) - AM_RANGE(0xa003, 0xa003) AM_WRITE(flipscreen_w) + map(0xa000, 0xa000).portr("P1"); + map(0xa001, 0xa001).portr("P2"); + map(0xa002, 0xa002).portr("STATUS"); + map(0xa002, 0xa002).w(this, FUNC(xxmissio_state::status_s_w)); + map(0xa003, 0xa003).w(this, FUNC(xxmissio_state::flipscreen_w)); - AM_RANGE(0xc000, 0xc7ff) AM_SHARE("fgram") AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_SHARE("bgram") AM_READWRITE(bgram_r, bgram_w) - AM_RANGE(0xd000, 0xd7ff) AM_SHARE("spriteram") AM_RAM + map(0xc000, 0xc7ff).share("fgram").ram(); + map(0xc800, 0xcfff).share("bgram").rw(this, FUNC(xxmissio_state::bgram_r), FUNC(xxmissio_state::bgram_w)); + map(0xd000, 0xd7ff).share("spriteram").ram(); - AM_RANGE(0xd800, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette") + map(0xd800, 0xdaff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - AM_RANGE(0xe000, 0xefff) AM_SHARE("share6") AM_RAM - AM_RANGE(0xf000, 0xffff) AM_SHARE("share5") AM_RAM -ADDRESS_MAP_END + map(0xe000, 0xefff).share("share6").ram(); + map(0xf000, 0xffff).share("share5").ram(); +} /****************************************************************************/ diff --git a/src/mame/drivers/xybots.cpp b/src/mame/drivers/xybots.cpp index 855435ebda8..15c25df660f 100644 --- a/src/mame/drivers/xybots.cpp +++ b/src/mame/drivers/xybots.cpp @@ -65,26 +65,27 @@ READ16_MEMBER(xybots_state::special_port1_r) *************************************/ /* full map verified from schematics */ -ADDRESS_MAP_START(xybots_state::main_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x007fff) AM_MIRROR(0x7c0000) AM_ROM - AM_RANGE(0x008000, 0x00ffff) AM_MIRROR(0x7c0000) AM_ROM /* slapstic maps here */ - AM_RANGE(0x010000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM - AM_RANGE(0x800000, 0x800fff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0x801000, 0x802dff) AM_MIRROR(0x7f8000) AM_RAM - AM_RANGE(0x802e00, 0x802fff) AM_MIRROR(0x7f8000) AM_RAM AM_SHARE("mob") - AM_RANGE(0x803000, 0x803fff) AM_MIRROR(0x7f8000) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0x804000, 0x8047ff) AM_MIRROR(0x7f8800) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x805000, 0x805fff) AM_MIRROR(0x7f8000) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0x806000, 0x8060ff) AM_MIRROR(0x7f8000) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) - AM_RANGE(0x806100, 0x8061ff) AM_MIRROR(0x7f8000) AM_READ_PORT("FFE100") - AM_RANGE(0x806200, 0x8062ff) AM_MIRROR(0x7f8000) AM_READ(special_port1_r) - AM_RANGE(0x806800, 0x8068ff) AM_MIRROR(0x7f8000) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0x806900, 0x8069ff) AM_MIRROR(0x7f8000) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) - AM_RANGE(0x806a00, 0x806aff) AM_MIRROR(0x7f8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x806b00, 0x806bff) AM_MIRROR(0x7f8000) AM_WRITE(video_int_ack_w) - AM_RANGE(0x806e00, 0x806eff) AM_MIRROR(0x7f8000) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) -ADDRESS_MAP_END +void xybots_state::main_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x007fff).mirror(0x7c0000).rom(); + map(0x008000, 0x00ffff).mirror(0x7c0000).rom(); /* slapstic maps here */ + map(0x010000, 0x03ffff).mirror(0x7c0000).rom(); + map(0x800000, 0x800fff).mirror(0x7f8000).ram().w(m_alpha_tilemap, FUNC(tilemap_device::write16)).share("alpha"); + map(0x801000, 0x802dff).mirror(0x7f8000).ram(); + map(0x802e00, 0x802fff).mirror(0x7f8000).ram().share("mob"); + map(0x803000, 0x803fff).mirror(0x7f8000).ram().w(m_playfield_tilemap, FUNC(tilemap_device::write16)).share("playfield"); + map(0x804000, 0x8047ff).mirror(0x7f8800).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x805000, 0x805fff).mirror(0x7f8000).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0x806000, 0x8060ff).mirror(0x7f8000).r(m_jsa, FUNC(atari_jsa_i_device::main_response_r)).umask16(0x00ff); + map(0x806100, 0x8061ff).mirror(0x7f8000).portr("FFE100"); + map(0x806200, 0x8062ff).mirror(0x7f8000).r(this, FUNC(xybots_state::special_port1_r)); + map(0x806800, 0x8068ff).mirror(0x7f8000).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0x806900, 0x8069ff).mirror(0x7f8000).w(m_jsa, FUNC(atari_jsa_i_device::main_command_w)).umask16(0x00ff); + map(0x806a00, 0x806aff).mirror(0x7f8000).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x806b00, 0x806bff).mirror(0x7f8000).w(this, FUNC(xybots_state::video_int_ack_w)); + map(0x806e00, 0x806eff).mirror(0x7f8000).w(m_jsa, FUNC(atari_jsa_i_device::sound_reset_w)); +} diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp index a22ac8a1297..5da65c3d129 100644 --- a/src/mame/drivers/xyonix.cpp +++ b/src/mame/drivers/xyonix.cpp @@ -143,21 +143,23 @@ WRITE8_MEMBER(xyonix_state::io_w) /* Mem / Port Maps ***********************************************************/ -ADDRESS_MAP_START(xyonix_state::main_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE(vidram_w) AM_SHARE("vidram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(xyonix_state::port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x20, 0x20) AM_READNOP AM_DEVWRITE("sn1", sn76496_device, write) /* SN76496 ready signal */ - AM_RANGE(0x21, 0x21) AM_READNOP AM_DEVWRITE("sn2", sn76496_device, write) - AM_RANGE(0x40, 0x40) AM_WRITENOP /* NMI ack? */ - AM_RANGE(0x50, 0x50) AM_WRITE(irqack_w) - AM_RANGE(0x60, 0x61) AM_WRITENOP /* mc6845 */ - AM_RANGE(0xe0, 0xe0) AM_READWRITE(io_r, io_w) -ADDRESS_MAP_END +void xyonix_state::main_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xffff).ram().w(this, FUNC(xyonix_state::vidram_w)).share("vidram"); +} + +void xyonix_state::port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x20, 0x20).nopr().w("sn1", FUNC(sn76496_device::write)); /* SN76496 ready signal */ + map(0x21, 0x21).nopr().w("sn2", FUNC(sn76496_device::write)); + map(0x40, 0x40).nopw(); /* NMI ack? */ + map(0x50, 0x50).w(this, FUNC(xyonix_state::irqack_w)); + map(0x60, 0x61).nopw(); /* mc6845 */ + map(0xe0, 0xe0).rw(this, FUNC(xyonix_state::io_r), FUNC(xyonix_state::io_w)); +} /* Inputs Ports **************************************************************/ diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp index 277b361c03e..558e3870544 100644 --- a/src/mame/drivers/yiear.cpp +++ b/src/mame/drivers/yiear.cpp @@ -138,32 +138,34 @@ INTERRUPT_GEN_MEMBER(yiear_state::yiear_nmi_interrupt) } -ADDRESS_MAP_START(yiear_state::main_map) - AM_RANGE(0x0000, 0x0000) AM_READ(yiear_speech_r) - AM_RANGE(0x4000, 0x4000) AM_WRITE(yiear_control_w) - AM_RANGE(0x4800, 0x4800) AM_WRITE(konami_SN76496_latch_w) - AM_RANGE(0x4900, 0x4900) AM_WRITE(konami_SN76496_w) - AM_RANGE(0x4a00, 0x4a00) AM_WRITE(yiear_VLM5030_control_w) - AM_RANGE(0x4b00, 0x4b00) AM_DEVWRITE("vlm", vlm5030_device, data_w) - AM_RANGE(0x4c00, 0x4c00) AM_READ_PORT("DSW2") - AM_RANGE(0x4d00, 0x4d00) AM_READ_PORT("DSW3") - AM_RANGE(0x4e00, 0x4e00) AM_READ_PORT("SYSTEM") - AM_RANGE(0x4e01, 0x4e01) AM_READ_PORT("P1") - AM_RANGE(0x4e02, 0x4e02) AM_READ_PORT("P2") - AM_RANGE(0x4e03, 0x4e03) AM_READ_PORT("DSW1") - AM_RANGE(0x4f00, 0x4f00) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5000, 0x5fff) AM_RAM - AM_RANGE(0x5000, 0x502f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x5400, 0x542f) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x5800, 0x5fff) AM_WRITE(yiear_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(yiear_state::vlm_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM -ADDRESS_MAP_END +void yiear_state::main_map(address_map &map) +{ + map(0x0000, 0x0000).r(this, FUNC(yiear_state::yiear_speech_r)); + map(0x4000, 0x4000).w(this, FUNC(yiear_state::yiear_control_w)); + map(0x4800, 0x4800).w(this, FUNC(yiear_state::konami_SN76496_latch_w)); + map(0x4900, 0x4900).w(this, FUNC(yiear_state::konami_SN76496_w)); + map(0x4a00, 0x4a00).w(this, FUNC(yiear_state::yiear_VLM5030_control_w)); + map(0x4b00, 0x4b00).w(m_vlm, FUNC(vlm5030_device::data_w)); + map(0x4c00, 0x4c00).portr("DSW2"); + map(0x4d00, 0x4d00).portr("DSW3"); + map(0x4e00, 0x4e00).portr("SYSTEM"); + map(0x4e01, 0x4e01).portr("P1"); + map(0x4e02, 0x4e02).portr("P2"); + map(0x4e03, 0x4e03).portr("DSW1"); + map(0x4f00, 0x4f00).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x5000, 0x5fff).ram(); + map(0x5000, 0x502f).ram().share("spriteram"); + map(0x5400, 0x542f).ram().share("spriteram2"); + map(0x5800, 0x5fff).w(this, FUNC(yiear_state::yiear_videoram_w)).share("videoram"); + map(0x8000, 0xffff).rom(); +} + + +void yiear_state::vlm_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x1fff).rom(); +} static INPUT_PORTS_START( yiear ) diff --git a/src/mame/drivers/ymmu100.cpp b/src/mame/drivers/ymmu100.cpp index 22167a1727a..a77abfc646e 100644 --- a/src/mame/drivers/ymmu100.cpp +++ b/src/mame/drivers/ymmu100.cpp @@ -268,11 +268,12 @@ uint32_t mu100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, return 0; } -ADDRESS_MAP_START(mu100_state::mu100_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x200000, 0x21ffff) AM_RAM // 128K work RAM - AM_RANGE(0x400000, 0x401fff) AM_READWRITE(snd_r, snd_w) -ADDRESS_MAP_END +void mu100_state::mu100_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom().region("maincpu", 0); + map(0x200000, 0x21ffff).ram(); // 128K work RAM + map(0x400000, 0x401fff).rw(this, FUNC(mu100_state::snd_r), FUNC(mu100_state::snd_w)); +} READ16_MEMBER(mu100_state::snd_r) { @@ -418,21 +419,22 @@ WRITE16_MEMBER(mu100_state::pg_w) logerror("pbsel3 %d\n", data & 1); } -ADDRESS_MAP_START(mu100_state::mu100_iomap) - AM_RANGE(h8_device::PORT_1, h8_device::PORT_1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(h8_device::PORT_2, h8_device::PORT_2) AM_WRITE(p2_w) - AM_RANGE(h8_device::PORT_3, h8_device::PORT_3) AM_WRITE(p3_w) - AM_RANGE(h8_device::PORT_5, h8_device::PORT_5) AM_WRITE(p5_w) - AM_RANGE(h8_device::PORT_6, h8_device::PORT_6) AM_READWRITE(p6_r, p6_w) - AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(pa_r, pa_w) - AM_RANGE(h8_device::PORT_F, h8_device::PORT_F) AM_WRITE(pf_w) - AM_RANGE(h8_device::PORT_G, h8_device::PORT_G) AM_WRITE(pg_w) - AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_READ(adc0_r) - AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(adc2_r) - AM_RANGE(h8_device::ADC_4, h8_device::ADC_4) AM_READ(adc4_r) - AM_RANGE(h8_device::ADC_6, h8_device::ADC_6) AM_READ(adc6_r) - AM_RANGE(h8_device::ADC_7, h8_device::ADC_7) AM_READ(adc7_r) -ADDRESS_MAP_END +void mu100_state::mu100_iomap(address_map &map) +{ + map(h8_device::PORT_1, h8_device::PORT_1).rw(this, FUNC(mu100_state::p1_r), FUNC(mu100_state::p1_w)); + map(h8_device::PORT_2, h8_device::PORT_2).w(this, FUNC(mu100_state::p2_w)); + map(h8_device::PORT_3, h8_device::PORT_3).w(this, FUNC(mu100_state::p3_w)); + map(h8_device::PORT_5, h8_device::PORT_5).w(this, FUNC(mu100_state::p5_w)); + map(h8_device::PORT_6, h8_device::PORT_6).rw(this, FUNC(mu100_state::p6_r), FUNC(mu100_state::p6_w)); + map(h8_device::PORT_A, h8_device::PORT_A).rw(this, FUNC(mu100_state::pa_r), FUNC(mu100_state::pa_w)); + map(h8_device::PORT_F, h8_device::PORT_F).w(this, FUNC(mu100_state::pf_w)); + map(h8_device::PORT_G, h8_device::PORT_G).w(this, FUNC(mu100_state::pg_w)); + map(h8_device::ADC_0, h8_device::ADC_0).r(this, FUNC(mu100_state::adc0_r)); + map(h8_device::ADC_2, h8_device::ADC_2).r(this, FUNC(mu100_state::adc2_r)); + map(h8_device::ADC_4, h8_device::ADC_4).r(this, FUNC(mu100_state::adc4_r)); + map(h8_device::ADC_6, h8_device::ADC_6).r(this, FUNC(mu100_state::adc6_r)); + map(h8_device::ADC_7, h8_device::ADC_7).r(this, FUNC(mu100_state::adc7_r)); +} MACHINE_CONFIG_START(mu100_state::mu100) MCFG_CPU_ADD( "maincpu", H8S2655, XTAL(16'000'000) ) diff --git a/src/mame/drivers/yunsun16.cpp b/src/mame/drivers/yunsun16.cpp index 7c7b418bc8e..df815c20b0d 100644 --- a/src/mame/drivers/yunsun16.cpp +++ b/src/mame/drivers/yunsun16.cpp @@ -110,29 +110,30 @@ WRITE8_MEMBER(yunsun16_state::sound_bank_w) membank("okibank")->set_entry(data & 3); } -ADDRESS_MAP_START(yunsun16_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("INPUTS") - AM_RANGE(0x800018, 0x800019) AM_READ_PORT("SYSTEM") - AM_RANGE(0x80001a, 0x80001b) AM_READ_PORT("DSW1") - AM_RANGE(0x80001c, 0x80001d) AM_READ_PORT("DSW2") - AM_RANGE(0x800030, 0x800031) AM_WRITENOP // ? (value: don't care) - AM_RANGE(0x800100, 0x800101) AM_WRITENOP // ? $9100 - AM_RANGE(0x800102, 0x800103) AM_WRITENOP // ? $9080 - AM_RANGE(0x800104, 0x800105) AM_WRITENOP // ? $90c0 - AM_RANGE(0x80010a, 0x80010b) AM_WRITENOP // ? $9000 - AM_RANGE(0x80010c, 0x80010f) AM_RAM AM_SHARE("scrollram_1") // Scrolling - AM_RANGE(0x800114, 0x800117) AM_RAM AM_SHARE("scrollram_0") // Scrolling - AM_RANGE(0x800154, 0x800155) AM_RAM AM_SHARE("priorityram") // Priority - AM_RANGE(0x800180, 0x800181) AM_WRITE8(sound_bank_w, 0x00ff) // Sound - AM_RANGE(0x800188, 0x800189) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0x8001fe, 0x8001ff) AM_WRITENOP // ? 0 (during int) - AM_RANGE(0x900000, 0x903fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // Palette - AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // Layer 1 - AM_RANGE(0x90c000, 0x90ffff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // Layer 0 - AM_RANGE(0x910000, 0x910fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xff0000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void yunsun16_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x800000, 0x800001).portr("INPUTS"); + map(0x800018, 0x800019).portr("SYSTEM"); + map(0x80001a, 0x80001b).portr("DSW1"); + map(0x80001c, 0x80001d).portr("DSW2"); + map(0x800030, 0x800031).nopw(); // ? (value: don't care) + map(0x800100, 0x800101).nopw(); // ? $9100 + map(0x800102, 0x800103).nopw(); // ? $9080 + map(0x800104, 0x800105).nopw(); // ? $90c0 + map(0x80010a, 0x80010b).nopw(); // ? $9000 + map(0x80010c, 0x80010f).ram().share("scrollram_1"); // Scrolling + map(0x800114, 0x800117).ram().share("scrollram_0"); // Scrolling + map(0x800154, 0x800155).ram().share("priorityram"); // Priority + map(0x800181, 0x800181).w(this, FUNC(yunsun16_state::sound_bank_w)); // Sound + map(0x800189, 0x800189).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // Sound + map(0x8001fe, 0x8001ff).nopw(); // ? 0 (during int) + map(0x900000, 0x903fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette + map(0x908000, 0x90bfff).ram().w(this, FUNC(yunsun16_state::vram_1_w)).share("vram_1"); // Layer 1 + map(0x90c000, 0x90ffff).ram().w(this, FUNC(yunsun16_state::vram_0_w)).share("vram_0"); // Layer 0 + map(0x910000, 0x910fff).ram().share("spriteram"); // Sprites + map(0xff0000, 0xffffff).ram(); +} WRITE16_MEMBER(yunsun16_state::magicbub_sound_command_w) @@ -165,22 +166,25 @@ DRIVER_INIT_MEMBER(yunsun16_state,magicbub) ***************************************************************************/ -ADDRESS_MAP_START(yunsun16_state::sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(yunsun16_state::sound_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x18, 0x18) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU - AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295 -ADDRESS_MAP_END - -ADDRESS_MAP_START(yunsun16_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") - ADDRESS_MAP_END +void yunsun16_state::sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram(); +} + +void yunsun16_state::sound_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x11).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x18, 0x18).r(m_soundlatch, FUNC(generic_latch_8_device::read)); // From Main CPU + map(0x1c, 0x1c).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // M6295 +} + +void yunsun16_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); + } /*************************************************************************** diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp index 7539d32ace9..c3d5a91b786 100644 --- a/src/mame/drivers/yunsung8.cpp +++ b/src/mame/drivers/yunsung8.cpp @@ -70,25 +70,27 @@ WRITE8_MEMBER(yunsung8_state::main_irq_ack_w) d000-dfff Tiles "" */ -ADDRESS_MAP_START(yunsung8_state::main_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x0001, 0x0001) AM_WRITE(bankswitch_w) // ROM Bank (again?) - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("mainbank") // Banked ROM - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(videoram_r, videoram_w) // Video RAM (Banked) - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END +void yunsung8_state::main_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x0001, 0x0001).w(this, FUNC(yunsung8_state::bankswitch_w)); // ROM Bank (again?) + map(0x8000, 0xbfff).bankr("mainbank"); // Banked ROM + map(0xc000, 0xdfff).rw(this, FUNC(yunsung8_state::videoram_r), FUNC(yunsung8_state::videoram_w)); // Video RAM (Banked) + map(0xe000, 0xffff).ram(); +} -ADDRESS_MAP_START(yunsung8_state::port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(videobank_w) // video RAM bank - AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(bankswitch_w) // ROM Bank + Layers Enable - AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") - AM_RANGE(0x06, 0x06) AM_WRITE(flipscreen_w) // Flip Screen - AM_RANGE(0x07, 0x07) AM_WRITE(main_irq_ack_w) -ADDRESS_MAP_END +void yunsung8_state::port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("SYSTEM").w(this, FUNC(yunsung8_state::videobank_w)); // video RAM bank + map(0x01, 0x01).portr("P1").w(this, FUNC(yunsung8_state::bankswitch_w)); // ROM Bank + Layers Enable + map(0x02, 0x02).portr("P2").w("soundlatch", FUNC(generic_latch_8_device::write)); // To Sound CPU + map(0x03, 0x03).portr("DSW1"); + map(0x04, 0x04).portr("DSW2"); + map(0x06, 0x06).w(this, FUNC(yunsung8_state::flipscreen_w)); // Flip Screen + map(0x07, 0x07).w(this, FUNC(yunsung8_state::main_irq_ack_w)); +} @@ -112,15 +114,16 @@ WRITE8_MEMBER(yunsung8_state::sound_bankswitch_w) -ADDRESS_MAP_START(yunsung8_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") // Banked ROM - AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w) // ROM Bank - AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w) - AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU -ADDRESS_MAP_END +void yunsung8_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); // Banked ROM + map(0xe000, 0xe000).w(this, FUNC(yunsung8_state::sound_bankswitch_w)); // ROM Bank + map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w)); + map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read)); // From Main CPU +} diff --git a/src/mame/drivers/yuvomz80.cpp b/src/mame/drivers/yuvomz80.cpp index 3d59b2c332d..dd32711be5c 100644 --- a/src/mame/drivers/yuvomz80.cpp +++ b/src/mame/drivers/yuvomz80.cpp @@ -59,33 +59,38 @@ private: required_device<cpu_device> m_maincpu; }; -ADDRESS_MAP_START(yuvomz80_state::mem_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("maincpu", 0) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(yuvomz80_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi0", i8255_device, read, write) - AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi1", i8255_device, read, write) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi2", i8255_device, read, write) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("ppi3", i8255_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(yuvomz80_state::audio_mem_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audiocpu", 0) - AM_RANGE(0x8000, 0x87ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(yuvomz80_state::audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(yuvomz80_state::hexapres_audio_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) -ADDRESS_MAP_END +void yuvomz80_state::mem_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("maincpu", 0); + map(0x8000, 0x87ff).ram(); +} + +void yuvomz80_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ppi0", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x04, 0x07).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x08, 0x0b).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0c, 0x0f).rw("ppi3", FUNC(i8255_device::read), FUNC(i8255_device::write)); +} + +void yuvomz80_state::audio_mem_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().region("audiocpu", 0); + map(0x8000, 0x87ff).ram(); +} + +void yuvomz80_state::audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); +} + +void yuvomz80_state::hexapres_audio_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); +} static INPUT_PORTS_START( goldhexa ) INPUT_PORTS_END diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp index 0404f54a82b..2a55cb3d3d8 100644 --- a/src/mame/drivers/z100.cpp +++ b/src/mame/drivers/z100.cpp @@ -308,16 +308,17 @@ WRITE8_MEMBER( z100_state::z100_vram_w ) } } -ADDRESS_MAP_START(z100_state::z100_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00000,0x3ffff) AM_RAM // 128*2 KB RAM +void z100_state::z100_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x00000, 0x3ffff).ram(); // 128*2 KB RAM // AM_RANGE(0xb0000,0xbffff) AM_ROM // expansion ROM - AM_RANGE(0xc0000,0xeffff) AM_READWRITE(z100_vram_r,z100_vram_w) // Blue / Red / Green + map(0xc0000, 0xeffff).rw(this, FUNC(z100_state::z100_vram_r), FUNC(z100_state::z100_vram_w)); // Blue / Red / Green // AM_RANGE(0xf0000,0xf0fff) // network card (NET-100) // AM_RANGE(0xf4000,0xf7fff) // MTRET-100 Firmware I expansion ROM // AM_RANGE(0xf8000,0xfbfff) // MTRET-100 Firmware II expansion ROM check ID 0x4550 - AM_RANGE(0xfc000,0xfffff) AM_ROM AM_REGION("ipl", 0) -ADDRESS_MAP_END + map(0xfc000, 0xfffff).rom().region("ipl", 0); +} READ8_MEMBER( z100_state::keyb_data_r ) { @@ -384,9 +385,10 @@ WRITE8_MEMBER( z100_state::floppy_motor_w ) m_floppy->mon_w(!BIT(data, 1)); } -ADDRESS_MAP_START(z100_state::z100_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void z100_state::z100_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE (0x00, 0x3f) reserved for non-ZDS vendors // AM_RANGE (0x40, 0x5f) secondary Multiport card (Z-204) // AM_RANGE (0x60, 0x7f) primary Multiport card (Z-204) @@ -396,31 +398,31 @@ ADDRESS_MAP_START(z100_state::z100_io) // AM_RANGE (0xa4, 0xa7) gateway (reserved) // AM_RANGE (0xac, 0xad) Z-217 secondary disk controller (winchester) // AM_RANGE (0xae, 0xaf) Z-217 primary disk controller (winchester) - AM_RANGE (0xb0, 0xb3) AM_DEVREADWRITE("z207_fdc", fd1797_device, read, write) - AM_RANGE (0xb4, 0xb4) AM_WRITE(floppy_select_w) - AM_RANGE (0xb5, 0xb5) AM_WRITE(floppy_motor_w) + map(0xb0, 0xb3).rw(m_fdc, FUNC(fd1797_device::read), FUNC(fd1797_device::write)); + map(0xb4, 0xb4).w(this, FUNC(z100_state::floppy_select_w)); + map(0xb5, 0xb5).w(this, FUNC(z100_state::floppy_motor_w)); // z-207 secondary disk controller (wd1797) // AM_RANGE (0xcd, 0xce) ET-100 CRT Controller // AM_RANGE (0xd4, 0xd7) ET-100 Trainer Parallel I/O - AM_RANGE (0xd8, 0xdb) AM_DEVREADWRITE("pia0", pia6821_device, read, write) //video board - AM_RANGE (0xdc, 0xdc) AM_WRITE(z100_6845_address_w) - AM_RANGE (0xdd, 0xdd) AM_WRITE(z100_6845_data_w) + map(0xd8, 0xdb).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //video board + map(0xdc, 0xdc).w(this, FUNC(z100_state::z100_6845_address_w)); + map(0xdd, 0xdd).w(this, FUNC(z100_state::z100_6845_data_w)); // AM_RANGE (0xde, 0xde) light pen - AM_RANGE (0xe0, 0xe3) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //main board + map(0xe0, 0xe3).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //main board // AM_RANGE (0xe4, 0xe7) 8253 PIT // AM_RANGE (0xe8, 0xeb) First 2661-2 serial port (printer) // AM_RANGE (0xec, 0xef) Second 2661-2 serial port (modem) - AM_RANGE (0xf0, 0xf1) AM_DEVREADWRITE("pic8259_slave", pic8259_device, read, write) - AM_RANGE (0xf2, 0xf3) AM_DEVREADWRITE("pic8259_master", pic8259_device, read, write) - AM_RANGE (0xf4, 0xf4) AM_READ(keyb_data_r) // -> 8041 MCU - AM_RANGE (0xf5, 0xf5) AM_READWRITE(keyb_status_r,keyb_command_w) + map(0xf0, 0xf1).rw(m_pics, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf2, 0xf3).rw(m_picm, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0xf4, 0xf4).r(this, FUNC(z100_state::keyb_data_r)); // -> 8041 MCU + map(0xf5, 0xf5).rw(this, FUNC(z100_state::keyb_status_r), FUNC(z100_state::keyb_command_w)); // AM_RANGE (0xf6, 0xf6) expansion ROM is present (bit 0, active low) // AM_RANGE (0xfb, 0xfb) timer irq status // AM_RANGE (0xfc, 0xfc) memory latch // AM_RANGE (0xfd, 0xfd) Hi-address latch // AM_RANGE (0xfe, 0xfe) Processor swap port - AM_RANGE (0xff, 0xff) AM_READ_PORT("DSW101") -ADDRESS_MAP_END + map(0xff, 0xff).portr("DSW101"); +} INPUT_CHANGED_MEMBER(z100_state::key_stroke) { diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp index f4b4a75dcde..42bdb8a8571 100644 --- a/src/mame/drivers/z1013.cpp +++ b/src/mame/drivers/z1013.cpp @@ -93,17 +93,19 @@ private: /* Address maps */ -ADDRESS_MAP_START(z1013_state::z1013_mem) - AM_RANGE( 0x0000, 0xebff ) AM_RAM - AM_RANGE( 0xec00, 0xefff ) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0xf000, 0xffff ) AM_ROM // ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(z1013_state::z1013_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE( 0x08, 0x08 ) AM_WRITE(z1013_keyboard_w) -ADDRESS_MAP_END +void z1013_state::z1013_mem(address_map &map) +{ + map(0x0000, 0xebff).ram(); + map(0xec00, 0xefff).ram().share("videoram"); + map(0xf000, 0xffff).rom(); // ROM +} + +void z1013_state::z1013_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("z80pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); + map(0x08, 0x08).w(this, FUNC(z1013_state::z1013_keyboard_w)); +} /* Input ports */ static INPUT_PORTS_START( z1013_8x4 ) diff --git a/src/mame/drivers/z80dev.cpp b/src/mame/drivers/z80dev.cpp index 0e15f06aa60..8698a50abe8 100644 --- a/src/mame/drivers/z80dev.cpp +++ b/src/mame/drivers/z80dev.cpp @@ -56,23 +56,25 @@ READ8_MEMBER( z80dev_state::test_r ) return machine().rand(); } -ADDRESS_MAP_START(z80dev_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x1000, 0x10ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80dev_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK (0xff) - AM_RANGE(0x20, 0x20) AM_READ_PORT("LINE0") - AM_RANGE(0x21, 0x21) AM_READ_PORT("LINE1") - AM_RANGE(0x22, 0x22) AM_READ_PORT("LINE2") - AM_RANGE(0x23, 0x23) AM_READ_PORT("LINE3") - AM_RANGE(0x20, 0x25) AM_WRITE(display_w) - - AM_RANGE(0x13, 0x13) AM_READ(test_r) -ADDRESS_MAP_END +void z80dev_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x1000, 0x10ff).ram(); +} + +void z80dev_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x20, 0x20).portr("LINE0"); + map(0x21, 0x21).portr("LINE1"); + map(0x22, 0x22).portr("LINE2"); + map(0x23, 0x23).portr("LINE3"); + map(0x20, 0x25).w(this, FUNC(z80dev_state::display_w)); + + map(0x13, 0x13).r(this, FUNC(z80dev_state::test_r)); +} /* Input ports */ INPUT_PORTS_START( z80dev ) diff --git a/src/mame/drivers/z80ne.cpp b/src/mame/drivers/z80ne.cpp index 3483dcf2587..db6aa1866c4 100644 --- a/src/mame/drivers/z80ne.cpp +++ b/src/mame/drivers/z80ne.cpp @@ -113,67 +113,74 @@ /* LX.382 CPU Board RAM */ /* LX.382 CPU Board EPROM */ -ADDRESS_MAP_START(z80ne_state::z80ne_mem) - AM_RANGE( 0x0000, 0x03ff ) AM_RAMBANK("bank1") - AM_RANGE( 0x0400, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0x83ff ) AM_ROMBANK("bank2") - AM_RANGE( 0x8400, 0xffff ) AM_READNOP AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80ne_state::z80net_mem) - AM_RANGE( 0x0000, 0x03ff ) AM_RAMBANK("bank1") - AM_RANGE( 0x0400, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0x83ff ) AM_ROMBANK("bank2") - AM_RANGE( 0x8400, 0xebff ) AM_RAM - AM_RANGE( 0xec00, 0xedff ) AM_RAM AM_SHARE("videoram") /* (6847) */ - AM_RANGE( 0xee00, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80ne_state::z80netb_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x4000, 0xebff ) AM_RAM - AM_RANGE( 0xec00, 0xedff ) AM_RAM AM_SHARE("videoram") /* (6847) */ - AM_RANGE( 0xee00, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80ne_state::z80ne_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xee, 0xee) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xef, 0xef) AM_READWRITE(lx385_ctrl_r, lx385_ctrl_w ) - AM_RANGE(0xf0, 0xff) AM_READWRITE(lx383_r, lx383_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80ne_state::z80net_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xea, 0xea) AM_READ(lx387_data_r ) - AM_RANGE(0xeb, 0xeb) AM_READ(lx388_read_field_sync ) - AM_RANGE(0xee, 0xee) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xef, 0xef) AM_READWRITE(lx385_ctrl_r, lx385_ctrl_w ) - AM_RANGE(0xf0, 0xff) AM_READWRITE(lx383_r, lx383_w ) -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80ne_state::z80netf_mem) - AM_RANGE( 0x0000, 0x03ff ) AM_RAMBANK("bank1") - AM_RANGE( 0x0400, 0x3fff ) AM_RAMBANK("bank2") - AM_RANGE( 0x4000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0x83ff ) AM_RAMBANK("bank3") - AM_RANGE( 0x8400, 0xdfff ) AM_RAM - AM_RANGE( 0xe000, 0xebff ) AM_READNOP AM_WRITENOP - AM_RANGE( 0xec00, 0xedff ) AM_RAM AM_SHARE("videoram") /* (6847) */ - AM_RANGE( 0xee00, 0xefff ) AM_READNOP AM_WRITENOP - AM_RANGE( 0xf000, 0xf3ff ) AM_RAMBANK("bank4") - AM_RANGE( 0xf400, 0xffff ) AM_READNOP AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(z80ne_state::z80netf_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xd0, 0xd7) AM_READWRITE(lx390_fdc_r, lx390_fdc_w) - AM_RANGE(0xea, 0xea) AM_READ(lx387_data_r ) - AM_RANGE(0xeb, 0xeb) AM_READ(lx388_read_field_sync ) - AM_RANGE(0xee, 0xee) AM_DEVREADWRITE("uart", ay31015_device, receive, transmit) - AM_RANGE(0xef, 0xef) AM_READWRITE(lx385_ctrl_r, lx385_ctrl_w ) - AM_RANGE(0xf0, 0xff) AM_READWRITE(lx383_r, lx383_w ) -ADDRESS_MAP_END +void z80ne_state::z80ne_mem(address_map &map) +{ + map(0x0000, 0x03ff).bankrw("bank1"); + map(0x0400, 0x7fff).ram(); + map(0x8000, 0x83ff).bankr("bank2"); + map(0x8400, 0xffff).nopr().nopw(); +} + +void z80ne_state::z80net_mem(address_map &map) +{ + map(0x0000, 0x03ff).bankrw("bank1"); + map(0x0400, 0x7fff).ram(); + map(0x8000, 0x83ff).bankr("bank2"); + map(0x8400, 0xebff).ram(); + map(0xec00, 0xedff).ram().share("videoram"); /* (6847) */ + map(0xee00, 0xffff).ram(); +} + +void z80ne_state::z80netb_mem(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0xebff).ram(); + map(0xec00, 0xedff).ram().share("videoram"); /* (6847) */ + map(0xee00, 0xffff).ram(); +} + +void z80ne_state::z80ne_io(address_map &map) +{ + map.global_mask(0xff); + map(0xee, 0xee).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xef, 0xef).rw(this, FUNC(z80ne_state::lx385_ctrl_r), FUNC(z80ne_state::lx385_ctrl_w)); + map(0xf0, 0xff).rw(this, FUNC(z80ne_state::lx383_r), FUNC(z80ne_state::lx383_w)); +} + +void z80ne_state::z80net_io(address_map &map) +{ + map.global_mask(0xff); + map(0xea, 0xea).r(this, FUNC(z80ne_state::lx387_data_r)); + map(0xeb, 0xeb).r(this, FUNC(z80ne_state::lx388_read_field_sync)); + map(0xee, 0xee).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xef, 0xef).rw(this, FUNC(z80ne_state::lx385_ctrl_r), FUNC(z80ne_state::lx385_ctrl_w)); + map(0xf0, 0xff).rw(this, FUNC(z80ne_state::lx383_r), FUNC(z80ne_state::lx383_w)); +} + +void z80ne_state::z80netf_mem(address_map &map) +{ + map(0x0000, 0x03ff).bankrw("bank1"); + map(0x0400, 0x3fff).bankrw("bank2"); + map(0x4000, 0x7fff).ram(); + map(0x8000, 0x83ff).bankrw("bank3"); + map(0x8400, 0xdfff).ram(); + map(0xe000, 0xebff).nopr().nopw(); + map(0xec00, 0xedff).ram().share("videoram"); /* (6847) */ + map(0xee00, 0xefff).nopr().nopw(); + map(0xf000, 0xf3ff).bankrw("bank4"); + map(0xf400, 0xffff).nopr().nopw(); +} + +void z80ne_state::z80netf_io(address_map &map) +{ + map.global_mask(0xff); + map(0xd0, 0xd7).rw(this, FUNC(z80ne_state::lx390_fdc_r), FUNC(z80ne_state::lx390_fdc_w)); + map(0xea, 0xea).r(this, FUNC(z80ne_state::lx387_data_r)); + map(0xeb, 0xeb).r(this, FUNC(z80ne_state::lx388_read_field_sync)); + map(0xee, 0xee).rw(m_uart, FUNC(ay31015_device::receive), FUNC(ay31015_device::transmit)); + map(0xef, 0xef).rw(this, FUNC(z80ne_state::lx385_ctrl_r), FUNC(z80ne_state::lx385_ctrl_w)); + map(0xf0, 0xff).rw(this, FUNC(z80ne_state::lx383_r), FUNC(z80ne_state::lx383_w)); +} diff --git a/src/mame/drivers/z88.cpp b/src/mame/drivers/z88.cpp index a04e83e9fd0..cdee2567c0e 100644 --- a/src/mame/drivers/z88.cpp +++ b/src/mame/drivers/z88.cpp @@ -148,17 +148,19 @@ UPD65031_MEMORY_UPDATE(z88_state::bankswitch_update) } -ADDRESS_MAP_START(z88_state::z88_mem) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE_BANK("bank1") - AM_RANGE(0x2000, 0x3fff) AM_READWRITE_BANK("bank2") - AM_RANGE(0x4000, 0x7fff) AM_READWRITE_BANK("bank3") - AM_RANGE(0x8000, 0xbfff) AM_READWRITE_BANK("bank4") - AM_RANGE(0xc000, 0xffff) AM_READWRITE_BANK("bank5") -ADDRESS_MAP_END - -ADDRESS_MAP_START(z88_state::z88_io) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("blink", upd65031_device, read, write) -ADDRESS_MAP_END +void z88_state::z88_mem(address_map &map) +{ + map(0x0000, 0x1fff).bankrw("bank1"); + map(0x2000, 0x3fff).bankrw("bank2"); + map(0x4000, 0x7fff).bankrw("bank3"); + map(0x8000, 0xbfff).bankrw("bank4"); + map(0xc000, 0xffff).bankrw("bank5"); +} + +void z88_state::z88_io(address_map &map) +{ + map(0x0000, 0xffff).rw("blink", FUNC(upd65031_device::read), FUNC(upd65031_device::write)); +} diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp index 1060157aa10..f11aabb6fdd 100644 --- a/src/mame/drivers/z9001.cpp +++ b/src/mame/drivers/z9001.cpp @@ -79,21 +79,23 @@ private: required_region_ptr<u8> m_p_chargen; }; -ADDRESS_MAP_START(z9001_state::z9001_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0xe7ff ) AM_RAM - AM_RANGE( 0xe800, 0xebff ) AM_RAM AM_SHARE("colorram") - AM_RANGE( 0xec00, 0xefff ) AM_RAM AM_SHARE("videoram") - AM_RANGE( 0xf000, 0xffff ) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(z9001_state::z9001_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x80, 0x83) AM_MIRROR(4) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) - AM_RANGE(0x88, 0x8B) AM_MIRROR(4) AM_DEVREADWRITE("z80pio1", z80pio_device, read, write) - AM_RANGE(0x90, 0x93) AM_MIRROR(4) AM_DEVREADWRITE("z80pio2", z80pio_device, read, write) -ADDRESS_MAP_END +void z9001_state::z9001_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xe7ff).ram(); + map(0xe800, 0xebff).ram().share("colorram"); + map(0xec00, 0xefff).ram().share("videoram"); + map(0xf000, 0xffff).rom(); +} + +void z9001_state::z9001_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x80, 0x83).mirror(4).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x88, 0x8B).mirror(4).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x90, 0x93).mirror(4).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); +} /* Input ports */ static INPUT_PORTS_START( z9001 ) diff --git a/src/mame/drivers/zac2650.cpp b/src/mame/drivers/zac2650.cpp index f2d913c9e5f..159d99a0493 100644 --- a/src/mame/drivers/zac2650.cpp +++ b/src/mame/drivers/zac2650.cpp @@ -25,18 +25,19 @@ /***********************************************************************************************/ -ADDRESS_MAP_START(zac2650_state::main_map) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(tinvader_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x1c00, 0x1cff) AM_RAM - AM_RANGE(0x1d00, 0x1dff) AM_RAM - AM_RANGE(0x1e80, 0x1e80) AM_READ(tinvader_port_0_r) AM_WRITE(tinvader_sound_w) - AM_RANGE(0x1e81, 0x1e81) AM_READ_PORT("1E81") - AM_RANGE(0x1e82, 0x1e82) AM_READ_PORT("1E82") - AM_RANGE(0x1e85, 0x1e85) AM_READ_PORT("1E85") /* Dodgem Only */ - AM_RANGE(0x1e86, 0x1e86) AM_READ_PORT("1E86") AM_WRITENOP /* Dodgem Only */ - AM_RANGE(0x1f00, 0x1fff) AM_READWRITE(zac_s2636_r, zac_s2636_w) AM_SHARE("s2636_0_ram") -ADDRESS_MAP_END +void zac2650_state::main_map(address_map &map) +{ + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x1bff).ram().w(this, FUNC(zac2650_state::tinvader_videoram_w)).share("videoram"); + map(0x1c00, 0x1cff).ram(); + map(0x1d00, 0x1dff).ram(); + map(0x1e80, 0x1e80).r(this, FUNC(zac2650_state::tinvader_port_0_r)).w(this, FUNC(zac2650_state::tinvader_sound_w)); + map(0x1e81, 0x1e81).portr("1E81"); + map(0x1e82, 0x1e82).portr("1E82"); + map(0x1e85, 0x1e85).portr("1E85"); /* Dodgem Only */ + map(0x1e86, 0x1e86).portr("1E86").nopw(); /* Dodgem Only */ + map(0x1f00, 0x1fff).rw(this, FUNC(zac2650_state::zac_s2636_r), FUNC(zac2650_state::zac_s2636_w)).share("s2636_0_ram"); +} static INPUT_PORTS_START( tinvader ) PORT_START("1E80") diff --git a/src/mame/drivers/zac_1.cpp b/src/mame/drivers/zac_1.cpp index 3046ee11297..128017046b7 100644 --- a/src/mame/drivers/zac_1.cpp +++ b/src/mame/drivers/zac_1.cpp @@ -76,22 +76,25 @@ private: }; -ADDRESS_MAP_START(zac_1_state::zac_1_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x13ff) AM_ROM - AM_RANGE(0x1400, 0x17ff) AM_WRITE(reset_int_w) - AM_RANGE(0x1800, 0x18ff) AM_MIRROR(0x300) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1c00, 0x1fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zac_1_state::zac_1_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END - -ADDRESS_MAP_START(zac_1_state::zac_1_data) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w) -ADDRESS_MAP_END +void zac_1_state::zac_1_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x13ff).rom(); + map(0x1400, 0x17ff).w(this, FUNC(zac_1_state::reset_int_w)); + map(0x1800, 0x18ff).mirror(0x300).ram().share("ram"); + map(0x1c00, 0x1fff).rom(); +} + +void zac_1_state::zac_1_io(address_map &map) +{ + map.unmap_value_high(); +} + +void zac_1_state::zac_1_data(address_map &map) +{ + map.unmap_value_high(); + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(zac_1_state::ctrl_r), FUNC(zac_1_state::ctrl_w)); +} static INPUT_PORTS_START( zac_1 ) PORT_START("TEST") @@ -277,21 +280,24 @@ MACHINE_CONFIG_END /*************************** LOCOMOTION ********************************/ -ADDRESS_MAP_START(zac_1_state::locomotp_map) - ADDRESS_MAP_GLOBAL_MASK(0x1fff) - AM_RANGE(0x0000, 0x17ff) AM_ROM - AM_RANGE(0x1800, 0x18ff) AM_MIRROR(0x300) AM_RAM AM_SHARE("ram") - AM_RANGE(0x1c00, 0x1fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zac_1_state::locomotp_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END - -ADDRESS_MAP_START(zac_1_state::locomotp_data) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(reset_int_r) -ADDRESS_MAP_END +void zac_1_state::locomotp_map(address_map &map) +{ + map.global_mask(0x1fff); + map(0x0000, 0x17ff).rom(); + map(0x1800, 0x18ff).mirror(0x300).ram().share("ram"); + map(0x1c00, 0x1fff).rom(); +} + +void zac_1_state::locomotp_io(address_map &map) +{ + map.unmap_value_high(); +} + +void zac_1_state::locomotp_data(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(zac_1_state::ctrl_r), FUNC(zac_1_state::ctrl_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(zac_1_state::reset_int_r)); +} READ8_MEMBER( zac_1_state::reset_int_r ) { diff --git a/src/mame/drivers/zac_2.cpp b/src/mame/drivers/zac_2.cpp index 06df184004c..19ee625eab9 100644 --- a/src/mame/drivers/zac_2.cpp +++ b/src/mame/drivers/zac_2.cpp @@ -52,24 +52,27 @@ private: }; -ADDRESS_MAP_START(zac_2_state::zac_2_map) - AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x17ff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6400) AM_RAM AM_SHARE("ram") - AM_RANGE(0x2000, 0x27ff) AM_ROM - AM_RANGE(0x2800, 0x37ff) AM_MIRROR(0x4000) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zac_2_state::zac_2_io) - ADDRESS_MAP_UNMAP_HIGH -ADDRESS_MAP_END - -ADDRESS_MAP_START(zac_2_state::zac_2_data) - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(ctrl_r,ctrl_w) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(data_r,data_w) -ADDRESS_MAP_END +void zac_2_state::zac_2_map(address_map &map) +{ + map(0x0000, 0x07ff).rom(); + map(0x0800, 0x17ff).mirror(0x4000).rom(); + map(0x1800, 0x1bff).mirror(0x6400).ram().share("ram"); + map(0x2000, 0x27ff).rom(); + map(0x2800, 0x37ff).mirror(0x4000).rom(); + map(0x4000, 0x47ff).rom(); + map(0x6000, 0x67ff).rom(); +} + +void zac_2_state::zac_2_io(address_map &map) +{ + map.unmap_value_high(); +} + +void zac_2_state::zac_2_data(address_map &map) +{ + map(S2650_CTRL_PORT, S2650_CTRL_PORT).rw(this, FUNC(zac_2_state::ctrl_r), FUNC(zac_2_state::ctrl_w)); + map(S2650_DATA_PORT, S2650_DATA_PORT).rw(this, FUNC(zac_2_state::data_r), FUNC(zac_2_state::data_w)); +} static INPUT_PORTS_START( zac_2 ) PORT_START("DSW") diff --git a/src/mame/drivers/zac_proto.cpp b/src/mame/drivers/zac_proto.cpp index 649e3b9cd21..b8dd01d2382 100644 --- a/src/mame/drivers/zac_proto.cpp +++ b/src/mame/drivers/zac_proto.cpp @@ -45,23 +45,24 @@ private: }; -ADDRESS_MAP_START(zac_proto_state::zac_proto_map) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0d00, 0x0dff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0e00, 0x0e00) AM_READ_PORT("PL0") - AM_RANGE(0x0e01, 0x0e01) AM_READ_PORT("PL1") - AM_RANGE(0x0e02, 0x0e02) AM_READ_PORT("PL2") - AM_RANGE(0x0e03, 0x0e03) AM_READ_PORT("PL3") - AM_RANGE(0x0e04, 0x0e04) AM_READ_PORT("PL4") - AM_RANGE(0x0e05, 0x0e05) AM_READ_PORT("PL5") - AM_RANGE(0x0e06, 0x0e06) AM_READ_PORT("PL6") - AM_RANGE(0x0e07, 0x0e07) AM_READ_PORT("PL7") - AM_RANGE(0x0e00, 0x0e01) AM_WRITE(out0_w) - AM_RANGE(0x0e02, 0x0e06) AM_WRITE(digit_w) - AM_RANGE(0x0e07, 0x0e08) AM_WRITE(sound_w) - AM_RANGE(0x0e09, 0x0e16) AM_WRITE(out1_w) - AM_RANGE(0x1400, 0x1bff) AM_ROM -ADDRESS_MAP_END +void zac_proto_state::zac_proto_map(address_map &map) +{ + map(0x0000, 0x0bff).rom(); + map(0x0d00, 0x0dff).ram().share("nvram"); + map(0x0e00, 0x0e00).portr("PL0"); + map(0x0e01, 0x0e01).portr("PL1"); + map(0x0e02, 0x0e02).portr("PL2"); + map(0x0e03, 0x0e03).portr("PL3"); + map(0x0e04, 0x0e04).portr("PL4"); + map(0x0e05, 0x0e05).portr("PL5"); + map(0x0e06, 0x0e06).portr("PL6"); + map(0x0e07, 0x0e07).portr("PL7"); + map(0x0e00, 0x0e01).w(this, FUNC(zac_proto_state::out0_w)); + map(0x0e02, 0x0e06).w(this, FUNC(zac_proto_state::digit_w)); + map(0x0e07, 0x0e08).w(this, FUNC(zac_proto_state::sound_w)); + map(0x0e09, 0x0e16).w(this, FUNC(zac_proto_state::out1_w)); + map(0x1400, 0x1bff).rom(); +} static INPUT_PORTS_START( zac_proto ) // playfield inputs diff --git a/src/mame/drivers/zaccaria.cpp b/src/mame/drivers/zaccaria.cpp index 18f21fd0e1e..49c033c1888 100644 --- a/src/mame/drivers/zaccaria.cpp +++ b/src/mame/drivers/zaccaria.cpp @@ -145,21 +145,22 @@ WRITE_LINE_MEMBER(zaccaria_state::nmi_mask_w) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } -ADDRESS_MAP_START(zaccaria_state::main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x63ff) AM_READONLY - AM_RANGE(0x6400, 0x6407) AM_READ(prot1_r) - AM_RANGE(0x6000, 0x67ff) AM_WRITE(videoram_w) AM_SHARE("videoram") /* 6400-67ff is 4 bits wide */ - AM_RANGE(0x6800, 0x683f) AM_WRITE(attributes_w) AM_SHARE("attributesram") - AM_RANGE(0x6840, 0x685f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x6881, 0x68c0) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0x6c00, 0x6c07) AM_MIRROR(0x81f8) AM_READ(prot2_r) AM_DEVWRITE("mainlatch", ls259_device, write_d0) - AM_RANGE(0x6e00, 0x6e00) AM_MIRROR(0x81f8) AM_READ(dsw_r) AM_DEVWRITE("audiopcb", zac1b11142_audio_device, hs_w) - AM_RANGE(0x7000, 0x77ff) AM_RAM - AM_RANGE(0x7800, 0x7803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x7c00, 0x7c00) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) - AM_RANGE(0x8000, 0xdfff) AM_ROM -ADDRESS_MAP_END +void zaccaria_state::main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x63ff).readonly(); + map(0x6400, 0x6407).r(this, FUNC(zaccaria_state::prot1_r)); + map(0x6000, 0x67ff).w(this, FUNC(zaccaria_state::videoram_w)).share("videoram"); /* 6400-67ff is 4 bits wide */ + map(0x6800, 0x683f).w(this, FUNC(zaccaria_state::attributes_w)).share("attributesram"); + map(0x6840, 0x685f).ram().share("spriteram"); + map(0x6881, 0x68c0).ram().share("spriteram2"); + map(0x6c00, 0x6c07).mirror(0x81f8).r(this, FUNC(zaccaria_state::prot2_r)).w("mainlatch", FUNC(ls259_device::write_d0)); + map(0x6e00, 0x6e00).mirror(0x81f8).r(this, FUNC(zaccaria_state::dsw_r)).w(m_audiopcb, FUNC(zac1b11142_audio_device::hs_w)); + map(0x7000, 0x77ff).ram(); + map(0x7800, 0x7803).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x7c00, 0x7c00).r("watchdog", FUNC(watchdog_timer_device::reset_r)); + map(0x8000, 0xdfff).rom(); +} static INPUT_PORTS_START( monymony ) diff --git a/src/mame/drivers/zapcomputer.cpp b/src/mame/drivers/zapcomputer.cpp index c22a270a112..b5301eeba90 100644 --- a/src/mame/drivers/zapcomputer.cpp +++ b/src/mame/drivers/zapcomputer.cpp @@ -112,23 +112,25 @@ READ8_MEMBER( zapcomp_state::keyboard_r ) return retval; } -ADDRESS_MAP_START(zapcomp_state::zapcomp_mem) - AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("roms", 0) /* system monitor */ - AM_RANGE(0x0400, 0x07ff) AM_RAM /* mandatory 1 kilobyte bank #0 */ - AM_RANGE(0x0800, 0x0bff) AM_RAM /* extra 1 kilobyte bank #1 (optional) */ - AM_RANGE(0x0c00, 0x0fff) AM_RAM /* extra 1 kilobyte bank #2 (optional) */ - AM_RANGE(0x1000, 0x13ff) AM_RAM /* extra 1 kilobyte bank #3 (optional) */ - AM_RANGE(0x1400, 0x17ff) AM_RAM /* extra 1 kilobyte bank #4 (optional) */ - AM_RANGE(0x1800, 0x1bff) AM_RAM /* extra 1 kilobyte bank #5 (optional) */ - AM_RANGE(0x1c00, 0x1fff) AM_RAM /* extra 1 kilobyte bank #6 (optional) */ - AM_RANGE(0x2000, 0x23ff) AM_RAM /* extra 1 kilobyte bank #7 (optional) */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(zapcomp_state::zapcomp_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(keyboard_r) - AM_RANGE(0x05, 0x07) AM_WRITE(display_7seg_w) -ADDRESS_MAP_END +void zapcomp_state::zapcomp_mem(address_map &map) +{ + map(0x0000, 0x03ff).rom().region("roms", 0); /* system monitor */ + map(0x0400, 0x07ff).ram(); /* mandatory 1 kilobyte bank #0 */ + map(0x0800, 0x0bff).ram(); /* extra 1 kilobyte bank #1 (optional) */ + map(0x0c00, 0x0fff).ram(); /* extra 1 kilobyte bank #2 (optional) */ + map(0x1000, 0x13ff).ram(); /* extra 1 kilobyte bank #3 (optional) */ + map(0x1400, 0x17ff).ram(); /* extra 1 kilobyte bank #4 (optional) */ + map(0x1800, 0x1bff).ram(); /* extra 1 kilobyte bank #5 (optional) */ + map(0x1c00, 0x1fff).ram(); /* extra 1 kilobyte bank #6 (optional) */ + map(0x2000, 0x23ff).ram(); /* extra 1 kilobyte bank #7 (optional) */ +} + +void zapcomp_state::zapcomp_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(this, FUNC(zapcomp_state::keyboard_r)); + map(0x05, 0x07).w(this, FUNC(zapcomp_state::display_7seg_w)); +} static INPUT_PORTS_START( zapcomp ) PORT_START("X0") diff --git a/src/mame/drivers/zaurus.cpp b/src/mame/drivers/zaurus.cpp index 8007d621066..f1e82c02271 100644 --- a/src/mame/drivers/zaurus.cpp +++ b/src/mame/drivers/zaurus.cpp @@ -1712,13 +1712,14 @@ WRITE32_MEMBER(zaurus_state::pxa255_rtc_w) } -ADDRESS_MAP_START(zaurus_state::zaurus_map) - AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_REGION("firmware", 0) - AM_RANGE(0x40900000, 0x4090000f) AM_READWRITE(pxa255_rtc_r,pxa255_rtc_w) - AM_RANGE(0x40a00000, 0x40a0001f) AM_READWRITE(pxa255_ostimer_r, pxa255_ostimer_w ) - AM_RANGE(0x40d00000, 0x40d00017) AM_READWRITE(pxa255_intc_r, pxa255_intc_w ) - AM_RANGE(0xa0000000, 0xa07fffff) AM_RAM AM_SHARE("ram") -ADDRESS_MAP_END +void zaurus_state::zaurus_map(address_map &map) +{ + map(0x00000000, 0x001fffff).ram().region("firmware", 0); + map(0x40900000, 0x4090000f).rw(this, FUNC(zaurus_state::pxa255_rtc_r), FUNC(zaurus_state::pxa255_rtc_w)); + map(0x40a00000, 0x40a0001f).rw(this, FUNC(zaurus_state::pxa255_ostimer_r), FUNC(zaurus_state::pxa255_ostimer_w)); + map(0x40d00000, 0x40d00017).rw(this, FUNC(zaurus_state::pxa255_intc_r), FUNC(zaurus_state::pxa255_intc_w)); + map(0xa0000000, 0xa07fffff).ram().share("ram"); +} static INPUT_PORTS_START( zaurus ) diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp index 4e5b412a7ad..ec5341605b4 100644 --- a/src/mame/drivers/zaxxon.cpp +++ b/src/mame/drivers/zaxxon.cpp @@ -436,69 +436,74 @@ CUSTOM_INPUT_MEMBER(zaxxon_state::zaxxon_coin_r) *************************************/ /* complete memory map derived from schematics */ -ADDRESS_MAP_START(zaxxon_state::zaxxon_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM_WRITE(zaxxon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x1f00) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x18fc) AM_READ_PORT("SW00") - AM_RANGE(0xc001, 0xc001) AM_MIRROR(0x18fc) AM_READ_PORT("SW01") - AM_RANGE(0xc002, 0xc002) AM_MIRROR(0x18fc) AM_READ_PORT("DSW02") - AM_RANGE(0xc003, 0xc003) AM_MIRROR(0x18fc) AM_READ_PORT("DSW03") - AM_RANGE(0xc100, 0xc100) AM_MIRROR(0x18ff) AM_READ_PORT("SW100") - AM_RANGE(0xc000, 0xc007) AM_MIRROR(0x18f8) AM_DEVWRITE("mainlatch1", ls259_device, write_d0) - AM_RANGE(0xe03c, 0xe03f) AM_MIRROR(0x1f00) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0xe0f0, 0xe0f3) AM_MIRROR(0x1f00) AM_SELECT(0x0008) AM_WRITE(zaxxon_control_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zaxxon_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END +void zaxxon_state::zaxxon_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x8000, 0x83ff).mirror(0x1c00).ram().w(this, FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram"); + map(0xa000, 0xa0ff).mirror(0x1f00).ram().share("spriteram"); + map(0xc000, 0xc000).mirror(0x18fc).portr("SW00"); + map(0xc001, 0xc001).mirror(0x18fc).portr("SW01"); + map(0xc002, 0xc002).mirror(0x18fc).portr("DSW02"); + map(0xc003, 0xc003).mirror(0x18fc).portr("DSW03"); + map(0xc100, 0xc100).mirror(0x18ff).portr("SW100"); + map(0xc000, 0xc007).mirror(0x18f8).w("mainlatch1", FUNC(ls259_device::write_d0)); + map(0xe03c, 0xe03f).mirror(0x1f00).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe0f0, 0xe0f3).mirror(0x1f00).select(0x0008).w(this, FUNC(zaxxon_state::zaxxon_control_w)); +} + +void zaxxon_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().share("decrypted_opcodes"); +} /* derived from Zaxxon, different sound hardware */ -ADDRESS_MAP_START(zaxxon_state::ixion_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_RAM - AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x1c00) AM_RAM_WRITE(zaxxon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x1f00) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x18fc) AM_READ_PORT("SW00") - AM_RANGE(0xc001, 0xc001) AM_MIRROR(0x18fc) AM_READ_PORT("SW01") - AM_RANGE(0xc002, 0xc002) AM_MIRROR(0x18fc) AM_READ_PORT("DSW02") - AM_RANGE(0xc003, 0xc003) AM_MIRROR(0x18fc) AM_READ_PORT("DSW03") - AM_RANGE(0xc100, 0xc100) AM_MIRROR(0x18ff) AM_READ_PORT("SW100") - AM_RANGE(0xc000, 0xc007) AM_MIRROR(0x18f8) AM_DEVWRITE("mainlatch1", ls259_device, write_d0) - AM_RANGE(0xe03c, 0xe03c) AM_MIRROR(0x1f00) AM_DEVREADWRITE("usbsnd", usb_sound_device, status_r, data_w) - AM_RANGE(0xe0f0, 0xe0f3) AM_MIRROR(0x1f00) AM_SELECT(0x0008) AM_WRITE(zaxxon_control_w) -ADDRESS_MAP_END +void zaxxon_state::ixion_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x6fff).ram(); + map(0x8000, 0x83ff).mirror(0x1c00).ram().w(this, FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram"); + map(0xa000, 0xa0ff).mirror(0x1f00).ram().share("spriteram"); + map(0xc000, 0xc000).mirror(0x18fc).portr("SW00"); + map(0xc001, 0xc001).mirror(0x18fc).portr("SW01"); + map(0xc002, 0xc002).mirror(0x18fc).portr("DSW02"); + map(0xc003, 0xc003).mirror(0x18fc).portr("DSW03"); + map(0xc100, 0xc100).mirror(0x18ff).portr("SW100"); + map(0xc000, 0xc007).mirror(0x18f8).w("mainlatch1", FUNC(ls259_device::write_d0)); + map(0xe03c, 0xe03c).mirror(0x1f00).rw("usbsnd", FUNC(usb_sound_device::status_r), FUNC(usb_sound_device::data_w)); + map(0xe0f0, 0xe0f3).mirror(0x1f00).select(0x0008).w(this, FUNC(zaxxon_state::zaxxon_control_w)); +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(zaxxon_state::congo_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0xa000, 0xa3ff) AM_MIRROR(0x1800) AM_RAM_WRITE(zaxxon_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xa400, 0xa7ff) AM_MIRROR(0x1800) AM_RAM_WRITE(congo_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc4) AM_READ_PORT("SW00") - AM_RANGE(0xc001, 0xc001) AM_MIRROR(0x1fc4) AM_READ_PORT("SW01") - AM_RANGE(0xc002, 0xc002) AM_MIRROR(0x1fc4) AM_READ_PORT("DSW02") - AM_RANGE(0xc003, 0xc003) AM_MIRROR(0x1fc4) AM_READ_PORT("DSW03") - AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("SW100") - AM_RANGE(0xc018, 0xc01f) AM_MIRROR(0x1fc0) AM_DEVWRITE("mainlatch1", ls259_device, write_d0) - AM_RANGE(0xc020, 0xc027) AM_MIRROR(0x1fc0) AM_DEVWRITE("mainlatch2", ls259_device, write_d0) - AM_RANGE(0xc028, 0xc029) AM_MIRROR(0x1fc4) AM_WRITE(bg_position_w) - AM_RANGE(0xc030, 0xc033) AM_MIRROR(0x1fc4) AM_WRITE(congo_sprite_custom_w) - AM_RANGE(0xc038, 0xc03f) AM_MIRROR(0x1fc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) -ADDRESS_MAP_END +void zaxxon_state::congo_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); + map(0xa000, 0xa3ff).mirror(0x1800).ram().w(this, FUNC(zaxxon_state::zaxxon_videoram_w)).share("videoram"); + map(0xa400, 0xa7ff).mirror(0x1800).ram().w(this, FUNC(zaxxon_state::congo_colorram_w)).share("colorram"); + map(0xc000, 0xc000).mirror(0x1fc4).portr("SW00"); + map(0xc001, 0xc001).mirror(0x1fc4).portr("SW01"); + map(0xc002, 0xc002).mirror(0x1fc4).portr("DSW02"); + map(0xc003, 0xc003).mirror(0x1fc4).portr("DSW03"); + map(0xc008, 0xc008).mirror(0x1fc7).portr("SW100"); + map(0xc018, 0xc01f).mirror(0x1fc0).w("mainlatch1", FUNC(ls259_device::write_d0)); + map(0xc020, 0xc027).mirror(0x1fc0).w("mainlatch2", FUNC(ls259_device::write_d0)); + map(0xc028, 0xc029).mirror(0x1fc4).w(this, FUNC(zaxxon_state::bg_position_w)); + map(0xc030, 0xc033).mirror(0x1fc4).w(this, FUNC(zaxxon_state::congo_sprite_custom_w)); + map(0xc038, 0xc03f).mirror(0x1fc0).w("soundlatch", FUNC(generic_latch_8_device::write)); +} /* complete memory map derived from schematics */ -ADDRESS_MAP_START(zaxxon_state::congo_sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x47ff) AM_MIRROR(0x1800) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn1", sn76489a_device, write) - AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_DEVWRITE("sn2", sn76489a_device, write) -ADDRESS_MAP_END +void zaxxon_state::congo_sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x4000, 0x47ff).mirror(0x1800).ram(); + map(0x6000, 0x6000).mirror(0x1fff).w("sn1", FUNC(sn76489a_device::write)); + map(0x8000, 0x8003).mirror(0x1ffc).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xa000, 0xa000).mirror(0x1fff).w("sn2", FUNC(sn76489a_device::write)); +} diff --git a/src/mame/drivers/zerozone.cpp b/src/mame/drivers/zerozone.cpp index cf847204585..ed64826346f 100644 --- a/src/mame/drivers/zerozone.cpp +++ b/src/mame/drivers/zerozone.cpp @@ -49,27 +49,29 @@ WRITE16_MEMBER( zerozone_state::sound_w ) } -ADDRESS_MAP_START(zerozone_state::main_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x080002, 0x080003) AM_READ_PORT("INPUTS") - AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSWB") - AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSWA") - AM_RANGE(0x084000, 0x084001) AM_WRITE(sound_w) - AM_RANGE(0x088000, 0x0881ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x098000, 0x098001) AM_RAM /* Watchdog? */ - AM_RANGE(0x09ce00, 0x09ffff) AM_RAM_WRITE(tilemap_w) AM_SHARE("videoram") - AM_RANGE(0x0b4000, 0x0b4001) AM_WRITE(tilebank_w) - AM_RANGE(0x0c0000, 0x0cffff) AM_RAM - AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM /* Never read from */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(zerozone_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void zerozone_state::main_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x080000, 0x080001).portr("SYSTEM"); + map(0x080002, 0x080003).portr("INPUTS"); + map(0x080008, 0x080009).portr("DSWB"); + map(0x08000a, 0x08000b).portr("DSWA"); + map(0x084000, 0x084001).w(this, FUNC(zerozone_state::sound_w)); + map(0x088000, 0x0881ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x098000, 0x098001).ram(); /* Watchdog? */ + map(0x09ce00, 0x09ffff).ram().w(this, FUNC(zerozone_state::tilemap_w)).share("videoram"); + map(0x0b4000, 0x0b4001).w(this, FUNC(zerozone_state::tilebank_w)); + map(0x0c0000, 0x0cffff).ram(); + map(0x0f8000, 0x0f87ff).ram(); /* Never read from */ +} + +void zerozone_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( zerozone ) diff --git a/src/mame/drivers/zexall.cpp b/src/mame/drivers/zexall.cpp index fdaf71b0868..e47cb7642ba 100644 --- a/src/mame/drivers/zexall.cpp +++ b/src/mame/drivers/zexall.cpp @@ -136,12 +136,13 @@ WRITE8_MEMBER( zexall_state::output_data_w ) Address Maps ******************************************************************************/ -ADDRESS_MAP_START(zexall_state::z80_mem) - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0xfffd, 0xfffd) AM_READWRITE(output_ack_r, output_ack_w) - AM_RANGE(0xfffe, 0xfffe) AM_READWRITE(output_req_r, output_req_w) - AM_RANGE(0xffff, 0xffff) AM_READWRITE(output_data_r, output_data_w) -ADDRESS_MAP_END +void zexall_state::z80_mem(address_map &map) +{ + map(0x0000, 0xffff).ram().share("main_ram"); + map(0xfffd, 0xfffd).rw(this, FUNC(zexall_state::output_ack_r), FUNC(zexall_state::output_ack_w)); + map(0xfffe, 0xfffe).rw(this, FUNC(zexall_state::output_req_r), FUNC(zexall_state::output_req_w)); + map(0xffff, 0xffff).rw(this, FUNC(zexall_state::output_data_r), FUNC(zexall_state::output_data_w)); +} /****************************************************************************** diff --git a/src/mame/drivers/zms8085.cpp b/src/mame/drivers/zms8085.cpp index 6f367efdbfd..ebbfcf1c20b 100644 --- a/src/mame/drivers/zms8085.cpp +++ b/src/mame/drivers/zms8085.cpp @@ -87,17 +87,19 @@ READ8_MEMBER(zms8085_state::uart_status_r) } -ADDRESS_MAP_START(zms8085_state::mem_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("maincpu", 0) AM_WRITENOP - AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(zms8085_state::io_map) - AM_RANGE(0x61, 0x61) AM_READ(special_r) AM_DEVWRITE("uart", ay51013_device, transmit) - AM_RANGE(0x62, 0x62) AM_DEVREAD("uart", ay51013_device, receive) - AM_RANGE(0x63, 0x63) AM_READ(uart_status_r) - AM_RANGE(0x68, 0x68) AM_WRITENOP -ADDRESS_MAP_END +void zms8085_state::mem_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().region("maincpu", 0).nopw(); + map(0x1000, 0x1fff).ram().share("mainram"); +} + +void zms8085_state::io_map(address_map &map) +{ + map(0x61, 0x61).r(this, FUNC(zms8085_state::special_r)).w(m_uart, FUNC(ay51013_device::transmit)); + map(0x62, 0x62).r(m_uart, FUNC(ay51013_device::receive)); + map(0x63, 0x63).r(this, FUNC(zms8085_state::uart_status_r)); + map(0x68, 0x68).nopw(); +} static INPUT_PORTS_START( zephyr ) diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp index 21316c400e4..54bbd44e76e 100644 --- a/src/mame/drivers/zn.cpp +++ b/src/mame/drivers/zn.cpp @@ -357,22 +357,23 @@ WRITE8_MEMBER(zn_state::coin_w) } } -ADDRESS_MAP_START(zn_state::zn_map) - AM_RANGE(0x1fa00000, 0x1fa00003) AM_READ_PORT("P1") - AM_RANGE(0x1fa00100, 0x1fa00103) AM_READ_PORT("P2") - AM_RANGE(0x1fa00200, 0x1fa00203) AM_READ_PORT("SERVICE") - AM_RANGE(0x1fa00300, 0x1fa00303) AM_READ_PORT("SYSTEM") - AM_RANGE(0x1fa10000, 0x1fa10003) AM_READ_PORT("P3") - AM_RANGE(0x1fa10100, 0x1fa10103) AM_READ_PORT("P4") - AM_RANGE(0x1fa10200, 0x1fa10203) AM_READ8(boardconfig_r, 0x000000ff) - AM_RANGE(0x1fa10300, 0x1fa10303) AM_READWRITE8(znsecsel_r, znsecsel_w, 0x000000ff) - AM_RANGE(0x1fa20000, 0x1fa20003) AM_WRITE8(coin_w, 0x000000ff) - AM_RANGE(0x1fa30000, 0x1fa30003) AM_NOP /* ?? */ - AM_RANGE(0x1fa40000, 0x1fa40003) AM_READNOP /* ?? */ - AM_RANGE(0x1fa60000, 0x1fa60003) AM_READNOP /* ?? */ - AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */ - AM_RANGE(0x1fb20000, 0x1fb20007) AM_READ16(unknown_r, 0xffffffff) -ADDRESS_MAP_END +void zn_state::zn_map(address_map &map) +{ + map(0x1fa00000, 0x1fa00003).portr("P1"); + map(0x1fa00100, 0x1fa00103).portr("P2"); + map(0x1fa00200, 0x1fa00203).portr("SERVICE"); + map(0x1fa00300, 0x1fa00303).portr("SYSTEM"); + map(0x1fa10000, 0x1fa10003).portr("P3"); + map(0x1fa10100, 0x1fa10103).portr("P4"); + map(0x1fa10200, 0x1fa10200).r(this, FUNC(zn_state::boardconfig_r)); + map(0x1fa10300, 0x1fa10300).rw(this, FUNC(zn_state::znsecsel_r), FUNC(zn_state::znsecsel_w)); + map(0x1fa20000, 0x1fa20000).w(this, FUNC(zn_state::coin_w)); + map(0x1fa30000, 0x1fa30003).noprw(); /* ?? */ + map(0x1fa40000, 0x1fa40003).nopr(); /* ?? */ + map(0x1fa60000, 0x1fa60003).nopr(); /* ?? */ + map(0x1faf0000, 0x1faf07ff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)); /* eeprom */ + map(0x1fb20000, 0x1fb20007).r(this, FUNC(zn_state::unknown_r)); +} MACHINE_CONFIG_START(zn_state::zn1_1mb_vram) @@ -597,17 +598,18 @@ INTERRUPT_GEN_MEMBER(zn_state::qsound_interrupt) device.execute().set_input_line(0, HOLD_LINE); } -ADDRESS_MAP_START(zn_state::coh1000c_map) - AM_IMPORT_FROM(zn_map) - - AM_RANGE(0x1f000000, 0x1f3fffff) AM_ROM AM_REGION("bankedroms", 0) - AM_RANGE(0x1f400000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(bank_coh1000c_w, 0x000000ff) - AM_RANGE(0x1fb40010, 0x1fb40013) AM_READ16(capcom_kickharness_r, 0x0000ffff) - AM_RANGE(0x1fb40020, 0x1fb40023) AM_READ16(capcom_kickharness_r, 0x0000ffff) - AM_RANGE(0x1fb80000, 0x1fbfffff) AM_ROM AM_REGION("countryrom", 0) - AM_RANGE(0x1fb60000, 0x1fb60003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff) -ADDRESS_MAP_END +void zn_state::coh1000c_map(address_map &map) +{ + zn_map(map); + + map(0x1f000000, 0x1f3fffff).rom().region("bankedroms", 0); + map(0x1f400000, 0x1f7fffff).bankr("rombank1"); + map(0x1fb00000, 0x1fb00000).w(this, FUNC(zn_state::bank_coh1000c_w)); + map(0x1fb40010, 0x1fb40011).r(this, FUNC(zn_state::capcom_kickharness_r)); + map(0x1fb40020, 0x1fb40021).r(this, FUNC(zn_state::capcom_kickharness_r)); + map(0x1fb80000, 0x1fbfffff).rom().region("countryrom", 0); + map(0x1fb60000, 0x1fb60000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} MACHINE_START_MEMBER(zn_state,coh1000c) { @@ -627,19 +629,21 @@ MACHINE_RESET_MEMBER(zn_state,glpracr) MACHINE_RESET_CALL_MEMBER(coh1000c); } -ADDRESS_MAP_START(zn_state::qsound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank") /* banked (contains music data) */ - AM_RANGE(0xd000, 0xd002) AM_DEVWRITE("qsound", qsound_device, qsound_w) - AM_RANGE(0xd003, 0xd003) AM_WRITE(qsound_bankswitch_w) - AM_RANGE(0xd007, 0xd007) AM_DEVREAD("qsound", qsound_device, qsound_r) - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void zn_state::qsound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("soundbank"); /* banked (contains music data) */ + map(0xd000, 0xd002).w("qsound", FUNC(qsound_device::qsound_w)); + map(0xd003, 0xd003).w(this, FUNC(zn_state::qsound_bankswitch_w)); + map(0xd007, 0xd007).r("qsound", FUNC(qsound_device::qsound_r)); + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(zn_state::qsound_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void zn_state::qsound_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} MACHINE_CONFIG_START(zn_state::coh1000c) zn1_1mb_vram(config); @@ -1084,14 +1088,15 @@ WRITE8_MEMBER(zn_state::fx1a_sound_bankswitch_w) m_soundbank->set_entry( ( data - 1 ) & 0x07 ); } -ADDRESS_MAP_START(zn_state::coh1000ta_map) - AM_IMPORT_FROM(zn_map) +void zn_state::coh1000ta_map(address_map &map) +{ + zn_map(map); - AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fb40000, 0x1fb40003) AM_WRITE8(bank_coh1000t_w, 0x000000ff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE8("tc0140syt", tc0140syt_device, master_port_w, 0x000000ff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVREADWRITE8("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w, 0x00ff0000) -ADDRESS_MAP_END + map(0x1f000000, 0x1f7fffff).bankr("rombank1"); + map(0x1fb40000, 0x1fb40000).w(this, FUNC(zn_state::bank_coh1000t_w)); + map(0x1fb80000, 0x1fb80000).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); + map(0x1fb80002, 0x1fb80002).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); +} MACHINE_START_MEMBER(zn_state,coh1000ta) { @@ -1107,18 +1112,19 @@ MACHINE_RESET_MEMBER(zn_state,coh1000ta) m_soundbank->set_entry( 0 ); } -ADDRESS_MAP_START(zn_state::fx1a_sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("soundbank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) - AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w) - AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */ - AM_RANGE(0xee00, 0xee00) AM_NOP /* ? */ - AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */ - AM_RANGE(0xf200, 0xf200) AM_WRITE(fx1a_sound_bankswitch_w) -ADDRESS_MAP_END +void zn_state::fx1a_sound_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("soundbank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); + map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w)); + map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w)); + map(0xe400, 0xe403).nopw(); /* pan */ + map(0xee00, 0xee00).noprw(); /* ? */ + map(0xf000, 0xf000).nopw(); /* ? */ + map(0xf200, 0xf200).w(this, FUNC(zn_state::fx1a_sound_bankswitch_w)); +} MACHINE_CONFIG_START(zn_state::coh1000ta) @@ -1156,17 +1162,18 @@ READ8_MEMBER(zn_state::fx1b_fram_r) return m_fx1b_fram[offset]; } -ADDRESS_MAP_START(zn_state::coh1000tb_map) - AM_IMPORT_FROM(zn_map) - AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fb00000, 0x1fb003ff) AM_READWRITE8(fx1b_fram_r, fx1b_fram_w, 0x00ff00ff) - AM_RANGE(0x1fb40000, 0x1fb40003) AM_WRITE8(bank_coh1000t_w, 0x000000ff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_data_w, 0x0000ffff) - AM_RANGE(0x1fb80000, 0x1fb80003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, reg_address_w, 0xffff0000) - AM_RANGE(0x1fba0000, 0x1fba0003) AM_DEVWRITE16("taito_zoom", taito_zoom_device, sound_irq_w, 0x0000ffff) - AM_RANGE(0x1fbc0000, 0x1fbc0003) AM_DEVREAD16("taito_zoom", taito_zoom_device, sound_irq_r, 0x0000ffff) - AM_RANGE(0x1fbe0000, 0x1fbe01ff) AM_DEVREADWRITE8("taito_zoom", taito_zoom_device, shared_ram_r, shared_ram_w, 0x00ff00ff) // M66220FP for comm with the MN10200 -ADDRESS_MAP_END +void zn_state::coh1000tb_map(address_map &map) +{ + zn_map(map); + map(0x1f000000, 0x1f7fffff).bankr("rombank1"); + map(0x1fb00000, 0x1fb003ff).rw(this, FUNC(zn_state::fx1b_fram_r), FUNC(zn_state::fx1b_fram_w)).umask32(0x00ff00ff); + map(0x1fb40000, 0x1fb40000).w(this, FUNC(zn_state::bank_coh1000t_w)); + map(0x1fb80000, 0x1fb80001).w(m_zoom, FUNC(taito_zoom_device::reg_data_w)); + map(0x1fb80002, 0x1fb80003).w(m_zoom, FUNC(taito_zoom_device::reg_address_w)); + map(0x1fba0000, 0x1fba0001).w(m_zoom, FUNC(taito_zoom_device::sound_irq_w)); + map(0x1fbc0000, 0x1fbc0001).r(m_zoom, FUNC(taito_zoom_device::sound_irq_r)); + map(0x1fbe0000, 0x1fbe01ff).rw(m_zoom, FUNC(taito_zoom_device::shared_ram_r), FUNC(taito_zoom_device::shared_ram_w)).umask32(0x00ff00ff); // M66220FP for comm with the MN10200 +} DRIVER_INIT_MEMBER(zn_state,coh1000tb) { @@ -1436,14 +1443,15 @@ DRIVER_INIT_MEMBER(zn_state,primrag2) save_item(NAME(m_vt83c461_latch)); } -ADDRESS_MAP_START(zn_state::coh1000w_map) - AM_IMPORT_FROM(zn_map) - AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x1f000000, 0x1f000003) AM_WRITENOP - AM_RANGE(0x1f7e8000, 0x1f7e8003) AM_NOP - AM_RANGE(0x1f7e4000, 0x1f7e4fff) AM_READWRITE16(vt83c461_16_r, vt83c461_16_w, 0xffffffff) - AM_RANGE(0x1f7f4000, 0x1f7f4fff) AM_READWRITE16(vt83c461_32_r, vt83c461_32_w, 0xffffffff) -ADDRESS_MAP_END +void zn_state::coh1000w_map(address_map &map) +{ + zn_map(map); + map(0x1f000000, 0x1f1fffff).rom().region("roms", 0); + map(0x1f000000, 0x1f000003).nopw(); + map(0x1f7e8000, 0x1f7e8003).noprw(); + map(0x1f7e4000, 0x1f7e4fff).rw(this, FUNC(zn_state::vt83c461_16_r), FUNC(zn_state::vt83c461_16_w)); + map(0x1f7f4000, 0x1f7f4fff).rw(this, FUNC(zn_state::vt83c461_32_r), FUNC(zn_state::vt83c461_32_w)); +} MACHINE_CONFIG_START(zn_state::coh1000w) zn1_2mb_vram(config); @@ -1619,14 +1627,15 @@ WRITE8_MEMBER(zn_state::coh1002e_sound_irq_w) m_audiocpu->set_input_line(2, HOLD_LINE); // irq 2 on the 68k } -ADDRESS_MAP_START(zn_state::coh1002e_map) - AM_IMPORT_FROM(zn_map) +void zn_state::coh1002e_map(address_map &map) +{ + zn_map(map); - AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fa10300, 0x1fa10303) AM_WRITE8(coh1002e_bank_w, 0x000000ff) - AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff) - AM_RANGE(0x1fb00004, 0x1fb00007) AM_WRITE8(coh1002e_sound_irq_w, 0x000000ff) -ADDRESS_MAP_END + map(0x1f000000, 0x1f7fffff).bankr("rombank1"); + map(0x1fa10300, 0x1fa10300).w(this, FUNC(zn_state::coh1002e_bank_w)); + map(0x1fb00000, 0x1fb00000).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x1fb00004, 0x1fb00004).w(this, FUNC(zn_state::coh1002e_sound_irq_w)); +} MACHINE_START_MEMBER(zn_state,coh1002e) { @@ -1642,23 +1651,26 @@ MACHINE_RESET_MEMBER(zn_state,coh1002e) m_okibank->set_entry( 0 ); } -ADDRESS_MAP_START(zn_state::psarc_snd_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_RAM - AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("ymf", ymf271_device, read, write, 0x00ff ) - AM_RANGE(0x180008, 0x180009) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff ) - AM_RANGE(0x000000, 0x07ffff) AM_WRITENOP - AM_RANGE(0x100020, 0xffffff) AM_WRITENOP -ADDRESS_MAP_END +void zn_state::psarc_snd_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x0fffff).ram(); + map(0x100000, 0x10001f).rw("ymf", FUNC(ymf271_device::read), FUNC(ymf271_device::write)).umask16(0x00ff); + map(0x180009, 0x180009).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x000000, 0x07ffff).nopw(); + map(0x100020, 0xffffff).nopw(); +} -ADDRESS_MAP_START(zn_state::beastrzrb_snd_map) // Internal ROM Not dumped +void zn_state::beastrzrb_snd_map(address_map &map) +{ // Internal ROM Not dumped // AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END +} -ADDRESS_MAP_START(zn_state::oki_map) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void zn_state::oki_map(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("okibank"); +} MACHINE_CONFIG_START(zn_state::coh1002e) zn1_2mb_vram(config); @@ -1791,14 +1803,15 @@ READ16_MEMBER(zn_state::bam2_unk_r) return 0; } -ADDRESS_MAP_START(zn_state::bam2_map) - AM_IMPORT_FROM(zn_map) +void zn_state::bam2_map(address_map &map) +{ + zn_map(map); - AM_RANGE(0x1f000000, 0x1f3fffff) AM_ROM AM_REGION("bankedroms", 0) - AM_RANGE(0x1f400000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fa20000, 0x1fa20003) AM_READ16(bam2_unk_r, 0x0000ffff) - AM_RANGE(0x1fb00000, 0x1fb00007) AM_READWRITE16(bam2_mcu_r, bam2_mcu_w, 0xffffffff) -ADDRESS_MAP_END + map(0x1f000000, 0x1f3fffff).rom().region("bankedroms", 0); + map(0x1f400000, 0x1f7fffff).bankr("rombank1"); + map(0x1fa20000, 0x1fa20001).r(this, FUNC(zn_state::bam2_unk_r)); + map(0x1fb00000, 0x1fb00007).rw(this, FUNC(zn_state::bam2_mcu_r), FUNC(zn_state::bam2_mcu_w)); +} DRIVER_INIT_MEMBER(zn_state,bam2) { @@ -2101,27 +2114,30 @@ WRITE8_MEMBER(zn_state::nbajamex_backup_w) -ADDRESS_MAP_START(zn_state::coh1000a_map) - AM_IMPORT_FROM(zn_map) - AM_RANGE(0x1fbfff00, 0x1fbfff03) AM_WRITE16(acpsx_00_w, 0xffffffff) - AM_RANGE(0x1fbfff10, 0x1fbfff13) AM_WRITE16(acpsx_10_w, 0xffff0000) -ADDRESS_MAP_END +void zn_state::coh1000a_map(address_map &map) +{ + zn_map(map); + map(0x1fbfff00, 0x1fbfff03).w(this, FUNC(zn_state::acpsx_00_w)); + map(0x1fbfff12, 0x1fbfff13).w(this, FUNC(zn_state::acpsx_10_w)); +} -ADDRESS_MAP_START(zn_state::nbajamex_map) - AM_IMPORT_FROM(coh1000a_map) +void zn_state::nbajamex_map(address_map &map) +{ + coh1000a_map(map); - AM_RANGE(0x1f000000, 0x1f7fffff) AM_DEVICE("nbajamex_bankmap", address_map_bank_device, amap32) - AM_RANGE(0x1fbfff00, 0x1fbfff07) AM_WRITE16(nbajamex_bank_w, 0xffffffff) - AM_RANGE(0x1fbfff08, 0x1fbfff0b) AM_READ16(nbajamex_08_r, 0xffff) - AM_RANGE(0x1fbfff80, 0x1fbfff83) AM_READWRITE16(nbajamex_80_r, nbajamex_80_w, 0xffff) -ADDRESS_MAP_END + map(0x1f000000, 0x1f7fffff).m(m_nbajamex_bankmap, FUNC(address_map_bank_device::amap32)); + map(0x1fbfff00, 0x1fbfff07).w(this, FUNC(zn_state::nbajamex_bank_w)); + map(0x1fbfff08, 0x1fbfff09).r(this, FUNC(zn_state::nbajamex_08_r)); + map(0x1fbfff80, 0x1fbfff81).rw(this, FUNC(zn_state::nbajamex_80_r), FUNC(zn_state::nbajamex_80_w)); +} -ADDRESS_MAP_START(zn_state::nbajamex_bank_map) - AM_RANGE(0x000000, 0x1fffff) AM_MIRROR(0x800000) AM_ROMBANK("rombank1") - AM_RANGE(0x200000, 0x207fff) AM_MIRROR(0x800000) AM_WRITE8(nbajamex_backup_w, 0xffffffff) - AM_RANGE(0x200000, 0x207fff) AM_ROMBANK("sram") - AM_RANGE(0xa00000, 0xffffff) AM_ROMBANK("rombank2") -ADDRESS_MAP_END +void zn_state::nbajamex_bank_map(address_map &map) +{ + map(0x000000, 0x1fffff).mirror(0x800000).bankr("rombank1"); + map(0x200000, 0x207fff).mirror(0x800000).w(this, FUNC(zn_state::nbajamex_backup_w)); + map(0x200000, 0x207fff).bankr("sram"); + map(0xa00000, 0xffffff).bankr("rombank2"); +} DRIVER_INIT_MEMBER(zn_state,nbajamex) { @@ -2153,13 +2169,14 @@ DRIVER_INIT_MEMBER(zn_state,jdredd) save_item(NAME(m_jdredd_gun_mux)); } -ADDRESS_MAP_START(zn_state::jdredd_map) - AM_IMPORT_FROM(coh1000a_map) +void zn_state::jdredd_map(address_map &map) +{ + coh1000a_map(map); - AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROM AM_REGION("roms", 0) - AM_RANGE(0x1fbfff80, 0x1fbfff8f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) - AM_RANGE(0x1fbfff90, 0x1fbfff9f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) -ADDRESS_MAP_END + map(0x1f000000, 0x1f1fffff).rom().region("roms", 0); + map(0x1fbfff80, 0x1fbfff8f).rw("ata", FUNC(ata_interface_device::read_cs1), FUNC(ata_interface_device::write_cs1)); + map(0x1fbfff90, 0x1fbfff9f).rw("ata", FUNC(ata_interface_device::read_cs0), FUNC(ata_interface_device::write_cs0)); +} MACHINE_CONFIG_START(zn_state::coh1000a) zn1_2mb_vram(config); @@ -2327,13 +2344,14 @@ WRITE8_MEMBER(zn_state::coh1001l_bank_w) m_rombank[0]->set_entry( data & 3 ); } -ADDRESS_MAP_START(zn_state::coh1001l_map) - AM_IMPORT_FROM(zn_map) +void zn_state::coh1001l_map(address_map &map) +{ + zn_map(map); - AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE16("soundlatch16", generic_latch_16_device, write, 0x0000ffff) - AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(coh1001l_bank_w, 0x00ff0000) -ADDRESS_MAP_END + map(0x1f000000, 0x1f7fffff).bankr("rombank1"); + map(0x1fb00000, 0x1fb00001).w(m_soundlatch16, FUNC(generic_latch_16_device::write)); + map(0x1fb00002, 0x1fb00002).w(this, FUNC(zn_state::coh1001l_bank_w)); +} MACHINE_START_MEMBER(zn_state,coh1001l) { @@ -2345,12 +2363,13 @@ MACHINE_RESET_MEMBER(zn_state,coh1001l) m_rombank[0]->set_entry( 0 ); } -ADDRESS_MAP_START(zn_state::atlus_snd_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100001) AM_DEVREAD("soundlatch16", generic_latch_16_device, read) AM_WRITE(coh1001l_sound_unk_w) - AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff) - AM_RANGE(0x700000, 0x70ffff) AM_RAM -ADDRESS_MAP_END +void zn_state::atlus_snd_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x100000, 0x100001).r(m_soundlatch16, FUNC(generic_latch_16_device::read)).w(this, FUNC(zn_state::coh1001l_sound_unk_w)); + map(0x200000, 0x200003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); + map(0x700000, 0x70ffff).ram(); +} MACHINE_CONFIG_START(zn_state::coh1001l) @@ -2391,12 +2410,13 @@ WRITE8_MEMBER(zn_state::coh1002v_bank_w) m_rombank[0]->set_entry( data ); } -ADDRESS_MAP_START(zn_state::coh1002v_map) - AM_IMPORT_FROM(zn_map) - AM_RANGE(0x1f000000, 0x1f27ffff) AM_ROM AM_REGION("fixedroms", 0) - AM_RANGE(0x1fb00000, 0x1fbfffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(coh1002v_bank_w, 0x000000ff) -ADDRESS_MAP_END +void zn_state::coh1002v_map(address_map &map) +{ + zn_map(map); + map(0x1f000000, 0x1f27ffff).rom().region("fixedroms", 0); + map(0x1fb00000, 0x1fbfffff).bankr("rombank1"); + map(0x1fb00000, 0x1fb00000).w(this, FUNC(zn_state::coh1002v_bank_w)); +} MACHINE_START_MEMBER(zn_state,coh1002v) { @@ -2581,11 +2601,12 @@ WRITE8_MEMBER(zn_state::coh1002m_bank_w) m_rombank[0]->set_entry( data ); } -ADDRESS_MAP_START(zn_state::coh1002m_map) - AM_IMPORT_FROM(zn_map) - AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("rombank1") - AM_RANGE(0x1fb00004, 0x1fb00007) AM_WRITE8(coh1002m_bank_w, 0x00ff0000) -ADDRESS_MAP_END +void zn_state::coh1002m_map(address_map &map) +{ + zn_map(map); + map(0x1f000000, 0x1f7fffff).bankr("rombank1"); + map(0x1fb00006, 0x1fb00006).w(this, FUNC(zn_state::coh1002m_bank_w)); +} MACHINE_START_MEMBER(zn_state,coh1002m) { @@ -2612,12 +2633,13 @@ READ8_MEMBER(zn_state::cbaj_sound_main_status_r) return m_cbaj_fifo[1]->ef_r() << 1; } -ADDRESS_MAP_START(zn_state::coh1002msnd_map) - AM_IMPORT_FROM(coh1002m_map) - AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVREAD8("cbaj_fifo2", fifo7200_device, data_byte_r, 0x000000ff) - AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE8("cbaj_fifo1", fifo7200_device, data_byte_w, 0x000000ff) - AM_RANGE(0x1fb00000, 0x1fb00003) AM_READ8(cbaj_sound_main_status_r, 0xff000000) -ADDRESS_MAP_END +void zn_state::coh1002msnd_map(address_map &map) +{ + coh1002m_map(map); + map(0x1fb00000, 0x1fb00000).r("cbaj_fifo2", FUNC(fifo7200_device::data_byte_r)); + map(0x1fb00000, 0x1fb00000).w("cbaj_fifo1", FUNC(fifo7200_device::data_byte_w)); + map(0x1fb00003, 0x1fb00003).r(this, FUNC(zn_state::cbaj_sound_main_status_r)); +} READ8_MEMBER(zn_state::cbaj_sound_z80_status_r) { @@ -2625,27 +2647,31 @@ READ8_MEMBER(zn_state::cbaj_sound_z80_status_r) return m_cbaj_fifo[0]->ef_r() << 1; } -ADDRESS_MAP_START(zn_state::cbaj_z80_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zn_state::cbaj_z80_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x84, 0x85) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) - AM_RANGE(0x90, 0x90) AM_DEVREAD("cbaj_fifo1", fifo7200_device, data_byte_r) - AM_RANGE(0x90, 0x90) AM_DEVWRITE("cbaj_fifo2", fifo7200_device, data_byte_w) - AM_RANGE(0x91, 0x91) AM_READ(cbaj_sound_z80_status_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zn_state::coh1002ml_link_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zn_state::coh1002ml_link_port_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END +void zn_state::cbaj_z80_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).ram(); +} + +void zn_state::cbaj_z80_port_map(address_map &map) +{ + map.global_mask(0xff); + map(0x84, 0x85).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); + map(0x90, 0x90).r("cbaj_fifo1", FUNC(fifo7200_device::data_byte_r)); + map(0x90, 0x90).w("cbaj_fifo2", FUNC(fifo7200_device::data_byte_w)); + map(0x91, 0x91).r(this, FUNC(zn_state::cbaj_sound_z80_status_r)); +} + +void zn_state::coh1002ml_link_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xffff).ram(); +} + +void zn_state::coh1002ml_link_port_map(address_map &map) +{ + map.global_mask(0xff); +} MACHINE_CONFIG_START(zn_state::coh1002msnd) coh1002m(config); diff --git a/src/mame/drivers/zodiack.cpp b/src/mame/drivers/zodiack.cpp index 38c2f17b55c..f35cdc9dd73 100644 --- a/src/mame/drivers/zodiack.cpp +++ b/src/mame/drivers/zodiack.cpp @@ -147,37 +147,40 @@ WRITE8_MEMBER( zodiack_state::control_w ) } -ADDRESS_MAP_START(zodiack_state::main_map) - AM_RANGE(0x0000, 0x4fff) AM_ROM - AM_RANGE(0x5800, 0x5fff) AM_RAM - AM_RANGE(0x6081, 0x6081) AM_READ_PORT("DSW0") AM_WRITE(control_w) - AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1") - AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN0") - AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN1") - AM_RANGE(0x6090, 0x6090) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(master_soundlatch_w) - AM_RANGE(0x7000, 0x7000) AM_READNOP AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* NOP??? */ - AM_RANGE(0x7100, 0x7100) AM_WRITE(nmi_mask_w) - AM_RANGE(0x7200, 0x7200) AM_WRITE(flipscreen_w) - AM_RANGE(0x9000, 0x903f) AM_RAM_WRITE(attributes_w) AM_SHARE("attributeram") - AM_RANGE(0x9040, 0x905f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9060, 0x907f) AM_RAM AM_SHARE("bulletsram") - AM_RANGE(0x9080, 0x93ff) AM_RAM - AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram_2") - AM_RANGE(0xc000, 0xcfff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zodiack_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x4000) AM_WRITE(sound_nmi_enable_w) - AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zodiack_state::io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) -ADDRESS_MAP_END +void zodiack_state::main_map(address_map &map) +{ + map(0x0000, 0x4fff).rom(); + map(0x5800, 0x5fff).ram(); + map(0x6081, 0x6081).portr("DSW0").w(this, FUNC(zodiack_state::control_w)); + map(0x6082, 0x6082).portr("DSW1"); + map(0x6083, 0x6083).portr("IN0"); + map(0x6084, 0x6084).portr("IN1"); + map(0x6090, 0x6090).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(zodiack_state::master_soundlatch_w)); + map(0x7000, 0x7000).nopr().w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* NOP??? */ + map(0x7100, 0x7100).w(this, FUNC(zodiack_state::nmi_mask_w)); + map(0x7200, 0x7200).w(this, FUNC(zodiack_state::flipscreen_w)); + map(0x9000, 0x903f).ram().w(this, FUNC(zodiack_state::attributes_w)).share("attributeram"); + map(0x9040, 0x905f).ram().share("spriteram"); + map(0x9060, 0x907f).ram().share("bulletsram"); + map(0x9080, 0x93ff).ram(); + map(0xa000, 0xa3ff).ram().w(this, FUNC(zodiack_state::videoram_w)).share("videoram"); + map(0xb000, 0xb3ff).ram().w(this, FUNC(zodiack_state::videoram2_w)).share("videoram_2"); + map(0xc000, 0xcfff).rom(); +} + +void zodiack_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x2000, 0x23ff).ram(); + map(0x4000, 0x4000).w(this, FUNC(zodiack_state::sound_nmi_enable_w)); + map(0x6000, 0x6000).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::write)); +} + +void zodiack_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w)); +} diff --git a/src/mame/drivers/zorba.cpp b/src/mame/drivers/zorba.cpp index fd9ff169411..8eed437a14f 100644 --- a/src/mame/drivers/zorba.cpp +++ b/src/mame/drivers/zorba.cpp @@ -71,30 +71,32 @@ ToDo: #include "speaker.h" -ADDRESS_MAP_START(zorba_state::zorba_mem) - AM_RANGE( 0x0000, 0x3fff ) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") - AM_RANGE( 0x4000, 0xffff ) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(zorba_state::zorba_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("pit", pit8254_device, read, write) - AM_RANGE(0x04, 0x04) AM_READWRITE(rom_r, rom_w) - AM_RANGE(0x05, 0x05) AM_READWRITE(ram_r, ram_w) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("crtc", i8275_device, read, write) - AM_RANGE(0x20, 0x20) AM_DEVREADWRITE("uart0", i8251_device, data_r, data_w) - AM_RANGE(0x21, 0x21) AM_DEVREADWRITE("uart0", i8251_device, status_r, control_w) - AM_RANGE(0x22, 0x22) AM_DEVREADWRITE("uart1", i8251_device, data_r, data_w) - AM_RANGE(0x23, 0x23) AM_DEVREADWRITE("uart1", i8251_device, status_r, control_w) - AM_RANGE(0x24, 0x24) AM_DEVREADWRITE("uart2", i8251_device, data_r, data_w) - AM_RANGE(0x25, 0x25) AM_DEVREADWRITE("uart2", i8251_device, status_r, control_w) - AM_RANGE(0x26, 0x26) AM_WRITE(intmask_w) - AM_RANGE(0x30, 0x30) AM_DEVREADWRITE("dma", z80dma_device, read, write) - AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("fdc", fd1793_device, read, write) - AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("pia0", pia6821_device, read, write) - AM_RANGE(0x60, 0x63) AM_DEVREADWRITE("pia1", pia6821_device, read, write) -ADDRESS_MAP_END +void zorba_state::zorba_mem(address_map &map) +{ + map(0x0000, 0x3fff).bankr("bankr0").bankw("bankw0"); + map(0x4000, 0xffff).ram(); +} + + +void zorba_state::zorba_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)); + map(0x04, 0x04).rw(this, FUNC(zorba_state::rom_r), FUNC(zorba_state::rom_w)); + map(0x05, 0x05).rw(this, FUNC(zorba_state::ram_r), FUNC(zorba_state::ram_w)); + map(0x10, 0x11).rw(m_crtc, FUNC(i8275_device::read), FUNC(i8275_device::write)); + map(0x20, 0x20).rw(m_uart0, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x21, 0x21).rw(m_uart0, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x22, 0x22).rw(m_uart1, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x23, 0x23).rw(m_uart1, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x24, 0x24).rw(m_uart2, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x25, 0x25).rw(m_uart2, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x26, 0x26).w(this, FUNC(zorba_state::intmask_w)); + map(0x30, 0x30).rw(m_dma, FUNC(z80dma_device::read), FUNC(z80dma_device::write)); + map(0x40, 0x43).rw(m_fdc, FUNC(fd1793_device::read), FUNC(fd1793_device::write)); + map(0x50, 0x53).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x60, 0x63).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); +} namespace { diff --git a/src/mame/drivers/zr107.cpp b/src/mame/drivers/zr107.cpp index fe43a736f8c..eb69c691dbc 100644 --- a/src/mame/drivers/zr107.cpp +++ b/src/mame/drivers/zr107.cpp @@ -476,24 +476,25 @@ void zr107_state::machine_start() m_maincpu->ppcdrc_add_fastram(0x00000000, 0x000fffff, false, m_workram); } -ADDRESS_MAP_START(zr107_state::zr107_map) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("workram") /* Work RAM */ - AM_RANGE(0x74000000, 0x74003fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) - AM_RANGE(0x74020000, 0x7402003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) - AM_RANGE(0x74060000, 0x7406003f) AM_READWRITE(ccu_r, ccu_w) - AM_RANGE(0x74080000, 0x74081fff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram") - AM_RANGE(0x740a0000, 0x740a3fff) AM_DEVREAD("k056832", k056832_device, rom_long_r) - AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */ - AM_RANGE(0x78010000, 0x7801ffff) AM_DEVWRITE("konppc", konppc_device, cgboard_dsp_shared_w_ppc) - AM_RANGE(0x78040000, 0x7804000f) AM_DEVREADWRITE("k001006_1", k001006_device, read, write) - AM_RANGE(0x780c0000, 0x780c0007) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) - AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff) /* LANC registers */ - AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */ - AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END +void zr107_state::zr107_map(address_map &map) +{ + map(0x00000000, 0x000fffff).ram().share("workram"); /* Work RAM */ + map(0x74000000, 0x74003fff).rw(m_k056832, FUNC(k056832_device::ram_long_r), FUNC(k056832_device::ram_long_w)); + map(0x74020000, 0x7402003f).rw(m_k056832, FUNC(k056832_device::long_r), FUNC(k056832_device::long_w)); + map(0x74060000, 0x7406003f).rw(this, FUNC(zr107_state::ccu_r), FUNC(zr107_state::ccu_w)); + map(0x74080000, 0x74081fff).ram().w(this, FUNC(zr107_state::paletteram32_w)).share("paletteram"); + map(0x740a0000, 0x740a3fff).r(m_k056832, FUNC(k056832_device::rom_long_r)); + map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); /* 21N 21K 23N 23K */ + map(0x78010000, 0x7801ffff).w(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); + map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write)); + map(0x780c0000, 0x780c0007).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc)); + map(0x7e000000, 0x7e003fff).rw(this, FUNC(zr107_state::sysreg_r), FUNC(zr107_state::sysreg_w)); + map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); /* LANC registers */ + map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); /* LANC Buffer RAM (27E) */ + map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x7f800000, 0x7f9fffff).rom().share("share2"); + map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */ +} WRITE32_MEMBER(zr107_state::jetwave_palette_w) @@ -503,25 +504,26 @@ WRITE32_MEMBER(zr107_state::jetwave_palette_w) m_palette->set_pen_color(offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); } -ADDRESS_MAP_START(zr107_state::jetwave_map) - AM_RANGE(0x00000000, 0x000fffff) AM_RAM /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_DEVREADWRITE("k001604", k001604_device, reg_r, reg_w) - AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(jetwave_palette_w) AM_SHARE("paletteram") - AM_RANGE(0x74020000, 0x7403ffff) AM_DEVREADWRITE("k001604", k001604_device, tile_r, tile_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_DEVREADWRITE("k001604", k001604_device, char_r, char_w) - AM_RANGE(0x78000000, 0x7800ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */ - AM_RANGE(0x78010000, 0x7801ffff) AM_DEVWRITE("konppc", konppc_device, cgboard_dsp_shared_w_ppc) - AM_RANGE(0x78040000, 0x7804000f) AM_DEVREADWRITE("k001006_1", k001006_device, read, write) - AM_RANGE(0x78080000, 0x7808000f) AM_DEVREADWRITE("k001006_2", k001006_device, read, write) - AM_RANGE(0x780c0000, 0x780c0007) AM_DEVREADWRITE("konppc", konppc_device, cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) - AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, read, write, 0xffffffff) /* LANC registers */ - AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */ - AM_RANGE(0x7e00c000, 0x7e00c00f) AM_DEVREADWRITE8("k056800", k056800_device, host_r, host_w, 0xffffffff) - AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2") - AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ -ADDRESS_MAP_END +void zr107_state::jetwave_map(address_map &map) +{ + map(0x00000000, 0x000fffff).ram(); /* Work RAM */ + map(0x74000000, 0x740000ff).rw(m_k001604, FUNC(k001604_device::reg_r), FUNC(k001604_device::reg_w)); + map(0x74010000, 0x7401ffff).ram().w(this, FUNC(zr107_state::jetwave_palette_w)).share("paletteram"); + map(0x74020000, 0x7403ffff).rw(m_k001604, FUNC(k001604_device::tile_r), FUNC(k001604_device::tile_w)); + map(0x74040000, 0x7407ffff).rw(m_k001604, FUNC(k001604_device::char_r), FUNC(k001604_device::char_w)); + map(0x78000000, 0x7800ffff).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_r_ppc), FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); /* 21N 21K 23N 23K */ + map(0x78010000, 0x7801ffff).w(m_konppc, FUNC(konppc_device::cgboard_dsp_shared_w_ppc)); + map(0x78040000, 0x7804000f).rw(m_k001006_1, FUNC(k001006_device::read), FUNC(k001006_device::write)); + map(0x78080000, 0x7808000f).rw(m_k001006_2, FUNC(k001006_device::read), FUNC(k001006_device::write)); + map(0x780c0000, 0x780c0007).rw(m_konppc, FUNC(konppc_device::cgboard_dsp_comm_r_ppc), FUNC(konppc_device::cgboard_dsp_comm_w_ppc)); + map(0x7e000000, 0x7e003fff).rw(this, FUNC(zr107_state::sysreg_r), FUNC(zr107_state::sysreg_w)); + map(0x7e008000, 0x7e009fff).rw("k056230", FUNC(k056230_device::read), FUNC(k056230_device::write)); /* LANC registers */ + map(0x7e00a000, 0x7e00bfff).rw("k056230", FUNC(k056230_device::lanc_ram_r), FUNC(k056230_device::lanc_ram_w)); /* LANC Buffer RAM (27E) */ + map(0x7e00c000, 0x7e00c00f).rw(m_k056800, FUNC(k056800_device::host_r), FUNC(k056800_device::host_w)); + map(0x7f000000, 0x7f3fffff).rom().region("user2", 0); + map(0x7f800000, 0x7f9fffff).rom().share("share2"); + map(0x7fe00000, 0x7fffffff).rom().region("user1", 0).share("share2"); /* Program ROM */ +} @@ -538,19 +540,21 @@ WRITE16_MEMBER(zr107_state::sound_ctrl_w) } } -ADDRESS_MAP_START(zr107_state::sound_memmap) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM /* Work RAM */ - AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00) - AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff) - AM_RANGE(0x400000, 0x40001f) AM_DEVREADWRITE8("k056800", k056800_device, sound_r, sound_w, 0x00ff) - AM_RANGE(0x500000, 0x500001) AM_WRITE(sound_ctrl_w) - AM_RANGE(0x580000, 0x580001) AM_WRITENOP // 'NRES' - D2: K056602 /RESET -ADDRESS_MAP_END +void zr107_state::sound_memmap(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x100000, 0x103fff).ram(); /* Work RAM */ + map(0x200000, 0x2004ff).rw("k054539_1", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0xff00); + map(0x200000, 0x2004ff).rw("k054539_2", FUNC(k054539_device::read), FUNC(k054539_device::write)).umask16(0x00ff); + map(0x400000, 0x40001f).rw(m_k056800, FUNC(k056800_device::sound_r), FUNC(k056800_device::sound_w)).umask16(0x00ff); + map(0x500000, 0x500001).w(this, FUNC(zr107_state::sound_ctrl_w)); + map(0x580000, 0x580001).nopw(); // 'NRES' - D2: K056602 /RESET +} -ADDRESS_MAP_START(zr107_state::k054539_map) - AM_RANGE(0x000000, 0x5fffff) AM_ROM AM_REGION("k054539", 0) -ADDRESS_MAP_END +void zr107_state::k054539_map(address_map &map) +{ + map(0x000000, 0x5fffff).rom().region("k054539", 0); +} /*****************************************************************************/ @@ -565,12 +569,13 @@ WRITE32_MEMBER(zr107_state::dsp_dataram_w) m_sharc_dataram[offset] = data; } -ADDRESS_MAP_START(zr107_state::sharc_map) - AM_RANGE(0x400000, 0x41ffff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram_r, dsp_dataram_w) - AM_RANGE(0x600000, 0x6fffff) AM_DEVREADWRITE("k001005", k001005_device, read, write) - AM_RANGE(0x700000, 0x7000ff) AM_DEVREADWRITE("konppc", konppc_device, cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) -ADDRESS_MAP_END +void zr107_state::sharc_map(address_map &map) +{ + map(0x400000, 0x41ffff).rw(m_konppc, FUNC(konppc_device::cgboard_0_shared_sharc_r), FUNC(konppc_device::cgboard_0_shared_sharc_w)); + map(0x500000, 0x5fffff).rw(this, FUNC(zr107_state::dsp_dataram_r), FUNC(zr107_state::dsp_dataram_w)); + map(0x600000, 0x6fffff).rw(m_k001005, FUNC(k001005_device::read), FUNC(k001005_device::write)); + map(0x700000, 0x7000ff).rw(m_konppc, FUNC(konppc_device::cgboard_0_comm_sharc_r), FUNC(konppc_device::cgboard_0_comm_sharc_w)); +} /*****************************************************************************/ diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp index 9f47698b434..c7705338ded 100644 --- a/src/mame/drivers/zrt80.cpp +++ b/src/mame/drivers/zrt80.cpp @@ -100,28 +100,30 @@ WRITE8_MEMBER(zrt80_state::zrt80_38_w) m_beep->set_state(1); } -ADDRESS_MAP_START(zrt80_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM // Z25 - Main firmware - AM_RANGE(0x1000, 0x1fff) AM_ROM // Z24 - Expansion - AM_RANGE(0x4000, 0x43ff) AM_RAM // Board RAM +void zrt80_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); // Z25 - Main firmware + map(0x1000, 0x1fff).rom(); // Z24 - Expansion + map(0x4000, 0x43ff).ram(); // Board RAM // Normally video RAM is 0x800 but could be expanded up to 8K - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("videoram") // Video RAM - -ADDRESS_MAP_END - -ADDRESS_MAP_START(zrt80_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_DEVREADWRITE("ins8250", ins8250_device, ins8250_r, ins8250_w ) - AM_RANGE(0x08, 0x08) AM_DEVWRITE("crtc", mc6845_device, address_w) - AM_RANGE(0x09, 0x09) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x10, 0x17) AM_READ(zrt80_10_r) - AM_RANGE(0x18, 0x1F) AM_READ_PORT("DIPSW2") - AM_RANGE(0x20, 0x27) AM_READ_PORT("DIPSW3") - AM_RANGE(0x30, 0x37) AM_WRITE(zrt80_30_w) - AM_RANGE(0x38, 0x3F) AM_WRITE(zrt80_38_w) -ADDRESS_MAP_END + map(0xc000, 0xdfff).ram().share("videoram"); // Video RAM + +} + +void zrt80_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x07).rw(m_8250, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x08, 0x08).w(m_crtc, FUNC(mc6845_device::address_w)); + map(0x09, 0x09).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x10, 0x17).r(this, FUNC(zrt80_state::zrt80_10_r)); + map(0x18, 0x1F).portr("DIPSW2"); + map(0x20, 0x27).portr("DIPSW3"); + map(0x30, 0x37).w(this, FUNC(zrt80_state::zrt80_30_w)); + map(0x38, 0x3F).w(this, FUNC(zrt80_state::zrt80_38_w)); +} /* Input ports */ static INPUT_PORTS_START( zrt80 ) diff --git a/src/mame/drivers/zsbc3.cpp b/src/mame/drivers/zsbc3.cpp index 081df4486fc..b5c11f06a14 100644 --- a/src/mame/drivers/zsbc3.cpp +++ b/src/mame/drivers/zsbc3.cpp @@ -59,20 +59,22 @@ private: }; -ADDRESS_MAP_START(zsbc3_state::zsbc3_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE( 0x0000, 0x07ff ) AM_ROM - AM_RANGE( 0x0800, 0xffff ) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zsbc3_state::zsbc3_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x08, 0x0b) //AM_DEVREADWRITE("pio", z80pio_device, read, write) // the control bytes appear to be for a PIO - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("sio", z80sio_device, cd_ba_r, cd_ba_w) - AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) - AM_RANGE(0x38, 0x38) // unknown device, init byte = C3 -ADDRESS_MAP_END +void zsbc3_state::zsbc3_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07ff).rom(); + map(0x0800, 0xffff).ram(); +} + +void zsbc3_state::zsbc3_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x08, 0x0b); //AM_DEVREADWRITE("pio", z80pio_device, read, write) // the control bytes appear to be for a PIO + map(0x28, 0x2b).rw("sio", FUNC(z80sio_device::cd_ba_r), FUNC(z80sio_device::cd_ba_w)); + map(0x30, 0x33).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x38, 0x38); // unknown device, init byte = C3 +} /* Input ports */ static INPUT_PORTS_START( zsbc3 ) diff --git a/src/mame/drivers/zwackery.cpp b/src/mame/drivers/zwackery.cpp index 1e0db425aad..1b29e4c1e82 100644 --- a/src/mame/drivers/zwackery.cpp +++ b/src/mame/drivers/zwackery.cpp @@ -102,19 +102,20 @@ private: // ADDRESS MAPS //************************************************************************** -ADDRESS_MAP_START(zwackery_state::zwackery_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x037fff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM - AM_RANGE(0x084000, 0x084fff) AM_RAM - AM_RANGE(0x100000, 0x10000f) AM_READ8(ptm_r, 0xff00) AM_DEVWRITE8("ptm", ptm6840_device, write, 0xff00) - AM_RANGE(0x104000, 0x104007) AM_DEVREADWRITE8("pia0", pia6821_device, read, write, 0xff00) - AM_RANGE(0x108000, 0x108007) AM_DEVREADWRITE8("pia1", pia6821_device, read, write, 0x00ff) - AM_RANGE(0x10c000, 0x10c007) AM_DEVREADWRITE8("pia2", pia6821_device, read, write, 0x00ff) - AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x802000, 0x803fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xc00000, 0xc00fff) AM_READWRITE8(spriteram_r, spriteram_w, 0x00ff) -ADDRESS_MAP_END +void zwackery_state::zwackery_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x037fff).rom(); + map(0x080000, 0x080fff).ram(); + map(0x084000, 0x084fff).ram(); + map(0x100000, 0x10000f).r(this, FUNC(zwackery_state::ptm_r)).umask16(0xff00).w(m_ptm, FUNC(ptm6840_device::write)).umask16(0xff00); + map(0x104000, 0x104007).rw(m_pia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0xff00); + map(0x108000, 0x108007).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff); + map(0x10c000, 0x10c007).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)).umask16(0x00ff); + map(0x800000, 0x800fff).ram().w(this, FUNC(zwackery_state::videoram_w)).share("videoram"); + map(0x802000, 0x803fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xc00000, 0xc00fff).rw(this, FUNC(zwackery_state::spriteram_r), FUNC(zwackery_state::spriteram_w)).umask16(0x00ff); +} //************************************************************************** diff --git a/src/mame/drivers/zx.cpp b/src/mame/drivers/zx.cpp index dccb0e973f9..91f1751d95f 100644 --- a/src/mame/drivers/zx.cpp +++ b/src/mame/drivers/zx.cpp @@ -51,36 +51,43 @@ /* Memory Maps */ -ADDRESS_MAP_START(zx_state::zx80_map) - AM_RANGE(0x0000, 0x0fff) AM_ROM AM_MIRROR(0x3000) - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zx_state::zx81_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_MIRROR(0x2000) - AM_RANGE(0x4000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(zx_state::ula_map) - AM_RANGE(0x0000, 0x7fff) AM_READ(ula_low_r) - AM_RANGE(0x8000, 0xffff) AM_READ(ula_high_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zx_state::zx80_io_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(zx80_io_r, zx80_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zx_state::zx81_io_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(zx81_io_r, zx81_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zx_state::pc8300_io_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(pc8300_io_r, zx81_io_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(zx_state::pow3000_io_map) - AM_RANGE(0x0000, 0xffff) AM_READWRITE(pow3000_io_r, zx81_io_w) -ADDRESS_MAP_END +void zx_state::zx80_map(address_map &map) +{ + map(0x0000, 0x0fff).rom().mirror(0x3000); + map(0x4000, 0xffff).ram(); +} + +void zx_state::zx81_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().mirror(0x2000); + map(0x4000, 0xffff).ram(); +} + +void zx_state::ula_map(address_map &map) +{ + map(0x0000, 0x7fff).r(this, FUNC(zx_state::ula_low_r)); + map(0x8000, 0xffff).r(this, FUNC(zx_state::ula_high_r)); +} + +void zx_state::zx80_io_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(zx_state::zx80_io_r), FUNC(zx_state::zx80_io_w)); +} + +void zx_state::zx81_io_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(zx_state::zx81_io_r), FUNC(zx_state::zx81_io_w)); +} + +void zx_state::pc8300_io_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(zx_state::pc8300_io_r), FUNC(zx_state::zx81_io_w)); +} + +void zx_state::pow3000_io_map(address_map &map) +{ + map(0x0000, 0xffff).rw(this, FUNC(zx_state::pow3000_io_r), FUNC(zx_state::zx81_io_w)); +} /* Input Ports */ |